<?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>179063</bug_id>
          
          <creation_ts>2017-10-31 11:21:42 -0700</creation_ts>
          <short_desc>Add a FileSystem namespace to FileSystem.cpp</short_desc>
          <delta_ts>2017-11-15 12:29:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christopher Reid">chris.reid</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1366461</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-10-31 11:21:42 -0700</bug_when>
    <thetext>I am planning on moving FileSystem to PAL soon. Before work is done to move it, I&apos;m working on cleaning up and updating the code.
The functions of filesystem are global to the WebCore namespace. Adding a FileSystem namespace will help avoid naming collisions with these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366465</commentid>
    <comment_count>1</comment_count>
      <attachid>325463</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-10-31 11:34:27 -0700</bug_when>
    <thetext>Created attachment 325463
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366502</commentid>
    <comment_count>2</comment_count>
      <attachid>325473</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-10-31 12:45:33 -0700</bug_when>
    <thetext>Created attachment 325473
Patch

Missed a namespace in FileSystemCoca.mm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366518</commentid>
    <comment_count>3</comment_count>
      <attachid>325479</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-10-31 13:04:23 -0700</bug_when>
    <thetext>Created attachment 325479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366586</commentid>
    <comment_count>4</comment_count>
      <attachid>325493</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-10-31 14:19:40 -0700</bug_when>
    <thetext>Created attachment 325493
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366620</commentid>
    <comment_count>5</comment_count>
      <attachid>325504</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-10-31 15:15:48 -0700</bug_when>
    <thetext>Created attachment 325504
Patch

Fixing some cases where FileSystem:: was wrongly added to functions with the same name as FileSystem functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366649</commentid>
    <comment_count>6</comment_count>
      <attachid>325513</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-10-31 16:18:00 -0700</bug_when>
    <thetext>Created attachment 325513
Patch

Fixing an enum using two FileSystem namespaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366793</commentid>
    <comment_count>7</comment_count>
      <attachid>325555</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-01 00:52:16 -0700</bug_when>
    <thetext>Created attachment 325555
Patch

This should fix the remaining mac build issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367202</commentid>
    <comment_count>8</comment_count>
      <attachid>325555</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-01 21:23:38 -0700</bug_when>
    <thetext>Comment on attachment 325555
Patch

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

I’m not thrilled by this change; I don’t really know what specific name conflicts this is preventing. But I guess it’s OK.

&gt; Source/WebCore/ChangeLog:12
&gt; +        * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:

The file list in this change log is a mess. For example, it’s not great to just leave in all sorts of erroneous &quot;deleted&quot; lines for functions moved inside a namespace. The point of the change log generation tool is to start the change log for you. It’s not great to just leave all the lines in there without looking them over. For a global replace like this, might even want to leave out all the function names.

&gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:469
&gt; +    Vector&lt;String&gt; entries = WebCore::FileSystem::listDirectory(directory, ASCIILiteral(&quot;*&quot;));

Do we really need the WebCore prefix here? This code is in a namespace nested inside the WebCore namespace. I’m surprised this is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367533</commentid>
    <comment_count>9</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-02 13:56:22 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 325555 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=325555&amp;action=review
&gt; 
&gt; I’m not thrilled by this change; I don’t really know what specific name
&gt; conflicts this is preventing. But I guess it’s OK.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        * Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
&gt; 
&gt; The file list in this change log is a mess. For example, it’s not great to
&gt; just leave in all sorts of erroneous &quot;deleted&quot; lines for functions moved
&gt; inside a namespace. The point of the change log generation tool is to start
&gt; the change log for you. It’s not great to just leave all the lines in there
&gt; without looking them over. For a global replace like this, might even want
&gt; to leave out all the function names.

That&apos;s good to know, I&apos;ll clean up the ChangeLogs and I can take out all the touched function names. 

&gt; &gt; Source/WebCore/Modules/indexeddb/server/IDBServer.cpp:469
&gt; &gt; +    Vector&lt;String&gt; entries = WebCore::FileSystem::listDirectory(directory, ASCIILiteral(&quot;*&quot;));
&gt; 
&gt; Do we really need the WebCore prefix here? This code is in a namespace
&gt; nested inside the WebCore namespace. I’m surprised this is required.

It actually looks fine without that WebCore namespace, I&apos;ll take it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367602</commentid>
    <comment_count>10</comment_count>
      <attachid>325786</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2017-11-02 15:53:02 -0700</bug_when>
    <thetext>Created attachment 325786
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367720</commentid>
    <comment_count>11</comment_count>
      <attachid>325786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-02 19:33:30 -0700</bug_when>
    <thetext>Comment on attachment 325786
Patch for landing

Clearing flags on attachment: 325786

Committed r224371: &lt;https://trac.webkit.org/changeset/224371&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367721</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-02 19:33:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372163</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:29:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567651&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325463</attachid>
            <date>2017-10-31 11:34:27 -0700</date>
            <delta_ts>2017-10-31 12:45:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>179063-1.diff</filename>
            <type>text/plain</type>
            <size>354315</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTE2MGFiYjYxNy4uODY5YjE0MjMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGluZyBhIEZp
bGVTeXN0ZW0gbmFtZXNwYWNlIHRvIG1vZGVybml6ZSB0aGUgY29kZSBiZWZvcmUKKyAgICAgICAg
bW92aW5nIEZpbGVTeXN0ZW0gdG8gUEFMLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
Q29jb2EubW06CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisKIDIwMTctMTAtMzAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgdGFiLXNpemU6IDBw
eCBhc3NlcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRl
eCA2YWViYjFmZDQwNC4uN2VmYjc5ZDU1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiBib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZDJlYjg4NTJjNC4uOGU1MDY2ZGRlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQ
YXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3Rz
IG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9
IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVk
Q2hpbGQ+IGxpc3RlZENoaWxkcmVuOwogICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDog
Y2hpbGRQYXRocykgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxk
UGF0aCk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
Y2hpbGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlz
SGlkZGVuKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVu
Y2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tl
ZEFwcGVuZChMaXN0ZWRDaGlsZCB7IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBh
dGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3RlZENoaWxkcmVuKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkVmlydHVhbFBhdGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRP
TUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9v
dFBhdGgoZGlyZWN0b3J5TmFtZShtX2ZpbGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAg
IEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoLCBTdAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFt
ZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0
IikgfTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZh
bGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKIHsKLSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCku
dHlwZTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQ
YXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5h
cHBlbmQoY29tcG9uZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29t
cG9uZW50cyk7CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVj
dG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCmluZGV4IGI2YmJjNjNhNjM2Li5kY2NiNWExMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVt
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsZVN5c3RlbSYgZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQotICAgICwgbV9uYW1l
KHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCisgICAgLCBtX25hbWUoRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHZpcnR1YWxQYXRoKSkKICAgICAsIG1fdmlydHVhbFBhdGgodmlydHVh
bFBhdGgpCiB7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRl
eCBkOTQ2YmU0M2YxZi4uOGJiODgwNTBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290CiAKIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCiB7Ci0gICAgU3RyaW5n
IG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0
b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIG1h
aW5GcmFtZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAg
ICAvLyBJZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUgb3JpZ2lucyBhcmUgdGhl
IHNhbWUsIHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KICAgICBpZiAob3BlbmluZ09yaWdpbiA9
PSB0b3BMZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsKIAot
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBv
cGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY4MWNlOGFiNmNhLi5mZmY4Zjg0Y2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2Niwx
MSArNDY2LDExIEBAIHZvaWQgSURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0
b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0
b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwo
IioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogZW50cmllcykgewotICAgICAgICBTdHJpbmcgZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGVudHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29k
ZWROYW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAgICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGVu
Y29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01ODEsMTQgKzU4MSwxNCBAQCB2b2lkIElEQlNlcnZl
cjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRo
KGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGF0YWJhc2VQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2lu
UGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0byYgZGF0YWJhc2VQYXRoIDogZGF0YWJhc2VQYXRo
cykgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBk
YXRhYmFzZUZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigp
ICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5j
ZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNl
RmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2Rp
ZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2luY2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0
aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3Jp
Z2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxv
YiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIgd2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwK
ICAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRoZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJl
IHRyeWluZyB0byBkZWxldGUuCi0gICAgICAgIGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGly
ZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTldKi5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBibG9iUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQ
YXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAgICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2
ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAg
ICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJpbmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3
aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAiLmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9u
LWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0
aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMgb25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0
LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5vdCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAg
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUoYmxvYlBhdGgpOwogICAgICAgICAgICAgYXV0byBmaWxlbmFtZUxlbmd0aCA9IGZpbGVuYW1l
Lmxlbmd0aCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWVMZW5ndGggPj0gNik7CkBA
IC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAodmFsaWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBkZWxl
dGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyBkZWxldGUg
SW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgU1FMaXRlIGZpbGVzLgogICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxlKTsKIAogICAgICAg
ICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2FuLCBkZWxldGUgdGhlIGVtcHR5IGRpcmVjdG9yeS4K
LSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKICAg
ICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFzZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwgd2Ug
Y2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVjdG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNs
b3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiKiIpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIq
Iik7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAg
ICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZv
cm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5
T3IKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBh
dGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMw
YmViMzguLjlmZjhjMGYzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtNzQ0LDcgKzc0NCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUZyb21FbmNvZGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBlbmNvCiAgICAgU3RyaW5nIHBh
cnRpYWxseURlY29kZWQgPSBlbmNvZGVkTmFtZTsKICAgICBwYXJ0aWFsbHlEZWNvZGVkLnJlcGxh
Y2UoQVNDSUlMaXRlcmFsKCIlMkUiKSwgQVNDSUlMaXRlcmFsKCIuIikpOwogCi0gICAgcmV0dXJu
IGRlY29kZUZyb21GaWxlbmFtZShwYXJ0aWFsbHlEZWNvZGVkKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhcnRpYWxseURlY29kZWQpOwogfQogCiBTdHJpbmcg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0CkBA
IC03NTQsNyArNzU0LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVG
b3JEYXRhYmFzZU5hbWUoKSBjb25zdAogICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBlbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7CiAgICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKQEAgLTc2NCwxNCArNzY0LDE0IEBAIFN0cmluZyBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0
dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnks
IGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFt
ZUZvckRhdGFiYXNlTmFtZSgpKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0
YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CiB9CiAKIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQpAQCAtNzgzLDcgKzc4Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVz
KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCkpOwogICAgIFN0cmluZyBkYkZpbGVuYW1lID0g
ZnVsbERhdGFiYXNlUGF0aCgpOwogCiAgICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CkBAIC0xODU4LDcgKzE4NTgsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBvYmplYwogICAgICAgICBibG9iVVJMcy5hcHBlbmQoYmxvYlVSTCk7CiAKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gc3FsLT5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBibG9iRmlsZVBh
dGhzLmFwcGVuZChwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGZp
bGVOYW1lKSk7CisgICAgICAgIGJsb2JGaWxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZmlsZU5hbWUpKTsKICAgICB9
CiAKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtMjU0Miw4ICsyNTQyLDggQEAgdm9pZCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAKICAgICBTdHJpbmcg
ZGF0YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBmb3IgKGF1
dG8mIGZpbGUgOiBibG9iRmlsZXMpIHsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsKLSAgICAgICAgaWYg
KCFkZWxldGVGaWxlKGZ1bGxQYXRoKSkKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgZGVsZXRpbmcgYmxvYiBmaWxlICVzIiwgZnVsbFBhdGgudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCA2MDg2M2E4YWE5My4uMjMxNjVjOWI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptb3ZlQmxv
YkZpbGVzSWZOZWNlc3NhcnkoKQogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JUZW1wb3Jh
cnlBbmRTdG9yZWRGaWxlbmFtZXMpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5
RmlsZUhhbmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGVudHJ5LmZpcnN0
KTsKIAotICAgICAgICBpZiAoIWhhcmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1wb3JhcnkgYmxvYiBm
aWxlICclcycgdG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZp
bGUoZW50cnkuZmlyc3QsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKSkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBsaW5rL2NvcHkgdGVtcG9yYXJ5IGJsb2IgZmlsZSAnJXMnIHRvIGxvY2F0aW9uICcl
cyciLCBlbnRyeS5maXJzdC51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGVudHJ5LnNlY29uZCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nl
c3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShlbnRyeS5maXJzdCk7CiAgICAgfQpAQCAtMTA3LDcg
KzEwNyw3IEBAIHZvaWQgU1FMaXRlSURCVHJhbnNhY3Rpb246OmRlbGV0ZUJsb2JGaWxlc0lmTmVj
ZXNzYXJ5KCkKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSA9IG1fYmFja2luZ1N0b3Jl
LmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JS
ZW1vdmVkRmlsZW5hbWVzKSB7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOworICAgICAgICBTdHJpbmcg
ZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnksIGVudHJ5KTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhh
bmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGZ1bGxQYXRoKTsKICAgICAg
ICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nlc3NUb1RlbXBvcmFy
eUZpbGVDb21wbGV0ZShmdWxsUGF0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAppbmRleCBhZGRkMWY4YzAwNC4uNjFhZWI4ZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAppbmRleCA1NTI3NjlhNDFjNy4uZmVhMWJlNWU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY0OSw5
ICs2NDksOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjp1c2FnZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9
IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza1Vz
YWdlID0gMDsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogbGlzdERpcmVjdG9yeShvcmlnaW5Q
YXRoLCBBU0NJSUxpdGVyYWwoIiouZGIiKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCBBU0NJSUxpdGVyYWwoIiouZGIi
KSkpIHsKICAgICAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgICAgIGdldEZpbGVTaXplKGZpbGVO
YW1lLCBzaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNp
emUpOwogICAgICAgICBkaXNrVXNhZ2UgKz0gc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2tV
c2FnZTsKQEAgLTc4NSw5ICs3ODUsOSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgd2UgcHJldmlvdXNseSBkZWxldGVk
IGl0IGJ1dCBmYWlsZWQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgLy8g
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZS4gV2Ugd2FudCB0byBkZWxldGUgYWxsIG9mIHRoZSBp
bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICAgICAgLy8gZGF0YWJhc2Ug
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZSwgc28gc3RpbGwgYWRkIGl0cyBuYW1lIHRvIGRhdGFi
YXNlTmFtZXNUb0RlbGV0ZS4KLSAgICAgICAgICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoKSkg
eworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkp
CisgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUgPCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3QodGltZSkpCkBAIC04MzcsNyArODM3LDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgRGVsZXRpb25Nb2QKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVz
ZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwg
ZGVhZGxvY2suCiAgICAgYm9vbCBmYWlsZWRUb0RlbGV0ZUFueURhdGFiYXNlRmlsZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgbmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKLSAgICAgICAgaWYgKGZp
bGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRl
bGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9uTW9kZSkpIHsKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5h
bWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9u
TW9kZSkpIHsKICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgY2FuJ3QgYmUgZGVsZXRl
ZCwgd2Ugd2FudCB0byB0cnkgYW5kIGRlbGV0ZSB0aGUgcmVzdCwgZG9uJ3QgcmV0dXJuIGVhcmx5
IGhlcmUuCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3Ig
ZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBmYWlsZWRUb0Rl
bGV0ZUFueURhdGFiYXNlRmlsZSA9IHRydWU7CkBAIC04NTIsOCArODUyLDggQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgRGVsZXRpb25Nb2QKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoRGF0YWJhc2VUcmFja2VyLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiIpOwogI2VuZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZmlsZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlbGV0ZUZpbGUoZmlsZSkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmls
ZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7
CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpCiAgICAgICAg
ICAgICAgICAgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAg
ICB9CiAKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tz
IGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCi0gICAg
aWYgKGZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkg
JiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVs
dCkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aEZvckRhdGFiYXNl
KG9yaWdpbiwgbmFtZSwgZmFsc2UpKSAmJiAhZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFt
ZSwgRGVsZXRpb25Nb2RlOjpEZWZhdWx0KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIGRv
bmVEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4g
ZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2UgZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3Vy
cmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNlIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hv
dWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0Rmls
ZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YWJhc2VGaWxlTmFtZS5pc051bGwoKSB8fCBkYXRhYmFzZUZpbGVOYW1lICE9IEZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShkYi0+ZmlsZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRGF0YWJhc2VzLmFwcGVuZChkYik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmREZWxldGVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92
ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogc3RhdGljIGJvb2wgaXNaZXJvQnl0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGxvbmcgbG9uZyBzaXplID0gMDsKLSAgICByZXR1cm4g
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgJiYgIXNpemU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIHNpemUpICYmICFzaXplOwogfQogICAgIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBwYXRoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAK
aW5kZXggNTE2YTJkMmYyNjQuLjMxZDJkMDRiMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQ
YXRoKFN0cmluZyBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgsIFN0cmluZygiLmxvY2siKSk7
CiB9CiAKIE9yaWdpbkxvY2s6Ok9yaWdpbkxvY2soU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgOiBt
X2xvY2tGaWxlTmFtZShsb2NrRmlsZU5hbWVGb3JQYXRoKG9yaWdpblBhdGgpLmlzb2xhdGVkQ29w
eSgpKQogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgLCBtX2xvY2tIYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fbG9ja0hhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogI2VuZGlmCiB7CiB9CkBAIC01MCw4ICs1MCw4IEBAIHZvaWQgT3Jp
Z2luTG9jazo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NL
KQotICAgIG1fbG9ja0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgT3Bl
bkZvcldyaXRlKTsKLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUo
bV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKG1fbG9j
a0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAg
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBj
b250YWluaW5nIHRoZSBsb2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2Vy
ZSBnaXZlbiBhIHBhdGggdG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYnV0IGNsZWFudXAgYW5kIHJl
dHVybi4KQEAgLTY4LDExICs2OCwxMSBAQCB2b2lkIE9yaWdpbkxvY2s6OnVubG9jaygpCiAgICAg
Ly8gY29udGFpbmluZyB0aGUgbG9jayBoYXMgYmVlbiBkZWxldGVkIGJlZm9yZSB3ZSBvcGVuZWQg
dGhlIGxvY2sgZmlsZSwgb3IKICAgICAvLyB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1l
eGlzdGFudCBkaXJlY3RvcnkuIFdoaWNoLCBpbiB0dXJuLCBtZWFucwogICAgIC8vIHRoYXQgdGhl
cmUncyBub3RoaW5nIHRvIHVubG9jay4KLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIAorICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5sb2Nr
QW5kQ2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7Ci0gICAgbV9sb2NrSGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUobV9s
b2NrSGFuZGxlKTsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogI2VuZGlmCiAKICAgICBtX211dGV4LnVubG9jaygpOwpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIE9yaWdpbkxvY2s6OmRlbGV0ZUxvY2tGaWxlKFN0cmluZyBvcmlnaW5QYXRo
KQogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5QYXRoKTsKICNpZiBVU0UoRklMRV9MT0NLKQogICAg
IFN0cmluZyBsb2NrRmlsZU5hbWUgPSBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKG9y
aWdpblBhdGgpOwotICAgIGRlbGV0ZUZpbGUobG9ja0ZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGxvY2tGaWxlTmFtZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBkNzE1MWRlNzhiZC4u
YTE2ZTg0ZjE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
T3JpZ2luTG9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9j
a0ZpbGVOYW1lOwogICAgIExvY2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBtX2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fbG9ja0hhbmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggM2ViMjg4NGFjYTEuLjAyNjFhMGZkMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QK
ICAgICAvLyBUaGUgaS9vIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCwKICAgICAvLyBhbmQgdGhlIHJlc3VsdCBzaG91bGQgYmUgY2FjaGVkIGFsb25nIHdpdGggYW4g
YXN5bmNocm9ub3VzIG1vbml0b3IgZm9yIGNoYW5nZXMgdG8gdGhlIGZpbGUuCiAgICAgdGltZV90
IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKGdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0
aCwgbW9kaWZpY2F0aW9uVGltZSkgJiYgaXNWYWxpZEZpbGVUaW1lKG1vZGlmaWNhdGlvblRpbWUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1v
ZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRp
b25UaW1lKSkKICAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25k
OwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUoKSAqIG1zUGVyU2Vjb25k
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlz
TnVsbCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworICAgIGVmZmVj
dGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluZGV4ID0gZWZmZWN0aXZl
TmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKICAgICAg
ICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBTdHJpbmcgRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIGJvb2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAogewogICAgIGlmICghbV9pc0Rp
cmVjdG9yeSkKLSAgICAgICAgbV9pc0RpcmVjdG9yeSA9IGZpbGVJc0RpcmVjdG9yeShtX3BhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgICAgIG1faXNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwogICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAwZDVhNjk3ZjY1YS4uY2FhMjFk
NWI4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC01OSw5ICs1OSw5IEBA
IGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVO
YW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVCghcGF0aEdl
dEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0
aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KKyAgICBBU1NF
UlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8g
RXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3Ig
ZGlyZWN0b3JpZXMuCiAgICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBBU0NJSUxpdGVyYWwoImFw
cGxpY2F0aW9uL3ppcCIpOwotICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVs
bCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJTGl0ZXJh
bCgiLnppcCIpOworICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVsbCgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJ
TGl0ZXJhbCgiLnppcCIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAKaW5kZXggOTEwNmRhZGNjZDQuLjc2ZjU2NTk3MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgRmlsZUxpc3RDcmVhdG9y
Ojp+RmlsZUxpc3RDcmVhdG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0
b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFBhdGgg
OiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAgICBhdXRvIG1ldGFkYXRh
ID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRv
IG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CiAgICAgICAg
IGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWV0
YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIHBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOworICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRo
KTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0
YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKQEAgLTgwLDgg
KzgwLDggQEAgUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBp
ZiAoc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6
WWVzICYmIGZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgcGF0
aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgaWYgKHNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxl
cyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxl
T2JqZWN0cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4NjQwY2YxMmM4
YS4uYmY0MzQzOTNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTZXRNZWRpYUtl
eXMoV2ViS2l0TWVkaWFLZXlzKiBtZWRpYUtleXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBh
ZmY4Njk5MmU1MC4uYTIxNTBlZDJmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNlTmVlZGVkKGlu
dDY0X3QgY2FjaGVUb1NhdmUpCiB7CiAgICAgaW50NjRfdCBzcGFjZU5lZWRlZCA9IDA7CiAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICBpZiAoIWdldEZpbGVTaXplKG1fY2FjaGVGaWxl
LCBmaWxlU2l6ZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2NhY2hlRmls
ZSwgZmlsZVNpemUpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGludDY0X3QgY3VycmVudFNp
emUgPSBmaWxlU2l6ZSArIGZsYXRGaWxlQXJlYVNpemUoKTsKQEAgLTYwMCwxMSArNjAwLDExIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlm
RG9lc05vdEV4aXN0KQogICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X2NhY2hlRGlyZWN0b3J5LCAiQXBwbGljYXRpb25DYWNoZS5kYiIpOwotICAgIGlmICghY3JlYXRl
SWZEb2VzTm90RXhpc3QgJiYgIWZpbGVFeGlzdHMobV9jYWNoZUZpbGUpKQorICAgIG1fY2FjaGVG
aWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7CisgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlz
dCAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKKyAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9jYWNoZURpcmVjdG9yeSk7CiAgICAgbV9kYXRh
YmFzZS5vcGVuKG1fY2FjaGVGaWxlKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCkBAIC03OTksNyArNzk5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKIAogICAgIFN0
cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICBkYXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGhHZXRGaWxlTmFtZShyZXNvdXJjZS0+
cGF0aCgpKSk7CisgICAgICAgIGRhdGFTdGF0ZW1lbnQuYmluZFRleHQoMiwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKICAgICBlbHNlIGlmIChzaG91bGRT
dG9yZVJlc291cmNlQXNGbGF0RmlsZShyZXNvdXJjZSkpIHsKICAgICAgICAgLy8gRmlyc3QsIGNo
ZWNrIHRvIHNlZSBpZiBjcmVhdGluZyB0aGUgZmxhdCBmaWxlIHdvdWxkIHZpb2xhdGUgdGhlIG1h
eGltdW0gdG90YWwgcXVvdGEuIFdlIGRvbid0IG5lZWQKICAgICAgICAgLy8gdG8gY2hlY2sgdGhl
IHBlci1vcmlnaW4gcXVvdGEgaGVyZSwgYXMgaXQgd2FzIGFscmVhZHkgY2hlY2tlZCBpbiBzdG9y
ZU5ld2VzdENhY2hlKCkuCkBAIC04MDgsOCArODA4LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgbWFr
ZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKKyAgICAgICAgU3RyaW5nIGZsYXRG
aWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2Fj
aGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKIAogICAgICAgICBT
dHJpbmcgZXh0ZW5zaW9uOwogICAgICAgICAKQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgICAgICBpZiAoIXdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KHJlc291cmNlLT5kYXRhKCksIGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoLCBleHRlbnNpb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZnVsbFBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAg
ICAgICBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0
RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIHJlc291cmNlLT5zZXRQYXRoKGZ1bGxQYXRo
KTsKICAgICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKICAgICAgICAgLy8gQ2xlYW4gdXAgdGhl
IGZpbGUgd2hpY2ggd2UgbWF5IGhhdmUgd3JpdHRlbiB0bzoKICAgICAgICAgaWYgKCFmdWxsUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQp
CiAKICAgICBhdXRvIGNhY2hlID0gQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlKCk7CiAKLSAgICBT
dHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICBpbnQgcmVz
dWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CkBAIC0xMTM2LDggKzExMzYsOCBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXpl
KCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBnZXRGaWxlU2l6
ZShwYXRoLCBzaXplKTsKKyAgICAgICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMyk7
CkBAIC0xMjk0LDI1ICsxMjk0LDI1IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgU3Ry
aW5nIGZ1bGxQYXRoOwogICAgIAogICAgIGRvIHsKLSAgICAgICAgcGF0aCA9IGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyBmaWxlRXh0ZW5zaW9uOworICAg
ICAgICBwYXRoID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3Qg
dGhlIGFib3ZlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdoaWNoIGRvZXMg
bm90IGltcGxlbWVudAogICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuCiAg
ICAgICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIHBhdGgpOwotICAgIH0gd2hp
bGUgKGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGRpcmVjdG9yeSB8fCBmaWxlRXhpc3RzKGZ1
bGxQYXRoKSk7CisgICAgICAgIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CisgICAgfSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3Bl
bkZpbGUoZnVsbFBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
YXRhLnNpemUoKSkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShmdWxsUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIApAQCAtMTQ2NiwxNSArMTQ2NiwxNSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIFN0cmluZyBm
bGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0
b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Cisg
ICAgICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIAogICAgICAgICAv
LyBEb24ndCBleGl0IHRoZSBmbGF0RmlsZURpcmVjdG9yeSEgVGhpcyBzaG91bGQgb25seSBoYXBw
ZW4gaWYgdGhlICJwYXRoIiBlbnRyeSBjb250YWlucyBhIGRpcmVjdG9yeSAKICAgICAgICAgLy8g
Y29tcG9uZW50LCBidXQgcHJvdGVjdCBhZ2FpbnN0IGl0IHJlZ2FyZGxlc3MuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBmbGF0RmlsZURpcmVjdG9yeSkKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0
b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBkZWxldGVGaWxl
KGZ1bGxQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAg
ICAgfSB3aGlsZSAoc2VsZWN0UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpOwogICAgIAogICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiKTsK
QEAgLTE0OTQsMTIgKzE0OTQsMTIgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmbGF0RmlsZUFyZWFTaXplKCkKICAgICB9CiAKICAgICBsb25nIGxvbmcgdG90YWxTaXplID0g
MDsKLSAgICBTdHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9jYWNoZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0
cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAg
d2hpbGUgKHNlbGVjdFBhdGhzLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gc2VsZWN0UGF0aHMuZ2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIGZ1
bGxQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRo
KTsKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgbG9uZyBsb25nIHBh
dGhTaXplID0gMDsKLSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShmdWxsUGF0aCwgcGF0aFNpemUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdG90YWxTaXplICs9IHBhdGhTaXpl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNhMzY5YmVjMzU4Li41OWVjMWM5MGM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBh
Z2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiAKICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUp
KSB7CiAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMg
anVzdCBkZWxldGVkLCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYg
d2UndmUgcmVhZCB0aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0
aHJvdyBhd2F5IHRoYXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdz
IG9uIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4
YmM3YTM3Li42YWQ2MzExMGFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgp
ICYmICFmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgp
KSkKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYg
IUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0
ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDkyM2ZmMzMwZDZjLi5hZGExZjQx
ZDIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZp
ZXIoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChwcm90b2NvbCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlbmNvZGVGb3JGaWxlTmFt
ZShob3N0KSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJh
Y3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IDgwM2E4MjA5
YjJjLi4yYTBhNjM0YzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlSGFuZGxlOjpG
aWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFu
ZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5N
b2RlIG1vZGUpCiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kZShtb2RlKQogewpAQCAt
NDIsNyArNDIsNyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBv
dGhlcikKICAgICA6IG1fcGF0aChXVEZNb3ZlKG90aGVyLm1fcGF0aCkpCiAgICAgLCBtX21vZGUo
V1RGTW92ZShvdGhlci5tX21vZGUpKQotICAgICwgbV9maWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSkKKyAgICAsIG1f
ZmlsZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBG
aWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogICAg
IGNsb3NlKCk7CiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9k
ZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKLSAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
bV9maWxlSGFuZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
RmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxl
VmFsaWQobV9maWxlSGFuZGxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2ZpbGVIYW5kbGUpOwogfQogCi1ib29sIEZpbGVIYW5kbGU6Om9wZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGlmICgq
dGhpcyAmJiBwYXRoID09IG1fcGF0aCAmJiBtb2RlID09IG1fbW9kZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsK
ICAgICBpZiAoISp0aGlzKQotICAgICAgICBtX2ZpbGVIYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgs
IG1fbW9kZSk7CisgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
cGF0aCwgbV9tb2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC04NywxNCArODcsMTQgQEAgaW50IEZpbGVIYW5kbGU6OnJlYWQodm9pZCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiByZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSks
IGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5k
bGUsIHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAogaW50IEZpbGVIYW5k
bGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVu
KCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbGVIYW5kbGU6
OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBGaWxlSGFuZGxlOjpjbG9z
ZSgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMzYyNDNkZTQwZC4uNTYzZmVkOTg5NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7
CiBwdWJsaWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKLSAgICBGaWxlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBGaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZpbGVIYW5k
bGUmJiBvdGhlcik7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogICAgIGJvb2wgb3BlbigpOwogICAgIGludCByZWFkKHZv
aWQqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGludCB3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZU9wZW5Nb2RlIG1fbW9kZSB7IE9wZW5Gb3JSZWFkIH07Ci0g
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcAppbmRleCBiMThiMWMzZTk3ZC4uZjc0NWQ3YzFkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZpbGVTdHJlYW06OkZpbGVTdHJlYW0oKQotICAgIDogbV9oYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICA6IG1faGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgLCBtX2J5dGVzUHJvY2Vzc2VkKDApCiAgICAgLCBtX3RvdGFsQnl0
ZXNUb1JlYWQoMCkKIHsKQEAgLTUzLDE2ICs1MywxNiBAQCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6
Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bQogewogICAgIC8vIENoZWNrIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBvc3NpYmxl
IGZpbGUgY2hhbmdlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1l
KSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUo
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dGlt
ZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9IG1vZGlmaWNhdGlvblRpbWUpCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLy8gTm93IGdldCB0aGUgZmlsZSBzaXpl
LgogICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShwYXRoLCBsZW5n
dGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgbGVuZ3RoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKQEAgLTcwLDE3ICs3MCwxNyBA
QCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbQogCiBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkK
IHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IE9wZW4gdGhlIGZpbGUuCi0gICAgbV9oYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZp
bGUgaGFzIGJlZW4gc2xpY2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChz
ZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBTZWVrRnJvbUJlZ2lubmluZykgPCAwKQorICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6
U2Vla0Zyb21CZWdpbm5pbmcpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTkyLDIyICs5MiwyMiBAQCBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbgogCiB2b2lkIEZp
bGVTdHJlYW06OmNsb3NlKCkKIHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpIHsK
LSAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxlKTsKLSAgICAgICAgbV9oYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOworICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1f
aGFuZGxlKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworICAg
ICAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAg
ICAgfQogfQogCiBpbnQgRmlsZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJT
aXplKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbG9uZyBsb25nIHJlbWFpbmluZyA9IG1fdG90YWxCeXRlc1RvUmVhZCAtIG1fYnl0ZXNQcm9j
ZXNzZWQ7CiAgICAgaW50IGJ5dGVzVG9SZWFkID0gKHJlbWFpbmluZyA8IGJ1ZmZlclNpemUpID8g
c3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogYnVmZmVyU2l6ZTsKICAgICBpbnQgYnl0ZXNS
ZWFkID0gMDsKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiAwKQotICAgICAgICBieXRlc1JlYWQgPSBy
ZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNUb1JlYWQpOworICAgICAgICBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNU
b1JlYWQpOwogICAgIGlmIChieXRlc1JlYWQgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAg
aWYgKGJ5dGVzUmVhZCA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXgg
ZDQyMWU0ZjNiYzEuLjk2N2RlZGM3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIs
IGludCBsZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRs
ZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9u
ZyBsb25nIG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVh
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDdh
ZTM0Li5iODk0NzVlMDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmls
ZVN5c3RlbSB7CisKIC8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVk
IGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQogLy8gYWNyb3NzIGFsbCBzeXN0ZW1z
LCBpbmNsdWRpbmcgV2luZG93czoKIC8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikK
QEAgLTM1OSw0ICszNjEsNSBAQCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93UwogICAgIHJldHVybiBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CiB9
CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCAzMmM5M2U2NThiMy4uYTZjN2UzZWI3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTU2LDYgKzU2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKICNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwpAQCAtOTIs
OCArOTYsNiBAQCBlbnVtIEZpbGVMb2NrTW9kZSB7CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKIAotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogV0VC
Q09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTIxMyw1ICsyMTUsNiBAQCBp
bmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmls
ZURhdGEmJiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZTFmY2RjZWJkMWMuLjBkMzViMjEzYmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBz
aXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwpAQCAtNjEsNyArNjEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8Y2hhcj4mJiBkYXRhKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGlu
Z1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtd
KGNvbnN0IEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcg
KzIyNyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICNpZiBVU0UoU09VUCkKICAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IE1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRh
LnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYg
ZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGZkMjZmMjFjNmJkLi4zNGZmNzFjNjM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAj
aWYgVVNFKFNPVVApCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHVW5p
cXVlUHRyPFNvdXBCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoTWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFTZWdtZW50KEdVbmlxdWVQdHI8U291
cEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoTWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAog
ICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6
CiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCkBAIC0xNTcsNyArMTU3LDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXpl
X3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDFmNjg0YjY1YzE0Li4wODQ3MGEw
OGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorQ1N0cmluZyBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
QEAgLTU1LDEyICs1NSwxMiBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKIH0KIAotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciog
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQogewogICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENGVVJMUmVm
PiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQorUmV0YWluUHRyPENGVVJMUmVmPiBGaWxl
U3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENGVVJMUGF0aFN0
eWxlIHBhdGhTdHlsZTsKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAzOTVkZjc3NzE5YS4uNTc4
NDM0ZDJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0gICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSk7
CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJG
YWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAg
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1
ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW2hh
bmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRj
aF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2NkOWY4Li4xNTFh
YmI1MWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQpAQCAtNDYsMTQgKzQ2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
U3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK1N0cmluZyBGaWxlU3lzdGVtOjpob21lRGlyZWN0
b3J5UGF0aCgpCiB7CiAgICAgcmV0dXJuIE5TSG9tZURpcmVjdG9yeSgpOwogfQogCi1TdHJpbmcg
b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRs
ZSYgcGxhdGZvcm1GaWxlSGFuZGxlKQorU3RyaW5nIEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUm
IHBsYXRmb3JtRmlsZUhhbmRsZSkKIHsKLSAgICBwbGF0Zm9ybUZpbGVIYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOworICAgIHBsYXRmb3JtRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAgICAgCiAgICAgVmVjdG9yPGNoYXI+IHRlbXBv
cmFyeUZpbGVQYXRoKFBBVEhfTUFYKTsKICAgICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJTl9VU0VS
X1RFTVBfRElSLCB0ZW1wb3JhcnlGaWxlUGF0aC5kYXRhKCksIHRlbXBvcmFyeUZpbGVQYXRoLnNp
emUoKSkpCkBAIC03NCwxMyArNzQsMTMgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0
IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHBsYXRmb3JtRmlsZUgKICAgICB0
ZW1wb3JhcnlGaWxlUGF0aC5hcHBlbmQoJ1wwJyk7CiAKICAgICBwbGF0Zm9ybUZpbGVIYW5kbGUg
PSBta3N0ZW1wKHRlbXBvcmFyeUZpbGVQYXRoLmRhdGEoKSk7Ci0gICAgaWYgKHBsYXRmb3JtRmls
ZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGlmIChwbGF0Zm9ybUZp
bGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgodGVtcG9y
YXJ5RmlsZVBhdGguZGF0YSgpKTsKIH0KIAotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9s
ZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6bW92ZUZpbGUo
Y29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiB7CiAgICAgLy8g
T3ZlcndyaXRlIGV4aXN0aW5nIGZpbGVzLgogICAgIGF1dG8gbWFuYWdlciA9IGFkb3B0TlMoW1tO
U0ZpbGVNYW5hZ2VyIGFsbG9jXSBpbml0XSk7CkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgbW92ZUZp
bGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiAgICAgcmV0
dXJuIFttYW5hZ2VyIG1vdmVJdGVtQXRVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpvbGRQYXRo
XSB0b1VSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOm5ld1BhdGhdIGVycm9yOm5pbF07CiB9CiAK
LWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYgcGF0aCwgdWludDY0X3QmIGZy
ZWVTcGFjZSkKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKIHsKICAgICBOU0RpY3Rpb25hcnkgKmZpbGVT
eXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSA9IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdl
cl0gYXR0cmlidXRlc09mRmlsZVN5c3RlbUZvclBhdGg6KE5TU3RyaW5nICopcGF0aCBlcnJvcjpO
VUxMXTsKICAgICBpZiAoIWZpbGVTeXN0ZW1BdHRyaWJ1dGVzRGljdGlvbmFyeSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCBkNmQ5
ZWY3YTVjYS4uOTQ5MjRlNjFkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRmlsZU1vbml0b3I6OkZp
bGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVl
dWUsIFdURjoKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIW1vZGlmaWNhdGlvbkhhbmRsZXIp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl9wYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBh
dXRvIGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgbV9jYW5jZWxsYWJsZSA9
IGFkb3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgbV9wbGF0Zm9ybU1vbml0b3IgPSBhZG9wdEdSZWYoZ19maWxlX21vbml0
b3IoZmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfTk9ORSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwg
JmVycm9yLm91dFB0cigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmls
ZVN5c3RlbUdsaWIuY3BwCmluZGV4IDkzMmU4M2ZkOTRhLi4xYjA4YWEwYWY3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTQ0LDcg
KzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICogYXJlIHZhbGlkIGZpbGUgbmFtZXMuIFRo
aXMgbWVhbiB0aGF0IHdlIGNhbm5vdCBqdXN0IHN0b3JlIGEgZmlsZSBuYW1lIGFzLWlzIGluIGEg
U3RyaW5nCiAgKiBidXQgd2UgaGF2ZSB0byBlc2NhcGUgaXQuCiAgKiBPbiBXaW5kb3dzIHRoZSBH
TGliIGZpbGUgbmFtZSBlbmNvZGluZyBpcyBhbHdheXMgVVRGLTggc28gd2UgY2FuIG9wdGltaXpl
IHRoaXMgY2FzZS4gKi8KLVN0cmluZyBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IGNoYXIqIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikKK1N0cmluZyBGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IGNoYXIqIGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbikKIHsKICAgICBpZiAoIWZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgR1VuaXF1
ZVB0cjxjaGFyPiB1bmVzY2FwZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiAjZW5kaWYK
IH0KIAotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRo
KQorQ1N0cmluZyBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogI2lmIE9TKFdJTkRPV1MpCiAgICAgcmV0dXJuIHBhdGgudXRmOCgpOwpA
QCAtNzksNyArNzksNyBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIHBhdGgpCiB9CiAKIC8vIENvbnZlcnRzIGEgc3RyaW5nIHRvIHNvbWV0aGluZyBzdWl0
YWJsZSB0byBiZSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCi1TdHJpbmcgZmlsZW5hbWVGb3JEaXNw
bGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQorU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVuYW1lRm9y
RGlzcGxheShjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKICNpZiBPUyhXSU5ET1dTKQogICAgIHJl
dHVybiBzdHJpbmc7CkBAIC05NiwxOSArOTYsMTkgQEAgU3RyaW5nIGZpbGVuYW1lRm9yRGlzcGxh
eShjb25zdCBTdHJpbmcmIHN0cmluZykKICNlbmRpZgogfQogCi1ib29sIGZpbGVFeGlzdHMoY29u
c3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZp
bGVuYW1lKHBhdGgpOwogICAgIHJldHVybiBmaWxlbmFtZSA/IGdfZmlsZV90ZXN0KGZpbGVuYW1l
LmdldCgpLCBHX0ZJTEVfVEVTVF9FWElTVFMpIDogZmFsc2U7CiB9CiAKLWJvb2wgZGVsZXRlRmls
ZShjb25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2Nh
cGVkRmlsZW5hbWUocGF0aCk7CiAgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19yZW1vdmUoZmlsZW5h
bWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7CiB9CiAKLWJvb2wgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUg
PSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKICAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JtZGly
KGZpbGVuYW1lLmdldCgpKSAhPSAtMSA6IGZhbHNlOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRp
YyBib29sIGdldEZpbGVMU3RhdChjb25zdCBTdHJpbmcmIHBhdGgsIEdTdGF0QnVmKiBzdGF0QnVm
ZmVyKQogICAgIHJldHVybiBnX2xzdGF0KGZpbGVuYW1lLmdldCgpLCBzdGF0QnVmZmVyKSAhPSAt
MTsKIH0KIAotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYg
cmVzdWx0U2l6ZSkKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nIGxvbmcmIHJlc3VsdFNpemUpCiB7CiAgICAgR1N0YXRCdWYgc3RhdFJlc3VsdDsK
ICAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKQEAgLTE0MiwxOSArMTQy
LDE5IEBAIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJl
c3VsdFNpemUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZv
cm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmKQorYm9vbCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0RmlsZUNyZWF0aW9u
VGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmKQorYm9vbCBGaWxlU3lzdGVtOjpnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYpCiB7CiAgICAgLy8gRklYTUU6IElzIHRo
ZXJlIGEgd2F5IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0
Zm9ybXMgdGhhdCBzdXBwb3J0IGl0PwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgbW9kaWZpZWRU
aW1lKQorYm9vbCBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJp
bmcmIHBhdGgsIHRpbWVfdCYgbW9kaWZpZWRUaW1lKQogewogICAgIEdTdGF0QnVmIHN0YXRSZXN1
bHQ7CiAgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCkBAIC0xNzksNyAr
MTc5LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFV
c2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBpZiAoIXN0YXRGdW5jKHBhdGgs
ICZzdGF0UmVzdWx0KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUg
PSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCk7CiAgICAgYm9vbCBpc0hpZGRlbiA9
ICFmaWxlbmFtZS5pc0VtcHR5KCkgJiYgZmlsZW5hbWVbMF0gPT0gJy4nOwogCiAgICAgcmV0dXJu
IEZpbGVNZXRhZGF0YSB7CkBAIC0xOTAsMjQgKzE5MCwyNCBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBw
YXRoLAogICAgIH07CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIGZp
bGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVMU3RhdCk7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25z
dCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gRmlsZVN5c3RlbTo6
ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBhdGgsICZnZXRGaWxlU3RhdCk7CiB9
CiAKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK1N0cmluZyBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkK
IHsKICAgICBpZiAocGF0aC5lbmRzV2l0aChHX0RJUl9TRVBBUkFUT1JfUykpCiAgICAgICAgIHJl
dHVybiBwYXRoICsgY29tcG9uZW50OwogICAgIHJldHVybiBwYXRoICsgR19ESVJfU0VQQVJBVE9S
X1MgKyBjb21wb25lbnQ7CiB9CiAKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0
cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQorU3Ry
aW5nIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRo
LCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwogICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGgpOwpAQCAtMjE4LDMxICsyMTgs
MzEgQEAgU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBj
b25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOwogfQogCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiti
b29sIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRo
KTsKICAgICByZXR1cm4gZmlsZW5hbWUgPyBnX21rZGlyX3dpdGhfcGFyZW50cyhmaWxlbmFtZS5n
ZXQoKSwgU19JUldYVSkgIT0gLTEgOiBmYWxzZTsKIH0KIAotU3RyaW5nIGhvbWVEaXJlY3RvcnlQ
YXRoKCkKK1N0cmluZyBGaWxlU3lzdGVtOjpob21lRGlyZWN0b3J5UGF0aCgpCiB7Ci0gICAgcmV0
dXJuIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfaG9tZV9kaXIoKSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZ19nZXRfaG9tZV9kaXIoKSk7CiB9CiAKLWJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0
IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQorYm9v
bCBGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRo
LCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCiB7Ci0gICAgQ1N0cmluZyB0YXJnZXRQ
YXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24odGFyZ2V0UGF0aCk7CisgICAgQ1N0
cmluZyB0YXJnZXRQYXRoRlNSZXAgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24odGFyZ2V0UGF0aCk7CiAgICAgaWYgKCF0YXJnZXRQYXRoRlNSZXAuZGF0YSgpIHx8IHRhcmdl
dFBhdGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc3ltYm9saWNMaW5rUGF0aCk7CisgICAgQ1N0cmluZyBzeW1ib2xpY0xpbmtQYXRoRlNSZXAg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3ltYm9saWNMaW5rUGF0aCk7
CiAgICAgaWYgKCFzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0YSgpIHx8IHN5bWJvbGljTGlua1Bh
dGhGU1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
cmV0dXJuICFzeW1saW5rKHRhcmdldFBhdGhGU1JlcC5kYXRhKCksIHN5bWJvbGljTGlua1BhdGhG
U1JlcC5kYXRhKCkpOwogfQogCi1TdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aE5hbWUpCitTdHJpbmcgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aE5hbWUpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdG1wRmlsZW5hbWUgPSB1bmVz
Y2FwZWRGaWxlbmFtZShwYXRoTmFtZSk7CiAgICAgaWYgKCF0bXBGaWxlbmFtZSkKQEAgLTI1Miw3
ICsyNTIsNyBAQCBTdHJpbmcgcGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aE5hbWUp
CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoYmFzZU5hbWUuZ2V0KCkpOwogfQogCi1DU3Ry
aW5nIGFwcGxpY2F0aW9uRGlyZWN0b3J5UGF0aCgpCitDU3RyaW5nIEZpbGVTeXN0ZW06OmFwcGxp
Y2F0aW9uRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgQ1N0cmluZyBwYXRoID0gZ2V0Q3VycmVudEV4
ZWN1dGFibGVQYXRoKCk7CiAgICAgaWYgKCFwYXRoLmlzTnVsbCgpKQpAQCAtMjY3LDcgKzI2Nyw3
IEBAIENTdHJpbmcgYXBwbGljYXRpb25EaXJlY3RvcnlQYXRoKCkKICAgICByZXR1cm4gZGlybmFt
ZS5nZXQoKTsKIH0KIAotQ1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCkKK0NTdHJpbmcgRmls
ZVN5c3RlbTo6c2hhcmVkUmVzb3VyY2VzUGF0aCgpCiB7CiAgICAgc3RhdGljIENTdHJpbmcgY2Fj
aGVkUGF0aDsKICAgICBpZiAoIWNhY2hlZFBhdGguaXNOdWxsKCkpCkBAIC0yOTEsNyArMjkxLDcg
QEAgQ1N0cmluZyBzaGFyZWRSZXNvdXJjZXNQYXRoKCkKICAgICByZXR1cm4gY2FjaGVkUGF0aDsK
IH0KIAotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJiBwYXRoLCB1aW50NjRf
dCYgZnJlZVNwYWNlKQorYm9vbCBGaWxlU3lzdGVtOjpnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCB1aW50NjRfdCYgZnJlZVNwYWNlKQogewogICAgIEdVbmlxdWVQdHI8Z2No
YXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CiAgICAgaWYgKCFmaWxlbmFt
ZSkKQEAgLTMwNiw3ICszMDYsNyBAQCBib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJp
bmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiAgICAgcmV0dXJuICEhZnJlZVNwYWNlOwog
fQogCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCitTdHJpbmcgRmls
ZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKICAgICBpZiAo
IWZpbGVuYW1lKQpAQCAtMzE2LDcgKzMxNiw3IEBAIFN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChkaXJuYW1lLmdldCgp
KTsKIH0KIAotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IFN0cmluZyYgZmlsdGVyKQorVmVjdG9yPFN0cmluZz4gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogewogICAg
IFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CiAKQEAgLTMzNCwzNSArMzM0LDM1IEBAIFZlY3RvcjxT
dHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZp
bHRlcikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGVudHJ5KGdfYnVpbGRfZmlsZW5hbWUoZmlsZW5hbWUuZ2V0KCksIG5hbWUsIG51bGxwdHIpKTsK
LSAgICAgICAgZW50cmllcy5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihlbnRyeS5nZXQoKSkpOworICAgICAgICBlbnRyaWVzLmFwcGVuZChGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGVudHJ5LmdldCgpKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGVudHJpZXM7CiB9CiAKLVN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitTdHJpbmcgRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZp
bGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMlcyIsIHByZWZpeC51dGY4KCkuZGF0YSgpLCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkudXRmOCgpLmRhdGEoKSkpOwogICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRlbXBQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdG1wX2RpcigpLCBmaWxlbmFt
ZS5nZXQoKSwgTlVMTCkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aCh0ZW1wUGF0aC5nZXQoKSkpOwogCiAgICAgaGFuZGxlID0gZ19maWxl
X2NyZWF0ZV9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCAwLCAwKTsK
LSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVy
biBTdHJpbmc6OmZyb21VVEY4KHRlbXBQYXRoLmdldCgpKTsKIH0KIAotUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgRmlsZVN5c3RlbTo6b3BlbkZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbW9kZSkKIHsKICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwogICAgIGlmICgh
ZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAg
ICAgICByZXR1cm4gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIAogICAg
IEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmaWxl
bmFtZS5nZXQoKSkpOwogICAgIEdGaWxlSU9TdHJlYW0qIGlvU3RyZWFtID0gMDsKLSAgICBpZiAo
bW9kZSA9PSBPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9PSBGaWxlU3lzdGVtOjpPcGVuRm9y
UmVhZCkKICAgICAgICAgaW9TdHJlYW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQo
KSwgMCwgMCk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpIHsKKyAgICBlbHNl
IGlmIChtb2RlID09IEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSkgewogICAgICAgICBpZiAoZ19m
aWxlX3Rlc3QoZmlsZW5hbWUuZ2V0KCksIHN0YXRpY19jYXN0PEdGaWxlVGVzdD4oR19GSUxFX1RF
U1RfRVhJU1RTIHwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpKQogICAgICAgICAgICAgaW9TdHJl
YW0gPSBnX2ZpbGVfb3Blbl9yZWFkd3JpdGUoZmlsZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIGVs
c2UKQEAgLTM3MiwyNCArMzcyLDI0IEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogICAgIHJldHVybiBpb1N0cmVhbTsK
IH0KIAotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCit2b2lkIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkKIHsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICBpZiAoIUZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZ19pb19z
dHJlYW1fY2xvc2UoR19JT19TVFJFQU0oaGFuZGxlKSwgMCwgMCk7CiAgICAgZ19vYmplY3RfdW5y
ZWYoaGFuZGxlKTsKLSAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAg
IGhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiB9CiAKLWxv
bmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zm
c2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCitsb25nIGxvbmcgRmlsZVN5c3RlbTo6c2Vla0Zp
bGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNl
dCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW4gb3JpZ2luKQogewogICAgIEdTZWVrVHlwZSBz
ZWVrVHlwZSA9IEdfU0VFS19TRVQ7CiAgICAgc3dpdGNoIChvcmlnaW4pIHsKLSAgICBjYXNlIFNl
ZWtGcm9tQmVnaW5uaW5nOgorICAgIGNhc2UgRmlsZVN5c3RlbTo6U2Vla0Zyb21CZWdpbm5pbmc6
CiAgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX1NFVDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBTZWVrRnJvbUN1cnJlbnQ6CisgICAgY2FzZSBGaWxlU3lzdGVtOjpTZWVrRnJvbUN1cnJlbnQ6
CiAgICAgICAgIHNlZWtUeXBlID0gR19TRUVLX0NVUjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTZWVrRnJvbUVuZDoKQEAgLTQwNyw3ICs0MDcsNyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4g
bwogICAgIHJldHVybiBnX3NlZWthYmxlX3RlbGwoR19TRUVLQUJMRShnX2lvX3N0cmVhbV9nZXRf
aW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhhbmRsZSkpKSk7CiB9CiAKLWludCB3cml0ZVRvRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQoraW50IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgZ3NpemUg
Ynl0ZXNXcml0dGVuOwogICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGwoZ19pb19zdHJlYW1f
Z2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSksCkBAIC00MTUsNyArNDE1LDcg
QEAgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIGJ5dGVzV3JpdHRlbjsKIH0KIAotaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQoraW50IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewogICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBkbyB7CkBAIC00MjcsNyArNDI3LDcgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9s
ZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6bW92ZUZpbGUo
Y29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiB7CiAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gb2xkRmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShvbGRQYXRoKTsK
ICAgICBpZiAoIW9sZEZpbGVuYW1lKQpAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wgbW92ZUZpbGUo
Y29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCiAgICAgcmV0dXJu
IGdfcmVuYW1lKG9sZEZpbGVuYW1lLmdldCgpLCBuZXdGaWxlbmFtZS5nZXQoKSkgIT0gLTE7CiB9
CiAKLWJvb2wgaGFyZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uKQorYm9vbCBGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZpbGUo
Y29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCiB7CiAjaWYg
T1MoV0lORE9XUykKICAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNvdXJjZS5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxs
VGVybWluYXRpb24oKS5kYXRhKCksIFRSVUUpOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIGJvb2wgaGFy
ZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uKQogI2VuZGlmCiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmlj
ZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gRmlsZVN5
c3RlbTo6Z2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKIHsKICAgICBHVW5p
cXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKGZzRmlsZS5kYXRhKCkp
OwogICAgIGlmICghZmlsZW5hbWUpCkBAIC00NzgsMTcgKzQ3OCwxNyBAQCBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB9CiAKICNp
ZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBGaWxlTG9ja01vZGUgbG9ja01vZGUpCitib29sIEZpbGVTeXN0ZW06OmxvY2tGaWxlKEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIEZpbGVTeXN0ZW06OkZpbGVMb2NrTW9k
ZSBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NIID09IExvY2tTaGFyZWQs
IExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3RlZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9D
S19FWCA9PSBMb2NrRXhjbHVzaXZlLCBMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQp
OwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gTG9ja05vbkJsb2NraW5nLCBMb2NrTm9u
QmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19T
SCA9PSBGaWxlU3lzdGVtOjpMb2NrU2hhcmVkLCBGaWxlU3lzdGVtOjpMb2NrU2hhcmVkRW5jb2Rp
bmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gRmlsZVN5c3Rl
bTo6TG9ja0V4Y2x1c2l2ZSwgRmlsZVN5c3RlbTo6TG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4
cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX05CID09IEZpbGVTeXN0ZW06OkxvY2tO
b25CbG9ja2luZywgRmlsZVN5c3RlbTo6TG9ja05vbkJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0
ZWQpOwogICAgIGF1dG8qIGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVh
bShHX0lPX1NUUkVBTShoYW5kbGUpKTsKICAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rl
c2NyaXB0b3JfYmFzZWRfZ2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFt
KSksIGxvY2tNb2RlKTsKICAgICByZXR1cm4gcmVzdWx0ICE9IC0xOwogfQogCi1ib29sIHVubG9j
a0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK2Jvb2wgRmlsZVN5c3RlbTo6dW5sb2Nr
RmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogewogICAgIGF1dG8q
IGlucHV0U3RyZWFtID0gZ19pb19zdHJlYW1fZ2V0X2lucHV0X3N0cmVhbShHX0lPX1NUUkVBTSho
YW5kbGUpKTsKICAgICBpbnQgcmVzdWx0ID0gZmxvY2soZ19maWxlX2Rlc2NyaXB0b3JfYmFzZWRf
Z2V0X2ZkKEdfRklMRV9ERVNDUklQVE9SX0JBU0VEKGlucHV0U3RyZWFtKSksIExPQ0tfVU4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGli
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAK
aW5kZXggYWQ3MzQ5ZDZmM2QuLjMzNWQ4NWQxYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTMzLDEyICszMywxMiBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gY29udGVudHM7CiAgICAgZ3NpemUgc2l6ZTsKICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRhdGEo
KSwgJmNvbnRlbnRzLm91dFB0cigpLCAmc2l6ZSwgJmVycm9yLm91dFB0cigpKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAl
cyIsIGZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1l
c3NhZ2UpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRz
IG9mIGZpbGUgJXMgLSAlcyIsIEZpbGVTeXN0ZW06OmZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0
aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggY2E2MzNhMmRhOGYuLmNiODBlODIzNmIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50
S2V5U2Vzc2lvbi5tbQpAQCAtMzY1LDEwICszNjUsMTAgQEAgQVZDb250ZW50S2V5U2Vzc2lvbiog
Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246OmNvbnRlbnRLZXlTZXNzaW9uKCkKIAogICAg
ICAgICBtX2NvbnRlbnRLZXlTZXNzaW9uID0gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygp
IGNvbnRlbnRLZXlTZXNzaW9uV2l0aEtleVN5c3RlbTpnZXRBVkNvbnRlbnRLZXlTeXN0ZW1GYWly
UGxheVN0cmVhbWluZygpXTsKICAgICB9IGVsc2UgewotICAgICAgICBTdHJpbmcgc3RvcmFnZURp
cmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoc3RvcmFnZVBhdGgpOworICAgICAgICBTdHJpbmcgc3Rv
cmFnZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoc3RvcmFnZVBhdGgpOwog
Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgewotICAgICAgICAg
ICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgICAgICAg
ICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRl
eCA2YTk4OWE1YTAyZC4uMTA3YjFiZGZmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMTA1LDcgKzEwNSw3
IEBAIFN0cmluZyBDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDOjpzdG9yYWdlUGF0aCgpIGNv
bnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9w
LnBsaXN0Iik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCBjMDk3M2Vm
YzBkOC4uMzJkMzA4YzAyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTkyNywx
MiArOTI3LDEyIEBAIEFWU3RyZWFtU2Vzc2lvbiogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzdHJlYW1TZXNzaW9uKCkKICAgICAgICAgaWYgKHN0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBpZiAoIWZpbGVF
eGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKLSAgICAgICAgICAgIGlmICghbWFrZUFsbERpcmVj
dG9yaWVzKHN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3Qi
KTsKKyAgICAgICAgU3RyaW5nIHN0b3JhZ2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAgICAg
ICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFkb3B0TlMoW2FsbG9jQVZTdHJlYW1TZXNzaW9uSW5zdGFu
Y2UoKSBpbml0V2l0aFN0b3JhZ2VEaXJlY3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRo
OnN0b3JhZ2VQYXRoXV0pOwogICAgIH0KICAgICByZXR1cm4gbV9zdHJlYW1TZXNzaW9uLmdldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRl
eCBmZDlhNzU5MjE3ZC4uMTJjOTAxZjM4ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMzg4LDcgKzEzODgsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNr
KE1lZGlhUGxheWVyUAogICAgIGdfb2JqZWN0X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIu
Z2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwgJmRvd25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7
CiAgICAgcGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyID0gbnVsbHB0cjsKIAotICAgIGlmIChVTkxJ
S0VMWSghZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkgeworICAgIGlmIChVTkxJS0VM
WSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkgewogICAgICAg
ICBHU1RfV0FSTklORygiQ291bGRuJ3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFm
dGVyIGNyZWF0aW9uIiwgZG93bmxvYWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTE0MDUsOCArMTQwNSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwdXJnZU9sZERvd25sb2FkRmlsZXMoY29uc3QgY2hhciogZG93bmxvYWRGaWxlCiAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiB0ZW1wbGF0ZUZpbGUoZ19wYXRoX2dldF9iYXNlbmFtZShkb3dubG9hZEZp
bGVUZW1wbGF0ZSkpOwogICAgIFN0cmluZyB0ZW1wbGF0ZVBhdHRlcm4gPSBTdHJpbmcodGVtcGxh
dGVGaWxlLmdldCgpKS5yZXBsYWNlKCJYIiwgIj8iKTsKIAotICAgIGZvciAoYXV0byYgZmlsZVBh
dGggOiBsaXN0RGlyZWN0b3J5KHRlbXBsYXRlUGF0aC5nZXQoKSwgdGVtcGxhdGVQYXR0ZXJuKSkg
ewotICAgICAgICBpZiAoVU5MSUtFTFkoIWRlbGV0ZUZpbGUoZmlsZVBhdGgpKSkgeworICAgIGZv
ciAoYXV0byYgZmlsZVBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHRlbXBsYXRlUGF0
aC5nZXQoKSwgdGVtcGxhdGVQYXR0ZXJuKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkoIUZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpKSkgewogICAgICAgICAgICAgR1NUX1dBUk5JTkco
IkNvdWxkbid0IHVubGluayBsZWdhY3kgbWVkaWEgdGVtcG9yYXJ5IGZpbGU6ICVzIiwgZmlsZVBh
dGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5o
CmluZGV4IDY1YWQyMjc4NzA0Li40YzNlODAxOGQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplKEhCSVRNQVApOwogCiAjaWZuZGVmIE5ERUJV
RwotICAgIHZvaWQgd3JpdGVUb0ZpbGUoTFBDV1NUUik7CisgICAgdm9pZCBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShMUENXU1RSKTsKICNlbmRpZgogCiAgICAgVUludDgqIGJ1ZmZlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYml0bWFwQnVmZmVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1
aWNrTG9vay5tbQppbmRleCBhNDVmNzU3Y2RmOS4uZDNkZjhlZWVmZmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyBO
U0RpY3Rpb25hcnkgKnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogCiBOU1N0cmluZyAq
Y3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhOU1N0cmluZyAqZmlsZU5hbWUpCiB7Ci0g
ICAgTlNTdHJpbmcgKmRvd25sb2FkRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiUXVpY2tMb29rQ29udGVudCIpOworICAgIE5TU3RyaW5nICpkb3dubG9hZERpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlF1aWNrTG9va0NvbnRlbnQi
KTsKICAgICBpZiAoIWRvd25sb2FkRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQ
YXN0ZWJvYXJkLm1tCmluZGV4IDVjZGY0ZDg4MWE0Li5iMzQzMTY4ZWYyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW0KQEAgLTUxNiw3ICs1MTYsNyBAQCBzdGF0aWMgTlNVUkwgKmxpbmtUZW1wb3JhcnlJdGVt
UHJvdmlkZXJGaWxlc1RvRHJvcFN0YWdpbmdEaXJlY3RvcnkoTlNVUkwgKnVybCwgTgogICAgIGlm
ICghdXJsKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgTlNTdHJpbmcgKnRlbXBvcmFyeURh
dGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOworICAgIE5TU3RyaW5nICp0ZW1wb3Jh
cnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVU
ZW1wb3JhcnlEaXJlY3RvcnkoZGF0YUludGVyYWN0aW9uRGlyZWN0b3J5UHJlZml4KTsKICAgICBp
ZiAoIXRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1N
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbQppbmRl
eCA4ZjE0MzE2NTgxOC4uNjQwZGZjMTJiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9GaWxlU3lzdGVtTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiti
b29sIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICBhdXRvIGZpbGVNYW5hZ2VyID0gYWRvcHROUyhbW05TRmlsZU1hbmFnZXIgYWxsb2Nd
IGluaXRdKTsKIApAQCAtNDUsMTAgKzQ1LDEwIEBAIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIH0KIAogICAgIC8vIHJtZGlyKC4uLikgcmV0dXJucyAw
IG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24gb2YgdGhlIHBhdGggYW5kIG5vbi16ZXJvIGluIGFueSBv
dGhlciBjYXNlIChpbmNsdWRpbmcgaW52YWxpZCBwZXJtaXNzaW9ucyBvciBub24tZXhpc3RlbnQg
ZmlsZSkKLSAgICByZXR1cm4gIXJtZGlyKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCkpOworICAgIHJldHVybiAhcm1kaXIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpLmRhdGEoKSk7CiB9CiAKLXZvaWQgc2V0TWV0YWRhdGFVUkwoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHJlZmVycmVyKQordm9pZCBGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIpCiB7CiAgICAgU3RyaW5nIHVybFN0cmluZzsKICAgICBpZiAoTlNVUkwgKnVybCA9IFVS
TFdpdGhVc2VyVHlwZWRTdHJpbmcobWV0YWRhdGFVUkxTdHJpbmcsIG5pbCkpCkBAIC03MSwxNSAr
NzEsMTUgQEAgdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFMKICAgICB9KTsKIH0KIAotYm9vbCBjYW5F
eGNsdWRlRnJvbUJhY2t1cCgpCitib29sIEZpbGVTeXN0ZW06OmNhbkV4Y2x1ZGVGcm9tQmFja3Vw
KCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBleGNsdWRlRnJvbUJhY2t1cChjb25z
dCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICAvLyBJdCBpcyBjcml0aWNhbCB0byBwYXNzIEZBTFNFIGZv
ciBleGNsdWRlQnlQYXRoIGJlY2F1c2UgZXhjbHVkaW5nIGJ5IHBhdGggcmVxdWlyZXMgcm9vdCBw
cml2aWxlZ2VzLgotICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKHBhdGhBc1VSTChwYXRoKS5n
ZXQoKSwgVFJVRSwgRkFMU0UpOyAKKyAgICBDU0JhY2t1cFNldEl0ZW1FeGNsdWRlZChGaWxlU3lz
dGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCksIFRSVUUsIEZBTFNFKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
RGF0YUZpbGVSZWZlcmVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCmluZGV4IGM4OWI1MjgzZTM5Li42YTVmMTJlODRkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmNwcApAQCAtMzgsNyArMzgsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLCBtX3Jl
cGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fc2l6ZSgw
KQotICAgICwgbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCisg
ICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShGaWxlU3lzdGVtOjppbnZhbGlkRmlsZVRp
bWUoKSkKIHsKIH0KIApAQCAtNDYsNyArNDYsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6On5C
bG9iRGF0YUZpbGVSZWZlcmVuY2UoKQogewogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQog
ICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCi0gICAgICAgIGRlbGV0ZUZpbGUo
bV9yZXBsYWNlbWVudFBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcmVw
bGFjZW1lbnRQYXRoKTsKICNlbmRpZgogfQogCkBAIC03OSw3ICs3OSw3IEBAIGRvdWJsZSBCbG9i
RGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAgICAgLy8gV2Ug
ZG8gbm90IGN1cnJlbnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMs
IGJlY2F1c2Ugd2UgaGF2ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoaXMg
aXMgaW5jb25zaXN0ZW50IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmplY3Rz
IHNob3VsZCBiZSBpbnZhbGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgogICAg
IGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQYXRo
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gaW52YWxpZEZpbGVUaW1lKCk7CisgICAgICAgIHJl
dHVybiBGaWxlU3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKTsKICNlbmRpZgogCiAgICAgcmV0dXJu
IG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogI2VuZGlmCiAK
ICAgICAvLyBGSVhNRTogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0
ZW4gZm9yIGZpbGUgc3lzdGVtIG9iamVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4K
LSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9wYXRo
KTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5n
U3ltbGlua3MobV9wYXRoKTsKICAgICBpZiAoIW1ldGFkYXRhKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUlt
cGwuY3BwCmluZGV4IDBmMDE5NzRjYTJiLi4xOTdlYjI5MmUzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCkBAIC0yODMs
MTQgKzI4MywxNCBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFy
eUZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcwogCiAgICAgICAgIGF1dG8gcGVy
Zm9ybVdyaXRpbmcgPSBbYmxvYnNGb3JXcml0aW5nID0gV1RGTW92ZShibG9ic0ZvcldyaXRpbmcp
LCAmZmlsZVBhdGhzXSgpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgYmxvYiA6IGJsb2JzRm9y
V3JpdGluZykgewotICAgICAgICAgICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOwotICAg
ICAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZShBU0NJ
SUxpdGVyYWwoIkJsb2IiKSwgZmlsZSk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIGZpbGU7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKEFTQ0lJTGl0ZXJhbCgiQmxvYiIpLCBm
aWxlKTsKIAogICAgICAgICAgICAgICAgIGF1dG8gZmlsZUNsb3NlciA9IFdURjo6bWFrZVNjb3Bl
RXhpdChbZmlsZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgY2xvc2VGaWxlKGZp
bGUpOworICAgICAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYg
KHRlbXBGaWxlUGF0aC5pc0VtcHR5KCkgfHwgIWlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChmaWxlKSkgewogICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB0byBvcGVuIHRlbXBvcmFyeSBmaWxlIGZvciB3cml0aW5nIGEgQmxvYiB0byBJbmRleGVkREIi
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0K
QEAgLTI5OCwxMyArMjk4LDEzIEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzCiAgICAgICAgICAg
ICAgICAgZm9yIChhdXRvJiBwYXJ0IDogYmxvYi5maWxlUGF0aHNPckRhdGFCdWZmZXJzKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0LnNlY29uZC5kYXRhKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBsZW5ndGggPSBwYXJ0LnNlY29uZC5kYXRhKCktPnNpemUoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0g
bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFydC5zZWNvbmQuZGF0
YSgpLT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHdyaXRpbmcgYSBCbG9iIHRvIHRlbXBvcmFyeSBmaWxl
IGZvciBzdG9yYWdlIGluIEluZGV4ZWREQiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghcGFydC5maXJz
dC5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcHBlbmRGaWxlQ29u
dGVudHNUb0ZpbGVIYW5kbGUocGFydC5maXJzdCwgZmlsZSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6YXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHBh
cnQuZmlyc3QsIGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgY29weWluZyBGaWxlIGNvbnRlbnRzIHRvIGEgQmxvYiB0ZW1wb3JhcnkgZmlsZSBm
b3Igc3RvcmFnZSBpbiBJbmRleGVkREIgKCVzIHRvICVzKSIsIHBhcnQuZmlyc3QudXRmOCgpLmRh
dGEoKSwgdGVtcEZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggYzU3NWZkYTQ1MmEu
LjcyNDQyM2VlYTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIHVpbnQ2NF90IEZvcm1EYXRhRWxlbWVudDo6bGVu
Z3RoSW5CeXRlcygpIGNvbnN0CiAgICAgICAgIGlmIChtX2ZpbGVMZW5ndGggIT0gQmxvYkRhdGFJ
dGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgIHJldHVybiBtX2ZpbGVMZW5ndGg7CiAgICAg
ICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICAgICAgaWYgKGdldEZpbGVTaXplKG1fc2hvdWxk
R2VuZXJhdGVGaWxlID8gbV9nZW5lcmF0ZWRGaWxlbmFtZSA6IG1fZmlsZW5hbWUsIGZpbGVTaXpl
KSkKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKG1fc2hvdWxkR2VuZXJhdGVG
aWxlID8gbV9nZW5lcmF0ZWRGaWxlbmFtZSA6IG1fZmlsZW5hbWUsIGZpbGVTaXplKSkKICAgICAg
ICAgICAgIHJldHVybiBmaWxlU2l6ZTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTY3
LDcgKzE2Nyw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IHNpemUpCiAKIHZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCiB7Ci0gICAgbV9lbGVtZW50cy5hcHBl
bmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxl
LCBpbnZhbGlkRmlsZVRpbWUoKSwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CisgICAgbV9lbGVtZW50
cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCAwLCBCbG9iRGF0YUl0ZW06OnRvRW5k
T2ZGaWxlLCBGaWxlU3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSwgc2hvdWxkR2VuZXJhdGVGaWxl
KSk7CiAgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxsb3B0OwogfQogCkBAIC00MDgsOSAr
NDA4LDkgQEAgdm9pZCBGb3JtRGF0YTo6cmVtb3ZlR2VuZXJhdGVkRmlsZXNJZk5lZWRlZCgpCiAg
ICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29k
ZWRGaWxlICYmIGVsZW1lbnQubV9vd25zR2VuZXJhdGVkRmlsZSkgewogICAgICAgICAgICAgQVNT
RVJUKCFlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUuaXNFbXB0eSgpKTsKICAgICAgICAgICAg
IEFTU0VSVChlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlKTsKLSAgICAgICAgICAgIFN0cmlu
ZyBkaXJlY3RvcnkgPSBkaXJlY3RvcnlOYW1lKGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSk7
Ci0gICAgICAgICAgICBkZWxldGVGaWxlKGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSk7Ci0g
ICAgICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnkpOworICAgICAgICAgICAg
U3RyaW5nIGRpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZWxlbWVudC5tX2dl
bmVyYXRlZEZpbGVuYW1lKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZWxl
bWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7CiAgICAgICAgICAgICBlbGVtZW50Lm1fZ2VuZXJh
dGVkRmlsZW5hbWUgPSBTdHJpbmcoKTsKICAgICAgICAgICAgIGVsZW1lbnQubV9vd25zR2VuZXJh
dGVkRmlsZSA9IGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRleCA5Mzgz
ODI0NGE3Yy4uYTE0NGQzNTI1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTQ3LDEzICsx
NDcsMTMgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxk
cyogZm9ybSkKICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQg
b3Igbm90IGlmIHJlcXVpcmVkLgotICAgICAgICBpZiAoaXNWYWxpZEZpbGVUaW1lKG5leHRJbnB1
dC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKSB7CisgICAgICAgIGlmIChGaWxlU3lz
dGVtOjppc1ZhbGlkRmlsZVRpbWUobmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZSkpIHsKICAgICAgICAgICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9uVGltZTsKLSAgICAg
ICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobmV4dElucHV0Lm1fZmlsZW5hbWUs
IGZpbGVNb2RpZmljYXRpb25UaW1lKSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNf
Y2FzdDx0aW1lX3Q+KG5leHRJbnB1dC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQor
ICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShuZXh0
SW5wdXQubV9maWxlbmFtZSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpIHx8IGZpbGVNb2RpZmljYXRp
b25UaW1lICE9IHN0YXRpY19jYXN0PHRpbWVfdD4obmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9k
aWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IG5leHRJbnB1dC5tX3Nob3VsZEdlbmVyYXRl
RmlsZSA/IG5leHRJbnB1dC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogbmV4dElucHV0Lm1fZmlsZW5h
bWU7Ci0gICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRo
RmlsZSgwLCBwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOworICAgICAgICBmb3JtLT5jdXJyZW50U3Ry
ZWFtID0gQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJM
KHBhdGgpLmdldCgpKTsKICAgICAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAg
ICAgICAgICAvLyBUaGUgZmlsZSBtdXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJl
YWRhYmxlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc5LDcgKzM3OSw3IEBAIFJl
dGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1E
YXRhJiBmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICAgICAgICAgIGlmIChnZXRGaWxl
U2l6ZShlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gZWxlbWVudC5tX2dlbmVyYXRlZEZp
bGVuYW1lIDogZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZSkpCisgICAgICAgICAgICBpZiAo
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSA/IGVs
ZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA6IGVsZW1lbnQubV9maWxlbmFtZSwgZmlsZVNpemUp
KQogICAgICAgICAgICAgICAgIGxlbmd0aCArPSBmaWxlU2l6ZTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IGM3NTc1ZDdhYTgxLi42MmMxMWMxMjc1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMTIsOSArMjEyLDkgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMjAwKQogICAgIGlm
IChtX3VybC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0gZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOworICAgICAgICBhdXRv
IGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5m
aWxlU3lzdGVtUGF0aCgpKTsKICAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOwor
ICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlk
KGZzUmVwRmlsZSk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZh
bHVlKCkpCiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVy
IG51bWJlcldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1
ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAK
aW5kZXggZWQ1OTAyNjUxYjIuLjAzNWE2YjE5MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVu
dHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHJpbmcm
IGNhY2hlRGlyKQogICAgIDogbV9oZWFkZXJGaWxlbmFtZShjYWNoZURpcikKICAgICAsIG1fY29u
dGVudEZpbGVuYW1lKGNhY2hlRGlyKQotICAgICwgbV9jb250ZW50RmlsZShpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQorICAgICwgbV9jb250ZW50RmlsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogICAgICwgbV9lbnRyeVNpemUoMCkKICAgICAsIG1fZXhwaXJlRGF0
ZSgtMSkKICAgICAsIG1faGVhZGVyUGFyc2VkKGZhbHNlKQpAQCAtNzksNyArNzksNyBAQCBib29s
IEN1cmxDYWNoZUVudHJ5Ojppc0xvYWRpbmcoKSBjb25zdAogLy8gQ2FjaGUgbWFuYWdlciBzaG91
bGQgaW52YWxpZGF0ZSB0aGUgZW50cnkgb24gZmFsc2UKIGJvb2wgQ3VybENhY2hlRW50cnk6Omlz
Q2FjaGVkKCkKIHsKLSAgICBpZiAoIWZpbGVFeGlzdHMobV9jb250ZW50RmlsZW5hbWUpIHx8ICFm
aWxlRXhpc3RzKG1faGVhZGVyRmlsZW5hbWUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhtX2NvbnRlbnRGaWxlbmFtZSkgfHwgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9oZWFk
ZXJGaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghbV9oZWFkZXJQ
YXJzZWQpIHsKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlQ2Fj
aGVkRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gQXBwZW5kCi0gICAgd3JpdGVUb0ZpbGUobV9jb250ZW50RmlsZSwgZGF0
YSwgc2l6ZSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9jb250ZW50RmlsZSwgZGF0
YSwgc2l6ZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEyNSw4ICsxMjUsOCBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpyZWFkQ2FjaGVkRGF0YShSZXNvdXJjZUhhbmRsZSogam9iKQogCiBi
b29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0g
b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQoaGVhZGVyRmlsZSkpIHsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGVhZGVyRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1faGVhZGVyRmlsZW5hbWUsIEZp
bGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGhlYWRlckZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENv
dWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgbV9oZWFkZXJGaWxlbmFtZS5sYXRpbjEoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTQwLDEyICsxNDAsMTIg
QEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKGl0LT52YWx1
ZSk7CiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iKTsKICAgICAgICAgQ1N0cmluZyBo
ZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwotICAgICAgICB3cml0ZVRv
RmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0
aW4xLmxlbmd0aCgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmls
ZSwgaGVhZGVyRmllbGRMYXRpbjEuZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7
CiAgICAgICAgIG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0
LT52YWx1ZSk7CiAgICAgICAgICsraXQ7CiAgICAgfQogCi0gICAgY2xvc2VGaWxlKGhlYWRlckZp
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoZWFkZXJGaWxlKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMjI3LDE2ICsyMjcsMTYgQEAgdm9pZCBDdXJsQ2FjaGVFbnRyeTo6Z2Vu
ZXJhdGVCYXNlRmlsZW5hbWUoY29uc3QgQ1N0cmluZyYgdXJsKQogYm9vbCBDdXJsQ2FjaGVFbnRy
eTo6bG9hZEZpbGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBWZWN0b3I8Y2hhcj4m
IGJ1ZmZlcikKIHsKICAgICAvLyBPcGVuIHRoZSBmaWxlCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxl
IGlucHV0RmlsZSA9IG9wZW5GaWxlKGZpbGVwYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFp
c0hhbmRsZVZhbGlkKGlucHV0RmlsZSkpIHsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaW5wdXRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZXBhdGgsIEZpbGVTeXN0
ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5w
dXRGaWxlKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qg
b3BlbiAlcyBmb3IgcmVhZFxuIiwgZmlsZXBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGxvbmcgbG9uZyBmaWxlc2l6ZSA9IC0xOwotICAg
IGlmICghZ2V0RmlsZVNpemUoZmlsZXBhdGgsIGZpbGVzaXplKSkgeworICAgIGlmICghRmlsZVN5
c3RlbTo6Z2V0RmlsZVNpemUoZmlsZXBhdGgsIGZpbGVzaXplKSkgewogICAgICAgICBMT0coTmV0
d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgZ2V0IGZpbGUgc2l6ZSBvZiAlc1xuIiwgZmls
ZXBhdGgubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgY2xvc2VGaWxlKGlucHV0RmlsZSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbnB1dEZpbGUpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC0yNDksMjQgKzI0OSwyNCBAQCBib29sIEN1cmxDYWNoZUVudHJ5
Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYg
YnVmZgogICAgICAgICBpZiAoZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRT
aXplKQogICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSBmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0
aW9uOwogCi0gICAgICAgIGJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZl
ci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOworICAgICAgICBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaW5wdXRGaWxlLCBidWZmZXIuZGF0YSgp
ICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKICAgICAgICAgaWYgKGJ5dGVzUmVh
ZCAhPSBidWZmZXJSZWFkU2l6ZSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBF
cnJvcjogQ291bGQgbm90IHJlYWQgZnJvbSAlc1xuIiwgZmlsZXBhdGgubGF0aW4xKCkuZGF0YSgp
KTsKLSAgICAgICAgICAgIGNsb3NlRmlsZShpbnB1dEZpbGUpOworICAgICAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KIAogICAgICAgICBidWZmZXJQb3NpdGlvbiArPSBidWZmZXJSZWFkU2l6ZTsKICAg
ICB9Ci0gICAgY2xvc2VGaWxlKGlucHV0RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGlucHV0RmlsZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgQ3VybENhY2hlRW50cnk6
OmludmFsaWRhdGUoKQogewogICAgIGNsb3NlQ29udGVudEZpbGUoKTsKLSAgICBkZWxldGVGaWxl
KG1faGVhZGVyRmlsZW5hbWUpOwotICAgIGRlbGV0ZUZpbGUobV9jb250ZW50RmlsZW5hbWUpOwor
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9oZWFkZXJGaWxlbmFtZSk7CisgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7CiAgICAgTE9HKE5ldHdvcmssICJD
YWNoZTogaW52YWxpZGF0ZWQgJXNcbiIsIG1fYmFzZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKIH0K
IApAQCAtMjgwLDcgKzI4MCw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnBhcnNlUmVzcG9uc2VI
ZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIGRvdWJsZSBmaWxl
VGltZTsKICAgICB0aW1lX3QgZmlsZU1vZGlmaWNhdGlvbkRhdGU7CiAKLSAgICBpZiAoZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUobV9oZWFkZXJGaWxlbmFtZSwgZmlsZU1vZGlmaWNhdGlvbkRhdGUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX2hlYWRlckZp
bGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9uRGF0ZSkpCiAgICAgICAgIGZpbGVUaW1lID0gZGlmZnRp
bWUoZmlsZU1vZGlmaWNhdGlvbkRhdGUsIDApICogMTAwMC4wOwogICAgIGVsc2UKICAgICAgICAg
ZmlsZVRpbWUgPSBjdXJyZW50VGltZU1TKCk7IC8vIEdNVApAQCAtMzQyLDExICszNDIsMTEgQEAg
c2l6ZV90IEN1cmxDYWNoZUVudHJ5OjplbnRyeVNpemUoKQogICAgICAgICBsb25nIGxvbmcgaGVh
ZGVyRmlsZVNpemU7CiAgICAgICAgIGxvbmcgbG9uZyBjb250ZW50RmlsZVNpemU7CiAKLSAgICAg
ICAgaWYgKCFnZXRGaWxlU2l6ZShtX2hlYWRlckZpbGVuYW1lLCBoZWFkZXJGaWxlU2l6ZSkpIHsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2hlYWRlckZpbGVuYW1lLCBo
ZWFkZXJGaWxlU2l6ZSkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6
IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBtX2hlYWRlckZpbGVuYW1lLmxhdGlu
MSgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9lbnRyeVNpemU7CiAgICAgICAgIH0K
LSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShtX2NvbnRlbnRGaWxlbmFtZSwgY29udGVudEZpbGVT
aXplKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKG1fY29udGVudEZp
bGVuYW1lLCBjb250ZW50RmlsZVNpemUpKSB7CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNh
Y2hlIEVycm9yOiBDb3VsZCBub3QgZ2V0IGZpbGUgc2l6ZSBvZiAlc1xuIiwgbV9jb250ZW50Rmls
ZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsK
ICAgICAgICAgfQpAQCAtMzYwLDEyICszNjAsMTIgQEAgc2l6ZV90IEN1cmxDYWNoZUVudHJ5Ojpl
bnRyeVNpemUoKQogCiBib29sIEN1cmxDYWNoZUVudHJ5OjpvcGVuQ29udGVudEZpbGUoKQogewot
ICAgIGlmIChpc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQorICAgIGlmIChGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKLSAgICBtX2NvbnRlbnRGaWxlID0gb3BlbkZpbGUobV9jb250ZW50RmlsZW5hbWUsIE9wZW5G
b3JXcml0ZSk7CisgICAgbV9jb250ZW50RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fY29u
dGVudEZpbGVuYW1lLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogCi0gICAgaWYgKGlzSGFu
ZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQobV9jb250ZW50RmlsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIExPRyhO
ZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgbV9j
b250ZW50RmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKQEAgLTM3NCwxMSArMzc0LDExIEBAIGJv
b2wgQ3VybENhY2hlRW50cnk6Om9wZW5Db250ZW50RmlsZSgpCiAKIGJvb2wgQ3VybENhY2hlRW50
cnk6OmNsb3NlQ29udGVudEZpbGUoKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2NvbnRl
bnRGaWxlKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9jb250ZW50Rmls
ZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgY2xvc2VGaWxlKG1fY29udGVudEZpbGUp
OwotICAgIG1fY29udGVudEZpbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShtX2NvbnRlbnRGaWxlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaAppbmRleCA5MmQ2YmMzM2E0YS4uODFjYmM3MTM5YjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5o
CkBAIC03NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faGVhZGVyRmlsZW5hbWU7
CiAgICAgU3RyaW5nIG1fY29udGVudEZpbGVuYW1lOwogCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxl
IG1fY29udGVudEZpbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fY29u
dGVudEZpbGU7CiAKICAgICBzaXplX3QgbV9lbnRyeVNpemU7CiAgICAgZG91YmxlIG1fZXhwaXJl
RGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzNWJmZTJlZjJjMi4uNDZlMTdlOWZkMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKQEAgLTc2LDggKzc2LDggQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGlmICghZmlsZUV4aXN0cyhtX2NhY2hlRGlyKSkgewotICAgICAg
ICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyKSkgeworICAgIGlmICghRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRGlyKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyKSkgewogICAgICAgICAgICAgTE9HKE5ldHdv
cmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gb3IgY3JlYXRlIGNhY2hlIGRpcmVjdG9y
eSEgQ2FjaGVNYW5hZ2VyIGRpc2FibGVkLlxuIik7CiAgICAgICAgICAgICBtX2Rpc2FibGVkID0g
dHJ1ZTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMywxNCArMTAzLDE0IEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2Nh
Y2hlRGlyKTsKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CiAKLSAgICBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gb3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgT3Bl
bkZvclJlYWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5kZXhGaWxlKSkgewogICAgICAgICBMT0coTmV0d29y
aywgIkNhY2hlIFdhcm5pbmc6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBpbmRleEZp
bGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBs
b25nIGxvbmcgZmlsZXNpemUgPSAtMTsKLSAgICBpZiAoIWdldEZpbGVTaXplKGluZGV4RmlsZVBh
dGgsIGZpbGVzaXplKSkgeworICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoaW5kZXhG
aWxlUGF0aCwgZmlsZXNpemUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6
IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBpbmRleEZpbGVQYXRoLmxhdGluMSgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjQsMTAgKzEyNCwxMCBAQCB2
b2lkIEN1cmxDYWNoZU1hbmFnZXI6OmxvYWRJbmRleCgpCiAgICAgICAgIGlmIChmaWxlc2l6ZSAt
IGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCiAgICAgICAgICAgICBidWZmZXJSZWFk
U2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247CiAKLSAgICAgICAgcmVhZEZyb21GaWxl
KGluZGV4RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6
ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShpbmRleEZpbGUsIGJ1ZmZlci5k
YXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwogICAgICAgICBidWZmZXJQ
b3NpdGlvbiArPSBidWZmZXJSZWFkU2l6ZTsKICAgICB9Ci0gICAgY2xvc2VGaWxlKGluZGV4Rmls
ZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGluZGV4RmlsZSk7CiAKICAgICAvLyBDcmVh
dGUgc3RyaW5ncyBmcm9tIGJ1ZmZlcgogICAgIFN0cmluZyBoZWFkZXJDb250ZW50ID0gU3RyaW5n
KGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwpAQCAtMTY0LDkgKzE2NCw5IEBAIHZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aCht
X2NhY2hlRGlyKTsKICAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CiAKLSAg
ICBkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBpbmRl
eEZpbGUgPSBvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmICgh
aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShp
bmRleEZpbGVQYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhG
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3Bl
bkZvcldyaXRlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaW5kZXhGaWxl
KSkgewogICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiAl
cyBmb3Igd3JpdGVcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE3NSwxMiArMTc1LDEyIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdl
cjo6c2F2ZUluZGV4KCkKICAgICBjb25zdCBhdXRvJiBlbmQgPSBtX0xSVUVudHJ5TGlzdC5lbmQo
KTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHVybExh
dGluMSA9IGl0LT5sYXRpbjEoKTsKLSAgICAgICAgd3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCB1cmxM
YXRpbjEuZGF0YSgpLCB1cmxMYXRpbjEubGVuZ3RoKCkpOwotICAgICAgICB3cml0ZVRvRmlsZShp
bmRleEZpbGUsICJcbiIsIDEpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShpbmRl
eEZpbGUsIHVybExhdGluMS5kYXRhKCksIHVybExhdGluMS5sZW5ndGgoKSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGluZGV4RmlsZSwgIlxuIiwgMSk7CiAgICAgICAgICsraXQ7
CiAgICAgfQogCi0gICAgY2xvc2VGaWxlKGluZGV4RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGluZGV4RmlsZSk7CiB9CiAKIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bWFrZVJvb21G
b3JOZXdFbnRyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IDg1MDQ3ZmRjNmNlLi5hZTJiZmQ2OGU1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZENv
bXBsZXRlKCkKIAogICAgIGlmICghbV9kZXN0aW5hdGlvbi5pc0VtcHR5KCkpIHsKICAgICAgICAg
aWYgKG1fY3VybFJlcXVlc3QgJiYgIW1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRGaWxlUGF0
aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1vdmVGaWxlKG1fY3VybFJlcXVlc3QtPmdldERv
d25sb2FkZWRGaWxlUGF0aCgpLCBtX2Rlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIEZpbGVTeXN0
ZW06Om1vdmVGaWxlKG1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRGaWxlUGF0aCgpLCBtX2Rl
c3RpbmF0aW9uKTsKICAgICB9CiAKICAgICBpZiAobV9saXN0ZW5lcikKQEAgLTEzNyw3ICsxMzcs
NyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6Y3VybERpZEZhaWxXaXRoRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgcmVzb3VyY2VFcnJvcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZGVs
ZXRlc0ZpbGVVcG9uRmFpbHVyZSAmJiBtX2N1cmxSZXF1ZXN0ICYmICFtX2N1cmxSZXF1ZXN0LT5n
ZXREb3dubG9hZGVkRmlsZVBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0ZUZpbGUobV9j
dXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRGaWxlUGF0aCgpKTsKIAog
ICAgIGlmIChtX2xpc3RlbmVyKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRGYWlsKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAppbmRleCAyZWUzNDdmNDc2NS4uOTdjYTMyZWE4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNDQ4LDcgKzQ0
OCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwRm9ybURhdGEoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIGlzUG9zdFJlcXVlc3QpCiAgICAgZm9yIChhdXRvIGVsZW1lbnQgOiBlbGVt
ZW50cykgewogICAgICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpU
eXBlOjpFbmNvZGVkRmlsZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplUmVzdWx0
OwotICAgICAgICAgICAgaWYgKGdldEZpbGVTaXplKGVsZW1lbnQubV9maWxlbmFtZSwgZmlsZVNp
emVSZXN1bHQpKSB7CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZWxl
bWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZVJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
ZmlsZVNpemVSZXN1bHQgPiBtYXhDdXJsT2ZmVCkgewogICAgICAgICAgICAgICAgICAgICAvLyBG
aWxlIHNpemUgaXMgdG9vIGJpZyBmb3Igc3BlY2lmeWluZyBpdCB0byBjVVJMCiAgICAgICAgICAg
ICAgICAgICAgIGNodW5rZWRUcmFuc2ZlciA9IHRydWU7CkBAIC02MTksMjIgKzYxOSwyMiBAQCB2
b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAo
bV9kb3dubG9hZEZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fZG93bmxvYWRGaWxl
UGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJkb3dubG9hZCIsIG1fZG93bmxvYWRGaWxlSGFuZGxl
KTsKKyAgICAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJkb3dubG9hZCIsIG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKICAgICB9CiAKLSAg
ICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
LSAgICAgICAgd3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUo
KSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOwogCi0gICAgaWYgKG1fZG93bmxvYWRG
aWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgaWYgKG1fZG93bmxv
YWRGaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSk7Ci0g
ICAgbV9kb3dubG9hZEZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSk7CisgICAgbV9kb3du
bG9hZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwog
fQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbGVhbnVwRG93bmxvYWRGaWxlKCkKQEAgLTY0Miw3ICs2
NDIsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjbGVhbnVwRG93bmxvYWRGaWxlKCkKICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgpOwogCiAgICAgaWYgKCFtX2Rvd25sb2FkRmls
ZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9kb3dubG9hZEZpbGVQYXRo
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOwog
ICAgICAgICBtX2Rvd25sb2FkRmlsZVBhdGggPSBTdHJpbmcoKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4
IDI1YjFlOTY3MzVlLi5hNjdmZjcxZjU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2
YXRlOgogICAgIExvY2sgbV9kb3dubG9hZE11dGV4OwogICAgIGJvb2wgbV9pc0VuYWJsZWREb3du
bG9hZFRvRmlsZSB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZG93bmxvYWRGaWxlUGF0aDsKLSAg
ICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGVIYW5kbGUgeyBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93
bmxvYWRGaWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9
OwogCiAgICAgTmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggZWNkYmYxMWE1YjIuLjFjZmZlMzgzZWUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVD
dXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpz
ZXRDbGllbnRDZXJ0aWZpY2F0ZUluZm8oY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcm
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmIChmaWxlRXhpc3RzKGNl
cnRpZmljYXRlKSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhjZXJ0aWZpY2F0ZSkp
CiAgICAgICAgIEN1cmxDb250ZXh0OjpzaW5nbGV0b24oKS5zc2xIYW5kbGUoKS5zZXRDbGllbnRD
ZXJ0aWZpY2F0ZUluZm8oaG9zdCwgY2VydGlmaWNhdGUsIGtleSk7CiAgICAgZWxzZQogICAgICAg
ICBMT0coTmV0d29yaywgIkludmFsaWQgY2xpZW50IGNlcnRpZmljYXRlIGZpbGU6ICVzIVxuIiwg
Y2VydGlmaWNhdGUubGF0aW4xKCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5t
bQppbmRleCA1YWFkMjNhNWMyNi4uZmNmNTVkNzZlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VNYWMubW0KQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6Omdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIAogICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVy
YXRlZCA9IGZhbHNlOwogICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKLSAg
ICAgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyht
X3JlcGxhY2VtZW50UGF0aCkpCisgICAgICAgIGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpKQogICAg
ICAgICAgICAgbV9zaXplID0gbWV0YWRhdGEudmFsdWUoKS5sZW5ndGg7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNjQ1Nzg2MTVjMWUuLjIyNmFlZTlmMDBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCkBAIC00MSwxMSArNDEsMTEgQEAgc3RhdGljIHVpbnQ2NF90IGFw
cGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVz
c2FnZSwKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKHNvdXBNZXNzYWdlLT5yZXF1
ZXN0X2JvZHksIFNPVVBfTUVNT1JZX1RFTVBPUkFSWSwgYmxvYkl0ZW0uZGF0YSgpLmRhdGEoKS0+
ZGF0YSgpICsgYmxvYkl0ZW0ub2Zmc2V0KCksIGJsb2JJdGVtLmxlbmd0aCgpKTsKICAgICAgICAg
cmV0dXJuIGJsb2JJdGVtLmxlbmd0aCgpOwogICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpUeXBlOjpG
aWxlOiB7Ci0gICAgICAgIGlmICghaXNWYWxpZEZpbGVUaW1lKGJsb2JJdGVtLmZpbGUoKS0+ZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzVmFs
aWRGaWxlVGltZShibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKSkK
ICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9u
VGltZTsKLSAgICAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxl
KCktPnBhdGgoKSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCksIGZpbGVN
b2RpZmljYXRpb25UaW1lKQogICAgICAgICAgICAgfHwgZmlsZU1vZGlmaWNhdGlvblRpbWUgIT0g
c3RhdGljX2Nhc3Q8dGltZV90PihibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZSgpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmlu
ZGV4IGQ1YTc0MjY3Y2NjLi43OTVkN2RiY2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAg
LTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc3RyaW5nSXNOdW1lcmljKGNvbnN0
IGNoYXIqIHN0cikKIC8vIE9sZCB2ZXJzaW9ucyBvZiBXZWJLaXQgY3JlYXRlZCB0aGlzIGNhY2hl
Lgogdm9pZCBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKGNvbnN0IFN0cmlu
ZyYgY2FjaGVEaXJlY3RvcnkpCiB7Ci0gICAgQ1N0cmluZyBjYWNoZVBhdGggPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkpOworICAgIENTdHJpbmcgY2FjaGVQYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5KTsKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hlRmlsZShnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlUGF0aC5k
YXRhKCksICJzb3VwLmNhY2hlMiIsIG51bGxwdHIpKTsKICAgICBpZiAoIWdfZmlsZV90ZXN0KGNh
Y2hlRmlsZS5nZXQoKSwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
CmluZGV4IGRlOWE0YTZjZWRjLi5jMmQ4MTljNDBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NSwxMiArNDUsMTIgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBw
YXRoKQorYm9vbCBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBpZiAocGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1N0
cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3RyaW5n
IGZzUmVwID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAg
ICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTYxLDkgKzYxLDkgQEAgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICByZXR1cm4gIXN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pOwog
fQogCi1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBDU3RyaW5nIGZzUmVwID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcgZnNSZXAgPSBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAoIWZzUmVw
LmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtNzIsNDIgKzcyLDQyIEBAIGJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgp
CiAgICAgcmV0dXJuICF1bmxpbmsoZnNSZXAuZGF0YSgpKTsKIH0KIAotUGxhdGZvcm1GaWxlSGFu
ZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitQbGF0
Zm9ybUZpbGVIYW5kbGUgRmlsZVN5c3RlbTo6b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbW9kZSkKIHsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcgZnNSZXAgPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAoZnNSZXAuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIAogICAgIGlu
dCBwbGF0Zm9ybUZsYWcgPSAwOwotICAgIGlmIChtb2RlID09IE9wZW5Gb3JSZWFkKQorICAgIGlm
IChtb2RlID09IEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKQogICAgICAgICBwbGF0Zm9ybUZsYWcg
fD0gT19SRE9OTFk7Ci0gICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yV3JpdGUpCisgICAgZWxz
ZSBpZiAobW9kZSA9PSBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpCiAgICAgICAgIHBsYXRmb3Jt
RmxhZyB8PSAoT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyk7CiAjaWYgT1MoREFSV0lOKQot
ICAgIGVsc2UgaWYgKG1vZGUgPT0gT3BlbkZvckV2ZW50c09ubHkpCisgICAgZWxzZSBpZiAobW9k
ZSA9PSBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSkKICAgICAgICAgcGxhdGZvcm1GbGFn
IHw9IE9fRVZUT05MWTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG9wZW4oZnNSZXAuZGF0YSgpLCBw
bGF0Zm9ybUZsYWcsIDA2NjYpOwogfQogCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUmIGhhbmRsZSkKK3ZvaWQgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewotICAgIGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
IHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CiAgICAgICAg
IGNsb3NlKGhhbmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CisgICAgICAgIGhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CiAgICAgfQogfQogCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQorbG9uZyBsb25n
IEZpbGVTeXN0ZW06OnNlZWtGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luIG9yaWdpbikK
IHsKICAgICBpbnQgd2hlbmNlID0gU0VFS19TRVQ7CiAgICAgc3dpdGNoIChvcmlnaW4pIHsKLSAg
ICBjYXNlIFNlZWtGcm9tQmVnaW5uaW5nOgorICAgIGNhc2UgRmlsZVN5c3RlbTo6U2Vla0Zyb21C
ZWdpbm5pbmc6CiAgICAgICAgIHdoZW5jZSA9IFNFRUtfU0VUOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFNlZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVTeXN0ZW06OlNlZWtGcm9tQ3Vy
cmVudDoKICAgICAgICAgd2hlbmNlID0gU0VFS19DVVI7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU2Vla0Zyb21FbmQ6CkBAIC0xMTksMTMgKzExOSwxMyBAQCBsb25nIGxvbmcgc2Vla0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmln
aW4gbwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGxzZWVrKGhhbmRsZSwgb2Zm
c2V0LCB3aGVuY2UpKTsKIH0KIAotYm9vbCB0cnVuY2F0ZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkKK2Jvb2wgRmlsZVN5c3RlbTo6dHJ1bmNhdGVGaWxl
KEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQp
CiB7CiAgICAgLy8gZnRydW5jYXRlIHJldHVybnMgMCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzcy4K
ICAgICByZXR1cm4gIWZ0cnVuY2F0ZShoYW5kbGUsIG9mZnNldCk7CiB9CiAKLWludCB3cml0ZVRv
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQoraW50IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgZG8g
ewogICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gd3JpdGUoaGFuZGxlLCBkYXRhLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGxlbmd0aCkpOwpAQCAtMTM1LDcgKzEzNSw3IEBAIGludCB3cml0ZVRvRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3Ro
KQogICAgIHJldHVybiAtMTsKIH0KIAotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoraW50IEZpbGVTeXN0ZW06OnJlYWRG
cm9tRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKQogewogICAgIGRvIHsKICAgICAgICAgaW50IGJ5dGVzUmVhZCA9IHJlYWQo
aGFuZGxlLCBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkpOwpAQCAtMTQ2LDE2ICsx
NDYsMTYgQEAgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoKQogfQogCiAjaWYgVVNFKEZJTEVfTE9DSykKLWJvb2wgbG9ja0Zp
bGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZUxvY2tNb2RlIGxvY2tNb2RlKQorYm9v
bCBGaWxlU3lzdGVtOjpsb2NrRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBGaWxlU3lzdGVtOjpGaWxlTG9ja01vZGUgbG9ja01vZGUpCiB7Ci0gICAgQ09NUElMRV9B
U1NFUlQoTE9DS19TSCA9PSBMb2NrU2hhcmVkLCBMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0
ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfRVggPT0gTG9ja0V4Y2x1c2l2ZSwgTG9ja0V4
Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NLX05C
ID09IExvY2tOb25CbG9ja2luZywgTG9ja05vbkJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQp
OworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gRmlsZVN5c3RlbTo6TG9ja1NoYXJlZCwg
RmlsZVN5c3RlbTo6TG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxF
X0FTU0VSVChMT0NLX0VYID09IEZpbGVTeXN0ZW06OkxvY2tFeGNsdXNpdmUsIEZpbGVTeXN0ZW06
OkxvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQo
TE9DS19OQiA9PSBGaWxlU3lzdGVtOjpMb2NrTm9uQmxvY2tpbmcsIEZpbGVTeXN0ZW06OkxvY2tO
b25CbG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKICAgICBpbnQgcmVzdWx0ID0gZmxvY2so
aGFuZGxlLCBsb2NrTW9kZSk7CiAgICAgcmV0dXJuIChyZXN1bHQgIT0gLTEpOwogfQogCi1ib29s
IHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKK2Jvb2wgRmlsZVN5c3RlbTo6
dW5sb2NrRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQogewogICAg
IGludCByZXN1bHQgPSBmbG9jayhoYW5kbGUsIExPQ0tfVU4pOwogICAgIHJldHVybiAocmVzdWx0
ICE9IC0xKTsKQEAgLTE2Myw5ICsxNjMsOSBAQCBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSkKICNlbmRpZgogCiAjaWYgIVBMQVRGT1JNKE1BQykKLWJvb2wgZGVsZXRl
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgQ1N0cmluZyBmc1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3RyaW5nIGZzUmVwID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFm
c1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE3NSw5ICsxNzUsOSBAQCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKIH0KICNlbmRpZgogCi1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVTaXpl
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCiB7Ci0gICAgQ1N0cmluZyBm
c1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3RyaW5nIGZzUmVw
ID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYg
KCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgbG9uZyBsb25nJiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
Z2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQp
Citib29sIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KQogewogICAgIHN0cnVjdCBzdGF0IGZpbGVJ
bmZvOwogICAgIGlmIChmc3RhdChoYW5kbGUsICZmaWxlSW5mbykpCkBAIC0yMDEsMTAgKzIwMSwx
MCBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9u
ZyYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldEZpbGVDcmVhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKK2Jvb2wgRmlsZVN5c3RlbTo6
Z2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQog
ewogI2lmIE9TKERBUldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1MoTkVUQlNEKSB8fCBPUyhGUkVF
QlNEKQotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisgICAgQ1N0cmluZyBmc1JlcCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKIAogICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAn
XDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMjMsOSArMjIzLDkgQEAgYm9vbCBnZXRG
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiAjZW5k
aWYKIH0KIAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgs
IHRpbWVfdCYgcmVzdWx0KQorYm9vbCBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQogewotICAgIENTdHJpbmcgZnNS
ZXAgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgQ1N0cmluZyBmc1JlcCA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICgh
ZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yNTAsNyArMjUwLDcgQEAgc3RhdGljIEZpbGVNZXRhZGF0YTo6VHlwZSB0b0Zp
bGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQogCiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBw
YXRoLCBpbnQgKCpzdGF0RnVuYykoY29uc3QgY2hhciosIHN0cnVjdCBzdGF0KikpCiB7Ci0gICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3Ry
aW5nIGZzUmVwID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwog
CiAgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0yNTksNyArMjU5LDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0
cmluZyYgcGF0aCwKICAgICBpZiAoc3RhdEZ1bmMoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0
aEdldEZpbGVOYW1lKHBhdGgpOworICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OnBh
dGhHZXRGaWxlTmFtZShwYXRoKTsKICAgICBib29sIGlzSGlkZGVuID0gIWZpbGVuYW1lLmlzRW1w
dHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiAgICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7CiAg
ICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oZmlsZUluZm8uc3RfbXRpbWUpLApAQCAtMjY5LDM3
ICsyNjksMzcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICB9OwogfQogCi1zdGQ6Om9w
dGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0
ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKHBh
dGgsICZsc3RhdCk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBmaWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9u
KHBhdGgsICZzdGF0KTsKIH0KIAotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5n
JiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCitib29sIEZpbGVT
eXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0
IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKIHsKLSAgICBDU3RyaW5nIHRhcmdldFBhdGhGU1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBDU3RyaW5nIHRh
cmdldFBhdGhGU1JlcCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJn
ZXRQYXRoKTsKICAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0UGF0aEZT
UmVwLmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU3Ry
aW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1i
b2xpY0xpbmtQYXRoKTsKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsKICAgICBp
ZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0aEZTUmVw
LmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
IXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRh
dGEoKSk7CiB9CiAKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK1N0cmluZyBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNv
bXBvbmVudCkKIHsKICAgICBpZiAocGF0aC5lbmRzV2l0aCgnLycpKQogICAgICAgICByZXR1cm4g
cGF0aCArIGNvbXBvbmVudDsKICAgICByZXR1cm4gcGF0aCArICIvIiArIGNvbXBvbmVudDsKIH0K
IAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25z
dCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCitTdHJpbmcgRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJp
bmdWaWV3PiYgY29tcG9uZW50cykKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAg
YnVpbGRlci5hcHBlbmQocGF0aCk7CkBAIC0zMTAsOSArMzEwLDkgQEAgU3RyaW5nIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmll
dz4mIGNvbXAKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1ib29sIG1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgQ1N0cmluZyBmdWxsUGF0
aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3RyaW5nIGZ1bGxQYXRo
ID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGlmICgh
YWNjZXNzKGZ1bGxQYXRoLmRhdGEoKSwgRl9PSykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBA
IC0zMzYsMTQgKzMzNiwxNCBAQCBib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBTdHJpbmcm
IHBhdGgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJz
ZUZpbmQoJy8nKSArIDEpOwogfQogCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcm
IHBhdGgpCitTdHJpbmcgRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7Ci0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBDU3RyaW5nIGZzUmVwID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09
ICdcMCcpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTM1MSwxMSArMzUxLDExIEBAIFN0
cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZGlybmFt
ZShmc1JlcC5tdXRhYmxlRGF0YSgpKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gbGlzdERpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQorVmVjdG9yPFN0cmlu
Zz4gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7Ci0gICAgQ1N0cmlu
ZyBjcGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKLSAgICBDU3RyaW5nIGNm
aWx0ZXIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsdGVyKTsKKyAgICBDU3RyaW5nIGNw
YXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENT
dHJpbmcgY2ZpbHRlciA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWx0
ZXIpOwogICAgIERJUiogZGlyID0gb3BlbmRpcihjcGF0aC5kYXRhKCkpOwogICAgIGlmIChkaXIp
IHsKICAgICAgICAgc3RydWN0IGRpcmVudCogZHA7CkBAIC0zNjksNyArMzY5LDcgQEAgVmVjdG9y
PFN0cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYg
ZmlsdGVyKQogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKGZpbGVQYXRo
KSAtIDEpIDwgc25wcmludGYoZmlsZVBhdGgsIHNpemVvZihmaWxlUGF0aCksICIlcy8lcyIsIGNw
YXRoLmRhdGEoKSwgbmFtZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIGJ1ZmZlciBv
dmVyZmxvdwogCi0gICAgICAgICAgICBhdXRvIHN0cmluZyA9IHN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgICAgICAgICAgYXV0byBzdHJpbmcgPSBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKIAog
ICAgICAgICAgICAgLy8gU29tZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbnMgY2Fubm90IGJl
IHJlcHJlc2VudGVkIGFzIGEgVVRGLTE2IHN0cmluZywKICAgICAgICAgICAgIC8vIHNvIHRoaXMg
c3RyaW5nIG1pZ2h0IGJlIG51bGwuCkBAIC0zODIsNyArMzgyLDcgQEAgVmVjdG9yPFN0cmluZz4g
bGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsdGVyKQog
fQogCiAjaWYgIU9TKERBUldJTikgfHwgUExBVEZPUk0oR1RLKQotU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkK
K1N0cmluZyBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZp
eCwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgY2hhciBi
dWZmZXJbUEFUSF9NQVhdOwogICAgIGNvbnN0IGNoYXIqIHRtcERpciA9IGdldGVudigiVE1QRElS
Iik7CkBAIC00MDAsMjEgKzQwMCwyMSBAQCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3Qg
U3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CiAKIGVuZDoKLSAgICBoYW5kbGUgPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOworICAgIGhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogI2VuZGlmCiAKLWJvb2wgaGFy
ZExpbmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uKQorYm9vbCBGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5n
JiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCiB7CiAgICAgaWYgKHNvdXJjZS5p
c0VtcHR5KCkgfHwgZGVzdGluYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBDU3RyaW5nIGZzU291cmNlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNvdXJj
ZSk7CisgICAgQ1N0cmluZyBmc1NvdXJjZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihzb3VyY2UpOwogICAgIGlmICghZnNTb3VyY2UuZGF0YSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBDU3RyaW5nIGZzRGVzdGluYXRpb24gPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGVzdGluYXRpb24pOworICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkZXN0aW5hdGlvbik7CiAgICAgaWYgKCFm
c0Rlc3RpbmF0aW9uLmRhdGEoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MjYsNyAr
NDI2LDcgQEAgYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb24pCiAgICAgaWYgKGhhbmRsZSA9PSAtMSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCBhcHBlbmRSZXN1bHQgPSBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoc291cmNlLCBoYW5kbGUpOworICAgIGJvb2wgYXBwZW5kUmVzdWx0ID0g
RmlsZVN5c3RlbTo6YXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHNvdXJjZSwgaGFuZGxl
KTsKICAgICBjbG9zZShoYW5kbGUpOwogCiAgICAgLy8gSWYgdGhlIGNvcHkgZmFpbGVkLCBkZWxl
dGUgdGhlIHVudXNhYmxlIGZpbGUuCkBAIC00MzYsNyArNDM2LDcgQEAgYm9vbCBoYXJkTGlua09y
Q29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24p
CiAgICAgcmV0dXJuIGFwcGVuZFJlc3VsdDsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQz
Ml90PiBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQog
ewogICAgIHN0cnVjdCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCks
ICZmaWxlU3RhdCkgPT0gLTEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9w
b3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggYTAwMWFiZThkYzAuLjUxMzM3NWQyNDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9T
SVguY3BwCkBAIC00MCw3ICs0MCw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYg
KGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU3Ry
aW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBD
U3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZp
bGVQYXRoKTsKICAgICBpbnQgZmQgPSBvcGVuKGZpbGVuYW1lLmRhdGEoKSwgT19SRE9OTFkpOwog
ICAgIGlmIChmZCA9PSAtMSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggODQxOWQ3NmM4
YTUuLjZiMmFmNTQ1MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uY3BwCkBAIC00OCwxOSArNDgsMTkgQEAgU1FMaXRlRmlsZVN5c3RlbTo6
U1FMaXRlRmlsZVN5c3RlbSgpCiAKIGludCBTUUxpdGVGaWxlU3lzdGVtOjpvcGVuRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3FsaXRlMyoqIGRhdGFiYXNlLCBib29sKQogewotICAg
IHJldHVybiBzcWxpdGUzX29wZW5fdjIoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1l
KS5kYXRhKCksIGRhdGFiYXNlLCBTUUxJVEVfT1BFTl9SRUFEV1JJVEUgfCBTUUxJVEVfT1BFTl9D
UkVBVEUgfCBTUUxJVEVfT1BFTl9BVVRPUFJPWFksIG51bGxwdHIpOworICAgIHJldHVybiBzcWxp
dGUzX29wZW5fdjIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1l
KS5kYXRhKCksIGRhdGFiYXNlLCBTUUxJVEVfT1BFTl9SRUFEV1JJVEUgfCBTUUxJVEVfT1BFTl9D
UkVBVEUgfCBTUUxJVEVfT1BFTl9BVVRPUFJPWFksIG51bGxwdHIpOwogfQogCiBTdHJpbmcgU1FM
aXRlRmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7CiB9CiAKIGJvb2wgU1FMaXRl
RmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMocGF0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKIH0KIAogYm9vbCBTUUxpdGVGaWxlU3lzdGVt
OjplbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBj
aGVja1BhdGhPbmx5KQpAQCAtNjksMTYgKzY5LDE2IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6
ZW5zdXJlRGF0YWJhc2VGaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGJvb2wgY2hl
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjaGVja1BhdGhPbmx5KSB7Ci0gICAg
ICAgIFN0cmluZyBkaXIgPSBkaXJlY3RvcnlOYW1lKGZpbGVOYW1lKTsKKyAgICAgICAgU3RyaW5n
IGRpciA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpOwogICAgICAgICByZXR1
cm4gZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMoZGlyKTsKICAgICB9CiAKLSAgICByZXR1
cm4gZmlsZUV4aXN0cyhmaWxlTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZmlsZU5hbWUpOwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0
YWJhc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBkZWxldGVF
bXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkocGF0aCk7CiB9CiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJh
c2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCkBAIC04NywxMiArODcsMTIgQEAgYm9vbCBT
UUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSkKICAgICBTdHJpbmcgc2htRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVOYW1lLCBBU0NJSUxp
dGVyYWwoIi1zaG0iKSk7CiAKICAgICAvLyBUcnkgdG8gZGVsZXRlIGFsbCB0aHJlZSBmaWxlcyB3
aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSB0aGVyZS4KLSAgICBkZWxldGVGaWxlKGZpbGVOYW1lKTsK
LSAgICBkZWxldGVGaWxlKHdhbEZpbGVOYW1lKTsKLSAgICBkZWxldGVGaWxlKHNobUZpbGVOYW1l
KTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKHdhbEZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHNo
bUZpbGVOYW1lKTsKIAogICAgIC8vIElmIGFueSBvZiB0aGUgd2FsIG9yIHNobSBmaWxlcyByZW1h
aW4gYWZ0ZXIgdGhlIGRlbGV0ZSBhdHRlbXB0LCB0aGUgb3ZlcmFsbCBkZWxldGUgb3BlcmF0aW9u
IGZhaWxlZC4KLSAgICByZXR1cm4gIWZpbGVFeGlzdHMoZmlsZU5hbWUpICYmICFmaWxlRXhpc3Rz
KHdhbEZpbGVOYW1lKSAmJiAhZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSk7CisgICAgcmV0dXJuICFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVOYW1lKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyh3YWxGaWxlTmFtZSkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc2htRmlsZU5hbWUpOwog
fQogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA1LDE5ICsxMDUsMTkgQEAgYm9vbCBTUUxpdGVG
aWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUzKiBkYXRhYmFzZSkKIGxvbmcg
bG9uZyBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiB7ICAgICAgICAKICAgICBsb25nIGxvbmcgc2l6ZTsKLSAgICByZXR1cm4gZ2V0
RmlsZVNpemUoZmlsZU5hbWUsIHNpemUpID8gc2l6ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmdldEZpbGVTaXplKGZpbGVOYW1lLCBzaXplKSA/IHNpemUgOiAwOwogfQogCiBkb3VibGUg
U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKIHsKICAgICB0aW1lX3QgdGltZTsKLSAgICByZXR1cm4gZ2V0RmlsZUNyZWF0aW9uVGlt
ZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0
RmlsZUNyZWF0aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsKIH0KIAogZG91Ymxl
IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGltZSA6IDA7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRl
eCA3NmY5MjRlYWJiMi4uYzkwODY5MzAxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgc3RhdGljIFN0cmluZyBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlG
aWxlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIC8vIERpY3Rpb25hcnkgZmls
ZXMgYWx3YXlzIGhhdmUgdGhlIGZvcm0gImh5cGhfPGxvY2FsZSBuYW1lPi5kaWMiCiAgICAgLy8g
c28gd2Ugc3RyaXAgZXZlcnl0aGluZyBleGNlcHQgdGhlIGxvY2FsZS4KLSAgICBTdHJpbmcgZmls
ZU5hbWUgPSBwYXRoR2V0RmlsZU5hbWUoZmlsZVBhdGgpOworICAgIFN0cmluZyBmaWxlTmFtZSA9
IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCk7CiAgICAgc3RhdGljIGNvbnN0
IGludCBwcmVmaXhMZW5ndGggPSA1OwogICAgIHN0YXRpYyBjb25zdCBpbnQgc3VmZml4TGVuZ3Ro
ID0gNDsKICAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyaW5nKHByZWZpeExlbmd0aCwgZmlsZU5h
bWUubGVuZ3RoKCkgLSBwcmVmaXhMZW5ndGggLSBzdWZmaXhMZW5ndGgpOwpAQCAtNjEsMTQgKzYx
LDE0IEBAIHN0YXRpYyBTdHJpbmcgZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5RmlsZVBhdGgo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIAogc3RhdGljIHZvaWQgc2NhbkRpcmVjdG9yeUZvckRp
Y3Rpb25hcmllcyhjb25zdCBjaGFyKiBkaXJlY3RvcnlQYXRoLCBIYXNoTWFwPEF0b21pY1N0cmlu
ZywgVmVjdG9yPFN0cmluZz4+JiBhdmFpbGFibGVMb2NhbGVzKQogewotICAgIGZvciAoYXV0byYg
ZmlsZVBhdGggOiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgsICJoeXBoXyouZGljIikpIHsK
KyAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJl
Y3RvcnlQYXRoLCAiaHlwaF8qLmRpYyIpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlUGF0aChmaWxlUGF0aCkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKTsKIAogICAgICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKLSAg
ICAgICAgaWYgKCFyZWFscGF0aChmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRh
dGEoKSwgbm9ybWFsaXplZFBhdGgpKQorICAgICAgICBpZiAoIXJlYWxwYXRoKEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCkuZGF0YSgpLCBub3JtYWxpemVkUGF0
aCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBmaWxlUGF0aCA9IHN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obm9ybWFsaXplZFBhdGgpOworICAgICAgICBmaWxl
UGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obm9y
bWFsaXplZFBhdGgpOwogICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUsIFZlY3Rv
cjxTdHJpbmc+KCkpLml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoZmlsZVBhdGgpOwogCiAgICAgICAg
IFN0cmluZyBsb2NhbGVSZXBsYWNpbmdVbmRlcnNjb3JlcyA9IFN0cmluZyhsb2NhbGUpOwpAQCAt
MjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6SHlw
aGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcm
IGRpY3Rpb25hcnlQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0
aW9uRGljdGlvbmFyeTo6Y3JlYXRlKFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihk
aWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVu
YXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGRpY3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CiAgICAgfQogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGYwYzM1
MDI5ODY0Li45NmJkMDMzNTlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2b2lkIGdldEZpbGVN
b2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGNvbnN0IFdJTjMyX0ZJTkRfREFUQVcmIGZpbmRE
YXRhCiAgICAgdGltZSA9IGZpbGVUaW1lLlF1YWRQYXJ0IC8gMTAwMDAwMDAgLSBrU2Vjb25kc0Zy
b21GaWxlVGltZVRvVGltZXQ7CiB9CiAKLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nIGxvbmcmIHNpemUpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7CiAgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCkBAIC0xMTIs
NyArMTEyLDcgQEAgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9u
ZyYgc2l6ZSkKICAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9tRmluZERhdGEoZmluZERhdGEsIHNp
emUpOwogfQogCi1ib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxl
LCBsb25nIGxvbmcmIHNpemUpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCiB7CiAg
ICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uOwogICAgIGlmICgh
OjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShmaWxlSGFuZGxlLCAmZmlsZUluZm9ybWF0aW9u
KSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCiAgICAgcmV0dXJuIGdldEZpbGVTaXplRnJv
bUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7
CiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0
aW1lX3QmIHRpbWUpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiB0aW1lKQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcg
ZmluZERhdGE7CiAgICAgaWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCkBAIC0xMzEs
NyArMTMxLDcgQEAgYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgsIHRpbWVfdCYgdGltZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBnZXRGaWxlQ3Jl
YXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiB0aW1lKQorYm9vbCBGaWxlU3lz
dGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiB0aW1l
KQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CiAgICAgaWYgKCFnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSkpCkBAIC0xNDMsMTYgKzE0MywxNiBAQCBib29sIGdldEZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCiAKIHN0YXRpYyBTdHJp
bmcgZ2V0RmluYWxQYXRoTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgYXV0byBoYW5k
bGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGhhbmRsZSkpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBG
aWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ1ZlY3Rv
cjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKICAgICBpZiAoOjpHZXRGaW5hbFBhdGhOYW1lQnlI
YW5kbGVXKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgVk9MVU1FX05BTUVf
TlQpID49IE1BWF9QQVRIKSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIH0KLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKIAogICAgIGJ1ZmZlci5zaHJpbmsod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKICAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwpAQCAtMTg5LDcgKzE4OSw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmluZERhdGFUb0ZpbGVNZXRh
ZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmRECiAgICAgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlv
bmFsPEZpbGVNZXRhZGF0YT4gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0Rmlu
ZERhdGEocGF0aCwgZmluZERhdGEpKQpAQCAtMTk4LDcgKzE5OCw3IEBAIHN0ZDo6b3B0aW9uYWw8
RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVy
biBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZpbmREYXRhKTsKIH0KIAotc3RkOjpvcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYg
cGF0aCkKK3N0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBGaWxlU3lzdGVtOjpmaWxlTWV0YWRh
dGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkK
QEAgLTIxNSwzNyArMjE1LDM3IEBAIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0
YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIGZp
bmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOwogfQogCi1ib29sIGNyZWF0ZVN5bWJvbGlj
TGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5r
UGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYg
dGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQogewogICAgIHJldHVy
biAhOjpDcmVhdGVTeW1ib2xpY0xpbmtXKHN5bWJvbGljTGlua1BhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCksIHRhcmdldFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCksIDApOwogfQogCi1ib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5n
JiBwYXRoKQorYm9vbCBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIHJldHVybiBnZXRGaW5kRGF0
YShwYXRoLCBmaW5kRGF0YSk7CiB9CiAKLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpCitib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewog
ICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGg7CiAgICAgcmV0dXJuICEhRGVsZXRlRmlsZVcoZmls
ZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpOwogfQogCi1ib29s
IGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3Rl
bTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGg7CiAgICAgcmV0dXJuICEhUmVtb3ZlRGlyZWN0b3J5VyhmaWxlbmFt
ZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CiB9CiAKLWJvb2wgbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpCitib29s
IEZpbGVTeXN0ZW06Om1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xkUGF0aCwgY29uc3QgU3RyaW5n
JiBuZXdQYXRoKQogewogICAgIFN0cmluZyBvbGRGaWxlbmFtZSA9IG9sZFBhdGg7CiAgICAgU3Ry
aW5nIG5ld0ZpbGVuYW1lID0gbmV3UGF0aDsKICAgICByZXR1cm4gISE6Ok1vdmVGaWxlRXgob2xk
RmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIG5ld0ZpbGVu
YW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBNT1ZFRklMRV9DT1BZ
X0FMTE9XRUQgfCBNT1ZFRklMRV9SRVBMQUNFX0VYSVNUSU5HKTsKIH0KIAotU3RyaW5nIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29t
cG9uZW50KQorU3RyaW5nIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQogewogICAgIFN0cmluZ1Zl
Y3RvcjxVQ2hhcj4gYnVmZmVyKE1BWF9QQVRIKTsKIApAQCAtMjYzLDE3ICsyNjMsMTcgQEAgU3Ry
aW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0
cmluZyYgY29tcG9uZW50KQogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVy
KSk7CiB9CiAKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0
aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25lbnRzKQorU3RyaW5nIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRoLCBjb25zdCBWZWN0
b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCiB7CiAgICAgU3RyaW5nIHJlc3VsdCA9IHBhdGgu
dG9TdHJpbmcoKTsKICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGNvbXBvbmVudHMpCi0gICAg
ICAgIHJlc3VsdCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZXN1bHQsIGNvbXBvbmVudC50
b1N0cmluZygpKTsKKyAgICAgICAgcmVzdWx0ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHJlc3VsdCwgY29tcG9uZW50LnRvU3RyaW5nKCkpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKICNpZiAhVVNFKENGKQogCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIHBhdGgpCitDU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgYXV0byB1cGNvbnZlcnRlZENo
YXJhY3RlcnMgPSBwYXRoLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwogCkBAIC0yOTAsNyArMjkw
LDcgQEAgQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRo
KQogCiAjZW5kaWYgLy8gIVVTRShDRikKIAotYm9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGg7CiAgICAgaWYgKFNI
Q3JlYXRlRGlyZWN0b3J5RXgoMCwgZnVsbFBhdGguY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCksIDApICE9IEVSUk9SX1NVQ0NFU1MpIHsKQEAgLTMwMywyMCArMzAzLDIwIEBA
IGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKK1N0cmluZyBGaWxlU3lzdGVt
Ojpob21lRGlyZWN0b3J5UGF0aCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1
cm4gIiI7CiB9CiAKLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQor
U3RyaW5nIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgcmV0dXJuIFN0cmluZyg6OlBhdGhGaW5kRmlsZU5hbWUoU3RyaW5nKHBhdGgpLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSk7CiB9CiAKLVN0cmluZyBkaXJlY3Rv
cnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyBGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBTdHJpbmcgbmFtZSA9IHBhdGgubGVmdChw
YXRoLmxlbmd0aCgpIC0gcGF0aEdldEZpbGVOYW1lKHBhdGgpLmxlbmd0aCgpKTsKKyAgICBTdHJp
bmcgbmFtZSA9IHBhdGgubGVmdChwYXRoLmxlbmd0aCgpIC0gRmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKHBhdGgpLmxlbmd0aCgpKTsKICAgICBpZiAobmFtZS5jaGFyYWN0ZXJTdGFydGluZ0F0
KG5hbWUubGVuZ3RoKCkgLSAxKSA9PSAnXFwnKSB7CiAgICAgICAgIC8vIFJlbW92ZSBhbnkgdHJh
aWxpbmcgIlwiLgogICAgICAgICBuYW1lLnRydW5jYXRlKG5hbWUubGVuZ3RoKCkgLSAxKTsKQEAg
LTM1Miw4ICszNTIsOCBAQCBzdGF0aWMgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0
aElkZW50aWZpZXIpCiAgICAgYnVmZmVyLnJlc2l6ZSh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwog
ICAgIFN0cmluZyBkaXJlY3RvcnkgPSBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CiAK
LSAgICBkaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBw
bGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkpOwotICAgIGlmICghbWFrZUFsbERpcmVjdG9y
aWVzKGRpcmVjdG9yeSkpCisgICAgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxlTmFtZSgp
KTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICByZXR1cm4gZGlyZWN0b3J5OwpAQCAtMzcz
LDcgKzM3Myw3IEBAIHN0YXRpYyBTdHJpbmcgY2FjaGVkU3RvcmFnZURpcmVjdG9yeShEV09SRCBw
YXRoSWRlbnRpZmllcikKICAgICByZXR1cm4gZGlyZWN0b3J5OwogfQogCi1TdHJpbmcgb3BlblRl
bXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitT
dHJpbmcgRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgaGFuZGxlID0gSU5WQUxJ
RF9IQU5ETEVfVkFMVUU7CiAKQEAgLTM5NiwzMiArMzk2LDMyIEBAIFN0cmluZyBvcGVuVGVtcG9y
YXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIAogICAg
ICAgICBBU1NFUlQod2NzbGVuKHRlbXBGaWxlKSA9PSBXVEZfQVJSQVlfTEVOR1RIKHRlbXBGaWxl
KSAtIDEpOwogCi0gICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCh0ZW1wUGF0aCwgdGVtcEZpbGUpOworICAgICAgICBwcm9wb3NlZFBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcFBhdGgsIHRlbXBGaWxlKTsKICAgICAgICAg
aWYgKHByb3Bvc2VkUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAvLyB1c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxl
IHdpdGggdGhlIHNhbWUgbmFtZQogICAgICAgICBoYW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHByb3Bv
c2VkUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgR0VORVJJQ19S
RUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JFQVRFX05FVywgRklMRV9BVFRSSUJVVEVfTk9S
TUFMLCAwKTsKLSAgICB9IHdoaWxlICghaXNIYW5kbGVWYWxpZChoYW5kbGUpICYmIEdldExhc3RF
cnJvcigpID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTKTsKKyAgICB9IHdoaWxlICghRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpICYmIEdldExhc3RFcnJvcigpID09IEVSUk9SX0FMUkVB
RFlfRVhJU1RTKTsKIAotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgIGlmICgh
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICByZXR1cm4gcHJvcG9zZWRQYXRoOwogfQogCi1QbGF0Zm9ybUZpbGVIYW5kbGUg
b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK0ZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBGaWxlU3lzdGVtOjpvcGVuRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIERXT1JEIGRlc2ly
ZWRBY2Nlc3MgPSAwOwogICAgIERXT1JEIGNyZWF0aW9uRGlzcG9zaXRpb24gPSAwOwogICAgIERX
T1JEIHNoYXJlTW9kZSA9IDA7CiAgICAgc3dpdGNoIChtb2RlKSB7Ci0gICAgY2FzZSBPcGVuRm9y
UmVhZDoKKyAgICBjYXNlIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkOgogICAgICAgICBkZXNpcmVk
QWNjZXNzID0gR0VORVJJQ19SRUFEOwogICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gT1BF
Tl9FWElTVElORzsKICAgICAgICAgc2hhcmVNb2RlID0gRklMRV9TSEFSRV9SRUFEOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE9wZW5Gb3JXcml0ZToKKyAgICBjYXNlIEZpbGVTeXN0ZW06Ok9w
ZW5Gb3JXcml0ZToKICAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CiAgICAg
ICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBDUkVBVEVfQUxXQVlTOwogICAgICAgICBicmVhazsK
QEAgLTQzMywxOSArNDMzLDE5IEBAIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogICAgIHJldHVybiBDcmVhdGVGaWxlKGRl
c3RpbmF0aW9uLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXNpcmVk
QWNjZXNzLCBzaGFyZU1vZGUsIDAsIGNyZWF0aW9uRGlzcG9zaXRpb24sIEZJTEVfQVRUUklCVVRF
X05PUk1BTCwgMCk7CiB9CiAKLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlKQordm9pZCBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgeworICAg
IGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKICAgICAgICAgOjpDbG9z
ZUhhbmRsZShoYW5kbGUpOwotICAgICAgICBoYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOworICAgICAgICBoYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwogICAgIH0KIH0KIAotbG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK2xvbmcgbG9u
ZyBGaWxlU3lzdGVtOjpzZWVrRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbiBvcmlnaW4p
CiB7CiAgICAgRFdPUkQgbW92ZU1ldGhvZCA9IEZJTEVfQkVHSU47CiAKLSAgICBpZiAob3JpZ2lu
ID09IFNlZWtGcm9tQ3VycmVudCkKKyAgICBpZiAob3JpZ2luID09IEZpbGVTeXN0ZW06OlNlZWtG
cm9tQ3VycmVudCkKICAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfQ1VSUkVOVDsKICAgICBlbHNl
IGlmIChvcmlnaW4gPT0gU2Vla0Zyb21FbmQpCiAgICAgICAgIG1vdmVNZXRob2QgPSBGSUxFX0VO
RDsKQEAgLTQ2MSw5ICs0NjEsOSBAQCBsb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gbwogICAgIHJldHVy
biBsYXJnZU9mZnNldC5RdWFkUGFydDsKIH0KIAotaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgRFdPUkQgYnl0ZXNXcml0dGVuOwpAQCAtNDc0LDkgKzQ3
NCw5IEBAIGludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVz
V3JpdHRlbik7CiB9CiAKLWludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUo
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY2hhciogZGF0YSwgaW50IGxl
bmd0aCkKIHsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICBpZiAoIUZpbGVT
eXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAg
RFdPUkQgYnl0ZXNSZWFkOwpAQCAtNDg3LDIyICs0ODcsMjIgQEAgaW50IHJlYWRGcm9tRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzUmVhZCk7CiB9CiAKLWJvb2wgaGFyZExpbmtPckNv
cHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uKQor
Ym9vbCBGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2Us
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCiB7CiAgICAgcmV0dXJuICEhOjpDb3B5RmlsZShz
b3VyY2UuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGRlc3RpbmF0aW9u
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBUUlVFKTsKIH0KIAotU3Ry
aW5nIGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCitTdHJpbmcgRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gY2Fj
aGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9MT0NBTF9BUFBEQVRBKTsKIH0KIAotU3RyaW5nIHJv
YW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKK1N0cmluZyBGaWxlU3lzdGVtOjpy
b2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIGNhY2hl
ZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IGxp
c3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVy
KQorVmVjdG9yPFN0cmluZz4gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4g
ZW50cmllczsKIApAQCAtNTIwLDI1ICs1MjAsMjUgQEAgVmVjdG9yPFN0cmluZz4gbGlzdERpcmVj
dG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiAgICAg
cmV0dXJuIGVudHJpZXM7CiB9CiAKLWJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90JikKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0
IFN0cmluZyYsIHVpbnQ2NF90JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBGaWxlU3lzdGVtOjpn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxl
ID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgT3BlbkZvclJlYWQpOwotICAgIGlmICghaXNIYW5k
bGVWYWxpZChoYW5kbGUpKQorICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
ZnNGaWxlLmRhdGEoKSwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5
c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gZmlsZUluZm9ybWF0aW9uID0geyB9
OwogICAgIGlmICghOjpHZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZShoYW5kbGUsICZmaWxlSW5m
b3JtYXRpb24pKSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICB9CiAKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKIAogICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdWb2x1bWVTZXJpYWxOdW1i
ZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVH
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAppbmRl
eCAzNzAxY2RkOGEwMy4uM2M2ZjU2ZTE5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmNwcApAQCAtMjAwOSw3ICsyMDA5LDcgQEAgU3RyaW5nIFJlbmRlclRo
ZW1lR3RrOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCogZmlsZUxpc3QsIGNv
bnN0IEZvbnQKIAogICAgIFN0cmluZyBzdHJpbmc7CiAgICAgaWYgKGZpbGVMaXN0LT5sZW5ndGgo
KSkKLSAgICAgICAgc3RyaW5nID0gcGF0aEdldEZpbGVOYW1lKGZpbGVMaXN0LT5pdGVtKDApLT5w
YXRoKCkpOworICAgICAgICBzdHJpbmcgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoZmls
ZUxpc3QtPml0ZW0oMCktPnBhdGgoKSk7CiAgICAgZWxzZSBpZiAobXVsdGlwbGVGaWxlc0FsbG93
ZWQpCiAgICAgICAgIHN0cmluZyA9IGZpbGVCdXR0b25Ob0ZpbGVzU2VsZWN0ZWRMYWJlbCgpOwog
ICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmlu
ZGV4IGFhMzcwYzMzZmEzLi5lNTFhMjRlMjk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVXaW4uY3BwCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBDb2xvciBSZW5kZXJU
aGVtZVdpbjo6c3lzdGVtQ29sb3IoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkKSBjb25zdAogI2lmIEVO
QUJMRShWSURFTykKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4aW11bVJlYXNvbmFibGVCdWZmZXJT
aXplID0gMzI3Njg7CiAKLXN0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxlc2l6ZSwgVmVjdG9yPGNoYXI+
JiBidWZmZXIpCitzdGF0aWMgdm9pZCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBsb25nIGxvbmcgZmlsZXNpemUsIFZlY3Rv
cjxjaGFyPiYgYnVmZmVyKQogewogICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1
ZmZlcgogICAgIGJ1ZmZlci5yZXNpemUoZmlsZXNpemUgKyAxKTsKQEAgLTEwMzYsNyArMTAzNiw3
IEBAIHN0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxlCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZl
clBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9
IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZy
b21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNp
emUpOworICAgICAgICBieXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZSwg
YnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CiAgICAgICAg
IGlmIChieXRlc1JlYWQgIT0gYnVmZmVyUmVhZFNpemUpIHsKICAgICAgICAgICAgIGJ1ZmZlci5j
bGVhcigpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA1OCwxOSArMTA1OCwxOSBAQCBTdHJp
bmcgUmVuZGVyVGhlbWVXaW46OnN0cmluZ1dpdGhDb250ZW50c09mRmlsZShDRlN0cmluZ1JlZiBu
YW1lLCBDRlN0cmluZ1JlZiB0eQogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocmVxdWVzdGVkVVJMUmVmLmdldCgpLCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIE1B
WF9QQVRIKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgUGxhdGZvcm1GaWxlSGFu
ZGxlIHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBvcGVuRmlsZShyZXF1ZXN0ZWRGaWxlUGF0aCwgT3Bl
bkZvclJlYWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChyZXF1ZXN0ZWRGaWxlSGFuZGxlKSkK
KyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVu
Rm9yUmVhZCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZp
bGVIYW5kbGUpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBsb25nIGxvbmcgZmls
ZXNpemUgPSAtMTsKLSAgICBpZiAoIWdldEZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5kbGUsIGZp
bGVzaXplKSkgewotICAgICAgICBjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7CisgICAg
aWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCBmaWxlc2l6
ZSkpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUp
OwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGZp
bGVDb250ZW50czsKICAgICBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKHJlcXVlc3RlZEZp
bGVIYW5kbGUsIGZpbGVzaXplLCBmaWxlQ29udGVudHMpOwotICAgIGNsb3NlRmlsZShyZXF1ZXN0
ZWRGaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhh
bmRsZSk7CiAKICAgICByZXR1cm4gU3RyaW5nKGZpbGVDb250ZW50cy5kYXRhKCksIHN0YXRpY19j
YXN0PHNpemVfdD4oZmlsZXNpemUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjY3YjA1OTdlMTMuLmZjZTAz
ZmZjZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE3LTEwLTMxICBDaHJpc3RvcGhl
ciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBBZGQgYSBGaWxlU3lzdGVt
IG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25s
b2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRv
d25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW06Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5j
cHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1h
bmFnZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZVJlY29yZGVyLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1By
b2Nlc3NTb3VwLmNwcDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaDoK
KyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9k
dWxlVW5peC5jcHA6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQ
YXRoLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6CisgICAgICAg
ICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1Byb2Nl
c3NFeGVjdXRhYmxlUGF0aEd0ay5jcHA6CisgICAgICAgICogU2hhcmVkL2lvcy9DaGlsZFByb2Nl
c3NJT1MubW06CisgICAgICAgICogU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW06CisgICAg
ICAgICogU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAqIFNoYXJl
ZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlUHJv
Y2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNv
bkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNo
b29zZXJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
Q29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVE
YXRhTWFuYWdlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
UG9vbEd0ay5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgICogVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHA6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5h
Z2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0
ZWRCdW5kbGVHbGliLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwOgorCiAyMDE3LTEw
LTMwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbV1BFXSBGaXggYnVpbGQgd2FybmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCmluZGV4
IGM2ZmYxNWEzYmI4Li42NTQ4NjBkNDdmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCkBA
IC01NiwxNiArNTYsMTYgQEAgdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZERlY2lkZURvd25s
b2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblAKIHsKICAgICBBU1NFUlQo
IWRlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMoZGVzdGlu
YXRpb25QYXRoKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9u
UGF0aCkpIHsKICAgICAgICAgaWYgKCFhbGxvd092ZXJ3cml0ZSkgewogICAgICAgICAgICAgZGlk
RmFpbChudWxscHRyLCBjYW5jZWxsZWRFcnJvcihtX2Rvd25sb2FkLnJlcXVlc3QoKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZUZpbGUoZGVzdGluYXRp
b25QYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkZXN0aW5hdGlvblBhdGgp
OwogICAgIH0KIAogICAgIG1fZGVzdGluYXRpb25QYXRoID0gZGVzdGluYXRpb25QYXRoOwotICAg
IG1fZGVzdGluYXRpb25GaWxlID0gb3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5Gb3JX
cml0ZSk7CisgICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX2Rl
c3RpbmF0aW9uUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICBtX2Rvd25sb2Fk
LmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxv
YWQuY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKQEAgLTczLDMwICs3MywzMCBAQCB2b2lk
IEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBT
dHJpbmcmIGRlc3RpbmF0aW9uUAogCiB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2
ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQp
CiB7Ci0gICAgd3JpdGVUb0ZpbGUobV9kZXN0aW5hdGlvbkZpbGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kZXN0aW5hdGlv
bkZpbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgbV9kb3dubG9hZC5k
aWRSZWNlaXZlRGF0YShidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xp
ZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikKIHsKLSAgICBjbG9zZUZpbGUo
bV9kZXN0aW5hdGlvbkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0
aW9uRmlsZSk7CiAgICAgbV9kb3dubG9hZC5kaWRGaW5pc2goKTsKIH0KIAogdm9pZCBCbG9iRG93
bmxvYWRDbGllbnQ6OmRpZENhbmNlbCgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25G
aWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZpbGUpOwogICAg
IGlmICghbV9kZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKQotICAgICAgICBkZWxldGVGaWxlKG1f
ZGVzdGluYXRpb25QYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3Rp
bmF0aW9uUGF0aCk7CiAKICAgICBtX2Rvd25sb2FkLmRpZENhbmNlbChJUEM6OkRhdGFSZWZlcmVu
Y2UoKSk7CiB9CiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZGVz
dGluYXRpb25GaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZp
bGUpOwogICAgIGlmICghbV9kZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKQotICAgICAgICBkZWxl
dGVGaWxlKG1fZGVzdGluYXRpb25QYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShtX2Rlc3RpbmF0aW9uUGF0aCk7CiAKICAgICBtX2Rvd25sb2FkLmRpZEZhaWwoZXJyb3IsIElQ
Qzo6RGF0YVJlZmVyZW5jZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmgKaW5kZXggNGE0MmNj
MmNhNzcuLmY5NDA2MTFiMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaApAQCAtNTMsNyArNTMs
NyBAQCBwcml2YXRlOgogCiAgICAgRG93bmxvYWQmIG1fZG93bmxvYWQ7CiAgICAgU3RyaW5nIG1f
ZGVzdGluYXRpb25QYXRoOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rlc3Rp
bmF0aW9uRmlsZSB7IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUg
eyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAppbmRleCA3OGU1YTQxNjViYy4uNmRhNTNmM2UxYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAt
NDEyLDcgKzQxMiw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y29uc3VtZURhdGEoY29u
c3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKICAgICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAt
PSBieXRlc1JlYWQ7CiAKICAgICBpZiAoYnl0ZXNSZWFkKSB7Ci0gICAgICAgIGlmIChtX2Rvd25s
b2FkRmlsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgICAgIGlmIChtX2Rv
d25sb2FkRmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAg
ICAgICAgICAgICBpZiAoIXdyaXRlRG93bmxvYWQoZGF0YSwgYnl0ZXNSZWFkKSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NDgsOCArNDQ4LDggQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb24KICAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQogICAgICAg
ICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0
ZSAmJiBmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQotICAgICAgICBkZWxl
dGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIGlmIChhbGxvd092ZXJ3cml0
ZSAmJiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24p
OwogfQogCiBTdHJpbmcgTmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBj
b25zdApAQCAtNDY3LDggKzQ2Nyw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxv
YWQoKQogCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tCbG9i
Ojpkb3dubG9hZCB0byAlcyIsIHRoaXMsIG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24udXRmOCgp
LmRhdGEoKSk7CiAKLSAgICBtX2Rvd25sb2FkRmlsZSA9IG9wZW5GaWxlKG1fcGVuZGluZ0Rvd25s
b2FkTG9jYXRpb24sIE9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKG1fZG93bmxvYWRGaWxlID09IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICBtX2Rvd25sb2FkRmlsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24sIEZpbGVTeXN0ZW06Ok9wZW5G
b3JXcml0ZSk7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgZGlkRmFpbERvd25sb2FkKGNhbmNlbGxlZEVy
cm9yKG1fZmlyc3RSZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00ODgsNyAr
NDg4LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiBib29sIE5ldHdv
cmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVz
UmVhZCkKIHsKICAgICBBU1NFUlQoaXNEb3dubG9hZCgpKTsKLSAgICBpbnQgYnl0ZXNXcml0dGVu
ID0gd3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGRhdGEsIGJ5dGVzUmVhZCk7CisgICAgaW50
IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlLCBk
YXRhLCBieXRlc1JlYWQpOwogICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gLTEpIHsKICAgICAgICAg
ZGlkRmFpbERvd25sb2FkKGNhbmNlbGxlZEVycm9yKG1fZmlyc3RSZXF1ZXN0KSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTUwMywxMSArNTAzLDExIEBAIGJvb2wgTmV0d29ya0RhdGFUYXNr
QmxvYjo6d3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogCiB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmNsZWFuRG93bmxvYWRGaWxlcygpCiB7Ci0gICAgaWYg
KG1fZG93bmxvYWRGaWxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKLSAgICAgICAg
Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlKTsKLSAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7CisgICAgICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKICAgICB9Ci0gICAgZGVsZXRlRmlsZSht
X3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OmRpZEZhaWxEb3dubG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTUzNiw4ICs1
MzYsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZEZpbmlzaERvd25sb2FkKCkKICAg
ICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZEZpbmlz
aERvd25sb2FkIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoaXNEb3dubG9hZCgpKTsKLSAgICBjbG9z
ZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAgIG1fZG93bmxvYWRGaWxlID0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUp
OworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKIAogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAgICAgbV9zYW5kYm94
RXh0ZW5zaW9uLT5yZXZva2UoKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0Jsb2I6OmRpZEZhaWwoRXJyb3IgZXJyb3JDb2RlKQogCiB2b2lkIE5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmRpZEZpbmlzaCgpCiB7Ci0gICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGaW5pc2hEb3dubG9h
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAppbmRleCA1MTkzNTk0NDk1NS4uOTI2NmVk
ZWM2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5oCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X3NpemVJdGVtQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9yZWFkSXRlbUNvdW50IHsgMCB9
OwogICAgIGJvb2wgbV9maWxlT3BlbmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlIH07CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1f
ZG93bmxvYWRGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3Nh
bmRib3hFeHRlbnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDJmZDhlZmYxMzUxLi42ZTVjZGY3NmY5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTYwMSw3ICs2
MDEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKHVpbnQzMl90IGNtKQog
ICAgIHVuc2lnbmVkIHVybENhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwogICAgIHVpbnQ2NF90IHVy
bENhY2hlRGlza0NhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCBkaXNrRnJlZVNpemUgPSAwOwot
ICAgIGlmIChXZWJDb3JlOjpnZXRWb2x1bWVGcmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3Rvcnks
IGRpc2tGcmVlU2l6ZSkpIHsKKyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0Vm9sdW1l
RnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CiAgICAgICAg
IC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2Ug
dGhlIHJlcG9ydGVkIGJ5dGUKICAgICAgICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5
IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCiAgICAgICAgIGRpc2tGcmVlU2l6ZSAvPSBLQiAqIDEw
MDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Nh
Y2hlU3RvcmFnZUVuZ2luZS5jcHAKaW5kZXggZjgxNzM2MmRhZTUuLjY3OTQ5MzUwMzljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmUuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFN0cmluZyBFbmdpbmU6OmNhY2hlc1Jv
b3RQYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
S2V5IGtleShvcmlnaW4sIHsgfSwgeyB9LCB7IH0sIHNhbHQoKSk7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFz
aEFzU3RyaW5nKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocm9vdFBhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKTsK
IH0KIAogRW5naW5lOjp+RW5naW5lKCkKQEAgLTIwNSw5ICsyMDUsOSBAQCB2b2lkIEVuZ2luZTo6
aW5pdGlhbGl6ZShGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmIGNhbGxi
YWNrKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHNhbHRQYXRoID0gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgi
c2FsdCIpKTsKKyAgICBTdHJpbmcgc2FsdFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlMaXRlcmFsKCJzYWx0IikpOwog
ICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dGhpcywgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2FsdFBhdGggPSBXVEZNb3ZlKHNh
bHRQYXRoKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmll
cyhtX3Jvb3RQYXRoKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKG1fcm9vdFBhdGgpOwogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBzYWx0ID0gcmVhZE9y
TWFrZVNhbHQoc2FsdFBhdGgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgaWYgKCFzYWx0KSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2so
RXJyb3I6OldyaXRlRGlzayk7CkBAIC0zMzQsNyArMzM0LDcgQEAgdm9pZCBFbmdpbmU6OnJlbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9p
b1F1ZXVlLT5kaXNwYXRjaChbZmlsZW5hbWUgPSBmaWxlbmFtZS5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CisgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogICAgIH0pOwogfQog
CkBAIC0zODIsOCArMzgyLDggQEAgdm9pZCBFbmdpbmU6OmZldGNoRW50cmllcyhib29sIHNob3Vs
ZENvbXB1dGVTaXplLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmUKICAgICB9CiAKICAg
ICBhdXRvIHRhc2tDb3VudGVyID0gUmVhZE9yaWdpbnNUYXNrQ291bnRlcjo6Y3JlYXRlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBmb3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJD
b3JlOjpsaXN0RGlyZWN0b3J5KG1fcm9vdFBhdGgsICIqIikpIHsKLSAgICAgICAgaWYgKCFXZWJD
b3JlOjpmaWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6U2hvdWxkRm9sbG93U3lt
Ym9saWNMaW5rczo6Tm8pKQorICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgeworICAgICAgICBpZiAo
IVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgQ2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3Rvcnko
Zm9sZGVyUGF0aCwgKm1faW9RdWV1ZSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
c2hvdWxkQ29tcHV0ZVNpemUsIHRhc2tDb3VudGVyID0gdGFza0NvdW50ZXIuY29weVJlZigpXSAo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYgb3JpZ2luKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBAIC00MTUsOCAr
NDE1LDggQEAgdm9pZCBFbmdpbmU6OmNsZWFyQWxsQ2FjaGVzKENhbGxiYWNrQWdncmVnYXRvciYg
dGFza0hhbmRsZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2go
W3BhdGggPSBtX3Jvb3RQYXRoLmlzb2xhdGVkQ29weSgpLCB0YXNrSGFuZGxlciA9IG1ha2VSZWYo
dGFza0hhbmRsZXIpXSB7Ci0gICAgICAgIGZvciAoYXV0byYgZmlsZW5hbWUgOiBXZWJDb3JlOjps
aXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKLSAgICAgICAgICAgIGlmIChXZWJDb3JlOjpmaWxl
SXNEaXJlY3RvcnkoZmlsZW5hbWUsIFdlYkNvcmU6OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6
Ok5vKSkKKyAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgeworICAgICAgICAgICAgaWYgKFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgICAgIGRlbGV0ZURp
cmVjdG9yeVJlY3Vyc2l2ZWx5KGZpbGVuYW1lKTsKICAgICAgICAgfQogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdp
bmVDYWNoZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0
b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCmluZGV4IGM4ZWY2ZjA3YTEwLi5lODQzMTVlM2ZlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNDIsMTggKzQyLDE4IEBAIG5hbWVzcGFj
ZSBDYWNoZVN0b3JhZ2UgewogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNh
Y2hlc2xpc3QiKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJjYWNoZXNsaXN0Iikp
OwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNPcmlnaW5GaWxlbmFtZShjb25zdCBT
dHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgib3JpZ2luIikpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgib3JpZ2luIikpOwogfQogCiB2b2lkIENhY2hl
czo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwg
V29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBxdWV1ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgZm9sZGVyUGF0aCA9IGZvbGRlclBhdGguaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhjYWNoZXNMaXN0Rmls
ZW5hbWUoZm9sZGVyUGF0aCkpKSB7CisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhjYWNoZXNMaXN0RmlsZW5hbWUoZm9sZGVyUGF0aCkpKSB7CiAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwpAQCAtMzMzLDcgKzMzMyw3
IEBAIHZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4
cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgfQogCiAgICAgYXV0byBmaWxlbmFtZSA9
IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAoIVdlYkNvcmU6OmZpbGVF
eGlzdHMoZmlsZW5hbWUpKSB7CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGZpbGVuYW1lKSkgewogICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggNTcwNGY4NTY3NDQuLjE5NWMyM2Y1YTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgQ2FjaGU6OkNhY2hlKFJlZjxTdG9yYWdlPiYm
IHN0b3JhZ2UsIE9wdGlvblNldDxPcHRpb24+IG9wdGlvbnMpCiAjZW5kaWYKICNpZiBQTEFURk9S
TShHVEspCiAgICAgICAgIC8vIFRyaWdnZXJzIHdpdGggInRvdWNoICRjYWNoZVBhdGgvZHVtcCIu
Ci0gICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJh
c2VQYXRoKCksICJkdW1wIikpOworICAgICAgICBDU3RyaW5nIGR1bXBGaWxlUGF0aCA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aCgpLCAiZHVt
cCIpKTsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZHVtcEZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfcGF0aChkdW1wRmlsZVBhdGguZGF0YSgpKSk7CiAgICAgICAgIEdGaWxlTW9uaXRv
ciogbW9uaXRvciA9IGdfZmlsZV9tb25pdG9yX2ZpbGUoZHVtcEZpbGUuZ2V0KCksIEdfRklMRV9N
T05JVE9SX05PTkUsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQobW9uaXRvciwgImNoYW5nZWQiLCBHX0NBTExCQUNLKGR1bXBGaWxlQ2hhbmdlZCks
IHRoaXMpOwpAQCAtNTM3LDE2ICs1MzcsMTYgQEAgdm9pZCBDYWNoZTo6dHJhdmVyc2UoRnVuY3Rp
b248dm9pZCAoY29uc3QgVHJhdmVyc2FsRW50cnkqKT4mJiB0cmF2ZXJzZUhhbmRsZXIpCiAKIFN0
cmluZyBDYWNoZTo6ZHVtcEZpbGVQYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+dmVyc2lvblBhdGgoKSwgImR1bXAu
anNvbiIpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9uUGF0aCgpLCAiZHVtcC5qc29uIik7CiB9CiAKIHZv
aWQgQ2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiB7Ci0gICAgYXV0byBmZCA9IFdlYkNvcmU6
Om9wZW5GaWxlKGR1bXBGaWxlUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOwotICAgIGlm
ICghV2ViQ29yZTo6aXNIYW5kbGVWYWxpZChmZCkpCisgICAgYXV0byBmZCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Om9wZW5GaWxlKGR1bXBGaWxlUGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpP
cGVuRm9yV3JpdGUpOworICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChmZCkpCiAgICAgICAgIHJldHVybjsKICAgICBhdXRvIHByb2xvZ3VlID0gU3RyaW5nKCJ7XG5c
ImVudHJpZXNcIjogW1xuIikudXRmOCgpOwotICAgIFdlYkNvcmU6OndyaXRlVG9GaWxlKGZkLCBw
cm9sb2d1ZS5kYXRhKCksIHByb2xvZ3VlLmxlbmd0aCgpKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmZCwgcHJvbG9ndWUuZGF0YSgpLCBwcm9sb2d1ZS5sZW5ndGgoKSk7
CiAKICAgICBzdHJ1Y3QgVG90YWxzIHsKICAgICAgICAgdW5zaWduZWQgY291bnQgeyAwIH07CkBA
IC01NzUsOCArNTc1LDggQEAgdm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAg
ICAgICAgIGVwaWxvZ3VlLmFwcGVuZExpdGVyYWwoIlxuIik7CiAgICAgICAgICAgICBlcGlsb2d1
ZS5hcHBlbmRMaXRlcmFsKCJ9XG59XG4iKTsKICAgICAgICAgICAgIGF1dG8gd3JpdGVEYXRhID0g
ZXBpbG9ndWUudG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgICAgICBXZWJDb3JlOjp3cml0ZVRv
RmlsZShmZCwgd3JpdGVEYXRhLmRhdGEoKSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKLSAgICAgICAg
ICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmZCk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEoKSwgd3JpdGVEYXRhLmxlbmd0aCgp
KTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmZCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYXV0byBlbnRyeSA9IEVudHJ5Ojpk
ZWNvZGVTdG9yYWdlUmVjb3JkKCpyZWNvcmQpOwpAQCAtNTkwLDE0ICs1OTAsMTQgQEAgdm9pZCBD
YWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICAgICAgZW50cnktPmFzSlNPTihqc29uLCBp
bmZvKTsKICAgICAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICAgICAgYXV0byB3
cml0ZURhdGEgPSBqc29uLnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICBXZWJDb3JlOjp3cml0
ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEoKSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmQsIHdyaXRlRGF0YS5kYXRhKCks
IHdyaXRlRGF0YS5sZW5ndGgoKSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgQ2FjaGU6OmRlbGV0ZUR1
bXBGaWxlKCkKIHsKICAgICBXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5DYWNo
ZS5kZWxldGUiKS0+ZGlzcGF0Y2goW3BhdGggPSBkdW1wRmlsZVBhdGgoKS5pc29sYXRlZENvcHko
KV0gewotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKHBhdGgpOworICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
QmxvYlN0b3JhZ2UuY3BwCmluZGV4IGY2YjM2NGZhOWVkLi4xNjM1ZjIzY2U2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTUzLDE1ICs1MywxNSBAQCB2b2lkIEJsb2JTdG9yYWdl
OjpzeW5jaHJvbml6ZSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CisgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRo
KCkpOwogCiAgICAgbV9hcHByb3hpbWF0ZVNpemUgPSAwOwogICAgIGF1dG8gYmxvYkRpcmVjdG9y
eSA9IGJsb2JEaXJlY3RvcnlQYXRoKCk7CiAgICAgdHJhdmVyc2VEaXJlY3RvcnkoYmxvYkRpcmVj
dG9yeSwgW3RoaXMsICZibG9iRGlyZWN0b3J5XShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVjdG9y
eUVudHJ5VHlwZSB0eXBlKSB7CiAgICAgICAgIGlmICh0eXBlICE9IERpcmVjdG9yeUVudHJ5VHlw
ZTo6RmlsZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYXV0byBwYXRoID0gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnksIG5hbWUpOwotICAgICAg
ICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgICAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAg
ICAgICAgIHN0cnVjdCBzdGF0IHN0YXQ7CiAgICAgICAgIDo6c3RhdChmaWxlUGF0aC5kYXRhKCks
ICZzdGF0KTsKICAgICAgICAgLy8gTm8gY2xpZW50cyBsZWZ0IGZvciB0aGlzIGJsb2IuCkBAIC03
Nyw3ICs3Nyw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIFN0cmluZyBCbG9i
U3RvcmFnZTo6YmxvYlBhdGhGb3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2VzdCYgaGFzaCkgY29uc3QK
IHsKICAgICBhdXRvIGhhc2hBc1N0cmluZyA9IFNIQTE6OmhleERpZ2VzdChoYXNoKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRo
KCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aCgp
LCBTdHJpbmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOwogfQogCiBCbG9iU3RvcmFnZTo6Qmxv
YiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkK
QEAgLTg4LDggKzg4LDggQEAgQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmFkZChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IERhdGEmIGRhdGEpCiAgICAgaWYgKGRhdGEuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4geyBkYXRhLCBoYXNoIH07CiAKLSAgICBhdXRvIGJsb2JQYXRoID0g
V2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaChoYXNoKSk7
Ci0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKKyAgICBhdXRvIGJsb2JQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGJsb2JQYXRoRm9ySGFzaChoYXNoKSk7CisgICAgYXV0byBsaW5rUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
ICAgICB1bmxpbmsobGlua1BhdGguZGF0YSgpKTsKIAogICAgIGJvb2wgYmxvYkV4aXN0cyA9IGFj
Y2VzcyhibG9iUGF0aC5kYXRhKCksIEZfT0spICE9IC0xOwpAQCAtMTE5LDcgKzExOSw3IEBAIEJs
b2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjpnZXQoY29uc3QgU3RyaW5nJiBwYXRoKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdl
YkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwog
ICAgIGF1dG8gZGF0YSA9IG1hcEZpbGUobGlua1BhdGguZGF0YSgpKTsKIAogICAgIHJldHVybiB7
IGRhdGEsIGNvbXB1dGVTSEExKGRhdGEsIG1fc2FsdCkgfTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2
b2lkIEJsb2JTdG9yYWdlOjpyZW1vdmUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHVubGlu
ayhsaW5rUGF0aC5kYXRhKCkpOwogfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgdW5zaWduZWQgQmxv
YlN0b3JhZ2U6OnNoYXJlQ291bnQoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHN0cnVjdCBz
dGF0IHN0YXQ7CiAgICAgaWYgKDo6c3RhdChsaW5rUGF0aC5kYXRhKCksICZzdGF0KSA8IDApCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKaW5kZXggOGFjNzk3Zjc4YTAuLjdiYjY0OTJh
NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgU2FsdCBtYWtl
U2FsdCgpCiAKIHN0ZDo6b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5n
JiBwYXRoKQogewotICAgIGF1dG8gY3BhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCk7CisgICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBhdXRvIGZkID0gb3BlbihjcGF0aC5kYXRh
KCksIE9fUkRPTkxZLCAwKTsKICAgICBTYWx0IHNhbHQ7CiAgICAgYXV0byBieXRlc1JlYWQgPSBy
ZWFkKGZkLCBzYWx0LmRhdGEoKSwgc2FsdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5j
cHAKaW5kZXggODJkNzM1NTE4OTYuLmVlNmQxNGU1NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIERpcmVjdG9yeUVudHJ5VHlwZSBkaXJlY3Rv
cnlFbnRyeVR5cGUodWludDhfdCBkdHlwZSkKIAogdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIERpcmVj
dG9yeUVudHJ5VHlwZSk+JiBmdW5jdGlvbikKIHsKLSAgICBESVIqIGRpciA9IG9wZW5kaXIoV2Vi
Q29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgRElSKiBk
aXIgPSBvcGVuZGlyKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCkpOwogICAgIGlmICghZGlyKQogICAgICAgICByZXR1cm47CiAgICAgZGly
ZW50KiBkcDsKQEAgLTg0LDEwICs4NCwxMCBAQCB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRAogdm9p
ZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAg
dHJhdmVyc2VEaXJlY3RvcnkocGF0aCwgWyZwYXRoXShjb25zdCBTdHJpbmcmIG5hbWUsIERpcmVj
dG9yeUVudHJ5VHlwZSB0eXBlKSB7Ci0gICAgICAgIFN0cmluZyBlbnRyeVBhdGggPSBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgbmFtZSk7CisgICAgICAgIFN0cmluZyBl
bnRyeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGF0aCwgbmFtZSk7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIERpcmVj
dG9yeUVudHJ5VHlwZTo6RmlsZToKLSAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoZW50
cnlQYXRoKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZW50
cnlQYXRoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERpcmVjdG9yeUVudHJ5
VHlwZTo6RGlyZWN0b3J5OgogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHko
ZW50cnlQYXRoKTsKQEAgLTk1LDE5ICs5NSwxOSBAQCB2b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgLy8gVGhpcyBkb2Vzbid0IGZvbGxv
dyBzeW1saW5rcy4KICAgICAgICAgfQogICAgIH0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KHBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KHBhdGgpOwogfQogCiBGaWxlVGltZXMgZmlsZVRpbWVzKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKICNpZiBIQVZFKFNUQVRfQklSVEhUSU1FKQogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZv
OwotICAgIGlmIChzdGF0KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCksICZmaWxlSW5mbykpCisgICAgaWYgKHN0YXQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmZpbGVJbmZvKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICByZXR1cm4geyBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9t
X3RpbWVfdChmaWxlSW5mby5zdF9iaXJ0aHRpbWUpLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojpmcm9tX3RpbWVfdChmaWxlSW5mby5zdF9tdGltZSkgfTsKICNlbGlmIFVTRShTT1VQKQogICAg
IC8vIFRoZXJlJ3Mgbm8gc3RfYmlydGh0aW1lIGluIHNvbWUgb3BlcmF0aW5nIHN5c3RlbXMgbGlr
ZSBMaW51eCwgc28gd2UgdXNlIHhhdHRycyB0byBzZXQvZ2V0IHRoZSBjcmVhdGlvbiB0aW1lLgot
ICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChX
ZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CisgICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAg
ICBHUmVmUHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2lu
Zm8oZmlsZS5nZXQoKSwgInhhdHRyOjpiaXJ0aHRpbWUsdGltZTo6bW9kaWZpZWQiLCBHX0ZJTEVf
UVVFUllfSU5GT19OT05FLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykK
ICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIHVwZGF0ZUZpbGVN
b2RpZmljYXRpb25UaW1lSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAvLyBUaGlzIHJlYWxseSB1cGRhdGVzIGJvdGggdGhlIGFjY2Vz
cyB0aW1lIGFuZCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUuCi0gICAgdXRpbWVzKFdlYkNvcmU6OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksIG51bGxwdHIpOworICAgIHV0aW1l
cyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpLCBudWxscHRyKTsKIH0KIAogYm9vbCBjYW5Vc2VTaGFyZWRNZW1vcnlGb3JQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKQEAgLTE0Miw3ICsxNDIsNyBAQCBib29sIGNhblVzZVNoYXJlZE1lbW9y
eUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIGF0dHJsaXN0IGF0dHJMaXN0ID0geyB9
OwogICAgIGF0dHJMaXN0LmJpdG1hcGNvdW50ID0gQVRUUl9CSVRfTUFQX0NPVU5UOwogICAgIGF0
dHJMaXN0LmNvbW1vbmF0dHIgPSBBVFRSX0NNTl9EQVRBX1BST1RFQ1RfRkxBR1M7Ci0gICAgaW50
MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKS5kYXRhKCksICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVy
KSwgRlNPUFRfTk9GT0xMT1cpOworICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAm
YXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9X
KTsKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IlVuYWJsZSB0byBnZXQgY2FjaGUgZGlyZWN0b3J5IHByb3RlY3Rpb24gY2xhc3MsIGRpc2FibGlu
ZyB1c2Ugb2Ygc2hhcmVkIG1hcHBlZCBtZW1vcnkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVJT0NoYW5uZWxDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KaW5kZXggZWZkNzc5OWRhMmYuLjc2YjE0ZTMz
NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KQEAgLTQxLDcgKzQxLDcgQEAg
SU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQog
ICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwgbV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBw
YXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBh
dXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOwogICAgIGludCBvZmxhZzsKICAgICBtb2RlX3QgbW9kZTsKICAgICBib29sIHVz
ZUxvd0lPUHJpb3JpdHkgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCmlu
ZGV4IDAxNjEyMDgwYzc5Li40Y2U3NzYyYjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNv
dXAuY3BwCkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAsIG1f
dHlwZSh0eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHUmVmUHRyPEdGaWxlPiBm
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5kYXRhKCkpKTsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6Q3JlYXRlOiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0
aXN0aWNzLmNwcAppbmRleCA2OTMzNDE3ZmQ4Yy4uYjRmNjI2MmRjNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dGF0aXN0aWNzLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U3RhdGlzdGlj
cz4gU3RhdGlzdGljczo6b3BlbihDYWNoZSYgY2FjaGUsIGNvbnN0IFN0cmluZyYgY2FjaGVQYQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlz
dGljc0RhdGFiYXNlTmFtZSk7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NE
YXRhYmFzZU5hbWUpOwogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0YXRpc3RpY3M+KGNh
Y2hlLCBkYXRhYmFzZVBhdGgpOwogfQogCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgU3RhdGlzdGlj
czo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKICAgICBzZXJpYWxCYWNr
Z3JvdW5kSU9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBkYXRhYmFzZVBhdGggPSBkYXRhYmFzZVBh
dGguaXNvbGF0ZWRDb3B5KCksIG5ldHdvcmtDYWNoZVBhdGggPSBtX2NhY2hlLnJlY29yZHNQYXRo
KCksIHN0YXJ0VGltZV0gewogICAgICAgICBXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CiAKLSAgICAgICAgaWYgKCFXZWJD
b3JlOjptYWtlQWxsRGlyZWN0b3JpZXMoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFzZVBh
dGgpKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShkYXRhYmFzZVBhdGgpKSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQ
cm9jZXNzKSBPcGVuaW5nIG5ldHdvcmsgY2FjaGUgc3RhdGlzdGljcyBkYXRhYmFzZSBhdCAlcy4u
LiIsIGRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4
IGU0YWRiMTliYzhjLi4wM2UzMDkyOTA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMzYs
MjkgKzEzNiwyOSBAQCBwdWJsaWM6CiBzdGF0aWMgU3RyaW5nIG1ha2VWZXJzaW9uZWREaXJlY3Rv
cnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7CiAgICAgU3RyaW5nIHZl
cnNpb25TdWJkaXJlY3RvcnkgPSB2ZXJzaW9uRGlyZWN0b3J5UHJlZml4ICsgU3RyaW5nOjpudW1i
ZXIoU3RvcmFnZTo6dmVyc2lvbik7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChiYXNlRGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNl
RGlyZWN0b3J5UGF0aCwgdmVyc2lvblN1YmRpcmVjdG9yeSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcg
bWFrZVJlY29yZHNEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVy
c2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlO
YW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVj
b3Jkc0RpcmVjdG9yeU5hbWUpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VCbG9iRGlyZWN0b3J5
UGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgo
YmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERp
cmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBibG9ic0RpcmVjdG9yeU5hbWUpOwogfQog
CiBzdGF0aWMgU3RyaW5nIG1ha2VTYWx0RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0
b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2FsdEZpbGVO
YW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgc2Fs
dEZpbGVOYW1lKTsKIH0KIAogUmVmUHRyPFN0b3JhZ2U+IFN0b3JhZ2U6Om9wZW4oY29uc3QgU3Ry
aW5nJiBjYWNoZVBhdGgsIE1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgaWYgKCFXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25l
ZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRoKSkpCisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY2FjaGVQYXRo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gc2FsdCA9IHJlYWRPck1ha2VT
YWx0KG1ha2VTYWx0RmlsZVBhdGgoY2FjaGVQYXRoKSk7CiAgICAgaWYgKCFzYWx0KQpAQCAtMTcx
LDEzICsxNzEsMTMgQEAgdm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJl
Y29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkVHlwZSwKICAgICB0cmF2ZXJzZURpcmVj
dG9yeShyZWNvcmRzUGF0aCwgWyZdKGNvbnN0IFN0cmluZyYgcGFydGl0aW9uTmFtZSwgRGlyZWN0
b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewogICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVj
dG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBT
dHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
ZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBwYXJ0aXRpb25QYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQ
YXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0aW9u
UGF0aCwgWyZdKGNvbnN0IFN0cmluZyYgYWN0dWFsVHlwZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVu
dHJ5VHlwZSkgewogICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAo
IWV4cGVjdGVkVHlwZS5pc0VtcHR5KCkgJiYgZXhwZWN0ZWRUeXBlICE9IGFjdHVhbFR5cGUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgU3RyaW5nIHJlY29yZERpcmVjdG9y
eVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwg
YWN0dWFsVHlwZSk7CisgICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRo
LCBhY3R1YWxUeXBlKTsKICAgICAgICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29yZERpcmVj
dG9yeVBhdGgsIFsmZnVuY3Rpb24sICZyZWNvcmREaXJlY3RvcnlQYXRoLCAmYWN0dWFsVHlwZV0o
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIGVudHJ5VHlwZSkgewog
ICAgICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxl
IHx8IGZpbGVOYW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5NywxOCArMTk3LDE4IEBAIHN0YXRpYyB2b2lkIGRl
bGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRGVsZXRlIFt0eXBlXSBzdWItZm9sZGVy
cy4KLSAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpOworICAgICAgICBTdHJpbmcg
cGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CiAgICAgICAgIHRyYXZlcnNlRGlyZWN0
b3J5KHBhcnRpdGlvblBhdGgsIFsmcGFydGl0aW9uUGF0aF0oY29uc3QgU3RyaW5nJiBzdWJkaXJO
YW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50
cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlmIGl0IGlz
IHJlYWxseSBlbXB0eS4KLSAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBzdWJkaXJO
YW1lKSk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVj
dG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0
aW9uUGF0aCwgc3ViZGlyTmFtZSkpOwogICAgICAgICB9KTsKIAogICAgICAgICAvLyBEZWxldGUg
W1BhcnRpdGlvbl0gZm9sZGVycy4KICAgICAgICAgLy8gTGV0IHN5c3RlbSBmaWd1cmUgb3V0IGlm
IGl0IGlzIHJlYWxseSBlbXB0eS4KLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRp
b25OYW1lKSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRz
UGF0aCwgcGFydGl0aW9uTmFtZSkpOwogICAgIH0pOwogfQogCkBAIC0yNzYsMTcgKzI3NiwxNyBA
QCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICAgICAgdW5zaWduZWQgY291bnQgPSAw
OwogICAgICAgICBTdHJpbmcgYW55VHlwZTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMo
cmVjb3Jkc1BhdGgoKSwgYW55VHlwZSwgWyZyZWNvcmRGaWx0ZXIsICZibG9iRmlsdGVyLCAmcmVj
b3Jkc1NpemUsICZjb3VudF0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBo
YXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcm
IHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5h
bWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAK
ICAgICAgICAgICAgIEtleTo6SGFzaFR5cGUgaGFzaDsKICAgICAgICAgICAgIGlmICghS2V5Ojpz
dHJpbmdUb0hhc2goaGFzaFN0cmluZywgaGFzaCkpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3Jl
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgICAgICAg
ICAgV2ViQ29yZTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKKyAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVQYXRoLCBmaWxlU2l6ZSk7CiAg
ICAgICAgICAgICBpZiAoIWZpbGVTaXplKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6ZGVs
ZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogCkBAIC0zNTIsMTIgKzM1MiwxMiBAQCBib29sIFN0b3JhZ2U6Om1heUNvbnRhaW5CbG9i
KGNvbnN0IEtleSYga2V5KSBjb25zdAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZERpcmVjdG9yeVBh
dGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFrZXkudHlwZSgp
LmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBh
cnRpdGlvbkhhc2hBc1N0cmluZygpKSwga2V5LnR5cGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgoKSwga2V5LnBhcnRpdGlvbkhh
c2hBc1N0cmluZygpKSwga2V5LnR5cGUoKSk7CiB9CiAKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmRQ
YXRoRm9yS2V5KGNvbnN0IEtleSYga2V5KSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShrZXkpLCBr
ZXkuaGFzaEFzU3RyaW5nKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShrZXkpLCBrZXku
aGFzaEFzU3RyaW5nKCkpOwogfQogCiBzdGF0aWMgU3RyaW5nIGJsb2JQYXRoRm9yUmVjb3JkUGF0
aChjb25zdCBTdHJpbmcmIHJlY29yZFBhdGgpCkBAIC02MDIsNyArNjAyLDcgQEAgdm9pZCBTdG9y
YWdlOjpkZWxldGVGaWxlcyhjb25zdCBLZXkmIGtleSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShr
ZXkpKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGhGb3JL
ZXkoa2V5KSk7CiAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGhGb3JLZXkoa2V5KSk7
CiB9CiAKQEAgLTc2NCw3ICs3NjQsNyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoV3JpdGVPcGVy
YXRpb24oc3RkOjp1bmlxdWVfcHRyPFdyaXRlT3BlcmF0aW9uPiB3cml0ZU9wZXJhdAogICAgICAg
ICBhdXRvIHJlY29yZERpcmVjdG9yUGF0aCA9IHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkod3Jp
dGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IHJlY29y
ZFBhdGhGb3JLZXkod3JpdGVPcGVyYXRpb24ucmVjb3JkLmtleSk7CiAKLSAgICAgICAgV2ViQ29y
ZTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7CisgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhyZWNvcmREaXJlY3RvclBhdGgpOwog
CiAgICAgICAgICsrd3JpdGVPcGVyYXRpb24uYWN0aXZlQ291bnQ7CiAKQEAgLTg2Myw3ICs4NjMs
NyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgVHJhdmVyc2VG
bGFncyBmbGFncywgVHJhdmVyc2VIYW5kbGVyJgogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUp
OwogCiAgICAgICAgICAgICBkb3VibGUgd29ydGggPSAtMTsKICAgICAgICAgICAgIGlmICh0cmF2
ZXJzZU9wZXJhdGlvbi5mbGFncyAmIFRyYXZlcnNlRmxhZzo6Q29tcHV0ZVdvcnRoKQpAQCAtOTUy
LDEzICs5NTIsMTMgQEAgdm9pZCBTdG9yYWdlOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW8KICAgICBpb1F1ZXVlKCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbW9kaWZpZWRTaW5j
ZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHR5
cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byByZWNv
cmRzUGF0aCA9IHRoaXMtPnJlY29yZHNQYXRoKCk7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0Zp
bGVzKHJlY29yZHNQYXRoLCB0eXBlLCBbbW9kaWZpZWRTaW5jZVRpbWVdKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBi
b29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7Ci0gICAgICAg
ICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Y29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZVBhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGly
ZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2VUaW1l
ID4gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludDo6bWluKCkpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIHRpbWVzID0gZmlsZVRpbWVzKGZpbGVQYXRoKTsKICAgICAgICAgICAg
ICAgICBpZiAodGltZXMubW9kaWZpY2F0aW9uIDwgbW9kaWZpZWRTaW5jZVRpbWUpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdlYkNvcmU6
OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShmaWxlUGF0aCk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIGRlbGV0ZUVtcHR5
UmVjb3Jkc0RpcmVjdG9yaWVzKHJlY29yZHNQYXRoKTsKQEAgLTEwMzgsNyArMTAzOCw3IEBAIHZv
aWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwor
ICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKICAgICAg
ICAgICAgIGF1dG8gYmxvYlBhdGggPSBibG9iUGF0aEZvclJlY29yZFBhdGgocmVjb3JkUGF0aCk7
CiAKICAgICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMocmVjb3JkUGF0aCk7CkBAIC0x
MDUwLDcgKzEwNTAsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAgICAgICAgICAgICBMT0co
TmV0d29ya0NhY2hlU3RvcmFnZSwgIkRlbGV0aW9uIHByb2JhYmlsaXR5PSVmIGJvZHlMaW5rQ291
bnQ9JWQgc2hvdWxkRGVsZXRlPSVkIiwgcHJvYmFiaWxpdHksIGJvZHlTaGFyZUNvdW50LCBzaG91
bGREZWxldGUpOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkRGVsZXRlKSB7Ci0gICAgICAgICAg
ICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoKTsKKyAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOwogICAgICAgICAgICAg
ICAgIG1fYmxvYlN0b3JhZ2UucmVtb3ZlKGJsb2JQYXRoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfSk7CkBAIC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0ZU9sZFZlcnNp
b25zKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAjZW5kaWYKIAotICAgICAgICAgICAgYXV0
byBvbGRWZXJzaW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNo
ZVBhdGgsIHN1YmRpck5hbWUpOworICAgICAgICAgICAgYXV0byBvbGRWZXJzaW9uUGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIHN1
YmRpck5hbWUpOwogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29y
a1Byb2Nlc3MpIGRlbGV0aW5nIG9sZCBjYWNoZSB2ZXJzaW9uLCBwYXRoICVzIiwgb2xkVmVyc2lv
blBhdGgudXRmOCgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vy
c2l2ZWx5KG9sZFZlcnNpb25QYXRoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAKaW5kZXgg
MzEzMWMwZjFjNDQuLmUyZDQxZWU3ODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApA
QCAtNzMsMTUgKzczLDE1IEBAIHZvaWQgTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcm
IHJlY29yZFJlcGxheU1vZGUsIGNvbnN0IFN0cmluZyYgcmVjb3JkUmVwCiAgICAgICAgIG1fcmVj
b3JkUmVwbGF5TW9kZSA9IERpc2FibGVkOwogICAgIH0KIAotICAgIG1fcmVjb3JkUmVwbGF5Q2Fj
aGVMb2NhdGlvbiA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRSZXBs
YXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlY29yZFJlcGxheSk7CisgICAgbV9yZWNvcmRSZXBs
YXlDYWNoZUxvY2F0aW9uID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsK
ICAgICBERUJVR19MT0coIkNhY2hlIGxvY2F0aW9uID0gIiBTVFJJTkdfU1BFQ0lGSUVSLCBERUJV
R19TVFIobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uKSk7CiAKICAgICBpZiAoaXNSZWNvcmRp
bmcoKSkgewotICAgICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxl
KHJlcG9ydFJlY29yZFBhdGgoKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9y
ZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCks
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgfSBlbHNlIGlmIChpc1Jl
cGxheWluZygpKSB7Ci0gICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVI
YW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yUmVhZCk7Ci0gICAgICAg
IG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRoKCks
IFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgICAgIG1fcmVwbGF5RmlsZUhhbmRsZSA9IFdl
YkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3Jp
dGUpOworICAgICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJl
cG9ydFJlY29yZFBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAg
ICAgICBtX2xvYWRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRMb2FkUGF0
aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3JlcGxh
eUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlcGxheVBhdGgoKSwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICAgICAgbG9hZFJlc291cmNlcygp
OwogICAgIH0KIH0KQEAgLTM2NSwxNyArMzY1LDE3IEBAIHZvaWQgTWFuYWdlcjo6bG9hZFJlc291
cmNlcygpCiAKIFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRMb2FkUGF0aCgpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9j
YXRpb24sIGtGaWxlTmFtZVJlcG9ydExvYWQpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9u
LCBrRmlsZU5hbWVSZXBvcnRMb2FkKTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydFJlY29y
ZFBhdGgoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOworICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9y
ZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOwogfQogCiBT
dHJpbmcgTWFuYWdlcjo6cmVwb3J0UmVwbGF5UGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtG
aWxlTmFtZVJlcG9ydFJlcGxheSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxl
TmFtZVJlcG9ydFJlcGxheSk7CiB9CiAKIFN0cmluZyBNYW5hZ2VyOjpyZXF1ZXN0VG9QYXRoKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTQxMSw5ICs0MTEsOSBA
QCBTdHJpbmcgTWFuYWdlcjo6aGFzaFRvUGF0aChjb25zdCBTdHJpbmcmIGhhc2gpCiAgICAgZmls
ZU5hbWUuYXBwZW5kKGhhc2hUYWlsKTsKICAgICBmaWxlTmFtZS5hcHBlbmRMaXRlcmFsKCIuZGF0
YSIpOwogCi0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZXNvdXJjZXMpOwotICAgIHBh
dGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgaGFzaEhlYWQpOwot
ICAgIHBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5h
bWUudG9TdHJpbmcoKSk7CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5h
bWVSZXNvdXJjZXMpOworICAgIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocGF0aCwgaGFzaEhlYWQpOworICAgIHBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUudG9TdHJpbmco
KSk7CiAKICAgICByZXR1cm4gcGF0aDsKIH0KQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIE1hbmFn
ZXI6OmxvZ1BsYXllZEJhY2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvbwogICAgIG1fcmVwbGF5RmlsZUhhbmRsZS5wcmludGYoIiVzICVzXG4iLCB3
YXNDYWNoZU1pc3MgPyAibWlzcyIgOiAiaGl0ICIsIERFQlVHX1NUUih1cmwuc3RyaW5nKCkpKTsK
IH0KIAotV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGVPcGVuTW9kZSBtb2RlKQorV2ViQ29yZTo6Rmls
ZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIC8vIElmIHdlIGNh
biB0cml2aWFsbHkgb3BlbiB0aGUgZmlsZSwgdGhlbiBkbyB0aGF0IGFuZCByZXR1cm4gdGhlIG5l
dyBmaWxlCiAgICAgLy8gaGFuZGxlLgpAQCAtNDY0LDkgKzQ2NCw5IEBAIFdlYkNvcmU6OkZpbGVI
YW5kbGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJD
b3JlOjpGaWxlCiAgICAgLy8gSWYgd2UncmUgb3BlbmluZyB0aGUgZmlsZSBmb3Igd3JpdGluZyAo
aW5jbHVkaW5nIGFwcGVuZGluZyksIHRoZW4gdHJ5CiAgICAgLy8gYWdhaW4gYWZ0ZXIgbWFraW5n
IHN1cmUgYWxsIGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyBoYXZlIGJlZW4gY3JlYXRlZC4KIAot
ICAgIGlmIChtb2RlICE9IFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKSB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIHBhcmVudERpciA9IFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoZmlsZVBhdGgpOwotICAgICAg
ICBpZiAoIVdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhwYXJlbnREaXIpKSB7CisgICAgaWYg
KG1vZGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpIHsKKyAgICAgICAgY29u
c3QgYXV0byYgcGFyZW50RGlyID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShm
aWxlUGF0aCk7CisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKHBhcmVudERpcikpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3Ig
JWQgdHJ5aW5nIHRvIGNyZWF0ZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXM6ICIgU1RSSU5HX1NQ
RUNJRklFUiwgZXJybm8sIERFQlVHX1NUUihwYXJlbnREaXIpKTsKICAgICAgICAgICAgIHJldHVy
biBmaWxlSGFuZGxlOwogICAgICAgICB9CkBAIC00NzksNyArNDc5LDcgQEAgV2ViQ29yZTo6Rmls
ZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdl
YkNvcmU6OkZpbGUKICAgICAvLyBDb3VsZCBub3Qgb3BlbiB0aGUgZmlsZS4gTG9nIHRoZSBlcnJv
ciBhbmQgbGVhdmUsIHJldHVybmluZyB0aGUgaW52YWxpZAogICAgIC8vIGZpbGUgaGFuZGxlLgog
Ci0gICAgaWYgKG1vZGUgPT0gV2ViQ29yZTo6T3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUgPT0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpCiAgICAgICAgIERFQlVHX0xPR19FUlJP
UigiRXJyb3IgJWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVSICIgZm9yIHJlYWRp
bmciLCBlcnJubywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CiAgICAgZWxzZQogICAgICAgICBERUJV
R19MT0dfRVJST1IoIkVycm9yICVkIHRyeWluZyB0byBvcGVuICIgU1RSSU5HX1NQRUNJRklFUiAi
IGZvciB3cml0aW5nIiwgZXJybm8sIERFQlVHX1NUUihmaWxlUGF0aCkpOwpAQCAtNDkwLDcgKzQ5
MCw3IEBAIFdlYkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxlCiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxWZWN0
b3I8U3RyaW5nPj4+IE1hbmFnZXI6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7
CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgV2ViQ29yZTo6TWFwcGVkRmlsZURhdGEg
ZmlsZShmaWxlUGF0aCwgc3VjY2Vzcyk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6TWFwcGVk
RmlsZURhdGEgZmlsZShmaWxlUGF0aCwgc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXgg
ZWIyYWNjNDhkY2EuLjUwZWQ1ZTIzZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCkBAIC03
OSw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ0xvYWRlZFJlc291cmNlKFJlc291cmNl
Jik7CiAgICAgdm9pZCBsb2dQbGF5ZWRCYWNrUmVzb3VyY2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgYm9vbCB3YXNDYWNoZU1pc3MpOwogCi0gICAgV2ViQ29yZTo6RmlsZUhhbmRs
ZSBvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZpbGVPcGVuTW9kZSk7Cisg
ICAgV2ViQ29yZTo6RmlsZUhhbmRsZSBvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYsIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSk7CiAKICAgICBTdHJpbmcgcmVxdWVzdFRvUGF0
aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVy
bElkZW50aWZ5aW5nQ29tbW9uRG9tYWluKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVjb3JkZXIuY3BwCmluZGV4IGU2NjAzZTYzNmQ3Li4zYTU1OWE2MTg0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJl
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9O
ZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUmVjb3Jk
ZXI6OnJlY29yZEZpbmlzaChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZv
aWQgUmVjb3JkZXI6OndyaXRlRXZlbnRzKCkKIHsKICAgICBhdXRvIHBhdGggPSBNYW5hZ2VyOjpz
aW5nbGV0b24oKS5yZXF1ZXN0VG9QYXRoKG1faW5pdGlhbFJlcXVlc3QpOwotICAgIGF1dG8gaGFu
ZGxlID0gTWFuYWdlcjo6c2luZ2xldG9uKCkub3BlbkNhY2hlRmlsZShwYXRoLCBXZWJDb3JlOjpP
cGVuRm9yV3JpdGUpOworICAgIGF1dG8gaGFuZGxlID0gTWFuYWdlcjo6c2luZ2xldG9uKCkub3Bl
bkNhY2hlRmlsZShwYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAg
IGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5o
CmluZGV4IGU1NzYwZWQxYmMzLi43NTc2YzBkNWUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJj
ZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBTdHJp
bmcgbV9ldmVudEZpbGVQYXRoOwogICAgICAgICBib29sIG1faGF2ZU1hcHBlZEV2ZW50RmlsZSB7
IGZhbHNlIH07Ci0gICAgICAgIFdlYkNvcmU6Ok1hcHBlZEZpbGVEYXRhIG1fbWFwcGVkRXZlbnRG
aWxlOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtX21hcHBl
ZEV2ZW50RmlsZTsKICAgICAgICAgc2l6ZV90IG1fb2Zmc2V0IHsgMCB9OwogICAgIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCmluZGV4IGRmNjRlMzliZTYxLi4xNzU2NWIyNzliZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCkBAIC0yODUsOCArMjg1LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW0K
IAogICAgIG1fdGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSA9IG1fcGVuZGluZ0Rv
d25sb2FkTG9jYXRpb247CiAKLSAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6Zmls
ZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkKLSAgICAgICAgV2ViQ29yZTo6ZGVs
ZXRlRmlsZShmaWxlbmFtZSk7CisgICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCisgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOwogfQogCiBib29sIE5l
dHdvcmtEYXRhVGFza0NvY29hOjp0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDA1Yzg2ODQ4ZTI1Li41Zjk2OWJiMTJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNDcyLDcg
KzQ3Miw3IEBAIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5IHRvTmV0d29ya0xv
YWRQcmlvcml0eShmbG9hdCBwcmlvcml0eSkKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5hZ2Vy
ID0gV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2VyKCk7
CiAgICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93bmxv
YWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lvbi0+
c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAgICAg
ICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9hZCgq
ZG93bmxvYWQpOwotICAgICAgICBBU1NFUlQoV2ViQ29yZTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0
YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxv
YWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihu
ZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwogICAgICAgICBkb3du
bG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soZG93bmxvYWRJRCwgV1RGTW92
ZShkb3dubG9hZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IGJkNGY2MjkxOTNmLi40YzhiNGE0
ZTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtQcm9jZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3Vw
L05ldHdvcmtQcm9jZXNzU291cC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJv
Y2Vzc0NyZWF0aQogICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNF
bXB0eSgpKTsKICAgICBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hl
RGlyZWN0b3J5OwogCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShX
ZWJDb3JlOjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CisgICAgU291cE5l
dHdvcmtTZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CiAKICAgICBPcHRpb25TZXQ8TmV0d29y
a0NhY2hlOjpDYWNoZTo6T3B0aW9uPiBjYWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hl
OjpPcHRpb246OlJlZ2lzdGVyTm90aWZ5IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5h
YmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Qcm9jZXNzLmgKaW5kZXggOGU3ZjBhNzU1NTkuLmE0NDRmMDY5NmI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKQEAgLTY0LDcgKzY0
LDcgQEAgcHVibGljOgogICAgIGJvb2wgbGF1bmNoUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGxhdW5j
aFBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpOwogICAgIGJvb2wgbGF1bmNo
QXBwbGljYXRpb25BdFVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGFyZ3VtZW50cyk7CiAgICAgYm9vbCBvcGVuVVJMKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBpbnQzMl90JiBzdGF0dXMsIFN0cmluZyYgbGF1bmNoZWRVUkxTdHJpbmcpOwotICAgIGJv
b2wgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOworICAgIGJvb2wgRmlsZVN5c3Rl
bTo6b3BlbkZpbGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpOwogI2VuZGlmCiAKICAgICBDb3Vu
dGVkVXNlckFjdGl2aXR5JiBjb25uZWN0aW9uQWN0aXZpdHkoKSB7IHJldHVybiBtX2Nvbm5lY3Rp
b25BY3Rpdml0eTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNw
cAppbmRleCBkYWY5YmFlY2VlNS4uN2FmMDk4MzNkYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRz
Y2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwCkBAIC0xNjIsNyArMTYyLDcgQEAgYm9vbCBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBs
dWdpbk1vZHVsZUkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBw
bHVnaW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBwYXRoR2V0RmlsZU5hbWUocGx1Z2lu
UGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShwbHVnaW5QYXRoKTsKICAgICBwbHVnaW4uaW5mby5uYW1lID0gbWV0YURhdGEubmFtZTsKICAg
ICBwbHVnaW4uaW5mby5kZXNjID0gbWV0YURhdGEuZGVzY3JpcHRpb247CiAgICAgcGFyc2VNSU1F
RGVzY3JpcHRpb24obWV0YURhdGEubWltZURlc2NyaXB0aW9uLCBwbHVnaW4uaW5mby5taW1lcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2Vh
cmNoUGF0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2Vh
cmNoUGF0aC5jcHAKaW5kZXggN2U4OTJmMDBjODUuLjA3NTFmMGZmNTljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3Bw
CkBAIC00OCw4ICs0OCw4IEBAIFZlY3RvcjxTdHJpbmc+IHBsdWdpbnNEaXJlY3RvcmllcygpCiAg
ICAgaWYgKCFtb3ppbGxhSG9tZS5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQobW96
aWxsYUhvbWUgKyAiL3BsdWdpbnMiKTsKIAotICAgIHJlc3VsdC5hcHBlbmQoaG9tZURpcmVjdG9y
eVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIpOwotICAgIHJlc3VsdC5hcHBlbmQoaG9tZURp
cmVjdG9yeVBhdGgoKSArICIvLm5ldHNjYXBlL3BsdWdpbnMiKTsKKyAgICByZXN1bHQuYXBwZW5k
KEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCkgKyAiLy5tb3ppbGxhL3BsdWdpbnMiKTsK
KyAgICByZXN1bHQuYXBwZW5kKEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCkgKyAiLy5u
ZXRzY2FwZS9wbHVnaW5zIik7CiAgICAgcmVzdWx0LmFwcGVuZCgiL3Vzci9saWIvYnJvd3Nlci9w
bHVnaW5zIik7CiAgICAgcmVzdWx0LmFwcGVuZCgiL3Vzci9sb2NhbC9saWIvbW96aWxsYS9wbHVn
aW5zIik7CiAgICAgcmVzdWx0LmFwcGVuZCgiL3Vzci9saWIvZmlyZWZveC9wbHVnaW5zIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCmluZGV4IDE1MTMzOTA4OGRj
Li45NjM2ZjExZjhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5
U2FtcGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5j
cHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnN0b3AoKQogICAg
IGlmICghbV9pc1J1bm5pbmcpIAogICAgICAgICByZXR1cm47CiAgICAgbV9zYW1wbGVUaW1lci5z
dG9wKCk7Ci0gICAgY2xvc2VGaWxlKG1fc2FtcGxlTG9nRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1fc2FtcGxlTG9nRmlsZSk7CiAKICAgICBwcmludGYoIlN0b3BwZWQgbWVtb3J5
IHNhbXBsZXIgZm9yIHByb2Nlc3MgJXMgJWRcbiIsIHByb2Nlc3NOYW1lKCkudXRmOCgpLmRhdGEo
KSwgZ2V0cGlkKCkpOwogICAgIC8vIEZsdXNoIHN0ZG91dCBidWZmZXIgc28gcHl0aG9uIHNjcmlw
dCBjYW4gYmUgZ3VhcmFudGVlZCB0byByZWFkIHVwIHRvIHRoaXMgcG9pbnQuCkBAIC0xMjcsNyAr
MTI3LDcgQEAgYm9vbCBXZWJNZW1vcnlTYW1wbGVyOjppc1J1bm5pbmcoKSBjb25zdAogICAgIAog
dm9pZCBXZWJNZW1vcnlTYW1wbGVyOjppbml0aWFsaXplVGVtcExvZ0ZpbGUoKQogewotICAgIG1f
c2FtcGxlTG9nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZShwcm9jZXNzTmFtZSgpLCBtX3Nh
bXBsZUxvZ0ZpbGUpOworICAgIG1fc2FtcGxlTG9nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZShwcm9jZXNzTmFtZSgpLCBtX3NhbXBsZUxvZ0ZpbGUpOwogICAgIHdyaXRl
SGVhZGVycygpOwogfQogCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVy
Ojppbml0aWFsaXplU2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUKICAgICBpZiAobV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbXBs
ZUxvZ1NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKICAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRo
ID0gc2FtcGxlTG9nRmlsZVBhdGg7Ci0gICAgbV9zYW1wbGVMb2dGaWxlID0gb3BlbkZpbGUobV9z
YW1wbGVMb2dGaWxlUGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShtX3NhbXBsZUxvZ0ZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVu
Rm9yV3JpdGUpOwogICAgIHdyaXRlSGVhZGVycygpOwogfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAg
dm9pZCBXZWJNZW1vcnlTYW1wbGVyOjp3cml0ZUhlYWRlcnMoKQogICAgIFN0cmluZyBwcm9jZXNz
RGV0YWlscyA9IFN0cmluZzo6Zm9ybWF0KCJQcm9jZXNzOiAlcyBQaWQ6ICVkXG4iLCBwcm9jZXNz
TmFtZSgpLnV0ZjgoKS5kYXRhKCksIGdldHBpZCgpKTsKIAogICAgIENTdHJpbmcgdXRmOFN0cmlu
ZyA9IHByb2Nlc3NEZXRhaWxzLnV0ZjgoKTsKLSAgICB3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0Zp
bGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4
U3RyaW5nLmxlbmd0aCgpKTsKIH0KIAogdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVUaW1l
ckZpcmVkKCkKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnN0b3BU
aW1lckZpcmVkKCkKICAgICBzdG9wKCk7CiB9CiAKLXZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6YXBw
ZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpCit2b2lkIFdl
Yk1lbW9yeVNhbXBsZXI6OmFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUmKQogewogICAgIC8vIENvbGxlY3Qgc3RhdGlzdGljcyBmcm9t
IGFsbG9jYXRvcnMgYW5kIGdldCBSU0laRSBtZXRyaWMKICAgICBTdHJpbmdCdWlsZGVyIHN0YXRT
dHJpbmc7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRD
dXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJikKICAgICBzdGF0U3Ry
aW5nLmFwcGVuZCgnXG4nKTsKIAogICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHN0YXRTdHJpbmcu
dG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgd3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCB1dGY4
U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CisgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5s
ZW5ndGgoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1l
bW9yeVNhbXBsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaApp
bmRleCAyNzg3YjUxNWRhYi4uMzI1ZWViODJhODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJN
ZW1vcnlTYW1wbGVyLmgKQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRp
YWxpemVUaW1lcnMoZG91YmxlKTsKICAgICB2b2lkIHNhbXBsZVRpbWVyRmlyZWQoKTsKICAgICB2
b2lkIHN0b3BUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBhcHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VU
b0ZpbGUoV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlJik7CisgICAgdm9pZCBhcHBlbmRDdXJy
ZW50TWVtb3J5VXNhZ2VUb0ZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlJik7CiAgICAgdm9pZCBzZW5kTWVtb3J5UHJlc3N1cmVFdmVudCgpOwogICAgIAogICAgIFN5
c3RlbU1hbGxvY1N0YXRzIHNhbXBsZVN5c3RlbU1hbGxvYygpIGNvbnN0OwpAQCAtOTUsNyArOTUs
NyBAQCBwcml2YXRlOgogICAgIFdlYk1lbW9yeVN0YXRpc3RpY3Mgc2FtcGxlV2ViS2l0KCkgY29u
c3Q7CiAgICAgU3RyaW5nIHByb2Nlc3NOYW1lKCkgY29uc3Q7CiAgICAgCi0gICAgV2ViQ29yZTo6
UGxhdGZvcm1GaWxlSGFuZGxlIG1fc2FtcGxlTG9nRmlsZSB7IFdlYkNvcmU6OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSB9OwogICAgIFN0cmluZyBtX3NhbXBsZUxvZ0ZpbGVQYXRoOwogICAgIFdl
YkNvcmU6OlRpbWVyIG1fc2FtcGxlVGltZXI7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9zdG9wVGlt
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGhHdGsuY3BwCmluZGV4IDhiMzgzMzM4MDhiLi45Y2E2ZmY2NTY0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAK
QEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIFN0cmluZyBnZXRFeGVjdXRhYmxlUGF0aCgpCiB7CiAg
ICAgQ1N0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOwog
ICAgIGlmICghZXhlY3V0YWJsZVBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBkaXJlY3Rv
cnlOYW1lKHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgu
ZGF0YSgpKSk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgu
ZGF0YSgpKSk7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogI2VuZGlmCkBAIC01MywyMCArNTMs
MjAgQEAgc3RhdGljIFN0cmluZyBmaW5kV2ViS2l0UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9jZXNz
TmFtZSkKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VCS0lUX0VYRUNfUEFUSCIpOwogICAgIGlmIChl
eGVjRGlyZWN0b3J5KSB7Ci0gICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJl
Y3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRo
KSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRo
OwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBnZXRFeGVjdXRh
YmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJsZVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAg
U3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQ
YXRoLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkK
KyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNzTmFtZSk7CisgICAgICAgIGlmIChGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKICAgICAgICAgICAgIHJldHVybiBwcm9j
ZXNzUGF0aDsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihQS0dMSUJFWEVDRElSKSwg
cHJvY2Vzc05hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihQS0dM
SUJFWEVDRElSKSwgcHJvY2Vzc05hbWUpOwogfQogCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldl
YlByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJv
Y2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0K
aW5kZXggNzJmNTEyMzZjYjUuLjNlYzU0YmYzNDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KQEAgLTcxLDE0ICs3MSwxNCBAQCB2b2lkIENoaWxkUHJv
Y2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJgogICAgIH0KIAogICAgIFN0cmluZyBzYW5kYm94SW1wb3J0UGF0aCA9ICIvdXNy
L2xvY2FsL3NoYXJlL3NhbmRib3gvaW1wb3J0cyI7Ci0gICAgc2FuZGJveFBhcmFtZXRlcnMuYWRk
UGF0aFBhcmFtZXRlcigiSU1QT1JUX0RJUiIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5k
Ym94SW1wb3J0UGF0aCkuZGF0YSgpKTsKKyAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFy
YW1ldGVyKCJJTVBPUlRfRElSIiwgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHNhbmRib3hJbXBvcnRQYXRoKS5kYXRhKCkpOwogCiAgICAgc3dpdGNoIChzYW5kYm94UGFyYW1l
dGVycy5tb2RlKCkpIHsKICAgICBjYXNlIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6
OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGg6CiAgICAgY2FzZSBTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzOjpVc2VPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aDogewogICAgICAg
ICBTdHJpbmcgc2FuZGJveFByb2ZpbGVQYXRoID0gc2FuZGJveFBhcmFtZXRlcnMubW9kZSgpID09
IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURlZmF1bHRTYW5kYm94UHJvZmls
ZVBhdGggPyBkZWZhdWx0UHJvZmlsZVBhdGggOiBzYW5kYm94UGFyYW1ldGVycy5vdmVycmlkZVNh
bmRib3hQcm9maWxlUGF0aCgpOwogICAgICAgICBpZiAoIXNhbmRib3hQcm9maWxlUGF0aC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBhdGggPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKKyAgICAgICAgICAgIENTdHJpbmcgcHJv
ZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFBy
b2ZpbGVQYXRoKTsKICAgICAgICAgICAgIGNoYXIqIGVycm9yQnVmOwogICAgICAgICAgICAgaWYg
KHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmlsZVBhdGguZGF0YSgpLCBTQU5EQk9Y
X05BTUVEX0VYVEVSTkFMLCBzYW5kYm94UGFyYW1ldGVycy5uYW1lZFBhcmFtZXRlckFycmF5KCks
ICZlcnJvckJ1ZikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4n
dCBpbml0aWFsaXplIHNhbmRib3ggcHJvZmlsZSBbJXNdLCBlcnJvciAnJXMnXG4iLCBnZXRwcm9n
bmFtZSgpLCBwcm9maWxlUGF0aC5kYXRhKCksIGVycm9yQnVmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDU0YWU2NTgwMmQzLi4yNzZlNmUzZmM4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCkBAIC0x
MjgsNyArMTI4LDcgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0
IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYKICAgICBzYW5kYm94UGFyYW1l
dGVycy5hZGRQYXJhbWV0ZXIoIl9PU19WRVJTSU9OIiwgb3NWZXJzaW9uLnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgLy8gVXNlIHByaXZhdGUgdGVtcG9yYXJ5IGFuZCBjYWNoZSBkaXJlY3Rvcmllcy4K
LSAgICBzZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgiLCBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc2FuZGJveFBhcmFtZXRlcnMudXNlckRpcmVjdG9yeVN1ZmZpeCgpKS5kYXRhKCks
IDEpOworICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIsIEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94UGFyYW1ldGVycy51c2VyRGlyZWN0b3J5
U3VmZml4KCkpLmRhdGEoKSwgMSk7CiAgICAgY2hhciB0ZW1wb3JhcnlEaXJlY3RvcnlbUEFUSF9N
QVhdOwogICAgIGlmICghY29uZnN0cihfQ1NfREFSV0lOX1VTRVJfVEVNUF9ESVIsIHRlbXBvcmFy
eURpcmVjdG9yeSwgc2l6ZW9mKHRlbXBvcmFyeURpcmVjdG9yeSkpKSB7CiAgICAgICAgIFdURkxv
Z0Fsd2F5cygiJXM6IGNvdWxkbid0IHJldHJpZXZlIHByaXZhdGUgdGVtcG9yYXJ5IGRpcmVjdG9y
eSBwYXRoOiAlZFxuIiwgZ2V0cHJvZ25hbWUoKSwgZXJybm8pOwpAQCAtMTU0LDE4ICsxNTQsMTgg
QEAgdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYKICAgICBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJv
bVVURjgocHdkLnB3X2Rpcik7CiAgICAgcGF0aC5hcHBlbmQoIi9MaWJyYXJ5Iik7CiAKLSAgICBz
YW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfRElSIiwgZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgc2FuZGJveFBhcmFtZXRl
cnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAgICAgcGF0aC5hcHBlbmQoIi9Q
cmVmZXJlbmNlcyIpOwogCi0gICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigi
SE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOworICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhP
TUVfTElCUkFSWV9QUkVGRVJFTkNFU19ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIAogICAgIHN3aXRjaCAoc2FuZGJveFBhcmFtZXRlcnMu
bW9kZSgpKSB7CiAgICAgY2FzZSBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpVc2VE
ZWZhdWx0U2FuZGJveFByb2ZpbGVQYXRoOgogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9u
UGFyYW1ldGVyczo6VXNlT3ZlcnJpZGVTYW5kYm94UHJvZmlsZVBhdGg6IHsKICAgICAgICAgU3Ry
aW5nIHNhbmRib3hQcm9maWxlUGF0aCA9IHNhbmRib3hQYXJhbWV0ZXJzLm1vZGUoKSA9PSBTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpVc2VEZWZhdWx0U2FuZGJveFByb2ZpbGVQYXRo
ID8gZGVmYXVsdFByb2ZpbGVQYXRoIDogc2FuZGJveFBhcmFtZXRlcnMub3ZlcnJpZGVTYW5kYm94
UHJvZmlsZVBhdGgoKTsKICAgICAgICAgaWYgKCFzYW5kYm94UHJvZmlsZVBhdGguaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICBDU3RyaW5nIHByb2ZpbGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHNhbmRib3hQcm9maWxlUGF0aCk7CisgICAgICAgICAgICBDU3RyaW5nIHByb2ZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQcm9maWxl
UGF0aCk7CiAgICAgICAgICAgICBjaGFyKiBlcnJvckJ1ZjsKICAgICAgICAgICAgIGlmIChzYW5k
Ym94X2luaXRfd2l0aF9wYXJhbWV0ZXJzKHByb2ZpbGVQYXRoLmRhdGEoKSwgU0FOREJPWF9OQU1F
RF9FWFRFUk5BTCwgc2FuZGJveFBhcmFtZXRlcnMubmFtZWRQYXJhbWV0ZXJBcnJheSgpLCAmZXJy
b3JCdWYpKSB7CiAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgaW5p
dGlhbGl6ZSBzYW5kYm94IHByb2ZpbGUgWyVzXSwgZXJyb3IgJyVzJ1xuIiwgZ2V0cHJvZ25hbWUo
KSwgcHJvZmlsZVBhdGguZGF0YSgpLCBlcnJvckJ1Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCmluZGV4IDFhOGI5ZmRjZmIwLi5kOTJjYmY5
N2M5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNp
b25NYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25N
YWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCBTdHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0
ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogU3RyaW5n
IHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYm90aCByZXNvbHZlU3ltbGlua3NJblBhdGgoKSBhbmQg
LXN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGg/Ci0gICAgQ1N0cmluZyBmaWxlU3lzdGVtUGF0aCA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihbKE5TU3RyaW5nICopcGF0aCBzdHJpbmdCeVN0YW5k
YXJkaXppbmdQYXRoXSk7CisgICAgQ1N0cmluZyBmaWxlU3lzdGVtUGF0aCA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihbKE5TU3RyaW5nICopcGF0aCBzdHJpbmdCeVN0YW5k
YXJkaXppbmdQYXRoXSk7CiAgICAgaWYgKGZpbGVTeXN0ZW1QYXRoLmlzTnVsbCgpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBhIHZhbGlkIGZpbGUgc3lzdGVtIHJlcHJl
c2VudGF0aW9uIGZvciB0aGUgc3RyaW5nICclcycgb2YgbGVuZ3RoICVsdSIsIGZpbGVTeXN0ZW1Q
YXRoLmRhdGEoKSwgZmlsZVN5c3RlbVBhdGgubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4geyB9
OwpAQCAtMzM1LDcgKzMzNSw3IEBAIFN0cmluZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBUeXBlCiAgICAgcGF0aC5h
cHBlbmQocHJlZml4LnV0ZjgoKS5kYXRhKCksIHByZWZpeC5sZW5ndGgoKSk7CiAgICAgcGF0aC5h
cHBlbmQoJ1wwJyk7CiAgICAgCi0gICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGguZGF0
YSgpKS5kYXRhKCksIHR5cGUpOworICAgIGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoLmRhdGEoKSkuZGF0YSgpLCB0eXBlKTsKIAogICAgIGlmICghaGFuZGxlLm1fc2Fu
ZGJveEV4dGVuc2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBjcmVhdGUg
YSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgdGVtcG9yYXJ5IGZpbGUgJyVzJyIsIHBhdGguZGF0YSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGhXUEUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRhYmxl
UGF0aFdQRS5jcHAKaW5kZXggMjJkNDVjYmJiZWYuLjVlZDU2ZDM3MDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcApA
QCAtMzksNyArMzksNyBAQCBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKIHsKICAg
ICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7CiAg
ICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGRpcmVjdG9y
eU5hbWUoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5k
YXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5k
YXRhKCkpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKQEAgLTQ3LDE5ICs0NywxOSBAQCBz
dGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lKQog
ewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleGVjRGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJ
VF9FWEVDX1BBVEgiKTsKICAgICBpZiAoZXhlY0RpcmVjdG9yeSkgewotICAgICAgICBTdHJpbmcg
cHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOwotICAgICAgICBp
ZiAoZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCisgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7
CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKICAgICAg
ICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nIGV4
ZWN1dGFibGVQYXRoID0gZ2V0RXhlY3V0YWJsZVBhdGgoKTsKICAgICBpZiAoIWV4ZWN1dGFibGVQ
YXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0aCwgcHJvY2Vzc05hbWUpOwotICAgICAgICBpZiAo
ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCisgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0aCwgcHJvY2Vz
c05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkp
CiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7CiAgICAgfQogCi0gICAgcmV0dXJuIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KExJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKExJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CiB9CiAKIFN0cmluZyBleGVjdXRh
YmxlUGF0aE9mV2ViUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwCmluZGV4IGVjZDUxNzA3ODMwLi43YjQ2NTY0MzU3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAKQEAgLTEz
Myw3ICsxMzMsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjplbnN1cmVQYXRoRXhpc3RzKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKHBhdGgpKQogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBtYWtl
IGFsbCBkaXJlY3RvcmllcyBmb3IgcGF0aCAnJXMnIiwgcGF0aC51dGY4KCkuZGF0YSgpKTsKIH0K
IApAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmFjY2Vzc1RvVGVtcG9y
YXJ5RmlsZUNvbXBsZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyBXZSd2ZSBlaXRoZXIg
aGFyZCBsaW5rZWQgdGhlIHRlbXBvcmFyeSBibG9iIGZpbGUgdG8gdGhlIGRhdGFiYXNlIGRpcmVj
dG9yeSwgY29waWVkIGl0IHRoZXJlLAogICAgIC8vIG9yIHRoZSB0cmFuc2FjdGlvbiBpcyBiZWlu
ZyBhYm9ydGVkLgogICAgIC8vIEluIGFueSBvZiB0aG9zZSBjYXNlcywgd2UgY2FuIGRlbGV0ZSB0
aGUgdGVtcG9yYXJ5IGJsb2IgZmlsZSBub3cuCi0gICAgZGVsZXRlRmlsZShwYXRoKTsKKyAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOwogCiAgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0g
bV9ibG9iVGVtcG9yYXJ5RmlsZVNhbmRib3hFeHRlbnNpb25zLnRha2UocGF0aCkpCiAgICAgICAg
IGV4dGVuc2lvbi0+cmV2b2tlKCk7CkBAIC0zMDAsOCArMzAwLDggQEAgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gU3RvcmFnZVByb2Nlc3M6OmluZGV4ZWREYXRhYmFzZU9yaWdp
bnMoY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+IHNlY3VyaXR5T3JpZ2luczsKLSAgICBmb3IgKGF1dG8mIG9yaWdpblBh
dGggOiBsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKLSAgICAgICAgU3RyaW5nIGRhdGFiYXNl
SWRlbnRpZmllciA9IHBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsKKyAgICBmb3IgKGF1dG8m
IG9yaWdpblBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIqIikpIHsKKyAg
ICAgICAgU3RyaW5nIGRhdGFiYXNlSWRlbnRpZmllciA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShvcmlnaW5QYXRoKTsKIAogICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZp
ZXIpKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW5zLmFwcGVuZChXVEZNb3ZlKCpzZWN1cml0
eU9yaWdpbikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElD
b250ZW50UnVsZUxpc3RTdG9yZS5jcHAKaW5kZXggN2Y0ZjgwNDJhNzcuLmJkNjhiNWUwNWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVs
ZUxpc3RTdG9yZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgQ29udGVudFJ1bGVMaXN0U3RvcmU6OkNv
bnRlbnRSdWxlTGlzdFN0b3JlKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgsIGJvb2wgbGUK
ICAgICAsIG1fcmVtb3ZlUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkNvbnRlbnRSdWxlTGlzdFN0
b3JlIFJlbW92ZSBRdWV1ZSIpKQogICAgICwgbV9sZWdhY3lGaWxlbmFtZShsZWdhY3lGaWxlbmFt
ZSkKIHsKLSAgICBXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmVQYXRoKTsKKyAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmVQYXRoKTsKIH0KIAog
Q29udGVudFJ1bGVMaXN0U3RvcmU6On5Db250ZW50UnVsZUxpc3RTdG9yZSgpCkBAIC0xMDgsNyAr
MTA4LDcgQEAgc3RhdGljIGNvbnN0IFN0cmluZyBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIoYm9vbCBs
ZWdhY3lGaWxlbmFtZSkKIAogc3RhdGljIFN0cmluZyBjb25zdHJ1Y3RlZFBhdGgoY29uc3QgU3Ry
aW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wgbGVnYWN5RmlsZW5hbWUp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlLCBt
YWtlU3RyaW5nKGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6
OmVuY29kZUZvckZpbGVOYW1lKGlkZW50aWZpZXIpKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlLCBtYWtlU3RyaW5nKGNvbnN0
cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmVu
Y29kZUZvckZpbGVOYW1lKGlkZW50aWZpZXIpKSk7CiB9CiAKIC8vIFRoZSBzaXplIGFuZCBvZmZz
ZXQgb2YgdGhlIGRlbnNlbHkgcGFja2VkIGJ5dGVzIGluIHRoZSBmaWxlLCBub3Qgc2l6ZW9mIGFu
ZCBvZmZzZXRvZiwgd2hpY2ggd291bGQKQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgYm9vbCBk
ZWNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0
YURhdGEsIGNvbgogCiBzdGF0aWMgYm9vbCBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0
IFN0cmluZyYgcGF0aCwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhLCBEYXRhJiBm
aWxlRGF0YSkKIHsKLSAgICBmaWxlRGF0YSA9IG1hcEZpbGUoV2ViQ29yZTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgZmlsZURhdGEgPSBtYXBGaWxlKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwog
ICAgIGlmIChmaWxlRGF0YS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0x
OTQsMTEgKzE5NCwxMSBAQCBzdGF0aWMgYm9vbCBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNv
bnN0IFN0cmluZyYgcGF0aCwgQ29udGVudFJ1bGVMaXN0TWV0YURhdAogICAgIHJldHVybiB0cnVl
OwogfQogCi1zdGF0aWMgYm9vbCB3cml0ZURhdGFUb0ZpbGUoY29uc3QgRGF0YSYgZmlsZURhdGEs
IFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKK3N0YXRpYyBib29sIHdyaXRlRGF0YVRv
RmlsZShjb25zdCBEYXRhJiBmaWxlRGF0YSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGZkKQogewogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgZmlsZURhdGEu
YXBwbHkoW2ZkLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsK
LSAgICAgICAgaWYgKFdlYkNvcmU6OndyaXRlVG9GaWxlKGZkLCAoY29uc3QgY2hhciopZGF0YSwg
c2l6ZSkgPT0gLTEpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGZkLCAoY29uc3QgY2hhciopZGF0YSwgc2l6ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAt
MjE0LDcgKzIxNCw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3Ry
aW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAKICAgICBjbGFzcyBDb21w
aWxhdGlvbkNsaWVudCBmaW5hbCA6IHB1YmxpYyBDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25D
bGllbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29tcGlsYXRpb25DbGllbnQoV2ViQ29yZTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBt
ZXRhRGF0YSkKKyAgICAgICAgQ29tcGlsYXRpb25DbGllbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBt
ZXRhRGF0YSkKICAgICAgICAgICAgIDogbV9maWxlSGFuZGxlKGZpbGVIYW5kbGUpCiAgICAgICAg
ICAgICAsIG1fbWV0YURhdGEobWV0YURhdGEpCiAgICAgICAgIHsKQEAgLTIzMiwxNSArMjMyLDE1
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwg
Y29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0
aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fYWN0aW9u
c1dyaXR0ZW4pOwogICAgICAgICAgICAgQVNTRVJUKCFtX3NvdXJjZVdyaXR0ZW4pOwotICAgICAg
ICAgICAgd3JpdGVUb0ZpbGUoc291cmNlSlNPTi5pczhCaXQoKSk7CisgICAgICAgICAgICBGaWxl
U3lzdGVtOjp3cml0ZVRvRmlsZShzb3VyY2VKU09OLmlzOEJpdCgpKTsKICAgICAgICAgICAgIG1f
c291cmNlV3JpdHRlbiArPSBzaXplb2YoYm9vbCk7CiAgICAgICAgICAgICBpZiAoc291cmNlSlNP
Ti5pczhCaXQoKSkgewogICAgICAgICAgICAgICAgIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoID0g
c291cmNlSlNPTi5sZW5ndGgoKSAqIHNpemVvZihMQ2hhcik7Ci0gICAgICAgICAgICAgICAgd3Jp
dGVUb0ZpbGUoRGF0YShzb3VyY2VKU09OLmNoYXJhY3RlcnM4KCksIHNlcmlhbGl6ZWRMZW5ndGgp
KTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShEYXRhKHNvdXJjZUpT
T04uY2hhcmFjdGVyczgoKSwgc2VyaWFsaXplZExlbmd0aCkpOwogICAgICAgICAgICAgICAgIG1f
c291cmNlV3JpdHRlbiArPSBzZXJpYWxpemVkTGVuZ3RoOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBzaXplX3Qgc2VyaWFsaXplZExlbmd0aCA9IHNvdXJjZUpTT04ubGVu
Z3RoKCkgKiBzaXplb2YoVUNoYXIpOwotICAgICAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlSlNPTi5jaGFyYWN0ZXJzMTYo
KSksIHNlcmlhbGl6ZWRMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvdXJjZUpTT04u
Y2hhcmFjdGVyczE2KCkpLCBzZXJpYWxpemVkTGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgbV9z
b3VyY2VXcml0dGVuICs9IHNlcmlhbGl6ZWRMZW5ndGg7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTI1MCwyMCArMjUwLDIwIEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRU
b0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAg
ICAgICBBU1NFUlQoIW1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4pOwogICAg
ICAgICAgICAgQVNTRVJUKCFtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOwogICAg
ICAgICAgICAgbV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVdyaXR0ZW4gKz0gYnl0
ZWNvZGUuc2l6ZSgpOwotICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShieXRlY29kZS5kYXRh
KCksIGJ5dGVjb2RlLnNpemUoKSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoRGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhDb25kaXRpb25zQnl0ZWNvZGUo
VmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAg
ICAgICBtX2ZpbHRlcnNXaXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNp
emUoKTsKLSAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRl
Y29kZS5zaXplKCkpKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKERhdGEo
Ynl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgdm9pZCB3cml0ZVRvcFVSTEZpbHRlcnNCeXRlY29kZShWZWN0b3I8REZBQnl0ZWNv
ZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIG1fY29uZGl0aW9u
RmlsdGVyc0J5dGVjb2RlV3JpdHRlbiArPSBieXRlY29kZS5zaXplKCk7Ci0gICAgICAgICAgICB3
cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CisgICAg
ICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0
ZWNvZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHdyaXRlQWN0aW9ucyhW
ZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+JiYgYWN0aW9ucywgYm9vbCBjb25kaXRpb25zQXBw
bHlPbmx5VG9Eb21haW4pIGZpbmFsCkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIHN0ZDo6ZXJy
b3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFs
RmlsZVBhdGgKICAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25zV3JpdHRlbik7CiAgICAgICAg
ICAgICBtX2FjdGlvbnNXcml0dGVuICs9IGFjdGlvbnMuc2l6ZSgpOwogICAgICAgICAgICAgbV9j
b25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4gPSBjb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW47
Ci0gICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGFjdGlvbnMuZGF0YSgpLCBhY3Rpb25zLnNp
emUoKSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRGF0YShhY3Rpb25z
LmRhdGEoKSwgYWN0aW9ucy5zaXplKCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
dm9pZCBmaW5hbGl6ZSgpIGZpbmFsCkBAIC0yODcsMjkgKzI4NywyOSBAQCBzdGF0aWMgc3RkOjpl
cnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmlu
YWxGaWxlUGF0aAogICAgICAgICAgICAgbV9tZXRhRGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9E
b21haW4gPSBtX2NvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbjsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgRGF0YSBoZWFkZXIgPSBlbmNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShtX21l
dGFEYXRhKTsKLSAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgV2ViQ29yZTo6c2Vla0Zp
bGUobV9maWxlSGFuZGxlLCAwbGwsIFdlYkNvcmU6OkZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJl
Z2lubmluZykgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUobV9m
aWxlSGFuZGxlKTsKKyAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c2Vla0ZpbGUobV9maWxlSGFuZGxlLCAwbGwsIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OkZpbGVTZWVrT3JpZ2luOjpGaWxlU3lzdGVtOjpTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEpIHsK
KyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxlSGFu
ZGxlKTsKICAgICAgICAgICAgICAgICBtX2ZpbGVFcnJvciA9IHRydWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB3cml0ZVRvRmlsZShoZWFkZXIpOworICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoaGVhZGVyKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9v
bCBoYWRFcnJvcldoaWxlV3JpdGluZ1RvRmlsZSgpIHsgcmV0dXJuIG1fZmlsZUVycm9yOyB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHdyaXRlVG9GaWxlKGJvb2wgdmFsdWUpCisgICAg
ICAgIHZvaWQgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoYm9vbCB2YWx1ZSkKICAgICAgICAgewot
ICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZ2YWx1ZSks
IHNpemVvZih2YWx1ZSkpKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIHdyaXRlVG9GaWxlKGNv
bnN0IERhdGEmIGRhdGEpCisgICAgICAgIHZvaWQgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoY29u
c3QgRGF0YSYgZGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAm
JiAhd3JpdGVEYXRhVG9GaWxlKGRhdGEsIG1fZmlsZUhhbmRsZSkpIHsKLSAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKKyAgICAgICAgICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKICAgICAgICAgICAgICAg
ICBtX2ZpbGVFcnJvciA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CisgICAg
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7
CiAgICAgICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtX21ldGFEYXRhOwogICAgICAgICBz
aXplX3QgbV9maWx0ZXJzV2l0aG91dENvbmRpdGlvbnNCeXRlY29kZVdyaXR0ZW4geyAwIH07CiAg
ICAgICAgIHNpemVfdCBtX2ZpbHRlcnNXaXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuIHsgMCB9
OwpAQCAtMzIwLDI3ICszMjAsMjcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRv
RmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICAgICAg
Ym9vbCBtX2ZpbGVFcnJvciB7IGZhbHNlIH07CiAgICAgfTsKIAotICAgIGF1dG8gdGVtcG9yYXJ5
RmlsZUhhbmRsZSA9IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Ci0gICAgU3Ry
aW5nIHRlbXBvcmFyeUZpbGVQYXRoID0gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoIkNvbnRl
bnRSdWxlTGlzdCIsIHRlbXBvcmFyeUZpbGVIYW5kbGUpOwotICAgIGlmICh0ZW1wb3JhcnlGaWxl
SGFuZGxlID09IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byB0
ZW1wb3JhcnlGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsKKyAgICBTdHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiQ29udGVudFJ1bGVMaXN0IiwgdGVtcG9yYXJ5Rmls
ZUhhbmRsZSk7CisgICAgaWYgKHRlbXBvcmFyeUZpbGVIYW5kbGUgPT0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRS
dWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKICAgICAKICAgICBjaGFyIGludmFs
aWRIZWFkZXJbQ29udGVudFJ1bGVMaXN0RmlsZUhlYWRlclNpemVdOwogICAgIG1lbXNldChpbnZh
bGlkSGVhZGVyLCAweEZGLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIC8vIFRoaXMgaGVh
ZGVyIHdpbGwgYmUgcmV3cml0dGVuIGluIENvbXBpbGF0aW9uQ2xpZW50OjpmaW5hbGl6ZS4KLSAg
ICBpZiAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSwgaW52YWxpZEhl
YWRlciwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKSA9PSAtMSkgewotICAgICAgICBXZWJDb3JlOjpj
bG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUsIGludmFsaWRIZWFkZXIsIHNpemVv
ZihpbnZhbGlkSGVhZGVyKSkgPT0gLTEpIHsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOwogICAgICAgICByZXR1cm4gQ29udGVudFJ1
bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwogICAgIH0KIAogICAgIENvbXBpbGF0
aW9uQ2xpZW50IGNvbXBpbGF0aW9uQ2xpZW50KHRlbXBvcmFyeUZpbGVIYW5kbGUsIG1ldGFEYXRh
KTsKICAgICAKICAgICBpZiAoYXV0byBjb21waWxlckVycm9yID0gY29tcGlsZVJ1bGVMaXN0KGNv
bXBpbGF0aW9uQ2xpZW50LCBXVEZNb3ZlKGpzb24pKSkgewotICAgICAgICBXZWJDb3JlOjpjbG9z
ZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIGNvbXBpbGVy
RXJyb3I7CiAgICAgfQogICAgIGlmIChjb21waWxhdGlvbkNsaWVudC5oYWRFcnJvcldoaWxlV3Jp
dGluZ1RvRmlsZSgpKSB7Ci0gICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxl
SGFuZGxlKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFy
eUZpbGVIYW5kbGUpOwogICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVycm9y
OjpDb21waWxlRmFpbGVkOwogICAgIH0KICAgICAKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGF0aWMg
c3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmlu
ZyYgZmluYWxGaWxlUGF0aAogICAgIGlmIChtYXBwZWREYXRhLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwogCi0gICAg
aWYgKCFXZWJDb3JlOjptb3ZlRmlsZSh0ZW1wb3JhcnlGaWxlUGF0aCwgZmluYWxGaWxlUGF0aCkp
CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptb3ZlRmlsZSh0ZW1wb3JhcnlGaWxlUGF0
aCwgZmluYWxGaWxlUGF0aCkpCiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6
RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAKICAgICByZXR1cm4geyB9OwpAQCAtNDEyLDEyICs0MTIs
MTIgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Z2V0QXZhaWxhYmxlQ29udGVudFJ1bGVM
aXN0SWRlbnRpZmllcnMoRnVuY3Rpb248dm9pZCgKIHsKICAgICBtX3JlYWRRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBh
dGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
IAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBmdWxsUGF0aHMgPSBXZWJDb3JlOjpsaXN0RGlyZWN0
b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVyKGxlZ2FjeUZpbGVuYW1lKSk7Cisg
ICAgICAgIFZlY3RvcjxTdHJpbmc+IGZ1bGxQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxp
c3REaXJlY3Rvcnkoc3RvcmVQYXRoLCBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIobGVnYWN5RmlsZW5h
bWUpKTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gaWRlbnRpZmllcnM7CiAgICAgICAgIGlkZW50
aWZpZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZnVsbFBhdGhzLnNpemUoKSk7CiAgICAgICAg
IGNvbnN0IGF1dG8gcHJlZml4TGVuZ3RoID0gY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZp
bGVuYW1lKS5sZW5ndGgoKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogZnVsbFBh
dGhzKQotICAgICAgICAgICAgaWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OmRl
Y29kZUZyb21GaWxlbmFtZShwYXRoLnN1YnN0cmluZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAx
ICsgcHJlZml4TGVuZ3RoKSkpOworICAgICAgICAgICAgaWRlbnRpZmllcnMudW5jaGVja2VkQXBw
ZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShwYXRoLnN1YnN0cmlu
ZyhwYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxICsgcHJlZml4TGVuZ3RoKSkpOwogCiAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGlkZW50aWZpZXJzID0gV1RGTW92ZShpZGVudGlmaWVycyldKCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGlkZW50aWZpZXJzKSk7CkBAIC00NTQsNyAr
NDU0LDcgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0
KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAogICAgIG1fcmVtb3ZlUXVldWUtPmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIgPSBpZGVudGlm
aWVyLmlzb2xhdGVkQ29weSgpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHko
KSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBhdXRvIHBh
dGggPSBjb25zdHJ1Y3RlZFBhdGgoc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBsZWdhY3lGaWxlbmFt
ZSk7CiAKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpkZWxldGVGaWxlKHBhdGgpKSB7CisgICAgICAg
IGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKSkgewogICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEVycm9yOjpSZW1vdmVGYWls
ZWQpOwogICAgICAgICAgICAgfSk7CkBAIC00NjksMTkgKzQ2OSwxOSBAQCB2b2lkIENvbnRlbnRS
dWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsCiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnN5bmNocm9ub3VzUmVtb3Zl
QWxsQ29udGVudFJ1bGVMaXN0cygpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogV2Vi
Q29yZTo6bGlzdERpcmVjdG9yeShtX3N0b3JlUGF0aCwgIioiKSkKLSAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlRmlsZShwYXRoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fc3RvcmVQYXRoLCAiKiIpKQorICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOwogfQogCiB2b2lkIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjppbnZhbGlkYXRlQ29udGVudFJ1bGVMaXN0VmVyc2lvbihjb25zdCBXVEY6OlN0
cmluZyYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGZpbGUgPSBXZWJDb3JlOjpvcGVuRmlsZShj
b25zdHJ1Y3RlZFBhdGgobV9zdG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVnYWN5RmlsZW5hbWUp
LCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOwotICAgIGlmIChmaWxlID09IFdlYkNvcmU6OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBmaWxlID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6b3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBtX2xl
Z2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBp
ZiAoZmlsZSA9PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQogICAgICAgICByZXR1cm47CiAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEgaW52YWxpZEhl
YWRlciA9IHswLCAwLCAwLCAwLCAwLCAwfTsKLSAgICBhdXRvIGJ5dGVzV3JpdHRlbiA9IFdlYkNv
cmU6OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZpbnZh
bGlkSGVhZGVyKSwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKKyAgICBhdXRvIGJ5dGVzV3JpdHRl
biA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KCZpbnZhbGlkSGVhZGVyKSwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsK
ICAgICBBU1NFUlRfVU5VU0VEKGJ5dGVzV3JpdHRlbiwgYnl0ZXNXcml0dGVuID09IHNpemVvZihp
bnZhbGlkSGVhZGVyKSk7Ci0gICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKIH0KIAogdm9pZCBDb250ZW50UnVsZUxp
c3RTdG9yZTo6Z2V0Q29udGVudFJ1bGVMaXN0U291cmNlKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVu
dGlmaWVyLCBGdW5jdGlvbjx2b2lkKFdURjo6U3RyaW5nKT4gY29tcGxldGlvbkhhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggNzBjYTM2YjNlZmIuLjQ2NmMwY2Y1ZDU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIC8vIFdoeSBpcyBv
bmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVzcGFjZWQgdG8gYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9u
PwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7Cisg
ICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJX
ZWJLaXRDYWNoZSIpKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAi
Q2FjaGVTdG9yYWdlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihn
X2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKQEAgLTgwLDEyICs4
MCwxMiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2Rpcigp
KSwgZGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1l
KTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGly
ZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwogfQog
CiBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMjIwOGVhZWYwNTAuLmMz
Nzc1ODI1NGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBib29sIEljb25EYXRhYmFzZTo6b3Bl
bihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICBt
X2RhdGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpOwogCiAgICAgLy8g
Rm9ybXVsYXRlIHRoZSBmdWxsIHBhdGggZm9yIHRoZSBkYXRhYmFzZSBmaWxlCi0gICAgbV9jb21w
bGV0ZURhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGly
ZWN0b3J5LCBmaWxlbmFtZSk7CisgICAgbV9jb21wbGV0ZURhdGFiYXNlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFt
ZSk7CiAKICAgICAvLyBMb2NrIGhlcmUgYXMgd2VsbCBhcyBmaXJzdCB0aGluZyBpbiB0aGUgdGhy
ZWFkIHNvIHRoZSB0aHJlYWQgZG9lc24ndCBhY3R1YWxseSBjb21tZW5jZSB1bnRpbCB0aGUgY3Jl
YXRlVGhyZWFkKCkgY2FsbAogICAgIC8vIGNvbXBsZXRlcyBhbmQgbV9zeW5jVGhyZWFkUnVubmlu
ZyBpcyBwcm9wZXJseSBzZXQKQEAgLTg2OSwxMyArODY5LDEzIEBAIHZvaWQgSWNvbkRhdGFiYXNl
OjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICNlbmRpZgogCiAgICAgLy8gTmVlZCB0byBjcmVh
dGUgdGhlIGRhdGFiYXNlIHBhdGggaWYgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0Ci0gICAgbWFr
ZUFsbERpcmVjdG9yaWVzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOworICAgIEZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKIAogICAgIC8vIEV4aXN0ZW5j
ZSBvZiBhIGpvdXJuYWwgZmlsZSBpcyBldmlkZW5jZSBvZiBhIHByZXZpb3VzIGNyYXNoL2ZvcmNl
IHF1aXQgYW5kIGF1dG9tYXRpY2FsbHkgcXVhbGlmaWVzCiAgICAgLy8gdXMgdG8gZG8gYW4gaW50
ZWdyaXR5IGNoZWNrCiAgICAgU3RyaW5nIGpvdXJuYWxGaWxlbmFtZSA9IG1fY29tcGxldGVEYXRh
YmFzZVBhdGggKyAiLWpvdXJuYWwiOwogICAgIGlmICghY2hlY2tJbnRlZ3JpdHlPbk9wZW4pCi0g
ICAgICAgIGNoZWNrSW50ZWdyaXR5T25PcGVuID0gZmlsZUV4aXN0cyhqb3VybmFsRmlsZW5hbWUp
OworICAgICAgICBjaGVja0ludGVncml0eU9uT3BlbiA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
am91cm5hbEZpbGVuYW1lKTsKIAogICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9z
eW5jTG9jayk7CkBAIC0xMDA4LDggKzEwMDgsOCBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9y
bU9wZW5Jbml0aWFsaXphdGlvbigpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgTG9j
a0hvbGRlciBsb2NrZXIobV9zeW5jTG9jayk7CiAgICAgICAgICAgICAgICAgLy8gU2hvdWxkJ3Zl
IGJlZW4gY29uc3VtZWQgYnkgU1FMaXRlLCBkZWxldGUganVzdCB0byBtYWtlIHN1cmUgd2UgZG9u
J3Qgc2VlIGl0IGFnYWluIGluIHRoZSBmdXR1cmU7Ci0gICAgICAgICAgICAgICAgZGVsZXRlRmls
ZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIik7Ci0gICAgICAgICAgICAgICAg
ZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoKTsKKyAgICAgICAgICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fY29tcGxldGVEYXRhYmFzZVBhdGggKyAiLWpvdXJuYWwiKTsK
KyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fY29tcGxldGVEYXRhYmFz
ZVBhdGgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBSZW9wZW4gdGhlIHdyaXRl
IGRhdGFiYXNlLCBjcmVhdGluZyBpdCBmcm9tIHNjcmF0Y2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmlu
ZGV4IDZlMjg0ZjgyZGNkLi4zNzI0NDNlMmQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC0y
NjksNyArMjY5LDcgQEAgdm9pZCB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKFdlYktpdEZhdmlj
b25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGEKICAgICBwcml2LT5pY29uRGF0
YWJhc2UtPnNldEVuYWJsZWQodHJ1ZSk7CiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKFdlYlByZWZlcmVuY2VzOjphbnlQYWdlc0FyZVVzaW5nUHJpdmF0
ZUJyb3dzaW5nKCkpOwogCi0gICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oV2ViQ29y
ZTo6ZGlyZWN0b3J5TmFtZShwYXRoKSwgV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpKSkg
eworICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmRpcmVjdG9yeU5hbWUocGF0aCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShwYXRoKSkpIHsKICAgICAgICAgcHJpdi0+aWNvbkRhdGFiYXNlID0gbnVsbHB0cjsKICAgICAg
ICAgSWNvbkRhdGFiYXNlOjphbGxvd0RhdGFiYXNlQ2xlYW51cCgpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwCmluZGV4IGY2MDEyYzg3M2I0Li43ODgwNDk0YTM1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwCkBAIC0zNjEsNyArMzYxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0
KiB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3NlbGVjdGVkX2ZpbGVzKFdlYktpdEZp
bGVDaG8KICAgICAgICAgQVBJOjpTdHJpbmcqIHdlYkZpbGVOYW1lID0gc3RhdGljX2Nhc3Q8QVBJ
OjpTdHJpbmcqPihzZWxlY3RlZEZpbGVOYW1lcy0+YXQoaSkpOwogICAgICAgICBpZiAod2ViRmls
ZU5hbWUtPnN0cmluZ1ZpZXcoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJGaWxl
TmFtZS0+c3RyaW5nKCkpOworICAgICAgICBDU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYkZpbGVOYW1lLT5zdHJpbmcoKSk7CiAgICAgICAg
IGdfcHRyX2FycmF5X2FkZChyZXF1ZXN0LT5wcml2LT5zZWxlY3RlZEZpbGVzLmdldCgpLCBnX3N0
cmR1cChmaWxlbmFtZS5kYXRhKCkpKTsKICAgICB9CiAgICAgZ19wdHJfYXJyYXlfYWRkKHJlcXVl
c3QtPnByaXYtPnNlbGVjdGVkRmlsZXMuZ2V0KCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA0MjYwZWFi
NzgyNC4uZmQxNzgyZjhiZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zMjEsMjEgKzMyMSwyMSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3Rl
ZEJ1bmRsZURpcmVjdG9yeSgpLCBJTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUsIG51bGxwdHIpKTsK
IAogICAgIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAg
Y29uZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViQ29yZTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOworICAgIGNvbmZp
Z3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKICAg
ICBjb25maWd1cmF0aW9uLnNldE1heGltdW1Qcm9jZXNzQ291bnQoMSk7CiAgICAgY29uZmlndXJh
dGlvbi5zZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwogCiAg
ICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmpl
Y3QpOwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJp
djsKICAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
IHsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29y
ZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3Rv
cnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9k
aXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0
d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlv
bl9jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAg
ICAgICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0
aWNzX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAg
IGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0
b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0
ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgICAg
ICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7
CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291
cmNlX2xvYWRfc3RhdGlzdGljc19kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdl
dCgpKSkpOwogICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051
bGwoKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkuZGF0YSgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwogCiAgICAg
cHJpdi0+cHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24p
OwogCkBAIC05MTAsNyArOTEwLDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmlj
b25fZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBXZWJL
aXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CiAgICAgZW5zdXJlRmF2
aWNvbkRhdGFiYXNlKGNvbnRleHQpOwogCi0gICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIFN0cmlu
ZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAvLyBVc2UgZGVmYXVsdCBpZiBudWxscHRyIGlz
IHBhc3NlZCBhcyBwYXJhbWV0ZXIuCiAgICAgaWYgKGRpcmVjdG9yeVBhdGguaXNFbXB0eSgpKSB7
CiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtOTE5LDcgKzkxOSw3IEBAIHZvaWQgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnREaXJlY3RvcnkgPSAid3BlIjsKICNlbmRp
ZgogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksIHBvcnREaXJlY3RvcnksICJpY29uZGF0YWJh
c2UiLCBudWxscHRyKSk7Ci0gICAgICAgIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAg
ICAgICAgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogICAgIH0KICAg
ICBwcml2LT5mYXZpY29uRGF0YWJhc2VEaXJlY3RvcnkgPSBkaXJlY3RvcnlQYXRoLnV0ZjgoKTsK
IApAQCAtOTI4LDcgKzkyOCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29u
X2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgICAgICJX
ZWJwYWdlSWNvbnMuZGIiLCBudWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRoZSBwYXRoIHdp
bGwgY2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgotICAgIHdlYmtpdEZhdmlj
b25EYXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBXZWJDb3JlOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkp
KTsKKyAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5n
ZXQoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CiAKICAgICBpZiAod2Via2l0X3dlYl9j
b250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0KSkKICAgICAgICAgd2Via2l0RmF2aWNvbkRhdGFi
YXNlU2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCks
IHRydWUpOwpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGUKICAg
ICBnX3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRpb25hbFBs
dWdpbnNEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihkaXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRp
b25hbFBsdWdpbnNEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsKICNlbmRpZgogfQogCkBAIC0xMzU4LDcg
KzEzNTgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3Rv
cnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGRp
cmVjdG9yeSk7CiAKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlv
bigpLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3Rvcnkp
LCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNz
UG9vbC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVT
dWJkaXJlY3RvcnkpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCBj
ZTcyOTRkZmY1OS4uZmIxOTk3YTY1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcApAQCAt
MzkwLDE1ICszOTAsMTUgQEAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlJiB3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJHZXREYXRhU3RvcmUoV2ViS2l0V2Vic2l0ZURhdGFNYW4KICAgICBpZiAoIXByaXYt
PndlYnNpdGVEYXRhU3RvcmUpIHsKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uOwogICAgICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9ICFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFn
ZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5
LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSAh
cHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0
b3J5KTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtD
YWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KTsKICAgICAgICAgY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
ID0gIXByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkgPSAhcHJpdi0+d2ViU1FMRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVj
dG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRX
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpOwog
ICAgICAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSAh
cHJpdi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KCkgOiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPnJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgp
IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAg
Y29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogICAgICAgICBwcml2
LT53ZWJzaXRlRGF0YVN0b3JlID0gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpjcmVhdGVMZWdhY3ko
V1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiAgICAgfQpAQCAtNTYxLDcgKzU2MSw3IEBAIGNvbnN0
IGdjaGFyKiB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0
b3J5KFdlYktpdFdlYnNpdGVECiAKICAgICBpZiAoIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSkg
ewogICAgICAgICAvLyBUaGUgZGVmYXVsdCBkaXJlY3RvcnkgYWxyZWFkeSBoYXMgdGhlIHN1YmRp
cmVjdG9yeS4KLSAgICAgICAgcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVw
KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0
d29ya0NhY2hlRGlyZWN0b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgcHJpdi0+ZGlz
a0NhY2hlRGlyZWN0b3J5LnJlc2V0KGdfc3RyZHVwKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVj
dG9yeU5hbWUoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0
b3J5KCkpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHByaXYtPmRpc2tDYWNo
ZURpcmVjdG9yeS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggYmYxOWIwYWFj
M2UuLmE1ZTg1OGMzMDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNjc5LDcgKzY3OSw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFn
ZVByb3h5JiBwYWdlKQogCiBzdGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1F
VHlwZXMsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQogewot
ICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCisgICAgaWYgKCFXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKGFsbG93ZWRNSU1FVHlwZXMuaXNFbXB0eSgpICYmIGFsbG93ZWRGaWxlRXh0
ZW5zaW9ucy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCBmZWVmMGNlZTQwMi4uNGExZTNiMjQ4YjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQpAQCAtMzc2LDcgKzM3Niw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVn
YWN5UGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIC8vIEN1
cnJlbnRseSwgdGhlIHRvcCBsZXZlbCBvZiB0aGF0IGRpcmVjdG9yeSBjb250YWlucyBlbnRpdGll
cyByZWxhdGVkIHRvIFdlYlNRTCBkYXRhYmFzZXMuCiAgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlz
LCBhbmQgbW92ZSBXZWJTUUwgaW50byBhIHN1YmRpcmVjdG9yeSAoaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgwNykKICAgICAvLyBJbiB0aGUgbWVhbnRpbWUsIGFu
IGVudGl0eSBuYW1lIHByZWZpeGVkIHdpdGggdGhyZWUgdW5kZXJzY29yZXMgd2lsbCBub3QgY29u
ZmxpY3Qgd2l0aCBhbnkgV2ViU1FMIGVudGl0aWVzLgotICAgIHJldHVybiBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSwgIl9fX0luZGV4ZWREQiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSwgIl9fX0luZGV4ZWREQiIpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBs
YXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGEyZTQ4MmZlZjgyLi5kMzY3ZmE0MzBm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTM4NjQsNyArMzg2NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnByb3ZpZGVEYXRhRm9yUGFzdGVi
b2FyZChOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQsIE5TU3RyaW5nICp0CiAgICAgfQogfQogCi1z
dGF0aWMgQk9PTCBmaWxlRXhpc3RzKE5TU3RyaW5nICpwYXRoKQorc3RhdGljIEJPT0wgRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBzdGF0
QnVmZmVyOwogICAgIHJldHVybiAhbHN0YXQoW3BhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
XSwgJnN0YXRCdWZmZXIpOwpAQCAtMzg3Niw3ICszODc2LDcgQEAgc3RhdGljIE5TU3RyaW5nICpw
YXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICBOU1N0cmlu
ZyAqZmlsZW5hbWUgPSBmaWxlbmFtZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnMoW3BhdGggbGFz
dFBhdGhDb21wb25lbnRdKTsKICAgICBwYXRoID0gW1twYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0
UGF0aENvbXBvbmVudF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsK
ICAgICAKLSAgICBpZiAoZmlsZUV4aXN0cyhwYXRoKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKHBhdGgpKSB7CiAgICAgICAgIC8vIERvbid0IG92ZXJ3cml0ZSBleGlzdGluZyBm
aWxlIGJ5IGFwcGVuZGluZyAiLW4iLCAiLW4uZXh0IiBvciAiLW4uZXh0LmV4dCIgdG8gdGhlIGZp
bGVuYW1lLgogICAgICAgICBOU1N0cmluZyAqZXh0ZW5zaW9ucyA9IG5pbDsKICAgICAgICAgTlNT
dHJpbmcgKnBhdGhXaXRob3V0RXh0ZW5zaW9uczsKQEAgLTM4OTQsNyArMzg5NCw3IEBAIHN0YXRp
YyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZvclBhdGgoTlNTdHJpbmcgKnBhdGgp
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDE7IDsgaSsrKSB7CiAgICAgICAgICAgICBOU1N0
cmluZyAqcGF0aFdpdGhBcHBlbmRlZE51bWJlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUAtJWQiLCBwYXRoV2l0aG91dEV4dGVuc2lvbnMsIGldOwogICAgICAgICAgICAgcGF0aCA9
IFtleHRlbnNpb25zIGxlbmd0aF0gPyBbcGF0aFdpdGhBcHBlbmRlZE51bWJlciBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhFeHRlbnNpb246ZXh0ZW5zaW9uc10gOiBwYXRoV2l0aEFwcGVuZGVkTnVtYmVy
OwotICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHBhdGgpKQorICAgICAgICAgICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMzkyNyw3ICszOTI3LDcgQEAgTlNBcnJheSAqV2ViVmlld0ltcGw6
Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oTlNVUkwgKmRyb3BEZXN0
aW4KICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGltYWdlIGZpbGUgdmlhIC1b
TlNGaWxlV3JhcHBlciB3cml0ZVRvVVJMOm9wdGlvbnM6b3JpZ2luYWxDb250ZW50c1VSTDplcnJv
cjpdIik7CiAKICAgICBpZiAoIW1fcHJvbWlzZWRVUkwuaXNFbXB0eSgpKQotICAgICAgICBXZWJD
b3JlOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOworICAgICAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCksIG1fcHJv
bWlzZWRVUkwpOwogICAgIAogICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6W3Bh
dGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCmluZGV4
IDVhYzZmY2ZmNWM2Li45M2JiODFmNDY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCkBA
IC03OSw3ICs3OSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAg
ICAgICAgICAgIGV4ZWN1dGFibGVQYXRoLmFwcGVuZCgnMicpOwogI2VuZGlmCiAgICAgICAgIHBs
dWdpblBhdGggPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJw
bHVnaW4tcGF0aCIpOwotICAgICAgICByZWFsUGx1Z2luUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwbHVnaW5QYXRoKTsKKyAgICAgICAgcmVhbFBsdWdpblBhdGggPSBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CiAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgpA
QCAtOTMsNyArOTMsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOworICAgIHJlYWxFeGVjdXRhYmxlUGF0
aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7
CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gd2Via2l0U29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQi
LCBzb2NrZXRQYWlyLmNsaWVudCkpOwogICAgIHVuc2lnbmVkIG5hcmdzID0gNDsgLy8gc2l6ZSBv
ZiB0aGUgYXJndiBhcnJheSBmb3IgZ19zcGF3bl9hc3luYygpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IDhmNWEx
ZDEwOGQ5Li5mYzg4M2ZkZTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGxhdW5jaFByb2Nlc3MoY29uc3QgU3RyaW5nJiBsYXVuY2hQYXRoLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYXJndW1lbnRzLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgbGF1
bmNoQXBwbGljYXRpb25BdFVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGFyZ3VtZW50cywgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIG9wZW5VUkwoY29u
c3QgU3RyaW5nJiB1cmwsIGJvb2wmIHJlc3VsdCwgaW50MzJfdCYgc3RhdHVzLCBTdHJpbmcmIGxh
dW5jaGVkVVJMU3RyaW5nKTsKLSAgICB2b2lkIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgsIGJvb2wmIHJlc3VsdCk7CisgICAgdm9pZCBGaWxlU3lzdGVtOjpvcGVuRmlsZShjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoLCBib29sJiByZXN1bHQpOwogI2VuZGlmCiAKICAgICB2b2lkIHBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAppbmRleCAxYmQ2NTA3OWU1ZC4uYjliMGMyZWFl
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdp
bkluZm9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsv
UGx1Z2luSW5mb0NhY2hlLmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIFBsdWdpbkluZm9DYWNoZTo6
UGx1Z2luSW5mb0NhY2hlKCkKICAgICBtX3NhdmVUb0ZpbGVJZGxlLnNldFByaW9yaXR5KEdfUFJJ
T1JJVFlfREVGQVVMVF9JRExFKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVEaXJlY3Rv
cnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwg
bnVsbHB0cikpOwotICAgIGlmIChXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJl
Y3RvcnkuZ2V0KCkpKSB7CisgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhjYWNoZURpcmVjdG9yeS5nZXQoKSkpIHsKICAgICAgICAgLy8gRGVsZXRlIG9sZCBj
YWNoZSBmaWxlLgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG9sZENhY2hlUGF0aChnX2J1aWxk
X2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCAicGx1Z2lucyIsIG51bGxwdHIpKTsKLSAg
ICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOworICAgICAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CiAKICAgICAgICAgbV9jYWNo
ZVBhdGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgY2FjaGVG
aWxlbmFtZUZvckN1cnJlbnREaXNwbGF5KCksIG51bGxwdHIpKTsKICAgICAgICAgZ19rZXlfZmls
ZV9sb2FkX2Zyb21fZmlsZShtX2NhY2hlRmlsZS5nZXQoKSwgbV9jYWNoZVBhdGguZ2V0KCksIEdf
S0VZX0ZJTEVfTk9ORSwgbnVsbHB0cik7CkBAIC0xMTMsMTQgKzExMywxNCBAQCBib29sIFBsdWdp
bkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdp
bk1vZHVsZUluZm8mCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHRpbWVfdCBsYXN0TW9k
aWZpZWQ7Ci0gICAgaWYgKCFXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5Q
YXRoLCBsYXN0TW9kaWZpZWQpKQorICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIHRpbWVfdCBjYWNoZWRMYXN0TW9kaWZpZWQgPSBzdGF0aWNfY2FzdDx0
aW1lX3Q+KGdfa2V5X2ZpbGVfZ2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3Jv
dXAuZGF0YSgpLCAibXRpbWUiLCBudWxscHRyKSk7CiAgICAgaWYgKGxhc3RNb2RpZmllZCAhPSBj
YWNoZWRMYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHBsdWdpbi5w
YXRoID0gcGx1Z2luUGF0aDsKLSAgICBwbHVnaW4uaW5mby5maWxlID0gV2ViQ29yZTo6cGF0aEdl
dEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CiAKICAgICBHVW5pcXVlUHRy
PGNoYXI+IHN0cmluZ1ZhbHVlKGdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhtX2NhY2hlRmlsZS5nZXQo
KSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibmFtZSIsIG51bGxwdHIpKTsKICAgICBwbHVnaW4uaW5m
by5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmdWYWx1ZS5nZXQoKSk7CkBAIC0xNDEsNyAr
MTQxLDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVw
ZGF0ZVBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2R1
bGVJbmZvJiBwbHVnaW4pCiB7CiAgICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICBpZiAoIVdl
YkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RNb2RpZmllZCkp
CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShw
bHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQogICAgICAgICByZXR1cm47CiAKICAgICBDU3RyaW5n
IHBsdWdpbkdyb3VwID0gcGx1Z2luUGF0aC51dGY4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAK
aW5kZXggM2I3ZWYzODFhNzMuLjA4NGY2ZGViYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3Bw
CkBAIC01NiwxMCArNTYsMTAgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luSW5mb1N0b3JlOjpwbHVn
aW5QYXRoc0luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogewogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3VsdDsKICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgU3RyaW5n
KCIqLnNvIikpKSB7Ci0gICAgICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShkaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKSkgeworICAgICAgICBDU3Ry
aW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogICAgICAgICBpZiAocmVhbHBhdGgoZmlsZW5hbWUuZGF0YSgpLCBub3JtYWxpemVkUGF0aCkp
Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obm9ybWFsaXplZFBhdGgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3JtYWxpemVkUGF0aCkp
OwogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgUGx1
Z2luSW5mb1N0b3JlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1
Z2luTW9kdWxlSW5mbyYKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBTdHJpbmcgcGx1Z2luUHJvY2Vzc1BhdGggPSBleGVjdXRhYmxlUGF0aE9mUGx1Z2luUHJvY2Vz
cygpOwogICAgICAgICAgICAgcGx1Z2luUHJvY2Vzc1BhdGguYXBwZW5kKCcyJyk7Ci0gICAgICAg
ICAgICBpZiAoIWZpbGVFeGlzdHMocGx1Z2luUHJvY2Vzc1BhdGgpKQorICAgICAgICAgICAgaWYg
KCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBsdWdpblByb2Nlc3NQYXRoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94
eVVuaXguY3BwCmluZGV4IDI3NjY5MmJkOTEyLi5lYTBhYTAxMTgwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9j
ZXNzUHJveHlVbml4LmNwcApAQCAtOTAsNyArOTAsNyBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94
eTo6c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRh
JgogI2VuZGlmCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAgICAgIHBsdWdp
blByb2Nlc3NQYXRoLmFwcGVuZCgnMicpOwotICAgICAgICBpZiAoIWZpbGVFeGlzdHMocGx1Z2lu
UHJvY2Vzc1BhdGgpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGx1Z2lu
UHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtOTgsOCArOTgsOCBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6
c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJgog
ICAgIH0KICNlbmRpZgogCi0gICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBsdWdpblByb2Nlc3NQYXRoKTsKLSAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3Ry
aW5nID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIENTdHJpbmcg
YmluYXJ5UGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5Q
cm9jZXNzUGF0aCk7CisgICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKICAgICBjaGFyKiBhcmd2WzRd
OwogICAgIGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7CiAg
ICAgYXJndlsxXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCItc2NhblBsdWdpbiIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggMTI0OGFlZjYxMjMuLmQxZGZmNGY5Njli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgc3RhdGljIGJvb2wgaGFzRmlsZUNoYW5nZWRTaW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIFdh
bGxUaW1lIHNpbmNlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHRp
bWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
cGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRp
bWUpID4gc2luY2U7CkBAIC01NSwyNiArNTUsMjYgQEAgc3RhdGljIGJvb2wgaGFzRmlsZUNoYW5n
ZWRTaW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIHNpbmNlKQogc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGb3JGaWxlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGhh
bmRsZSA9IG9wZW5BbmRMb2NrRmlsZShwYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKGhhbmRs
ZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5
c3RlbTo6b3BlbkFuZExvY2tGaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAg
ICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgbG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAg
ICBpZiAoIWdldEZpbGVTaXplKGhhbmRsZSwgZmlsZVNpemUpKSB7Ci0gICAgICAgIHVubG9ja0Fu
ZENsb3NlRmlsZShoYW5kbGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoaGFu
ZGxlLCBmaWxlU2l6ZSkpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxl
KGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHNpemVfdCBi
eXRlc1RvUmVhZDsKICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgYnl0ZXNU
b1JlYWQpKSB7Ci0gICAgICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7Ci0g
ICAgc2l6ZV90IHRvdGFsQnl0ZXNSZWFkID0gcmVhZEZyb21GaWxlKGhhbmRsZSwgYnVmZmVyLmRh
dGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgc2l6ZV90IHRvdGFsQnl0ZXNSZWFkID0gRmlsZVN5
c3RlbTo6cmVhZEZyb21GaWxlKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7
CiAKLSAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjp1bmxv
Y2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRl
c1RvUmVhZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTIsNyArMTEyLDcgQEAgU3Ry
aW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cmVzb3VyY2VMb2dG
aWxlUGF0aCgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHN0b3JhZ2VQYXRoLCAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9y
YWdlUGF0aCwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25p
dG9yaW5nRGlzaygpCkBAIC0xNDUsOCArMTQ1LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkK
ICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBzdG9yYWdlRGlyZWN0b3J5UGF0aCgpOwogICAgIEFT
U0VSVCghc3RvcmFnZVBhdGguaXNFbXB0eSgpKTsKIAotICAgIGlmICghZmlsZUV4aXN0cyhzdG9y
YWdlUGF0aCkpIHsKLSAgICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgp
KSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN0b3JhZ2VQYXRoKSkgeworICAg
ICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCkpIHsK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6IEZhaWxlZCB0byBjcmVhdGUg
ZGlyZWN0b3J5IHBhdGggJXMiLCBzdG9yYWdlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3Rh
dGlzdGljcygpCiAgICAgICAgIFN0cmluZyByZXNvdXJjZUxvZ1BhdGggPSByZXNvdXJjZUxvZ0Zp
bGVQYXRoKCk7CiAgICAgICAgIEFTU0VSVCghcmVzb3VyY2VMb2dQYXRoLmlzRW1wdHkoKSk7CiAK
LSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHJlc291cmNlTG9nUGF0aCkpCisgICAgICAgIGlmICgh
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhyZXNvdXJjZUxvZ1BhdGgpKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIG1fZmlsZU1vbml0b3IgPSBudWxscHRyOwpAQCAtMjA5LDcgKzIwOSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1bGF0
ZU1lbW9yeVN0b3JlRnJvbURpc2soKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgU3RyaW5nIGZpbGVQYXRoID0gcmVzb3VyY2VMb2dGaWxlUGF0aCgpOwotICAgIGlmIChm
aWxlUGF0aC5pc0VtcHR5KCkgfHwgIWZpbGVFeGlzdHMoZmlsZVBhdGgpKSB7CisgICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpIHsK
ICAgICAgICAgbV9tZW1vcnlTdG9yZS5ncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsK
ICAgICAgICAgbW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjU4LDE2ICsyNTgsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6OndyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKQogCiAgICAgYXV0byBzdG9y
YWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CiAgICAgaWYgKCFzdG9yYWdlUGF0aC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKTsKICAgICAg
ICAgZXhjbHVkZUZyb21CYWNrdXAoKTsKICAgICB9CiAKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5B
bmRMb2NrRmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRoKCksIE9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYg
KGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gaGFuZGxlID0g
RmlsZVN5c3RlbTo6b3BlbkFuZExvY2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgoKSwgRmlsZVN5
c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludDY0X3Qgd3Jp
dHRlbkJ5dGVzID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEt
PnNpemUoKSk7Ci0gICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgaW50NjRfdCB3
cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRh
dGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZp
bGUoaGFuZGxlKTsKIAogICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4ocmF3RGF0YS0+c2l6ZSgpKSkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VM
b2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTog
V2Ugb25seSB3cm90ZSAlZCBvdXQgb2YgJXp1IGJ5dGVzIHRvIGRpc2siLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4od3JpdHRlbkJ5dGVzKSwgcmF3RGF0YS0+c2l6ZSgpKTsKQEAgLTMwNiw3ICszMDYs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Y2xlYXIo
KQogCiAgICAgc3RvcE1vbml0b3JpbmdEaXNrKCk7CiAKLSAgICBpZiAoIWRlbGV0ZUZpbGUoZmls
ZVBhdGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCkpCiAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6IFVuYWJsZSB0byBkZWxldGUgc3RhdGlzdGlj
cyBmaWxlOiAlcyIsIGZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCmluZGV4IGE0NTQwODFiNzBlLi44MjYxNThmYjE0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZTo6b3BlbkRh
dGFiYXNlKERhdGFiYXNlT3BlbmluZ1N0cmF0ZWd5IG9wZW5pbmdTdHJhdGVneSkKIAogYm9vbCBM
b2NhbFN0b3JhZ2VEYXRhYmFzZTo6dHJ5VG9PcGVuRGF0YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3Ry
YXRlZ3kgb3BlbmluZ1N0cmF0ZWd5KQogewotICAgIGlmICghZmlsZUV4aXN0cyhtX2RhdGFiYXNl
UGF0aCkgJiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQorICAgIGlmICgh
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2RhdGFiYXNlUGF0aCkgJiYgb3BlbmluZ1N0cmF0ZWd5
ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICht
X2RhdGFiYXNlUGF0aC5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcAppbmRleCAxOWIyMjlmNmI1My4uYjljYTg5ZjhhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCiAKICAgICBpbnQgcmVzdWx0OwogICAg
IHdoaWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAg
ICAgICBkZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7CiAKICAgICAg
ICAgLy8gRklYTUU6IENhbGwgb3V0IHRvIHRoZSBjbGllbnQuCiAgICAgfQpAQCAtMTA2LDcgKzEw
Niw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZWxldGVBbGxEYXRhYmFz
ZXMoKQogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICBtX2RhdGFiYXNlLmNs
b3NlKCk7CiAKLSAgICBpZiAoIWRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgewor
ICAgIGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7
CiAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZWxl
dGUgdGhlIGRhdGFiYXNlIGZpbGUgKGUuZyBzb21lIG90aGVyIHByb2dyYW0KICAgICAgICAgLy8g
bGlrZSBhIHZpcnVzIHNjYW5uZXIgaXMgYWNjZXNzaW5nIGl0KSwgbWFrZSBzdXJlIHRvIHJlbW92
ZSBhbGwgZW50cmllcy4KICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShTa2lwSWZOb25FeGlz
dGVudCk7CkBAIC0xMjQsMTkgKzEyNCwxOSBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGRlbGV0
ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiB9CiAKIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlQ3JlYXRp
b25UaW1lKGZpbGVQYXRoLCB0aW1lKSA/IHRpbWUgOiBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4oc3Rk
OjpudWxsb3B0KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGltZShm
aWxlUGF0aCwgdGltZSkgPyB0aW1lIDogc3RkOjpvcHRpb25hbDx0aW1lX3Q+KHN0ZDo6bnVsbG9w
dCk7CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gZmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICB0aW1lX3QgdGltZTsKLSAgICBpZiAo
IWdldEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSkKKyAgICBpZiAoIUZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSkKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0aW1lOwpAQCAtMjA5LDcgKzIwOSw3
IEBAIFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdAogewot
ICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkgewor
ICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgTG9jYWxTdG9y
YWdlIGRhdGFiYXNlIHBhdGggJXMiLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsNyBA
QCBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSkgY29uc3QKICAgICBwbGF0Zm9ybU1heWJlRXhjbHVkZUZyb21CYWNr
dXAoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2xv
Y2FsU3RvcmFnZURpcmVjdG9yeSwgZmlsZW5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIGZpbGVuYW1l
KTsKIH0KIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlckRhdGFi
YXNlUGF0aCgpIGNvbnN0CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kg
b3AKIAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSB0cmFja2VyRGF0YWJhc2VQYXRoKCk7CiAK
LSAgICBpZiAoIWZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0g
U2tpcElmTm9uRXhpc3RlbnQpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFi
YXNlUGF0aCkgJiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIW1fZGF0YWJhc2Uub3BlbihkYXRhYmFzZVBhdGgpKSB7CkBA
IC0yNzksNyArMjc5LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmltcG9y
dE9yaWdpbklkZW50aWZpZXJzKCkKIAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6
OnVwZGF0ZVRyYWNrZXJEYXRhYmFzZUZyb21Mb2NhbFN0b3JhZ2VEYXRhYmFzZUZpbGVzKCkKIHsK
LSAgICBWZWN0b3I8U3RyaW5nPiBwYXRocyA9IGxpc3REaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VE
aXJlY3RvcnksICIqLmxvY2Fsc3RvcmFnZSIpOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzID0g
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgIioubG9j
YWxzdG9yYWdlIik7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2lucyhtX29yaWdpbnMpOwog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRmlsZXM7
CkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnVw
ZGF0ZVRyYWNrZXJEYXRhYmFzZUZyb21Mb2NhbFN0b3JhZ2VEYXRhYmFzZUYKICAgICAgICAgaWYg
KCFwYXRoLmVuZHNXaXRoKCIubG9jYWxzdG9yYWdlIikpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKTsK
IAogICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGVuYW1lLnN1YnN0cmluZygw
LCBmaWxlbmFtZS5sZW5ndGgoKSAtIHN0cmxlbigiLmxvY2Fsc3RvcmFnZSIpKTsKIApAQCAtMzYw
LDcgKzM2MCw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEYXRh
YmFzZVdpdGhPcmlnaW5JZGVudGlmaWVyKGNvbnN0IFN0cmluCiAgICAgICAgIC8vIFRoZXJlIGFy
ZSBubyBvcmlnaW5zIGxlZnQ7IGRlbGV0ZSB0aGUgdHJhY2tlciBkYXRhYmFzZS4KICAgICAgICAg
bV9kYXRhYmFzZS5jbG9zZSgpOwogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRh
YmFzZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKTsKLSAgICAgICAgZGVsZXRlRW1wdHlEaXJl
Y3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVFbXB0eURpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgfQogCiAgICAg
Ly8gRklYTUU6IFRlbGwgY2xpZW50cyB0aGF0IHRoZSBvcmlnaW4gd2FzIHJlbW92ZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9D
b2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggOGQ2NWJiZTQ1MDMuLjQyODA4MThk
NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC03Myw3ICs3Myw3
IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRl
cnMoKQogICAgIHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMgPSBjb3B5VG9WZWN0b3IobV9wZW5k
aW5nQ29va2llcyk7CiAKICAgICBpZiAoIWNvb2tpZUZpbGUuaXNFbXB0eSgpKQotICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29y
ZTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0
aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxl
KTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeS5pc051
bGwoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeSA9IG1fY29u
ZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDk3
ZDJiYWNhMmVmLi5lNTkxNjFlNDY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEyNCw4ICsxMjQs
OCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc29sdmVEaXJlY3Rvcmllc0lmTmVjZXNzYXJ5
KCkKIAogICAgIC8vIFJlc29sdmUgZGlyZWN0b3JpZXMgZm9yIGZpbGUgcGF0aHMuCiAgICAgaWYg
KCFtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gcmVzb2x2ZUFuZENy
ZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6ZGlyZWN0
b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKLSAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZp
bGUsIFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFn
ZUZpbGUpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZp
bGUgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lv
bihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi5jb29r
aWVTdG9yYWdlRmlsZSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVT
dG9yYWdlRmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSwgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZSkpOwogICAgIH0KIH0KIApAQCAtMTI0OCw3ICsxMjQ4LDcgQEAgVmVjdG9yPFBsdWdpbk1vZHVs
ZUluZm8+IFdlYnNpdGVEYXRhU3RvcmU6OnBsdWdpbnMoKSBjb25zdAogCiBzdGF0aWMgU3RyaW5n
IGNvbXB1dGVNZWRpYUtleUZpbGUoY29uc3QgU3RyaW5nJiBtZWRpYUtleURpcmVjdG9yeSkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGly
ZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJlY3RvcnksICJTZWN1cmVT
dG9wLnBsaXN0Iik7CiB9CiAKIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IFdl
YnNpdGVEYXRhU3RvcmU6Om1lZGlhS2V5T3JpZ2lucyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkpCkBAIC0xMjU3LDEyICsxMjU3LDEyIEBAIFZlY3RvcjxXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGE+IFdlYnNpdGVEYXRhU3RvcmU6Om1lZGlhS2V5T3JpZ2lucyhjb25z
dCBTdHJpCiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5z
OwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW5QYXRoIDogV2ViQ29yZTo6bGlzdERpcmVj
dG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CisgICAgZm9yIChjb25zdCBh
dXRvJiBvcmlnaW5QYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxl
ID0gY29tcHV0ZU1lZGlhS2V5RmlsZShvcmlnaW5QYXRoKTsKLSAgICAgICAgaWYgKCFXZWJDb3Jl
OjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3JlOjpwYXRoR2V0RmlsZU5h
bWUob3JpZ2luUGF0aCk7CisgICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAgIGlm
IChhdXRvIHNlY3VyaXR5T3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKG1lZGlhS2V5SWRlbnRpZmllcikpCiAgICAgICAgICAgICBvcmln
aW5zLmFwcGVuZCgqc2VjdXJpdHlPcmlnaW4pOwpAQCAtMTI3NSwxOCArMTI3NSwxOCBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnksCiB7CiAgICAgQVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSk7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5
IDogV2ViQ29yZTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIp
KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkg
ewogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFL
ZXlEaXJlY3RvcnkpOwogCiAgICAgICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgICAg
ICBpZiAoIVdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSwgbW9k
aWZpY2F0aW9uVGltZSkpCisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2RpZmljYXRpb25UaW1lKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojpmcm9tX3RpbWVfdChtb2RpZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2luY2UpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKG1lZGlhS2V5Rmls
ZSk7Ci0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0
b3J5KTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZp
bGUpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeSht
ZWRpYUtleURpcmVjdG9yeSk7CiAgICAgfQogfQogCkBAIC0xMjk1LDExICsxMjk1LDExIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSwKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykg
ewotICAgICAgICBhdXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CisgICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgYXV0byBtZWRpYUtl
eUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAotICAgICAg
ICBXZWJDb3JlOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7Ci0gICAgICAgIFdlYkNvcmU6OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKKyAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOworICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c1Bvb2xHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29s
R3RrLmNwcAppbmRleCBjNTk1ZDU2ZGYzOS4uYjRhMTcyMzlmNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1E
ZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgIkphdmFTY3JpcHRDb3JlRGVidWci
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAy
ZDAyNzIxZjcxMS4uZGZlZjU4YjA4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqcGF0aFRvUERGT25EaXNrKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2
ZUFwcGxpY2F0aW9uUmF3KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVk
IGxvbmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKQogewotICAgIC8vIEZJWE1FOiBXcml0
ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBtZXRh
ZGF0YSAocGVyaGFwcyBXZWJDb3JlOjpzZXRNZXRhZGF0YVVSTCgpPykuCisgICAgLy8gRklYTUU6
IFdyaXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJM
IG1ldGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKCk/
KS4KICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYXRpbmdVUkxTdHJpbmcpOwogCiAgICAgaWYgKCFz
dWdnZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKaW5kZXggZTUyMmE1
OTU1OGQuLjczZDgwMWJhOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dw
ZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKQEAgLTgwLDEzICs4MCwxMyBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogV1RGOjpTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogewogICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRf
dXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJhcHBjYWNoZSIsIG51bGxwdHIpKTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVj
dG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBXVEY6
OlN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURp
cmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWls
ZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgIm1lZGlhY2FjaGUiLCBu
dWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5
LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQpAQCAtMTAy
LDM3ICsxMDIsMzcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1JbnZhbGlkYXRlQ29u
dGV4dCgpCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURp
cmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJk
YXRhYmFzZXMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiB7CiAgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxl
bmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgImluZGV4ZWRk
YiIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7
CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1l
KGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJsb2NhbHN0b3JhZ2UiLCBudWxscHRyKSk7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
c3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc3RvcmFnZURpcmVjdG9yeS5nZXQo
KSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIo
KSwgIndwZSIsICJtZWRpYWtleXMiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24obWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiB9
CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAiY2FjaGUi
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXNrQ2Fj
aGVEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBs
YXRmb3JtRGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCkKIHsKICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJKYXZhU2NyaXB0Q29yZURlYnVn
IiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVzb2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCmluZGV4
IGRjZjEzYzFmNTM3Li5hYWMyODI4MGNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtNDEsOSArNDEsOSBAQCBXZWJLaXRFeHRlbnNp
b25NYW5hZ2VyOjpXZWJLaXRFeHRlbnNpb25NYW5hZ2VyKCkKIAogdm9pZCBXZWJLaXRFeHRlbnNp
b25NYW5hZ2VyOjpzY2FuTW9kdWxlcyhjb25zdCBTdHJpbmcmIHdlYkV4dGVuc2lvbnNEaXJlY3Rv
cnksIFZlY3RvcjxTdHJpbmc+JiBtb2R1bGVzKQogewotICAgIFZlY3RvcjxTdHJpbmc+IG1vZHVs
ZVBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBT
dHJpbmcoIiouc28iKSk7CisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmlu
ZygiKi5zbyIpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ld
KSkKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobW9kdWxlUGF0
aHNbaV0pKQogICAgICAgICAgICAgbW9kdWxlcy5hcHBlbmQobW9kdWxlUGF0aHNbaV0pOwogICAg
IH0KIH0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIHZvaWQgcGFyc2VVc2VyRGF0YShBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwKICAgICBHVmFy
aWFudCogZGF0YSA9IG51bGxwdHI7CiAgICAgZ192YXJpYW50X2dldCh2YXJpYW50LmdldCgpLCAi
KG0mc212KSIsICZkaXJlY3RvcnksICZkYXRhKTsKIAotICAgIHdlYkV4dGVuc2lvbnNEaXJlY3Rv
cnkgPSBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9y
eSk7CisgICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKICAgICBpbml0aWFs
aXphdGlvblVzZXJEYXRhID0gYWRvcHRHUmVmKGRhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUds
aWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5q
ZWN0ZWRCdW5kbGVHbGliLmNwcAppbmRleCBhMjBhNWZlNDIyMy4uY2ZmYThmYzRhYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVj
dGVkQnVuZGxlR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9u
VXNlckRhdGEpCiB7Ci0gICAgbV9wbGF0Zm9ybUJ1bmRsZSA9IGdfbW9kdWxlX29wZW4oZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG1fcGF0aCkuZGF0YSgpLCBHX01PRFVMRV9CSU5EX0xPQ0FMKTsK
KyAgICBtX3BsYXRmb3JtQnVuZGxlID0gZ19tb2R1bGVfb3BlbihGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24obV9wYXRoKS5kYXRhKCksIEdfTU9EVUxFX0JJTkRfTE9DQUwpOwog
ICAgIGlmICghbV9wbGF0Zm9ybUJ1bmRsZSkgewogICAgICAgICBnX3dhcm5pbmcoIkVycm9yIGxv
YWRpbmcgdGhlIGluamVjdGVkIGJ1bmRsZSAoJXMpOiAlcyIsIG1fcGF0aC51dGY4KCkuZGF0YSgp
LCBnX21vZHVsZV9lcnJvcigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBmYjdmOWM2Y2E3Ni4uOWY4ZWFmMzkwODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hl
L1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFN0cmluZyBX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjptZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlGb3JPcmln
aW4oY29uc3QgU2VjdXJpCiAgICAgaWYgKCFtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSkKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW5EYXRhLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW5EYXRhLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkKQEAgLTYyLDcgKzYyLDcgQEAgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVk
aWFLZXlPcmlnaW5zKCkKICAgICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0czsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdp
blBhdGhzID0gbGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpIHsKICAgICAgICAgVVJMIHVybDsKICAgICAgICAg
dXJsLnNldFByb3RvY29sKEFTQ0lJTGl0ZXJhbCgiZmlsZSIpKTsKQEAgLTgyLDI1ICs4MiwyNSBA
QCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpn
ZXRNZWRpYUtleU9yaWdpbnMoKQogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3Jh
Z2VGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgZG91YmxlIHN0YXJ0RGF0
ZSwgZG91YmxlIGVuZERhdGUpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbWVkaWFLZXlQYXRocyA9
IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aCwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtZWRp
YUtleVBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCAiKiIpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBtZWRpYUtleVBhdGggOiBtZWRpYUtleVBhdGhzKSB7Ci0g
ICAgICAgIFN0cmluZyBtZWRpYUtleUZpbGUgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVk
aWFLZXlQYXRoLCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgICAgICBTdHJpbmcgbWVkaWFLZXlG
aWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5UGF0aCwg
IlNlY3VyZVN0b3AucGxpc3QiKTsKIAotICAgICAgICBpZiAoIWZpbGVFeGlzdHMobWVkaWFLZXlG
aWxlKSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICAg
ICAgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2RUaW1lKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2RU
aW1lKTsKIAogICAgICAgICBpZiAobW9kVGltZSA8IHN0YXJ0RGF0ZSB8fCBtb2RUaW1lID4gZW5k
RGF0ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRlbGV0ZUZpbGUobWVkaWFL
ZXlGaWxlKTsKLSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleVBhdGgpOwogICAgIH0KICAgICAK
LSAgICBkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKTsKIH0KIAogdm9pZCBXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW5EYXRhKQpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTWVkaWFLZXlFbnRyaWVzTW9kaWZpZWRCZXR3ZWVu
RGF0ZXMoZG91YmxlCiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBs
aXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOworICAgIFZlY3Rv
cjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX21lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBv
cmlnaW5QYXRocykKICAgICAgICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0
aChvcmlnaW5QYXRoLCBzdGFydERhdGUsIGVuZERhdGUpOwogfQpAQCAtMTI3LDcgKzEyNyw3IEBA
IHZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlQWxsTWVkaWFLZXlFbnRyaWVz
KCkKICAgICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3Rv
cnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
b3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdl
RGlyZWN0b3J5LCAiKiIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhz
KQogICAgICAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKG9yaWdpblBh
dGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCksIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6bWF4KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
Y3BwCmluZGV4IDAzNzE4YTI3MzBhLi4xOGZlOWNiZjI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmNwcApAQCAtNDUsNyArNDUsNyBAQCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6
TmV0c2NhcGVQbHVnaW5TdHJlYW0oUmVmPE5ldHNjYXBlUGx1Z2luPiYmIHBsdWdpbiwgdWludDY0
XwogICAgICwgbV9ucFN0cmVhbSgpCiAgICAgLCBtX3RyYW5zZmVyTW9kZShOUF9OT1JNQUwpCiAg
ICAgLCBtX29mZnNldCgwKQotICAgICwgbV9maWxlSGFuZGxlKGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpCisgICAgLCBtX2ZpbGVIYW5kbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkKICAgICAsIG1faXNTdGFydGVkKGZhbHNlKQogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAsIG1fdXJsTm90aWZ5SGFzQmVlbkNhbGxlZChmYWxzZSkKQEAgLTU5LDcgKzU5LDcgQEAg
TmV0c2NhcGVQbHVnaW5TdHJlYW06On5OZXRzY2FwZVBsdWdpblN0cmVhbSgpCiB7CiAgICAgQVNT
RVJUKCFtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKCFtX3NlbmROb3RpZmljYXRpb24gfHwgbV91
cmxOb3RpZnlIYXNCZWVuQ2FsbGVkKTsKLSAgICBBU1NFUlQobV9maWxlSGFuZGxlID09IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiB9CiAKIHZvaWQgTmV0c2NhcGVQbHVn
aW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdChjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFVS
TCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMpCkBAIC0y
NjMsMTIgKzI2MywxMiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRv
UGx1Z2luKCkKIAogdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgaWYgKG1fZmlsZUhhbmRsZSA9
PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAg
ICBpZiAobV9maWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUgJiYgbV9maWxlUGF0aC5pc051bGwoKSkgewogICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3Jh
cnkgZmlsZS4KLSAgICAgICAgbV9maWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJXZWJLaXRQ
bHVnaW5TdHJlYW0iLCBtX2ZpbGVIYW5kbGUpOworICAgICAgICBtX2ZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIldlYktpdFBsdWdpblN0cmVhbSIsIG1fZmlsZUhhbmRs
ZSk7CiAKICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIG9wZW4gdGhlIGZpbGUsIHN0b3AgdGhlIHN0
cmVhbS4KLSAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKSB7CisgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICAgICAgc3RvcChOUFJFU19ORVRXT1JLX0VSUik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3NywxMCArMjc3LDEwIEBAIHZv
aWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5
dGVzLCBpbnQgbGVuZ3RoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpbnQgYnl0ZUNvdW50ID0gd3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBieXRlcywgbGVuZ3Ro
KTsKKyAgICBpbnQgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBieXRlcywgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZUNvdW50ICE9IGxlbmd0aCkgewogICAg
ICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSByYXJlbHksIHdoZW4gd2UgYXJlIG91dCBvZiBkaXNr
IHNwYWNlIG9yIGhhdmUgYSBkaXNrIEkvTyBlcnJvci4KLSAgICAgICAgY2xvc2VGaWxlKG1fZmls
ZUhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwog
CiAgICAgICAgIHN0b3AoTlBSRVNfTkVUV09SS19FUlIpOwogICAgIH0KQEAgLTMxNCwyMyArMzE0
LDIzIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0b3AoTlBSZWFzb24gcmVhc29uKQog
ICAgICAgICBpZiAocmVhc29uID09IE5QUkVTX0RPTkUpIHsKICAgICAgICAgICAgIC8vIEVuc3Vy
ZSB0aGF0IHRoZSBmaWxlIGlzIGNyZWF0ZWQuCiAgICAgICAgICAgICBkZWxpdmVyRGF0YVRvRmls
ZSgwLCAwKTsKLSAgICAgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgIT0gaW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkKLSAgICAgICAgICAgICAgICBjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKKyAg
ICAgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSkKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxl
SGFuZGxlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbGVQYXRoLmlz
TnVsbCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9wbHVnaW4tPk5QUF9TdHJlYW1B
c0ZpbGUoJm1fbnBTdHJlYW0sIG1fZmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBKdXN0IGNsb3NlIHRoZSBmaWxlLgotICAgICAgICAgICAg
aWYgKG1fZmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICAg
ICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKG1fZmlsZUhh
bmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICAg
ICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gRGVsZXRlIHRoZSBmaWxlIGFmdGVyIGNhbGxpbmcgTlBQX1N0cmVhbUFzRmls
ZSgpLCBpbnN0ZWFkIG9mIGluIHRoZSBkZXN0cnVjdG9yLiAgSXQgc2hvdWxkIGJlIE9LCiAgICAg
ICAgIC8vIHRvIGRlbGV0ZSB0aGUgZmlsZSBoZXJlIC0tIE5QUF9TdHJlYW1Bc0ZpbGUoKSBpcyBh
bHdheXMgY2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBOUFBfRGVzdHJveVN0cmVhbSgpCiAgICAg
ICAgIC8vICh0aGUgc3RyZWFtIGRlc3RydWN0aW9uIGZ1bmN0aW9uKSwgc28gdGhlcmUgY2FuIGJl
IG5vIGV4cGVjdGF0aW9uIHRoYXQgYSBwbHVnaW4gd2lsbCByZWFkIHRoZSBzdHJlYW0KICAgICAg
ICAgLy8gZmlsZSBhc3luY2hyb25vdXNseSBhZnRlciBOUFBfU3RyZWFtQXNGaWxlKCkgaXMgY2Fs
bGVkLgotICAgICAgICBkZWxldGVGaWxlKG1fZmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwogICAgICAgICBtX2ZpbGVQYXRoID0gU3RyaW5nKCk7
CiAKICAgICAgICAgLy8gTlBQX1N0cmVhbUFzRmlsZSBjb3VsZCBjYWxsIE5QTl9EZXN0cm95U3Ry
ZWFtIGFuZCBkZXN0cm95IHRoZSBzdHJlYW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0u
aAppbmRleCAzNjc4MDk3ODkwMS4uNDA3NDA3OGQ3YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5TdHJlYW0uaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9vZmZz
ZXQ7CiAKICAgICBTdHJpbmcgbV9maWxlUGF0aDsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgbV9maWxlSGFuZGxlOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CiAgICAgCiAgICAgLy8gV2hldGhlciBOUFBfTmV3U3RyZWFt
IGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBjYWxsZWQuCiAgICAgYm9vbCBtX2lzU3RhcnRlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA4MDI0MWM5NWUxYS4uMWFlMmMz
YzhiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTU0LDcgKzU0
LDcgQEAgc3RhdGljIEhUVFBCb2R5IHRvSFRUUEJvZHkoY29uc3QgRm9ybURhdGEmIGZvcm1EYXRh
KQogICAgICAgICAgICAgZWxlbWVudC5maWxlU3RhcnQgPSBmb3JtRGF0YUVsZW1lbnQubV9maWxl
U3RhcnQ7CiAgICAgICAgICAgICBpZiAoZm9ybURhdGFFbGVtZW50Lm1fZmlsZUxlbmd0aCAhPSBC
bG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgICAgIGVsZW1lbnQuZmlsZUxl
bmd0aCA9IGZvcm1EYXRhRWxlbWVudC5tX2ZpbGVMZW5ndGg7Ci0gICAgICAgICAgICBpZiAoZm9y
bURhdGFFbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBpbnZhbGlkRmls
ZVRpbWUoKSkKKyAgICAgICAgICAgIGlmIChmb3JtRGF0YUVsZW1lbnQubV9leHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lICE9IEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKQogICAgICAg
ICAgICAgICAgIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9IGZvcm1EYXRh
RWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgICAgICBicmVh
azsKIApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyBSZWY8Rm9ybURhdGE+IHRvRm9ybURhdGEo
Y29uc3QgSFRUUEJvZHkmIGh0dHBCb2R5KQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6RmlsZToKLSAgICAgICAgICAgIGZvcm1EYXRh
LT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVs
ZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxl
bWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29yKGludmFsaWRGaWxlVGlt
ZSgpKSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmls
ZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxv
YkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9u
VGltZS52YWx1ZV9vcihGaWxlU3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggYmYzMjg1ZjkwNWQuLjlhY2UyMmUzYWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTEwLTMxICBDaHJpc3RvcGhlciBS
ZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBBZGQgYSBGaWxlU3lzdGVtIG5h
bWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6CisgICAgICAg
ICogU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwOgorCiAyMDE3LTEwLTE2ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjMyNzEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwCmluZGV4
IGJhMTVlNGE0ZGEwLi40MDM5OTYwYjE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0b3Jh
Z2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9wZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3Ry
YXRlZ3kpCiAKICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlbmFtZSA9IG1fc3luY01hbmFnZXItPmZ1
bGxEYXRhYmFzZUZpbGVuYW1lKG1fZGF0YWJhc2VJZGVudGlmaWVyKTsKIAotICAgIGlmICghZmls
ZUV4aXN0cyhkYXRhYmFzZUZpbGVuYW1lKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9u
RXhpc3RlbnQpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRmlsZW5h
bWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGRhdGFiYXNlRmlsZW5hbWUuaXNFbXB0eSgpKSB7CkBAIC01MjEsNyAr
NTIxLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UoKQogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgZGF0YWJh
c2VGaWxlbmFtZSA9IG1fc3luY01hbmFnZXItPmZ1bGxEYXRhYmFzZUZpbGVuYW1lKG1fZGF0YWJh
c2VJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGlmICghZGVsZXRlRmlsZShkYXRhYmFzZUZpbGVu
YW1lKSkKKyAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkYXRhYmFzZUZp
bGVuYW1lKSkKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWxldGUgZGF0
YWJhc2UgZmlsZSAlc1xuIiwgZGF0YWJhc2VGaWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9y
YWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAKaW5kZXggZWRjOWViMzNjNTAuLjNlOGZmNjVlZTYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAt
NTUsMTIgKzU1LDEyIEBAIFN0b3JhZ2VTeW5jTWFuYWdlcjo6flN0b3JhZ2VTeW5jTWFuYWdlcigp
CiAvLyBDYWxsZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVhZC4KIFN0cmluZyBTdG9yYWdlU3luY01h
bmFnZXI6OmZ1bGxEYXRhYmFzZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlm
aWVyKQogewotICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fcGF0aCkpIHsKKyAgICBpZiAo
IUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX3BhdGgpKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlZCB0byBjcmVhdGUgTG9jYWxTdG9yYWdlIGRhdGFiYXNlIHBhdGggJXMiLCBt
X3BhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVu
dGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVudGlmaWVyICsgIi5sb2NhbHN0
b3JhZ2UiKTsKIH0KIAogdm9pZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKEZ1bmN0aW9u
PHZvaWQgKCk+JiYgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcAppbmRleCAxMzI2YzdkMTkzOS4uZDVlNWY3NDc3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMTA0LDE1
ICsxMDQsMTUgQEAgU3RvcmFnZVRyYWNrZXI6OlN0b3JhZ2VUcmFja2VyKGNvbnN0IFN0cmluZyYg
c3RvcmFnZVBhdGgpCiBTdHJpbmcgU3RvcmFnZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgo
KQogewogICAgIEFTU0VSVCghbV9kYXRhYmFzZU11dGV4LnRyeUxvY2soKSk7Ci0gICAgcmV0dXJu
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiU3RvcmFn
ZVRyYWNrZXIuZGIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJTdG9yYWdlVHJhY2tlci5kYiIpOwogfQog
CiBzdGF0aWMgYm9vbCBlbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKICAgICBpZiAoY3JlYXRlSWZEb2Vz
Tm90RXhpc3QpCi0gICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5TmFt
ZShmaWxlTmFtZSkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpKTsKIAotICAgIHJldHVybiBm
aWxlRXhpc3RzKGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhm
aWxlTmFtZSk7CiB9CiAKIHZvaWQgU3RvcmFnZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2Uo
Ym9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiAgICAgVmVjdG9y
PFN0cmluZz4gcGF0aHM7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2RhdGFi
YXNlTXV0ZXgpOwotICAgICAgICBwYXRocyA9IGxpc3REaXJlY3RvcnkobV9zdG9yYWdlRGlyZWN0
b3J5UGF0aCwgIioubG9jYWxzdG9yYWdlIik7CisgICAgICAgIHBhdGhzID0gRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiKi5sb2NhbHN0b3JhZ2UiKTsK
ICAgICB9CiAKICAgICAvLyBVc2UgYSBjb3B5IG9mIG1fb3JpZ2luU2V0IHRvIGZpbmQgZXhwaXJl
ZCBlbnRyaWVzIGFuZCB0byBzY2hlZHVsZSB0aGVpcgpAQCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQg
U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBwYXRoID0gKml0OwogCiAgICAgICAgIGlmIChwYXRoLmxlbmd0aCgp
ID4gZmlsZUV4dGVuc2lvbi5sZW5ndGgoKSAmJiBwYXRoLmVuZHNXaXRoKGZpbGVFeHRlbnNpb24p
KSB7Ci0gICAgICAgICAgICBTdHJpbmcgZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAg
ICAgICAgICAgIFN0cmluZyBmaWxlID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgp
OwogICAgICAgICAgICAgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlLnN1YnN0cmluZygw
LCBmaWxlLmxlbmd0aCgpIC0gZmlsZUV4dGVuc2lvbi5sZW5ndGgoKSk7CiAgICAgICAgICAgICBp
ZiAoIW9yaWdpblNldENvcHkuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAgICAg
ICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRpZmllciwgcGF0aCk7CkBAIC00
MTgsNyArNDE4LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMo
KQogICAgICAgICBpZiAoIWNhbkRlbGV0ZU9yaWdpbihzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgw
KSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBkZWxldGVGaWxlKHN0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzdGF0
ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7CiAKICAgICAgICAgewogICAgICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9jbGllbnRNdXRleCk7CkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogICAgIH0KIAogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgaWYgKCFkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgewog
ICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVyZSBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVsZXRl
IHRoZSBkYXRhYmFzZSBmaWxlIChlLmcgc29tZSBvdGhlciBwcm9ncmFtCiAgICAgICAgIC8vIGxp
a2UgYSB2aXJ1cyBzY2FubmVyIGlzIGFjY2Vzc2luZyBpdCksIG1ha2Ugc3VyZSB0byByZW1vdmUg
YWxsIGVudHJpZXMuCiAgICAgICAgIG9wZW5UcmFja2VyRGF0YWJhc2UoZmFsc2UpOwpAQCAtNDU0
LDcgKzQ1NCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBkZWxldGVFbXB0eURp
cmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICNlbmRpZgogfQogCkBAIC01
MzMsNyArNTMzLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAg
ICAgCiAgICAgYm9vbCBzaG91bGREZWxldGVUcmFja2VyRmlsZXMgPSBmYWxzZTsKICAgICB7CkBA
IC01NDgsOCArNTQ4LDggQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFz
ZS5jbG9zZSgpOwogI2lmICFQTEFURk9STShJT1MpCi0gICAgICAgIGRlbGV0ZUZpbGUodHJhY2tl
ckRhdGFiYXNlUGF0aCgpKTsKLSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9zdG9yYWdl
RGlyZWN0b3J5UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUodHJhY2tlckRh
dGFiYXNlUGF0aCgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
bV9zdG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTY0Miw3ICs2NDIs
NyBAQCBsb25nIGxvbmcgU3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbihTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGxvbmcgbG9uZyBzaXpl
OwotICAgIHJldHVybiBnZXRGaWxlU2l6ZShwYXRoLCBzaXplKSA/IHNpemUgOiAwOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShwYXRoLCBzaXplKSA/IHNpemUgOiAwOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXgg
MzczYjRjYzFmMTAuLjM0YmZiMjkzN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlk
QHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRvIEZpbGVT
eXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKiBTdG9yYWdlL1dl
YkRhdGFiYXNlUHJvdmlkZXIubW06CisKIDIwMTctMTAtMjggIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbRnJhbWVWaWV3OjpsYXlvdXQgY2xlYW51cF0gTW92ZSBj
b3JlIGxheW91dCBsb2dpYyB0byBhIHNlcGFyYXRlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCmluZGV4IGJl
ZmMzZTEzNDZjLi5lMzM3YzZjYzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQpAQCAtNDMsNyArNDMsNyBAQAog
ewogICAgIEFTU0VSVChVUkxTdHJpbmcpOwogICAgIEFTU0VSVChwYXRoKTsKLSAgICBXZWJDb3Jl
OjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVycmVyKTsKKyAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTChwYXRoLCBVUkxTdHJpbmcsIHJlZmVycmVyKTsK
IH0KIAogI2VuZGlmIC8vICFQTEFURk9STShJT1MpCkBAIC01MSw3ICs1MSw3IEBACiAvLyAtW05T
RmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpdIHJldHVybnMgTk8gaWYgdGhlcmUgaXMgYSBi
cm9rZW4gc3ltbGluayBhdCB0aGUgcGF0aC4KIC8vIFNvIHdlIHVzZSB0aGlzIGZ1bmN0aW9uIGlu
c3RlYWQsIHdoaWNoIHJldHVybnMgWUVTIGlmIHRoZXJlIGlzIGFueXRoaW5nIHRoZXJlLCBpbmNs
dWRpbmcKIC8vIGEgYnJva2VuIHN5bWxpbmsuCi1zdGF0aWMgQk9PTCBmaWxlRXhpc3RzKE5TU3Ry
aW5nICpwYXRoKQorc3RhdGljIEJPT0wgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhOU1N0cmluZyAq
cGF0aCkKIHsKICAgICBzdHJ1Y3Qgc3RhdCBzdGF0QnVmZmVyOwogICAgIHJldHVybiAhbHN0YXQo
W3BhdGggZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uXSwgJnN0YXRCdWZmZXIpOwpAQCAtNjMsNyAr
NjMsNyBAQCBzdGF0aWMgQk9PTCBmaWxlRXhpc3RzKE5TU3RyaW5nICpwYXRoKQogICAgIE5TU3Ry
aW5nICpmaWxlbmFtZSA9IFtbcGF0aCBsYXN0UGF0aENvbXBvbmVudF0gX3dlYmtpdF9maWxlbmFt
ZUJ5Rml4aW5nSWxsZWdhbENoYXJhY3RlcnNdOwogICAgIHBhdGggPSBbW3BhdGggc3RyaW5nQnlE
ZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
ZmlsZW5hbWVdOwogCi0gICAgaWYgKGZpbGVFeGlzdHMocGF0aCkpIHsKKyAgICBpZiAoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhwYXRoKSkgewogICAgICAgICAvLyBEb24ndCBvdmVyd3JpdGUgZXhp
c3RpbmcgZmlsZSBieSBhcHBlbmRpbmcgIi1uIiwgIi1uLmV4dCIgb3IgIi1uLmV4dC5leHQiIHRv
IHRoZSBmaWxlbmFtZS4KICAgICAgICAgTlNTdHJpbmcgKmV4dGVuc2lvbnMgPSBuaWw7CiAgICAg
ICAgIE5TU3RyaW5nICpwYXRoV2l0aG91dEV4dGVuc2lvbnM7CkBAIC04MSw3ICs4MSw3IEBAIHN0
YXRpYyBCT09MIGZpbGVFeGlzdHMoTlNTdHJpbmcgKnBhdGgpCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IDsgaSsrKSB7CiAgICAgICAgICAgICBOU1N0cmluZyAqcGF0aFdpdGhBcHBlbmRl
ZE51bWJlciA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAtJWQiLCBwYXRoV2l0aG91
dEV4dGVuc2lvbnMsIGldOwogICAgICAgICAgICAgcGF0aCA9IFtleHRlbnNpb25zIGxlbmd0aF0g
PyBbcGF0aFdpdGhBcHBlbmRlZE51bWJlciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246
ZXh0ZW5zaW9uc10gOiBwYXRoV2l0aEFwcGVuZGVkTnVtYmVyOwotICAgICAgICAgICAgaWYgKCFm
aWxlRXhpc3RzKHBhdGgpKQorICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHBhdGgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtOTIs
NyArOTIsNyBAQCBzdGF0aWMgQk9PTCBmaWxlRXhpc3RzKE5TU3RyaW5nICpwYXRoKQogI2lmIFBM
QVRGT1JNKElPUykKIC0gKE5TU3RyaW5nICopX3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnlXaXRoVGVtcGxhdGVQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4CiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOworICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4KTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRh
dGFiYXNlUHJvdmlkZXIubW0KaW5kZXggNTc2ZDU3NWFjNTkuLjA5OTI5OGJlMjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3Zp
ZGVyLm1tCkBAIC0zMyw5ICszMyw5IEBAIFN0cmluZyBXZWJEYXRhYmFzZVByb3ZpZGVyOjppbmRl
eGVkRGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkKICAgICBOU1VzZXJEZWZhdWx0cyAqZGVmYXVsdHMg
PSBbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdOwogICAgIE5TU3RyaW5nICpk
YXRhYmFzZXNEaXJlY3RvcnkgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OldlYkRhdGFiYXNlRGly
ZWN0b3J5RGVmYXVsdHNLZXldOwogICAgIGlmICghZGF0YWJhc2VzRGlyZWN0b3J5IHx8ICFbZGF0
YWJhc2VzRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAg
IGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChB
U0NJSUxpdGVyYWwoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIpLCBb
W05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKKyAgICAgICAgZGF0YWJh
c2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KEFTQ0lJTGl0ZXJhbCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERC
IiksIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOwogICAgIGVsc2UK
LSAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGRhdGFiYXNlc0RpcmVjdG9yeSwgQVNDSUlMaXRlcmFsKCJfX19JbmRleGVkREIiKSk7
CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgiX19f
SW5kZXhlZERCIikpOwogICAgIAogICAgIHJldHVybiBbZGF0YWJhc2VzRGlyZWN0b3J5IHN0cmlu
Z0J5U3RhbmRhcmRpemluZ1BhdGhdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4
IDQ3NDkxNTcyM2RlLi5hNjIzNzM1OTBiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIwIEBACisyMDE3LTEwLTMxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVp
ZEBzb255LmNvbT4KKworICAgICAgICBBZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxl
U3lzdGVtLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdp
blBhY2thZ2UuY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcDoKKyAgICAg
ICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYkFwcGxpY2F0aW9uQ2Fj
aGUuY3BwOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgICogV2Vi
RG93bmxvYWRDdXJsLmNwcDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAg
ICogV2ViVmlldy5jcHA6CisKIDIwMTctMTAtMjggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbRnJhbWVWaWV3OjpsYXlvdXQgY2xlYW51cF0gTW92ZSBjb3JlIGxh
eW91dCBsb2dpYyB0byBhIHNlcGFyYXRlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCBiMGU2MDZlOTQzMy4uMzI4
NTA2ZjBhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBQbHVnaW5EYXRhYmFzZTo6
cmVmcmVzaCgpCiAgICAgYXV0byBwYXRoc0VuZCA9IHBhdGhzLmVuZCgpOwogICAgIGZvciAoYXV0
byBpdCA9IHBhdGhzLmJlZ2luKCk7IGl0ICE9IHBhdGhzRW5kOyArK2l0KSB7CiAgICAgICAgIHRp
bWVfdCBsYXN0TW9kaWZpZWQ7Ci0gICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
Kml0LCBsYXN0TW9kaWZpZWQpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKCppdCwgbGFzdE1vZGlmaWVkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIHBhdGhzV2l0aFRpbWVzLmFkZCgqaXQsIGxhc3RNb2RpZmllZCk7CkBAIC0zMTMs
MTAgKzMxMywxMCBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpzZXRQcmVmZXJyZWRQbHVnaW5Gb3JN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBQbHVnaQogYm9vbCBQbHVnaW5EYXRhYmFz
ZTo6ZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkgY29u
c3QKIHsKICAgICAvLyBTa2lwIHBsdWdpbiBmaWxlcyB0aGF0IGFyZSBkaXNhYmxlZCBieSBmaWxl
bmFtZS4KLSAgICBpZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKHBhdGhHZXRGaWxl
TmFtZShmaWxlUGF0aCkpKQorICAgIGlmIChtX2Rpc2FibGVkUGx1Z2luRmlsZXMuY29udGFpbnMo
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHJldHVybiBmaWxlRXhpc3RzKGZpbGVQYXRoKTsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCk7CiB9CiAKIHZvaWQgUGx1Z2luRGF0YWJhc2U6
OmdldERlbGV0ZWRQbHVnaW5zKFBsdWdpblNldCYgcGx1Z2lucykgY29uc3QKQEAgLTM4Miw3ICsz
ODIsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVj
dG9yaWVzKCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKIAotICAgIFN0cmluZyB1c2Vy
UGx1Z2luUGF0aCA9IGhvbWVEaXJlY3RvcnlQYXRoKCk7CisgICAgU3RyaW5nIHVzZXJQbHVnaW5Q
YXRoID0gRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKTsKICAgICB1c2VyUGx1Z2luUGF0
aC5hcHBlbmQoU3RyaW5nKCJcXEFwcGxpY2F0aW9uIERhdGFcXE1vemlsbGFcXHBsdWdpbnMiKSk7
CiAgICAgcGF0aHMuYXBwZW5kKHVzZXJQbHVnaW5QYXRoKTsKIApAQCAtMzkxLDcgKzM5MSw3IEBA
IFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMo
KQogCiBib29sIFBsdWdpbkRhdGFiYXNlOjppc1ByZWZlcnJlZFBsdWdpbkRpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgU3RyaW5nIHByZWZlcnJlZFBhdGggPSBob21lRGlyZWN0
b3J5UGF0aCgpOworICAgIFN0cmluZyBwcmVmZXJyZWRQYXRoID0gRmlsZVN5c3RlbTo6aG9tZURp
cmVjdG9yeVBhdGgoKTsKIAogICAgIHByZWZlcnJlZFBhdGguYXBwZW5kKFN0cmluZygiXFxBcHBs
aWNhdGlvbiBEYXRhXFxNb3ppbGxhXFxwbHVnaW5zIikpOwogCkBAIC00MDgsNyArNDA4LDcgQEAg
dm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8
U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAKICAgICBhdXRvIGRpcnNFbmQgPSBtX3BsdWdpbkRpcmVj
dG9yaWVzLmVuZCgpOwogICAgIGZvciAoYXV0byBkSXQgPSBtX3BsdWdpbkRpcmVjdG9yaWVzLmJl
Z2luKCk7IGRJdCAhPSBkaXJzRW5kOyArK2RJdCkgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBw
bHVnaW5QYXRocyA9IGxpc3REaXJlY3RvcnkoKmRJdCwgZmlsZU5hbWVGaWx0ZXIpOworICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBwbHVnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
KmRJdCwgZmlsZU5hbWVGaWx0ZXIpOwogICAgICAgICBhdXRvIHBsdWdpbnNFbmQgPSBwbHVnaW5Q
YXRocy5lbmQoKTsKICAgICAgICAgZm9yIChhdXRvIHBJdCA9IHBsdWdpblBhdGhzLmJlZ2luKCk7
IHBJdCAhPSBwbHVnaW5zRW5kOyArK3BJdCkgewogICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3Rz
QW5kSXNOb3REaXNhYmxlZCgqcEl0KSkKQEAgLTQyMywxNCArNDIzLDE0IEBAIHZvaWQgUGx1Z2lu
RGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBh
dGhzKSBjb25zdAogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9NRVRBREFUQV9DQUNIRSkK
IAotc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCitzdGF0aWMgdm9pZCBmaWxsQnVmZmVy
V2l0aENvbnRlbnRzT2ZGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBW
ZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IDA7CiAgICAg
c2l6ZV90IGJ1ZmZlckNhcGFjaXR5ID0gMTAyNDsKICAgICBidWZmZXIucmVzaXplKGJ1ZmZlckNh
cGFjaXR5KTsKIAogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyU2l6ZSArPSByZWFkRnJvbUZpbGUo
ZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclNpemUsIGJ1ZmZlckNhcGFjaXR5IC0gYnVmZmVy
U2l6ZSk7CisgICAgICAgIGJ1ZmZlclNpemUgKz0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZp
bGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJTaXplLCBidWZmZXJDYXBhY2l0eSAtIGJ1ZmZlclNp
emUpOwogICAgICAgICBpZiAoYnVmZmVyU2l6ZSA9PSBidWZmZXJDYXBhY2l0eSkgewogICAgICAg
ICAgICAgaWYgKGJ1ZmZlckNhcGFjaXR5IDwgbWF4aW11bVBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0
YUNhY2hlU2l6ZSkgewogICAgICAgICAgICAgICAgIGJ1ZmZlckNhcGFjaXR5ICo9IDI7CkBAIC00
NzgsMTEgKzQ3OCwxMSBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFk
YXRhQ2FjaGUoKQogICAgIGlmICghaXNQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoKSB8
fCBwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOwotICAgIFN0cmluZyBhYnNvbHV0ZUNh
Y2hlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNo
ZVBhdGgoKSwgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7Ci0gICAgZmls
ZSA9IG9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBPcGVuRm9yUmVhZCk7CisgICAgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7CisgICAgU3RyaW5nIGFic29sdXRlQ2FjaGVQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBlcnNpc3RlbnRNZXRh
ZGF0YUNhY2hlUGF0aCgpLCBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lKTsK
KyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVT
eXN0ZW06Ok9wZW5Gb3JSZWFkKTsKIAotICAgIGlmICghaXNIYW5kbGVWYWxpZChmaWxlKSkKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIE1hcmsgY2FjaGUgYXMgbG9hZGVkIHJlZ2FyZGxlc3Mgb2Ygc3VjY2VzcyBvciBm
YWlsdXJlLiBJZgpAQCAtNDkxLDExICs0OTEsMTEgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9h
ZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKIAogICAgIFZlY3RvcjxjaGFyPiBmaWxlQ29udGVu
dHM7CiAgICAgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShmaWxlLCBmaWxlQ29udGVudHMp
OwotICAgIGNsb3NlRmlsZShmaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7
CiAKICAgICBpZiAoZmlsZUNvbnRlbnRzLnNpemUoKSA8IDIgfHwgZmlsZUNvbnRlbnRzLmZpcnN0
KCkgIT0gc2NoZW1hVmVyc2lvbiB8fCBmaWxlQ29udGVudHMubGFzdCgpICE9ICdcMCcpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmVhZCBwbHVnaW4gbWV0YWRhdGEgY2FjaGU6IGNv
cnJ1cHQgc2NoZW1hIik7Ci0gICAgICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE4LDEzICs1MTgsMTMgQEAgdm9pZCBQbHVnaW5EYXRh
YmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICAgICAgICAgICAgJiYgcmVh
ZFVURjhTdHJpbmcoZGVzYywgYnVmZmVyUG9zLCBlbmQpCiAgICAgICAgICAgICAgICYmIHJlYWRV
VEY4U3RyaW5nKG1pbWVEZXNjLCBidWZmZXJQb3MsIGVuZCkpKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byByZWFkIHBsdWdpbiBtZXRhZGF0YSBjYWNoZTogY29ycnVwdCBkYXRh
Iik7Ci0gICAgICAgICAgICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2tpcCBtZXRhZGF0YSB0aGF0IHBv
aW50cyB0byBwbHVnaW5zIGZyb20gZGlyZWN0b3JpZXMgdGhhdAogICAgICAgICAvLyBhcmUgbm90
IHBhcnQgb2YgcGx1Z2luIGRpcmVjdG9yeSBsaXN0IGFueW1vcmUuCi0gICAgICAgIFN0cmluZyBw
bHVnaW5EaXJlY3RvcnlOYW1lID0gZGlyZWN0b3J5TmFtZShwYXRoKTsKKyAgICAgICAgU3RyaW5n
IHBsdWdpbkRpcmVjdG9yeU5hbWUgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpOwog
ICAgICAgICBpZiAobV9wbHVnaW5EaXJlY3Rvcmllcy5maW5kKHBsdWdpbkRpcmVjdG9yeU5hbWUp
ID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNTQxLDE2ICs1
NDEsMTYgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hl
KCkKICAgICBtX3BsdWdpblBhdGhzV2l0aFRpbWVzLnN3YXAoY2FjaGVkUGx1Z2luUGF0aHNXaXRo
VGltZXMpOwogfQogCi1zdGF0aWMgYm9vbCB3cml0ZVVURjhTdHJpbmcoUGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RhdGljIGJvb2wgd3JpdGVVVEY4U3Ry
aW5nKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBzdHJpbmcudXRmOCgpOwogICAgIGlu
dCBsZW5ndGggPSB1dGY4U3RyaW5nLmxlbmd0aCgpICsgMTsKLSAgICByZXR1cm4gd3JpdGVUb0Zp
bGUoZmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0gbGVuZ3RoOworICAgIHJldHVy
biBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgbGVuZ3Ro
KSA9PSBsZW5ndGg7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlVGltZShQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZSwgY29uc3QgdGltZV90JiB0aW1lKQorc3RhdGljIGJvb2wgd3JpdGVUaW1lKEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCB0aW1lX3QmIHRpbWUpCiB7Ci0g
ICAgcmV0dXJuIHdyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KCZ0aW1lKSwgc2l6ZW9mKHRpbWVfdCkpID09IHNpemVvZih0aW1lX3QpOworICAgIHJldHVybiBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PigmdGltZSksIHNpemVvZih0aW1lX3QpKSA9PSBzaXplb2YodGltZV90KTsKIH0KIAogdm9pZCBQ
bHVnaW5EYXRhYmFzZTo6dXBkYXRlUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQpAQCAtNTU4LDI2
ICs1NTgsMjYgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6dXBkYXRlUGVyc2lzdGVudE1ldGFkYXRh
Q2FjaGUoKQogICAgIGlmICghaXNQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoKSB8fCBw
ZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSk7
Ci0gICAgU3RyaW5nIGFic29sdXRlQ2FjaGVQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLCBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFD
YWNoZUZpbGVuYW1lKTsKLSAgICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRo
KCkpOworICAgIFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwgcGVyc2lzdGVu
dFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShhYnNvbHV0ZUNhY2hlUGF0aCk7CiAKICAgICBpZiAobV9wbHVnaW5zLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAgZmlsZSA9
IG9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOworICAgIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKIAotICAg
IGlmICghaXNIYW5kbGVWYWxpZChmaWxlKSkgeworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlKSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBvcGVuIHBsdWdp
biBtZXRhZGF0YSBjYWNoZSBmb3Igc2F2aW5nIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBjaGFyIGxvY2FsU2NoZW1hVmVyc2lvbiA9IHNjaGVtYVZlcnNpb247Ci0gICAgaWYgKHdy
aXRlVG9GaWxlKGZpbGUsICZsb2NhbFNjaGVtYVZlcnNpb24sIDEpICE9IDEpIHsKKyAgICBpZiAo
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgJmxvY2FsU2NoZW1hVmVyc2lvbiwgMSkgIT0g
MSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB3cml0ZSBwbHVnaW4gbWV0YWRhdGEg
Y2FjaGUgc2NoZW1hIik7Ci0gICAgICAgIGNsb3NlRmlsZShmaWxlKTsKLSAgICAgICAgZGVsZXRl
RmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTU4OSwxMyArNTg5LDEzIEBAIHZvaWQgUGx1
Z2luRGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICAgICAgICAg
ICAgJiYgd3JpdGVVVEY4U3RyaW5nKGZpbGUsICgqaXQpLT5kZXNjcmlwdGlvbigpKQogICAgICAg
ICAgICAgICAmJiB3cml0ZVVURjhTdHJpbmcoZmlsZSwgKCppdCktPmZ1bGxNSU1FRGVzY3JpcHRp
b24oKSkpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byB3cml0ZSBwbHVnaW4g
bWV0YWRhdGEgdG8gY2FjaGUiKTsKLSAgICAgICAgICAgIGNsb3NlRmlsZShmaWxlKTsKLSAgICAg
ICAgICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOworICAgICAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShhYnNvbHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGUpOwogfQogCiBib29sIFBsdWdpbkRhdGFiYXNlOjppc1BlcnNpc3RlbnRNZXRhZGF0YUNhY2hl
RW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblBhY2thZ2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmNwcAppbmRleCA3ZGRlMmNiMDI3Ny4uNmFmZjUxZDA2OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIFBsdWdpblBhY2thZ2U6OlBsdWdpblBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCkKICAgICAsIG1faW5mb0lzRnJvbUNhY2hlKHRy
dWUpCiAjZW5kaWYKIHsKLSAgICBtX2ZpbGVOYW1lID0gcGF0aEdldEZpbGVOYW1lKG1fcGF0aCk7
CisgICAgbV9maWxlTmFtZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX3BhdGgpOwog
ICAgIG1fcGFyZW50RGlyZWN0b3J5ID0gbV9wYXRoLmxlZnQobV9wYXRoLmxlbmd0aCgpIC0gbV9m
aWxlTmFtZS5sZW5ndGgoKSAtIDEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5kZXggMTM4N2ZhYmIwMTAuLmM2OWUxZTkwMTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0u
Y3BwCkBAIC02NSw3ICs2NSw3IEBAIFBsdWdpblN0cmVhbTo6UGx1Z2luU3RyZWFtKFBsdWdpblN0
cmVhbUNsaWVudCogY2xpZW50LCBGcmFtZSogZnJhbWUsIGNvbnN0IFJlc291CiAgICAgLCBtX3N0
cmVhbVN0YXRlKFN0cmVhbUJlZm9yZVN0YXJ0ZWQpCiAgICAgLCBtX2xvYWRNYW51YWxseShmYWxz
ZSkKICAgICAsIG1fZGVsYXlEZWxpdmVyeVRpbWVyKCp0aGlzLCAmUGx1Z2luU3RyZWFtOjpkZWxh
eURlbGl2ZXJ5VGltZXJGaXJlZCkKLSAgICAsIG1fdGVtcEZpbGVIYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fdGVtcEZpbGVIYW5kbGUoRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAsIG1fcGx1Z2luRnVuY3MocGx1Z2luRnVuY3MpCiAg
ICAgLCBtX2luc3RhbmNlKGluc3RhbmNlKQogICAgICwgbV9xdWlya3MocXVpcmtzKQpAQCAtMjEy
LDEwICsyMTIsMTAgQEAgdm9pZCBQbHVnaW5TdHJlYW06OnN0YXJ0U3RyZWFtKCkKICAgICBpZiAo
bV90cmFuc2Zlck1vZGUgPT0gTlBfTk9STUFMKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
dGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgiV0tQIiwgbV90ZW1wRmlsZUhhbmRsZSk7CisgICAgbV9w
YXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIldLUCIsIG1fdGVtcEZpbGVIYW5k
bGUpOwogCiAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3JvbmcsIGNhbmNlbCBsb2FkaW5nIHRoZSBz
dHJlYW0KLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQobV90ZW1wRmlsZUhhbmRsZSkpCisgICAgaWYg
KCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKQogICAgICAgICBj
YW5jZWxBbmREZXN0cm95U3RyZWFtKE5QUkVTX05FVFdPUktfRVJSKTsKIH0KIApAQCAtMjU0LDcg
KzI1NCw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpkZXN0cm95U3RyZWFtKCkKICAgICBBU1NFUlQo
bV9yZWFzb24gIT0gV2ViUmVhc29uTm9uZSk7CiAgICAgQVNTRVJUKCFtX2RlbGl2ZXJ5RGF0YSB8
fCBtX2RlbGl2ZXJ5RGF0YS0+c2l6ZSgpID09IDApOwogCi0gICAgY2xvc2VGaWxlKG1fdGVtcEZp
bGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX3RlbXBGaWxlSGFuZGxlKTsK
IAogICAgIGJvb2wgbmV3U3RyZWFtQ2FsbGVkID0gbV9zdHJlYW0ubmRhdGE7CiAKQEAgLTMxOSw3
ICszMTksNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGVzdHJveVN0cmVhbSgpCiAgICAgICAgIG1f
Y2xpZW50LT5zdHJlYW1EaWRGaW5pc2hMb2FkaW5nKHRoaXMpOwogCiAgICAgaWYgKCFtX3BhdGgu
aXNOdWxsKCkpCi0gICAgICAgIGRlbGV0ZUZpbGUobV9wYXRoKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShtX3BhdGgpOwogfQogCiB2b2lkIFBsdWdpblN0cmVhbTo6ZGVsYXlEZWxp
dmVyeVRpbWVyRmlyZWQoKQpAQCAtNDQwLDggKzQ0MCw4IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpk
aWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBj
aGFyCiAgICAgICAgIGRlbGl2ZXJEYXRhKCk7CiAgICAgfQogCi0gICAgaWYgKG1fc3RyZWFtU3Rh
dGUgIT0gU3RyZWFtU3RvcHBlZCAmJiBpc0hhbmRsZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKSB7
Ci0gICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShtX3RlbXBGaWxlSGFuZGxl
LCBkYXRhLCBsZW5ndGgpOworICAgIGlmIChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0b3BwZWQg
JiYgRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkgeworICAgICAg
ICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV90ZW1wRmlsZUhh
bmRsZSwgZGF0YSwgbGVuZ3RoKTsKICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBsZW5ndGgp
CiAgICAgICAgICAgICBjYW5jZWxBbmREZXN0cm95U3RyZWFtKE5QUkVTX05FVFdPUktfRVJSKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blN0cmVhbS5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0u
aAppbmRleCAzYjZjNzEwNWYxMC4uMWU1YWYzMGVlMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaApAQCAtMTA1LDcgKzEwNSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPGNoYXI+PiBt
X2RlbGl2ZXJ5RGF0YTsKIAotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV90ZW1wRmlsZUhh
bmRsZTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fdGVtcEZpbGVI
YW5kbGU7CiAKICAgICAgICAgY29uc3QgTlBQbHVnaW5GdW5jcyogbV9wbHVnaW5GdW5jczsKICAg
ICAgICAgTlBQIG1faW5zdGFuY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFw
cGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IGRjZDU0YThiOTMyLi4xZWE5MDE3OGFkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTY2
LDcgKzY2LDcgQEAgV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25DYWNoZTo6Y3Jl
YXRlSW5zdGFuY2UoKQogCiBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIHsK
LSAgICBTdHJpbmcgcGF0aCA9IGxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwor
ICAgIFN0cmluZyBwYXRoID0gRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCk7CiAKICNpZiBVU0UoQ0YpCiAgICAgYXV0byBjYWNoZURpcmVjdG9yeVByZWZlcmVu
Y2UgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURl
ZmF1bHRzS2V5LCBXZWJQcmVmZXJlbmNlczo6YXBwbGljYXRpb25JZCgpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCA5YzQ2ZjRiMjI0
Ny4uZmI1NDQwODAyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJh
c2VNYW5hZ2VyLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBkYXRh
YmFzZXNEaXJlY3RvcnkoKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KGRpcmVjdG9yeVByZWYuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwogfQogCiB2b2lkIFdlYktp
dEluaXRpYWxpemVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAppbmRleCAxNjBlOWJiYzViMS4uODczMjc3OGQ5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcApAQCAtMjE2
LDcgKzIxNiw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgICAgICBTdHJpbmcgc3VnZ2VzdGVkRmls
ZW5hbWUgPSByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogICAgICAgICBpZiAoc3VnZ2Vz
dGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBw
YXRoR2V0RmlsZU5hbWUocmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocmVzcG9uc2UudXJs
KCkuc3RyaW5nKCkpOwogICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY29kZVVSTEVzY2Fw
ZVNlcXVlbmNlcyhzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgIEJTdHJpbmcgc3VnZ2VzdGVk
RmlsZW5hbWVCU1RSKHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICAgICAgbV9kZWxlZ2F0ZS0+ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUodGhpcywgc3VnZ2VzdGVkRmlsZW5h
bWVCU1RSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRl
eCBmNDQ2MWI2ZWYxOC4uZjExNTBlZTcyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgdXNpbmcgc3RkOjpudW1lcmljX2xp
bWl0czsKIAogc3RhdGljIGNvbnN0IFN0cmluZyYgb2xkUHJlZmVyZW5jZXNQYXRoKCkKIHsKLSAg
ICBzdGF0aWMgU3RyaW5nIHBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9hbWluZ1Vz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldlYktpdFByZWZlcmVuY2VzLnBsaXN0Iik7
CisgICAgc3RhdGljIFN0cmluZyBwYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJXZWJLaXRQcmVmZXJlbmNlcy5wbGlzdCIpOwogICAgIHJldHVybiBwYXRoOwogfQogCkBAIC01
MTYsNyArNTE2LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6bWlncmF0ZVdlYktpdFByZWZlcmVu
Y2VzVG9DRlByZWZlcmVuY2VzKCkKIAogICAgIGNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVm
ZXJlbmNlcyhzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHBsaXN0LmdldCgpKSk7CiAKLSAg
ICBkZWxldGVGaWxlKG9sZFByZWZlcmVuY2VzUGF0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG9sZFByZWZlcmVuY2VzUGF0aCgpKTsKIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6
Y29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCAzOWU0MzhjMzYwZC4uMDk0YjY1
MDM2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC01MDcsNyArNTA3LDcg
QEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkK
ICAgICAgICAgaWYgKHByZWZlcmVuY2UgJiYgKENGU3RyaW5nR2V0VHlwZUlEKCkgPT0gQ0ZHZXRU
eXBlSUQocHJlZmVyZW5jZS5nZXQoKSkpKQogICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9y
eSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByZWZlcmVuY2UubGVha1JlZigp
KSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJD
b3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygp
OworICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgfQogICAgIGNhY2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0
KCkpOwogICAgIENGSW5kZXggY2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjlmYWM4ZTBjMWIuLjFkMDQ5
YWU5ODRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5y
ZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRvIEZp
bGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHA6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3Qu
bW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bToKKwogMjAxNy0xMC0zMCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW1dQRV0gRml4IGJ1aWxkIHdhcm5pbmdzCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBmZGUxZmUxMDM4MC4uMGI1OWVhMTcz
ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAt
MjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBTdHJpbmcgbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJl
ZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBwYXRoLmxlbmd0aCgpKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlmCiAKQEAgLTkxMiw3ICs5MTIsNyBAQCBz
dGF0aWMgdm9pZCBzZXRDYWNoZUZvbGRlcigpCiAKICAgICBDT01QdHI8SVdlYkNhY2hlPiB3ZWJD
YWNoZTsKICAgICBpZiAoU1VDQ0VFREVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dlYkNh
Y2hlLCAwLCBJSURfSVdlYkNhY2hlLCAodm9pZCoqKSZ3ZWJDYWNoZSkpKSB7Ci0gICAgICAgIF9i
c3RyX3QgY2FjaGVGb2xkZXIgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGli
cmFyeVBhdGgsICJMb2NhbENhY2hlIikudXRmOCgpLmRhdGEoKTsKKyAgICAgICAgX2JzdHJfdCBj
YWNoZUZvbGRlciA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS51dGY4KCkuZGF0YSgpOwogICAgICAgICB3ZWJD
YWNoZS0+c2V0Q2FjaGVGb2xkZXIoY2FjaGVGb2xkZXIpOwogICAgIH0KIH0KQEAgLTkyOSw5ICs5
MjksOSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3Rp
bmcoKQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRy
ZWUoKTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNyZWF0aW5nIHRoZSBX
ZWJWaWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25zIHdpbGwgc2VlIHRoZXNl
IHByZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFi
YXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElk
LmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVjdG9y
eURlZmF1bHRzS2V5LCBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBh
dGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7
Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tl
eSwgV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxD
YWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZl
cmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiRGF0
YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJl
ZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxv
Y2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBD
RlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJM
b2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwogI2VuZGlm
CiB9CiAKQEAgLTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3Vy
cmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciog
cGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpk
aXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKIAogICAgIHdj
aGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgs
IHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEo
KSwgX01BWF9QQVRIKSkKQEAgLTEwNTAsMjAgKzEwNTAsMjAgQEAgc3RhdGljIFN0cmluZyBmaW5k
Rm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9IHBhdGhUb0NoZWNrLnN1YnN0cmlu
Zyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7Ci0gICAgU3RyaW5nIHBvc3Np
YmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRv
Q2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwg
InBsYXRmb3JtXFx3aW4iKTsKKyAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5zdWJz
dHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1c
XHdpbiIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9zc2libGVQYXRoczsKLSAgICBwb3NzaWJs
ZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQ
YXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOworICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xv
Z3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhU
b1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYg
bmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAgICAgIHBhdGhUb1Rlc3Qg
PSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsKLSAgICAgICAgcG9z
c2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3Np
YmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2libGVQYXRocy5hcHBl
bmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxl
UGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBh
dGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQogCiAgICAgZm9yIChWZWN0b3I8U3Ry
aW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBwb3MgIT0gcG9zc2li
bGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOyAKKyAg
ICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwogCiAgICAgICAgIGlmICg6OlBh
dGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1p
bmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9Gb250RmFsbGJhY2s7
CkBAIC0xMDc3LDcgKzEwNzcsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJhY2tJZlByZXNl
bnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQ
YXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFj
ayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAi
TWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxi
YWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRG
YWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAg
aWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xMDkwLDcgKzEwOTAsNyBA
QCBzdGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBm
b250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9u
dC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMt
Y29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhp
c3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkp
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCBmYmNjNjIzZmJmYy4uMjUyNzQ0YjQyMWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcApA
QCAtNTUsMTkgKzU1LDE5IEBAIHB1YmxpYzoKICAgICAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1h
aW5SdW5Mb29wKCk7CiAgICAgICAgIAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAg
ICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0g
b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIEFTU0VS
VF9ORShoYW5kbGUsIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwor
ICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIGludCByYyA9IHdyaXRlVG9GaWxlKGhhbmRsZSwg
RmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRvclRlc3REYXRhLmxl
bmd0aCgpKTsKKyAgICAgICAgaW50IHJjID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxl
LCBGaWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEu
bGVuZ3RoKCkpOwogICAgICAgICBBU1NFUlRfTkUocmMsIC0xKTsKICAgICAgICAgCi0gICAgICAg
IGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFN0cmluZyYg
dGVtcEZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVBhdGg7IH0KQEAgLTExNCwxOSArMTE0
LDE5IEBAIHN0YXRpYyBTdHJpbmcgcmVhZENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKICAgICBjb25zdGV4cHIgaW50IGJ1ZmZlclNpemUgPSAxMDI0OwogCi0gICAgYXV0byBz
b3VyY2UgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZh
bGlkKHNvdXJjZSkpCisgICAgYXV0byBzb3VyY2UgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRo
LCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKHNvdXJjZSkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3Ry
aW5nQnVmZmVyPExDaGFyPiBidWZmZXIoYnVmZmVyU2l6ZSk7CiAKICAgICBhdXRvIGZpbGVDbG9z
ZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3NvdXJjZV0oKSB7Ci0gICAgICAgIFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAg
ICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOworICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKIAogICAgIC8vIFNp
bmNlIHdlIGNvbnRyb2wgdGhlIHRlc3QgZmlsZXMsIHdlIGtub3cgd2Ugb25seSBuZWVkIG9uZSBy
ZWFkCi0gICAgaW50IHJlYWRCeXRlcyA9IHJlYWRGcm9tRmlsZShzb3VyY2UsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5jaGFyYWN0ZXJzKCkpLCBidWZmZXJTaXplKTsKKyAgICBpbnQg
cmVhZEJ5dGVzID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKHNvdXJjZSwgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oYnVmZmVyLmNoYXJhY3RlcnMoKSksIGJ1ZmZlclNpemUpOwogICAgIGlmIChy
ZWFkQnl0ZXMgPCAwKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIApAQCAtMTQyLDcg
KzE0Miw3IEBAIHN0YXRpYyBTdHJpbmcgcmVhZENvbnRlbnRzT2ZGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIAogVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogewotICAgIEVY
UEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjpp
bml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMTg0LDcgKzE4NCw3IEBAIFRFU1RfRihGaWxl
TW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKIAogVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0
ZWN0TXVsdGlwbGVDaGFuZ2VzKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZp
bGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBG
aWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApA
QCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxl
Q2hhbmdlcykKIAogVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiB7Ci0g
ICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAogICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC0yODMsNyArMjgzLDcgQEAgVEVTVF9G
KEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0RGVsZXRpb24pCiAKIFRFU1RfRihGaWxlTW9uaXRvclRl
c3QsIERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUpCiB7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4
aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVu
TG9vcCgpOwogCkBAIC0zNDAsNyArMzQwLDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0
ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKIAogVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0
RGVsZXRlQnV0Tm90U3Vic2VxdWVudENoYW5nZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhp
c3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CiAKQEAgLTM3NywxMiArMzc3LDEyIEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERl
dGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAgICAgcmVzZXRUZXN0U3RhdGUoKTsK
IAogICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewotICAgICAgICBF
WFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOworICAgICAgICBFWFBFQ1Rf
RkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCi0gICAgICAg
IGF1dG8gaGFuZGxlID0gb3BlbkZpbGUodGVtcEZpbGVQYXRoKCksIE9wZW5Gb3JXcml0ZSk7Ci0g
ICAgICAgIEFTU0VSVF9ORShoYW5kbGUsIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAg
ICAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBG
aWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKIAotICAgICAgICBpbnQgcmMgPSB3
cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmls
ZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CisgICAgICAgIGludCByYyA9IEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBG
aWxlTW9uaXRvclRlc3REYXRhLmxlbmd0aCgpKTsKICAgICAgICAgQVNTRVJUX05FKHJjLCAtMSk7
CiAKICAgICAgICAgYXV0byBmaXJzdENvbW1hbmQgPSBjcmVhdGVDb21tYW5kKHRlbXBGaWxlUGF0
aCgpLCBGaWxlTW9uaXRvclJldmlzZWREYXRhKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAppbmRleCA3ZjZmOTc0OThkMS4uZjI1ODY2OTQ2
MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lz
dGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3Rl
bS5jcHAKQEAgLTQ2LDM1ICs0NiwzNSBAQCBwdWJsaWM6CiAgICAgICAgIFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWQoKTsKICAgICAgICAgCiAgICAgICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUKLSAg
ICAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGgg
PSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgd3Jp
dGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVz
dERhdGEpKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRhLCBz
dHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShoYW5kbGUpOwogCiAgICAgICAgIG1fdGVtcEZpbGVTeW1saW5rUGF0aCA9IG1fdGVtcEZpbGVQ
YXRoICsgIi1zeW1saW5rIjsKLSAgICAgICAgY3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQ
YXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpjcmVhdGVT
eW1ib2xpY0xpbmsobV90ZW1wRmlsZVBhdGgsIG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CiAKLSAg
ICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlU
ZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBt
X3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBF
bXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CiAKLSAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5UZW1wb3Jh
cnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmls
ZShoYW5kbGUpOworICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICAgICAgbV9iYW5nQ29u
dGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxl
IiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1fYmFuZ0Nv
bnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVt
cHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwogCi0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VG
aWxlKGhhbmRsZSk7CisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogCiAgICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBkZWxldGVGaWxlKG1fdGVtcEZp
bGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwotICAg
ICAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxl
KG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxlKG1fYmFuZ0Nv
bnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdG
aWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRo
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoKTsKICAgICB9CiAKICAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJu
IG1fdGVtcEZpbGVQYXRoOyB9CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiBURVNUX0YoRmls
ZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0g
ICAgTWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmls
ZSIpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxl
RGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9G
QUxTRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwogfQpAQCAt
MTA0LDcgKzEwNCw3IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxl
KQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQogewogICAgIGJv
b2wgc3VjY2VzczsKLSAgICBNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBh
dGgoKSwgc3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmls
ZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3Mp
OwogICAgIEVYUEVDVF9UUlVFKCEhbWFwcGVkRmlsZURhdGEpOwogICAgIEVYUEVDVF9UUlVFKG1h
cHBlZEZpbGVEYXRhLnNpemUoKSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CkBAIC0x
MTQsMjYgKzExNCwyNiBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0Zp
bGUpCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0VtcHR5RmlsZSkKIHsK
ICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgTWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVt
cEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEgbWFwcGVkRmlsZURhdGEodGVtcEVtcHR5RmlsZVBhdGgoKSwgc3VjY2Vzcyk7CiAgICAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKIH0K
IAogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBGaWxlc0hhdmVTYW1lVm9sdW1lKQogewotICAgIEVY
UEVDVF9UUlVFKGZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFp
bmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hhdmVTYW1lVm9sdW1lKHNw
YWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSkpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgp
LCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5nRmls
ZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1
bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7
CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29u
dGFpbmluZ0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKIH0KIAogVEVT
VF9GKEZpbGVTeXN0ZW1UZXN0LCBHZXRGaWxlTWV0YWRhdGFTeW1saW5rKQogewotICAgIGF1dG8g
c3ltbGlua01ldGFkYXRhID0gZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7Cisg
ICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEodGVtcEZp
bGVTeW1saW5rUGF0aCgpKTsKICAgICBBU1NFUlRfVFJVRShzeW1saW5rTWV0YWRhdGEuaGFzX3Zh
bHVlKCkpOwogICAgIEVYUEVDVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0g
RmlsZU1ldGFkYXRhOjpUeXBlOjpTeW1ib2xpY0xpbmspOwogICAgIEVYUEVDVF9GQUxTRShzdGF0
aWNfY2FzdDxzaXplX3Q+KHN5bWxpbmtNZXRhZGF0YS52YWx1ZSgpLmxlbmd0aCkgPT0gc3RybGVu
KEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwogCi0gICAgYXV0byB0YXJnZXRNZXRhZGF0YSA9IGZpbGVN
ZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CisgICAgYXV0
byB0YXJnZXRNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxp
bmtzKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CiAgICAgQVNTRVJUX1RSVUUodGFyZ2V0TWV0YWRh
dGEuaGFzX3ZhbHVlKCkpOwogICAgIEVYUEVDVF9UUlVFKHRhcmdldE1ldGFkYXRhLnZhbHVlKCku
dHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkZpbGUpOwogICAgIEVYUEVDVF9FUShzdHJsZW4o
RmlsZVN5c3RlbVRlc3REYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0YXJnZXRNZXRhZGF0YS52
YWx1ZSgpLmxlbmd0aCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggMzJjZTM2MThkZTUuLmI5MjgzMjRmMzU5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5jcHAKQEAgLTQxLDI2ICs0MSwyNiBAQCBwdWJsaWM6CiAgICAgICAgIFdURjo6aW5pdGlh
bGl6ZU1haW5UaHJlYWQoKTsKIAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAg
IFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gb3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmls
ZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
OworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOwotICAgICAg
ICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhh
bmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICAK
LSAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRl
bXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7
CisgICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9xdW90ZUNvbnRh
aW5pbmdGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUi
LCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9xdW90ZUNv
bnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJF
bXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKICAgICB9CiAKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIGRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxlKG1f
c3BhY2VDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxlKG1fYmFuZ0NvbnRh
aW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxl
UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0
aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxl
UGF0aCk7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQYXRoKCkgeyBy
ZXR1cm4gbV90ZW1wRmlsZVBhdGg7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCBhMjk3YTU1YjgzMy4uOGZl
MzU2N2MxZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
aGFyZWRCdWZmZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKQEAgLTM4LDE5ICszOCwxOSBAQCB2b2lkIFNoYXJlZEJ1
ZmZlclRlc3Q6OlNldFVwKCkKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKICAg
ICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAg
ICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5k
bGUpOwotICAgIHdyaXRlVG9GaWxlKGhhbmRsZSwgdGVzdERhdGEoKSwgc3RybGVuKHRlc3REYXRh
KCkpKTsKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlOworICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRl
bXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoaGFuZGxlLCB0ZXN0RGF0YSgpLCBzdHJsZW4odGVzdERhdGEoKSkpOworICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgY2xv
c2VGaWxlKGhhbmRsZSk7CisgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiB9CiAKIHZvaWQgU2hhcmVkQnVmZmVyVGVzdDo6VGVh
ckRvd24oKQogewotICAgIGRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAgIGRlbGV0ZUZp
bGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Rl
bXBGaWxlUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQ
YXRoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3Qu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFj
a2VyVGVzdC5tbQppbmRleCBhMjBiMzgzMTU2Ni4uMmUyYzM5NDc4ZTUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFz
ZVRyYWNrZXJUZXN0Lm1tCkBAIC00MCwyMSArNDAsMjEgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eSkK
IHsKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgIFN0cmluZyBkYXRhYmFzZUZp
bGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eURhdGFiYXNlIiwgaGFuZGxlKTsK
LSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOworICAgIFN0cmluZyBkYXRhYmFzZUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eURhdGFiYXNlIiwgaGFuZGxlKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICBn
ZXRGaWxlU2l6ZShkYXRhYmFzZUZpbGVQYXRoLCBmaWxlU2l6ZSk7CisgICAgRmlsZVN5c3RlbTo6
Z2V0RmlsZVNpemUoZGF0YWJhc2VGaWxlUGF0aCwgZmlsZVNpemUpOwogICAgIEVYUEVDVF9FUSgw
LCBmaWxlU2l6ZSk7CiAKICAgICBFWFBFQ1RfVFJVRShEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURh
dGFiYXNlRmlsZUlmRW1wdHkoZGF0YWJhc2VGaWxlUGF0aCkpOwogCi0gICAgYm9vbCBmaWxlU3Rp
bGxFeGlzdHMgPSBmaWxlRXhpc3RzKGRhdGFiYXNlRmlsZVBhdGgpOworICAgIGJvb2wgZmlsZVN0
aWxsRXhpc3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZUZpbGVQYXRoKTsKICAg
ICBFWFBFQ1RfRkFMU0UoZmlsZVN0aWxsRXhpc3RzKTsKIAogICAgIGlmIChmaWxlU3RpbGxFeGlz
dHMpCi0gICAgICAgIGRlbGV0ZUZpbGUoZGF0YWJhc2VGaWxlUGF0aCk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZGF0YWJhc2VGaWxlUGF0aCk7CiB9CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCkBAIC03OCwxOSArNzgsMTkgQEAgc3RhdGljIHZvaWQgYWRkVG9EYXRhYmFzZXNU
YWJsZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCwgY29uc3QgU2VjdXJpdHlPcmlnaW4KIAog
c3RhdGljIHZvaWQgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnlQYXRoKQogewotICAgIGZvciAoY29uc3QgYXV0byYgZmlsZSA6IGxpc3REaXJlY3Rv
cnkoZGlyZWN0b3J5UGF0aCwgIioiKSkKLSAgICAgICAgRVhQRUNUX1RSVUUoZGVsZXRlRmlsZShm
aWxlKSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBmaWxlIDogRmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShkaXJlY3RvcnlQYXRoLCAiKiIpKQorICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGUpKTsKIAotICAgIGlmIChmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgp
KQotICAgICAgICBFWFBFQ1RfVFJVRShkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnlQYXRo
KSk7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCisgICAg
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9y
eVBhdGgpKTsKIH0KIAogc3RhdGljIHZvaWQgY3JlYXRlRmlsZUF0UGF0aChjb25zdCBTdHJpbmcm
IHBhdGgpCiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUgPSBvcGVuRmlsZShw
YXRoLCBPcGVuRm9yV3JpdGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlSGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZv
cldyaXRlKTsKICAgICBFWFBFQ1RfTkUoLTEsIGZpbGVIYW5kbGUpOwotICAgIGNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHBhdGgpKTsKKyAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhwYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVP
cmlnaW4pCkBAIC05OSw3ICs5OSw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmln
aW4pCiAgICAgLy8gdGFibGVzLCBhbmQgYW4gYWN0dWFsIGRhdGFiYXNlIG9uIGRpc2suCiAgICAg
Ly8gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSBvcmlnaW4ncyBpbmZvcm1hdGlv
biBmcm9tIGJvdGggdGhlIE9yaWdpbnMKICAgICAvLyBhbmQgRGF0YWJhc2VzIHRhYmxlcywgYW5k
IHJlbW92ZSB0aGUgZGF0YWJhc2UgZnJvbSBkaXNrLgotICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJl
Y3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBOU1N0cmlu
ZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJTUUxEaXJl
Y3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUcmFja2Vy
PiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQ
YXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0xMDgsMTYgKzEwOCwxNiBAQCBURVNUKERh
dGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVv
dGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNl
cy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdl
YkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxl
KGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwog
ICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVz
KG9yaWdpbikuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKLSAgICBFWFBFQ1RfVFJVRShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkp
OwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBv
cmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCiAgICAgU3Ry
aW5nIGZ1bGxXZWJEYXRhYmFzZVBhdGggPSBkYXRhYmFzZVRyYWNrZXItPmZ1bGxQYXRoRm9yRGF0
YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKICAgICBjcmVhdGVGaWxlQXRQ
YXRoKGZ1bGxXZWJEYXRhYmFzZVBhdGgpOwpAQCAtMTI4LDE0ICsxMjgsMTQgQEAgVEVTVChEYXRh
YmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbikKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBFWFBF
Q1RfVFJVRShEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoZnVsbFdl
YkRhdGFiYXNlUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9y
aWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVj
dG9yeShvcmlnaW5QYXRoKSk7CiAjZWxzZQotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGZ1
bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhvcmlnaW5Q
YXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFdlYkRh
dGFiYXNlUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9y
aWdpblBhdGgpKTsKICNlbmRpZgogCiAgICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRh
YmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKQEAgLTE0Myw3ICsxNDMsNyBA
QCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRhdGFiYXNlRG9lc05vdEV4
aXN0KQogICAgIC8vIFRlc3QgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgaXMgYW4gZW50cnkgaW4gYm90
aCB0aGUgT3JpZ2lucyBhbmQgRGF0YWJhc2VzIHRhYmxlcywKICAgICAvLyBidXQgbm90IGFuIGFj
dHVhbCBkYXRhYmFzZSBvbiBkaXNrLgogICAgIC8vIFRoZSBpbmZvcm1hdGlvbiBzaG91bGQgc3Rp
bGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB0YWJsZXMuCi0gICAgTlNTdHJpbmcgKndlYlNRTERpcmVj
dG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOworICAgIE5TU3RyaW5n
ICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNRTERpcmVj
dG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+
IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBh
dGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTE1MiwxNSArMTUyLDE1IEBAIFRFU1QoRGF0
YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiAgICAg
ZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9F
USgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAg
IFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0
cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNl
cy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQ
YXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25hbWUiOwog
ICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdlYkRhdGFiYXNl
TmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFz
ZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwogCiAgICAgU3RyaW5nIHdl
YkRhdGFiYXNlRnVsbFBhdGggPSBkYXRhYmFzZVRyYWNrZXItPmZ1bGxQYXRoRm9yRGF0YWJhc2Uo
b3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4
aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0aCkpOwogCiAgICAgRVhQRUNUX1RSVUUoZGF0
YWJhc2VUcmFja2VyLT5kZWxldGVPcmlnaW4ob3JpZ2luKSk7CiAKQEAgLTE2OCw3ICsxNjgsNyBA
QCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRhdGFiYXNlRG9lc05vdEV4
aXN0KQogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmln
aW4pLmlzRW1wdHkoKSk7CiAKICAgICByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhkYXRh
YmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVs
ZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCkBAIC0xNzgsNyArMTc4LDcgQEAg
VEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFzZUZh
aWxzKQogICAgIC8vIFdoZW4gd2UgY2FsbCBkZWxldGVPcmlnaW4oKSwgZGVsZXRpbmcgb25lIG9m
IHRoZXNlIGRhdGFiYXNlcyBmYWlscy4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNob3VsZG4n
dCByZW1vdmUgdGhlIGluZm9ybWF0aW9uIGZyb20gZWl0aGVyIHRoZSBEYXRhYmFzZXMgb3IKICAg
ICAvLyBPcmlnaW5zIHRhYmxlcy4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIp
OwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhT
dHJpbmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VU
cmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFz
ZURpcmVjdG9yeVBhdGgpOwpAQCAtMTg3LDE2ICsxODcsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNr
ZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFzZUZhaWxzKQogICAgIGRhdGFiYXNl
VHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2ln
bmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcg
ZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJh
c2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsK
KyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwog
CiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRU
b0RhdGFiYXNlc1RhYmxlKGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJk
YXRhYmFzZS5kYiIpOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2Vy
LT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBvcmlnaW5QYXRo
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2lu
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBFWFBFQ1RfVFJVRShtYWtlQWxsRGlyZWN0b3Jp
ZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkp
OworICAgIFN0cmluZyBvcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2lu
UGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0
aCkpOwogCiAgICAgU3RyaW5nIGZ1bGxXZWJEYXRhYmFzZVBhdGggPSBkYXRhYmFzZVRyYWNrZXIt
PmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKICAg
ICBjcmVhdGVGaWxlQXRQYXRoKGZ1bGxXZWJEYXRhYmFzZVBhdGgpOwpAQCAtMjA5LDggKzIwOSw4
IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJh
c2VGYWlscykKIAogICAgIEVYUEVDVF9GQUxTRShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZU9yaWdp
bihvcmlnaW4pKTsKIAotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZnVsbFdlYkRhdGFiYXNl
UGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOwor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCiAg
ICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXpl
KCkpOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFz
ZU5hbWVzKG9yaWdpbikuc2l6ZSgpKTsKQEAgLTIyMSwxMSArMjIxLDExIEBAIFRFU1QoRGF0YWJh
c2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICBj
aGZsYWdzKGZ1bGxXZWJEYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSwgMCk7CiAjZW5kaWYKIAot
ICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUZpbGUoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOwotICAgIEVY
UEVDVF9UUlVFKGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7
CiAKICAgICByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkp
OworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCkpOwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2l0aE1p
c3NpbmdFbnRyeUluRGF0YWJhc2VzVGFibGUpCkBAIC0yMzQsNyArMjM0LDcgQEAgVEVTVChEYXRh
YmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldpdGhNaXNzaW5nRW50cnlJbkRhdGFiYXNlc1RhYmxl
KQogICAgIC8vIHRoZSBEYXRhYmFzZXMgdGFibGUuIFRoZXJlIGlzIGFuIGFjdHVhbCBkYXRhYmFz
ZSBvbiBkaXNrLgogICAgIC8vIFRoZSBpbmZvcm1hdGlvbiBzaG91bGQgc3RpbGwgYmUgcmVtb3Zl
ZCBmcm9tIHRoZSBPcmlnaW5zIHRhYmxlLCBhbmQgdGhlCiAgICAgLy8gZGF0YWJhc2Ugc2hvdWxk
IGJlIGRlbGV0ZWQgZnJvbSBkaXNrLgotICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FM
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FM
Iik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRG
OFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFz
ZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0yNDMsMjggKzI0MywyOCBAQCBURVNUKERhdGFiYXNlVHJh
Y2tlciwgRGVsZXRlT3JpZ2luV2l0aE1pc3NpbmdFbnRyeUluRGF0YWJhc2VzVGFibGUpCiAgICAg
ZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9F
USgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAg
IFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0
cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNl
cy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQ
YXRoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMo
b3JpZ2luKS5pc0VtcHR5KCkpOwogCi0gICAgU3RyaW5nIG9yaWdpblBhdGggPSBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOwotICAgIEVYUEVDVF9UUlVFKG1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRo
KSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CisgICAgU3RyaW5n
IG9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIEVYUEVD
VF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKLSAgICBT
dHJpbmcgd2ViRGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBh
dGgsICJkYXRhYmFzZS5kYiIpOworICAgIFN0cmluZyB3ZWJEYXRhYmFzZVBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgImRhdGFiYXNlLmRiIik7
CiAgICAgY3JlYXRlRmlsZUF0UGF0aCh3ZWJEYXRhYmFzZVBhdGgpOwogCiAgICAgRVhQRUNUX1RS
VUUoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVPcmlnaW4ob3JpZ2luKSk7CiAKLSAgICBFWFBFQ1Rf
RkFMU0UoZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmls
ZUV4aXN0cyhvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMod2ViRGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2Vy
LT5vcmlnaW5zKCkuaXNFbXB0eSgpKTsKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXIt
PmRhdGFiYXNlTmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwogCiAgICAgcmVtb3ZlRGlyZWN0b3J5
QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVTVChE
YXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlKQpAQCAtMjcyLDcgKzI3Miw3IEBAIFRFU1Qo
RGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKICAgICAvLyBUZXN0IHRoZSBleHBlY3Rl
ZCBjYXNlLiBUaGVyZSBpcyBhbiBlbnRyeSBpbiB0aGUgRGF0YWJhc2VzIHRhYmxlCiAgICAgLy8g
YW5kIGEgZGF0YWJhc2Ugb24gZGlzay4gQWZ0ZXIgdGhlIGRlbGV0aW9uLCB0aGUgZGF0YWJhc2Ug
c2hvdWxkIGJlIGRlbGV0ZWQKICAgICAvLyBmcm9tIGRpc2ssIGFuZCB0aGUgaW5mb3JtYXRpb24g
c2hvdWxkIGJlIGdvbmUgZnJvbSB0aGUgRGF0YWJhc2VzIHRhYmxlLgotICAgIE5TU3RyaW5nICp3
ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAg
ICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3
ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJh
c2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRo
RGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0yODEsMTYgKzI4MSwxNiBA
QCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2UpCiAgICAgZGF0YWJhc2VUcmFj
a2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQp
MSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRh
YmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFzZVBh
dGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAg
IEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAg
ICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRvRGF0
YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRhdGFi
YXNlLmRiIik7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRh
dGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIG9yaWdpblBhdGggPSBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIEVYUEVDVF9UUlVFKG1ha2VBbGxEaXJlY3Rvcmllcyhv
cmlnaW5QYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7Cisg
ICAgU3RyaW5nIG9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRo
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7
CiAKICAgICBTdHJpbmcgZnVsbFdlYkRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+ZnVs
bFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgZmFsc2UpOwogICAgIGNy
ZWF0ZUZpbGVBdFBhdGgoZnVsbFdlYkRhdGFiYXNlUGF0aCk7CkBAIC0zMDEsMjAgKzMwMSwyMCBA
QCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2UpCiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZF
bXB0eShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CiAjZWxzZQotICAgIEVYUEVDVF9GQUxTRShmaWxl
RXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CiAjZW5kaWYKIAogICAgIEVYUEVD
VF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKLSAg
ICBFWFBFQ1RfVFJVRShkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOwog
ICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZVdoZW5EYXRh
YmFzZURvZXNOb3RFeGlzdCkKIHsKICAgICAvLyBUZXN0IHRoZSBjYXNlIHdoZXJlIHdlIHRyeSB0
byBkZWxldGUgYSBkYXRhYmFzZSB0aGF0IGRvZXNuJ3QgZXhpc3Qgb24gZGlzay4KICAgICAvLyBX
ZSBzaG91bGQgc3RpbGwgcmVtb3ZlIHRoZSBkYXRhYmFzZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBE
YXRhYmFzZXMgdGFibGUuCi0gICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3Rv
cnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAg
ICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5n
KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tl
ciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKTsKQEAgLTMyMywyMSArMzIzLDIxIEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBE
ZWxldGVEYXRhYmFzZVdoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBkYXRhYmFzZVRyYWNr
ZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkx
LCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgs
ICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0
aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAg
IFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRh
YmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJh
c2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0
YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VGdWxs
UGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRh
dGFiYXNlTmFtZSwgZmFsc2UpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKHdlYkRhdGFi
YXNlRnVsbFBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh3
ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXIt
PmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lKSk7CiAgICAgRVhQRUNUX1RS
VUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKIAog
ICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDc0ODY2NWNmMmMy
Li4yYWM4YjU2ZGViOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tCkBAIC05MiwxMCArOTIsMTAgQEAgc3RhdGljIGJvb2wgZXhwZWN0
ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZl
ZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25Q
YXRoID0gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFu
ZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAg
ICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFu
ZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwor
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICph
bGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGF0aWMgYm9vbCBleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZh
bHNlOwogICAgIEVYUEVDVF9FUShleHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSwgZG93bmxvYWQu
d2FzVXNlckluaXRpYXRlZCk7CiAgICAgRVhQRUNUX1RSVUUoX2V4cGVjdGVkQ29udGVudExlbmd0
aCA9PSBOU1VSTFJlc3BvbnNlVW5rbm93bkxlbmd0aCB8fCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
X2V4cGVjdGVkQ29udGVudExlbmd0aCkgPT0gX3JlY2VpdmVkQ29udGVudExlbmd0aCk7CiAgICAg
RVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250ZW50c0VxdWFs
QXRQYXRoOl9kZXN0aW5hdGlvblBhdGggYW5kUGF0aDpbc291cmNlVVJMIHBhdGhdXSk7Ci0gICAg
V2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7
CiB9CiAKQEAgLTM5MywxMCArMzkzLDEwIEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVx
dWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93bmxvYWRXaXRoTG9hZGVkQ29udGVudCkKICAgICBFWFBF
Q1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2FkLCBk
b3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsK
LSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RX
ZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdl
YkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OmNsb3NlRmls
ZShmaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBF
WFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxl
SGFuZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3Rp
bmF0aW9uUGF0aDsKQEAgLTQxMCw3ICs0MTAsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9h
ZFJlcXVlc3RPcmlnaW5hbFVSTERpcmVjdERvd25sb2FkV2l0aExvYWRlZENvbnRlbnQpCiAgICAg
TlNTdHJpbmcqIGV4cGVjdGVkQ29udGVudCA9IEAie1wieFwiOjQyLFwic1wiOlwiaGVsbG8sIHdv
cmxkXCJ9IjsKICAgICBOU0RhdGEqIGV4cGVjdGVkRGF0YSA9IFtleHBlY3RlZENvbnRlbnQgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAgIEVYUEVDVF9UUlVFKFtb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzQXRQYXRoOl9kZXN0aW5hdGlv
blBhdGhdIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhXSk7Ci0gICAgV2ViQ29yZTo6ZGVsZXRl
RmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTQ2Niwx
MCArNDY2LDEwIEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdEJsb2JVUkwpCiAK
IC0gKE5TU3RyaW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93
T3ZlcndyaXRlOihCT09MICopYWxsb3dPdmVyd3JpdGUKIHsKLSAgICBXZWJDb3JlOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6
b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBF
Q1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
OwotICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25Q
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRB
UEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZ
RVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CiB9CkBAIC00OTYsNyArNDk2LDcgQEAg
VEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0QmxvYlVSTCkKICAgICBpZiAocmVkaXJl
Y3RDaGFpbi5jb3VudCA+IDIpCiAgICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3Bhc3MvIiwg
W3JlZGlyZWN0Q2hhaW5bMl0uYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmluZ10pOwogCi0gICAgV2Vi
Q29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325473</attachid>
            <date>2017-10-31 12:45:33 -0700</date>
            <delta_ts>2017-10-31 12:55:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>179063-2.diff</filename>
            <type>text/plain</type>
            <size>352889</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTE2MGFiYjYxNy4uODY5YjE0MjMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGluZyBhIEZp
bGVTeXN0ZW0gbmFtZXNwYWNlIHRvIG1vZGVybml6ZSB0aGUgY29kZSBiZWZvcmUKKyAgICAgICAg
bW92aW5nIEZpbGVTeXN0ZW0gdG8gUEFMLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
Q29jb2EubW06CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisKIDIwMTctMTAtMzAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgdGFiLXNpemU6IDBw
eCBhc3NlcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRl
eCA2YWViYjFmZDQwNC4uN2VmYjc5ZDU1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiBib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZDJlYjg4NTJjNC4uOGU1MDY2ZGRlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQ
YXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3Rz
IG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9
IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVk
Q2hpbGQ+IGxpc3RlZENoaWxkcmVuOwogICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDog
Y2hpbGRQYXRocykgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxk
UGF0aCk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
Y2hpbGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlz
SGlkZGVuKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVu
Y2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tl
ZEFwcGVuZChMaXN0ZWRDaGlsZCB7IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBh
dGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3RlZENoaWxkcmVuKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkVmlydHVhbFBhdGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRP
TUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9v
dFBhdGgoZGlyZWN0b3J5TmFtZShtX2ZpbGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAg
IEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoLCBTdAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFt
ZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0
IikgfTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZh
bGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKIHsKLSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCku
dHlwZTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQ
YXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5h
cHBlbmQoY29tcG9uZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29t
cG9uZW50cyk7CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVj
dG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCmluZGV4IGI2YmJjNjNhNjM2Li5kY2NiNWExMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVt
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsZVN5c3RlbSYgZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQotICAgICwgbV9uYW1l
KHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCisgICAgLCBtX25hbWUoRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHZpcnR1YWxQYXRoKSkKICAgICAsIG1fdmlydHVhbFBhdGgodmlydHVh
bFBhdGgpCiB7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRl
eCBkOTQ2YmU0M2YxZi4uOGJiODgwNTBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290CiAKIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCiB7Ci0gICAgU3RyaW5n
IG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0
b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIG1h
aW5GcmFtZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAg
ICAvLyBJZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUgb3JpZ2lucyBhcmUgdGhl
IHNhbWUsIHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KICAgICBpZiAob3BlbmluZ09yaWdpbiA9
PSB0b3BMZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsKIAot
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBv
cGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY4MWNlOGFiNmNhLi5mZmY4Zjg0Y2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2Niwx
MSArNDY2LDExIEBAIHZvaWQgSURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0
b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0
b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwo
IioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogZW50cmllcykgewotICAgICAgICBTdHJpbmcgZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGVudHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29k
ZWROYW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAgICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGVu
Y29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01ODEsMTQgKzU4MSwxNCBAQCB2b2lkIElEQlNlcnZl
cjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRo
KGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGF0YWJhc2VQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2lu
UGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0byYgZGF0YWJhc2VQYXRoIDogZGF0YWJhc2VQYXRo
cykgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBk
YXRhYmFzZUZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigp
ICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5j
ZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNl
RmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2Rp
ZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2luY2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0
aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3Jp
Z2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxv
YiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIgd2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwK
ICAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRoZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJl
IHRyeWluZyB0byBkZWxldGUuCi0gICAgICAgIGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGly
ZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTldKi5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBibG9iUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQ
YXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAgICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2
ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAg
ICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJpbmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3
aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAiLmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9u
LWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0
aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMgb25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0
LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5vdCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAg
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUoYmxvYlBhdGgpOwogICAgICAgICAgICAgYXV0byBmaWxlbmFtZUxlbmd0aCA9IGZpbGVuYW1l
Lmxlbmd0aCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWVMZW5ndGggPj0gNik7CkBA
IC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAodmFsaWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBkZWxl
dGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyBkZWxldGUg
SW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgU1FMaXRlIGZpbGVzLgogICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxlKTsKIAogICAgICAg
ICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2FuLCBkZWxldGUgdGhlIGVtcHR5IGRpcmVjdG9yeS4K
LSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKICAg
ICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFzZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwgd2Ug
Y2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVjdG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNs
b3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiKiIpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIq
Iik7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAg
ICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZv
cm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5
T3IKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBh
dGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMw
YmViMzguLjlmZjhjMGYzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtNzQ0LDcgKzc0NCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUZyb21FbmNvZGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBlbmNvCiAgICAgU3RyaW5nIHBh
cnRpYWxseURlY29kZWQgPSBlbmNvZGVkTmFtZTsKICAgICBwYXJ0aWFsbHlEZWNvZGVkLnJlcGxh
Y2UoQVNDSUlMaXRlcmFsKCIlMkUiKSwgQVNDSUlMaXRlcmFsKCIuIikpOwogCi0gICAgcmV0dXJu
IGRlY29kZUZyb21GaWxlbmFtZShwYXJ0aWFsbHlEZWNvZGVkKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhcnRpYWxseURlY29kZWQpOwogfQogCiBTdHJpbmcg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0CkBA
IC03NTQsNyArNzU0LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVG
b3JEYXRhYmFzZU5hbWUoKSBjb25zdAogICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBlbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7CiAgICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKQEAgLTc2NCwxNCArNzY0LDE0IEBAIFN0cmluZyBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0
dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnks
IGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFt
ZUZvckRhdGFiYXNlTmFtZSgpKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0
YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CiB9CiAKIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQpAQCAtNzgzLDcgKzc4Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVz
KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCkpOwogICAgIFN0cmluZyBkYkZpbGVuYW1lID0g
ZnVsbERhdGFiYXNlUGF0aCgpOwogCiAgICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CkBAIC0xODU4LDcgKzE4NTgsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBvYmplYwogICAgICAgICBibG9iVVJMcy5hcHBlbmQoYmxvYlVSTCk7CiAKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gc3FsLT5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBibG9iRmlsZVBh
dGhzLmFwcGVuZChwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGZp
bGVOYW1lKSk7CisgICAgICAgIGJsb2JGaWxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZmlsZU5hbWUpKTsKICAgICB9
CiAKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtMjU0Miw4ICsyNTQyLDggQEAgdm9pZCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAKICAgICBTdHJpbmcg
ZGF0YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBmb3IgKGF1
dG8mIGZpbGUgOiBibG9iRmlsZXMpIHsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsKLSAgICAgICAgaWYg
KCFkZWxldGVGaWxlKGZ1bGxQYXRoKSkKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgZGVsZXRpbmcgYmxvYiBmaWxlICVzIiwgZnVsbFBhdGgudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCA2MDg2M2E4YWE5My4uMjMxNjVjOWI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptb3ZlQmxv
YkZpbGVzSWZOZWNlc3NhcnkoKQogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JUZW1wb3Jh
cnlBbmRTdG9yZWRGaWxlbmFtZXMpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5
RmlsZUhhbmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGVudHJ5LmZpcnN0
KTsKIAotICAgICAgICBpZiAoIWhhcmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1wb3JhcnkgYmxvYiBm
aWxlICclcycgdG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZp
bGUoZW50cnkuZmlyc3QsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKSkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBsaW5rL2NvcHkgdGVtcG9yYXJ5IGJsb2IgZmlsZSAnJXMnIHRvIGxvY2F0aW9uICcl
cyciLCBlbnRyeS5maXJzdC51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGVudHJ5LnNlY29uZCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nl
c3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShlbnRyeS5maXJzdCk7CiAgICAgfQpAQCAtMTA3LDcg
KzEwNyw3IEBAIHZvaWQgU1FMaXRlSURCVHJhbnNhY3Rpb246OmRlbGV0ZUJsb2JGaWxlc0lmTmVj
ZXNzYXJ5KCkKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSA9IG1fYmFja2luZ1N0b3Jl
LmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JS
ZW1vdmVkRmlsZW5hbWVzKSB7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOworICAgICAgICBTdHJpbmcg
ZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnksIGVudHJ5KTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhh
bmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGZ1bGxQYXRoKTsKICAgICAg
ICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nlc3NUb1RlbXBvcmFy
eUZpbGVDb21wbGV0ZShmdWxsUGF0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAppbmRleCBhZGRkMWY4YzAwNC4uNjFhZWI4ZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAppbmRleCA1NTI3NjlhNDFjNy4uZmVhMWJlNWU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY0OSw5
ICs2NDksOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjp1c2FnZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9
IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza1Vz
YWdlID0gMDsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogbGlzdERpcmVjdG9yeShvcmlnaW5Q
YXRoLCBBU0NJSUxpdGVyYWwoIiouZGIiKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCBBU0NJSUxpdGVyYWwoIiouZGIi
KSkpIHsKICAgICAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgICAgIGdldEZpbGVTaXplKGZpbGVO
YW1lLCBzaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNp
emUpOwogICAgICAgICBkaXNrVXNhZ2UgKz0gc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2tV
c2FnZTsKQEAgLTc4NSw5ICs3ODUsOSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgd2UgcHJldmlvdXNseSBkZWxldGVk
IGl0IGJ1dCBmYWlsZWQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgLy8g
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZS4gV2Ugd2FudCB0byBkZWxldGUgYWxsIG9mIHRoZSBp
bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICAgICAgLy8gZGF0YWJhc2Ug
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZSwgc28gc3RpbGwgYWRkIGl0cyBuYW1lIHRvIGRhdGFi
YXNlTmFtZXNUb0RlbGV0ZS4KLSAgICAgICAgICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoKSkg
eworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkp
CisgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUgPCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3QodGltZSkpCkBAIC04MzcsNyArODM3LDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgRGVsZXRpb25Nb2QKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVz
ZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwg
ZGVhZGxvY2suCiAgICAgYm9vbCBmYWlsZWRUb0RlbGV0ZUFueURhdGFiYXNlRmlsZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgbmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKLSAgICAgICAgaWYgKGZp
bGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRl
bGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9uTW9kZSkpIHsKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5h
bWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9u
TW9kZSkpIHsKICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgY2FuJ3QgYmUgZGVsZXRl
ZCwgd2Ugd2FudCB0byB0cnkgYW5kIGRlbGV0ZSB0aGUgcmVzdCwgZG9uJ3QgcmV0dXJuIGVhcmx5
IGhlcmUuCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3Ig
ZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBmYWlsZWRUb0Rl
bGV0ZUFueURhdGFiYXNlRmlsZSA9IHRydWU7CkBAIC04NTIsOCArODUyLDggQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgRGVsZXRpb25Nb2QKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoRGF0YWJhc2VUcmFja2VyLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiIpOwogI2VuZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZmlsZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlbGV0ZUZpbGUoZmlsZSkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmls
ZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7
CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpCiAgICAgICAg
ICAgICAgICAgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAg
ICB9CiAKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tz
IGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCi0gICAg
aWYgKGZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkg
JiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVs
dCkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aEZvckRhdGFiYXNl
KG9yaWdpbiwgbmFtZSwgZmFsc2UpKSAmJiAhZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFt
ZSwgRGVsZXRpb25Nb2RlOjpEZWZhdWx0KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIGRv
bmVEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4g
ZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2UgZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3Vy
cmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNlIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hv
dWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0Rmls
ZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YWJhc2VGaWxlTmFtZS5pc051bGwoKSB8fCBkYXRhYmFzZUZpbGVOYW1lICE9IEZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShkYi0+ZmlsZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRGF0YWJhc2VzLmFwcGVuZChkYik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmREZWxldGVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92
ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogc3RhdGljIGJvb2wgaXNaZXJvQnl0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGxvbmcgbG9uZyBzaXplID0gMDsKLSAgICByZXR1cm4g
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgJiYgIXNpemU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIHNpemUpICYmICFzaXplOwogfQogICAgIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBwYXRoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAK
aW5kZXggNTE2YTJkMmYyNjQuLjMxZDJkMDRiMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQ
YXRoKFN0cmluZyBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgsIFN0cmluZygiLmxvY2siKSk7
CiB9CiAKIE9yaWdpbkxvY2s6Ok9yaWdpbkxvY2soU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgOiBt
X2xvY2tGaWxlTmFtZShsb2NrRmlsZU5hbWVGb3JQYXRoKG9yaWdpblBhdGgpLmlzb2xhdGVkQ29w
eSgpKQogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgLCBtX2xvY2tIYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fbG9ja0hhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogI2VuZGlmCiB7CiB9CkBAIC01MCw4ICs1MCw4IEBAIHZvaWQgT3Jp
Z2luTG9jazo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NL
KQotICAgIG1fbG9ja0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgT3Bl
bkZvcldyaXRlKTsKLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUo
bV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKG1fbG9j
a0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAg
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBj
b250YWluaW5nIHRoZSBsb2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2Vy
ZSBnaXZlbiBhIHBhdGggdG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYnV0IGNsZWFudXAgYW5kIHJl
dHVybi4KQEAgLTY4LDExICs2OCwxMSBAQCB2b2lkIE9yaWdpbkxvY2s6OnVubG9jaygpCiAgICAg
Ly8gY29udGFpbmluZyB0aGUgbG9jayBoYXMgYmVlbiBkZWxldGVkIGJlZm9yZSB3ZSBvcGVuZWQg
dGhlIGxvY2sgZmlsZSwgb3IKICAgICAvLyB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1l
eGlzdGFudCBkaXJlY3RvcnkuIFdoaWNoLCBpbiB0dXJuLCBtZWFucwogICAgIC8vIHRoYXQgdGhl
cmUncyBub3RoaW5nIHRvIHVubG9jay4KLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIAorICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5sb2Nr
QW5kQ2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7Ci0gICAgbV9sb2NrSGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUobV9s
b2NrSGFuZGxlKTsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogI2VuZGlmCiAKICAgICBtX211dGV4LnVubG9jaygpOwpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIE9yaWdpbkxvY2s6OmRlbGV0ZUxvY2tGaWxlKFN0cmluZyBvcmlnaW5QYXRo
KQogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5QYXRoKTsKICNpZiBVU0UoRklMRV9MT0NLKQogICAg
IFN0cmluZyBsb2NrRmlsZU5hbWUgPSBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKG9y
aWdpblBhdGgpOwotICAgIGRlbGV0ZUZpbGUobG9ja0ZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGxvY2tGaWxlTmFtZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBkNzE1MWRlNzhiZC4u
YTE2ZTg0ZjE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
T3JpZ2luTG9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9j
a0ZpbGVOYW1lOwogICAgIExvY2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBtX2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fbG9ja0hhbmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggM2ViMjg4NGFjYTEuLjAyNjFhMGZkMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QK
ICAgICAvLyBUaGUgaS9vIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCwKICAgICAvLyBhbmQgdGhlIHJlc3VsdCBzaG91bGQgYmUgY2FjaGVkIGFsb25nIHdpdGggYW4g
YXN5bmNocm9ub3VzIG1vbml0b3IgZm9yIGNoYW5nZXMgdG8gdGhlIGZpbGUuCiAgICAgdGltZV90
IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKGdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0
aCwgbW9kaWZpY2F0aW9uVGltZSkgJiYgaXNWYWxpZEZpbGVUaW1lKG1vZGlmaWNhdGlvblRpbWUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1v
ZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRp
b25UaW1lKSkKICAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25k
OwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUoKSAqIG1zUGVyU2Vjb25k
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlz
TnVsbCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworICAgIGVmZmVj
dGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluZGV4ID0gZWZmZWN0aXZl
TmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKICAgICAg
ICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBTdHJpbmcgRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIGJvb2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAogewogICAgIGlmICghbV9pc0Rp
cmVjdG9yeSkKLSAgICAgICAgbV9pc0RpcmVjdG9yeSA9IGZpbGVJc0RpcmVjdG9yeShtX3BhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgICAgIG1faXNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwogICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAwZDVhNjk3ZjY1YS4uY2FhMjFk
NWI4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC01OSw5ICs1OSw5IEBA
IGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVO
YW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVCghcGF0aEdl
dEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0
aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KKyAgICBBU1NF
UlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8g
RXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3Ig
ZGlyZWN0b3JpZXMuCiAgICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBBU0NJSUxpdGVyYWwoImFw
cGxpY2F0aW9uL3ppcCIpOwotICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVs
bCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJTGl0ZXJh
bCgiLnppcCIpOworICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVsbCgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJ
TGl0ZXJhbCgiLnppcCIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAKaW5kZXggOTEwNmRhZGNjZDQuLjc2ZjU2NTk3MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgRmlsZUxpc3RDcmVhdG9y
Ojp+RmlsZUxpc3RDcmVhdG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0
b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFBhdGgg
OiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAgICBhdXRvIG1ldGFkYXRh
ID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRv
IG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CiAgICAgICAg
IGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWV0
YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIHBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOworICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRo
KTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0
YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKQEAgLTgwLDgg
KzgwLDggQEAgUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBp
ZiAoc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6
WWVzICYmIGZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgcGF0
aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgaWYgKHNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxl
cyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxl
T2JqZWN0cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4NjQwY2YxMmM4
YS4uYmY0MzQzOTNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTZXRNZWRpYUtl
eXMoV2ViS2l0TWVkaWFLZXlzKiBtZWRpYUtleXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBh
ZmY4Njk5MmU1MC4uYTIxNTBlZDJmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNlTmVlZGVkKGlu
dDY0X3QgY2FjaGVUb1NhdmUpCiB7CiAgICAgaW50NjRfdCBzcGFjZU5lZWRlZCA9IDA7CiAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICBpZiAoIWdldEZpbGVTaXplKG1fY2FjaGVGaWxl
LCBmaWxlU2l6ZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2NhY2hlRmls
ZSwgZmlsZVNpemUpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGludDY0X3QgY3VycmVudFNp
emUgPSBmaWxlU2l6ZSArIGZsYXRGaWxlQXJlYVNpemUoKTsKQEAgLTYwMCwxMSArNjAwLDExIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlm
RG9lc05vdEV4aXN0KQogICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X2NhY2hlRGlyZWN0b3J5LCAiQXBwbGljYXRpb25DYWNoZS5kYiIpOwotICAgIGlmICghY3JlYXRl
SWZEb2VzTm90RXhpc3QgJiYgIWZpbGVFeGlzdHMobV9jYWNoZUZpbGUpKQorICAgIG1fY2FjaGVG
aWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7CisgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlz
dCAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKKyAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9jYWNoZURpcmVjdG9yeSk7CiAgICAgbV9kYXRh
YmFzZS5vcGVuKG1fY2FjaGVGaWxlKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCkBAIC03OTksNyArNzk5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKIAogICAgIFN0
cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICBkYXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGhHZXRGaWxlTmFtZShyZXNvdXJjZS0+
cGF0aCgpKSk7CisgICAgICAgIGRhdGFTdGF0ZW1lbnQuYmluZFRleHQoMiwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKICAgICBlbHNlIGlmIChzaG91bGRT
dG9yZVJlc291cmNlQXNGbGF0RmlsZShyZXNvdXJjZSkpIHsKICAgICAgICAgLy8gRmlyc3QsIGNo
ZWNrIHRvIHNlZSBpZiBjcmVhdGluZyB0aGUgZmxhdCBmaWxlIHdvdWxkIHZpb2xhdGUgdGhlIG1h
eGltdW0gdG90YWwgcXVvdGEuIFdlIGRvbid0IG5lZWQKICAgICAgICAgLy8gdG8gY2hlY2sgdGhl
IHBlci1vcmlnaW4gcXVvdGEgaGVyZSwgYXMgaXQgd2FzIGFscmVhZHkgY2hlY2tlZCBpbiBzdG9y
ZU5ld2VzdENhY2hlKCkuCkBAIC04MDgsOCArODA4LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgbWFr
ZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKKyAgICAgICAgU3RyaW5nIGZsYXRG
aWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2Fj
aGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKIAogICAgICAgICBT
dHJpbmcgZXh0ZW5zaW9uOwogICAgICAgICAKQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgICAgICBpZiAoIXdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KHJlc291cmNlLT5kYXRhKCksIGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoLCBleHRlbnNpb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZnVsbFBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAg
ICAgICBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0
RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIHJlc291cmNlLT5zZXRQYXRoKGZ1bGxQYXRo
KTsKICAgICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKICAgICAgICAgLy8gQ2xlYW4gdXAgdGhl
IGZpbGUgd2hpY2ggd2UgbWF5IGhhdmUgd3JpdHRlbiB0bzoKICAgICAgICAgaWYgKCFmdWxsUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQp
CiAKICAgICBhdXRvIGNhY2hlID0gQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlKCk7CiAKLSAgICBT
dHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICBpbnQgcmVz
dWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CkBAIC0xMTM2LDggKzExMzYsOCBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXpl
KCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBnZXRGaWxlU2l6
ZShwYXRoLCBzaXplKTsKKyAgICAgICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMyk7
CkBAIC0xMjk0LDI1ICsxMjk0LDI1IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgU3Ry
aW5nIGZ1bGxQYXRoOwogICAgIAogICAgIGRvIHsKLSAgICAgICAgcGF0aCA9IGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyBmaWxlRXh0ZW5zaW9uOworICAg
ICAgICBwYXRoID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3Qg
dGhlIGFib3ZlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdoaWNoIGRvZXMg
bm90IGltcGxlbWVudAogICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuCiAg
ICAgICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIHBhdGgpOwotICAgIH0gd2hp
bGUgKGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGRpcmVjdG9yeSB8fCBmaWxlRXhpc3RzKGZ1
bGxQYXRoKSk7CisgICAgICAgIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CisgICAgfSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3Bl
bkZpbGUoZnVsbFBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
YXRhLnNpemUoKSkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShmdWxsUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIApAQCAtMTQ2NiwxNSArMTQ2NiwxNSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIFN0cmluZyBm
bGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0
b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Cisg
ICAgICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIAogICAgICAgICAv
LyBEb24ndCBleGl0IHRoZSBmbGF0RmlsZURpcmVjdG9yeSEgVGhpcyBzaG91bGQgb25seSBoYXBw
ZW4gaWYgdGhlICJwYXRoIiBlbnRyeSBjb250YWlucyBhIGRpcmVjdG9yeSAKICAgICAgICAgLy8g
Y29tcG9uZW50LCBidXQgcHJvdGVjdCBhZ2FpbnN0IGl0IHJlZ2FyZGxlc3MuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBmbGF0RmlsZURpcmVjdG9yeSkKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0
b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBkZWxldGVGaWxl
KGZ1bGxQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAg
ICAgfSB3aGlsZSAoc2VsZWN0UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpOwogICAgIAogICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiKTsK
QEAgLTE0OTQsMTIgKzE0OTQsMTIgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmbGF0RmlsZUFyZWFTaXplKCkKICAgICB9CiAKICAgICBsb25nIGxvbmcgdG90YWxTaXplID0g
MDsKLSAgICBTdHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9jYWNoZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0
cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAg
d2hpbGUgKHNlbGVjdFBhdGhzLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gc2VsZWN0UGF0aHMuZ2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIGZ1
bGxQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRo
KTsKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgbG9uZyBsb25nIHBh
dGhTaXplID0gMDsKLSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShmdWxsUGF0aCwgcGF0aFNpemUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdG90YWxTaXplICs9IHBhdGhTaXpl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNhMzY5YmVjMzU4Li41OWVjMWM5MGM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBh
Z2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiAKICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUp
KSB7CiAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMg
anVzdCBkZWxldGVkLCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYg
d2UndmUgcmVhZCB0aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0
aHJvdyBhd2F5IHRoYXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdz
IG9uIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4
YmM3YTM3Li42YWQ2MzExMGFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgp
ICYmICFmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgp
KSkKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYg
IUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0
ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDkyM2ZmMzMwZDZjLi5hZGExZjQx
ZDIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZp
ZXIoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChwcm90b2NvbCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlbmNvZGVGb3JGaWxlTmFt
ZShob3N0KSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJh
Y3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IDgwM2E4MjA5
YjJjLi4yYTBhNjM0YzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlSGFuZGxlOjpG
aWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFu
ZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5N
b2RlIG1vZGUpCiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kZShtb2RlKQogewpAQCAt
NDIsNyArNDIsNyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBv
dGhlcikKICAgICA6IG1fcGF0aChXVEZNb3ZlKG90aGVyLm1fcGF0aCkpCiAgICAgLCBtX21vZGUo
V1RGTW92ZShvdGhlci5tX21vZGUpKQotICAgICwgbV9maWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSkKKyAgICAsIG1f
ZmlsZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBG
aWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogICAg
IGNsb3NlKCk7CiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9k
ZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKLSAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
bV9maWxlSGFuZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
RmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxl
VmFsaWQobV9maWxlSGFuZGxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2ZpbGVIYW5kbGUpOwogfQogCi1ib29sIEZpbGVIYW5kbGU6Om9wZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGlmICgq
dGhpcyAmJiBwYXRoID09IG1fcGF0aCAmJiBtb2RlID09IG1fbW9kZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsK
ICAgICBpZiAoISp0aGlzKQotICAgICAgICBtX2ZpbGVIYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgs
IG1fbW9kZSk7CisgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
cGF0aCwgbV9tb2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC04NywxNCArODcsMTQgQEAgaW50IEZpbGVIYW5kbGU6OnJlYWQodm9pZCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiByZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSks
IGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5k
bGUsIHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAogaW50IEZpbGVIYW5k
bGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVu
KCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbGVIYW5kbGU6
OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBGaWxlSGFuZGxlOjpjbG9z
ZSgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMzYyNDNkZTQwZC4uNTYzZmVkOTg5NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7
CiBwdWJsaWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKLSAgICBGaWxlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBGaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZpbGVIYW5k
bGUmJiBvdGhlcik7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogICAgIGJvb2wgb3BlbigpOwogICAgIGludCByZWFkKHZv
aWQqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGludCB3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZU9wZW5Nb2RlIG1fbW9kZSB7IE9wZW5Gb3JSZWFkIH07Ci0g
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcAppbmRleCBiMThiMWMzZTk3ZC4uZjc0NWQ3YzFkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZpbGVTdHJlYW06OkZpbGVTdHJlYW0oKQotICAgIDogbV9oYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICA6IG1faGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgLCBtX2J5dGVzUHJvY2Vzc2VkKDApCiAgICAgLCBtX3RvdGFsQnl0
ZXNUb1JlYWQoMCkKIHsKQEAgLTUzLDE2ICs1MywxNiBAQCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6
Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bQogewogICAgIC8vIENoZWNrIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBvc3NpYmxl
IGZpbGUgY2hhbmdlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1l
KSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUo
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dGlt
ZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9IG1vZGlmaWNhdGlvblRpbWUpCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLy8gTm93IGdldCB0aGUgZmlsZSBzaXpl
LgogICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShwYXRoLCBsZW5n
dGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgbGVuZ3RoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKQEAgLTcwLDE3ICs3MCwxNyBA
QCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbQogCiBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkK
IHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IE9wZW4gdGhlIGZpbGUuCi0gICAgbV9oYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZp
bGUgaGFzIGJlZW4gc2xpY2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChz
ZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBTZWVrRnJvbUJlZ2lubmluZykgPCAwKQorICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6
U2Vla0Zyb21CZWdpbm5pbmcpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTkyLDIyICs5MiwyMiBAQCBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbgogCiB2b2lkIEZp
bGVTdHJlYW06OmNsb3NlKCkKIHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpIHsK
LSAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxlKTsKLSAgICAgICAgbV9oYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOworICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1f
aGFuZGxlKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworICAg
ICAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAg
ICAgfQogfQogCiBpbnQgRmlsZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJT
aXplKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbG9uZyBsb25nIHJlbWFpbmluZyA9IG1fdG90YWxCeXRlc1RvUmVhZCAtIG1fYnl0ZXNQcm9j
ZXNzZWQ7CiAgICAgaW50IGJ5dGVzVG9SZWFkID0gKHJlbWFpbmluZyA8IGJ1ZmZlclNpemUpID8g
c3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogYnVmZmVyU2l6ZTsKICAgICBpbnQgYnl0ZXNS
ZWFkID0gMDsKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiAwKQotICAgICAgICBieXRlc1JlYWQgPSBy
ZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNUb1JlYWQpOworICAgICAgICBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNU
b1JlYWQpOwogICAgIGlmIChieXRlc1JlYWQgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAg
aWYgKGJ5dGVzUmVhZCA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXgg
ZDQyMWU0ZjNiYzEuLjk2N2RlZGM3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIs
IGludCBsZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRs
ZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9u
ZyBsb25nIG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVh
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDdh
ZTM0Li5iODk0NzVlMDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmls
ZVN5c3RlbSB7CisKIC8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVk
IGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQogLy8gYWNyb3NzIGFsbCBzeXN0ZW1z
LCBpbmNsdWRpbmcgV2luZG93czoKIC8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikK
QEAgLTM1OSw0ICszNjEsNSBAQCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93UwogICAgIHJldHVybiBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CiB9
CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCAzMmM5M2U2NThiMy4uYTZjN2UzZWI3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTU2LDYgKzU2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKICNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwpAQCAtOTIs
OCArOTYsNiBAQCBlbnVtIEZpbGVMb2NrTW9kZSB7CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKIAotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogV0VC
Q09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTIxMyw1ICsyMTUsNiBAQCBp
bmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmls
ZURhdGEmJiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZTFmY2RjZWJkMWMuLjBkMzViMjEzYmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBz
aXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwpAQCAtNjEsNyArNjEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8Y2hhcj4mJiBkYXRhKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGlu
Z1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtd
KGNvbnN0IEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcg
KzIyNyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICNpZiBVU0UoU09VUCkKICAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IE1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRh
LnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYg
ZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGZkMjZmMjFjNmJkLi4zNGZmNzFjNjM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAj
aWYgVVNFKFNPVVApCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHVW5p
cXVlUHRyPFNvdXBCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoTWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFTZWdtZW50KEdVbmlxdWVQdHI8U291
cEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoTWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAog
ICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6
CiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCkBAIC0xNTcsNyArMTU3LDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXpl
X3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDFmNjg0YjY1YzE0Li4wODQ3MGEw
OGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorQ1N0cmluZyBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
QEAgLTU1LDEyICs1NSwxMiBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKIH0KIAotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciog
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQogewogICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENGVVJMUmVm
PiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQorUmV0YWluUHRyPENGVVJMUmVmPiBGaWxl
U3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENGVVJMUGF0aFN0
eWxlIHBhdGhTdHlsZTsKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAzOTVkZjc3NzE5YS4uNTc4
NDM0ZDJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0gICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSk7
CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJG
YWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAg
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1
ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW2hh
bmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRj
aF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2NkOWY4Li5lNmUx
NjJhMmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQpAQCAtNDYsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKKwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAg
ICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CkBAIC0xMjgsNCArMTMwLDYgQEAgTlNTdHJpbmcg
KmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQogICAg
IHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb246cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07CiB9CiAKK30gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCmluZGV4IGQ2ZDll
ZjdhNWNhLi45NDkyNGU2MWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZU1vbml0b3JHTGliLmNwcApAQCAtMzcsNyArMzcsNyBAQCBGaWxlTW9uaXRvcjo6Rmls
ZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1
ZSwgV1RGOgogICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhbW9kaWZpY2F0aW9uSGFuZGxlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3BhdGgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIGF1
dG8gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBtX2NhbmNlbGxhYmxlID0g
YWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKICAgICBtX3BsYXRmb3JtTW9uaXRvciA9IGFkb3B0R1JlZihnX2ZpbGVfbW9uaXRv
cihmaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9OT05FLCBtX2NhbmNlbGxhYmxlLmdldCgpLCAm
ZXJyb3Iub3V0UHRyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggOTMyZTgzZmQ5NGEuLjFiMDhhYTBhZjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtNDQsNyAr
NDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhp
cyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBT
dHJpbmcKICAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KICAqIE9uIFdpbmRvd3MgdGhlIEdM
aWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUg
dGhpcyBjYXNlLiAqLwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKQogewogICAgIGlmICghZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBHVW5pcXVl
UHRyPGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgog
fQogCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgp
CitDU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgpCiB7CiAjaWYgT1MoV0lORE9XUykKICAgICByZXR1cm4gcGF0aC51dGY4KCk7CkBA
IC03OSw3ICs3OSw3IEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgcGF0aCkKIH0KIAogLy8gQ29udmVydHMgYSBzdHJpbmcgdG8gc29tZXRoaW5nIHN1aXRh
YmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KLVN0cmluZyBmaWxlbmFtZUZvckRpc3Bs
YXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitTdHJpbmcgRmlsZVN5c3RlbTo6ZmlsZW5hbWVGb3JE
aXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogI2lmIE9TKFdJTkRPV1MpCiAgICAgcmV0
dXJuIHN0cmluZzsKQEAgLTk2LDE5ICs5NiwxOSBAQCBTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogI2VuZGlmCiB9CiAKLWJvb2wgZmlsZUV4aXN0cyhjb25z
dCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUocGF0aCk7CiAgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19maWxlX3Rlc3QoZmlsZW5hbWUu
Z2V0KCksIEdfRklMRV9URVNUX0VYSVNUUykgOiBmYWxzZTsKIH0KIAotYm9vbCBkZWxldGVGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShwYXRoKTsKICAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFt
ZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKIH0KIAotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwogICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcm1kaXIo
ZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGlj
IGJvb2wgZ2V0RmlsZUxTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZm
ZXIpCiAgICAgcmV0dXJuIGdfbHN0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9IC0x
OwogfQogCi1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBy
ZXN1bHRTaXplKQorYm9vbCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKIHsKICAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0Owog
ICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQpAQCAtMTQyLDE5ICsxNDIs
MTkgQEAgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVz
dWx0U2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9y
bUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRGaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JikKIHsKICAgICAvLyBGSVhNRTogSXMgdGhl
cmUgYSB3YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRm
b3JtcyB0aGF0IHN1cHBvcnQgaXQ/CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiBtb2RpZmllZFRp
bWUpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdGltZV90JiBtb2RpZmllZFRpbWUpCiB7CiAgICAgR1N0YXRCdWYgc3RhdFJlc3Vs
dDsKICAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKQEAgLTE3OSw3ICsx
NzksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVz
aW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIGlmICghc3RhdEZ1bmMocGF0aCwg
JnN0YXRSZXN1bHQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgU3RyaW5n
IGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIFN0cmluZyBmaWxlbmFtZSA9
IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKTsKICAgICBib29sIGlzSGlkZGVuID0g
IWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiAKICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhIHsKQEAgLTE5MCwyNCArMTkwLDI0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgsCiAgICAgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4gZmls
ZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKIH0KIAotc3RkOjpv
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBGaWxlU3lzdGVtOjpm
aWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAg
cmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0KTsKIH0K
IAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29tcG9uZW50KQorU3RyaW5nIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQog
ewogICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElSX1NFUEFSQVRPUl9TKSkKICAgICAgICAgcmV0
dXJuIHBhdGggKyBjb21wb25lbnQ7CiAgICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1Jf
UyArIGNvbXBvbmVudDsKIH0KIAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3Ry
aW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCitTdHJp
bmcgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgs
IGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CkBAIC0yMTgsMzEgKzIxOCwz
MSBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNv
bnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jv
b2wgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgp
OwogICAgIHJldHVybiBmaWxlbmFtZSA/IGdfbWtkaXJfd2l0aF9wYXJlbnRzKGZpbGVuYW1lLmdl
dCgpLCBTX0lSV1hVKSAhPSAtMSA6IGZhbHNlOwogfQogCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBh
dGgoKQorU3RyaW5nIEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKLSAgICByZXR1
cm4gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF9ob21lX2RpcigpKTsKIH0KIAotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3Qg
U3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCitib29s
IEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgs
IGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKIHsKLSAgICBDU3RyaW5nIHRhcmdldFBh
dGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBDU3Ry
aW5nIHRhcmdldFBhdGhGU1JlcCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bih0YXJnZXRQYXRoKTsKICAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0
UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsK
ICAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0
aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZT
UmVwLmRhdGEoKSk7CiB9CiAKLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoTmFtZSkKK1N0cmluZyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoTmFtZSkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0bXBGaWxlbmFtZSA9IHVuZXNj
YXBlZEZpbGVuYW1lKHBhdGhOYW1lKTsKICAgICBpZiAoIXRtcEZpbGVuYW1lKQpAQCAtMjUyLDcg
KzI1Miw3IEBAIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoTmFtZSkK
ICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7CiB9CiAKLUNTdHJp
bmcgYXBwbGljYXRpb25EaXJlY3RvcnlQYXRoKCkKK0NTdHJpbmcgRmlsZVN5c3RlbTo6YXBwbGlj
YXRpb25EaXJlY3RvcnlQYXRoKCkKIHsKICAgICBDU3RyaW5nIHBhdGggPSBnZXRDdXJyZW50RXhl
Y3V0YWJsZVBhdGgoKTsKICAgICBpZiAoIXBhdGguaXNOdWxsKCkpCkBAIC0yNjcsNyArMjY3LDcg
QEAgQ1N0cmluZyBhcHBsaWNhdGlvbkRpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBkaXJuYW1l
LmdldCgpOwogfQogCi1DU3RyaW5nIHNoYXJlZFJlc291cmNlc1BhdGgoKQorQ1N0cmluZyBGaWxl
U3lzdGVtOjpzaGFyZWRSZXNvdXJjZXNQYXRoKCkKIHsKICAgICBzdGF0aWMgQ1N0cmluZyBjYWNo
ZWRQYXRoOwogICAgIGlmICghY2FjaGVkUGF0aC5pc051bGwoKSkKQEAgLTI5MSw3ICsyOTEsNyBA
QCBDU3RyaW5nIHNoYXJlZFJlc291cmNlc1BhdGgoKQogICAgIHJldHVybiBjYWNoZWRQYXRoOwog
fQogCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90
JiBmcmVlU3BhY2UpCitib29sIEZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBT
dHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKICAgICBpZiAoIWZpbGVuYW1l
KQpAQCAtMzA2LDcgKzMwNiw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gISFmcmVlU3BhY2U7CiB9
CiAKLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyBGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwogICAgIGlmICgh
ZmlsZW5hbWUpCkBAIC0zMTYsNyArMzE2LDcgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUuZ2V0KCkp
OwogfQogCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBmaWx0ZXIpCitWZWN0b3I8U3RyaW5nPiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gZW50cmllczsKIApAQCAtMzM0LDM1ICszMzQsMzUgQEAgVmVjdG9yPFN0
cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmls
dGVyKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5nZXQoKSwgbmFtZSwgbnVsbHB0cikpOwot
ICAgICAgICBlbnRyaWVzLmFwcGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGVudHJ5LmdldCgpKSk7CisgICAgICAgIGVudHJpZXMuYXBwZW5kKEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZW50cnkuZ2V0KCkpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmls
ZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1l
LmdldCgpLCBOVUxMKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CiAKICAgICBoYW5kbGUgPSBnX2ZpbGVf
Y3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwot
ICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOwogfQogCi1QbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK0ZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBGaWxlU3lzdGVtOjpvcGVuRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CiAgICAgaWYgKCFm
aWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
ICAgIHJldHVybiBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAg
R1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVu
YW1lLmdldCgpKSk7CiAgICAgR0ZpbGVJT1N0cmVhbSogaW9TdHJlYW0gPSAwOwotICAgIGlmICht
b2RlID09IE9wZW5Gb3JSZWFkKQorICAgIGlmIChtb2RlID09IEZpbGVTeXN0ZW06Ok9wZW5Gb3JS
ZWFkKQogICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgp
LCAwLCAwKTsKLSAgICBlbHNlIGlmIChtb2RlID09IE9wZW5Gb3JXcml0ZSkgeworICAgIGVsc2Ug
aWYgKG1vZGUgPT0gRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKSB7CiAgICAgICAgIGlmIChnX2Zp
bGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVT
VF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCiAgICAgICAgICAgICBpb1N0cmVh
bSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKICAgICAgICAgZWxz
ZQpAQCAtMzcyLDI0ICszNzIsMjQgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgcmV0dXJuIGlvU3RyZWFtOwog
fQogCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBnX2lvX3N0
cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUpLCAwLCAwKTsKICAgICBnX29iamVjdF91bnJl
ZihoYW5kbGUpOwotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
aGFuZGxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIH0KIAotbG9u
ZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK2xvbmcgbG9uZyBGaWxlU3lzdGVtOjpzZWVrRmls
ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0
LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbiBvcmlnaW4pCiB7CiAgICAgR1NlZWtUeXBlIHNl
ZWtUeXBlID0gR19TRUVLX1NFVDsKICAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgU2Vl
a0Zyb21CZWdpbm5pbmc6CisgICAgY2FzZSBGaWxlU3lzdGVtOjpTZWVrRnJvbUJlZ2lubmluZzoK
ICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNlZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVTeXN0ZW06OlNlZWtGcm9tQ3VycmVudDoK
ICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFNlZWtGcm9tRW5kOgpAQCAtNDA3LDcgKzQwNyw3IEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBv
CiAgICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9p
bnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKIH0KIAotaW50IHdyaXRlVG9GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
CitpbnQgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBnc2l6ZSBi
eXRlc1dyaXR0ZW47CiAgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChnX2lvX3N0cmVhbV9n
ZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKQEAgLTQxNSw3ICs0MTUsNyBA
QCBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gYnl0ZXNXcml0dGVuOwogfQogCi1pbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCitpbnQgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGRvIHsKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xk
UGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQorYm9vbCBGaWxlU3lzdGVtOjptb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKIHsKICAgICBHVW5p
cXVlUHRyPGdjaGFyPiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOwog
ICAgIGlmICghb2xkRmlsZW5hbWUpCkBAIC00NDAsNyArNDQwLDcgQEAgYm9vbCBtb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKICAgICByZXR1cm4g
Z19yZW5hbWUob2xkRmlsZW5hbWUuZ2V0KCksIG5ld0ZpbGVuYW1lLmdldCgpKSAhPSAtMTsKIH0K
IAotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb24pCitib29sIEZpbGVTeXN0ZW06OmhhcmRMaW5rT3JDb3B5RmlsZShj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKICNpZiBP
UyhXSU5ET1dTKQogICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSwgVFJVRSk7CkBAIC00NjMsNyArNDYzLDcgQEAgYm9vbCBoYXJk
TGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb24pCiAjZW5kaWYKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBGaWxlU3lz
dGVtOjpnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogewogICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZnNGaWxlLmRhdGEoKSk7
CiAgICAgaWYgKCFmaWxlbmFtZSkKQEAgLTQ3OCwxNyArNDc4LDE3IEBAIHN0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKIH0KIAogI2lm
IFVTRShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IEZpbGVMb2NrTW9kZSBsb2NrTW9kZSkKK2Jvb2wgRmlsZVN5c3RlbTo6bG9ja0ZpbGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2Rl
IGxvY2tNb2RlKQogewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gTG9ja1NoYXJlZCwg
TG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NL
X0VYID09IExvY2tFeGNsdXNpdmUsIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBMb2NrTm9uQmxvY2tpbmcsIExvY2tOb25C
bG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NI
ID09IEZpbGVTeXN0ZW06OkxvY2tTaGFyZWQsIEZpbGVTeXN0ZW06OkxvY2tTaGFyZWRFbmNvZGlu
Z0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBGaWxlU3lzdGVt
OjpMb2NrRXhjbHVzaXZlLCBGaWxlU3lzdGVtOjpMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhw
ZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gRmlsZVN5c3RlbTo6TG9ja05v
bkJsb2NraW5nLCBGaWxlU3lzdGVtOjpMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7CiAgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKGhhbmRsZSkpOwogICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVz
Y3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0p
KSwgbG9ja01vZGUpOwogICAgIHJldHVybiByZXN1bHQgIT0gLTE7CiB9CiAKLWJvb2wgdW5sb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorYm9vbCBGaWxlU3lzdGVtOjp1bmxvY2tG
aWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiB7CiAgICAgYXV0byog
aW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhh
bmRsZSkpOwogICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9n
ZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgTE9DS19VTik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApp
bmRleCBhZDczNDlkNmYzZC4uMzM1ZDg1ZDFiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBDU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHVW5pcXVlT3V0UHRy
PGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXplOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMoZmlsZW5hbWUuZGF0YSgp
LCAmY29udGVudHMub3V0UHRyKCksICZzaXplLCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtICVz
IiwgZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVz
c2FnZSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMg
b2YgZmlsZSAlcyAtICVzIiwgRmlsZVN5c3RlbTo6ZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRo
KS51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCBjYTYzM2EyZGE4Zi4uY2I4MGU4MjM2YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLm1tCkBAIC0zNjUsMTAgKzM2NSwxMCBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Y29udGVudEtleVNlc3Npb24oKQogCiAgICAg
ICAgIG1fY29udGVudEtleVNlc3Npb24gPSBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkg
Y29udGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOmdldEFWQ29udGVudEtleVN5c3RlbUZhaXJQ
bGF5U3RyZWFtaW5nKCldOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBzdG9yYWdlRGly
ZWN0b3J5ID0gZGlyZWN0b3J5TmFtZShzdG9yYWdlUGF0aCk7CisgICAgICAgIFN0cmluZyBzdG9y
YWdlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShzdG9yYWdlUGF0aCk7CiAK
LSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHN0b3JhZ2VEaXJlY3RvcnkpKSB7Ci0gICAgICAgICAg
ICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgaWYg
KCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN0b3JhZ2VEaXJlY3RvcnkpKSB7CisgICAgICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlRGlyZWN0b3J5KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4
IDZhOTg5YTVhMDJkLi4xMDdiMWJkZmY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMDUsNyArMTA1LDcg
QEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnN0b3JhZ2VQYXRoKCkgY29u
c3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9y
YWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3Au
cGxpc3QiKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGMwOTczZWZj
MGQ4Li4zMmQzMDhjMDI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtOTI3LDEy
ICs5MjcsMTIgQEAgQVZTdHJlYW1TZXNzaW9uKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN0cmVhbVNlc3Npb24oKQogICAgICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgIGlmICghZmlsZUV4
aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgewotICAgICAgICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0
b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyBzdG9yYWdlUGF0aCA9IHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIp
OworICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKICAgICAg
ICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVlN0cmVhbVNlc3Npb25JbnN0YW5j
ZSgpIGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
c3RvcmFnZVBhdGhdXSk7CiAgICAgfQogICAgIHJldHVybiBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IGZkOWE3NTkyMTdkLi4xMmM5MDFmMzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEzODgsNyArMTM4OCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2so
TWVkaWFQbGF5ZXJQCiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5n
ZXQoKSwgInRlbXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsK
ICAgICBwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIgPSBudWxscHRyOwogCi0gICAgaWYgKFVOTElL
RUxZKCFkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZ
KCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CiAgICAgICAg
IEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0
ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTQwNSw4ICsxNDA1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnB1cmdlT2xkRG93bmxvYWRGaWxlcyhjb25zdCBjaGFyKiBkb3dubG9hZEZpbGUKICAgICBHVW5p
cXVlUHRyPGNoYXI+IHRlbXBsYXRlRmlsZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKGRvd25sb2FkRmls
ZVRlbXBsYXRlKSk7CiAgICAgU3RyaW5nIHRlbXBsYXRlUGF0dGVybiA9IFN0cmluZyh0ZW1wbGF0
ZUZpbGUuZ2V0KCkpLnJlcGxhY2UoIlgiLCAiPyIpOwogCi0gICAgZm9yIChhdXRvJiBmaWxlUGF0
aCA6IGxpc3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdldCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7
Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGVsZXRlRmlsZShmaWxlUGF0aCkpKSB7CisgICAgZm9y
IChhdXRvJiBmaWxlUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodGVtcGxhdGVQYXRo
LmdldCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCkpKSB7CiAgICAgICAgICAgICBHU1RfV0FSTklORygi
Q291bGRuJ3QgdW5saW5rIGxlZ2FjeSBtZWRpYSB0ZW1wb3JhcnkgZmlsZTogJXMiLCBmaWxlUGF0
aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgK
aW5kZXggNjVhZDIyNzg3MDQuLjRjM2U4MDE4ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoSEJJVE1BUCk7CiAKICNpZm5kZWYgTkRFQlVH
Ci0gICAgdm9pZCB3cml0ZVRvRmlsZShMUENXU1RSKTsKKyAgICB2b2lkIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKExQQ1dTVFIpOwogI2VuZGlmCiAKICAgICBVSW50OCogYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRtYXBCdWZmZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tCmluZGV4IGE0NWY3NTdjZGY5Li5kM2RmOGVlZWZmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIE5T
RGljdGlvbmFyeSAqdGVtcG9yYXJ5RGlyZWN0b3J5QXR0cmlidXRlcygpCiAKIE5TU3RyaW5nICpj
cmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5TU3RyaW5nICpmaWxlTmFtZSkKIHsKLSAg
ICBOU1N0cmluZyAqZG93bmxvYWREaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJRdWlja0xvb2tDb250ZW50Iik7CisgICAgTlNTdHJpbmcgKmRvd25sb2FkRGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiUXVpY2tMb29rQ29udGVudCIp
OwogICAgIGlmICghZG93bmxvYWREaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0KaW5kZXggNWNkZjRkODgxYTQuLmIzNDMxNjhlZjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbQpAQCAtNTE2LDcgKzUxNiw3IEBAIHN0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Q
cm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOCiAgICAgaWYg
KCF1cmwpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0
YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFy
eURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOwogICAgIGlm
ICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmls
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4
IDhmMTQzMTY1ODE4Li42NDBkZmMxMmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jv
b2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10g
aW5pdF0pOwogCkBAIC00NSwxMCArNDUsMTAgQEAgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogCiAgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAg
b24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90
aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBm
aWxlKQotICAgIHJldHVybiAhcm1kaXIoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRh
dGEoKSk7CisgICAgcmV0dXJuICFybWRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKTsKIH0KIAotdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIpCit2b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZl
cnJlcikKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKQEAgLTcxLDE1ICs3
MSwxNSBAQCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgUwogICAgIH0pOwogfQogCi1ib29sIGNhbkV4
Y2x1ZGVGcm9tQmFja3VwKCkKK2Jvb2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAo
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0
IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9y
IGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290IHBy
aXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQocGF0aEFzVVJMKHBhdGgpLmdl
dCgpLCBUUlVFLCBGQUxTRSk7IAorICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0
ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYzg5YjUyODNlMzkuLjZhNWYxMmU4NGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAsIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9zaXplKDAp
Ci0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmlsZVRpbWUoKSkKKyAg
ICAsIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGlt
ZSgpKQogewogfQogCkBAIC00Niw3ICs0Niw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJs
b2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAg
ICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKLSAgICAgICAgZGVsZXRlRmlsZSht
X3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBs
YWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgZG91YmxlIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkKICAgICAvLyBXZSBk
byBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlvbnMgZm9yIGdlbmVyYXRlZCBmaWxlcywg
YmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBp
cyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUgaGFuZGxpbmcgLSBGaWxlIG9iamVjdHMg
c2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJseWluZyBmaWxlcyBjaGFuZ2UuCiAgICAg
aWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB8fCAhbV9yZXBsYWNlbWVudFBhdGgu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkRmlsZVRpbWUoKTsKKyAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpOwogI2VuZGlmCiAKICAgICByZXR1cm4g
bV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpCiAjZW5kaWYKIAog
ICAgIC8vIEZJWE1FOiBTb21lIHBsYXRmb3JtcyBwcm92aWRlIGJldHRlciB3YXlzIHRvIGxpc3Rl
biBmb3IgZmlsZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMsIGNvbnNpZGVyIHVzaW5nIHRoZXNlLgot
ICAgIGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3BhdGgp
OworICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcyhtX3BhdGgpOwogICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAKaW5kZXggMGYwMTk3NGNhMmIuLjE5N2ViMjkyZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTI4Mywx
NCArMjgzLDE0IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzCiAKICAgICAgICAgYXV0byBwZXJm
b3JtV3JpdGluZyA9IFtibG9ic0ZvcldyaXRpbmcgPSBXVEZNb3ZlKGJsb2JzRm9yV3JpdGluZyks
ICZmaWxlUGF0aHNdKCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBibG9iIDogYmxvYnNGb3JX
cml0aW5nKSB7Ci0gICAgICAgICAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKEFTQ0lJ
TGl0ZXJhbCgiQmxvYiIpLCBmaWxlKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGVtcEZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoQVNDSUlMaXRlcmFsKCJCbG9iIiksIGZp
bGUpOwogCiAgICAgICAgICAgICAgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVF
eGl0KFtmaWxlXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBjbG9zZUZpbGUoZmls
ZSk7CisgICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
dGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5kbGVWYWxpZChmaWxlKSkgeworICAgICAg
ICAgICAgICAgIGlmICh0ZW1wRmlsZVBhdGguaXNFbXB0eSgpIHx8ICFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgZm9yIHdyaXRpbmcgYSBCbG9iIHRvIEluZGV4ZWREQiIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMjk4LDEzICsyOTgsMTMgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMKICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iLmZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBhcnQuc2Vjb25kLmRhdGEoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vjb25kLmRhdGEoKS0+c2l6ZSgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwgbGVuZ3RoKSAhPSBs
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRh
KCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgd3JpdGluZyBhIEJsb2IgdG8gdGVtcG9yYXJ5IGZpbGUg
Zm9yIHN0b3JhZ2UgaW4gSW5kZXhlZERCIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFwYXJ0LmZpcnN0
LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFwcGVuZEZpbGVDb250
ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0LCBmaWxlKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjphcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUocGFy
dC5maXJzdCwgZmlsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVudHMgdG8gYSBCbG9iIHRlbXBvcmFyeSBmaWxlIGZv
ciBzdG9yYWdlIGluIEluZGV4ZWREQiAoJXMgdG8gJXMpIiwgcGFydC5maXJzdC51dGY4KCkuZGF0
YSgpLCB0ZW1wRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBjNTc1ZmRhNDUyYS4u
NzI0NDIzZWVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5n
dGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgaWYgKG1fZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgcmV0dXJuIG1fZmlsZUxlbmd0aDsKICAgICAg
ICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICBpZiAoZ2V0RmlsZVNpemUobV9zaG91bGRH
ZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9maWxlbmFtZSwgZmlsZVNpemUp
KQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZp
bGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZpbGVTaXplOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVu
ZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUs
IGludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRz
LmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRP
ZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUp
KTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTQwOCw5ICs0
MDgsOSBAQCB2b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCkKICAg
ICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6RW5jb2Rl
ZEZpbGUgJiYgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOwogICAgICAgICAgICAg
QVNTRVJUKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUpOwotICAgICAgICAgICAgU3RyaW5n
IGRpcmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsK
LSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAg
ICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgICAgICAgICBT
dHJpbmcgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2Vu
ZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbGVt
ZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKICAgICAgICAgICAgIGVsZW1lbnQubV9nZW5lcmF0
ZWRGaWxlbmFtZSA9IFN0cmluZygpOwogICAgICAgICAgICAgZWxlbWVudC5tX293bnNHZW5lcmF0
ZWRGaWxlID0gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDkzODM4
MjQ0YTdjLi5hMTQ0ZDM1MjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0xNDcsMTMgKzE0
NywxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRz
KiBmb3JtKQogICAgICAgICBmb3JtLT5jdXJyZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBv
ciBub3QgaWYgcmVxdWlyZWQuCi0gICAgICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUobmV4dElucHV0
Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpIHsKKyAgICAgICAgaWYgKEZpbGVTeXN0
ZW06OmlzVmFsaWRGaWxlVGltZShuZXh0SW5wdXQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lKSkgewogICAgICAgICAgICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAg
ICAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShuZXh0SW5wdXQubV9maWxlbmFtZSwg
ZmlsZU1vZGlmaWNhdGlvblRpbWUpIHx8IGZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0YXRpY19j
YXN0PHRpbWVfdD4obmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpCisg
ICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG5leHRJ
bnB1dC5tX2ZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkgfHwgZmlsZU1vZGlmaWNhdGlv
blRpbWUgIT0gc3RhdGljX2Nhc3Q8dGltZV90PihuZXh0SW5wdXQubV9leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbmV4dElucHV0Lm1fc2hvdWxkR2VuZXJhdGVG
aWxlID8gbmV4dElucHV0Lm1fZ2VuZXJhdGVkRmlsZW5hbWUgOiBuZXh0SW5wdXQubV9maWxlbmFt
ZTsKLSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhG
aWxlKDAsIHBhdGhBc1VSTChwYXRoKS5nZXQoKSk7CisgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJl
YW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwo
cGF0aCkuZ2V0KCkpOwogICAgICAgICBpZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAg
ICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgYmVjb21lIHVucmVh
ZGFibGUuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzksNyArMzc5LDcgQEAgUmV0
YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0oRm9ybURh
dGEmIGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICAgICAgaWYgKGdldEZpbGVT
aXplKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBlbGVtZW50Lm1fZ2VuZXJhdGVkRmls
ZW5hbWUgOiBlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVTaXplKSkKKyAgICAgICAgICAgIGlmIChG
aWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gZWxl
bWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZSkp
CiAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZpbGVTaXplOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggYzc1NzVkN2FhODEuLjYyYzExYzEyNzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIxMiw5ICsyMTIsOSBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCiAgICAgaWYg
KG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgICAgIGF1dG8g
ZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewotICAg
ICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7Cisg
ICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQo
ZnNSZXBGaWxlKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFs
dWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVl
c3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApp
bmRleCBlZDU5MDI2NTFiMi4uMDM1YTZiMTkwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50
cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYg
Y2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVuYW1lKGNhY2hlRGlyKQogICAgICwgbV9jb250
ZW50RmlsZW5hbWUoY2FjaGVEaXIpCi0gICAgLCBtX2NvbnRlbnRGaWxlKGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCisgICAgLCBtX2NvbnRlbnRGaWxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6ZSgwKQogICAgICwgbV9leHBpcmVEYXRl
KC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OmlzTG9hZGluZygpIGNvbnN0CiAvLyBDYWNoZSBtYW5hZ2VyIHNob3Vs
ZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6aXND
YWNoZWQoKQogewotICAgIGlmICghZmlsZUV4aXN0cyhtX2NvbnRlbnRGaWxlbmFtZSkgfHwgIWZp
bGVFeGlzdHMobV9oZWFkZXJGaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKG1fY29udGVudEZpbGVuYW1lKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2hlYWRl
ckZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2hlYWRlclBh
cnNlZCkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNo
ZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBBcHBlbmQKLSAgICB3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBkYXRh
LCBzaXplKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBkYXRh
LCBzaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI1LDggKzEyNSw4IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIGJv
b2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRlckZpbGUgPSBv
cGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmICghaXNIYW5k
bGVWYWxpZChoZWFkZXJGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBoZWFkZXJGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgRmls
ZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQoaGVhZGVyRmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291
bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNDAsMTIgKzE0MCwxMiBA
QCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVl
KTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOwogICAgICAgICBDU3RyaW5nIGhl
YWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9G
aWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRp
bjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxl
LCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsK
ICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQt
PnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaGVhZGVyRmls
ZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhlYWRlckZpbGUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMjcsMTYgKzIyNywxNiBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5l
cmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCiBib29sIEN1cmxDYWNoZUVudHJ5
Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYg
YnVmZmVyKQogewogICAgIC8vIE9wZW4gdGhlIGZpbGUKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
aW5wdXRGaWxlID0gb3BlbkZpbGUoZmlsZXBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlz
SGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlcGF0aCwgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1
dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBv
cGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgbG9uZyBsb25nIGZpbGVzaXplID0gLTE7Ci0gICAg
aWYgKCFnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBmaWxl
cGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTI0OSwyNCArMjQ5LDI0IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6
OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBi
dWZmCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVhZFNp
emUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRp
b247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZyb21GaWxlKGlucHV0RmlsZSwgYnVmZmVy
LmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CisgICAgICAgIGJ5dGVz
UmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkg
KyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwogICAgICAgICBpZiAoYnl0ZXNSZWFk
ICE9IGJ1ZmZlclJlYWRTaXplKSB7CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVy
cm9yOiBDb3VsZCBub3QgcmVhZCBmcm9tICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkp
OwotICAgICAgICAgICAgY2xvc2VGaWxlKGlucHV0RmlsZSk7CisgICAgICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCiAgICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAg
IH0KLSAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aW5wdXRGaWxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6
aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50RmlsZSgpOwotICAgIGRlbGV0ZUZpbGUo
bV9oZWFkZXJGaWxlbmFtZSk7Ci0gICAgZGVsZXRlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7Cisg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2hlYWRlckZpbGVuYW1lKTsKKyAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fY29udGVudEZpbGVuYW1lKTsKICAgICBMT0coTmV0d29yaywgIkNh
Y2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9iYXNlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogfQog
CkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cGFyc2VSZXNwb25zZUhl
YWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgZG91YmxlIGZpbGVU
aW1lOwogICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9uRGF0ZTsKIAotICAgIGlmIChnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtX2hlYWRlckZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9uRGF0ZSkp
CisgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1faGVhZGVyRmls
ZW5hbWUsIGZpbGVNb2RpZmljYXRpb25EYXRlKSkKICAgICAgICAgZmlsZVRpbWUgPSBkaWZmdGlt
ZShmaWxlTW9kaWZpY2F0aW9uRGF0ZSwgMCkgKiAxMDAwLjA7CiAgICAgZWxzZQogICAgICAgICBm
aWxlVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsgLy8gR01UCkBAIC0zNDIsMTEgKzM0MiwxMSBAQCBz
aXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgpCiAgICAgICAgIGxvbmcgbG9uZyBoZWFk
ZXJGaWxlU2l6ZTsKICAgICAgICAgbG9uZyBsb25nIGNvbnRlbnRGaWxlU2l6ZTsKIAotICAgICAg
ICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkgewor
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhl
YWRlckZpbGVTaXplKSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4x
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVudEZpbGVuYW1lLCBjb250ZW50RmlsZVNp
emUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9jb250ZW50Rmls
ZW5hbWUsIGNvbnRlbnRGaWxlU2l6ZSkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2Fj
aGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBtX2NvbnRlbnRGaWxl
bmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZW50cnlTaXplOwog
ICAgICAgICB9CkBAIC0zNjAsMTIgKzM2MCwxMiBAQCBzaXplX3QgQ3VybENhY2hlRW50cnk6OmVu
dHJ5U2l6ZSgpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6Om9wZW5Db250ZW50RmlsZSgpCiB7Ci0g
ICAgaWYgKGlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAotICAgIG1fY29udGVudEZpbGUgPSBvcGVuRmlsZShtX2NvbnRlbnRGaWxlbmFtZSwgT3BlbkZv
cldyaXRlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9jb250
ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoaXNIYW5k
bGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgTE9HKE5l
dHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2Nv
bnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwpAQCAtMzc0LDExICszNzQsMTEgQEAgYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6b3BlbkNvbnRlbnRGaWxlKCkKIAogYm9vbCBDdXJsQ2FjaGVFbnRy
eTo6Y2xvc2VDb250ZW50RmlsZSgpCiB7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1fY29udGVu
dEZpbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjbG9zZUZpbGUobV9jb250ZW50RmlsZSk7
Ci0gICAgbV9jb250ZW50RmlsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fY29udGVudEZpbGUpOworICAgIG1fY29udGVudEZpbGUgPSBG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oCmluZGV4IDkyZDZiYzMzYTRhLi44MWNiYzcxMzliMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgK
QEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9oZWFkZXJGaWxlbmFtZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50RmlsZW5hbWU7CiAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9jb250ZW50RmlsZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250
ZW50RmlsZTsKIAogICAgIHNpemVfdCBtX2VudHJ5U2l6ZTsKICAgICBkb3VibGUgbV9leHBpcmVE
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDM1YmZlMmVmMmMyLi40NmUxN2U5ZmQxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcApAQCAtNzYsOCArNzYsOCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6
OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKCFmaWxlRXhpc3RzKG1fY2FjaGVEaXIpKSB7Ci0gICAgICAg
IGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXIpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVEaXIpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXIpKSB7CiAgICAgICAgICAgICBMT0coTmV0d29y
aywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiBvciBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5
ISBDYWNoZU1hbmFnZXIgZGlzYWJsZWQuXG4iKTsKICAgICAgICAgICAgIG1fZGlzYWJsZWQgPSB0
cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzLDE0ICsxMDMsMTQgQEAgdm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKIAotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBPcGVu
Rm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKKyAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3Jr
LCAiQ2FjaGUgV2FybmluZzogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGluZGV4Rmls
ZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGxv
bmcgbG9uZyBmaWxlc2l6ZSA9IC0xOwotICAgIGlmICghZ2V0RmlsZVNpemUoaW5kZXhGaWxlUGF0
aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShpbmRleEZp
bGVQYXRoLCBmaWxlc2l6ZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNCwxMCArMTI0LDEwIEBAIHZv
aWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgaWYgKGZpbGVzaXplIC0g
YnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKICAgICAgICAgICAgIGJ1ZmZlclJlYWRT
aXplID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKIAotICAgICAgICByZWFkRnJvbUZpbGUo
aW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXpl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGluZGV4RmlsZSwgYnVmZmVyLmRh
dGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CiAgICAgICAgIGJ1ZmZlclBv
c2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0KLSAgICBjbG9zZUZpbGUoaW5kZXhGaWxl
KTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKIAogICAgIC8vIENyZWF0
ZSBzdHJpbmdzIGZyb20gYnVmZmVyCiAgICAgU3RyaW5nIGhlYWRlckNvbnRlbnQgPSBTdHJpbmco
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CkBAIC0xNjQsOSArMTY0LDkgQEAgdm9pZCBD
dXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1f
Y2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKIAotICAg
IGRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4
RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKCFp
c0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGlu
ZGV4RmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZp
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVu
Rm9yV3JpdGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUp
KSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVz
IGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTc1LDEyICsxNzUsMTIgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzYXZlSW5kZXgoKQogICAgIGNvbnN0IGF1dG8mIGVuZCA9IG1fTFJVRW50cnlMaXN0LmVuZCgp
OwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgY29uc3QgQ1N0cmluZyYgdXJsTGF0
aW4xID0gaXQtPmxhdGluMSgpOwotICAgICAgICB3cml0ZVRvRmlsZShpbmRleEZpbGUsIHVybExh
dGluMS5kYXRhKCksIHVybExhdGluMS5sZW5ndGgoKSk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGlu
ZGV4RmlsZSwgIlxuIiwgMSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGluZGV4
RmlsZSwgdXJsTGF0aW4xLmRhdGEoKSwgdXJsTGF0aW4xLmxlbmd0aCgpKTsKKyAgICAgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCAiXG4iLCAxKTsKICAgICAgICAgKytpdDsK
ICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaW5kZXhGaWxlKTsKIH0KIAogdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZv
ck5ld0VudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggODUwNDdmZGM2Y2UuLmFlMmJmZDY4ZTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkQ29t
cGxldGUoKQogCiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBp
ZiAobV9jdXJsUmVxdWVzdCAmJiAhbV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRo
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24pOworICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6bW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVz
dGluYXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX2xpc3RlbmVyKQpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiByZXNvdXJjZUVycm9yKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kZWxl
dGVzRmlsZVVwb25GYWlsdXJlICYmIG1fY3VybFJlcXVlc3QgJiYgIW1fY3VybFJlcXVlc3QtPmdl
dERvd25sb2FkZWRGaWxlUGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX2N1
cmxSZXF1ZXN0LT5nZXREb3dubG9hZGVkRmlsZVBhdGgoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkpOwogCiAg
ICAgaWYgKG1fbGlzdGVuZXIpCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZEZhaWwoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
CmluZGV4IDJlZTM0N2Y0NzY1Li45N2NhMzJlYTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC00NDgsNyArNDQ4
LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBGb3JtRGF0YShSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgaXNQb3N0UmVxdWVzdCkKICAgICBmb3IgKGF1dG8gZWxlbWVudCA6IGVsZW1l
bnRzKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5
cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICBsb25nIGxvbmcgZmlsZVNpemVSZXN1bHQ7
Ci0gICAgICAgICAgICBpZiAoZ2V0RmlsZVNpemUoZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6
ZVJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVt
ZW50Lm1fZmlsZW5hbWUsIGZpbGVTaXplUmVzdWx0KSkgewogICAgICAgICAgICAgICAgIGlmIChm
aWxlU2l6ZVJlc3VsdCA+IG1heEN1cmxPZmZUKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZp
bGUgc2l6ZSBpcyB0b28gYmlnIGZvciBzcGVjaWZ5aW5nIGl0IHRvIGNVUkwKICAgICAgICAgICAg
ICAgICAgICAgY2h1bmtlZFRyYW5zZmVyID0gdHJ1ZTsKQEAgLTYxOSwyMiArNjE5LDIyIEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICht
X2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9kb3dubG9hZEZpbGVQ
YXRoID0gb3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2FkIiwgbV9kb3dubG9hZEZpbGVIYW5kbGUp
OworICAgICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoImRvd25sb2FkIiwgbV9kb3dubG9hZEZpbGVIYW5kbGUpOwogICAgIH0KIAotICAg
IGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQot
ICAgICAgICB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAKLSAgICBpZiAobV9kb3dubG9hZEZp
bGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBpZiAobV9kb3dubG9h
ZEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKLSAg
ICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKKyAgICBtX2Rvd25s
b2FkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiB9
CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBEb3dubG9hZEZpbGUoKQpAQCAtNjQyLDcgKzY0
Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBEb3dubG9hZEZpbGUoKQogICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAKICAgICBpZiAoIW1fZG93bmxvYWRGaWxl
UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX2Rvd25sb2FkRmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZG93bmxvYWRGaWxlUGF0aCk7CiAg
ICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IFN0cmluZygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXgg
MjViMWU5NjczNWUuLmE2N2ZmNzFmNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZh
dGU6CiAgICAgTG9jayBtX2Rvd25sb2FkTXV0ZXg7CiAgICAgYm9vbCBtX2lzRW5hYmxlZERvd25s
b2FkVG9GaWxlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9kb3dubG9hZEZpbGVQYXRoOwotICAg
IFBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3du
bG9hZEZpbGVIYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07
CiAKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1ldHJpY3M7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcAppbmRleCBlY2RiZjExYTViMi4uMWNmZmUzODNlZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNl
dENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMoY2Vy
dGlmaWNhdGUpKQorICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNlcnRpZmljYXRlKSkK
ICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpLnNldENsaWVudENl
cnRpZmljYXRlSW5mbyhob3N0LCBjZXJ0aWZpY2F0ZSwga2V5KTsKICAgICBlbHNlCiAgICAgICAg
IExPRyhOZXR3b3JrLCAiSW52YWxpZCBjbGllbnQgY2VydGlmaWNhdGUgZmlsZTogJXMhXG4iLCBj
ZXJ0aWZpY2F0ZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1t
CmluZGV4IDVhYWQyM2E1YzI2Li5mY2Y1NWQ3NmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZU1hYy5tbQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2Vu
ZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogCiAgICAgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJh
dGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkgewotICAg
ICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1f
cmVwbGFjZW1lbnRQYXRoKSkKKyAgICAgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVt
OjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0aCkpCiAgICAg
ICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcAppbmRleCA2NDU3ODYxNWMxZS4uMjI2YWVlOWYwMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXF1ZXN0U291cC5jcHAKQEAgLTQxLDExICs0MSwxMSBAQCBzdGF0aWMgdWludDY0X3QgYXBw
ZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQoc291cE1lc3NhZ2UtPnJlcXVl
c3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBibG9iSXRlbS5kYXRhKCkuZGF0YSgpLT5k
YXRhKCkgKyBibG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0ZW0ubGVuZ3RoKCkpOwogICAgICAgICBy
ZXR1cm4gYmxvYkl0ZW0ubGVuZ3RoKCk7CiAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZp
bGU6IHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRmlsZVRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6aXNWYWxp
ZEZpbGVUaW1lKGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25U
aW1lOwotICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUo
KS0+cGF0aCgpLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVt
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSwgZmlsZU1v
ZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBz
dGF0aWNfY2FzdDx0aW1lX3Q+KGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5k
ZXggZDVhNzQyNjdjY2MuLjc5NWQ3ZGJjYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAt
MjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzdHJpbmdJc051bWVyaWMoY29uc3Qg
Y2hhciogc3RyKQogLy8gT2xkIHZlcnNpb25zIG9mIFdlYktpdCBjcmVhdGVkIHRoaXMgY2FjaGUu
CiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5n
JiBjYWNoZURpcmVjdG9yeSkKIHsKLSAgICBDU3RyaW5nIGNhY2hlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeSk7CisgICAgQ1N0cmluZyBjYWNoZVBhdGggPSBG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkpOwogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVGaWxlKGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVQYXRoLmRh
dGEoKSwgInNvdXAuY2FjaGUyIiwgbnVsbHB0cikpOwogICAgIGlmICghZ19maWxlX3Rlc3QoY2Fj
aGVGaWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAK
aW5kZXggZGU5YTRhNmNlZGMuLmMyZDgxOWM0MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBh
dGgpCitib29sIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogewog
ICAgIGlmIChwYXRoLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDU3Ry
aW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcg
ZnNSZXAgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAg
ICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjEsOSArNjEsOSBAQCBib29sIGZpbGVFeGlzdHMoY29uc3QgU3Ry
aW5nJiBwYXRoKQogICAgIHJldHVybiAhc3RhdChmc1JlcC5kYXRhKCksICZmaWxlSW5mbyk7CiB9
CiAKLWJvb2wgZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIENTdHJpbmcgZnNSZXAgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgQ1N0cmluZyBmc1JlcCA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmICghZnNSZXAu
ZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC03Miw0MiArNzIsNDIgQEAgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkK
ICAgICByZXR1cm4gIXVubGluayhmc1JlcC5kYXRhKCkpOwogfQogCi1QbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK1BsYXRm
b3JtRmlsZUhhbmRsZSBGaWxlU3lzdGVtOjpvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewotICAgIENTdHJpbmcgZnNSZXAgPSBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgQ1N0cmluZyBmc1JlcCA9IEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlmIChmc1JlcC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgICAg
IHJldHVybiBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgaW50
IHBsYXRmb3JtRmxhZyA9IDA7Ci0gICAgaWYgKG1vZGUgPT0gT3BlbkZvclJlYWQpCisgICAgaWYg
KG1vZGUgPT0gRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpCiAgICAgICAgIHBsYXRmb3JtRmxhZyB8
PSBPX1JET05MWTsKLSAgICBlbHNlIGlmIChtb2RlID09IE9wZW5Gb3JXcml0ZSkKKyAgICBlbHNl
IGlmIChtb2RlID09IEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSkKICAgICAgICAgcGxhdGZvcm1G
bGFnIHw9IChPX1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DKTsKICNpZiBPUyhEQVJXSU4pCi0g
ICAgZWxzZSBpZiAobW9kZSA9PSBPcGVuRm9yRXZlbnRzT25seSkKKyAgICBlbHNlIGlmIChtb2Rl
ID09IEZpbGVTeXN0ZW06Ok9wZW5Gb3JFdmVudHNPbmx5KQogICAgICAgICBwbGF0Zm9ybUZsYWcg
fD0gT19FVlRPTkxZOwogI2VuZGlmCiAKICAgICByZXR1cm4gb3Blbihmc1JlcC5kYXRhKCksIHBs
YXRmb3JtRmxhZywgMDY2Nik7CiB9CiAKLXZvaWQgY2xvc2VGaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQordm9pZCBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQoaGFuZGxlKSkg
eworICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKICAgICAgICAg
Y2xvc2UoaGFuZGxlKTsKLSAgICAgICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZTsKKyAgICAgICAgaGFuZGxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZTsKICAgICB9CiB9CiAKLWxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCitsb25nIGxvbmcg
RmlsZVN5c3RlbTo6c2Vla0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW4gb3JpZ2luKQog
ewogICAgIGludCB3aGVuY2UgPSBTRUVLX1NFVDsKICAgICBzd2l0Y2ggKG9yaWdpbikgewotICAg
IGNhc2UgU2Vla0Zyb21CZWdpbm5pbmc6CisgICAgY2FzZSBGaWxlU3lzdGVtOjpTZWVrRnJvbUJl
Z2lubmluZzoKICAgICAgICAgd2hlbmNlID0gU0VFS19TRVQ7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgU2Vla0Zyb21DdXJyZW50OgorICAgIGNhc2UgRmlsZVN5c3RlbTo6U2Vla0Zyb21DdXJy
ZW50OgogICAgICAgICB3aGVuY2UgPSBTRUVLX0NVUjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTZWVrRnJvbUVuZDoKQEAgLTExOSwxMyArMTE5LDEzIEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdp
biBvCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obHNlZWsoaGFuZGxlLCBvZmZz
ZXQsIHdoZW5jZSkpOwogfQogCi1ib29sIHRydW5jYXRlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0KQorYm9vbCBGaWxlU3lzdGVtOjp0cnVuY2F0ZUZpbGUo
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCkK
IHsKICAgICAvLyBmdHJ1bmNhdGUgcmV0dXJucyAwIHRvIGluZGljYXRlIHRoZSBzdWNjZXNzLgog
ICAgIHJldHVybiAhZnRydW5jYXRlKGhhbmRsZSwgb2Zmc2V0KTsKIH0KIAotaW50IHdyaXRlVG9G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCitpbnQgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBkbyB7
CiAgICAgICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZShoYW5kbGUsIGRhdGEsIHN0YXRpY19j
YXN0PHNpemVfdD4obGVuZ3RoKSk7CkBAIC0xMzUsNyArMTM1LDcgQEAgaW50IHdyaXRlVG9GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
CiAgICAgcmV0dXJuIC0xOwogfQogCi1pbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCitpbnQgRmlsZVN5c3RlbTo6cmVhZEZy
b21GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEs
IGludCBsZW5ndGgpCiB7CiAgICAgZG8gewogICAgICAgICBpbnQgYnl0ZXNSZWFkID0gcmVhZCho
YW5kbGUsIGRhdGEsIHN0YXRpY19jYXN0PHNpemVfdD4obGVuZ3RoKSk7CkBAIC0xNDYsMTYgKzE0
NiwxNiBAQCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCiB9CiAKICNpZiBVU0UoRklMRV9MT0NLKQotYm9vbCBsb2NrRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBGaWxlTG9ja01vZGUgbG9ja01vZGUpCitib29s
IEZpbGVTeXN0ZW06OmxvY2tGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIEZpbGVTeXN0ZW06OkZpbGVMb2NrTW9kZSBsb2NrTW9kZSkKIHsKLSAgICBDT01QSUxFX0FT
U0VSVChMT0NLX1NIID09IExvY2tTaGFyZWQsIExvY2tTaGFyZWRFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBMb2NrRXhjbHVzaXZlLCBMb2NrRXhj
bHVzaXZlRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIg
PT0gTG9ja05vbkJsb2NraW5nLCBMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19TSCA9PSBGaWxlU3lzdGVtOjpMb2NrU2hhcmVkLCBG
aWxlU3lzdGVtOjpMb2NrU2hhcmVkRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOworICAgIENPTVBJTEVf
QVNTRVJUKExPQ0tfRVggPT0gRmlsZVN5c3RlbTo6TG9ja0V4Y2x1c2l2ZSwgRmlsZVN5c3RlbTo6
TG9ja0V4Y2x1c2l2ZUVuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChM
T0NLX05CID09IEZpbGVTeXN0ZW06OkxvY2tOb25CbG9ja2luZywgRmlsZVN5c3RlbTo6TG9ja05v
bkJsb2NraW5nRW5jb2RpbmdJc0FzRXhwZWN0ZWQpOwogICAgIGludCByZXN1bHQgPSBmbG9jayho
YW5kbGUsIGxvY2tNb2RlKTsKICAgICByZXR1cm4gKHJlc3VsdCAhPSAtMSk7CiB9CiAKLWJvb2wg
dW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorYm9vbCBGaWxlU3lzdGVtOjp1
bmxvY2tGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiB7CiAgICAg
aW50IHJlc3VsdCA9IGZsb2NrKGhhbmRsZSwgTE9DS19VTik7CiAgICAgcmV0dXJuIChyZXN1bHQg
IT0gLTEpOwpAQCAtMTYzLDkgKzE2Myw5IEBAIGJvb2wgdW5sb2NrRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlKQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oTUFDKQotYm9vbCBkZWxldGVF
bXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcgZnNSZXAgPSBG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAoIWZz
UmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTc1LDkgKzE3NSw5IEBAIGJvb2wgZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoKQogfQogI2VuZGlmCiAKLWJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKIHsKLSAgICBDU3RyaW5nIGZz
UmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcgZnNSZXAg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAo
IWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgZ2V0RmlsZVNpemUoY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBn
ZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCkK
K2Jvb2wgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCiB7CiAgICAgc3RydWN0IHN0YXQgZmlsZUlu
Zm87CiAgICAgaWYgKGZzdGF0KGhhbmRsZSwgJmZpbGVJbmZvKSkKQEAgLTIwMSwxMCArMjAxLDEw
IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25n
JiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0RmlsZUNyZWF0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQorYm9vbCBGaWxlU3lzdGVtOjpn
ZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7
CiAjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9TKEZSRUVC
U0QpCi0gICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
KyAgICBDU3RyaW5nIGZzUmVwID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdc
MCcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIyMyw5ICsyMjMsOSBAQCBib29sIGdldEZp
bGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKICNlbmRp
ZgogfQogCi1ib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwg
dGltZV90JiByZXN1bHQpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCiB7Ci0gICAgQ1N0cmluZyBmc1Jl
cCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBDU3RyaW5nIGZzUmVwID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFm
c1JlcC5kYXRhKCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTI1MCw3ICsyNTAsNyBAQCBzdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmls
ZU1ldGF0YVR5cGUoc3RydWN0IHN0YXQgZmlsZUluZm8pCiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgsIGludCAoKnN0YXRGdW5jKShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKSkKIHsKLSAgICBD
U3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJp
bmcgZnNSZXAgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAK
ICAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0gJ1wwJykKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTI1OSw3ICsyNTksNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3Ry
aW5nJiBwYXRoLAogICAgIGlmIChzdGF0RnVuYyhmc1JlcC5kYXRhKCksICZmaWxlSW5mbykpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRo
R2V0RmlsZU5hbWUocGF0aCk7CisgICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0
aEdldEZpbGVOYW1lKHBhdGgpOwogICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0
eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKICAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKICAg
ICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihmaWxlSW5mby5zdF9tdGltZSksCkBAIC0yNjksMzcg
KzI2OSwzNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIH07CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKQorc3Rk
OjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0
aCwgJmxzdGF0KTsKIH0KIAotc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25z
dCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgcmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24o
cGF0aCwgJnN0YXQpOwogfQogCi1ib29sIGNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcm
IHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKK2Jvb2wgRmlsZVN5
c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3Qg
U3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKQogewotICAgIENTdHJpbmcgdGFyZ2V0UGF0aEZTUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdldFBhdGgpOworICAgIENTdHJpbmcgdGFy
Z2V0UGF0aEZTUmVwID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHRhcmdl
dFBhdGgpOwogICAgIGlmICghdGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSB8fCB0YXJnZXRQYXRoRlNS
ZXAuZGF0YSgpWzBdID09ICdcMCcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTdHJp
bmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJv
bGljTGlua1BhdGgpOworICAgIENTdHJpbmcgc3ltYm9saWNMaW5rUGF0aEZTUmVwID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN5bWJvbGljTGlua1BhdGgpOwogICAgIGlm
ICghc3ltYm9saWNMaW5rUGF0aEZTUmVwLmRhdGEoKSB8fCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAu
ZGF0YSgpWzBdID09ICdcMCcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiAh
c3ltbGluayh0YXJnZXRQYXRoRlNSZXAuZGF0YSgpLCBzeW1ib2xpY0xpbmtQYXRoRlNSZXAuZGF0
YSgpKTsKIH0KIAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQorU3RyaW5nIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29t
cG9uZW50KQogewogICAgIGlmIChwYXRoLmVuZHNXaXRoKCcvJykpCiAgICAgICAgIHJldHVybiBw
YXRoICsgY29tcG9uZW50OwogICAgIHJldHVybiBwYXRoICsgIi8iICsgY29tcG9uZW50OwogfQog
Ci1TdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0
IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKK1N0cmluZyBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmlu
Z1ZpZXc+JiBjb21wb25lbnRzKQogewogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBi
dWlsZGVyLmFwcGVuZChwYXRoKTsKQEAgLTMxMCw5ICszMTAsOSBAQCBTdHJpbmcgcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3
PiYgY29tcAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLWJvb2wgbWFrZUFs
bERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBDU3RyaW5nIGZ1bGxQYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIENTdHJpbmcgZnVsbFBhdGgg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgaWYgKCFh
Y2Nlc3MoZnVsbFBhdGguZGF0YSgpLCBGX09LKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAg
LTMzNiwxNCArMzM2LDE0IEBAIGJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpCitTdHJpbmcgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNl
RmluZCgnLycpICsgMSk7CiB9CiAKLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYg
cGF0aCkKK1N0cmluZyBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKLSAgICBDU3RyaW5nIGZzUmVwID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OworICAgIENTdHJpbmcgZnNSZXAgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGF0aCk7CiAKICAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRhKClbMF0gPT0g
J1wwJykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMzUxLDExICszNTEsMTEgQEAgU3Ry
aW5nIGRpcmVjdG9yeU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBkaXJuYW1l
KGZzUmVwLm11dGFibGVEYXRhKCkpOwogfQogCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCitWZWN0b3I8U3RyaW5n
PiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBmaWx0ZXIpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gZW50cmllczsKLSAgICBDU3RyaW5n
IGNwYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwotICAgIENTdHJpbmcgY2Zp
bHRlciA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWx0ZXIpOworICAgIENTdHJpbmcgY3Bh
dGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgQ1N0
cmluZyBjZmlsdGVyID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbHRl
cik7CiAgICAgRElSKiBkaXIgPSBvcGVuZGlyKGNwYXRoLmRhdGEoKSk7CiAgICAgaWYgKGRpcikg
ewogICAgICAgICBzdHJ1Y3QgZGlyZW50KiBkcDsKQEAgLTM2OSw3ICszNjksNyBAQCBWZWN0b3I8
U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBm
aWx0ZXIpCiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoZmlsZVBhdGgp
IC0gMSkgPCBzbnByaW50ZihmaWxlUGF0aCwgc2l6ZW9mKGZpbGVQYXRoKSwgIiVzLyVzIiwgY3Bh
dGguZGF0YSgpLCBuYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gYnVmZmVyIG92
ZXJmbG93CiAKLSAgICAgICAgICAgIGF1dG8gc3RyaW5nID0gc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgICAgICAgICBhdXRvIHN0cmluZyA9IEZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogCiAg
ICAgICAgICAgICAvLyBTb21lIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9ucyBjYW5ub3QgYmUg
cmVwcmVzZW50ZWQgYXMgYSBVVEYtMTYgc3RyaW5nLAogICAgICAgICAgICAgLy8gc28gdGhpcyBz
dHJpbmcgbWlnaHQgYmUgbnVsbC4KQEAgLTM4Miw3ICszODIsNyBAQCBWZWN0b3I8U3RyaW5nPiBs
aXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB9
CiAKICNpZiAhT1MoREFSV0lOKSB8fCBQTEFURk9STShHVEspCi1TdHJpbmcgb3BlblRlbXBvcmFy
eUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQor
U3RyaW5nIEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4
LCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBjaGFyIGJ1
ZmZlcltQQVRIX01BWF07CiAgICAgY29uc3QgY2hhciogdG1wRGlyID0gZ2V0ZW52KCJUTVBESVIi
KTsKQEAgLTQwMCwyMSArNDAwLDIxIEBAIFN0cmluZyBvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBT
dHJpbmcmIHByZWZpeCwgUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoYnVmZmVyKTsKIAogZW5kOgotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CisgICAgaGFuZGxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAjZW5kaWYKIAotYm9vbCBoYXJk
TGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb24pCitib29sIEZpbGVTeXN0ZW06OmhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcm
IHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKICAgICBpZiAoc291cmNlLmlz
RW1wdHkoKSB8fCBkZXN0aW5hdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIENTdHJpbmcgZnNTb3VyY2UgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc291cmNl
KTsKKyAgICBDU3RyaW5nIGZzU291cmNlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHNvdXJjZSk7CiAgICAgaWYgKCFmc1NvdXJjZS5kYXRhKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIENTdHJpbmcgZnNEZXN0aW5hdGlvbiA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkZXN0aW5hdGlvbik7CisgICAgQ1N0cmluZyBmc0Rlc3RpbmF0aW9uID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRlc3RpbmF0aW9uKTsKICAgICBpZiAoIWZz
RGVzdGluYXRpb24uZGF0YSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQyNiw3ICs0
MjYsNyBAQCBib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKICAgICBpZiAoaGFuZGxlID09IC0xKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIGFwcGVuZFJlc3VsdCA9IGFwcGVuZEZpbGVDb250ZW50
c1RvRmlsZUhhbmRsZShzb3VyY2UsIGhhbmRsZSk7CisgICAgYm9vbCBhcHBlbmRSZXN1bHQgPSBG
aWxlU3lzdGVtOjphcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUoc291cmNlLCBoYW5kbGUp
OwogICAgIGNsb3NlKGhhbmRsZSk7CiAKICAgICAvLyBJZiB0aGUgY29weSBmYWlsZWQsIGRlbGV0
ZSB0aGUgdW51c2FibGUgZmlsZS4KQEAgLTQzNiw3ICs0MzYsNyBAQCBib29sIGhhcmRMaW5rT3JD
b3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikK
ICAgICByZXR1cm4gYXBwZW5kUmVzdWx0OwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7
CiAgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwg
JmZpbGVTdGF0KSA9PSAtMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCBhMDAxYWJlOGRjMC4uNTEzMzc1ZDI0NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENTdHJp
bmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIENT
dHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZVBhdGgpOwogICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUuZGF0YSgpLCBPX1JET05MWSk7CiAg
ICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA4NDE5ZDc2Yzhh
NS4uNmIyYWY1NDUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRmlsZVN5c3RlbS5jcHAKQEAgLTQ4LDE5ICs0OCwxOSBAQCBTUUxpdGVGaWxlU3lzdGVtOjpT
UUxpdGVGaWxlU3lzdGVtKCkKIAogaW50IFNRTGl0ZUZpbGVTeXN0ZW06Om9wZW5EYXRhYmFzZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzcWxpdGUzKiogZGF0YWJhc2UsIGJvb2wpCiB7Ci0gICAg
cmV0dXJuIHNxbGl0ZTNfb3Blbl92MihmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CisgICAgcmV0dXJuIHNxbGl0
ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CiB9CiAKIFN0cmluZyBTUUxp
dGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKIH0KIAogYm9vbCBTUUxpdGVG
aWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06
OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNo
ZWNrUGF0aE9ubHkpCkBAIC02OSwxNiArNjksMTYgQEAgYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpl
bnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBjaGUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNoZWNrUGF0aE9ubHkpIHsKLSAgICAg
ICAgU3RyaW5nIGRpciA9IGRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpOworICAgICAgICBTdHJpbmcg
ZGlyID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSk7CiAgICAgICAgIHJldHVy
biBlbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhkaXIpOwogICAgIH0KIAotICAgIHJldHVy
biBmaWxlRXhpc3RzKGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlTmFtZSk7CiB9CiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRh
YmFzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKIH0KIAogYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFz
ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKQEAgLTg3LDEyICs4NywxMiBAQCBib29sIFNR
TGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQogICAgIFN0cmluZyBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUsIEFTQ0lJTGl0
ZXJhbCgiLXNobSIpKTsKIAogICAgIC8vIFRyeSB0byBkZWxldGUgYWxsIHRocmVlIGZpbGVzIHdo
ZXRoZXIgb3Igbm90IHRoZXkgYXJlIHRoZXJlLgotICAgIGRlbGV0ZUZpbGUoZmlsZU5hbWUpOwot
ICAgIGRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOwotICAgIGRlbGV0ZUZpbGUoc2htRmlsZU5hbWUp
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2ht
RmlsZU5hbWUpOwogCiAgICAgLy8gSWYgYW55IG9mIHRoZSB3YWwgb3Igc2htIGZpbGVzIHJlbWFp
biBhZnRlciB0aGUgZGVsZXRlIGF0dGVtcHQsIHRoZSBvdmVyYWxsIGRlbGV0ZSBvcGVyYXRpb24g
ZmFpbGVkLgotICAgIHJldHVybiAhZmlsZUV4aXN0cyhmaWxlTmFtZSkgJiYgIWZpbGVFeGlzdHMo
d2FsRmlsZU5hbWUpICYmICFmaWxlRXhpc3RzKHNobUZpbGVOYW1lKTsKKyAgICByZXR1cm4gIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZU5hbWUpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHdhbEZpbGVOYW1lKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSk7CiB9
CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDUsMTkgKzEwNSwxOSBAQCBib29sIFNRTGl0ZUZp
bGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKQogbG9uZyBs
b25nIFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKIHsgICAgICAgIAogICAgIGxvbmcgbG9uZyBzaXplOwotICAgIHJldHVybiBnZXRG
aWxlU2l6ZShmaWxlTmFtZSwgc2l6ZSkgPyBzaXplIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNpemUpID8gc2l6ZSA6IDA7CiB9CiAKIGRvdWJsZSBT
UUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlQ3JlYXRpb25UaW1l
KGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRG
aWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOwogfQogCiBkb3VibGUg
U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4
IDc2ZjkyNGVhYmIyLi5jOTA4NjkzMDE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgLy8gRGljdGlvbmFyeSBmaWxl
cyBhbHdheXMgaGF2ZSB0aGUgZm9ybSAiaHlwaF88bG9jYWxlIG5hbWU+LmRpYyIKICAgICAvLyBz
byB3ZSBzdHJpcCBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgbG9jYWxlLgotICAgIFN0cmluZyBmaWxl
TmFtZSA9IHBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKTsKICAgICBzdGF0aWMgY29uc3Qg
aW50IHByZWZpeExlbmd0aCA9IDU7CiAgICAgc3RhdGljIGNvbnN0IGludCBzdWZmaXhMZW5ndGgg
PSA0OwogICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBmaWxlTmFt
ZS5sZW5ndGgoKSAtIHByZWZpeExlbmd0aCAtIHN1ZmZpeExlbmd0aCk7CkBAIC02MSwxNCArNjEs
MTQgQEAgc3RhdGljIFN0cmluZyBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlUGF0aChj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogCiBzdGF0aWMgdm9pZCBzY2FuRGlyZWN0b3J5Rm9yRGlj
dGlvbmFyaWVzKGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgsIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBm
aWxlUGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgImh5cGhfKi5kaWMiKSkgewor
ICAgIGZvciAoYXV0byYgZmlsZVBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVj
dG9yeVBhdGgsICJoeXBoXyouZGljIikpIHsKICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGV4dHJh
Y3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVQYXRoKGZpbGVQYXRoKS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwogCiAgICAgICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAg
ICAgICBpZiAoIXJlYWxwYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCkuZGF0
YSgpLCBub3JtYWxpemVkUGF0aCkpCisgICAgICAgIGlmICghcmVhbHBhdGgoRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGZpbGVQYXRoID0gc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3JtYWxpemVkUGF0aCk7CisgICAgICAgIGZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3Jt
YWxpemVkUGF0aCk7CiAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSwgVmVjdG9y
PFN0cmluZz4oKSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmaWxlUGF0aCk7CiAKICAgICAgICAg
U3RyaW5nIGxvY2FsZVJlcGxhY2luZ1VuZGVyc2NvcmVzID0gU3RyaW5nKGxvY2FsZSk7CkBAIC0y
MjQsNyArMjI0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZGljdGlvbmFyeVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRp
Y3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5h
dGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggZjBjMzUw
Mjk4NjQuLjk2YmQwMzM1OWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHZvaWQgZ2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWVGcm9tRmluZERhdGEoY29uc3QgV0lOMzJfRklORF9EQVRBVyYgZmluZERh
dGEKICAgICB0aW1lID0gZmlsZVRpbWUuUXVhZFBhcnQgLyAxMDAwMDAwMCAtIGtTZWNvbmRzRnJv
bUZpbGVUaW1lVG9UaW1ldDsKIH0KIAotYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyYgc2l6ZSkKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoY29uc3Qg
U3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHNpemUpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBm
aW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKQEAgLTExMiw3
ICsxMTIsNyBAQCBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25n
JiBzaXplKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgc2l6
ZSk7CiB9CiAKLWJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUs
IGxvbmcgbG9uZyYgc2l6ZSkKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKIHsKICAg
ICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb247CiAgICAgaWYgKCE6
OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGZpbGVIYW5kbGUsICZmaWxlSW5mb3JtYXRpb24p
KQpAQCAtMTIxLDcgKzEyMSw3IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGVIYW5kbGUsIGxvbmcgbG9uZyYgc2l6ZSkKICAgICByZXR1cm4gZ2V0RmlsZVNpemVGcm9t
QnlIYW5kbGVGaWxlSW5mb3JtYXRpb25TdHJ1Y3R1cmUoZmlsZUluZm9ybWF0aW9uLCBzaXplKTsK
IH0KIAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRp
bWVfdCYgdGltZSkKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBm
aW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKQEAgLTEzMSw3
ICsxMzEsNyBAQCBib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCwgdGltZV90JiB0aW1lKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldEZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitib29sIEZpbGVTeXN0
ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUp
CiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKQEAgLTE0MywxNiArMTQzLDE2IEBAIGJvb2wgZ2V0RmlsZUNyZWF0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgdGltZSkKIAogc3RhdGljIFN0cmlu
ZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBhdXRvIGhhbmRs
ZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZp
bGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgU3RyaW5nVmVjdG9y
PFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwogICAgIGlmICg6OkdldEZpbmFsUGF0aE5hbWVCeUhh
bmRsZVcoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBWT0xVTUVfTkFNRV9O
VCkgPj0gTUFYX1BBVEgpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgfQotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwogCiAgICAgYnVmZmVyLnNocmluayh3Y3NsZW4oYnVmZmVyLmRhdGEoKSkpOwogICAg
IHJldHVybiBTdHJpbmc6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSk7CkBAIC0xODksNyArMTg5LDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaW5kRGF0YVRvRmlsZU1ldGFk
YXRhKFdJTjMyX0ZJTkRfREFUQVcgZmluZEQKICAgICB9OwogfQogCi1zdGQ6Om9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9u
YWw8RmlsZU1ldGFkYXRhPiBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CiAgICAgaWYgKCFnZXRGaW5k
RGF0YShwYXRoLCBmaW5kRGF0YSkpCkBAIC0xOTgsNyArMTk4LDcgQEAgc3RkOjpvcHRpb25hbDxG
aWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJu
IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoZmluZERhdGEpOwogfQogCi1zdGQ6Om9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29uc3QgU3RyaW5nJiBw
YXRoKQorc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0
YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5E
X0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQpA
QCAtMjE1LDM3ICsyMTUsMzcgQEAgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZmlu
ZERhdGFUb0ZpbGVNZXRhZGF0YShmaW5kRGF0YSk7CiB9CiAKLWJvb2wgY3JlYXRlU3ltYm9saWNM
aW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3QgU3RyaW5nJiBzeW1ib2xpY0xpbmtQ
YXRoKQorYm9vbCBGaWxlU3lzdGVtOjpjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0
YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCiB7CiAgICAgcmV0dXJu
ICE6OkNyZWF0ZVN5bWJvbGljTGlua1coc3ltYm9saWNMaW5rUGF0aC5jaGFyYWN0ZXJzV2l0aE51
bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgdGFyZ2V0UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSwgMCk7CiB9CiAKLWJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcm
IHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CiAgICAgcmV0dXJuIGdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKTsKIH0KIAotYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgU3RyaW5nIGZpbGVuYW1lID0gcGF0aDsKICAgICByZXR1cm4gISFEZWxldGVGaWxlVyhmaWxl
bmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSk7CiB9CiAKLWJvb2wg
ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlU3lzdGVt
OjpkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgU3RyaW5n
IGZpbGVuYW1lID0gcGF0aDsKICAgICByZXR1cm4gISFSZW1vdmVEaXJlY3RvcnlXKGZpbGVuYW1l
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKIH0KIAotYm9vbCBtb3Zl
RmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKK2Jvb2wg
RmlsZVN5c3RlbTo6bW92ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcm
IG5ld1BhdGgpCiB7CiAgICAgU3RyaW5nIG9sZEZpbGVuYW1lID0gb2xkUGF0aDsKICAgICBTdHJp
bmcgbmV3RmlsZW5hbWUgPSBuZXdQYXRoOwogICAgIHJldHVybiAhITo6TW92ZUZpbGVFeChvbGRG
aWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgbmV3RmlsZW5h
bWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIE1PVkVGSUxFX0NPUFlf
QUxMT1dFRCB8IE1PVkVGSUxFX1JFUExBQ0VfRVhJU1RJTkcpOwogfQogCi1TdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21w
b25lbnQpCitTdHJpbmcgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpCiB7CiAgICAgU3RyaW5nVmVj
dG9yPFVDaGFyPiBidWZmZXIoTUFYX1BBVEgpOwogCkBAIC0yNjMsMTcgKzI2MywxNyBAQCBTdHJp
bmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBjb21wb25lbnQpCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIp
KTsKIH0KIAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3RyaW5nVmlldyBwYXRo
LCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCitTdHJpbmcgRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3Rv
cjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKIHsKICAgICBTdHJpbmcgcmVzdWx0ID0gcGF0aC50
b1N0cmluZygpOwogICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogY29tcG9uZW50cykKLSAgICAg
ICAgcmVzdWx0ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlc3VsdCwgY29tcG9uZW50LnRv
U3RyaW5nKCkpOworICAgICAgICByZXN1bHQgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9TdHJpbmcoKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogI2lmICFVU0UoQ0YpCiAKLUNTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNvbnN0IFN0cmluZyYgcGF0aCkKK0NTdHJpbmcgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBhdXRvIHVwY29udmVydGVkQ2hh
cmFjdGVycyA9IHBhdGgudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CiAKQEAgLTI5MCw3ICsyOTAs
NyBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgp
CiAKICNlbmRpZiAvLyAhVVNFKENGKQogCi1ib29sIG1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aDsKICAgICBpZiAoU0hD
cmVhdGVEaXJlY3RvcnlFeCgwLCBmdWxsUGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSwgMCkgIT0gRVJST1JfU1VDQ0VTUykgewpAQCAtMzAzLDIwICszMDMsMjAgQEAg
Ym9vbCBtYWtlQWxsRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiB0
cnVlOwogfQogCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBhdGgoKQorU3RyaW5nIEZpbGVTeXN0ZW06
OmhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biAiIjsKIH0KIAotU3RyaW5nIHBhdGhHZXRGaWxlTmFtZShjb25zdCBTdHJpbmcmIHBhdGgpCitT
dHJpbmcgRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICByZXR1cm4gU3RyaW5nKDo6UGF0aEZpbmRGaWxlTmFtZShTdHJpbmcocGF0aCkuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKTsKIH0KIAotU3RyaW5nIGRpcmVjdG9y
eU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFN0cmluZyBuYW1lID0gcGF0aC5sZWZ0KHBh
dGgubGVuZ3RoKCkgLSBwYXRoR2V0RmlsZU5hbWUocGF0aCkubGVuZ3RoKCkpOworICAgIFN0cmlu
ZyBuYW1lID0gcGF0aC5sZWZ0KHBhdGgubGVuZ3RoKCkgLSBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkubGVuZ3RoKCkpOwogICAgIGlmIChuYW1lLmNoYXJhY3RlclN0YXJ0aW5nQXQo
bmFtZS5sZW5ndGgoKSAtIDEpID09ICdcXCcpIHsKICAgICAgICAgLy8gUmVtb3ZlIGFueSB0cmFp
bGluZyAiXCIuCiAgICAgICAgIG5hbWUudHJ1bmNhdGUobmFtZS5sZW5ndGgoKSAtIDEpOwpAQCAt
MzUyLDggKzM1Miw4IEBAIHN0YXRpYyBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRo
SWRlbnRpZmllcikKICAgICBidWZmZXIucmVzaXplKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CiAg
ICAgU3RyaW5nIGRpcmVjdG9yeSA9IFN0cmluZzo6YWRvcHQoV1RGTW92ZShidWZmZXIpKTsKIAot
ICAgIGRpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksICJBcHBs
ZSBDb21wdXRlclxcIiArIGJ1bmRsZU5hbWUoKSk7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3Jp
ZXMoZGlyZWN0b3J5KSkKKyAgICBkaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGlyZWN0b3J5LCAiQXBwbGUgQ29tcHV0ZXJcXCIgKyBidW5kbGVOYW1lKCkp
OworICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeSkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIHJldHVybiBkaXJlY3Rvcnk7CkBAIC0zNzMs
NyArMzczLDcgQEAgc3RhdGljIFN0cmluZyBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBh
dGhJZGVudGlmaWVyKQogICAgIHJldHVybiBkaXJlY3Rvcnk7CiB9CiAKLVN0cmluZyBvcGVuVGVt
cG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0
cmluZyBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBoYW5kbGUgPSBJTlZBTElE
X0hBTkRMRV9WQUxVRTsKIApAQCAtMzk2LDMyICszOTYsMzIgQEAgU3RyaW5nIG9wZW5UZW1wb3Jh
cnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogCiAgICAg
ICAgIEFTU0VSVCh3Y3NsZW4odGVtcEZpbGUpID09IFdURl9BUlJBWV9MRU5HVEgodGVtcEZpbGUp
IC0gMSk7CiAKLSAgICAgICAgcHJvcG9zZWRQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHRlbXBQYXRoLCB0ZW1wRmlsZSk7CisgICAgICAgIHByb3Bvc2VkUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh0ZW1wUGF0aCwgdGVtcEZpbGUpOwogICAgICAgICBp
ZiAocHJvcG9zZWRQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IC8vIHVzZSBDUkVBVEVfTkVXIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGZpbGUg
d2l0aCB0aGUgc2FtZSBuYW1lCiAgICAgICAgIGhhbmRsZSA9IDo6Q3JlYXRlRmlsZVcocHJvcG9z
ZWRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBHRU5FUklDX1JF
QUQgfCBHRU5FUklDX1dSSVRFLCAwLCAwLCBDUkVBVEVfTkVXLCBGSUxFX0FUVFJJQlVURV9OT1JN
QUwsIDApOwotICAgIH0gd2hpbGUgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkgJiYgR2V0TGFzdEVy
cm9yKCkgPT0gRVJST1JfQUxSRUFEWV9FWElTVFMpOworICAgIH0gd2hpbGUgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGhhbmRsZSkgJiYgR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfQUxSRUFE
WV9FWElTVFMpOwogCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIHJldHVybiBwcm9wb3NlZFBhdGg7CiB9CiAKLVBsYXRmb3JtRmlsZUhhbmRsZSBv
cGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQorRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIEZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiB7CiAgICAgRFdPUkQgZGVzaXJl
ZEFjY2VzcyA9IDA7CiAgICAgRFdPUkQgY3JlYXRpb25EaXNwb3NpdGlvbiA9IDA7CiAgICAgRFdP
UkQgc2hhcmVNb2RlID0gMDsKICAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIE9wZW5Gb3JS
ZWFkOgorICAgIGNhc2UgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQ6CiAgICAgICAgIGRlc2lyZWRB
Y2Nlc3MgPSBHRU5FUklDX1JFQUQ7CiAgICAgICAgIGNyZWF0aW9uRGlzcG9zaXRpb24gPSBPUEVO
X0VYSVNUSU5HOwogICAgICAgICBzaGFyZU1vZGUgPSBGSUxFX1NIQVJFX1JFQUQ7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgT3BlbkZvcldyaXRlOgorICAgIGNhc2UgRmlsZVN5c3RlbTo6T3Bl
bkZvcldyaXRlOgogICAgICAgICBkZXNpcmVkQWNjZXNzID0gR0VORVJJQ19XUklURTsKICAgICAg
ICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IENSRUFURV9BTFdBWVM7CiAgICAgICAgIGJyZWFrOwpA
QCAtNDMzLDE5ICs0MzMsMTkgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgcmV0dXJuIENyZWF0ZUZpbGUoZGVz
dGluYXRpb24uY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIGRlc2lyZWRB
Y2Nlc3MsIHNoYXJlTW9kZSwgMCwgY3JlYXRpb25EaXNwb3NpdGlvbiwgRklMRV9BVFRSSUJVVEVf
Tk9STUFMLCAwKTsKIH0KIAotdm9pZCBjbG9zZUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5k
bGUpCit2b2lkIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUmIGhhbmRsZSkKIHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChoYW5kbGUpKSB7CisgICAg
aWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxlKSkgewogICAgICAgICA6OkNsb3Nl
SGFuZGxlKGhhbmRsZSk7Ci0gICAgICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CisgICAgICAgIGhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CiAgICAgfQogfQogCi1sb25nIGxvbmcgc2Vla0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgbG9uZyBsb25nIG9mZnNldCwgRmlsZVNlZWtPcmlnaW4gb3JpZ2luKQorbG9uZyBsb25n
IEZpbGVTeXN0ZW06OnNlZWtGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGUsIGxvbmcgbG9uZyBvZmZzZXQsIEZpbGVTeXN0ZW06OkZpbGVTZWVrT3JpZ2luIG9yaWdpbikK
IHsKICAgICBEV09SRCBtb3ZlTWV0aG9kID0gRklMRV9CRUdJTjsKIAotICAgIGlmIChvcmlnaW4g
PT0gU2Vla0Zyb21DdXJyZW50KQorICAgIGlmIChvcmlnaW4gPT0gRmlsZVN5c3RlbTo6U2Vla0Zy
b21DdXJyZW50KQogICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9DVVJSRU5UOwogICAgIGVsc2Ug
aWYgKG9yaWdpbiA9PSBTZWVrRnJvbUVuZCkKICAgICAgICAgbW92ZU1ldGhvZCA9IEZJTEVfRU5E
OwpAQCAtNDYxLDkgKzQ2MSw5IEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBvCiAgICAgcmV0dXJu
IGxhcmdlT2Zmc2V0LlF1YWRQYXJ0OwogfQogCi1pbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKK2ludCBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZCho
YW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAg
ICAgICByZXR1cm4gLTE7CiAKICAgICBEV09SRCBieXRlc1dyaXR0ZW47CkBAIC00NzQsOSArNDc0
LDkgQEAgaW50IHdyaXRlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNX
cml0dGVuKTsKIH0KIAotaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
LCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoraW50IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgIGlmICghRmlsZVN5
c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBE
V09SRCBieXRlc1JlYWQ7CkBAIC00ODcsMjIgKzQ4NywyMiBAQCBpbnQgcmVhZEZyb21GaWxlKFBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oYnl0ZXNSZWFkKTsKIH0KIAotYm9vbCBoYXJkTGlua09yQ29w
eUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb24pCiti
b29sIEZpbGVTeXN0ZW06OmhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNvdXJjZSwg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKICAgICByZXR1cm4gISE6OkNvcHlGaWxlKHNv
dXJjZS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzdGluYXRpb24u
Y2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIFRSVUUpOwogfQogCi1TdHJp
bmcgbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKK1N0cmluZyBGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIHJldHVybiBjYWNo
ZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0xPQ0FMX0FQUERBVEEpOwogfQogCi1TdHJpbmcgcm9h
bWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKQorU3RyaW5nIEZpbGVTeXN0ZW06OnJv
YW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gY2FjaGVk
U3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gbGlz
dERpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWx0ZXIp
CitWZWN0b3I8U3RyaW5nPiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBl
bnRyaWVzOwogCkBAIC01MjAsMjUgKzUyMCwyNSBAQCBWZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKICAgICBy
ZXR1cm4gZW50cmllczsKIH0KIAotYm9vbCBnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5n
JiwgdWludDY0X3QmKQorYm9vbCBGaWxlU3lzdGVtOjpnZXRWb2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJiwgdWludDY0X3QmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25z
dCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IEZpbGVTeXN0ZW06Omdl
dEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUg
PSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRs
ZVZhbGlkKGhhbmRsZSkpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShm
c0ZpbGUuZGF0YSgpLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiBmaWxlSW5mb3JtYXRpb24gPSB7IH07
CiAgICAgaWYgKCE6OkdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhhbmRsZSwgJmZpbGVJbmZv
cm1hdGlvbikpIHsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IH0KIAotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwogCiAgICAgcmV0dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJl
cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4
IDM3MDFjZGQ4YTAzLi4zYzZmNTZlMTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yMDA5LDcgKzIwMDksNyBAQCBTdHJpbmcgUmVuZGVyVGhl
bWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29u
c3QgRm9udAogCiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBpZiAoZmlsZUxpc3QtPmxlbmd0aCgp
KQotICAgICAgICBzdHJpbmcgPSBwYXRoR2V0RmlsZU5hbWUoZmlsZUxpc3QtPml0ZW0oMCktPnBh
dGgoKSk7CisgICAgICAgIHN0cmluZyA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShmaWxl
TGlzdC0+aXRlbSgwKS0+cGF0aCgpKTsKICAgICBlbHNlIGlmIChtdWx0aXBsZUZpbGVzQWxsb3dl
ZCkKICAgICAgICAgc3RyaW5nID0gZmlsZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7CiAg
ICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5k
ZXggYWEzNzBjMzNmYTMuLmU1MWEyNGUyOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIENvbG9yIFJlbmRlclRo
ZW1lV2luOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0CiAjaWYgRU5B
QkxFKFZJREVPKQogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVhc29uYWJsZUJ1ZmZlclNp
emUgPSAzMjc2ODsKIAotc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8Y2hhcj4m
IGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxlc2l6ZSwgVmVjdG9y
PGNoYXI+JiBidWZmZXIpCiB7CiAgICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8gYnVm
ZmVyCiAgICAgYnVmZmVyLnJlc2l6ZShmaWxlc2l6ZSArIDEpOwpAQCAtMTAzNiw3ICsxMDM2LDcg
QEAgc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGUKICAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVmZmVy
UG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKICAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0g
ZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKIAotICAgICAgICBieXRlc1JlYWQgPSByZWFkRnJv
bUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6
ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCBi
dWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKICAgICAgICAg
aWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewogICAgICAgICAgICAgYnVmZmVyLmNs
ZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDU4LDE5ICsxMDU4LDE5IEBAIFN0cmlu
ZyBSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKENGU3RyaW5nUmVmIG5h
bWUsIENGU3RyaW5nUmVmIHR5CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihyZXF1ZXN0ZWRVUkxSZWYuZ2V0KCksIGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0aCwgTUFY
X1BBVEgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBQbGF0Zm9ybUZpbGVIYW5k
bGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IG9wZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBPcGVu
Rm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUpKQor
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0g
RmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5G
b3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVkRmls
ZUhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGxvbmcgbG9uZyBmaWxl
c2l6ZSA9IC0xOwotICAgIGlmICghZ2V0RmlsZVNpemUocmVxdWVzdGVkRmlsZUhhbmRsZSwgZmls
ZXNpemUpKSB7Ci0gICAgICAgIGNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5kbGUsIGZpbGVzaXpl
KSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4gZmls
ZUNvbnRlbnRzOwogICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUocmVxdWVzdGVkRmls
ZUhhbmRsZSwgZmlsZXNpemUsIGZpbGVDb250ZW50cyk7Ci0gICAgY2xvc2VGaWxlKHJlcXVlc3Rl
ZEZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFu
ZGxlKTsKIAogICAgIHJldHVybiBTdHJpbmcoZmlsZUNvbnRlbnRzLmRhdGEoKSwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihmaWxlc2l6ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNjdiMDU5N2UxMy4uZmNlMDNm
ZmNlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVy
IFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0g
bmFtZXNwYWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxv
YWRDbGllbnQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93
bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFu
YWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVy
ZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0
dXJlUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJv
Y2Vzc1NvdXAuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVVbml4LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBh
dGguY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0NoaWxkUHJvY2Vz
c0lPUy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICogU2hhcmVk
L3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwOgorICAgICAgICAqIFN0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRl
bnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hv
b3NlclJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURh
dGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQ
b29sR3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3Rl
ZEJ1bmRsZUdsaWIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisKIDIwMTctMTAt
MzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAg
IFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKaW5kZXgg
YzZmZjE1YTNiYjguLjY1NDg2MGQ0N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKQEAg
LTU2LDE2ICs1NiwxNiBAQCB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93bmxv
YWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUAogewogICAgIEFTU0VSVCgh
ZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoZmlsZUV4aXN0cyhkZXN0aW5h
dGlvblBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRpb25Q
YXRoKSkgewogICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgICAgICBkaWRG
YWlsKG51bGxwdHIsIGNhbmNlbGxlZEVycm9yKG1fZG93bmxvYWQucmVxdWVzdCgpKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlRmlsZShkZXN0aW5hdGlv
blBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRlc3RpbmF0aW9uUGF0aCk7
CiAgICAgfQogCiAgICAgbV9kZXN0aW5hdGlvblBhdGggPSBkZXN0aW5hdGlvblBhdGg7Ci0gICAg
bV9kZXN0aW5hdGlvbkZpbGUgPSBvcGVuRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCwgT3BlbkZvcldy
aXRlKTsKKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fZGVz
dGluYXRpb25QYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIG1fZG93bmxvYWQu
ZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwogCiAgICAgbV9kb3dubG9h
ZC5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwpAQCAtNzMsMzAgKzczLDMwIEBAIHZvaWQg
QmxvYkRvd25sb2FkQ2xpZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25QCiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
QnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCkK
IHsKLSAgICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9u
RmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2Rvd25sb2FkLmRp
ZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKQogewotICAgIGNsb3NlRmlsZSht
X2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGluYXRp
b25GaWxlKTsKICAgICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgpOwogfQogCiB2b2lkIEJsb2JEb3du
bG9hZENsaWVudDo6ZGlkQ2FuY2VsKCkKIHsKLSAgICBjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZp
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CiAgICAg
aWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0ZUZpbGUobV9k
ZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZGVzdGlu
YXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVyZW5j
ZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBjbG9zZUZpbGUobV9kZXN0
aW5hdGlvbkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmls
ZSk7CiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0
ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkRmFpbChlcnJvciwgSVBD
OjpEYXRhUmVmZXJlbmNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAppbmRleCA0YTQyY2My
Y2E3Ny4uZjk0MDYxMWIzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCkBAIC01Myw3ICs1Myw3
IEBAIHByaXZhdGU6CiAKICAgICBEb3dubG9hZCYgbV9kb3dubG9hZDsKICAgICBTdHJpbmcgbV9k
ZXN0aW5hdGlvblBhdGg7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVzdGlu
YXRpb25GaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rlc3RpbmF0aW9uRmlsZSB7
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwCmluZGV4IDc4ZTVhNDE2NWJjLi42ZGE1M2YzZTFiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00
MTIsNyArNDEyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogICAgIG1fdG90YWxSZW1haW5pbmdTaXplIC09
IGJ5dGVzUmVhZDsKIAogICAgIGlmIChieXRlc1JlYWQpIHsKLSAgICAgICAgaWYgKG1fZG93bmxv
YWRGaWxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgaWYgKG1fZG93
bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAg
ICAgICAgICAgIGlmICghd3JpdGVEb3dubG9hZChkYXRhLCBieXRlc1JlYWQpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ0OCw4ICs0NDgsOCBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbgogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAg
IG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRl
ICYmIGZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIGRlbGV0
ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CisgICAgaWYgKGFsbG93T3ZlcndyaXRl
ICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7
CiB9CiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNv
bnN0CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9h
ZCgpCiAKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OmRvd25sb2FkIHRvICVzIiwgdGhpcywgbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4KCku
ZGF0YSgpKTsKIAotICAgIG1fZG93bmxvYWRGaWxlID0gb3BlbkZpbGUobV9wZW5kaW5nRG93bmxv
YWRMb2NhdGlvbiwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmlsZVN5c3RlbTo6T3BlbkZv
cldyaXRlKTsKKyAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJy
b3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OCw3ICs0
ODgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIGJvb2wgTmV0d29y
a0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNS
ZWFkKQogewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGludCBieXRlc1dyaXR0ZW4g
PSB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBpbnQg
Ynl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGRh
dGEsIGJ5dGVzUmVhZCk7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICBk
aWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNTAzLDExICs1MDMsMTEgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tC
bG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAKIHZv
aWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBpZiAo
bV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewotICAgICAgICBj
bG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAgICAgICBtX2Rvd25sb2FkRmlsZSA9IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZG93bmxvYWRGaWxlKTsKKyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIH0KLSAgICBkZWxldGVGaWxlKG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9w
ZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlkRmFpbERvd25sb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNTM2LDggKzUz
Niw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQoKQogICAg
IExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNo
RG93bmxvYWQiLCB0aGlzKTsKIAogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGNsb3Nl
RmlsZShtX2Rvd25sb2FkRmlsZSk7Ci0gICAgbV9kb3dubG9hZEZpbGUgPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7
CisgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwogCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBtX3NhbmRib3hF
eHRlbnNpb24tPnJldm9rZSgpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlkRmFpbChFcnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNr
QmxvYjo6ZGlkRmluaXNoKCkKIHsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkgeworICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIGRpZEZpbmlzaERvd25sb2Fk
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IDUxOTM1OTQ0OTU1Li45MjY2ZWRl
YzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
c2l6ZUl0ZW1Db3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQgeyAwIH07
CiAgICAgYm9vbCBtX2ZpbGVPcGVuZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OlBsYXRmb3Jt
RmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9k
b3dubG9hZEZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1fc2Fu
ZGJveEV4dGVuc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggMmZkOGVmZjEzNTEuLjZlNWNkZjc2Zjk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjAxLDcgKzYw
MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgY20pCiAg
ICAgdW5zaWduZWQgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3QgdXJs
Q2FjaGVEaXNrQ2FwYWNpdHkgPSAwOwogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IDA7Ci0g
ICAgaWYgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwg
ZGlza0ZyZWVTaXplKSkgeworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRWb2x1bWVG
cmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAgICAg
Ly8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2FzZSB0
aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0bHkg
dG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICogMTAw
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBmODE3MzYyZGFlNS4uNjc5NDkzNTAzOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5n
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9v
dFBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBL
ZXkga2V5KG9yaWdpbiwgeyB9LCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNo
QXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpOwog
fQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjA1LDkgKzIwNSw5IEBAIHZvaWQgRW5naW5lOjpp
bml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJh
Y2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2FsdFBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlMaXRlcmFsKCJz
YWx0IikpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7CiAg
ICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUoc2Fs
dFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVz
KG1fcm9vdFBhdGgpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIHNhbHQgPSByZWFkT3JN
YWtlU2FsdChzYWx0UGF0aCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIXNhbHQpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhF
cnJvcjo6V3JpdGVEaXNrKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3Zl
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lv
UXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11
dGFibGUgewotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICAgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9CiAK
QEAgLTM4Miw4ICszODIsOCBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxk
Q29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAogICAg
IGF1dG8gdGFza0NvdW50ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNv
cmU6Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAoIVdlYkNv
cmU6OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlmICgh
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShm
b2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
aG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11dGFi
bGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQxNSw4ICs0
MTUsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0
YXNrSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChb
cGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIHRhc2tIYW5kbGVyID0gbWFrZVJlZih0
YXNrSGFuZGxlcildIHsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6Omxp
c3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVJ
c0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6
Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAgICBpZiAoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRlRGly
ZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2lu
ZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggYzhlZjZmMDdhMTAuLmU4NDMxNWUzZmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC00MiwxOCArNDIsMTggQEAgbmFtZXNwYWNl
IENhY2hlU3RvcmFnZSB7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxlbmFt
ZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgiY2Fj
aGVzbGlzdCIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNhY2hlc2xpc3QiKSk7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc09yaWdpbkZpbGVuYW1lKGNvbnN0IFN0
cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChj
YWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7CiB9CiAKIHZvaWQgQ2FjaGVz
OjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRoLCBX
b3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIHF1ZXVlLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBmb2xkZXJQYXRoID0gZm9sZGVyUGF0aC5pc29sYXRlZENvcHkoKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RGaWxl
bmFtZShmb2xkZXJQYXRoKSkpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGNhY2hlc0xpc3RGaWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CkBAIC0zMzMsNyArMzMzLDcg
QEAgdm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQoRXhw
ZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICB9CiAKICAgICBhdXRvIGZpbGVuYW1lID0g
Y2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOwotICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4
aXN0cyhmaWxlbmFtZSkpIHsKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZmlsZW5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCA1NzA0Zjg1Njc0NC4uMTk1YzIzZjVhM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBDYWNoZTo6Q2FjaGUoUmVmPFN0b3JhZ2U+JiYg
c3RvcmFnZSwgT3B0aW9uU2V0PE9wdGlvbj4gb3B0aW9ucykKICNlbmRpZgogI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgLy8gVHJpZ2dlcnMgd2l0aCAidG91Y2ggJGNhY2hlUGF0aC9kdW1wIi4K
LSAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFz
ZVBhdGgoKSwgImR1bXAiKSk7CisgICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRoKCksICJkdW1w
IikpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkdW1wRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKGR1bXBGaWxlUGF0aC5kYXRhKCkpKTsKICAgICAgICAgR0ZpbGVNb25pdG9y
KiBtb25pdG9yID0gZ19maWxlX21vbml0b3JfZmlsZShkdW1wRmlsZS5nZXQoKSwgR19GSUxFX01P
TklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChtb25pdG9yLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZHVtcEZpbGVDaGFuZ2VkKSwg
dGhpcyk7CkBAIC01MzcsMTYgKzUzNywxNiBAQCB2b2lkIENhY2hlOjp0cmF2ZXJzZShGdW5jdGlv
bjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKIAogU3Ry
aW5nIENhY2hlOjpkdW1wRmlsZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9uUGF0aCgpLCAiZHVtcC5q
c29uIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsKIH0KIAogdm9p
ZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKIHsKLSAgICBhdXRvIGZkID0gV2ViQ29yZTo6
b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYg
KCFXZWJDb3JlOjppc0hhbmRsZVZhbGlkKGZkKSkKKyAgICBhdXRvIGZkID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9w
ZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlk
KGZkKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gcHJvbG9ndWUgPSBTdHJpbmcoIntcblwi
ZW50cmllc1wiOiBbXG4iKS51dGY4KCk7Ci0gICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIHBy
b2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZkLCBwcm9sb2d1ZS5kYXRhKCksIHByb2xvZ3VlLmxlbmd0aCgpKTsK
IAogICAgIHN0cnVjdCBUb3RhbHMgewogICAgICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKQEAg
LTU3NSw4ICs1NzUsOCBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgICAg
ICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXG4iKTsKICAgICAgICAgICAgIGVwaWxvZ3Vl
LmFwcGVuZExpdGVyYWwoIn1cbn1cbiIpOwogICAgICAgICAgICAgYXV0byB3cml0ZURhdGEgPSBl
cGlsb2d1ZS50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OndyaXRlVG9G
aWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwotICAgICAgICAg
ICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZkKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkp
OworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZkKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGVudHJ5ID0gRW50cnk6OmRl
Y29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7CkBAIC01OTAsMTQgKzU5MCwxNCBAQCB2b2lkIENh
Y2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgICAgICBlbnRyeS0+YXNKU09OKGpzb24sIGlu
Zm8pOwogICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICBhdXRvIHdy
aXRlRGF0YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIFdlYkNvcmU6OndyaXRl
VG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOworICAgICAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEoKSwg
d3JpdGVEYXRhLmxlbmd0aCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBDYWNoZTo6ZGVsZXRlRHVt
cEZpbGUoKQogewogICAgIFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNhY2hl
LmRlbGV0ZSIpLT5kaXNwYXRjaChbcGF0aCA9IGR1bXBGaWxlUGF0aCgpLmlzb2xhdGVkQ29weSgp
XSB7Ci0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCk7CisgICAgICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVC
bG9iU3RvcmFnZS5jcHAKaW5kZXggZjZiMzY0ZmE5ZWQuLjE2MzVmMjNjZTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9y
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUJsb2JTdG9yYWdlLmNwcApAQCAtNTMsMTUgKzUzLDE1IEBAIHZvaWQgQmxvYlN0b3JhZ2U6
OnN5bmNocm9uaXplKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgo
KSk7CiAKICAgICBtX2FwcHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0b3J5
ID0gYmxvYkRpcmVjdG9yeVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGlyZWN0
b3J5LCBbdGhpcywgJmJsb2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5
RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBl
OjpGaWxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAgICAg
IGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisgICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAg
ICAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEoKSwg
JnN0YXQpOwogICAgICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAgLTc3
LDcgKzc3LDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJsb2JT
dG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25zdAog
ewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgo
KSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCks
IFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpCbG9i
IEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRhKQpA
QCAtODgsOCArODgsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGggPSBX
ZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsK
LSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpOworICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwog
ICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0gYWNj
ZXNzKGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMTksNyArMTE5LDcgQEAgQmxv
YlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2Vi
Q29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAg
ICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHsg
ZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZv
aWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5saW5r
KGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB1bnNpZ25lZCBCbG9i
U3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA4YWM3OTdmNzhhMC4uN2JiNjQ5MmE2
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBTYWx0IG1ha2VT
YWx0KCkKIAogc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJpbmcm
IHBhdGgpCiB7Ci0gICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKKyAgICBhdXRvIGNwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRhdGEo
KSwgT19SRE9OTFksIDApOwogICAgIFNhbHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9IHJl
YWQoZmQsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNw
cAppbmRleCA4MmQ3MzU1MTg5Ni4uZWU2ZDE0ZTU3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVjdG9y
eUVudHJ5VHlwZSh1aW50OF90IGR0eXBlKQogCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGlyZWN0
b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewotICAgIERJUiogZGlyID0gb3BlbmRpcihXZWJD
b3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBESVIqIGRp
ciA9IG9wZW5kaXIoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybjsKICAgICBkaXJl
bnQqIGRwOwpAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiB2b2lk
IGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICB0
cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0
b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKKyAgICAgICAgU3RyaW5nIGVu
dHJ5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChw
YXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRGlyZWN0
b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShlbnRy
eVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbnRy
eVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50cnlU
eXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShl
bnRyeVBhdGgpOwpAQCAtOTUsMTkgKzk1LDE5IEBAIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9sbG93
IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAgfSk7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkocGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkocGF0aCk7CiB9CiAKIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCiAgICAgc3RydWN0IHN0YXQgZmlsZUluZm87
Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRh
dGEoKSwgJmZpbGVJbmZvKSkKKyAgICBpZiAoc3RhdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIHJldHVybiB7IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21f
dGltZV90KGZpbGVJbmZvLnN0X2JpcnRodGltZSksIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OmZyb21fdGltZV90KGZpbGVJbmZvLnN0X210aW1lKSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAg
Ly8gVGhlcmUncyBubyBzdF9iaXJ0aHRpbWUgaW4gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBsaWtl
IExpbnV4LCBzbyB3ZSB1c2UgeGF0dHJzIHRvIHNldC9nZXQgdGhlIGNyZWF0aW9uIHRpbWUuCi0g
ICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKFdl
YkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwogICAg
IEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5m
byhmaWxlLmdldCgpLCAieGF0dHI6OmJpcnRodGltZSx0aW1lOjptb2RpZmllZCIsIEdfRklMRV9R
VUVSWV9JTkZPX05PTkUsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQog
ICAgICAgICByZXR1cm4geyB9OwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgdXBkYXRlRmlsZU1v
ZGlmaWNhdGlvblRpbWVJZk5lZWRlZChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIC8vIFRoaXMgcmVhbGx5IHVwZGF0ZXMgYm90aCB0aGUgYWNjZXNz
IHRpbWUgYW5kIHRoZSBtb2RpZmljYXRpb24gdGltZS4KLSAgICB1dGltZXMoV2ViQ29yZTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgdXRpbWVz
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRh
KCksIG51bGxwdHIpOwogfQogCiBib29sIGNhblVzZVNoYXJlZE1lbW9yeUZvclBhdGgoY29uc3Qg
U3RyaW5nJiBwYXRoKQpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgY2FuVXNlU2hhcmVkTWVtb3J5
Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgYXR0cmxpc3QgYXR0ckxpc3QgPSB7IH07
CiAgICAgYXR0ckxpc3QuYml0bWFwY291bnQgPSBBVFRSX0JJVF9NQVBfQ09VTlQ7CiAgICAgYXR0
ckxpc3QuY29tbW9uYXR0ciA9IEFUVFJfQ01OX0RBVEFfUFJPVEVDVF9GTEFHUzsKLSAgICBpbnQz
Ml90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0dHJCdWZmZXIp
LCBGU09QVF9OT0ZPTExPVyk7CisgICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCksICZh
dHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xMT1cp
OwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
VW5hYmxlIHRvIGdldCBjYWNoZSBkaXJlY3RvcnkgcHJvdGVjdGlvbiBjbGFzcywgZGlzYWJsaW5n
IHVzZSBvZiBzaGFyZWQgbWFwcGVkIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCBlZmQ3Nzk5ZGEyZi4uNzZiMTRlMzM0
OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEsNyBAQCBJ
T0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUpCiAg
ICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRvIHBh
dGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGF1
dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihm
aWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAgIGJvb2wgdXNl
TG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKaW5k
ZXggMDE2MTIwODBjNzkuLjRjZTc3NjJiOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291
cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3RyaW5n
JiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwgbV90
eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChwYXRoLmRhdGEoKSkpOwogICAgIHN3
aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpDcmVhdGU6IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRp
c3RpY3MuY3BwCmluZGV4IDY5MzM0MTdmZDhjLi5iNGY2MjYyZGM0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0aWNz
PiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBhCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBh
dGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0
aWNzRGF0YWJhc2VOYW1lKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGljc0Rh
dGFiYXNlTmFtZSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlzdGljcz4oY2Fj
aGUsIGRhdGFiYXNlUGF0aCk7CiB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTdGF0aXN0aWNz
Ojppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogICAgIHNlcmlhbEJhY2tn
cm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlUGF0
aC5pc29sYXRlZENvcHkoKSwgbmV0d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1BhdGgo
KSwgc3RhcnRUaW1lXSB7CiAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9n
cmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgICAgICBpZiAoIVdlYkNv
cmU6Om1ha2VBbGxEaXJlY3RvcmllcyhXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0
aCkpKQorICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmll
cyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1By
b2Nlc3MpIE9wZW5pbmcgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVzLi4u
IiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXgg
ZTRhZGIxOWJjOGMuLjAzZTMwOTI5MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTEzNiwy
OSArMTM2LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJpbmcgbWFrZVZlcnNpb25lZERpcmVjdG9y
eVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKICAgICBTdHJpbmcgdmVy
c2lvblN1YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3RvcnlQcmVmaXggKyBTdHJpbmc6Om51bWJl
cihTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VE
aXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIFN0cmluZyBt
YWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJz
aW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5h
bWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCByZWNv
cmRzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3RvcnlQ
YXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChi
YXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGly
ZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9CiAK
IHN0YXRpYyBTdHJpbmcgbWFrZVNhbHRGaWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3Rv
cnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5h
bWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0
RmlsZU5hbWUpOwogfQogCiBSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBTdHJp
bmcmIGNhY2hlUGF0aCwgTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBpZiAoIVdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVk
RGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgp
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNh
bHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0xNzEs
MTMgKzE3MSwxMyBAQCB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVj
b3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGlyZWN0
b3J5KHJlY29yZHNQYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJlY3Rv
cnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0
b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0
cmluZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Y29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1Bh
dGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25Q
YXRoLCBbJl0oY29uc3QgU3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50
cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlw
ZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICgh
ZXhwZWN0ZWRUeXBlLmlzRW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5
UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBh
Y3R1YWxUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgs
IGFjdHVhbFR5cGUpOwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGlyZWN0
b3J5UGF0aCwgWyZmdW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBlXShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUg
fHwgZmlsZU5hbWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk3LDE4ICsxOTcsMTggQEAgc3RhdGljIHZvaWQgZGVs
ZXRlRW1wdHlSZWNvcmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xkZXJz
LgotICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBw
YXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3Rv
cnkocGFydGl0aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRpck5h
bWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRy
eVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMg
cmVhbGx5IGVtcHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRpck5h
bWUpKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRp
b25QYXRoLCBzdWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0ZSBb
UGFydGl0aW9uXSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYg
aXQgaXMgcmVhbGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9y
eShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlv
bk5hbWUpKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQ
YXRoLCBwYXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3NiwxNyArMjc2LDE3IEBA
IHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7
CiAgICAgICAgIFN0cmluZyBhbnlUeXBlOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhy
ZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBbJnJlY29yZEZpbHRlciwgJmJsb2JGaWx0ZXIsICZyZWNv
cmRzU2l6ZSwgJmNvdW50XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhh
c2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYg
cmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFt
ZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKIAog
ICAgICAgICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6OnN0
cmluZ1RvSGFzaChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6
OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAgICAg
ICBXZWJDb3JlOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKICAg
ICAgICAgICAgIGlmICghZmlsZVNpemUpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpkZWxl
dGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAKQEAgLTM1MiwxMiArMzUyLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJsb2Io
Y29uc3QgS2V5JiBrZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0
aEZvcktleShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBlKCku
aXNFbXB0eSgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFy
dGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFz
aEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZFBh
dGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtl
eS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5o
YXNoQXNTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQYXRo
KGNvbnN0IFN0cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0b3Jh
Z2U6OmRlbGV0ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5KGtl
eSkpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktl
eShrZXkpKTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkpKTsK
IH0KIApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJh
dGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAgICAg
IGF1dG8gcmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3cml0
ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVjb3Jk
UGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJDb3Jl
OjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAgICAgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7CiAK
ICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtODYzLDcgKzg2Myw3
IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBUcmF2ZXJzZUZs
YWdzIGZsYWdzLCBUcmF2ZXJzZUhhbmRsZXImCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVO
YW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CiAKICAgICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYgKHRyYXZl
cnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBAIC05NTIs
MTMgKzk1MiwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtbwogICAgIGlvUXVldWUoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNpbmNl
VGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlw
ZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29y
ZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmls
ZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJv
b2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAgICAg
ICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVj
b3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJl
Y3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUg
PiBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKSkgewogICAgICAg
ICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAgICAg
ICAgIGlmICh0aW1lcy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1wdHlS
ZWNvcmRzRGlyZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9p
ZCBTdG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Cisg
ICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAg
ICAgICAgYXV0byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRoKTsK
IAogICAgICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAgLTEw
NTAsNyArMTA1MCw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtDb3Vu
dD0lZCBzaG91bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNob3Vs
ZERlbGV0ZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAgICAg
ICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9KTsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lv
bnMoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBhdXRv
IG9sZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hl
UGF0aCwgc3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3Vi
ZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3Jr
UHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9u
UGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkob2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAz
MTMxYzBmMWM0NC4uZTJkNDFlZTc4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCkBA
IC03MywxNSArNzMsMTUgQEAgdm9pZCBNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYg
cmVjb3JkUmVwbGF5TW9kZSwgY29uc3QgU3RyaW5nJiByZWNvcmRSZXAKICAgICAgICAgbV9yZWNv
cmRSZXBsYXlNb2RlID0gRGlzYWJsZWQ7CiAgICAgfQogCi0gICAgbV9yZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZFJlcGxh
eUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKKyAgICBtX3JlY29yZFJlcGxh
eUNhY2hlTG9jYXRpb24gPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZWNvcmRSZXBsYXkpOwog
ICAgIERFQlVHX0xPRygiQ2FjaGUgbG9jYXRpb24gPSAiIFNUUklOR19TUEVDSUZJRVIsIERFQlVH
X1NUUihtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24pKTsKIAogICAgIGlmIChpc1JlY29yZGlu
ZygpKSB7Ci0gICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUo
cmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3Jl
Y29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgoKSwg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICB9IGVsc2UgaWYgKGlzUmVw
bGF5aW5nKCkpIHsKLSAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhh
bmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKTsKLSAgICAgICAg
bV9sb2FkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgoKSwg
V2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxlID0gV2Vi
Q29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0
ZSk7CisgICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVw
b3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAg
ICAgIG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRo
KCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVwbGF5
RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgICAgICBsb2FkUmVzb3VyY2VzKCk7
CiAgICAgfQogfQpAQCAtMzY1LDE3ICszNjUsMTcgQEAgdm9pZCBNYW5hZ2VyOjpsb2FkUmVzb3Vy
Y2VzKCkKIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydExvYWRQYXRoKCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2Nh
dGlvbiwga0ZpbGVOYW1lUmVwb3J0TG9hZCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24s
IGtGaWxlTmFtZVJlcG9ydExvYWQpOwogfQogCiBTdHJpbmcgTWFuYWdlcjo6cmVwb3J0UmVjb3Jk
UGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jl
Y29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7CiB9CiAKIFN0
cmluZyBNYW5hZ2VyOjpyZXBvcnRSZXBsYXlQYXRoKCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Zp
bGVOYW1lUmVwb3J0UmVwbGF5KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0ZpbGVO
YW1lUmVwb3J0UmVwbGF5KTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcXVlc3RUb1BhdGgoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNDExLDkgKzQxMSw5IEBA
IFN0cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNvbnN0IFN0cmluZyYgaGFzaCkKICAgICBmaWxl
TmFtZS5hcHBlbmQoaGFzaFRhaWwpOwogICAgIGZpbGVOYW1lLmFwcGVuZExpdGVyYWwoIi5kYXRh
Iik7CiAKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlc291cmNlcyk7Ci0gICAgcGF0
aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7Ci0g
ICAgcGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFt
ZS50b1N0cmluZygpKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFt
ZVJlc291cmNlcyk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZS50b1N0cmluZygp
KTsKIAogICAgIHJldHVybiBwYXRoOwogfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgTWFuYWdl
cjo6bG9nUGxheWVkQmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgYm9vCiAgICAgbV9yZXBsYXlGaWxlSGFuZGxlLnByaW50ZigiJXMgJXNcbiIsIHdh
c0NhY2hlTWlzcyA/ICJtaXNzIiA6ICJoaXQgIiwgREVCVUdfU1RSKHVybC5zdHJpbmcoKSkpOwog
fQogCi1XZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlIG1vZGUpCitXZWJDb3JlOjpGaWxl
SGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiB7CiAgICAgLy8gSWYgd2UgY2Fu
IHRyaXZpYWxseSBvcGVuIHRoZSBmaWxlLCB0aGVuIGRvIHRoYXQgYW5kIHJldHVybiB0aGUgbmV3
IGZpbGUKICAgICAvLyBoYW5kbGUuCkBAIC00NjQsOSArNDY0LDkgQEAgV2ViQ29yZTo6RmlsZUhh
bmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNv
cmU6OkZpbGUKICAgICAvLyBJZiB3ZSdyZSBvcGVuaW5nIHRoZSBmaWxlIGZvciB3cml0aW5nIChp
bmNsdWRpbmcgYXBwZW5kaW5nKSwgdGhlbiB0cnkKICAgICAvLyBhZ2FpbiBhZnRlciBtYWtpbmcg
c3VyZSBhbGwgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiBjcmVhdGVkLgogCi0g
ICAgaWYgKG1vZGUgIT0gV2ViQ29yZTo6T3BlbkZvclJlYWQpIHsKLSAgICAgICAgY29uc3QgYXV0
byYgcGFyZW50RGlyID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShmaWxlUGF0aCk7Ci0gICAgICAg
IGlmICghV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERpcikpIHsKKyAgICBpZiAo
bW9kZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkgeworICAgICAgICBjb25z
dCBhdXRvJiBwYXJlbnREaXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZp
bGVQYXRoKTsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMocGFyZW50RGlyKSkgewogICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJvciAl
ZCB0cnlpbmcgdG8gY3JlYXRlIGludGVybWVkaWF0ZSBkaXJlY3RvcmllczogIiBTVFJJTkdfU1BF
Q0lGSUVSLCBlcnJubywgREVCVUdfU1RSKHBhcmVudERpcikpOwogICAgICAgICAgICAgcmV0dXJu
IGZpbGVIYW5kbGU7CiAgICAgICAgIH0KQEAgLTQ3OSw3ICs0NzksNyBAQCBXZWJDb3JlOjpGaWxl
SGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2Vi
Q29yZTo6RmlsZQogICAgIC8vIENvdWxkIG5vdCBvcGVuIHRoZSBmaWxlLiBMb2cgdGhlIGVycm9y
IGFuZCBsZWF2ZSwgcmV0dXJuaW5nIHRoZSBpbnZhbGlkCiAgICAgLy8gZmlsZSBoYW5kbGUuCiAK
LSAgICBpZiAobW9kZSA9PSBXZWJDb3JlOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9PSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkKICAgICAgICAgREVCVUdfTE9HX0VSUk9S
KCJFcnJvciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3IgcmVhZGlu
ZyIsIGVycm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKICAgICBlbHNlCiAgICAgICAgIERFQlVH
X0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVSICIg
Zm9yIHdyaXRpbmciLCBlcnJubywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CkBAIC00OTAsNyArNDkw
LDcgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGUKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZlY3Rv
cjxTdHJpbmc+Pj4gTWFuYWdlcjo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsK
ICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBXZWJDb3JlOjpNYXBwZWRGaWxlRGF0YSBm
aWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBwZWRG
aWxlRGF0YSBmaWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAppbmRleCBl
YjJhY2M0OGRjYS4uNTBlZDVlMjNkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKQEAgLTc5
LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nTG9hZGVkUmVzb3VyY2UoUmVzb3VyY2Um
KTsKICAgICB2b2lkIGxvZ1BsYXllZEJhY2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIHdhc0NhY2hlTWlzcyk7CiAKLSAgICBXZWJDb3JlOjpGaWxlSGFuZGxl
IG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlKTsKKyAg
ICBXZWJDb3JlOjpGaWxlSGFuZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKIAogICAgIFN0cmluZyByZXF1ZXN0VG9QYXRo
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXJs
SWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJMJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0Nh
cHR1cmVSZWNvcmRlci5jcHAKaW5kZXggZTY2MDNlNjM2ZDcuLjNhNTU5YTYxODQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZWNvcmRl
cjo6cmVjb3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogdm9p
ZCBSZWNvcmRlcjo6d3JpdGVFdmVudHMoKQogewogICAgIGF1dG8gcGF0aCA9IE1hbmFnZXI6OnNp
bmdsZXRvbigpLnJlcXVlc3RUb1BhdGgobV9pbml0aWFsUmVxdWVzdCk7Ci0gICAgYXV0byBoYW5k
bGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6Ok9w
ZW5Gb3JXcml0ZSk7CisgICAgYXV0byBoYW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVu
Q2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAg
aWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgK
aW5kZXggZTU3NjBlZDFiYzMuLjc1NzZjMGQ1ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNl
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0cmlu
ZyBtX2V2ZW50RmlsZVBhdGg7CiAgICAgICAgIGJvb2wgbV9oYXZlTWFwcGVkRXZlbnRGaWxlIHsg
ZmFsc2UgfTsKLSAgICAgICAgV2ViQ29yZTo6TWFwcGVkRmlsZURhdGEgbV9tYXBwZWRFdmVudEZp
bGU7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1fbWFwcGVk
RXZlbnRGaWxlOwogICAgICAgICBzaXplX3QgbV9vZmZzZXQgeyAwIH07CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KaW5kZXggZGY2NGUzOWJlNjEuLjE3NTY1YjI3OWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0KQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbQog
CiAgICAgbV90YXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbjsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJDb3JlOjpmaWxl
RXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQotICAgICAgICBXZWJDb3JlOjpkZWxl
dGVGaWxlKGZpbGVuYW1lKTsKKyAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkKKyAgICAgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiB9CiAKIGJvb2wgTmV0
d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXgg
MDVjODY4NDhlMjUuLjVmOTY5YmIxMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC00NzIsNyAr
NDcyLDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3JrTG9h
ZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFnZXIg
PSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKTsK
ICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3dubG9h
ZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9uLT5z
ZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAgICAg
ICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2FkKCpk
b3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpmaWxlRXhpc3RzKG5ldHdvcmtEYXRh
VGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBBU1NFUlQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG5l
dHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRvd25s
b2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZNb3Zl
KGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggYmQ0ZjYyOTE5M2YuLjRjOGI0YTRl
MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29y
a1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpCiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5pc0Vt
cHR5KCkpOwogICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2FjaGVE
aXJlY3Rvcnk7CiAKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKFdl
YkNvcmU6OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBTb3VwTmV0
d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVj
dG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3b3Jr
Q2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2FjaGU6
Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRFbmFi
bGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9j
ZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCA4ZTdmMGE3NTU1OS4uYTQ0NGYwNjk2YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaApAQCAtNjQsNyArNjQs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXVuY2hQcm9jZXNzKGNvbnN0IFN0cmluZyYgbGF1bmNo
UGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAgICAgYm9vbCBsYXVuY2hB
cHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzKTsKICAgICBib29sIG9wZW5VUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGludDMyX3QmIHN0YXR1cywgU3RyaW5nJiBsYXVuY2hlZFVSTFN0cmluZyk7Ci0gICAgYm9v
bCBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgYm9vbCBGaWxlU3lzdGVt
OjpvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAjZW5kaWYKIAogICAgIENvdW50
ZWRVc2VyQWN0aXZpdHkmIGNvbm5lY3Rpb25BY3Rpdml0eSgpIHsgcmV0dXJuIG1fY29ubmVjdGlv
bkFjdGl2aXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3Bw
CmluZGV4IGRhZjliYWVjZWU1Li43YWYwOTgzM2RiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNj
YXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1
Z2luTW9kdWxlSQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9IHBs
dWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShwbHVnaW5Q
YXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1l
KHBsdWdpblBhdGgpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBtZXRhRGF0YS5uYW1lOwogICAg
IHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0YS5kZXNjcmlwdGlvbjsKICAgICBwYXJzZU1JTUVE
ZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24sIHBsdWdpbi5pbmZvLm1pbWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFy
Y2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFy
Y2hQYXRoLmNwcAppbmRleCA3ZTg5MmYwMGM4NS4uMDc1MWYwZmY1OWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAK
QEAgLTQ4LDggKzQ4LDggQEAgVmVjdG9yPFN0cmluZz4gcGx1Z2luc0RpcmVjdG9yaWVzKCkKICAg
ICBpZiAoIW1vemlsbGFIb21lLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZChtb3pp
bGxhSG9tZSArICIvcGx1Z2lucyIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChob21lRGlyZWN0b3J5
UGF0aCgpICsgIi8ubW96aWxsYS9wbHVnaW5zIik7Ci0gICAgcmVzdWx0LmFwcGVuZChob21lRGly
ZWN0b3J5UGF0aCgpICsgIi8ubmV0c2NhcGUvcGx1Z2lucyIpOworICAgIHJlc3VsdC5hcHBlbmQo
RmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIpOwor
ICAgIHJlc3VsdC5hcHBlbmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm5l
dHNjYXBlL3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9icm93c2VyL3Bs
dWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xvY2FsL2xpYi9tb3ppbGxhL3BsdWdp
bnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9maXJlZm94L3BsdWdpbnMiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5kZXggMTUxMzM5MDg4ZGMu
Ljk2MzZmMTFmOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlT
YW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNw
cApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RvcCgpCiAgICAg
aWYgKCFtX2lzUnVubmluZykgCiAgICAgICAgIHJldHVybjsKICAgICBtX3NhbXBsZVRpbWVyLnN0
b3AoKTsKLSAgICBjbG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKIAogICAgIHByaW50ZigiU3RvcHBlZCBtZW1vcnkg
c2FtcGxlciBmb3IgcHJvY2VzcyAlcyAlZFxuIiwgcHJvY2Vzc05hbWUoKS51dGY4KCkuZGF0YSgp
LCBnZXRwaWQoKSk7CiAgICAgLy8gRmx1c2ggc3Rkb3V0IGJ1ZmZlciBzbyBweXRob24gc2NyaXB0
IGNhbiBiZSBndWFyYW50ZWVkIHRvIHJlYWQgdXAgdG8gdGhpcyBwb2ludC4KQEAgLTEyNyw3ICsx
MjcsNyBAQCBib29sIFdlYk1lbW9yeVNhbXBsZXI6OmlzUnVubmluZygpIGNvbnN0CiAgICAgCiB2
b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVUZW1wTG9nRmlsZSgpCiB7Ci0gICAgbV9z
YW1wbGVMb2dGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1fc2Ft
cGxlTG9nRmlsZSk7CisgICAgbV9zYW1wbGVMb2dGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1fc2FtcGxlTG9nRmlsZSk7CiAgICAgd3JpdGVI
ZWFkZXJzKCk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6
OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZQogICAgIGlmIChtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FtcGxl
TG9nU2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogICAgIG1fc2FtcGxlTG9nRmlsZVBhdGgg
PSBzYW1wbGVMb2dGaWxlUGF0aDsKLSAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBvcGVuRmlsZShtX3Nh
bXBsZUxvZ0ZpbGVQYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIG1fc2FtcGxlTG9nRmlsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKG1fc2FtcGxlTG9nRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5G
b3JXcml0ZSk7CiAgICAgd3JpdGVIZWFkZXJzKCk7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2
b2lkIFdlYk1lbW9yeVNhbXBsZXI6OndyaXRlSGVhZGVycygpCiAgICAgU3RyaW5nIHByb2Nlc3NE
ZXRhaWxzID0gU3RyaW5nOjpmb3JtYXQoIlByb2Nlc3M6ICVzIFBpZDogJWRcbiIsIHByb2Nlc3NO
YW1lKCkudXRmOCgpLmRhdGEoKSwgZ2V0cGlkKCkpOwogCiAgICAgQ1N0cmluZyB1dGY4U3RyaW5n
ID0gcHJvY2Vzc0RldGFpbHMudXRmOCgpOwotICAgIHdyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmls
ZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhT
dHJpbmcubGVuZ3RoKCkpOwogfQogCiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVRpbWVy
RmlyZWQoKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RvcFRp
bWVyRmlyZWQoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjphcHBl
bmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJikKK3ZvaWQgV2Vi
TWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSYpCiB7CiAgICAgLy8gQ29sbGVjdCBzdGF0aXN0aWNzIGZyb20g
YWxsb2NhdG9ycyBhbmQgZ2V0IFJTSVpFIG1ldHJpYwogICAgIFN0cmluZ0J1aWxkZXIgc3RhdFN0
cmluZzsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVuZEN1
cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKQogICAgIHN0YXRTdHJp
bmcuYXBwZW5kKCdcbicpOwogCiAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gc3RhdFN0cmluZy50
b1N0cmluZygpLnV0ZjgoKTsKLSAgICB3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhT
dHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxl
bmd0aCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVt
b3J5U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCmlu
ZGV4IDI3ODdiNTE1ZGFiLi4zMjVlZWI4MmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1l
bW9yeVNhbXBsZXIuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlh
bGl6ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwogICAgIHZv
aWQgc3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRv
RmlsZShXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1cnJl
bnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCk7CiAgICAgCiAgICAgU3lz
dGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFsbG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5NSw3
IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3RhdGlzdGljcyBzYW1wbGVXZWJLaXQoKSBjb25z
dDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKICAgICAKLSAgICBXZWJDb3JlOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSB9OworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5nIG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAgICAgV2Vi
Q29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3N0b3BUaW1l
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJs
ZVBhdGhHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxl
UGF0aEd0ay5jcHAKaW5kZXggOGIzODMzMzgwOGIuLjljYTZmZjY1NjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcApA
QCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKIHsKICAg
ICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7CiAg
ICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGRpcmVjdG9y
eU5hbWUoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5k
YXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5k
YXRhKCkpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAjZW5kaWYKQEAgLTUzLDIwICs1Mywy
MCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nlc3NO
YW1lKQogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBzdGF0aWMgY29uc3QgY2hhciog
ZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYgKGV4
ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVj
dG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgp
KQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdldEV4ZWN1dGFi
bGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewotICAgICAgICBT
dHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBh
dGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQor
ICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIHByb2Nl
c3NQYXRoOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBLR0xJQkVYRUNESVIpLCBw
cm9jZXNzTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBLR0xJ
QkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CiB9CiAKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mV2Vi
UHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9j
ZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpp
bmRleCA3MmY1MTIzNmNiNS4uM2VjNTRiZjM0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
aW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtNzEsMTQgKzcxLDE0IEBAIHZvaWQgQ2hpbGRQcm9j
ZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMmCiAgICAgfQogCiAgICAgU3RyaW5nIHNhbmRib3hJbXBvcnRQYXRoID0gIi91c3Iv
bG9jYWwvc2hhcmUvc2FuZGJveC9pbXBvcnRzIjsKLSAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQ
YXRoUGFyYW1ldGVyKCJJTVBPUlRfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRi
b3hJbXBvcnRQYXRoKS5kYXRhKCkpOworICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJh
bWV0ZXIoIklNUE9SVF9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
c2FuZGJveEltcG9ydFBhdGgpLmRhdGEoKSk7CiAKICAgICBzd2l0Y2ggKHNhbmRib3hQYXJhbWV0
ZXJzLm1vZGUoKSkgewogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6
VXNlRGVmYXVsdFNhbmRib3hQcm9maWxlUGF0aDoKICAgICBjYXNlIFNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnM6OlVzZU92ZXJyaWRlU2FuZGJveFByb2ZpbGVQYXRoOiB7CiAgICAgICAg
IFN0cmluZyBzYW5kYm94UHJvZmlsZVBhdGggPSBzYW5kYm94UGFyYW1ldGVycy5tb2RlKCkgPT0g
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlRGVmYXVsdFNhbmRib3hQcm9maWxl
UGF0aCA/IGRlZmF1bHRQcm9maWxlUGF0aCA6IHNhbmRib3hQYXJhbWV0ZXJzLm92ZXJyaWRlU2Fu
ZGJveFByb2ZpbGVQYXRoKCk7CiAgICAgICAgIGlmICghc2FuZGJveFByb2ZpbGVQYXRoLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgQ1N0cmluZyBwcm9maWxlUGF0aCA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihzYW5kYm94UHJvZmlsZVBhdGgpOworICAgICAgICAgICAgQ1N0cmluZyBwcm9m
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94UHJv
ZmlsZVBhdGgpOwogICAgICAgICAgICAgY2hhciogZXJyb3JCdWY7CiAgICAgICAgICAgICBpZiAo
c2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhwcm9maWxlUGF0aC5kYXRhKCksIFNBTkRCT1hf
TkFNRURfRVhURVJOQUwsIHNhbmRib3hQYXJhbWV0ZXJzLm5hbWVkUGFyYW1ldGVyQXJyYXkoKSwg
JmVycm9yQnVmKSkgewogICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkbid0
IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxlIFslc10sIGVycm9yICclcydcbiIsIGdldHByb2du
YW1lKCksIHByb2ZpbGVQYXRoLmRhdGEoKSwgZXJyb3JCdWYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggNTRhZTY1ODAyZDMuLjI3NmU2ZTNmYzhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAgLTEy
OCw3ICsxMjgsNyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3Qg
Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIHNhbmRib3hQYXJhbWV0
ZXJzLmFkZFBhcmFtZXRlcigiX09TX1ZFUlNJT04iLCBvc1ZlcnNpb24udXRmOCgpLmRhdGEoKSk7
CiAKICAgICAvLyBVc2UgcHJpdmF0ZSB0ZW1wb3JhcnkgYW5kIGNhY2hlIGRpcmVjdG9yaWVzLgot
ICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIsIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihzYW5kYm94UGFyYW1ldGVycy51c2VyRGlyZWN0b3J5U3VmZml4KCkpLmRhdGEoKSwg
MSk7CisgICAgc2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIiwgRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQYXJhbWV0ZXJzLnVzZXJEaXJlY3RvcnlT
dWZmaXgoKSkuZGF0YSgpLCAxKTsKICAgICBjaGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQQVRIX01B
WF07CiAgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5
RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsKICAgICAgICAgV1RGTG9n
QWx3YXlzKCIlczogY291bGRuJ3QgcmV0cmlldmUgcHJpdmF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5
IHBhdGg6ICVkXG4iLCBnZXRwcm9nbmFtZSgpLCBlcnJubyk7CkBAIC0xNTQsMTggKzE1NCwxOCBA
QCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9t
VVRGOChwd2QucHdfZGlyKTsKICAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKIAotICAgIHNh
bmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBzYW5kYm94UGFyYW1ldGVy
cy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfRElSIiwgRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAKICAgICBwYXRoLmFwcGVuZCgiL1By
ZWZlcmVuY2VzIik7CiAKLSAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJI
T01FX0xJQlJBUllfUFJFRkVSRU5DRVNfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBh
dGgpLmRhdGEoKSk7CisgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9N
RV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAgICAgc3dpdGNoIChzYW5kYm94UGFyYW1ldGVycy5t
b2RlKCkpIHsKICAgICBjYXNlIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURl
ZmF1bHRTYW5kYm94UHJvZmlsZVBhdGg6CiAgICAgY2FzZSBTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzOjpVc2VPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aDogewogICAgICAgICBTdHJp
bmcgc2FuZGJveFByb2ZpbGVQYXRoID0gc2FuZGJveFBhcmFtZXRlcnMubW9kZSgpID09IFNhbmRi
b3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGgg
PyBkZWZhdWx0UHJvZmlsZVBhdGggOiBzYW5kYm94UGFyYW1ldGVycy5vdmVycmlkZVNhbmRib3hQ
cm9maWxlUGF0aCgpOwogICAgICAgICBpZiAoIXNhbmRib3hQcm9maWxlUGF0aC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKKyAgICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFByb2ZpbGVQ
YXRoKTsKICAgICAgICAgICAgIGNoYXIqIGVycm9yQnVmOwogICAgICAgICAgICAgaWYgKHNhbmRi
b3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmlsZVBhdGguZGF0YSgpLCBTQU5EQk9YX05BTUVE
X0VYVEVSTkFMLCBzYW5kYm94UGFyYW1ldGVycy5uYW1lZFBhcmFtZXRlckFycmF5KCksICZlcnJv
ckJ1ZikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBpbml0
aWFsaXplIHNhbmRib3ggcHJvZmlsZSBbJXNdLCBlcnJvciAnJXMnXG4iLCBnZXRwcm9nbmFtZSgp
LCBwcm9maWxlUGF0aC5kYXRhKCksIGVycm9yQnVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggMWE4YjlmZGNmYjAuLmQ5MmNiZjk3
YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1h
Yy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRl
RGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiBTdHJpbmcg
cmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBib3RoIHJlc29sdmVTeW1saW5rc0luUGF0aCgpIGFuZCAt
c3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aD8KLSAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRoID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGhdKTsKKyAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRoID0gRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGhdKTsKICAgICBpZiAoZmlsZVN5c3RlbVBhdGguaXNOdWxsKCkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgdmFsaWQgZmlsZSBzeXN0ZW0gcmVwcmVz
ZW50YXRpb24gZm9yIHRoZSBzdHJpbmcgJyVzJyBvZiBsZW5ndGggJWx1IiwgZmlsZVN5c3RlbVBh
dGguZGF0YSgpLCBmaWxlU3lzdGVtUGF0aC5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiB7IH07
CkBAIC0zMzUsNyArMzM1LDcgQEAgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUKICAgICBwYXRoLmFw
cGVuZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKICAgICBwYXRoLmFw
cGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbkltcGw6OmNyZWF0ZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRh
KCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRi
b3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0ZSBh
IHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRhYmxl
UGF0aFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQ
YXRoV1BFLmNwcAppbmRleCAyMmQ0NWNiYmJlZi4uNWVkNTZkMzcwODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RXhlY3V0YWJsZVBhdGgoKQogewogICAg
IENTdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKTsKICAg
ICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZGlyZWN0b3J5
TmFtZShzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoLmRh
dGEoKSkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoLmRh
dGEoKSkpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApAQCAtNDcsMTkgKzQ3LDE5IEBAIHN0
YXRpYyBTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCiB7
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VCS0lU
X0VYRUNfUEFUSCIpOwogICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Ci0gICAgICAgIFN0cmluZyBw
cm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlm
IChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsK
KyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAg
ICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmcgZXhl
Y3V0YWJsZVBhdGggPSBnZXRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJsZVBh
dGguaXNOdWxsKCkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlmIChm
aWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNz
TmFtZSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkK
ICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
TElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKIH0KIAogU3RyaW5nIGV4ZWN1dGFi
bGVQYXRoT2ZXZWJQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVBy
b2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
dG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZWNkNTE3MDc4MzAuLjdiNDY1NjQzNTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTMz
LDcgKzEzMyw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAg
aWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMocGF0aCkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1ha2Ug
YWxsIGRpcmVjdG9yaWVzIGZvciBwYXRoICclcyciLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwogfQog
CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6YWNjZXNzVG9UZW1wb3Jh
cnlGaWxlQ29tcGxldGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIFdlJ3ZlIGVpdGhlciBo
YXJkIGxpbmtlZCB0aGUgdGVtcG9yYXJ5IGJsb2IgZmlsZSB0byB0aGUgZGF0YWJhc2UgZGlyZWN0
b3J5LCBjb3BpZWQgaXQgdGhlcmUsCiAgICAgLy8gb3IgdGhlIHRyYW5zYWN0aW9uIGlzIGJlaW5n
IGFib3J0ZWQuCiAgICAgLy8gSW4gYW55IG9mIHRob3NlIGNhc2VzLCB3ZSBjYW4gZGVsZXRlIHRo
ZSB0ZW1wb3JhcnkgYmxvYiBmaWxlIG5vdy4KLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAKICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBt
X2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnMudGFrZShwYXRoKSkKICAgICAgICAg
ZXh0ZW5zaW9uLT5yZXZva2UoKTsKQEAgLTMwMCw4ICszMDAsOCBAQCBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9yYWdlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3JpZ2lu
cyhjb25zdAogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5zOwotICAgIGZvciAoYXV0byYgb3JpZ2luUGF0
aCA6IGxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VJ
ZGVudGlmaWVyID0gcGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgIGZvciAoYXV0byYg
b3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgeworICAg
ICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmll
cikpCiAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKFdURk1vdmUoKnNlY3VyaXR5
T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29u
dGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA3ZjRmODA0MmE3Ny4uYmQ2OGI1ZTA1ZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxl
TGlzdFN0b3JlLmNwcApAQCAtODUsNyArODUsNyBAQCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Q29u
dGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBsZQog
ICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3Rv
cmUgUmVtb3ZlIFF1ZXVlIikpCiAgICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2FjeUZpbGVuYW1l
KQogewotICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOworICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQogCiBD
b250ZW50UnVsZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKQEAgLTEwOCw3ICsx
MDgsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihib29sIGxl
Z2FjeUZpbGVuYW1lKQogCiBzdGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBTdHJp
bmcmIGJhc2UsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCBsZWdhY3lGaWxlbmFtZSkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1h
a2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6
ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29uc3Ry
dWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZW5j
b2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKIH0KIAogLy8gVGhlIHNpemUgYW5kIG9mZnNl
dCBvZiB0aGUgZGVuc2VseSBwYWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2YgYW5k
IG9mZnNldG9mLCB3aGljaCB3b3VsZApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBib29sIGRl
Y29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRh
RGF0YSwgY29uCiAKIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3Qg
U3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEmIGZp
bGVEYXRhKQogewotICAgIGZpbGVEYXRhID0gbWFwRmlsZShXZWJDb3JlOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBmaWxlRGF0YSA9IG1hcEZpbGUoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAg
ICAgaWYgKGZpbGVEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5
NCwxMSArMTk0LDExIEBAIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiBmaWxlRGF0YSwg
V2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkKQorc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9G
aWxlKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgZmQpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmaWxlRGF0YS5h
cHBseShbZmQsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewot
ICAgICAgICBpZiAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBz
aXplKSA9PSAtMSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgewogICAgICAgICAgICAgc3Vj
Y2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0y
MTQsNyArMjE0LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJp
bmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKIAogICAgIGNsYXNzIENvbXBp
bGF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNs
aWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3JlOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1l
dGFEYXRhKQorICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1l
dGFEYXRhKQogICAgICAgICAgICAgOiBtX2ZpbGVIYW5kbGUoZmlsZUhhbmRsZSkKICAgICAgICAg
ICAgICwgbV9tZXRhRGF0YShtZXRhRGF0YSkKICAgICAgICAgewpAQCAtMjMyLDE1ICsyMzIsMTUg
QEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBj
b25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICAgICAgICAgIEFTU0VSVCghbV9jb25kaXRp
b25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rpb25z
V3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fc291cmNlV3JpdHRlbik7Ci0gICAgICAg
ICAgICB3cml0ZVRvRmlsZShzb3VyY2VKU09OLmlzOEJpdCgpKTsKKyAgICAgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKHNvdXJjZUpTT04uaXM4Qml0KCkpOwogICAgICAgICAgICAgbV9z
b3VyY2VXcml0dGVuICs9IHNpemVvZihib29sKTsKICAgICAgICAgICAgIGlmIChzb3VyY2VKU09O
LmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGggPSBz
b3VyY2VKU09OLmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKTsKLSAgICAgICAgICAgICAgICB3cml0
ZVRvRmlsZShEYXRhKHNvdXJjZUpTT04uY2hhcmFjdGVyczgoKSwgc2VyaWFsaXplZExlbmd0aCkp
OworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKERhdGEoc291cmNlSlNP
Ti5jaGFyYWN0ZXJzOCgpLCBzZXJpYWxpemVkTGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgbV9z
b3VyY2VXcml0dGVuICs9IHNlcmlhbGl6ZWRMZW5ndGg7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoID0gc291cmNlSlNPTi5sZW5n
dGgoKSAqIHNpemVvZihVQ2hhcik7Ci0gICAgICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VKU09OLmNoYXJhY3RlcnMxNigp
KSwgc2VyaWFsaXplZExlbmd0aCkpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlSlNPTi5j
aGFyYWN0ZXJzMTYoKSksIHNlcmlhbGl6ZWRMZW5ndGgpKTsKICAgICAgICAgICAgICAgICBtX3Nv
dXJjZVdyaXR0ZW4gKz0gc2VyaWFsaXplZExlbmd0aDsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMjUwLDIwICsyNTAsMjAgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRv
RmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICAgICAg
ICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbik7CiAgICAg
ICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CiAgICAg
ICAgICAgICBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbiArPSBieXRl
Y29kZS5zaXplKCk7Ci0gICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEo
KSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29kZShW
ZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAg
ICAgIG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4gKz0gYnl0ZWNvZGUuc2l6
ZSgpOwotICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVj
b2RlLnNpemUoKSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRGF0YShi
eXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICB2b2lkIHdyaXRlVG9wVVJMRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29k
ZT4mJiBieXRlY29kZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgbV9jb25kaXRpb25G
aWx0ZXJzQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKLSAgICAgICAgICAgIHdy
aXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsKKyAgICAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRl
Y29kZS5zaXplKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgd3JpdGVBY3Rpb25zKFZl
Y3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiBhY3Rpb25zLCBib29sIGNvbmRpdGlvbnNBcHBs
eU9ubHlUb0RvbWFpbikgZmluYWwKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgc3RkOjplcnJv
cl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxG
aWxlUGF0aAogICAgICAgICAgICAgQVNTRVJUKCFtX2FjdGlvbnNXcml0dGVuKTsKICAgICAgICAg
ICAgIG1fYWN0aW9uc1dyaXR0ZW4gKz0gYWN0aW9ucy5zaXplKCk7CiAgICAgICAgICAgICBtX2Nv
bmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbiA9IGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbjsK
LSAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYWN0aW9ucy5kYXRhKCksIGFjdGlvbnMuc2l6
ZSgpKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShEYXRhKGFjdGlvbnMu
ZGF0YSgpLCBhY3Rpb25zLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2
b2lkIGZpbmFsaXplKCkgZmluYWwKQEAgLTI4NywyOSArMjg3LDI5IEBAIHN0YXRpYyBzdGQ6OmVy
cm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5h
bEZpbGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlUb0Rv
bWFpbiA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKG1fbWV0
YURhdGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBXZWJDb3JlOjpzZWVrRmls
ZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVn
aW5uaW5nKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZShtX2Zp
bGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
RmlsZVNlZWtPcmlnaW46OkZpbGVTeXN0ZW06OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewor
ICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5k
bGUpOwogICAgICAgICAgICAgICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlcik7CisgICAgICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoZWFkZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29s
IGhhZEVycm9yV2hpbGVXcml0aW5nVG9GaWxlKCkgeyByZXR1cm4gbV9maWxlRXJyb3I7IH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgd3JpdGVUb0ZpbGUoYm9vbCB2YWx1ZSkKKyAgICAg
ICAgdm9pZCBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShib29sIHZhbHVlKQogICAgICAgICB7Ci0g
ICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf
dCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwg
c2l6ZW9mKHZhbHVlKSkpOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgd3JpdGVUb0ZpbGUoY29u
c3QgRGF0YSYgZGF0YSkKKyAgICAgICAgdm9pZCBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShjb25z
dCBEYXRhJiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZmlsZUVycm9yICYm
ICF3cml0ZURhdGFUb0ZpbGUoZGF0YSwgbV9maWxlSGFuZGxlKSkgewotICAgICAgICAgICAgICAg
IFdlYkNvcmU6OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICAgICAgICAg
IG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsK
ICAgICAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1fbWV0YURhdGE7CiAgICAgICAgIHNp
emVfdCBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKICAg
ICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4geyAwIH07
CkBAIC0zMjAsMjcgKzMyMCwyNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9G
aWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAgICBi
b29sIG1fZmlsZUVycm9yIHsgZmFsc2UgfTsKICAgICB9OwogCi0gICAgYXV0byB0ZW1wb3JhcnlG
aWxlSGFuZGxlID0gV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICBTdHJp
bmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgiQ29udGVu
dFJ1bGVMaXN0IiwgdGVtcG9yYXJ5RmlsZUhhbmRsZSk7Ci0gICAgaWYgKHRlbXBvcmFyeUZpbGVI
YW5kbGUgPT0gV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIHRl
bXBvcmFyeUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOworICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiLCB0ZW1wb3JhcnlGaWxl
SGFuZGxlKTsKKyAgICBpZiAodGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gQ29udGVudFJ1
bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwogICAgIAogICAgIGNoYXIgaW52YWxp
ZEhlYWRlcltDb250ZW50UnVsZUxpc3RGaWxlSGVhZGVyU2l6ZV07CiAgICAgbWVtc2V0KGludmFs
aWRIZWFkZXIsIDB4RkYsIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgLy8gVGhpcyBoZWFk
ZXIgd2lsbCBiZSByZXdyaXR0ZW4gaW4gQ29tcGlsYXRpb25DbGllbnQ6OmZpbmFsaXplLgotICAg
IGlmIChXZWJDb3JlOjp3cml0ZVRvRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlkSGVh
ZGVyLCBzaXplb2YoaW52YWxpZEhlYWRlcikpID09IC0xKSB7Ci0gICAgICAgIFdlYkNvcmU6OmNs
b3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSwgaW52YWxpZEhlYWRlciwgc2l6ZW9m
KGludmFsaWRIZWFkZXIpKSA9PSAtMSkgeworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpj
bG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBDb250ZW50UnVs
ZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgfQogCiAgICAgQ29tcGlsYXRp
b25DbGllbnQgY29tcGlsYXRpb25DbGllbnQodGVtcG9yYXJ5RmlsZUhhbmRsZSwgbWV0YURhdGEp
OwogICAgIAogICAgIGlmIChhdXRvIGNvbXBpbGVyRXJyb3IgPSBjb21waWxlUnVsZUxpc3QoY29t
cGlsYXRpb25DbGllbnQsIFdURk1vdmUoanNvbikpKSB7Ci0gICAgICAgIFdlYkNvcmU6OmNsb3Nl
RmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOwogICAgICAgICByZXR1cm4gY29tcGlsZXJF
cnJvcjsKICAgICB9CiAgICAgaWYgKGNvbXBpbGF0aW9uQ2xpZW50LmhhZEVycm9yV2hpbGVXcml0
aW5nVG9GaWxlKCkpIHsKLSAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVI
YW5kbGUpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5
RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6
OkNvbXBpbGVGYWlsZWQ7CiAgICAgfQogICAgIApAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBz
dGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5n
JiBmaW5hbEZpbGVQYXRoCiAgICAgaWYgKG1hcHBlZERhdGEuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAKLSAgICBp
ZiAoIVdlYkNvcmU6Om1vdmVGaWxlKHRlbXBvcmFyeUZpbGVQYXRoLCBmaW5hbEZpbGVQYXRoKSkK
KyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1vdmVGaWxlKHRlbXBvcmFyeUZpbGVQYXRo
LCBmaW5hbEZpbGVQYXRoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpF
cnJvcjo6Q29tcGlsZUZhaWxlZDsKIAogICAgIHJldHVybiB7IH07CkBAIC00MTIsMTIgKzQxMiwx
MiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxp
c3RJZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKAogewogICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0
aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewog
Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGZ1bGxQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3Rv
cnkoc3RvcmVQYXRoLCBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIobGVnYWN5RmlsZW5hbWUpKTsKKyAg
ICAgICAgVmVjdG9yPFN0cmluZz4gZnVsbFBhdGhzID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlz
dERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lGaWxlbmFt
ZSkpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVyczsKICAgICAgICAgaWRlbnRp
ZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmdWxsUGF0aHMuc2l6ZSgpKTsKICAgICAgICAg
Y29uc3QgYXV0byBwcmVmaXhMZW5ndGggPSBjb25zdHJ1Y3RlZFBhdGhQcmVmaXgobGVnYWN5Rmls
ZW5hbWUpLmxlbmd0aCgpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBmdWxsUGF0
aHMpCi0gICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6ZGVj
b2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEg
KyBwcmVmaXhMZW5ndGgpKSk7CisgICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBl
bmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5n
KHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEgKyBwcmVmaXhMZW5ndGgpKSk7CiAKICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
aWRlbnRpZmllcnMgPSBXVEZNb3ZlKGlkZW50aWZpZXJzKV0oKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaWRlbnRpZmllcnMpKTsKQEAgLTQ1NCw3ICs0
NTQsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3Qo
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgbV9yZW1vdmVRdWV1ZS0+ZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgp
LCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0
aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1l
KTsKIAotICAgICAgICBpZiAoIVdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCkpIHsKKyAgICAgICAg
aWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpKSB7CiAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXJyb3I6OlJlbW92ZUZhaWxl
ZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTQ2OSwxOSArNDY5LDE5IEBAIHZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwKIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6c3luY2hyb25vdXNSZW1vdmVB
bGxDb250ZW50UnVsZUxpc3RzKCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBXZWJD
b3JlOjpsaXN0RGlyZWN0b3J5KG1fc3RvcmVQYXRoLCAiKiIpKQotICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKHBhdGgpOworICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9zdG9yZVBhdGgsICIqIikpCisgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIHZvaWQgQ29udGVudFJ1bGVM
aXN0U3RvcmU6OmludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNvbnN0IFdURjo6U3Ry
aW5nJiBpZGVudGlmaWVyKQogewotICAgIGF1dG8gZmlsZSA9IFdlYkNvcmU6Om9wZW5GaWxlKGNv
bnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0aCwgaWRlbnRpZmllciwgbV9sZWdhY3lGaWxlbmFtZSks
IFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIGZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpvcGVuRmlsZShjb25zdHJ1Y3RlZFBhdGgobV9zdG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVn
YWN5RmlsZW5hbWUpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlm
IChmaWxlID09IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
CiAgICAgICAgIHJldHVybjsKICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSBpbnZhbGlkSGVh
ZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9OwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gV2ViQ29y
ZTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmludmFs
aWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOworICAgIGF1dG8gYnl0ZXNXcml0dGVu
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOwog
ICAgIEFTU0VSVF9VTlVTRUQoYnl0ZXNXcml0dGVuLCBieXRlc1dyaXR0ZW4gPT0gc2l6ZW9mKGlu
dmFsaWRIZWFkZXIpKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogfQogCiB2b2lkIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsIEZ1bmN0aW9uPHZvaWQoV1RGOjpTdHJpbmcpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNp
dGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCA3MGNhMzZiM2VmYi4uNDY2YzBjZjVkNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3Rv
cmVHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJz
aXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogLy8gV2h5IGlzIG9u
bHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/
CiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgp
CiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKKyAg
ICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldl
YktpdENhY2hlIikpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hl
U3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJD
YWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdf
Z2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQpAQCAtODAsMTIgKzgw
LDEyIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkp
LCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUp
OwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJl
Y3RvcnlOYW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAK
IFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMjA4ZWFlZjA1MC4uYzM3
NzU4MjU0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNv
bkRhdGFiYXNlLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpvcGVu
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIG1f
ZGF0YWJhc2VEaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7CiAKICAgICAvLyBG
b3JtdWxhdGUgdGhlIGZ1bGwgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGZpbGUKLSAgICBtX2NvbXBs
ZXRlRGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnksIGZpbGVuYW1lKTsKKyAgICBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnksIGZpbGVuYW1l
KTsKIAogICAgIC8vIExvY2sgaGVyZSBhcyB3ZWxsIGFzIGZpcnN0IHRoaW5nIGluIHRoZSB0aHJl
YWQgc28gdGhlIHRocmVhZCBkb2Vzbid0IGFjdHVhbGx5IGNvbW1lbmNlIHVudGlsIHRoZSBjcmVh
dGVUaHJlYWQoKSBjYWxsCiAgICAgLy8gY29tcGxldGVzIGFuZCBtX3N5bmNUaHJlYWRSdW5uaW5n
IGlzIHByb3Blcmx5IHNldApAQCAtODY5LDEzICs4NjksMTMgQEAgdm9pZCBJY29uRGF0YWJhc2U6
Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKQogI2VuZGlmCiAKICAgICAvLyBOZWVkIHRvIGNyZWF0
ZSB0aGUgZGF0YWJhc2UgcGF0aCBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QKLSAgICBtYWtl
QWxsRGlyZWN0b3JpZXMobV9kYXRhYmFzZURpcmVjdG9yeSk7CisgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogCiAgICAgLy8gRXhpc3RlbmNl
IG9mIGEgam91cm5hbCBmaWxlIGlzIGV2aWRlbmNlIG9mIGEgcHJldmlvdXMgY3Jhc2gvZm9yY2Ug
cXVpdCBhbmQgYXV0b21hdGljYWxseSBxdWFsaWZpZXMKICAgICAvLyB1cyB0byBkbyBhbiBpbnRl
Z3JpdHkgY2hlY2sKICAgICBTdHJpbmcgam91cm5hbEZpbGVuYW1lID0gbV9jb21wbGV0ZURhdGFi
YXNlUGF0aCArICItam91cm5hbCI7CiAgICAgaWYgKCFjaGVja0ludGVncml0eU9uT3BlbikKLSAg
ICAgICAgY2hlY2tJbnRlZ3JpdHlPbk9wZW4gPSBmaWxlRXhpc3RzKGpvdXJuYWxGaWxlbmFtZSk7
CisgICAgICAgIGNoZWNrSW50ZWdyaXR5T25PcGVuID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhq
b3VybmFsRmlsZW5hbWUpOwogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3N5
bmNMb2NrKTsKQEAgLTEwMDgsOCArMTAwOCw4IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3Jt
T3BlbkluaXRpYWxpemF0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3N5bmNMb2NrKTsKICAgICAgICAgICAgICAgICAvLyBTaG91bGQndmUg
YmVlbiBjb25zdW1lZCBieSBTUUxpdGUsIGRlbGV0ZSBqdXN0IHRvIG1ha2Ugc3VyZSB3ZSBkb24n
dCBzZWUgaXQgYWdhaW4gaW4gdGhlIGZ1dHVyZTsKLSAgICAgICAgICAgICAgICBkZWxldGVGaWxl
KG1fY29tcGxldGVEYXRhYmFzZVBhdGggKyAiLWpvdXJuYWwiKTsKLSAgICAgICAgICAgICAgICBk
ZWxldGVGaWxlKG1fY29tcGxldGVEYXRhYmFzZVBhdGgpOworICAgICAgICAgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCArICItam91cm5hbCIpOwor
ICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNl
UGF0aCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFJlb3BlbiB0aGUgd3JpdGUg
ZGF0YWJhc2UsIGNyZWF0aW5nIGl0IGZyb20gc2NyYXRjaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKaW5k
ZXggNmUyODRmODJkY2QuLjM3MjQ0M2UyZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI2
OSw3ICsyNjksNyBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNv
bkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgIHByaXYtPmljb25EYXRh
YmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRl
QnJvd3NpbmcoKSk7CiAKLSAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3Jl
OjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7
CisgICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShwYXRoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1l
KHBhdGgpKSkgewogICAgICAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBudWxscHRyOwogICAgICAg
ICBJY29uRGF0YWJhc2U6OmFsbG93RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9v
c2VyUmVxdWVzdC5jcHAKaW5kZXggZjYwMTJjODczYjQuLjc4ODA0OTRhMzUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBjb25zdCBnY2hhciogY29uc3Qq
IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0ZWRfZmlsZXMoV2ViS2l0Rmls
ZUNobwogICAgICAgICBBUEk6OlN0cmluZyogd2ViRmlsZU5hbWUgPSBzdGF0aWNfY2FzdDxBUEk6
OlN0cmluZyo+KHNlbGVjdGVkRmlsZU5hbWVzLT5hdChpKSk7CiAgICAgICAgIGlmICh3ZWJGaWxl
TmFtZS0+c3RyaW5nVmlldygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYkZpbGVO
YW1lLT5zdHJpbmcoKSk7CisgICAgICAgIENTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2ViRmlsZU5hbWUtPnN0cmluZygpKTsKICAgICAgICAg
Z19wdHJfYXJyYXlfYWRkKHJlcXVlc3QtPnByaXYtPnNlbGVjdGVkRmlsZXMuZ2V0KCksIGdfc3Ry
ZHVwKGZpbGVuYW1lLmRhdGEoKSkpOwogICAgIH0KICAgICBnX3B0cl9hcnJheV9hZGQocmVxdWVz
dC0+cHJpdi0+c2VsZWN0ZWRGaWxlcy5nZXQoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDQyNjBlYWI3
ODI0Li5mZDE3ODJmOGJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTMyMSwyMSArMzIxLDIxIEBAIHN0YXRp
YyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVjdGVk
QnVuZGxlRGlyZWN0b3J5KCksIElOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSwgbnVsbHB0cikpOwog
CiAgICAgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLSAgICBj
b25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChXZWJDb3JlOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CisgICAgY29uZmln
dXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOwogICAg
IGNvbmZpZ3VyYXRpb24uc2V0TWF4aW11bVByb2Nlc3NDb3VudCgxKTsKICAgICBjb25maWd1cmF0
aW9uLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQodHJ1ZSk7CiAKICAg
ICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9iamVj
dCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5wcml2
OwogICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9pc19lcGhlbWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkg
ewotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9y
eShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rp
c2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3
b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9u
X2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdl
dCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3Rp
Y3NfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAg
Y29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFu
YWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3Rv
cnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgICAg
IGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkocHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNl
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0
YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3Vy
Y2VfbG9hZF9zdGF0aXN0aWNzX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0
KCkpKSk7CiAgICAgfSBlbHNlIGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmlzTnVs
bCgpKQotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFn
ZURpcmVjdG9yeS5kYXRhKCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAgICBw
cml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlvbik7
CiAKQEAgLTkxMCw3ICs5MTAsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNv
bl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgIFdlYktp
dFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gY29udGV4dC0+cHJpdjsKICAgICBlbnN1cmVGYXZp
Y29uRGF0YWJhc2UoY29udGV4dCk7CiAKLSAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgU3RyaW5n
IGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIC8vIFVzZSBkZWZhdWx0IGlmIG51bGxwdHIgaXMg
cGFzc2VkIGFzIHBhcmFtZXRlci4KICAgICBpZiAoZGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsK
ICNpZiBQTEFURk9STShHVEspCkBAIC05MTksNyArOTE5LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQKICAgICAgICAgY29uc3QgY2hhciogcG9ydERpcmVjdG9yeSA9ICJ3cGUiOwogI2VuZGlm
CiAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgcG9ydERpcmVjdG9yeSwgImljb25kYXRhYmFz
ZSIsIG51bGxwdHIpKTsKLSAgICAgICAgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAg
ICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgfQogICAg
IHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeSA9IGRpcmVjdG9yeVBhdGgudXRmOCgpOwog
CkBAIC05MjgsNyArOTI4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25f
ZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICAgICAgIldl
YnBhZ2VJY29ucy5kYiIsIG51bGxwdHIpKTsKIAogICAgIC8vIFNldHRpbmcgdGhlIHBhdGggd2ls
bCBjYXVzZSB0aGUgaWNvbiBkYXRhYmFzZSB0byBiZSBvcGVuZWQuCi0gICAgd2Via2l0RmF2aWNv
bkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkp
OworICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdl
dCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsKIAogICAgIGlmICh3ZWJraXRfd2ViX2Nv
bnRleHRfaXNfZXBoZW1lcmFsKGNvbnRleHQpKQogICAgICAgICB3ZWJraXRGYXZpY29uRGF0YWJh
c2VTZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwg
dHJ1ZSk7CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
YWRkaXRpb25hbF9wbHVnaW5zX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0b3J5KTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBZGRpdGlvbmFsUGx1
Z2luc0RpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGRpcmVjdG9yeSkpOworICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBZGRpdGlv
bmFsUGx1Z2luc0RpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSkpOwogI2VuZGlmCiB9CiAKQEAgLTEzNTgsNyAr
MTM1OCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9y
eShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgZ19yZXR1cm5faWZfZmFpbChX
RUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGly
ZWN0b3J5KTsKIAotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0aW9u
KCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSks
IG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQ
b29sLT5jb25maWd1cmF0aW9uKCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSksIG5ldHdvcmtDYWNoZVN1
YmRpcmVjdG9yeSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmluZGV4IGNl
NzI5NGRmZjU5Li5mYjE5OTdhNjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0z
OTAsMTUgKzM5MCwxNSBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRh
TWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgIGlmICghcHJpdi0+
d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0
aW9uIGNvbmZpZ3VyYXRpb247CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGly
ZWN0b3J5ID0gIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdl
RGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
Z2V0KCkpOwogICAgICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9ICFw
cml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJl
Y3RvcnkpOwogICAgICAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkg
PSAhcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeSA9ICFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0
b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSk7CiAg
ICAgICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9ICFw
cml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
KSA6IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHByaXYtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuZ2V0KCkpOwogICAgICAgICBj
b25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgICAgIHByaXYt
PndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CkBAIC01NjEsNyArNTYxLDcgQEAgY29uc3Qg
Z2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3Rv
cnkoV2ViS2l0V2Vic2l0ZUQKIAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5KSB7
CiAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0aGUgc3ViZGly
ZWN0b3J5LgotICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAo
V2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5kaXNr
Q2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKSkudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICAgICByZXR1cm4gcHJpdi0+ZGlza0NhY2hl
RGlyZWN0b3J5LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBiZjE5YjBhYWMz
ZS4uYTVlODU4YzMwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC02NzksNyArNjc5LDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3NlUGFnZShjb25zdCBXZWJQYWdl
UHJveHkmIHBhZ2UpCiAKIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVU
eXBlcywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCiB7Ci0g
ICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKKyAgICBpZiAoIVdlYkNvcmU6
OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5pc0VtcHR5KCkgJiYgYWxsb3dlZEZpbGVFeHRl
bnNpb25zLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGZlZWYwY2VlNDAyLi40YTFlM2IyNDhiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCkBAIC0zNzYsNyArMzc2LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdh
Y3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiAgICAgLy8gQ3Vy
cmVudGx5LCB0aGUgdG9wIGxldmVsIG9mIHRoYXQgZGlyZWN0b3J5IGNvbnRhaW5zIGVudGl0aWVz
IHJlbGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNlcy4KICAgICAvLyBXZSBzaG91bGQgZml4IHRoaXMs
IGFuZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3ViZGlyZWN0b3J5IChodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3KQogICAgIC8vIEluIHRoZSBtZWFudGltZSwgYW4g
ZW50aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0aHJlZSB1bmRlcnNjb3JlcyB3aWxsIG5vdCBjb25m
bGljdCB3aXRoIGFueSBXZWJTUUwgZW50aXRpZXMuCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
LCAiX19fSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
LCAiX19fSW5kZXhlZERCIik7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxh
dGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggYTJlNDgyZmVmODIuLmQzNjdmYTQzMGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAt
Mzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0ZWJv
YXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICB9CiB9CiAKLXN0
YXRpYyBCT09MIGZpbGVFeGlzdHMoTlNTdHJpbmcgKnBhdGgpCitzdGF0aWMgQk9PTCBGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKE5TU3RyaW5nICpwYXRoKQogewogICAgIHN0cnVjdCBzdGF0IHN0YXRC
dWZmZXI7CiAgICAgcmV0dXJuICFsc3RhdChbcGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25d
LCAmc3RhdEJ1ZmZlcik7CkBAIC0zODc2LDcgKzM4NzYsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBh
dGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIE5TU3RyaW5n
ICpmaWxlbmFtZSA9IGZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhbcGF0aCBsYXN0
UGF0aENvbXBvbmVudF0pOwogICAgIHBhdGggPSBbW3BhdGggc3RyaW5nQnlEZWxldGluZ0xhc3RQ
YXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZW5hbWVdOwog
ICAgIAotICAgIGlmIChmaWxlRXhpc3RzKHBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMocGF0aCkpIHsKICAgICAgICAgLy8gRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGZp
bGUgYnkgYXBwZW5kaW5nICItbiIsICItbi5leHQiIG9yICItbi5leHQuZXh0IiB0byB0aGUgZmls
ZW5hbWUuCiAgICAgICAgIE5TU3RyaW5nICpleHRlbnNpb25zID0gbmlsOwogICAgICAgICBOU1N0
cmluZyAqcGF0aFdpdGhvdXRFeHRlbnNpb25zOwpAQCAtMzg5NCw3ICszODk0LDcgQEAgc3RhdGlj
IE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgOyBpKyspIHsKICAgICAgICAgICAgIE5TU3Ry
aW5nICpwYXRoV2l0aEFwcGVuZGVkTnVtYmVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCIlQC0lZCIsIHBhdGhXaXRob3V0RXh0ZW5zaW9ucywgaV07CiAgICAgICAgICAgICBwYXRoID0g
W2V4dGVuc2lvbnMgbGVuZ3RoXSA/IFtwYXRoV2l0aEFwcGVuZGVkTnVtYmVyIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aEV4dGVuc2lvbjpleHRlbnNpb25zXSA6IHBhdGhXaXRoQXBwZW5kZWROdW1iZXI7
Ci0gICAgICAgICAgICBpZiAoIWZpbGVFeGlzdHMocGF0aCkpCisgICAgICAgICAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6
bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3Rp
bgogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2aWEgLVtO
U0ZpbGVXcmFwcGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJMOmVycm9y
Ol0iKTsKIAogICAgIGlmICghbV9wcm9taXNlZFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNv
cmU6OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7CisgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9t
aXNlZFVSTCk7CiAgICAgCiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0
aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKaW5kZXgg
NWFjNmZjZmY1YzYuLjkzYmI4MWY0NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAg
LTc5LDcgKzc5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAg
ICAgICAgICAgZXhlY3V0YWJsZVBhdGguYXBwZW5kKCcyJyk7CiAjZW5kaWYKICAgICAgICAgcGx1
Z2luUGF0aCA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoInBs
dWdpbi1wYXRoIik7Ci0gICAgICAgIHJlYWxQbHVnaW5QYXRoID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBsdWdpblBhdGgpOworICAgICAgICByZWFsUGx1Z2luUGF0aCA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CkBA
IC05Myw3ICs5Myw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7CisgICAgcmVhbEV4ZWN1dGFibGVQYXRo
ID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsK
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiB3ZWJraXRTb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIs
IHNvY2tldFBhaXIuY2xpZW50KSk7CiAgICAgdW5zaWduZWQgbmFyZ3MgPSA0OyAvLyBzaXplIG9m
IHRoZSBhcmd2IGFycmF5IGZvciBnX3NwYXduX2FzeW5jKCkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGY1YTFk
MTA4ZDkuLmZjODgzZmRlODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgbGF1bmNoUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGxhdW5jaFBhdGgsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMsIGJvb2wmIHJlc3VsdCk7CiAgICAgdm9pZCBsYXVu
Y2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXJndW1lbnRzLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgb3BlblVSTChjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCYgcmVzdWx0LCBpbnQzMl90JiBzdGF0dXMsIFN0cmluZyYgbGF1
bmNoZWRVUkxTdHJpbmcpOwotICAgIHZvaWQgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCwgYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIEZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgsIGJvb2wmIHJlc3VsdCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZv
cm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDFiZDY1MDc5ZTVkLi5iOWIwYzJlYWUz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2lu
SW5mb0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5JbmZvQ2FjaGUuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgUGx1Z2luSW5mb0NhY2hlOjpQ
bHVnaW5JbmZvQ2FjaGUoKQogICAgIG1fc2F2ZVRvRmlsZUlkbGUuc2V0UHJpb3JpdHkoR19QUklP
UklUWV9ERUZBVUxUX0lETEUpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjYWNoZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCBu
dWxscHRyKSk7Ci0gICAgaWYgKFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhjYWNoZURpcmVj
dG9yeS5nZXQoKSkpIHsKKyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICAvLyBEZWxldGUgb2xkIGNh
Y2hlIGZpbGUuCiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gb2xkQ2FjaGVQYXRoKGdfYnVpbGRf
ZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksICJwbHVnaW5zIiwgbnVsbHB0cikpOwotICAg
ICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKIAogICAgICAgICBtX2NhY2hl
UGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCBjYWNoZUZp
bGVuYW1lRm9yQ3VycmVudERpc3BsYXkoKSwgbnVsbHB0cikpOwogICAgICAgICBnX2tleV9maWxl
X2xvYWRfZnJvbV9maWxlKG1fY2FjaGVGaWxlLmdldCgpLCBtX2NhY2hlUGF0aC5nZXQoKSwgR19L
RVlfRklMRV9OT05FLCBudWxscHRyKTsKQEAgLTExMywxNCArMTEzLDE0IEBAIGJvb2wgUGx1Z2lu
SW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2lu
TW9kdWxlSW5mbyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdGltZV90IGxhc3RNb2Rp
ZmllZDsKLSAgICBpZiAoIVdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBh
dGgsIGxhc3RNb2RpZmllZCkpCisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgdGltZV90IGNhY2hlZExhc3RNb2RpZmllZCA9IHN0YXRpY19jYXN0PHRp
bWVfdD4oZ19rZXlfZmlsZV9nZXRfdWludDY0KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91
cC5kYXRhKCksICJtdGltZSIsIG51bGxwdHIpKTsKICAgICBpZiAobGFzdE1vZGlmaWVkICE9IGNh
Y2hlZExhc3RNb2RpZmllZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBh
dGggPSBwbHVnaW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpwYXRoR2V0
RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gc3RyaW5nVmFsdWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgp
LCBwbHVnaW5Hcm91cC5kYXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZv
Lm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MSw3ICsx
NDEsNyBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiB2b2lkIFBsdWdpbkluZm9DYWNoZTo6dXBk
YXRlUGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbikKIHsKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAgIGlmICghV2Vi
Q29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSkK
KyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBs
dWdpblBhdGgsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcg
cGx1Z2luR3JvdXAgPSBwbHVnaW5QYXRoLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcApp
bmRleCAzYjdlZjM4MWE3My4uMDg0ZjZkZWJiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAK
QEAgLTU2LDEwICs1NiwxMCBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdp
blBhdGhzSW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiB7CiAgICAgVmVjdG9y
PFN0cmluZz4gcmVzdWx0OwogICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAg
IGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBTdHJpbmco
Iiouc28iKSkpIHsKLSAgICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpKSB7CisgICAgICAgIENTdHJp
bmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAgICAgICAgIGlmIChyZWFscGF0aChmaWxlbmFtZS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRoKSkK
LSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihub3JtYWxpemVkUGF0aCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKSk7
CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBQbHVn
aW5JbmZvU3RvcmU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVn
aW5Nb2R1bGVJbmZvJgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IFN0cmluZyBwbHVnaW5Qcm9jZXNzUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNz
KCk7CiAgICAgICAgICAgICBwbHVnaW5Qcm9jZXNzUGF0aC5hcHBlbmQoJzInKTsKLSAgICAgICAg
ICAgIGlmICghZmlsZUV4aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCisgICAgICAgICAgICBpZiAo
IUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGx1Z2luUHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKaW5kZXggMjc2NjkyYmQ5MTIuLmVhMGFhMDExODAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nl
c3NQcm94eVVuaXguY3BwCkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEm
CiAjZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1NfR1RLMikKICAgICAgICAgcGx1Z2lu
UHJvY2Vzc1BhdGguYXBwZW5kKCcyJyk7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cyhwbHVnaW5Q
cm9jZXNzUGF0aCkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwbHVnaW5Q
cm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC05OCw4ICs5OCw4IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpz
Y2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAg
ICAgfQogI2VuZGlmCiAKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGx1Z2luUHJvY2Vzc1BhdGgpOwotICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJp
bmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAgQ1N0cmluZyBi
aW5hcnlQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBy
b2Nlc3NQYXRoKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOwogICAgIGNoYXIqIGFyZ3ZbNF07
CiAgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKICAg
ICBhcmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAxMjQ4YWVmNjEyMy4uZDFkZmY0Zjk2OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNDYsNyArNDYsNyBA
QCBzdGF0aWMgYm9vbCBoYXNGaWxlQ2hhbmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2Fs
bFRpbWUgc2luY2UpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgdGlt
ZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShw
YXRoLCBtb2RpZmljYXRpb25UaW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGlt
ZSkgPiBzaW5jZTsKQEAgLTU1LDI2ICs1NSwyNiBAQCBzdGF0aWMgYm9vbCBoYXNGaWxlQ2hhbmdl
ZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgc2luY2UpCiBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2RlckZvckZpbGUoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gaGFu
ZGxlID0gb3BlbkFuZExvY2tGaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoaGFuZGxl
ID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lz
dGVtOjpvcGVuQW5kTG9ja0ZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAg
IGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAg
IGlmICghZ2V0RmlsZVNpemUoaGFuZGxlLCBmaWxlU2l6ZSkpIHsKLSAgICAgICAgdW5sb2NrQW5k
Q2xvc2VGaWxlKGhhbmRsZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShoYW5k
bGUsIGZpbGVTaXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUo
aGFuZGxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgc2l6ZV90IGJ5
dGVzVG9SZWFkOwogICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTaXplLCBieXRlc1Rv
UmVhZCkpIHsKLSAgICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKLSAg
ICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSByZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0
YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lz
dGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsK
IAotICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OnVubG9j
a0FuZENsb3NlRmlsZShoYW5kbGUpOwogCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVz
VG9SZWFkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJp
bmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpyZXNvdXJjZUxvZ0Zp
bGVQYXRoKCkgY29uc3QKICAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoc3RvcmFnZVBhdGgsICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3Qi
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3Jh
Z2VQYXRoLCAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CiB9CiAK
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0
b3JpbmdEaXNrKCkKQEAgLTE0NSw4ICsxNDUsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQog
ICAgIFN0cmluZyBzdG9yYWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CiAgICAgQVNT
RVJUKCFzdG9yYWdlUGF0aC5pc0VtcHR5KCkpOwogCi0gICAgaWYgKCFmaWxlRXhpc3RzKHN0b3Jh
Z2VQYXRoKSkgewotICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCkp
IHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZVBhdGgpKSB7CisgICAg
ICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKSkgewog
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogRmFpbGVkIHRvIGNyZWF0ZSBk
aXJlY3RvcnkgcGF0aCAlcyIsIHN0b3JhZ2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0
aXN0aWNzKCkKICAgICAgICAgU3RyaW5nIHJlc291cmNlTG9nUGF0aCA9IHJlc291cmNlTG9nRmls
ZVBhdGgoKTsKICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKTsKIAot
ICAgICAgICBpZiAoIWZpbGVFeGlzdHMocmVzb3VyY2VMb2dQYXRoKSkKKyAgICAgICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKHJlc291cmNlTG9nUGF0aCkpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgbV9maWxlTW9uaXRvciA9IG51bGxwdHI7CkBAIC0yMDksNyArMjA5LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnBvcHVsYXRl
TWVtb3J5U3RvcmVGcm9tRGlzaygpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBTdHJpbmcgZmlsZVBhdGggPSByZXNvdXJjZUxvZ0ZpbGVQYXRoKCk7Ci0gICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSB8fCAhZmlsZUV4aXN0cyhmaWxlUGF0aCkpIHsKKyAgICBpZiAoZmls
ZVBhdGguaXNFbXB0eSgpIHx8ICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkgewog
ICAgICAgICBtX21lbW9yeVN0b3JlLmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwog
ICAgICAgICBtb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpOwogICAgICAgICByZXR1
cm47CkBAIC0yNTgsMTYgKzI1OCwxNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiAKICAgICBhdXRvIHN0b3Jh
Z2VQYXRoID0gc3RvcmFnZURpcmVjdG9yeVBhdGgoKTsKICAgICBpZiAoIXN0b3JhZ2VQYXRoLmlz
RW1wdHkoKSkgewotICAgICAgICBtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOworICAg
ICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOwogICAgICAg
ICBleGNsdWRlRnJvbUJhY2t1cCgpOwogICAgIH0KIAotICAgIGF1dG8gaGFuZGxlID0gb3BlbkFu
ZExvY2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgoKSwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAo
aGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocmVzb3VyY2VMb2dGaWxlUGF0aCgpLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50NjRfdCB3cml0
dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+
c2l6ZSgpKTsKLSAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBpbnQ2NF90IHdy
aXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0
YSgpLCByYXdEYXRhLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmls
ZShoYW5kbGUpOwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90
PihyYXdEYXRhLT5zaXplKCkpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOiBX
ZSBvbmx5IHdyb3RlICVkIG91dCBvZiAlenUgYnl0ZXMgdG8gZGlzayIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPih3cml0dGVuQnl0ZXMpLCByYXdEYXRhLT5zaXplKCkpOwpAQCAtMzA2LDcgKzMwNiw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjbGVhcigp
CiAKICAgICBzdG9wTW9uaXRvcmluZ0Rpc2soKTsKIAotICAgIGlmICghZGVsZXRlRmlsZShmaWxl
UGF0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKSkKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogVW5hYmxlIHRvIGRlbGV0ZSBzdGF0aXN0aWNz
IGZpbGU6ICVzIiwgZmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFz
ZS5jcHAKaW5kZXggYTQ1NDA4MWI3MGUuLjgyNjE1OGZiMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
LmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpvcGVuRGF0
YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgb3BlbmluZ1N0cmF0ZWd5KQogCiBib29sIExv
Y2FsU3RvcmFnZURhdGFiYXNlOjp0cnlUb09wZW5EYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJh
dGVneSBvcGVuaW5nU3RyYXRlZ3kpCiB7Ci0gICAgaWYgKCFmaWxlRXhpc3RzKG1fZGF0YWJhc2VQ
YXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kg
PT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1f
ZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCmluZGV4IDE5YjIyOWY2YjUzLi5iOWNhODlmOGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKIAogICAgIGludCByZXN1bHQ7CiAgICAg
d2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAg
ICAgIGRlbGV0ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAg
ICAvLyBGSVhNRTogQ2FsbCBvdXQgdG8gdGhlIGNsaWVudC4KICAgICB9CkBAIC0xMDYsNyArMTA2
LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNl
cygpCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIG1fZGF0YWJhc2UuY2xv
c2UoKTsKIAotICAgIGlmICghZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsK
ICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlbGV0
ZSB0aGUgZGF0YWJhc2UgZmlsZSAoZS5nIHNvbWUgb3RoZXIgcHJvZ3JhbQogICAgICAgICAvLyBs
aWtlIGEgdmlydXMgc2Nhbm5lciBpcyBhY2Nlc3NpbmcgaXQpLCBtYWtlIHN1cmUgdG8gcmVtb3Zl
IGFsbCBlbnRyaWVzLgogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKFNraXBJZk5vbkV4aXN0
ZW50KTsKQEAgLTEyNCwxOSArMTI0LDE5IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZGVsZXRl
RW1wdHlEaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIH0KIAogc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZVBhdGgpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVDcmVhdGlv
blRpbWUoZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6IHN0ZDo6b3B0aW9uYWw8dGltZV90PihzdGQ6
Om51bGxvcHQpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1lKGZp
bGVQYXRoLCB0aW1lKSA/IHRpbWUgOiBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4oc3RkOjpudWxsb3B0
KTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIGlmICgh
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQorICAgIGlmICghRmlsZVN5
c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHRpbWU7CkBAIC0yMDksNyArMjA5LDcg
QEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSB7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBMb2NhbFN0b3Jh
Z2UgZGF0YWJhc2UgcGF0aCAlcyIsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBA
IFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBT
dHJpbmcmIGZpbGVuYW1lKSBjb25zdAogICAgIHBsYXRmb3JtTWF5YmVFeGNsdWRlRnJvbUJhY2t1
cCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5LCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgZmlsZW5hbWUp
OwogfQogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJh
c2VQYXRoKCkgY29uc3QKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVneSBv
cAogCiAgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHRyYWNrZXJEYXRhYmFzZVBhdGgoKTsKIAot
ICAgIGlmICghZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBT
a2lwSWZOb25FeGlzdGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJh
c2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKQEAg
LTI3OSw3ICsyNzksNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6aW1wb3J0
T3JpZ2luSWRlbnRpZmllcnMoKQogCiB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
dXBkYXRlVHJhY2tlckRhdGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRmlsZXMoKQogewot
ICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzID0gbGlzdERpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURp
cmVjdG9yeSwgIioubG9jYWxzdG9yYWdlIik7CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHMgPSBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCAiKi5sb2Nh
bHN0b3JhZ2UiKTsKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zKG1fb3JpZ2lucyk7CiAg
ICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNGcm9tTG9jYWxTdG9yYWdlRGF0YWJhc2VGaWxlczsK
QEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dXBk
YXRlVHJhY2tlckRhdGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRgogICAgICAgICBpZiAo
IXBhdGguZW5kc1dpdGgoIi5sb2NhbHN0b3JhZ2UiKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICAg
ICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpOwog
CiAgICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAs
IGZpbGVuYW1lLmxlbmd0aCgpIC0gc3RybGVuKCIubG9jYWxzdG9yYWdlIikpOwogCkBAIC0zNjAs
NyArMzYwLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURhdGFi
YXNlV2l0aE9yaWdpbklkZW50aWZpZXIoY29uc3QgU3RyaW4KICAgICAgICAgLy8gVGhlcmUgYXJl
IG5vIG9yaWdpbnMgbGVmdDsgZGVsZXRlIHRoZSB0cmFja2VyIGRhdGFiYXNlLgogICAgICAgICBt
X2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFi
YXNlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVj
dG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB9CiAKICAgICAv
LyBGSVhNRTogVGVsbCBjbGllbnRzIHRoYXQgdGhlIG9yaWdpbiB3YXMgcmVtb3ZlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA4ZDY1YmJlNDUwMy4uNDI4MDgxOGQ1
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTczLDcgKzczLDcg
QEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVy
cygpCiAgICAgcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3BlbmRp
bmdDb29raWVzKTsKIAogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCi0gICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3Jl
OjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRo
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUo
Y29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUp
OwogCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzTnVs
bCgpKSB7CiAgICAgICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggOTdk
MmJhY2EyZWYuLmU1OTE2MWU0NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTI0LDggKzEyNCw4
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3Nhcnko
KQogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRocy4KICAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSByZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpkaXJlY3Rv
cnlOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOwotICAgICAgICBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9IFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZSwgV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdl
RmlsZSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9u
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tp
ZVN0b3JhZ2VGaWxlKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0
b3JhZ2VGaWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxl
KSk7CiAgICAgfQogfQogCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBWZWN0b3I8UGx1Z2luTW9kdWxl
SW5mbz4gV2Vic2l0ZURhdGFTdG9yZTo6cGx1Z2lucygpIGNvbnN0CiAKIHN0YXRpYyBTdHJpbmcg
Y29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5KQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJl
Y3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0
b3AucGxpc3QiKTsKIH0KIAogVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vi
c2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSkKQEAgLTEyNTcsMTIgKzEyNTcsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0
IFN0cmkKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7
CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpsaXN0RGlyZWN0
b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUg
PSBjb21wdXRlTWVkaWFLZXlGaWxlKG9yaWdpblBhdGgpOwotICAgICAgICBpZiAoIVdlYkNvcmU6
OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFt
ZShvcmlnaW5QYXRoKTsKKyAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CiAKICAgICAgICAgaWYg
KGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKSkKICAgICAgICAgICAgIG9yaWdp
bnMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CkBAIC0xMjc1LDE4ICsxMjc1LDE4IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSwKIHsKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3Rvcnkg
OiBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikp
IHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDogV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7
CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtl
eURpcmVjdG9yeSk7CiAKICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAg
IGlmICghV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2Rp
ZmljYXRpb25UaW1lKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OmZyb21fdGltZV90KG1vZGlmaWNhdGlvblRpbWUpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxl
KTsKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3Rv
cnkpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5Rmls
ZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1l
ZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKQEAgLTEyOTUsMTEgKzEyOTUsMTEgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7
Ci0gICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlhS2V5
RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAg
IFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
UG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xH
dGsuY3BwCmluZGV4IGM1OTVkNTZkZjM5Li5iNGExNzIzOWY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0xMjQsNyArMTI0
LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShn
X2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIs
IG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDJk
MDI3MjFmNzExLi5kZmVmNThiMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIE5TU3RyaW5n
ICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZl
QXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQg
bG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgLy8gRklYTUU6IFdyaXRl
IG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFk
YXRhIChwZXJoYXBzIFdlYkNvcmU6OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhNRTog
V3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwg
bWV0YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8p
LgogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKICAgICBpZiAoIXN1
Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAppbmRleCBlNTIyYTU5
NTU4ZC4uNzNkODAxYmE5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dw
ZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3Bl
L1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtODAsMTMgKzgwLDEzIEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiBXVEY6OlN0cmluZyBXZWJQcm9jZXNzUG9vbDo6
bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91
c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVy
biBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0
b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFdURjo6
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxk
X2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNoZSIsIG51
bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3Rvcnku
Z2V0KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQ
cm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0xMDIs
MzcgKzEwMiwzNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250
ZXh0KCkKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGly
ZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRh
dGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6Omxl
Z2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICBH
VW5pcXVlUHRyPGdjaGFyPiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFzZXMiLCAiaW5kZXhlZGRi
IiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9j
ZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsK
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsK
LSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihz
dG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgp
KTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rpcigp
LCAid3BlIiwgIm1lZGlha2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKIH0K
IAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5
KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJjYWNoZSIs
IG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNo
ZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxh
dGZvcm1EZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmls
ZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIkphdmFTY3JpcHRDb3JlRGVidWci
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXgg
ZGNmMTNjMWY1MzcuLmFhYzI4MjgwY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lv
bk1hbmFnZXI6OldlYktpdEV4dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lv
bk1hbmFnZXI6OnNjYW5Nb2R1bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9y
eSwgVmVjdG9yPFN0cmluZz4mIG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxl
UGF0aHMgPSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0
cmluZygiKi5zbyIpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5n
KCIqLnNvIikpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0p
KQorICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRo
c1tpXSkpCiAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAg
fQogfQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJp
YW50KiBkYXRhID0gbnVsbHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIo
bSZzbXYpIiwgJmRpcmVjdG9yeSwgJmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9y
eSA9IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5
KTsKKyAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRpYWxp
emF0aW9uVXNlckRhdGEgPSBhZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xp
Yi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9Jbmpl
Y3RlZEJ1bmRsZUdsaWIuY3BwCmluZGV4IGEyMGE1ZmU0MjIzLi5jZmZhOGZjNGFjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0
ZWRCdW5kbGVHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25V
c2VyRGF0YSkKIHsKLSAgICBtX3BsYXRmb3JtQnVuZGxlID0gZ19tb2R1bGVfb3BlbihmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24obV9wYXRoKS5kYXRhKCksIEdfTU9EVUxFX0JJTkRfTE9DQUwpOwor
ICAgIG1fcGxhdGZvcm1CdW5kbGUgPSBnX21vZHVsZV9vcGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihtX3BhdGgpLmRhdGEoKSwgR19NT0RVTEVfQklORF9MT0NBTCk7CiAg
ICAgaWYgKCFtX3BsYXRmb3JtQnVuZGxlKSB7CiAgICAgICAgIGdfd2FybmluZygiRXJyb3IgbG9h
ZGluZyB0aGUgaW5qZWN0ZWQgYnVuZGxlICglcyk6ICVzIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCks
IGdfbW9kdWxlX2Vycm9yKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGZiN2Y5YzZjYTc2Li45ZjhlYWYzOTA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUv
V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIFdl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6Om1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUZvck9yaWdp
bihjb25zdCBTZWN1cmkKICAgICBpZiAoIW1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOwogfQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQpAQCAtNjIsNyArNjIsNyBAQCBWZWN0
b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRp
YUtleU9yaWdpbnMoKQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3JpZ2lu
UGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICB1
cmwuc2V0UHJvdG9jb2woQVNDSUlMaXRlcmFsKCJmaWxlIikpOwpAQCAtODIsMjUgKzgyLDI1IEBA
IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6Omdl
dE1lZGlhS2V5T3JpZ2lucygpCiAKIHN0YXRpYyB2b2lkIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFn
ZUZvck9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBkb3VibGUgc3RhcnREYXRl
LCBkb3VibGUgZW5kRGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYUtleVBhdGhzID0g
bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCAiKiIpOworICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlh
S2V5UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CiAK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5UGF0aCA6IG1lZGlhS2V5UGF0aHMpIHsKLSAg
ICAgICAgU3RyaW5nIG1lZGlhS2V5RmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRp
YUtleVBhdGgsICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgICAgIFN0cmluZyBtZWRpYUtleUZp
bGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlQYXRoLCAi
U2VjdXJlU3RvcC5wbGlzdCIpOwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhtZWRpYUtleUZp
bGUpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHRpbWVfdCBtb2RUaW1lOwotICAgICAg
ICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOworICAgICAg
ICBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRp
bWUpOwogCiAgICAgICAgIGlmIChtb2RUaW1lIDwgc3RhcnREYXRlIHx8IG1vZFRpbWUgPiBlbmRE
YXRlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGVsZXRlRmlsZShtZWRpYUtl
eUZpbGUpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleVBhdGgpOworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5UGF0aCk7CiAgICAgfQogICAgIAot
ICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIFdlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXI6OmRlbGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5E
YXRlcyhkb3VibGUKICAgICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxp
c3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAgVmVjdG9y
PFN0cmluZz4gb3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFL
ZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9y
aWdpblBhdGhzKQogICAgICAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRo
KG9yaWdpblBhdGgsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAg
dm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVudHJpZXMo
KQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVjdG9y
eShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBv
cmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VE
aXJlY3RvcnksICIqIik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMp
CiAgICAgICAgIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2luUGF0
aCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwgc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5j
cHAKaW5kZXggMDM3MThhMjczMGEuLjE4ZmU5Y2JmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5TdHJlYW0uY3BwCkBAIC00NSw3ICs0NSw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpO
ZXRzY2FwZVBsdWdpblN0cmVhbShSZWY8TmV0c2NhcGVQbHVnaW4+JiYgcGx1Z2luLCB1aW50NjRf
CiAgICAgLCBtX25wU3RyZWFtKCkKICAgICAsIG1fdHJhbnNmZXJNb2RlKE5QX05PUk1BTCkKICAg
ICAsIG1fb2Zmc2V0KDApCi0gICAgLCBtX2ZpbGVIYW5kbGUoaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKKyAgICAsIG1fZmlsZUhhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQogICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICwgbV91cmxOb3RpZnlIYXNCZWVuQ2FsbGVkKGZhbHNlKQpAQCAtNTksNyArNTksNyBAQCBO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6fk5ldHNjYXBlUGx1Z2luU3RyZWFtKCkKIHsKICAgICBBU1NF
UlQoIW1faXNTdGFydGVkKTsKICAgICBBU1NFUlQoIW1fc2VuZE5vdGlmaWNhdGlvbiB8fCBtX3Vy
bE5vdGlmeUhhc0JlZW5DYWxsZWQpOwotICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgQVNTRVJUKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdp
blN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJM
JiByZWRpcmVjdFJlc3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cykKQEAgLTI2
MywxMiArMjYzLDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9Q
bHVnaW4oKQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAobV9maWxlSGFuZGxlID09
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgJiYgbV9maWxlUGF0aC5pc051bGwoKSkgeworICAg
IGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFy
eSBmaWxlLgotICAgICAgICBtX2ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIldlYktpdFBs
dWdpblN0cmVhbSIsIG1fZmlsZUhhbmRsZSk7CisgICAgICAgIG1fZmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiV2ViS2l0UGx1Z2luU3RyZWFtIiwgbV9maWxlSGFuZGxl
KTsKIAogICAgICAgICAvLyBXZSBmYWlsZWQgdG8gb3BlbiB0aGUgZmlsZSwgc3RvcCB0aGUgc3Ry
ZWFtLgotICAgICAgICBpZiAobV9maWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpIHsKKyAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgICAgICBzdG9wKE5QUkVTX05FVFdPUktfRVJSKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc3LDEwICsyNzcsMTAgQEAgdm9p
ZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGludCBieXRlQ291bnQgPSB3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgp
OworICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5k
bGUsIGJ5dGVzLCBsZW5ndGgpOwogICAgIGlmIChieXRlQ291bnQgIT0gbGVuZ3RoKSB7CiAgICAg
ICAgIC8vIFRoaXMgaGFwcGVucyBvbmx5IHJhcmVseSwgd2hlbiB3ZSBhcmUgb3V0IG9mIGRpc2sg
c3BhY2Ugb3IgaGF2ZSBhIGRpc2sgSS9PIGVycm9yLgotICAgICAgICBjbG9zZUZpbGUobV9maWxl
SGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAK
ICAgICAgICAgc3RvcChOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpAQCAtMzE0LDIzICszMTQs
MjMgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RvcChOUFJlYXNvbiByZWFzb24pCiAg
ICAgICAgIGlmIChyZWFzb24gPT0gTlBSRVNfRE9ORSkgewogICAgICAgICAgICAgLy8gRW5zdXJl
IHRoYXQgdGhlIGZpbGUgaXMgY3JlYXRlZC4KICAgICAgICAgICAgIGRlbGl2ZXJEYXRhVG9GaWxl
KDAsIDApOwotICAgICAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQotICAgICAgICAgICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAg
ICAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQorICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVI
YW5kbGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQoIW1fZmlsZVBhdGguaXNO
dWxsKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3BsdWdpbi0+TlBQX1N0cmVhbUFz
RmlsZSgmbV9ucFN0cmVhbSwgbV9maWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIEp1c3QgY2xvc2UgdGhlIGZpbGUuCi0gICAgICAgICAgICBp
ZiAobV9maWxlSGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgICAg
ICAgICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICBpZiAobV9maWxlSGFu
ZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBEZWxldGUgdGhlIGZpbGUgYWZ0ZXIgY2FsbGluZyBOUFBfU3RyZWFtQXNGaWxl
KCksIGluc3RlYWQgb2YgaW4gdGhlIGRlc3RydWN0b3IuICBJdCBzaG91bGQgYmUgT0sKICAgICAg
ICAgLy8gdG8gZGVsZXRlIHRoZSBmaWxlIGhlcmUgLS0gTlBQX1N0cmVhbUFzRmlsZSgpIGlzIGFs
d2F5cyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIE5QUF9EZXN0cm95U3RyZWFtKCkKICAgICAg
ICAgLy8gKHRoZSBzdHJlYW0gZGVzdHJ1Y3Rpb24gZnVuY3Rpb24pLCBzbyB0aGVyZSBjYW4gYmUg
bm8gZXhwZWN0YXRpb24gdGhhdCBhIHBsdWdpbiB3aWxsIHJlYWQgdGhlIHN0cmVhbQogICAgICAg
ICAvLyBmaWxlIGFzeW5jaHJvbm91c2x5IGFmdGVyIE5QUF9TdHJlYW1Bc0ZpbGUoKSBpcyBjYWxs
ZWQuCi0gICAgICAgIGRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CiAgICAgICAgIG1fZmlsZVBhdGggPSBTdHJpbmcoKTsK
IAogICAgICAgICAvLyBOUFBfU3RyZWFtQXNGaWxlIGNvdWxkIGNhbGwgTlBOX0Rlc3Ryb3lTdHJl
YW0gYW5kIGRlc3Ryb3kgdGhlIHN0cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5o
CmluZGV4IDM2NzgwOTc4OTAxLi40MDc0MDc4ZDdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
blN0cmVhbS5oCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29mZnNl
dDsKIAogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhh
bmRsZSBtX2ZpbGVIYW5kbGU7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIG1fZmlsZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJlYW0g
aGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDgwMjQxYzk1ZTFhLi4xYWUyYzNj
OGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtNTQsNyArNTQs
NyBAQCBzdGF0aWMgSFRUUEJvZHkgdG9IVFRQQm9keShjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEp
CiAgICAgICAgICAgICBlbGVtZW50LmZpbGVTdGFydCA9IGZvcm1EYXRhRWxlbWVudC5tX2ZpbGVT
dGFydDsKICAgICAgICAgICAgIGlmIChmb3JtRGF0YUVsZW1lbnQubV9maWxlTGVuZ3RoICE9IEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5maWxlTGVu
Z3RoID0gZm9ybURhdGFFbGVtZW50Lm1fZmlsZUxlbmd0aDsKLSAgICAgICAgICAgIGlmIChmb3Jt
RGF0YUVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IGludmFsaWRGaWxl
VGltZSgpKQorICAgICAgICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5tX2V4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1lKCkpCiAgICAgICAg
ICAgICAgICAgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZm9ybURhdGFF
bGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGJyZWFr
OwogCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIFJlZjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShj
b25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURhdGEt
PmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxl
bWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVt
ZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoaW52YWxpZEZpbGVUaW1l
KCkpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxl
UGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9i
RGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lLnZhbHVlX29yKEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKSk7CiAgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L0NoYW5nZUxvZwppbmRleCBiZjMyODVmOTA1ZC4uOWFjZTIyZTNhYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVyIFJl
aWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFt
ZXNwYWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAg
KiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9y
YWdlVHJhY2tlci5jcHA6CisKIDIwMTctMTAtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzI3MS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXgg
YmExNWU0YTRkYTAuLjQwMzk5NjBiMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RvcmFn
ZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2UoT3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdTdHJh
dGVneSkKIAogICAgIFN0cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVs
bERhdGFiYXNlRmlsZW5hbWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwogCi0gICAgaWYgKCFmaWxl
RXhpc3RzKGRhdGFiYXNlRmlsZW5hbWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25F
eGlzdGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlbmFt
ZSkgJiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZGF0YWJhc2VGaWxlbmFtZS5pc0VtcHR5KCkpIHsKQEAgLTUyMSw3ICs1
MjEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBkYXRhYmFz
ZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5hbWUobV9kYXRhYmFz
ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgaWYgKCFkZWxldGVGaWxlKGRhdGFiYXNlRmlsZW5h
bWUpKQorICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFiYXNlRmls
ZW5hbWUpKQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlbGV0ZSBkYXRh
YmFzZSBmaWxlICVzXG4iLCBkYXRhYmFzZUZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5
bmNNYW5hZ2VyLmNwcAppbmRleCBlZGM5ZWIzM2M1MC4uM2U4ZmY2NWVlNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC01
NSwxMiArNTUsMTIgQEAgU3RvcmFnZVN5bmNNYW5hZ2VyOjp+U3RvcmFnZVN5bmNNYW5hZ2VyKCkK
IC8vIENhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogU3RyaW5nIFN0b3JhZ2VTeW5jTWFu
YWdlcjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZp
ZXIpCiB7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMobV9wYXRoKSkgeworICAgIGlmICgh
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcGF0aCkpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJVbmFibGVkIHRvIGNyZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIG1f
cGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAot
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBkYXRhYmFzZUlkZW50
aWZpZXIgKyAiLmxvY2Fsc3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBkYXRhYmFzZUlkZW50aWZpZXIgKyAiLmxvY2Fsc3Rv
cmFnZSIpOwogfQogCiB2b2lkIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwCmluZGV4IDEzMjZjN2QxOTM5Li5kNWU1Zjc0NzdlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0xMDQsMTUg
KzEwNCwxNSBAQCBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBz
dG9yYWdlUGF0aCkKIFN0cmluZyBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgp
CiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICByZXR1cm4g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJTdG9yYWdl
VHJhY2tlci5kYiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFja2VyLmRiIik7CiB9CiAK
IHN0YXRpYyBib29sIGVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewogICAgIGlmIChjcmVhdGVJZkRvZXNO
b3RFeGlzdCkKLSAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlOYW1l
KGZpbGVOYW1lKSk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSkpOwogCi0gICAgcmV0dXJuIGZp
bGVFeGlzdHMoZmlsZU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZp
bGVOYW1lKTsKIH0KIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShi
b29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgU3RvcmFn
ZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICBWZWN0b3I8
U3RyaW5nPiBwYXRoczsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJh
c2VNdXRleCk7Ci0gICAgICAgIHBhdGhzID0gbGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoLCAiKi5sb2NhbHN0b3JhZ2UiKTsKKyAgICAgICAgcGF0aHMgPSBGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICIqLmxvY2Fsc3RvcmFnZSIpOwog
ICAgIH0KIAogICAgIC8vIFVzZSBhIGNvcHkgb2YgbV9vcmlnaW5TZXQgdG8gZmluZCBleHBpcmVk
IGVudHJpZXMgYW5kIHRvIHNjaGVkdWxlIHRoZWlyCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBT
dG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgICAg
ICBjb25zdCBTdHJpbmcmIHBhdGggPSAqaXQ7CiAKICAgICAgICAgaWYgKHBhdGgubGVuZ3RoKCkg
PiBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpICYmIHBhdGguZW5kc1dpdGgoZmlsZUV4dGVuc2lvbikp
IHsKLSAgICAgICAgICAgIFN0cmluZyBmaWxlID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAg
ICAgICAgICAgU3RyaW5nIGZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCk7
CiAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGUuc3Vic3RyaW5nKDAs
IGZpbGUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlm
ICghb3JpZ2luU2V0Q29weS5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkKICAgICAgICAgICAg
ICAgICBzeW5jU2V0T3JpZ2luRGV0YWlscyhvcmlnaW5JZGVudGlmaWVyLCBwYXRoKTsKQEAgLTQx
OCw3ICs0MTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygp
CiAgICAgICAgIGlmICghY2FuRGVsZXRlT3JpZ2luKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDAp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRlbGV0ZUZpbGUoc3RhdGVtZW50
LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRl
bWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAgfQogCiAjaWYgIVBMQVRGT1JN
KElPUykKLSAgICBpZiAoIWRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgeworICAg
IGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CiAg
ICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZWxldGUg
dGhlIGRhdGFiYXNlIGZpbGUgKGUuZyBzb21lIG90aGVyIHByb2dyYW0KICAgICAgICAgLy8gbGlr
ZSBhIHZpcnVzIHNjYW5uZXIgaXMgYWNjZXNzaW5nIGl0KSwgbWFrZSBzdXJlIHRvIHJlbW92ZSBh
bGwgZW50cmllcy4KICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CkBAIC00NTQs
NyArNDU0LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTUz
Myw3ICs1MzMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGRlbGV0ZUZpbGUocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKICAg
ICAKICAgICBib29sIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IGZhbHNlOwogICAgIHsKQEAg
LTU0OCw4ICs1NDgsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNl
LmNsb3NlKCk7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgZGVsZXRlRmlsZSh0cmFja2Vy
RGF0YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0b3JhZ2VE
aXJlY3RvcnlQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0
YWJhc2VQYXRoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeSht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICNlbmRpZgogICAgIH0KIApAQCAtNjQyLDcgKzY0Miw3
IEBAIGxvbmcgbG9uZyBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4pCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbG9uZyBsb25nIHNpemU7
Ci0gICAgcmV0dXJuIGdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAz
NzNiNGNjMWYxMC4uMzRiZmIyOTM3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRA
c29ueS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5
c3RlbS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAqIFN0b3JhZ2UvV2Vi
RGF0YWJhc2VQcm92aWRlci5tbToKKwogMjAxNy0xMC0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtGcmFtZVZpZXc6OmxheW91dCBjbGVhbnVwXSBNb3ZlIGNv
cmUgbGF5b3V0IGxvZ2ljIHRvIGEgc2VwYXJhdGUgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXggYmVm
YzNlMTM0NmMuLmUzMzdjNmNjOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC00Myw3ICs0Myw3IEBACiB7
CiAgICAgQVNTRVJUKFVSTFN0cmluZyk7CiAgICAgQVNTRVJUKHBhdGgpOwotICAgIFdlYkNvcmU6
OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOworICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOwog
fQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKQEAgLTUxLDcgKzUxLDcgQEAKIC8vIC1bTlNG
aWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOl0gcmV0dXJucyBOTyBpZiB0aGVyZSBpcyBhIGJy
b2tlbiBzeW1saW5rIGF0IHRoZSBwYXRoLgogLy8gU28gd2UgdXNlIHRoaXMgZnVuY3Rpb24gaW5z
dGVhZCwgd2hpY2ggcmV0dXJucyBZRVMgaWYgdGhlcmUgaXMgYW55dGhpbmcgdGhlcmUsIGluY2x1
ZGluZwogLy8gYSBicm9rZW4gc3ltbGluay4KLXN0YXRpYyBCT09MIGZpbGVFeGlzdHMoTlNTdHJp
bmcgKnBhdGgpCitzdGF0aWMgQk9PTCBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKE5TU3RyaW5nICpw
YXRoKQogewogICAgIHN0cnVjdCBzdGF0IHN0YXRCdWZmZXI7CiAgICAgcmV0dXJuICFsc3RhdChb
cGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAmc3RhdEJ1ZmZlcik7CkBAIC02Myw3ICs2
Myw3IEBAIHN0YXRpYyBCT09MIGZpbGVFeGlzdHMoTlNTdHJpbmcgKnBhdGgpCiAgICAgTlNTdHJp
bmcgKmZpbGVuYW1lID0gW1twYXRoIGxhc3RQYXRoQ29tcG9uZW50XSBfd2Via2l0X2ZpbGVuYW1l
QnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVyc107CiAgICAgcGF0aCA9IFtbcGF0aCBzdHJpbmdCeURl
bGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpm
aWxlbmFtZV07CiAKLSAgICBpZiAoZmlsZUV4aXN0cyhwYXRoKSkgeworICAgIGlmIChGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHBhdGgpKSB7CiAgICAgICAgIC8vIERvbid0IG92ZXJ3cml0ZSBleGlz
dGluZyBmaWxlIGJ5IGFwcGVuZGluZyAiLW4iLCAiLW4uZXh0IiBvciAiLW4uZXh0LmV4dCIgdG8g
dGhlIGZpbGVuYW1lLgogICAgICAgICBOU1N0cmluZyAqZXh0ZW5zaW9ucyA9IG5pbDsKICAgICAg
ICAgTlNTdHJpbmcgKnBhdGhXaXRob3V0RXh0ZW5zaW9uczsKQEAgLTgxLDcgKzgxLDcgQEAgc3Rh
dGljIEJPT0wgZmlsZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgOyBpKyspIHsKICAgICAgICAgICAgIE5TU3RyaW5nICpwYXRoV2l0aEFwcGVuZGVk
TnVtYmVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQC0lZCIsIHBhdGhXaXRob3V0
RXh0ZW5zaW9ucywgaV07CiAgICAgICAgICAgICBwYXRoID0gW2V4dGVuc2lvbnMgbGVuZ3RoXSA/
IFtwYXRoV2l0aEFwcGVuZGVkTnVtYmVyIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpl
eHRlbnNpb25zXSA6IHBhdGhXaXRoQXBwZW5kZWROdW1iZXI7Ci0gICAgICAgICAgICBpZiAoIWZp
bGVFeGlzdHMocGF0aCkpCisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
cGF0aCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC05Miw3
ICs5Miw3IEBAIHN0YXRpYyBCT09MIGZpbGVFeGlzdHMoTlNTdHJpbmcgKnBhdGgpCiAjaWYgUExB
VEZPUk0oSU9TKQogLSAoTlNTdHJpbmcgKilfd2Via2l0X2NyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eVdpdGhUZW1wbGF0ZVByZWZpeDooTlNTdHJpbmcgKilwcmVmaXgKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VQcm92aWRlci5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0
YWJhc2VQcm92aWRlci5tbQppbmRleCA1NzZkNTc1YWM1OS4uMDk5Mjk4YmUyOWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlk
ZXIubW0KQEAgLTMzLDkgKzMzLDkgQEAgU3RyaW5nIFdlYkRhdGFiYXNlUHJvdmlkZXI6OmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeVBhdGgoKQogICAgIE5TVXNlckRlZmF1bHRzICpkZWZhdWx0cyA9
IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107CiAgICAgTlNTdHJpbmcgKmRh
dGFiYXNlc0RpcmVjdG9yeSA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6V2ViRGF0YWJhc2VEaXJl
Y3RvcnlEZWZhdWx0c0tleV07CiAgICAgaWYgKCFkYXRhYmFzZXNEaXJlY3RvcnkgfHwgIVtkYXRh
YmFzZXNEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKLSAgICAgICAg
ZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEFT
Q0lJTGl0ZXJhbCgifi9MaWJyYXJ5L1dlYktpdC9EYXRhYmFzZXMvX19fSW5kZXhlZERCIiksIFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pOworICAgICAgICBkYXRhYmFz
ZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoQVNDSUlMaXRlcmFsKCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIi
KSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiAgICAgZWxzZQot
ICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZGF0YWJhc2VzRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIl9fX0luZGV4ZWREQiIpKTsK
KyAgICAgICAgZGF0YWJhc2VzRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlc0RpcmVjdG9yeSwgQVNDSUlMaXRlcmFsKCJfX19J
bmRleGVkREIiKSk7CiAgICAgCiAgICAgcmV0dXJuIFtkYXRhYmFzZXNEaXJlY3Rvcnkgc3RyaW5n
QnlTdGFuZGFyZGl6aW5nUGF0aF07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5kZXgg
NDc0OTE1NzIzZGUuLmE2MjM3MzU5MGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlk
QHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRvIEZpbGVT
eXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2lu
UGFja2FnZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAg
ICAqIFBsdWdpbnMvUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHA6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJE
b3dubG9hZEN1cmwuY3BwOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAg
KiBXZWJWaWV3LmNwcDoKKwogMjAxNy0xMC0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtGcmFtZVZpZXc6OmxheW91dCBjbGVhbnVwXSBNb3ZlIGNvcmUgbGF5
b3V0IGxvZ2ljIHRvIGEgc2VwYXJhdGUgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IGIwZTYwNmU5NDMzLi4zMjg1
MDZmMGFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjpy
ZWZyZXNoKCkKICAgICBhdXRvIHBhdGhzRW5kID0gcGF0aHMuZW5kKCk7CiAgICAgZm9yIChhdXRv
IGl0ID0gcGF0aHMuYmVnaW4oKTsgaXQgIT0gcGF0aHNFbmQ7ICsraXQpIHsKICAgICAgICAgdGlt
ZV90IGxhc3RNb2RpZmllZDsKLSAgICAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgq
aXQsIGxhc3RNb2RpZmllZCkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoKml0LCBsYXN0TW9kaWZpZWQpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgcGF0aHNXaXRoVGltZXMuYWRkKCppdCwgbGFzdE1vZGlmaWVkKTsKQEAgLTMxMywx
MCArMzEzLDEwIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnNldFByZWZlcnJlZFBsdWdpbkZvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFBsdWdpCiBib29sIFBsdWdpbkRhdGFiYXNl
OjpmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKSBjb25z
dAogewogICAgIC8vIFNraXAgcGx1Z2luIGZpbGVzIHRoYXQgYXJlIGRpc2FibGVkIGJ5IGZpbGVu
YW1lLgotICAgIGlmIChtX2Rpc2FibGVkUGx1Z2luRmlsZXMuY29udGFpbnMocGF0aEdldEZpbGVO
YW1lKGZpbGVQYXRoKSkpCisgICAgaWYgKG1fZGlzYWJsZWRQbHVnaW5GaWxlcy5jb250YWlucyhG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoZmlsZVBhdGgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmV0dXJuIGZpbGVFeGlzdHMoZmlsZVBhdGgpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKTsKIH0KIAogdm9pZCBQbHVnaW5EYXRhYmFzZTo6
Z2V0RGVsZXRlZFBsdWdpbnMoUGx1Z2luU2V0JiBwbHVnaW5zKSBjb25zdApAQCAtMzgyLDcgKzM4
Miw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0
b3JpZXMoKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwogCi0gICAgU3RyaW5nIHVzZXJQ
bHVnaW5QYXRoID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKKyAgICBTdHJpbmcgdXNlclBsdWdpblBh
dGggPSBGaWxlU3lzdGVtOjpob21lRGlyZWN0b3J5UGF0aCgpOwogICAgIHVzZXJQbHVnaW5QYXRo
LmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRpb24gRGF0YVxcTW96aWxsYVxccGx1Z2lucyIpKTsK
ICAgICBwYXRocy5hcHBlbmQodXNlclBsdWdpblBhdGgpOwogCkBAIC0zOTEsNyArMzkxLDcgQEAg
VmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3Rvcmllcygp
CiAKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmlzUHJlZmVycmVkUGx1Z2luRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBTdHJpbmcgcHJlZmVycmVkUGF0aCA9IGhvbWVEaXJlY3Rv
cnlQYXRoKCk7CisgICAgU3RyaW5nIHByZWZlcnJlZFBhdGggPSBGaWxlU3lzdGVtOjpob21lRGly
ZWN0b3J5UGF0aCgpOwogCiAgICAgcHJlZmVycmVkUGF0aC5hcHBlbmQoU3RyaW5nKCJcXEFwcGxp
Y2F0aW9uIERhdGFcXE1vemlsbGFcXHBsdWdpbnMiKSk7CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2
b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxT
dHJpbmc+JiBwYXRocykgY29uc3QKIAogICAgIGF1dG8gZGlyc0VuZCA9IG1fcGx1Z2luRGlyZWN0
b3JpZXMuZW5kKCk7CiAgICAgZm9yIChhdXRvIGRJdCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVn
aW4oKTsgZEl0ICE9IGRpcnNFbmQ7ICsrZEl0KSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHBs
dWdpblBhdGhzID0gbGlzdERpcmVjdG9yeSgqZEl0LCBmaWxlTmFtZUZpbHRlcik7CisgICAgICAg
IFZlY3RvcjxTdHJpbmc+IHBsdWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSgq
ZEl0LCBmaWxlTmFtZUZpbHRlcik7CiAgICAgICAgIGF1dG8gcGx1Z2luc0VuZCA9IHBsdWdpblBh
dGhzLmVuZCgpOwogICAgICAgICBmb3IgKGF1dG8gcEl0ID0gcGx1Z2luUGF0aHMuYmVnaW4oKTsg
cEl0ICE9IHBsdWdpbnNFbmQ7ICsrcEl0KSB7CiAgICAgICAgICAgICBpZiAoIWZpbGVFeGlzdHNB
bmRJc05vdERpc2FibGVkKCpwSXQpKQpAQCAtNDIzLDE0ICs0MjMsMTQgQEAgdm9pZCBQbHVnaW5E
YXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVjdG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0
aHMpIGNvbnN0CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQog
Ci1zdGF0aWMgdm9pZCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKFBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGZpbGxCdWZmZXJX
aXRoQ29udGVudHNPZkZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIFZl
Y3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIHNpemVfdCBidWZmZXJTaXplID0gMDsKICAgICBz
aXplX3QgYnVmZmVyQ2FwYWNpdHkgPSAxMDI0OwogICAgIGJ1ZmZlci5yZXNpemUoYnVmZmVyQ2Fw
YWNpdHkpOwogCiAgICAgZG8gewotICAgICAgICBidWZmZXJTaXplICs9IHJlYWRGcm9tRmlsZShm
aWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZSwgYnVmZmVyQ2FwYWNpdHkgLSBidWZmZXJT
aXplKTsKKyAgICAgICAgYnVmZmVyU2l6ZSArPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmls
ZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclNpemUsIGJ1ZmZlckNhcGFjaXR5IC0gYnVmZmVyU2l6
ZSk7CiAgICAgICAgIGlmIChidWZmZXJTaXplID09IGJ1ZmZlckNhcGFjaXR5KSB7CiAgICAgICAg
ICAgICBpZiAoYnVmZmVyQ2FwYWNpdHkgPCBtYXhpbXVtUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRh
Q2FjaGVTaXplKSB7CiAgICAgICAgICAgICAgICAgYnVmZmVyQ2FwYWNpdHkgKj0gMjsKQEAgLTQ3
OCwxMSArNDc4LDExIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRh
dGFDYWNoZSgpCiAgICAgaWYgKCFpc1BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlRW5hYmxlZCgpIHx8
IHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAgU3RyaW5nIGFic29sdXRlQ2Fj
aGVQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hl
UGF0aCgpLCBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lKTsKLSAgICBmaWxl
ID0gb3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIE9wZW5Gb3JSZWFkKTsKKyAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFk
YXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwor
ICAgIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5
c3RlbTo6T3BlbkZvclJlYWQpOwogCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGZpbGUpKQorICAg
IGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmaWxlKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gTWFyayBjYWNoZSBhcyBsb2FkZWQgcmVnYXJkbGVzcyBvZiBzdWNjZXNzIG9yIGZh
aWx1cmUuIElmCkBAIC00OTEsMTEgKzQ5MSwxMSBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2Fk
UGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogCiAgICAgVmVjdG9yPGNoYXI+IGZpbGVDb250ZW50
czsKICAgICBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKGZpbGUsIGZpbGVDb250ZW50cyk7
Ci0gICAgY2xvc2VGaWxlKGZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
IAogICAgIGlmIChmaWxlQ29udGVudHMuc2l6ZSgpIDwgMiB8fCBmaWxlQ29udGVudHMuZmlyc3Qo
KSAhPSBzY2hlbWFWZXJzaW9uIHx8IGZpbGVDb250ZW50cy5sYXN0KCkgIT0gJ1wwJykgewogICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byByZWFkIHBsdWdpbiBtZXRhZGF0YSBjYWNoZTogY29y
cnVwdCBzY2hlbWEiKTsKLSAgICAgICAgZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC01MTgsMTMgKzUxOCwxMyBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogICAgICAgICAgICAgICAmJiByZWFk
VVRGOFN0cmluZyhkZXNjLCBidWZmZXJQb3MsIGVuZCkKICAgICAgICAgICAgICAgJiYgcmVhZFVU
RjhTdHJpbmcobWltZURlc2MsIGJ1ZmZlclBvcywgZW5kKSkpIHsKICAgICAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIHJlYWQgcGx1Z2luIG1ldGFkYXRhIGNhY2hlOiBjb3JydXB0IGRhdGEi
KTsKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOworICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTa2lwIG1ldGFkYXRhIHRoYXQgcG9p
bnRzIHRvIHBsdWdpbnMgZnJvbSBkaXJlY3RvcmllcyB0aGF0CiAgICAgICAgIC8vIGFyZSBub3Qg
cGFydCBvZiBwbHVnaW4gZGlyZWN0b3J5IGxpc3QgYW55bW9yZS4KLSAgICAgICAgU3RyaW5nIHBs
dWdpbkRpcmVjdG9yeU5hbWUgPSBkaXJlY3RvcnlOYW1lKHBhdGgpOworICAgICAgICBTdHJpbmcg
cGx1Z2luRGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7CiAg
ICAgICAgIGlmIChtX3BsdWdpbkRpcmVjdG9yaWVzLmZpbmQocGx1Z2luRGlyZWN0b3J5TmFtZSkg
PT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC01NDEsMTYgKzU0
MSwxNiBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUo
KQogICAgIG1fcGx1Z2luUGF0aHNXaXRoVGltZXMuc3dhcChjYWNoZWRQbHVnaW5QYXRoc1dpdGhU
aW1lcyk7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlVVRGOFN0cmluZyhQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGF0aWMgYm9vbCB3cml0ZVVURjhTdHJp
bmcoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewogICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHN0cmluZy51dGY4KCk7CiAgICAgaW50
IGxlbmd0aCA9IHV0ZjhTdHJpbmcubGVuZ3RoKCkgKyAxOwotICAgIHJldHVybiB3cml0ZVRvRmls
ZShmaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgbGVuZ3RoKSA9PSBsZW5ndGg7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCBsZW5ndGgp
ID09IGxlbmd0aDsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVUaW1lKFBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlLCBjb25zdCB0aW1lX3QmIHRpbWUpCitzdGF0aWMgYm9vbCB3cml0ZVRpbWUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IHRpbWVfdCYgdGltZSkKIHsKLSAg
ICByZXR1cm4gd3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
JnRpbWUpLCBzaXplb2YodGltZV90KSkgPT0gc2l6ZW9mKHRpbWVfdCk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KCZ0aW1lKSwgc2l6ZW9mKHRpbWVfdCkpID09IHNpemVvZih0aW1lX3QpOwogfQogCiB2b2lkIFBs
dWdpbkRhdGFiYXNlOjp1cGRhdGVQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCkBAIC01NTgsMjYg
KzU1OCwyNiBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjp1cGRhdGVQZXJzaXN0ZW50TWV0YWRhdGFD
YWNoZSgpCiAgICAgaWYgKCFpc1BlcnNpc3RlbnRNZXRhZGF0YUNhY2hlRW5hYmxlZCgpIHx8IHBl
cnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbWFrZUFsbERpcmVjdG9yaWVzKHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpKTsK
LSAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNh
Y2hlRmlsZW5hbWUpOwotICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOworICAgIEZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgo
KSk7CisgICAgU3RyaW5nIGFic29sdXRlQ2FjaGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLCBwZXJzaXN0ZW50
UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGFic29sdXRlQ2FjaGVQYXRoKTsKIAogICAgIGlmIChtX3BsdWdpbnMuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKLSAgICBmaWxlID0g
b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7CisgICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5G
aWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogCi0gICAg
aWYgKCFpc0hhbmRsZVZhbGlkKGZpbGUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIG9wZW4gcGx1Z2lu
IG1ldGFkYXRhIGNhY2hlIGZvciBzYXZpbmciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGNoYXIgbG9jYWxTY2hlbWFWZXJzaW9uID0gc2NoZW1hVmVyc2lvbjsKLSAgICBpZiAod3Jp
dGVUb0ZpbGUoZmlsZSwgJmxvY2FsU2NoZW1hVmVyc2lvbiwgMSkgIT0gMSkgeworICAgIGlmIChG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCAmbG9jYWxTY2hlbWFWZXJzaW9uLCAxKSAhPSAx
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHdyaXRlIHBsdWdpbiBtZXRhZGF0YSBj
YWNoZSBzY2hlbWEiKTsKLSAgICAgICAgY2xvc2VGaWxlKGZpbGUpOwotICAgICAgICBkZWxldGVG
aWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZp
bGUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTg5LDEzICs1ODksMTMgQEAgdm9pZCBQbHVn
aW5EYXRhYmFzZTo6dXBkYXRlUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogICAgICAgICAgICAg
ICAmJiB3cml0ZVVURjhTdHJpbmcoZmlsZSwgKCppdCktPmRlc2NyaXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICYmIHdyaXRlVVRGOFN0cmluZyhmaWxlLCAoKml0KS0+ZnVsbE1JTUVEZXNjcmlwdGlv
bigpKSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHdyaXRlIHBsdWdpbiBt
ZXRhZGF0YSB0byBjYWNoZSIpOwotICAgICAgICAgICAgY2xvc2VGaWxlKGZpbGUpOwotICAgICAg
ICAgICAgZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KIAotICAgIGNsb3NlRmlsZShmaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZSk7CiB9CiAKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmlzUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVF
bmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luUGFja2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBh
Y2thZ2UuY3BwCmluZGV4IDdkZGUyY2IwMjc3Li42YWZmNTFkMDY5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCkBAIC0xMjEsNyAr
MTIxLDcgQEAgUGx1Z2luUGFja2FnZTo6UGx1Z2luUGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IHRpbWVfdCYgbGFzdE1vZGlmaWVkKQogICAgICwgbV9pbmZvSXNGcm9tQ2FjaGUodHJ1
ZSkKICNlbmRpZgogewotICAgIG1fZmlsZU5hbWUgPSBwYXRoR2V0RmlsZU5hbWUobV9wYXRoKTsK
KyAgICBtX2ZpbGVOYW1lID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fcGF0aCk7CiAg
ICAgbV9wYXJlbnREaXJlY3RvcnkgPSBtX3BhdGgubGVmdChtX3BhdGgubGVuZ3RoKCkgLSBtX2Zp
bGVOYW1lLmxlbmd0aCgpIC0gMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAppbmRleCAxMzg3ZmFiYjAxMC4uYzY5ZTFlOTAxODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5j
cHAKQEAgLTY1LDcgKzY1LDcgQEAgUGx1Z2luU3RyZWFtOjpQbHVnaW5TdHJlYW0oUGx1Z2luU3Ry
ZWFtQ2xpZW50KiBjbGllbnQsIEZyYW1lKiBmcmFtZSwgY29uc3QgUmVzb3UKICAgICAsIG1fc3Ry
ZWFtU3RhdGUoU3RyZWFtQmVmb3JlU3RhcnRlZCkKICAgICAsIG1fbG9hZE1hbnVhbGx5KGZhbHNl
KQogICAgICwgbV9kZWxheURlbGl2ZXJ5VGltZXIoKnRoaXMsICZQbHVnaW5TdHJlYW06OmRlbGF5
RGVsaXZlcnlUaW1lckZpcmVkKQotICAgICwgbV90ZW1wRmlsZUhhbmRsZShpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQorICAgICwgbV90ZW1wRmlsZUhhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICwgbV9wbHVnaW5GdW5jcyhwbHVnaW5GdW5jcykKICAg
ICAsIG1faW5zdGFuY2UoaW5zdGFuY2UpCiAgICAgLCBtX3F1aXJrcyhxdWlya3MpCkBAIC0yMTIs
MTAgKzIxMiwxMCBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oKQogICAgIGlmICht
X3RyYW5zZmVyTW9kZSA9PSBOUF9OT1JNQUwpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGF0
aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJXS1AiLCBtX3RlbXBGaWxlSGFuZGxlKTsKKyAgICBtX3Bh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiV0tQIiwgbV90ZW1wRmlsZUhhbmRs
ZSk7CiAKICAgICAvLyBTb21ldGhpbmcgd2VudCB3cm9uZywgY2FuY2VsIGxvYWRpbmcgdGhlIHN0
cmVhbQotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkKKyAgICBpZiAo
IUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV90ZW1wRmlsZUhhbmRsZSkpCiAgICAgICAgIGNh
bmNlbEFuZERlc3Ryb3lTdHJlYW0oTlBSRVNfTkVUV09SS19FUlIpOwogfQogCkBAIC0yNTQsNyAr
MjU0LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRlc3Ryb3lTdHJlYW0oKQogICAgIEFTU0VSVCht
X3JlYXNvbiAhPSBXZWJSZWFzb25Ob25lKTsKICAgICBBU1NFUlQoIW1fZGVsaXZlcnlEYXRhIHx8
IG1fZGVsaXZlcnlEYXRhLT5zaXplKCkgPT0gMCk7CiAKLSAgICBjbG9zZUZpbGUobV90ZW1wRmls
ZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fdGVtcEZpbGVIYW5kbGUpOwog
CiAgICAgYm9vbCBuZXdTdHJlYW1DYWxsZWQgPSBtX3N0cmVhbS5uZGF0YTsKIApAQCAtMzE5LDcg
KzMxOSw3IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpkZXN0cm95U3RyZWFtKCkKICAgICAgICAgbV9j
bGllbnQtPnN0cmVhbURpZEZpbmlzaExvYWRpbmcodGhpcyk7CiAKICAgICBpZiAoIW1fcGF0aC5p
c051bGwoKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX3BhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fcGF0aCk7CiB9CiAKIHZvaWQgUGx1Z2luU3RyZWFtOjpkZWxheURlbGl2
ZXJ5VGltZXJGaXJlZCgpCkBAIC00NDAsOCArNDQwLDggQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRp
ZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNo
YXIKICAgICAgICAgZGVsaXZlckRhdGEoKTsKICAgICB9CiAKLSAgICBpZiAobV9zdHJlYW1TdGF0
ZSAhPSBTdHJlYW1TdG9wcGVkICYmIGlzSGFuZGxlVmFsaWQobV90ZW1wRmlsZUhhbmRsZSkpIHsK
LSAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlVG9GaWxlKG1fdGVtcEZpbGVIYW5kbGUs
IGRhdGEsIGxlbmd0aCk7CisgICAgaWYgKG1fc3RyZWFtU3RhdGUgIT0gU3RyZWFtU3RvcHBlZCAm
JiBGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKSB7CisgICAgICAg
IGludCBieXRlc1dyaXR0ZW4gPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX3RlbXBGaWxlSGFu
ZGxlLCBkYXRhLCBsZW5ndGgpOwogICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IGxlbmd0aCkK
ICAgICAgICAgICAgIGNhbmNlbEFuZERlc3Ryb3lTdHJlYW0oTlBSRVNfTkVUV09SS19FUlIpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
U3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5o
CmluZGV4IDNiNmM3MTA1ZjEwLi4xZTVhZjMwZWUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oCkBAIC0xMDUsNyArMTA1LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IG1f
ZGVsaXZlcnlEYXRhOwogCi0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBGaWxlSGFu
ZGxlOworICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV90ZW1wRmlsZUhh
bmRsZTsKIAogICAgICAgICBjb25zdCBOUFBsdWdpbkZ1bmNzKiBtX3BsdWdpbkZ1bmNzOwogICAg
ICAgICBOUFAgbV9pbnN0YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBw
bGljYXRpb25DYWNoZS5jcHAKaW5kZXggZGNkNTRhOGI5MzIuLjFlYTkwMTc4YWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNjYs
NyArNjYsNyBAQCBXZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVh
dGVJbnN0YW5jZSgpCiAKIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogewot
ICAgIFN0cmluZyBwYXRoID0gbG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7Cisg
ICAgU3RyaW5nIHBhdGggPSBGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKIAogI2lmIFVTRShDRikKICAgICBhdXRvIGNhY2hlRGlyZWN0b3J5UHJlZmVyZW5j
ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVm
YXVsdHNLZXksIFdlYlByZWZlcmVuY2VzOjphcHBsaWNhdGlvbklkKCkpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDljNDZmNGIyMjQ3
Li5mYjU0NDA4MDIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGRhdGFi
YXNlc0RpcmVjdG9yeSgpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
ZGlyZWN0b3J5UHJlZi5nZXQoKSk7CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CiB9CiAKIHZvaWQgV2ViS2l0
SW5pdGlhbGl6ZVdlYkRhdGFiYXNlc0lmTmVjZXNzYXJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCmluZGV4IDE2MGU5YmJjNWIxLi44NzMyNzc4ZDlkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCkBAIC0yMTYs
NyArMjE2LDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAgICAgICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAgICAgICAgIGlmIChzdWdnZXN0
ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IHBh
dGhHZXRGaWxlTmFtZShyZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICBzdWdn
ZXN0ZWRGaWxlbmFtZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShyZXNwb25zZS51cmwo
KS5zdHJpbmcoKSk7CiAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzKHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICAgICAgQlN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZUJTVFIoc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgICAgICBtX2RlbGVnYXRlLT5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSh0aGlzLCBzdWdnZXN0ZWRGaWxlbmFt
ZUJTVFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5j
ZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4
IGY0NDYxYjZlZjE4Li5mMTE1MGVlNzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlByZWZlcmVuY2VzLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBzdGQ6Om51bWVyaWNfbGlt
aXRzOwogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBvbGRQcmVmZXJlbmNlc1BhdGgoKQogewotICAg
IHN0YXRpYyBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb2FtaW5nVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5jZXMucGxpc3QiKTsK
KyAgICBzdGF0aWMgU3RyaW5nIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoRmlsZVN5c3RlbTo6cm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
IldlYktpdFByZWZlcmVuY2VzLnBsaXN0Iik7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKQEAgLTUx
Niw3ICs1MTYsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjptaWdyYXRlV2ViS2l0UHJlZmVyZW5j
ZXNUb0NGUHJlZmVyZW5jZXMoKQogCiAgICAgY29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZl
cmVuY2VzKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4ocGxpc3QuZ2V0KCkpKTsKIAotICAg
IGRlbGV0ZUZpbGUob2xkUHJlZmVyZW5jZXNQYXRoKCkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUob2xkUHJlZmVyZW5jZXNQYXRoKCkpOwogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpj
b3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDM5ZTQzOGMzNjBkLi4wOTRiNjUw
MzZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTUwNyw3ICs1MDcsNyBA
QCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQog
ICAgICAgICBpZiAocHJlZmVyZW5jZSAmJiAoQ0ZTdHJpbmdHZXRUeXBlSUQoKSA9PSBDRkdldFR5
cGVJRChwcmVmZXJlbmNlLmdldCgpKSkpCiAgICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5
ID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4ocHJlZmVyZW5jZS5sZWFrUmVmKCkp
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNv
cmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7
CisgICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAg
ICB9CiAgICAgY2FjaGVEaXJlY3RvcnkgPSBTdHJpbmcoY2Z1cmxDYWNoZURpcmVjdG9yeS5nZXQo
KSk7CiAgICAgQ0ZJbmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2OWZhYzhlMGMxYi4uMWQwNDlh
ZTk4NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJl
aWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmls
ZVN5c3RlbS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
OgorCiAyMDE3LTEwLTMwICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXSBGaXggYnVpbGQgd2FybmluZ3MKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGZkZTFmZTEwMzgwLi4wYjU5ZWExNzM4
MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0y
MjEsNyArMjIxLDcgQEAgc3RhdGljIFN0cmluZyBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVl
KCkKICAgICAgICAgcmV0dXJuIFN0cmluZyAocGF0aC5kYXRhKCksIHBhdGgubGVuZ3RoKCkpOwog
ICAgIH0KIAotICAgIHJldHVybiBXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJl
Y3RvcnkoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCk7CiB9CiAjZW5kaWYKIApAQCAtOTEyLDcgKzkxMiw3IEBAIHN0
YXRpYyB2b2lkIHNldENhY2hlRm9sZGVyKCkKIAogICAgIENPTVB0cjxJV2ViQ2FjaGU+IHdlYkNh
Y2hlOwogICAgIGlmIChTVUNDRUVERUQoV2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViQ2Fj
aGUsIDAsIElJRF9JV2ViQ2FjaGUsICh2b2lkKiopJndlYkNhY2hlKSkpIHsKLSAgICAgICAgX2Jz
dHJfdCBjYWNoZUZvbGRlciA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJy
YXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS51dGY4KCkuZGF0YSgpOworICAgICAgICBfYnN0cl90IGNh
Y2hlRm9sZGVyID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLnV0ZjgoKS5kYXRhKCk7CiAgICAgICAgIHdlYkNh
Y2hlLT5zZXRDYWNoZUZvbGRlcihjYWNoZUZvbGRlcik7CiAgICAgfQogfQpAQCAtOTI5LDkgKzky
OSw5IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGlu
ZygpCiAgICAgU3RyaW5nIGxpYnJhcnlQYXRoID0gbGlicmFyeVBhdGhGb3JEdW1wUmVuZGVyVHJl
ZSgpOwogCiAgICAgLy8gU2V0IHVwIHRoZXNlIHZhbHVlcyBiZWZvcmUgY3JlYXRpbmcgdGhlIFdl
YlZpZXcgc28gdGhhdCB0aGUgdmFyaW91cyBpbml0aWFsaXphdGlvbnMgd2lsbCBzZWUgdGhlc2Ug
cHJlZmVycmVkIHZhbHVlcy4KLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJh
c2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGxpYnJhcnlQYXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQu
Z2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5
RGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0
aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsK
LSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5
LCBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENh
Y2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENGUHJlZmVy
ZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRh
YmFzZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVm
ZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9j
YWxTdG9yYWdlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOworICAgIENG
UHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxv
Y2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CiAjZW5kaWYK
IH0KIApAQCAtMTAzMSw3ICsxMDMxLDcgQEAgc3RhdGljIHZvaWQgc2l6ZVdlYlZpZXdGb3JDdXJy
ZW50VGVzdCgpCiAKIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBw
YXRoT3JVcmwpCiB7Ci0gICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OmRp
cmVjdG9yeU5hbWUocGF0aE9yVXJsKTsKKyAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwpOwogCiAgICAgd2No
YXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwogICAgIGlmICghX3dmdWxscGF0aChmdWxsUGF0aCwg
cGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
LCBfTUFYX1BBVEgpKQpAQCAtMTA1MCwyMCArMTA1MCwyMCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRG
b250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAogICAgIFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2suc3Vic3RyaW5n
KGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKLSAgICBTdHJpbmcgcG9zc2li
bGVQYXRoVG9Mb2d1ZSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9D
aGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAi
cGxhdGZvcm1cXHdpbiIpOworICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0
cmluZygwLCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxc
d2luIik7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwb3NzaWJsZVBhdGhzOwotICAgIHBvc3NpYmxl
UGF0aHMuYXBwZW5kKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBh
dGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9n
dWUsIHBhdGhUb1Rlc3QpKTsKIAogICAgIHNpemVfdCBuZXh0Q2FuZGlkYXRlRW5kID0gcGF0aFRv
VGVzdC5yZXZlcnNlRmluZCgnXFwnKTsKICAgICB3aGlsZSAobmV4dENhbmRpZGF0ZUVuZCAmJiBu
ZXh0Q2FuZGlkYXRlRW5kICE9IFdURjo6bm90Rm91bmQpIHsKICAgICAgICAgcGF0aFRvVGVzdCA9
IHBhdGhUb1Rlc3Quc3Vic3RyaW5nKDAsIG5leHRDYW5kaWRhdGVFbmQpOwotICAgICAgICBwb3Nz
aWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2li
bGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOworICAgICAgICBwb3NzaWJsZVBhdGhzLmFwcGVu
ZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQ
YXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogICAgICAgICBuZXh0Q2FuZGlkYXRlRW5kID0gcGF0
aFRvVGVzdC5yZXZlcnNlRmluZCgnXFwnKTsKICAgICB9CiAKICAgICBmb3IgKFZlY3RvcjxTdHJp
bmc+OjppdGVyYXRvciBwb3MgPSBwb3NzaWJsZVBhdGhzLmJlZ2luKCk7IHBvcyAhPSBwb3NzaWJs
ZVBhdGhzLmVuZCgpOyArK3BvcykgewotICAgICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIik7IAorICAg
ICAgICBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoKnBvcywgInJlc291cmNlc1xcIik7CiAKICAgICAgICAgaWYgKDo6UGF0
aElzRGlyZWN0b3J5VyhwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWlu
YXRpb24oKS5kYXRhKCkpKQogICAgICAgICAgICAgcmV0dXJuIHBhdGhUb0ZvbnRGYWxsYmFjazsK
QEAgLTEwNzcsNyArMTA3Nyw3IEBAIHN0YXRpYyB2b2lkIGFkZEZvbnRGYWxsYmFja0lmUHJlc2Vu
dChjb25zdCBTdHJpbmcmIGZvbnRGYWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1Bh
dGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNr
ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJN
YWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJh
Y2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZh
bGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBp
ZiAoITo6UGF0aEZpbGVFeGlzdHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTEwOTAsNyArMTA5MCw3IEBA
IHN0YXRpYyB2b2lkIHJlbW92ZUZvbnRGYWxsYmFja0lmUHJlc2VudChjb25zdCBTdHJpbmcmIGZv
bnRGYWxsYmFja1BhdGgpCiAgICAgaWYgKGZvbnRGYWxsYmFja1BhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250
LWZhbGxiYWNrLmNzcyIpOworICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1j
b21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CiAKICAgICBpZiAoITo6UGF0aEZpbGVFeGlz
dHNXKGZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkp
CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZU1vbml0b3IuY3BwCmluZGV4IGZiY2M2MjNmYmZjLi4yNTI3NDRiNDIxZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBA
IC01NSwxOSArNTUsMTkgQEAgcHVibGljOgogICAgICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFp
blJ1bkxvb3AoKTsKICAgICAgICAgCiAgICAgICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUKLSAgICAg
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgQVNTRVJU
X05FKGhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Cisg
ICAgICAgIEFTU0VSVF9ORShoYW5kbGUsIEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpOwogICAgICAgICAKLSAgICAgICAgaW50IHJjID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBG
aWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEubGVu
Z3RoKCkpOworICAgICAgICBpbnQgcmMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5s
ZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogICAgICAgICAKLSAgICAgICAg
Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwogICAgIH0KICAgICAKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIGRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0
ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQpAQCAtMTE0LDE5ICsxMTQs
MTkgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIGNvbnN0ZXhwciBpbnQgYnVmZmVyU2l6ZSA9IDEwMjQ7CiAKLSAgICBhdXRvIHNv
dXJjZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoc291cmNlKSkKKyAgICBhdXRvIHNvdXJjZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgs
IEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQoc291cmNlKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJp
bmdCdWZmZXI8TENoYXI+IGJ1ZmZlcihidWZmZXJTaXplKTsKIAogICAgIGF1dG8gZmlsZUNsb3Nl
ciA9IFdURjo6bWFrZVNjb3BlRXhpdChbc291cmNlXSgpIHsKLSAgICAgICAgUGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBzb3VyY2U7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgIH0pOwogCiAgICAgLy8gU2lu
Y2Ugd2UgY29udHJvbCB0aGUgdGVzdCBmaWxlcywgd2Uga25vdyB3ZSBvbmx5IG5lZWQgb25lIHJl
YWQKLSAgICBpbnQgcmVhZEJ5dGVzID0gcmVhZEZyb21GaWxlKHNvdXJjZSwgcmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oYnVmZmVyLmNoYXJhY3RlcnMoKSksIGJ1ZmZlclNpemUpOworICAgIGludCBy
ZWFkQnl0ZXMgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoc291cmNlLCByZWludGVycHJldF9j
YXN0PGNoYXIqPihidWZmZXIuY2hhcmFjdGVycygpKSwgYnVmZmVyU2l6ZSk7CiAgICAgaWYgKHJl
YWRCeXRlcyA8IDApCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCkBAIC0xNDIsNyAr
MTQyLDcgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQogCiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2UpCiB7Ci0gICAgRVhQ
RUNUX1RSVUUoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAogICAgIFJ1bkxvb3A6Omlu
aXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC0xODQsNyArMTg0LDcgQEAgVEVTVF9GKEZpbGVN
b25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlKQogCiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRl
Y3RNdWx0aXBsZUNoYW5nZXMpCiB7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyh0ZW1wRmls
ZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZp
bGVQYXRoKCkpKTsKIAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBA
IC0yNDQsNyArMjQ0LDcgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0ZWN0TXVsdGlwbGVD
aGFuZ2VzKQogCiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGlvbikKIHsKLSAg
ICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTI4Myw3ICsyODMsNyBAQCBURVNUX0Yo
RmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGlvbikKIAogVEVTVF9GKEZpbGVNb25pdG9yVGVz
dCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhp
c3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CiAKQEAgLTM0MCw3ICszNDAsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRl
Y3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogCiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RE
ZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlz
dHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxv
b3AoKTsKIApAQCAtMzc3LDEyICszNzcsMTIgQEAgVEVTVF9GKEZpbGVNb25pdG9yVGVzdCwgRGV0
ZWN0RGVsZXRlQnV0Tm90U3Vic2VxdWVudENoYW5nZSkKICAgICByZXNldFRlc3RTdGF0ZSgpOwog
CiAgICAgdGVzdFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7Ci0gICAgICAgIEVY
UEVDVF9GQUxTRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKLSAgICAgICAg
YXV0byBoYW5kbGUgPSBvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgT3BlbkZvcldyaXRlKTsKLSAg
ICAgICAgQVNTRVJUX05FKGhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
ICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUodGVtcEZpbGVQYXRoKCksIEZp
bGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIEFTU0VSVF9ORShoYW5kbGUsIEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogCi0gICAgICAgIGludCByYyA9IHdy
aXRlVG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBGaWxl
TW9uaXRvclRlc3REYXRhLmxlbmd0aCgpKTsKKyAgICAgICAgaW50IHJjID0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZp
bGVNb25pdG9yVGVzdERhdGEubGVuZ3RoKCkpOwogICAgICAgICBBU1NFUlRfTkUocmMsIC0xKTsK
IAogICAgICAgICBhdXRvIGZpcnN0Q29tbWFuZCA9IGNyZWF0ZUNvbW1hbmQodGVtcEZpbGVQYXRo
KCksIEZpbGVNb25pdG9yUmV2aXNlZERhdGEpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDdmNmY5NzQ5OGQxLi5mMjU4NjY5NDYw
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0
ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVt
LmNwcApAQCAtNDYsMzUgKzQ2LDM1IEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjppbml0aWFsaXpl
TWFpblRocmVhZCgpOwogICAgICAgICAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAg
ICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICB3cml0
ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0
RGF0YSkpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0
cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGhhbmRsZSk7CiAKICAgICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRoID0gbV90ZW1wRmlsZVBh
dGggKyAiLXN5bWxpbmsiOwotICAgICAgICBjcmVhdGVTeW1ib2xpY0xpbmsobV90ZW1wRmlsZVBh
dGgsIG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5
bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKIAotICAg
ICAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRl
c3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1f
dGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVt
cHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKIAotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFy
eUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxl
KGhhbmRsZSk7CisgICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX2JhbmdDb250
YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUi
LCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9iYW5nQ29u
dGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1w
dHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CiAKLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5UZW1wb3Jh
cnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZp
bGUoaGFuZGxlKTsKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9CiAKICAgICB2b2lk
IFRlYXJEb3duKCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV90ZW1wRmls
ZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7Ci0gICAg
ICAgIGRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUo
bV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9iYW5nQ29u
dGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0Zp
bGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBh
dGgpOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQYXRoKCkgeyByZXR1cm4g
bV90ZW1wRmlsZVBhdGg7IH0KQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIFRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQogewogICAgIGJvb2wgc3VjY2VzczsKLSAg
ICBNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxl
IiksIHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVE
YXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX0ZB
TFNFKHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9CkBAIC0x
MDQsNyArMTA0LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlzc2luZ0ZpbGUp
CiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCiB7CiAgICAgYm9v
bCBzdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0
aCgpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxl
RGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7
CiAgICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7CiAgICAgRVhQRUNUX1RSVUUobWFw
cGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKQEAgLTEx
NCwyNiArMTE0LDI2IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRmls
ZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQogewog
ICAgIGJvb2wgc3VjY2VzczsKLSAgICBNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1w
RW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKICAgICBFWFBF
Q1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwogfQog
CiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCiB7Ci0gICAgRVhQ
RUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWlu
aW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVzSGF2ZVNhbWVWb2x1bWUoc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAg
RVhQRUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCks
IHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlc0hhdmVTYW1lVm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxl
UGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVt
ZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpLCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250
YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOwogfQogCiBURVNU
X0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmspCiB7Ci0gICAgYXV0byBz
eW1saW5rTWV0YWRhdGEgPSBmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAg
ICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmls
ZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNfdmFs
dWUoKSk7CiAgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBG
aWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRp
Y19jYXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSA9PSBzdHJsZW4o
RmlsZVN5c3RlbVRlc3REYXRhKSk7CiAKLSAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gZmlsZU1l
dGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBhdXRv
IHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlu
a3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0
YS5oYXNfdmFsdWUoKSk7CiAgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50
eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CiAgICAgRVhQRUNUX0VRKHN0cmxlbihG
aWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZh
bHVlKCkubGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAzMmNlMzYxOGRlNS4uYjkyODMyNGYzNTkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luLmNwcApAQCAtNDEsMjYgKzQxLDI2IEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOwogCiAgICAgICAgIC8vIGNyZWF0ZSB0ZW1wIGZpbGUKLSAgICAgICAg
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxl
KGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7
CisgICAgICAgIG1fdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IG9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAg
IGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIAot
ICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsK
KyAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIAotICAgICAgICBtX3F1b3RlQ29udGFp
bmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSIs
IGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX3F1b3RlQ29u
dGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVt
cHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwogICAgIH0KIAogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsKLSAg
ICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9z
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9iYW5nQ29udGFp
bmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRo
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoKTsKICAgICB9CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJl
dHVybiBtX3RlbXBGaWxlUGF0aDsgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCmluZGV4IGEyOTdhNTViODMzLi44ZmUz
NTY3YzFlMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlclRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmNwcApAQCAtMzgsMTkgKzM4LDE5IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyVGVzdDo6U2V0VXAoKQogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAogICAg
IC8vIGNyZWF0ZSB0ZW1wIGZpbGUKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAg
IG1fdGVtcEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRs
ZSk7Ci0gICAgd3JpdGVUb0ZpbGUoaGFuZGxlLCB0ZXN0RGF0YSgpLCBzdHJsZW4odGVzdERhdGEo
KSkpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGU7CisgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShoYW5kbGUsIHRlc3REYXRhKCksIHN0cmxlbih0ZXN0RGF0YSgpKSk7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0g
b3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICBjbG9z
ZUZpbGUoaGFuZGxlKTsKKyAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIH0KIAogdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpUZWFy
RG93bigpCiB7Ci0gICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Ci0gICAgZGVsZXRlRmls
ZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVt
cEZpbGVQYXRoKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBh
dGgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNr
ZXJUZXN0Lm1tCmluZGV4IGEyMGIzODMxNTY2Li4yZTJjMzk0NzhlNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3Qu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNl
VHJhY2tlclRlc3QubW0KQEAgLTQwLDIxICs0MCwyMSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KQog
ewotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgU3RyaW5nIGRhdGFiYXNlRmls
ZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5RGF0YWJhc2UiLCBoYW5kbGUpOwot
ICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGU7CisgICAgU3RyaW5nIGRhdGFiYXNlRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5RGF0YWJhc2UiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCiAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgIGdl
dEZpbGVTaXplKGRhdGFiYXNlRmlsZVBhdGgsIGZpbGVTaXplKTsKKyAgICBGaWxlU3lzdGVtOjpn
ZXRGaWxlU2l6ZShkYXRhYmFzZUZpbGVQYXRoLCBmaWxlU2l6ZSk7CiAgICAgRVhQRUNUX0VRKDAs
IGZpbGVTaXplKTsKIAogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0
YWJhc2VGaWxlSWZFbXB0eShkYXRhYmFzZUZpbGVQYXRoKSk7CiAKLSAgICBib29sIGZpbGVTdGls
bEV4aXN0cyA9IGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlUGF0aCk7CisgICAgYm9vbCBmaWxlU3Rp
bGxFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRmlsZVBhdGgpOwogICAg
IEVYUEVDVF9GQUxTRShmaWxlU3RpbGxFeGlzdHMpOwogCiAgICAgaWYgKGZpbGVTdGlsbEV4aXN0
cykKLSAgICAgICAgZGVsZXRlRmlsZShkYXRhYmFzZUZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShkYXRhYmFzZUZpbGVQYXRoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPUykKQEAgLTc4LDE5ICs3OCwxOSBAQCBzdGF0aWMgdm9pZCBhZGRUb0RhdGFiYXNlc1Rh
YmxlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoLCBjb25zdCBTZWN1cml0eU9yaWdpbgogCiBz
dGF0aWMgdm9pZCByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeVBhdGgpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBmaWxlIDogbGlzdERpcmVjdG9y
eShkaXJlY3RvcnlQYXRoLCAiKiIpKQotICAgICAgICBFWFBFQ1RfVFJVRShkZWxldGVGaWxlKGZp
bGUpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZpbGUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGgsICIqIikpCisgICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoZmlsZSkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkp
Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgp
KTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKKyAgICAg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5
UGF0aCkpOwogfQogCiBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlQXRQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSA9IG9wZW5GaWxlKHBh
dGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9y
V3JpdGUpOwogICAgIEVYUEVDVF9ORSgtMSwgZmlsZUhhbmRsZSk7Ci0gICAgY2xvc2VGaWxlKGZp
bGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMocGF0aCkpOworICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHBhdGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9y
aWdpbikKQEAgLTk5LDcgKzk5LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdp
bikKICAgICAvLyB0YWJsZXMsIGFuZCBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4KICAgICAv
LyBJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCByZW1vdmUgdGhlIG9yaWdpbidzIGluZm9ybWF0aW9u
IGZyb20gYm90aCB0aGUgT3JpZ2lucwogICAgIC8vIGFuZCBEYXRhYmFzZXMgdGFibGVzLCBhbmQg
cmVtb3ZlIHRoZSBkYXRhYmFzZSBmcm9tIGRpc2suCi0gICAgTlNTdHJpbmcgKndlYlNRTERpcmVj
dG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOworICAgIE5TU3RyaW5n
ICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNRTERpcmVj
dG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+
IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBh
dGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTEwOCwxNiArMTA4LDE2IEBAIFRFU1QoRGF0
YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW4pCiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90
YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2Vz
LmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBT
dHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2Vi
RGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUo
ZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAg
ICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMo
b3JpZ2luKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIG9yaWdpblBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwotICAgIEVYUEVDVF9UUlVFKG1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7
Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CisgICAgU3RyaW5nIG9y
aWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAgICBTdHJp
bmcgZnVsbFdlYkRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+ZnVsbFBhdGhGb3JEYXRh
YmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgZmFsc2UpOwogICAgIGNyZWF0ZUZpbGVBdFBh
dGgoZnVsbFdlYkRhdGFiYXNlUGF0aCk7CkBAIC0xMjgsMTQgKzEyOCwxNCBAQCBURVNUKERhdGFi
YXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEVYUEVD
VF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eShmdWxsV2Vi
RGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3Jp
Z2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KG9yaWdpblBhdGgpKTsKICNlbHNlCi0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZnVs
bFdlYkRhdGFiYXNlUGF0aCkpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKG9yaWdpblBh
dGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsV2ViRGF0
YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob3Jp
Z2luUGF0aCkpOwogI2VuZGlmCiAKICAgICByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhk
YXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwg
RGVsZXRlT3JpZ2luV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQpAQCAtMTQzLDcgKzE0Myw3IEBA
IFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0YWJhc2VEb2VzTm90RXhp
c3QpCiAgICAgLy8gVGVzdCB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBhbiBlbnRyeSBpbiBib3Ro
IHRoZSBPcmlnaW5zIGFuZCBEYXRhYmFzZXMgdGFibGVzLAogICAgIC8vIGJ1dCBub3QgYW4gYWN0
dWFsIGRhdGFiYXNlIG9uIGRpc2suCiAgICAgLy8gVGhlIGluZm9ybWF0aW9uIHNob3VsZCBzdGls
bCBiZSByZW1vdmVkIGZyb20gdGhlIHRhYmxlcy4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0
b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcg
KndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
IldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0
b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4g
ZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0
aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAtMTUyLDE1ICsxNTIsMTUgQEAgVEVTVChEYXRh
YmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBk
YXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VR
KCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3Rz
KGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2Vz
LmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBh
dGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAg
ICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VO
YW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAKICAgICBTdHJpbmcgd2Vi
RGF0YWJhc2VGdWxsUGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+ZnVsbFBhdGhGb3JEYXRhYmFzZShv
cmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgZmFsc2UpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhp
c3RzKHdlYkRhdGFiYXNlRnVsbFBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShkYXRh
YmFzZVRyYWNrZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4pKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBA
IFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0YWJhc2VEb2VzTm90RXhp
c3QpCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdp
bikuaXNFbXB0eSgpKTsKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKQEAgLTE3OCw3ICsxNzgsNyBAQCBU
RVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFp
bHMpCiAgICAgLy8gV2hlbiB3ZSBjYWxsIGRlbGV0ZU9yaWdpbigpLCBkZWxldGluZyBvbmUgb2Yg
dGhlc2UgZGF0YWJhc2VzIGZhaWxzLgogICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkbid0
IHJlbW92ZSB0aGUgaW5mb3JtYXRpb24gZnJvbSBlaXRoZXIgdGhlIERhdGFiYXNlcyBvcgogICAg
IC8vIE9yaWdpbnMgdGFibGVzLgotICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVh
dGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGly
ZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7
CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0
cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRy
YWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCk7CkBAIC0xODcsMTYgKzE4NywxNiBAQCBURVNUKERhdGFiYXNlVHJhY2tl
ciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAgICAgZGF0YWJhc2VU
cmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWdu
ZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFz
ZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAK
ICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRv
RGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRh
dGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXIt
PmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIG9yaWdpblBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4u
ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIEVYUEVDVF9UUlVFKG1ha2VBbGxEaXJlY3Rvcmll
cyhvcmlnaW5QYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7
CisgICAgU3RyaW5nIG9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5Q
YXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRo
KSk7CiAKICAgICBTdHJpbmcgZnVsbFdlYkRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+
ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgZmFsc2UpOwogICAg
IGNyZWF0ZUZpbGVBdFBhdGgoZnVsbFdlYkRhdGFiYXNlUGF0aCk7CkBAIC0yMDksOCArMjA5LDgg
QEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFz
ZUZhaWxzKQogCiAgICAgRVhQRUNUX0ZBTFNFKGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlT3JpZ2lu
KG9yaWdpbikpOwogCi0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQ
YXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAg
ICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUo
KSk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNl
TmFtZXMob3JpZ2luKS5zaXplKCkpOwpAQCAtMjIxLDExICsyMjEsMTEgQEAgVEVTVChEYXRhYmFz
ZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFzZUZhaWxzKQogICAgIGNo
ZmxhZ3MoZnVsbFdlYkRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpLCAwKTsKICNlbmRpZgogCi0g
ICAgRVhQRUNUX1RSVUUoZGVsZXRlRmlsZShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOworICAgIEVY
UEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsK
IAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaXRoTWlz
c2luZ0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKQEAgLTIzNCw3ICsyMzQsNyBAQCBURVNUKERhdGFi
YXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2l0aE1pc3NpbmdFbnRyeUluRGF0YWJhc2VzVGFibGUp
CiAgICAgLy8gdGhlIERhdGFiYXNlcyB0YWJsZS4gVGhlcmUgaXMgYW4gYWN0dWFsIGRhdGFiYXNl
IG9uIGRpc2suCiAgICAgLy8gVGhlIGluZm9ybWF0aW9uIHNob3VsZCBzdGlsbCBiZSByZW1vdmVk
IGZyb20gdGhlIE9yaWdpbnMgdGFibGUsIGFuZCB0aGUKICAgICAvLyBkYXRhYmFzZSBzaG91bGQg
YmUgZGVsZXRlZCBmcm9tIGRpc2suCi0gICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxE
aXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwi
KTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4
U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNl
VHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKTsKQEAgLTI0MywyOCArMjQzLDI4IEBAIFRFU1QoRGF0YWJhc2VUcmFj
a2VyLCBEZWxldGVPcmlnaW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKICAgICBk
YXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VR
KCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3Rz
KGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2Vz
LmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBh
dGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhv
cmlnaW4pLmlzRW1wdHkoKSk7CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgp
KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcg
b3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAotICAgIFN0
cmluZyB3ZWJEYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0
aCwgImRhdGFiYXNlLmRiIik7CisgICAgU3RyaW5nIHdlYkRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIiKTsK
ICAgICBjcmVhdGVGaWxlQXRQYXRoKHdlYkRhdGFiYXNlUGF0aCk7CiAKICAgICBFWFBFQ1RfVFJV
RShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4pKTsKIAotICAgIEVYUEVDVF9G
QUxTRShmaWxlRXhpc3RzKHdlYkRhdGFiYXNlUGF0aCkpOwotICAgIEVYUEVDVF9GQUxTRShmaWxl
RXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyh3ZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXIt
Pm9yaWdpbnMoKS5pc0VtcHR5KCkpOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+
ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7CiAKICAgICByZW1vdmVEaXJlY3RvcnlB
bmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShm
aWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERh
dGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2UpCkBAIC0yNzIsNyArMjcyLDcgQEAgVEVTVChE
YXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlKQogICAgIC8vIFRlc3QgdGhlIGV4cGVjdGVk
IGNhc2UuIFRoZXJlIGlzIGFuIGVudHJ5IGluIHRoZSBEYXRhYmFzZXMgdGFibGUKICAgICAvLyBh
bmQgYSBkYXRhYmFzZSBvbiBkaXNrLiBBZnRlciB0aGUgZGVsZXRpb24sIHRoZSBkYXRhYmFzZSBz
aG91bGQgYmUgZGVsZXRlZAogICAgIC8vIGZyb20gZGlzaywgYW5kIHRoZSBpbmZvcm1hdGlvbiBz
aG91bGQgYmUgZ29uZSBmcm9tIHRoZSBEYXRhYmFzZXMgdGFibGUuCi0gICAgTlNTdHJpbmcgKndl
YlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOworICAg
IE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKHdl
YlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFz
ZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhE
YXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTI4MSwxNiArMjgxLDE2IEBA
IFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKICAgICBkYXRhYmFzZVRyYWNr
ZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkx
LCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgs
ICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0
aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAg
IFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRh
YmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJh
c2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0
YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9y
aWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAg
ICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Cisg
ICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgp
KTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsK
IAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJhc2VQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxs
UGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxzZSk7CiAgICAgY3Jl
YXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJhc2VQYXRoKTsKQEAgLTMwMSwyMCArMzAxLDIwIEBA
IFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVt
cHR5KGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKICNlbHNlCi0gICAgRVhQRUNUX0ZBTFNFKGZpbGVF
eGlzdHMoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKICNlbmRpZgogCiAgICAgRVhQRUNU
X0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwotICAg
IEVYUEVDVF9UUlVFKGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKKyAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CiAg
ICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsK
LSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBh
dGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlV2hlbkRhdGFi
YXNlRG9lc05vdEV4aXN0KQogewogICAgIC8vIFRlc3QgdGhlIGNhc2Ugd2hlcmUgd2UgdHJ5IHRv
IGRlbGV0ZSBhIGRhdGFiYXNlIHRoYXQgZG9lc24ndCBleGlzdCBvbiBkaXNrLgogICAgIC8vIFdl
IHNob3VsZCBzdGlsbCByZW1vdmUgdGhlIGRhdGFiYXNlIGluZm9ybWF0aW9uIGZyb20gdGhlIERh
dGFiYXNlcyB0YWJsZS4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAg
IFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2Vy
ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVj
dG9yeVBhdGgpOwpAQCAtMzIzLDIxICszMjMsMjEgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERl
bGV0ZURhdGFiYXNlV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQogICAgIGRhdGFiYXNlVHJhY2tl
ci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEs
IGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJh
c2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwg
IkRhdGFiYXNlcy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRo
KSk7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAg
U3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFi
YXNlc1RhYmxlKGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFz
ZS5kYiIpOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRh
YmFzZU5hbWVzKG9yaWdpbikuc2l6ZSgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZUZ1bGxQ
YXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0
YWJhc2VOYW1lLCBmYWxzZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0YWJh
c2VGdWxsUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdl
YkRhdGFiYXNlRnVsbFBhdGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+
ZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUpKTsKICAgICBFWFBFQ1RfVFJV
RShkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwogCiAg
ICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsK
LSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBh
dGgpKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggNzQ4NjY1Y2YyYzIu
LjJhYzhiNTZkZWI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG93bmxvYWQubW0KQEAgLTkyLDEwICs5MiwxMCBAQCBzdGF0aWMgYm9vbCBleHBlY3Rl
ZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwogICAgIEVYUEVDVF9UUlVFKGhhc1JlY2VpdmVk
UmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRvd25sb2FkKTsKIAotICAgIFdl
YkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBh
dGggPSBXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5k
bGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAg
IF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5k
bGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Cisg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogCiAgICAgKmFs
bG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwpAQCAtMTA3
LDcgKzEwNyw3IEBAIHN0YXRpYyBib29sIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlID0gZmFs
c2U7CiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlLCBkb3dubG9hZC53
YXNVc2VySW5pdGlhdGVkKTsKICAgICBFWFBFQ1RfVFJVRShfZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
ID09IE5TVVJMUmVzcG9uc2VVbmtub3duTGVuZ3RoIHx8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihf
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSA9PSBfcmVjZWl2ZWRDb250ZW50TGVuZ3RoKTsKICAgICBF
WFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzRXF1YWxB
dFBhdGg6X2Rlc3RpbmF0aW9uUGF0aCBhbmRQYXRoOltzb3VyY2VVUkwgcGF0aF1dKTsKLSAgICBX
ZWJDb3JlOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsK
IH0KIApAQCAtMzkzLDEwICszOTMsMTAgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1
ZXN0T3JpZ2luYWxVUkxEaXJlY3REb3dubG9hZFdpdGhMb2FkZWRDb250ZW50KQogICAgIEVYUEVD
VF9UUlVFKGhhc1JlY2VpdmVkUmVzcG9uc2UpOwogICAgIEVYUEVDVF9FUShfZG93bmxvYWQsIGRv
d25sb2FkKTsKIAotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOwot
ICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdl
YktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2Vi
Q29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7Ci0gICAgV2ViQ29yZTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOworICAgIEVY
UEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVI
YW5kbGUpOwogCiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGlu
YXRpb25QYXRoOwpAQCAtNDEwLDcgKzQxMCw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2Fk
UmVxdWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93bmxvYWRXaXRoTG9hZGVkQ29udGVudCkKICAgICBO
U1N0cmluZyogZXhwZWN0ZWRDb250ZW50ID0gQCJ7XCJ4XCI6NDIsXCJzXCI6XCJoZWxsbywgd29y
bGRcIn0iOwogICAgIE5TRGF0YSogZXhwZWN0ZWREYXRhID0gW2V4cGVjdGVkQ29udGVudCBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CiAgICAgRVhQRUNUX1RSVUUoW1tb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29udGVudHNBdFBhdGg6X2Rlc3RpbmF0aW9u
UGF0aF0gaXNFcXVhbFRvRGF0YTpleHBlY3RlZERhdGFdKTsKLSAgICBXZWJDb3JlOjpkZWxldGVG
aWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtNDY2LDEw
ICs0NjYsMTAgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0QmxvYlVSTCkKIAog
LSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dP
dmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZQogewotICAgIFdlYkNvcmU6OlBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlSGFuZGxlOwotICAgIF9kZXN0aW5hdGlvblBhdGggPSBXZWJDb3JlOjpv
cGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQSSIsIGZpbGVIYW5kbGUpOwotICAgIEVYUEVD
VF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7
Ci0gICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlOworICAgIF9kZXN0aW5hdGlvblBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiVGVzdFdlYktpdEFQ
SSIsIGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVIYW5kbGUgIT0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOwogICAgICphbGxvd092ZXJ3cml0ZSA9IFlF
UzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKIH0KQEAgLTQ5Niw3ICs0OTYsNyBAQCBU
RVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RCbG9iVVJMKQogICAgIGlmIChyZWRpcmVj
dENoYWluLmNvdW50ID4gMikKICAgICAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vcGFzcy8iLCBb
cmVkaXJlY3RDaGFpblsyXS5hYnNvbHV0ZVN0cmluZyBVVEY4U3RyaW5nXSk7CiAKLSAgICBXZWJD
b3JlOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CiAgICAgaXNEb25lID0gdHJ1ZTsKIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325479</attachid>
            <date>2017-10-31 13:04:23 -0700</date>
            <delta_ts>2017-10-31 14:19:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>179063-3.diff</filename>
            <type>text/plain</type>
            <size>339529</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTE2MGFiYjYxNy4uODY5YjE0MjMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGluZyBhIEZp
bGVTeXN0ZW0gbmFtZXNwYWNlIHRvIG1vZGVybml6ZSB0aGUgY29kZSBiZWZvcmUKKyAgICAgICAg
bW92aW5nIEZpbGVTeXN0ZW0gdG8gUEFMLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
Q29jb2EubW06CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisKIDIwMTctMTAtMzAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgdGFiLXNpemU6IDBw
eCBhc3NlcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRl
eCA2YWViYjFmZDQwNC4uN2VmYjc5ZDU1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiBib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZDJlYjg4NTJjNC4uOGU1MDY2ZGRlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQ
YXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3Rz
IG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9
IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVk
Q2hpbGQ+IGxpc3RlZENoaWxkcmVuOwogICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDog
Y2hpbGRQYXRocykgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxk
UGF0aCk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
Y2hpbGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlz
SGlkZGVuKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVu
Y2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tl
ZEFwcGVuZChMaXN0ZWRDaGlsZCB7IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBh
dGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3RlZENoaWxkcmVuKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkVmlydHVhbFBhdGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRP
TUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9v
dFBhdGgoZGlyZWN0b3J5TmFtZShtX2ZpbGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAg
IEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoLCBTdAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFt
ZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0
IikgfTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZh
bGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKIHsKLSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCku
dHlwZTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQ
YXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5h
cHBlbmQoY29tcG9uZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29t
cG9uZW50cyk7CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVj
dG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCmluZGV4IGI2YmJjNjNhNjM2Li5kY2NiNWExMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVt
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsZVN5c3RlbSYgZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQotICAgICwgbV9uYW1l
KHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCisgICAgLCBtX25hbWUoRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHZpcnR1YWxQYXRoKSkKICAgICAsIG1fdmlydHVhbFBhdGgodmlydHVh
bFBhdGgpCiB7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRl
eCBkOTQ2YmU0M2YxZi4uOGJiODgwNTBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290CiAKIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCiB7Ci0gICAgU3RyaW5n
IG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0
b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIG1h
aW5GcmFtZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAg
ICAvLyBJZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUgb3JpZ2lucyBhcmUgdGhl
IHNhbWUsIHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KICAgICBpZiAob3BlbmluZ09yaWdpbiA9
PSB0b3BMZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsKIAot
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBv
cGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY4MWNlOGFiNmNhLi5mZmY4Zjg0Y2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2Niwx
MSArNDY2LDExIEBAIHZvaWQgSURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0
b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0
b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwo
IioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogZW50cmllcykgewotICAgICAgICBTdHJpbmcgZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGVudHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29k
ZWROYW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAgICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGVu
Y29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01ODEsMTQgKzU4MSwxNCBAQCB2b2lkIElEQlNlcnZl
cjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRo
KGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGF0YWJhc2VQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2lu
UGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0byYgZGF0YWJhc2VQYXRoIDogZGF0YWJhc2VQYXRo
cykgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBk
YXRhYmFzZUZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigp
ICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5j
ZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNl
RmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2Rp
ZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2luY2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0
aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3Jp
Z2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxv
YiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIgd2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwK
ICAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRoZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJl
IHRyeWluZyB0byBkZWxldGUuCi0gICAgICAgIGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGly
ZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTldKi5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBibG9iUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQ
YXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAgICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2
ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAg
ICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJpbmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3
aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAiLmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9u
LWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0
aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMgb25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0
LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5vdCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAg
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUoYmxvYlBhdGgpOwogICAgICAgICAgICAgYXV0byBmaWxlbmFtZUxlbmd0aCA9IGZpbGVuYW1l
Lmxlbmd0aCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWVMZW5ndGggPj0gNik7CkBA
IC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAodmFsaWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBkZWxl
dGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyBkZWxldGUg
SW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgU1FMaXRlIGZpbGVzLgogICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxlKTsKIAogICAgICAg
ICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2FuLCBkZWxldGUgdGhlIGVtcHR5IGRpcmVjdG9yeS4K
LSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKICAg
ICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFzZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwgd2Ug
Y2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVjdG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNs
b3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiKiIpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIq
Iik7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAg
ICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZv
cm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5
T3IKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBh
dGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMw
YmViMzguLjlmZjhjMGYzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtNzQ0LDcgKzc0NCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUZyb21FbmNvZGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBlbmNvCiAgICAgU3RyaW5nIHBh
cnRpYWxseURlY29kZWQgPSBlbmNvZGVkTmFtZTsKICAgICBwYXJ0aWFsbHlEZWNvZGVkLnJlcGxh
Y2UoQVNDSUlMaXRlcmFsKCIlMkUiKSwgQVNDSUlMaXRlcmFsKCIuIikpOwogCi0gICAgcmV0dXJu
IGRlY29kZUZyb21GaWxlbmFtZShwYXJ0aWFsbHlEZWNvZGVkKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhcnRpYWxseURlY29kZWQpOwogfQogCiBTdHJpbmcg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0CkBA
IC03NTQsNyArNzU0LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVG
b3JEYXRhYmFzZU5hbWUoKSBjb25zdAogICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBlbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7CiAgICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKQEAgLTc2NCwxNCArNzY0LDE0IEBAIFN0cmluZyBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0
dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnks
IGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFt
ZUZvckRhdGFiYXNlTmFtZSgpKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0
YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CiB9CiAKIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQpAQCAtNzgzLDcgKzc4Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVz
KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCkpOwogICAgIFN0cmluZyBkYkZpbGVuYW1lID0g
ZnVsbERhdGFiYXNlUGF0aCgpOwogCiAgICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CkBAIC0xODU4LDcgKzE4NTgsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBvYmplYwogICAgICAgICBibG9iVVJMcy5hcHBlbmQoYmxvYlVSTCk7CiAKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gc3FsLT5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBibG9iRmlsZVBh
dGhzLmFwcGVuZChwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGZp
bGVOYW1lKSk7CisgICAgICAgIGJsb2JGaWxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZmlsZU5hbWUpKTsKICAgICB9
CiAKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtMjU0Miw4ICsyNTQyLDggQEAgdm9pZCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAKICAgICBTdHJpbmcg
ZGF0YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBmb3IgKGF1
dG8mIGZpbGUgOiBibG9iRmlsZXMpIHsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsKLSAgICAgICAgaWYg
KCFkZWxldGVGaWxlKGZ1bGxQYXRoKSkKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgZGVsZXRpbmcgYmxvYiBmaWxlICVzIiwgZnVsbFBhdGgudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCA2MDg2M2E4YWE5My4uMjMxNjVjOWI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptb3ZlQmxv
YkZpbGVzSWZOZWNlc3NhcnkoKQogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JUZW1wb3Jh
cnlBbmRTdG9yZWRGaWxlbmFtZXMpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5
RmlsZUhhbmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGVudHJ5LmZpcnN0
KTsKIAotICAgICAgICBpZiAoIWhhcmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1wb3JhcnkgYmxvYiBm
aWxlICclcycgdG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZp
bGUoZW50cnkuZmlyc3QsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKSkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBsaW5rL2NvcHkgdGVtcG9yYXJ5IGJsb2IgZmlsZSAnJXMnIHRvIGxvY2F0aW9uICcl
cyciLCBlbnRyeS5maXJzdC51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGVudHJ5LnNlY29uZCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nl
c3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShlbnRyeS5maXJzdCk7CiAgICAgfQpAQCAtMTA3LDcg
KzEwNyw3IEBAIHZvaWQgU1FMaXRlSURCVHJhbnNhY3Rpb246OmRlbGV0ZUJsb2JGaWxlc0lmTmVj
ZXNzYXJ5KCkKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSA9IG1fYmFja2luZ1N0b3Jl
LmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JS
ZW1vdmVkRmlsZW5hbWVzKSB7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOworICAgICAgICBTdHJpbmcg
ZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnksIGVudHJ5KTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhh
bmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGZ1bGxQYXRoKTsKICAgICAg
ICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nlc3NUb1RlbXBvcmFy
eUZpbGVDb21wbGV0ZShmdWxsUGF0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAppbmRleCBhZGRkMWY4YzAwNC4uNjFhZWI4ZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAppbmRleCA1NTI3NjlhNDFjNy4uZmVhMWJlNWU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY0OSw5
ICs2NDksOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjp1c2FnZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9
IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza1Vz
YWdlID0gMDsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogbGlzdERpcmVjdG9yeShvcmlnaW5Q
YXRoLCBBU0NJSUxpdGVyYWwoIiouZGIiKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCBBU0NJSUxpdGVyYWwoIiouZGIi
KSkpIHsKICAgICAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgICAgIGdldEZpbGVTaXplKGZpbGVO
YW1lLCBzaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNp
emUpOwogICAgICAgICBkaXNrVXNhZ2UgKz0gc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2tV
c2FnZTsKQEAgLTc4NSw5ICs3ODUsOSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgd2UgcHJldmlvdXNseSBkZWxldGVk
IGl0IGJ1dCBmYWlsZWQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgLy8g
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZS4gV2Ugd2FudCB0byBkZWxldGUgYWxsIG9mIHRoZSBp
bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICAgICAgLy8gZGF0YWJhc2Ug
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZSwgc28gc3RpbGwgYWRkIGl0cyBuYW1lIHRvIGRhdGFi
YXNlTmFtZXNUb0RlbGV0ZS4KLSAgICAgICAgICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoKSkg
eworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkp
CisgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUgPCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3QodGltZSkpCkBAIC04MzcsNyArODM3LDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgRGVsZXRpb25Nb2QKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVz
ZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwg
ZGVhZGxvY2suCiAgICAgYm9vbCBmYWlsZWRUb0RlbGV0ZUFueURhdGFiYXNlRmlsZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgbmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKLSAgICAgICAgaWYgKGZp
bGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRl
bGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9uTW9kZSkpIHsKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5h
bWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9u
TW9kZSkpIHsKICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgY2FuJ3QgYmUgZGVsZXRl
ZCwgd2Ugd2FudCB0byB0cnkgYW5kIGRlbGV0ZSB0aGUgcmVzdCwgZG9uJ3QgcmV0dXJuIGVhcmx5
IGhlcmUuCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3Ig
ZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBmYWlsZWRUb0Rl
bGV0ZUFueURhdGFiYXNlRmlsZSA9IHRydWU7CkBAIC04NTIsOCArODUyLDggQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgRGVsZXRpb25Nb2QKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoRGF0YWJhc2VUcmFja2VyLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiIpOwogI2VuZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZmlsZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlbGV0ZUZpbGUoZmlsZSkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmls
ZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7
CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpCiAgICAgICAg
ICAgICAgICAgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAg
ICB9CiAKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tz
IGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCi0gICAg
aWYgKGZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkg
JiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVs
dCkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aEZvckRhdGFiYXNl
KG9yaWdpbiwgbmFtZSwgZmFsc2UpKSAmJiAhZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFt
ZSwgRGVsZXRpb25Nb2RlOjpEZWZhdWx0KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIGRv
bmVEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4g
ZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2UgZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3Vy
cmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNlIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hv
dWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0Rmls
ZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YWJhc2VGaWxlTmFtZS5pc051bGwoKSB8fCBkYXRhYmFzZUZpbGVOYW1lICE9IEZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShkYi0+ZmlsZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRGF0YWJhc2VzLmFwcGVuZChkYik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmREZWxldGVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92
ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogc3RhdGljIGJvb2wgaXNaZXJvQnl0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGxvbmcgbG9uZyBzaXplID0gMDsKLSAgICByZXR1cm4g
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgJiYgIXNpemU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIHNpemUpICYmICFzaXplOwogfQogICAgIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBwYXRoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAK
aW5kZXggNTE2YTJkMmYyNjQuLjMxZDJkMDRiMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQ
YXRoKFN0cmluZyBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgsIFN0cmluZygiLmxvY2siKSk7
CiB9CiAKIE9yaWdpbkxvY2s6Ok9yaWdpbkxvY2soU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgOiBt
X2xvY2tGaWxlTmFtZShsb2NrRmlsZU5hbWVGb3JQYXRoKG9yaWdpblBhdGgpLmlzb2xhdGVkQ29w
eSgpKQogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgLCBtX2xvY2tIYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fbG9ja0hhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogI2VuZGlmCiB7CiB9CkBAIC01MCw4ICs1MCw4IEBAIHZvaWQgT3Jp
Z2luTG9jazo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NL
KQotICAgIG1fbG9ja0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgT3Bl
bkZvcldyaXRlKTsKLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUo
bV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKG1fbG9j
a0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAg
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBj
b250YWluaW5nIHRoZSBsb2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2Vy
ZSBnaXZlbiBhIHBhdGggdG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYnV0IGNsZWFudXAgYW5kIHJl
dHVybi4KQEAgLTY4LDExICs2OCwxMSBAQCB2b2lkIE9yaWdpbkxvY2s6OnVubG9jaygpCiAgICAg
Ly8gY29udGFpbmluZyB0aGUgbG9jayBoYXMgYmVlbiBkZWxldGVkIGJlZm9yZSB3ZSBvcGVuZWQg
dGhlIGxvY2sgZmlsZSwgb3IKICAgICAvLyB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1l
eGlzdGFudCBkaXJlY3RvcnkuIFdoaWNoLCBpbiB0dXJuLCBtZWFucwogICAgIC8vIHRoYXQgdGhl
cmUncyBub3RoaW5nIHRvIHVubG9jay4KLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIAorICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5sb2Nr
QW5kQ2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7Ci0gICAgbV9sb2NrSGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUobV9s
b2NrSGFuZGxlKTsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogI2VuZGlmCiAKICAgICBtX211dGV4LnVubG9jaygpOwpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIE9yaWdpbkxvY2s6OmRlbGV0ZUxvY2tGaWxlKFN0cmluZyBvcmlnaW5QYXRo
KQogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5QYXRoKTsKICNpZiBVU0UoRklMRV9MT0NLKQogICAg
IFN0cmluZyBsb2NrRmlsZU5hbWUgPSBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKG9y
aWdpblBhdGgpOwotICAgIGRlbGV0ZUZpbGUobG9ja0ZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGxvY2tGaWxlTmFtZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBkNzE1MWRlNzhiZC4u
YTE2ZTg0ZjE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
T3JpZ2luTG9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9j
a0ZpbGVOYW1lOwogICAgIExvY2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBtX2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fbG9ja0hhbmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggM2ViMjg4NGFjYTEuLjAyNjFhMGZkMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QK
ICAgICAvLyBUaGUgaS9vIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCwKICAgICAvLyBhbmQgdGhlIHJlc3VsdCBzaG91bGQgYmUgY2FjaGVkIGFsb25nIHdpdGggYW4g
YXN5bmNocm9ub3VzIG1vbml0b3IgZm9yIGNoYW5nZXMgdG8gdGhlIGZpbGUuCiAgICAgdGltZV90
IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKGdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0
aCwgbW9kaWZpY2F0aW9uVGltZSkgJiYgaXNWYWxpZEZpbGVUaW1lKG1vZGlmaWNhdGlvblRpbWUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1v
ZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRp
b25UaW1lKSkKICAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25k
OwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUoKSAqIG1zUGVyU2Vjb25k
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlz
TnVsbCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworICAgIGVmZmVj
dGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluZGV4ID0gZWZmZWN0aXZl
TmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKICAgICAg
ICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBTdHJpbmcgRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIGJvb2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAogewogICAgIGlmICghbV9pc0Rp
cmVjdG9yeSkKLSAgICAgICAgbV9pc0RpcmVjdG9yeSA9IGZpbGVJc0RpcmVjdG9yeShtX3BhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgICAgIG1faXNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwogICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAwZDVhNjk3ZjY1YS4uY2FhMjFk
NWI4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC01OSw5ICs1OSw5IEBA
IGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVO
YW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVCghcGF0aEdl
dEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0
aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KKyAgICBBU1NF
UlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8g
RXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3Ig
ZGlyZWN0b3JpZXMuCiAgICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBBU0NJSUxpdGVyYWwoImFw
cGxpY2F0aW9uL3ppcCIpOwotICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVs
bCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJTGl0ZXJh
bCgiLnppcCIpOworICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVsbCgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJ
TGl0ZXJhbCgiLnppcCIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAKaW5kZXggOTEwNmRhZGNjZDQuLjc2ZjU2NTk3MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgRmlsZUxpc3RDcmVhdG9y
Ojp+RmlsZUxpc3RDcmVhdG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0
b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFBhdGgg
OiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAgICBhdXRvIG1ldGFkYXRh
ID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRv
IG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CiAgICAgICAg
IGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWV0
YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIHBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOworICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRo
KTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0
YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKQEAgLTgwLDgg
KzgwLDggQEAgUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBp
ZiAoc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6
WWVzICYmIGZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgcGF0
aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgaWYgKHNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxl
cyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxl
T2JqZWN0cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4NjQwY2YxMmM4
YS4uYmY0MzQzOTNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTZXRNZWRpYUtl
eXMoV2ViS2l0TWVkaWFLZXlzKiBtZWRpYUtleXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBh
ZmY4Njk5MmU1MC4uYTIxNTBlZDJmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNlTmVlZGVkKGlu
dDY0X3QgY2FjaGVUb1NhdmUpCiB7CiAgICAgaW50NjRfdCBzcGFjZU5lZWRlZCA9IDA7CiAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICBpZiAoIWdldEZpbGVTaXplKG1fY2FjaGVGaWxl
LCBmaWxlU2l6ZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2NhY2hlRmls
ZSwgZmlsZVNpemUpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGludDY0X3QgY3VycmVudFNp
emUgPSBmaWxlU2l6ZSArIGZsYXRGaWxlQXJlYVNpemUoKTsKQEAgLTYwMCwxMSArNjAwLDExIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlm
RG9lc05vdEV4aXN0KQogICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X2NhY2hlRGlyZWN0b3J5LCAiQXBwbGljYXRpb25DYWNoZS5kYiIpOwotICAgIGlmICghY3JlYXRl
SWZEb2VzTm90RXhpc3QgJiYgIWZpbGVFeGlzdHMobV9jYWNoZUZpbGUpKQorICAgIG1fY2FjaGVG
aWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7CisgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlz
dCAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKKyAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9jYWNoZURpcmVjdG9yeSk7CiAgICAgbV9kYXRh
YmFzZS5vcGVuKG1fY2FjaGVGaWxlKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCkBAIC03OTksNyArNzk5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKIAogICAgIFN0
cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICBkYXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGhHZXRGaWxlTmFtZShyZXNvdXJjZS0+
cGF0aCgpKSk7CisgICAgICAgIGRhdGFTdGF0ZW1lbnQuYmluZFRleHQoMiwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKICAgICBlbHNlIGlmIChzaG91bGRT
dG9yZVJlc291cmNlQXNGbGF0RmlsZShyZXNvdXJjZSkpIHsKICAgICAgICAgLy8gRmlyc3QsIGNo
ZWNrIHRvIHNlZSBpZiBjcmVhdGluZyB0aGUgZmxhdCBmaWxlIHdvdWxkIHZpb2xhdGUgdGhlIG1h
eGltdW0gdG90YWwgcXVvdGEuIFdlIGRvbid0IG5lZWQKICAgICAgICAgLy8gdG8gY2hlY2sgdGhl
IHBlci1vcmlnaW4gcXVvdGEgaGVyZSwgYXMgaXQgd2FzIGFscmVhZHkgY2hlY2tlZCBpbiBzdG9y
ZU5ld2VzdENhY2hlKCkuCkBAIC04MDgsOCArODA4LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgbWFr
ZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKKyAgICAgICAgU3RyaW5nIGZsYXRG
aWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2Fj
aGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKIAogICAgICAgICBT
dHJpbmcgZXh0ZW5zaW9uOwogICAgICAgICAKQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgICAgICBpZiAoIXdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KHJlc291cmNlLT5kYXRhKCksIGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoLCBleHRlbnNpb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZnVsbFBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAg
ICAgICBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0
RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIHJlc291cmNlLT5zZXRQYXRoKGZ1bGxQYXRo
KTsKICAgICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKICAgICAgICAgLy8gQ2xlYW4gdXAgdGhl
IGZpbGUgd2hpY2ggd2UgbWF5IGhhdmUgd3JpdHRlbiB0bzoKICAgICAgICAgaWYgKCFmdWxsUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQp
CiAKICAgICBhdXRvIGNhY2hlID0gQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlKCk7CiAKLSAgICBT
dHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICBpbnQgcmVz
dWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CkBAIC0xMTM2LDggKzExMzYsOCBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXpl
KCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBnZXRGaWxlU2l6
ZShwYXRoLCBzaXplKTsKKyAgICAgICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMyk7
CkBAIC0xMjk0LDI1ICsxMjk0LDI1IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgU3Ry
aW5nIGZ1bGxQYXRoOwogICAgIAogICAgIGRvIHsKLSAgICAgICAgcGF0aCA9IGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyBmaWxlRXh0ZW5zaW9uOworICAg
ICAgICBwYXRoID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3Qg
dGhlIGFib3ZlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdoaWNoIGRvZXMg
bm90IGltcGxlbWVudAogICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuCiAg
ICAgICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIHBhdGgpOwotICAgIH0gd2hp
bGUgKGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGRpcmVjdG9yeSB8fCBmaWxlRXhpc3RzKGZ1
bGxQYXRoKSk7CisgICAgICAgIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CisgICAgfSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3Bl
bkZpbGUoZnVsbFBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
YXRhLnNpemUoKSkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShmdWxsUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIApAQCAtMTQ2NiwxNSArMTQ2NiwxNSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIFN0cmluZyBm
bGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0
b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Cisg
ICAgICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIAogICAgICAgICAv
LyBEb24ndCBleGl0IHRoZSBmbGF0RmlsZURpcmVjdG9yeSEgVGhpcyBzaG91bGQgb25seSBoYXBw
ZW4gaWYgdGhlICJwYXRoIiBlbnRyeSBjb250YWlucyBhIGRpcmVjdG9yeSAKICAgICAgICAgLy8g
Y29tcG9uZW50LCBidXQgcHJvdGVjdCBhZ2FpbnN0IGl0IHJlZ2FyZGxlc3MuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBmbGF0RmlsZURpcmVjdG9yeSkKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0
b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBkZWxldGVGaWxl
KGZ1bGxQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAg
ICAgfSB3aGlsZSAoc2VsZWN0UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpOwogICAgIAogICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiKTsK
QEAgLTE0OTQsMTIgKzE0OTQsMTIgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmbGF0RmlsZUFyZWFTaXplKCkKICAgICB9CiAKICAgICBsb25nIGxvbmcgdG90YWxTaXplID0g
MDsKLSAgICBTdHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9jYWNoZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0
cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAg
d2hpbGUgKHNlbGVjdFBhdGhzLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gc2VsZWN0UGF0aHMuZ2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIGZ1
bGxQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRo
KTsKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgbG9uZyBsb25nIHBh
dGhTaXplID0gMDsKLSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShmdWxsUGF0aCwgcGF0aFNpemUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdG90YWxTaXplICs9IHBhdGhTaXpl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNhMzY5YmVjMzU4Li41OWVjMWM5MGM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBh
Z2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiAKICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUp
KSB7CiAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMg
anVzdCBkZWxldGVkLCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYg
d2UndmUgcmVhZCB0aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0
aHJvdyBhd2F5IHRoYXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdz
IG9uIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4
YmM3YTM3Li42YWQ2MzExMGFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgp
ICYmICFmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgp
KSkKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYg
IUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0
ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDkyM2ZmMzMwZDZjLi5hZGExZjQx
ZDIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZp
ZXIoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChwcm90b2NvbCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlbmNvZGVGb3JGaWxlTmFt
ZShob3N0KSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJh
Y3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IDgwM2E4MjA5
YjJjLi4yYTBhNjM0YzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlSGFuZGxlOjpG
aWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFu
ZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5N
b2RlIG1vZGUpCiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kZShtb2RlKQogewpAQCAt
NDIsNyArNDIsNyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBv
dGhlcikKICAgICA6IG1fcGF0aChXVEZNb3ZlKG90aGVyLm1fcGF0aCkpCiAgICAgLCBtX21vZGUo
V1RGTW92ZShvdGhlci5tX21vZGUpKQotICAgICwgbV9maWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSkKKyAgICAsIG1f
ZmlsZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBG
aWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogICAg
IGNsb3NlKCk7CiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9k
ZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKLSAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
bV9maWxlSGFuZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
RmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxl
VmFsaWQobV9maWxlSGFuZGxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2ZpbGVIYW5kbGUpOwogfQogCi1ib29sIEZpbGVIYW5kbGU6Om9wZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGlmICgq
dGhpcyAmJiBwYXRoID09IG1fcGF0aCAmJiBtb2RlID09IG1fbW9kZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsK
ICAgICBpZiAoISp0aGlzKQotICAgICAgICBtX2ZpbGVIYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgs
IG1fbW9kZSk7CisgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
cGF0aCwgbV9tb2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC04NywxNCArODcsMTQgQEAgaW50IEZpbGVIYW5kbGU6OnJlYWQodm9pZCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiByZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSks
IGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5k
bGUsIHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAogaW50IEZpbGVIYW5k
bGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVu
KCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbGVIYW5kbGU6
OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBGaWxlSGFuZGxlOjpjbG9z
ZSgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMzYyNDNkZTQwZC4uNTYzZmVkOTg5NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7
CiBwdWJsaWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKLSAgICBGaWxlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBGaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZpbGVIYW5k
bGUmJiBvdGhlcik7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogICAgIGJvb2wgb3BlbigpOwogICAgIGludCByZWFkKHZv
aWQqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGludCB3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZU9wZW5Nb2RlIG1fbW9kZSB7IE9wZW5Gb3JSZWFkIH07Ci0g
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcAppbmRleCBiMThiMWMzZTk3ZC4uZjc0NWQ3YzFkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZpbGVTdHJlYW06OkZpbGVTdHJlYW0oKQotICAgIDogbV9oYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICA6IG1faGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgLCBtX2J5dGVzUHJvY2Vzc2VkKDApCiAgICAgLCBtX3RvdGFsQnl0
ZXNUb1JlYWQoMCkKIHsKQEAgLTUzLDE2ICs1MywxNiBAQCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6
Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bQogewogICAgIC8vIENoZWNrIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBvc3NpYmxl
IGZpbGUgY2hhbmdlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1l
KSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUo
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dGlt
ZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9IG1vZGlmaWNhdGlvblRpbWUpCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLy8gTm93IGdldCB0aGUgZmlsZSBzaXpl
LgogICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShwYXRoLCBsZW5n
dGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgbGVuZ3RoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKQEAgLTcwLDE3ICs3MCwxNyBA
QCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbQogCiBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkK
IHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IE9wZW4gdGhlIGZpbGUuCi0gICAgbV9oYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZp
bGUgaGFzIGJlZW4gc2xpY2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChz
ZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBTZWVrRnJvbUJlZ2lubmluZykgPCAwKQorICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6
U2Vla0Zyb21CZWdpbm5pbmcpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTkyLDIyICs5MiwyMiBAQCBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbgogCiB2b2lkIEZp
bGVTdHJlYW06OmNsb3NlKCkKIHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpIHsK
LSAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxlKTsKLSAgICAgICAgbV9oYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOworICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1f
aGFuZGxlKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworICAg
ICAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAg
ICAgfQogfQogCiBpbnQgRmlsZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJT
aXplKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbG9uZyBsb25nIHJlbWFpbmluZyA9IG1fdG90YWxCeXRlc1RvUmVhZCAtIG1fYnl0ZXNQcm9j
ZXNzZWQ7CiAgICAgaW50IGJ5dGVzVG9SZWFkID0gKHJlbWFpbmluZyA8IGJ1ZmZlclNpemUpID8g
c3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogYnVmZmVyU2l6ZTsKICAgICBpbnQgYnl0ZXNS
ZWFkID0gMDsKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiAwKQotICAgICAgICBieXRlc1JlYWQgPSBy
ZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNUb1JlYWQpOworICAgICAgICBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNU
b1JlYWQpOwogICAgIGlmIChieXRlc1JlYWQgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAg
aWYgKGJ5dGVzUmVhZCA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXgg
ZDQyMWU0ZjNiYzEuLjk2N2RlZGM3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIs
IGludCBsZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRs
ZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9u
ZyBsb25nIG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVh
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDdh
ZTM0Li5iODk0NzVlMDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmls
ZVN5c3RlbSB7CisKIC8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVk
IGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQogLy8gYWNyb3NzIGFsbCBzeXN0ZW1z
LCBpbmNsdWRpbmcgV2luZG93czoKIC8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikK
QEAgLTM1OSw0ICszNjEsNSBAQCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93UwogICAgIHJldHVybiBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CiB9
CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCAzMmM5M2U2NThiMy4uYTZjN2UzZWI3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTU2LDYgKzU2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKICNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwpAQCAtOTIs
OCArOTYsNiBAQCBlbnVtIEZpbGVMb2NrTW9kZSB7CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKIAotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogV0VC
Q09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTIxMyw1ICsyMTUsNiBAQCBp
bmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmls
ZURhdGEmJiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZTFmY2RjZWJkMWMuLjBkMzViMjEzYmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBz
aXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwpAQCAtNjEsNyArNjEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8Y2hhcj4mJiBkYXRhKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGlu
Z1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtd
KGNvbnN0IEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcg
KzIyNyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICNpZiBVU0UoU09VUCkKICAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IE1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRh
LnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYg
ZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGZkMjZmMjFjNmJkLi4zNGZmNzFjNjM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAj
aWYgVVNFKFNPVVApCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHVW5p
cXVlUHRyPFNvdXBCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoTWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFTZWdtZW50KEdVbmlxdWVQdHI8U291
cEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoTWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAog
ICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6
CiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCkBAIC0xNTcsNyArMTU3LDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXpl
X3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDFmNjg0YjY1YzE0Li4wODQ3MGEw
OGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorQ1N0cmluZyBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
QEAgLTU1LDEyICs1NSwxMiBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKIH0KIAotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciog
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQogewogICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENGVVJMUmVm
PiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQorUmV0YWluUHRyPENGVVJMUmVmPiBGaWxl
U3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENGVVJMUGF0aFN0
eWxlIHBhdGhTdHlsZTsKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAzOTVkZjc3NzE5YS4uNTc4
NDM0ZDJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0gICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSk7
CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJG
YWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAg
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1
ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW2hh
bmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRj
aF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2NkOWY4Li5lNmUx
NjJhMmMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQpAQCAtNDYsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKKwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAg
ICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CkBAIC0xMjgsNCArMTMwLDYgQEAgTlNTdHJpbmcg
KmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQogICAg
IHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb246cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07CiB9CiAKK30gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCmluZGV4IGQ2ZDll
ZjdhNWNhLi45NDkyNGU2MWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZU1vbml0b3JHTGliLmNwcApAQCAtMzcsNyArMzcsNyBAQCBGaWxlTW9uaXRvcjo6Rmls
ZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1
ZSwgV1RGOgogICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhbW9kaWZpY2F0aW9uSGFuZGxlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3BhdGgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIGF1
dG8gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBtX2NhbmNlbGxhYmxlID0g
YWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKICAgICBtX3BsYXRmb3JtTW9uaXRvciA9IGFkb3B0R1JlZihnX2ZpbGVfbW9uaXRv
cihmaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9OT05FLCBtX2NhbmNlbGxhYmxlLmdldCgpLCAm
ZXJyb3Iub3V0UHRyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggOTMyZTgzZmQ5NGEuLjFiMDhhYTBhZjdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtNDQsNyAr
NDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhp
cyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBT
dHJpbmcKICAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KICAqIE9uIFdpbmRvd3MgdGhlIEdM
aWIgZmlsZSBuYW1lIGVuY29kaW5nIGlzIGFsd2F5cyBVVEYtOCBzbyB3ZSBjYW4gb3B0aW1pemUg
dGhpcyBjYXNlLiAqLwotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Y29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKQogewogICAgIGlmICghZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyBHVW5pcXVl
UHRyPGNoYXI+IHVuZXNjYXBlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKICNlbmRpZgog
fQogCi1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgp
CitDU3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJp
bmcmIHBhdGgpCiB7CiAjaWYgT1MoV0lORE9XUykKICAgICByZXR1cm4gcGF0aC51dGY4KCk7CkBA
IC03OSw3ICs3OSw3IEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgcGF0aCkKIH0KIAogLy8gQ29udmVydHMgYSBzdHJpbmcgdG8gc29tZXRoaW5nIHN1aXRh
YmxlIHRvIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4KLVN0cmluZyBmaWxlbmFtZUZvckRpc3Bs
YXkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitTdHJpbmcgRmlsZVN5c3RlbTo6ZmlsZW5hbWVGb3JE
aXNwbGF5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogI2lmIE9TKFdJTkRPV1MpCiAgICAgcmV0
dXJuIHN0cmluZzsKQEAgLTk2LDE5ICs5NiwxOSBAQCBTdHJpbmcgZmlsZW5hbWVGb3JEaXNwbGF5
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogI2VuZGlmCiB9CiAKLWJvb2wgZmlsZUV4aXN0cyhjb25z
dCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmls
ZW5hbWUocGF0aCk7CiAgICAgcmV0dXJuIGZpbGVuYW1lID8gZ19maWxlX3Rlc3QoZmlsZW5hbWUu
Z2V0KCksIEdfRklMRV9URVNUX0VYSVNUUykgOiBmYWxzZTsKIH0KIAotYm9vbCBkZWxldGVGaWxl
KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmlsZW5hbWUgPSB1bmVzY2Fw
ZWRGaWxlbmFtZShwYXRoKTsKICAgICByZXR1cm4gZmlsZW5hbWUgPyBnX3JlbW92ZShmaWxlbmFt
ZS5nZXQoKSkgIT0gLTEgOiBmYWxzZTsKIH0KIAotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9
IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwogICAgIHJldHVybiBmaWxlbmFtZSA/IGdfcm1kaXIo
ZmlsZW5hbWUuZ2V0KCkpICE9IC0xIDogZmFsc2U7CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGlj
IGJvb2wgZ2V0RmlsZUxTdGF0KGNvbnN0IFN0cmluZyYgcGF0aCwgR1N0YXRCdWYqIHN0YXRCdWZm
ZXIpCiAgICAgcmV0dXJuIGdfbHN0YXQoZmlsZW5hbWUuZ2V0KCksIHN0YXRCdWZmZXIpICE9IC0x
OwogfQogCi1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBy
ZXN1bHRTaXplKQorYm9vbCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBh
dGgsIGxvbmcgbG9uZyYgcmVzdWx0U2l6ZSkKIHsKICAgICBHU3RhdEJ1ZiBzdGF0UmVzdWx0Owog
ICAgIGlmICghZ2V0RmlsZVN0YXQocGF0aCwgJnN0YXRSZXN1bHQpKQpAQCAtMTQyLDE5ICsxNDIs
MTkgQEAgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyYgcmVz
dWx0U2l6ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9y
bUZpbGVIYW5kbGUsIGxvbmcgbG9uZyYpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJikKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRGaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiwgdGltZV90JikKIHsKICAgICAvLyBGSVhNRTogSXMgdGhl
cmUgYSB3YXkgdG8gcmV0cmlldmUgZmlsZSBjcmVhdGlvbiB0aW1lIHdpdGggR3RrIG9uIHBsYXRm
b3JtcyB0aGF0IHN1cHBvcnQgaXQ/CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiBtb2RpZmllZFRp
bWUpCitib29sIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdGltZV90JiBtb2RpZmllZFRpbWUpCiB7CiAgICAgR1N0YXRCdWYgc3RhdFJlc3Vs
dDsKICAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKQEAgLTE3OSw3ICsx
NzksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVz
aW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIGlmICghc3RhdEZ1bmMocGF0aCwg
JnN0YXRSZXN1bHQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgU3RyaW5n
IGZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgIFN0cmluZyBmaWxlbmFtZSA9
IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKTsKICAgICBib29sIGlzSGlkZGVuID0g
IWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiAKICAgICByZXR1cm4g
RmlsZU1ldGFkYXRhIHsKQEAgLTE5MCwyNCArMTkwLDI0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBh
dGgsCiAgICAgfTsKIH0KIAotc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0
YShjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICByZXR1cm4gZmls
ZU1ldGFkYXRhVXNpbmdGdW5jdGlvbihwYXRoLCAmZ2V0RmlsZUxTdGF0KTsKIH0KIAotc3RkOjpv
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3N0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBGaWxlU3lzdGVtOjpm
aWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAg
cmV0dXJuIGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24ocGF0aCwgJmdldEZpbGVTdGF0KTsKIH0K
IAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNv
bnN0IFN0cmluZyYgY29tcG9uZW50KQorU3RyaW5nIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29tcG9uZW50KQog
ewogICAgIGlmIChwYXRoLmVuZHNXaXRoKEdfRElSX1NFUEFSQVRPUl9TKSkKICAgICAgICAgcmV0
dXJuIHBhdGggKyBjb21wb25lbnQ7CiAgICAgcmV0dXJuIHBhdGggKyBHX0RJUl9TRVBBUkFUT1Jf
UyArIGNvbXBvbmVudDsKIH0KIAotU3RyaW5nIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMoU3Ry
aW5nVmlldyBwYXRoLCBjb25zdCBWZWN0b3I8U3RyaW5nVmlldz4mIGNvbXBvbmVudHMpCitTdHJp
bmcgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgs
IGNvbnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcG9uZW50cykKIHsKICAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CiAgICAgYnVpbGRlci5hcHBlbmQocGF0aCk7CkBAIC0yMTgsMzEgKzIxOCwz
MSBAQCBTdHJpbmcgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNv
bnN0IFZlY3RvcjxTdHJpbmdWaWV3PiYgY29tcAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5n
KCk7CiB9CiAKLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jv
b2wgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgp
OwogICAgIHJldHVybiBmaWxlbmFtZSA/IGdfbWtkaXJfd2l0aF9wYXJlbnRzKGZpbGVuYW1lLmdl
dCgpLCBTX0lSV1hVKSAhPSAtMSA6IGZhbHNlOwogfQogCi1TdHJpbmcgaG9tZURpcmVjdG9yeVBh
dGgoKQorU3RyaW5nIEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKLSAgICByZXR1
cm4gc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9ob21lX2RpcigpKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF9ob21lX2RpcigpKTsKIH0KIAotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3Qg
U3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCitib29s
IEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgs
IGNvbnN0IFN0cmluZyYgc3ltYm9saWNMaW5rUGF0aCkKIHsKLSAgICBDU3RyaW5nIHRhcmdldFBh
dGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih0YXJnZXRQYXRoKTsKKyAgICBDU3Ry
aW5nIHRhcmdldFBhdGhGU1JlcCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bih0YXJnZXRQYXRoKTsKICAgICBpZiAoIXRhcmdldFBhdGhGU1JlcC5kYXRhKCkgfHwgdGFyZ2V0
UGF0aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzeW1ib2xpY0xpbmtQYXRoKTsKKyAgICBDU3RyaW5nIHN5bWJvbGljTGlua1BhdGhGU1JlcCA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzeW1ib2xpY0xpbmtQYXRoKTsK
ICAgICBpZiAoIXN5bWJvbGljTGlua1BhdGhGU1JlcC5kYXRhKCkgfHwgc3ltYm9saWNMaW5rUGF0
aEZTUmVwLmRhdGEoKVswXSA9PSAnXDAnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBy
ZXR1cm4gIXN5bWxpbmsodGFyZ2V0UGF0aEZTUmVwLmRhdGEoKSwgc3ltYm9saWNMaW5rUGF0aEZT
UmVwLmRhdGEoKSk7CiB9CiAKLVN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBw
YXRoTmFtZSkKK1N0cmluZyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5n
JiBwYXRoTmFtZSkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0bXBGaWxlbmFtZSA9IHVuZXNj
YXBlZEZpbGVuYW1lKHBhdGhOYW1lKTsKICAgICBpZiAoIXRtcEZpbGVuYW1lKQpAQCAtMjUyLDcg
KzI1Miw3IEBAIFN0cmluZyBwYXRoR2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoTmFtZSkK
ICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChiYXNlTmFtZS5nZXQoKSk7CiB9CiAKLUNTdHJp
bmcgYXBwbGljYXRpb25EaXJlY3RvcnlQYXRoKCkKK0NTdHJpbmcgRmlsZVN5c3RlbTo6YXBwbGlj
YXRpb25EaXJlY3RvcnlQYXRoKCkKIHsKICAgICBDU3RyaW5nIHBhdGggPSBnZXRDdXJyZW50RXhl
Y3V0YWJsZVBhdGgoKTsKICAgICBpZiAoIXBhdGguaXNOdWxsKCkpCkBAIC0yNjcsNyArMjY3LDcg
QEAgQ1N0cmluZyBhcHBsaWNhdGlvbkRpcmVjdG9yeVBhdGgoKQogICAgIHJldHVybiBkaXJuYW1l
LmdldCgpOwogfQogCi1DU3RyaW5nIHNoYXJlZFJlc291cmNlc1BhdGgoKQorQ1N0cmluZyBGaWxl
U3lzdGVtOjpzaGFyZWRSZXNvdXJjZXNQYXRoKCkKIHsKICAgICBzdGF0aWMgQ1N0cmluZyBjYWNo
ZWRQYXRoOwogICAgIGlmICghY2FjaGVkUGF0aC5pc051bGwoKSkKQEAgLTI5MSw3ICsyOTEsNyBA
QCBDU3RyaW5nIHNoYXJlZFJlc291cmNlc1BhdGgoKQogICAgIHJldHVybiBjYWNoZWRQYXRoOwog
fQogCi1ib29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmIHBhdGgsIHVpbnQ2NF90
JiBmcmVlU3BhY2UpCitib29sIEZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBT
dHJpbmcmIHBhdGgsIHVpbnQ2NF90JiBmcmVlU3BhY2UpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gZmlsZW5hbWUgPSB1bmVzY2FwZWRGaWxlbmFtZShwYXRoKTsKICAgICBpZiAoIWZpbGVuYW1l
KQpAQCAtMzA2LDcgKzMwNiw3IEBAIGJvb2wgZ2V0Vm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgdWludDY0X3QmIGZyZWVTcGFjZSkKICAgICByZXR1cm4gISFmcmVlU3BhY2U7CiB9
CiAKLVN0cmluZyBkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyBGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBHVW5pcXVl
UHRyPGdjaGFyPiBmaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKHBhdGgpOwogICAgIGlmICgh
ZmlsZW5hbWUpCkBAIC0zMTYsNyArMzE2LDcgQEAgU3RyaW5nIGRpcmVjdG9yeU5hbWUoY29uc3Qg
U3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGRpcm5hbWUuZ2V0KCkp
OwogfQogCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBmaWx0ZXIpCitWZWN0b3I8U3RyaW5nPiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWx0ZXIpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gZW50cmllczsKIApAQCAtMzM0LDM1ICszMzQsMzUgQEAgVmVjdG9yPFN0
cmluZz4gbGlzdERpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgZmls
dGVyKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4g
ZW50cnkoZ19idWlsZF9maWxlbmFtZShmaWxlbmFtZS5nZXQoKSwgbmFtZSwgbnVsbHB0cikpOwot
ICAgICAgICBlbnRyaWVzLmFwcGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGVudHJ5LmdldCgpKSk7CisgICAgICAgIGVudHJpZXMuYXBwZW5kKEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZW50cnkuZ2V0KCkpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gZW50cmllczsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK1N0cmluZyBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmIHByZWZpeCwgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmls
ZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcyVzIiwgcHJlZml4LnV0ZjgoKS5kYXRhKCksIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gdGVtcFBhdGgoZ19idWlsZF9maWxlbmFtZShnX2dldF90bXBfZGlyKCksIGZpbGVuYW1l
LmdldCgpLCBOVUxMKSk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKHRlbXBQYXRoLmdldCgpKSk7CiAKICAgICBoYW5kbGUgPSBnX2ZpbGVf
Y3JlYXRlX3JlYWR3cml0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsIDApOwot
ICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgodGVtcFBhdGguZ2V0KCkpOwogfQogCi1QbGF0Zm9ybUZpbGVIYW5k
bGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK0ZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBGaWxlU3lzdGVtOjpvcGVuRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUocGF0aCk7CiAgICAgaWYgKCFm
aWxlbmFtZSkKLSAgICAgICAgcmV0dXJuIGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
ICAgIHJldHVybiBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAg
R1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZpbGVu
YW1lLmdldCgpKSk7CiAgICAgR0ZpbGVJT1N0cmVhbSogaW9TdHJlYW0gPSAwOwotICAgIGlmICht
b2RlID09IE9wZW5Gb3JSZWFkKQorICAgIGlmIChtb2RlID09IEZpbGVTeXN0ZW06Ok9wZW5Gb3JS
ZWFkKQogICAgICAgICBpb1N0cmVhbSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgp
LCAwLCAwKTsKLSAgICBlbHNlIGlmIChtb2RlID09IE9wZW5Gb3JXcml0ZSkgeworICAgIGVsc2Ug
aWYgKG1vZGUgPT0gRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKSB7CiAgICAgICAgIGlmIChnX2Zp
bGVfdGVzdChmaWxlbmFtZS5nZXQoKSwgc3RhdGljX2Nhc3Q8R0ZpbGVUZXN0PihHX0ZJTEVfVEVT
VF9FWElTVFMgfCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkpCiAgICAgICAgICAgICBpb1N0cmVh
bSA9IGdfZmlsZV9vcGVuX3JlYWR3cml0ZShmaWxlLmdldCgpLCAwLCAwKTsKICAgICAgICAgZWxz
ZQpAQCAtMzcyLDI0ICszNzIsMjQgQEAgUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgcmV0dXJuIGlvU3RyZWFtOwog
fQogCi12b2lkIGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxl
KQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm47CiAKICAgICBnX2lvX3N0
cmVhbV9jbG9zZShHX0lPX1NUUkVBTShoYW5kbGUpLCAwLCAwKTsKICAgICBnX29iamVjdF91bnJl
ZihoYW5kbGUpOwotICAgIGhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
aGFuZGxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKIH0KIAotbG9u
ZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBvZmZz
ZXQsIEZpbGVTZWVrT3JpZ2luIG9yaWdpbikKK2xvbmcgbG9uZyBGaWxlU3lzdGVtOjpzZWVrRmls
ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0
LCBGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbiBvcmlnaW4pCiB7CiAgICAgR1NlZWtUeXBlIHNl
ZWtUeXBlID0gR19TRUVLX1NFVDsKICAgICBzd2l0Y2ggKG9yaWdpbikgewotICAgIGNhc2UgU2Vl
a0Zyb21CZWdpbm5pbmc6CisgICAgY2FzZSBGaWxlU3lzdGVtOjpTZWVrRnJvbUJlZ2lubmluZzoK
ICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfU0VUOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNlZWtGcm9tQ3VycmVudDoKKyAgICBjYXNlIEZpbGVTeXN0ZW06OlNlZWtGcm9tQ3VycmVudDoK
ICAgICAgICAgc2Vla1R5cGUgPSBHX1NFRUtfQ1VSOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFNlZWtGcm9tRW5kOgpAQCAtNDA3LDcgKzQwNyw3IEBAIGxvbmcgbG9uZyBzZWVrRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0LCBGaWxlU2Vla09yaWdpbiBv
CiAgICAgcmV0dXJuIGdfc2Vla2FibGVfdGVsbChHX1NFRUtBQkxFKGdfaW9fc3RyZWFtX2dldF9p
bnB1dF9zdHJlYW0oR19JT19TVFJFQU0oaGFuZGxlKSkpKTsKIH0KIAotaW50IHdyaXRlVG9GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgp
CitpbnQgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBnc2l6ZSBi
eXRlc1dyaXR0ZW47CiAgICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FsbChnX2lvX3N0cmVhbV9n
ZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShoYW5kbGUpKSwKQEAgLTQxNSw3ICs0MTUsNyBA
QCBpbnQgd3JpdGVUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gYnl0ZXNXcml0dGVuOwogfQogCi1pbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCitpbnQgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIGRvIHsKQEAgLTQyNyw3ICs0MjcsNyBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xk
UGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQorYm9vbCBGaWxlU3lzdGVtOjptb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKIHsKICAgICBHVW5p
cXVlUHRyPGdjaGFyPiBvbGRGaWxlbmFtZSA9IHVuZXNjYXBlZEZpbGVuYW1lKG9sZFBhdGgpOwog
ICAgIGlmICghb2xkRmlsZW5hbWUpCkBAIC00NDAsNyArNDQwLDcgQEAgYm9vbCBtb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKICAgICByZXR1cm4g
Z19yZW5hbWUob2xkRmlsZW5hbWUuZ2V0KCksIG5ld0ZpbGVuYW1lLmdldCgpKSAhPSAtMTsKIH0K
IAotYm9vbCBoYXJkTGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb24pCitib29sIEZpbGVTeXN0ZW06OmhhcmRMaW5rT3JDb3B5RmlsZShj
b25zdCBTdHJpbmcmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKIHsKICNpZiBP
UyhXSU5ET1dTKQogICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSwgVFJVRSk7CkBAIC00NjMsNyArNDYzLDcgQEAgYm9vbCBoYXJk
TGlua09yQ29weUZpbGUoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb24pCiAjZW5kaWYKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBGaWxlU3lz
dGVtOjpnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogewogICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGZpbGVuYW1lID0gdW5lc2NhcGVkRmlsZW5hbWUoZnNGaWxlLmRhdGEoKSk7
CiAgICAgaWYgKCFmaWxlbmFtZSkKQEAgLTQ3OCwxNyArNDc4LDE3IEBAIHN0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKIH0KIAogI2lm
IFVTRShGSUxFX0xPQ0spCi1ib29sIGxvY2tGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUs
IEZpbGVMb2NrTW9kZSBsb2NrTW9kZSkKK2Jvb2wgRmlsZVN5c3RlbTo6bG9ja0ZpbGUoRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgRmlsZVN5c3RlbTo6RmlsZUxvY2tNb2Rl
IGxvY2tNb2RlKQogewotICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfU0ggPT0gTG9ja1NoYXJlZCwg
TG9ja1NoYXJlZEVuY29kaW5nSXNBc0V4cGVjdGVkKTsKLSAgICBDT01QSUxFX0FTU0VSVChMT0NL
X0VYID09IExvY2tFeGNsdXNpdmUsIExvY2tFeGNsdXNpdmVFbmNvZGluZ0lzQXNFeHBlY3RlZCk7
Ci0gICAgQ09NUElMRV9BU1NFUlQoTE9DS19OQiA9PSBMb2NrTm9uQmxvY2tpbmcsIExvY2tOb25C
bG9ja2luZ0VuY29kaW5nSXNBc0V4cGVjdGVkKTsKKyAgICBDT01QSUxFX0FTU0VSVChMT0NLX1NI
ID09IEZpbGVTeXN0ZW06OkxvY2tTaGFyZWQsIEZpbGVTeXN0ZW06OkxvY2tTaGFyZWRFbmNvZGlu
Z0lzQXNFeHBlY3RlZCk7CisgICAgQ09NUElMRV9BU1NFUlQoTE9DS19FWCA9PSBGaWxlU3lzdGVt
OjpMb2NrRXhjbHVzaXZlLCBGaWxlU3lzdGVtOjpMb2NrRXhjbHVzaXZlRW5jb2RpbmdJc0FzRXhw
ZWN0ZWQpOworICAgIENPTVBJTEVfQVNTRVJUKExPQ0tfTkIgPT0gRmlsZVN5c3RlbTo6TG9ja05v
bkJsb2NraW5nLCBGaWxlU3lzdGVtOjpMb2NrTm9uQmxvY2tpbmdFbmNvZGluZ0lzQXNFeHBlY3Rl
ZCk7CiAgICAgYXV0byogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFt
KEdfSU9fU1RSRUFNKGhhbmRsZSkpOwogICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVz
Y3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0p
KSwgbG9ja01vZGUpOwogICAgIHJldHVybiByZXN1bHQgIT0gLTE7CiB9CiAKLWJvb2wgdW5sb2Nr
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlKQorYm9vbCBGaWxlU3lzdGVtOjp1bmxvY2tG
aWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUpCiB7CiAgICAgYXV0byog
aW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVhbV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKGhh
bmRsZSkpOwogICAgIGludCByZXN1bHQgPSBmbG9jayhnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9n
ZXRfZmQoR19GSUxFX0RFU0NSSVBUT1JfQkFTRUQoaW5wdXRTdHJlYW0pKSwgTE9DS19VTik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApp
bmRleCBhZDczNDlkNmYzZC4uMzM1ZDg1ZDFiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcApAQCAtMzMsMTIgKzMzLDEyIEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKGZpbGVQYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBDU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHVW5pcXVlT3V0UHRy
PGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXplOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMoZmlsZW5hbWUuZGF0YSgp
LCAmY29udGVudHMub3V0UHRyKCksICZzaXplLCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtICVz
IiwgZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVz
c2FnZSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQgY29udGVudHMg
b2YgZmlsZSAlcyAtICVzIiwgRmlsZVN5c3RlbTo6ZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRo
KS51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9u
QVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCBjYTYzM2EyZGE4Zi4uY2I4MGU4MjM2YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRL
ZXlTZXNzaW9uLm1tCkBAIC0zNjUsMTAgKzM2NSwxMCBAQCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBD
RE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Y29udGVudEtleVNlc3Npb24oKQogCiAgICAg
ICAgIG1fY29udGVudEtleVNlc3Npb24gPSBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkg
Y29udGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOmdldEFWQ29udGVudEtleVN5c3RlbUZhaXJQ
bGF5U3RyZWFtaW5nKCldOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFN0cmluZyBzdG9yYWdlRGly
ZWN0b3J5ID0gZGlyZWN0b3J5TmFtZShzdG9yYWdlUGF0aCk7CisgICAgICAgIFN0cmluZyBzdG9y
YWdlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShzdG9yYWdlUGF0aCk7CiAK
LSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHN0b3JhZ2VEaXJlY3RvcnkpKSB7Ci0gICAgICAgICAg
ICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAgICAgaWYg
KCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN0b3JhZ2VEaXJlY3RvcnkpKSB7CisgICAgICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlRGlyZWN0b3J5KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4
IDZhOTg5YTVhMDJkLi4xMDdiMWJkZmY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMDUsNyArMTA1LDcg
QEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnN0b3JhZ2VQYXRoKCkgY29u
c3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9y
YWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3Au
cGxpc3QiKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGMwOTczZWZj
MGQ4Li4zMmQzMDhjMDI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtOTI3LDEy
ICs5MjcsMTIgQEAgQVZTdHJlYW1TZXNzaW9uKiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakM6OnN0cmVhbVNlc3Npb24oKQogICAgICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgIGlmICghZmlsZUV4
aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgewotICAgICAgICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0
b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyBzdG9yYWdlUGF0aCA9IHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIp
OworICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKICAgICAg
ICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhbYWxsb2NBVlN0cmVhbVNlc3Npb25JbnN0YW5j
ZSgpIGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6
c3RvcmFnZVBhdGhdXSk7CiAgICAgfQogICAgIHJldHVybiBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IGZkOWE3NTkyMTdkLi4xMmM5MDFmMzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEzODgsNyArMTM4OCw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2so
TWVkaWFQbGF5ZXJQCiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5n
ZXQoKSwgInRlbXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsK
ICAgICBwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIgPSBudWxscHRyOwogCi0gICAgaWYgKFVOTElL
RUxZKCFkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZ
KCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CiAgICAgICAg
IEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0
ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTQwNSw4ICsxNDA1LDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OnB1cmdlT2xkRG93bmxvYWRGaWxlcyhjb25zdCBjaGFyKiBkb3dubG9hZEZpbGUKICAgICBHVW5p
cXVlUHRyPGNoYXI+IHRlbXBsYXRlRmlsZShnX3BhdGhfZ2V0X2Jhc2VuYW1lKGRvd25sb2FkRmls
ZVRlbXBsYXRlKSk7CiAgICAgU3RyaW5nIHRlbXBsYXRlUGF0dGVybiA9IFN0cmluZyh0ZW1wbGF0
ZUZpbGUuZ2V0KCkpLnJlcGxhY2UoIlgiLCAiPyIpOwogCi0gICAgZm9yIChhdXRvJiBmaWxlUGF0
aCA6IGxpc3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdldCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7
Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGVsZXRlRmlsZShmaWxlUGF0aCkpKSB7CisgICAgZm9y
IChhdXRvJiBmaWxlUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkodGVtcGxhdGVQYXRo
LmdldCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7CisgICAgICAgIGlmIChVTkxJS0VMWSghRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCkpKSB7CiAgICAgICAgICAgICBHU1RfV0FSTklORygi
Q291bGRuJ3QgdW5saW5rIGxlZ2FjeSBtZWRpYSB0ZW1wb3JhcnkgZmlsZTogJXMiLCBmaWxlUGF0
aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgK
aW5kZXggNjVhZDIyNzg3MDQuLjRjM2U4MDE4ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoSEJJVE1BUCk7CiAKICNpZm5kZWYgTkRFQlVH
Ci0gICAgdm9pZCB3cml0ZVRvRmlsZShMUENXU1RSKTsKKyAgICB2b2lkIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKExQQ1dTVFIpOwogI2VuZGlmCiAKICAgICBVSW50OCogYnVmZmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRtYXBCdWZmZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVp
Y2tMb29rLm1tCmluZGV4IGE0NWY3NTdjZGY5Li5kM2RmOGVlZWZmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIE5T
RGljdGlvbmFyeSAqdGVtcG9yYXJ5RGlyZWN0b3J5QXR0cmlidXRlcygpCiAKIE5TU3RyaW5nICpj
cmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5TU3RyaW5nICpmaWxlTmFtZSkKIHsKLSAg
ICBOU1N0cmluZyAqZG93bmxvYWREaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJRdWlja0xvb2tDb250ZW50Iik7CisgICAgTlNTdHJpbmcgKmRvd25sb2FkRGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiUXVpY2tMb29rQ29udGVudCIp
OwogICAgIGlmICghZG93bmxvYWREaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBh
c3RlYm9hcmQubW0KaW5kZXggNWNkZjRkODgxYTQuLmIzNDMxNjhlZjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbQpAQCAtNTE2LDcgKzUxNiw3IEBAIHN0YXRpYyBOU1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Q
cm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9yeShOU1VSTCAqdXJsLCBOCiAgICAgaWYg
KCF1cmwpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0
YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29yZTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CisgICAgTlNTdHJpbmcgKnRlbXBvcmFy
eURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRl
bXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnlQcmVmaXgpOwogICAgIGlm
ICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gbmls
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4
IDhmMTQzMTY1ODE4Li42NDBkZmMxMmI2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jv
b2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewogICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10g
aW5pdF0pOwogCkBAIC00NSwxMCArNDUsMTAgQEAgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogCiAgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAg
b24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90
aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBm
aWxlKQotICAgIHJldHVybiAhcm1kaXIoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRh
dGEoKSk7CisgICAgcmV0dXJuICFybWRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKTsKIH0KIAotdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIpCit2b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZl
cnJlcikKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJM
V2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKQEAgLTcxLDE1ICs3
MSwxNSBAQCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgUwogICAgIH0pOwogfQogCi1ib29sIGNhbkV4
Y2x1ZGVGcm9tQmFja3VwKCkKK2Jvb2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAo
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0
IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29uc3Qg
U3RyaW5nJiBwYXRoKQogewogICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9y
IGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290IHBy
aXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQocGF0aEFzVVJMKHBhdGgpLmdl
dCgpLCBUUlVFLCBGQUxTRSk7IAorICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0
ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0UpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JE
YXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYzg5YjUyODNlMzkuLjZhNWYxMmU4NGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJl
ZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zOCw3ICszOCw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAsIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9zaXplKDAp
Ci0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmlsZVRpbWUoKSkKKyAg
ICAsIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGlt
ZSgpKQogewogfQogCkBAIC00Niw3ICs0Niw3IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJs
b2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAg
ICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkKLSAgICAgICAgZGVsZXRlRmlsZSht
X3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBs
YWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgZG91YmxlIEJsb2JE
YXRhRmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkKICAgICAvLyBXZSBk
byBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlvbnMgZm9yIGdlbmVyYXRlZCBmaWxlcywg
YmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBp
cyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUgaGFuZGxpbmcgLSBGaWxlIG9iamVjdHMg
c2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJseWluZyBmaWxlcyBjaGFuZ2UuCiAgICAg
aWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCB8fCAhbV9yZXBsYWNlbWVudFBhdGgu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlkRmlsZVRpbWUoKTsKKyAgICAgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpOwogI2VuZGlmCiAKICAgICByZXR1cm4g
bV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9kaWZpY2F0aW9ucygpCiAjZW5kaWYKIAog
ICAgIC8vIEZJWE1FOiBTb21lIHBsYXRmb3JtcyBwcm92aWRlIGJldHRlciB3YXlzIHRvIGxpc3Rl
biBmb3IgZmlsZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMsIGNvbnNpZGVyIHVzaW5nIHRoZXNlLgot
ICAgIGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3BhdGgp
OworICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcyhtX3BhdGgpOwogICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1w
bC5jcHAKaW5kZXggMGYwMTk3NGNhMmIuLjE5N2ViMjkyZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTI4Mywx
NCArMjgzLDE0IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzCiAKICAgICAgICAgYXV0byBwZXJm
b3JtV3JpdGluZyA9IFtibG9ic0ZvcldyaXRpbmcgPSBXVEZNb3ZlKGJsb2JzRm9yV3JpdGluZyks
ICZmaWxlUGF0aHNdKCkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBibG9iIDogYmxvYnNGb3JX
cml0aW5nKSB7Ci0gICAgICAgICAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKEFTQ0lJ
TGl0ZXJhbCgiQmxvYiIpLCBmaWxlKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGVtcEZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoQVNDSUlMaXRlcmFsKCJCbG9iIiksIGZp
bGUpOwogCiAgICAgICAgICAgICAgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVF
eGl0KFtmaWxlXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBjbG9zZUZpbGUoZmls
ZSk7CisgICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKICAg
ICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
dGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5kbGVWYWxpZChmaWxlKSkgeworICAgICAg
ICAgICAgICAgIGlmICh0ZW1wRmlsZVBhdGguaXNFbXB0eSgpIHx8ICFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgZm9yIHdyaXRpbmcgYSBCbG9iIHRvIEluZGV4ZWREQiIp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQpA
QCAtMjk4LDEzICsyOTgsMTMgQEAgdm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9U
ZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMKICAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iLmZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBhcnQuc2Vjb25kLmRhdGEoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vjb25kLmRhdGEoKS0+c2l6ZSgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwgbGVuZ3RoKSAhPSBs
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRh
KCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgd3JpdGluZyBhIEJsb2IgdG8gdGVtcG9yYXJ5IGZpbGUg
Zm9yIHN0b3JhZ2UgaW4gSW5kZXhlZERCIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFwYXJ0LmZpcnN0
LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFwcGVuZEZpbGVDb250
ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0LCBmaWxlKSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjphcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUocGFy
dC5maXJzdCwgZmlsZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1Io
IkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVudHMgdG8gYSBCbG9iIHRlbXBvcmFyeSBmaWxlIGZv
ciBzdG9yYWdlIGluIEluZGV4ZWREQiAoJXMgdG8gJXMpIiwgcGFydC5maXJzdC51dGY4KCkuZGF0
YSgpLCB0ZW1wRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBjNTc1ZmRhNDUyYS4u
NzI0NDIzZWVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Rm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5n
dGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgaWYgKG1fZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0
ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgcmV0dXJuIG1fZmlsZUxlbmd0aDsKICAgICAg
ICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICBpZiAoZ2V0RmlsZVNpemUobV9zaG91bGRH
ZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9maWxlbmFtZSwgZmlsZVNpemUp
KQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZp
bGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAg
ICAgICAgcmV0dXJuIGZpbGVTaXplOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVu
ZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUs
IGludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRz
LmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRP
ZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUp
KTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTQwOCw5ICs0
MDgsOSBAQCB2b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCkKICAg
ICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6RW5jb2Rl
ZEZpbGUgJiYgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlKSB7CiAgICAgICAgICAgICBBU1NF
UlQoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOwogICAgICAgICAgICAg
QVNTRVJUKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUpOwotICAgICAgICAgICAgU3RyaW5n
IGRpcmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsK
LSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAg
ICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgICAgICAgICBT
dHJpbmcgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2Vu
ZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbGVt
ZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKICAgICAgICAgICAgIGVsZW1lbnQubV9nZW5lcmF0
ZWRGaWxlbmFtZSA9IFN0cmluZygpOwogICAgICAgICAgICAgZWxlbWVudC5tX293bnNHZW5lcmF0
ZWRGaWxlID0gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDkzODM4
MjQ0YTdjLi5hMTQ0ZDM1MjUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCkBAIC0xNDcsMTMgKzE0
NywxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRz
KiBmb3JtKQogICAgICAgICBmb3JtLT5jdXJyZW50RGF0YSA9IFdURk1vdmUoZGF0YSk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBv
ciBub3QgaWYgcmVxdWlyZWQuCi0gICAgICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUobmV4dElucHV0
Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpIHsKKyAgICAgICAgaWYgKEZpbGVTeXN0
ZW06OmlzVmFsaWRGaWxlVGltZShuZXh0SW5wdXQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lKSkgewogICAgICAgICAgICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAg
ICAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShuZXh0SW5wdXQubV9maWxlbmFtZSwg
ZmlsZU1vZGlmaWNhdGlvblRpbWUpIHx8IGZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0YXRpY19j
YXN0PHRpbWVfdD4obmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpCisg
ICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG5leHRJ
bnB1dC5tX2ZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkgfHwgZmlsZU1vZGlmaWNhdGlv
blRpbWUgIT0gc3RhdGljX2Nhc3Q8dGltZV90PihuZXh0SW5wdXQubV9leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbmV4dElucHV0Lm1fc2hvdWxkR2VuZXJhdGVG
aWxlID8gbmV4dElucHV0Lm1fZ2VuZXJhdGVkRmlsZW5hbWUgOiBuZXh0SW5wdXQubV9maWxlbmFt
ZTsKLSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhG
aWxlKDAsIHBhdGhBc1VSTChwYXRoKS5nZXQoKSk7CisgICAgICAgIGZvcm0tPmN1cnJlbnRTdHJl
YW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwo
cGF0aCkuZ2V0KCkpOwogICAgICAgICBpZiAoIWZvcm0tPmN1cnJlbnRTdHJlYW0pIHsKICAgICAg
ICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgYmVjb21lIHVucmVh
ZGFibGUuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzksNyArMzc5LDcgQEAgUmV0
YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0oRm9ybURh
dGEmIGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICAgICAgaWYgKGdldEZpbGVT
aXplKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBlbGVtZW50Lm1fZ2VuZXJhdGVkRmls
ZW5hbWUgOiBlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVTaXplKSkKKyAgICAgICAgICAgIGlmIChG
aWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gZWxl
bWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZSkp
CiAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZpbGVTaXplOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggYzc1NzVkN2FhODEuLjYyYzExYzEyNzVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIxMiw5ICsyMTIsOSBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgKFBMQVRGT1JNKE1B
QykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDApCiAgICAgaWYg
KG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7CisgICAgICAgIGF1dG8g
ZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewotICAg
ICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7Cisg
ICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQo
ZnNSZXBGaWxlKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFs
dWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIg
bnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVl
c3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApp
bmRleCBlZDU5MDI2NTFiMi4uMDM1YTZiMTkwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNTAsNyAr
NTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50
cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYg
Y2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVuYW1lKGNhY2hlRGlyKQogICAgICwgbV9jb250
ZW50RmlsZW5hbWUoY2FjaGVEaXIpCi0gICAgLCBtX2NvbnRlbnRGaWxlKGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCisgICAgLCBtX2NvbnRlbnRGaWxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6ZSgwKQogICAgICwgbV9leHBpcmVEYXRl
KC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OmlzTG9hZGluZygpIGNvbnN0CiAvLyBDYWNoZSBtYW5hZ2VyIHNob3Vs
ZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6aXND
YWNoZWQoKQogewotICAgIGlmICghZmlsZUV4aXN0cyhtX2NvbnRlbnRGaWxlbmFtZSkgfHwgIWZp
bGVFeGlzdHMobV9oZWFkZXJGaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKG1fY29udGVudEZpbGVuYW1lKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2hlYWRl
ckZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2hlYWRlclBh
cnNlZCkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNo
ZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBBcHBlbmQKLSAgICB3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBkYXRh
LCBzaXplKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBkYXRh
LCBzaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI1LDggKzEyNSw4IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIGJv
b2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRlckZpbGUgPSBv
cGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmICghaXNIYW5k
bGVWYWxpZChoZWFkZXJGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBoZWFkZXJGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgRmls
ZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQoaGVhZGVyRmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291
bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgpLmRh
dGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNDAsMTIgKzE0MCwxMiBA
QCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVl
KTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOwogICAgICAgICBDU3RyaW5nIGhl
YWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9G
aWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRp
bjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxl
LCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsK
ICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQt
PnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaGVhZGVyRmls
ZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhlYWRlckZpbGUpOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0yMjcsMTYgKzIyNywxNiBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5l
cmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCiBib29sIEN1cmxDYWNoZUVudHJ5
Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYg
YnVmZmVyKQogewogICAgIC8vIE9wZW4gdGhlIGZpbGUKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
aW5wdXRGaWxlID0gb3BlbkZpbGUoZmlsZXBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlz
SGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlcGF0aCwgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1
dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBv
cGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgbG9uZyBsb25nIGZpbGVzaXplID0gLTE7Ci0gICAg
aWYgKCFnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBmaWxl
cGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTI0OSwyNCArMjQ5LDI0IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6
OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBi
dWZmCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVhZFNp
emUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRp
b247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZyb21GaWxlKGlucHV0RmlsZSwgYnVmZmVy
LmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CisgICAgICAgIGJ5dGVz
UmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkg
KyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwogICAgICAgICBpZiAoYnl0ZXNSZWFk
ICE9IGJ1ZmZlclJlYWRTaXplKSB7CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVy
cm9yOiBDb3VsZCBub3QgcmVhZCBmcm9tICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkp
OwotICAgICAgICAgICAgY2xvc2VGaWxlKGlucHV0RmlsZSk7CisgICAgICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogCiAgICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAg
IH0KLSAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aW5wdXRGaWxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6
aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50RmlsZSgpOwotICAgIGRlbGV0ZUZpbGUo
bV9oZWFkZXJGaWxlbmFtZSk7Ci0gICAgZGVsZXRlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7Cisg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2hlYWRlckZpbGVuYW1lKTsKKyAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fY29udGVudEZpbGVuYW1lKTsKICAgICBMT0coTmV0d29yaywgIkNh
Y2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9iYXNlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogfQog
CkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cGFyc2VSZXNwb25zZUhl
YWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgZG91YmxlIGZpbGVU
aW1lOwogICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9uRGF0ZTsKIAotICAgIGlmIChnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtX2hlYWRlckZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9uRGF0ZSkp
CisgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1faGVhZGVyRmls
ZW5hbWUsIGZpbGVNb2RpZmljYXRpb25EYXRlKSkKICAgICAgICAgZmlsZVRpbWUgPSBkaWZmdGlt
ZShmaWxlTW9kaWZpY2F0aW9uRGF0ZSwgMCkgKiAxMDAwLjA7CiAgICAgZWxzZQogICAgICAgICBm
aWxlVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsgLy8gR01UCkBAIC0zNDIsMTEgKzM0MiwxMSBAQCBz
aXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgpCiAgICAgICAgIGxvbmcgbG9uZyBoZWFk
ZXJGaWxlU2l6ZTsKICAgICAgICAgbG9uZyBsb25nIGNvbnRlbnRGaWxlU2l6ZTsKIAotICAgICAg
ICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkgewor
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhl
YWRlckZpbGVTaXplKSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4x
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVudEZpbGVuYW1lLCBjb250ZW50RmlsZVNp
emUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9jb250ZW50Rmls
ZW5hbWUsIGNvbnRlbnRGaWxlU2l6ZSkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2Fj
aGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBtX2NvbnRlbnRGaWxl
bmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZW50cnlTaXplOwog
ICAgICAgICB9CkBAIC0zNjAsMTIgKzM2MCwxMiBAQCBzaXplX3QgQ3VybENhY2hlRW50cnk6OmVu
dHJ5U2l6ZSgpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6Om9wZW5Db250ZW50RmlsZSgpCiB7Ci0g
ICAgaWYgKGlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAotICAgIG1fY29udGVudEZpbGUgPSBvcGVuRmlsZShtX2NvbnRlbnRGaWxlbmFtZSwgT3BlbkZv
cldyaXRlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9jb250
ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoaXNIYW5k
bGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgTE9HKE5l
dHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2Nv
bnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwpAQCAtMzc0LDExICszNzQsMTEgQEAgYm9v
bCBDdXJsQ2FjaGVFbnRyeTo6b3BlbkNvbnRlbnRGaWxlKCkKIAogYm9vbCBDdXJsQ2FjaGVFbnRy
eTo6Y2xvc2VDb250ZW50RmlsZSgpCiB7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1fY29udGVu
dEZpbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjbG9zZUZpbGUobV9jb250ZW50RmlsZSk7
Ci0gICAgbV9jb250ZW50RmlsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fY29udGVudEZpbGUpOworICAgIG1fY29udGVudEZpbGUgPSBG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5oCmluZGV4IDkyZDZiYzMzYTRhLi44MWNiYzcxMzliMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgK
QEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9oZWFkZXJGaWxlbmFtZTsK
ICAgICBTdHJpbmcgbV9jb250ZW50RmlsZW5hbWU7CiAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9jb250ZW50RmlsZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250
ZW50RmlsZTsKIAogICAgIHNpemVfdCBtX2VudHJ5U2l6ZTsKICAgICBkb3VibGUgbV9leHBpcmVE
YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDM1YmZlMmVmMmMyLi40NmUxN2U5ZmQxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcApAQCAtNzYsOCArNzYsOCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6
OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaWYgKCFmaWxlRXhpc3RzKG1fY2FjaGVEaXIpKSB7Ci0gICAgICAg
IGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXIpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVEaXIpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXIpKSB7CiAgICAgICAgICAgICBMT0coTmV0d29y
aywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiBvciBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5
ISBDYWNoZU1hbmFnZXIgZGlzYWJsZWQuXG4iKTsKICAgICAgICAgICAgIG1fZGlzYWJsZWQgPSB0
cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAzLDE0ICsxMDMsMTQgQEAgdm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKIAotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBPcGVu
Rm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKKyAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3Jr
LCAiQ2FjaGUgV2FybmluZzogQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRcbiIsIGluZGV4Rmls
ZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGxv
bmcgbG9uZyBmaWxlc2l6ZSA9IC0xOwotICAgIGlmICghZ2V0RmlsZVNpemUoaW5kZXhGaWxlUGF0
aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShpbmRleEZp
bGVQYXRoLCBmaWxlc2l6ZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCku
ZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNCwxMCArMTI0LDEwIEBAIHZv
aWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkKICAgICAgICAgaWYgKGZpbGVzaXplIC0g
YnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKICAgICAgICAgICAgIGJ1ZmZlclJlYWRT
aXplID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKIAotICAgICAgICByZWFkRnJvbUZpbGUo
aW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXpl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGluZGV4RmlsZSwgYnVmZmVyLmRh
dGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CiAgICAgICAgIGJ1ZmZlclBv
c2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0KLSAgICBjbG9zZUZpbGUoaW5kZXhGaWxl
KTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKIAogICAgIC8vIENyZWF0
ZSBzdHJpbmdzIGZyb20gYnVmZmVyCiAgICAgU3RyaW5nIGhlYWRlckNvbnRlbnQgPSBTdHJpbmco
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CkBAIC0xNjQsOSArMTY0LDkgQEAgdm9pZCBD
dXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1f
Y2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKIAotICAg
IGRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4
RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKCFp
c0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGlu
ZGV4RmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZp
bGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVu
Rm9yV3JpdGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUp
KSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVz
IGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTc1LDEyICsxNzUsMTIgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2Vy
OjpzYXZlSW5kZXgoKQogICAgIGNvbnN0IGF1dG8mIGVuZCA9IG1fTFJVRW50cnlMaXN0LmVuZCgp
OwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgY29uc3QgQ1N0cmluZyYgdXJsTGF0
aW4xID0gaXQtPmxhdGluMSgpOwotICAgICAgICB3cml0ZVRvRmlsZShpbmRleEZpbGUsIHVybExh
dGluMS5kYXRhKCksIHVybExhdGluMS5sZW5ndGgoKSk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGlu
ZGV4RmlsZSwgIlxuIiwgMSk7CisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGluZGV4
RmlsZSwgdXJsTGF0aW4xLmRhdGEoKSwgdXJsTGF0aW4xLmxlbmd0aCgpKTsKKyAgICAgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCAiXG4iLCAxKTsKICAgICAgICAgKytpdDsK
ICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaW5kZXhGaWxlKTsKIH0KIAogdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZv
ck5ld0VudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggODUwNDdmZGM2Y2UuLmFlMmJmZDY4ZTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkQ29t
cGxldGUoKQogCiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBp
ZiAobV9jdXJsUmVxdWVzdCAmJiAhbV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRo
KCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24pOworICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6bW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVz
dGluYXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX2xpc3RlbmVyKQpAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiByZXNvdXJjZUVycm9yKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kZWxl
dGVzRmlsZVVwb25GYWlsdXJlICYmIG1fY3VybFJlcXVlc3QgJiYgIW1fY3VybFJlcXVlc3QtPmdl
dERvd25sb2FkZWRGaWxlUGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX2N1
cmxSZXF1ZXN0LT5nZXREb3dubG9hZGVkRmlsZVBhdGgoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkpOwogCiAg
ICAgaWYgKG1fbGlzdGVuZXIpCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZEZhaWwoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3Bw
CmluZGV4IDJlZTM0N2Y0NzY1Li45N2NhMzJlYTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC00NDgsNyArNDQ4
LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBGb3JtRGF0YShSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGJvb2wgaXNQb3N0UmVxdWVzdCkKICAgICBmb3IgKGF1dG8gZWxlbWVudCA6IGVsZW1l
bnRzKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5
cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICBsb25nIGxvbmcgZmlsZVNpemVSZXN1bHQ7
Ci0gICAgICAgICAgICBpZiAoZ2V0RmlsZVNpemUoZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6
ZVJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVt
ZW50Lm1fZmlsZW5hbWUsIGZpbGVTaXplUmVzdWx0KSkgewogICAgICAgICAgICAgICAgIGlmIChm
aWxlU2l6ZVJlc3VsdCA+IG1heEN1cmxPZmZUKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZp
bGUgc2l6ZSBpcyB0b28gYmlnIGZvciBzcGVjaWZ5aW5nIGl0IHRvIGNVUkwKICAgICAgICAgICAg
ICAgICAgICAgY2h1bmtlZFRyYW5zZmVyID0gdHJ1ZTsKQEAgLTYxOSwyMiArNjE5LDIyIEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKGNvbnN0IFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICht
X2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9kb3dubG9hZEZpbGVQ
YXRoID0gb3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2FkIiwgbV9kb3dubG9hZEZpbGVIYW5kbGUp
OworICAgICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoImRvd25sb2FkIiwgbV9kb3dubG9hZEZpbGVIYW5kbGUpOwogICAgIH0KIAotICAg
IGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQot
ICAgICAgICB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwg
YnVmZmVyLnNpemUoKSk7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgIEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VEb3dubG9hZEZpbGUoKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAKLSAgICBpZiAobV9kb3dubG9hZEZp
bGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBpZiAobV9kb3dubG9h
ZEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKLSAg
ICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKKyAgICBtX2Rvd25s
b2FkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiB9
CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBEb3dubG9hZEZpbGUoKQpAQCAtNjQyLDcgKzY0
Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBEb3dubG9hZEZpbGUoKQogICAgIExvY2tI
b2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAKICAgICBpZiAoIW1fZG93bmxvYWRGaWxl
UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX2Rvd25sb2FkRmlsZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZG93bmxvYWRGaWxlUGF0aCk7CiAg
ICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IFN0cmluZygpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXgg
MjViMWU5NjczNWUuLmE2N2ZmNzFmNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZh
dGU6CiAgICAgTG9jayBtX2Rvd25sb2FkTXV0ZXg7CiAgICAgYm9vbCBtX2lzRW5hYmxlZERvd25s
b2FkVG9GaWxlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcgbV9kb3dubG9hZEZpbGVQYXRoOwotICAg
IFBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3du
bG9hZEZpbGVIYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07
CiAKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1ldHJpY3M7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcAppbmRleCBlY2RiZjExYTViMi4uMWNmZmUzODNlZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNl
dENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMoY2Vy
dGlmaWNhdGUpKQorICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNlcnRpZmljYXRlKSkK
ICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpLnNldENsaWVudENl
cnRpZmljYXRlSW5mbyhob3N0LCBjZXJ0aWZpY2F0ZSwga2V5KTsKICAgICBlbHNlCiAgICAgICAg
IExPRyhOZXR3b3JrLCAiSW52YWxpZCBjbGllbnQgY2VydGlmaWNhdGUgZmlsZTogJXMhXG4iLCBj
ZXJ0aWZpY2F0ZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1t
CmluZGV4IDVhYWQyM2E1YzI2Li5mY2Y1NWQ3NmVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZU1hYy5tbQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2Vu
ZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogCiAgICAgbV9yZXBsYWNlbWVudFNob3VsZEJlR2VuZXJh
dGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwoKSkgewotICAg
ICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1f
cmVwbGFjZW1lbnRQYXRoKSkKKyAgICAgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVt
OjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2VtZW50UGF0aCkpCiAgICAg
ICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgpLmxlbmd0aDsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZVJlcXVlc3RTb3VwLmNwcAppbmRleCA2NDU3ODYxNWMxZS4uMjI2YWVlOWYwMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXF1ZXN0U291cC5jcHAKQEAgLTQxLDExICs0MSwxMSBAQCBzdGF0aWMgdWludDY0X3QgYXBw
ZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJvZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQoc291cE1lc3NhZ2UtPnJlcXVl
c3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBibG9iSXRlbS5kYXRhKCkuZGF0YSgpLT5k
YXRhKCkgKyBibG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0ZW0ubGVuZ3RoKCkpOwogICAgICAgICBy
ZXR1cm4gYmxvYkl0ZW0ubGVuZ3RoKCk7CiAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZp
bGU6IHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRmlsZVRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6aXNWYWxp
ZEZpbGVUaW1lKGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25U
aW1lOwotICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUo
KS0+cGF0aCgpLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVt
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSwgZmlsZU1v
ZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBz
dGF0aWNfY2FzdDx0aW1lX3Q+KGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5k
ZXggZDVhNzQyNjdjY2MuLjc5NWQ3ZGJjYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAt
MjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzdHJpbmdJc051bWVyaWMoY29uc3Qg
Y2hhciogc3RyKQogLy8gT2xkIHZlcnNpb25zIG9mIFdlYktpdCBjcmVhdGVkIHRoaXMgY2FjaGUu
CiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5n
JiBjYWNoZURpcmVjdG9yeSkKIHsKLSAgICBDU3RyaW5nIGNhY2hlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeSk7CisgICAgQ1N0cmluZyBjYWNoZVBhdGggPSBG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkpOwogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVGaWxlKGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVQYXRoLmRh
dGEoKSwgInNvdXAuY2FjaGUyIiwgbnVsbHB0cikpOwogICAgIGlmICghZ19maWxlX3Rlc3QoY2Fj
aGVGaWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAK
aW5kZXggZGU5YTRhNmNlZGMuLmFkM2IxOGJhNGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKIGJvb2wgZmls
ZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgaWYgKHBhdGguaXNOdWxsKCkpCkBA
IC00NDUsNCArNDQ3LDYgQEAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQo
Y29uc3QgQ1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVybiBmaWxlU3RhdC5zdF9kZXY7CiB9CiAK
K30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVgu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
CmluZGV4IGEwMDFhYmU4ZGMwLi41MTMzNzVkMjQ1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgaW50IGZkID0g
b3BlbihmaWxlbmFtZS5kYXRhKCksIE9fUkRPTkxZKTsKICAgICBpZiAoZmQgPT0gLTEpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDg0MTlkNzZjOGE1Li42YjJhZjU0NTI0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAt
NDgsMTkgKzQ4LDE5IEBAIFNRTGl0ZUZpbGVTeXN0ZW06OlNRTGl0ZUZpbGVTeXN0ZW0oKQogCiBp
bnQgU1FMaXRlRmlsZVN5c3RlbTo6b3BlbkRhdGFiYXNlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IHNxbGl0ZTMqKiBkYXRhYmFzZSwgYm9vbCkKIHsKLSAgICByZXR1cm4gc3FsaXRlM19vcGVuX3Yy
KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCBkYXRhYmFzZSwgU1FM
SVRFX09QRU5fUkVBRFdSSVRFIHwgU1FMSVRFX09QRU5fQ1JFQVRFIHwgU1FMSVRFX09QRU5fQVVU
T1BST1hZLCBudWxscHRyKTsKKyAgICByZXR1cm4gc3FsaXRlM19vcGVuX3YyKEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCBkYXRhYmFzZSwgU1FM
SVRFX09QRU5fUkVBRFdSSVRFIHwgU1FMSVRFX09QRU5fQ1JFQVRFIHwgU1FMSVRFX09QRU5fQVVU
T1BST1hZLCBudWxscHRyKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUZpbGVTeXN0ZW06OmFwcGVuZERh
dGFiYXNlRmlsZU5hbWVUb1BhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmls
ZU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGF0aCwgZmlsZU5hbWUpOwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFi
YXNlRGlyZWN0b3J5RXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBpZiAocGF0aC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbWFrZUFsbERpcmVj
dG9yaWVzKHBhdGgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
cGF0aCk7CiB9CiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VGaWxlRXhp
c3RzKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGJvb2wgY2hlY2tQYXRoT25seSkKQEAgLTY5LDE2
ICs2OSwxNiBAQCBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0
cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNoZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAoY2hlY2tQYXRoT25seSkgewotICAgICAgICBTdHJpbmcgZGlyID0gZGlyZWN0
b3J5TmFtZShmaWxlTmFtZSk7CisgICAgICAgIFN0cmluZyBkaXIgPSBGaWxlU3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKGZpbGVOYW1lKTsKICAgICAgICAgcmV0dXJuIGVuc3VyZURhdGFiYXNlRGlyZWN0
b3J5RXhpc3RzKGRpcik7CiAgICAgfQogCi0gICAgcmV0dXJuIGZpbGVFeGlzdHMoZmlsZU5hbWUp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVOYW1lKTsKIH0KIAogYm9v
bCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSAgICByZXR1cm4gZGVsZXRlRW1wdHlEaXJlY3RvcnkocGF0aCk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOwogfQogCiBi
b29sIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQpAQCAtODcsMTIgKzg3LDEyIEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgU3RyaW5nIHNobUZpbGVO
YW1lID0gbWFrZVN0cmluZyhmaWxlTmFtZSwgQVNDSUlMaXRlcmFsKCItc2htIikpOwogCiAgICAg
Ly8gVHJ5IHRvIGRlbGV0ZSBhbGwgdGhyZWUgZmlsZXMgd2hldGhlciBvciBub3QgdGhleSBhcmUg
dGhlcmUuCi0gICAgZGVsZXRlRmlsZShmaWxlTmFtZSk7Ci0gICAgZGVsZXRlRmlsZSh3YWxGaWxl
TmFtZSk7Ci0gICAgZGVsZXRlRmlsZShzaG1GaWxlTmFtZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShmaWxlTmFtZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh3YWxGaWxlTmFt
ZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShzaG1GaWxlTmFtZSk7CiAKICAgICAvLyBJ
ZiBhbnkgb2YgdGhlIHdhbCBvciBzaG0gZmlsZXMgcmVtYWluIGFmdGVyIHRoZSBkZWxldGUgYXR0
ZW1wdCwgdGhlIG92ZXJhbGwgZGVsZXRlIG9wZXJhdGlvbiBmYWlsZWQuCi0gICAgcmV0dXJuICFm
aWxlRXhpc3RzKGZpbGVOYW1lKSAmJiAhZmlsZUV4aXN0cyh3YWxGaWxlTmFtZSkgJiYgIWZpbGVF
eGlzdHMoc2htRmlsZU5hbWUpOworICAgIHJldHVybiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhm
aWxlTmFtZSkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMod2FsRmlsZU5hbWUpICYmICFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHNobUZpbGVOYW1lKTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykK
QEAgLTEwNSwxOSArMTA1LDE5IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRh
YmFzZUZpbGUoc3FsaXRlMyogZGF0YWJhc2UpCiBsb25nIGxvbmcgU1FMaXRlRmlsZVN5c3RlbTo6
Z2V0RGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogeyAgICAgICAgCiAg
ICAgbG9uZyBsb25nIHNpemU7Ci0gICAgcmV0dXJuIGdldEZpbGVTaXplKGZpbGVOYW1lLCBzaXpl
KSA/IHNpemUgOiAwOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlTmFt
ZSwgc2l6ZSkgPyBzaXplIDogMDsKIH0KIAogZG91YmxlIFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFi
YXNlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7CiAgICAgdGltZV90IHRp
bWU7Ci0gICAgcmV0dXJuIGdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGlt
ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5h
bWUsIHRpbWUpID8gdGltZSA6IDA7CiB9CiAKIGRvdWJsZSBTUUxpdGVGaWxlU3lzdGVtOjpkYXRh
YmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKICAgICB0aW1l
X3QgdGltZTsKLSAgICByZXR1cm4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUsIHRp
bWUpID8gdGltZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9I
eXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggNzZmOTI0ZWFiYjIuLmM5MDg2OTMw
MTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9o
eXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyBT
dHJpbmcgZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBm
aWxlUGF0aCkKIHsKICAgICAvLyBEaWN0aW9uYXJ5IGZpbGVzIGFsd2F5cyBoYXZlIHRoZSBmb3Jt
ICJoeXBoXzxsb2NhbGUgbmFtZT4uZGljIgogICAgIC8vIHNvIHdlIHN0cmlwIGV2ZXJ5dGhpbmcg
ZXhjZXB0IHRoZSBsb2NhbGUuCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gcGF0aEdldEZpbGVOYW1l
KGZpbGVQYXRoKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUoZmlsZVBhdGgpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgcHJlZml4TGVuZ3RoID0gNTsK
ICAgICBzdGF0aWMgY29uc3QgaW50IHN1ZmZpeExlbmd0aCA9IDQ7CiAgICAgcmV0dXJuIGZpbGVO
YW1lLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIGZpbGVOYW1lLmxlbmd0aCgpIC0gcHJlZml4TGVu
Z3RoIC0gc3VmZml4TGVuZ3RoKTsKQEAgLTYxLDE0ICs2MSwxNCBAQCBzdGF0aWMgU3RyaW5nIGV4
dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgp
CiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlGb3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciog
ZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYgYXZh
aWxhYmxlTG9jYWxlcykKIHsKLSAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDogbGlzdERpcmVjdG9y
eShkaXJlY3RvcnlQYXRoLCAiaHlwaF8qLmRpYyIpKSB7CisgICAgZm9yIChhdXRvJiBmaWxlUGF0
aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgImh5cGhfKi5kaWMi
KSkgewogICAgICAgICBTdHJpbmcgbG9jYWxlID0gZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5
RmlsZVBhdGgoZmlsZVBhdGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAKICAgICAgICAg
Y2hhciBub3JtYWxpemVkUGF0aFtQQVRIX01BWF07Ci0gICAgICAgIGlmICghcmVhbHBhdGgoZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRoKSkK
KyAgICAgICAgaWYgKCFyZWFscGF0aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZmlsZVBhdGgpLmRhdGEoKSwgbm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgZmlsZVBhdGggPSBzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKG5vcm1hbGl6ZWRQYXRoKTsKKyAgICAgICAgZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKTsKICAgICAgICAg
YXZhaWxhYmxlTG9jYWxlcy5hZGQobG9jYWxlLCBWZWN0b3I8U3RyaW5nPigpKS5pdGVyYXRvci0+
dmFsdWUuYXBwZW5kKGZpbGVQYXRoKTsKIAogICAgICAgICBTdHJpbmcgbG9jYWxlUmVwbGFjaW5n
VW5kZXJzY29yZXMgPSBTdHJpbmcobG9jYWxlKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeT4gY3Jl
YXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBkaWN0aW9uYXJ5UGF0aCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShX
ZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkp
KTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRl
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5
UGF0aC5zdHJpbmcoKSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBmMGMzNTAyOTg2NC4uOTZiZDAzMzU5YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTEw
Myw3ICsxMDMsNyBAQCBzdGF0aWMgdm9pZCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZUZyb21GaW5k
RGF0YShjb25zdCBXSU4zMl9GSU5EX0RBVEFXJiBmaW5kRGF0YQogICAgIHRpbWUgPSBmaWxlVGlt
ZS5RdWFkUGFydCAvIDEwMDAwMDAwIC0ga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0OwogfQog
Ci1ib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nJiBzaXplKQor
Ym9vbCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9u
ZyYgc2l6ZSkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0
RmluZERhdGEocGF0aCwgZmluZERhdGEpKQpAQCAtMTEyLDcgKzExMiw3IEBAIGJvb2wgZ2V0Rmls
ZVNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcmIHNpemUpCiAgICAgcmV0dXJuIGdl
dEZpbGVTaXplRnJvbUZpbmREYXRhKGZpbmREYXRhLCBzaXplKTsKIH0KIAotYm9vbCBnZXRGaWxl
U2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQorYm9v
bCBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZSwgbG9uZyBsb25nJiBzaXplKQogewogICAgIEJZX0hBTkRMRV9GSUxFX0lORk9S
TUFUSU9OIGZpbGVJbmZvcm1hdGlvbjsKICAgICBpZiAoITo6R2V0RmlsZUluZm9ybWF0aW9uQnlI
YW5kbGUoZmlsZUhhbmRsZSwgJmZpbGVJbmZvcm1hdGlvbikpCkBAIC0xMjEsNyArMTIxLDcgQEAg
Ym9vbCBnZXRGaWxlU2l6ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgbG9uZyBsb25n
JiBzaXplKQogICAgIHJldHVybiBnZXRGaWxlU2l6ZUZyb21CeUhhbmRsZUZpbGVJbmZvcm1hdGlv
blN0cnVjdHVyZShmaWxlSW5mb3JtYXRpb24sIHNpemUpOwogfQogCi1ib29sIGdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiB0aW1lKQorYm9vbCBGaWxl
U3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgdGltZSkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0
RmluZERhdGEocGF0aCwgZmluZERhdGEpKQpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcm
IHBhdGgsIHRpbWVfdCYgdGltZSkKK2Jvb2wgRmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgdGltZSkKIHsKICAgICBXSU4zMl9GSU5EX0RB
VEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQpAQCAt
MTQzLDE2ICsxNDMsMTYgQEAgYm9vbCBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCwgdGltZV90JiB0aW1lKQogCiBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUocGF0aCwgT3Bl
bkZvclJlYWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQorICAgIGF1dG8gaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQp
OworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhfUEFU
SCk7CiAgICAgaWYgKDo6R2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoYW5kbGUsIGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCksIFZPTFVNRV9OQU1FX05UKSA+PSBNQVhfUEFUSCkgewotICAg
ICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9Ci0gICAgY2xvc2VGaWxlKGhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBidWZmZXIu
c2hyaW5rKHdjc2xlbihidWZmZXIuZGF0YSgpKSk7CiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQo
V1RGTW92ZShidWZmZXIpKTsKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0YWRhdGEoV0lOMzJfRklORF9EQVRBVyBm
aW5kRAogICAgIH07CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBwYXRoKQorc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IEZpbGVT
eXN0ZW06OmZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklO
RF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkK
QEAgLTE5OCw3ICsxOTgsNyBAQCBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFk
YXRhKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gZmluZERhdGFUb0ZpbGVNZXRhZGF0
YShmaW5kRGF0YSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRh
dGFGb2xsb3dpbmdTeW1saW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpCitzdGQ6Om9wdGlvbmFsPEZp
bGVNZXRhZGF0YT4gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIFdJTjMyX0ZJTkRfREFUQVcgZmluZERhdGE7CiAgICAg
aWYgKCFnZXRGaW5kRGF0YShwYXRoLCBmaW5kRGF0YSkpCkBAIC0yMTUsMzcgKzIxNSwzNyBAQCBz
dGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Mo
Y29uc3QgU3RyaW5nJiBwYXRoKQogICAgIHJldHVybiBmaW5kRGF0YVRvRmlsZU1ldGFkYXRhKGZp
bmREYXRhKTsKIH0KIAotYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJn
ZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpCitib29sIEZpbGVTeXN0ZW06
OmNyZWF0ZVN5bWJvbGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmlu
ZyYgc3ltYm9saWNMaW5rUGF0aCkKIHsKICAgICByZXR1cm4gITo6Q3JlYXRlU3ltYm9saWNMaW5r
VyhzeW1ib2xpY0xpbmtQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
LCB0YXJnZXRQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwKTsK
IH0KIAotYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklORF9EQVRB
VyBmaW5kRGF0YTsKICAgICByZXR1cm4gZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpOwogfQog
Ci1ib29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQorYm9vbCBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBw
YXRoOwogICAgIHJldHVybiAhIURlbGV0ZUZpbGVXKGZpbGVuYW1lLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpKTsKIH0KIAotYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpCitib29sIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoOwogICAg
IHJldHVybiAhIVJlbW92ZURpcmVjdG9yeVcoZmlsZW5hbWUuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKS5kYXRhKCkpOwogfQogCi1ib29sIG1vdmVGaWxlKGNvbnN0IFN0cmluZyYgb2xk
UGF0aCwgY29uc3QgU3RyaW5nJiBuZXdQYXRoKQorYm9vbCBGaWxlU3lzdGVtOjptb3ZlRmlsZShj
b25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3UGF0aCkKIHsKICAgICBTdHJp
bmcgb2xkRmlsZW5hbWUgPSBvbGRQYXRoOwogICAgIFN0cmluZyBuZXdGaWxlbmFtZSA9IG5ld1Bh
dGg7CiAgICAgcmV0dXJuICEhOjpNb3ZlRmlsZUV4KG9sZEZpbGVuYW1lLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBuZXdGaWxlbmFtZS5jaGFyYWN0ZXJzV2l0aE51bGxU
ZXJtaW5hdGlvbigpLmRhdGEoKSwgTU9WRUZJTEVfQ09QWV9BTExPV0VEIHwgTU9WRUZJTEVfUkVQ
TEFDRV9FWElTVElORyk7CiB9CiAKLVN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKK1N0cmluZyBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBT
dHJpbmcmIGNvbXBvbmVudCkKIHsKICAgICBTdHJpbmdWZWN0b3I8VUNoYXI+IGJ1ZmZlcihNQVhf
UEFUSCk7CiAKQEAgLTI2MywxNyArMjYzLDE3IEBAIFN0cmluZyBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCkKICAgICBy
ZXR1cm4gU3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogfQogCi1TdHJpbmcgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyhTdHJpbmdWaWV3IHBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmdW
aWV3PiYgY29tcG9uZW50cykKK1N0cmluZyBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnRzKFN0cmluZ1ZpZXcgcGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZ1ZpZXc+JiBjb21wb25l
bnRzKQogewogICAgIFN0cmluZyByZXN1bHQgPSBwYXRoLnRvU3RyaW5nKCk7CiAgICAgZm9yIChh
dXRvJiBjb21wb25lbnQgOiBjb21wb25lbnRzKQotICAgICAgICByZXN1bHQgPSBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVzdWx0LCBjb21wb25lbnQudG9TdHJpbmcoKSk7CisgICAgICAgIHJl
c3VsdCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZXN1bHQsIGNvbXBv
bmVudC50b1N0cmluZygpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAjaWYgIVVTRShDRikK
IAotQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQor
Q1N0cmluZyBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzID0gcGF0aC51cGNvbnZl
cnRlZENoYXJhY3RlcnMoKTsKIApAQCAtMjkwLDcgKzI5MCw3IEBAIENTdHJpbmcgZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIAogI2VuZGlmIC8vICFVU0UoQ0Yp
CiAKLWJvb2wgbWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBT
dHJpbmcgZnVsbFBhdGggPSBwYXRoOwogICAgIGlmIChTSENyZWF0ZURpcmVjdG9yeUV4KDAsIGZ1
bGxQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpLCAwKSAhPSBFUlJP
Ul9TVUNDRVNTKSB7CkBAIC0zMDMsMjAgKzMwMywyMCBAQCBib29sIG1ha2VBbGxEaXJlY3Rvcmll
cyhjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVN0cmluZyBob21l
RGlyZWN0b3J5UGF0aCgpCitTdHJpbmcgRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuICIiOwogfQogCi1TdHJpbmcgcGF0
aEdldEZpbGVOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyBGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHJldHVybiBTdHJpbmcoOjpQ
YXRoRmluZEZpbGVOYW1lKFN0cmluZyhwYXRoKS5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSkpOwogfQogCi1TdHJpbmcgZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBh
dGgpCitTdHJpbmcgRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb25zdCBTdHJpbmcmIHBhdGgp
CiB7Ci0gICAgU3RyaW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0aC5sZW5ndGgoKSAtIHBhdGhHZXRG
aWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7CisgICAgU3RyaW5nIG5hbWUgPSBwYXRoLmxlZnQocGF0
aC5sZW5ndGgoKSAtIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5sZW5ndGgoKSk7
CiAgICAgaWYgKG5hbWUuY2hhcmFjdGVyU3RhcnRpbmdBdChuYW1lLmxlbmd0aCgpIC0gMSkgPT0g
J1xcJykgewogICAgICAgICAvLyBSZW1vdmUgYW55IHRyYWlsaW5nICJcIi4KICAgICAgICAgbmFt
ZS50cnVuY2F0ZShuYW1lLmxlbmd0aCgpIC0gMSk7CkBAIC0zNTIsOCArMzUyLDggQEAgc3RhdGlj
IFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5KERXT1JEIHBhdGhJZGVudGlmaWVyKQogICAgIGJ1ZmZl
ci5yZXNpemUod2NzbGVuKGJ1ZmZlci5kYXRhKCkpKTsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0g
U3RyaW5nOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpOwogCi0gICAgZGlyZWN0b3J5ID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgIkFwcGxlIENvbXB1dGVyXFwiICsgYnVuZGxl
TmFtZSgpKTsKLSAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnkpKQorICAgIGRp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3Rvcnks
ICJBcHBsZSBDb21wdXRlclxcIiArIGJ1bmRsZU5hbWUoKSk7CisgICAgaWYgKCFGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoZGlyZWN0b3J5KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgcmV0dXJuIGRpcmVjdG9yeTsKQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgU3Ry
aW5nIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCiAgICAgcmV0
dXJuIGRpcmVjdG9yeTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmlu
ZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorU3RyaW5nIEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSYgaGFuZGxlKQogewogICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogCkBAIC0z
OTYsMzIgKzM5NiwzMiBAQCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwg
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAKICAgICAgICAgQVNTRVJUKHdjc2xlbih0ZW1w
RmlsZSkgPT0gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wRmlsZSkgLSAxKTsKIAotICAgICAgICBwcm9w
b3NlZFBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQodGVtcFBhdGgsIHRlbXBGaWxlKTsK
KyAgICAgICAgcHJvcG9zZWRQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHRlbXBQYXRoLCB0ZW1wRmlsZSk7CiAgICAgICAgIGlmIChwcm9wb3NlZFBhdGguaXNFbXB0
eSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8g
YXZvaWQgb3ZlcndyaXRpbmcgYW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKICAg
ICAgICAgaGFuZGxlID0gOjpDcmVhdGVGaWxlVyhwcm9wb3NlZFBhdGguY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAs
IDAsIENSRUFURV9ORVcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Ci0gICAgfSB3aGlsZSAo
IWlzSGFuZGxlVmFsaWQoaGFuZGxlKSAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZ
X0VYSVNUUyk7CisgICAgfSB3aGlsZSAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFuZGxl
KSAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUyk7CiAKLSAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgcmV0dXJuIHByb3Bv
c2VkUGF0aDsKIH0KIAotUGxhdGZvcm1GaWxlSGFuZGxlIG9wZW5GaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
RmlsZVN5c3RlbTo6b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGUgbW9kZSkKIHsKICAgICBEV09SRCBkZXNpcmVkQWNjZXNzID0gMDsKICAgICBEV09S
RCBjcmVhdGlvbkRpc3Bvc2l0aW9uID0gMDsKICAgICBEV09SRCBzaGFyZU1vZGUgPSAwOwogICAg
IHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgT3BlbkZvclJlYWQ6CisgICAgY2FzZSBGaWxlU3lz
dGVtOjpPcGVuRm9yUmVhZDoKICAgICAgICAgZGVzaXJlZEFjY2VzcyA9IEdFTkVSSUNfUkVBRDsK
ICAgICAgICAgY3JlYXRpb25EaXNwb3NpdGlvbiA9IE9QRU5fRVhJU1RJTkc7CiAgICAgICAgIHNo
YXJlTW9kZSA9IEZJTEVfU0hBUkVfUkVBRDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPcGVu
Rm9yV3JpdGU6CisgICAgY2FzZSBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGU6CiAgICAgICAgIGRl
c2lyZWRBY2Nlc3MgPSBHRU5FUklDX1dSSVRFOwogICAgICAgICBjcmVhdGlvbkRpc3Bvc2l0aW9u
ID0gQ1JFQVRFX0FMV0FZUzsKICAgICAgICAgYnJlYWs7CkBAIC00MzMsMTkgKzQzMywxOSBAQCBQ
bGF0Zm9ybUZpbGVIYW5kbGUgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1v
ZGUgbW9kZSkKICAgICByZXR1cm4gQ3JlYXRlRmlsZShkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0
aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSwgZGVzaXJlZEFjY2Vzcywgc2hhcmVNb2RlLCAwLCBj
cmVhdGlvbkRpc3Bvc2l0aW9uLCBGSUxFX0FUVFJJQlVURV9OT1JNQUwsIDApOwogfQogCi12b2lk
IGNsb3NlRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRsZSkKK3ZvaWQgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYgaGFuZGxlKQogewotICAg
IGlmIChpc0hhbmRsZVZhbGlkKGhhbmRsZSkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChoYW5kbGUpKSB7CiAgICAgICAgIDo6Q2xvc2VIYW5kbGUoaGFuZGxlKTsKLSAgICAg
ICAgaGFuZGxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKKyAgICAgICAgaGFuZGxlID0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKICAgICB9CiB9CiAKLWxvbmcg
bG9uZyBzZWVrRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBsb25nIGxvbmcgb2Zmc2V0
LCBGaWxlU2Vla09yaWdpbiBvcmlnaW4pCitsb25nIGxvbmcgRmlsZVN5c3RlbTo6c2Vla0ZpbGUo
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgbG9uZyBsb25nIG9mZnNldCwg
RmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW4gb3JpZ2luKQogewogICAgIERXT1JEIG1vdmVNZXRo
b2QgPSBGSUxFX0JFR0lOOwogCi0gICAgaWYgKG9yaWdpbiA9PSBTZWVrRnJvbUN1cnJlbnQpCisg
ICAgaWYgKG9yaWdpbiA9PSBGaWxlU3lzdGVtOjpTZWVrRnJvbUN1cnJlbnQpCiAgICAgICAgIG1v
dmVNZXRob2QgPSBGSUxFX0NVUlJFTlQ7CiAgICAgZWxzZSBpZiAob3JpZ2luID09IFNlZWtGcm9t
RW5kKQogICAgICAgICBtb3ZlTWV0aG9kID0gRklMRV9FTkQ7CkBAIC00NjEsOSArNDYxLDkgQEAg
bG9uZyBsb25nIHNlZWtGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyBv
ZmZzZXQsIEZpbGVTZWVrT3JpZ2luIG8KICAgICByZXR1cm4gbGFyZ2VPZmZzZXQuUXVhZFBhcnQ7
CiB9CiAKLWludCB3cml0ZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCBjb25zdCBj
aGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQoraW50IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW5ndGgpCiB7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAg
IERXT1JEIGJ5dGVzV3JpdHRlbjsKQEAgLTQ3NCw5ICs0NzQsOSBAQCBpbnQgd3JpdGVUb0ZpbGUo
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihieXRlc1dyaXR0ZW4pOwogfQogCi1pbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5n
dGgpCitpbnQgRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGUsIGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7Ci0gICAgaWYgKCFpc0hh
bmRsZVZhbGlkKGhhbmRsZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGhh
bmRsZSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIERXT1JEIGJ5dGVzUmVhZDsKQEAgLTQ4
NywyMiArNDg3LDIyIEBAIGludCByZWFkRnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZSwgY2hhciogZGF0YSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihi
eXRlc1JlYWQpOwogfQogCi1ib29sIGhhcmRMaW5rT3JDb3B5RmlsZShjb25zdCBTdHJpbmcmIHNv
dXJjZSwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbikKK2Jvb2wgRmlsZVN5c3RlbTo6aGFyZExp
bmtPckNvcHlGaWxlKGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uKQogewogICAgIHJldHVybiAhITo6Q29weUZpbGUoc291cmNlLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpLCBkZXN0aW5hdGlvbi5jaGFyYWN0ZXJzV2l0aE51bGxUZXJt
aW5hdGlvbigpLmRhdGEoKSwgVFJVRSk7CiB9CiAKLVN0cmluZyBsb2NhbFVzZXJTcGVjaWZpY1N0
b3JhZ2VEaXJlY3RvcnkoKQorU3RyaW5nIEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJ
RExfTE9DQUxfQVBQREFUQSk7CiB9CiAKLVN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCitTdHJpbmcgRmlsZVN5c3RlbTo6cm9hbWluZ1VzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKQogewogICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENTSURM
X0FQUERBVEEpOwogfQogCi1WZWN0b3I8U3RyaW5nPiBsaXN0RGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbHRlcikKK1ZlY3RvcjxTdHJpbmc+IEZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgZmlsdGVyKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGVudHJpZXM7CiAKQEAgLTUyMCwyNSAr
NTIwLDI1IEBAIFZlY3RvcjxTdHJpbmc+IGxpc3REaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnksIGNvbnN0IFN0cmluZyYgZmlsdGVyKQogICAgIHJldHVybiBlbnRyaWVzOwogfQogCi1i
b29sIGdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCitib29sIEZp
bGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShjb25zdCBTdHJpbmcmLCB1aW50NjRfdCYpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3N0
ZDo6b3B0aW9uYWw8aW50MzJfdD4gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGNvbnN0IENT
dHJpbmcmIGZzRmlsZSkKIHsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRh
KCksIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKKyAgICBh
dXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZzRmlsZS5kYXRhKCksIEZpbGVTeXN0
ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGFu
ZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIEJZX0hBTkRMRV9GSUxF
X0lORk9STUFUSU9OIGZpbGVJbmZvcm1hdGlvbiA9IHsgfTsKICAgICBpZiAoITo6R2V0RmlsZUlu
Zm9ybWF0aW9uQnlIYW5kbGUoaGFuZGxlLCAmZmlsZUluZm9ybWF0aW9uKSkgewotICAgICAgICBj
bG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgY2xvc2VGaWxlKGhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICByZXR1cm4g
ZmlsZUluZm9ybWF0aW9uLmR3Vm9sdW1lU2VyaWFsTnVtYmVyOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMzcwMWNkZDhhMDMuLjNjNmY1NmUx
OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKQEAg
LTIwMDksNyArMjAwOSw3IEBAIFN0cmluZyBSZW5kZXJUaGVtZUd0azo6ZmlsZUxpc3ROYW1lRm9y
V2lkdGgoY29uc3QgRmlsZUxpc3QqIGZpbGVMaXN0LCBjb25zdCBGb250CiAKICAgICBTdHJpbmcg
c3RyaW5nOwogICAgIGlmIChmaWxlTGlzdC0+bGVuZ3RoKCkpCi0gICAgICAgIHN0cmluZyA9IHBh
dGhHZXRGaWxlTmFtZShmaWxlTGlzdC0+aXRlbSgwKS0+cGF0aCgpKTsKKyAgICAgICAgc3RyaW5n
ID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGZpbGVMaXN0LT5pdGVtKDApLT5wYXRoKCkp
OwogICAgIGVsc2UgaWYgKG11bHRpcGxlRmlsZXNBbGxvd2VkKQogICAgICAgICBzdHJpbmcgPSBm
aWxlQnV0dG9uTm9GaWxlc1NlbGVjdGVkTGFiZWwoKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcAppbmRleCBhYTM3MGMzM2ZhMy4uZTUxYTI0
ZTI5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApA
QCAtMTAyNCw3ICsxMDI0LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yKENT
U1ZhbHVlSUQgY3NzVmFsdWVJZCkgY29uc3QKICNpZiBFTkFCTEUoVklERU8pCiBzdGF0aWMgY29u
c3Qgc2l6ZV90IG1heGltdW1SZWFzb25hYmxlQnVmZmVyU2l6ZSA9IDMyNzY4OwogCi1zdGF0aWMg
dm9pZCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
LCBsb25nIGxvbmcgZmlsZXNpemUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQorc3RhdGljIHZvaWQg
ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKIHsKICAg
ICAvLyBMb2FkIHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKICAgICBidWZmZXIucmVzaXpl
KGZpbGVzaXplICsgMSk7CkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBzdGF0aWMgdm9pZCBmaWxsQnVm
ZmVyV2l0aENvbnRlbnRzT2ZGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBsb25nIGxvbmcg
ZmlsZQogICAgICAgICBpZiAoZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRT
aXplKQogICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSBmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0
aW9uOwogCi0gICAgICAgIGJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0
YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKKyAgICAgICAgYnl0ZXNSZWFk
ID0gRmlsZVN5c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQ
b3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwogICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZl
clJlYWRTaXplKSB7CiAgICAgICAgICAgICBidWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTEwNTgsMTkgKzEwNTgsMTkgQEAgU3RyaW5nIFJlbmRlclRoZW1lV2luOjpzdHJp
bmdXaXRoQ29udGVudHNPZkZpbGUoQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZTdHJpbmdSZWYgdHkKICAg
ICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVlc3RlZFVSTFJlZi5n
ZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxl
ID0gb3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlz
SGFuZGxlVmFsaWQocmVxdWVzdGVkRmlsZUhhbmRsZSkpCisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShy
ZXF1ZXN0ZWRGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChyZXF1ZXN0ZWRGaWxlSGFuZGxlKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgbG9uZyBsb25nIGZpbGVzaXplID0gLTE7Ci0gICAgaWYgKCFn
ZXRGaWxlU2l6ZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCBmaWxlc2l6ZSkpIHsKLSAgICAgICAgY2xv
c2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0Rmls
ZVNpemUocmVxdWVzdGVkRmlsZUhhbmRsZSwgZmlsZXNpemUpKSB7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogICAgIH0KIAogICAgIFZlY3RvcjxjaGFyPiBmaWxlQ29udGVudHM7CiAgICAgZmlsbEJ1
ZmZlcldpdGhDb250ZW50c09mRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCBmaWxlc2l6ZSwgZmls
ZUNvbnRlbnRzKTsKLSAgICBjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUpOwogCiAgICAgcmV0dXJuIFN0
cmluZyhmaWxlQ29udGVudHMuZGF0YSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGZpbGVzaXplKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IGY2N2IwNTk3ZTEzLi5mY2UwM2ZmY2VlNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MiBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6CisgICAgICAgICogU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXguY3BwOgorICAgICAgICAq
IFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHA6CisgICAgICAgICogU2hh
cmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1w
bGVyLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3Bw
OgorICAgICAgICAqIFNoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tOgorICAgICAgICAqIFNo
YXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJv
eEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKiBTaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRhYmxl
UGF0aFdQRS5jcHA6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
Z3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5p
eC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy93
cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3Bw
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNz
aW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKwogMjAxNy0xMC0zMCAgTWljaGFlbCBDYXRhbnphcm8g
IDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gRml4IGJ1aWxkIHdhcm5p
bmdzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9C
bG9iRG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAppbmRleCBjNmZmMTVhM2JiOC4uNjU0ODYwZDQ3
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Js
b2JEb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcApAQCAtNTYsMTYgKzU2LDE2IEBAIHZvaWQg
QmxvYkRvd25sb2FkQ2xpZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25QCiB7CiAgICAgQVNTRVJUKCFkZXN0aW5hdGlvblBhdGguaXNFbXB0
eSgpKTsKIAotICAgIGlmIChmaWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0aCkpIHsKKyAgICBpZiAo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkZXN0aW5hdGlvblBhdGgpKSB7CiAgICAgICAgIGlmICgh
YWxsb3dPdmVyd3JpdGUpIHsKICAgICAgICAgICAgIGRpZEZhaWwobnVsbHB0ciwgY2FuY2VsbGVk
RXJyb3IobV9kb3dubG9hZC5yZXF1ZXN0KCkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBkZWxldGVGaWxlKGRlc3RpbmF0aW9uUGF0aCk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb25QYXRoKTsKICAgICB9CiAKICAgICBtX2Rlc3Rp
bmF0aW9uUGF0aCA9IGRlc3RpbmF0aW9uUGF0aDsKLSAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IG9w
ZW5GaWxlKG1fZGVzdGluYXRpb25QYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIG1fZGVzdGluYXRp
b25GaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIEZpbGVTeXN0
ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgbV9kb3dubG9hZC5kaWRDcmVhdGVEZXN0aW5hdGlvbiht
X2Rlc3RpbmF0aW9uUGF0aCk7CiAKICAgICBtX2Rvd25sb2FkLmNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlKCk7CkBAIC03MywzMCArNzMsMzAgQEAgdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRp
ZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblAKIAog
dm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUq
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50KQogewotICAgIHdyaXRlVG9GaWxlKG1f
ZGVzdGluYXRpb25GaWxlLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZGVzdGluYXRpb25GaWxlLCBidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgIG1fZG93bmxvYWQuZGlkUmVjZWl2ZURhdGEoYnVmZmVyLT5z
aXplKCkpOwogfQogCiB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoTG9hZGluZyhS
ZXNvdXJjZUhhbmRsZSopCiB7Ci0gICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZpbGUpOwogICAgIG1fZG93bmxv
YWQuZGlkRmluaXNoKCk7CiB9CiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwo
KQogewotICAgIGNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKICAgICBpZiAoIW1fZGVzdGluYXRpb25QYXRo
LmlzRW1wdHkoKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOwogCiAgICAgbV9k
b3dubG9hZC5kaWRDYW5jZWwoSVBDOjpEYXRhUmVmZXJlbmNlKCkpOwogfQogCiB2b2lkIEJsb2JE
b3dubG9hZENsaWVudDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIGNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKICAgICBpZiAoIW1fZGVzdGlu
YXRpb25QYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0
aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOwog
CiAgICAgbV9kb3dubG9hZC5kaWRGYWlsKGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9i
RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Jsb2JEb3dubG9hZENsaWVudC5oCmluZGV4IDRhNDJjYzJjYTc3Li5mOTQwNjExYjMwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25s
b2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIERv
d25sb2FkJiBtX2Rvd25sb2FkOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uUGF0aDsKLSAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUgeyBXZWJDb3JlOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIG1fZGVzdGluYXRpb25GaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggNzhlNWE0
MTY1YmMuLjZkYTUzZjNlMWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIE5l
dHdvcmtEYXRhVGFza0Jsb2I6OmNvbnN1bWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRl
c1JlYWQpCiAgICAgbV90b3RhbFJlbWFpbmluZ1NpemUgLT0gYnl0ZXNSZWFkOwogCiAgICAgaWYg
KGJ5dGVzUmVhZCkgewotICAgICAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkgeworICAgICAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICAgICAgaWYgKCF3cml0ZURv
d25sb2FkKGRhdGEsIGJ5dGVzUmVhZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9IGVsc2UgewpAQCAtNDQ4LDggKzQ0OCw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uCiAg
ICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5j
b25zdW1lKCk7CiAKLSAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgZmlsZUV4aXN0cyhtX3BlbmRp
bmdEb3dubG9hZExvY2F0aW9uKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX3BlbmRpbmdEb3dubG9h
ZExvY2F0aW9uKTsKKyAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKTsKIH0KIAogU3RyaW5nIE5ldHdvcmtE
YXRhVGFza0Jsb2I6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKQEAgLTQ2Nyw4ICs0NjcsOCBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIAogICAgIExPRyhOZXR3b3Jr
U2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQgdG8gJXMiLCB0aGlz
LCBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9kb3du
bG9hZEZpbGUgPSBvcGVuRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uLCBPcGVuRm9yV3Jp
dGUpOwotICAgIGlmIChtX2Rvd25sb2FkRmlsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CisgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX3BlbmRpbmdE
b3dubG9hZExvY2F0aW9uLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlmIChtX2Rv
d25sb2FkRmlsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAg
ICAgICAgIGRpZEZhaWxEb3dubG9hZChjYW5jZWxsZWRFcnJvcihtX2ZpcnN0UmVxdWVzdCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZG93bmxvYWQoKQogYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURv
d25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiB7CiAgICAgQVNTRVJUKGlz
RG93bmxvYWQoKSk7Ci0gICAgaW50IGJ5dGVzV3JpdHRlbiA9IHdyaXRlVG9GaWxlKG1fZG93bmxv
YWRGaWxlLCBkYXRhLCBieXRlc1JlYWQpOworICAgIGludCBieXRlc1dyaXR0ZW4gPSBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKICAgICBp
ZiAoYnl0ZXNXcml0dGVuID09IC0xKSB7CiAgICAgICAgIGRpZEZhaWxEb3dubG9hZChjYW5jZWxs
ZWRFcnJvcihtX2ZpcnN0UmVxdWVzdCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDMs
MTEgKzUwMywxMSBAQCBib29sIE5ldHdvcmtEYXRhVGFza0Jsb2I6OndyaXRlRG93bmxvYWQoY29u
c3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
OjpjbGVhbkRvd25sb2FkRmlsZXMoKQogewotICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7Ci0gICAgICAgIGNsb3NlRmlsZShtX2Rvd25sb2FkRmls
ZSk7Ci0gICAgICAgIG1fZG93bmxvYWRGaWxlID0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsK
KyAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUp
OworICAgICAgICBtX2Rvd25sb2FkRmlsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGU7CiAgICAgfQotICAgIGRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlv
bik7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9u
KTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGYWlsRG93bmxvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCkBAIC01MzYsOCArNTM2LDggQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAi
JXAgLSBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGaW5pc2hEb3dubG9hZCIsIHRoaXMpOwogCiAg
ICAgQVNTRVJUKGlzRG93bmxvYWQoKSk7Ci0gICAgY2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlKTsK
LSAgICBtX2Rvd25sb2FkRmlsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgRmls
ZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlKTsKKyAgICBtX2Rvd25sb2FkRmlsZSA9
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAKICAgICBpZiAobV9zYW5k
Ym94RXh0ZW5zaW9uKSB7CiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+cmV2b2tlKCk7CkBA
IC01NjksNyArNTY5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGYWlsKEVycm9y
IGVycm9yQ29kZSkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRGaW5pc2goKQogewot
ICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7Cisg
ICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKICAgICAgICAgZGlkRmluaXNoRG93bmxvYWQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmgKaW5kZXggNTE5MzU5NDQ5NTUuLjkyNjZlZGVjNmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaApAQCAtMTEzLDcg
KzExMyw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zaXplSXRlbUNvdW50IHsgMCB9Owog
ICAgIHVuc2lnbmVkIG1fcmVhZEl0ZW1Db3VudCB7IDAgfTsKICAgICBib29sIG1fZmlsZU9wZW5l
ZCB7IGZhbHNlIH07Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRG
aWxlIHsgV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIAogICAgIFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gbV9maWxlUmVmZXJlbmNlczsK
ICAgICBSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4gbV9zYW5kYm94RXh0ZW5zaW9uOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAyZmQ4
ZWZmMTM1MS4uNmU1Y2RmNzZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1l
bW9yeUNhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7
CiAgICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6Z2V0Vm9s
dW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisgICAg
aWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURp
cmVjdG9yeSwgZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3Rvciwg
dXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAg
ICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5
LgogICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmlu
ZGV4IGY4MTczNjJkYWU1Li42Nzk0OTM1MDM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcApAQCAtNTgs
NyArNTgsNyBAQCBTdHJpbmcgRW5naW5lOjpjYWNoZXNSb290UGF0aChjb25zdCBTdHJpbmcmIG9y
aWdpbikKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIEtleSBrZXkob3JpZ2luLCB7IH0sIHsg
fSwgeyB9LCBzYWx0KCkpOwotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocm9vdFBhdGgoKSwga2V5LnBhcnRpdGlvbkhhc2hBc1N0cmluZygpKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRo
KCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSk7CiB9CiAKIEVuZ2luZTo6fkVuZ2luZSgp
CkBAIC0yMDUsOSArMjA1LDkgQEAgdm9pZCBFbmdpbmU6OmluaXRpYWxpemUoRnVuY3Rpb248dm9p
ZChzdGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4mJiBjYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7CisgICAgU3RyaW5nIHNh
bHRQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
cm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgic2FsdCIpKTsKICAgICBtX2lvUXVldWUtPmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRoaXMsIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHNhbHRQYXRoID0gV1RGTW92ZShzYWx0UGF0aCldICgpIG11dGFibGUgewot
ICAgICAgICBXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CisgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX3Jvb3RQYXRoKTsKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgdGhpcywgc2FsdCA9IHJlYWRPck1ha2VTYWx0KHNhbHRQYXRoKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICgh
c2FsdCkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yOjpXcml0ZURpc2spOwpAQCAt
MzM0LDcgKzMzNCw3IEBAIHZvaWQgRW5naW5lOjpyZW1vdmVGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faW9RdWV1ZS0+ZGlzcGF0Y2goW2ZpbGVu
YW1lID0gZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGZpbGVuYW1lKTsKICAgICB9KTsKIH0KIApAQCAtMzgyLDggKzM4Miw4IEBAIHZv
aWQgRW5naW5lOjpmZXRjaEVudHJpZXMoYm9vbCBzaG91bGRDb21wdXRlU2l6ZSwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlCiAgICAgfQogCiAgICAgYXV0byB0YXNrQ291bnRlciA9IFJl
YWRPcmlnaW5zVGFza0NvdW50ZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Ci0gICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6bGlzdERpcmVjdG9yeShtX3Jv
b3RQYXRoLCAiKiIpKSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6ZmlsZUlzRGlyZWN0b3J5KGZv
bGRlclBhdGgsIFdlYkNvcmU6OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKKyAgICBm
b3IgKGF1dG8mIGZvbGRlclBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KG1fcm9vdFBhdGgsICIqIikpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlSXNEaXJlY3RvcnkoZm9sZGVyUGF0aCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6U2hvdWxkRm9s
bG93U3ltYm9saWNMaW5rczo6Tm8pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIENh
Y2hlczo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGZvbGRlclBhdGgsICptX2lvUXVldWUs
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNob3VsZENvbXB1dGVTaXplLCB0YXNr
Q291bnRlciA9IHRhc2tDb3VudGVyLmNvcHlSZWYoKV0gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmIG9yaWdpbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtNDE1LDggKzQxNSw4IEBAIHZvaWQgRW5naW5lOjpj
bGVhckFsbENhY2hlcyhDYWxsYmFja0FnZ3JlZ2F0b3ImIHRhc2tIYW5kbGVyKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtwYXRoID0gbV9yb290UGF0aC5pc29s
YXRlZENvcHkoKSwgdGFza0hhbmRsZXIgPSBtYWtlUmVmKHRhc2tIYW5kbGVyKV0gewotICAgICAg
ICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIp
KSB7Ci0gICAgICAgICAgICBpZiAoV2ViQ29yZTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBX
ZWJDb3JlOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgIGZvciAoYXV0
byYgZmlsZW5hbWUgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHBhdGgsICIq
IikpIHsKKyAgICAgICAgICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3Rv
cnkoZmlsZW5hbWUsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKICAgICAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShmaWxl
bmFtZSk7CiAgICAgICAgIH0KICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApp
bmRleCBjOGVmNmYwN2ExMC4uZTg0MzE1ZTNmZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hl
cy5jcHAKQEAgLTQyLDE4ICs0MiwxOCBAQCBuYW1lc3BhY2UgQ2FjaGVTdG9yYWdlIHsKIAogc3Rh
dGljIGlubGluZSBTdHJpbmcgY2FjaGVzTGlzdEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgY2FjaGVz
Um9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJjYWNoZXNsaXN0IikpOworICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9v
dFBhdGgsIEFTQ0lJTGl0ZXJhbCgiY2FjaGVzbGlzdCIpKTsKIH0KIAogc3RhdGljIGlubGluZSBT
dHJpbmcgY2FjaGVzT3JpZ2luRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jv
b3RQYXRoLCBBU0NJSUxpdGVyYWwoIm9yaWdpbiIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxp
dGVyYWwoIm9yaWdpbiIpKTsKIH0KIAogdm9pZCBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGZvbGRlclBhdGgsIFdvcmtRdWV1ZSYgcXVldWUsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgcXVldWUuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGZvbGRlclBh
dGggPSBmb2xkZXJQYXRoLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBpZiAo
IVdlYkNvcmU6OmZpbGVFeGlzdHMoY2FjaGVzTGlzdEZpbGVuYW1lKGZvbGRlclBhdGgpKSkgewor
ICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoY2FjaGVzTGlzdEZp
bGVuYW1lKGZvbGRlclBhdGgpKSkgewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7
CiAgICAgICAgICAgICB9KTsKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIENhY2hlczo6cmVhZENh
Y2hlc0Zyb21EaXNrKFdURjo6RnVuY3Rpb248dm9pZChFeHBlY3RlZDxWZWN0b3I8Q2FjaGU+LCBF
cnJvcgogICAgIH0KIAogICAgIGF1dG8gZmlsZW5hbWUgPSBjYWNoZXNMaXN0RmlsZW5hbWUobV9y
b290UGF0aCk7Ci0gICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgeworICAg
IGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpIHsKICAgICAg
ICAgY2FsbGJhY2soVmVjdG9yPENhY2hlPiB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCmluZGV4IDU3MDRmODU2NzQ0Li4xOTVjMjNmNWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMTExLDcgKzEx
MSw3IEBAIENhY2hlOjpDYWNoZShSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8T3B0
aW9uPiBvcHRpb25zKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAvLyBUcmln
Z2VycyB3aXRoICJ0b3VjaCAkY2FjaGVQYXRoL2R1bXAiLgotICAgICAgICBDU3RyaW5nIGR1bXBG
aWxlUGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aCgpLCAiZHVtcCIpKTsKKyAg
ICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fc3RvcmFnZS0+YmFzZVBhdGgoKSwgImR1bXAiKSk7CiAgICAgICAgIEdSZWZQdHI8
R0ZpbGU+IGR1bXBGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZHVtcEZpbGVQ
YXRoLmRhdGEoKSkpOwogICAgICAgICBHRmlsZU1vbml0b3IqIG1vbml0b3IgPSBnX2ZpbGVfbW9u
aXRvcl9maWxlKGR1bXBGaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9OT05FLCBudWxscHRyLCBu
dWxscHRyKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1vbml0b3IsICJjaGFu
Z2VkIiwgR19DQUxMQkFDSyhkdW1wRmlsZUNoYW5nZWQpLCB0aGlzKTsKQEAgLTUzNywxNiArNTM3
LDE2IEBAIHZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRyYXZlcnNh
bEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogCiBTdHJpbmcgQ2FjaGU6OmR1bXBGaWxlUGF0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+dmVy
c2lvblBhdGgoKSwgImR1bXAuanNvbiIpOwogfQogCiB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNU
b0ZpbGUoKQogewotICAgIGF1dG8gZmQgPSBXZWJDb3JlOjpvcGVuRmlsZShkdW1wRmlsZVBhdGgo
KSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIVdlYkNvcmU6OmlzSGFuZGxlVmFs
aWQoZmQpKQorICAgIGF1dG8gZmQgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuRmlsZShkdW1w
RmlsZVBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAo
IVdlYkNvcmU6OkZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmQpKQogICAgICAgICByZXR1cm47
CiAgICAgYXV0byBwcm9sb2d1ZSA9IFN0cmluZygie1xuXCJlbnRyaWVzXCI6IFtcbiIpLnV0Zjgo
KTsKLSAgICBXZWJDb3JlOjp3cml0ZVRvRmlsZShmZCwgcHJvbG9ndWUuZGF0YSgpLCBwcm9sb2d1
ZS5sZW5ndGgoKSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmQsIHBy
b2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOwogCiAgICAgc3RydWN0IFRvdGFscyB7
CiAgICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwpAQCAtNTc1LDggKzU3NSw4IEBAIHZvaWQg
Q2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgICAgICBlcGlsb2d1ZS5hcHBlbmRM
aXRlcmFsKCJcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgifVxufVxu
Iik7CiAgICAgICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGVwaWxvZ3VlLnRvU3RyaW5nKCkudXRm
OCgpOwotICAgICAgICAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIHdyaXRlRGF0YS5kYXRh
KCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUo
ZmQpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmQsIHdy
aXRlRGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CisgICAgICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGF1dG8gZW50cnkgPSBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29yZCgqcmVj
b3JkKTsKQEAgLTU5MCwxNCArNTkwLDE0IEBAIHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50c1RvRmls
ZSgpCiAgICAgICAgIGVudHJ5LT5hc0pTT04oanNvbiwgaW5mbyk7CiAgICAgICAgIGpzb24uYXBw
ZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAgICAgIGF1dG8gd3JpdGVEYXRhID0ganNvbi50b1N0cmlu
ZygpLnV0ZjgoKTsKLSAgICAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIHdyaXRlRGF0YS5k
YXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwog
ICAgIH0pOwogfQogCiB2b2lkIENhY2hlOjpkZWxldGVEdW1wRmlsZSgpCiB7CiAgICAgV29ya1F1
ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGUuZGVsZXRlIiktPmRpc3BhdGNoKFtw
YXRoID0gZHVtcEZpbGVQYXRoKCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlRmlsZShwYXRoKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShwYXRoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAppbmRleCBm
NmIzNjRmYTllZC4uMTYzNWYyM2NlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwCkBA
IC01MywxNSArNTMsMTUgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6bWFrZUFsbERpcmVj
dG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKCkpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKIAogICAgIG1fYXBwcm94aW1h
dGVTaXplID0gMDsKICAgICBhdXRvIGJsb2JEaXJlY3RvcnkgPSBibG9iRGlyZWN0b3J5UGF0aCgp
OwogICAgIHRyYXZlcnNlRGlyZWN0b3J5KGJsb2JEaXJlY3RvcnksIFt0aGlzLCAmYmxvYkRpcmVj
dG9yeV0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewogICAg
ICAgICBpZiAodHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKLSAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNv
cmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICAgICAgYXV0byBwYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3Rv
cnksIG5hbWUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgICAgICBzdHJ1Y3Qgc3RhdCBzdGF0
OwogICAgICAgICA6OnN0YXQoZmlsZVBhdGguZGF0YSgpLCAmc3RhdCk7CiAgICAgICAgIC8vIE5v
IGNsaWVudHMgbGVmdCBmb3IgdGhpcyBibG9iLgpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEJsb2JT
dG9yYWdlOjpzeW5jaHJvbml6ZSgpCiBTdHJpbmcgQmxvYlN0b3JhZ2U6OmJsb2JQYXRoRm9ySGFz
aChjb25zdCBTSEExOjpEaWdlc3QmIGhhc2gpIGNvbnN0CiB7CiAgICAgYXV0byBoYXNoQXNTdHJp
bmcgPSBTSEExOjpoZXhEaWdlc3QoaGFzaCk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aCgpLCBTdHJpbmc6OmZyb21VVEY4KGhh
c2hBc1N0cmluZykpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNo
QXNTdHJpbmcpKTsKIH0KIAogQmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmFkZChjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IERhdGEmIGRhdGEpCkBAIC04OCw4ICs4OCw4IEBAIEJsb2JT
dG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBE
YXRhJiBkYXRhKQogICAgIGlmIChkYXRhLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgZGF0
YSwgaGFzaCB9OwogCi0gICAgYXV0byBibG9iUGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihibG9iUGF0aEZvckhhc2goaGFzaCkpOwotICAgIGF1dG8gbGlua1BhdGggPSBX
ZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBibG9iUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihibG9iUGF0
aEZvckhhc2goaGFzaCkpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5saW5rKGxpbmtQYXRoLmRh
dGEoKSk7CiAKICAgICBib29sIGJsb2JFeGlzdHMgPSBhY2Nlc3MoYmxvYlBhdGguZGF0YSgpLCBG
X09LKSAhPSAtMTsKQEAgLTExOSw3ICsxMTksNyBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3Rv
cmFnZTo6Z2V0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBhdXRvIGRhdGEgPSBtYXBGaWxl
KGxpbmtQYXRoLmRhdGEoKSk7CiAKICAgICByZXR1cm4geyBkYXRhLCBjb21wdXRlU0hBMShkYXRh
LCBtX3NhbHQpIH07CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6cmVtb3Zl
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCk7CisgICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICB1bmxpbmsobGlua1BhdGguZGF0YSgpKTsKIH0K
IApAQCAtMTM3LDcgKzEzNyw3IEBAIHVuc2lnbmVkIEJsb2JTdG9yYWdlOjpzaGFyZUNvdW50KGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisgICAgYXV0byBsaW5rUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBzdHJ1Y3Qgc3RhdCBzdGF0OwogICAgIGlmICg6OnN0
YXQobGlua1BhdGguZGF0YSgpLCAmc3RhdCkgPCAwKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURh
dGEuY3BwCmluZGV4IDhhYzc5N2Y3OGEwLi43YmI2NDkyYTY2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCkBA
IC0xMzcsNyArMTM3LDcgQEAgc3RhdGljIFNhbHQgbWFrZVNhbHQoKQogCiBzdGQ6Om9wdGlvbmFs
PFNhbHQ+IHJlYWRPck1ha2VTYWx0KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBhdXRvIGNw
YXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8g
Y3BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CiAgICAgYXV0byBmZCA9IG9wZW4oY3BhdGguZGF0YSgpLCBPX1JET05MWSwgMCk7CiAgICAg
U2FsdCBzYWx0OwogICAgIGF1dG8gYnl0ZXNSZWFkID0gcmVhZChmZCwgc2FsdC5kYXRhKCksIHNh
bHQuc2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCmluZGV4IDgyZDczNTUxODk2Li5l
ZTZkMTRlNTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02Myw3ICs2Myw3IEBA
IHN0YXRpYyBEaXJlY3RvcnlFbnRyeVR5cGUgZGlyZWN0b3J5RW50cnlUeXBlKHVpbnQ4X3QgZHR5
cGUpCiAKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYgZnVuY3Rp
b24pCiB7Ci0gICAgRElSKiBkaXIgPSBvcGVuZGlyKFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKS5kYXRhKCkpOworICAgIERJUiogZGlyID0gb3BlbmRpcihXZWJDb3JlOjpG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBp
ZiAoIWRpcikKICAgICAgICAgcmV0dXJuOwogICAgIGRpcmVudCogZHA7CkBAIC04NCwxMCArODQs
MTAgQEAgdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIEQKIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJz
aXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhdGgs
IFsmcGF0aF0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewot
ICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBhdGgsIG5hbWUpOworICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOwogICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGU6Ci0g
ICAgICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CisgICAgICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeToKICAgICAg
ICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGVudHJ5UGF0aCk7CkBAIC05NSwxOSAr
OTUsMTkgQEAgdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBh
dGgpCiAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCiAgICAgICAgIH0K
ICAgICB9KTsKLSAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogRmls
ZVRpbWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJ
UlRIVElNRSkKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdChXZWJDb3Jl
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQorICAg
IGlmIChzdGF0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCksICZmaWxlSW5mbykpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJu
IHsgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoZmlsZUluZm8uc3RfYmly
dGh0aW1lKSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoZmlsZUluZm8u
c3RfbXRpbWUpIH07CiAjZWxpZiBVU0UoU09VUCkKICAgICAvLyBUaGVyZSdzIG5vIHN0X2JpcnRo
dGltZSBpbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIGxpa2UgTGludXgsIHNvIHdlIHVzZSB4YXR0
cnMgdG8gc2V0L2dldCB0aGUgY3JlYXRpb24gdGltZS4KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZp
bGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKGZpbGUuZ2V0KCksICJ4YXR0cjo6
YmlydGh0aW1lLHRpbWU6Om1vZGlmaWVkIiwgR19GSUxFX1FVRVJZX0lORk9fTk9ORSwgbnVsbHB0
ciwgbnVsbHB0cikpOwogICAgIGlmICghZmlsZUluZm8pCiAgICAgICAgIHJldHVybiB7IH07CkBA
IC0xMjgsNyArMTI4LDcgQEAgdm9pZCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZUlmTmVlZGVk
KGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8g
VGhpcyByZWFsbHkgdXBkYXRlcyBib3RoIHRoZSBhY2Nlc3MgdGltZSBhbmQgdGhlIG1vZGlmaWNh
dGlvbiB0aW1lLgotICAgIHV0aW1lcyhXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpLCBudWxscHRyKTsKKyAgICB1dGltZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CiB9CiAKIGJv
b2wgY2FuVXNlU2hhcmVkTWVtb3J5Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC0xNDIs
NyArMTQyLDcgQEAgYm9vbCBjYW5Vc2VTaGFyZWRNZW1vcnlGb3JQYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCkKICAgICBhdHRybGlzdCBhdHRyTGlzdCA9IHsgfTsKICAgICBhdHRyTGlzdC5iaXRtYXBj
b3VudCA9IEFUVFJfQklUX01BUF9DT1VOVDsKICAgICBhdHRyTGlzdC5jb21tb25hdHRyID0gQVRU
Ul9DTU5fREFUQV9QUk9URUNUX0ZMQUdTOwotICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlz
dChXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxp
c3QsICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKKyAg
ICBpbnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwg
c2l6ZW9mKGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CiAgICAgaWYgKGVycm9yKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJVbmFibGUgdG8gZ2V0IGNhY2hlIGRp
cmVjdG9yeSBwcm90ZWN0aW9uIGNsYXNzLCBkaXNhYmxpbmcgdXNlIG9mIHNoYXJlZCBtYXBwZWQg
bWVtb3J5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENv
Y29hLm1tCmluZGV4IGVmZDc3OTlkYTJmLi43NmIxNGUzMzQ4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbENvY29hLm1tCkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkK
ICAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBpbnQgb2Zs
YWc7CiAgICAgbW9kZV90IG1vZGU7CiAgICAgYm9vbCB1c2VMb3dJT1ByaW9yaXR5ID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCAwMTYxMjA4MGM3OS4uNGNlNzc2
MmI5MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcApAQCAtNDEsNyArNDEsNyBA
QCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUp
CiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRv
IHBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAg
IGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlUGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKHBhdGguZGF0YSgpKSk7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBj
YXNlIFR5cGU6OkNyZWF0ZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKaW5kZXggNjkzMzQx
N2ZkOGMuLmI0ZjYyNjJkYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0YXRpc3RpY3M+IFN0YXRpc3RpY3M6Om9wZW4oQ2Fj
aGUmIGNhY2hlLCBjb25zdCBTdHJpbmcmIGNhY2hlUGEKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFzZU5hbWUpOworICAg
IFN0cmluZyBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1lKTsKICAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aXN0aWNzPihjYWNoZSwgZGF0YWJhc2VQYXRoKTsKIH0K
IApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OmluaXRpYWxpemUoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZVBhdGgpCiAgICAgc2VyaWFsQmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRj
aChbdGhpcywgZGF0YWJhc2VQYXRoID0gZGF0YWJhc2VQYXRoLmlzb2xhdGVkQ29weSgpLCBuZXR3
b3JrQ2FjaGVQYXRoID0gbV9jYWNoZS5yZWNvcmRzUGF0aCgpLCBzdGFydFRpbWVdIHsKICAgICAg
ICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNh
Y3Rpb25Db3VudGVyOwogCi0gICAgICAgIGlmICghV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVz
KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCisgICAgICAgIGlmICghV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgT3BlbmluZyBuZXR3b3Jr
IGNhY2hlIHN0YXRpc3RpY3MgZGF0YWJhc2UgYXQgJXMuLi4iLCBkYXRhYmFzZVBhdGgudXRmOCgp
LmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBlNGFkYjE5YmM4Yy4uMDNlMzA5Mjkw
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMTM2LDI5ICsxMzYsMjkgQEAgcHVibGljOgog
c3RhdGljIFN0cmluZyBtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIGJh
c2VEaXJlY3RvcnlQYXRoKQogewogICAgIFN0cmluZyB2ZXJzaW9uU3ViZGlyZWN0b3J5ID0gdmVy
c2lvbkRpcmVjdG9yeVByZWZpeCArIFN0cmluZzo6bnVtYmVyKFN0b3JhZ2U6OnZlcnNpb24pOwot
ICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9y
eVBhdGgsIHZlcnNpb25TdWJkaXJlY3RvcnkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZURpcmVjdG9yeVBhdGgsIHZlcnNpb25T
dWJkaXJlY3RvcnkpOwogfQogCiBzdGF0aWMgU3RyaW5nIG1ha2VSZWNvcmRzRGlyZWN0b3J5UGF0
aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFz
ZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGly
ZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHJlY29yZHNEaXJlY3RvcnlOYW1lKTsKIH0K
IAogc3RhdGljIFN0cmluZyBtYWtlQmxvYkRpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNl
RGlyZWN0b3J5UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgYmxv
YnNEaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3Rv
cnlQYXRoKSwgYmxvYnNEaXJlY3RvcnlOYW1lKTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlU2Fs
dEZpbGVQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5
UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxlTmFtZSk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGly
ZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIHNhbHRGaWxlTmFtZSk7CiB9CiAKIFJlZlB0
cjxTdG9yYWdlPiBTdG9yYWdlOjpvcGVuKGNvbnN0IFN0cmluZyYgY2FjaGVQYXRoLCBNb2RlIG1v
ZGUpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghV2ViQ29y
ZTo6bWFrZUFsbERpcmVjdG9yaWVzKG1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0
aCkpKQorICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1h
a2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGNhY2hlUGF0aCkpKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBhdXRvIHNhbHQgPSByZWFkT3JNYWtlU2FsdChtYWtlU2FsdEZpbGVQYXRoKGNh
Y2hlUGF0aCkpOwogICAgIGlmICghc2FsdCkKQEAgLTE3MSwxMyArMTcxLDEzIEBAIHZvaWQgdHJh
dmVyc2VSZWNvcmRzRmlsZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCwgY29uc3QgU3RyaW5n
JiBleHBlY3RlZFR5cGUsCiAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3Jkc1BhdGgsIFsmXShj
b25zdCBTdHJpbmcmIHBhcnRpdGlvbk5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUp
IHsKICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9y
eSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5h
bWUpOworICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CiAg
ICAgICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhcnRpdGlvblBhdGgsIFsmXShjb25zdCBTdHJpbmcm
IGFjdHVhbFR5cGUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAg
IGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFleHBlY3RlZFR5cGUuaXNFbXB0eSgp
ICYmIGV4cGVjdGVkVHlwZSAhPSBhY3R1YWxUeXBlKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5cGUpOworICAgICAgICAg
ICAgU3RyaW5nIHJlY29yZERpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgYWN0dWFsVHlwZSk7CiAgICAgICAg
ICAgICB0cmF2ZXJzZURpcmVjdG9yeShyZWNvcmREaXJlY3RvcnlQYXRoLCBbJmZ1bmN0aW9uLCAm
cmVjb3JkRGlyZWN0b3J5UGF0aCwgJmFjdHVhbFR5cGVdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgICAgICBpZiAoZW50
cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZSB8fCBmaWxlTmFtZS5sZW5ndGgoKSA8
IEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0xOTcsMTggKzE5NywxOCBAQCBzdGF0aWMgdm9pZCBkZWxldGVFbXB0eVJlY29yZHNEaXJlY3Rv
cmllcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIC8vIERlbGV0ZSBbdHlwZV0gc3ViLWZvbGRlcnMuCi0gICAgICAgIFN0cmluZyBwYXJ0
aXRpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRo
LCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRp
dGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25QYXRoLCBbJnBh
cnRpdGlvblBhdGhdKGNvbnN0IFN0cmluZyYgc3ViZGlyTmFtZSwgRGlyZWN0b3J5RW50cnlUeXBl
IGVudHJ5VHlwZSkgewogICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRy
eVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAg
IC8vIExldCBzeXN0ZW0gZmlndXJlIG91dCBpZiBpdCBpcyByZWFsbHkgZW1wdHkuCi0gICAgICAg
ICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGFydGl0aW9uUGF0aCwgc3ViZGlyTmFtZSkpOworICAgICAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRpck5hbWUpKTsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgLy8gRGVsZXRlIFtQYXJ0aXRpb25dIGZvbGRlcnMuCiAg
ICAgICAgIC8vIExldCBzeXN0ZW0gZmlndXJlIG91dCBpZiBpdCBpcyByZWFsbHkgZW1wdHkuCi0g
ICAgICAgIFdlYkNvcmU6OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSkpOworICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpKTsK
ICAgICB9KTsKIH0KIApAQCAtMjc2LDE3ICsyNzYsMTcgQEAgdm9pZCBTdG9yYWdlOjpzeW5jaHJv
bml6ZSgpCiAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKICAgICAgICAgU3RyaW5nIGFueVR5
cGU7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoKCksIGFueVR5cGUs
IFsmcmVjb3JkRmlsdGVyLCAmYmxvYkZpbHRlciwgJnJlY29yZHNTaXplLCAmY291bnRdKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5n
JiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7
Ci0gICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8g
ZmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogCiAgICAgICAgICAgICBLZXk6Okhhc2hU
eXBlIGhhc2g7CiAgICAgICAgICAgICBpZiAoIUtleTo6c3RyaW5nVG9IYXNoKGhhc2hTdHJpbmcs
IGhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7
CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0
aCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICAgICAgICAgIFdlYkNvcmU6OmdldEZpbGVTaXpl
KGZpbGVQYXRoLCBmaWxlU2l6ZSk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpn
ZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOwogICAgICAgICAgICAgaWYgKCFmaWxlU2l6
ZSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAg
ICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMzUyLDEyICszNTIs
MTIgQEAgYm9vbCBTdG9yYWdlOjptYXlDb250YWluQmxvYihjb25zdCBLZXkmIGtleSkgY29uc3QK
IFN0cmluZyBTdG9yYWdlOjpyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGNvbnN0IEtleSYga2V5
KSBjb25zdAogewogICAgIEFTU0VSVCgha2V5LnR5cGUoKS5pc0VtcHR5KCkpOwotICAgIHJldHVy
biBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSks
IGtleS50eXBlKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSksIGtleS50eXBl
KCkpOwogfQogCiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkUGF0aEZvcktleShjb25zdCBLZXkmIGtl
eSkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZERpcmVjdG9yeVBhdGhGb3JLZXkoa2V5KSwga2V5Lmhhc2hBc1N0cmluZygpKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Y29yZERpcmVjdG9yeVBhdGhGb3JLZXkoa2V5KSwga2V5Lmhhc2hBc1N0cmluZygpKTsKIH0KIAog
c3RhdGljIFN0cmluZyBibG9iUGF0aEZvclJlY29yZFBhdGgoY29uc3QgU3RyaW5nJiByZWNvcmRQ
YXRoKQpAQCAtNjAyLDcgKzYwMiw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlRmlsZXMoY29uc3Qg
S2V5JiBrZXkpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBXZWJD
b3JlOjpkZWxldGVGaWxlKHJlY29yZFBhdGhGb3JLZXkoa2V5KSk7CisgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5KGtleSkpOwogICAgIG1fYmxvYlN0
b3JhZ2UucmVtb3ZlKGJsb2JQYXRoRm9yS2V5KGtleSkpOwogfQogCkBAIC03NjQsNyArNzY0LDcg
QEAgdm9pZCBTdG9yYWdlOjpkaXNwYXRjaFdyaXRlT3BlcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxX
cml0ZU9wZXJhdGlvbj4gd3JpdGVPcGVyYXQKICAgICAgICAgYXV0byByZWNvcmREaXJlY3RvclBh
dGggPSByZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KHdyaXRlT3BlcmF0aW9uLnJlY29yZC5rZXkp
OwogICAgICAgICBhdXRvIHJlY29yZFBhdGggPSByZWNvcmRQYXRoRm9yS2V5KHdyaXRlT3BlcmF0
aW9uLnJlY29yZC5rZXkpOwogCi0gICAgICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmllcyhy
ZWNvcmREaXJlY3RvclBhdGgpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKIAogICAgICAgICArK3dyaXRlT3BlcmF0
aW9uLmFjdGl2ZUNvdW50OwogCkBAIC04NjMsNyArODYzLDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2
ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIFRyYXZlcnNlRmxhZ3MgZmxhZ3MsIFRyYXZlcnNlSGFu
ZGxlciYKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0
byByZWNvcmRQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKIAogICAgICAgICAgICAgZG91Ymxl
IHdvcnRoID0gLTE7CiAgICAgICAgICAgICBpZiAodHJhdmVyc2VPcGVyYXRpb24uZmxhZ3MgJiBU
cmF2ZXJzZUZsYWc6OkNvbXB1dGVXb3J0aCkKQEAgLTk1MiwxMyArOTUyLDEzIEBAIHZvaWQgU3Rv
cmFnZTo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IG1vCiAgICAgaW9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIG1vZGlmaWVkU2luY2VUaW1lLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0eXBlID0gdHlwZS5pc29sYXRlZENvcHko
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcmVjb3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRz
UGF0aCgpOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aCwgdHlwZSwg
W21vZGlmaWVkU2luY2VUaW1lXShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmlu
ZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsK
ICAgICAgICAgICAgIGlmIChtb2RpZmllZFNpbmNlVGltZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKSB7CiAgICAgICAgICAgICAgICAgYXV0byB0aW1lcyA9
IGZpbGVUaW1lcyhmaWxlUGF0aCk7CiAgICAgICAgICAgICAgICAgaWYgKHRpbWVzLm1vZGlmaWNh
dGlvbiA8IG1vZGlmaWVkU2luY2VUaW1lKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVQYXRoKTsK
KyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwog
ICAgICAgICB9KTsKIAogICAgICAgICBkZWxldGVFbXB0eVJlY29yZHNEaXJlY3RvcmllcyhyZWNv
cmRzUGF0aCk7CkBAIC0xMDM4LDcgKzEwMzgsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAg
ICAgICAgICAgICBpZiAoaXNCbG9iKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3Jk
UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNv
cmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBhdXRvIGJsb2JQYXRoID0g
YmxvYlBhdGhGb3JSZWNvcmRQYXRoKHJlY29yZFBhdGgpOwogCiAgICAgICAgICAgICBhdXRvIHRp
bWVzID0gZmlsZVRpbWVzKHJlY29yZFBhdGgpOwpAQCAtMTA1MCw3ICsxMDUwLDcgQEAgdm9pZCBT
dG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICJE
ZWxldGlvbiBwcm9iYWJpbGl0eT0lZiBib2R5TGlua0NvdW50PSVkIHNob3VsZERlbGV0ZT0lZCIs
IHByb2JhYmlsaXR5LCBib2R5U2hhcmVDb3VudCwgc2hvdWxkRGVsZXRlKTsKIAogICAgICAgICAg
ICAgaWYgKHNob3VsZERlbGV0ZSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZp
bGUocmVjb3JkUGF0aCk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShyZWNvcmRQYXRoKTsKICAgICAgICAgICAgICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92
ZShibG9iUGF0aCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwpAQCAtMTA4Niw3ICsxMDg2
LDcgQEAgdm9pZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucygpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogI2VuZGlmCiAKLSAgICAgICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKKyAg
ICAgICAgICAgIGF1dG8gb2xkVmVyc2lvblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBzdWJkaXJOYW1lKTsKICAgICAgICAgICAg
IExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBkZWxldGluZyBvbGQg
Y2FjaGUgdmVyc2lvbiwgcGF0aCAlcyIsIG9sZFZlcnNpb25QYXRoLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShvbGRWZXJzaW9uUGF0aCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCmluZGV4IDMxMzFjMGYxYzQ0Li5lMmQ0MWVlNzg0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAKQEAgLTczLDE1ICs3MywxNSBAQCB2b2lk
IE1hbmFnZXI6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiByZWNvcmRSZXBsYXlNb2RlLCBjb25z
dCBTdHJpbmcmIHJlY29yZFJlcAogICAgICAgICBtX3JlY29yZFJlcGxheU1vZGUgPSBEaXNhYmxl
ZDsKICAgICB9CiAKLSAgICBtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24gPSBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5h
bWVSZWNvcmRSZXBsYXkpOworICAgIG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uLCBrRGlyTmFtZVJlY29yZFJlcGxheSk7CiAgICAgREVCVUdfTE9HKCJDYWNoZSBs
b2NhdGlvbiA9ICIgU1RSSU5HX1NQRUNJRklFUiwgREVCVUdfU1RSKG1fcmVjb3JkUmVwbGF5Q2Fj
aGVMb2NhdGlvbikpOwogCiAgICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9yZWNv
cmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdl
YkNvcmU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNv
cmU6OkZpbGVIYW5kbGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpP
cGVuRm9yV3JpdGUpOwogICAgIH0gZWxzZSBpZiAoaXNSZXBsYXlpbmcoKSkgewotICAgICAgICBt
X3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgo
KSwgV2ViQ29yZTo6T3BlbkZvclJlYWQpOwotICAgICAgICBtX2xvYWRGaWxlSGFuZGxlID0gV2Vi
Q29yZTo6RmlsZUhhbmRsZShyZXBvcnRMb2FkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUp
OwotICAgICAgICBtX3JlcGxheUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9y
dFJlcGxheVBhdGgoKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9yZWNvcmRG
aWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICAgICAgbV9sb2FkRmlsZUhhbmRsZSA9
IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxlID0gV2ViQ29yZTo6
RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5G
b3JXcml0ZSk7CiAgICAgICAgIGxvYWRSZXNvdXJjZXMoKTsKICAgICB9CiB9CkBAIC0zNjUsMTcg
KzM2NSwxNyBAQCB2b2lkIE1hbmFnZXI6OmxvYWRSZXNvdXJjZXMoKQogCiBTdHJpbmcgTWFuYWdl
cjo6cmVwb3J0TG9hZFBhdGgoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRM
b2FkKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0ZpbGVOYW1lUmVwb3J0TG9hZCk7
CiB9CiAKIFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRSZWNvcmRQYXRoKCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2Nh
dGlvbiwga0ZpbGVOYW1lUmVwb3J0UmVjb3JkKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlv
biwga0ZpbGVOYW1lUmVwb3J0UmVjb3JkKTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydFJl
cGxheVBhdGgoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZXBsYXkpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZXBsYXkpOwogfQog
CiBTdHJpbmcgTWFuYWdlcjo6cmVxdWVzdFRvUGF0aChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCkBAIC00MTEsOSArNDExLDkgQEAgU3RyaW5nIE1hbmFnZXI6Omhhc2hU
b1BhdGgoY29uc3QgU3RyaW5nJiBoYXNoKQogICAgIGZpbGVOYW1lLmFwcGVuZChoYXNoVGFpbCk7
CiAgICAgZmlsZU5hbWUuYXBwZW5kTGl0ZXJhbCgiLmRhdGEiKTsKIAotICAgIGF1dG8gcGF0aCA9
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9j
YXRpb24sIGtEaXJOYW1lUmVzb3VyY2VzKTsKLSAgICBwYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHBhdGgsIGhhc2hIZWFkKTsKLSAgICBwYXRoID0gV2ViQ29yZTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lLnRvU3RyaW5nKCkpOworICAgIGF1
dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVzb3VyY2VzKTsKKyAgICBwYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGhh
c2hIZWFkKTsKKyAgICBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHBhdGgsIGZpbGVOYW1lLnRvU3RyaW5nKCkpOwogCiAgICAgcmV0dXJuIHBhdGg7
CiB9CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBNYW5hZ2VyOjpsb2dQbGF5ZWRCYWNrUmVzb3Vy
Y2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib28KICAgICBtX3Jl
cGxheUZpbGVIYW5kbGUucHJpbnRmKCIlcyAlc1xuIiwgd2FzQ2FjaGVNaXNzID8gIm1pc3MiIDog
ImhpdCAiLCBERUJVR19TVFIodXJsLnN0cmluZygpKSk7CiB9CiAKLVdlYkNvcmU6OkZpbGVIYW5k
bGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJDb3Jl
OjpGaWxlT3Blbk1vZGUgbW9kZSkKK1dlYkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNh
Y2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxl
T3Blbk1vZGUgbW9kZSkKIHsKICAgICAvLyBJZiB3ZSBjYW4gdHJpdmlhbGx5IG9wZW4gdGhlIGZp
bGUsIHRoZW4gZG8gdGhhdCBhbmQgcmV0dXJuIHRoZSBuZXcgZmlsZQogICAgIC8vIGhhbmRsZS4K
QEAgLTQ2NCw5ICs0NjQsOSBAQCBXZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNo
ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZQogICAgIC8vIElmIHdl
J3JlIG9wZW5pbmcgdGhlIGZpbGUgZm9yIHdyaXRpbmcgKGluY2x1ZGluZyBhcHBlbmRpbmcpLCB0
aGVuIHRyeQogICAgIC8vIGFnYWluIGFmdGVyIG1ha2luZyBzdXJlIGFsbCBpbnRlcm1lZGlhdGUg
ZGlyZWN0b3JpZXMgaGF2ZSBiZWVuIGNyZWF0ZWQuCiAKLSAgICBpZiAobW9kZSAhPSBXZWJDb3Jl
OjpPcGVuRm9yUmVhZCkgewotICAgICAgICBjb25zdCBhdXRvJiBwYXJlbnREaXIgPSBXZWJDb3Jl
OjpkaXJlY3RvcnlOYW1lKGZpbGVQYXRoKTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjptYWtlQWxs
RGlyZWN0b3JpZXMocGFyZW50RGlyKSkgeworICAgIGlmIChtb2RlICE9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06Ok9wZW5Gb3JSZWFkKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHBhcmVudERpciA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZVBhdGgpOworICAgICAgICBpZiAo
IVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXJlbnREaXIpKSB7CiAg
ICAgICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9yICVkIHRyeWluZyB0byBjcmVhdGUgaW50
ZXJtZWRpYXRlIGRpcmVjdG9yaWVzOiAiIFNUUklOR19TUEVDSUZJRVIsIGVycm5vLCBERUJVR19T
VFIocGFyZW50RGlyKSk7CiAgICAgICAgICAgICByZXR1cm4gZmlsZUhhbmRsZTsKICAgICAgICAg
fQpAQCAtNDc5LDcgKzQ3OSw3IEBAIFdlYkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNh
Y2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxlCiAgICAgLy8gQ291
bGQgbm90IG9wZW4gdGhlIGZpbGUuIExvZyB0aGUgZXJyb3IgYW5kIGxlYXZlLCByZXR1cm5pbmcg
dGhlIGludmFsaWQKICAgICAvLyBmaWxlIGhhbmRsZS4KIAotICAgIGlmIChtb2RlID09IFdlYkNv
cmU6Ok9wZW5Gb3JSZWFkKQorICAgIGlmIChtb2RlID09IFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9w
ZW5Gb3JSZWFkKQogICAgICAgICBERUJVR19MT0dfRVJST1IoIkVycm9yICVkIHRyeWluZyB0byBv
cGVuICIgU1RSSU5HX1NQRUNJRklFUiAiIGZvciByZWFkaW5nIiwgZXJybm8sIERFQlVHX1NUUihm
aWxlUGF0aCkpOwogICAgIGVsc2UKICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJvciAlZCB0
cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3Igd3JpdGluZyIsIGVycm5vLCBE
RUJVR19TVFIoZmlsZVBhdGgpKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBXZWJDb3JlOjpGaWxlSGFu
ZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29y
ZTo6RmlsZQogc3RkOjpvcHRpb25hbDxWZWN0b3I8VmVjdG9yPFN0cmluZz4+PiBNYW5hZ2VyOjpy
ZWFkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIGJvb2wgc3VjY2VzcyA9IGZh
bHNlOwotICAgIFdlYkNvcmU6Ok1hcHBlZEZpbGVEYXRhIGZpbGUoZmlsZVBhdGgsIHN1Y2Nlc3Mp
OworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIGZpbGUoZmlsZVBhdGgs
IHN1Y2Nlc3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05l
dHdvcmtDYXB0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0
dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCmluZGV4IGViMmFjYzQ4ZGNhLi41MGVkNWUyM2Qx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2dMb2FkZWRSZXNvdXJjZShSZXNvdXJjZSYpOwogICAgIHZvaWQgbG9nUGxheWVk
QmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgd2FzQ2Fj
aGVNaXNzKTsKIAotICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpGaWxlT3Blbk1vZGUpOworICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUg
b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGUpOwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFp
bihjb25zdCBXZWJDb3JlOjpVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAppbmRl
eCBlNjYwM2U2MzZkNy4uM2E1NTlhNjE4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5j
cHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFJlY29yZGVyOjpyZWNvcmRGaW5pc2goY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFJlY29yZGVyOjp3cml0ZUV2ZW50
cygpCiB7CiAgICAgYXV0byBwYXRoID0gTWFuYWdlcjo6c2luZ2xldG9uKCkucmVxdWVzdFRvUGF0
aChtX2luaXRpYWxSZXF1ZXN0KTsKLSAgICBhdXRvIGhhbmRsZSA9IE1hbmFnZXI6OnNpbmdsZXRv
bigpLm9wZW5DYWNoZUZpbGUocGF0aCwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKKyAgICBhdXRv
IGhhbmRsZSA9IE1hbmFnZXI6OnNpbmdsZXRvbigpLm9wZW5DYWNoZUZpbGUocGF0aCwgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaAppbmRleCBlNTc2MGVkMWJjMy4uNzU3
NmMwZDVlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaApAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIG1fZXZlbnRGaWxlUGF0aDsKICAg
ICAgICAgYm9vbCBtX2hhdmVNYXBwZWRFdmVudEZpbGUgeyBmYWxzZSB9OwotICAgICAgICBXZWJD
b3JlOjpNYXBwZWRGaWxlRGF0YSBtX21hcHBlZEV2ZW50RmlsZTsKKyAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbV9tYXBwZWRFdmVudEZpbGU7CiAgICAgICAgIHNp
emVfdCBtX29mZnNldCB7IDAgfTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCBk
ZjY0ZTM5YmU2MS4uMTc1NjViMjc5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMjg1LDgg
KzI4NSw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExv
Y2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtCiAKICAgICBtX3Rhc2suZ2V0KCkuX3Bh
dGhUb0Rvd25sb2FkVGFza0ZpbGUgPSBtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOwogCi0gICAg
aWYgKGFsbG93T3ZlcndyaXRlICYmIFdlYkNvcmU6OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxv
YWRMb2NhdGlvbikpCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOworICAg
IGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1f
cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQorICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGZpbGVuYW1lKTsKIH0KIAogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5
UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0
aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAwNWM4Njg0OGUyNS4uNWY5NjliYjEy
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTQ3Miw3ICs0NzIsNyBAQCBzdGF0aWMgV2ViQ29y
ZTo6TmV0d29ya0xvYWRQcmlvcml0eSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3Jp
dHkpCiAgICAgICAgIGF1dG8mIGRvd25sb2FkTWFuYWdlciA9IFdlYktpdDo6TmV0d29ya1Byb2Nl
c3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpOwogICAgICAgICBhdXRvIGRvd25sb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6OkRvd25sb2FkPihkb3dubG9hZE1hbmFnZXIsIGRv
d25sb2FkSUQsIGRvd25sb2FkVGFzaywgX3Nlc3Npb24tPnNlc3Npb25JRCgpLCBuZXR3b3JrRGF0
YVRhc2stPnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogICAgICAgICBuZXR3b3JrRGF0YVRhc2stPnRy
YW5zZmVyU2FuZGJveEV4dGVuc2lvblRvRG93bmxvYWQoKmRvd25sb2FkKTsKLSAgICAgICAgQVNT
RVJUKFdlYkNvcmU6OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93bmxvYWRM
b2NhdGlvbigpKSk7CisgICAgICAgIEFTU0VSVChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOwogICAgICAg
ICBkb3dubG9hZC0+ZGlkQ3JlYXRlRGVzdGluYXRpb24obmV0d29ya0RhdGFUYXNrLT5wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbigpKTsKICAgICAgICAgZG93bmxvYWRNYW5hZ2VyLmRhdGFUYXNrQmVj
YW1lRG93bmxvYWRUYXNrKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NT
b3VwLmNwcAppbmRleCBiZDRmNjI5MTkzZi4uNGM4YjRhNGUyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICBBU1NFUlQo
IXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAgICAgbV9kaXNrQ2Fj
aGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeTsKIAotICAgIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZSht
X2Rpc2tDYWNoZURpcmVjdG9yeSkpOworICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRT
b3VwQ2FjaGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURp
cmVjdG9yeSkpOwogCiAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4g
Y2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlm
eSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5
TG9nZ2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Q
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCmlu
ZGV4IDhlN2YwYTc1NTU5Li5hNDQ0ZjA2OTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGxhdW5jaFByb2Nlc3MoY29uc3QgU3RyaW5nJiBsYXVuY2hQYXRoLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzKTsKICAgICBib29sIGxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMpOwogICAg
IGJvb2wgb3BlblVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgaW50MzJfdCYgc3RhdHVzLCBT
dHJpbmcmIGxhdW5jaGVkVVJMU3RyaW5nKTsKLSAgICBib29sIG9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKKyAgICBib29sIEZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKTsKICNlbmRpZgogCiAgICAgQ291bnRlZFVzZXJBY3Rpdml0eSYgY29ubmVj
dGlvbkFjdGl2aXR5KCkgeyByZXR1cm4gbV9jb25uZWN0aW9uQWN0aXZpdHk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBs
dWdpbk1vZHVsZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKaW5kZXggZGFmOWJhZWNlZTUuLjdh
ZjA5ODMzZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNw
cApAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdp
bkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKLSAgICBwbHVnaW4u
aW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5pbmZv
LmZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CiAgICAgcGx1
Z2luLmluZm8ubmFtZSA9IG1ldGFEYXRhLm5hbWU7CiAgICAgcGx1Z2luLmluZm8uZGVzYyA9IG1l
dGFEYXRhLmRlc2NyaXB0aW9uOwogICAgIHBhcnNlTUlNRURlc2NyaXB0aW9uKG1ldGFEYXRhLm1p
bWVEZXNjcmlwdGlvbiwgcGx1Z2luLmluZm8ubWltZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCmluZGV4IDdlODky
ZjAwYzg1Li4wNzUxZjBmZjU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy91bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcApAQCAtNDgsOCArNDgsOCBAQCBWZWN0
b3I8U3RyaW5nPiBwbHVnaW5zRGlyZWN0b3JpZXMoKQogICAgIGlmICghbW96aWxsYUhvbWUuaXNF
bXB0eSgpKQogICAgICAgICByZXN1bHQuYXBwZW5kKG1vemlsbGFIb21lICsgIi9wbHVnaW5zIik7
CiAKLSAgICByZXN1bHQuYXBwZW5kKGhvbWVEaXJlY3RvcnlQYXRoKCkgKyAiLy5tb3ppbGxhL3Bs
dWdpbnMiKTsKLSAgICByZXN1bHQuYXBwZW5kKGhvbWVEaXJlY3RvcnlQYXRoKCkgKyAiLy5uZXRz
Y2FwZS9wbHVnaW5zIik7CisgICAgcmVzdWx0LmFwcGVuZChGaWxlU3lzdGVtOjpob21lRGlyZWN0
b3J5UGF0aCgpICsgIi8ubW96aWxsYS9wbHVnaW5zIik7CisgICAgcmVzdWx0LmFwcGVuZChGaWxl
U3lzdGVtOjpob21lRGlyZWN0b3J5UGF0aCgpICsgIi8ubmV0c2NhcGUvcGx1Z2lucyIpOwogICAg
IHJlc3VsdC5hcHBlbmQoIi91c3IvbGliL2Jyb3dzZXIvcGx1Z2lucyIpOwogICAgIHJlc3VsdC5h
cHBlbmQoIi91c3IvbG9jYWwvbGliL21vemlsbGEvcGx1Z2lucyIpOwogICAgIHJlc3VsdC5hcHBl
bmQoIi91c3IvbGliL2ZpcmVmb3gvcGx1Z2lucyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJN
ZW1vcnlTYW1wbGVyLmNwcAppbmRleCAxNTEzMzkwODhkYy4uOTYzNmYxMWY4YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAg
dm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzdG9wKCkKICAgICBpZiAoIW1faXNSdW5uaW5nKSAKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fc2FtcGxlVGltZXIuc3RvcCgpOwotICAgIGNsb3NlRmlsZSht
X3NhbXBsZUxvZ0ZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX3NhbXBsZUxvZ0Zp
bGUpOwogCiAgICAgcHJpbnRmKCJTdG9wcGVkIG1lbW9yeSBzYW1wbGVyIGZvciBwcm9jZXNzICVz
ICVkXG4iLCBwcm9jZXNzTmFtZSgpLnV0ZjgoKS5kYXRhKCksIGdldHBpZCgpKTsKICAgICAvLyBG
bHVzaCBzdGRvdXQgYnVmZmVyIHNvIHB5dGhvbiBzY3JpcHQgY2FuIGJlIGd1YXJhbnRlZWQgdG8g
cmVhZCB1cCB0byB0aGlzIHBvaW50LgpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgV2ViTWVtb3J5
U2FtcGxlcjo6aXNSdW5uaW5nKCkgY29uc3QKICAgICAKIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6
aW5pdGlhbGl6ZVRlbXBMb2dGaWxlKCkKIHsKLSAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRoID0gb3Bl
blRlbXBvcmFyeUZpbGUocHJvY2Vzc05hbWUoKSwgbV9zYW1wbGVMb2dGaWxlKTsKKyAgICBtX3Nh
bXBsZUxvZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUocHJvY2Vzc05h
bWUoKSwgbV9zYW1wbGVMb2dGaWxlKTsKICAgICB3cml0ZUhlYWRlcnMoKTsKIH0KIApAQCAtMTM3
LDcgKzEzNyw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExv
Z0ZpbGUoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKG1fc2FtcGxlTG9n
U2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgbV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uLT5j
b25zdW1lKCk7CiAgICAgbV9zYW1wbGVMb2dGaWxlUGF0aCA9IHNhbXBsZUxvZ0ZpbGVQYXRoOwot
ICAgIG1fc2FtcGxlTG9nRmlsZSA9IG9wZW5GaWxlKG1fc2FtcGxlTG9nRmlsZVBhdGgsIE9wZW5G
b3JXcml0ZSk7CisgICAgbV9zYW1wbGVMb2dGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9z
YW1wbGVMb2dGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICB3cml0ZUhl
YWRlcnMoKTsKIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6
d3JpdGVIZWFkZXJzKCkKICAgICBTdHJpbmcgcHJvY2Vzc0RldGFpbHMgPSBTdHJpbmc6OmZvcm1h
dCgiUHJvY2VzczogJXMgUGlkOiAlZFxuIiwgcHJvY2Vzc05hbWUoKS51dGY4KCkuZGF0YSgpLCBn
ZXRwaWQoKSk7CiAKICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwcm9jZXNzRGV0YWlscy51dGY4
KCk7Ci0gICAgd3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwg
dXRmOFN0cmluZy5sZW5ndGgoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9zYW1w
bGVMb2dGaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CiB9CiAK
IHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c2FtcGxlVGltZXJGaXJlZCgpCkBAIC0xNjMsNyArMTYz
LDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzdG9wVGltZXJGaXJlZCgpCiAgICAgc3RvcCgp
OwogfQogCi12b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRv
RmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKQordm9pZCBXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRD
dXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJikK
IHsKICAgICAvLyBDb2xsZWN0IHN0YXRpc3RpY3MgZnJvbSBhbGxvY2F0b3JzIGFuZCBnZXQgUlNJ
WkUgbWV0cmljCiAgICAgU3RyaW5nQnVpbGRlciBzdGF0U3RyaW5nOwpAQCAtMTgyLDcgKzE4Miw3
IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSYpCiAgICAgc3RhdFN0cmluZy5hcHBlbmQoJ1xuJyk7CiAKICAg
ICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBzdGF0U3RyaW5nLnRvU3RyaW5nKCkudXRmOCgpOwotICAg
IHdyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJp
bmcubGVuZ3RoKCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmls
ZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKaW5kZXggMjc4N2I1MTVkYWIuLjMyNWVl
YjgyYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCkBAIC04Nyw3
ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRvdWJsZSk7CiAg
ICAgdm9pZCBzYW1wbGVUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzdG9wVGltZXJGaXJlZCgpOwot
ICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFdlYkNvcmU6OlBsYXRmb3Jt
RmlsZUhhbmRsZSYpOworICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFdl
YkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpOwogICAgIHZvaWQgc2VuZE1l
bW9yeVByZXNzdXJlRXZlbnQoKTsKICAgICAKICAgICBTeXN0ZW1NYWxsb2NTdGF0cyBzYW1wbGVT
eXN0ZW1NYWxsb2MoKSBjb25zdDsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJN
ZW1vcnlTdGF0aXN0aWNzIHNhbXBsZVdlYktpdCgpIGNvbnN0OwogICAgIFN0cmluZyBwcm9jZXNz
TmFtZSgpIGNvbnN0OwogICAgIAotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3Nh
bXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fc2FtcGxlTG9nRmlsZSB7
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKICAgICBT
dHJpbmcgbV9zYW1wbGVMb2dGaWxlUGF0aDsKICAgICBXZWJDb3JlOjpUaW1lciBtX3NhbXBsZVRp
bWVyOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc3RvcFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAppbmRleCA4YjM4
MzMzODA4Yi4uOWNhNmZmNjU2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0
ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRp
YyBTdHJpbmcgZ2V0RXhlY3V0YWJsZVBhdGgoKQogewogICAgIENTdHJpbmcgZXhlY3V0YWJsZVBh
dGggPSBnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKTsKICAgICBpZiAoIWV4ZWN1dGFibGVQYXRo
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZGlyZWN0b3J5TmFtZShzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoLmRhdGEoKSkpOworICAgICAgICByZXR1
cm4gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoLmRhdGEoKSkpOwogICAgIHJldHVybiBT
dHJpbmcoKTsKIH0KICNlbmRpZgpAQCAtNTMsMjAgKzUzLDIwIEBAIHN0YXRpYyBTdHJpbmcgZmlu
ZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUpCiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleGVjRGlyZWN0b3J5ID0gZ19nZXRl
bnYoIldFQktJVF9FWEVDX1BBVEgiKTsKICAgICBpZiAoZXhlY0RpcmVjdG9yeSkgewotICAgICAg
ICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOwot
ICAgICAgICBpZiAoZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCisgICAgICAgIFN0cmluZyBwcm9j
ZXNzUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9j
ZXNzTmFtZSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRo
KSkKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKICAgICBzdGF0aWMg
U3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gZ2V0RXhlY3V0YWJsZVBhdGgoKTsKICAgICBpZiAoIWV4
ZWN1dGFibGVQYXRoLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0aCwgcHJvY2Vzc05hbWUpOwotICAg
ICAgICBpZiAoZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCisgICAgICAgIFN0cmluZyBwcm9jZXNz
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0
aCwgcHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwcm9j
ZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oUEtHTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKKyAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oUEtHTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1l
KTsKIH0KIAogU3RyaW5nIGV4ZWN1dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCmluZGV4IDcyZjUxMjM2Y2I1Li4zZWM1
NGJmMzQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vz
c0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1t
CkBAIC03MSwxNCArNzEsMTQgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYKICAgICB9CiAKICAg
ICBTdHJpbmcgc2FuZGJveEltcG9ydFBhdGggPSAiL3Vzci9sb2NhbC9zaGFyZS9zYW5kYm94L2lt
cG9ydHMiOwotICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIklNUE9SVF9E
SVIiLCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveEltcG9ydFBhdGgpLmRhdGEoKSk7
CisgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSU1QT1JUX0RJUiIsIEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94SW1wb3J0UGF0aCkuZGF0
YSgpKTsKIAogICAgIHN3aXRjaCAoc2FuZGJveFBhcmFtZXRlcnMubW9kZSgpKSB7CiAgICAgY2Fz
ZSBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpVc2VEZWZhdWx0U2FuZGJveFByb2Zp
bGVQYXRoOgogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlT3Zl
cnJpZGVTYW5kYm94UHJvZmlsZVBhdGg6IHsKICAgICAgICAgU3RyaW5nIHNhbmRib3hQcm9maWxl
UGF0aCA9IHNhbmRib3hQYXJhbWV0ZXJzLm1vZGUoKSA9PSBTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzOjpVc2VEZWZhdWx0U2FuZGJveFByb2ZpbGVQYXRoID8gZGVmYXVsdFByb2ZpbGVQ
YXRoIDogc2FuZGJveFBhcmFtZXRlcnMub3ZlcnJpZGVTYW5kYm94UHJvZmlsZVBhdGgoKTsKICAg
ICAgICAgaWYgKCFzYW5kYm94UHJvZmlsZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBD
U3RyaW5nIHByb2ZpbGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQcm9m
aWxlUGF0aCk7CisgICAgICAgICAgICBDU3RyaW5nIHByb2ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQcm9maWxlUGF0aCk7CiAgICAgICAgICAg
ICBjaGFyKiBlcnJvckJ1ZjsKICAgICAgICAgICAgIGlmIChzYW5kYm94X2luaXRfd2l0aF9wYXJh
bWV0ZXJzKHByb2ZpbGVQYXRoLmRhdGEoKSwgU0FOREJPWF9OQU1FRF9FWFRFUk5BTCwgc2FuZGJv
eFBhcmFtZXRlcnMubmFtZWRQYXJhbWV0ZXJBcnJheSgpLCAmZXJyb3JCdWYpKSB7CiAgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgaW5pdGlhbGl6ZSBzYW5kYm94IHBy
b2ZpbGUgWyVzXSwgZXJyb3IgJyVzJ1xuIiwgZ2V0cHJvZ25hbWUoKSwgcHJvZmlsZVBhdGguZGF0
YSgpLCBlcnJvckJ1Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hp
bGRQcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01h
Yy5tbQppbmRleCA1NGFlNjU4MDJkMy4uMjc2ZTZlM2ZjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2hp
bGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmCiAgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGFyYW1ldGVyKCJfT1Nf
VkVSU0lPTiIsIG9zVmVyc2lvbi51dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIFVzZSBwcml2YXRl
IHRlbXBvcmFyeSBhbmQgY2FjaGUgZGlyZWN0b3JpZXMuCi0gICAgc2V0ZW52KCJESVJIRUxQRVJf
VVNFUl9ESVJfU1VGRklYIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQYXJhbWV0
ZXJzLnVzZXJEaXJlY3RvcnlTdWZmaXgoKSkuZGF0YSgpLCAxKTsKKyAgICBzZXRlbnYoIkRJUkhF
TFBFUl9VU0VSX0RJUl9TVUZGSVgiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc2FuZGJveFBhcmFtZXRlcnMudXNlckRpcmVjdG9yeVN1ZmZpeCgpKS5kYXRhKCksIDEpOwog
ICAgIGNoYXIgdGVtcG9yYXJ5RGlyZWN0b3J5W1BBVEhfTUFYXTsKICAgICBpZiAoIWNvbmZzdHIo
X0NTX0RBUldJTl9VU0VSX1RFTVBfRElSLCB0ZW1wb3JhcnlEaXJlY3RvcnksIHNpemVvZih0ZW1w
b3JhcnlEaXJlY3RvcnkpKSkgewogICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBjb3VsZG4ndCBy
ZXRyaWV2ZSBwcml2YXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgcGF0aDogJWRcbiIsIGdldHByb2du
YW1lKCksIGVycm5vKTsKQEAgLTE1NCwxOCArMTU0LDE4IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjpp
bml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmCiAgICAgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHB3ZC5wd19kaXIpOwogICAg
IHBhdGguYXBwZW5kKCIvTGlicmFyeSIpOwogCi0gICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0
aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX0RJUiIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOworICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhP
TUVfTElCUkFSWV9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCkuZGF0YSgpKTsKIAogICAgIHBhdGguYXBwZW5kKCIvUHJlZmVyZW5jZXMiKTsKIAotICAgIHNh
bmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9QUkVGRVJFTkNF
U19ESVIiLCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBzYW5k
Ym94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfUFJFRkVSRU5DRVNf
RElSIiwgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
CiAKICAgICBzd2l0Y2ggKHNhbmRib3hQYXJhbWV0ZXJzLm1vZGUoKSkgewogICAgIGNhc2UgU2Fu
ZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlRGVmYXVsdFNhbmRib3hQcm9maWxlUGF0
aDoKICAgICBjYXNlIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZU92ZXJyaWRl
U2FuZGJveFByb2ZpbGVQYXRoOiB7CiAgICAgICAgIFN0cmluZyBzYW5kYm94UHJvZmlsZVBhdGgg
PSBzYW5kYm94UGFyYW1ldGVycy5tb2RlKCkgPT0gU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVyczo6VXNlRGVmYXVsdFNhbmRib3hQcm9maWxlUGF0aCA/IGRlZmF1bHRQcm9maWxlUGF0aCA6
IHNhbmRib3hQYXJhbWV0ZXJzLm92ZXJyaWRlU2FuZGJveFByb2ZpbGVQYXRoKCk7CiAgICAgICAg
IGlmICghc2FuZGJveFByb2ZpbGVQYXRoLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgQ1N0cmlu
ZyBwcm9maWxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94UHJvZmlsZVBh
dGgpOworICAgICAgICAgICAgQ1N0cmluZyBwcm9maWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94UHJvZmlsZVBhdGgpOwogICAgICAgICAgICAgY2hh
ciogZXJyb3JCdWY7CiAgICAgICAgICAgICBpZiAoc2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVy
cyhwcm9maWxlUGF0aC5kYXRhKCksIFNBTkRCT1hfTkFNRURfRVhURVJOQUwsIHNhbmRib3hQYXJh
bWV0ZXJzLm5hbWVkUGFyYW1ldGVyQXJyYXkoKSwgJmVycm9yQnVmKSkgewogICAgICAgICAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxkbid0IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxl
IFslc10sIGVycm9yICclcydcbiIsIGdldHByb2duYW1lKCksIHByb2ZpbGVQYXRoLmRhdGEoKSwg
ZXJyb3JCdWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hF
eHRlbnNpb25NYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQppbmRleCAxYThiOWZkY2ZiMC4uZDkyY2JmOTdjOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tCkBAIC0yNzcsNyArMjc3LDcg
QEAgU3RyaW5nIHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0
ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIFN0cmluZyByZXNvbHZlUGF0aEZvclNhbmRib3hF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVk
IGJvdGggcmVzb2x2ZVN5bWxpbmtzSW5QYXRoKCkgYW5kIC1zdHJpbmdCeVN0YW5kYXJkaXppbmdQ
YXRoPwotICAgIENTdHJpbmcgZmlsZVN5c3RlbVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oWyhOU1N0cmluZyAqKXBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOworICAgIENT
dHJpbmcgZmlsZVN5c3RlbVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oWyhOU1N0cmluZyAqKXBhdGggc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwogICAgIGlm
IChmaWxlU3lzdGVtUGF0aC5pc051bGwoKSkgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5v
dCBjcmVhdGUgYSB2YWxpZCBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHN0cmlu
ZyAnJXMnIG9mIGxlbmd0aCAlbHUiLCBmaWxlU3lzdGVtUGF0aC5kYXRhKCksIGZpbGVTeXN0ZW1Q
YXRoLmxlbmd0aCgpKTsKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTMzNSw3ICszMzUsNyBAQCBT
dHJpbmcgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yVGVtcG9yYXJ5RmlsZShjb25z
dCBTdHJpbmcmIHByZWZpeCwgVHlwZQogICAgIHBhdGguYXBwZW5kKHByZWZpeC51dGY4KCkuZGF0
YSgpLCBwcmVmaXgubGVuZ3RoKCkpOwogICAgIHBhdGguYXBwZW5kKCdcMCcpOwogICAgIAotICAg
IGhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRl
KGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoLmRhdGEoKSkuZGF0YSgpLCB0eXBlKTsKKyAg
ICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0
ZShGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5kYXRhKCkpLmRhdGEo
KSwgdHlwZSk7CiAKICAgICBpZiAoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pIHsKICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgY3JlYXRlIGEgc2FuZGJveCBleHRlbnNpb24gZm9y
IHRlbXBvcmFyeSBmaWxlICclcyciLCBwYXRoLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCmluZGV4IDIyZDQ1
Y2JiYmVmLi41ZWQ1NmQzNzA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3Bl
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
d3BlL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGlj
IFN0cmluZyBnZXRFeGVjdXRhYmxlUGF0aCgpCiB7CiAgICAgQ1N0cmluZyBleGVjdXRhYmxlUGF0
aCA9IGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJsZVBhdGgu
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBkaXJlY3RvcnlOYW1lKHN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CisgICAgICAgIHJldHVy
biBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQogCkBAIC00NywxOSArNDcsMTkgQEAgc3RhdGljIFN0cmluZyBmaW5kV2ViS2l0
UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYg
KGV4ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0Rp
cmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1Bh
dGgpKQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Bh
dGg7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdldEV4ZWN1
dGFibGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewotICAgICAg
ICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJs
ZVBhdGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgp
KQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIHBy
b2Nlc3NQYXRoOwogICAgIH0KIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihMSUJFWEVDRElSKSwgcHJvY2Vzc05h
bWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihMSUJFWEVDRElSKSwg
cHJvY2Vzc05hbWUpOwogfQogCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRl
eCBlY2Q1MTcwNzgzMC4uN2I0NjU2NDM1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBTdG9y
YWdlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAoIW1ha2VBbGxEaXJlY3Rvcmll
cyhwYXRoKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKSkK
ICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWFrZSBhbGwgZGlyZWN0b3JpZXMgZm9yIHBh
dGggJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKQEAgLTI4OCw3ICsyODgsNyBAQCB2
b2lkIFN0b3JhZ2VQcm9jZXNzOjphY2Nlc3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShjb25zdCBT
dHJpbmcmIHBhdGgpCiAgICAgLy8gV2UndmUgZWl0aGVyIGhhcmQgbGlua2VkIHRoZSB0ZW1wb3Jh
cnkgYmxvYiBmaWxlIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnksIGNvcGllZCBpdCB0aGVyZSwK
ICAgICAvLyBvciB0aGUgdHJhbnNhY3Rpb24gaXMgYmVpbmcgYWJvcnRlZC4KICAgICAvLyBJbiBh
bnkgb2YgdGhvc2UgY2FzZXMsIHdlIGNhbiBkZWxldGUgdGhlIHRlbXBvcmFyeSBibG9iIGZpbGUg
bm93LgotICAgIGRlbGV0ZUZpbGUocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShw
YXRoKTsKIAogICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IG1fYmxvYlRlbXBvcmFyeUZpbGVTYW5k
Ym94RXh0ZW5zaW9ucy50YWtlKHBhdGgpKQogICAgICAgICBleHRlbnNpb24tPnJldm9rZSgpOwpA
QCAtMzAwLDggKzMwMCw4IEBAIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IFN0
b3JhZ2VQcm9jZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0CiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBzZWN1cml0
eU9yaWdpbnM7Ci0gICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogbGlzdERpcmVjdG9yeShwYXRo
LCAiKiIpKSB7Ci0gICAgICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBwYXRoR2V0Rmls
ZU5hbWUob3JpZ2luUGF0aCk7CisgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgIFN0cmluZyBkYXRhYmFzZUlk
ZW50aWZpZXIgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CiAKICAg
ICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKSkKICAgICAgICAgICAgIHNlY3Vy
aXR5T3JpZ2lucy5hcHBlbmQoV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3Bw
CmluZGV4IDdmNGY4MDQyYTc3Li5iZDY4YjVlMDVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpDb250ZW50UnVsZUxpc3RTdG9yZShjb25z
dCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoLCBib29sIGxlCiAgICAgLCBtX3JlbW92ZVF1ZXVlKFdv
cmtRdWV1ZTo6Y3JlYXRlKCJDb250ZW50UnVsZUxpc3RTdG9yZSBSZW1vdmUgUXVldWUiKSkKICAg
ICAsIG1fbGVnYWN5RmlsZW5hbWUobGVnYWN5RmlsZW5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6bWFr
ZUFsbERpcmVjdG9yaWVzKHN0b3JlUGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKHN0b3JlUGF0aCk7CiB9CiAKIENvbnRlbnRSdWxlTGlzdFN0b3JlOjp+
Q29udGVudFJ1bGVMaXN0U3RvcmUoKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBjb25zdCBT
dHJpbmcgY29uc3RydWN0ZWRQYXRoRmlsdGVyKGJvb2wgbGVnYWN5RmlsZW5hbWUpCiAKIHN0YXRp
YyBTdHJpbmcgY29uc3RydWN0ZWRQYXRoKGNvbnN0IFN0cmluZyYgYmFzZSwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBib29sIGxlZ2FjeUZpbGVuYW1lKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmFzZSwgbWFrZVN0cmluZyhjb25zdHJ1Y3RlZFBh
dGhQcmVmaXgobGVnYWN5RmlsZW5hbWUpLCBXZWJDb3JlOjplbmNvZGVGb3JGaWxlTmFtZShpZGVu
dGlmaWVyKSkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoYmFzZSwgbWFrZVN0cmluZyhjb25zdHJ1Y3RlZFBhdGhQcmVmaXgobGVnYWN5
RmlsZW5hbWUpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShpZGVudGlm
aWVyKSkpOwogfQogCiAvLyBUaGUgc2l6ZSBhbmQgb2Zmc2V0IG9mIHRoZSBkZW5zZWx5IHBhY2tl
ZCBieXRlcyBpbiB0aGUgZmlsZSwgbm90IHNpemVvZiBhbmQgb2Zmc2V0b2YsIHdoaWNoIHdvdWxk
CkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlQ29udGVudFJ1bGVMaXN0TWV0
YURhdGEoQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhLCBjb24KIAogc3RhdGljIGJv
b2wgb3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIHBhdGgsIENvbnRlbnRS
dWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgZmlsZURhdGEpCiB7Ci0gICAgZmlsZURh
dGEgPSBtYXBGaWxlKFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRh
KCkpOworICAgIGZpbGVEYXRhID0gbWFwRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoZmlsZURhdGEuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTk0LDExICsxOTQsMTEgQEAgc3RhdGlj
IGJvb2wgb3BlbkFuZE1hcENvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJpbmcmIHBhdGgsIENvbnRl
bnRSdWxlTGlzdE1ldGFEYXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgd3Jp
dGVEYXRhVG9GaWxlKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmQpCitzdGF0aWMgYm9vbCB3cml0ZURhdGFUb0ZpbGUoY29uc3QgRGF0YSYgZmlsZURh
dGEsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKIHsKICAgICBi
b29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIGZpbGVEYXRhLmFwcGx5KFtmZCwgJnN1Y2Nlc3NdKGNv
bnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjp3
cml0ZVRvRmlsZShmZCwgKGNvbnN0IGNoYXIqKWRhdGEsIHNpemUpID09IC0xKSB7CisgICAgICAg
IGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgKGNvbnN0IGNoYXIqKWRh
dGEsIHNpemUpID09IC0xKSB7CiAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMg
c3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmlu
ZyYgZmluYWxGaWxlUGF0aAogCiAgICAgY2xhc3MgQ29tcGlsYXRpb25DbGllbnQgZmluYWwgOiBw
dWJsaWMgQ29udGVudEV4dGVuc2lvbkNvbXBpbGF0aW9uQ2xpZW50IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIENvbXBpbGF0aW9uQ2xpZW50KFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
SGFuZGxlLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEpCisgICAgICAgIENvbXBp
bGF0aW9uQ2xpZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
SGFuZGxlLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEpCiAgICAgICAgICAgICA6
IG1fZmlsZUhhbmRsZShmaWxlSGFuZGxlKQogICAgICAgICAgICAgLCBtX21ldGFEYXRhKG1ldGFE
YXRhKQogICAgICAgICB7CkBAIC0yMzIsMTUgKzIzMiwxNSBAQCBzdGF0aWMgc3RkOjplcnJvcl9j
b2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxl
UGF0aAogICAgICAgICAgICAgQVNTRVJUKCFtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0
ZW4pOwogICAgICAgICAgICAgQVNTRVJUKCFtX2FjdGlvbnNXcml0dGVuKTsKICAgICAgICAgICAg
IEFTU0VSVCghbV9zb3VyY2VXcml0dGVuKTsKLSAgICAgICAgICAgIHdyaXRlVG9GaWxlKHNvdXJj
ZUpTT04uaXM4Qml0KCkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoc291
cmNlSlNPTi5pczhCaXQoKSk7CiAgICAgICAgICAgICBtX3NvdXJjZVdyaXR0ZW4gKz0gc2l6ZW9m
KGJvb2wpOwogICAgICAgICAgICAgaWYgKHNvdXJjZUpTT04uaXM4Qml0KCkpIHsKICAgICAgICAg
ICAgICAgICBzaXplX3Qgc2VyaWFsaXplZExlbmd0aCA9IHNvdXJjZUpTT04ubGVuZ3RoKCkgKiBz
aXplb2YoTENoYXIpOwotICAgICAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoc291cmNlSlNP
Ti5jaGFyYWN0ZXJzOCgpLCBzZXJpYWxpemVkTGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRGF0YShzb3VyY2VKU09OLmNoYXJhY3RlcnM4KCksIHNlcmlh
bGl6ZWRMZW5ndGgpKTsKICAgICAgICAgICAgICAgICBtX3NvdXJjZVdyaXR0ZW4gKz0gc2VyaWFs
aXplZExlbmd0aDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90
IHNlcmlhbGl6ZWRMZW5ndGggPSBzb3VyY2VKU09OLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsK
LSAgICAgICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNvdXJjZUpTT04uY2hhcmFjdGVyczE2KCkpLCBzZXJpYWxpemVkTGVuZ3RoKSk7
CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRGF0YShyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VKU09OLmNoYXJhY3RlcnMxNigpKSwgc2VyaWFs
aXplZExlbmd0aCkpOwogICAgICAgICAgICAgICAgIG1fc291cmNlV3JpdHRlbiArPSBzZXJpYWxp
emVkTGVuZ3RoOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yNTAsMjAgKzI1MCwyMCBA
QCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNv
bnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbHRlcnNX
aXRoQ29uZGl0aW9uQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9jb25k
aXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIG1fZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKLSAgICAgICAg
ICAgIHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgp
LCBieXRlY29kZS5zaXplKCkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdm9pZCB3
cml0ZUZpbHRlcnNXaXRoQ29uZGl0aW9uc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29kZT4mJiBi
eXRlY29kZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX2NvbmRpdGlv
bkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOwogICAgICAgICAgICAgbV9maWx0ZXJzV2l0aENvbmRp
dGlvbkJ5dGVjb2RlV3JpdHRlbiArPSBieXRlY29kZS5zaXplKCk7Ci0gICAgICAgICAgICB3cml0
ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CisgICAgICAg
ICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNv
ZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVUb3BV
UkxGaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2NvbmRpdGlvbkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4g
Kz0gYnl0ZWNvZGUuc2l6ZSgpOwotICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShieXRlY29k
ZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoRGF0YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwogICAgICAg
ICB9CiAKICAgICAgICAgdm9pZCB3cml0ZUFjdGlvbnMoVmVjdG9yPFNlcmlhbGl6ZWRBY3Rpb25C
eXRlPiYmIGFjdGlvbnMsIGJvb2wgY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluKSBmaW5hbApA
QCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUo
U3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBB
U1NFUlQoIW1fYWN0aW9uc1dyaXR0ZW4pOwogICAgICAgICAgICAgbV9hY3Rpb25zV3JpdHRlbiAr
PSBhY3Rpb25zLnNpemUoKTsKICAgICAgICAgICAgIG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9t
YWluID0gY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwotICAgICAgICAgICAgd3JpdGVUb0Zp
bGUoRGF0YShhY3Rpb25zLmRhdGEoKSwgYWN0aW9ucy5zaXplKCkpKTsKKyAgICAgICAgICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKERhdGEoYWN0aW9ucy5kYXRhKCksIGFjdGlvbnMuc2l6ZSgp
KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHZvaWQgZmluYWxpemUoKSBmaW5hbApA
QCAtMjg3LDI5ICsyODcsMjkgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmls
ZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICAgICAgICAg
IG1fbWV0YURhdGEuY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluID0gbV9jb25kaXRpb25zQXBw
bHlPbmx5VG9Eb21haW47CiAgICAgICAgICAgICAKICAgICAgICAgICAgIERhdGEgaGVhZGVyID0g
ZW5jb2RlQ29udGVudFJ1bGVMaXN0TWV0YURhdGEobV9tZXRhRGF0YSk7Ci0gICAgICAgICAgICBp
ZiAoIW1fZmlsZUVycm9yICYmIFdlYkNvcmU6OnNlZWtGaWxlKG1fZmlsZUhhbmRsZSwgMGxsLCBX
ZWJDb3JlOjpGaWxlU2Vla09yaWdpbjo6U2Vla0Zyb21CZWdpbm5pbmcpID09IC0xKSB7Ci0gICAg
ICAgICAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAg
ICBpZiAoIW1fZmlsZUVycm9yICYmIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNlZWtGaWxlKG1fZmls
ZUhhbmRsZSwgMGxsLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlU2Vla09yaWdpbjo6RmlsZVN5
c3RlbTo6U2Vla0Zyb21CZWdpbm5pbmcpID09IC0xKSB7CisgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgICAgICAgICAg
bV9maWxlRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgd3JpdGVUb0Zp
bGUoaGVhZGVyKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlcik7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaGFkRXJyb3JXaGlsZVdyaXRpbmdU
b0ZpbGUoKSB7IHJldHVybiBtX2ZpbGVFcnJvcjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCB3cml0ZVRvRmlsZShib29sIHZhbHVlKQorICAgICAgICB2b2lkIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGJvb2wgdmFsdWUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHdyaXRlVG9GaWxl
KERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVlKSwgc2l6ZW9mKHZh
bHVlKSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRGF0YShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmdmFsdWUpLCBzaXplb2YodmFsdWUpKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgdm9pZCB3cml0ZVRvRmlsZShjb25zdCBEYXRhJiBkYXRhKQorICAgICAg
ICB2b2lkIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGNvbnN0IERhdGEmIGRhdGEpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgIXdyaXRlRGF0YVRvRmlsZShkYXRh
LCBtX2ZpbGVIYW5kbGUpKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKG1f
ZmlsZUhhbmRsZSk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgICAgICAgICAgbV9maWxlRXJyb3IgPSB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBXZWJDb3JlOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOwogICAgICAgICBDb250ZW50UnVsZUxp
c3RNZXRhRGF0YSYgbV9tZXRhRGF0YTsKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhvdXRD
b25kaXRpb25zQnl0ZWNvZGVXcml0dGVuIHsgMCB9OwogICAgICAgICBzaXplX3QgbV9maWx0ZXJz
V2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiB7IDAgfTsKQEAgLTMyMCwyNyArMzIwLDI3IEBA
IHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29u
c3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgIGJvb2wgbV9maWxlRXJyb3IgeyBmYWxz
ZSB9OwogICAgIH07CiAKLSAgICBhdXRvIHRlbXBvcmFyeUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0aCA9
IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiLCB0ZW1wb3JhcnlG
aWxlSGFuZGxlKTsKLSAgICBpZiAodGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gdGVtcG9yYXJ5RmlsZUhhbmRsZSA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgU3RyaW5n
IHRlbXBvcmFyeUZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIkNvbnRlbnRSdWxlTGlzdCIsIHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgIGlmICh0ZW1w
b3JhcnlGaWxlSGFuZGxlID09IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNv
bXBpbGVGYWlsZWQ7CiAgICAgCiAgICAgY2hhciBpbnZhbGlkSGVhZGVyW0NvbnRlbnRSdWxlTGlz
dEZpbGVIZWFkZXJTaXplXTsKICAgICBtZW1zZXQoaW52YWxpZEhlYWRlciwgMHhGRiwgc2l6ZW9m
KGludmFsaWRIZWFkZXIpKTsKICAgICAvLyBUaGlzIGhlYWRlciB3aWxsIGJlIHJld3JpdHRlbiBp
biBDb21waWxhdGlvbkNsaWVudDo6ZmluYWxpemUuCi0gICAgaWYgKFdlYkNvcmU6OndyaXRlVG9G
aWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUsIGludmFsaWRIZWFkZXIsIHNpemVvZihpbnZhbGlkSGVh
ZGVyKSkgPT0gLTEpIHsKLSAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVI
YW5kbGUpOworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0ZW1wb3Jh
cnlGaWxlSGFuZGxlLCBpbnZhbGlkSGVhZGVyLCBzaXplb2YoaW52YWxpZEhlYWRlcikpID09IC0x
KSB7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxl
SGFuZGxlKTsKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29t
cGlsZUZhaWxlZDsKICAgICB9CiAKICAgICBDb21waWxhdGlvbkNsaWVudCBjb21waWxhdGlvbkNs
aWVudCh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBtZXRhRGF0YSk7CiAgICAgCiAgICAgaWYgKGF1dG8g
Y29tcGlsZXJFcnJvciA9IGNvbXBpbGVSdWxlTGlzdChjb21waWxhdGlvbkNsaWVudCwgV1RGTW92
ZShqc29uKSkpIHsKLSAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5k
bGUpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5Rmls
ZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBjb21waWxlckVycm9yOwogICAgIH0KICAgICBpZiAo
Y29tcGlsYXRpb25DbGllbnQuaGFkRXJyb3JXaGlsZVdyaXRpbmdUb0ZpbGUoKSkgewotICAgICAg
ICBXZWJDb3JlOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAgICAg
cmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKICAgICB9
CiAgICAgCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
ZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICBp
ZiAobWFwcGVkRGF0YS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0
b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKIAotICAgIGlmICghV2ViQ29yZTo6bW92ZUZpbGUo
dGVtcG9yYXJ5RmlsZVBhdGgsIGZpbmFsRmlsZVBhdGgpKQorICAgIGlmICghV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bW92ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgsIGZpbmFsRmlsZVBhdGgpKQogICAg
ICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwog
CiAgICAgcmV0dXJuIHsgfTsKQEAgLTQxMiwxMiArNDEyLDEyIEBAIHZvaWQgQ29udGVudFJ1bGVM
aXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKEZ1bmN0aW9u
PHZvaWQoCiB7CiAgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdh
Y3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAKLSAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gZnVsbFBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVj
dGVkUGF0aEZpbHRlcihsZWdhY3lGaWxlbmFtZSkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBm
dWxsUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwg
Y29uc3RydWN0ZWRQYXRoRmlsdGVyKGxlZ2FjeUZpbGVuYW1lKSk7CiAgICAgICAgIFZlY3RvcjxT
dHJpbmc+IGlkZW50aWZpZXJzOwogICAgICAgICBpZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KGZ1bGxQYXRocy5zaXplKCkpOwogICAgICAgICBjb25zdCBhdXRvIHByZWZpeExlbmd0
aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFtZSkubGVuZ3RoKCk7CiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGZ1bGxQYXRocykKLSAgICAgICAgICAgIGlkZW50
aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpkZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5z
dWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSArIHByZWZpeExlbmd0aCkpKTsKKyAg
ICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycp
ICsgMSArIHByZWZpeExlbmd0aCkpKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9IFdURk1vdmUo
aWRlbnRpZmllcnMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShpZGVudGlmaWVycykpOwpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwKICAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3Rv
cmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9s
ZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0
b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOwogCi0gICAgICAgIGlmICghV2Vi
Q29yZTo6ZGVsZXRlRmlsZShwYXRoKSkgeworICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUocGF0aCkpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKICAgICAgICAgICAgIH0pOwpA
QCAtNDY5LDE5ICs0NjksMTkgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29u
dGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAogCiB2b2lkIENvbnRl
bnRSdWxlTGlzdFN0b3JlOjpzeW5jaHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQog
ewotICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobV9z
dG9yZVBhdGgsICIqIikpCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCk7CisgICAg
Zm9yIChjb25zdCBhdXRvJiBwYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9y
eShtX3N0b3JlUGF0aCwgIioiKSkKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShwYXRoKTsKIH0KIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNv
bnRlbnRSdWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCiB7Ci0g
ICAgYXV0byBmaWxlID0gV2ViQ29yZTo6b3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQ
YXRoLCBpZGVudGlmaWVyLCBtX2xlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRl
KTsKLSAgICBpZiAoZmlsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQor
ICAgIGF1dG8gZmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0cnVjdGVk
UGF0aChtX3N0b3JlUGF0aCwgaWRlbnRpZmllciwgbV9sZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6
OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogICAg
IENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRIZWFkZXIgPSB7MCwgMCwgMCwgMCwgMCwg
MH07Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSBXZWJDb3JlOjp3cml0ZVRvRmlsZShmaWxlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZh
bGlkSGVhZGVyKSk7CisgICAgYXV0byBieXRlc1dyaXR0ZW4gPSBXZWJDb3JlOjpGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52YWxp
ZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRl
c1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplb2YoaW52YWxpZEhlYWRlcikpOwotICAgIFdl
YkNvcmU6OmNsb3NlRmlsZShmaWxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZSk7CiB9CiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRSdWxl
TGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChX
VEY6OlN0cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmlu
ZGV4IDcwY2EzNmIzZWZiLi40NjZjMGNmNWQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApA
QCAtNDUsMTIgKzQ1LDEyIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpCiAvLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1l
c3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlvbj8KIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19n
ZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9y
eUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CiB9CiAKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsK
LSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKKyAgICBy
ZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hl
U3RvcmFnZSIpKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpCkBAIC04MCwxMiArODAsMTIgQEAgU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2Vy
X2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25m
aWd1cmF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwCmluZGV4IDIyMDhlYWVmMDUwLi5jMzc3NTgyNTRiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yMTQs
NyArMjE0LDcgQEAgYm9vbCBJY29uRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IGRp
cmVjdG9yeS5pc29sYXRlZENvcHkoKTsKIAogICAgIC8vIEZvcm11bGF0ZSB0aGUgZnVsbCBwYXRo
IGZvciB0aGUgZGF0YWJhc2UgZmlsZQotICAgIG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeSwgZmlsZW5hbWUpOworICAg
IG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeSwgZmlsZW5hbWUpOwogCiAgICAgLy8gTG9jayBoZXJl
IGFzIHdlbGwgYXMgZmlyc3QgdGhpbmcgaW4gdGhlIHRocmVhZCBzbyB0aGUgdGhyZWFkIGRvZXNu
J3QgYWN0dWFsbHkgY29tbWVuY2UgdW50aWwgdGhlIGNyZWF0ZVRocmVhZCgpIGNhbGwKICAgICAv
LyBjb21wbGV0ZXMgYW5kIG1fc3luY1RocmVhZFJ1bm5pbmcgaXMgcHJvcGVybHkgc2V0CkBAIC04
NjksMTMgKzg2OSwxMyBAQCB2b2lkIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVh
ZCgpCiAjZW5kaWYKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIHRoZSBkYXRhYmFzZSBwYXRoIGlm
IGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2RhdGFi
YXNlRGlyZWN0b3J5KTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9kYXRh
YmFzZURpcmVjdG9yeSk7CiAKICAgICAvLyBFeGlzdGVuY2Ugb2YgYSBqb3VybmFsIGZpbGUgaXMg
ZXZpZGVuY2Ugb2YgYSBwcmV2aW91cyBjcmFzaC9mb3JjZSBxdWl0IGFuZCBhdXRvbWF0aWNhbGx5
IHF1YWxpZmllcwogICAgIC8vIHVzIHRvIGRvIGFuIGludGVncml0eSBjaGVjawogICAgIFN0cmlu
ZyBqb3VybmFsRmlsZW5hbWUgPSBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIjsK
ICAgICBpZiAoIWNoZWNrSW50ZWdyaXR5T25PcGVuKQotICAgICAgICBjaGVja0ludGVncml0eU9u
T3BlbiA9IGZpbGVFeGlzdHMoam91cm5hbEZpbGVuYW1lKTsKKyAgICAgICAgY2hlY2tJbnRlZ3Jp
dHlPbk9wZW4gPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGpvdXJuYWxGaWxlbmFtZSk7CiAKICAg
ICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xvY2spOwpAQCAtMTAwOCw4ICsx
MDA4LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1PcGVuSW5pdGlhbGl6YXRpb24oKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xv
Y2spOwogICAgICAgICAgICAgICAgIC8vIFNob3VsZCd2ZSBiZWVuIGNvbnN1bWVkIGJ5IFNRTGl0
ZSwgZGVsZXRlIGp1c3QgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHNlZSBpdCBhZ2FpbiBpbiB0aGUg
ZnV0dXJlOwotICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0
aCArICItam91cm5hbCIpOwotICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUobV9jb21wbGV0ZURh
dGFiYXNlUGF0aCk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Nv
bXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIik7CisgICAgICAgICAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gUmVvcGVuIHRoZSB3cml0ZSBkYXRhYmFzZSwgY3JlYXRpbmcgaXQg
ZnJvbSBzY3JhdGNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCA2ZTI4NGY4MmRjZC4uMzcyNDQz
ZTJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgd2Vi
a2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBj
b25zdCBTdHJpbmcmIHBhCiAgICAgcHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVkKHRydWUp
OwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQ
cmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKIAotICAgIGlm
ICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUocGF0aCks
IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZShwYXRoKSkpIHsKKyAgICBpZiAoIXByaXYtPmljb25E
YXRhYmFzZS0+b3BlbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIHBy
aXYtPmljb25EYXRhYmFzZSA9IG51bGxwdHI7CiAgICAgICAgIEljb25EYXRhYmFzZTo6YWxsb3dE
YXRhYmFzZUNsZWFudXAoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBm
NjAxMmM4NzNiNC4uNzg4MDQ5NGEzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcApAQCAt
MzYxLDcgKzM2MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2Via2l0X2ZpbGVfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9zZWxlY3RlZF9maWxlcyhXZWJLaXRGaWxlQ2hvCiAgICAgICAgIEFQSTo6U3Ry
aW5nKiB3ZWJGaWxlTmFtZSA9IHN0YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oc2VsZWN0ZWRGaWxl
TmFtZXMtPmF0KGkpKTsKICAgICAgICAgaWYgKHdlYkZpbGVOYW1lLT5zdHJpbmdWaWV3KCkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIENTdHJpbmcgZmlsZW5hbWUg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2ViRmlsZU5hbWUtPnN0cmluZygpKTsKKyAgICAg
ICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bih3ZWJGaWxlTmFtZS0+c3RyaW5nKCkpOwogICAgICAgICBnX3B0cl9hcnJheV9hZGQocmVxdWVz
dC0+cHJpdi0+c2VsZWN0ZWRGaWxlcy5nZXQoKSwgZ19zdHJkdXAoZmlsZW5hbWUuZGF0YSgpKSk7
CiAgICAgfQogICAgIGdfcHRyX2FycmF5X2FkZChyZXF1ZXN0LT5wcml2LT5zZWxlY3RlZEZpbGVz
LmdldCgpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNDI2MGVhYjc4MjQuLmZkMTc4MmY4YmU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcApAQCAtMzIxLDIxICszMjEsMjEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4
dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRs
ZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwgSU5K
RUNURURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CiAKICAgICBBUEk6OlByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0
ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
YnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVu
ZGxlUGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CiAgICAgY29uZmlndXJhdGlvbi5zZXRNYXhp
bXVtUHJvY2Vzc0NvdW50KDEpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlU3BlY3Vs
YXRpdmVWYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdl
YkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAgICAgaWYgKHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJh
bChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9y
YWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAg
IGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJp
di0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkp
OwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2Rp
cmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dl
YnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAg
ICBjb25maWd1cmF0aW9uLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2ViQ29y
ZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGljc19kaXJlY3RvcnkocHJpdi0+d2Vi
c2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2Fs
U3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3Rv
cmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAg
ICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBu
ZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZs
aW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9u
LnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAg
ICAgICAgY29uZmlndXJhdGlvbi5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZGly
ZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICB9IGVsc2UgaWYg
KCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIGNvbmZpZ3Vy
YXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwor
ICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2Fs
U3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2Vi
UHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApAQCAtOTEwLDcgKzkxMCw3IEBA
IHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHBy
aXYgPSBjb250ZXh0LT5wcml2OwogICAgIGVuc3VyZUZhdmljb25EYXRhYmFzZShjb250ZXh0KTsK
IAotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAgICAgLy8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgog
ICAgIGlmIChkaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKEdUSykKQEAg
LTkxOSw3ICs5MTksNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRh
YmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICBjb25zdCBj
aGFyKiBwb3J0RGlyZWN0b3J5ID0gIndwZSI7CiAjZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hl
X2RpcigpLCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwotICAgICAg
ICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgIGRpcmVjdG9yeVBhdGggPSBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRh
dGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICAgICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNl
RGlyZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51dGY4KCk7CiAKQEAgLTkyOCw3ICs5MjgsNyBAQCB2
b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICAiV2VicGFnZUljb25zLmRiIiwgbnVsbHB0
cikpOwogCiAgICAgLy8gU2V0dGluZyB0aGUgcGF0aCB3aWxsIGNhdXNlIHRoZSBpY29uIGRhdGFi
YXNlIHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZh
dmljb25EYXRhYmFzZS5nZXQoKSwgV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CisgICAgd2Via2l0RmF2aWNvbkRh
dGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0
aC5nZXQoKSkpOwogCiAgICAgaWYgKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29u
dGV4dCkpCiAgICAgICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0Vu
YWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCB0cnVlKTsKQEAgLTEwMTIsNyArMTAx
Miw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGly
ZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRlCiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJl
Y3RvcnkpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CisgICAgY29u
dGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGly
ZWN0b3J5KSk7CiAjZW5kaWYKIH0KIApAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCB3ZWJraXRf
d2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNv
bnRleHQsIGNvbnMKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChj
b250ZXh0KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCi0gICAgY29udGV4
dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3Rv
cnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0
b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5z
ZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAKIC8q
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggY2U3Mjk0ZGZmNTkuLmZiMTk5N2E2NTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJz
aXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdl
YktpdFdlYnNpdGVEYXRhTWFuCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7CiAg
ICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICAg
ICAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSAhcHJpdi0+bG9jYWxT
dG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAg
ICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gIXByaXYtPmRpc2tDYWNoZURpcmVjdG9y
eSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSk7CisgICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURp
cmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSk7CiAgICAgICAgIGNvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9ICFwcml2LT5hcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSk7
CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwog
ICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gIXByaXYtPndl
YlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAg
ICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnko
KSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gIXByaXYtPnJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIDogV2ViQ29yZTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikp
OwogICAgIH0KQEAgLTU2MSw3ICs1NjEsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAogCiAg
ICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1
bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYt
PmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpkaXJlY3RvcnlOYW1l
KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51
dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChn
X3N0cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGJmMTliMGFhYzNlLi5hNWU4NThjMzAzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTY3OSw3ICs2NzksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIAogc3RhdGlj
IGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkTUlNRVR5cGVzLCBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykKIHsKLSAgICBpZiAoIVdlYkNvcmU6OmZpbGVF
eGlzdHMoZmlsZW5hbWUpKQorICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChhbGxvd2VkTUlN
RVR5cGVzLmlzRW1wdHkoKSAmJiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMuaXNFbXB0eSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KaW5kZXggZmVlZjBjZWU0MDIuLjRhMWUzYjI0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTM3Niw3ICsz
NzYsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKICAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwg
b2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0
YWJhc2VzLgogICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8g
YSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjQ4MDcpCiAgICAgLy8gSW4gdGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3
aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBl
bnRpdGllcy4KLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeVBsYXRm
b3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeVBsYXRm
b3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKIH0K
IAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQppbmRleCBhMmU0ODJmZWY4Mi4uZDM2N2ZhNDMwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zODY0LDcgKzM4NjQsNyBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpwcm92aWRlRGF0YUZvclBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkLCBOU1N0cmluZyAqdAogICAgIH0KIH0KIAotc3RhdGljIEJPT0wgZmlsZUV4aXN0cyhO
U1N0cmluZyAqcGF0aCkKK3N0YXRpYyBCT09MIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoTlNTdHJp
bmcgKnBhdGgpCiB7CiAgICAgc3RydWN0IHN0YXQgc3RhdEJ1ZmZlcjsKICAgICByZXR1cm4gIWxz
dGF0KFtwYXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sICZzdGF0QnVmZmVyKTsKQEAgLTM4
NzYsNyArMzg3Niw3IEBAIHN0YXRpYyBOU1N0cmluZyAqcGF0aFdpdGhVbmlxdWVGaWxlbmFtZUZv
clBhdGgoTlNTdHJpbmcgKnBhdGgpCiAgICAgTlNTdHJpbmcgKmZpbGVuYW1lID0gZmlsZW5hbWVC
eUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJzKFtwYXRoIGxhc3RQYXRoQ29tcG9uZW50XSk7CiAgICAg
cGF0aCA9IFtbcGF0aCBzdHJpbmdCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpmaWxlbmFtZV07CiAgICAgCi0gICAgaWYgKGZpbGVFeGlz
dHMocGF0aCkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRoKSkgewogICAg
ICAgICAvLyBEb24ndCBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZSBieSBhcHBlbmRpbmcgIi1uIiwg
Ii1uLmV4dCIgb3IgIi1uLmV4dC5leHQiIHRvIHRoZSBmaWxlbmFtZS4KICAgICAgICAgTlNTdHJp
bmcgKmV4dGVuc2lvbnMgPSBuaWw7CiAgICAgICAgIE5TU3RyaW5nICpwYXRoV2l0aG91dEV4dGVu
c2lvbnM7CkBAIC0zODk0LDcgKzM4OTQsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhXaXRoVW5p
cXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAxOyA7IGkrKykgewogICAgICAgICAgICAgTlNTdHJpbmcgKnBhdGhXaXRoQXBwZW5kZWRO
dW1iZXIgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVALSVkIiwgcGF0aFdpdGhvdXRF
eHRlbnNpb25zLCBpXTsKICAgICAgICAgICAgIHBhdGggPSBbZXh0ZW5zaW9ucyBsZW5ndGhdID8g
W3BhdGhXaXRoQXBwZW5kZWROdW1iZXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOmV4
dGVuc2lvbnNdIDogcGF0aFdpdGhBcHBlbmRlZE51bWJlcjsKLSAgICAgICAgICAgIGlmICghZmls
ZUV4aXN0cyhwYXRoKSkKKyAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhw
YXRoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTM5Mjcs
NyArMzkyNyw3IEBAIE5TQXJyYXkgKldlYlZpZXdJbXBsOjpuYW1lc09mUHJvbWlzZWRGaWxlc0Ry
b3BwZWRBdERlc3RpbmF0aW9uKE5TVVJMICpkcm9wRGVzdGluCiAgICAgICAgIExPR19FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSBpbWFnZSBmaWxlIHZpYSAtW05TRmlsZVdyYXBwZXIgd3JpdGVUb1VS
TDpvcHRpb25zOm9yaWdpbmFsQ29udGVudHNVUkw6ZXJyb3I6XSIpOwogCiAgICAgaWYgKCFtX3By
b21pc2VkVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6c2V0TWV0YWRhdGFVUkwoU3Ry
aW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c2V0TWV0YWRhdGFVUkwoU3RyaW5nKHBhdGgpLCBtX3Byb21pc2VkVVJMKTsKICAgICAKICAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OltwYXRoIGxhc3RQYXRoQ29tcG9uZW50XV07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1By
b2Nlc3NMYXVuY2hlckdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAppbmRleCA1YWM2ZmNmZjVjNi4uOTNiYjgxZjQ2
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJv
Y2Vzc0xhdW5jaGVyR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFBy
b2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICBleGVjdXRhYmxlUGF0
aC5hcHBlbmQoJzInKTsKICNlbmRpZgogICAgICAgICBwbHVnaW5QYXRoID0gbV9sYXVuY2hPcHRp
b25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldCgicGx1Z2luLXBhdGgiKTsKLSAgICAgICAg
cmVhbFBsdWdpblBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7Cisg
ICAgICAgIHJlYWxQbHVnaW5QYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBsdWdpblBhdGgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgUHJvY2Vz
c0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6TmV0d29yazoKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBQ
cm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgcmVhbEV4ZWN1dGFibGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1
dGFibGVQYXRoKTsKKyAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOwogICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IHdlYmtpdFNvY2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0UGFpci5jbGllbnQpKTsK
ICAgICB1bnNpZ25lZCBuYXJncyA9IDQ7IC8vIHNpemUgb2YgdGhlIGFyZ3YgYXJyYXkgZm9yIGdf
c3Bhd25fYXN5bmMoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCA4ZjVhMWQxMDhkOS4uZmM4ODNmZGU4MWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaApAQCAtMTM1LDcgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsYXVuY2hQcm9j
ZXNzKGNvbnN0IFN0cmluZyYgbGF1bmNoUGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3Vt
ZW50cywgYm9vbCYgcmVzdWx0KTsKICAgICB2b2lkIGxhdW5jaEFwcGxpY2F0aW9uQXRVUkwoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMsIGJv
b2wmIHJlc3VsdCk7CiAgICAgdm9pZCBvcGVuVVJMKGNvbnN0IFN0cmluZyYgdXJsLCBib29sJiBy
ZXN1bHQsIGludDMyX3QmIHN0YXR1cywgU3RyaW5nJiBsYXVuY2hlZFVSTFN0cmluZyk7Ci0gICAg
dm9pZCBvcGVuRmlsZShjb25zdCBTdHJpbmcmIGZ1bGxQYXRoLCBib29sJiByZXN1bHQpOworICAg
IHZvaWQgRmlsZVN5c3RlbTo6b3BlbkZpbGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCwgYm9vbCYg
cmVzdWx0KTsKICNlbmRpZgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9j
ZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNo
ZS5jcHAKaW5kZXggMWJkNjUwNzllNWQuLmI5YjBjMmVhZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKQEAg
LTY2LDEwICs2NiwxMCBAQCBQbHVnaW5JbmZvQ2FjaGU6OlBsdWdpbkluZm9DYWNoZSgpCiAgICAg
bV9zYXZlVG9GaWxlSWRsZS5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RFRkFVTFRfSURMRSk7CiAK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsIG51bGxwdHIpKTsKLSAgICBpZiAoV2Vi
Q29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgeworICAgIGlm
IChXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoY2FjaGVEaXJlY3Rvcnku
Z2V0KCkpKSB7CiAgICAgICAgIC8vIERlbGV0ZSBvbGQgY2FjaGUgZmlsZS4KICAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBvbGRDYWNoZVBhdGgoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9y
eS5nZXQoKSwgInBsdWdpbnMiLCBudWxscHRyKSk7Ci0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZp
bGUoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBh
dGguZ2V0KCkpKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENh
Y2hlUGF0aC5nZXQoKSkpOwogCiAgICAgICAgIG1fY2FjaGVQYXRoLnJlc2V0KGdfYnVpbGRfZmls
ZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksIGNhY2hlRmlsZW5hbWVGb3JDdXJyZW50RGlzcGxh
eSgpLCBudWxscHRyKSk7CiAgICAgICAgIGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUobV9jYWNo
ZUZpbGUuZ2V0KCksIG1fY2FjaGVQYXRoLmdldCgpLCBHX0tFWV9GSUxFX05PTkUsIG51bGxwdHIp
OwpAQCAtMTEzLDE0ICsxMTMsMTQgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbklu
Zm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAgIGlmICghV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSkKKyAg
ICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdp
blBhdGgsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB0aW1lX3Qg
Y2FjaGVkTGFzdE1vZGlmaWVkID0gc3RhdGljX2Nhc3Q8dGltZV90PihnX2tleV9maWxlX2dldF91
aW50NjQobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm10aW1lIiwgbnVs
bHB0cikpOwogICAgIGlmIChsYXN0TW9kaWZpZWQgIT0gY2FjaGVkTGFzdE1vZGlmaWVkKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9IHBsdWdpblBhdGg7Ci0gICAg
cGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsK
KyAgICBwbHVnaW4uaW5mby5maWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBsdWdpblBhdGgpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzdHJpbmdWYWx1ZShnX2tl
eV9maWxlX2dldF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwg
Im5hbWUiLCBudWxscHRyKSk7CiAgICAgcGx1Z2luLmluZm8ubmFtZSA9IFN0cmluZzo6ZnJvbVVU
Rjgoc3RyaW5nVmFsdWUuZ2V0KCkpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wgUGx1Z2luSW5m
b0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9k
dWxlSW5mbyYKIHZvaWQgUGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewogICAg
IHRpbWVfdCBsYXN0TW9kaWZpZWQ7Ci0gICAgaWYgKCFXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQorICAgIGlmICghV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVk
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ1N0cmluZyBwbHVnaW5Hcm91cCA9IHBsdWdpblBh
dGgudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91
bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1
Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCmluZGV4IDNiN2VmMzgxYTczLi4wODRm
NmRlYmJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4
L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcApAQCAtNTYsMTAgKzU2LDEwIEBAIFZl
Y3RvcjxTdHJpbmc+IFBsdWdpbkluZm9TdG9yZTo6cGx1Z2luUGF0aHNJbkRpcmVjdG9yeShjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CiAgICAg
Y2hhciBub3JtYWxpemVkUGF0aFtQQVRIX01BWF07Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYXRo
IDogbGlzdERpcmVjdG9yeShkaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKSkgewotICAgICAgICBD
U3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGZv
ciAoY29uc3QgYXV0byYgcGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5
LCBTdHJpbmcoIiouc28iKSkpIHsKKyAgICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAgICAgaWYgKHJlYWxwYXRo
KGZpbGVuYW1lLmRhdGEoKSwgbm9ybWFsaXplZFBhdGgpKQotICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKSk7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24obm9ybWFsaXplZFBhdGgpKTsKICAgICB9CiAKICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtODAsNyArODAsNyBAQCBib29sIFBsdWdpbkluZm9TdG9yZTo6Z2V0UGx1Z2lu
SW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgU3RyaW5nIHBsdWdpblByb2Nlc3NQ
YXRoID0gZXhlY3V0YWJsZVBhdGhPZlBsdWdpblByb2Nlc3MoKTsKICAgICAgICAgICAgIHBsdWdp
blByb2Nlc3NQYXRoLmFwcGVuZCgnMicpOwotICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHBs
dWdpblByb2Nlc3NQYXRoKSkKKyAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAppbmRleCAyNzY2OTJi
ZDkxMi4uZWEwYWEwMTE4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYKICNlbmRpZgogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPQ0VTU19HVEsyKQogICAgICAgICBwbHVnaW5Qcm9jZXNzUGF0aC5hcHBlbmQoJzIn
KTsKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHBsdWdpblByb2Nlc3NQYXRoKSkKKyAgICAgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBsdWdpblByb2Nlc3NQYXRoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk4LDgg
Kzk4LDggQEAgYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYKICAgICB9CiAjZW5kaWYKIAotICAgIENT
dHJpbmcgYmluYXJ5UGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5Qcm9jZXNz
UGF0aCk7Ci0gICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwbHVnaW5QYXRoKTsKKyAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUHJvY2Vzc1BhdGgpOworICAgIENTdHJp
bmcgcGx1Z2luUGF0aENTdHJpbmcgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocGx1Z2luUGF0aCk7CiAgICAgY2hhciogYXJndls0XTsKICAgICBhcmd2WzBdID0gY29uc3Rf
Y2FzdDxjaGFyKj4oYmluYXJ5UGF0aC5kYXRhKCkpOwogICAgIGFyZ3ZbMV0gPSBjb25zdF9jYXN0
PGNoYXIqPigiLXNjYW5QbHVnaW4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
Y3BwCmluZGV4IDEyNDhhZWY2MTIzLi5kMWRmZjRmOTY5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBib29sIGhhc0ZpbGVD
aGFuZ2VkU2luY2UoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBzaW5jZSkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsK
LSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUp
KQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9k
aWZpY2F0aW9uVGltZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSA+IHNpbmNlOwpAQCAtNTUsMjYg
KzU1LDI2IEBAIHN0YXRpYyBib29sIGhhc0ZpbGVDaGFuZ2VkU2luY2UoY29uc3QgU3RyaW5nJiBw
YXRoLCBXYWxsVGltZSBzaW5jZSkKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVy
PiBjcmVhdGVEZWNvZGVyRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuQW5kTG9ja0ZpbGUo
cGF0aCwgT3BlbkZvclJlYWQpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShw
YXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShoYW5k
bGUsIGZpbGVTaXplKSkgewotICAgICAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGhhbmRsZSwgZmlsZVNpemUpKSB7CisgICAg
ICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBzaXplX3QgYnl0ZXNUb1JlYWQ7CiAgICAgaWYgKCFX
VEY6OmNvbnZlcnRTYWZlbHkoZmlsZVNpemUsIGJ5dGVzVG9SZWFkKSkgewotICAgICAgICB1bmxv
Y2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xv
c2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFZl
Y3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOwotICAgIHNpemVfdCB0b3RhbEJ5dGVzUmVh
ZCA9IHJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwor
ICAgIHNpemVfdCB0b3RhbEJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShoYW5k
bGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCi0gICAgdW5sb2NrQW5kQ2xvc2VG
aWxlKGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7
CiAKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1JlYWQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTEyLDcgKzExMiw3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnJlc291cmNlTG9nRmlsZVBhdGgoKSBjb25zdAogICAgIGlm
IChzdG9yYWdlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlUGF0aCwgImZ1bGxf
YnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZVBhdGgsICJmdWxsX2Jyb3dzaW5n
X3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmluZ0Rpc2soKQpAQCAtMTQ1LDgg
KzE0NSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpt
b25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAgICAgU3RyaW5nIHN0b3JhZ2VQYXRo
ID0gc3RvcmFnZURpcmVjdG9yeVBhdGgoKTsKICAgICBBU1NFUlQoIXN0b3JhZ2VQYXRoLmlzRW1w
dHkoKSk7CiAKLSAgICBpZiAoIWZpbGVFeGlzdHMoc3RvcmFnZVBhdGgpKSB7Ci0gICAgICAgIGlm
ICghbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhzdG9yYWdlUGF0aCkpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOiBGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSBwYXRoICVzIiwgc3Rv
cmFnZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQogICAgICAgICBTdHJp
bmcgcmVzb3VyY2VMb2dQYXRoID0gcmVzb3VyY2VMb2dGaWxlUGF0aCgpOwogICAgICAgICBBU1NF
UlQoIXJlc291cmNlTG9nUGF0aC5pc0VtcHR5KCkpOwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0
cyhyZXNvdXJjZUxvZ1BhdGgpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
cmVzb3VyY2VMb2dQYXRoKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBtX2ZpbGVN
b25pdG9yID0gbnVsbHB0cjsKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKCkK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFN0cmluZyBmaWxlUGF0aCA9
IHJlc291cmNlTG9nRmlsZVBhdGgoKTsKLSAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpIHx8ICFm
aWxlRXhpc3RzKGZpbGVQYXRoKSkgeworICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkgfHwgIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZVBhdGgpKSB7CiAgICAgICAgIG1fbWVtb3J5U3RvcmUu
Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7CiAgICAgICAgIG1vbml0b3JEaXJlY3Rv
cnlGb3JOZXdTdGF0aXN0aWNzKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI1OCwxNiArMjU4LDE2
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1l
bW9yeVN0b3JlVG9EaXNrKCkKIAogICAgIGF1dG8gc3RvcmFnZVBhdGggPSBzdG9yYWdlRGlyZWN0
b3J5UGF0aCgpOwogICAgIGlmICghc3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1h
a2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCk7CiAgICAgICAgIGV4Y2x1ZGVGcm9tQmFja3VwKCk7
CiAgICAgfQogCi0gICAgYXV0byBoYW5kbGUgPSBvcGVuQW5kTG9ja0ZpbGUocmVzb3VyY2VMb2dG
aWxlUGF0aCgpLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmIChoYW5kbGUgPT0gaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2Nr
RmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRoKCksIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7Cisg
ICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9GaWxl
KGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5zaXplKCkpOwotICAgIHVubG9ja0Fu
ZENsb3NlRmlsZShoYW5kbGUpOworICAgIGludDY0X3Qgd3JpdHRlbkJ5dGVzID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEtPnNpemUoKSk7
CisgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBpZiAo
d3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHJhd0RhdGEtPnNpemUoKSkpCiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6IFdlIG9ubHkgd3JvdGUgJWQgb3V0IG9m
ICV6dSBieXRlcyB0byBkaXNrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdyaXR0ZW5CeXRlcyks
IHJhd0RhdGEtPnNpemUoKSk7CkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmNsZWFyKCkKIAogICAgIHN0b3BNb25pdG9yaW5n
RGlzaygpOwogCi0gICAgaWYgKCFkZWxldGVGaWxlKGZpbGVQYXRoKSkKKyAgICBpZiAoIUZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlOiBVbmFibGUgdG8gZGVsZXRlIHN0YXRpc3RpY3MgZmlsZTogJXMiLCBmaWxlUGF0aC51
dGY4KCkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAppbmRleCBhNDU0MDgxYjcw
ZS4uODI2MTU4ZmIxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC04NSw3ICs4NSw3IEBA
IHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdT
dHJhdGVneSBvcGVuaW5nU3RyYXRlZ3kpCiAKIGJvb2wgTG9jYWxTdG9yYWdlRGF0YWJhc2U6OnRy
eVRvT3BlbkRhdGFiYXNlKERhdGFiYXNlT3BlbmluZ1N0cmF0ZWd5IG9wZW5pbmdTdHJhdGVneSkK
IHsKLSAgICBpZiAoIWZpbGVFeGlzdHMobV9kYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVn
eSA9PSBTa2lwSWZOb25FeGlzdGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
bV9kYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9kYXRhYmFzZVBhdGguaXNFbXB0eSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJT
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggMTliMjI5ZjZiNTMu
LmI5Y2E4OWY4YWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC05
NSw3ICs5NSw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZWxldGVBbGxE
YXRhYmFzZXMoKQogCiAgICAgaW50IHJlc3VsdDsKICAgICB3aGlsZSAoKHJlc3VsdCA9IHN0YXRl
bWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgZGVsZXRlRmlsZShzdGF0ZW1l
bnQuZ2V0Q29sdW1uVGV4dCgxKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3Rh
dGVtZW50LmdldENvbHVtblRleHQoMSkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBDYWxsIG91dCB0
byB0aGUgY2xpZW50LgogICAgIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIExvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKICAgICBpZiAobV9kYXRhYmFz
ZS5pc09wZW4oKSkKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogCi0gICAgaWYgKCFkZWxl
dGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgewogICAgICAgICAvLyBJbiB0aGUgY2Fz
ZSB3aGVyZSBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVsZXRlIHRoZSBkYXRhYmFzZSBmaWxlIChl
Lmcgc29tZSBvdGhlciBwcm9ncmFtCiAgICAgICAgIC8vIGxpa2UgYSB2aXJ1cyBzY2FubmVyIGlz
IGFjY2Vzc2luZyBpdCksIG1ha2Ugc3VyZSB0byByZW1vdmUgYWxsIGVudHJpZXMuCiAgICAgICAg
IG9wZW5UcmFja2VyRGF0YWJhc2UoU2tpcElmTm9uRXhpc3RlbnQpOwpAQCAtMTI0LDE5ICsxMjQs
MTkgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNl
cygpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnko
bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogfQogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDx0aW1l
X3Q+IGZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICB0aW1l
X3QgdGltZTsKLSAgICByZXR1cm4gZ2V0RmlsZUNyZWF0aW9uVGltZShmaWxlUGF0aCwgdGltZSkg
PyB0aW1lIDogc3RkOjpvcHRpb25hbDx0aW1lX3Q+KHN0ZDo6bnVsbG9wdCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6
IHN0ZDo6b3B0aW9uYWw8dGltZV90PihzdGQ6Om51bGxvcHQpOwogfQogCiBzdGF0aWMgc3RkOjpv
cHRpb25hbDx0aW1lX3Q+IGZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZVBh
dGgpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmaWxlUGF0aCwgdGltZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShmaWxlUGF0aCwgdGltZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICByZXR1cm4gdGltZTsKQEAgLTIwOSw3ICsyMDksNyBAQCBWZWN0b3I8TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6OgogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSkgY29uc3QKIHsKLSAgICBpZiAoIW1ha2VBbGxEaXJlY3Rv
cmllcyhtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1h
a2VBbGxEaXJlY3RvcmllcyhtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIExvY2FsU3RvcmFnZSBkYXRhYmFzZSBwYXRoICVzIiwg
bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKICAgICB9CkBAIC0yMTgsNyArMjE4LDcgQEAgU3RyaW5nIExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0
CiAgICAgcGxhdGZvcm1NYXliZUV4Y2x1ZGVGcm9tQmFja3VwKCk7CiAjZW5kaWYKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIGZp
bGVuYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBmaWxlbmFtZSk7CiB9CiAKIFN0cmluZyBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJEYXRhYmFzZVBhdGgoKSBjb25zdApAQCAtMjMz
LDcgKzIzMyw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcGVuVHJhY2tl
ckRhdGFiYXNlKERhdGFiYXNlT3BlbmluZ1N0cmF0ZWd5IG9wCiAKICAgICBTdHJpbmcgZGF0YWJh
c2VQYXRoID0gdHJhY2tlckRhdGFiYXNlUGF0aCgpOwogCi0gICAgaWYgKCFmaWxlRXhpc3RzKGRh
dGFiYXNlUGF0aCkgJiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQorICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJh
dGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFt
X2RhdGFiYXNlLm9wZW4oZGF0YWJhc2VQYXRoKSkgewpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjppbXBvcnRPcmlnaW5JZGVudGlmaWVycygpCiAK
IHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp1cGRhdGVUcmFja2VyRGF0YWJhc2VG
cm9tTG9jYWxTdG9yYWdlRGF0YWJhc2VGaWxlcygpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gcGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCAiKi5sb2NhbHN0b3Jh
Z2UiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBwYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnksICIqLmxvY2Fsc3RvcmFnZSIpOwogCiAgICAgSGFz
aFNldDxTdHJpbmc+IG9yaWdpbnMobV9vcmlnaW5zKTsKICAgICBIYXNoU2V0PFN0cmluZz4gb3Jp
Z2luc0Zyb21Mb2NhbFN0b3JhZ2VEYXRhYmFzZUZpbGVzOwpAQCAtMjkwLDcgKzI5MCw3IEBAIHZv
aWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp1cGRhdGVUcmFja2VyRGF0YWJhc2VGcm9t
TG9jYWxTdG9yYWdlRGF0YWJhc2VGCiAgICAgICAgIGlmICghcGF0aC5lbmRzV2l0aCgiLmxvY2Fs
c3RvcmFnZSIpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3RyaW5nIGZpbGVu
YW1lID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCk7CiAKICAgICAgICAgU3RyaW5nIG9yaWdp
bklkZW50aWZpZXIgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgZmlsZW5hbWUubGVuZ3RoKCkgLSBz
dHJsZW4oIi5sb2NhbHN0b3JhZ2UiKSk7CiAKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGF0YWJhc2VXaXRoT3JpZ2luSWRlbnRpZmll
cihjb25zdCBTdHJpbgogICAgICAgICAvLyBUaGVyZSBhcmUgbm8gb3JpZ2lucyBsZWZ0OyBkZWxl
dGUgdGhlIHRyYWNrZXIgZGF0YWJhc2UuCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKICAg
ICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKHRyYWNrZXJEYXRhYmFz
ZVBhdGgoKSk7Ci0gICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGly
ZWN0b3J5KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9sb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBUZWxsIGNsaWVudHMg
dGhhdCB0aGUgb3JpZ2luIHdhcyByZW1vdmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCmluZGV4IDhkNjViYmU0NTAzLi40MjgwODE4ZDVhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNzMsNyArNzMsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLnBl
bmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fcGVuZGluZ0Nvb2tpZXMpOwogCiAgICAgaWYg
KCFjb29raWVGaWxlLmlzRW1wdHkoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoY29va2ll
RmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOworICAg
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rvcnko
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1ldGVy
cy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBpZiAoIW1fY29uZmln
dXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpIHsKICAgICAgICAgcGFyYW1l
dGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdl
RGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5N2QyYmFjYTJlZi4uZTU5MTYxZTQ2N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xMjQsOCArMTI0LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSgpCiAKICAgICAvLyBSZXNvbHZlIGRp
cmVjdG9yaWVzIGZvciBmaWxlIHBhdGhzLgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNvb2tp
ZVN0b3JhZ2VGaWxlLmlzRW1wdHkoKSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlv
bi5jb29raWVTdG9yYWdlRmlsZSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlG
b3JTYW5kYm94RXh0ZW5zaW9uKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9u
LmNvb2tpZVN0b3JhZ2VGaWxlKSk7Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNv
b2tpZVN0b3JhZ2VGaWxlID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpwYXRoR2V0Rmls
ZU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlKSk7CisgICAgICAgIG1fcmVz
b2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gcmVzb2x2ZUFuZENyZWF0ZVJl
YWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKKyAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRp
b24uY29va2llU3RvcmFnZUZpbGUsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShtX2NvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKICAgICB9CiB9CiAKQEAgLTEy
NDgsNyArMTI0OCw3IEBAIFZlY3RvcjxQbHVnaW5Nb2R1bGVJbmZvPiBXZWJzaXRlRGF0YVN0b3Jl
OjpwbHVnaW5zKCkgY29uc3QKIAogc3RhdGljIFN0cmluZyBjb21wdXRlTWVkaWFLZXlGaWxlKGNv
bnN0IFN0cmluZyYgbWVkaWFLZXlEaXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxp
c3QiKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1lZGlhS2V5RGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogfQogCiBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtl
eU9yaWdpbnMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQpAQCAtMTI1
NywxMiArMTI1NywxMiBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJz
aXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaQogCiAgICAgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKIAotICAgIGZvciAoY29uc3QgYXV0
byYgb3JpZ2luUGF0aCA6IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwg
IioiKSkgewogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUo
b3JpZ2luUGF0aCk7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZp
bGUpKQorICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFL
ZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbWVkaWFLZXlJ
ZGVudGlmaWVyID0gV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgICAg
ICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRG
aWxlTmFtZShvcmlnaW5QYXRoKTsKIAogICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRp
YUtleUlkZW50aWZpZXIpKQogICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoKnNlY3VyaXR5T3Jp
Z2luKTsKQEAgLTEyNzUsMTggKzEyNzUsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogewog
ICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCi0gICAg
Zm9yIChjb25zdCBhdXRvJiBtZWRpYUtleURpcmVjdG9yeSA6IFdlYkNvcmU6Omxpc3REaXJlY3Rv
cnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0
byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtl
eUZpbGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAogICAgICAg
ICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZGlmaWNhdGlvblRpbWUpKQorICAgICAg
ICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlh
S2V5RmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBpZiAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QobW9kaWZpY2F0
aW9uVGltZSkgPCBtb2RpZmllZFNpbmNlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAgICBXZWJDb3JlOjpk
ZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7CisgICAgICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOwogICAg
IH0KIH0KIApAQCAtMTI5NSwxMSArMTI5NSwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZU1lZGlhS2V5cyhjb25zdCBTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiAg
ICAgQVNTRVJUKCFtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAKICAgICBm
b3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgYXV0byBtZWRpYUtl
eURpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICBh
dXRvIG1lZGlhS2V5RGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5
RmlsZShtZWRpYUtleURpcmVjdG9yeSk7CiAKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZSht
ZWRpYUtleUZpbGUpOwotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRp
YUtleURpcmVjdG9yeSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bWVkaWFLZXlGaWxlKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKaW5kZXggYzU5NWQ1NmRm
MzkuLmI0YTE3MjM5ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQcm9jZXNzUG9vbEd0ay5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBTdHJpbmcgV2ViUHJvY2Vz
c1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiBTdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBqYXZhU2NyaXB0Q29y
ZUNvbmZpZ0RpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwg
IndlYmtpdGd0ayIsICJKYXZhU2NyaXB0Q29yZURlYnVnIiwgbnVsbHB0cikpOwotICAgIHJldHVy
biBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRD
b3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZp
Z0RpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtUmVz
b2x2ZVBhdGhzRm9yU2FuZGJveEV4dGVuc2lvbnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggMmQwMjcyMWY3MTEuLmRmZWY1OGIwODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
QEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnBhdGhUb1BERk9uRGlzayhjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBE
RlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvblJhdyhjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3Ry
aW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IFN0cmlu
ZyYgcGRmVVVJRCkKIHsKLSAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcg
dG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6
c2V0TWV0YWRhdGFVUkwoKT8pLgorICAgIC8vIEZJWE1FOiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0
cmluZyB0byB0aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBtZXRhZGF0YSAocGVyaGFwcyBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCgpPykuCiAgICAgVU5VU0VEX1BBUkFNKG9y
aWdpbmF0aW5nVVJMU3RyaW5nKTsKIAogICAgIGlmICghc3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dp
dGgoIi5wZGYiLCBmYWxzZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUv
V2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmluZGV4IGU1MjJhNTk1NThkLi43M2Q4MDFiYTk1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3Bw
CkBAIC04MCwxMyArODAsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKIFdURjo6U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNo
ZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUi
LCAiYXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewogICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9j
YWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBX
ZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5
LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTEwMiwzNyArMTAyLDM3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogU3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpCiB7
CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwgbnVsbHB0cikpOwot
ICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRh
dGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQo
KSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0SW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRyKSk7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oaW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9y
bURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IHN0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCks
ICJ3cGUiLCAibG9jYWxzdG9yYWdlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkp
OworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnko
KQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAibWVkaWFrZXlzIiwg
bnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bv
b2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVy
biBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURp
cmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpKTsKIH0K
IAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gamF2YVNj
cmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFf
ZGlyKCksICJ3cGUiLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIG51bGxwdHIpKTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0
Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25m
aWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJl
c29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCBkY2YxM2MxZjUzNy4uYWFjMjgyODBj
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5j
cHAKQEAgLTQxLDkgKzQxLDkgQEAgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6V2ViS2l0RXh0ZW5z
aW9uTWFuYWdlcigpCiAKIHZvaWQgV2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6c2Nhbk1vZHVsZXMo
Y29uc3QgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBWZWN0b3I8U3RyaW5nPiYgbW9k
dWxlcykKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6Omxpc3RE
aXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOworICAgIFZl
Y3RvcjxTdHJpbmc+IG1vZHVsZVBhdGhzID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LCBTdHJpbmcoIiouc28iKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtb2R1bGVQYXRocy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAo
V2ViQ29yZTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCisgICAgICAgIGlmIChXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhzW2ldKSkKICAgICAgICAgICAgIG1v
ZHVsZXMuYXBwZW5kKG1vZHVsZVBhdGhzW2ldKTsKICAgICB9CiB9CkBAIC02Myw3ICs2Myw3IEBA
IHN0YXRpYyB2b2lkIHBhcnNlVXNlckRhdGEoQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTdHJpbmcm
IHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksCiAgICAgR1ZhcmlhbnQqIGRhdGEgPSBudWxscHRyOwog
ICAgIGdfdmFyaWFudF9nZXQodmFyaWFudC5nZXQoKSwgIihtJnNtdikiLCAmZGlyZWN0b3J5LCAm
ZGF0YSk7CiAKLSAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOworICAgIHdlYkV4dGVuc2lvbnNE
aXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGRpcmVjdG9yeSk7CiAgICAgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IGFkb3B0
R1JlZihkYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKaW5k
ZXggYTIwYTVmZTQyMjMuLmNmZmE4ZmM0YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVu
ZGxlR2xpYi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wg
SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewotICAgIG1fcGxh
dGZvcm1CdW5kbGUgPSBnX21vZHVsZV9vcGVuKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3Bh
dGgpLmRhdGEoKSwgR19NT0RVTEVfQklORF9MT0NBTCk7CisgICAgbV9wbGF0Zm9ybUJ1bmRsZSA9
IGdfbW9kdWxlX29wZW4oRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fcGF0
aCkuZGF0YSgpLCBHX01PRFVMRV9CSU5EX0xPQ0FMKTsKICAgICBpZiAoIW1fcGxhdGZvcm1CdW5k
bGUpIHsKICAgICAgICAgZ193YXJuaW5nKCJFcnJvciBsb2FkaW5nIHRoZSBpbmplY3RlZCBidW5k
bGUgKCVzKTogJXMiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSwgZ19tb2R1bGVfZXJyb3IoKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5k
ZXggZmI3ZjljNmNhNzYuLjlmOGVhZjM5MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBTdHJpbmcgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cjo6bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5Rm9yT3JpZ2luKGNvbnN0IFNlY3VyaQogICAgIGlm
ICghbV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX21lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX21lZGlhS2V5U3RvcmFn
ZURpcmVjdG9yeSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlh
S2V5T3JpZ2lucygpCkBAIC02Miw3ICs2Miw3IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+
IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lucygpCiAgICAgaWYg
KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdHM7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3Rvcnko
bV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4gb3Jp
Z2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5LCAiKiIpOwogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBh
dGhzKSB7CiAgICAgICAgIFVSTCB1cmw7CiAgICAgICAgIHVybC5zZXRQcm90b2NvbChBU0NJSUxp
dGVyYWwoImZpbGUiKSk7CkBAIC04MiwyNSArODIsMjUgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2lu
RGF0YT4gV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkKIAog
c3RhdGljIHZvaWQgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChjb25zdCBT
dHJpbmcmIG9yaWdpblBhdGgsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlKQogewot
ICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhS2V5UGF0aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBh
dGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFLZXlQYXRocyA9IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aCwgIioiKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYg
bWVkaWFLZXlQYXRoIDogbWVkaWFLZXlQYXRocykgewotICAgICAgICBTdHJpbmcgbWVkaWFLZXlG
aWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5UGF0aCwgIlNlY3VyZVN0b3Au
cGxpc3QiKTsKKyAgICAgICAgU3RyaW5nIG1lZGlhS2V5RmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleVBhdGgsICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAK
LSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCisgICAgICAgIGlmICghRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgdGltZV90IG1vZFRpbWU7Ci0gICAgICAgIGdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1lZGlhS2V5RmlsZSwgbW9kVGltZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmdldEZpbGVN
b2RpZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSwgbW9kVGltZSk7CiAKICAgICAgICAgaWYgKG1v
ZFRpbWUgPCBzdGFydERhdGUgfHwgbW9kVGltZSA+IGVuZERhdGUpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7Ci0gICAgICAgIGRlbGV0
ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkobWVkaWFLZXlQYXRoKTsKICAgICB9CiAgICAgCi0gICAgZGVsZXRlRW1wdHlEaXJlY3Rv
cnkob3JpZ2luUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3Jp
Z2luUGF0aCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTWVk
aWFLZXlFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0
YSkKQEAgLTExNyw3ICsxMTcsNyBAQCB2b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZU1lZGlhS2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJsZQogICAgIGlmICht
X21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVjdG9yeShtX21lZGlhS2V5
U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIq
Iik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpCiAgICAgICAgIHJl
bW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RhcnREYXRl
LCBlbmREYXRlKTsKIH0KQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFdlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXI6OmRlbGV0ZUFsbE1lZGlhS2V5RW50cmllcygpCiAgICAgaWYgKG1fbWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9y
PFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGly
ZWN0b3J5LCAiKiIpOworICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBm
b3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykKICAgICAgICAgcmVtb3ZlQWxsTWVk
aWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwMzcxOGEyNzMwYS4u
MThmZTljYmYyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgTmV0c2NhcGVQbHVnaW5TdHJlYW06Ok5ldHNjYXBlUGx1Z2luU3RyZWFtKFJl
ZjxOZXRzY2FwZVBsdWdpbj4mJiBwbHVnaW4sIHVpbnQ2NF8KICAgICAsIG1fbnBTdHJlYW0oKQog
ICAgICwgbV90cmFuc2Zlck1vZGUoTlBfTk9STUFMKQogICAgICwgbV9vZmZzZXQoMCkKLSAgICAs
IG1fZmlsZUhhbmRsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICwgbV9maWxlSGFu
ZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2lzU3Rh
cnRlZChmYWxzZSkKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX3VybE5vdGlmeUhhc0Jl
ZW5DYWxsZWQoZmFsc2UpCkBAIC01OSw3ICs1OSw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp+
TmV0c2NhcGVQbHVnaW5TdHJlYW0oKQogewogICAgIEFTU0VSVCghbV9pc1N0YXJ0ZWQpOwogICAg
IEFTU0VSVCghbV9zZW5kTm90aWZpY2F0aW9uIHx8IG1fdXJsTm90aWZ5SGFzQmVlbkNhbGxlZCk7
Ci0gICAgQVNTRVJUKG1fZmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsK
KyAgICBBU1NFUlQobV9maWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpOwogfQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjp3aWxsU2VuZFJlcXVl
c3QoY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBVUkwmIHJlZGlyZWN0UmVzcG9uc2VVUkws
IGludCByZWRpcmVjdFJlc3BvbnNlU3RhdHVzKQpAQCAtMjYzLDEyICsyNjMsMTIgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb1BsdWdpbigpCiAKIHZvaWQgTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQogewotICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmlsZVBhdGguaXNOdWxs
KCkpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUuCi0gICAgICAgIG1fZmls
ZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgiV2ViS2l0UGx1Z2luU3RyZWFtIiwgbV9maWxlSGFu
ZGxlKTsKKyAgICAgICAgbV9maWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJXZWJLaXRQbHVnaW5TdHJlYW0iLCBtX2ZpbGVIYW5kbGUpOwogCiAgICAgICAgIC8vIFdlIGZh
aWxlZCB0byBvcGVuIHRoZSBmaWxlLCBzdG9wIHRoZSBzdHJlYW0uCi0gICAgICAgIGlmIChtX2Zp
bGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgICAgICBpZiAobV9m
aWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAg
ICAgICAgICAgIHN0b3AoTlBSRVNfTkVUV09SS19FUlIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yNzcsMTAgKzI3NywxMCBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpkZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IGJ5dGVDb3VudCA9IHdyaXRl
VG9GaWxlKG1fZmlsZUhhbmRsZSwgYnl0ZXMsIGxlbmd0aCk7CisgICAgaW50IGJ5dGVDb3VudCA9
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgYnl0ZXMsIGxlbmd0aCk7CiAg
ICAgaWYgKGJ5dGVDb3VudCAhPSBsZW5ndGgpIHsKICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIG9u
bHkgcmFyZWx5LCB3aGVuIHdlIGFyZSBvdXQgb2YgZGlzayBzcGFjZSBvciBoYXZlIGEgZGlzayBJ
L08gZXJyb3IuCi0gICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKIAogICAgICAgICBzdG9wKE5QUkVTX05F
VFdPUktfRVJSKTsKICAgICB9CkBAIC0zMTQsMjMgKzMxNCwyMyBAQCB2b2lkIE5ldHNjYXBlUGx1
Z2luU3RyZWFtOjpzdG9wKE5QUmVhc29uIHJlYXNvbikKICAgICAgICAgaWYgKHJlYXNvbiA9PSBO
UFJFU19ET05FKSB7CiAgICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZmlsZSBpcyBjcmVh
dGVkLgogICAgICAgICAgICAgZGVsaXZlckRhdGFUb0ZpbGUoMCwgMCk7Ci0gICAgICAgICAgICBp
ZiAobV9maWxlSGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgICAg
ICAgICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICBpZiAobV9maWxlSGFu
ZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIEFTU0VSVCghbV9maWxlUGF0aC5pc051bGwoKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIG1fcGx1Z2luLT5OUFBfU3RyZWFtQXNGaWxlKCZtX25wU3RyZWFtLCBtX2Zp
bGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
SnVzdCBjbG9zZSB0aGUgZmlsZS4KLSAgICAgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgIT0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgICAgICAgICBjbG9zZUZpbGUobV9maWxl
SGFuZGxlKTsKKyAgICAgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUobV9maWxlSGFuZGxlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIERlbGV0ZSB0aGUg
ZmlsZSBhZnRlciBjYWxsaW5nIE5QUF9TdHJlYW1Bc0ZpbGUoKSwgaW5zdGVhZCBvZiBpbiB0aGUg
ZGVzdHJ1Y3Rvci4gIEl0IHNob3VsZCBiZSBPSwogICAgICAgICAvLyB0byBkZWxldGUgdGhlIGZp
bGUgaGVyZSAtLSBOUFBfU3RyZWFtQXNGaWxlKCkgaXMgYWx3YXlzIGNhbGxlZCBpbW1lZGlhdGVs
eSBiZWZvcmUgTlBQX0Rlc3Ryb3lTdHJlYW0oKQogICAgICAgICAvLyAodGhlIHN0cmVhbSBkZXN0
cnVjdGlvbiBmdW5jdGlvbiksIHNvIHRoZXJlIGNhbiBiZSBubyBleHBlY3RhdGlvbiB0aGF0IGEg
cGx1Z2luIHdpbGwgcmVhZCB0aGUgc3RyZWFtCiAgICAgICAgIC8vIGZpbGUgYXN5bmNocm9ub3Vz
bHkgYWZ0ZXIgTlBQX1N0cmVhbUFzRmlsZSgpIGlzIGNhbGxlZC4KLSAgICAgICAgZGVsZXRlRmls
ZShtX2ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRo
KTsKICAgICAgICAgbV9maWxlUGF0aCA9IFN0cmluZygpOwogCiAgICAgICAgIC8vIE5QUF9TdHJl
YW1Bc0ZpbGUgY291bGQgY2FsbCBOUE5fRGVzdHJveVN0cmVhbSBhbmQgZGVzdHJveSB0aGUgc3Ry
ZWFtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKaW5kZXggMzY3ODA5Nzg5MDEuLjQw
NzQwNzhkN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmgKQEAgLTkzLDcgKzkz
LDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90IG1fb2Zmc2V0OwogCiAgICAgU3RyaW5nIG1fZmls
ZVBhdGg7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKKyAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOwog
ICAgIAogICAgIC8vIFdoZXRoZXIgTlBQX05ld1N0cmVhbSBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4g
Y2FsbGVkLgogICAgIGJvb2wgbV9pc1N0YXJ0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVy
c2lvbi5jcHAKaW5kZXggODAyNDFjOTVlMWEuLjFhZTJjM2M4YjdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBIVFRQQm9keSB0
b0hUVFBCb2R5KGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSkKICAgICAgICAgICAgIGVsZW1lbnQu
ZmlsZVN0YXJ0ID0gZm9ybURhdGFFbGVtZW50Lm1fZmlsZVN0YXJ0OwogICAgICAgICAgICAgaWYg
KGZvcm1EYXRhRWxlbWVudC5tX2ZpbGVMZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmls
ZSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbGVMZW5ndGggPSBmb3JtRGF0YUVsZW1lbnQu
bV9maWxlTGVuZ3RoOwotICAgICAgICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5tX2V4cGVjdGVk
RmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gaW52YWxpZEZpbGVUaW1lKCkpCisgICAgICAgICAgICBp
ZiAoZm9ybURhdGFFbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBGaWxl
U3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBmb3JtRGF0YUVsZW1lbnQubV9leHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTEzNCw3ICsxMzQsNyBA
QCBzdGF0aWMgUmVmPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9k
eSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6
OlR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1l
bnQuZmlsZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVf
b3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZS52YWx1ZV9vcihpbnZhbGlkRmlsZVRpbWUoKSkpOworICAgICAgICAgICAgZm9y
bURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFy
dCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUp
LCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoRmlsZVN5c3Rl
bTo6aW52YWxpZEZpbGVUaW1lKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4
IGJmMzI4NWY5MDVkLi45YWNlMjJlM2FjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5j
b20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5j
cHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3Rv
cmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKwogMjAx
Ny0xMC0xNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjIzMjcxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBiYTE1ZTRhNGRhMC4uNDAzOTk2MGIx
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5
bmMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
Y3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5bmM6Om9wZW5EYXRhYmFz
ZShPcGVuRGF0YWJhc2VQYXJhbVR5cGUgb3BlbmluZ1N0cmF0ZWd5KQogCiAgICAgU3RyaW5nIGRh
dGFiYXNlRmlsZW5hbWUgPSBtX3N5bmNNYW5hZ2VyLT5mdWxsRGF0YWJhc2VGaWxlbmFtZShtX2Rh
dGFiYXNlSWRlbnRpZmllcik7CiAKLSAgICBpZiAoIWZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlbmFt
ZSkgJiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQorICAgIGlmICghRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZUZpbGVuYW1lKSAmJiBvcGVuaW5nU3RyYXRlZ3kg
PT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChkYXRhYmFz
ZUZpbGVuYW1lLmlzRW1wdHkoKSkgewpAQCAtNTIxLDcgKzUyMSw3IEBAIHZvaWQgU3RvcmFnZUFy
ZWFTeW5jOjpkZWxldGVFbXB0eURhdGFiYXNlKCkKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIGRhdGFiYXNlRmlsZW5hbWUgPSBtX3N5bmNNYW5h
Z2VyLT5mdWxsRGF0YWJhc2VGaWxlbmFtZShtX2RhdGFiYXNlSWRlbnRpZmllcik7Ci0gICAgICAg
ICAgICBpZiAoIWRlbGV0ZUZpbGUoZGF0YWJhc2VGaWxlbmFtZSkpCisgICAgICAgICAgICBpZiAo
IUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGF0YWJhc2VGaWxlbmFtZSkpCiAgICAgICAgICAgICAg
ICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gZGVsZXRlIGRhdGFiYXNlIGZpbGUgJXNcbiIsIGRhdGFi
YXNlRmlsZW5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCmluZGV4IGVk
YzllYjMzYzUwLi4zZThmZjY1ZWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKQEAgLTU1LDEyICs1NSwxMiBAQCBTdG9yYWdl
U3luY01hbmFnZXI6On5TdG9yYWdlU3luY01hbmFnZXIoKQogLy8gQ2FsbGVkIG9uIGEgYmFja2dy
b3VuZCB0aHJlYWQuCiBTdHJpbmcgU3RvcmFnZVN5bmNNYW5hZ2VyOjpmdWxsRGF0YWJhc2VGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1ha2VB
bGxEaXJlY3RvcmllcyhtX3BhdGgpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMobV9wYXRoKSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZWQgdG8gY3JlYXRl
IExvY2FsU3RvcmFnZSBkYXRhYmFzZSBwYXRoICVzIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3BhdGgsIGRhdGFiYXNlSWRlbnRpZmllciArICIubG9jYWxzdG9yYWdl
Iik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Bh
dGgsIGRhdGFiYXNlSWRlbnRpZmllciArICIubG9jYWxzdG9yYWdlIik7CiB9CiAKIHZvaWQgU3Rv
cmFnZVN5bmNNYW5hZ2VyOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXgg
MTMyNmM3ZDE5MzkuLmQ1ZTVmNzQ3N2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTEwNCwxNSArMTA0LDE1IEBAIFN0b3JhZ2VUcmFj
a2VyOjpTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKQogU3RyaW5nIFN0
b3JhZ2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKCkKIHsKICAgICBBU1NFUlQoIW1fZGF0
YWJhc2VNdXRleC50cnlMb2NrKCkpOwotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFja2VyLmRiIik7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoLCAiU3RvcmFnZVRyYWNrZXIuZGIiKTsKIH0KIAogc3RhdGljIGJvb2wgZW5zdXJlRGF0
YWJhc2VGaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGJvb2wgY3JlYXRlSWZEb2Vz
Tm90RXhpc3QpCiB7CiAgICAgaWYgKGNyZWF0ZUlmRG9lc05vdEV4aXN0KQotICAgICAgICByZXR1
cm4gbWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpKTsKKyAgICAgICAg
cmV0dXJuIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpkaXJlY3Rv
cnlOYW1lKGZpbGVOYW1lKSk7CiAKLSAgICByZXR1cm4gZmlsZUV4aXN0cyhmaWxlTmFtZSk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZU5hbWUpOwogfQogCiB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKGJvb2wgY3JlYXRlSWZEb2VzTm90RXhp
c3QpCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0
ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwogICAgIHsK
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKLSAgICAgICAgcGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICIqLmxvY2Fsc3RvcmFn
ZSIpOworICAgICAgICBwYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9zdG9yYWdl
RGlyZWN0b3J5UGF0aCwgIioubG9jYWxzdG9yYWdlIik7CiAgICAgfQogCiAgICAgLy8gVXNlIGEg
Y29weSBvZiBtX29yaWdpblNldCB0byBmaW5kIGV4cGlyZWQgZW50cmllcyBhbmQgdG8gc2NoZWR1
bGUgdGhlaXIKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRmls
ZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9
ICppdDsKIAogICAgICAgICBpZiAocGF0aC5sZW5ndGgoKSA+IGZpbGVFeHRlbnNpb24ubGVuZ3Ro
KCkgJiYgcGF0aC5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgU3RyaW5n
IGZpbGUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZSA9
IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKTsKICAgICAgICAgICAgIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyID0gZmlsZS5zdWJzdHJpbmcoMCwgZmlsZS5sZW5ndGgoKSAtIGZpbGVF
eHRlbnNpb24ubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKCFvcmlnaW5TZXRDb3B5LmNvbnRh
aW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAgICAgICAgICAgICAgIHN5bmNTZXRPcmlnaW5EZXRh
aWxzKG9yaWdpbklkZW50aWZpZXIsIHBhdGgpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKICAgICAgICAgaWYgKCFjYW5EZWxl
dGVPcmlnaW4oc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgZGVsZXRlRmlsZShzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkp
OwogCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xpZW50TXV0
ZXgpOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVB
bGxPcmlnaW5zKCkKICAgICB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICghZGVsZXRl
RmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ug
d2hlcmUgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlbGV0ZSB0aGUgZGF0YWJhc2UgZmlsZSAoZS5n
IHNvbWUgb3RoZXIgcHJvZ3JhbQogICAgICAgICAvLyBsaWtlIGEgdmlydXMgc2Nhbm5lciBpcyBh
Y2Nlc3NpbmcgaXQpLCBtYWtlIHN1cmUgdG8gcmVtb3ZlIGFsbCBlbnRyaWVzLgogICAgICAgICBv
cGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIFN0b3Jh
Z2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9zdG9yYWdlRGlyZWN0
b3J5UGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9zdG9yYWdl
RGlyZWN0b3J5UGF0aCk7CiAjZW5kaWYKIH0KIApAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGVsZXRlRmlsZShwYXRoKTsKKyAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOwogICAgIAogICAgIGJvb2wgc2hvdWxkRGVs
ZXRlVHJhY2tlckZpbGVzID0gZmFsc2U7CiAgICAgewpAQCAtNTQ4LDggKzU0OCw4IEBAIHZvaWQg
U3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVu
dGlmaWVyKQogI2VuZGlmCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKICNpZiAhUExBVEZP
Uk0oSU9TKQotICAgICAgICBkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSk7Ci0gICAg
ICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgp
OwogI2VuZGlmCiAgICAgfQogCkBAIC02NDIsNyArNjQyLDcgQEAgbG9uZyBsb25nIFN0b3JhZ2VU
cmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICBsb25nIGxvbmcgc2l6ZTsKLSAgICByZXR1cm4gZ2V0RmlsZVNp
emUocGF0aCwgc2l6ZSkgPyBzaXplIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0Rmls
ZVNpemUocGF0aCwgc2l6ZSkgPyBzaXplIDogMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDM3M2I0Y2MxZjEwLi4zNGJmYjI5Mzdk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTEw
LTMxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBB
ZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaXNjL1dlYk5TRmlsZU1hbmFn
ZXJFeHRyYXMubW06CisgICAgICAgICogU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tOgor
CiAyMDE3LTEwLTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0ZyYW1lVmlldzo6bGF5b3V0IGNsZWFudXBdIE1vdmUgY29yZSBsYXlvdXQgbG9naWMgdG8gYSBz
ZXBhcmF0ZSBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2Mv
V2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQppbmRleCBiZWZjM2UxMzQ2Yy4uZTMzN2M2Y2M5YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdl
ckV4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1h
bmFnZXJFeHRyYXMubW0KQEAgLTQzLDcgKzQzLDcgQEAKIHsKICAgICBBU1NFUlQoVVJMU3RyaW5n
KTsKICAgICBBU1NFUlQocGF0aCk7Ci0gICAgV2ViQ29yZTo6c2V0TWV0YWRhdGFVUkwocGF0aCwg
VVJMU3RyaW5nLCByZWZlcnJlcik7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRh
dGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJlcik7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZP
Uk0oSU9TKQpAQCAtNTEsNyArNTEsNyBAQAogLy8gLVtOU0ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNB
dFBhdGg6XSByZXR1cm5zIE5PIGlmIHRoZXJlIGlzIGEgYnJva2VuIHN5bWxpbmsgYXQgdGhlIHBh
dGguCiAvLyBTbyB3ZSB1c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkLCB3aGljaCByZXR1cm5zIFlF
UyBpZiB0aGVyZSBpcyBhbnl0aGluZyB0aGVyZSwgaW5jbHVkaW5nCiAvLyBhIGJyb2tlbiBzeW1s
aW5rLgotc3RhdGljIEJPT0wgZmlsZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKK3N0YXRpYyBCT09M
IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoTlNTdHJpbmcgKnBhdGgpCiB7CiAgICAgc3RydWN0IHN0
YXQgc3RhdEJ1ZmZlcjsKICAgICByZXR1cm4gIWxzdGF0KFtwYXRoIGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbl0sICZzdGF0QnVmZmVyKTsKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIEJPT0wgZmls
ZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKICAgICBOU1N0cmluZyAqZmlsZW5hbWUgPSBbW3BhdGgg
bGFzdFBhdGhDb21wb25lbnRdIF93ZWJraXRfZmlsZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFyYWN0
ZXJzXTsKICAgICBwYXRoID0gW1twYXRoIHN0cmluZ0J5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVu
dF0gc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmZpbGVuYW1lXTsKIAotICAgIGlmIChm
aWxlRXhpc3RzKHBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkp
IHsKICAgICAgICAgLy8gRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGZpbGUgYnkgYXBwZW5kaW5n
ICItbiIsICItbi5leHQiIG9yICItbi5leHQuZXh0IiB0byB0aGUgZmlsZW5hbWUuCiAgICAgICAg
IE5TU3RyaW5nICpleHRlbnNpb25zID0gbmlsOwogICAgICAgICBOU1N0cmluZyAqcGF0aFdpdGhv
dXRFeHRlbnNpb25zOwpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgQk9PTCBmaWxlRXhpc3RzKE5T
U3RyaW5nICpwYXRoKQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyA7IGkrKykgewogICAg
ICAgICAgICAgTlNTdHJpbmcgKnBhdGhXaXRoQXBwZW5kZWROdW1iZXIgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVALSVkIiwgcGF0aFdpdGhvdXRFeHRlbnNpb25zLCBpXTsKICAgICAg
ICAgICAgIHBhdGggPSBbZXh0ZW5zaW9ucyBsZW5ndGhdID8gW3BhdGhXaXRoQXBwZW5kZWROdW1i
ZXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOmV4dGVuc2lvbnNdIDogcGF0aFdpdGhB
cHBlbmRlZE51bWJlcjsKLSAgICAgICAgICAgIGlmICghZmlsZUV4aXN0cyhwYXRoKSkKKyAgICAg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRoKSkKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIEJPT0wg
ZmlsZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKICNpZiBQTEFURk9STShJT1MpCiAtIChOU1N0cmlu
ZyAqKV93ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4OihO
U1N0cmluZyAqKXByZWZpeAogewotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkocHJlZml4KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCmluZGV4
IDU3NmQ1NzVhYzU5Li4wOTkyOThiZTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMzMsOSArMzMsOSBA
QCBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW2Rl
ZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAg
ICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoQVNDSUlMaXRlcmFsKCJ+L0xpYnJhcnkv
V2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiKSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChBU0NJSUxpdGVyYWwoIn4vTGli
cmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIpLCBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlc0RpcmVj
dG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3Rv
cnksIEFTQ0lJTGl0ZXJhbCgiX19fSW5kZXhlZERCIikpOworICAgICAgICBkYXRhYmFzZXNEaXJl
Y3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VzRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIl9fX0luZGV4ZWREQiIpKTsKICAgICAKICAg
ICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0NzQ5MTU3MjNkZS4uYTYyMzczNTkw
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0x
MC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAg
QWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5jcHAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcDoKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJl
YW0uaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJE
YXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAg
ICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDE3
LTEwLTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZyYW1l
Vmlldzo6bGF5b3V0IGNsZWFudXBdIE1vdmUgY29yZSBsYXlvdXQgbG9naWMgdG8gYSBzZXBhcmF0
ZSBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHAKaW5kZXggYjBlNjA2ZTk0MzMuLjMyODUwNmYwYWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTI3
LDcgKzEyNyw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAgIGF1dG8gcGF0
aHNFbmQgPSBwYXRocy5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBwYXRocy5iZWdpbigpOyBp
dCAhPSBwYXRoc0VuZDsgKytpdCkgewogICAgICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAg
ICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKCppdCwgbGFzdE1vZGlmaWVkKSkKKyAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQsIGxhc3RN
b2RpZmllZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwYXRoc1dpdGhUaW1l
cy5hZGQoKml0LCBsYXN0TW9kaWZpZWQpOwpAQCAtMzEzLDEwICszMTMsMTAgQEAgdm9pZCBQbHVn
aW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgUGx1Z2kKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERp
c2FibGVkKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0CiB7CiAgICAgLy8gU2tpcCBwbHVn
aW4gZmlsZXMgdGhhdCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUuCi0gICAgaWYgKG1fZGlzYWJs
ZWRQbHVnaW5GaWxlcy5jb250YWlucyhwYXRoR2V0RmlsZU5hbWUoZmlsZVBhdGgpKSkKKyAgICBp
ZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShmaWxlUGF0aCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZmls
ZUV4aXN0cyhmaWxlUGF0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmls
ZVBhdGgpOwogfQogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lucyhQbHVn
aW5TZXQmIHBsdWdpbnMpIGNvbnN0CkBAIC0zODIsNyArMzgyLDcgQEAgVmVjdG9yPFN0cmluZz4g
UGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiB7CiAgICAgVmVjdG9y
PFN0cmluZz4gcGF0aHM7CiAKLSAgICBTdHJpbmcgdXNlclBsdWdpblBhdGggPSBob21lRGlyZWN0
b3J5UGF0aCgpOworICAgIFN0cmluZyB1c2VyUGx1Z2luUGF0aCA9IEZpbGVTeXN0ZW06OmhvbWVE
aXJlY3RvcnlQYXRoKCk7CiAgICAgdXNlclBsdWdpblBhdGguYXBwZW5kKFN0cmluZygiXFxBcHBs
aWNhdGlvbiBEYXRhXFxNb3ppbGxhXFxwbHVnaW5zIikpOwogICAgIHBhdGhzLmFwcGVuZCh1c2Vy
UGx1Z2luUGF0aCk7CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5E
YXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKIAogYm9vbCBQbHVnaW5EYXRhYmFz
ZTo6aXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IFN0cmluZyBwcmVmZXJyZWRQYXRoID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKKyAgICBTdHJpbmcg
cHJlZmVycmVkUGF0aCA9IEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCk7CiAKICAgICBw
cmVmZXJyZWRQYXRoLmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRpb24gRGF0YVxcTW96aWxsYVxc
cGx1Z2lucyIpKTsKIApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6Omdl
dFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAog
CiAgICAgYXV0byBkaXJzRW5kID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5lbmQoKTsKICAgICBmb3Ig
KGF1dG8gZEl0ID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5iZWdpbigpOyBkSXQgIT0gZGlyc0VuZDsg
KytkSXQpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBsaXN0RGlyZWN0
b3J5KCpkSXQsIGZpbGVOYW1lRmlsdGVyKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2lu
UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KCpkSXQsIGZpbGVOYW1lRmlsdGVyKTsK
ICAgICAgICAgYXV0byBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMuZW5kKCk7CiAgICAgICAgIGZv
ciAoYXV0byBwSXQgPSBwbHVnaW5QYXRocy5iZWdpbigpOyBwSXQgIT0gcGx1Z2luc0VuZDsgKytw
SXQpIHsKICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoKnBJdCkp
CkBAIC00MjMsMTQgKzQyMywxNCBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRo
c0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAKLXN0YXRpYyB2b2lkIGZpbGxCdWZm
ZXJXaXRoQ29udGVudHNPZkZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIFZlY3RvcjxjaGFy
PiYgYnVmZmVyKQorc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCiB7
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSAwOwogICAgIHNpemVfdCBidWZmZXJDYXBhY2l0eSA9
IDEwMjQ7CiAgICAgYnVmZmVyLnJlc2l6ZShidWZmZXJDYXBhY2l0eSk7CiAKICAgICBkbyB7Ci0g
ICAgICAgIGJ1ZmZlclNpemUgKz0gcmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBi
dWZmZXJTaXplLCBidWZmZXJDYXBhY2l0eSAtIGJ1ZmZlclNpemUpOworICAgICAgICBidWZmZXJT
aXplICs9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0YSgpICsgYnVm
ZmVyU2l6ZSwgYnVmZmVyQ2FwYWNpdHkgLSBidWZmZXJTaXplKTsKICAgICAgICAgaWYgKGJ1ZmZl
clNpemUgPT0gYnVmZmVyQ2FwYWNpdHkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXJDYXBhY2l0
eSA8IG1heGltdW1QZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVNpemUpIHsKICAgICAgICAg
ICAgICAgICBidWZmZXJDYXBhY2l0eSAqPSAyOwpAQCAtNDc4LDExICs0NzgsMTEgQEAgdm9pZCBQ
bHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBpZiAoIWlz
UGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFkYXRhQ2Fj
aGVQYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZTsKLSAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVn
aW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNvbHV0ZUNh
Y2hlUGF0aCwgT3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlOworICAgIFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwgcGVyc2lz
dGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7CisgICAgZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CiAK
LSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmlsZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZpbGUpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIGNhY2hlIGFz
IGxvYWRlZCByZWdhcmRsZXNzIG9mIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gSWYKQEAgLTQ5MSwxMSAr
NDkxLDExIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNo
ZSgpCiAKICAgICBWZWN0b3I8Y2hhcj4gZmlsZUNvbnRlbnRzOwogICAgIGZpbGxCdWZmZXJXaXRo
Q29udGVudHNPZkZpbGUoZmlsZSwgZmlsZUNvbnRlbnRzKTsKLSAgICBjbG9zZUZpbGUoZmlsZSk7
CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogCiAgICAgaWYgKGZpbGVDb250ZW50
cy5zaXplKCkgPCAyIHx8IGZpbGVDb250ZW50cy5maXJzdCgpICE9IHNjaGVtYVZlcnNpb24gfHwg
ZmlsZUNvbnRlbnRzLmxhc3QoKSAhPSAnXDAnKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHJlYWQgcGx1Z2luIG1ldGFkYXRhIGNhY2hlOiBjb3JydXB0IHNjaGVtYSIpOwotICAgICAg
ICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTUxOCwxMyArNTE4LDEzIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0
YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHJlYWRVVEY4U3RyaW5nKGRlc2MsIGJ1ZmZl
clBvcywgZW5kKQogICAgICAgICAgICAgICAmJiByZWFkVVRGOFN0cmluZyhtaW1lRGVzYywgYnVm
ZmVyUG9zLCBlbmQpKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmVhZCBw
bHVnaW4gbWV0YWRhdGEgY2FjaGU6IGNvcnJ1cHQgZGF0YSIpOwotICAgICAgICAgICAgZGVsZXRl
RmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFNraXAgbWV0YWRhdGEgdGhhdCBwb2ludHMgdG8gcGx1Z2lucyBmcm9tIGRp
cmVjdG9yaWVzIHRoYXQKICAgICAgICAgLy8gYXJlIG5vdCBwYXJ0IG9mIHBsdWdpbiBkaXJlY3Rv
cnkgbGlzdCBhbnltb3JlLgotICAgICAgICBTdHJpbmcgcGx1Z2luRGlyZWN0b3J5TmFtZSA9IGRp
cmVjdG9yeU5hbWUocGF0aCk7CisgICAgICAgIFN0cmluZyBwbHVnaW5EaXJlY3RvcnlOYW1lID0g
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKICAgICAgICAgaWYgKG1fcGx1Z2luRGly
ZWN0b3JpZXMuZmluZChwbHVnaW5EaXJlY3RvcnlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQogICAg
ICAgICAgICAgY29udGludWU7CiAKQEAgLTU0MSwxNiArNTQxLDE2IEBAIHZvaWQgUGx1Z2luRGF0
YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgbV9wbHVnaW5QYXRoc1dp
dGhUaW1lcy5zd2FwKGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzKTsKIH0KIAotc3RhdGljIGJv
b2wgd3JpdGVVVEY4U3RyaW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKK3N0YXRpYyBib29sIHdyaXRlVVRGOFN0cmluZyhGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQ1N0cmluZyB1
dGY4U3RyaW5nID0gc3RyaW5nLnV0ZjgoKTsKICAgICBpbnQgbGVuZ3RoID0gdXRmOFN0cmluZy5s
ZW5ndGgoKSArIDE7Ci0gICAgcmV0dXJuIHdyaXRlVG9GaWxlKGZpbGUsIHV0ZjhTdHJpbmcuZGF0
YSgpLCBsZW5ndGgpID09IGxlbmd0aDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0gbGVuZ3RoOwogfQogCi1zdGF0
aWMgYm9vbCB3cml0ZVRpbWUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IHRpbWVfdCYg
dGltZSkKK3N0YXRpYyBib29sIHdyaXRlVGltZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZSwgY29uc3QgdGltZV90JiB0aW1lKQogewotICAgIHJldHVybiB3cml0ZVRvRmlsZShm
aWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmdGltZSksIHNpemVvZih0aW1lX3Qp
KSA9PSBzaXplb2YodGltZV90KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJnRpbWUpLCBzaXplb2YodGltZV90
KSkgPT0gc2l6ZW9mKHRpbWVfdCk7CiB9CiAKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBl
cnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKQEAgLTU1OCwyNiArNTU4LDI2IEBAIHZvaWQgUGx1Z2lu
RGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBpZiAoIWlzUGVy
c2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQ
YXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtYWtlQWxsRGlyZWN0b3Jp
ZXMocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkpOwotICAgIFN0cmluZyBhYnNvbHV0ZUNh
Y2hlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNo
ZVBhdGgoKSwgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7Ci0gICAgZGVs
ZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpKTsKKyAgICBTdHJpbmcgYWJzb2x1
dGVDYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lz
dGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmls
ZW5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwog
CiAgICAgaWYgKG1fcGx1Z2lucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNvbHV0ZUNhY2hl
UGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZTsKKyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgs
IEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmls
ZSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBwbHVnaW4gbWV0YWRhdGEgY2FjaGUgZm9yIHNh
dmluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2hhciBsb2NhbFNjaGVtYVZl
cnNpb24gPSBzY2hlbWFWZXJzaW9uOwotICAgIGlmICh3cml0ZVRvRmlsZShmaWxlLCAmbG9jYWxT
Y2hlbWFWZXJzaW9uLCAxKSAhPSAxKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGUsICZsb2NhbFNjaGVtYVZlcnNpb24sIDEpICE9IDEpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIGNhY2hlIHNjaGVtYSIpOwotICAgICAg
ICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC01ODksMTMgKzU4OSwxMyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjp1cGRhdGVQZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHdyaXRlVVRGOFN0cmluZyhm
aWxlLCAoKml0KS0+ZGVzY3JpcHRpb24oKSkKICAgICAgICAgICAgICAgJiYgd3JpdGVVVEY4U3Ry
aW5nKGZpbGUsICgqaXQpLT5mdWxsTUlNRURlc2NyaXB0aW9uKCkpKSkgewogICAgICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIHRvIGNhY2hlIik7Ci0g
ICAgICAgICAgICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgICAgICBkZWxldGVGaWxlKGFic29s
dXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgY2xvc2VGaWxlKGZp
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKIH0KIAogYm9vbCBQbHVnaW5E
YXRhYmFzZTo6aXNQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXggN2RkZTJj
YjAyNzcuLjZhZmY1MWQwNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBQbHVnaW5QYWNrYWdl
OjpQbHVnaW5QYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90JiBsYXN0TW9k
aWZpZWQpCiAgICAgLCBtX2luZm9Jc0Zyb21DYWNoZSh0cnVlKQogI2VuZGlmCiB7Ci0gICAgbV9m
aWxlTmFtZSA9IHBhdGhHZXRGaWxlTmFtZShtX3BhdGgpOworICAgIG1fZmlsZU5hbWUgPSBGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9wYXRoKTsKICAgICBtX3BhcmVudERpcmVjdG9yeSA9
IG1fcGF0aC5sZWZ0KG1fcGF0aC5sZW5ndGgoKSAtIG1fZmlsZU5hbWUubGVuZ3RoKCkgLSAxKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5T
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0u
Y3BwCmluZGV4IDEzODdmYWJiMDEwLi5jNjllMWU5MDE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQ
bHVnaW5TdHJlYW06OlBsdWdpblN0cmVhbShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVudCwgRnJh
bWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgICwgbV9zdHJlYW1TdGF0ZShTdHJlYW1CZWZvcmVT
dGFydGVkKQogICAgICwgbV9sb2FkTWFudWFsbHkoZmFsc2UpCiAgICAgLCBtX2RlbGF5RGVsaXZl
cnlUaW1lcigqdGhpcywgJlBsdWdpblN0cmVhbTo6ZGVsYXlEZWxpdmVyeVRpbWVyRmlyZWQpCi0g
ICAgLCBtX3RlbXBGaWxlSGFuZGxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBt
X3RlbXBGaWxlSGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAg
ICAgLCBtX3BsdWdpbkZ1bmNzKHBsdWdpbkZ1bmNzKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5j
ZSkKICAgICAsIG1fcXVpcmtzKHF1aXJrcykKQEAgLTIxMiwxMCArMjEyLDEwIEBAIHZvaWQgUGx1
Z2luU3RyZWFtOjpzdGFydFN0cmVhbSgpCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlID09IE5QX05P
Uk1BTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYXRoID0gb3BlblRlbXBvcmFyeUZpbGUo
IldLUCIsIG1fdGVtcEZpbGVIYW5kbGUpOworICAgIG1fcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKCJXS1AiLCBtX3RlbXBGaWxlSGFuZGxlKTsKIAogICAgIC8vIFNvbWV0aGlu
ZyB3ZW50IHdyb25nLCBjYW5jZWwgbG9hZGluZyB0aGUgc3RyZWFtCi0gICAgaWYgKCFpc0hhbmRs
ZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChtX3RlbXBGaWxlSGFuZGxlKSkKICAgICAgICAgY2FuY2VsQW5kRGVzdHJveVN0cmVhbShO
UFJFU19ORVRXT1JLX0VSUik7CiB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBsdWdpblN0
cmVhbTo6ZGVzdHJveVN0cmVhbSgpCiAgICAgQVNTRVJUKG1fcmVhc29uICE9IFdlYlJlYXNvbk5v
bmUpOwogICAgIEFTU0VSVCghbV9kZWxpdmVyeURhdGEgfHwgbV9kZWxpdmVyeURhdGEtPnNpemUo
KSA9PSAwKTsKIAotICAgIGNsb3NlRmlsZShtX3RlbXBGaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUobV90ZW1wRmlsZUhhbmRsZSk7CiAKICAgICBib29sIG5ld1N0cmVhbUNh
bGxlZCA9IG1fc3RyZWFtLm5kYXRhOwogCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQbHVnaW5T
dHJlYW06OmRlc3Ryb3lTdHJlYW0oKQogICAgICAgICBtX2NsaWVudC0+c3RyZWFtRGlkRmluaXNo
TG9hZGluZyh0aGlzKTsKIAogICAgIGlmICghbV9wYXRoLmlzTnVsbCgpKQotICAgICAgICBkZWxl
dGVGaWxlKG1fcGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wYXRoKTsK
IH0KIAogdm9pZCBQbHVnaW5TdHJlYW06OmRlbGF5RGVsaXZlcnlUaW1lckZpcmVkKCkKQEAgLTQ0
MCw4ICs0NDAsOCBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogICAgICAgICBkZWxpdmVyRGF0
YSgpOwogICAgIH0KIAotICAgIGlmIChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0b3BwZWQgJiYg
aXNIYW5kbGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkgewotICAgICAgICBpbnQgYnl0ZXNXcml0
dGVuID0gd3JpdGVUb0ZpbGUobV90ZW1wRmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBp
ZiAobV9zdHJlYW1TdGF0ZSAhPSBTdHJlYW1TdG9wcGVkICYmIEZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQobV90ZW1wRmlsZUhhbmRsZSkpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fdGVtcEZpbGVIYW5kbGUsIGRhdGEsIGxlbmd0aCk7CiAg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gbGVuZ3RoKQogICAgICAgICAgICAgY2FuY2VsQW5k
RGVzdHJveVN0cmVhbShOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggM2I2YzcxMDVmMTAuLjFl
NWFmMzBlZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
U3RyZWFtLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4gbV9kZWxpdmVyeURhdGE7CiAKLSAgICAg
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fdGVtcEZpbGVIYW5kbGU7CisgICAgICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBGaWxlSGFuZGxlOwogCiAgICAgICAgIGNvbnN0
IE5QUGx1Z2luRnVuY3MqIG1fcGx1Z2luRnVuY3M7CiAgICAgICAgIE5QUCBtX2luc3RhbmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRl
eCBkY2Q1NGE4YjkzMi4uMWVhOTAxNzhhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYkFwcGxpY2F0
aW9uQ2FjaGUqIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKIAogc3RhdGlj
IFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiB7Ci0gICAgU3RyaW5nIHBhdGggPSBsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTdHJpbmcgcGF0aCA9IEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogCiAjaWYgVVNFKENG
KQogICAgIGF1dG8gY2FjaGVEaXJlY3RvcnlQcmVmZXJlbmNlID0gYWRvcHRDRihDRlByZWZlcmVu
Y2VzQ29weUFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViUHJlZmVyZW5j
ZXM6OmFwcGxpY2F0aW9uSWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAKaW5kZXggOWM0NmY0YjIyNDcuLmZiNTQ0MDgwMjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTQyOCw3
ICs0MjgsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsK
ICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIp
OworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJEYXRhYmFzZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2Vz
SWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKaW5kZXggMTYwZTliYmM1YjEuLjg3MzI3NzhkOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdlYkRv
d25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAKICAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2Vz
dGVkRmlsZW5hbWUoKTsKICAgICAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHJlc3BvbnNl
LnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gRmlsZVN5
c3RlbTo6cGF0aEdldEZpbGVOYW1lKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKICAgICAgICAg
c3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc3VnZ2VzdGVkRmls
ZW5hbWUpOwogICAgICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUihzdWdnZXN0ZWRG
aWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggZjQ0NjFiNmVmMTguLmYxMTUwZWU3
MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHVzaW5nIHN0ZDo6bnVtZXJpY19saW1pdHM7CiAKIHN0YXRpYyBjb25zdCBT
dHJpbmcmIG9sZFByZWZlcmVuY2VzUGF0aCgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBwYXRoID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJXZWJLaXRQcmVmZXJlbmNlcy5wbGlzdCIpOworICAgIHN0YXRpYyBTdHJpbmcgcGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpyb2Ft
aW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5jZXMucGxp
c3QiKTsKICAgICByZXR1cm4gcGF0aDsKIH0KIApAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgV2Vi
UHJlZmVyZW5jZXM6Om1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcygpCiAK
ICAgICBjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihwbGlzdC5nZXQoKSkpOwogCi0gICAgZGVsZXRlRmlsZShvbGRQcmVmZXJl
bmNlc1BhdGgoKSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShvbGRQcmVmZXJlbmNlc1Bh
dGgoKSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1Rv
Q0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggMzllNDM4YzM2MGQuLjA5NGI2NTAzNmQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2Fj
aGVNb2RlbChXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIGlmIChwcmVmZXJlbmNl
ICYmIChDRlN0cmluZ0dldFR5cGVJRCgpID09IENGR2V0VHlwZUlEKHByZWZlcmVuY2UuZ2V0KCkp
KSkKICAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihwcmVmZXJlbmNlLmxlYWtSZWYoKSkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGNmdXJsQ2Fj
aGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOwogICAgIH0KICAgICBjYWNoZURpcmVjdG9y
eSA9IFN0cmluZyhjZnVybENhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICBDRkluZGV4IGNhY2hl
TWVtb3J5Q2FwYWNpdHkgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDY5ZmFjOGUwYzFiLi4xZDA0OWFlOTg0ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3
LTEwLTMxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisKIDIwMTctMTAtMzAgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZp
eCBidWlsZCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKaW5kZXggZmRlMWZlMTAzODAuLjBiNTllYTE3MzgyIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMg
U3RyaW5nIGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAgICAgICByZXR1cm4gU3Ry
aW5nIChwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsK
IH0KICNlbmRpZgogCkBAIC05MTIsNyArOTEyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q2FjaGVGb2xk
ZXIoKQogCiAgICAgQ09NUHRyPElXZWJDYWNoZT4gd2ViQ2FjaGU7CiAgICAgaWYgKFNVQ0NFRURF
RChXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJDYWNoZSwgMCwgSUlEX0lXZWJDYWNoZSwg
KHZvaWQqKikmd2ViQ2FjaGUpKSkgewotICAgICAgICBfYnN0cl90IGNhY2hlRm9sZGVyID0gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIp
LnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIF9ic3RyX3QgY2FjaGVGb2xkZXIgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENh
Y2hlIikudXRmOCgpLmRhdGEoKTsKICAgICAgICAgd2ViQ2FjaGUtPnNldENhY2hlRm9sZGVyKGNh
Y2hlRm9sZGVyKTsKICAgICB9CiB9CkBAIC05MjksOSArOTI5LDkgQEAgc3RhdGljIHZvaWQgc2V0
RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBTdHJpbmcgbGlicmFy
eVBhdGggPSBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCk7CiAKICAgICAvLyBTZXQgdXAg
dGhlc2UgdmFsdWVzIGJlZm9yZSBjcmVhdGluZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRoZSB2YXJp
b3VzIGluaXRpYWxpemF0aW9ucyB3aWxsIHNlZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVzLgotICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
LCBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRhYmFz
ZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIikuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRB
cHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRh
dGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2Vi
U3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xMDMxLDcgKzEwMzEs
NyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0
cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJp
bmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwp
OworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFU
SF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2suY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMDUw
LDIwICsxMDUwLDIwIEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFy
KiBwYXRoT3JVcmwpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3RyaW5n
IHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRUZXN0
cy5sZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2Nh
dGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7CisgICAg
U3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5
b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IHBvc3NpYmxlUGF0aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3Qp
KTsKKyAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogCiAg
ICAgc2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcp
OwogICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVFbmQgIT0gV1RG
Ojpub3RGb3VuZCkgewogICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmco
MCwgbmV4dENhbmRpZGF0ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9U
ZXN0KSk7CisgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0
KSk7CiAgICAgICAgIG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdc
XCcpOwogICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBv
c3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7
Ci0gICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsgCisgICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFj
ayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAi
cmVzb3VyY2VzXFwiKTsKIAogICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBhdGhUb0Zv
bnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gcGF0aFRvRm9udEZhbGxiYWNrOwpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAg
c3RhdGljIHZvaWQgYWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZh
bGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFs
bGJhY2suY3NzIik7CisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBh
dGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1co
Zm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9u
dEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKICAgICBp
ZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9u
dEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CisgICAg
U3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFj
ay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5k
ZXggZmJjYzYyM2ZiZmMuLjI1Mjc0NGI0MjFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTU1LDE5ICs1NSwxOSBAQCBwdWJs
aWM6CiAgICAgICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogICAgICAgICAK
ICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1w
VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRs
ZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgICAgIAotICAg
ICAgICBpbnQgcmMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRm
OCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CisgICAgICAgIGludCBy
YyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51
dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRvclRlc3REYXRhLmxlbmd0aCgpKTsKICAgICAgICAgQVNT
RVJUX05FKHJjLCAtMSk7CiAgICAgICAgIAotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBG
aWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgp
OwogICAgIH0KICAgICAKICAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJu
IG1fdGVtcEZpbGVQYXRoOyB9CkBAIC0xMTQsMTkgKzExNCwxOSBAQCBzdGF0aWMgU3RyaW5nIHJl
YWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgY29uc3RleHByIGlu
dCBidWZmZXJTaXplID0gMTAyNDsKIAotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwg
T3BlbkZvclJlYWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAgIGF1dG8g
c291cmNlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJl
YWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChzb3VyY2UpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1ZmZlcjxMQ2hhcj4gYnVmZmVy
KGJ1ZmZlclNpemUpOwogCiAgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0
KFtzb3VyY2VdKCkgewotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNl
OwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CiAgICAgfSk7CiAKICAgICAvLyBTaW5jZSB3ZSBjb250cm9sIHRoZSB0ZXN0
IGZpbGVzLCB3ZSBrbm93IHdlIG9ubHkgbmVlZCBvbmUgcmVhZAotICAgIGludCByZWFkQnl0ZXMg
PSByZWFkRnJvbUZpbGUoc291cmNlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuY2hh
cmFjdGVycygpKSwgYnVmZmVyU2l6ZSk7CisgICAgaW50IHJlYWRCeXRlcyA9IEZpbGVTeXN0ZW06
OnJlYWRGcm9tRmlsZShzb3VyY2UsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5jaGFy
YWN0ZXJzKCkpLCBidWZmZXJTaXplKTsKICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgU3RyaW5n
IHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIFRFU1RfRihGaWxlTW9u
aXRvclRlc3QsIERldGVjdENoYW5nZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRl
bXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0
ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CiAKQEAgLTE4NCw3ICsxODQsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFu
Z2UpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIHsK
LSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNU
X0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0aXBsZUNoYW5nZXMpCiAKIFRFU1RfRihGaWxl
TW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlz
dHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxv
b3AoKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dERlbGV0aW9uKQogCiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVu
RGVsZXRlKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7
CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMzQwLDcgKzM0
MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUp
CiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRD
aGFuZ2UpCiB7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsK
IAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC0zNzcsMTIgKzM3
NywxMiBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1
ZW50Q2hhbmdlKQogICAgIHJlc2V0VGVzdFN0YXRlKCk7CiAKICAgICB0ZXN0UXVldWUtPmRpc3Bh
dGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMo
dGVtcEZpbGVQYXRoKCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAotICAgICAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxl
KHRlbXBGaWxlUGF0aCgpLCBPcGVuRm9yV3JpdGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxl
LCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBGaWxl
U3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRl
KTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiAKLSAgICAgICAgaW50IHJjID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxl
TW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEubGVuZ3Ro
KCkpOworICAgICAgICBpbnQgcmMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZp
bGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5n
dGgoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogCiAgICAgICAgIGF1dG8gZmlyc3RD
b21tYW5kID0gY3JlYXRlQ29tbWFuZCh0ZW1wRmlsZVBhdGgoKSwgRmlsZU1vbml0b3JSZXZpc2Vk
RGF0YSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmls
ZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggN2Y2Zjk3NDk4ZDEuLmYyNTg2Njk0NjA2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NiwzNSArNDYsMzUg
QEAgcHVibGljOgogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAg
IAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRl
bXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5
c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAgICAgIGNsb3Nl
RmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0
YSkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgICAgICBt
X3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7Ci0gICAg
ICAgIGNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQ
YXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQ
YXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwogCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBh
dGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAg
ICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0
IEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9z
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5U
ZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNs
b3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX3F1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJU
ZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBt
X3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwogICAgIH0KIAogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0
ZUZpbGUobV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBF
bXB0eUZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwotICAg
ICAgICBkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7CiAgICAgfQogCiAgICAgY29u
c3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQpAQCAt
OTYsNyArOTYsNyBAQCBwcml2YXRlOgogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlz
c2luZ0ZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBl
ZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7CisgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3Rp
bmdfZmlsZSIpLCBzdWNjZXNzKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CiAgICAgRVhQ
RUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgTWFwcGluZ0V4aXN0aW5nRmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgTWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBz
dWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghIW1h
cHBlZEZpbGVEYXRhKTsKICAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0g
c3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwpAQCAtMTE0LDI2ICsxMTQsMjYgQEAgVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQogVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0eUZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAg
IE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nl
c3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBF
bXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwogICAg
IEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hhdmVTYW1l
Vm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAg
RVhQRUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgp
LCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hhdmVT
YW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBh
dGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUo
dGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90
ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0
RmlsZU1ldGFkYXRhU3ltbGluaykKIHsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IGZpbGVN
ZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIGF1dG8gc3ltbGlua01ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CiAgICAg
QVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc192YWx1ZSgpKTsKICAgICBFWFBFQ1RfVFJV
RShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3lt
Ym9saWNMaW5rKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5r
TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsK
IAotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxl
U3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRo
KCkpOwogICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc192YWx1ZSgpKTsKICAgICBF
WFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKTsKICAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0
YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3Bw
CmluZGV4IDMyY2UzNjE4ZGU1Li5iOTI4MzI0ZjM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00MSwyNiArNDEs
MjYgQEAgcHVibGljOgogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKICAg
ICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVz
dEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIAotICAg
ICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXAg
RW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Cisg
ICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5p
bmdGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhh
bmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX2JhbmdDb250YWlu
aW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFU
ZXN0IUZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKICAgICAgICAgCi0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVt
cG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xv
c2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogCiAgICAg
dm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBkZWxldGVGaWxlKG1fdGVt
cEZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRo
KTsKLSAgICAgICAgZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAg
ICBkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOwogICAgIH0KICAgICAKICAg
ICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAKaW5kZXggYTI5N2E1NWI4MzMuLjhmZTM1NjdjMWUxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3Bw
CkBAIC0zOCwxOSArMzgsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCiAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQot
ICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgbV90ZW1wRmlsZVBhdGggPSBvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICB3cml0ZVRvRmlsZSho
YW5kbGUsIHRlc3REYXRhKCksIHN0cmxlbih0ZXN0RGF0YSgpKSk7Ci0gICAgY2xvc2VGaWxlKGhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBt
X3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZp
bGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgdGVzdERh
dGEoKSwgc3RybGVuKHRlc3REYXRhKCkpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKIAotICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIG1f
dGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVt
cHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKLSAgICBkZWxldGVG
aWxlKG1fdGVtcEZpbGVQYXRoKTsKLSAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgp
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggYTIwYjM4
MzE1NjYuLjJlMmMzOTQ3OGU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQpAQCAtNDAs
MjEgKzQwLDIxIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpCiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZTsKLSAgICBTdHJpbmcgZGF0YWJhc2VGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wRW1wdHlEYXRhYmFzZSIsIGhhbmRsZSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7
CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBTdHJpbmcg
ZGF0YWJhc2VGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1w
dHlEYXRhYmFzZSIsIGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7
CiAKICAgICBsb25nIGxvbmcgZmlsZVNpemU7Ci0gICAgZ2V0RmlsZVNpemUoZGF0YWJhc2VGaWxl
UGF0aCwgZmlsZVNpemUpOworICAgIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGRhdGFiYXNlRmls
ZVBhdGgsIGZpbGVTaXplKTsKICAgICBFWFBFQ1RfRVEoMCwgZmlsZVNpemUpOwogCiAgICAgRVhQ
RUNUX1RSVUUoRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGRhdGFi
YXNlRmlsZVBhdGgpKTsKIAotICAgIGJvb2wgZmlsZVN0aWxsRXhpc3RzID0gZmlsZUV4aXN0cyhk
YXRhYmFzZUZpbGVQYXRoKTsKKyAgICBib29sIGZpbGVTdGlsbEV4aXN0cyA9IEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlUGF0aCk7CiAgICAgRVhQRUNUX0ZBTFNFKGZpbGVTdGls
bEV4aXN0cyk7CiAKICAgICBpZiAoZmlsZVN0aWxsRXhpc3RzKQotICAgICAgICBkZWxldGVGaWxl
KGRhdGFiYXNlRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFi
YXNlRmlsZVBhdGgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpAQCAtNzgsMTkgKzc4
LDE5IEBAIHN0YXRpYyB2b2lkIGFkZFRvRGF0YWJhc2VzVGFibGUoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgsIGNvbnN0IFNlY3VyaXR5T3JpZ2luCiAKIHN0YXRpYyB2b2lkIHJlbW92ZURpcmVj
dG9yeUFuZEFsbENvbnRlbnRzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKIHsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGZpbGUgOiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgsICIqIikp
Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUZpbGUoZmlsZSkpOworICAgIGZvciAoY29uc3Qg
YXV0byYgZmlsZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgIioi
KSkKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlKSk7CiAK
LSAgICBpZiAoZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKLSAgICAgICAgRVhQRUNUX1RSVUUo
ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpOworICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQorICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGNyZWF0ZUZpbGVBdFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlSGFuZGxlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvcldyaXRlKTsKKyAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgRVhQRUNUX05F
KC0xLCBmaWxlSGFuZGxlKTsKLSAgICBjbG9zZUZpbGUoZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUV4aXN0cyhwYXRoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVI
YW5kbGUpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpOwog
fQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQpAQCAtOTksNyArOTksNyBA
QCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQogICAgIC8vIHRhYmxlcywgYW5k
IGFuIGFjdHVhbCBkYXRhYmFzZSBvbiBkaXNrLgogICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hv
dWxkIHJlbW92ZSB0aGUgb3JpZ2luJ3MgaW5mb3JtYXRpb24gZnJvbSBib3RoIHRoZSBPcmlnaW5z
CiAgICAgLy8gYW5kIERhdGFiYXNlcyB0YWJsZXMsIGFuZCByZW1vdmUgdGhlIGRhdGFiYXNlIGZy
b20gZGlzay4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZp
bGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmlu
ZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwpAQCAtMTA4LDE2ICsxMDgsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9y
aWdpbikKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAg
ICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXpl
KCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJh
c2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdpbiwg
d2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVk
KTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAKLSAg
ICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RS
VUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxl
RXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJhc2VQYXRo
ID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJh
c2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJhc2VQYXRo
KTsKQEAgLTEyOCwxNCArMTI4LDE0IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmln
aW4pCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBF
WFBFQ1RfVFJVRShkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOwogI2Vs
c2UKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAjZW5kaWYKIAog
ICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0YWJh
c2VEb2VzTm90RXhpc3QpCkBAIC0xNDMsNyArMTQzLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICAvLyBUZXN0IHRoZSBj
YXNlIHdoZXJlIHRoZXJlIGlzIGFuIGVudHJ5IGluIGJvdGggdGhlIE9yaWdpbnMgYW5kIERhdGFi
YXNlcyB0YWJsZXMsCiAgICAgLy8gYnV0IG5vdCBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4K
ICAgICAvLyBUaGUgaW5mb3JtYXRpb24gc2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUg
dGFibGVzLgotICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5n
IGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCk7CkBAIC0xNTIsMTUgKzE1MiwxNSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3Jp
Z2luV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVv
dGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNl
cy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdl
YkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxl
KGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwog
ICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVz
KG9yaWdpbikuc2l6ZSgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZUZ1bGxQYXRoID0gZGF0
YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1l
LCBmYWxzZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0
aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNl
RnVsbFBhdGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlT3Jp
Z2luKG9yaWdpbikpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBFWFBFQ1RfVFJVRShk
YXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwogCiAgICAg
cmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgp
KTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FE
YXRhYmFzZUZhaWxzKQpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBE
ZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICAvLyBXaGVuIHdlIGNh
bGwgZGVsZXRlT3JpZ2luKCksIGRlbGV0aW5nIG9uZSBvZiB0aGVzZSBkYXRhYmFzZXMgZmFpbHMu
CiAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGRuJ3QgcmVtb3ZlIHRoZSBpbmZvcm1hdGlv
biBmcm9tIGVpdGhlciB0aGUgRGF0YWJhc2VzIG9yCiAgICAgLy8gT3JpZ2lucyB0YWJsZXMuCi0g
ICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
IldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTE4
NywxNiArMTg3LDE2IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGVs
ZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdp
biwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXIt
Pm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsK
LSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFz
ZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFz
ZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBF
Q1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4p
LnNpemUoKSk7CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBF
WFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9y
eVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxs
V2ViRGF0YWJhc2VQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9y
aWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxs
V2ViRGF0YWJhc2VQYXRoKTsKQEAgLTIwOSw4ICsyMDksOCBAQCBURVNUKERhdGFiYXNlVHJhY2tl
ciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAKICAgICBFWFBFQ1Rf
RkFMU0UoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVPcmlnaW4ob3JpZ2luKSk7CiAKLSAgICBFWFBF
Q1RfVFJVRShmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIEVYUEVDVF9FUSgodW5zaWduZWQp
MSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoKHVu
c2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7
CkBAIC0yMjEsMTEgKzIyMSwxMSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2lu
V2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAgICAgY2hmbGFncyhmdWxsV2ViRGF0YWJhc2VQ
YXRoLnV0ZjgoKS5kYXRhKCksIDApOwogI2VuZGlmCiAKLSAgICBFWFBFQ1RfVFJVRShkZWxldGVG
aWxlKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShkZWxldGVFbXB0eURp
cmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOwogCiAgICAgcmVtb3ZlRGlyZWN0b3J5
QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVTVChE
YXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldpdGhNaXNzaW5nRW50cnlJbkRhdGFiYXNlc1Rh
YmxlKQpAQCAtMjM0LDcgKzIzNCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmln
aW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKICAgICAvLyB0aGUgRGF0YWJhc2Vz
IHRhYmxlLiBUaGVyZSBpcyBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4KICAgICAvLyBUaGUg
aW5mb3JtYXRpb24gc2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3JpZ2lucyB0YWJs
ZSwgYW5kIHRoZQogICAgIC8vIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVkIGZyb20gZGlzay4K
LSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFz
ZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAt
MjQzLDI4ICsyNDMsMjggQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldpdGhN
aXNzaW5nRW50cnlJbkRhdGFiYXNlc1RhYmxlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVv
dGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNl
cy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgRVhQRUNUX1RS
VUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKIAot
ICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBFWFBFQ1Rf
VFJVRShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKGZp
bGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5QYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2lu
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCi0gICAgU3RyaW5nIHdlYkRhdGFiYXNlUGF0aCA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIiKTsKKyAg
ICBTdHJpbmcgd2ViRGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG9yaWdpblBhdGgsICJkYXRhYmFzZS5kYiIpOwogICAgIGNyZWF0ZUZpbGVBdFBhdGgo
d2ViRGF0YWJhc2VQYXRoKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVs
ZXRlT3JpZ2luKG9yaWdpbikpOwogCi0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0
YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwor
ICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNlUGF0aCkp
OworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsK
IAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLmlzRW1wdHkoKSk7
CiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbiku
aXNFbXB0eSgpKTsKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVE
YXRhYmFzZSkKQEAgLTI3Miw3ICsyNzIsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRl
RGF0YWJhc2UpCiAgICAgLy8gVGVzdCB0aGUgZXhwZWN0ZWQgY2FzZS4gVGhlcmUgaXMgYW4gZW50
cnkgaW4gdGhlIERhdGFiYXNlcyB0YWJsZQogICAgIC8vIGFuZCBhIGRhdGFiYXNlIG9uIGRpc2su
IEFmdGVyIHRoZSBkZWxldGlvbiwgdGhlIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVkCiAgICAg
Ly8gZnJvbSBkaXNrLCBhbmQgdGhlIGluZm9ybWF0aW9uIHNob3VsZCBiZSBnb25lIGZyb20gdGhl
IERhdGFiYXNlcyB0YWJsZS4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwog
ICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJp
bmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFj
a2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURp
cmVjdG9yeVBhdGgpOwpAQCAtMjgxLDE2ICsyODEsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZURhdGFiYXNlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1
MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3Jp
Z2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFt
ZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxlKGRhdGFiYXNlUGF0
aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwogICAgIEVYUEVDVF9F
USgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuc2l6
ZSgpKTsKIAotICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAg
ICBFWFBFQ1RfVFJVRShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVD
VF9UUlVFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5QYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCiAgICAgU3RyaW5nIGZ1bGxXZWJE
YXRhYmFzZVBhdGggPSBkYXRhYmFzZVRyYWNrZXItPmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2lu
LCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKICAgICBjcmVhdGVGaWxlQXRQYXRoKGZ1bGxXZWJE
YXRhYmFzZVBhdGgpOwpAQCAtMzAxLDIwICszMDEsMjAgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZURhdGFiYXNlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBFWFBFQ1RfVFJVRShEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoZnVsbFdlYkRhdGFiYXNlUGF0
aCkpOwogI2Vsc2UKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQ
YXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFdlYkRh
dGFiYXNlUGF0aCkpOwogI2VuZGlmCiAKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFi
YXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1w
dHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKICAgICByZW1vdmVEaXJlY3RvcnlBbmRB
bGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxl
RXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERhdGFi
YXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VXaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiB7CiAg
ICAgLy8gVGVzdCB0aGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gZGVsZXRlIGEgZGF0YWJhc2UgdGhh
dCBkb2Vzbid0IGV4aXN0IG9uIGRpc2suCiAgICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlbW92ZSB0
aGUgZGF0YWJhc2UgaW5mb3JtYXRpb24gZnJvbSB0aGUgRGF0YWJhc2VzIHRhYmxlLgotICAgIE5T
U3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJT
UUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0zMjMsMjEg
KzMyMywyMSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VXaGVuRGF0YWJh
c2VEb2VzTm90RXhpc3QpCiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUy
NDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmln
aW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAg
RVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJh
c2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1l
ID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRo
LCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VR
KCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXpl
KCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlRnVsbFBhdGggPSBkYXRhYmFzZVRyYWNrZXIt
PmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0aCkpOwog
CiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4s
IHdlYkRhdGFiYXNlTmFtZSkpOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0
YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7CiAKICAgICByZW1vdmVEaXJlY3RvcnlBbmRB
bGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxl
RXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZC5tbQppbmRleCA3NDg2NjVjZjJjMi4uMmFjOGI1NmRlYjkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAt
OTIsMTAgKzkyLDEwIEBAIHN0YXRpYyBib29sIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlID0g
ZmFsc2U7CiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNwb25zZSk7CiAgICAgRVhQRUNU
X0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1w
b3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUo
ZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBX
ZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmls
ZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAg
ICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGJv
b2wgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUsIGRvd25sb2FkLndhc1VzZXJJbml0aWF0ZWQpOwogICAg
IEVYUEVDVF9UUlVFKF9leHBlY3RlZENvbnRlbnRMZW5ndGggPT0gTlNVUkxSZXNwb25zZVVua25v
d25MZW5ndGggfHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9leHBlY3RlZENvbnRlbnRMZW5ndGgp
ID09IF9yZWNlaXZlZENvbnRlbnRMZW5ndGgpOwogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY29udGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRpb25QYXRo
IGFuZFBhdGg6W3NvdXJjZVVSTCBwYXRoXV0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rl
c3RpbmF0aW9uUGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVz
dGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC0zOTMsMTAgKzM5Mywx
MCBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERpcmVjdERv
d25sb2FkV2l0aExvYWRlZENvbnRlbnQpCiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNw
b25zZSk7CiAgICAgRVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29y
ZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9
IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rl
c3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJU
ZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAh
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dP
dmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC00MTAsNyAr
NDEwLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEaXJl
Y3REb3dubG9hZFdpdGhMb2FkZWRDb250ZW50KQogICAgIE5TU3RyaW5nKiBleHBlY3RlZENvbnRl
bnQgPSBAIntcInhcIjo0MixcInNcIjpcImhlbGxvLCB3b3JsZFwifSI7CiAgICAgTlNEYXRhKiBl
eHBlY3RlZERhdGEgPSBbZXhwZWN0ZWRDb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKICAgICBFWFBFQ1RfVFJVRShbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb250ZW50c0F0UGF0aDpfZGVzdGluYXRpb25QYXRoXSBpc0VxdWFsVG9EYXRhOmV4
cGVjdGVkRGF0YV0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7
CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsK
ICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC00NjYsMTAgKzQ2NiwxMCBAQCBURVNUKF9XS0Rv
d25sb2FkLCBEb3dubG9hZFJlcXVlc3RCbG9iVVJMKQogCiAtIChOU1N0cmluZyAqKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93
T3ZlcndyaXRlCiB7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7
Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0
V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBX
ZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAg
RVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZUhhbmRsZSk7CiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGlu
YXRpb25QYXRoOwogfQpAQCAtNDk2LDcgKzQ5Niw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25s
b2FkUmVxdWVzdEJsb2JVUkwpCiAgICAgaWYgKHJlZGlyZWN0Q2hhaW4uY291bnQgPiAyKQogICAg
ICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRpcmVjdENoYWluWzJdLmFic29s
dXRlU3RyaW5nIFVURjhTdHJpbmddKTsKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3Rp
bmF0aW9uUGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGlu
YXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325493</attachid>
            <date>2017-10-31 14:19:40 -0700</date>
            <delta_ts>2017-10-31 15:15:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>179063-4.diff</filename>
            <type>text/plain</type>
            <size>312403</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTE2MGFiYjYxNy4uODY5YjE0MjMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGluZyBhIEZp
bGVTeXN0ZW0gbmFtZXNwYWNlIHRvIG1vZGVybml6ZSB0aGUgY29kZSBiZWZvcmUKKyAgICAgICAg
bW92aW5nIEZpbGVTeXN0ZW0gdG8gUEFMLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
Q29jb2EubW06CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisKIDIwMTctMTAtMzAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgdGFiLXNpemU6IDBw
eCBhc3NlcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRl
eCA2YWViYjFmZDQwNC4uN2VmYjc5ZDU1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiBib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZDJlYjg4NTJjNC4uOGU1MDY2ZGRlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQ
YXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3Rz
IG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9
IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVk
Q2hpbGQ+IGxpc3RlZENoaWxkcmVuOwogICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDog
Y2hpbGRQYXRocykgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxk
UGF0aCk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
Y2hpbGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlz
SGlkZGVuKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVu
Y2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tl
ZEFwcGVuZChMaXN0ZWRDaGlsZCB7IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBh
dGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3RlZENoaWxkcmVuKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkVmlydHVhbFBhdGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRP
TUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9v
dFBhdGgoZGlyZWN0b3J5TmFtZShtX2ZpbGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAg
IEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoLCBTdAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFt
ZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0
IikgfTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZh
bGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKIHsKLSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCku
dHlwZTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQ
YXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5h
cHBlbmQoY29tcG9uZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29t
cG9uZW50cyk7CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVj
dG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCmluZGV4IGI2YmJjNjNhNjM2Li5kY2NiNWExMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVt
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsZVN5c3RlbSYgZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQotICAgICwgbV9uYW1l
KHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCisgICAgLCBtX25hbWUoRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHZpcnR1YWxQYXRoKSkKICAgICAsIG1fdmlydHVhbFBhdGgodmlydHVh
bFBhdGgpCiB7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRl
eCBkOTQ2YmU0M2YxZi4uOGJiODgwNTBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290CiAKIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCiB7Ci0gICAgU3RyaW5n
IG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0
b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIG1h
aW5GcmFtZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAg
ICAvLyBJZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUgb3JpZ2lucyBhcmUgdGhl
IHNhbWUsIHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KICAgICBpZiAob3BlbmluZ09yaWdpbiA9
PSB0b3BMZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsKIAot
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBv
cGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY4MWNlOGFiNmNhLi5mZmY4Zjg0Y2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2Niwx
MSArNDY2LDExIEBAIHZvaWQgSURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0
b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0
b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwo
IioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogZW50cmllcykgewotICAgICAgICBTdHJpbmcgZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGVudHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29k
ZWROYW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAgICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGVu
Y29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01ODEsMTQgKzU4MSwxNCBAQCB2b2lkIElEQlNlcnZl
cjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRo
KGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGF0YWJhc2VQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2lu
UGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0byYgZGF0YWJhc2VQYXRoIDogZGF0YWJhc2VQYXRo
cykgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBk
YXRhYmFzZUZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigp
ICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5j
ZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNl
RmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2Rp
ZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2luY2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0
aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3Jp
Z2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxv
YiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIgd2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwK
ICAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRoZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJl
IHRyeWluZyB0byBkZWxldGUuCi0gICAgICAgIGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGly
ZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTldKi5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBibG9iUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQ
YXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAgICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2
ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAg
ICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJpbmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3
aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAiLmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9u
LWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0
aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMgb25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0
LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5vdCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAg
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUoYmxvYlBhdGgpOwogICAgICAgICAgICAgYXV0byBmaWxlbmFtZUxlbmd0aCA9IGZpbGVuYW1l
Lmxlbmd0aCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWVMZW5ndGggPj0gNik7CkBA
IC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAodmFsaWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBkZWxl
dGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyBkZWxldGUg
SW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgU1FMaXRlIGZpbGVzLgogICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxlKTsKIAogICAgICAg
ICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2FuLCBkZWxldGUgdGhlIGVtcHR5IGRpcmVjdG9yeS4K
LSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKICAg
ICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFzZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwgd2Ug
Y2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVjdG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNs
b3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiKiIpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIq
Iik7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAg
ICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZv
cm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5
T3IKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBh
dGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMw
YmViMzguLjlmZjhjMGYzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtNzQ0LDcgKzc0NCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUZyb21FbmNvZGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBlbmNvCiAgICAgU3RyaW5nIHBh
cnRpYWxseURlY29kZWQgPSBlbmNvZGVkTmFtZTsKICAgICBwYXJ0aWFsbHlEZWNvZGVkLnJlcGxh
Y2UoQVNDSUlMaXRlcmFsKCIlMkUiKSwgQVNDSUlMaXRlcmFsKCIuIikpOwogCi0gICAgcmV0dXJu
IGRlY29kZUZyb21GaWxlbmFtZShwYXJ0aWFsbHlEZWNvZGVkKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhcnRpYWxseURlY29kZWQpOwogfQogCiBTdHJpbmcg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0CkBA
IC03NTQsNyArNzU0LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVG
b3JEYXRhYmFzZU5hbWUoKSBjb25zdAogICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBlbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7CiAgICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKQEAgLTc2NCwxNCArNzY0LDE0IEBAIFN0cmluZyBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0
dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnks
IGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFt
ZUZvckRhdGFiYXNlTmFtZSgpKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0
YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CiB9CiAKIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQpAQCAtNzgzLDcgKzc4Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVz
KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCkpOwogICAgIFN0cmluZyBkYkZpbGVuYW1lID0g
ZnVsbERhdGFiYXNlUGF0aCgpOwogCiAgICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CkBAIC0xODU4LDcgKzE4NTgsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBvYmplYwogICAgICAgICBibG9iVVJMcy5hcHBlbmQoYmxvYlVSTCk7CiAKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gc3FsLT5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBibG9iRmlsZVBh
dGhzLmFwcGVuZChwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGZp
bGVOYW1lKSk7CisgICAgICAgIGJsb2JGaWxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZmlsZU5hbWUpKTsKICAgICB9
CiAKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtMjU0Miw4ICsyNTQyLDggQEAgdm9pZCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAKICAgICBTdHJpbmcg
ZGF0YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBmb3IgKGF1
dG8mIGZpbGUgOiBibG9iRmlsZXMpIHsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsKLSAgICAgICAgaWYg
KCFkZWxldGVGaWxlKGZ1bGxQYXRoKSkKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgZGVsZXRpbmcgYmxvYiBmaWxlICVzIiwgZnVsbFBhdGgudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCA2MDg2M2E4YWE5My4uMjMxNjVjOWI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptb3ZlQmxv
YkZpbGVzSWZOZWNlc3NhcnkoKQogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JUZW1wb3Jh
cnlBbmRTdG9yZWRGaWxlbmFtZXMpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5
RmlsZUhhbmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGVudHJ5LmZpcnN0
KTsKIAotICAgICAgICBpZiAoIWhhcmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1wb3JhcnkgYmxvYiBm
aWxlICclcycgdG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZp
bGUoZW50cnkuZmlyc3QsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKSkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBsaW5rL2NvcHkgdGVtcG9yYXJ5IGJsb2IgZmlsZSAnJXMnIHRvIGxvY2F0aW9uICcl
cyciLCBlbnRyeS5maXJzdC51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGVudHJ5LnNlY29uZCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nl
c3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShlbnRyeS5maXJzdCk7CiAgICAgfQpAQCAtMTA3LDcg
KzEwNyw3IEBAIHZvaWQgU1FMaXRlSURCVHJhbnNhY3Rpb246OmRlbGV0ZUJsb2JGaWxlc0lmTmVj
ZXNzYXJ5KCkKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSA9IG1fYmFja2luZ1N0b3Jl
LmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JS
ZW1vdmVkRmlsZW5hbWVzKSB7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOworICAgICAgICBTdHJpbmcg
ZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnksIGVudHJ5KTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhh
bmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGZ1bGxQYXRoKTsKICAgICAg
ICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nlc3NUb1RlbXBvcmFy
eUZpbGVDb21wbGV0ZShmdWxsUGF0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAppbmRleCBhZGRkMWY4YzAwNC4uNjFhZWI4ZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAppbmRleCA1NTI3NjlhNDFjNy4uZmVhMWJlNWU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY0OSw5
ICs2NDksOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjp1c2FnZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9
IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza1Vz
YWdlID0gMDsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogbGlzdERpcmVjdG9yeShvcmlnaW5Q
YXRoLCBBU0NJSUxpdGVyYWwoIiouZGIiKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCBBU0NJSUxpdGVyYWwoIiouZGIi
KSkpIHsKICAgICAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgICAgIGdldEZpbGVTaXplKGZpbGVO
YW1lLCBzaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNp
emUpOwogICAgICAgICBkaXNrVXNhZ2UgKz0gc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2tV
c2FnZTsKQEAgLTc4NSw5ICs3ODUsOSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgd2UgcHJldmlvdXNseSBkZWxldGVk
IGl0IGJ1dCBmYWlsZWQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgLy8g
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZS4gV2Ugd2FudCB0byBkZWxldGUgYWxsIG9mIHRoZSBp
bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICAgICAgLy8gZGF0YWJhc2Ug
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZSwgc28gc3RpbGwgYWRkIGl0cyBuYW1lIHRvIGRhdGFi
YXNlTmFtZXNUb0RlbGV0ZS4KLSAgICAgICAgICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoKSkg
eworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkp
CisgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUgPCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3QodGltZSkpCkBAIC04MzcsNyArODM3LDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgRGVsZXRpb25Nb2QKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVz
ZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwg
ZGVhZGxvY2suCiAgICAgYm9vbCBmYWlsZWRUb0RlbGV0ZUFueURhdGFiYXNlRmlsZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgbmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKLSAgICAgICAgaWYgKGZp
bGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRl
bGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9uTW9kZSkpIHsKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5h
bWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9u
TW9kZSkpIHsKICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgY2FuJ3QgYmUgZGVsZXRl
ZCwgd2Ugd2FudCB0byB0cnkgYW5kIGRlbGV0ZSB0aGUgcmVzdCwgZG9uJ3QgcmV0dXJuIGVhcmx5
IGhlcmUuCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3Ig
ZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBmYWlsZWRUb0Rl
bGV0ZUFueURhdGFiYXNlRmlsZSA9IHRydWU7CkBAIC04NTIsOCArODUyLDggQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgRGVsZXRpb25Nb2QKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoRGF0YWJhc2VUcmFja2VyLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiIpOwogI2VuZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZmlsZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlbGV0ZUZpbGUoZmlsZSkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmls
ZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7
CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpCiAgICAgICAg
ICAgICAgICAgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAg
ICB9CiAKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tz
IGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCi0gICAg
aWYgKGZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkg
JiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVs
dCkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aEZvckRhdGFiYXNl
KG9yaWdpbiwgbmFtZSwgZmFsc2UpKSAmJiAhZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFt
ZSwgRGVsZXRpb25Nb2RlOjpEZWZhdWx0KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIGRv
bmVEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4g
ZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2UgZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3Vy
cmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNlIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hv
dWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0Rmls
ZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YWJhc2VGaWxlTmFtZS5pc051bGwoKSB8fCBkYXRhYmFzZUZpbGVOYW1lICE9IEZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShkYi0+ZmlsZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRGF0YWJhc2VzLmFwcGVuZChkYik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmREZWxldGVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92
ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogc3RhdGljIGJvb2wgaXNaZXJvQnl0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGxvbmcgbG9uZyBzaXplID0gMDsKLSAgICByZXR1cm4g
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgJiYgIXNpemU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIHNpemUpICYmICFzaXplOwogfQogICAgIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBwYXRoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAK
aW5kZXggNTE2YTJkMmYyNjQuLjMxZDJkMDRiMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQ
YXRoKFN0cmluZyBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgsIFN0cmluZygiLmxvY2siKSk7
CiB9CiAKIE9yaWdpbkxvY2s6Ok9yaWdpbkxvY2soU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgOiBt
X2xvY2tGaWxlTmFtZShsb2NrRmlsZU5hbWVGb3JQYXRoKG9yaWdpblBhdGgpLmlzb2xhdGVkQ29w
eSgpKQogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgLCBtX2xvY2tIYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fbG9ja0hhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogI2VuZGlmCiB7CiB9CkBAIC01MCw4ICs1MCw4IEBAIHZvaWQgT3Jp
Z2luTG9jazo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NL
KQotICAgIG1fbG9ja0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgT3Bl
bkZvcldyaXRlKTsKLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUo
bV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKG1fbG9j
a0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAg
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBj
b250YWluaW5nIHRoZSBsb2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2Vy
ZSBnaXZlbiBhIHBhdGggdG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYnV0IGNsZWFudXAgYW5kIHJl
dHVybi4KQEAgLTY4LDExICs2OCwxMSBAQCB2b2lkIE9yaWdpbkxvY2s6OnVubG9jaygpCiAgICAg
Ly8gY29udGFpbmluZyB0aGUgbG9jayBoYXMgYmVlbiBkZWxldGVkIGJlZm9yZSB3ZSBvcGVuZWQg
dGhlIGxvY2sgZmlsZSwgb3IKICAgICAvLyB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1l
eGlzdGFudCBkaXJlY3RvcnkuIFdoaWNoLCBpbiB0dXJuLCBtZWFucwogICAgIC8vIHRoYXQgdGhl
cmUncyBub3RoaW5nIHRvIHVubG9jay4KLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIAorICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5sb2Nr
QW5kQ2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7Ci0gICAgbV9sb2NrSGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUobV9s
b2NrSGFuZGxlKTsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogI2VuZGlmCiAKICAgICBtX211dGV4LnVubG9jaygpOwpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIE9yaWdpbkxvY2s6OmRlbGV0ZUxvY2tGaWxlKFN0cmluZyBvcmlnaW5QYXRo
KQogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5QYXRoKTsKICNpZiBVU0UoRklMRV9MT0NLKQogICAg
IFN0cmluZyBsb2NrRmlsZU5hbWUgPSBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKG9y
aWdpblBhdGgpOwotICAgIGRlbGV0ZUZpbGUobG9ja0ZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGxvY2tGaWxlTmFtZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBkNzE1MWRlNzhiZC4u
YTE2ZTg0ZjE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
T3JpZ2luTG9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9j
a0ZpbGVOYW1lOwogICAgIExvY2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBtX2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fbG9ja0hhbmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggM2ViMjg4NGFjYTEuLjAyNjFhMGZkMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QK
ICAgICAvLyBUaGUgaS9vIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCwKICAgICAvLyBhbmQgdGhlIHJlc3VsdCBzaG91bGQgYmUgY2FjaGVkIGFsb25nIHdpdGggYW4g
YXN5bmNocm9ub3VzIG1vbml0b3IgZm9yIGNoYW5nZXMgdG8gdGhlIGZpbGUuCiAgICAgdGltZV90
IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKGdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0
aCwgbW9kaWZpY2F0aW9uVGltZSkgJiYgaXNWYWxpZEZpbGVUaW1lKG1vZGlmaWNhdGlvblRpbWUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1v
ZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRp
b25UaW1lKSkKICAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25k
OwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUoKSAqIG1zUGVyU2Vjb25k
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlz
TnVsbCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworICAgIGVmZmVj
dGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluZGV4ID0gZWZmZWN0aXZl
TmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKICAgICAg
ICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBTdHJpbmcgRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIGJvb2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAogewogICAgIGlmICghbV9pc0Rp
cmVjdG9yeSkKLSAgICAgICAgbV9pc0RpcmVjdG9yeSA9IGZpbGVJc0RpcmVjdG9yeShtX3BhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgICAgIG1faXNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwogICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAwZDVhNjk3ZjY1YS4uY2FhMjFk
NWI4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC01OSw5ICs1OSw5IEBA
IGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVO
YW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVCghcGF0aEdl
dEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0
aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KKyAgICBBU1NF
UlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8g
RXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3Ig
ZGlyZWN0b3JpZXMuCiAgICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBBU0NJSUxpdGVyYWwoImFw
cGxpY2F0aW9uL3ppcCIpOwotICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVs
bCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJTGl0ZXJh
bCgiLnppcCIpOworICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVsbCgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJ
TGl0ZXJhbCgiLnppcCIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAKaW5kZXggOTEwNmRhZGNjZDQuLjc2ZjU2NTk3MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgRmlsZUxpc3RDcmVhdG9y
Ojp+RmlsZUxpc3RDcmVhdG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0
b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFBhdGgg
OiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAgICBhdXRvIG1ldGFkYXRh
ID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRv
IG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CiAgICAgICAg
IGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWV0
YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIHBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOworICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRo
KTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0
YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKQEAgLTgwLDgg
KzgwLDggQEAgUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBp
ZiAoc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6
WWVzICYmIGZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgcGF0
aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgaWYgKHNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxl
cyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxl
T2JqZWN0cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4NjQwY2YxMmM4
YS4uYmY0MzQzOTNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTZXRNZWRpYUtl
eXMoV2ViS2l0TWVkaWFLZXlzKiBtZWRpYUtleXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBh
ZmY4Njk5MmU1MC4uYTIxNTBlZDJmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNlTmVlZGVkKGlu
dDY0X3QgY2FjaGVUb1NhdmUpCiB7CiAgICAgaW50NjRfdCBzcGFjZU5lZWRlZCA9IDA7CiAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICBpZiAoIWdldEZpbGVTaXplKG1fY2FjaGVGaWxl
LCBmaWxlU2l6ZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2NhY2hlRmls
ZSwgZmlsZVNpemUpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGludDY0X3QgY3VycmVudFNp
emUgPSBmaWxlU2l6ZSArIGZsYXRGaWxlQXJlYVNpemUoKTsKQEAgLTYwMCwxMSArNjAwLDExIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlm
RG9lc05vdEV4aXN0KQogICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X2NhY2hlRGlyZWN0b3J5LCAiQXBwbGljYXRpb25DYWNoZS5kYiIpOwotICAgIGlmICghY3JlYXRl
SWZEb2VzTm90RXhpc3QgJiYgIWZpbGVFeGlzdHMobV9jYWNoZUZpbGUpKQorICAgIG1fY2FjaGVG
aWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7CisgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlz
dCAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKKyAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9jYWNoZURpcmVjdG9yeSk7CiAgICAgbV9kYXRh
YmFzZS5vcGVuKG1fY2FjaGVGaWxlKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCkBAIC03OTksNyArNzk5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKIAogICAgIFN0
cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICBkYXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGhHZXRGaWxlTmFtZShyZXNvdXJjZS0+
cGF0aCgpKSk7CisgICAgICAgIGRhdGFTdGF0ZW1lbnQuYmluZFRleHQoMiwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKICAgICBlbHNlIGlmIChzaG91bGRT
dG9yZVJlc291cmNlQXNGbGF0RmlsZShyZXNvdXJjZSkpIHsKICAgICAgICAgLy8gRmlyc3QsIGNo
ZWNrIHRvIHNlZSBpZiBjcmVhdGluZyB0aGUgZmxhdCBmaWxlIHdvdWxkIHZpb2xhdGUgdGhlIG1h
eGltdW0gdG90YWwgcXVvdGEuIFdlIGRvbid0IG5lZWQKICAgICAgICAgLy8gdG8gY2hlY2sgdGhl
IHBlci1vcmlnaW4gcXVvdGEgaGVyZSwgYXMgaXQgd2FzIGFscmVhZHkgY2hlY2tlZCBpbiBzdG9y
ZU5ld2VzdENhY2hlKCkuCkBAIC04MDgsOCArODA4LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgbWFr
ZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKKyAgICAgICAgU3RyaW5nIGZsYXRG
aWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2Fj
aGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKIAogICAgICAgICBT
dHJpbmcgZXh0ZW5zaW9uOwogICAgICAgICAKQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgICAgICBpZiAoIXdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KHJlc291cmNlLT5kYXRhKCksIGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoLCBleHRlbnNpb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZnVsbFBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAg
ICAgICBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0
RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIHJlc291cmNlLT5zZXRQYXRoKGZ1bGxQYXRo
KTsKICAgICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKICAgICAgICAgLy8gQ2xlYW4gdXAgdGhl
IGZpbGUgd2hpY2ggd2UgbWF5IGhhdmUgd3JpdHRlbiB0bzoKICAgICAgICAgaWYgKCFmdWxsUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQp
CiAKICAgICBhdXRvIGNhY2hlID0gQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlKCk7CiAKLSAgICBT
dHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICBpbnQgcmVz
dWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CkBAIC0xMTM2LDggKzExMzYsOCBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXpl
KCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBnZXRGaWxlU2l6
ZShwYXRoLCBzaXplKTsKKyAgICAgICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMyk7
CkBAIC0xMjk0LDI1ICsxMjk0LDI1IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgU3Ry
aW5nIGZ1bGxQYXRoOwogICAgIAogICAgIGRvIHsKLSAgICAgICAgcGF0aCA9IGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyBmaWxlRXh0ZW5zaW9uOworICAg
ICAgICBwYXRoID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3Qg
dGhlIGFib3ZlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdoaWNoIGRvZXMg
bm90IGltcGxlbWVudAogICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuCiAg
ICAgICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIHBhdGgpOwotICAgIH0gd2hp
bGUgKGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGRpcmVjdG9yeSB8fCBmaWxlRXhpc3RzKGZ1
bGxQYXRoKSk7CisgICAgICAgIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CisgICAgfSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3Bl
bkZpbGUoZnVsbFBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
YXRhLnNpemUoKSkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShmdWxsUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIApAQCAtMTQ2NiwxNSArMTQ2NiwxNSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIFN0cmluZyBm
bGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0
b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Cisg
ICAgICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIAogICAgICAgICAv
LyBEb24ndCBleGl0IHRoZSBmbGF0RmlsZURpcmVjdG9yeSEgVGhpcyBzaG91bGQgb25seSBoYXBw
ZW4gaWYgdGhlICJwYXRoIiBlbnRyeSBjb250YWlucyBhIGRpcmVjdG9yeSAKICAgICAgICAgLy8g
Y29tcG9uZW50LCBidXQgcHJvdGVjdCBhZ2FpbnN0IGl0IHJlZ2FyZGxlc3MuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBmbGF0RmlsZURpcmVjdG9yeSkKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0
b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBkZWxldGVGaWxl
KGZ1bGxQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAg
ICAgfSB3aGlsZSAoc2VsZWN0UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpOwogICAgIAogICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiKTsK
QEAgLTE0OTQsMTIgKzE0OTQsMTIgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmbGF0RmlsZUFyZWFTaXplKCkKICAgICB9CiAKICAgICBsb25nIGxvbmcgdG90YWxTaXplID0g
MDsKLSAgICBTdHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9jYWNoZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0
cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAg
d2hpbGUgKHNlbGVjdFBhdGhzLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gc2VsZWN0UGF0aHMuZ2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIGZ1
bGxQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRo
KTsKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgbG9uZyBsb25nIHBh
dGhTaXplID0gMDsKLSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShmdWxsUGF0aCwgcGF0aFNpemUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdG90YWxTaXplICs9IHBhdGhTaXpl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNhMzY5YmVjMzU4Li41OWVjMWM5MGM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBh
Z2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiAKICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUp
KSB7CiAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMg
anVzdCBkZWxldGVkLCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYg
d2UndmUgcmVhZCB0aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0
aHJvdyBhd2F5IHRoYXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdz
IG9uIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4
YmM3YTM3Li42YWQ2MzExMGFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgp
ICYmICFmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgp
KSkKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYg
IUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0
ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDkyM2ZmMzMwZDZjLi5hZGExZjQx
ZDIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZp
ZXIoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChwcm90b2NvbCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlbmNvZGVGb3JGaWxlTmFt
ZShob3N0KSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJh
Y3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IDgwM2E4MjA5
YjJjLi4yYTBhNjM0YzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlSGFuZGxlOjpG
aWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFu
ZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5N
b2RlIG1vZGUpCiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kZShtb2RlKQogewpAQCAt
NDIsNyArNDIsNyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBv
dGhlcikKICAgICA6IG1fcGF0aChXVEZNb3ZlKG90aGVyLm1fcGF0aCkpCiAgICAgLCBtX21vZGUo
V1RGTW92ZShvdGhlci5tX21vZGUpKQotICAgICwgbV9maWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSkKKyAgICAsIG1f
ZmlsZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBG
aWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogICAg
IGNsb3NlKCk7CiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9k
ZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKLSAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
bV9maWxlSGFuZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
RmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxl
VmFsaWQobV9maWxlSGFuZGxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2ZpbGVIYW5kbGUpOwogfQogCi1ib29sIEZpbGVIYW5kbGU6Om9wZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGlmICgq
dGhpcyAmJiBwYXRoID09IG1fcGF0aCAmJiBtb2RlID09IG1fbW9kZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsK
ICAgICBpZiAoISp0aGlzKQotICAgICAgICBtX2ZpbGVIYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgs
IG1fbW9kZSk7CisgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
cGF0aCwgbV9tb2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC04NywxNCArODcsMTQgQEAgaW50IEZpbGVIYW5kbGU6OnJlYWQodm9pZCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiByZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSks
IGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5k
bGUsIHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAogaW50IEZpbGVIYW5k
bGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVu
KCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbGVIYW5kbGU6
OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBGaWxlSGFuZGxlOjpjbG9z
ZSgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMzYyNDNkZTQwZC4uNTYzZmVkOTg5NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7
CiBwdWJsaWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKLSAgICBGaWxlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBGaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZpbGVIYW5k
bGUmJiBvdGhlcik7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogICAgIGJvb2wgb3BlbigpOwogICAgIGludCByZWFkKHZv
aWQqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGludCB3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZU9wZW5Nb2RlIG1fbW9kZSB7IE9wZW5Gb3JSZWFkIH07Ci0g
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcAppbmRleCBiMThiMWMzZTk3ZC4uZjc0NWQ3YzFkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZpbGVTdHJlYW06OkZpbGVTdHJlYW0oKQotICAgIDogbV9oYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICA6IG1faGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgLCBtX2J5dGVzUHJvY2Vzc2VkKDApCiAgICAgLCBtX3RvdGFsQnl0
ZXNUb1JlYWQoMCkKIHsKQEAgLTUzLDE2ICs1MywxNiBAQCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6
Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bQogewogICAgIC8vIENoZWNrIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBvc3NpYmxl
IGZpbGUgY2hhbmdlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1l
KSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUo
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dGlt
ZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9IG1vZGlmaWNhdGlvblRpbWUpCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLy8gTm93IGdldCB0aGUgZmlsZSBzaXpl
LgogICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShwYXRoLCBsZW5n
dGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgbGVuZ3RoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKQEAgLTcwLDE3ICs3MCwxNyBA
QCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbQogCiBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkK
IHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IE9wZW4gdGhlIGZpbGUuCi0gICAgbV9oYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZp
bGUgaGFzIGJlZW4gc2xpY2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChz
ZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBTZWVrRnJvbUJlZ2lubmluZykgPCAwKQorICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6
U2Vla0Zyb21CZWdpbm5pbmcpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTkyLDIyICs5MiwyMiBAQCBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbgogCiB2b2lkIEZp
bGVTdHJlYW06OmNsb3NlKCkKIHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpIHsK
LSAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxlKTsKLSAgICAgICAgbV9oYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOworICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1f
aGFuZGxlKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworICAg
ICAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAg
ICAgfQogfQogCiBpbnQgRmlsZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJT
aXplKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbG9uZyBsb25nIHJlbWFpbmluZyA9IG1fdG90YWxCeXRlc1RvUmVhZCAtIG1fYnl0ZXNQcm9j
ZXNzZWQ7CiAgICAgaW50IGJ5dGVzVG9SZWFkID0gKHJlbWFpbmluZyA8IGJ1ZmZlclNpemUpID8g
c3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogYnVmZmVyU2l6ZTsKICAgICBpbnQgYnl0ZXNS
ZWFkID0gMDsKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiAwKQotICAgICAgICBieXRlc1JlYWQgPSBy
ZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNUb1JlYWQpOworICAgICAgICBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNU
b1JlYWQpOwogICAgIGlmIChieXRlc1JlYWQgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAg
aWYgKGJ5dGVzUmVhZCA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXgg
ZDQyMWU0ZjNiYzEuLjk2N2RlZGM3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIs
IGludCBsZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRs
ZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9u
ZyBsb25nIG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVh
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDdh
ZTM0Li5iODk0NzVlMDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmls
ZVN5c3RlbSB7CisKIC8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVk
IGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQogLy8gYWNyb3NzIGFsbCBzeXN0ZW1z
LCBpbmNsdWRpbmcgV2luZG93czoKIC8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikK
QEAgLTM1OSw0ICszNjEsNSBAQCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93UwogICAgIHJldHVybiBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CiB9
CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCAzMmM5M2U2NThiMy4uYTZjN2UzZWI3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTU2LDYgKzU2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKICNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwpAQCAtOTIs
OCArOTYsNiBAQCBlbnVtIEZpbGVMb2NrTW9kZSB7CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKIAotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogV0VC
Q09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTIxMyw1ICsyMTUsNiBAQCBp
bmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmls
ZURhdGEmJiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZTFmY2RjZWJkMWMuLjBkMzViMjEzYmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBz
aXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwpAQCAtNjEsNyArNjEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8Y2hhcj4mJiBkYXRhKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGlu
Z1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtd
KGNvbnN0IEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcg
KzIyNyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICNpZiBVU0UoU09VUCkKICAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IE1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRh
LnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYg
ZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGZkMjZmMjFjNmJkLi4zNGZmNzFjNjM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAj
aWYgVVNFKFNPVVApCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHVW5p
cXVlUHRyPFNvdXBCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoTWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFTZWdtZW50KEdVbmlxdWVQdHI8U291
cEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoTWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAog
ICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6
CiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCkBAIC0xNTcsNyArMTU3LDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXpl
X3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDFmNjg0YjY1YzE0Li4wODQ3MGEw
OGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorQ1N0cmluZyBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
QEAgLTU1LDEyICs1NSwxMiBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKIH0KIAotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciog
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQogewogICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENGVVJMUmVm
PiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQorUmV0YWluUHRyPENGVVJMUmVmPiBGaWxl
U3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENGVVJMUGF0aFN0
eWxlIHBhdGhTdHlsZTsKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAzOTVkZjc3NzE5YS4uNTc4
NDM0ZDJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0gICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSk7
CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJG
YWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAg
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1
ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW2hh
bmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRj
aF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2NkOWY4Li4yMDQz
OWY4NTExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQpAQCAtNDYsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKKwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAg
ICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CkBAIC0xMjgsNCArMTMwLDUgQEAgTlNTdHJpbmcg
KmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQogICAg
IHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb246cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07CiB9CiAKK30gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCBkNmQ5ZWY3
YTVjYS4uOTQ5MjRlNjFkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZU1vbml0b3JHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVNb25pdG9yR0xpYi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRmlsZU1vbml0b3I6OkZpbGVN
b25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUs
IFdURjoKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIW1vZGlmaWNhdGlvbkhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBhdXRv
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgbV9jYW5jZWxsYWJsZSA9IGFk
b3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgbV9wbGF0Zm9ybU1vbml0b3IgPSBhZG9wdEdSZWYoZ19maWxlX21vbml0b3Io
ZmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfTk9ORSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgJmVy
cm9yLm91dFB0cigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCmluZGV4IDkzMmU4M2ZkOTRhLi45MTUwYTc0ZTAxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTQwLDYgKzQw
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisK
IC8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmlu
Z3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5CiAgKiBhcmUgdmFsaWQgZmlsZSBu
YW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMt
aXMgaW4gYSBTdHJpbmcKICAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KQEAgLTQ5Niw0ICs0
OTgsNSBAQCBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIH0KICNl
bmRpZiAvLyBVU0UoRklMRV9MT0NLKQogCi19Cit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCBhZDczNDlkNmYzZC4uMzM1ZDg1ZDFiMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cApAQCAtMzMsMTIgKzMzLDEyIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU3RyaW5n
IGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBDU3Ry
aW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQ
YXRoKTsKICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXpl
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9nZXRf
Y29udGVudHMoZmlsZW5hbWUuZGF0YSgpLCAmY29udGVudHMub3V0UHRyKCksICZzaXplLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQg
Y29udGVudHMgb2YgZmlsZSAlcyAtICVzIiwgZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtICVzIiwgRmlsZVN5c3RlbTo6Zmls
ZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCBjYTYz
M2EyZGE4Zi4uY2I4MGU4MjM2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0zNjUsMTAgKzM2NSwxMCBA
QCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Y29u
dGVudEtleVNlc3Npb24oKQogCiAgICAgICAgIG1fY29udGVudEtleVNlc3Npb24gPSBbZ2V0QVZD
b250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOmdl
dEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCldOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5TmFtZShzdG9yYWdlUGF0
aCk7CisgICAgICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShzdG9yYWdlUGF0aCk7CiAKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHN0b3JhZ2VE
aXJlY3RvcnkpKSB7Ci0gICAgICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdl
RGlyZWN0b3J5KSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN0b3JhZ2VE
aXJlY3RvcnkpKSB7CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhzdG9yYWdlRGlyZWN0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDZhOTg5YTVhMDJkLi4xMDdiMWJkZmY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakM6OnN0b3JhZ2VQYXRoKCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFn
ZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCmluZGV4IGMwOTczZWZjMGQ4Li4zMmQzMDhjMDI2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQpAQCAtOTI3LDEyICs5MjcsMTIgQEAgQVZTdHJlYW1TZXNzaW9uKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN0cmVhbVNlc3Npb24oKQogICAgICAg
ICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgewotICAgICAg
ICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgICAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9y
eSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfQogCi0gICAgICAgIFN0
cmluZyBzdG9yYWdlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0
b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNl
Y3VyZVN0b3AucGxpc3QiKTsKICAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhbYWxs
b2NBVlN0cmVhbVNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJM
OltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXSk7CiAgICAgfQogICAgIHJldHVy
biBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGZkOWE3NTkyMTdkLi4xMmM5MDFmMzhmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEzODgs
NyArMTM4OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1
ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgZ19vYmplY3RfZ2V0KHBs
YXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRlbXAtbG9jYXRpb24iLCAmZG93bmxvYWRG
aWxlLm91dFB0cigpLCBudWxscHRyKTsKICAgICBwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIgPSBu
dWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKCFkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQo
KSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2Fk
RmlsZS5nZXQoKSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVk
aWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQwNSw4ICsxNDA1LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlT2xkRG93bmxvYWRGaWxlcyhjb25zdCBjaGFy
KiBkb3dubG9hZEZpbGUKICAgICBHVW5pcXVlUHRyPGNoYXI+IHRlbXBsYXRlRmlsZShnX3BhdGhf
Z2V0X2Jhc2VuYW1lKGRvd25sb2FkRmlsZVRlbXBsYXRlKSk7CiAgICAgU3RyaW5nIHRlbXBsYXRl
UGF0dGVybiA9IFN0cmluZyh0ZW1wbGF0ZUZpbGUuZ2V0KCkpLnJlcGxhY2UoIlgiLCAiPyIpOwog
Ci0gICAgZm9yIChhdXRvJiBmaWxlUGF0aCA6IGxpc3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdl
dCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGVsZXRlRmls
ZShmaWxlUGF0aCkpKSB7CisgICAgZm9yIChhdXRvJiBmaWxlUGF0aCA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdldCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7CisgICAg
ICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCkpKSB7CiAg
ICAgICAgICAgICBHU1RfV0FSTklORygiQ291bGRuJ3QgdW5saW5rIGxlZ2FjeSBtZWRpYSB0ZW1w
b3JhcnkgZmlsZTogJXMiLCBmaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRElCUGl4ZWxEYXRhLmgKaW5kZXggNjVhZDIyNzg3MDQuLjRjM2U4MDE4ZDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVs
RGF0YS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoSEJJ
VE1BUCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCB3cml0ZVRvRmlsZShMUENXU1RSKTsK
KyAgICB2b2lkIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKExQQ1dTVFIpOwogI2VuZGlmCiAKICAg
ICBVSW50OCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXBCdWZmZXI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE0NWY3NTdjZGY5Li5kM2Rm
OGVlZWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC0x
MzUsNyArMTM1LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqdGVtcG9yYXJ5RGlyZWN0b3J5QXR0
cmlidXRlcygpCiAKIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5T
U3RyaW5nICpmaWxlTmFtZSkKIHsKLSAgICBOU1N0cmluZyAqZG93bmxvYWREaXJlY3RvcnkgPSBj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJRdWlja0xvb2tDb250ZW50Iik7CisgICAgTlNTdHJp
bmcgKmRvd25sb2FkRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAiUXVpY2tMb29rQ29udGVudCIpOwogICAgIGlmICghZG93bmxvYWREaXJlY3RvcnkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggNWNkZjRkODgxYTQuLmIz
NDMxNjhlZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtNTE2LDcgKzUxNiw3IEBAIHN0YXRpYyBO
U1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9y
eShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29yZTo6
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7
CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJhY3Rpb25E
aXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0
b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4IDhmMTQzMTY1ODE4Li42NDBkZmMxMmI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5T
KFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwogCkBAIC00NSwxMCArNDUsMTAgQEAgYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogCiAgICAg
Ly8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0
aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1p
c3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgcmV0dXJuICFybWRpcihGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIH0KIAotdm9pZCBz
ZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit2b2lkIEZpbGVTeXN0ZW06OnNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwog
ICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0
cmluZywgbmlsKSkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgUwog
ICAgIH0pOwogfQogCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK2Jvb2wgRmlsZVN5c3Rl
bTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6
ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIC8vIEl0IGlzIGNy
aXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcg
YnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhj
bHVkZWQocGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7IAorICAgIENTQmFja3Vw
U2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwg
RkFMU0UpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYzg5
YjUyODNlMzkuLjZhNWYxMmU4NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICAsIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkK
ICNlbmRpZgogICAgICwgbV9zaXplKDApCi0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZShpbnZhbGlkRmlsZVRpbWUoKSkKKyAgICAsIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKEZp
bGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKQogewogfQogCkBAIC00Niw3ICs0Niw3IEBAIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwo
KSkKLSAgICAgICAgZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTc5
LDcgKzc5LDcgQEAgZG91YmxlIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKCkKICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlv
bnMgZm9yIGdlbmVyYXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAg
Ly8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUg
aGFuZGxpbmcgLSBGaWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJs
eWluZyBmaWxlcyBjaGFuZ2UuCiAgICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRl
ZCB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlk
RmlsZVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9k
aWZpY2F0aW9ucygpCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBTb21lIHBsYXRmb3JtcyBwcm92
aWRlIGJldHRlciB3YXlzIHRvIGxpc3RlbiBmb3IgZmlsZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMs
IGNvbnNpZGVyIHVzaW5nIHRoZXNlLgotICAgIGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOworICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVt
OjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOwogICAgIGlmICghbWV0YWRh
dGEpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMGYwMTk3NGNhMmIuLjE5N2ViMjky
ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKQEAgLTI4MywxNCArMjgzLDE0IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzCiAKICAgICAgICAgYXV0byBwZXJmb3JtV3JpdGluZyA9IFtibG9ic0ZvcldyaXRpbmcgPSBX
VEZNb3ZlKGJsb2JzRm9yV3JpdGluZyksICZmaWxlUGF0aHNdKCkgewogICAgICAgICAgICAgZm9y
IChhdXRvJiBibG9iIDogYmxvYnNGb3JXcml0aW5nKSB7Ci0gICAgICAgICAgICAgICAgUGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKEFTQ0lJTGl0ZXJhbCgiQmxvYiIpLCBmaWxlKTsKKyAgICAgICAg
ICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
QVNDSUlMaXRlcmFsKCJCbG9iIiksIGZpbGUpOwogCiAgICAgICAgICAgICAgICAgYXV0byBmaWxl
Q2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtmaWxlXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgICAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5k
bGVWYWxpZChmaWxlKSkgeworICAgICAgICAgICAgICAgIGlmICh0ZW1wRmlsZVBhdGguaXNFbXB0
eSgpIHx8ICFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgZm9yIHdyaXRp
bmcgYSBCbG9iIHRvIEluZGV4ZWREQiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjk4LDEzICsyOTgsMTMgQEAgdm9pZCBCbG9iUmVn
aXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iLmZpbGVQ
YXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vj
b25kLmRhdGEoKS0+c2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlVG9G
aWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEo
KS0+ZGF0YSgpKSwgbGVuZ3RoKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgd3JpdGluZyBh
IEJsb2IgdG8gdGVtcG9yYXJ5IGZpbGUgZm9yIHN0b3JhZ2UgaW4gSW5kZXhlZERCIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFwYXJ0LmZpcnN0LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0LCBmaWxl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjphcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUocGFydC5maXJzdCwgZmlsZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVudHMgdG8g
YSBCbG9iIHRlbXBvcmFyeSBmaWxlIGZvciBzdG9yYWdlIGluIEluZGV4ZWREQiAoJXMgdG8gJXMp
IiwgcGFydC5maXJzdC51dGY4KCkuZGF0YSgpLCB0ZW1wRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCBjNTc1ZmRhNDUyYS4uNzI0NDIzZWVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdWludDY0
X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgaWYgKG1f
ZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgcmV0
dXJuIG1fZmlsZUxlbmd0aDsKICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICBp
ZiAoZ2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1l
IDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Rmls
ZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9maWxl
bmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZpbGVTaXplOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5k
RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkK
IHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0
ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUs
IDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGlt
ZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKQEAgLTQwOCw5ICs0MDgsOSBAQCB2b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5l
cmF0ZWRGaWxlc0lmTmVlZGVkKCkKICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUgJiYgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRG
aWxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5p
c0VtcHR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZp
bGUpOwotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoZWxlbWVu
dC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZWxlbWVudC5t
X2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRp
cmVjdG9yeSk7CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKICAgICAg
ICAgICAgIGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOwogICAgICAgICAg
ICAgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwCmluZGV4IDkzODM4MjQ0YTdjLi5hMTQ0ZDM1MjUzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVu
dFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAgICBmb3JtLT5jdXJyZW50RGF0
YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhl
IGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYgcmVxdWlyZWQuCi0gICAgICAgIGlmIChp
c1ZhbGlkRmlsZVRpbWUobmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkp
IHsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShuZXh0SW5wdXQubV9l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICAgICAgdGltZV90IGZpbGVN
b2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShuZXh0SW5wdXQubV9maWxlbmFtZSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpIHx8IGZpbGVNb2Rp
ZmljYXRpb25UaW1lICE9IHN0YXRpY19jYXN0PHRpbWVfdD4obmV4dElucHV0Lm1fZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lKG5leHRJbnB1dC5tX2ZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9u
VGltZSkgfHwgZmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gc3RhdGljX2Nhc3Q8dGltZV90PihuZXh0
SW5wdXQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbmV4
dElucHV0Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gbmV4dElucHV0Lm1fZ2VuZXJhdGVkRmlsZW5h
bWUgOiBuZXh0SW5wdXQubV9maWxlbmFtZTsKLSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9
IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIHBhdGhBc1VSTChwYXRoKS5nZXQoKSk7Cisg
ICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgw
LCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOwogICAgICAgICBpZiAoIWZvcm0t
PmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVu
IHJlbW92ZWQgb3IgYmVjb21lIHVucmVhZGFibGUuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNzksNyArMzc5LDcgQEAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRU
UEJvZHlDRlJlYWRTdHJlYW0oRm9ybURhdGEmIGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwot
ICAgICAgICAgICAgaWYgKGdldEZpbGVTaXplKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUg
PyBlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUgOiBlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVT
aXplKSkKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1f
c2hvdWxkR2VuZXJhdGVGaWxlID8gZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogZWxlbWVu
dC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZSkpCiAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZpbGVT
aXplOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggYzc1
NzVkN2FhODEuLjYyYzExYzEyNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIx
Miw5ICsyMTIsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAg
YXV0byBmc1JlcEZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3Rl
bVBhdGgoKSk7CisgICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICBpZiAoIWZz
UmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gZ2V0Rmls
ZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxl
U3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKICAgICAgICAgICAgIGlmIChmaWxl
RGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0
IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1
ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBlZDU5MDI2NTFiMi4uMDM1YTZiMTkwNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDdXJs
Q2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFu
ZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVuYW1l
KGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZW5hbWUoY2FjaGVEaXIpCi0gICAgLCBtX2Nv
bnRlbnRGaWxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBtX2NvbnRlbnRGaWxl
KEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6
ZSgwKQogICAgICwgbV9leHBpcmVEYXRlKC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2Up
CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmlzTG9hZGluZygpIGNvbnN0
CiAvLyBDYWNoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQog
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6aXNDYWNoZWQoKQogewotICAgIGlmICghZmlsZUV4aXN0cyht
X2NvbnRlbnRGaWxlbmFtZSkgfHwgIWZpbGVFeGlzdHMobV9oZWFkZXJGaWxlbmFtZSkpCisgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY29udGVudEZpbGVuYW1lKSB8fCAhRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhtX2hlYWRlckZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFtX2hlYWRlclBhcnNlZCkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBcHBlbmQKLSAgICB3cml0ZVRv
RmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMTI1LDggKzEyNSw4IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJl
c291cmNlSGFuZGxlKiBqb2IpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhl
YWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUGxhdGZvcm1G
aWxlSGFuZGxlIGhlYWRlckZpbGUgPSBvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9y
V3JpdGUpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoZWFkZXJGaWxlKSkgeworICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAo
IUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGVhZGVyRmlsZSkpIHsKICAgICAgICAgTE9HKE5l
dHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2hl
YWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC0xNDAsMTIgKzE0MCwxMiBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9u
c2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBoZWFk
ZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJc
biIpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0
aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4x
LmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRl
ckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQ
SGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAK
LSAgICBjbG9zZUZpbGUoaGVhZGVyRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhl
YWRlckZpbGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMjcsMTYgKzIyNywxNiBAQCB2
b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1
cmwpCiBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIC8vIE9wZW4gdGhlIGZpbGUK
LSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gb3BlbkZpbGUoZmlsZXBhdGgsIE9w
ZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgeworICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5
c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAi
Q2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgbG9uZyBs
b25nIGZpbGVzaXplID0gLTE7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNp
emUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNp
emUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQg
ZmlsZSBzaXplIG9mICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICBj
bG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0
RmlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI0OSwyNCArMjQ5LDI0
IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBidWZmCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZl
clBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9
IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZy
b21GaWxlKGlucHV0RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJS
ZWFkU2l6ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShp
bnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUp
OwogICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJlYWRTaXplKSB7CiAgICAgICAgICAg
ICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCBmcm9tICVzXG4iLCBm
aWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgY2xvc2VGaWxlKGlucHV0Rmls
ZSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGJ1ZmZlclBvc2l0aW9u
ICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0KLSAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50
RmlsZSgpOwotICAgIGRlbGV0ZUZpbGUobV9oZWFkZXJGaWxlbmFtZSk7Ci0gICAgZGVsZXRlRmls
ZShtX2NvbnRlbnRGaWxlbmFtZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2hlYWRl
ckZpbGVuYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fY29udGVudEZpbGVuYW1l
KTsKICAgICBMT0coTmV0d29yaywgIkNhY2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9iYXNlbmFt
ZS5sYXRpbjEoKS5kYXRhKCkpOwogfQogCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDdXJsQ2Fj
aGVFbnRyeTo6cGFyc2VSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgZG91YmxlIGZpbGVUaW1lOwogICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9u
RGF0ZTsKIAotICAgIGlmIChnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX2hlYWRlckZpbGVuYW1l
LCBmaWxlTW9kaWZpY2F0aW9uRGF0ZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKG1faGVhZGVyRmlsZW5hbWUsIGZpbGVNb2RpZmljYXRpb25EYXRlKSkKICAg
ICAgICAgZmlsZVRpbWUgPSBkaWZmdGltZShmaWxlTW9kaWZpY2F0aW9uRGF0ZSwgMCkgKiAxMDAw
LjA7CiAgICAgZWxzZQogICAgICAgICBmaWxlVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsgLy8gR01U
CkBAIC0zNDIsMTEgKzM0MiwxMSBAQCBzaXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgp
CiAgICAgICAgIGxvbmcgbG9uZyBoZWFkZXJGaWxlU2l6ZTsKICAgICAgICAgbG9uZyBsb25nIGNv
bnRlbnRGaWxlU2l6ZTsKIAotICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5h
bWUsIGhlYWRlckZpbGVTaXplKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVT
aXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkgewogICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIs
IG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBt
X2VudHJ5U2l6ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVu
dEZpbGVuYW1lLCBjb250ZW50RmlsZVNpemUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
Z2V0RmlsZVNpemUobV9jb250ZW50RmlsZW5hbWUsIGNvbnRlbnRGaWxlU2l6ZSkpIHsKICAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXpl
IG9mICVzXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIG1fZW50cnlTaXplOwogICAgICAgICB9CkBAIC0zNjAsMTIgKzM2MCwxMiBAQCBz
aXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6
Om9wZW5Db250ZW50RmlsZSgpCiB7Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQobV9jb250ZW50Rmls
ZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIG1fY29udGVudEZpbGUgPSBvcGVuRmlsZSht
X2NvbnRlbnRGaWxlbmFtZSwgT3BlbkZvcldyaXRlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUobV9jb250ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JX
cml0ZSk7CiAKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKKyAgICBpZiAo
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCiAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9w
ZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwpA
QCAtMzc0LDExICszNzQsMTEgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6b3BlbkNvbnRlbnRGaWxl
KCkKIAogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6Y2xvc2VDb250ZW50RmlsZSgpCiB7Ci0gICAgaWYg
KCFpc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBj
bG9zZUZpbGUobV9jb250ZW50RmlsZSk7Ci0gICAgbV9jb250ZW50RmlsZSA9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fY29udGVudEZpbGUp
OworICAgIG1fY29udGVudEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDkyZDZiYzMzYTRhLi44
MWNiYzcxMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9oZWFkZXJGaWxlbmFtZTsKICAgICBTdHJpbmcgbV9jb250ZW50RmlsZW5hbWU7CiAK
LSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250ZW50RmlsZTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250ZW50RmlsZTsKIAogICAgIHNpemVfdCBtX2VudHJ5U2l6
ZTsKICAgICBkb3VibGUgbV9leHBpcmVEYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDM1YmZl
MmVmMmMyLi40NmUxN2U5ZmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtNzYsOCArNzYsOCBA
QCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFmaWxlRXhpc3Rz
KG1fY2FjaGVEaXIpKSB7Ci0gICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVE
aXIpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVEaXIpKSB7Cisg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXIpKSB7
CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiBv
ciBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5ISBDYWNoZU1hbmFnZXIgZGlzYWJsZWQuXG4iKTsKICAg
ICAgICAgICAgIG1fZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAz
LDE0ICsxMDMsMTQgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIFN0
cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBwZW5k
KCJpbmRleC5kYXQiKTsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBvcGVu
RmlsZShpbmRleEZpbGVQYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGluZGV4RmlsZSkpIHsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhG
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3Bl
bkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUp
KSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgV2FybmluZzogQ291bGQgbm90IG9wZW4g
JXMgZm9yIHJlYWRcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGxvbmcgbG9uZyBmaWxlc2l6ZSA9IC0xOwotICAgIGlmICgh
Z2V0RmlsZVNpemUoaW5kZXhGaWxlUGF0aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShpbmRleEZpbGVQYXRoLCBmaWxlc2l6ZSkpIHsKICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIs
IGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEyNCwxMCArMTI0LDEwIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkK
ICAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkK
ICAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsK
IAotICAgICAgICByZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVy
UG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21G
aWxlKGluZGV4RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFk
U2l6ZSk7CiAgICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0K
LSAgICBjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5k
ZXhGaWxlKTsKIAogICAgIC8vIENyZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCiAgICAgU3RyaW5n
IGhlYWRlckNvbnRlbnQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CkBA
IC0xNjQsOSArMTY0LDkgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAg
IFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBw
ZW5kKCJpbmRleC5kYXQiKTsKIAotICAgIGRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7Ci0gICAg
UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9w
ZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKKyAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUg
RXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc1LDEyICsxNzUsMTIg
QEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGNvbnN0IGF1dG8mIGVu
ZCA9IG1fTFJVRW50cnlMaXN0LmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAg
ICAgY29uc3QgQ1N0cmluZyYgdXJsTGF0aW4xID0gaXQtPmxhdGluMSgpOwotICAgICAgICB3cml0
ZVRvRmlsZShpbmRleEZpbGUsIHVybExhdGluMS5kYXRhKCksIHVybExhdGluMS5sZW5ndGgoKSk7
Ci0gICAgICAgIHdyaXRlVG9GaWxlKGluZGV4RmlsZSwgIlxuIiwgMSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGluZGV4RmlsZSwgdXJsTGF0aW4xLmRhdGEoKSwgdXJsTGF0aW4x
Lmxlbmd0aCgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCAi
XG4iLCAxKTsKICAgICAgICAgKytpdDsKICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaW5kZXhGaWxl
KTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKIH0KIAogdm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZvck5ld0VudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggODUwNDdm
ZGM2Y2UuLmFlMmJmZDY4ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
Q3VybERvd25sb2FkOjpjdXJsRGlkQ29tcGxldGUoKQogCiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9u
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9jdXJsUmVxdWVzdCAmJiAhbV9jdXJsUmVxdWVz
dC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbW92ZUZp
bGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24p
OworICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX2xp
c3RlbmVyKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkRmFp
bFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9kZWxldGVzRmlsZVVwb25GYWlsdXJlICYmIG1fY3VybFJlcXVl
c3QgJiYgIW1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRGaWxlUGF0aCgpLmlzRW1wdHkoKSkK
LSAgICAgICAgZGVsZXRlRmlsZShtX2N1cmxSZXF1ZXN0LT5nZXREb3dubG9hZGVkRmlsZVBhdGgo
KSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCkpOwogCiAgICAgaWYgKG1fbGlzdGVuZXIpCiAgICAgICAgIG1fbGlz
dGVuZXItPmRpZEZhaWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJlZTM0N2Y0NzY1Li45N2NhMzJlYTg1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC00NDgsNyArNDQ4LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBGb3Jt
RGF0YShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgaXNQb3N0UmVxdWVzdCkKICAgICBm
b3IgKGF1dG8gZWxlbWVudCA6IGVsZW1lbnRzKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlw
ZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICBs
b25nIGxvbmcgZmlsZVNpemVSZXN1bHQ7Ci0gICAgICAgICAgICBpZiAoZ2V0RmlsZVNpemUoZWxl
bWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZVJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmIChGaWxl
U3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVTaXplUmVzdWx0KSkg
ewogICAgICAgICAgICAgICAgIGlmIChmaWxlU2l6ZVJlc3VsdCA+IG1heEN1cmxPZmZUKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgc2l6ZSBpcyB0b28gYmlnIGZvciBzcGVjaWZ5aW5n
IGl0IHRvIGNVUkwKICAgICAgICAgICAgICAgICAgICAgY2h1bmtlZFRyYW5zZmVyID0gdHJ1ZTsK
QEAgLTYxOSwyMiArNjE5LDIyIEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChtX2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0eSgpKQotICAg
ICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2Fk
IiwgbV9kb3dubG9hZEZpbGVIYW5kbGUpOworICAgICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2FkIiwgbV9kb3dubG9hZEZp
bGVIYW5kbGUpOwogICAgIH0KIAotICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmls
ZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKG1fZG93bmxv
YWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUoKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7
CiAKLSAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKKyAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2xvc2VGaWxlKG1f
ZG93bmxvYWRGaWxlSGFuZGxlKTsKLSAgICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRG
aWxlSGFuZGxlKTsKKyAgICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBEb3du
bG9hZEZpbGUoKQpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBE
b3dubG9hZEZpbGUoKQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAK
ICAgICBpZiAoIW1fZG93bmxvYWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVsZXRl
RmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fZG93bmxvYWRGaWxlUGF0aCk7CiAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IFN0cmlu
ZygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggMjViMWU5NjczNWUuLmE2N2ZmNzFmNTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApA
QCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX2Rvd25sb2FkTXV0ZXg7CiAg
ICAgYm9vbCBtX2lzRW5hYmxlZERvd25sb2FkVG9GaWxlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9kb3dubG9hZEZpbGVQYXRoOwotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmls
ZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGVIYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiAKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3
b3JrTG9hZE1ldHJpY3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCBlY2RiZjExYTVi
Mi4uMWNmZmUzODNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJp
bmcmIGhvc3QsIGNvbnN0IFN0cmluZyYKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgaWYgKGZpbGVFeGlzdHMoY2VydGlmaWNhdGUpKQorICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGNlcnRpZmljYXRlKSkKICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigp
LnNzbEhhbmRsZSgpLnNldENsaWVudENlcnRpZmljYXRlSW5mbyhob3N0LCBjZXJ0aWZpY2F0ZSwg
a2V5KTsKICAgICBlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSW52YWxpZCBjbGllbnQgY2Vy
dGlmaWNhdGUgZmlsZTogJXMhXG4iLCBjZXJ0aWZpY2F0ZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVhYWQyM2E1YzI2Li5mY2Y1NWQ3NmVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogCiAgICAgbV9y
ZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3JlcGxhY2Vt
ZW50UGF0aC5pc051bGwoKSkgewotICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKKyAgICAgICAgaWYgKGF1
dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyht
X3JlcGxhY2VtZW50UGF0aCkpCiAgICAgICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgp
Lmxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCA2NDU3ODYxNWMx
ZS4uMjI2YWVlOWYwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTQxLDExICs0MSwx
MSBAQCBzdGF0aWMgdWludDY0X3QgYXBwZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJv
ZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBi
bG9iSXRlbS5kYXRhKCkuZGF0YSgpLT5kYXRhKCkgKyBibG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0
ZW0ubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gYmxvYkl0ZW0ubGVuZ3RoKCk7CiAgICAgY2Fz
ZSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZpbGU6IHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRmlsZVRp
bWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1lKGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
dGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRl
bS5maWxlKCktPnBhdGgoKSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICB8fCBm
aWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGJsb2JJdGVtLmZpbGUo
KS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZDVhNzQyNjdjY2MuLjc5NWQ3ZGJjYThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzdHJpbmdJc051bWVyaWMoY29uc3QgY2hhciogc3RyKQogLy8gT2xkIHZlcnNpb25zIG9mIFdl
YktpdCBjcmVhdGVkIHRoaXMgY2FjaGUuCiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJP
bGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSkKIHsKLSAgICBDU3RyaW5n
IGNhY2hlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeSk7Cisg
ICAgQ1N0cmluZyBjYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY2FjaGVEaXJlY3RvcnkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVGaWxlKGdfYnVp
bGRfZmlsZW5hbWUoY2FjaGVQYXRoLmRhdGEoKSwgInNvdXAuY2FjaGUyIiwgbnVsbHB0cikpOwog
ICAgIGlmICghZ19maWxlX3Rlc3QoY2FjaGVGaWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdV
TEFSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZGU5YTRhNmNlZGMuLmM2NzJkNzQxNDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2Ug
RmlsZVN5c3RlbSB7CisKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgaWYgKHBhdGguaXNOdWxsKCkpCkBAIC00NDUsNCArNDQ3LDUgQEAgc3RkOjpvcHRpb25hbDxp
bnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVy
biBmaWxlU3RhdC5zdF9kZXY7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCBhMDAxYWJlOGRjMC4uNTEzMzc1ZDI0NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENTdHJp
bmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIENT
dHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZVBhdGgpOwogICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUuZGF0YSgpLCBPX1JET05MWSk7CiAg
ICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA4NDE5ZDc2Yzhh
NS4uNmIyYWY1NDUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRmlsZVN5c3RlbS5jcHAKQEAgLTQ4LDE5ICs0OCwxOSBAQCBTUUxpdGVGaWxlU3lzdGVtOjpT
UUxpdGVGaWxlU3lzdGVtKCkKIAogaW50IFNRTGl0ZUZpbGVTeXN0ZW06Om9wZW5EYXRhYmFzZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzcWxpdGUzKiogZGF0YWJhc2UsIGJvb2wpCiB7Ci0gICAg
cmV0dXJuIHNxbGl0ZTNfb3Blbl92MihmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CisgICAgcmV0dXJuIHNxbGl0
ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CiB9CiAKIFN0cmluZyBTUUxp
dGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKIH0KIAogYm9vbCBTUUxpdGVG
aWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06
OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNo
ZWNrUGF0aE9ubHkpCkBAIC02OSwxNiArNjksMTYgQEAgYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpl
bnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBjaGUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNoZWNrUGF0aE9ubHkpIHsKLSAgICAg
ICAgU3RyaW5nIGRpciA9IGRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpOworICAgICAgICBTdHJpbmcg
ZGlyID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSk7CiAgICAgICAgIHJldHVy
biBlbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhkaXIpOwogICAgIH0KIAotICAgIHJldHVy
biBmaWxlRXhpc3RzKGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlTmFtZSk7CiB9CiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRh
YmFzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKIH0KIAogYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFz
ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKQEAgLTg3LDEyICs4NywxMiBAQCBib29sIFNR
TGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQogICAgIFN0cmluZyBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUsIEFTQ0lJTGl0
ZXJhbCgiLXNobSIpKTsKIAogICAgIC8vIFRyeSB0byBkZWxldGUgYWxsIHRocmVlIGZpbGVzIHdo
ZXRoZXIgb3Igbm90IHRoZXkgYXJlIHRoZXJlLgotICAgIGRlbGV0ZUZpbGUoZmlsZU5hbWUpOwot
ICAgIGRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOwotICAgIGRlbGV0ZUZpbGUoc2htRmlsZU5hbWUp
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2ht
RmlsZU5hbWUpOwogCiAgICAgLy8gSWYgYW55IG9mIHRoZSB3YWwgb3Igc2htIGZpbGVzIHJlbWFp
biBhZnRlciB0aGUgZGVsZXRlIGF0dGVtcHQsIHRoZSBvdmVyYWxsIGRlbGV0ZSBvcGVyYXRpb24g
ZmFpbGVkLgotICAgIHJldHVybiAhZmlsZUV4aXN0cyhmaWxlTmFtZSkgJiYgIWZpbGVFeGlzdHMo
d2FsRmlsZU5hbWUpICYmICFmaWxlRXhpc3RzKHNobUZpbGVOYW1lKTsKKyAgICByZXR1cm4gIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZU5hbWUpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHdhbEZpbGVOYW1lKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSk7CiB9
CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDUsMTkgKzEwNSwxOSBAQCBib29sIFNRTGl0ZUZp
bGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKQogbG9uZyBs
b25nIFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKIHsgICAgICAgIAogICAgIGxvbmcgbG9uZyBzaXplOwotICAgIHJldHVybiBnZXRG
aWxlU2l6ZShmaWxlTmFtZSwgc2l6ZSkgPyBzaXplIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNpemUpID8gc2l6ZSA6IDA7CiB9CiAKIGRvdWJsZSBT
UUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlQ3JlYXRpb25UaW1l
KGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRG
aWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOwogfQogCiBkb3VibGUg
U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4
IDc2ZjkyNGVhYmIyLi5jOTA4NjkzMDE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgLy8gRGljdGlvbmFyeSBmaWxl
cyBhbHdheXMgaGF2ZSB0aGUgZm9ybSAiaHlwaF88bG9jYWxlIG5hbWU+LmRpYyIKICAgICAvLyBz
byB3ZSBzdHJpcCBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgbG9jYWxlLgotICAgIFN0cmluZyBmaWxl
TmFtZSA9IHBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKTsKICAgICBzdGF0aWMgY29uc3Qg
aW50IHByZWZpeExlbmd0aCA9IDU7CiAgICAgc3RhdGljIGNvbnN0IGludCBzdWZmaXhMZW5ndGgg
PSA0OwogICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBmaWxlTmFt
ZS5sZW5ndGgoKSAtIHByZWZpeExlbmd0aCAtIHN1ZmZpeExlbmd0aCk7CkBAIC02MSwxNCArNjEs
MTQgQEAgc3RhdGljIFN0cmluZyBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlUGF0aChj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogCiBzdGF0aWMgdm9pZCBzY2FuRGlyZWN0b3J5Rm9yRGlj
dGlvbmFyaWVzKGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgsIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBm
aWxlUGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgImh5cGhfKi5kaWMiKSkgewor
ICAgIGZvciAoYXV0byYgZmlsZVBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVj
dG9yeVBhdGgsICJoeXBoXyouZGljIikpIHsKICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGV4dHJh
Y3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVQYXRoKGZpbGVQYXRoKS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwogCiAgICAgICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAg
ICAgICBpZiAoIXJlYWxwYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCkuZGF0
YSgpLCBub3JtYWxpemVkUGF0aCkpCisgICAgICAgIGlmICghcmVhbHBhdGgoRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGZpbGVQYXRoID0gc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3JtYWxpemVkUGF0aCk7CisgICAgICAgIGZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3Jt
YWxpemVkUGF0aCk7CiAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSwgVmVjdG9y
PFN0cmluZz4oKSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmaWxlUGF0aCk7CiAKICAgICAgICAg
U3RyaW5nIGxvY2FsZVJlcGxhY2luZ1VuZGVyc2NvcmVzID0gU3RyaW5nKGxvY2FsZSk7CkBAIC0y
MjQsNyArMjI0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZGljdGlvbmFyeVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRp
Y3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5h
dGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggZjBjMzUw
Mjk4NjQuLmJkYWU0YmZjMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCiBzdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNv
bmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwogCiBzdGF0aWMgYm9vbCBnZXRG
aW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCkBAIC01NDMs
NCArNTQ1LDUgQEAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
Q1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdWb2x1bWVTZXJp
YWxOdW1iZXI7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmlu
ZGV4IDM3MDFjZGQ4YTAzLi4zYzZmNTZlMTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yMDA5LDcgKzIwMDksNyBAQCBTdHJpbmcgUmVuZGVy
VGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwg
Y29uc3QgRm9udAogCiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBpZiAoZmlsZUxpc3QtPmxlbmd0
aCgpKQotICAgICAgICBzdHJpbmcgPSBwYXRoR2V0RmlsZU5hbWUoZmlsZUxpc3QtPml0ZW0oMCkt
PnBhdGgoKSk7CisgICAgICAgIHN0cmluZyA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShm
aWxlTGlzdC0+aXRlbSgwKS0+cGF0aCgpKTsKICAgICBlbHNlIGlmIChtdWx0aXBsZUZpbGVzQWxs
b3dlZCkKICAgICAgICAgc3RyaW5nID0gZmlsZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7
CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAK
aW5kZXggYWEzNzBjMzNmYTMuLmU1MWEyNGUyOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIENvbG9yIFJlbmRl
clRoZW1lV2luOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0CiAjaWYg
RU5BQkxFKFZJREVPKQogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVhc29uYWJsZUJ1ZmZl
clNpemUgPSAzMjc2ODsKIAotc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8Y2hh
cj4mIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxlc2l6ZSwgVmVj
dG9yPGNoYXI+JiBidWZmZXIpCiB7CiAgICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8g
YnVmZmVyCiAgICAgYnVmZmVyLnJlc2l6ZShmaWxlc2l6ZSArIDEpOwpAQCAtMTAzNiw3ICsxMDM2
LDcgQEAgc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGUKICAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVm
ZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKICAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXpl
ID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKIAotICAgICAgICBieXRlc1JlYWQgPSByZWFk
RnJvbUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFk
U2l6ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxl
LCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKICAgICAg
ICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewogICAgICAgICAgICAgYnVmZmVy
LmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDU4LDE5ICsxMDU4LDE5IEBAIFN0
cmluZyBSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKENGU3RyaW5nUmVm
IG5hbWUsIENGU3RyaW5nUmVmIHR5CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihyZXF1ZXN0ZWRVUkxSZWYuZ2V0KCksIGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0aCwg
TUFYX1BBVEgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBQbGF0Zm9ybUZpbGVI
YW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IG9wZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBP
cGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUp
KQorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9w
ZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVk
RmlsZUhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGxvbmcgbG9uZyBm
aWxlc2l6ZSA9IC0xOwotICAgIGlmICghZ2V0RmlsZVNpemUocmVxdWVzdGVkRmlsZUhhbmRsZSwg
ZmlsZXNpemUpKSB7Ci0gICAgICAgIGNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5kbGUsIGZpbGVz
aXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRs
ZSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4g
ZmlsZUNvbnRlbnRzOwogICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUocmVxdWVzdGVk
RmlsZUhhbmRsZSwgZmlsZXNpemUsIGZpbGVDb250ZW50cyk7Ci0gICAgY2xvc2VGaWxlKHJlcXVl
c3RlZEZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxl
SGFuZGxlKTsKIAogICAgIHJldHVybiBTdHJpbmcoZmlsZUNvbnRlbnRzLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihmaWxlc2l6ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNjdiMDU5N2UxMy4uZmNl
MDNmZmNlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTctMTAtMzEgIENocmlzdG9w
aGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0
ZW0gbmFtZXNwYWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93
bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9i
RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0
aWNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJl
TWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5N
b2R1bGVVbml4LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJj
aFBhdGguY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0NoaWxkUHJv
Y2Vzc0lPUy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICogU2hh
cmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwOgorICAgICAgICAqIFN0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZp
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NQb29sR3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9Jbmpl
Y3RlZEJ1bmRsZUdsaWIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisKIDIwMTct
MTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKaW5k
ZXggYzZmZjE1YTNiYjguLjY1NDg2MGQ0N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAK
QEAgLTU2LDE2ICs1NiwxNiBAQCB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93
bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUAogewogICAgIEFTU0VS
VCghZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoZmlsZUV4aXN0cyhkZXN0
aW5hdGlvblBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRp
b25QYXRoKSkgewogICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgICAgICBk
aWRGYWlsKG51bGxwdHIsIGNhbmNlbGxlZEVycm9yKG1fZG93bmxvYWQucmVxdWVzdCgpKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlRmlsZShkZXN0aW5h
dGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRlc3RpbmF0aW9uUGF0
aCk7CiAgICAgfQogCiAgICAgbV9kZXN0aW5hdGlvblBhdGggPSBkZXN0aW5hdGlvblBhdGg7Ci0g
ICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBvcGVuRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCwgT3BlbkZv
cldyaXRlKTsKKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
ZGVzdGluYXRpb25QYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIG1fZG93bmxv
YWQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwogCiAgICAgbV9kb3du
bG9hZC5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwpAQCAtNzMsMzAgKzczLDMwIEBAIHZv
aWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25QCiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCkKIHsKLSAgICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rlc3RpbmF0
aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2Rvd25sb2Fk
LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRD
bGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKQogewotICAgIGNsb3NlRmls
ZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGlu
YXRpb25GaWxlKTsKICAgICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgpOwogfQogCiB2b2lkIEJsb2JE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKCkKIHsKLSAgICBjbG9zZUZpbGUobV9kZXN0aW5hdGlv
bkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CiAg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0ZUZpbGUo
bV9kZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZGVz
dGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVy
ZW5jZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBjbG9zZUZpbGUobV9k
ZXN0aW5hdGlvbkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9u
RmlsZSk7CiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkRmFpbChlcnJvciwg
SVBDOjpEYXRhUmVmZXJlbmNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAppbmRleCA0YTQy
Y2MyY2E3Ny4uZjk0MDYxMWIzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCkBAIC01Myw3ICs1
Myw3IEBAIHByaXZhdGU6CiAKICAgICBEb3dubG9hZCYgbV9kb3dubG9hZDsKICAgICBTdHJpbmcg
bV9kZXN0aW5hdGlvblBhdGg7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVz
dGluYXRpb25GaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rlc3RpbmF0aW9uRmls
ZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCmluZGV4IDc4ZTVhNDE2NWJjLi42ZGE1M2YzZTFiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBA
IC00MTIsNyArNDEyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogICAgIG1fdG90YWxSZW1haW5pbmdTaXpl
IC09IGJ5dGVzUmVhZDsKIAogICAgIGlmIChieXRlc1JlYWQpIHsKLSAgICAgICAgaWYgKG1fZG93
bmxvYWRGaWxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgaWYgKG1f
ZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsK
ICAgICAgICAgICAgIGlmICghd3JpdGVEb3dubG9hZChkYXRhLCBieXRlc1JlYWQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ0OCw4ICs0NDgsOCBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbgogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAg
ICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCi0gICAgaWYgKGFsbG93T3Zlcndy
aXRlICYmIGZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CisgICAgaWYgKGFsbG93T3Zlcndy
aXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikp
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlv
bik7CiB9CiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgp
IGNvbnN0CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3du
bG9hZCgpCiAKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Js
b2I6OmRvd25sb2FkIHRvICVzIiwgdGhpcywgbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4
KCkuZGF0YSgpKTsKIAotICAgIG1fZG93bmxvYWRGaWxlID0gb3BlbkZpbGUobV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbiwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmlsZVN5c3RlbTo6T3Bl
bkZvcldyaXRlKTsKKyAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVk
RXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OCw3
ICs0ODgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIGJvb2wgTmV0
d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0
ZXNSZWFkKQogewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGludCBieXRlc1dyaXR0
ZW4gPSB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBp
bnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUs
IGRhdGEsIGJ5dGVzUmVhZCk7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAg
ICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTAzLDExICs1MDMsMTEgQEAgYm9vbCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAK
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBp
ZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewotICAgICAg
ICBjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAgICAgICBtX2Rvd25sb2FkRmlsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlKTsKKyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIH0KLSAgICBkZWxldGVGaWxl
KG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZGlkRmFpbERvd25sb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNTM2LDgg
KzUzNiw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQoKQog
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmlu
aXNoRG93bmxvYWQiLCB0aGlzKTsKIAogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGNs
b3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7Ci0gICAgbV9kb3dubG9hZEZpbGUgPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmls
ZSk7CisgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwogCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBtX3NhbmRi
b3hFeHRlbnNpb24tPnJldm9rZSgpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZGlkRmFpbChFcnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlkRmluaXNoKCkKIHsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIGRpZEZpbmlzaERvd25s
b2FkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IDUxOTM1OTQ0OTU1Li45MjY2
ZWRlYzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQgeyAw
IH07CiAgICAgYm9vbCBtX2ZpbGVPcGVuZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1f
c2FuZGJveEV4dGVuc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggMmZkOGVmZjEzNTEuLjZlNWNkZjc2Zjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjAxLDcg
KzYwMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgY20p
CiAgICAgdW5zaWduZWQgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3Qg
dXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAwOwogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IDA7
Ci0gICAgaWYgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9y
eSwgZGlza0ZyZWVTaXplKSkgeworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRWb2x1
bWVGcmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAg
ICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2Fz
ZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0
bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICog
MTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBmODE3MzYyZGFlNS4uNjc5NDkzNTAzOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVz
Um9vdFBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBLZXkga2V5KG9yaWdpbiwgeyB9LCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25I
YXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkp
OwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjA1LDkgKzIwNSw5IEBAIHZvaWQgRW5naW5l
Ojppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2Fs
bGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2FsdFBhdGggPSBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlMaXRlcmFs
KCJzYWx0IikpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7
CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUo
c2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9y
aWVzKG1fcm9vdFBhdGgpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIHNhbHQgPSByZWFk
T3JNYWtlU2FsdChzYWx0UGF0aCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXNhbHQpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhFcnJvcjo6V3JpdGVEaXNrKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmVt
b3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgp
IG11dGFibGUgewotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9
CiAKQEAgLTM4Miw4ICszODIsOCBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hv
dWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAog
ICAgIGF1dG8gdGFza0NvdW50ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdl
YkNvcmU6Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAoIVdl
YkNvcmU6OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlm
ICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9y
eShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCld
IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11
dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQxNSw4
ICs0MTUsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dyZWdhdG9y
JiB0YXNrSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbcGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIHRhc2tIYW5kbGVyID0gbWFrZVJl
Zih0YXNrSGFuZGxlcildIHsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6
Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OmZp
bGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
czo6Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAgICBpZiAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRl
RGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggYzhlZjZmMDdhMTAuLmU4NDMxNWUzZmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC00MiwxOCArNDIsMTggQEAgbmFtZXNw
YWNlIENhY2hlU3RvcmFnZSB7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgi
Y2FjaGVzbGlzdCIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNhY2hlc2xpc3Qi
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc09yaWdpbkZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7CiB9CiAKIHZvaWQgQ2Fj
aGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRo
LCBXb3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHF1ZXVlLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBmb2xkZXJQYXRoID0gZm9sZGVyUGF0aC5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RG
aWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RGaWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CkBAIC0zMzMsNyArMzMz
LDcgQEAgdm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICB9CiAKICAgICBhdXRvIGZpbGVuYW1l
ID0gY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOwotICAgIGlmICghV2ViQ29yZTo6Zmls
ZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCA1NzA0Zjg1Njc0NC4uMTk1YzIzZjVh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBDYWNoZTo6Q2FjaGUoUmVmPFN0b3JhZ2U+
JiYgc3RvcmFnZSwgT3B0aW9uU2V0PE9wdGlvbj4gb3B0aW9ucykKICNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAgICAgLy8gVHJpZ2dlcnMgd2l0aCAidG91Y2ggJGNhY2hlUGF0aC9kdW1w
Ii4KLSAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+
YmFzZVBhdGgoKSwgImR1bXAiKSk7CisgICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRoKCksICJk
dW1wIikpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkdW1wRmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKGR1bXBGaWxlUGF0aC5kYXRhKCkpKTsKICAgICAgICAgR0ZpbGVNb25p
dG9yKiBtb25pdG9yID0gZ19maWxlX21vbml0b3JfZmlsZShkdW1wRmlsZS5nZXQoKSwgR19GSUxF
X01PTklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChtb25pdG9yLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZHVtcEZpbGVDaGFuZ2Vk
KSwgdGhpcyk7CkBAIC01MzcsMTYgKzUzNywxNiBAQCB2b2lkIENhY2hlOjp0cmF2ZXJzZShGdW5j
dGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKIAog
U3RyaW5nIENhY2hlOjpkdW1wRmlsZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9uUGF0aCgpLCAiZHVt
cC5qc29uIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsKIH0KIAog
dm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKIHsKLSAgICBhdXRvIGZkID0gV2ViQ29y
ZTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAg
aWYgKCFXZWJDb3JlOjppc0hhbmRsZVZhbGlkKGZkKSkKKyAgICBhdXRvIGZkID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06
Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGZkKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gcHJvbG9ndWUgPSBTdHJpbmcoIntc
blwiZW50cmllc1wiOiBbXG4iKS51dGY4KCk7Ci0gICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQs
IHByb2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOworICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZkLCBwcm9sb2d1ZS5kYXRhKCksIHByb2xvZ3VlLmxlbmd0aCgp
KTsKIAogICAgIHN0cnVjdCBUb3RhbHMgewogICAgICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsK
QEAgLTU3NSw4ICs1NzUsOCBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAg
ICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXG4iKTsKICAgICAgICAgICAgIGVwaWxv
Z3VlLmFwcGVuZExpdGVyYWwoIn1cbn1cbiIpOwogICAgICAgICAgICAgYXV0byB3cml0ZURhdGEg
PSBlcGlsb2d1ZS50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OndyaXRl
VG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwotICAgICAg
ICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZkKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3Ro
KCkpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZkKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGVudHJ5ID0gRW50cnk6
OmRlY29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7CkBAIC01OTAsMTQgKzU5MCwxNCBAQCB2b2lk
IENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgICAgICBlbnRyeS0+YXNKU09OKGpzb24s
IGluZm8pOwogICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICBhdXRv
IHdyaXRlRGF0YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIFdlYkNvcmU6Ondy
aXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOworICAg
ICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEo
KSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBDYWNoZTo6ZGVsZXRl
RHVtcEZpbGUoKQogewogICAgIFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNh
Y2hlLmRlbGV0ZSIpLT5kaXNwYXRjaChbcGF0aCA9IGR1bXBGaWxlUGF0aCgpLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCk7CisgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggZjZiMzY0ZmE5ZWQuLjE2MzVmMjNjZTZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUJsb2JTdG9yYWdlLmNwcApAQCAtNTMsMTUgKzUzLDE1IEBAIHZvaWQgQmxvYlN0b3Jh
Z2U6OnN5bmNocm9uaXplKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBh
dGgoKSk7CiAKICAgICBtX2FwcHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0
b3J5ID0gYmxvYkRpcmVjdG9yeVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGly
ZWN0b3J5LCBbdGhpcywgJmJsb2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0
b3J5RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlU
eXBlOjpGaWxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAg
ICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisgICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
ICAgICAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEo
KSwgJnN0YXQpOwogICAgICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJs
b2JTdG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25z
dAogewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAg
IHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBh
dGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRo
KCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpC
bG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRh
KQpAQCAtODgsOCArODgsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGgg
PSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gp
KTsKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOworICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0g
YWNjZXNzKGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMTksNyArMTE5LDcgQEAg
QmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0g
V2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1Bh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAgICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJu
IHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5s
aW5rKGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB1bnNpZ25lZCBC
bG9iU3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0
IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA4YWM3OTdmNzhhMC4uN2JiNjQ5
MmE2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBTYWx0IG1h
a2VTYWx0KCkKIAogc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJp
bmcmIHBhdGgpCiB7Ci0gICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGNwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRh
dGEoKSwgT19SRE9OTFksIDApOwogICAgIFNhbHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9
IHJlYWQoZmQsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcAppbmRleCA4MmQ3MzU1MTg5Ni4uZWU2ZDE0ZTU3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lz
dGVtLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVj
dG9yeUVudHJ5VHlwZSh1aW50OF90IGR0eXBlKQogCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGly
ZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewotICAgIERJUiogZGlyID0gb3BlbmRpcihX
ZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBESVIq
IGRpciA9IG9wZW5kaXIoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
aXJlbnQqIGRwOwpAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiB2
b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGly
ZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKKyAgICAgICAgU3RyaW5n
IGVudHJ5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRGly
ZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50
cnlUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShlbnRyeVBhdGgpOwpAQCAtOTUsMTkgKzk1LDE5IEBAIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9s
bG93IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAgfSk7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkocGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkocGF0aCk7CiB9CiAKIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCiAgICAgc3RydWN0IHN0YXQgZmlsZUlu
Zm87Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICBpZiAoc3RhdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZy
b21fdGltZV90KGZpbGVJbmZvLnN0X2JpcnRodGltZSksIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OmZyb21fdGltZV90KGZpbGVJbmZvLnN0X210aW1lKSB9OwogI2VsaWYgVVNFKFNPVVApCiAg
ICAgLy8gVGhlcmUncyBubyBzdF9iaXJ0aHRpbWUgaW4gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBs
aWtlIExpbnV4LCBzbyB3ZSB1c2UgeGF0dHJzIHRvIHNldC9nZXQgdGhlIGNyZWF0aW9uIHRpbWUu
Ci0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBH
UmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwog
ICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlf
aW5mbyhmaWxlLmdldCgpLCAieGF0dHI6OmJpcnRodGltZSx0aW1lOjptb2RpZmllZCIsIEdfRklM
RV9RVUVSWV9JTkZPX05PTkUsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZv
KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgdXBkYXRlRmls
ZU1vZGlmaWNhdGlvblRpbWVJZk5lZWRlZChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIC8vIFRoaXMgcmVhbGx5IHVwZGF0ZXMgYm90aCB0aGUgYWNj
ZXNzIHRpbWUgYW5kIHRoZSBtb2RpZmljYXRpb24gdGltZS4KLSAgICB1dGltZXMoV2ViQ29yZTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgdXRp
bWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCksIG51bGxwdHIpOwogfQogCiBib29sIGNhblVzZVNoYXJlZE1lbW9yeUZvclBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKQpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgY2FuVXNlU2hhcmVkTWVt
b3J5Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgYXR0cmxpc3QgYXR0ckxpc3QgPSB7
IH07CiAgICAgYXR0ckxpc3QuYml0bWFwY291bnQgPSBBVFRSX0JJVF9NQVBfQ09VTlQ7CiAgICAg
YXR0ckxpc3QuY29tbW9uYXR0ciA9IEFUVFJfQ01OX0RBVEFfUFJPVEVDVF9GTEFHUzsKLSAgICBp
bnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0dHJCdWZm
ZXIpLCBGU09QVF9OT0ZPTExPVyk7CisgICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
ICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xM
T1cpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiVW5hYmxlIHRvIGdldCBjYWNoZSBkaXJlY3RvcnkgcHJvdGVjdGlvbiBjbGFzcywgZGlzYWJs
aW5nIHVzZSBvZiBzaGFyZWQgbWFwcGVkIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCBlZmQ3Nzk5ZGEyZi4uNzZiMTRl
MzM0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEsNyBA
QCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUp
CiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRv
IHBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAg
IGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAgIGJvb2wg
dXNlTG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAK
aW5kZXggMDE2MTIwODBjNzkuLjRjZTc3NjJiOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
U291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwg
bV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChwYXRoLmRhdGEoKSkpOwogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpDcmVhdGU6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCmluZGV4IDY5MzM0MTdmZDhjLi5iNGY2MjYyZGM0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0
aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBh
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0cmluZyBkYXRhYmFz
ZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0
aXN0aWNzRGF0YWJhc2VOYW1lKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGlj
c0RhdGFiYXNlTmFtZSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlzdGljcz4o
Y2FjaGUsIGRhdGFiYXNlUGF0aCk7CiB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTdGF0aXN0
aWNzOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogICAgIHNlcmlhbEJh
Y2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNl
UGF0aC5pc29sYXRlZENvcHkoKSwgbmV0d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1Bh
dGgoKSwgc3RhcnRUaW1lXSB7CiAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgICAgICBpZiAoIVdl
YkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNl
UGF0aCkpKQorICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29y
a1Byb2Nlc3MpIE9wZW5pbmcgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVz
Li4uIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggZTRhZGIxOWJjOGMuLjAzZTMwOTI5MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTEz
NiwyOSArMTM2LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJpbmcgbWFrZVZlcnNpb25lZERpcmVj
dG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKICAgICBTdHJpbmcg
dmVyc2lvblN1YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3RvcnlQcmVmaXggKyBTdHJpbmc6Om51
bWJlcihTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJh
c2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIFN0cmlu
ZyBtYWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0
aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VW
ZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9y
eU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBy
ZWNvcmRzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3Rv
cnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0
aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVk
RGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9
CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVNhbHRGaWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJl
Y3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0Rmls
ZU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBz
YWx0RmlsZU5hbWUpOwogfQogCiBSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBT
dHJpbmcmIGNhY2hlUGF0aCwgTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBpZiAoIVdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lv
bmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBh
dGgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFr
ZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0x
NzEsMTMgKzE3MSwxMyBAQCB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYg
cmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGly
ZWN0b3J5KHJlY29yZHNQYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJl
Y3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGly
ZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IFN0cmluZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jk
c1BhdGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRp
b25QYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUg
ZW50cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5
VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlm
ICghZXhwZWN0ZWRUeXBlLmlzRW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0
b3J5UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRo
LCBhY3R1YWxUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBh
dGgsIGFjdHVhbFR5cGUpOwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGly
ZWN0b3J5UGF0aCwgWyZmdW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBl
XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZp
bGUgfHwgZmlsZU5hbWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk3LDE4ICsxOTcsMTggQEAgc3RhdGljIHZvaWQg
ZGVsZXRlRW1wdHlSZWNvcmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xk
ZXJzLgotICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmlu
ZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJl
Y3RvcnkocGFydGl0aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRp
ck5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChl
bnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQg
aXMgcmVhbGx5IGVtcHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRp
ck5hbWUpKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0
aXRpb25QYXRoLCBzdWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0
ZSBbUGFydGl0aW9uXSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQg
aWYgaXQgaXMgcmVhbGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVj
dG9yeShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRp
dGlvbk5hbWUpKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3NiwxNyArMjc2LDE3
IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgICAgICB1bnNpZ25lZCBjb3VudCA9
IDA7CiAgICAgICAgIFN0cmluZyBhbnlUeXBlOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxl
cyhyZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBbJnJlY29yZEZpbHRlciwgJmJsb2JGaWx0ZXIsICZy
ZWNvcmRzU2l6ZSwgJmNvdW50XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmlu
ZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsK
IAogICAgICAgICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6
OnN0cmluZ1RvSGFzaChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsK
ICAgICAgICAgICAgIGlmICghZmlsZVNpemUpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKQEAgLTM1MiwxMiArMzUyLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJs
b2IoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5
UGF0aEZvcktleShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBl
KCkuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXku
cGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9u
SGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29y
ZFBhdGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSks
IGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtl
eS5oYXNoQXNTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQ
YXRoKGNvbnN0IFN0cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0
b3JhZ2U6OmRlbGV0ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5
KGtleSkpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZv
cktleShrZXkpKTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkp
KTsKIH0KIApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9w
ZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAg
ICAgIGF1dG8gcmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3
cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVj
b3JkUGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJD
b3JlOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7
CiAKICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtODYzLDcgKzg2
Myw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBUcmF2ZXJz
ZUZsYWdzIGZsYWdzLCBUcmF2ZXJzZUhhbmRsZXImCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZp
bGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFt
ZSk7CiAKICAgICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYgKHRy
YXZlcnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBAIC05
NTIsMTMgKzk1MiwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtbwogICAgIGlvUXVldWUoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNp
bmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
dHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJl
Y29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRz
RmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAg
ICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRE
aXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRp
bWUgPiBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKSkgewogICAg
ICAgICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAg
ICAgICAgIGlmICh0aW1lcy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29y
ZTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1w
dHlSZWNvcmRzRGlyZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAg
dm9pZCBTdG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAg
ICAgICAgICAgYXV0byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRo
KTsKIAogICAgICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAg
LTEwNTAsNyArMTA1MCw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtD
b3VudD0lZCBzaG91bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNo
b3VsZERlbGV0ZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAg
ICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAg
ICAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVy
c2lvbnMoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBh
dXRvIG9sZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNh
Y2hlUGF0aCwgc3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwg
c3ViZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJz
aW9uUGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkob2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCAzMTMxYzBmMWM0NC4uZTJkNDFlZTc4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
CkBAIC03MywxNSArNzMsMTUgQEAgdm9pZCBNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgcmVjb3JkUmVwbGF5TW9kZSwgY29uc3QgU3RyaW5nJiByZWNvcmRSZXAKICAgICAgICAgbV9y
ZWNvcmRSZXBsYXlNb2RlID0gRGlzYWJsZWQ7CiAgICAgfQogCi0gICAgbV9yZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZFJl
cGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKKyAgICBtX3JlY29yZFJl
cGxheUNhY2hlTG9jYXRpb24gPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZWNvcmRSZXBsYXkp
OwogICAgIERFQlVHX0xPRygiQ2FjaGUgbG9jYXRpb24gPSAiIFNUUklOR19TUEVDSUZJRVIsIERF
QlVHX1NUUihtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24pKTsKIAogICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5k
bGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBt
X3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgo
KSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICB9IGVsc2UgaWYgKGlz
UmVwbGF5aW5nKCkpIHsKLSAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6Rmls
ZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKTsKLSAgICAg
ICAgbV9sb2FkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgo
KSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxlID0g
V2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JX
cml0ZSk7CisgICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUo
cmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7Cisg
ICAgICAgIG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQ
YXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVw
bGF5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgICAgICBsb2FkUmVzb3VyY2Vz
KCk7CiAgICAgfQogfQpAQCAtMzY1LDE3ICszNjUsMTcgQEAgdm9pZCBNYW5hZ2VyOjpsb2FkUmVz
b3VyY2VzKCkKIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydExvYWRQYXRoKCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVM
b2NhdGlvbiwga0ZpbGVOYW1lUmVwb3J0TG9hZCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRp
b24sIGtGaWxlTmFtZVJlcG9ydExvYWQpOwogfQogCiBTdHJpbmcgTWFuYWdlcjo6cmVwb3J0UmVj
b3JkUGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7CiB9CiAK
IFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRSZXBsYXlQYXRoKCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwg
a0ZpbGVOYW1lUmVwb3J0UmVwbGF5KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Zp
bGVOYW1lUmVwb3J0UmVwbGF5KTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcXVlc3RUb1BhdGgo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNDExLDkgKzQxMSw5
IEBAIFN0cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNvbnN0IFN0cmluZyYgaGFzaCkKICAgICBm
aWxlTmFtZS5hcHBlbmQoaGFzaFRhaWwpOwogICAgIGZpbGVOYW1lLmFwcGVuZExpdGVyYWwoIi5k
YXRhIik7CiAKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlc291cmNlcyk7Ci0gICAg
cGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7
Ci0gICAgcGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxl
TmFtZS50b1N0cmluZygpKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGly
TmFtZVJlc291cmNlcyk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZS50b1N0cmlu
ZygpKTsKIAogICAgIHJldHVybiBwYXRoOwogfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgTWFu
YWdlcjo6bG9nUGxheWVkQmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYm9vCiAgICAgbV9yZXBsYXlGaWxlSGFuZGxlLnByaW50ZigiJXMgJXNcbiIs
IHdhc0NhY2hlTWlzcyA/ICJtaXNzIiA6ICJoaXQgIiwgREVCVUdfU1RSKHVybC5zdHJpbmcoKSkp
OwogfQogCi1XZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlIG1vZGUpCitXZWJDb3JlOjpG
aWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiB7CiAgICAgLy8gSWYgd2Ug
Y2FuIHRyaXZpYWxseSBvcGVuIHRoZSBmaWxlLCB0aGVuIGRvIHRoYXQgYW5kIHJldHVybiB0aGUg
bmV3IGZpbGUKICAgICAvLyBoYW5kbGUuCkBAIC00NjQsOSArNDY0LDkgQEAgV2ViQ29yZTo6Rmls
ZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdl
YkNvcmU6OkZpbGUKICAgICAvLyBJZiB3ZSdyZSBvcGVuaW5nIHRoZSBmaWxlIGZvciB3cml0aW5n
IChpbmNsdWRpbmcgYXBwZW5kaW5nKSwgdGhlbiB0cnkKICAgICAvLyBhZ2FpbiBhZnRlciBtYWtp
bmcgc3VyZSBhbGwgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiBjcmVhdGVkLgog
Ci0gICAgaWYgKG1vZGUgIT0gV2ViQ29yZTo6T3BlbkZvclJlYWQpIHsKLSAgICAgICAgY29uc3Qg
YXV0byYgcGFyZW50RGlyID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShmaWxlUGF0aCk7Ci0gICAg
ICAgIGlmICghV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERpcikpIHsKKyAgICBp
ZiAobW9kZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkgeworICAgICAgICBj
b25zdCBhdXRvJiBwYXJlbnREaXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KGZpbGVQYXRoKTsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMocGFyZW50RGlyKSkgewogICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJv
ciAlZCB0cnlpbmcgdG8gY3JlYXRlIGludGVybWVkaWF0ZSBkaXJlY3RvcmllczogIiBTVFJJTkdf
U1BFQ0lGSUVSLCBlcnJubywgREVCVUdfU1RSKHBhcmVudERpcikpOwogICAgICAgICAgICAgcmV0
dXJuIGZpbGVIYW5kbGU7CiAgICAgICAgIH0KQEAgLTQ3OSw3ICs0NzksNyBAQCBXZWJDb3JlOjpG
aWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
V2ViQ29yZTo6RmlsZQogICAgIC8vIENvdWxkIG5vdCBvcGVuIHRoZSBmaWxlLiBMb2cgdGhlIGVy
cm9yIGFuZCBsZWF2ZSwgcmV0dXJuaW5nIHRoZSBpbnZhbGlkCiAgICAgLy8gZmlsZSBoYW5kbGUu
CiAKLSAgICBpZiAobW9kZSA9PSBXZWJDb3JlOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkKICAgICAgICAgREVCVUdfTE9HX0VS
Uk9SKCJFcnJvciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3IgcmVh
ZGluZyIsIGVycm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKICAgICBlbHNlCiAgICAgICAgIERF
QlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVS
ICIgZm9yIHdyaXRpbmciLCBlcnJubywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CkBAIC00OTAsNyAr
NDkwLDcgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGUKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZl
Y3RvcjxTdHJpbmc+Pj4gTWFuYWdlcjo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
IHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBXZWJDb3JlOjpNYXBwZWRGaWxlRGF0
YSBmaWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSBmaWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAppbmRl
eCBlYjJhY2M0OGRjYS4uNTBlZDVlMjNkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nTG9hZGVkUmVzb3VyY2UoUmVzb3Vy
Y2UmKTsKICAgICB2b2lkIGxvZ1BsYXllZEJhY2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIHdhc0NhY2hlTWlzcyk7CiAKLSAgICBXZWJDb3JlOjpGaWxlSGFu
ZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlKTsK
KyAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKIAogICAgIFN0cmluZyByZXF1ZXN0VG9Q
YXRoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBTdHJpbmcg
dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJMJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZWNvcmRlci5jcHAKaW5kZXggZTY2MDNlNjM2ZDcuLjNhNTU5YTYxODQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJl
L05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZWNv
cmRlcjo6cmVjb3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
dm9pZCBSZWNvcmRlcjo6d3JpdGVFdmVudHMoKQogewogICAgIGF1dG8gcGF0aCA9IE1hbmFnZXI6
OnNpbmdsZXRvbigpLnJlcXVlc3RUb1BhdGgobV9pbml0aWFsUmVxdWVzdCk7Ci0gICAgYXV0byBo
YW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6
Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBoYW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5v
cGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAg
ICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNl
LmgKaW5kZXggZTU3NjBlZDFiYzMuLjc1NzZjMGQ1ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0
cmluZyBtX2V2ZW50RmlsZVBhdGg7CiAgICAgICAgIGJvb2wgbV9oYXZlTWFwcGVkRXZlbnRGaWxl
IHsgZmFsc2UgfTsKLSAgICAgICAgV2ViQ29yZTo6TWFwcGVkRmlsZURhdGEgbV9tYXBwZWRFdmVu
dEZpbGU7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1fbWFw
cGVkRXZlbnRGaWxlOwogICAgICAgICBzaXplX3QgbV9vZmZzZXQgeyAwIH07CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZGY2NGUzOWJlNjEuLjE3NTY1YjI3OWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5h
bQogCiAgICAgbV90YXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbjsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJDb3JlOjpm
aWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQotICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiB9CiAKIGJvb2wg
TmV0d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5k
ZXggMDVjODY4NDhlMjUuLjVmOTY5YmIxMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC00NzIs
NyArNDcyLDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3Jr
TG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFn
ZXIgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIo
KTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3du
bG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9u
LT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2Fk
KCpkb3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpmaWxlRXhpc3RzKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBBU1NFUlQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9u
KG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRv
d25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZN
b3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggYmQ0ZjYyOTE5M2YuLjRjOGI0
YTRlMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpCiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpOwogICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2Fj
aGVEaXJlY3Rvcnk7CiAKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hl
KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBTb3Vw
TmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3
b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRF
bmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCA4ZTdmMGE3NTU1OS4uYTQ0NGYwNjk2YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXVuY2hQcm9jZXNzKGNvbnN0IFN0cmluZyYgbGF1
bmNoUGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAgICAgYm9vbCBsYXVu
Y2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXJndW1lbnRzKTsKICAgICBib29sIG9wZW5VUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGludDMyX3QmIHN0YXR1cywgU3RyaW5nJiBsYXVuY2hlZFVSTFN0cmluZyk7Ci0gICAg
Ym9vbCBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgYm9vbCBGaWxlU3lz
dGVtOjpvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAjZW5kaWYKIAogICAgIENv
dW50ZWRVc2VyQWN0aXZpdHkmIGNvbm5lY3Rpb25BY3Rpdml0eSgpIHsgcmV0dXJuIG1fY29ubmVj
dGlvbkFjdGl2aXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXgu
Y3BwCmluZGV4IGRhZjliYWVjZWU1Li43YWYwOTgzM2RiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luTW9kdWxlSQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9
IHBsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShwbHVn
aW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBsdWdpblBhdGgpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBtZXRhRGF0YS5uYW1lOwog
ICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0YS5kZXNjcmlwdGlvbjsKICAgICBwYXJzZU1J
TUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24sIHBsdWdpbi5pbmZvLm1pbWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5T
ZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5T
ZWFyY2hQYXRoLmNwcAppbmRleCA3ZTg5MmYwMGM4NS4uMDc1MWYwZmY1OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5j
cHAKQEAgLTQ4LDggKzQ4LDggQEAgVmVjdG9yPFN0cmluZz4gcGx1Z2luc0RpcmVjdG9yaWVzKCkK
ICAgICBpZiAoIW1vemlsbGFIb21lLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCht
b3ppbGxhSG9tZSArICIvcGx1Z2lucyIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChob21lRGlyZWN0
b3J5UGF0aCgpICsgIi8ubW96aWxsYS9wbHVnaW5zIik7Ci0gICAgcmVzdWx0LmFwcGVuZChob21l
RGlyZWN0b3J5UGF0aCgpICsgIi8ubmV0c2NhcGUvcGx1Z2lucyIpOworICAgIHJlc3VsdC5hcHBl
bmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIp
OworICAgIHJlc3VsdC5hcHBlbmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIv
Lm5ldHNjYXBlL3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9icm93c2Vy
L3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xvY2FsL2xpYi9tb3ppbGxhL3Bs
dWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9maXJlZm94L3BsdWdpbnMiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5kZXggMTUxMzM5MDg4
ZGMuLjk2MzZmMTFmOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1v
cnlTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVy
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RvcCgpCiAg
ICAgaWYgKCFtX2lzUnVubmluZykgCiAgICAgICAgIHJldHVybjsKICAgICBtX3NhbXBsZVRpbWVy
LnN0b3AoKTsKLSAgICBjbG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKIAogICAgIHByaW50ZigiU3RvcHBlZCBtZW1v
cnkgc2FtcGxlciBmb3IgcHJvY2VzcyAlcyAlZFxuIiwgcHJvY2Vzc05hbWUoKS51dGY4KCkuZGF0
YSgpLCBnZXRwaWQoKSk7CiAgICAgLy8gRmx1c2ggc3Rkb3V0IGJ1ZmZlciBzbyBweXRob24gc2Ny
aXB0IGNhbiBiZSBndWFyYW50ZWVkIHRvIHJlYWQgdXAgdG8gdGhpcyBwb2ludC4KQEAgLTEyNyw3
ICsxMjcsNyBAQCBib29sIFdlYk1lbW9yeVNhbXBsZXI6OmlzUnVubmluZygpIGNvbnN0CiAgICAg
CiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVUZW1wTG9nRmlsZSgpCiB7Ci0gICAg
bV9zYW1wbGVMb2dGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1f
c2FtcGxlTG9nRmlsZSk7CisgICAgbV9zYW1wbGVMb2dGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1fc2FtcGxlTG9nRmlsZSk7CiAgICAgd3Jp
dGVIZWFkZXJzKCk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBs
ZXI6OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZQogICAgIGlmIChtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2Ft
cGxlTG9nU2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogICAgIG1fc2FtcGxlTG9nRmlsZVBh
dGggPSBzYW1wbGVMb2dGaWxlUGF0aDsKLSAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBvcGVuRmlsZSht
X3NhbXBsZUxvZ0ZpbGVQYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIG1fc2FtcGxlTG9nRmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fc2FtcGxlTG9nRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9w
ZW5Gb3JXcml0ZSk7CiAgICAgd3JpdGVIZWFkZXJzKCk7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OndyaXRlSGVhZGVycygpCiAgICAgU3RyaW5nIHByb2Nl
c3NEZXRhaWxzID0gU3RyaW5nOjpmb3JtYXQoIlByb2Nlc3M6ICVzIFBpZDogJWRcbiIsIHByb2Nl
c3NOYW1lKCkudXRmOCgpLmRhdGEoKSwgZ2V0cGlkKCkpOwogCiAgICAgQ1N0cmluZyB1dGY4U3Ry
aW5nID0gcHJvY2Vzc0RldGFpbHMudXRmOCgpOwotICAgIHdyaXRlVG9GaWxlKG1fc2FtcGxlTG9n
RmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0
ZjhTdHJpbmcubGVuZ3RoKCkpOwogfQogCiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVRp
bWVyRmlyZWQoKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3Rv
cFRpbWVyRmlyZWQoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjph
cHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJikKK3ZvaWQg
V2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpCiB7CiAgICAgLy8gQ29sbGVjdCBzdGF0aXN0aWNzIGZy
b20gYWxsb2NhdG9ycyBhbmQgZ2V0IFJTSVpFIG1ldHJpYwogICAgIFN0cmluZ0J1aWxkZXIgc3Rh
dFN0cmluZzsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVu
ZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKQogICAgIHN0YXRT
dHJpbmcuYXBwZW5kKCdcbicpOwogCiAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gc3RhdFN0cmlu
Zy50b1N0cmluZygpLnV0ZjgoKTsKLSAgICB3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0
ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5n
Lmxlbmd0aCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
TWVtb3J5U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5o
CmluZGV4IDI3ODdiNTE1ZGFiLi4zMjVlZWI4MmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Yk1lbW9yeVNhbXBsZXIuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5p
dGlhbGl6ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwogICAg
IHZvaWQgc3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2Fn
ZVRvRmlsZShXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1
cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCk7CiAgICAgCiAgICAg
U3lzdGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFsbG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5
NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3RhdGlzdGljcyBzYW1wbGVXZWJLaXQoKSBj
b25zdDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKICAgICAKLSAgICBXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSB9OworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5nIG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAgICAg
V2ViQ29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3N0b3BU
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0
YWJsZVBhdGhHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aEd0ay5jcHAKaW5kZXggOGIzODMzMzgwOGIuLjljYTZmZjY1NjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKIHsK
ICAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7
CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGRpcmVj
dG9yeU5hbWUoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aC5kYXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aC5kYXRhKCkpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAjZW5kaWYKQEAgLTUzLDIwICs1
MywyMCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nl
c3NOYW1lKQogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYg
KGV4ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0Rp
cmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1Bh
dGgpKQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Bh
dGg7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdldEV4ZWN1
dGFibGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewotICAgICAg
ICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJs
ZVBhdGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgp
KQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIHBy
b2Nlc3NQYXRoOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBLR0xJQkVYRUNESVIp
LCBwcm9jZXNzTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBL
R0xJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CiB9CiAKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9m
V2ViUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQ
cm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5t
bQppbmRleCA3MmY1MTIzNmNiNS4uM2VjNTRiZjM0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtNzEsMTQgKzcxLDE0IEBAIHZvaWQgQ2hpbGRQ
cm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMmCiAgICAgfQogCiAgICAgU3RyaW5nIHNhbmRib3hJbXBvcnRQYXRoID0gIi91
c3IvbG9jYWwvc2hhcmUvc2FuZGJveC9pbXBvcnRzIjsKLSAgICBzYW5kYm94UGFyYW1ldGVycy5h
ZGRQYXRoUGFyYW1ldGVyKCJJTVBPUlRfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNh
bmRib3hJbXBvcnRQYXRoKS5kYXRhKCkpOworICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQ
YXJhbWV0ZXIoIklNUE9SVF9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc2FuZGJveEltcG9ydFBhdGgpLmRhdGEoKSk7CiAKICAgICBzd2l0Y2ggKHNhbmRib3hQYXJh
bWV0ZXJzLm1vZGUoKSkgewogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVy
czo6VXNlRGVmYXVsdFNhbmRib3hQcm9maWxlUGF0aDoKICAgICBjYXNlIFNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnM6OlVzZU92ZXJyaWRlU2FuZGJveFByb2ZpbGVQYXRoOiB7CiAgICAg
ICAgIFN0cmluZyBzYW5kYm94UHJvZmlsZVBhdGggPSBzYW5kYm94UGFyYW1ldGVycy5tb2RlKCkg
PT0gU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlRGVmYXVsdFNhbmRib3hQcm9m
aWxlUGF0aCA/IGRlZmF1bHRQcm9maWxlUGF0aCA6IHNhbmRib3hQYXJhbWV0ZXJzLm92ZXJyaWRl
U2FuZGJveFByb2ZpbGVQYXRoKCk7CiAgICAgICAgIGlmICghc2FuZGJveFByb2ZpbGVQYXRoLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgQ1N0cmluZyBwcm9maWxlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihzYW5kYm94UHJvZmlsZVBhdGgpOworICAgICAgICAgICAgQ1N0cmluZyBw
cm9maWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94
UHJvZmlsZVBhdGgpOwogICAgICAgICAgICAgY2hhciogZXJyb3JCdWY7CiAgICAgICAgICAgICBp
ZiAoc2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhwcm9maWxlUGF0aC5kYXRhKCksIFNBTkRC
T1hfTkFNRURfRVhURVJOQUwsIHNhbmRib3hQYXJhbWV0ZXJzLm5hbWVkUGFyYW1ldGVyQXJyYXko
KSwgJmVycm9yQnVmKSkgewogICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxk
bid0IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxlIFslc10sIGVycm9yICclcydcbiIsIGdldHBy
b2duYW1lKCksIHByb2ZpbGVQYXRoLmRhdGEoKSwgZXJyb3JCdWYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggNTRhZTY1ODAyZDMuLjI3NmU2ZTNm
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAg
LTEyOCw3ICsxMjgsNyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIHNhbmRib3hQYXJh
bWV0ZXJzLmFkZFBhcmFtZXRlcigiX09TX1ZFUlNJT04iLCBvc1ZlcnNpb24udXRmOCgpLmRhdGEo
KSk7CiAKICAgICAvLyBVc2UgcHJpdmF0ZSB0ZW1wb3JhcnkgYW5kIGNhY2hlIGRpcmVjdG9yaWVz
LgotICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIsIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihzYW5kYm94UGFyYW1ldGVycy51c2VyRGlyZWN0b3J5U3VmZml4KCkpLmRhdGEo
KSwgMSk7CisgICAgc2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIiwgRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQYXJhbWV0ZXJzLnVzZXJEaXJlY3Rv
cnlTdWZmaXgoKSkuZGF0YSgpLCAxKTsKICAgICBjaGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQQVRI
X01BWF07CiAgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9y
YXJ5RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlczogY291bGRuJ3QgcmV0cmlldmUgcHJpdmF0ZSB0ZW1wb3JhcnkgZGlyZWN0
b3J5IHBhdGg6ICVkXG4iLCBnZXRwcm9nbmFtZSgpLCBlcnJubyk7CkBAIC0xNTQsMTggKzE1NCwx
OCBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpm
cm9tVVRGOChwd2QucHdfZGlyKTsKICAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKIAotICAg
IHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBzYW5kYm94UGFyYW1l
dGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfRElSIiwgRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAKICAgICBwYXRoLmFwcGVuZCgi
L1ByZWZlcmVuY2VzIik7CiAKLSAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVy
KCJIT01FX0xJQlJBUllfUFJFRkVSRU5DRVNfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7CisgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigi
SE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAgICAgc3dpdGNoIChzYW5kYm94UGFyYW1ldGVy
cy5tb2RlKCkpIHsKICAgICBjYXNlIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVz
ZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGg6CiAgICAgY2FzZSBTYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzOjpVc2VPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aDogewogICAgICAgICBT
dHJpbmcgc2FuZGJveFByb2ZpbGVQYXRoID0gc2FuZGJveFBhcmFtZXRlcnMubW9kZSgpID09IFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBh
dGggPyBkZWZhdWx0UHJvZmlsZVBhdGggOiBzYW5kYm94UGFyYW1ldGVycy5vdmVycmlkZVNhbmRi
b3hQcm9maWxlUGF0aCgpOwogICAgICAgICBpZiAoIXNhbmRib3hQcm9maWxlUGF0aC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKKyAgICAgICAgICAgIENTdHJpbmcgcHJvZmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFByb2Zp
bGVQYXRoKTsKICAgICAgICAgICAgIGNoYXIqIGVycm9yQnVmOwogICAgICAgICAgICAgaWYgKHNh
bmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmlsZVBhdGguZGF0YSgpLCBTQU5EQk9YX05B
TUVEX0VYVEVSTkFMLCBzYW5kYm94UGFyYW1ldGVycy5uYW1lZFBhcmFtZXRlckFycmF5KCksICZl
cnJvckJ1ZikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBp
bml0aWFsaXplIHNhbmRib3ggcHJvZmlsZSBbJXNdLCBlcnJvciAnJXMnXG4iLCBnZXRwcm9nbmFt
ZSgpLCBwcm9maWxlUGF0aC5kYXRhKCksIGVycm9yQnVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggMWE4YjlmZGNmYjAuLmQ5MmNi
Zjk3YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiBTdHJp
bmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBib3RoIHJlc29sdmVTeW1saW5rc0luUGF0aCgpIGFu
ZCAtc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aD8KLSAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3Rh
bmRhcmRpemluZ1BhdGhdKTsKKyAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRoID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3Rh
bmRhcmRpemluZ1BhdGhdKTsKICAgICBpZiAoZmlsZVN5c3RlbVBhdGguaXNOdWxsKCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgdmFsaWQgZmlsZSBzeXN0ZW0gcmVw
cmVzZW50YXRpb24gZm9yIHRoZSBzdHJpbmcgJyVzJyBvZiBsZW5ndGggJWx1IiwgZmlsZVN5c3Rl
bVBhdGguZGF0YSgpLCBmaWxlU3lzdGVtUGF0aC5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiB7
IH07CkBAIC0zMzUsNyArMzM1LDcgQEAgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUKICAgICBwYXRo
LmFwcGVuZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKICAgICBwYXRo
LmFwcGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5k
YXRhKCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9z
YW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0
ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRh
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoV1BFLmNwcAppbmRleCAyMmQ0NWNiYmJlZi4uNWVkNTZkMzcwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RXhlY3V0YWJsZVBhdGgoKQogewog
ICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKTsK
ICAgICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZGlyZWN0
b3J5TmFtZShzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
LmRhdGEoKSkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
LmRhdGEoKSkpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApAQCAtNDcsMTkgKzQ3LDE5IEBA
IHN0YXRpYyBTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VC
S0lUX0VYRUNfUEFUSCIpOwogICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Ci0gICAgICAgIFN0cmlu
ZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAg
IGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1l
KTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAg
ICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmcg
ZXhlY3V0YWJsZVBhdGggPSBnZXRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJs
ZVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlm
IChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9j
ZXNzTmFtZSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRo
KSkKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKLSAgICByZXR1cm4g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKIH0KIAogU3RyaW5nIGV4ZWN1
dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZWNkNTE3MDc4MzAuLjdiNDY1NjQzNTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1h
a2UgYWxsIGRpcmVjdG9yaWVzIGZvciBwYXRoICclcyciLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwog
fQogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6YWNjZXNzVG9UZW1w
b3JhcnlGaWxlQ29tcGxldGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIFdlJ3ZlIGVpdGhl
ciBoYXJkIGxpbmtlZCB0aGUgdGVtcG9yYXJ5IGJsb2IgZmlsZSB0byB0aGUgZGF0YWJhc2UgZGly
ZWN0b3J5LCBjb3BpZWQgaXQgdGhlcmUsCiAgICAgLy8gb3IgdGhlIHRyYW5zYWN0aW9uIGlzIGJl
aW5nIGFib3J0ZWQuCiAgICAgLy8gSW4gYW55IG9mIHRob3NlIGNhc2VzLCB3ZSBjYW4gZGVsZXRl
IHRoZSB0ZW1wb3JhcnkgYmxvYiBmaWxlIG5vdy4KLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAKICAgICBpZiAoYXV0byBleHRlbnNpb24g
PSBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnMudGFrZShwYXRoKSkKICAgICAg
ICAgZXh0ZW5zaW9uLT5yZXZva2UoKTsKQEAgLTMwMCw4ICszMDAsOCBAQCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9yYWdlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3Jp
Z2lucyhjb25zdAogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5zOwotICAgIGZvciAoYXV0byYgb3JpZ2lu
UGF0aCA6IGxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICBTdHJpbmcgZGF0YWJh
c2VJZGVudGlmaWVyID0gcGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgIGZvciAoYXV0
byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewor
ICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRp
ZmllcikpCiAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKFdURk1vdmUoKnNlY3Vy
aXR5T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA3ZjRmODA0MmE3Ny4uYmQ2OGI1ZTA1ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcApAQCAtODUsNyArODUsNyBAQCBDb250ZW50UnVsZUxpc3RTdG9yZTo6
Q29udGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBs
ZQogICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0
U3RvcmUgUmVtb3ZlIFF1ZXVlIikpCiAgICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2FjeUZpbGVu
YW1lKQogewotICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQog
CiBDb250ZW50UnVsZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKQEAgLTEwOCw3
ICsxMDgsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihib29s
IGxlZ2FjeUZpbGVuYW1lKQogCiBzdGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBT
dHJpbmcmIGJhc2UsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCBsZWdhY3lGaWxlbmFt
ZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2Us
IG1ha2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29y
ZTo6ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29u
c3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKIH0KIAogLy8gVGhlIHNpemUgYW5kIG9m
ZnNldCBvZiB0aGUgZGVuc2VseSBwYWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2Yg
YW5kIG9mZnNldG9mLCB3aGljaCB3b3VsZApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBib29s
IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBt
ZXRhRGF0YSwgY29uCiAKIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEm
IGZpbGVEYXRhKQogewotICAgIGZpbGVEYXRhID0gbWFwRmlsZShXZWJDb3JlOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBmaWxlRGF0YSA9IG1hcEZpbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
CiAgICAgaWYgKGZpbGVEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTE5NCwxMSArMTk0LDExIEBAIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3Qo
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiBmaWxlRGF0
YSwgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkKQorc3RhdGljIGJvb2wgd3JpdGVEYXRh
VG9GaWxlKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmQpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmaWxlRGF0
YS5hcHBseShbZmQsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewotICAgICAgICBpZiAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRh
LCBzaXplKSA9PSAtMSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgewogICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShT
dHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKIAogICAgIGNsYXNzIENv
bXBpbGF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlv
bkNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEm
IG1ldGFEYXRhKQorICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEm
IG1ldGFEYXRhKQogICAgICAgICAgICAgOiBtX2ZpbGVIYW5kbGUoZmlsZUhhbmRsZSkKICAgICAg
ICAgICAgICwgbV9tZXRhRGF0YShtZXRhRGF0YSkKICAgICAgICAgewpAQCAtMjMyLDE1ICsyMzIs
MTUgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29u
LCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICAgICAgICAgIEFTU0VSVCghbV9jb25k
aXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9hY3Rp
b25zV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQoIW1fc291cmNlV3JpdHRlbik7Ci0gICAg
ICAgICAgICB3cml0ZVRvRmlsZShzb3VyY2VKU09OLmlzOEJpdCgpKTsKKyAgICAgICAgICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKHNvdXJjZUpTT04uaXM4Qml0KCkpOwogICAgICAgICAgICAg
bV9zb3VyY2VXcml0dGVuICs9IHNpemVvZihib29sKTsKICAgICAgICAgICAgIGlmIChzb3VyY2VK
U09OLmlzOEJpdCgpKSB7CiAgICAgICAgICAgICAgICAgc2l6ZV90IHNlcmlhbGl6ZWRMZW5ndGgg
PSBzb3VyY2VKU09OLmxlbmd0aCgpICogc2l6ZW9mKExDaGFyKTsKLSAgICAgICAgICAgICAgICB3
cml0ZVRvRmlsZShEYXRhKHNvdXJjZUpTT04uY2hhcmFjdGVyczgoKSwgc2VyaWFsaXplZExlbmd0
aCkpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKERhdGEoc291cmNl
SlNPTi5jaGFyYWN0ZXJzOCgpLCBzZXJpYWxpemVkTGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAg
bV9zb3VyY2VXcml0dGVuICs9IHNlcmlhbGl6ZWRMZW5ndGg7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIHNpemVfdCBzZXJpYWxpemVkTGVuZ3RoID0gc291cmNlSlNPTi5s
ZW5ndGgoKSAqIHNpemVvZihVQ2hhcik7Ci0gICAgICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb3VyY2VKU09OLmNoYXJhY3RlcnMx
NigpKSwgc2VyaWFsaXplZExlbmd0aCkpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc291cmNlSlNP
Ti5jaGFyYWN0ZXJzMTYoKSksIHNlcmlhbGl6ZWRMZW5ndGgpKTsKICAgICAgICAgICAgICAgICBt
X3NvdXJjZVdyaXR0ZW4gKz0gc2VyaWFsaXplZExlbmd0aDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMjUwLDIwICsyNTAsMjAgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxl
ZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICAg
ICAgICAgIEFTU0VSVCghbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbik7CiAg
ICAgICAgICAgICBBU1NFUlQoIW1fY29uZGl0aW9uRmlsdGVyc0J5dGVjb2RlV3JpdHRlbik7CiAg
ICAgICAgICAgICBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbiArPSBi
eXRlY29kZS5zaXplKCk7Ci0gICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRh
dGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwgYnl0ZWNvZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aENvbmRpdGlvbnNCeXRlY29k
ZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIGZpbmFsCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVCghbV9jb25kaXRpb25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuKTsKICAgICAg
ICAgICAgIG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4gKz0gYnl0ZWNvZGUu
c2l6ZSgpOwotICAgICAgICAgICAgd3JpdGVUb0ZpbGUoRGF0YShieXRlY29kZS5kYXRhKCksIGJ5
dGVjb2RlLnNpemUoKSkpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoRGF0
YShieXRlY29kZS5kYXRhKCksIGJ5dGVjb2RlLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICB2b2lkIHdyaXRlVG9wVVJMRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRl
Y29kZT4mJiBieXRlY29kZSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgbV9jb25kaXRp
b25GaWx0ZXJzQnl0ZWNvZGVXcml0dGVuICs9IGJ5dGVjb2RlLnNpemUoKTsKLSAgICAgICAgICAg
IHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsKKyAg
ICAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0YSgpLCBi
eXRlY29kZS5zaXplKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgd3JpdGVBY3Rpb25z
KFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiBhY3Rpb25zLCBib29sIGNvbmRpdGlvbnNB
cHBseU9ubHlUb0RvbWFpbikgZmluYWwKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgc3RkOjpl
cnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmlu
YWxGaWxlUGF0aAogICAgICAgICAgICAgQVNTRVJUKCFtX2FjdGlvbnNXcml0dGVuKTsKICAgICAg
ICAgICAgIG1fYWN0aW9uc1dyaXR0ZW4gKz0gYWN0aW9ucy5zaXplKCk7CiAgICAgICAgICAgICBt
X2NvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbiA9IGNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFp
bjsKLSAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYWN0aW9ucy5kYXRhKCksIGFjdGlvbnMu
c2l6ZSgpKSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShEYXRhKGFjdGlv
bnMuZGF0YSgpLCBhY3Rpb25zLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICB2b2lkIGZpbmFsaXplKCkgZmluYWwKQEAgLTI4NywyOSArMjg3LDI5IEBAIHN0YXRpYyBzdGQ6
OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBm
aW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlU
b0RvbWFpbiA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKG1f
bWV0YURhdGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBXZWJDb3JlOjpzZWVr
RmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9t
QmVnaW5uaW5nKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZSht
X2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6RmlsZVNlZWtPcmlnaW46OkZpbGVTeXN0ZW06OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkg
eworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVI
YW5kbGUpOwogICAgICAgICAgICAgICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlcik7CisgICAgICAgICAgICBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShoZWFkZXIpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGhhZEVycm9yV2hpbGVXcml0aW5nVG9GaWxlKCkgeyByZXR1cm4gbV9maWxlRXJyb3I7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgd3JpdGVUb0ZpbGUoYm9vbCB2YWx1ZSkKKyAg
ICAgICAgdm9pZCBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShib29sIHZhbHVlKQogICAgICAgICB7
Ci0gICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KCZ2YWx1ZSksIHNpemVvZih2YWx1ZSkpKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnZhbHVl
KSwgc2l6ZW9mKHZhbHVlKSkpOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgd3JpdGVUb0ZpbGUo
Y29uc3QgRGF0YSYgZGF0YSkKKyAgICAgICAgdm9pZCBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShj
b25zdCBEYXRhJiBkYXRhKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fZmlsZUVycm9y
ICYmICF3cml0ZURhdGFUb0ZpbGUoZGF0YSwgbV9maWxlSGFuZGxlKSkgewotICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICAgICAg
ICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKKyAg
ICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRs
ZTsKICAgICAgICAgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1fbWV0YURhdGE7CiAgICAgICAg
IHNpemVfdCBtX2ZpbHRlcnNXaXRob3V0Q29uZGl0aW9uc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsK
ICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4geyAw
IH07CkBAIC0zMjAsMjcgKzMyMCwyNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVk
VG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAg
ICBib29sIG1fZmlsZUVycm9yIHsgZmFsc2UgfTsKICAgICB9OwogCi0gICAgYXV0byB0ZW1wb3Jh
cnlGaWxlSGFuZGxlID0gV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICBT
dHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgiQ29u
dGVudFJ1bGVMaXN0IiwgdGVtcG9yYXJ5RmlsZUhhbmRsZSk7Ci0gICAgaWYgKHRlbXBvcmFyeUZp
bGVIYW5kbGUgPT0gV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRv
IHRlbXBvcmFyeUZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOworICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiLCB0ZW1wb3JhcnlG
aWxlSGFuZGxlKTsKKyAgICBpZiAodGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm4gQ29udGVu
dFJ1bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwogICAgIAogICAgIGNoYXIgaW52
YWxpZEhlYWRlcltDb250ZW50UnVsZUxpc3RGaWxlSGVhZGVyU2l6ZV07CiAgICAgbWVtc2V0KGlu
dmFsaWRIZWFkZXIsIDB4RkYsIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgLy8gVGhpcyBo
ZWFkZXIgd2lsbCBiZSByZXdyaXR0ZW4gaW4gQ29tcGlsYXRpb25DbGllbnQ6OmZpbmFsaXplLgot
ICAgIGlmIChXZWJDb3JlOjp3cml0ZVRvRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlk
SGVhZGVyLCBzaXplb2YoaW52YWxpZEhlYWRlcikpID09IC0xKSB7Ci0gICAgICAgIFdlYkNvcmU6
OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSwgaW52YWxpZEhlYWRlciwgc2l6
ZW9mKGludmFsaWRIZWFkZXIpKSA9PSAtMSkgeworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBDb250ZW50
UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgfQogCiAgICAgQ29tcGls
YXRpb25DbGllbnQgY29tcGlsYXRpb25DbGllbnQodGVtcG9yYXJ5RmlsZUhhbmRsZSwgbWV0YURh
dGEpOwogICAgIAogICAgIGlmIChhdXRvIGNvbXBpbGVyRXJyb3IgPSBjb21waWxlUnVsZUxpc3Qo
Y29tcGlsYXRpb25DbGllbnQsIFdURk1vdmUoanNvbikpKSB7Ci0gICAgICAgIFdlYkNvcmU6OmNs
b3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOwogICAgICAgICByZXR1cm4gY29tcGls
ZXJFcnJvcjsKICAgICB9CiAgICAgaWYgKGNvbXBpbGF0aW9uQ2xpZW50LmhhZEVycm9yV2hpbGVX
cml0aW5nVG9GaWxlKCkpIHsKLSAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZp
bGVIYW5kbGUpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9y
YXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJy
b3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgfQogICAgIApAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRp
YyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3Ry
aW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgaWYgKG1hcHBlZERhdGEuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAKLSAg
ICBpZiAoIVdlYkNvcmU6Om1vdmVGaWxlKHRlbXBvcmFyeUZpbGVQYXRoLCBmaW5hbEZpbGVQYXRo
KSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1vdmVGaWxlKHRlbXBvcmFyeUZpbGVQ
YXRoLCBmaW5hbEZpbGVQYXRoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3Jl
OjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKIAogICAgIHJldHVybiB7IH07CkBAIC00MTIsMTIgKzQx
MiwxMiBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVs
ZUxpc3RJZGVudGlmaWVycyhGdW5jdGlvbjx2b2lkKAogewogICAgIG1fcmVhZFF1ZXVlLT5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yZVBhdGggPSBtX3N0b3Jl
UGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGZ1bGxQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJl
Y3Rvcnkoc3RvcmVQYXRoLCBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIobGVnYWN5RmlsZW5hbWUpKTsK
KyAgICAgICAgVmVjdG9yPFN0cmluZz4gZnVsbFBhdGhzID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lGaWxl
bmFtZSkpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBpZGVudGlmaWVyczsKICAgICAgICAgaWRl
bnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmdWxsUGF0aHMuc2l6ZSgpKTsKICAgICAg
ICAgY29uc3QgYXV0byBwcmVmaXhMZW5ndGggPSBjb25zdHJ1Y3RlZFBhdGhQcmVmaXgobGVnYWN5
RmlsZW5hbWUpLmxlbmd0aCgpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBmdWxs
UGF0aHMpCi0gICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6
ZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSAr
IDEgKyBwcmVmaXhMZW5ndGgpKSk7CisgICAgICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRB
cHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3Ry
aW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEgKyBwcmVmaXhMZW5ndGgpKSk7CiAKICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgaWRlbnRpZmllcnMgPSBXVEZNb3ZlKGlkZW50aWZpZXJzKV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoaWRlbnRpZmllcnMpKTsKQEAgLTQ1NCw3
ICs0NTQsNyBAQCB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxp
c3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsCiAgICAgbV9yZW1vdmVRdWV1ZS0+ZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50
aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29w
eSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8g
cGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9yZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVu
YW1lKTsKIAotICAgICAgICBpZiAoIVdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCkpIHsKKyAgICAg
ICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpKSB7CiAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRXJyb3I6OlJlbW92ZUZh
aWxlZCk7CiAgICAgICAgICAgICB9KTsKQEAgLTQ2OSwxOSArNDY5LDE5IEBAIHZvaWQgQ29udGVu
dFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllciwKIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6c3luY2hyb25vdXNSZW1v
dmVBbGxDb250ZW50UnVsZUxpc3RzKCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBX
ZWJDb3JlOjpsaXN0RGlyZWN0b3J5KG1fc3RvcmVQYXRoLCAiKiIpKQotICAgICAgICBXZWJDb3Jl
OjpkZWxldGVGaWxlKHBhdGgpOworICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IFdlYkNvcmU6
OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9zdG9yZVBhdGgsICIqIikpCisgICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIHZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb250ZW50UnVsZUxpc3RWZXJzaW9uKGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyKQogewotICAgIGF1dG8gZmlsZSA9IFdlYkNvcmU6Om9wZW5GaWxl
KGNvbnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0aCwgaWRlbnRpZmllciwgbV9sZWdhY3lGaWxlbmFt
ZSksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIGZpbGUgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpvcGVuRmlsZShjb25zdHJ1Y3RlZFBhdGgobV9zdG9yZVBhdGgsIGlkZW50aWZpZXIsIG1f
bGVnYWN5RmlsZW5hbWUpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAg
IGlmIChmaWxlID09IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCiAgICAgICAgIHJldHVybjsKICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSBpbnZhbGlk
SGVhZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9OwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gV2Vi
Q29yZTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmlu
dmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOworICAgIGF1dG8gYnl0ZXNXcml0
dGVuID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikp
OwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZXNXcml0dGVuLCBieXRlc1dyaXR0ZW4gPT0gc2l6ZW9m
KGludmFsaWRIZWFkZXIpKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogfQogCiB2b2lkIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxpc3RTb3VyY2UoY29uc3QgV1RGOjpTdHJpbmcmIGlk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoV1RGOjpTdHJpbmcpPiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRleCA3MGNhMzZiM2VmYi4uNDY2YzBjZjVkNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRh
U3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElX
ZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTQ1LDEyICs0NSwxMiBAQCBTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogLy8gV2h5IGlz
IG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNlZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRp
b24/CiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsK
KyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwg
IldlYktpdENhY2hlIikpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENh
Y2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSks
ICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CiB9CiAKIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQpAQCAtODAsMTIg
KzgwLDEyIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpCiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGly
KCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5h
bWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBk
aXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9
CiAKIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCAyMjA4ZWFlZjA1MC4u
YzM3NzU4MjU0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpv
cGVuKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAg
IG1fZGF0YWJhc2VEaXJlY3RvcnkgPSBkaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7CiAKICAgICAv
LyBGb3JtdWxhdGUgdGhlIGZ1bGwgcGF0aCBmb3IgdGhlIGRhdGFiYXNlIGZpbGUKLSAgICBtX2Nv
bXBsZXRlRGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VE
aXJlY3RvcnksIGZpbGVuYW1lKTsKKyAgICBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnksIGZpbGVu
YW1lKTsKIAogICAgIC8vIExvY2sgaGVyZSBhcyB3ZWxsIGFzIGZpcnN0IHRoaW5nIGluIHRoZSB0
aHJlYWQgc28gdGhlIHRocmVhZCBkb2Vzbid0IGFjdHVhbGx5IGNvbW1lbmNlIHVudGlsIHRoZSBj
cmVhdGVUaHJlYWQoKSBjYWxsCiAgICAgLy8gY29tcGxldGVzIGFuZCBtX3N5bmNUaHJlYWRSdW5u
aW5nIGlzIHByb3Blcmx5IHNldApAQCAtODY5LDEzICs4NjksMTMgQEAgdm9pZCBJY29uRGF0YWJh
c2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKQogI2VuZGlmCiAKICAgICAvLyBOZWVkIHRvIGNy
ZWF0ZSB0aGUgZGF0YWJhc2UgcGF0aCBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QKLSAgICBt
YWtlQWxsRGlyZWN0b3JpZXMobV9kYXRhYmFzZURpcmVjdG9yeSk7CisgICAgRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKG1fZGF0YWJhc2VEaXJlY3RvcnkpOwogCiAgICAgLy8gRXhpc3Rl
bmNlIG9mIGEgam91cm5hbCBmaWxlIGlzIGV2aWRlbmNlIG9mIGEgcHJldmlvdXMgY3Jhc2gvZm9y
Y2UgcXVpdCBhbmQgYXV0b21hdGljYWxseSBxdWFsaWZpZXMKICAgICAvLyB1cyB0byBkbyBhbiBp
bnRlZ3JpdHkgY2hlY2sKICAgICBTdHJpbmcgam91cm5hbEZpbGVuYW1lID0gbV9jb21wbGV0ZURh
dGFiYXNlUGF0aCArICItam91cm5hbCI7CiAgICAgaWYgKCFjaGVja0ludGVncml0eU9uT3BlbikK
LSAgICAgICAgY2hlY2tJbnRlZ3JpdHlPbk9wZW4gPSBmaWxlRXhpc3RzKGpvdXJuYWxGaWxlbmFt
ZSk7CisgICAgICAgIGNoZWNrSW50ZWdyaXR5T25PcGVuID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhqb3VybmFsRmlsZW5hbWUpOwogCiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlciht
X3N5bmNMb2NrKTsKQEAgLTEwMDgsOCArMTAwOCw4IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJm
b3JtT3BlbkluaXRpYWxpemF0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcihtX3N5bmNMb2NrKTsKICAgICAgICAgICAgICAgICAvLyBTaG91bGQn
dmUgYmVlbiBjb25zdW1lZCBieSBTUUxpdGUsIGRlbGV0ZSBqdXN0IHRvIG1ha2Ugc3VyZSB3ZSBk
b24ndCBzZWUgaXQgYWdhaW4gaW4gdGhlIGZ1dHVyZTsKLSAgICAgICAgICAgICAgICBkZWxldGVG
aWxlKG1fY29tcGxldGVEYXRhYmFzZVBhdGggKyAiLWpvdXJuYWwiKTsKLSAgICAgICAgICAgICAg
ICBkZWxldGVGaWxlKG1fY29tcGxldGVEYXRhYmFzZVBhdGgpOworICAgICAgICAgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCArICItam91cm5hbCIp
OworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFi
YXNlUGF0aCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIFJlb3BlbiB0aGUgd3Jp
dGUgZGF0YWJhc2UsIGNyZWF0aW5nIGl0IGZyb20gc2NyYXRjaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAK
aW5kZXggNmUyODRmODJkY2QuLjM3MjQ0M2UyZDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAg
LTI2OSw3ICsyNjksNyBAQCB2b2lkIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2
aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYQogICAgIHByaXYtPmljb25E
YXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoV2ViUHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2
YXRlQnJvd3NpbmcoKSk7CiAKLSAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJD
b3JlOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkp
KSB7CisgICAgaWYgKCFwcml2LT5pY29uRGF0YWJhc2UtPm9wZW4oV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShwYXRoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBhdGgpKSkgewogICAgICAgICBwcml2LT5pY29uRGF0YWJhc2UgPSBudWxscHRyOwogICAg
ICAgICBJY29uRGF0YWJhc2U6OmFsbG93RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVD
aG9vc2VyUmVxdWVzdC5jcHAKaW5kZXggZjYwMTJjODczYjQuLjc4ODA0OTRhMzUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZp
bGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBjb25zdCBnY2hhciogY29u
c3QqIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0ZWRfZmlsZXMoV2ViS2l0
RmlsZUNobwogICAgICAgICBBUEk6OlN0cmluZyogd2ViRmlsZU5hbWUgPSBzdGF0aWNfY2FzdDxB
UEk6OlN0cmluZyo+KHNlbGVjdGVkRmlsZU5hbWVzLT5hdChpKSk7CiAgICAgICAgIGlmICh3ZWJG
aWxlTmFtZS0+c3RyaW5nVmlldygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYkZp
bGVOYW1lLT5zdHJpbmcoKSk7CisgICAgICAgIENTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2ViRmlsZU5hbWUtPnN0cmluZygpKTsKICAgICAg
ICAgZ19wdHJfYXJyYXlfYWRkKHJlcXVlc3QtPnByaXYtPnNlbGVjdGVkRmlsZXMuZ2V0KCksIGdf
c3RyZHVwKGZpbGVuYW1lLmRhdGEoKSkpOwogICAgIH0KICAgICBnX3B0cl9hcnJheV9hZGQocmVx
dWVzdC0+cHJpdi0+c2VsZWN0ZWRGaWxlcy5nZXQoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDQyNjBl
YWI3ODI0Li5mZDE3ODJmOGJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTMyMSwyMSArMzIxLDIxIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYkNvbnRleHRDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBidW5kbGVGaWxlbmFtZShnX2J1aWxkX2ZpbGVuYW1lKGluamVj
dGVkQnVuZGxlRGlyZWN0b3J5KCksIElOSkVDVEVEX0JVTkRMRV9GSUxFTkFNRSwgbnVsbHB0cikp
OwogCiAgICAgQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKLSAg
ICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChXZWJDb3JlOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CisgICAgY29u
ZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOwog
ICAgIGNvbmZpZ3VyYXRpb24uc2V0TWF4aW11bVByb2Nlc3NDb3VudCgxKTsKICAgICBjb25maWd1
cmF0aW9uLnNldERpc2tDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQodHJ1ZSk7CiAK
ICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gV0VCS0lUX1dFQl9DT05URVhUKG9i
amVjdCk7CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSB3ZWJDb250ZXh0LT5w
cml2OwogICAgIGlmIChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIgJiYgIXdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkgewotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJD
b3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVj
dG9yeShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBu
ZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0
aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29y
ZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRp
c3RpY3NfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRh
TWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJz
aXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9u
LnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
KTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVz
b3VyY2VfbG9hZF9zdGF0aXN0aWNzX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCkpKSk7CiAgICAgfSBlbHNlIGlmICghcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5Lmlz
TnVsbCgpKQotICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShX
ZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3Rv
cmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0
b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZGF0YSgpKSk7CiAKICAg
ICBwcml2LT5wcm9jZXNzUG9vbCA9IFdlYlByb2Nlc3NQb29sOjpjcmVhdGUoY29uZmlndXJhdGlv
bik7CiAKQEAgLTkxMCw3ICs5MTAsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2
aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgIFdl
YktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gY29udGV4dC0+cHJpdjsKICAgICBlbnN1cmVG
YXZpY29uRGF0YWJhc2UoY29udGV4dCk7CiAKLSAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdl
YkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgU3Ry
aW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIC8vIFVzZSBkZWZhdWx0IGlmIG51bGxwdHIg
aXMgcGFzc2VkIGFzIHBhcmFtZXRlci4KICAgICBpZiAoZGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkp
IHsKICNpZiBQTEFURk9STShHVEspCkBAIC05MTksNyArOTE5LDcgQEAgdm9pZCB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X2Zhdmljb25fZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQKICAgICAgICAgY29uc3QgY2hhciogcG9ydERpcmVjdG9yeSA9ICJ3cGUiOwogI2Vu
ZGlmCiAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgcG9ydERpcmVjdG9yeSwgImljb25kYXRh
YmFzZSIsIG51bGxwdHIpKTsKLSAgICAgICAgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwor
ICAgICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgfQog
ICAgIHByaXYtPmZhdmljb25EYXRhYmFzZURpcmVjdG9yeSA9IGRpcmVjdG9yeVBhdGgudXRmOCgp
OwogCkBAIC05MjgsNyArOTI4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmlj
b25fZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICAgICAg
IldlYnBhZ2VJY29ucy5kYiIsIG51bGxwdHIpKTsKIAogICAgIC8vIFNldHRpbmcgdGhlIHBhdGgg
d2lsbCBjYXVzZSB0aGUgaWNvbiBkYXRhYmFzZSB0byBiZSBvcGVuZWQuCi0gICAgd2Via2l0RmF2
aWNvbkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQo
KSkpOworICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNl
LmdldCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsKIAogICAgIGlmICh3ZWJraXRfd2Vi
X2NvbnRleHRfaXNfZXBoZW1lcmFsKGNvbnRleHQpKQogICAgICAgICB3ZWJraXRGYXZpY29uRGF0
YWJhc2VTZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQo
KSwgdHJ1ZSk7CkBAIC0xMDEyLDcgKzEwMTIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYWRkaXRpb25hbF9wbHVnaW5zX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZQog
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoZGlyZWN0b3J5KTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBZGRpdGlvbmFs
UGx1Z2luc0RpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGRpcmVjdG9yeSkpOworICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5zZXRBZGRp
dGlvbmFsUGx1Z2luc0RpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSkpOwogI2VuZGlmCiB9CiAKQEAgLTEzNTgs
NyArMTM1OCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9kaXNrX2NhY2hlX2RpcmVj
dG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
ZGlyZWN0b3J5KTsKIAotICAgIGNvbnRleHQtPnByaXYtPnByb2Nlc3NQb29sLT5jb25maWd1cmF0
aW9uKCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9y
eSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgIGNvbnRleHQtPnByaXYtPnByb2Nl
c3NQb29sLT5jb25maWd1cmF0aW9uKCkuc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVjdG9yeSksIG5ldHdvcmtDYWNo
ZVN1YmRpcmVjdG9yeSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCmluZGV4
IGNlNzI5NGRmZjU5Li5mYjE5OTdhNjU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBA
IC0zOTAsMTUgKzM5MCwxNSBAQCBBUEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVE
YXRhTWFuYWdlckdldERhdGFTdG9yZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgIGlmICghcHJp
di0+d2Vic2l0ZURhdGFTdG9yZSkgewogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1
cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdl
RGlyZWN0b3J5ID0gIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBB
UEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdl
YkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkuZ2V0KCkpOwogICAgICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9
ICFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJl
Y3RvcnkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJk
aXJlY3RvcnkpOwogICAgICAgICBjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkgPSAhcHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBX
ZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9ICFwcml2LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdl
YkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGly
ZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSk7
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9
ICFwcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKSA6IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkuZ2V0KCkpOwogICAgICAg
ICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgICAgIHBy
aXYtPndlYnNpdGVEYXRhU3RvcmUgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2Fj
eShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKICAgICB9CkBAIC01NjEsNyArNTYxLDcgQEAgY29u
c3QgZ2NoYXIqIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkoV2ViS2l0V2Vic2l0ZUQKIAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5
KSB7CiAgICAgICAgIC8vIFRoZSBkZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0aGUgc3Vi
ZGlyZWN0b3J5LgotICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJk
dXAoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5k
aXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJl
Y3RvcnkoKSkudXRmOCgpLmRhdGEoKSkpOwogICAgIH0KICAgICByZXR1cm4gcHJpdi0+ZGlza0Nh
Y2hlRGlyZWN0b3J5LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBiZjE5YjBh
YWMzZS4uYTVlODU4YzMwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC02NzksNyArNjc5
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2lsbENsb3NlUGFnZShjb25zdCBXZWJQ
YWdlUHJveHkmIHBhZ2UpCiAKIHN0YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2Fk
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1J
TUVUeXBlcywgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCiB7
Ci0gICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkKKyAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoYWxsb3dlZE1JTUVUeXBlcy5pc0VtcHR5KCkgJiYgYWxsb3dlZEZpbGVF
eHRlbnNpb25zLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGZlZWYwY2VlNDAyLi40YTFlM2IyNDhi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCkBAIC0zNzYsNyArMzc2LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCiAgICAgLy8g
Q3VycmVudGx5LCB0aGUgdG9wIGxldmVsIG9mIHRoYXQgZGlyZWN0b3J5IGNvbnRhaW5zIGVudGl0
aWVzIHJlbGF0ZWQgdG8gV2ViU1FMIGRhdGFiYXNlcy4KICAgICAvLyBXZSBzaG91bGQgZml4IHRo
aXMsIGFuZCBtb3ZlIFdlYlNRTCBpbnRvIGEgc3ViZGlyZWN0b3J5IChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODA3KQogICAgIC8vIEluIHRoZSBtZWFudGltZSwg
YW4gZW50aXR5IG5hbWUgcHJlZml4ZWQgd2l0aCB0aHJlZSB1bmRlcnNjb3JlcyB3aWxsIG5vdCBj
b25mbGljdCB3aXRoIGFueSBXZWJTUUwgZW50aXRpZXMuCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpLCAiX19fSW5kZXhlZERCIik7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpLCAiX19fSW5kZXhlZERCIik7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggYTJlNDgyZmVmODIuLmQzNjdmYTQz
MGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpA
QCAtMzg2NCw3ICszODY0LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cHJvdmlkZURhdGFGb3JQYXN0
ZWJvYXJkKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCwgTlNTdHJpbmcgKnQKICAgICB9CiB9CiAK
LXN0YXRpYyBCT09MIGZpbGVFeGlzdHMoTlNTdHJpbmcgKnBhdGgpCitzdGF0aWMgQk9PTCBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKE5TU3RyaW5nICpwYXRoKQogewogICAgIHN0cnVjdCBzdGF0IHN0
YXRCdWZmZXI7CiAgICAgcmV0dXJuICFsc3RhdChbcGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25dLCAmc3RhdEJ1ZmZlcik7CkBAIC0zODc2LDcgKzM4NzYsNyBAQCBzdGF0aWMgTlNTdHJpbmcg
KnBhdGhXaXRoVW5pcXVlRmlsZW5hbWVGb3JQYXRoKE5TU3RyaW5nICpwYXRoKQogICAgIE5TU3Ry
aW5nICpmaWxlbmFtZSA9IGZpbGVuYW1lQnlGaXhpbmdJbGxlZ2FsQ2hhcmFjdGVycyhbcGF0aCBs
YXN0UGF0aENvbXBvbmVudF0pOwogICAgIHBhdGggPSBbW3BhdGggc3RyaW5nQnlEZWxldGluZ0xh
c3RQYXRoQ29tcG9uZW50XSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZmlsZW5hbWVd
OwogICAgIAotICAgIGlmIChmaWxlRXhpc3RzKHBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMocGF0aCkpIHsKICAgICAgICAgLy8gRG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5n
IGZpbGUgYnkgYXBwZW5kaW5nICItbiIsICItbi5leHQiIG9yICItbi5leHQuZXh0IiB0byB0aGUg
ZmlsZW5hbWUuCiAgICAgICAgIE5TU3RyaW5nICpleHRlbnNpb25zID0gbmlsOwogICAgICAgICBO
U1N0cmluZyAqcGF0aFdpdGhvdXRFeHRlbnNpb25zOwpAQCAtMzg5NCw3ICszODk0LDcgQEAgc3Rh
dGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVuYW1lRm9yUGF0aChOU1N0cmluZyAqcGF0
aCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgOyBpKyspIHsKICAgICAgICAgICAgIE5T
U3RyaW5nICpwYXRoV2l0aEFwcGVuZGVkTnVtYmVyID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQC0lZCIsIHBhdGhXaXRob3V0RXh0ZW5zaW9ucywgaV07CiAgICAgICAgICAgICBwYXRo
ID0gW2V4dGVuc2lvbnMgbGVuZ3RoXSA/IFtwYXRoV2l0aEFwcGVuZGVkTnVtYmVyIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpleHRlbnNpb25zXSA6IHBhdGhXaXRoQXBwZW5kZWROdW1i
ZXI7Ci0gICAgICAgICAgICBpZiAoIWZpbGVFeGlzdHMocGF0aCkpCisgICAgICAgICAgICBpZiAo
IUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1w
bDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERl
c3RpbgogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2aWEg
LVtOU0ZpbGVXcmFwcGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJMOmVy
cm9yOl0iKTsKIAogICAgIGlmICghbV9wcm9taXNlZFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIFdl
YkNvcmU6OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7CisgICAg
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9w
cm9taXNlZFVSTCk7CiAgICAgCiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpb
cGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKaW5k
ZXggNWFjNmZjZmY1YzYuLjkzYmI4MWY0NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQog
ICAgICAgICAgICAgZXhlY3V0YWJsZVBhdGguYXBwZW5kKCcyJyk7CiAjZW5kaWYKICAgICAgICAg
cGx1Z2luUGF0aCA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQo
InBsdWdpbi1wYXRoIik7Ci0gICAgICAgIHJlYWxQbHVnaW5QYXRoID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgICAgICByZWFsUGx1Z2luUGF0aCA9IEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6
CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7CisgICAgcmVhbEV4ZWN1dGFibGVQ
YXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
KTsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiB3ZWJraXRTb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIl
ZCIsIHNvY2tldFBhaXIuY2xpZW50KSk7CiAgICAgdW5zaWduZWQgbmFyZ3MgPSA0OyAvLyBzaXpl
IG9mIHRoZSBhcmd2IGFycmF5IGZvciBnX3NwYXduX2FzeW5jKCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGY1
YTFkMTA4ZDkuLmZjODgzZmRlODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbGF1bmNoUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGxhdW5jaFBhdGgsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudHMsIGJvb2wmIHJlc3VsdCk7CiAgICAgdm9pZCBs
YXVuY2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYXJndW1lbnRzLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgb3BlblVSTChj
b25zdCBTdHJpbmcmIHVybCwgYm9vbCYgcmVzdWx0LCBpbnQzMl90JiBzdGF0dXMsIFN0cmluZyYg
bGF1bmNoZWRVUkxTdHJpbmcpOwotICAgIHZvaWQgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBmdWxs
UGF0aCwgYm9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIEZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0
IFN0cmluZyYgZnVsbFBhdGgsIGJvb2wmIHJlc3VsdCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDFiZDY1MDc5ZTVkLi5iOWIwYzJl
YWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1
Z2luSW5mb0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0
ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgUGx1Z2luSW5mb0NhY2hl
OjpQbHVnaW5JbmZvQ2FjaGUoKQogICAgIG1fc2F2ZVRvRmlsZUlkbGUuc2V0UHJpb3JpdHkoR19Q
UklPUklUWV9ERUZBVUxUX0lETEUpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjYWNoZURpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsi
LCBudWxscHRyKSk7Ci0gICAgaWYgKFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhjYWNoZURp
cmVjdG9yeS5nZXQoKSkpIHsKKyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICAvLyBEZWxldGUgb2xk
IGNhY2hlIGZpbGUuCiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gb2xkQ2FjaGVQYXRoKGdfYnVp
bGRfZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksICJwbHVnaW5zIiwgbnVsbHB0cikpOwot
ICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CisgICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKIAogICAgICAgICBtX2Nh
Y2hlUGF0aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCBjYWNo
ZUZpbGVuYW1lRm9yQ3VycmVudERpc3BsYXkoKSwgbnVsbHB0cikpOwogICAgICAgICBnX2tleV9m
aWxlX2xvYWRfZnJvbV9maWxlKG1fY2FjaGVGaWxlLmdldCgpLCBtX2NhY2hlUGF0aC5nZXQoKSwg
R19LRVlfRklMRV9OT05FLCBudWxscHRyKTsKQEAgLTExMywxNCArMTEzLDE0IEBAIGJvb2wgUGx1
Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1
Z2luTW9kdWxlSW5mbyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdGltZV90IGxhc3RN
b2RpZmllZDsKLSAgICBpZiAoIVdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdp
blBhdGgsIGxhc3RNb2RpZmllZCkpCisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgdGltZV90IGNhY2hlZExhc3RNb2RpZmllZCA9IHN0YXRpY19jYXN0
PHRpbWVfdD4oZ19rZXlfZmlsZV9nZXRfdWludDY0KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5H
cm91cC5kYXRhKCksICJtdGltZSIsIG51bGxwdHIpKTsKICAgICBpZiAobGFzdE1vZGlmaWVkICE9
IGNhY2hlZExhc3RNb2RpZmllZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2lu
LnBhdGggPSBwbHVnaW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpwYXRo
R2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc3RyaW5nVmFsdWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdl
dCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5p
bmZvLm5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJp
bmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiB2b2lkIFBsdWdpbkluZm9DYWNoZTo6
dXBkYXRlUGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbikKIHsKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAgIGlmICgh
V2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVk
KSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KHBsdWdpblBhdGgsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJp
bmcgcGx1Z2luR3JvdXAgPSBwbHVnaW5QYXRoLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNw
cAppbmRleCAzYjdlZjM4MWE3My4uMDg0ZjZkZWJiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5j
cHAKQEAgLTU2LDEwICs1NiwxMCBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBs
dWdpblBhdGhzSW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiB7CiAgICAgVmVj
dG9yPFN0cmluZz4gcmVzdWx0OwogICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwot
ICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBTdHJp
bmcoIiouc28iKSkpIHsKLSAgICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpKSB7CisgICAgICAgIENT
dHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CiAgICAgICAgIGlmIChyZWFscGF0aChmaWxlbmFtZS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRo
KSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihub3JtYWxpemVkUGF0aCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRo
KSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBQ
bHVnaW5JbmZvU3RvcmU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
bHVnaW5Nb2R1bGVJbmZvJgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIFN0cmluZyBwbHVnaW5Qcm9jZXNzUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9j
ZXNzKCk7CiAgICAgICAgICAgICBwbHVnaW5Qcm9jZXNzUGF0aC5hcHBlbmQoJzInKTsKLSAgICAg
ICAgICAgIGlmICghZmlsZUV4aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCisgICAgICAgICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGx1Z2luUHJvY2Vzc1BhdGgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1By
b3h5VW5peC5jcHAKaW5kZXggMjc2NjkyYmQ5MTIuLmVhMGFhMDExODAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwCkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1By
b3h5OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURh
dGEmCiAjZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1NfR1RLMikKICAgICAgICAgcGx1
Z2luUHJvY2Vzc1BhdGguYXBwZW5kKCcyJyk7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cyhwbHVn
aW5Qcm9jZXNzUGF0aCkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwbHVn
aW5Qcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05OCw4ICs5OCw4IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEm
CiAgICAgfQogI2VuZGlmCiAKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGx1Z2luUHJvY2Vzc1BhdGgpOwotICAgIENTdHJpbmcgcGx1Z2luUGF0aENT
dHJpbmcgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAgQ1N0cmlu
ZyBiaW5hcnlQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdp
blByb2Nlc3NQYXRoKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOwogICAgIGNoYXIqIGFyZ3Zb
NF07CiAgICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsK
ICAgICBhcmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAxMjQ4YWVmNjEyMy4uZDFkZmY0Zjk2
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNDYsNyArNDYs
NyBAQCBzdGF0aWMgYm9vbCBoYXNGaWxlQ2hhbmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwg
V2FsbFRpbWUgc2luY2UpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVN
b2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9u
VGltZSkgPiBzaW5jZTsKQEAgLTU1LDI2ICs1NSwyNiBAQCBzdGF0aWMgYm9vbCBoYXNGaWxlQ2hh
bmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgc2luY2UpCiBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2RlckZvckZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8g
aGFuZGxlID0gb3BlbkFuZExvY2tGaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoaGFu
ZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxl
U3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOwor
ICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwot
ICAgIGlmICghZ2V0RmlsZVNpemUoaGFuZGxlLCBmaWxlU2l6ZSkpIHsKLSAgICAgICAgdW5sb2Nr
QW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZSho
YW5kbGUsIGZpbGVTaXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZp
bGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgc2l6ZV90
IGJ5dGVzVG9SZWFkOwogICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTaXplLCBieXRl
c1RvUmVhZCkpIHsKLSAgICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsK
LSAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSByZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIu
ZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSBGaWxl
U3lzdGVtOjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgp
KTsKIAotICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OnVu
bG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5
dGVzVG9SZWFkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMiw3ICsxMTIsNyBAQCBT
dHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpyZXNvdXJjZUxv
Z0ZpbGVQYXRoKCkgY29uc3QKICAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoc3RvcmFnZVBhdGgsICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxp
c3QiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VQYXRoLCAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CiB9
CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1v
bml0b3JpbmdEaXNrKCkKQEAgLTE0NSw4ICsxNDUsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3Mo
KQogICAgIFN0cmluZyBzdG9yYWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CiAgICAg
QVNTRVJUKCFzdG9yYWdlUGF0aC5pc0VtcHR5KCkpOwogCi0gICAgaWYgKCFmaWxlRXhpc3RzKHN0
b3JhZ2VQYXRoKSkgewotICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0
aCkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZVBhdGgpKSB7Cisg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKSkg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogRmFpbGVkIHRvIGNyZWF0
ZSBkaXJlY3RvcnkgcGF0aCAlcyIsIHN0b3JhZ2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdT
dGF0aXN0aWNzKCkKICAgICAgICAgU3RyaW5nIHJlc291cmNlTG9nUGF0aCA9IHJlc291cmNlTG9n
RmlsZVBhdGgoKTsKICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKTsK
IAotICAgICAgICBpZiAoIWZpbGVFeGlzdHMocmVzb3VyY2VMb2dQYXRoKSkKKyAgICAgICAgaWYg
KCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHJlc291cmNlTG9nUGF0aCkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgbV9maWxlTW9uaXRvciA9IG51bGxwdHI7CkBAIC0yMDksNyArMjA5
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnBvcHVs
YXRlTWVtb3J5U3RvcmVGcm9tRGlzaygpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CiAKICAgICBTdHJpbmcgZmlsZVBhdGggPSByZXNvdXJjZUxvZ0ZpbGVQYXRoKCk7Ci0gICAgaWYg
KGZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhZmlsZUV4aXN0cyhmaWxlUGF0aCkpIHsKKyAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpIHx8ICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkg
ewogICAgICAgICBtX21lbW9yeVN0b3JlLmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgp
OwogICAgICAgICBtb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yNTgsMTYgKzI1OCwxNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiAKICAgICBhdXRvIHN0
b3JhZ2VQYXRoID0gc3RvcmFnZURpcmVjdG9yeVBhdGgoKTsKICAgICBpZiAoIXN0b3JhZ2VQYXRo
LmlzRW1wdHkoKSkgewotICAgICAgICBtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOwogICAg
ICAgICBleGNsdWRlRnJvbUJhY2t1cCgpOwogICAgIH0KIAotICAgIGF1dG8gaGFuZGxlID0gb3Bl
bkFuZExvY2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgoKSwgT3BlbkZvcldyaXRlKTsKLSAgICBp
ZiAoaGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUg
PSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocmVzb3VyY2VMb2dGaWxlUGF0aCgpLCBGaWxl
U3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50NjRfdCB3
cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0
YS0+c2l6ZSgpKTsKLSAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBpbnQ2NF90
IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+
ZGF0YSgpLCByYXdEYXRhLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3Nl
RmlsZShoYW5kbGUpOwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2
NF90PihyYXdEYXRhLT5zaXplKCkpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OiBXZSBvbmx5IHdyb3RlICVkIG91dCBvZiAlenUgYnl0ZXMgdG8gZGlzayIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPih3cml0dGVuQnl0ZXMpLCByYXdEYXRhLT5zaXplKCkpOwpAQCAtMzA2LDcgKzMw
Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjbGVh
cigpCiAKICAgICBzdG9wTW9uaXRvcmluZ0Rpc2soKTsKIAotICAgIGlmICghZGVsZXRlRmlsZShm
aWxlUGF0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKSkKICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogVW5hYmxlIHRvIGRlbGV0ZSBzdGF0aXN0
aWNzIGZpbGU6ICVzIiwgZmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZS5jcHAKaW5kZXggYTQ1NDA4MWI3MGUuLjgyNjE1OGZiMTRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpvcGVu
RGF0YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgb3BlbmluZ1N0cmF0ZWd5KQogCiBib29s
IExvY2FsU3RvcmFnZURhdGFiYXNlOjp0cnlUb09wZW5EYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdT
dHJhdGVneSBvcGVuaW5nU3RyYXRlZ3kpCiB7Ci0gICAgaWYgKCFmaWxlRXhpc3RzKG1fZGF0YWJh
c2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCisgICAgaWYg
KCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRl
Z3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYg
KG1fZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDE5YjIyOWY2YjUzLi5iOWNhODlmOGFiYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKIAogICAgIGludCByZXN1bHQ7CiAg
ICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0g
ICAgICAgIGRlbGV0ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAg
ICAgICAvLyBGSVhNRTogQ2FsbCBvdXQgdG8gdGhlIGNsaWVudC4KICAgICB9CkBAIC0xMDYsNyAr
MTA2LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFi
YXNlcygpCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIG1fZGF0YWJhc2Uu
Y2xvc2UoKTsKIAotICAgIGlmICghZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7
CisgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkp
IHsKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRl
bGV0ZSB0aGUgZGF0YWJhc2UgZmlsZSAoZS5nIHNvbWUgb3RoZXIgcHJvZ3JhbQogICAgICAgICAv
LyBsaWtlIGEgdmlydXMgc2Nhbm5lciBpcyBhY2Nlc3NpbmcgaXQpLCBtYWtlIHN1cmUgdG8gcmVt
b3ZlIGFsbCBlbnRyaWVzLgogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKFNraXBJZk5vbkV4
aXN0ZW50KTsKQEAgLTEyNCwxOSArMTI0LDE5IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZGVs
ZXRlRW1wdHlEaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIH0KIAog
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVDcmVh
dGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6IHN0ZDo6b3B0aW9uYWw8dGltZV90Pihz
dGQ6Om51bGxvcHQpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1l
KGZpbGVQYXRoLCB0aW1lKSA/IHRpbWUgOiBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4oc3RkOjpudWxs
b3B0KTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9u
VGltZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIGlm
ICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQorICAgIGlmICghRmls
ZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHRpbWU7CkBAIC0yMDksNyArMjA5
LDcgQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4g
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSB7
CisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBMb2NhbFN0
b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKS5k
YXRhKCkpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3
IEBAIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25z
dCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdAogICAgIHBsYXRmb3JtTWF5YmVFeGNsdWRlRnJvbUJh
Y2t1cCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgZmlsZW5h
bWUpOwogfQogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0
YWJhc2VQYXRoKCkgY29uc3QKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVn
eSBvcAogCiAgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHRyYWNrZXJEYXRhYmFzZVBhdGgoKTsK
IAotICAgIGlmICghZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVneSA9
PSBTa2lwSWZOb25FeGlzdGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0
YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsK
QEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6aW1w
b3J0T3JpZ2luSWRlbnRpZmllcnMoKQogCiB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6dXBkYXRlVHJhY2tlckRhdGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRmlsZXMoKQog
ewotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzID0gbGlzdERpcmVjdG9yeShtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeSwgIioubG9jYWxzdG9yYWdlIik7CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHMg
PSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCAiKi5s
b2NhbHN0b3JhZ2UiKTsKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zKG1fb3JpZ2lucyk7
CiAgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNGcm9tTG9jYWxTdG9yYWdlRGF0YWJhc2VGaWxl
czsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6
dXBkYXRlVHJhY2tlckRhdGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRgogICAgICAgICBp
ZiAoIXBhdGguZW5kc1dpdGgoIi5sb2NhbHN0b3JhZ2UiKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAg
ICAgICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgp
OwogCiAgICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZW5hbWUuc3Vic3RyaW5n
KDAsIGZpbGVuYW1lLmxlbmd0aCgpIC0gc3RybGVuKCIubG9jYWxzdG9yYWdlIikpOwogCkBAIC0z
NjAsNyArMzYwLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURh
dGFiYXNlV2l0aE9yaWdpbklkZW50aWZpZXIoY29uc3QgU3RyaW4KICAgICAgICAgLy8gVGhlcmUg
YXJlIG5vIG9yaWdpbnMgbGVmdDsgZGVsZXRlIHRoZSB0cmFja2VyIGRhdGFiYXNlLgogICAgICAg
ICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURh
dGFiYXNlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURp
cmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGVsbCBjbGllbnRzIHRoYXQgdGhlIG9yaWdpbiB3YXMgcmVtb3ZlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA4ZDY1YmJlNDUwMy4uNDI4MDgx
OGQ1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0Nv
Y29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTczLDcgKzcz
LDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1l
dGVycygpCiAgICAgcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3Bl
bmRpbmdDb29raWVzKTsKIAogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCi0gICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJD
b3JlOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQ
YXRoRXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5h
bWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5k
bGUpOwogCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5Lmlz
TnVsbCgpKSB7CiAgICAgICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gbV9j
b25maWd1cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXgg
OTdkMmJhY2EyZWYuLmU1OTE2MWU0NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTI0LDggKzEy
NCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3Nh
cnkoKQogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRocy4KICAgICBp
ZiAoIW1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSByZXNvbHZlQW5k
Q3JlYXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpkaXJl
Y3RvcnlOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOwotICAgICAgICBt
X3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9IFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdl
RmlsZSwgV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9y
YWdlRmlsZSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdl
RmlsZSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5z
aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLmNv
b2tpZVN0b3JhZ2VGaWxlKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tp
ZVN0b3JhZ2VGaWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VG
aWxlKSk7CiAgICAgfQogfQogCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBWZWN0b3I8UGx1Z2luTW9k
dWxlSW5mbz4gV2Vic2l0ZURhdGFTdG9yZTo6cGx1Z2lucygpIGNvbnN0CiAKIHN0YXRpYyBTdHJp
bmcgY29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5KQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlE
aXJlY3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3Vy
ZVN0b3AucGxpc3QiKTsKIH0KIAogVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
V2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSkKQEAgLTEyNTcsMTIgKzEyNTcsMTIgQEAgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNv
bnN0IFN0cmkKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
bnM7CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpsaXN0RGly
ZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNvbnN0
IGF1dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZp
bGUgPSBjb21wdXRlTWVkaWFLZXlGaWxlKG9yaWdpblBhdGgpOwotICAgICAgICBpZiAoIVdlYkNv
cmU6OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IFdlYkNvcmU6OnBhdGhHZXRGaWxl
TmFtZShvcmlnaW5QYXRoKTsKKyAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CiAKICAgICAgICAg
aWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21EYXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKSkKICAgICAgICAgICAgIG9y
aWdpbnMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CkBAIC0xMjc1LDE4ICsxMjc1LDE4IEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeSwKIHsKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3Rv
cnkgOiBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIq
IikpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDogV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIp
KSB7CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRp
YUtleURpcmVjdG9yeSk7CiAKICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAg
ICAgIGlmICghV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBt
b2RpZmljYXRpb25UaW1lKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZGlmaWNhdGlvblRpbWUpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OmZyb21fdGltZV90KG1vZGlmaWNhdGlvblRpbWUpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlG
aWxlKTsKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJl
Y3RvcnkpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5
RmlsZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKQEAgLTEyOTUsMTEgKzEyOTUsMTEgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5z
KSB7Ci0gICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlh
S2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAg
ICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6
ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzUG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bv
b2xHdGsuY3BwCmluZGV4IGM1OTVkNTZkZjM5Li5iNGExNzIzOWY1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0xMjQsNyAr
MTI0LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3
b3JrQ2FjaGVEaXJlY3RvcnkoKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9y
bURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFt
ZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiSmF2YVNjcmlwdENvcmVEZWJ1
ZyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4
IDJkMDI3MjFmNzExLi5kZmVmNThiMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIE5TU3Ry
aW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0
aXZlQXBwbGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWdu
ZWQgbG9uZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgLy8gRklYTUU6IFdy
aXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1l
dGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhN
RTogV3JpdGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBV
UkwgbWV0YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwo
KT8pLgogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKICAgICBpZiAo
IXN1Z2dlc3RlZEZpbGVuYW1lLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAppbmRleCBlNTIy
YTU5NTU4ZC4uNzNkODAxYmE5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtODAsMTMgKzgwLDEzIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiBXVEY6OlN0cmluZyBXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGly
ZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFdU
Rjo6U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1
aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNoZSIs
IG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3Rv
cnkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0x
MDIsMzcgKzEwMiwzNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVD
b250ZXh0KCkKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNl
RGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwg
ImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFzZXMiLCAiaW5kZXhl
ZGRiIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIp
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5Lmdl
dCgpKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid3BlIiwgIm1lZGlha2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJjYWNo
ZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tD
YWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIkphdmFTY3JpcHRDb3JlRGVi
dWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5k
ZXggZGNmMTNjMWY1MzcuLmFhYzI4MjgwY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVu
c2lvbk1hbmFnZXI6OldlYktpdEV4dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVu
c2lvbk1hbmFnZXI6OnNjYW5Nb2R1bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVj
dG9yeSwgVmVjdG9yPFN0cmluZz4mIG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9k
dWxlUGF0aHMgPSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3Rvcnks
IFN0cmluZygiKi5zbyIpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3Ry
aW5nKCIqLnNvIikpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNb
aV0pKQorICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQ
YXRoc1tpXSkpCiAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAg
ICAgfQogfQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSwgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdW
YXJpYW50KiBkYXRhID0gbnVsbHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCks
ICIobSZzbXYpIiwgJmRpcmVjdG9yeSwgJmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVj
dG9yeSA9IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0
b3J5KTsKKyAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRp
YWxpemF0aW9uVXNlckRhdGEgPSBhZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxl
R2xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9J
bmplY3RlZEJ1bmRsZUdsaWIuY3BwCmluZGV4IGEyMGE1ZmU0MjIzLi5jZmZhOGZjNGFjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5q
ZWN0ZWRCdW5kbGVHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRp
b25Vc2VyRGF0YSkKIHsKLSAgICBtX3BsYXRmb3JtQnVuZGxlID0gZ19tb2R1bGVfb3BlbihmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24obV9wYXRoKS5kYXRhKCksIEdfTU9EVUxFX0JJTkRfTE9DQUwp
OworICAgIG1fcGxhdGZvcm1CdW5kbGUgPSBnX21vZHVsZV9vcGVuKEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihtX3BhdGgpLmRhdGEoKSwgR19NT0RVTEVfQklORF9MT0NBTCk7
CiAgICAgaWYgKCFtX3BsYXRmb3JtQnVuZGxlKSB7CiAgICAgICAgIGdfd2FybmluZygiRXJyb3Ig
bG9hZGluZyB0aGUgaW5qZWN0ZWQgYnVuZGxlICglcyk6ICVzIiwgbV9wYXRoLnV0ZjgoKS5kYXRh
KCksIGdfbW9kdWxlX2Vycm9yKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IGZiN2Y5YzZjYTc2Li45ZjhlYWYzOTA4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5n
IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6Om1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUZvck9y
aWdpbihjb25zdCBTZWN1cmkKICAgICBpZiAoIW1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOwogfQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQpAQCAtNjIsNyArNjIsNyBAQCBW
ZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRN
ZWRpYUtleU9yaWdpbnMoKQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3Jp
Z2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIp
OworICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewogICAgICAgICBVUkwgdXJsOwogICAgICAg
ICB1cmwuc2V0UHJvdG9jb2woQVNDSUlMaXRlcmFsKCJmaWxlIikpOwpAQCAtODIsMjUgKzgyLDI1
IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6
OmdldE1lZGlhS2V5T3JpZ2lucygpCiAKIHN0YXRpYyB2b2lkIHJlbW92ZUFsbE1lZGlhS2V5U3Rv
cmFnZUZvck9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBkb3VibGUgc3RhcnRE
YXRlLCBkb3VibGUgZW5kRGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYUtleVBhdGhz
ID0gbGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCAiKiIpOworICAgIFZlY3RvcjxTdHJpbmc+IG1l
ZGlhS2V5UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7
CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5UGF0aCA6IG1lZGlhS2V5UGF0aHMpIHsK
LSAgICAgICAgU3RyaW5nIG1lZGlhS2V5RmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
ZWRpYUtleVBhdGgsICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgICAgIFN0cmluZyBtZWRpYUtl
eUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlQYXRo
LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhtZWRpYUtl
eUZpbGUpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxl
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHRpbWVfdCBtb2RUaW1lOwotICAg
ICAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOworICAg
ICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1v
ZFRpbWUpOwogCiAgICAgICAgIGlmIChtb2RUaW1lIDwgc3RhcnREYXRlIHx8IG1vZFRpbWUgPiBl
bmREYXRlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGVsZXRlRmlsZShtZWRp
YUtleUZpbGUpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5UGF0aCk7CiAgICAgfQogICAg
IAotICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIFdlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJldHdl
ZW5EYXRlcyhkb3VibGUKICAgICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9
IGxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAgVmVj
dG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVk
aWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6
IG9yaWdpblBhdGhzKQogICAgICAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5Q
YXRoKG9yaWdpblBhdGgsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7CiB9CkBAIC0xMjcsNyArMTI3LDcg
QEAgdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVudHJp
ZXMoKQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVj
dG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5n
PiBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3Jh
Z2VEaXJlY3RvcnksICIqIik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0
aHMpCiAgICAgICAgIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2lu
UGF0aCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwgc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+OjptYXgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5jcHAKaW5kZXggMDM3MThhMjczMGEuLjE4ZmU5Y2JmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uY3BwCkBAIC00NSw3ICs0NSw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpOZXRzY2FwZVBsdWdpblN0cmVhbShSZWY8TmV0c2NhcGVQbHVnaW4+JiYgcGx1Z2luLCB1aW50
NjRfCiAgICAgLCBtX25wU3RyZWFtKCkKICAgICAsIG1fdHJhbnNmZXJNb2RlKE5QX05PUk1BTCkK
ICAgICAsIG1fb2Zmc2V0KDApCi0gICAgLCBtX2ZpbGVIYW5kbGUoaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkKKyAgICAsIG1fZmlsZUhhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKQogICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgICwgbV91cmxOb3RpZnlIYXNCZWVuQ2FsbGVkKGZhbHNlKQpAQCAtNTksNyArNTksNyBA
QCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6fk5ldHNjYXBlUGx1Z2luU3RyZWFtKCkKIHsKICAgICBB
U1NFUlQoIW1faXNTdGFydGVkKTsKICAgICBBU1NFUlQoIW1fc2VuZE5vdGlmaWNhdGlvbiB8fCBt
X3VybE5vdGlmeUhhc0JlZW5DYWxsZWQpOwotICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgQVNTRVJUKG1fZmlsZUhhbmRsZSA9PSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBs
dWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3Qg
VVJMJiByZWRpcmVjdFJlc3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cykKQEAg
LTI2MywxMiArMjYzLDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRh
VG9QbHVnaW4oKQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmls
ZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAobV9maWxlSGFuZGxl
ID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgJiYgbV9maWxlUGF0aC5pc051bGwoKSkgewor
ICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBv
cmFyeSBmaWxlLgotICAgICAgICBtX2ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIldlYktp
dFBsdWdpblN0cmVhbSIsIG1fZmlsZUhhbmRsZSk7CisgICAgICAgIG1fZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiV2ViS2l0UGx1Z2luU3RyZWFtIiwgbV9maWxlSGFu
ZGxlKTsKIAogICAgICAgICAvLyBXZSBmYWlsZWQgdG8gb3BlbiB0aGUgZmlsZSwgc3RvcCB0aGUg
c3RyZWFtLgotICAgICAgICBpZiAobV9maWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgICAgICBzdG9wKE5QUkVTX05FVFdPUktfRVJS
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc3LDEwICsyNzcsMTAgQEAg
dm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciog
Ynl0ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGludCBieXRlQ291bnQgPSB3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5n
dGgpOworICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVI
YW5kbGUsIGJ5dGVzLCBsZW5ndGgpOwogICAgIGlmIChieXRlQ291bnQgIT0gbGVuZ3RoKSB7CiAg
ICAgICAgIC8vIFRoaXMgaGFwcGVucyBvbmx5IHJhcmVseSwgd2hlbiB3ZSBhcmUgb3V0IG9mIGRp
c2sgc3BhY2Ugb3IgaGF2ZSBhIGRpc2sgSS9PIGVycm9yLgotICAgICAgICBjbG9zZUZpbGUobV9m
aWxlSGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7
CiAKICAgICAgICAgc3RvcChOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpAQCAtMzE0LDIzICsz
MTQsMjMgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RvcChOUFJlYXNvbiByZWFzb24p
CiAgICAgICAgIGlmIChyZWFzb24gPT0gTlBSRVNfRE9ORSkgewogICAgICAgICAgICAgLy8gRW5z
dXJlIHRoYXQgdGhlIGZpbGUgaXMgY3JlYXRlZC4KICAgICAgICAgICAgIGRlbGl2ZXJEYXRhVG9G
aWxlKDAsIDApOwotICAgICAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQotICAgICAgICAgICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwor
ICAgICAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKQorICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Zp
bGVIYW5kbGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQoIW1fZmlsZVBhdGgu
aXNOdWxsKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3BsdWdpbi0+TlBQX1N0cmVh
bUFzRmlsZSgmbV9ucFN0cmVhbSwgbV9maWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vIEp1c3QgY2xvc2UgdGhlIGZpbGUuCi0gICAgICAgICAg
ICBpZiAobV9maWxlSGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAg
ICAgICAgICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICBpZiAobV9maWxl
SGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBEZWxldGUgdGhlIGZpbGUgYWZ0ZXIgY2FsbGluZyBOUFBfU3RyZWFtQXNG
aWxlKCksIGluc3RlYWQgb2YgaW4gdGhlIGRlc3RydWN0b3IuICBJdCBzaG91bGQgYmUgT0sKICAg
ICAgICAgLy8gdG8gZGVsZXRlIHRoZSBmaWxlIGhlcmUgLS0gTlBQX1N0cmVhbUFzRmlsZSgpIGlz
IGFsd2F5cyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIE5QUF9EZXN0cm95U3RyZWFtKCkKICAg
ICAgICAgLy8gKHRoZSBzdHJlYW0gZGVzdHJ1Y3Rpb24gZnVuY3Rpb24pLCBzbyB0aGVyZSBjYW4g
YmUgbm8gZXhwZWN0YXRpb24gdGhhdCBhIHBsdWdpbiB3aWxsIHJlYWQgdGhlIHN0cmVhbQogICAg
ICAgICAvLyBmaWxlIGFzeW5jaHJvbm91c2x5IGFmdGVyIE5QUF9TdHJlYW1Bc0ZpbGUoKSBpcyBj
YWxsZWQuCi0gICAgICAgIGRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CiAgICAgICAgIG1fZmlsZVBhdGggPSBTdHJpbmco
KTsKIAogICAgICAgICAvLyBOUFBfU3RyZWFtQXNGaWxlIGNvdWxkIGNhbGwgTlBOX0Rlc3Ryb3lT
dHJlYW0gYW5kIGRlc3Ryb3kgdGhlIHN0cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5oCmluZGV4IDM2NzgwOTc4OTAxLi40MDc0MDc4ZDdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5oCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29m
ZnNldDsKIAogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJl
YW0gaGFzIHN1Y2Nlc3NmdWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Np
b25TdGF0ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDgwMjQxYzk1ZTFhLi4xYWUy
YzNjOGI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBzdGF0aWMgSFRUUEJvZHkgdG9IVFRQQm9keShjb25zdCBGb3JtRGF0YSYgZm9ybURh
dGEpCiAgICAgICAgICAgICBlbGVtZW50LmZpbGVTdGFydCA9IGZvcm1EYXRhRWxlbWVudC5tX2Zp
bGVTdGFydDsKICAgICAgICAgICAgIGlmIChmb3JtRGF0YUVsZW1lbnQubV9maWxlTGVuZ3RoICE9
IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5maWxl
TGVuZ3RoID0gZm9ybURhdGFFbGVtZW50Lm1fZmlsZUxlbmd0aDsKLSAgICAgICAgICAgIGlmIChm
b3JtRGF0YUVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IGludmFsaWRG
aWxlVGltZSgpKQorICAgICAgICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5tX2V4cGVjdGVkRmls
ZU1vZGlmaWNhdGlvblRpbWUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1lKCkpCiAgICAg
ICAgICAgICAgICAgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZm9ybURh
dGFFbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGJy
ZWFrOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIFJlZjxGb3JtRGF0YT4gdG9Gb3JtRGF0
YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURh
dGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwg
ZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBl
bGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoaW52YWxpZEZpbGVU
aW1lKCkpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5m
aWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihC
bG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRp
b25UaW1lLnZhbHVlX29yKEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKSk7CiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9i
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBiZjMyODVmOTA1ZC4uOWFjZTIyZTNhYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVy
IFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0g
bmFtZXNwYWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9T
dG9yYWdlVHJhY2tlci5jcHA6CisKIDIwMTctMTAtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRh
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzI3MS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5k
ZXggYmExNWU0YTRkYTAuLjQwMzk5NjBiMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3Rv
cmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2UoT3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdT
dHJhdGVneSkKIAogICAgIFN0cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+
ZnVsbERhdGFiYXNlRmlsZW5hbWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwogCi0gICAgaWYgKCFm
aWxlRXhpc3RzKGRhdGFiYXNlRmlsZW5hbWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZO
b25FeGlzdGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxl
bmFtZSkgJiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoZGF0YWJhc2VGaWxlbmFtZS5pc0VtcHR5KCkpIHsKQEAgLTUyMSw3
ICs1MjEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBkYXRh
YmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5hbWUobV9kYXRh
YmFzZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgaWYgKCFkZWxldGVGaWxlKGRhdGFiYXNlRmls
ZW5hbWUpKQorICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFiYXNl
RmlsZW5hbWUpKQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlbGV0ZSBk
YXRhYmFzZSBmaWxlICVzXG4iLCBkYXRhYmFzZUZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VTeW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcAppbmRleCBlZGM5ZWIzM2M1MC4uM2U4ZmY2NWVlNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBA
IC01NSwxMiArNTUsMTIgQEAgU3RvcmFnZVN5bmNNYW5hZ2VyOjp+U3RvcmFnZVN5bmNNYW5hZ2Vy
KCkKIC8vIENhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogU3RyaW5nIFN0b3JhZ2VTeW5j
TWFuYWdlcjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50
aWZpZXIpCiB7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMobV9wYXRoKSkgeworICAgIGlm
ICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcGF0aCkpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGVkIHRvIGNyZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIs
IG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0K
IAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBkYXRhYmFzZUlk
ZW50aWZpZXIgKyAiLmxvY2Fsc3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBkYXRhYmFzZUlkZW50aWZpZXIgKyAiLmxvY2Fs
c3RvcmFnZSIpOwogfQogCiB2b2lkIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2goRnVuY3Rp
b248dm9pZCAoKT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2Uv
U3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDEzMjZjN2QxOTM5Li5kNWU1Zjc0NzdlOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0xMDQs
MTUgKzEwNCwxNSBAQCBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIoY29uc3QgU3RyaW5n
JiBzdG9yYWdlUGF0aCkKIFN0cmluZyBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0
aCgpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICByZXR1
cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJTdG9y
YWdlVHJhY2tlci5kYiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFja2VyLmRiIik7CiB9
CiAKIHN0YXRpYyBib29sIGVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewogICAgIGlmIChjcmVhdGVJZkRv
ZXNOb3RFeGlzdCkKLSAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlO
YW1lKGZpbGVOYW1lKSk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSkpOwogCi0gICAgcmV0dXJu
IGZpbGVFeGlzdHMoZmlsZU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGZpbGVOYW1lKTsKIH0KIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFz
ZShib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgU3Rv
cmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICBWZWN0
b3I8U3RyaW5nPiBwYXRoczsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0
YWJhc2VNdXRleCk7Ci0gICAgICAgIHBhdGhzID0gbGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJl
Y3RvcnlQYXRoLCAiKi5sb2NhbHN0b3JhZ2UiKTsKKyAgICAgICAgcGF0aHMgPSBGaWxlU3lzdGVt
OjpsaXN0RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICIqLmxvY2Fsc3RvcmFnZSIp
OwogICAgIH0KIAogICAgIC8vIFVzZSBhIGNvcHkgb2YgbV9vcmlnaW5TZXQgdG8gZmluZCBleHBp
cmVkIGVudHJpZXMgYW5kIHRvIHNjaGVkdWxlIHRoZWlyCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAg
ICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSAqaXQ7CiAKICAgICAgICAgaWYgKHBhdGgubGVuZ3Ro
KCkgPiBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpICYmIHBhdGguZW5kc1dpdGgoZmlsZUV4dGVuc2lv
bikpIHsKLSAgICAgICAgICAgIFN0cmluZyBmaWxlID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOwor
ICAgICAgICAgICAgU3RyaW5nIGZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0
aCk7CiAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGUuc3Vic3RyaW5n
KDAsIGZpbGUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpKTsKICAgICAgICAgICAg
IGlmICghb3JpZ2luU2V0Q29weS5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkKICAgICAgICAg
ICAgICAgICBzeW5jU2V0T3JpZ2luRGV0YWlscyhvcmlnaW5JZGVudGlmaWVyLCBwYXRoKTsKQEAg
LTQxOCw3ICs0MTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lu
cygpCiAgICAgICAgIGlmICghY2FuRGVsZXRlT3JpZ2luKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0
KDApKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRlbGV0ZUZpbGUoc3RhdGVt
ZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0
YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAgfQogCiAjaWYgIVBMQVRG
T1JNKElPUykKLSAgICBpZiAoIWRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgewor
ICAgIGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7
CiAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZWxl
dGUgdGhlIGRhdGFiYXNlIGZpbGUgKGUuZyBzb21lIG90aGVyIHByb2dyYW0KICAgICAgICAgLy8g
bGlrZSBhIHZpcnVzIHNjYW5uZXIgaXMgYWNjZXNzaW5nIGl0KSwgbWFrZSBzdXJlIHRvIHJlbW92
ZSBhbGwgZW50cmllcy4KICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CkBAIC00
NTQsNyArNDU0LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMo
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogI2VuZGlmCiB9CiAKQEAg
LTUzMyw3ICs1MzMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIGRlbGV0ZUZpbGUocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsK
ICAgICAKICAgICBib29sIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IGZhbHNlOwogICAgIHsK
QEAgLTU0OCw4ICs1NDgsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2lu
KGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICNlbmRpZgogICAgICAgICBtX2RhdGFi
YXNlLmNsb3NlKCk7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgZGVsZXRlRmlsZSh0cmFj
a2VyRGF0YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0b3Jh
Z2VEaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2Vy
RGF0YWJhc2VQYXRoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9y
eShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICNlbmRpZgogICAgIH0KIApAQCAtNjQyLDcgKzY0
Miw3IEBAIGxvbmcgbG9uZyBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbG9uZyBsb25nIHNp
emU7Ci0gICAgcmV0dXJuIGdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRl
eCAzNzNiNGNjMWYxMC4uMzRiZmIyOTM3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJl
aWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmls
ZVN5c3RlbS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAqIFN0b3JhZ2Uv
V2ViRGF0YWJhc2VQcm92aWRlci5tbToKKwogMjAxNy0xMC0yOCAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtGcmFtZVZpZXc6OmxheW91dCBjbGVhbnVwXSBNb3Zl
IGNvcmUgbGF5b3V0IGxvZ2ljIHRvIGEgc2VwYXJhdGUgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXgg
YmVmYzNlMTM0NmMuLjM1NWRlYjAyMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC00Myw3ICs0Myw3IEBA
CiB7CiAgICAgQVNTRVJUKFVSTFN0cmluZyk7CiAgICAgQVNTRVJUKHBhdGgpOwotICAgIFdlYkNv
cmU6OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOworICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIp
OwogfQogCiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGlj
IEJPT0wgZmlsZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKICNpZiBQTEFURk9STShJT1MpCiAtIChO
U1N0cmluZyAqKV93ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJl
Zml4OihOU1N0cmluZyAqKXByZWZpeAogewotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkocHJlZml4KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1t
CmluZGV4IDU3NmQ1NzVhYzU5Li4wOTkyOThiZTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMzMsOSAr
MzMsOSBAQCBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0
b3J5UGF0aCgpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5
ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3Rv
cnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoQVNDSUlMaXRlcmFsKCJ+L0xp
YnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiKSwgW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChBU0NJSUxpdGVyYWwo
In4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIpLCBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNl
c0RpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNE
aXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgiX19fSW5kZXhlZERCIikpOworICAgICAgICBkYXRhYmFz
ZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VzRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIl9fX0luZGV4ZWREQiIpKTsKICAg
ICAKICAgICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQ
YXRoXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0NzQ5MTU3MjNkZS4uYTYy
MzczNTkwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAor
MjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAg
ICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVn
aW5EYXRhYmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcDoKKyAg
ICAgICAgKiBQbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVn
aW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAg
KiBXZWJEYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6
CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgor
CiAyMDE3LTEwLTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0ZyYW1lVmlldzo6bGF5b3V0IGNsZWFudXBdIE1vdmUgY29yZSBsYXlvdXQgbG9naWMgdG8gYSBz
ZXBhcmF0ZSBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggYjBlNjA2ZTk0MzMuLjMyODUwNmYwYWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAgIGF1
dG8gcGF0aHNFbmQgPSBwYXRocy5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBwYXRocy5iZWdp
bigpOyBpdCAhPSBwYXRoc0VuZDsgKytpdCkgewogICAgICAgICB0aW1lX3QgbGFzdE1vZGlmaWVk
OwotICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKCppdCwgbGFzdE1vZGlmaWVk
KSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQs
IGxhc3RNb2RpZmllZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwYXRoc1dp
dGhUaW1lcy5hZGQoKml0LCBsYXN0TW9kaWZpZWQpOwpAQCAtMzEzLDEwICszMTMsMTAgQEAgdm9p
ZCBQbHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgUGx1Z2kKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJ
c05vdERpc2FibGVkKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0CiB7CiAgICAgLy8gU2tp
cCBwbHVnaW4gZmlsZXMgdGhhdCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUuCi0gICAgaWYgKG1f
ZGlzYWJsZWRQbHVnaW5GaWxlcy5jb250YWlucyhwYXRoR2V0RmlsZU5hbWUoZmlsZVBhdGgpKSkK
KyAgICBpZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKEZpbGVTeXN0ZW06OnBhdGhH
ZXRGaWxlTmFtZShmaWxlUGF0aCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1
cm4gZmlsZUV4aXN0cyhmaWxlUGF0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZmlsZVBhdGgpOwogfQogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lu
cyhQbHVnaW5TZXQmIHBsdWdpbnMpIGNvbnN0CkBAIC0zODIsNyArMzgyLDcgQEAgVmVjdG9yPFN0
cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiB7CiAgICAg
VmVjdG9yPFN0cmluZz4gcGF0aHM7CiAKLSAgICBTdHJpbmcgdXNlclBsdWdpblBhdGggPSBob21l
RGlyZWN0b3J5UGF0aCgpOworICAgIFN0cmluZyB1c2VyUGx1Z2luUGF0aCA9IEZpbGVTeXN0ZW06
OmhvbWVEaXJlY3RvcnlQYXRoKCk7CiAgICAgdXNlclBsdWdpblBhdGguYXBwZW5kKFN0cmluZygi
XFxBcHBsaWNhdGlvbiBEYXRhXFxNb3ppbGxhXFxwbHVnaW5zIikpOwogICAgIHBhdGhzLmFwcGVu
ZCh1c2VyUGx1Z2luUGF0aCk7CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBQ
bHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKIAogYm9vbCBQbHVnaW5E
YXRhYmFzZTo6aXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQog
ewotICAgIFN0cmluZyBwcmVmZXJyZWRQYXRoID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKKyAgICBT
dHJpbmcgcHJlZmVycmVkUGF0aCA9IEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCk7CiAK
ICAgICBwcmVmZXJyZWRQYXRoLmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRpb24gRGF0YVxcTW96
aWxsYVxccGx1Z2lucyIpKTsKIApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBj
b25zdAogCiAgICAgYXV0byBkaXJzRW5kID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5lbmQoKTsKICAg
ICBmb3IgKGF1dG8gZEl0ID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5iZWdpbigpOyBkSXQgIT0gZGly
c0VuZDsgKytkSXQpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBsaXN0
RGlyZWN0b3J5KCpkSXQsIGZpbGVOYW1lRmlsdGVyKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
cGx1Z2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KCpkSXQsIGZpbGVOYW1lRmls
dGVyKTsKICAgICAgICAgYXV0byBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMuZW5kKCk7CiAgICAg
ICAgIGZvciAoYXV0byBwSXQgPSBwbHVnaW5QYXRocy5iZWdpbigpOyBwSXQgIT0gcGx1Z2luc0Vu
ZDsgKytwSXQpIHsKICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQo
KnBJdCkpCkBAIC00MjMsMTQgKzQyMywxNCBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVn
aW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKIAogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAKLXN0YXRpYyB2b2lkIGZp
bGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIFZlY3Rv
cjxjaGFyPiYgYnVmZmVyKQorc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmls
ZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgVmVjdG9yPGNoYXI+JiBidWZm
ZXIpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSAwOwogICAgIHNpemVfdCBidWZmZXJDYXBh
Y2l0eSA9IDEwMjQ7CiAgICAgYnVmZmVyLnJlc2l6ZShidWZmZXJDYXBhY2l0eSk7CiAKICAgICBk
byB7Ci0gICAgICAgIGJ1ZmZlclNpemUgKz0gcmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRh
KCkgKyBidWZmZXJTaXplLCBidWZmZXJDYXBhY2l0eSAtIGJ1ZmZlclNpemUpOworICAgICAgICBi
dWZmZXJTaXplICs9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0YSgp
ICsgYnVmZmVyU2l6ZSwgYnVmZmVyQ2FwYWNpdHkgLSBidWZmZXJTaXplKTsKICAgICAgICAgaWYg
KGJ1ZmZlclNpemUgPT0gYnVmZmVyQ2FwYWNpdHkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXJD
YXBhY2l0eSA8IG1heGltdW1QZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVNpemUpIHsKICAg
ICAgICAgICAgICAgICBidWZmZXJDYXBhY2l0eSAqPSAyOwpAQCAtNDc4LDExICs0NzgsMTEgQEAg
dm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBp
ZiAoIWlzUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFk
YXRhQ2FjaGVQYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZTsKLSAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3Rl
bnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNv
bHV0ZUNhY2hlUGF0aCwgT3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlOworICAgIFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwg
cGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7CisgICAgZmlsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVh
ZCk7CiAKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmlsZSkpCisgICAgaWYgKCFGaWxlU3lzdGVt
Ojppc0hhbmRsZVZhbGlkKGZpbGUpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIGNh
Y2hlIGFzIGxvYWRlZCByZWdhcmRsZXNzIG9mIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gSWYKQEAgLTQ5
MSwxMSArNDkxLDExIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRh
dGFDYWNoZSgpCiAKICAgICBWZWN0b3I8Y2hhcj4gZmlsZUNvbnRlbnRzOwogICAgIGZpbGxCdWZm
ZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZSwgZmlsZUNvbnRlbnRzKTsKLSAgICBjbG9zZUZpbGUo
ZmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogCiAgICAgaWYgKGZpbGVD
b250ZW50cy5zaXplKCkgPCAyIHx8IGZpbGVDb250ZW50cy5maXJzdCgpICE9IHNjaGVtYVZlcnNp
b24gfHwgZmlsZUNvbnRlbnRzLmxhc3QoKSAhPSAnXDAnKSB7CiAgICAgICAgIExPR19FUlJPUigi
VW5hYmxlIHRvIHJlYWQgcGx1Z2luIG1ldGFkYXRhIGNhY2hlOiBjb3JydXB0IHNjaGVtYSIpOwot
ICAgICAgICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTUxOCwxMyArNTE4LDEzIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0
ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHJlYWRVVEY4U3RyaW5nKGRlc2Ms
IGJ1ZmZlclBvcywgZW5kKQogICAgICAgICAgICAgICAmJiByZWFkVVRGOFN0cmluZyhtaW1lRGVz
YywgYnVmZmVyUG9zLCBlbmQpKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
cmVhZCBwbHVnaW4gbWV0YWRhdGEgY2FjaGU6IGNvcnJ1cHQgZGF0YSIpOwotICAgICAgICAgICAg
ZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIFNraXAgbWV0YWRhdGEgdGhhdCBwb2ludHMgdG8gcGx1Z2lucyBm
cm9tIGRpcmVjdG9yaWVzIHRoYXQKICAgICAgICAgLy8gYXJlIG5vdCBwYXJ0IG9mIHBsdWdpbiBk
aXJlY3RvcnkgbGlzdCBhbnltb3JlLgotICAgICAgICBTdHJpbmcgcGx1Z2luRGlyZWN0b3J5TmFt
ZSA9IGRpcmVjdG9yeU5hbWUocGF0aCk7CisgICAgICAgIFN0cmluZyBwbHVnaW5EaXJlY3RvcnlO
YW1lID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKICAgICAgICAgaWYgKG1fcGx1
Z2luRGlyZWN0b3JpZXMuZmluZChwbHVnaW5EaXJlY3RvcnlOYW1lKSA9PSBXVEY6Om5vdEZvdW5k
KQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTU0MSwxNiArNTQxLDE2IEBAIHZvaWQgUGx1
Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgbV9wbHVnaW5Q
YXRoc1dpdGhUaW1lcy5zd2FwKGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzKTsKIH0KIAotc3Rh
dGljIGJvb2wgd3JpdGVVVEY4U3RyaW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBT
dHJpbmcmIHN0cmluZykKK3N0YXRpYyBib29sIHdyaXRlVVRGOFN0cmluZyhGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQ1N0
cmluZyB1dGY4U3RyaW5nID0gc3RyaW5nLnV0ZjgoKTsKICAgICBpbnQgbGVuZ3RoID0gdXRmOFN0
cmluZy5sZW5ndGgoKSArIDE7Ci0gICAgcmV0dXJuIHdyaXRlVG9GaWxlKGZpbGUsIHV0ZjhTdHJp
bmcuZGF0YSgpLCBsZW5ndGgpID09IGxlbmd0aDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0gbGVuZ3RoOwogfQog
Ci1zdGF0aWMgYm9vbCB3cml0ZVRpbWUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IHRp
bWVfdCYgdGltZSkKK3N0YXRpYyBib29sIHdyaXRlVGltZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZSwgY29uc3QgdGltZV90JiB0aW1lKQogewotICAgIHJldHVybiB3cml0ZVRv
RmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmdGltZSksIHNpemVvZih0
aW1lX3QpKSA9PSBzaXplb2YodGltZV90KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJnRpbWUpLCBzaXplb2Yo
dGltZV90KSkgPT0gc2l6ZW9mKHRpbWVfdCk7CiB9CiAKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnVw
ZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKQEAgLTU1OCwyNiArNTU4LDI2IEBAIHZvaWQg
UGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBpZiAo
IWlzUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFkYXRh
Q2FjaGVQYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtYWtlQWxsRGly
ZWN0b3JpZXMocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkpOwotICAgIFN0cmluZyBhYnNv
bHV0ZUNhY2hlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRh
dGFDYWNoZVBhdGgoKSwgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7Ci0g
ICAgZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpKTsKKyAgICBTdHJpbmcg
YWJzb2x1dGVDYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNh
Y2hlRmlsZW5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBh
dGgpOwogCiAgICAgaWYgKG1fcGx1Z2lucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNvbHV0
ZUNhY2hlUGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZTsKKyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNo
ZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoIWlzSGFuZGxlVmFs
aWQoZmlsZSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBwbHVnaW4gbWV0YWRhdGEgY2FjaGUg
Zm9yIHNhdmluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2hhciBsb2NhbFNj
aGVtYVZlcnNpb24gPSBzY2hlbWFWZXJzaW9uOwotICAgIGlmICh3cml0ZVRvRmlsZShmaWxlLCAm
bG9jYWxTY2hlbWFWZXJzaW9uLCAxKSAhPSAxKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGZpbGUsICZsb2NhbFNjaGVtYVZlcnNpb24sIDEpICE9IDEpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIGNhY2hlIHNjaGVtYSIpOwot
ICAgICAgICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNo
ZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC01ODksMTMgKzU4OSwxMyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjp1cGRh
dGVQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHdyaXRlVVRGOFN0
cmluZyhmaWxlLCAoKml0KS0+ZGVzY3JpcHRpb24oKSkKICAgICAgICAgICAgICAgJiYgd3JpdGVV
VEY4U3RyaW5nKGZpbGUsICgqaXQpLT5mdWxsTUlNRURlc2NyaXB0aW9uKCkpKSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIHRvIGNhY2hl
Iik7Ci0gICAgICAgICAgICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgICAgICBkZWxldGVGaWxl
KGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBh
dGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgY2xvc2VG
aWxlKGZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKIH0KIAogYm9vbCBQ
bHVnaW5EYXRhYmFzZTo6aXNQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXgg
N2RkZTJjYjAyNzcuLjZhZmY1MWQwNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBQbHVnaW5Q
YWNrYWdlOjpQbHVnaW5QYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90JiBs
YXN0TW9kaWZpZWQpCiAgICAgLCBtX2luZm9Jc0Zyb21DYWNoZSh0cnVlKQogI2VuZGlmCiB7Ci0g
ICAgbV9maWxlTmFtZSA9IHBhdGhHZXRGaWxlTmFtZShtX3BhdGgpOworICAgIG1fZmlsZU5hbWUg
PSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9wYXRoKTsKICAgICBtX3BhcmVudERpcmVj
dG9yeSA9IG1fcGF0aC5sZWZ0KG1fcGF0aC5sZW5ndGgoKSAtIG1fZmlsZU5hbWUubGVuZ3RoKCkg
LSAxKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5T
dHJlYW0uY3BwCmluZGV4IDEzODdmYWJiMDEwLi5jNjllMWU5MDE4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBQbHVnaW5TdHJlYW06OlBsdWdpblN0cmVhbShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVu
dCwgRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgICwgbV9zdHJlYW1TdGF0ZShTdHJlYW1C
ZWZvcmVTdGFydGVkKQogICAgICwgbV9sb2FkTWFudWFsbHkoZmFsc2UpCiAgICAgLCBtX2RlbGF5
RGVsaXZlcnlUaW1lcigqdGhpcywgJlBsdWdpblN0cmVhbTo6ZGVsYXlEZWxpdmVyeVRpbWVyRmly
ZWQpCi0gICAgLCBtX3RlbXBGaWxlSGFuZGxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisg
ICAgLCBtX3RlbXBGaWxlSGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCiAgICAgLCBtX3BsdWdpbkZ1bmNzKHBsdWdpbkZ1bmNzKQogICAgICwgbV9pbnN0YW5jZShp
bnN0YW5jZSkKICAgICAsIG1fcXVpcmtzKHF1aXJrcykKQEAgLTIxMiwxMCArMjEyLDEwIEBAIHZv
aWQgUGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbSgpCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlID09
IE5QX05PUk1BTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYXRoID0gb3BlblRlbXBvcmFy
eUZpbGUoIldLUCIsIG1fdGVtcEZpbGVIYW5kbGUpOworICAgIG1fcGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJXS1AiLCBtX3RlbXBGaWxlSGFuZGxlKTsKIAogICAgIC8vIFNv
bWV0aGluZyB3ZW50IHdyb25nLCBjYW5jZWwgbG9hZGluZyB0aGUgc3RyZWFtCi0gICAgaWYgKCFp
c0hhbmRsZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkKICAgICAgICAgY2FuY2VsQW5kRGVzdHJveVN0
cmVhbShOUFJFU19ORVRXT1JLX0VSUik7CiB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBs
dWdpblN0cmVhbTo6ZGVzdHJveVN0cmVhbSgpCiAgICAgQVNTRVJUKG1fcmVhc29uICE9IFdlYlJl
YXNvbk5vbmUpOwogICAgIEFTU0VSVCghbV9kZWxpdmVyeURhdGEgfHwgbV9kZWxpdmVyeURhdGEt
PnNpemUoKSA9PSAwKTsKIAotICAgIGNsb3NlRmlsZShtX3RlbXBGaWxlSGFuZGxlKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUobV90ZW1wRmlsZUhhbmRsZSk7CiAKICAgICBib29sIG5ld1N0
cmVhbUNhbGxlZCA9IG1fc3RyZWFtLm5kYXRhOwogCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQ
bHVnaW5TdHJlYW06OmRlc3Ryb3lTdHJlYW0oKQogICAgICAgICBtX2NsaWVudC0+c3RyZWFtRGlk
RmluaXNoTG9hZGluZyh0aGlzKTsKIAogICAgIGlmICghbV9wYXRoLmlzTnVsbCgpKQotICAgICAg
ICBkZWxldGVGaWxlKG1fcGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9w
YXRoKTsKIH0KIAogdm9pZCBQbHVnaW5TdHJlYW06OmRlbGF5RGVsaXZlcnlUaW1lckZpcmVkKCkK
QEAgLTQ0MCw4ICs0NDAsOCBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogICAgICAgICBkZWxp
dmVyRGF0YSgpOwogICAgIH0KIAotICAgIGlmIChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0b3Bw
ZWQgJiYgaXNIYW5kbGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkgewotICAgICAgICBpbnQgYnl0
ZXNXcml0dGVuID0gd3JpdGVUb0ZpbGUobV90ZW1wRmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsK
KyAgICBpZiAobV9zdHJlYW1TdGF0ZSAhPSBTdHJlYW1TdG9wcGVkICYmIEZpbGVTeXN0ZW06Omlz
SGFuZGxlVmFsaWQobV90ZW1wRmlsZUhhbmRsZSkpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRl
biA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fdGVtcEZpbGVIYW5kbGUsIGRhdGEsIGxlbmd0
aCk7CiAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gbGVuZ3RoKQogICAgICAgICAgICAgY2Fu
Y2VsQW5kRGVzdHJveVN0cmVhbShOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggM2I2YzcxMDVm
MTAuLjFlNWFmMzBlZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVn
aW5zL1BsdWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4gbV9kZWxpdmVyeURhdGE7CiAK
LSAgICAgICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fdGVtcEZpbGVIYW5kbGU7CisgICAgICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBGaWxlSGFuZGxlOwogCiAgICAgICAg
IGNvbnN0IE5QUGx1Z2luRnVuY3MqIG1fcGx1Z2luRnVuY3M7CiAgICAgICAgIE5QUCBtX2luc3Rh
bmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25D
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNw
cAppbmRleCBkY2Q1NGE4YjkzMi4uMWVhOTAxNzhhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYkFw
cGxpY2F0aW9uQ2FjaGUqIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKIAog
c3RhdGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiB7Ci0gICAgU3RyaW5nIHBhdGgg
PSBsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTdHJpbmcgcGF0aCA9
IEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogCiAjaWYg
VVNFKENGKQogICAgIGF1dG8gY2FjaGVEaXJlY3RvcnlQcmVmZXJlbmNlID0gYWRvcHRDRihDRlBy
ZWZlcmVuY2VzQ29weUFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViUHJl
ZmVyZW5jZXM6OmFwcGxpY2F0aW9uSWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggOWM0NmY0YjIyNDcuLmZiNTQ0MDgwMjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAg
LTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdl
dCgpKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFi
YXNlcyIpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCksICJEYXRhYmFzZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0
YWJhc2VzSWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG93bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
Q3VybC5jcHAKaW5kZXggMTYwZTliYmM1YjEuLjg3MzI3NzhkOWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lk
IFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAKICAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uu
c3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHJl
c3BvbnNlLnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKICAg
ICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc3VnZ2Vz
dGVkRmlsZW5hbWUpOwogICAgICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUihzdWdn
ZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggZjQ0NjFiNmVmMTguLmYx
MTUwZWU3MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIHVzaW5nIHN0ZDo6bnVtZXJpY19saW1pdHM7CiAKIHN0YXRpYyBj
b25zdCBTdHJpbmcmIG9sZFByZWZlcmVuY2VzUGF0aCgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBw
YXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdl
RGlyZWN0b3J5KCksICJXZWJLaXRQcmVmZXJlbmNlcy5wbGlzdCIpOworICAgIHN0YXRpYyBTdHJp
bmcgcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVt
Ojpyb2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5j
ZXMucGxpc3QiKTsKICAgICByZXR1cm4gcGF0aDsKIH0KIApAQCAtNTE2LDcgKzUxNiw3IEBAIHZv
aWQgV2ViUHJlZmVyZW5jZXM6Om1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNl
cygpCiAKICAgICBjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoc3RhdGljX2Nh
c3Q8Q0ZEaWN0aW9uYXJ5UmVmPihwbGlzdC5nZXQoKSkpOwogCi0gICAgZGVsZXRlRmlsZShvbGRQ
cmVmZXJlbmNlc1BhdGgoKSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShvbGRQcmVmZXJl
bmNlc1BhdGgoKSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJl
bmNlc1RvQ0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKaW5kZXggMzllNDM4YzM2MGQuLjA5NGI2NTAzNmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgV2ViVmlldzo6
c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIGlmIChwcmVm
ZXJlbmNlICYmIChDRlN0cmluZ0dldFR5cGVJRCgpID09IENGR2V0VHlwZUlEKHByZWZlcmVuY2Uu
Z2V0KCkpKSkKICAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHN0YXRp
Y19jYXN0PENGU3RyaW5nUmVmPihwcmVmZXJlbmNlLmxlYWtSZWYoKSkpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGNm
dXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOwogICAgIH0KICAgICBjYWNoZURp
cmVjdG9yeSA9IFN0cmluZyhjZnVybENhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICBDRkluZGV4
IGNhY2hlTWVtb3J5Q2FwYWNpdHkgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY5ZmFjOGUwYzFiLi4xZDA0OWFlOTg0ZiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDE3LTEwLTMxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKwor
ICAgICAgICBBZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisKIDIwMTctMTAtMzAg
IE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtX
UEVdIEZpeCBidWlsZCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAKaW5kZXggZmRlMWZlMTAzODAuLjBiNTllYTE3MzgyIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBz
dGF0aWMgU3RyaW5nIGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAgICAgICByZXR1
cm4gU3RyaW5nIChwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKTsKIH0KICNlbmRpZgogCkBAIC05MTIsNyArOTEyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q2Fj
aGVGb2xkZXIoKQogCiAgICAgQ09NUHRyPElXZWJDYWNoZT4gd2ViQ2FjaGU7CiAgICAgaWYgKFNV
Q0NFRURFRChXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJDYWNoZSwgMCwgSUlEX0lXZWJD
YWNoZSwgKHZvaWQqKikmd2ViQ2FjaGUpKSkgewotICAgICAgICBfYnN0cl90IGNhY2hlRm9sZGVy
ID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxD
YWNoZSIpLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIF9ic3RyX3QgY2FjaGVGb2xkZXIgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJM
b2NhbENhY2hlIikudXRmOCgpLmRhdGEoKTsKICAgICAgICAgd2ViQ2FjaGUtPnNldENhY2hlRm9s
ZGVyKGNhY2hlRm9sZGVyKTsKICAgICB9CiB9CkBAIC05MjksOSArOTI5LDkgQEAgc3RhdGljIHZv
aWQgc2V0RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBTdHJpbmcg
bGlicmFyeVBhdGggPSBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCk7CiAKICAgICAvLyBT
ZXQgdXAgdGhlc2UgdmFsdWVzIGJlZm9yZSBjcmVhdGluZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRo
ZSB2YXJpb3VzIGluaXRpYWxpemF0aW9ucyB3aWxsIHNlZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVz
LgotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1
bHRzS2V5LCBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJE
YXRhYmFzZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQ
cmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdl
IikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5j
ZXNTZXRBcHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFs
dWUoV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFw
cFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xMDMxLDcg
KzEwMzEsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3Rh
dGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAg
ICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShwYXRo
T3JVcmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19N
QVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJh
Y2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBA
IC0xMDUwLDIwICsxMDUwLDIwIEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25z
dCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
U3RyaW5nIHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlv
dXRUZXN0cy5sZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygw
LCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7
CisgICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9u
ICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IHBvc3NpYmxlUGF0aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhU
b1Rlc3QpKTsKKyAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkp
OwogCiAgICAgc2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5k
KCdcXCcpOwogICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVFbmQg
IT0gV1RGOjpub3RGb3VuZCkgewogICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5zdWJz
dHJpbmcoMCwgbmV4dENhbmRpZGF0ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5k
KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBw
YXRoVG9UZXN0KSk7CisgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRo
VG9UZXN0KSk7CiAgICAgICAgIG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VG
aW5kKCdcXCcpOwogICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIHBv
cyA9IHBvc3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsr
cG9zKSB7Ci0gICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsgCisgICAgICAgIHBhdGhUb0ZvbnRG
YWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgq
cG9zLCAicmVzb3VyY2VzXFwiKTsKIAogICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBh
dGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkp
CiAgICAgICAgICAgICByZXR1cm4gcGF0aFRvRm9udEZhbGxiYWNrOwpAQCAtMTA3Nyw3ICsxMDc3
LDcgQEAgc3RhdGljIHZvaWQgYWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYg
Zm9udEZhbGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZv
bnQtZmFsbGJhY2suY3NzIik7CisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFj
LWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4
aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgp
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgc3RhdGljIHZvaWQgcmVt
b3ZlRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkK
ICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7
CisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1m
YWxsYmFjay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNr
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25p
dG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAKaW5kZXggZmJjYzYyM2ZiZmMuLjI1Mjc0NGI0MjFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTU1LDE5ICs1NSwxOSBA
QCBwdWJsaWM6CiAgICAgICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogICAg
ICAgICAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgQVNTRVJUX05F
KGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgICAg
IAotICAgICAgICBpbnQgcmMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERh
dGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CisgICAgICAg
IGludCByYyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0
RGF0YS51dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRvclRlc3REYXRhLmxlbmd0aCgpKTsKICAgICAg
ICAgQVNTRVJUX05FKHJjLCAtMSk7CiAgICAgICAgIAotICAgICAgICBjbG9zZUZpbGUoaGFuZGxl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZSht
X3RlbXBGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmls
ZVBhdGgpOwogICAgIH0KICAgICAKICAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsg
cmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9CkBAIC0xMTQsMTkgKzExNCwxOSBAQCBzdGF0aWMgU3Ry
aW5nIHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgY29uc3Rl
eHByIGludCBidWZmZXJTaXplID0gMTAyNDsKIAotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUo
cGF0aCwgT3BlbkZvclJlYWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAg
IGF1dG8gc291cmNlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3Bl
bkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChzb3VyY2UpKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1ZmZlcjxMQ2hhcj4g
YnVmZmVyKGJ1ZmZlclNpemUpOwogCiAgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2Nv
cGVFeGl0KFtzb3VyY2VdKCkgewotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0g
c291cmNlOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfSk7CiAKICAgICAvLyBTaW5jZSB3ZSBjb250cm9sIHRo
ZSB0ZXN0IGZpbGVzLCB3ZSBrbm93IHdlIG9ubHkgbmVlZCBvbmUgcmVhZAotICAgIGludCByZWFk
Qnl0ZXMgPSByZWFkRnJvbUZpbGUoc291cmNlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZm
ZXIuY2hhcmFjdGVycygpKSwgYnVmZmVyU2l6ZSk7CisgICAgaW50IHJlYWRCeXRlcyA9IEZpbGVT
eXN0ZW06OnJlYWRGcm9tRmlsZShzb3VyY2UsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZl
ci5jaGFyYWN0ZXJzKCkpLCBidWZmZXJTaXplKTsKICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMg
U3RyaW5nIHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIFRFU1RfRihG
aWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhp
c3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CiAKQEAgLTE4NCw3ICsxODQsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRl
Y3RDaGFuZ2UpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdl
cykKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAg
ICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTI0NCw3ICsyNDQsNyBA
QCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0aXBsZUNoYW5nZXMpCiAKIFRFU1Rf
RihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogewotICAgIEVYUEVDVF9UUlVFKGZp
bGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFp
blJ1bkxvb3AoKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3Qs
IERldGVjdERlbGV0aW9uKQogCiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VB
bmRUaGVuRGVsZXRlKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRo
KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0
aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMzQw
LDcgKzM0MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5E
ZWxldGUpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNl
cXVlbnRDaGFuZ2UpCiB7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgo
KSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRo
KCkpKTsKIAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC0zNzcs
MTIgKzM3NywxMiBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RT
dWJzZXF1ZW50Q2hhbmdlKQogICAgIHJlc2V0VGVzdFN0YXRlKCk7CiAKICAgICB0ZXN0UXVldWUt
PmRpc3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbGVF
eGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAotICAgICAgICBhdXRvIGhhbmRsZSA9IG9w
ZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBPcGVuRm9yV3JpdGUpOwotICAgICAgICBBU1NFUlRfTkUo
aGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgYXV0byBoYW5kbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6T3BlbkZv
cldyaXRlKTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7CiAKLSAgICAgICAgaW50IHJjID0gd3JpdGVUb0ZpbGUoaGFuZGxl
LCBGaWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEu
bGVuZ3RoKCkpOworICAgICAgICBpbnQgcmMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5k
bGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0
YS5sZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogCiAgICAgICAgIGF1dG8g
Zmlyc3RDb21tYW5kID0gY3JlYXRlQ29tbWFuZCh0ZW1wRmlsZVBhdGgoKSwgRmlsZU1vbml0b3JS
ZXZpc2VkRGF0YSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmls
ZVN5c3RlbS5jcHAKaW5kZXggN2Y2Zjk3NDk4ZDEuLmYyNTg2Njk0NjA2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NiwzNSAr
NDYsMzUgQEAgcHVibGljOgogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZp
bGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhhbmRsZSwg
RmlsZVN5c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAgICAg
IGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1U
ZXN0RGF0YSkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAogICAg
ICAgICBtX3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7
Ci0gICAgICAgIGNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5
bWxpbmtQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVt
cEZpbGVQYXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwogCi0gICAgICAgIG1fdGVtcEVtcHR5
RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUp
OwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhh
bmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgICAg
IG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0
eSBUZXN0IEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAg
ICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Ci0gICAg
ICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBo
YW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAg
ICBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVt
cHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAg
ICAgICBtX3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgIH0KIAogICAgIHZvaWQgVGVhckRvd24oKSBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Ci0gICAgICAg
IGRlbGV0ZUZpbGUobV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZSht
X3RlbXBFbXB0eUZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmlu
Z0ZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgp
OwotICAgICAgICBkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7CiAgICAgfQogCiAg
ICAgY29uc3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsg
fQpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRlOgogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBw
aW5nTWlzc2luZ0ZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7Cisg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3Rf
ZXhpc3RpbmdfZmlsZSIpLCBzdWNjZXNzKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CiAg
ICAgRVhQRUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKIFRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAg
TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOwor
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0
aCgpLCBzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJV
RSghIW1hcHBlZEZpbGVEYXRhKTsKICAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXpl
KCkgPT0gc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwpAQCAtMTE0LDI2ICsxMTQsMjYgQEAg
VEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQogVEVTVF9GKEZpbGVT
eXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0eUZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNz
OwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCks
IHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3Mp
OwogICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9CiAKIFRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hh
dmVTYW1lVm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7
Ci0gICAgRVhQRUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxl
UGF0aCgpLCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxl
c0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5n
RmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVW
b2x1bWUodGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmlu
Z0ZpbGVQYXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgp
LCBxdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgR2V0RmlsZU1ldGFkYXRhU3ltbGluaykKIHsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9
IGZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIGF1dG8gc3ltbGlua01l
dGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7
CiAgICAgQVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc192YWx1ZSgpKTsKICAgICBFWFBF
Q1RfVFJVRShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlw
ZTo6U3ltYm9saWNMaW5rKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
eW1saW5rTWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERh
dGEpKTsKIAotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdT
eW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEg
PSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxp
bmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc192YWx1ZSgpKTsK
ICAgICBFWFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFk
YXRhOjpUeXBlOjpGaWxlKTsKICAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0
YSksIHN0YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmln
aW4uY3BwCmluZGV4IDMyY2UzNjE4ZGU1Li5iOTI4MzI0ZjM1OSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00MSwy
NiArNDEsMjYgQEAgcHVibGljOgogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7
CiAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1w
RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwg
aGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAg
IAotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUo
InRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRs
ZSk7CisgICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fYmFuZ0Nv
bnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmls
ZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX2JhbmdD
b250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFF
bXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAg
ICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwg
aGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQog
CiAgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBkZWxldGVGaWxl
KG1fdGVtcEZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0Zp
bGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwot
ICAgICAgICBkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOwogICAgIH0KICAg
ICAKICAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQ
YXRoOyB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hh
cmVkQnVmZmVyVGVzdC5jcHAKaW5kZXggYTI5N2E1NWI4MzMuLjhmZTM1NjdjMWUxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRl
c3QuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgp
CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCiAgICAgLy8gY3JlYXRlIHRlbXAg
ZmlsZQotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgbV90ZW1wRmlsZVBhdGgg
PSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICB3cml0ZVRv
RmlsZShoYW5kbGUsIHRlc3REYXRhKCksIHN0cmxlbih0ZXN0RGF0YSgpKSk7Ci0gICAgY2xvc2VG
aWxlKGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsK
KyAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1w
VGVzdEZpbGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwg
dGVzdERhdGEoKSwgc3RybGVuKHRlc3REYXRhKCkpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKIAotICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5Rmls
ZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOwor
ICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgi
dGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZSho
YW5kbGUpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKLSAgICBk
ZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKLSAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5Rmls
ZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXgg
YTIwYjM4MzE1NjYuLjJlMmMzOTQ3OGU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQpA
QCAtNDAsMjEgKzQwLDIxIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChEYXRh
YmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpCiB7Ci0gICAgUGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZTsKLSAgICBTdHJpbmcgZGF0YWJhc2VGaWxlUGF0aCA9IG9wZW5UZW1w
b3JhcnlGaWxlKCJ0ZW1wRW1wdHlEYXRhYmFzZSIsIGhhbmRsZSk7Ci0gICAgY2xvc2VGaWxlKGhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBT
dHJpbmcgZGF0YWJhc2VGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wRW1wdHlEYXRhYmFzZSIsIGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CiAKICAgICBsb25nIGxvbmcgZmlsZVNpemU7Ci0gICAgZ2V0RmlsZVNpemUoZGF0YWJh
c2VGaWxlUGF0aCwgZmlsZVNpemUpOworICAgIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGRhdGFi
YXNlRmlsZVBhdGgsIGZpbGVTaXplKTsKICAgICBFWFBFQ1RfRVEoMCwgZmlsZVNpemUpOwogCiAg
ICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5
KGRhdGFiYXNlRmlsZVBhdGgpKTsKIAotICAgIGJvb2wgZmlsZVN0aWxsRXhpc3RzID0gZmlsZUV4
aXN0cyhkYXRhYmFzZUZpbGVQYXRoKTsKKyAgICBib29sIGZpbGVTdGlsbEV4aXN0cyA9IEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlUGF0aCk7CiAgICAgRVhQRUNUX0ZBTFNFKGZp
bGVTdGlsbEV4aXN0cyk7CiAKICAgICBpZiAoZmlsZVN0aWxsRXhpc3RzKQotICAgICAgICBkZWxl
dGVGaWxlKGRhdGFiYXNlRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGRhdGFiYXNlRmlsZVBhdGgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpAQCAtNzgs
MTkgKzc4LDE5IEBAIHN0YXRpYyB2b2lkIGFkZFRvRGF0YWJhc2VzVGFibGUoY29uc3QgU3RyaW5n
JiBkYXRhYmFzZVBhdGgsIGNvbnN0IFNlY3VyaXR5T3JpZ2luCiAKIHN0YXRpYyB2b2lkIHJlbW92
ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKIHsK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGZpbGUgOiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgs
ICIqIikpCi0gICAgICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUZpbGUoZmlsZSkpOworICAgIGZvciAo
Y29uc3QgYXV0byYgZmlsZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0
aCwgIioiKSkKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxl
KSk7CiAKLSAgICBpZiAoZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKLSAgICAgICAgRVhQRUNU
X1RSVUUoZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpOworICAgIGlmIChGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQorICAgICAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIGNyZWF0ZUZpbGVBdFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvcldyaXRl
KTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgRVhQ
RUNUX05FKC0xLCBmaWxlSGFuZGxlKTsKLSAgICBjbG9zZUZpbGUoZmlsZUhhbmRsZSk7Ci0gICAg
RVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhwYXRoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGVIYW5kbGUpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0
aCkpOwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQpAQCAtOTksNyAr
OTksNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQogICAgIC8vIHRhYmxl
cywgYW5kIGFuIGFjdHVhbCBkYXRhYmFzZSBvbiBkaXNrLgogICAgIC8vIEluIHRoaXMgY2FzZSwg
d2Ugc2hvdWxkIHJlbW92ZSB0aGUgb3JpZ2luJ3MgaW5mb3JtYXRpb24gZnJvbSBib3RoIHRoZSBP
cmlnaW5zCiAgICAgLy8gYW5kIERhdGFiYXNlcyB0YWJsZXMsIGFuZCByZW1vdmUgdGhlIGRhdGFi
YXNlIGZyb20gZGlzay4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVt
cG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9y
eSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAg
IFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcp
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2Vy
ID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVj
dG9yeVBhdGgpOwpAQCAtMTA4LDE2ICsxMDgsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERl
bGV0ZU9yaWdpbikKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4
MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMo
KS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBF
Q1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAi
ZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9y
aWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVu
c2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7
CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJh
c2VQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2Vi
RGF0YWJhc2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJh
c2VQYXRoKTsKQEAgLTEyOCwxNCArMTI4LDE0IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVPcmlnaW4pCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsK
LSAgICBFWFBFQ1RfVFJVRShkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkp
OwogI2Vsc2UKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRo
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIEVYUEVD
VF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAjZW5k
aWYKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVu
RGF0YWJhc2VEb2VzTm90RXhpc3QpCkBAIC0xNDMsNyArMTQzLDcgQEAgVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICAvLyBUZXN0
IHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGFuIGVudHJ5IGluIGJvdGggdGhlIE9yaWdpbnMgYW5k
IERhdGFiYXNlcyB0YWJsZXMsCiAgICAgLy8gYnV0IG5vdCBhbiBhY3R1YWwgZGF0YWJhc2Ugb24g
ZGlzay4KICAgICAvLyBUaGUgaW5mb3JtYXRpb24gc2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJv
bSB0aGUgdGFibGVzLgotICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAg
U3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIg
PSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCk7CkBAIC0xNTIsMTUgKzE1MiwxNSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVs
ZXRlT3JpZ2luV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQogICAgIGRhdGFiYXNlVHJhY2tlci0+
c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRh
dGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRh
dGFiYXNlcy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7
CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3Ry
aW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNl
c1RhYmxlKGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5k
YiIpOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFz
ZU5hbWVzKG9yaWdpbikuc2l6ZSgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZUZ1bGxQYXRo
ID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJh
c2VOYW1lLCBmYWxzZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0YWJhc2VG
dWxsUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRh
dGFiYXNlRnVsbFBhdGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVs
ZXRlT3JpZ2luKG9yaWdpbikpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBFWFBFQ1Rf
VFJVRShkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwog
CiAgICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9y
eVBhdGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxl
dGluZ0FEYXRhYmFzZUZhaWxzKQpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFj
a2VyLCBEZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICAvLyBXaGVu
IHdlIGNhbGwgZGVsZXRlT3JpZ2luKCksIGRlbGV0aW5nIG9uZSBvZiB0aGVzZSBkYXRhYmFzZXMg
ZmFpbHMuCiAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGRuJ3QgcmVtb3ZlIHRoZSBpbmZv
cm1hdGlvbiBmcm9tIGVpdGhlciB0aGUgRGF0YWJhc2VzIG9yCiAgICAgLy8gT3JpZ2lucyB0YWJs
ZXMuCi0gICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeShAIldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsK
QEAgLTE4NywxNiArMTg3LDE2IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5X
aGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3Rh
KG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRy
YWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMu
ZGIiKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0
cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJE
YXRhYmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShk
YXRhYmFzZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAg
ICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhv
cmlnaW4pLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZp
ZXIoKSk7Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsK
LSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3Jp
Z2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmlu
ZyBmdWxsV2ViRGF0YWJhc2VQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFi
YXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0
aChmdWxsV2ViRGF0YWJhc2VQYXRoKTsKQEAgLTIwOSw4ICsyMDksOCBAQCBURVNUKERhdGFiYXNl
VHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAKICAgICBF
WFBFQ1RfRkFMU0UoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVPcmlnaW4ob3JpZ2luKSk7CiAKLSAg
ICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBF
Q1RfVFJVRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIEVYUEVDVF9FUSgodW5z
aWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKICAgICBFWFBFQ1Rf
RVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNp
emUoKSk7CkBAIC0yMjEsMTEgKzIyMSwxMSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRl
T3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAgICAgY2hmbGFncyhmdWxsV2ViRGF0
YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCksIDApOwogI2VuZGlmCiAKLSAgICBFWFBFQ1RfVFJVRShk
ZWxldGVGaWxlKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShkZWxldGVF
bXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOwogCiAgICAgcmVtb3ZlRGly
ZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAog
VEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldpdGhNaXNzaW5nRW50cnlJbkRhdGFi
YXNlc1RhYmxlKQpAQCAtMjM0LDcgKzIzNCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVPcmlnaW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKICAgICAvLyB0aGUgRGF0
YWJhc2VzIHRhYmxlLiBUaGVyZSBpcyBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4KICAgICAv
LyBUaGUgaW5mb3JtYXRpb24gc2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3JpZ2lu
cyB0YWJsZSwgYW5kIHRoZQogICAgIC8vIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVkIGZyb20g
ZGlzay4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBk
YXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgp
OwpAQCAtMjQzLDI4ICsyNDMsMjggQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdp
bldpdGhNaXNzaW5nRW50cnlJbkRhdGFiYXNlc1RhYmxlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+
c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRh
dGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQ
YXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRh
dGFiYXNlcy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7
CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgRVhQ
RUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgp
KTsKIAotICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRh
dGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBF
WFBFQ1RfVFJVRShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVDVF9U
UlVFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5QYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwg
b3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCi0gICAgU3RyaW5nIHdlYkRhdGFiYXNl
UGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIi
KTsKKyAgICBTdHJpbmcgd2ViRGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG9yaWdpblBhdGgsICJkYXRhYmFzZS5kYiIpOwogICAgIGNyZWF0ZUZpbGVB
dFBhdGgod2ViRGF0YWJhc2VQYXRoKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tl
ci0+ZGVsZXRlT3JpZ2luKG9yaWdpbikpOwogCi0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMo
d2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0
aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNl
UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBh
dGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLmlzRW1w
dHkoKSk7CiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9y
aWdpbikuaXNFbXB0eSgpKTsKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRh
dGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBE
ZWxldGVEYXRhYmFzZSkKQEAgLTI3Miw3ICsyNzIsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwg
RGVsZXRlRGF0YWJhc2UpCiAgICAgLy8gVGVzdCB0aGUgZXhwZWN0ZWQgY2FzZS4gVGhlcmUgaXMg
YW4gZW50cnkgaW4gdGhlIERhdGFiYXNlcyB0YWJsZQogICAgIC8vIGFuZCBhIGRhdGFiYXNlIG9u
IGRpc2suIEFmdGVyIHRoZSBkZWxldGlvbiwgdGhlIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVk
CiAgICAgLy8gZnJvbSBkaXNrLCBhbmQgdGhlIGluZm9ybWF0aW9uIHNob3VsZCBiZSBnb25lIGZy
b20gdGhlIERhdGFiYXNlcyB0YWJsZS4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0g
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNR
TERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNR
TCIpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVU
RjhTdHJpbmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJh
c2VUcmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRh
YmFzZURpcmVjdG9yeVBhdGgpOwpAQCAtMjgxLDE2ICsyODEsMTYgQEAgVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZURhdGFiYXNlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3Jp
Z2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tl
ci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIp
OwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5n
IGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFi
YXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxlKGRhdGFi
YXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwogICAgIEVY
UEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdp
bikuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigp
KTsKLSAgICBFWFBFQ1RfVFJVRShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5Q
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCiAgICAgU3RyaW5nIGZ1
bGxXZWJEYXRhYmFzZVBhdGggPSBkYXRhYmFzZVRyYWNrZXItPmZ1bGxQYXRoRm9yRGF0YWJhc2Uo
b3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKICAgICBjcmVhdGVGaWxlQXRQYXRoKGZ1
bGxXZWJEYXRhYmFzZVBhdGgpOwpAQCAtMzAxLDIwICszMDEsMjAgQEAgVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZURhdGFiYXNlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBFWFBFQ1RfVFJV
RShEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoZnVsbFdlYkRhdGFi
YXNlUGF0aCkpOwogI2Vsc2UKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0
YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVs
bFdlYkRhdGFiYXNlUGF0aCkpOwogI2VuZGlmCiAKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEs
IGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVs
ZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKICAgICByZW1vdmVEaXJlY3Rv
cnlBbmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxT
RShmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNU
KERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VXaGVuRGF0YWJhc2VEb2VzTm90RXhpc3Qp
CiB7CiAgICAgLy8gVGVzdCB0aGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gZGVsZXRlIGEgZGF0YWJh
c2UgdGhhdCBkb2Vzbid0IGV4aXN0IG9uIGRpc2suCiAgICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJl
bW92ZSB0aGUgZGF0YWJhc2UgaW5mb3JtYXRpb24gZnJvbSB0aGUgRGF0YWJhc2VzIHRhYmxlLgot
ICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3Rvcnko
QCJXZWJTUUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0z
MjMsMjEgKzMyMywyMSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VXaGVu
RGF0YWJhc2VEb2VzTm90RXhpc3QpCiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmln
aW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2Vy
LT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7
Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcg
ZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJh
c2VOYW1lID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJh
c2VQYXRoLCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQ
RUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2lu
KS5zaXplKCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlRnVsbFBhdGggPSBkYXRhYmFzZVRy
YWNrZXItPmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNl
KTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0
aCkpOwogCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZShv
cmlnaW4sIHdlYkRhdGFiYXNlTmFtZSkpOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tl
ci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7CiAKICAgICByZW1vdmVEaXJlY3Rv
cnlBbmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxT
RShmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiAjZW5k
aWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA3NDg2NjVjZjJjMi4uMmFjOGI1NmRlYjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQpAQCAtOTIsMTAgKzkyLDEwIEBAIHN0YXRpYyBib29sIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0
YXRlID0gZmFsc2U7CiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNwb25zZSk7CiAgICAg
RVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9w
ZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsK
LSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJ
IiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZ
RVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3Rh
dGljIGJvb2wgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUsIGRvd25sb2FkLndhc1VzZXJJbml0aWF0ZWQp
OwogICAgIEVYUEVDVF9UUlVFKF9leHBlY3RlZENvbnRlbnRMZW5ndGggPT0gTlNVUkxSZXNwb25z
ZVVua25vd25MZW5ndGggfHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9leHBlY3RlZENvbnRlbnRM
ZW5ndGgpID09IF9yZWNlaXZlZENvbnRlbnRMZW5ndGgpOwogICAgIEVYUEVDVF9UUlVFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY29udGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRp
b25QYXRoIGFuZFBhdGg6W3NvdXJjZVVSTCBwYXRoXV0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUZp
bGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC0zOTMsMTAg
KzM5MywxMCBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERp
cmVjdERvd25sb2FkV2l0aExvYWRlZENvbnRlbnQpCiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2
ZWRSZXNwb25zZSk7CiAgICAgRVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAg
V2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9u
UGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhh
bmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7Cisg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Cisg
ICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhh
bmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsK
KyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAq
YWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC00
MTAsNyArNDEwLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxV
UkxEaXJlY3REb3dubG9hZFdpdGhMb2FkZWRDb250ZW50KQogICAgIE5TU3RyaW5nKiBleHBlY3Rl
ZENvbnRlbnQgPSBAIntcInhcIjo0MixcInNcIjpcImhlbGxvLCB3b3JsZFwifSI7CiAgICAgTlNE
YXRhKiBleHBlY3RlZERhdGEgPSBbZXhwZWN0ZWRDb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXTsKICAgICBFWFBFQ1RfVFJVRShbW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBjb250ZW50c0F0UGF0aDpfZGVzdGluYXRpb25QYXRoXSBpc0VxdWFsVG9E
YXRhOmV4cGVjdGVkRGF0YV0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9u
UGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25Q
YXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC00NjYsMTAgKzQ2NiwxMCBAQCBURVNU
KF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RCbG9iVVJMKQogCiAtIChOU1N0cmluZyAqKV9k
b3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAq
KWFsbG93T3ZlcndyaXRlCiB7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxl
KCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRs
ZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpj
bG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBf
ZGVzdGluYXRpb25QYXRoOwogfQpAQCAtNDk2LDcgKzQ5Niw3IEBAIFRFU1QoX1dLRG93bmxvYWQs
IERvd25sb2FkUmVxdWVzdEJsb2JVUkwpCiAgICAgaWYgKHJlZGlyZWN0Q2hhaW4uY291bnQgPiAy
KQogICAgICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRpcmVjdENoYWluWzJd
LmFic29sdXRlU3RyaW5nIFVURjhTdHJpbmddKTsKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUo
X2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShf
ZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325504</attachid>
            <date>2017-10-31 15:15:48 -0700</date>
            <delta_ts>2017-10-31 16:18:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>179063-4.diff</filename>
            <type>text/plain</type>
            <size>307780</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTE2MGFiYjYxNy4uODY5YjE0MjMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGluZyBhIEZp
bGVTeXN0ZW0gbmFtZXNwYWNlIHRvIG1vZGVybml6ZSB0aGUgY29kZSBiZWZvcmUKKyAgICAgICAg
bW92aW5nIEZpbGVTeXN0ZW0gdG8gUEFMLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
Q29jb2EubW06CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisKIDIwMTctMTAtMzAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgdGFiLXNpemU6IDBw
eCBhc3NlcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRl
eCA2YWViYjFmZDQwNC4uN2VmYjc5ZDU1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiBib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZDJlYjg4NTJjNC4uOGU1MDY2ZGRlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQ
YXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3Rz
IG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9
IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVk
Q2hpbGQ+IGxpc3RlZENoaWxkcmVuOwogICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDog
Y2hpbGRQYXRocykgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxk
UGF0aCk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
Y2hpbGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlz
SGlkZGVuKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVu
Y2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tl
ZEFwcGVuZChMaXN0ZWRDaGlsZCB7IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBh
dGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3RlZENoaWxkcmVuKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkVmlydHVhbFBhdGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRP
TUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9v
dFBhdGgoZGlyZWN0b3J5TmFtZShtX2ZpbGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAg
IEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoLCBTdAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFt
ZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0
IikgfTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZh
bGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKIHsKLSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCku
dHlwZTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQ
YXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5h
cHBlbmQoY29tcG9uZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29t
cG9uZW50cyk7CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVj
dG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCmluZGV4IGI2YmJjNjNhNjM2Li5kY2NiNWExMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVt
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsZVN5c3RlbSYgZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQotICAgICwgbV9uYW1l
KHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCisgICAgLCBtX25hbWUoRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHZpcnR1YWxQYXRoKSkKICAgICAsIG1fdmlydHVhbFBhdGgodmlydHVh
bFBhdGgpCiB7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRl
eCBkOTQ2YmU0M2YxZi4uOGJiODgwNTBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290CiAKIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCiB7Ci0gICAgU3RyaW5n
IG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0
b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIG1h
aW5GcmFtZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAg
ICAvLyBJZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUgb3JpZ2lucyBhcmUgdGhl
IHNhbWUsIHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KICAgICBpZiAob3BlbmluZ09yaWdpbiA9
PSB0b3BMZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsKIAot
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBv
cGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY4MWNlOGFiNmNhLi5mZmY4Zjg0Y2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2Niwx
MSArNDY2LDExIEBAIHZvaWQgSURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0
b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0
b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwo
IioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogZW50cmllcykgewotICAgICAgICBTdHJpbmcgZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGVudHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29k
ZWROYW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAgICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGVu
Y29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01ODEsMTQgKzU4MSwxNCBAQCB2b2lkIElEQlNlcnZl
cjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRo
KGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGF0YWJhc2VQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2lu
UGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0byYgZGF0YWJhc2VQYXRoIDogZGF0YWJhc2VQYXRo
cykgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBk
YXRhYmFzZUZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigp
ICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5j
ZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNl
RmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2Rp
ZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2luY2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0
aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3Jp
Z2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxv
YiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIgd2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwK
ICAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRoZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJl
IHRyeWluZyB0byBkZWxldGUuCi0gICAgICAgIGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGly
ZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTldKi5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBibG9iUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQ
YXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAgICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2
ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAg
ICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJpbmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3
aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAiLmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9u
LWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0
aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMgb25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0
LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5vdCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAg
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUoYmxvYlBhdGgpOwogICAgICAgICAgICAgYXV0byBmaWxlbmFtZUxlbmd0aCA9IGZpbGVuYW1l
Lmxlbmd0aCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWVMZW5ndGggPj0gNik7CkBA
IC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAodmFsaWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBkZWxl
dGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyBkZWxldGUg
SW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgU1FMaXRlIGZpbGVzLgogICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxlKTsKIAogICAgICAg
ICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2FuLCBkZWxldGUgdGhlIGVtcHR5IGRpcmVjdG9yeS4K
LSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKICAg
ICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFzZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwgd2Ug
Y2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVjdG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNs
b3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiKiIpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIq
Iik7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAg
ICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZv
cm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5
T3IKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBh
dGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMw
YmViMzguLjlmZjhjMGYzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtNzQ0LDcgKzc0NCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUZyb21FbmNvZGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBlbmNvCiAgICAgU3RyaW5nIHBh
cnRpYWxseURlY29kZWQgPSBlbmNvZGVkTmFtZTsKICAgICBwYXJ0aWFsbHlEZWNvZGVkLnJlcGxh
Y2UoQVNDSUlMaXRlcmFsKCIlMkUiKSwgQVNDSUlMaXRlcmFsKCIuIikpOwogCi0gICAgcmV0dXJu
IGRlY29kZUZyb21GaWxlbmFtZShwYXJ0aWFsbHlEZWNvZGVkKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhcnRpYWxseURlY29kZWQpOwogfQogCiBTdHJpbmcg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0CkBA
IC03NTQsNyArNzU0LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVG
b3JEYXRhYmFzZU5hbWUoKSBjb25zdAogICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBlbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7CiAgICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKQEAgLTc2NCwxNCArNzY0LDE0IEBAIFN0cmluZyBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0
dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnks
IGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFt
ZUZvckRhdGFiYXNlTmFtZSgpKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0
YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CiB9CiAKIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQpAQCAtNzgzLDcgKzc4Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVz
KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCkpOwogICAgIFN0cmluZyBkYkZpbGVuYW1lID0g
ZnVsbERhdGFiYXNlUGF0aCgpOwogCiAgICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CkBAIC0xODU4LDcgKzE4NTgsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBvYmplYwogICAgICAgICBibG9iVVJMcy5hcHBlbmQoYmxvYlVSTCk7CiAKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gc3FsLT5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBibG9iRmlsZVBh
dGhzLmFwcGVuZChwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGZp
bGVOYW1lKSk7CisgICAgICAgIGJsb2JGaWxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZmlsZU5hbWUpKTsKICAgICB9
CiAKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtMjU0Miw4ICsyNTQyLDggQEAgdm9pZCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAKICAgICBTdHJpbmcg
ZGF0YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBmb3IgKGF1
dG8mIGZpbGUgOiBibG9iRmlsZXMpIHsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsKLSAgICAgICAgaWYg
KCFkZWxldGVGaWxlKGZ1bGxQYXRoKSkKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgZGVsZXRpbmcgYmxvYiBmaWxlICVzIiwgZnVsbFBhdGgudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCA2MDg2M2E4YWE5My4uMjMxNjVjOWI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptb3ZlQmxv
YkZpbGVzSWZOZWNlc3NhcnkoKQogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JUZW1wb3Jh
cnlBbmRTdG9yZWRGaWxlbmFtZXMpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5
RmlsZUhhbmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGVudHJ5LmZpcnN0
KTsKIAotICAgICAgICBpZiAoIWhhcmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1wb3JhcnkgYmxvYiBm
aWxlICclcycgdG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZp
bGUoZW50cnkuZmlyc3QsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKSkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBsaW5rL2NvcHkgdGVtcG9yYXJ5IGJsb2IgZmlsZSAnJXMnIHRvIGxvY2F0aW9uICcl
cyciLCBlbnRyeS5maXJzdC51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGVudHJ5LnNlY29uZCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nl
c3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShlbnRyeS5maXJzdCk7CiAgICAgfQpAQCAtMTA3LDcg
KzEwNyw3IEBAIHZvaWQgU1FMaXRlSURCVHJhbnNhY3Rpb246OmRlbGV0ZUJsb2JGaWxlc0lmTmVj
ZXNzYXJ5KCkKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSA9IG1fYmFja2luZ1N0b3Jl
LmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JS
ZW1vdmVkRmlsZW5hbWVzKSB7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOworICAgICAgICBTdHJpbmcg
ZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnksIGVudHJ5KTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhh
bmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGZ1bGxQYXRoKTsKICAgICAg
ICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nlc3NUb1RlbXBvcmFy
eUZpbGVDb21wbGV0ZShmdWxsUGF0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAppbmRleCBhZGRkMWY4YzAwNC4uNjFhZWI4ZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAppbmRleCA1NTI3NjlhNDFjNy4uZmVhMWJlNWU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY0OSw5
ICs2NDksOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjp1c2FnZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9
IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza1Vz
YWdlID0gMDsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogbGlzdERpcmVjdG9yeShvcmlnaW5Q
YXRoLCBBU0NJSUxpdGVyYWwoIiouZGIiKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCBBU0NJSUxpdGVyYWwoIiouZGIi
KSkpIHsKICAgICAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgICAgIGdldEZpbGVTaXplKGZpbGVO
YW1lLCBzaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNp
emUpOwogICAgICAgICBkaXNrVXNhZ2UgKz0gc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2tV
c2FnZTsKQEAgLTc4NSw5ICs3ODUsOSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgd2UgcHJldmlvdXNseSBkZWxldGVk
IGl0IGJ1dCBmYWlsZWQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgLy8g
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZS4gV2Ugd2FudCB0byBkZWxldGUgYWxsIG9mIHRoZSBp
bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICAgICAgLy8gZGF0YWJhc2Ug
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZSwgc28gc3RpbGwgYWRkIGl0cyBuYW1lIHRvIGRhdGFi
YXNlTmFtZXNUb0RlbGV0ZS4KLSAgICAgICAgICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoKSkg
eworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkp
CisgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUgPCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3QodGltZSkpCkBAIC04MzcsNyArODM3LDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgRGVsZXRpb25Nb2QKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVz
ZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwg
ZGVhZGxvY2suCiAgICAgYm9vbCBmYWlsZWRUb0RlbGV0ZUFueURhdGFiYXNlRmlsZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgbmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKLSAgICAgICAgaWYgKGZp
bGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRl
bGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9uTW9kZSkpIHsKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5h
bWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9u
TW9kZSkpIHsKICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgY2FuJ3QgYmUgZGVsZXRl
ZCwgd2Ugd2FudCB0byB0cnkgYW5kIGRlbGV0ZSB0aGUgcmVzdCwgZG9uJ3QgcmV0dXJuIGVhcmx5
IGhlcmUuCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3Ig
ZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBmYWlsZWRUb0Rl
bGV0ZUFueURhdGFiYXNlRmlsZSA9IHRydWU7CkBAIC04NTIsOCArODUyLDggQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgRGVsZXRpb25Nb2QKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoRGF0YWJhc2VUcmFja2VyLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiIpOwogI2VuZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZmlsZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlbGV0ZUZpbGUoZmlsZSkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmls
ZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7
CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpCiAgICAgICAg
ICAgICAgICAgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAg
ICB9CiAKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tz
IGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCi0gICAg
aWYgKGZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkg
JiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVs
dCkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aEZvckRhdGFiYXNl
KG9yaWdpbiwgbmFtZSwgZmFsc2UpKSAmJiAhZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFt
ZSwgRGVsZXRpb25Nb2RlOjpEZWZhdWx0KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIGRv
bmVEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4g
ZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2UgZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3Vy
cmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNlIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hv
dWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0Rmls
ZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YWJhc2VGaWxlTmFtZS5pc051bGwoKSB8fCBkYXRhYmFzZUZpbGVOYW1lICE9IEZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShkYi0+ZmlsZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRGF0YWJhc2VzLmFwcGVuZChkYik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmREZWxldGVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92
ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogc3RhdGljIGJvb2wgaXNaZXJvQnl0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGxvbmcgbG9uZyBzaXplID0gMDsKLSAgICByZXR1cm4g
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgJiYgIXNpemU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIHNpemUpICYmICFzaXplOwogfQogICAgIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBwYXRoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAK
aW5kZXggNTE2YTJkMmYyNjQuLjMxZDJkMDRiMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQ
YXRoKFN0cmluZyBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgsIFN0cmluZygiLmxvY2siKSk7
CiB9CiAKIE9yaWdpbkxvY2s6Ok9yaWdpbkxvY2soU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgOiBt
X2xvY2tGaWxlTmFtZShsb2NrRmlsZU5hbWVGb3JQYXRoKG9yaWdpblBhdGgpLmlzb2xhdGVkQ29w
eSgpKQogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgLCBtX2xvY2tIYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fbG9ja0hhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogI2VuZGlmCiB7CiB9CkBAIC01MCw4ICs1MCw4IEBAIHZvaWQgT3Jp
Z2luTG9jazo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NL
KQotICAgIG1fbG9ja0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgT3Bl
bkZvcldyaXRlKTsKLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUo
bV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKG1fbG9j
a0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAg
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBj
b250YWluaW5nIHRoZSBsb2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2Vy
ZSBnaXZlbiBhIHBhdGggdG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYnV0IGNsZWFudXAgYW5kIHJl
dHVybi4KQEAgLTY4LDExICs2OCwxMSBAQCB2b2lkIE9yaWdpbkxvY2s6OnVubG9jaygpCiAgICAg
Ly8gY29udGFpbmluZyB0aGUgbG9jayBoYXMgYmVlbiBkZWxldGVkIGJlZm9yZSB3ZSBvcGVuZWQg
dGhlIGxvY2sgZmlsZSwgb3IKICAgICAvLyB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1l
eGlzdGFudCBkaXJlY3RvcnkuIFdoaWNoLCBpbiB0dXJuLCBtZWFucwogICAgIC8vIHRoYXQgdGhl
cmUncyBub3RoaW5nIHRvIHVubG9jay4KLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIAorICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5sb2Nr
QW5kQ2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7Ci0gICAgbV9sb2NrSGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUobV9s
b2NrSGFuZGxlKTsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogI2VuZGlmCiAKICAgICBtX211dGV4LnVubG9jaygpOwpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIE9yaWdpbkxvY2s6OmRlbGV0ZUxvY2tGaWxlKFN0cmluZyBvcmlnaW5QYXRo
KQogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5QYXRoKTsKICNpZiBVU0UoRklMRV9MT0NLKQogICAg
IFN0cmluZyBsb2NrRmlsZU5hbWUgPSBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKG9y
aWdpblBhdGgpOwotICAgIGRlbGV0ZUZpbGUobG9ja0ZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGxvY2tGaWxlTmFtZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBkNzE1MWRlNzhiZC4u
YTE2ZTg0ZjE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
T3JpZ2luTG9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9j
a0ZpbGVOYW1lOwogICAgIExvY2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBtX2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fbG9ja0hhbmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggM2ViMjg4NGFjYTEuLjAyNjFhMGZkMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QK
ICAgICAvLyBUaGUgaS9vIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCwKICAgICAvLyBhbmQgdGhlIHJlc3VsdCBzaG91bGQgYmUgY2FjaGVkIGFsb25nIHdpdGggYW4g
YXN5bmNocm9ub3VzIG1vbml0b3IgZm9yIGNoYW5nZXMgdG8gdGhlIGZpbGUuCiAgICAgdGltZV90
IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKGdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0
aCwgbW9kaWZpY2F0aW9uVGltZSkgJiYgaXNWYWxpZEZpbGVUaW1lKG1vZGlmaWNhdGlvblRpbWUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1v
ZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRp
b25UaW1lKSkKICAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25k
OwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUoKSAqIG1zUGVyU2Vjb25k
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlz
TnVsbCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworICAgIGVmZmVj
dGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluZGV4ID0gZWZmZWN0aXZl
TmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKICAgICAg
ICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBTdHJpbmcgRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIGJvb2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAogewogICAgIGlmICghbV9pc0Rp
cmVjdG9yeSkKLSAgICAgICAgbV9pc0RpcmVjdG9yeSA9IGZpbGVJc0RpcmVjdG9yeShtX3BhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgICAgIG1faXNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwogICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAwZDVhNjk3ZjY1YS4uY2FhMjFk
NWI4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC01OSw5ICs1OSw5IEBA
IGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVO
YW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVCghcGF0aEdl
dEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0
aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KKyAgICBBU1NF
UlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8g
RXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3Ig
ZGlyZWN0b3JpZXMuCiAgICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBBU0NJSUxpdGVyYWwoImFw
cGxpY2F0aW9uL3ppcCIpOwotICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVs
bCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJTGl0ZXJh
bCgiLnppcCIpOworICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVsbCgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJ
TGl0ZXJhbCgiLnppcCIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAKaW5kZXggOTEwNmRhZGNjZDQuLjc2ZjU2NTk3MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgRmlsZUxpc3RDcmVhdG9y
Ojp+RmlsZUxpc3RDcmVhdG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0
b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFBhdGgg
OiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAgICBhdXRvIG1ldGFkYXRh
ID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRv
IG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CiAgICAgICAg
IGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWV0
YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIHBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOworICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRo
KTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0
YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKQEAgLTgwLDgg
KzgwLDggQEAgUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBp
ZiAoc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6
WWVzICYmIGZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgcGF0
aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgaWYgKHNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxl
cyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxl
T2JqZWN0cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4NjQwY2YxMmM4
YS4uYmY0MzQzOTNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTZXRNZWRpYUtl
eXMoV2ViS2l0TWVkaWFLZXlzKiBtZWRpYUtleXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBh
ZmY4Njk5MmU1MC4uYTIxNTBlZDJmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNlTmVlZGVkKGlu
dDY0X3QgY2FjaGVUb1NhdmUpCiB7CiAgICAgaW50NjRfdCBzcGFjZU5lZWRlZCA9IDA7CiAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICBpZiAoIWdldEZpbGVTaXplKG1fY2FjaGVGaWxl
LCBmaWxlU2l6ZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2NhY2hlRmls
ZSwgZmlsZVNpemUpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGludDY0X3QgY3VycmVudFNp
emUgPSBmaWxlU2l6ZSArIGZsYXRGaWxlQXJlYVNpemUoKTsKQEAgLTYwMCwxMSArNjAwLDExIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlm
RG9lc05vdEV4aXN0KQogICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X2NhY2hlRGlyZWN0b3J5LCAiQXBwbGljYXRpb25DYWNoZS5kYiIpOwotICAgIGlmICghY3JlYXRl
SWZEb2VzTm90RXhpc3QgJiYgIWZpbGVFeGlzdHMobV9jYWNoZUZpbGUpKQorICAgIG1fY2FjaGVG
aWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7CisgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlz
dCAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKKyAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9jYWNoZURpcmVjdG9yeSk7CiAgICAgbV9kYXRh
YmFzZS5vcGVuKG1fY2FjaGVGaWxlKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCkBAIC03OTksNyArNzk5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKIAogICAgIFN0
cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICBkYXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGhHZXRGaWxlTmFtZShyZXNvdXJjZS0+
cGF0aCgpKSk7CisgICAgICAgIGRhdGFTdGF0ZW1lbnQuYmluZFRleHQoMiwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKICAgICBlbHNlIGlmIChzaG91bGRT
dG9yZVJlc291cmNlQXNGbGF0RmlsZShyZXNvdXJjZSkpIHsKICAgICAgICAgLy8gRmlyc3QsIGNo
ZWNrIHRvIHNlZSBpZiBjcmVhdGluZyB0aGUgZmxhdCBmaWxlIHdvdWxkIHZpb2xhdGUgdGhlIG1h
eGltdW0gdG90YWwgcXVvdGEuIFdlIGRvbid0IG5lZWQKICAgICAgICAgLy8gdG8gY2hlY2sgdGhl
IHBlci1vcmlnaW4gcXVvdGEgaGVyZSwgYXMgaXQgd2FzIGFscmVhZHkgY2hlY2tlZCBpbiBzdG9y
ZU5ld2VzdENhY2hlKCkuCkBAIC04MDgsOCArODA4LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgbWFr
ZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKKyAgICAgICAgU3RyaW5nIGZsYXRG
aWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2Fj
aGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKIAogICAgICAgICBT
dHJpbmcgZXh0ZW5zaW9uOwogICAgICAgICAKQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgICAgICBpZiAoIXdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KHJlc291cmNlLT5kYXRhKCksIGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoLCBleHRlbnNpb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZnVsbFBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAg
ICAgICBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0
RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIHJlc291cmNlLT5zZXRQYXRoKGZ1bGxQYXRo
KTsKICAgICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKICAgICAgICAgLy8gQ2xlYW4gdXAgdGhl
IGZpbGUgd2hpY2ggd2UgbWF5IGhhdmUgd3JpdHRlbiB0bzoKICAgICAgICAgaWYgKCFmdWxsUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQp
CiAKICAgICBhdXRvIGNhY2hlID0gQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlKCk7CiAKLSAgICBT
dHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICBpbnQgcmVz
dWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CkBAIC0xMTM2LDggKzExMzYsOCBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXpl
KCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBnZXRGaWxlU2l6
ZShwYXRoLCBzaXplKTsKKyAgICAgICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMyk7
CkBAIC0xMjk0LDI1ICsxMjk0LDI1IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgU3Ry
aW5nIGZ1bGxQYXRoOwogICAgIAogICAgIGRvIHsKLSAgICAgICAgcGF0aCA9IGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyBmaWxlRXh0ZW5zaW9uOworICAg
ICAgICBwYXRoID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3Qg
dGhlIGFib3ZlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdoaWNoIGRvZXMg
bm90IGltcGxlbWVudAogICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuCiAg
ICAgICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIHBhdGgpOwotICAgIH0gd2hp
bGUgKGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGRpcmVjdG9yeSB8fCBmaWxlRXhpc3RzKGZ1
bGxQYXRoKSk7CisgICAgICAgIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CisgICAgfSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3Bl
bkZpbGUoZnVsbFBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
YXRhLnNpemUoKSkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShmdWxsUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIApAQCAtMTQ2NiwxNSArMTQ2NiwxNSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIFN0cmluZyBm
bGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0
b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Cisg
ICAgICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIAogICAgICAgICAv
LyBEb24ndCBleGl0IHRoZSBmbGF0RmlsZURpcmVjdG9yeSEgVGhpcyBzaG91bGQgb25seSBoYXBw
ZW4gaWYgdGhlICJwYXRoIiBlbnRyeSBjb250YWlucyBhIGRpcmVjdG9yeSAKICAgICAgICAgLy8g
Y29tcG9uZW50LCBidXQgcHJvdGVjdCBhZ2FpbnN0IGl0IHJlZ2FyZGxlc3MuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBmbGF0RmlsZURpcmVjdG9yeSkKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0
b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBkZWxldGVGaWxl
KGZ1bGxQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAg
ICAgfSB3aGlsZSAoc2VsZWN0UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpOwogICAgIAogICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiKTsK
QEAgLTE0OTQsMTIgKzE0OTQsMTIgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmbGF0RmlsZUFyZWFTaXplKCkKICAgICB9CiAKICAgICBsb25nIGxvbmcgdG90YWxTaXplID0g
MDsKLSAgICBTdHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9jYWNoZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0
cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAg
d2hpbGUgKHNlbGVjdFBhdGhzLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gc2VsZWN0UGF0aHMuZ2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIGZ1
bGxQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRo
KTsKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgbG9uZyBsb25nIHBh
dGhTaXplID0gMDsKLSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShmdWxsUGF0aCwgcGF0aFNpemUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdG90YWxTaXplICs9IHBhdGhTaXpl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNhMzY5YmVjMzU4Li41OWVjMWM5MGM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBh
Z2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiAKICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUp
KSB7CiAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMg
anVzdCBkZWxldGVkLCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYg
d2UndmUgcmVhZCB0aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0
aHJvdyBhd2F5IHRoYXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdz
IG9uIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4
YmM3YTM3Li42YWQ2MzExMGFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgp
ICYmICFmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgp
KSkKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYg
IUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0
ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDkyM2ZmMzMwZDZjLi5hZGExZjQx
ZDIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZp
ZXIoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChwcm90b2NvbCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlbmNvZGVGb3JGaWxlTmFt
ZShob3N0KSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJh
Y3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IDgwM2E4MjA5
YjJjLi4yYTBhNjM0YzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlSGFuZGxlOjpG
aWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFu
ZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5N
b2RlIG1vZGUpCiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kZShtb2RlKQogewpAQCAt
NDIsNyArNDIsNyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBv
dGhlcikKICAgICA6IG1fcGF0aChXVEZNb3ZlKG90aGVyLm1fcGF0aCkpCiAgICAgLCBtX21vZGUo
V1RGTW92ZShvdGhlci5tX21vZGUpKQotICAgICwgbV9maWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSkKKyAgICAsIG1f
ZmlsZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBG
aWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogICAg
IGNsb3NlKCk7CiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9k
ZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKLSAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
bV9maWxlSGFuZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
RmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxl
VmFsaWQobV9maWxlSGFuZGxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2ZpbGVIYW5kbGUpOwogfQogCi1ib29sIEZpbGVIYW5kbGU6Om9wZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGlmICgq
dGhpcyAmJiBwYXRoID09IG1fcGF0aCAmJiBtb2RlID09IG1fbW9kZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsK
ICAgICBpZiAoISp0aGlzKQotICAgICAgICBtX2ZpbGVIYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgs
IG1fbW9kZSk7CisgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
cGF0aCwgbV9tb2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC04NywxNCArODcsMTQgQEAgaW50IEZpbGVIYW5kbGU6OnJlYWQodm9pZCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiByZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSks
IGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5k
bGUsIHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAogaW50IEZpbGVIYW5k
bGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVu
KCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbGVIYW5kbGU6
OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBGaWxlSGFuZGxlOjpjbG9z
ZSgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMzYyNDNkZTQwZC4uNTYzZmVkOTg5NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7
CiBwdWJsaWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKLSAgICBGaWxlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBGaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZpbGVIYW5k
bGUmJiBvdGhlcik7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogICAgIGJvb2wgb3BlbigpOwogICAgIGludCByZWFkKHZv
aWQqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGludCB3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZU9wZW5Nb2RlIG1fbW9kZSB7IE9wZW5Gb3JSZWFkIH07Ci0g
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcAppbmRleCBiMThiMWMzZTk3ZC4uZjc0NWQ3YzFkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZpbGVTdHJlYW06OkZpbGVTdHJlYW0oKQotICAgIDogbV9oYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICA6IG1faGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgLCBtX2J5dGVzUHJvY2Vzc2VkKDApCiAgICAgLCBtX3RvdGFsQnl0
ZXNUb1JlYWQoMCkKIHsKQEAgLTUzLDE2ICs1MywxNiBAQCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6
Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bQogewogICAgIC8vIENoZWNrIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBvc3NpYmxl
IGZpbGUgY2hhbmdlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1l
KSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUo
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dGlt
ZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9IG1vZGlmaWNhdGlvblRpbWUpCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLy8gTm93IGdldCB0aGUgZmlsZSBzaXpl
LgogICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShwYXRoLCBsZW5n
dGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgbGVuZ3RoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKQEAgLTcwLDE3ICs3MCwxNyBA
QCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbQogCiBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkK
IHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IE9wZW4gdGhlIGZpbGUuCi0gICAgbV9oYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZp
bGUgaGFzIGJlZW4gc2xpY2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChz
ZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBTZWVrRnJvbUJlZ2lubmluZykgPCAwKQorICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6
U2Vla0Zyb21CZWdpbm5pbmcpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTkyLDIyICs5MiwyMiBAQCBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbgogCiB2b2lkIEZp
bGVTdHJlYW06OmNsb3NlKCkKIHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpIHsK
LSAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxlKTsKLSAgICAgICAgbV9oYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOworICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1f
aGFuZGxlKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworICAg
ICAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAg
ICAgfQogfQogCiBpbnQgRmlsZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJT
aXplKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbG9uZyBsb25nIHJlbWFpbmluZyA9IG1fdG90YWxCeXRlc1RvUmVhZCAtIG1fYnl0ZXNQcm9j
ZXNzZWQ7CiAgICAgaW50IGJ5dGVzVG9SZWFkID0gKHJlbWFpbmluZyA8IGJ1ZmZlclNpemUpID8g
c3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogYnVmZmVyU2l6ZTsKICAgICBpbnQgYnl0ZXNS
ZWFkID0gMDsKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiAwKQotICAgICAgICBieXRlc1JlYWQgPSBy
ZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNUb1JlYWQpOworICAgICAgICBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNU
b1JlYWQpOwogICAgIGlmIChieXRlc1JlYWQgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAg
aWYgKGJ5dGVzUmVhZCA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXgg
ZDQyMWU0ZjNiYzEuLjk2N2RlZGM3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIs
IGludCBsZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRs
ZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9u
ZyBsb25nIG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVh
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDdh
ZTM0Li5iODk0NzVlMDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmls
ZVN5c3RlbSB7CisKIC8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVk
IGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQogLy8gYWNyb3NzIGFsbCBzeXN0ZW1z
LCBpbmNsdWRpbmcgV2luZG93czoKIC8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikK
QEAgLTM1OSw0ICszNjEsNSBAQCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93UwogICAgIHJldHVybiBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CiB9
CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCAzMmM5M2U2NThiMy4uYTZjN2UzZWI3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTU2LDYgKzU2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKICNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwpAQCAtOTIs
OCArOTYsNiBAQCBlbnVtIEZpbGVMb2NrTW9kZSB7CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKIAotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogV0VC
Q09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTIxMyw1ICsyMTUsNiBAQCBp
bmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmls
ZURhdGEmJiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZTFmY2RjZWJkMWMuLjBkMzViMjEzYmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBz
aXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwpAQCAtNjEsNyArNjEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8Y2hhcj4mJiBkYXRhKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGlu
Z1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtd
KGNvbnN0IEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcg
KzIyNyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICNpZiBVU0UoU09VUCkKICAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IE1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRh
LnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYg
ZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGZkMjZmMjFjNmJkLi4zNGZmNzFjNjM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAj
aWYgVVNFKFNPVVApCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHVW5p
cXVlUHRyPFNvdXBCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoTWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFTZWdtZW50KEdVbmlxdWVQdHI8U291
cEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoTWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAog
ICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6
CiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCkBAIC0xNTcsNyArMTU3LDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXpl
X3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDFmNjg0YjY1YzE0Li4wODQ3MGEw
OGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorQ1N0cmluZyBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
QEAgLTU1LDEyICs1NSwxMiBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKIH0KIAotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciog
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQogewogICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENGVVJMUmVm
PiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQorUmV0YWluUHRyPENGVVJMUmVmPiBGaWxl
U3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENGVVJMUGF0aFN0
eWxlIHBhdGhTdHlsZTsKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAzOTVkZjc3NzE5YS4uNTc4
NDM0ZDJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0gICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSk7
CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJG
YWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAg
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1
ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW2hh
bmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRj
aF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2NkOWY4Li4yMDQz
OWY4NTExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQpAQCAtNDYsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKKwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAg
ICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CkBAIC0xMjgsNCArMTMwLDUgQEAgTlNTdHJpbmcg
KmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQogICAg
IHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb246cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07CiB9CiAKK30gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCBkNmQ5ZWY3
YTVjYS4uOTQ5MjRlNjFkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZU1vbml0b3JHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVNb25pdG9yR0xpYi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRmlsZU1vbml0b3I6OkZpbGVN
b25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUs
IFdURjoKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIW1vZGlmaWNhdGlvbkhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBhdXRv
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgbV9jYW5jZWxsYWJsZSA9IGFk
b3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgbV9wbGF0Zm9ybU1vbml0b3IgPSBhZG9wdEdSZWYoZ19maWxlX21vbml0b3Io
ZmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfTk9ORSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgJmVy
cm9yLm91dFB0cigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCmluZGV4IDkzMmU4M2ZkOTRhLi45MTUwYTc0ZTAxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTQwLDYgKzQw
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisK
IC8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmlu
Z3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5CiAgKiBhcmUgdmFsaWQgZmlsZSBu
YW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMt
aXMgaW4gYSBTdHJpbmcKICAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KQEAgLTQ5Niw0ICs0
OTgsNSBAQCBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIH0KICNl
bmRpZiAvLyBVU0UoRklMRV9MT0NLKQogCi19Cit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCBhZDczNDlkNmYzZC4uMzM1ZDg1ZDFiMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cApAQCAtMzMsMTIgKzMzLDEyIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU3RyaW5n
IGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBDU3Ry
aW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQ
YXRoKTsKICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXpl
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9nZXRf
Y29udGVudHMoZmlsZW5hbWUuZGF0YSgpLCAmY29udGVudHMub3V0UHRyKCksICZzaXplLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQg
Y29udGVudHMgb2YgZmlsZSAlcyAtICVzIiwgZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtICVzIiwgRmlsZVN5c3RlbTo6Zmls
ZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCBjYTYz
M2EyZGE4Zi4uY2I4MGU4MjM2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0zNjUsMTAgKzM2NSwxMCBA
QCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Y29u
dGVudEtleVNlc3Npb24oKQogCiAgICAgICAgIG1fY29udGVudEtleVNlc3Npb24gPSBbZ2V0QVZD
b250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOmdl
dEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCldOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5TmFtZShzdG9yYWdlUGF0
aCk7CisgICAgICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShzdG9yYWdlUGF0aCk7CiAKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHN0b3JhZ2VE
aXJlY3RvcnkpKSB7Ci0gICAgICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdl
RGlyZWN0b3J5KSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN0b3JhZ2VE
aXJlY3RvcnkpKSB7CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhzdG9yYWdlRGlyZWN0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDZhOTg5YTVhMDJkLi4xMDdiMWJkZmY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakM6OnN0b3JhZ2VQYXRoKCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFn
ZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCmluZGV4IGMwOTczZWZjMGQ4Li4zMmQzMDhjMDI2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQpAQCAtOTI3LDEyICs5MjcsMTIgQEAgQVZTdHJlYW1TZXNzaW9uKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN0cmVhbVNlc3Npb24oKQogICAgICAg
ICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgewotICAgICAg
ICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgICAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9y
eSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfQogCi0gICAgICAgIFN0
cmluZyBzdG9yYWdlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0
b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNl
Y3VyZVN0b3AucGxpc3QiKTsKICAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhbYWxs
b2NBVlN0cmVhbVNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJM
OltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXSk7CiAgICAgfQogICAgIHJldHVy
biBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGZkOWE3NTkyMTdkLi4xMmM5MDFmMzhmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEzODgs
NyArMTM4OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1
ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgZ19vYmplY3RfZ2V0KHBs
YXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRlbXAtbG9jYXRpb24iLCAmZG93bmxvYWRG
aWxlLm91dFB0cigpLCBudWxscHRyKTsKICAgICBwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIgPSBu
dWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKCFkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQo
KSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2Fk
RmlsZS5nZXQoKSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVk
aWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQwNSw4ICsxNDA1LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlT2xkRG93bmxvYWRGaWxlcyhjb25zdCBjaGFy
KiBkb3dubG9hZEZpbGUKICAgICBHVW5pcXVlUHRyPGNoYXI+IHRlbXBsYXRlRmlsZShnX3BhdGhf
Z2V0X2Jhc2VuYW1lKGRvd25sb2FkRmlsZVRlbXBsYXRlKSk7CiAgICAgU3RyaW5nIHRlbXBsYXRl
UGF0dGVybiA9IFN0cmluZyh0ZW1wbGF0ZUZpbGUuZ2V0KCkpLnJlcGxhY2UoIlgiLCAiPyIpOwog
Ci0gICAgZm9yIChhdXRvJiBmaWxlUGF0aCA6IGxpc3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdl
dCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGVsZXRlRmls
ZShmaWxlUGF0aCkpKSB7CisgICAgZm9yIChhdXRvJiBmaWxlUGF0aCA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdldCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7CisgICAg
ICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCkpKSB7CiAg
ICAgICAgICAgICBHU1RfV0FSTklORygiQ291bGRuJ3QgdW5saW5rIGxlZ2FjeSBtZWRpYSB0ZW1w
b3JhcnkgZmlsZTogJXMiLCBmaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRElCUGl4ZWxEYXRhLmgKaW5kZXggNjVhZDIyNzg3MDQuLjRjM2U4MDE4ZDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVs
RGF0YS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoSEJJ
VE1BUCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCB3cml0ZVRvRmlsZShMUENXU1RSKTsK
KyAgICB2b2lkIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKExQQ1dTVFIpOwogI2VuZGlmCiAKICAg
ICBVSW50OCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXBCdWZmZXI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE0NWY3NTdjZGY5Li5kM2Rm
OGVlZWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC0x
MzUsNyArMTM1LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqdGVtcG9yYXJ5RGlyZWN0b3J5QXR0
cmlidXRlcygpCiAKIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5T
U3RyaW5nICpmaWxlTmFtZSkKIHsKLSAgICBOU1N0cmluZyAqZG93bmxvYWREaXJlY3RvcnkgPSBj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJRdWlja0xvb2tDb250ZW50Iik7CisgICAgTlNTdHJp
bmcgKmRvd25sb2FkRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAiUXVpY2tMb29rQ29udGVudCIpOwogICAgIGlmICghZG93bmxvYWREaXJlY3RvcnkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggNWNkZjRkODgxYTQuLmIz
NDMxNjhlZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtNTE2LDcgKzUxNiw3IEBAIHN0YXRpYyBO
U1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9y
eShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29yZTo6
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7
CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJhY3Rpb25E
aXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0
b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4IDhmMTQzMTY1ODE4Li42NDBkZmMxMmI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5T
KFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwogCkBAIC00NSwxMCArNDUsMTAgQEAgYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogCiAgICAg
Ly8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0
aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1p
c3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgcmV0dXJuICFybWRpcihGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIH0KIAotdm9pZCBz
ZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit2b2lkIEZpbGVTeXN0ZW06OnNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwog
ICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0
cmluZywgbmlsKSkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgUwog
ICAgIH0pOwogfQogCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK2Jvb2wgRmlsZVN5c3Rl
bTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6
ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIC8vIEl0IGlzIGNy
aXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcg
YnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhj
bHVkZWQocGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7IAorICAgIENTQmFja3Vw
U2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwg
RkFMU0UpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYzg5
YjUyODNlMzkuLjZhNWYxMmU4NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICAsIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkK
ICNlbmRpZgogICAgICwgbV9zaXplKDApCi0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZShpbnZhbGlkRmlsZVRpbWUoKSkKKyAgICAsIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKEZp
bGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKQogewogfQogCkBAIC00Niw3ICs0Niw3IEBAIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwo
KSkKLSAgICAgICAgZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTc5
LDcgKzc5LDcgQEAgZG91YmxlIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKCkKICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlv
bnMgZm9yIGdlbmVyYXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAg
Ly8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUg
aGFuZGxpbmcgLSBGaWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJs
eWluZyBmaWxlcyBjaGFuZ2UuCiAgICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRl
ZCB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlk
RmlsZVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9k
aWZpY2F0aW9ucygpCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBTb21lIHBsYXRmb3JtcyBwcm92
aWRlIGJldHRlciB3YXlzIHRvIGxpc3RlbiBmb3IgZmlsZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMs
IGNvbnNpZGVyIHVzaW5nIHRoZXNlLgotICAgIGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOworICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVt
OjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOwogICAgIGlmICghbWV0YWRh
dGEpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMGYwMTk3NGNhMmIuLjE5N2ViMjky
ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKQEAgLTI4MywxNCArMjgzLDE0IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzCiAKICAgICAgICAgYXV0byBwZXJmb3JtV3JpdGluZyA9IFtibG9ic0ZvcldyaXRpbmcgPSBX
VEZNb3ZlKGJsb2JzRm9yV3JpdGluZyksICZmaWxlUGF0aHNdKCkgewogICAgICAgICAgICAgZm9y
IChhdXRvJiBibG9iIDogYmxvYnNGb3JXcml0aW5nKSB7Ci0gICAgICAgICAgICAgICAgUGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKEFTQ0lJTGl0ZXJhbCgiQmxvYiIpLCBmaWxlKTsKKyAgICAgICAg
ICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
QVNDSUlMaXRlcmFsKCJCbG9iIiksIGZpbGUpOwogCiAgICAgICAgICAgICAgICAgYXV0byBmaWxl
Q2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtmaWxlXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgICAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5k
bGVWYWxpZChmaWxlKSkgeworICAgICAgICAgICAgICAgIGlmICh0ZW1wRmlsZVBhdGguaXNFbXB0
eSgpIHx8ICFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgZm9yIHdyaXRp
bmcgYSBCbG9iIHRvIEluZGV4ZWREQiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjk4LDEzICsyOTgsMTMgQEAgdm9pZCBCbG9iUmVn
aXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iLmZpbGVQ
YXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vj
b25kLmRhdGEoKS0+c2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlVG9G
aWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEo
KS0+ZGF0YSgpKSwgbGVuZ3RoKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgd3JpdGluZyBh
IEJsb2IgdG8gdGVtcG9yYXJ5IGZpbGUgZm9yIHN0b3JhZ2UgaW4gSW5kZXhlZERCIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFwYXJ0LmZpcnN0LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0LCBmaWxl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjphcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUocGFydC5maXJzdCwgZmlsZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVudHMgdG8g
YSBCbG9iIHRlbXBvcmFyeSBmaWxlIGZvciBzdG9yYWdlIGluIEluZGV4ZWREQiAoJXMgdG8gJXMp
IiwgcGFydC5maXJzdC51dGY4KCkuZGF0YSgpLCB0ZW1wRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCBjNTc1ZmRhNDUyYS4uNzI0NDIzZWVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdWludDY0
X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgaWYgKG1f
ZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgcmV0
dXJuIG1fZmlsZUxlbmd0aDsKICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICBp
ZiAoZ2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1l
IDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Rmls
ZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9maWxl
bmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZpbGVTaXplOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5k
RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkK
IHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0
ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUs
IDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGlt
ZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKQEAgLTQwOCw5ICs0MDgsOSBAQCB2b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5l
cmF0ZWRGaWxlc0lmTmVlZGVkKCkKICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUgJiYgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRG
aWxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5p
c0VtcHR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZp
bGUpOwotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoZWxlbWVu
dC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZWxlbWVudC5t
X2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRp
cmVjdG9yeSk7CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKICAgICAg
ICAgICAgIGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOwogICAgICAgICAg
ICAgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwCmluZGV4IDkzODM4MjQ0YTdjLi5hMTQ0ZDM1MjUzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVu
dFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAgICBmb3JtLT5jdXJyZW50RGF0
YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhl
IGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYgcmVxdWlyZWQuCi0gICAgICAgIGlmIChp
c1ZhbGlkRmlsZVRpbWUobmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkp
IHsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShuZXh0SW5wdXQubV9l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICAgICAgdGltZV90IGZpbGVN
b2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShuZXh0SW5wdXQubV9maWxlbmFtZSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpIHx8IGZpbGVNb2Rp
ZmljYXRpb25UaW1lICE9IHN0YXRpY19jYXN0PHRpbWVfdD4obmV4dElucHV0Lm1fZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lKG5leHRJbnB1dC5tX2ZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9u
VGltZSkgfHwgZmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gc3RhdGljX2Nhc3Q8dGltZV90PihuZXh0
SW5wdXQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbmV4
dElucHV0Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gbmV4dElucHV0Lm1fZ2VuZXJhdGVkRmlsZW5h
bWUgOiBuZXh0SW5wdXQubV9maWxlbmFtZTsKLSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9
IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIHBhdGhBc1VSTChwYXRoKS5nZXQoKSk7Cisg
ICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgw
LCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOwogICAgICAgICBpZiAoIWZvcm0t
PmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVu
IHJlbW92ZWQgb3IgYmVjb21lIHVucmVhZGFibGUuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNzksNyArMzc5LDcgQEAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRU
UEJvZHlDRlJlYWRTdHJlYW0oRm9ybURhdGEmIGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwot
ICAgICAgICAgICAgaWYgKGdldEZpbGVTaXplKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUg
PyBlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUgOiBlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVT
aXplKSkKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1f
c2hvdWxkR2VuZXJhdGVGaWxlID8gZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogZWxlbWVu
dC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZSkpCiAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZpbGVT
aXplOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggYzc1
NzVkN2FhODEuLjYyYzExYzEyNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIx
Miw5ICsyMTIsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAg
YXV0byBmc1JlcEZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3Rl
bVBhdGgoKSk7CisgICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICBpZiAoIWZz
UmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gZ2V0Rmls
ZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxl
U3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKICAgICAgICAgICAgIGlmIChmaWxl
RGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0
IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1
ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBlZDU5MDI2NTFiMi4uMDM1YTZiMTkwNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDdXJs
Q2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFu
ZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVuYW1l
KGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZW5hbWUoY2FjaGVEaXIpCi0gICAgLCBtX2Nv
bnRlbnRGaWxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBtX2NvbnRlbnRGaWxl
KEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6
ZSgwKQogICAgICwgbV9leHBpcmVEYXRlKC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2Up
CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmlzTG9hZGluZygpIGNvbnN0
CiAvLyBDYWNoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQog
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6aXNDYWNoZWQoKQogewotICAgIGlmICghZmlsZUV4aXN0cyht
X2NvbnRlbnRGaWxlbmFtZSkgfHwgIWZpbGVFeGlzdHMobV9oZWFkZXJGaWxlbmFtZSkpCisgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY29udGVudEZpbGVuYW1lKSB8fCAhRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhtX2hlYWRlckZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFtX2hlYWRlclBhcnNlZCkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBcHBlbmQKLSAgICB3cml0ZVRv
RmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMTI1LDggKzEyNSw4IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJl
c291cmNlSGFuZGxlKiBqb2IpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhl
YWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUGxhdGZvcm1G
aWxlSGFuZGxlIGhlYWRlckZpbGUgPSBvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9y
V3JpdGUpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoZWFkZXJGaWxlKSkgeworICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAo
IUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGVhZGVyRmlsZSkpIHsKICAgICAgICAgTE9HKE5l
dHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2hl
YWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC0xNDAsMTIgKzE0MCwxMiBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9u
c2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBoZWFk
ZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJc
biIpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0
aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4x
LmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRl
ckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQ
SGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAK
LSAgICBjbG9zZUZpbGUoaGVhZGVyRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhl
YWRlckZpbGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMjcsMTYgKzIyNywxNiBAQCB2
b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1
cmwpCiBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIC8vIE9wZW4gdGhlIGZpbGUK
LSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gb3BlbkZpbGUoZmlsZXBhdGgsIE9w
ZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgeworICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5
c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAi
Q2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgbG9uZyBs
b25nIGZpbGVzaXplID0gLTE7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNp
emUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNp
emUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQg
ZmlsZSBzaXplIG9mICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICBj
bG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0
RmlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI0OSwyNCArMjQ5LDI0
IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBidWZmCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZl
clBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9
IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZy
b21GaWxlKGlucHV0RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJS
ZWFkU2l6ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShp
bnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUp
OwogICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJlYWRTaXplKSB7CiAgICAgICAgICAg
ICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCBmcm9tICVzXG4iLCBm
aWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgY2xvc2VGaWxlKGlucHV0Rmls
ZSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGJ1ZmZlclBvc2l0aW9u
ICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0KLSAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50
RmlsZSgpOwotICAgIGRlbGV0ZUZpbGUobV9oZWFkZXJGaWxlbmFtZSk7Ci0gICAgZGVsZXRlRmls
ZShtX2NvbnRlbnRGaWxlbmFtZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2hlYWRl
ckZpbGVuYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fY29udGVudEZpbGVuYW1l
KTsKICAgICBMT0coTmV0d29yaywgIkNhY2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9iYXNlbmFt
ZS5sYXRpbjEoKS5kYXRhKCkpOwogfQogCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDdXJsQ2Fj
aGVFbnRyeTo6cGFyc2VSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgZG91YmxlIGZpbGVUaW1lOwogICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9u
RGF0ZTsKIAotICAgIGlmIChnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX2hlYWRlckZpbGVuYW1l
LCBmaWxlTW9kaWZpY2F0aW9uRGF0ZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKG1faGVhZGVyRmlsZW5hbWUsIGZpbGVNb2RpZmljYXRpb25EYXRlKSkKICAg
ICAgICAgZmlsZVRpbWUgPSBkaWZmdGltZShmaWxlTW9kaWZpY2F0aW9uRGF0ZSwgMCkgKiAxMDAw
LjA7CiAgICAgZWxzZQogICAgICAgICBmaWxlVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsgLy8gR01U
CkBAIC0zNDIsMTEgKzM0MiwxMSBAQCBzaXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgp
CiAgICAgICAgIGxvbmcgbG9uZyBoZWFkZXJGaWxlU2l6ZTsKICAgICAgICAgbG9uZyBsb25nIGNv
bnRlbnRGaWxlU2l6ZTsKIAotICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5h
bWUsIGhlYWRlckZpbGVTaXplKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVT
aXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkgewogICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIs
IG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBt
X2VudHJ5U2l6ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVu
dEZpbGVuYW1lLCBjb250ZW50RmlsZVNpemUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
Z2V0RmlsZVNpemUobV9jb250ZW50RmlsZW5hbWUsIGNvbnRlbnRGaWxlU2l6ZSkpIHsKICAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXpl
IG9mICVzXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIG1fZW50cnlTaXplOwogICAgICAgICB9CkBAIC0zNjAsMTIgKzM2MCwxMiBAQCBz
aXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6
Om9wZW5Db250ZW50RmlsZSgpCiB7Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQobV9jb250ZW50Rmls
ZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIG1fY29udGVudEZpbGUgPSBvcGVuRmlsZSht
X2NvbnRlbnRGaWxlbmFtZSwgT3BlbkZvcldyaXRlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUobV9jb250ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JX
cml0ZSk7CiAKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKKyAgICBpZiAo
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCiAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9w
ZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwpA
QCAtMzc0LDExICszNzQsMTEgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6b3BlbkNvbnRlbnRGaWxl
KCkKIAogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6Y2xvc2VDb250ZW50RmlsZSgpCiB7Ci0gICAgaWYg
KCFpc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBj
bG9zZUZpbGUobV9jb250ZW50RmlsZSk7Ci0gICAgbV9jb250ZW50RmlsZSA9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fY29udGVudEZpbGUp
OworICAgIG1fY29udGVudEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDkyZDZiYzMzYTRhLi44
MWNiYzcxMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9oZWFkZXJGaWxlbmFtZTsKICAgICBTdHJpbmcgbV9jb250ZW50RmlsZW5hbWU7CiAK
LSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250ZW50RmlsZTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250ZW50RmlsZTsKIAogICAgIHNpemVfdCBtX2VudHJ5U2l6
ZTsKICAgICBkb3VibGUgbV9leHBpcmVEYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDM1YmZl
MmVmMmMyLi40NmUxN2U5ZmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtNzYsOCArNzYsOCBA
QCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFmaWxlRXhpc3Rz
KG1fY2FjaGVEaXIpKSB7Ci0gICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVE
aXIpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVEaXIpKSB7Cisg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXIpKSB7
CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiBv
ciBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5ISBDYWNoZU1hbmFnZXIgZGlzYWJsZWQuXG4iKTsKICAg
ICAgICAgICAgIG1fZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAz
LDE0ICsxMDMsMTQgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIFN0
cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBwZW5k
KCJpbmRleC5kYXQiKTsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBvcGVu
RmlsZShpbmRleEZpbGVQYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGluZGV4RmlsZSkpIHsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhG
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3Bl
bkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUp
KSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgV2FybmluZzogQ291bGQgbm90IG9wZW4g
JXMgZm9yIHJlYWRcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGxvbmcgbG9uZyBmaWxlc2l6ZSA9IC0xOwotICAgIGlmICgh
Z2V0RmlsZVNpemUoaW5kZXhGaWxlUGF0aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShpbmRleEZpbGVQYXRoLCBmaWxlc2l6ZSkpIHsKICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIs
IGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEyNCwxMCArMTI0LDEwIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkK
ICAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkK
ICAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsK
IAotICAgICAgICByZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVy
UG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21G
aWxlKGluZGV4RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFk
U2l6ZSk7CiAgICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0K
LSAgICBjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5k
ZXhGaWxlKTsKIAogICAgIC8vIENyZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCiAgICAgU3RyaW5n
IGhlYWRlckNvbnRlbnQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CkBA
IC0xNjQsOSArMTY0LDkgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAg
IFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBw
ZW5kKCJpbmRleC5kYXQiKTsKIAotICAgIGRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7Ci0gICAg
UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9w
ZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKKyAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUg
RXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc1LDEyICsxNzUsMTIg
QEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGNvbnN0IGF1dG8mIGVu
ZCA9IG1fTFJVRW50cnlMaXN0LmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAg
ICAgY29uc3QgQ1N0cmluZyYgdXJsTGF0aW4xID0gaXQtPmxhdGluMSgpOwotICAgICAgICB3cml0
ZVRvRmlsZShpbmRleEZpbGUsIHVybExhdGluMS5kYXRhKCksIHVybExhdGluMS5sZW5ndGgoKSk7
Ci0gICAgICAgIHdyaXRlVG9GaWxlKGluZGV4RmlsZSwgIlxuIiwgMSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGluZGV4RmlsZSwgdXJsTGF0aW4xLmRhdGEoKSwgdXJsTGF0aW4x
Lmxlbmd0aCgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCAi
XG4iLCAxKTsKICAgICAgICAgKytpdDsKICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaW5kZXhGaWxl
KTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKIH0KIAogdm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZvck5ld0VudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggODUwNDdm
ZGM2Y2UuLmFlMmJmZDY4ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
Q3VybERvd25sb2FkOjpjdXJsRGlkQ29tcGxldGUoKQogCiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9u
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9jdXJsUmVxdWVzdCAmJiAhbV9jdXJsUmVxdWVz
dC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbW92ZUZp
bGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24p
OworICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX2xp
c3RlbmVyKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkRmFp
bFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9kZWxldGVzRmlsZVVwb25GYWlsdXJlICYmIG1fY3VybFJlcXVl
c3QgJiYgIW1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRGaWxlUGF0aCgpLmlzRW1wdHkoKSkK
LSAgICAgICAgZGVsZXRlRmlsZShtX2N1cmxSZXF1ZXN0LT5nZXREb3dubG9hZGVkRmlsZVBhdGgo
KSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCkpOwogCiAgICAgaWYgKG1fbGlzdGVuZXIpCiAgICAgICAgIG1fbGlz
dGVuZXItPmRpZEZhaWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJlZTM0N2Y0NzY1Li45N2NhMzJlYTg1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC00NDgsNyArNDQ4LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBGb3Jt
RGF0YShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgaXNQb3N0UmVxdWVzdCkKICAgICBm
b3IgKGF1dG8gZWxlbWVudCA6IGVsZW1lbnRzKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlw
ZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICBs
b25nIGxvbmcgZmlsZVNpemVSZXN1bHQ7Ci0gICAgICAgICAgICBpZiAoZ2V0RmlsZVNpemUoZWxl
bWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZVJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmIChGaWxl
U3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVTaXplUmVzdWx0KSkg
ewogICAgICAgICAgICAgICAgIGlmIChmaWxlU2l6ZVJlc3VsdCA+IG1heEN1cmxPZmZUKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgc2l6ZSBpcyB0b28gYmlnIGZvciBzcGVjaWZ5aW5n
IGl0IHRvIGNVUkwKICAgICAgICAgICAgICAgICAgICAgY2h1bmtlZFRyYW5zZmVyID0gdHJ1ZTsK
QEAgLTYxOSwyMiArNjE5LDIyIEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChtX2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0eSgpKQotICAg
ICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2Fk
IiwgbV9kb3dubG9hZEZpbGVIYW5kbGUpOworICAgICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2FkIiwgbV9kb3dubG9hZEZp
bGVIYW5kbGUpOwogICAgIH0KIAotICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmls
ZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKG1fZG93bmxv
YWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUoKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7
CiAKLSAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKKyAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2xvc2VGaWxlKG1f
ZG93bmxvYWRGaWxlSGFuZGxlKTsKLSAgICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRG
aWxlSGFuZGxlKTsKKyAgICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBEb3du
bG9hZEZpbGUoKQpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBE
b3dubG9hZEZpbGUoKQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAK
ICAgICBpZiAoIW1fZG93bmxvYWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVsZXRl
RmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fZG93bmxvYWRGaWxlUGF0aCk7CiAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IFN0cmlu
ZygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggMjViMWU5NjczNWUuLmE2N2ZmNzFmNTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApA
QCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX2Rvd25sb2FkTXV0ZXg7CiAg
ICAgYm9vbCBtX2lzRW5hYmxlZERvd25sb2FkVG9GaWxlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9kb3dubG9hZEZpbGVQYXRoOwotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmls
ZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGVIYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiAKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3
b3JrTG9hZE1ldHJpY3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCBlY2RiZjExYTVi
Mi4uMWNmZmUzODNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJp
bmcmIGhvc3QsIGNvbnN0IFN0cmluZyYKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgaWYgKGZpbGVFeGlzdHMoY2VydGlmaWNhdGUpKQorICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGNlcnRpZmljYXRlKSkKICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigp
LnNzbEhhbmRsZSgpLnNldENsaWVudENlcnRpZmljYXRlSW5mbyhob3N0LCBjZXJ0aWZpY2F0ZSwg
a2V5KTsKICAgICBlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSW52YWxpZCBjbGllbnQgY2Vy
dGlmaWNhdGUgZmlsZTogJXMhXG4iLCBjZXJ0aWZpY2F0ZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVhYWQyM2E1YzI2Li5mY2Y1NWQ3NmVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogCiAgICAgbV9y
ZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3JlcGxhY2Vt
ZW50UGF0aC5pc051bGwoKSkgewotICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKKyAgICAgICAgaWYgKGF1
dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyht
X3JlcGxhY2VtZW50UGF0aCkpCiAgICAgICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgp
Lmxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCA2NDU3ODYxNWMx
ZS4uMjI2YWVlOWYwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTQxLDExICs0MSwx
MSBAQCBzdGF0aWMgdWludDY0X3QgYXBwZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJv
ZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBi
bG9iSXRlbS5kYXRhKCkuZGF0YSgpLT5kYXRhKCkgKyBibG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0
ZW0ubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gYmxvYkl0ZW0ubGVuZ3RoKCk7CiAgICAgY2Fz
ZSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZpbGU6IHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRmlsZVRp
bWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1lKGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
dGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRl
bS5maWxlKCktPnBhdGgoKSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICB8fCBm
aWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGJsb2JJdGVtLmZpbGUo
KS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZDVhNzQyNjdjY2MuLjc5NWQ3ZGJjYThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzdHJpbmdJc051bWVyaWMoY29uc3QgY2hhciogc3RyKQogLy8gT2xkIHZlcnNpb25zIG9mIFdl
YktpdCBjcmVhdGVkIHRoaXMgY2FjaGUuCiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJP
bGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSkKIHsKLSAgICBDU3RyaW5n
IGNhY2hlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeSk7Cisg
ICAgQ1N0cmluZyBjYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY2FjaGVEaXJlY3RvcnkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVGaWxlKGdfYnVp
bGRfZmlsZW5hbWUoY2FjaGVQYXRoLmRhdGEoKSwgInNvdXAuY2FjaGUyIiwgbnVsbHB0cikpOwog
ICAgIGlmICghZ19maWxlX3Rlc3QoY2FjaGVGaWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdV
TEFSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZGU5YTRhNmNlZGMuLmM2NzJkNzQxNDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2Ug
RmlsZVN5c3RlbSB7CisKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgaWYgKHBhdGguaXNOdWxsKCkpCkBAIC00NDUsNCArNDQ3LDUgQEAgc3RkOjpvcHRpb25hbDxp
bnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVy
biBmaWxlU3RhdC5zdF9kZXY7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCBhMDAxYWJlOGRjMC4uNTEzMzc1ZDI0NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENTdHJp
bmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIENT
dHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZVBhdGgpOwogICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUuZGF0YSgpLCBPX1JET05MWSk7CiAg
ICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA4NDE5ZDc2Yzhh
NS4uNmIyYWY1NDUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRmlsZVN5c3RlbS5jcHAKQEAgLTQ4LDE5ICs0OCwxOSBAQCBTUUxpdGVGaWxlU3lzdGVtOjpT
UUxpdGVGaWxlU3lzdGVtKCkKIAogaW50IFNRTGl0ZUZpbGVTeXN0ZW06Om9wZW5EYXRhYmFzZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzcWxpdGUzKiogZGF0YWJhc2UsIGJvb2wpCiB7Ci0gICAg
cmV0dXJuIHNxbGl0ZTNfb3Blbl92MihmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CisgICAgcmV0dXJuIHNxbGl0
ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CiB9CiAKIFN0cmluZyBTUUxp
dGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKIH0KIAogYm9vbCBTUUxpdGVG
aWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06
OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNo
ZWNrUGF0aE9ubHkpCkBAIC02OSwxNiArNjksMTYgQEAgYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpl
bnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBjaGUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNoZWNrUGF0aE9ubHkpIHsKLSAgICAg
ICAgU3RyaW5nIGRpciA9IGRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpOworICAgICAgICBTdHJpbmcg
ZGlyID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSk7CiAgICAgICAgIHJldHVy
biBlbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhkaXIpOwogICAgIH0KIAotICAgIHJldHVy
biBmaWxlRXhpc3RzKGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlTmFtZSk7CiB9CiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRh
YmFzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKIH0KIAogYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFz
ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKQEAgLTg3LDEyICs4NywxMiBAQCBib29sIFNR
TGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQogICAgIFN0cmluZyBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUsIEFTQ0lJTGl0
ZXJhbCgiLXNobSIpKTsKIAogICAgIC8vIFRyeSB0byBkZWxldGUgYWxsIHRocmVlIGZpbGVzIHdo
ZXRoZXIgb3Igbm90IHRoZXkgYXJlIHRoZXJlLgotICAgIGRlbGV0ZUZpbGUoZmlsZU5hbWUpOwot
ICAgIGRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOwotICAgIGRlbGV0ZUZpbGUoc2htRmlsZU5hbWUp
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2ht
RmlsZU5hbWUpOwogCiAgICAgLy8gSWYgYW55IG9mIHRoZSB3YWwgb3Igc2htIGZpbGVzIHJlbWFp
biBhZnRlciB0aGUgZGVsZXRlIGF0dGVtcHQsIHRoZSBvdmVyYWxsIGRlbGV0ZSBvcGVyYXRpb24g
ZmFpbGVkLgotICAgIHJldHVybiAhZmlsZUV4aXN0cyhmaWxlTmFtZSkgJiYgIWZpbGVFeGlzdHMo
d2FsRmlsZU5hbWUpICYmICFmaWxlRXhpc3RzKHNobUZpbGVOYW1lKTsKKyAgICByZXR1cm4gIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZU5hbWUpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHdhbEZpbGVOYW1lKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSk7CiB9
CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDUsMTkgKzEwNSwxOSBAQCBib29sIFNRTGl0ZUZp
bGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKQogbG9uZyBs
b25nIFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKIHsgICAgICAgIAogICAgIGxvbmcgbG9uZyBzaXplOwotICAgIHJldHVybiBnZXRG
aWxlU2l6ZShmaWxlTmFtZSwgc2l6ZSkgPyBzaXplIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNpemUpID8gc2l6ZSA6IDA7CiB9CiAKIGRvdWJsZSBT
UUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlQ3JlYXRpb25UaW1l
KGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRG
aWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOwogfQogCiBkb3VibGUg
U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4
IDc2ZjkyNGVhYmIyLi5jOTA4NjkzMDE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgLy8gRGljdGlvbmFyeSBmaWxl
cyBhbHdheXMgaGF2ZSB0aGUgZm9ybSAiaHlwaF88bG9jYWxlIG5hbWU+LmRpYyIKICAgICAvLyBz
byB3ZSBzdHJpcCBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgbG9jYWxlLgotICAgIFN0cmluZyBmaWxl
TmFtZSA9IHBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKTsKICAgICBzdGF0aWMgY29uc3Qg
aW50IHByZWZpeExlbmd0aCA9IDU7CiAgICAgc3RhdGljIGNvbnN0IGludCBzdWZmaXhMZW5ndGgg
PSA0OwogICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBmaWxlTmFt
ZS5sZW5ndGgoKSAtIHByZWZpeExlbmd0aCAtIHN1ZmZpeExlbmd0aCk7CkBAIC02MSwxNCArNjEs
MTQgQEAgc3RhdGljIFN0cmluZyBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlUGF0aChj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogCiBzdGF0aWMgdm9pZCBzY2FuRGlyZWN0b3J5Rm9yRGlj
dGlvbmFyaWVzKGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgsIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBm
aWxlUGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgImh5cGhfKi5kaWMiKSkgewor
ICAgIGZvciAoYXV0byYgZmlsZVBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVj
dG9yeVBhdGgsICJoeXBoXyouZGljIikpIHsKICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGV4dHJh
Y3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVQYXRoKGZpbGVQYXRoKS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwogCiAgICAgICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAg
ICAgICBpZiAoIXJlYWxwYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCkuZGF0
YSgpLCBub3JtYWxpemVkUGF0aCkpCisgICAgICAgIGlmICghcmVhbHBhdGgoRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGZpbGVQYXRoID0gc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3JtYWxpemVkUGF0aCk7CisgICAgICAgIGZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3Jt
YWxpemVkUGF0aCk7CiAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSwgVmVjdG9y
PFN0cmluZz4oKSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmaWxlUGF0aCk7CiAKICAgICAgICAg
U3RyaW5nIGxvY2FsZVJlcGxhY2luZ1VuZGVyc2NvcmVzID0gU3RyaW5nKGxvY2FsZSk7CkBAIC0y
MjQsNyArMjI0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZGljdGlvbmFyeVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRp
Y3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5h
dGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggZjBjMzUw
Mjk4NjQuLmJkYWU0YmZjMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCiBzdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNv
bmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwogCiBzdGF0aWMgYm9vbCBnZXRG
aW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCkBAIC01NDMs
NCArNTQ1LDUgQEAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
Q1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdWb2x1bWVTZXJp
YWxOdW1iZXI7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmlu
ZGV4IDM3MDFjZGQ4YTAzLi4zYzZmNTZlMTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yMDA5LDcgKzIwMDksNyBAQCBTdHJpbmcgUmVuZGVy
VGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwg
Y29uc3QgRm9udAogCiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBpZiAoZmlsZUxpc3QtPmxlbmd0
aCgpKQotICAgICAgICBzdHJpbmcgPSBwYXRoR2V0RmlsZU5hbWUoZmlsZUxpc3QtPml0ZW0oMCkt
PnBhdGgoKSk7CisgICAgICAgIHN0cmluZyA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShm
aWxlTGlzdC0+aXRlbSgwKS0+cGF0aCgpKTsKICAgICBlbHNlIGlmIChtdWx0aXBsZUZpbGVzQWxs
b3dlZCkKICAgICAgICAgc3RyaW5nID0gZmlsZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7
CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAK
aW5kZXggYWEzNzBjMzNmYTMuLmU1MWEyNGUyOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIENvbG9yIFJlbmRl
clRoZW1lV2luOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0CiAjaWYg
RU5BQkxFKFZJREVPKQogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVhc29uYWJsZUJ1ZmZl
clNpemUgPSAzMjc2ODsKIAotc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8Y2hh
cj4mIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxlc2l6ZSwgVmVj
dG9yPGNoYXI+JiBidWZmZXIpCiB7CiAgICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8g
YnVmZmVyCiAgICAgYnVmZmVyLnJlc2l6ZShmaWxlc2l6ZSArIDEpOwpAQCAtMTAzNiw3ICsxMDM2
LDcgQEAgc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGUKICAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVm
ZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKICAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXpl
ID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKIAotICAgICAgICBieXRlc1JlYWQgPSByZWFk
RnJvbUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFk
U2l6ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxl
LCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKICAgICAg
ICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewogICAgICAgICAgICAgYnVmZmVy
LmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDU4LDE5ICsxMDU4LDE5IEBAIFN0
cmluZyBSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKENGU3RyaW5nUmVm
IG5hbWUsIENGU3RyaW5nUmVmIHR5CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihyZXF1ZXN0ZWRVUkxSZWYuZ2V0KCksIGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0aCwg
TUFYX1BBVEgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBQbGF0Zm9ybUZpbGVI
YW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IG9wZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBP
cGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUp
KQorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9w
ZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVk
RmlsZUhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGxvbmcgbG9uZyBm
aWxlc2l6ZSA9IC0xOwotICAgIGlmICghZ2V0RmlsZVNpemUocmVxdWVzdGVkRmlsZUhhbmRsZSwg
ZmlsZXNpemUpKSB7Ci0gICAgICAgIGNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5kbGUsIGZpbGVz
aXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRs
ZSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4g
ZmlsZUNvbnRlbnRzOwogICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUocmVxdWVzdGVk
RmlsZUhhbmRsZSwgZmlsZXNpemUsIGZpbGVDb250ZW50cyk7Ci0gICAgY2xvc2VGaWxlKHJlcXVl
c3RlZEZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxl
SGFuZGxlKTsKIAogICAgIHJldHVybiBTdHJpbmcoZmlsZUNvbnRlbnRzLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihmaWxlc2l6ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNjdiMDU5N2UxMy4uZmNl
MDNmZmNlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTctMTAtMzEgIENocmlzdG9w
aGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0
ZW0gbmFtZXNwYWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93
bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9i
RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0
aWNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJl
TWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5N
b2R1bGVVbml4LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJj
aFBhdGguY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0NoaWxkUHJv
Y2Vzc0lPUy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICogU2hh
cmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwOgorICAgICAgICAqIFN0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZp
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NQb29sR3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9Jbmpl
Y3RlZEJ1bmRsZUdsaWIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisKIDIwMTct
MTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKaW5k
ZXggYzZmZjE1YTNiYjguLjY1NDg2MGQ0N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAK
QEAgLTU2LDE2ICs1NiwxNiBAQCB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93
bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUAogewogICAgIEFTU0VS
VCghZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoZmlsZUV4aXN0cyhkZXN0
aW5hdGlvblBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRp
b25QYXRoKSkgewogICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgICAgICBk
aWRGYWlsKG51bGxwdHIsIGNhbmNlbGxlZEVycm9yKG1fZG93bmxvYWQucmVxdWVzdCgpKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlRmlsZShkZXN0aW5h
dGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRlc3RpbmF0aW9uUGF0
aCk7CiAgICAgfQogCiAgICAgbV9kZXN0aW5hdGlvblBhdGggPSBkZXN0aW5hdGlvblBhdGg7Ci0g
ICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBvcGVuRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCwgT3BlbkZv
cldyaXRlKTsKKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
ZGVzdGluYXRpb25QYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIG1fZG93bmxv
YWQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwogCiAgICAgbV9kb3du
bG9hZC5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwpAQCAtNzMsMzAgKzczLDMwIEBAIHZv
aWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25QCiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCkKIHsKLSAgICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rlc3RpbmF0
aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2Rvd25sb2Fk
LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRD
bGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKQogewotICAgIGNsb3NlRmls
ZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGlu
YXRpb25GaWxlKTsKICAgICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgpOwogfQogCiB2b2lkIEJsb2JE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKCkKIHsKLSAgICBjbG9zZUZpbGUobV9kZXN0aW5hdGlv
bkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CiAg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0ZUZpbGUo
bV9kZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZGVz
dGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVy
ZW5jZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBjbG9zZUZpbGUobV9k
ZXN0aW5hdGlvbkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9u
RmlsZSk7CiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkRmFpbChlcnJvciwg
SVBDOjpEYXRhUmVmZXJlbmNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAppbmRleCA0YTQy
Y2MyY2E3Ny4uZjk0MDYxMWIzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCkBAIC01Myw3ICs1
Myw3IEBAIHByaXZhdGU6CiAKICAgICBEb3dubG9hZCYgbV9kb3dubG9hZDsKICAgICBTdHJpbmcg
bV9kZXN0aW5hdGlvblBhdGg7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVz
dGluYXRpb25GaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rlc3RpbmF0aW9uRmls
ZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCmluZGV4IDc4ZTVhNDE2NWJjLi42ZGE1M2YzZTFiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBA
IC00MTIsNyArNDEyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogICAgIG1fdG90YWxSZW1haW5pbmdTaXpl
IC09IGJ5dGVzUmVhZDsKIAogICAgIGlmIChieXRlc1JlYWQpIHsKLSAgICAgICAgaWYgKG1fZG93
bmxvYWRGaWxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgaWYgKG1f
ZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsK
ICAgICAgICAgICAgIGlmICghd3JpdGVEb3dubG9hZChkYXRhLCBieXRlc1JlYWQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ0OCw4ICs0NDgsOCBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbgogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAg
ICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCi0gICAgaWYgKGFsbG93T3Zlcndy
aXRlICYmIGZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CisgICAgaWYgKGFsbG93T3Zlcndy
aXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikp
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlv
bik7CiB9CiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgp
IGNvbnN0CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3du
bG9hZCgpCiAKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Js
b2I6OmRvd25sb2FkIHRvICVzIiwgdGhpcywgbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4
KCkuZGF0YSgpKTsKIAotICAgIG1fZG93bmxvYWRGaWxlID0gb3BlbkZpbGUobV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbiwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmlsZVN5c3RlbTo6T3Bl
bkZvcldyaXRlKTsKKyAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVk
RXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OCw3
ICs0ODgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIGJvb2wgTmV0
d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0
ZXNSZWFkKQogewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGludCBieXRlc1dyaXR0
ZW4gPSB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBp
bnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUs
IGRhdGEsIGJ5dGVzUmVhZCk7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAg
ICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTAzLDExICs1MDMsMTEgQEAgYm9vbCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAK
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBp
ZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewotICAgICAg
ICBjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAgICAgICBtX2Rvd25sb2FkRmlsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlKTsKKyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIH0KLSAgICBkZWxldGVGaWxl
KG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZGlkRmFpbERvd25sb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNTM2LDgg
KzUzNiw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQoKQog
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmlu
aXNoRG93bmxvYWQiLCB0aGlzKTsKIAogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGNs
b3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7Ci0gICAgbV9kb3dubG9hZEZpbGUgPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmls
ZSk7CisgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwogCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBtX3NhbmRi
b3hFeHRlbnNpb24tPnJldm9rZSgpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZGlkRmFpbChFcnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlkRmluaXNoKCkKIHsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIGRpZEZpbmlzaERvd25s
b2FkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IDUxOTM1OTQ0OTU1Li45MjY2
ZWRlYzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQgeyAw
IH07CiAgICAgYm9vbCBtX2ZpbGVPcGVuZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1f
c2FuZGJveEV4dGVuc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggMmZkOGVmZjEzNTEuLjZlNWNkZjc2Zjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjAxLDcg
KzYwMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgY20p
CiAgICAgdW5zaWduZWQgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3Qg
dXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAwOwogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IDA7
Ci0gICAgaWYgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9y
eSwgZGlza0ZyZWVTaXplKSkgeworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRWb2x1
bWVGcmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAg
ICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2Fz
ZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0
bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICog
MTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBmODE3MzYyZGFlNS4uNjc5NDkzNTAzOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVz
Um9vdFBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBLZXkga2V5KG9yaWdpbiwgeyB9LCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25I
YXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkp
OwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjA1LDkgKzIwNSw5IEBAIHZvaWQgRW5naW5l
Ojppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2Fs
bGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2FsdFBhdGggPSBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlMaXRlcmFs
KCJzYWx0IikpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7
CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUo
c2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9y
aWVzKG1fcm9vdFBhdGgpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIHNhbHQgPSByZWFk
T3JNYWtlU2FsdChzYWx0UGF0aCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXNhbHQpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhFcnJvcjo6V3JpdGVEaXNrKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmVt
b3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgp
IG11dGFibGUgewotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9
CiAKQEAgLTM4Miw4ICszODIsOCBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hv
dWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAog
ICAgIGF1dG8gdGFza0NvdW50ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdl
YkNvcmU6Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAoIVdl
YkNvcmU6OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlm
ICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9y
eShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCld
IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11
dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQxNSw4
ICs0MTUsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dyZWdhdG9y
JiB0YXNrSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbcGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIHRhc2tIYW5kbGVyID0gbWFrZVJl
Zih0YXNrSGFuZGxlcildIHsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6
Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OmZp
bGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
czo6Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAgICBpZiAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRl
RGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggYzhlZjZmMDdhMTAuLmU4NDMxNWUzZmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC00MiwxOCArNDIsMTggQEAgbmFtZXNw
YWNlIENhY2hlU3RvcmFnZSB7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgi
Y2FjaGVzbGlzdCIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNhY2hlc2xpc3Qi
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc09yaWdpbkZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7CiB9CiAKIHZvaWQgQ2Fj
aGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRo
LCBXb3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHF1ZXVlLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBmb2xkZXJQYXRoID0gZm9sZGVyUGF0aC5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RG
aWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RGaWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CkBAIC0zMzMsNyArMzMz
LDcgQEAgdm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICB9CiAKICAgICBhdXRvIGZpbGVuYW1l
ID0gY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOwotICAgIGlmICghV2ViQ29yZTo6Zmls
ZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCA1NzA0Zjg1Njc0NC4uMTk1YzIzZjVh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBDYWNoZTo6Q2FjaGUoUmVmPFN0b3JhZ2U+
JiYgc3RvcmFnZSwgT3B0aW9uU2V0PE9wdGlvbj4gb3B0aW9ucykKICNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAgICAgLy8gVHJpZ2dlcnMgd2l0aCAidG91Y2ggJGNhY2hlUGF0aC9kdW1w
Ii4KLSAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+
YmFzZVBhdGgoKSwgImR1bXAiKSk7CisgICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRoKCksICJk
dW1wIikpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkdW1wRmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKGR1bXBGaWxlUGF0aC5kYXRhKCkpKTsKICAgICAgICAgR0ZpbGVNb25p
dG9yKiBtb25pdG9yID0gZ19maWxlX21vbml0b3JfZmlsZShkdW1wRmlsZS5nZXQoKSwgR19GSUxF
X01PTklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChtb25pdG9yLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZHVtcEZpbGVDaGFuZ2Vk
KSwgdGhpcyk7CkBAIC01MzcsMTYgKzUzNywxNiBAQCB2b2lkIENhY2hlOjp0cmF2ZXJzZShGdW5j
dGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKIAog
U3RyaW5nIENhY2hlOjpkdW1wRmlsZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9uUGF0aCgpLCAiZHVt
cC5qc29uIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsKIH0KIAog
dm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKIHsKLSAgICBhdXRvIGZkID0gV2ViQ29y
ZTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAg
aWYgKCFXZWJDb3JlOjppc0hhbmRsZVZhbGlkKGZkKSkKKyAgICBhdXRvIGZkID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06
Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGZkKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gcHJvbG9ndWUgPSBTdHJpbmcoIntc
blwiZW50cmllc1wiOiBbXG4iKS51dGY4KCk7Ci0gICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQs
IHByb2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOworICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZkLCBwcm9sb2d1ZS5kYXRhKCksIHByb2xvZ3VlLmxlbmd0aCgp
KTsKIAogICAgIHN0cnVjdCBUb3RhbHMgewogICAgICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsK
QEAgLTU3NSw4ICs1NzUsOCBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAg
ICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXG4iKTsKICAgICAgICAgICAgIGVwaWxv
Z3VlLmFwcGVuZExpdGVyYWwoIn1cbn1cbiIpOwogICAgICAgICAgICAgYXV0byB3cml0ZURhdGEg
PSBlcGlsb2d1ZS50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OndyaXRl
VG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwotICAgICAg
ICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZkKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3Ro
KCkpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZkKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGVudHJ5ID0gRW50cnk6
OmRlY29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7CkBAIC01OTAsMTQgKzU5MCwxNCBAQCB2b2lk
IENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgICAgICBlbnRyeS0+YXNKU09OKGpzb24s
IGluZm8pOwogICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICBhdXRv
IHdyaXRlRGF0YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIFdlYkNvcmU6Ondy
aXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOworICAg
ICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEo
KSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBDYWNoZTo6ZGVsZXRl
RHVtcEZpbGUoKQogewogICAgIFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNh
Y2hlLmRlbGV0ZSIpLT5kaXNwYXRjaChbcGF0aCA9IGR1bXBGaWxlUGF0aCgpLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCk7CisgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggZjZiMzY0ZmE5ZWQuLjE2MzVmMjNjZTZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUJsb2JTdG9yYWdlLmNwcApAQCAtNTMsMTUgKzUzLDE1IEBAIHZvaWQgQmxvYlN0b3Jh
Z2U6OnN5bmNocm9uaXplKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBh
dGgoKSk7CiAKICAgICBtX2FwcHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0
b3J5ID0gYmxvYkRpcmVjdG9yeVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGly
ZWN0b3J5LCBbdGhpcywgJmJsb2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0
b3J5RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlU
eXBlOjpGaWxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAg
ICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisgICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
ICAgICAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEo
KSwgJnN0YXQpOwogICAgICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJs
b2JTdG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25z
dAogewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAg
IHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBh
dGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRo
KCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpC
bG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRh
KQpAQCAtODgsOCArODgsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGgg
PSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gp
KTsKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOworICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0g
YWNjZXNzKGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMTksNyArMTE5LDcgQEAg
QmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0g
V2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1Bh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAgICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJu
IHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5s
aW5rKGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB1bnNpZ25lZCBC
bG9iU3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0
IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA4YWM3OTdmNzhhMC4uN2JiNjQ5
MmE2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBTYWx0IG1h
a2VTYWx0KCkKIAogc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJp
bmcmIHBhdGgpCiB7Ci0gICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGNwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRh
dGEoKSwgT19SRE9OTFksIDApOwogICAgIFNhbHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9
IHJlYWQoZmQsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcAppbmRleCA4MmQ3MzU1MTg5Ni4uZWU2ZDE0ZTU3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lz
dGVtLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVj
dG9yeUVudHJ5VHlwZSh1aW50OF90IGR0eXBlKQogCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGly
ZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewotICAgIERJUiogZGlyID0gb3BlbmRpcihX
ZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBESVIq
IGRpciA9IG9wZW5kaXIoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
aXJlbnQqIGRwOwpAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiB2
b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGly
ZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKKyAgICAgICAgU3RyaW5n
IGVudHJ5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRGly
ZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50
cnlUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShlbnRyeVBhdGgpOwpAQCAtOTUsMTkgKzk1LDE5IEBAIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9s
bG93IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAgfSk7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkocGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkocGF0aCk7CiB9CiAKIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCiAgICAgc3RydWN0IHN0YXQgZmlsZUlu
Zm87Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICBpZiAoc3RhdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZy
b21fdGltZV90KGZpbGVJbmZvLnN0X2JpcnRodGltZSksIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OmZyb21fdGltZV90KGZpbGVJbmZvLnN0X210aW1lKSB9OwogI2VsaWYgVVNFKFNPVVApCiAg
ICAgLy8gVGhlcmUncyBubyBzdF9iaXJ0aHRpbWUgaW4gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBs
aWtlIExpbnV4LCBzbyB3ZSB1c2UgeGF0dHJzIHRvIHNldC9nZXQgdGhlIGNyZWF0aW9uIHRpbWUu
Ci0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBH
UmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwog
ICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlf
aW5mbyhmaWxlLmdldCgpLCAieGF0dHI6OmJpcnRodGltZSx0aW1lOjptb2RpZmllZCIsIEdfRklM
RV9RVUVSWV9JTkZPX05PTkUsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZv
KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgdXBkYXRlRmls
ZU1vZGlmaWNhdGlvblRpbWVJZk5lZWRlZChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIC8vIFRoaXMgcmVhbGx5IHVwZGF0ZXMgYm90aCB0aGUgYWNj
ZXNzIHRpbWUgYW5kIHRoZSBtb2RpZmljYXRpb24gdGltZS4KLSAgICB1dGltZXMoV2ViQ29yZTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgdXRp
bWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCksIG51bGxwdHIpOwogfQogCiBib29sIGNhblVzZVNoYXJlZE1lbW9yeUZvclBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKQpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgY2FuVXNlU2hhcmVkTWVt
b3J5Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgYXR0cmxpc3QgYXR0ckxpc3QgPSB7
IH07CiAgICAgYXR0ckxpc3QuYml0bWFwY291bnQgPSBBVFRSX0JJVF9NQVBfQ09VTlQ7CiAgICAg
YXR0ckxpc3QuY29tbW9uYXR0ciA9IEFUVFJfQ01OX0RBVEFfUFJPVEVDVF9GTEFHUzsKLSAgICBp
bnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0dHJCdWZm
ZXIpLCBGU09QVF9OT0ZPTExPVyk7CisgICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
ICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xM
T1cpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiVW5hYmxlIHRvIGdldCBjYWNoZSBkaXJlY3RvcnkgcHJvdGVjdGlvbiBjbGFzcywgZGlzYWJs
aW5nIHVzZSBvZiBzaGFyZWQgbWFwcGVkIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCBlZmQ3Nzk5ZGEyZi4uNzZiMTRl
MzM0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEsNyBA
QCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUp
CiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRv
IHBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAg
IGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAgIGJvb2wg
dXNlTG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAK
aW5kZXggMDE2MTIwODBjNzkuLjRjZTc3NjJiOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
U291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwg
bV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChwYXRoLmRhdGEoKSkpOwogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpDcmVhdGU6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCmluZGV4IDY5MzM0MTdmZDhjLi5iNGY2MjYyZGM0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0
aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBh
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0cmluZyBkYXRhYmFz
ZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0
aXN0aWNzRGF0YWJhc2VOYW1lKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGlj
c0RhdGFiYXNlTmFtZSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlzdGljcz4o
Y2FjaGUsIGRhdGFiYXNlUGF0aCk7CiB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTdGF0aXN0
aWNzOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogICAgIHNlcmlhbEJh
Y2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNl
UGF0aC5pc29sYXRlZENvcHkoKSwgbmV0d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1Bh
dGgoKSwgc3RhcnRUaW1lXSB7CiAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgICAgICBpZiAoIVdl
YkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNl
UGF0aCkpKQorICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29y
a1Byb2Nlc3MpIE9wZW5pbmcgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVz
Li4uIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggZTRhZGIxOWJjOGMuLjAzZTMwOTI5MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTEz
NiwyOSArMTM2LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJpbmcgbWFrZVZlcnNpb25lZERpcmVj
dG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKICAgICBTdHJpbmcg
dmVyc2lvblN1YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3RvcnlQcmVmaXggKyBTdHJpbmc6Om51
bWJlcihTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJh
c2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIFN0cmlu
ZyBtYWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0
aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VW
ZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9y
eU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBy
ZWNvcmRzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3Rv
cnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0
aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVk
RGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9
CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVNhbHRGaWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJl
Y3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0Rmls
ZU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBz
YWx0RmlsZU5hbWUpOwogfQogCiBSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBT
dHJpbmcmIGNhY2hlUGF0aCwgTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBpZiAoIVdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lv
bmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBh
dGgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFr
ZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0x
NzEsMTMgKzE3MSwxMyBAQCB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYg
cmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGly
ZWN0b3J5KHJlY29yZHNQYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJl
Y3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGly
ZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IFN0cmluZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jk
c1BhdGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRp
b25QYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUg
ZW50cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5
VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlm
ICghZXhwZWN0ZWRUeXBlLmlzRW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0
b3J5UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRo
LCBhY3R1YWxUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBh
dGgsIGFjdHVhbFR5cGUpOwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGly
ZWN0b3J5UGF0aCwgWyZmdW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBl
XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZp
bGUgfHwgZmlsZU5hbWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk3LDE4ICsxOTcsMTggQEAgc3RhdGljIHZvaWQg
ZGVsZXRlRW1wdHlSZWNvcmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xk
ZXJzLgotICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmlu
ZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJl
Y3RvcnkocGFydGl0aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRp
ck5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChl
bnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQg
aXMgcmVhbGx5IGVtcHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRp
ck5hbWUpKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0
aXRpb25QYXRoLCBzdWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0
ZSBbUGFydGl0aW9uXSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQg
aWYgaXQgaXMgcmVhbGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVj
dG9yeShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRp
dGlvbk5hbWUpKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3NiwxNyArMjc2LDE3
IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgICAgICB1bnNpZ25lZCBjb3VudCA9
IDA7CiAgICAgICAgIFN0cmluZyBhbnlUeXBlOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxl
cyhyZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBbJnJlY29yZEZpbHRlciwgJmJsb2JGaWx0ZXIsICZy
ZWNvcmRzU2l6ZSwgJmNvdW50XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmlu
ZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsK
IAogICAgICAgICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6
OnN0cmluZ1RvSGFzaChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsK
ICAgICAgICAgICAgIGlmICghZmlsZVNpemUpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKQEAgLTM1MiwxMiArMzUyLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJs
b2IoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5
UGF0aEZvcktleShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBl
KCkuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXku
cGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9u
SGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29y
ZFBhdGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSks
IGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtl
eS5oYXNoQXNTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQ
YXRoKGNvbnN0IFN0cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0
b3JhZ2U6OmRlbGV0ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5
KGtleSkpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZv
cktleShrZXkpKTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkp
KTsKIH0KIApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9w
ZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAg
ICAgIGF1dG8gcmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3
cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVj
b3JkUGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJD
b3JlOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7
CiAKICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtODYzLDcgKzg2
Myw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBUcmF2ZXJz
ZUZsYWdzIGZsYWdzLCBUcmF2ZXJzZUhhbmRsZXImCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZp
bGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFt
ZSk7CiAKICAgICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYgKHRy
YXZlcnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBAIC05
NTIsMTMgKzk1MiwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtbwogICAgIGlvUXVldWUoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNp
bmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
dHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJl
Y29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRz
RmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAg
ICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRE
aXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRp
bWUgPiBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKSkgewogICAg
ICAgICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAg
ICAgICAgIGlmICh0aW1lcy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29y
ZTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1w
dHlSZWNvcmRzRGlyZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAg
dm9pZCBTdG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAg
ICAgICAgICAgYXV0byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRo
KTsKIAogICAgICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAg
LTEwNTAsNyArMTA1MCw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtD
b3VudD0lZCBzaG91bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNo
b3VsZERlbGV0ZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAg
ICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAg
ICAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVy
c2lvbnMoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBh
dXRvIG9sZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNh
Y2hlUGF0aCwgc3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwg
c3ViZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJz
aW9uUGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkob2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCAzMTMxYzBmMWM0NC4uZTJkNDFlZTc4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
CkBAIC03MywxNSArNzMsMTUgQEAgdm9pZCBNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgcmVjb3JkUmVwbGF5TW9kZSwgY29uc3QgU3RyaW5nJiByZWNvcmRSZXAKICAgICAgICAgbV9y
ZWNvcmRSZXBsYXlNb2RlID0gRGlzYWJsZWQ7CiAgICAgfQogCi0gICAgbV9yZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZFJl
cGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKKyAgICBtX3JlY29yZFJl
cGxheUNhY2hlTG9jYXRpb24gPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZWNvcmRSZXBsYXkp
OwogICAgIERFQlVHX0xPRygiQ2FjaGUgbG9jYXRpb24gPSAiIFNUUklOR19TUEVDSUZJRVIsIERF
QlVHX1NUUihtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24pKTsKIAogICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5k
bGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBt
X3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgo
KSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICB9IGVsc2UgaWYgKGlz
UmVwbGF5aW5nKCkpIHsKLSAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6Rmls
ZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKTsKLSAgICAg
ICAgbV9sb2FkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgo
KSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxlID0g
V2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JX
cml0ZSk7CisgICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUo
cmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7Cisg
ICAgICAgIG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQ
YXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVw
bGF5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgICAgICBsb2FkUmVzb3VyY2Vz
KCk7CiAgICAgfQogfQpAQCAtMzY1LDE3ICszNjUsMTcgQEAgdm9pZCBNYW5hZ2VyOjpsb2FkUmVz
b3VyY2VzKCkKIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydExvYWRQYXRoKCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVM
b2NhdGlvbiwga0ZpbGVOYW1lUmVwb3J0TG9hZCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRp
b24sIGtGaWxlTmFtZVJlcG9ydExvYWQpOwogfQogCiBTdHJpbmcgTWFuYWdlcjo6cmVwb3J0UmVj
b3JkUGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7CiB9CiAK
IFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRSZXBsYXlQYXRoKCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwg
a0ZpbGVOYW1lUmVwb3J0UmVwbGF5KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Zp
bGVOYW1lUmVwb3J0UmVwbGF5KTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcXVlc3RUb1BhdGgo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNDExLDkgKzQxMSw5
IEBAIFN0cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNvbnN0IFN0cmluZyYgaGFzaCkKICAgICBm
aWxlTmFtZS5hcHBlbmQoaGFzaFRhaWwpOwogICAgIGZpbGVOYW1lLmFwcGVuZExpdGVyYWwoIi5k
YXRhIik7CiAKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlc291cmNlcyk7Ci0gICAg
cGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7
Ci0gICAgcGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxl
TmFtZS50b1N0cmluZygpKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGly
TmFtZVJlc291cmNlcyk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZS50b1N0cmlu
ZygpKTsKIAogICAgIHJldHVybiBwYXRoOwogfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgTWFu
YWdlcjo6bG9nUGxheWVkQmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYm9vCiAgICAgbV9yZXBsYXlGaWxlSGFuZGxlLnByaW50ZigiJXMgJXNcbiIs
IHdhc0NhY2hlTWlzcyA/ICJtaXNzIiA6ICJoaXQgIiwgREVCVUdfU1RSKHVybC5zdHJpbmcoKSkp
OwogfQogCi1XZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlIG1vZGUpCitXZWJDb3JlOjpG
aWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiB7CiAgICAgLy8gSWYgd2Ug
Y2FuIHRyaXZpYWxseSBvcGVuIHRoZSBmaWxlLCB0aGVuIGRvIHRoYXQgYW5kIHJldHVybiB0aGUg
bmV3IGZpbGUKICAgICAvLyBoYW5kbGUuCkBAIC00NjQsOSArNDY0LDkgQEAgV2ViQ29yZTo6Rmls
ZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdl
YkNvcmU6OkZpbGUKICAgICAvLyBJZiB3ZSdyZSBvcGVuaW5nIHRoZSBmaWxlIGZvciB3cml0aW5n
IChpbmNsdWRpbmcgYXBwZW5kaW5nKSwgdGhlbiB0cnkKICAgICAvLyBhZ2FpbiBhZnRlciBtYWtp
bmcgc3VyZSBhbGwgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiBjcmVhdGVkLgog
Ci0gICAgaWYgKG1vZGUgIT0gV2ViQ29yZTo6T3BlbkZvclJlYWQpIHsKLSAgICAgICAgY29uc3Qg
YXV0byYgcGFyZW50RGlyID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShmaWxlUGF0aCk7Ci0gICAg
ICAgIGlmICghV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERpcikpIHsKKyAgICBp
ZiAobW9kZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkgeworICAgICAgICBj
b25zdCBhdXRvJiBwYXJlbnREaXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KGZpbGVQYXRoKTsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMocGFyZW50RGlyKSkgewogICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJv
ciAlZCB0cnlpbmcgdG8gY3JlYXRlIGludGVybWVkaWF0ZSBkaXJlY3RvcmllczogIiBTVFJJTkdf
U1BFQ0lGSUVSLCBlcnJubywgREVCVUdfU1RSKHBhcmVudERpcikpOwogICAgICAgICAgICAgcmV0
dXJuIGZpbGVIYW5kbGU7CiAgICAgICAgIH0KQEAgLTQ3OSw3ICs0NzksNyBAQCBXZWJDb3JlOjpG
aWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
V2ViQ29yZTo6RmlsZQogICAgIC8vIENvdWxkIG5vdCBvcGVuIHRoZSBmaWxlLiBMb2cgdGhlIGVy
cm9yIGFuZCBsZWF2ZSwgcmV0dXJuaW5nIHRoZSBpbnZhbGlkCiAgICAgLy8gZmlsZSBoYW5kbGUu
CiAKLSAgICBpZiAobW9kZSA9PSBXZWJDb3JlOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkKICAgICAgICAgREVCVUdfTE9HX0VS
Uk9SKCJFcnJvciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3IgcmVh
ZGluZyIsIGVycm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKICAgICBlbHNlCiAgICAgICAgIERF
QlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVS
ICIgZm9yIHdyaXRpbmciLCBlcnJubywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CkBAIC00OTAsNyAr
NDkwLDcgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGUKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZl
Y3RvcjxTdHJpbmc+Pj4gTWFuYWdlcjo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
IHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBXZWJDb3JlOjpNYXBwZWRGaWxlRGF0
YSBmaWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSBmaWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAppbmRl
eCBlYjJhY2M0OGRjYS4uNTBlZDVlMjNkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nTG9hZGVkUmVzb3VyY2UoUmVzb3Vy
Y2UmKTsKICAgICB2b2lkIGxvZ1BsYXllZEJhY2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIHdhc0NhY2hlTWlzcyk7CiAKLSAgICBXZWJDb3JlOjpGaWxlSGFu
ZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlKTsK
KyAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKIAogICAgIFN0cmluZyByZXF1ZXN0VG9Q
YXRoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBTdHJpbmcg
dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJMJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZWNvcmRlci5jcHAKaW5kZXggZTY2MDNlNjM2ZDcuLjNhNTU5YTYxODQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJl
L05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZWNv
cmRlcjo6cmVjb3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
dm9pZCBSZWNvcmRlcjo6d3JpdGVFdmVudHMoKQogewogICAgIGF1dG8gcGF0aCA9IE1hbmFnZXI6
OnNpbmdsZXRvbigpLnJlcXVlc3RUb1BhdGgobV9pbml0aWFsUmVxdWVzdCk7Ci0gICAgYXV0byBo
YW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6
Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBoYW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5v
cGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAg
ICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNl
LmgKaW5kZXggZTU3NjBlZDFiYzMuLjc1NzZjMGQ1ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0
cmluZyBtX2V2ZW50RmlsZVBhdGg7CiAgICAgICAgIGJvb2wgbV9oYXZlTWFwcGVkRXZlbnRGaWxl
IHsgZmFsc2UgfTsKLSAgICAgICAgV2ViQ29yZTo6TWFwcGVkRmlsZURhdGEgbV9tYXBwZWRFdmVu
dEZpbGU7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1fbWFw
cGVkRXZlbnRGaWxlOwogICAgICAgICBzaXplX3QgbV9vZmZzZXQgeyAwIH07CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZGY2NGUzOWJlNjEuLjE3NTY1YjI3OWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5h
bQogCiAgICAgbV90YXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbjsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJDb3JlOjpm
aWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQotICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiB9CiAKIGJvb2wg
TmV0d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5k
ZXggMDVjODY4NDhlMjUuLjVmOTY5YmIxMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC00NzIs
NyArNDcyLDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3Jr
TG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFn
ZXIgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIo
KTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3du
bG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9u
LT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2Fk
KCpkb3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpmaWxlRXhpc3RzKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBBU1NFUlQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9u
KG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRv
d25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZN
b3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggYmQ0ZjYyOTE5M2YuLjRjOGI0
YTRlMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpCiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpOwogICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2Fj
aGVEaXJlY3Rvcnk7CiAKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hl
KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBTb3Vw
TmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3
b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRF
bmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCA4ZTdmMGE3NTU1OS4uYTQ0NGYwNjk2YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXVuY2hQcm9jZXNzKGNvbnN0IFN0cmluZyYgbGF1
bmNoUGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAgICAgYm9vbCBsYXVu
Y2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXJndW1lbnRzKTsKICAgICBib29sIG9wZW5VUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGludDMyX3QmIHN0YXR1cywgU3RyaW5nJiBsYXVuY2hlZFVSTFN0cmluZyk7Ci0gICAg
Ym9vbCBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgYm9vbCBGaWxlU3lz
dGVtOjpvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAjZW5kaWYKIAogICAgIENv
dW50ZWRVc2VyQWN0aXZpdHkmIGNvbm5lY3Rpb25BY3Rpdml0eSgpIHsgcmV0dXJuIG1fY29ubmVj
dGlvbkFjdGl2aXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXgu
Y3BwCmluZGV4IGRhZjliYWVjZWU1Li43YWYwOTgzM2RiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luTW9kdWxlSQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9
IHBsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShwbHVn
aW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBsdWdpblBhdGgpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBtZXRhRGF0YS5uYW1lOwog
ICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0YS5kZXNjcmlwdGlvbjsKICAgICBwYXJzZU1J
TUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24sIHBsdWdpbi5pbmZvLm1pbWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5T
ZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5T
ZWFyY2hQYXRoLmNwcAppbmRleCA3ZTg5MmYwMGM4NS4uMDc1MWYwZmY1OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5j
cHAKQEAgLTQ4LDggKzQ4LDggQEAgVmVjdG9yPFN0cmluZz4gcGx1Z2luc0RpcmVjdG9yaWVzKCkK
ICAgICBpZiAoIW1vemlsbGFIb21lLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCht
b3ppbGxhSG9tZSArICIvcGx1Z2lucyIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChob21lRGlyZWN0
b3J5UGF0aCgpICsgIi8ubW96aWxsYS9wbHVnaW5zIik7Ci0gICAgcmVzdWx0LmFwcGVuZChob21l
RGlyZWN0b3J5UGF0aCgpICsgIi8ubmV0c2NhcGUvcGx1Z2lucyIpOworICAgIHJlc3VsdC5hcHBl
bmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIp
OworICAgIHJlc3VsdC5hcHBlbmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIv
Lm5ldHNjYXBlL3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9icm93c2Vy
L3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xvY2FsL2xpYi9tb3ppbGxhL3Bs
dWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9maXJlZm94L3BsdWdpbnMiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5kZXggMTUxMzM5MDg4
ZGMuLjk2MzZmMTFmOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1v
cnlTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVy
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RvcCgpCiAg
ICAgaWYgKCFtX2lzUnVubmluZykgCiAgICAgICAgIHJldHVybjsKICAgICBtX3NhbXBsZVRpbWVy
LnN0b3AoKTsKLSAgICBjbG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKIAogICAgIHByaW50ZigiU3RvcHBlZCBtZW1v
cnkgc2FtcGxlciBmb3IgcHJvY2VzcyAlcyAlZFxuIiwgcHJvY2Vzc05hbWUoKS51dGY4KCkuZGF0
YSgpLCBnZXRwaWQoKSk7CiAgICAgLy8gRmx1c2ggc3Rkb3V0IGJ1ZmZlciBzbyBweXRob24gc2Ny
aXB0IGNhbiBiZSBndWFyYW50ZWVkIHRvIHJlYWQgdXAgdG8gdGhpcyBwb2ludC4KQEAgLTEyNyw3
ICsxMjcsNyBAQCBib29sIFdlYk1lbW9yeVNhbXBsZXI6OmlzUnVubmluZygpIGNvbnN0CiAgICAg
CiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVUZW1wTG9nRmlsZSgpCiB7Ci0gICAg
bV9zYW1wbGVMb2dGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1f
c2FtcGxlTG9nRmlsZSk7CisgICAgbV9zYW1wbGVMb2dGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1fc2FtcGxlTG9nRmlsZSk7CiAgICAgd3Jp
dGVIZWFkZXJzKCk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBs
ZXI6OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZQogICAgIGlmIChtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2Ft
cGxlTG9nU2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogICAgIG1fc2FtcGxlTG9nRmlsZVBh
dGggPSBzYW1wbGVMb2dGaWxlUGF0aDsKLSAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBvcGVuRmlsZSht
X3NhbXBsZUxvZ0ZpbGVQYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIG1fc2FtcGxlTG9nRmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fc2FtcGxlTG9nRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9w
ZW5Gb3JXcml0ZSk7CiAgICAgd3JpdGVIZWFkZXJzKCk7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OndyaXRlSGVhZGVycygpCiAgICAgU3RyaW5nIHByb2Nl
c3NEZXRhaWxzID0gU3RyaW5nOjpmb3JtYXQoIlByb2Nlc3M6ICVzIFBpZDogJWRcbiIsIHByb2Nl
c3NOYW1lKCkudXRmOCgpLmRhdGEoKSwgZ2V0cGlkKCkpOwogCiAgICAgQ1N0cmluZyB1dGY4U3Ry
aW5nID0gcHJvY2Vzc0RldGFpbHMudXRmOCgpOwotICAgIHdyaXRlVG9GaWxlKG1fc2FtcGxlTG9n
RmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0
ZjhTdHJpbmcubGVuZ3RoKCkpOwogfQogCiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVRp
bWVyRmlyZWQoKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3Rv
cFRpbWVyRmlyZWQoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjph
cHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJikKK3ZvaWQg
V2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpCiB7CiAgICAgLy8gQ29sbGVjdCBzdGF0aXN0aWNzIGZy
b20gYWxsb2NhdG9ycyBhbmQgZ2V0IFJTSVpFIG1ldHJpYwogICAgIFN0cmluZ0J1aWxkZXIgc3Rh
dFN0cmluZzsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVu
ZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKQogICAgIHN0YXRT
dHJpbmcuYXBwZW5kKCdcbicpOwogCiAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gc3RhdFN0cmlu
Zy50b1N0cmluZygpLnV0ZjgoKTsKLSAgICB3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0
ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5n
Lmxlbmd0aCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
TWVtb3J5U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5o
CmluZGV4IDI3ODdiNTE1ZGFiLi4zMjVlZWI4MmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Yk1lbW9yeVNhbXBsZXIuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5p
dGlhbGl6ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwogICAg
IHZvaWQgc3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2Fn
ZVRvRmlsZShXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1
cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCk7CiAgICAgCiAgICAg
U3lzdGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFsbG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5
NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3RhdGlzdGljcyBzYW1wbGVXZWJLaXQoKSBj
b25zdDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKICAgICAKLSAgICBXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSB9OworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5nIG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAgICAg
V2ViQ29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3N0b3BU
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0
YWJsZVBhdGhHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aEd0ay5jcHAKaW5kZXggOGIzODMzMzgwOGIuLjljYTZmZjY1NjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKIHsK
ICAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7
CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGRpcmVj
dG9yeU5hbWUoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aC5kYXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aC5kYXRhKCkpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAjZW5kaWYKQEAgLTUzLDIwICs1
MywyMCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nl
c3NOYW1lKQogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYg
KGV4ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0Rp
cmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1Bh
dGgpKQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Bh
dGg7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdldEV4ZWN1
dGFibGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewotICAgICAg
ICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJs
ZVBhdGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgp
KQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIHBy
b2Nlc3NQYXRoOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBLR0xJQkVYRUNESVIp
LCBwcm9jZXNzTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBL
R0xJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CiB9CiAKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9m
V2ViUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQ
cm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5t
bQppbmRleCA3MmY1MTIzNmNiNS4uM2VjNTRiZjM0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtNzEsMTQgKzcxLDE0IEBAIHZvaWQgQ2hpbGRQ
cm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMmCiAgICAgfQogCiAgICAgU3RyaW5nIHNhbmRib3hJbXBvcnRQYXRoID0gIi91
c3IvbG9jYWwvc2hhcmUvc2FuZGJveC9pbXBvcnRzIjsKLSAgICBzYW5kYm94UGFyYW1ldGVycy5h
ZGRQYXRoUGFyYW1ldGVyKCJJTVBPUlRfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNh
bmRib3hJbXBvcnRQYXRoKS5kYXRhKCkpOworICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQ
YXJhbWV0ZXIoIklNUE9SVF9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc2FuZGJveEltcG9ydFBhdGgpLmRhdGEoKSk7CiAKICAgICBzd2l0Y2ggKHNhbmRib3hQYXJh
bWV0ZXJzLm1vZGUoKSkgewogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVy
czo6VXNlRGVmYXVsdFNhbmRib3hQcm9maWxlUGF0aDoKICAgICBjYXNlIFNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnM6OlVzZU92ZXJyaWRlU2FuZGJveFByb2ZpbGVQYXRoOiB7CiAgICAg
ICAgIFN0cmluZyBzYW5kYm94UHJvZmlsZVBhdGggPSBzYW5kYm94UGFyYW1ldGVycy5tb2RlKCkg
PT0gU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlRGVmYXVsdFNhbmRib3hQcm9m
aWxlUGF0aCA/IGRlZmF1bHRQcm9maWxlUGF0aCA6IHNhbmRib3hQYXJhbWV0ZXJzLm92ZXJyaWRl
U2FuZGJveFByb2ZpbGVQYXRoKCk7CiAgICAgICAgIGlmICghc2FuZGJveFByb2ZpbGVQYXRoLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgQ1N0cmluZyBwcm9maWxlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihzYW5kYm94UHJvZmlsZVBhdGgpOworICAgICAgICAgICAgQ1N0cmluZyBw
cm9maWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94
UHJvZmlsZVBhdGgpOwogICAgICAgICAgICAgY2hhciogZXJyb3JCdWY7CiAgICAgICAgICAgICBp
ZiAoc2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhwcm9maWxlUGF0aC5kYXRhKCksIFNBTkRC
T1hfTkFNRURfRVhURVJOQUwsIHNhbmRib3hQYXJhbWV0ZXJzLm5hbWVkUGFyYW1ldGVyQXJyYXko
KSwgJmVycm9yQnVmKSkgewogICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxk
bid0IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxlIFslc10sIGVycm9yICclcydcbiIsIGdldHBy
b2duYW1lKCksIHByb2ZpbGVQYXRoLmRhdGEoKSwgZXJyb3JCdWYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggNTRhZTY1ODAyZDMuLjI3NmU2ZTNm
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAg
LTEyOCw3ICsxMjgsNyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIHNhbmRib3hQYXJh
bWV0ZXJzLmFkZFBhcmFtZXRlcigiX09TX1ZFUlNJT04iLCBvc1ZlcnNpb24udXRmOCgpLmRhdGEo
KSk7CiAKICAgICAvLyBVc2UgcHJpdmF0ZSB0ZW1wb3JhcnkgYW5kIGNhY2hlIGRpcmVjdG9yaWVz
LgotICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIsIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihzYW5kYm94UGFyYW1ldGVycy51c2VyRGlyZWN0b3J5U3VmZml4KCkpLmRhdGEo
KSwgMSk7CisgICAgc2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIiwgRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQYXJhbWV0ZXJzLnVzZXJEaXJlY3Rv
cnlTdWZmaXgoKSkuZGF0YSgpLCAxKTsKICAgICBjaGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQQVRI
X01BWF07CiAgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9y
YXJ5RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlczogY291bGRuJ3QgcmV0cmlldmUgcHJpdmF0ZSB0ZW1wb3JhcnkgZGlyZWN0
b3J5IHBhdGg6ICVkXG4iLCBnZXRwcm9nbmFtZSgpLCBlcnJubyk7CkBAIC0xNTQsMTggKzE1NCwx
OCBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpm
cm9tVVRGOChwd2QucHdfZGlyKTsKICAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKIAotICAg
IHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBzYW5kYm94UGFyYW1l
dGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfRElSIiwgRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAKICAgICBwYXRoLmFwcGVuZCgi
L1ByZWZlcmVuY2VzIik7CiAKLSAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVy
KCJIT01FX0xJQlJBUllfUFJFRkVSRU5DRVNfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7CisgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigi
SE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAgICAgc3dpdGNoIChzYW5kYm94UGFyYW1ldGVy
cy5tb2RlKCkpIHsKICAgICBjYXNlIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVz
ZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGg6CiAgICAgY2FzZSBTYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzOjpVc2VPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aDogewogICAgICAgICBT
dHJpbmcgc2FuZGJveFByb2ZpbGVQYXRoID0gc2FuZGJveFBhcmFtZXRlcnMubW9kZSgpID09IFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBh
dGggPyBkZWZhdWx0UHJvZmlsZVBhdGggOiBzYW5kYm94UGFyYW1ldGVycy5vdmVycmlkZVNhbmRi
b3hQcm9maWxlUGF0aCgpOwogICAgICAgICBpZiAoIXNhbmRib3hQcm9maWxlUGF0aC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKKyAgICAgICAgICAgIENTdHJpbmcgcHJvZmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFByb2Zp
bGVQYXRoKTsKICAgICAgICAgICAgIGNoYXIqIGVycm9yQnVmOwogICAgICAgICAgICAgaWYgKHNh
bmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmlsZVBhdGguZGF0YSgpLCBTQU5EQk9YX05B
TUVEX0VYVEVSTkFMLCBzYW5kYm94UGFyYW1ldGVycy5uYW1lZFBhcmFtZXRlckFycmF5KCksICZl
cnJvckJ1ZikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBp
bml0aWFsaXplIHNhbmRib3ggcHJvZmlsZSBbJXNdLCBlcnJvciAnJXMnXG4iLCBnZXRwcm9nbmFt
ZSgpLCBwcm9maWxlUGF0aC5kYXRhKCksIGVycm9yQnVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggMWE4YjlmZGNmYjAuLmQ5MmNi
Zjk3YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiBTdHJp
bmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBib3RoIHJlc29sdmVTeW1saW5rc0luUGF0aCgpIGFu
ZCAtc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aD8KLSAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3Rh
bmRhcmRpemluZ1BhdGhdKTsKKyAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRoID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3Rh
bmRhcmRpemluZ1BhdGhdKTsKICAgICBpZiAoZmlsZVN5c3RlbVBhdGguaXNOdWxsKCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgdmFsaWQgZmlsZSBzeXN0ZW0gcmVw
cmVzZW50YXRpb24gZm9yIHRoZSBzdHJpbmcgJyVzJyBvZiBsZW5ndGggJWx1IiwgZmlsZVN5c3Rl
bVBhdGguZGF0YSgpLCBmaWxlU3lzdGVtUGF0aC5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiB7
IH07CkBAIC0zMzUsNyArMzM1LDcgQEAgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUKICAgICBwYXRo
LmFwcGVuZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKICAgICBwYXRo
LmFwcGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5k
YXRhKCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9z
YW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0
ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRh
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoV1BFLmNwcAppbmRleCAyMmQ0NWNiYmJlZi4uNWVkNTZkMzcwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RXhlY3V0YWJsZVBhdGgoKQogewog
ICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKTsK
ICAgICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZGlyZWN0
b3J5TmFtZShzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
LmRhdGEoKSkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
LmRhdGEoKSkpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApAQCAtNDcsMTkgKzQ3LDE5IEBA
IHN0YXRpYyBTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VC
S0lUX0VYRUNfUEFUSCIpOwogICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Ci0gICAgICAgIFN0cmlu
ZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAg
IGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1l
KTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAg
ICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmcg
ZXhlY3V0YWJsZVBhdGggPSBnZXRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJs
ZVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlm
IChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9j
ZXNzTmFtZSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRo
KSkKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKLSAgICByZXR1cm4g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKIH0KIAogU3RyaW5nIGV4ZWN1
dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZWNkNTE3MDc4MzAuLjdiNDY1NjQzNTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1h
a2UgYWxsIGRpcmVjdG9yaWVzIGZvciBwYXRoICclcyciLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwog
fQogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6YWNjZXNzVG9UZW1w
b3JhcnlGaWxlQ29tcGxldGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIFdlJ3ZlIGVpdGhl
ciBoYXJkIGxpbmtlZCB0aGUgdGVtcG9yYXJ5IGJsb2IgZmlsZSB0byB0aGUgZGF0YWJhc2UgZGly
ZWN0b3J5LCBjb3BpZWQgaXQgdGhlcmUsCiAgICAgLy8gb3IgdGhlIHRyYW5zYWN0aW9uIGlzIGJl
aW5nIGFib3J0ZWQuCiAgICAgLy8gSW4gYW55IG9mIHRob3NlIGNhc2VzLCB3ZSBjYW4gZGVsZXRl
IHRoZSB0ZW1wb3JhcnkgYmxvYiBmaWxlIG5vdy4KLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAKICAgICBpZiAoYXV0byBleHRlbnNpb24g
PSBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnMudGFrZShwYXRoKSkKICAgICAg
ICAgZXh0ZW5zaW9uLT5yZXZva2UoKTsKQEAgLTMwMCw4ICszMDAsOCBAQCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9yYWdlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3Jp
Z2lucyhjb25zdAogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5zOwotICAgIGZvciAoYXV0byYgb3JpZ2lu
UGF0aCA6IGxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICBTdHJpbmcgZGF0YWJh
c2VJZGVudGlmaWVyID0gcGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgIGZvciAoYXV0
byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewor
ICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRp
ZmllcikpCiAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKFdURk1vdmUoKnNlY3Vy
aXR5T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA3ZjRmODA0MmE3Ny4uMDI3ZGU0MDA3MWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcApAQCAtODUsNyArODUsNyBAQCBDb250ZW50UnVsZUxpc3RTdG9yZTo6
Q29udGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBs
ZQogICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0
U3RvcmUgUmVtb3ZlIFF1ZXVlIikpCiAgICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2FjeUZpbGVu
YW1lKQogewotICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQog
CiBDb250ZW50UnVsZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKQEAgLTEwOCw3
ICsxMDgsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihib29s
IGxlZ2FjeUZpbGVuYW1lKQogCiBzdGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBT
dHJpbmcmIGJhc2UsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCBsZWdhY3lGaWxlbmFt
ZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2Us
IG1ha2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29y
ZTo6ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29u
c3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKIH0KIAogLy8gVGhlIHNpemUgYW5kIG9m
ZnNldCBvZiB0aGUgZGVuc2VseSBwYWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2Yg
YW5kIG9mZnNldG9mLCB3aGljaCB3b3VsZApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBib29s
IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBt
ZXRhRGF0YSwgY29uCiAKIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEm
IGZpbGVEYXRhKQogewotICAgIGZpbGVEYXRhID0gbWFwRmlsZShXZWJDb3JlOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBmaWxlRGF0YSA9IG1hcEZpbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
CiAgICAgaWYgKGZpbGVEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTE5NCwxMSArMTk0LDExIEBAIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3Qo
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiBmaWxlRGF0
YSwgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkKQorc3RhdGljIGJvb2wgd3JpdGVEYXRh
VG9GaWxlKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmQpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmaWxlRGF0
YS5hcHBseShbZmQsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewotICAgICAgICBpZiAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRh
LCBzaXplKSA9PSAtMSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgewogICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShT
dHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKIAogICAgIGNsYXNzIENv
bXBpbGF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlv
bkNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEm
IG1ldGFEYXRhKQorICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEm
IG1ldGFEYXRhKQogICAgICAgICAgICAgOiBtX2ZpbGVIYW5kbGUoZmlsZUhhbmRsZSkKICAgICAg
ICAgICAgICwgbV9tZXRhRGF0YShtZXRhRGF0YSkKICAgICAgICAgewpAQCAtMjg3LDggKzI4Nyw4
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwg
Y29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRp
dGlvbnNBcHBseU9ubHlUb0RvbWFpbiA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxl
TGlzdE1ldGFEYXRhKG1fbWV0YURhdGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAm
JiBXZWJDb3JlOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVNlZWtP
cmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJv
ciAmJiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OkZpbGVTeXN0ZW06OlNlZWtGcm9tQmVn
aW5uaW5nKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICAgICAgICAgIG1fZmlsZUVycm9yID0gdHJ1
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlcik7CkBAIC0z
MDQsMTIgKzMwNCwxMiBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0
cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAgICB2b2lkIHdy
aXRlVG9GaWxlKGNvbnN0IERhdGEmIGRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9maWxlRXJyb3IgJiYgIXdyaXRlRGF0YVRvRmlsZShkYXRhLCBtX2ZpbGVIYW5kbGUpKSB7Ci0g
ICAgICAgICAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAg
ICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAg
ICAgICAgICAgICAgICAgbV9maWxlRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxl
SGFuZGxlOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9maWxlSGFuZGxlOwogICAgICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbV9tZXRhRGF0
YTsKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0
dGVuIHsgMCB9OwogICAgICAgICBzaXplX3QgbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2Rl
V3JpdHRlbiB7IDAgfTsKQEAgLTMyMCwyNyArMzIwLDI3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2Nv
ZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQ
YXRoCiAgICAgICAgIGJvb2wgbV9maWxlRXJyb3IgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBh
dXRvIHRlbXBvcmFyeUZpbGVIYW5kbGUgPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwotICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3Jh
cnlGaWxlKCJDb250ZW50UnVsZUxpc3QiLCB0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKLSAgICBpZiAo
dGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQorICAgIGF1dG8gdGVtcG9yYXJ5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHRlbXBvcmFyeUZpbGVQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIkNvbnRlbnRSdWxlTGlzdCIs
IHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgIGlmICh0ZW1wb3JhcnlGaWxlSGFuZGxlID09IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJl
dHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgCiAg
ICAgY2hhciBpbnZhbGlkSGVhZGVyW0NvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplXTsKICAg
ICBtZW1zZXQoaW52YWxpZEhlYWRlciwgMHhGRiwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKICAg
ICAvLyBUaGlzIGhlYWRlciB3aWxsIGJlIHJld3JpdHRlbiBpbiBDb21waWxhdGlvbkNsaWVudDo6
ZmluYWxpemUuCi0gICAgaWYgKFdlYkNvcmU6OndyaXRlVG9GaWxlKHRlbXBvcmFyeUZpbGVIYW5k
bGUsIGludmFsaWRIZWFkZXIsIHNpemVvZihpbnZhbGlkSGVhZGVyKSkgPT0gLTEpIHsKLSAgICAg
ICAgV2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgIGlmIChXZWJD
b3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlk
SGVhZGVyLCBzaXplb2YoaW52YWxpZEhlYWRlcikpID09IC0xKSB7CisgICAgICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0
dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKICAgICB9CiAK
ICAgICBDb21waWxhdGlvbkNsaWVudCBjb21waWxhdGlvbkNsaWVudCh0ZW1wb3JhcnlGaWxlSGFu
ZGxlLCBtZXRhRGF0YSk7CiAgICAgCiAgICAgaWYgKGF1dG8gY29tcGlsZXJFcnJvciA9IGNvbXBp
bGVSdWxlTGlzdChjb21waWxhdGlvbkNsaWVudCwgV1RGTW92ZShqc29uKSkpIHsKLSAgICAgICAg
V2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJl
dHVybiBjb21waWxlckVycm9yOwogICAgIH0KICAgICBpZiAoY29tcGlsYXRpb25DbGllbnQuaGFk
RXJyb3JXaGlsZVdyaXRpbmdUb0ZpbGUoKSkgewotICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUo
dGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3Nl
RmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKICAgICB9CiAgICAgCkBAIC0zNDgsNyArMzQ4
LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29u
LCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAgICBpZiAobWFwcGVkRGF0YS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZh
aWxlZDsKIAotICAgIGlmICghV2ViQ29yZTo6bW92ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgsIGZp
bmFsRmlsZVBhdGgpKQorICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bW92ZUZpbGUodGVt
cG9yYXJ5RmlsZVBhdGgsIGZpbmFsRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gQ29udGVudFJ1
bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVkOwogCiAgICAgcmV0dXJuIHsgfTsKQEAg
LTQxMiwxMiArNDEyLDEyIEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJs
ZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKEZ1bmN0aW9uPHZvaWQoCiB7CiAgICAgbV9yZWFk
UXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JlUGF0
aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5
RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZnVsbFBhdGhzID0gV2ViQ29y
ZTo6bGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lG
aWxlbmFtZSkpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBmdWxsUGF0aHMgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVy
KGxlZ2FjeUZpbGVuYW1lKSk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzOwog
ICAgICAgICBpZGVudGlmaWVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZ1bGxQYXRocy5zaXpl
KCkpOwogICAgICAgICBjb25zdCBhdXRvIHByZWZpeExlbmd0aCA9IGNvbnN0cnVjdGVkUGF0aFBy
ZWZpeChsZWdhY3lGaWxlbmFtZSkubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
cGF0aCA6IGZ1bGxQYXRocykKLSAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVu
ZChXZWJDb3JlOjpkZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNl
RmluZCgnLycpICsgMSArIHByZWZpeExlbmd0aCkpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJz
LnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUo
cGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSArIHByZWZpeExlbmd0aCkp
KTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9IFdURk1vdmUoaWRlbnRpZmllcnMpXSgpIG11dGFi
bGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShpZGVudGlmaWVycykp
OwpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNv
bnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBtX3JlbW92
ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlm
aWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGgu
aXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwg
bGVnYWN5RmlsZW5hbWUpOwogCi0gICAgICAgIGlmICghV2ViQ29yZTo6ZGVsZXRlRmlsZShwYXRo
KSkgeworICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCkp
IHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFcnJv
cjo6UmVtb3ZlRmFpbGVkKTsKICAgICAgICAgICAgIH0pOwpAQCAtNDY5LDE5ICs0NjksMTkgQEAg
dm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLAogCiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzeW5j
aHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogewotICAgIGZvciAoY29uc3QgYXV0
byYgcGF0aCA6IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobV9zdG9yZVBhdGgsICIqIikpCi0gICAg
ICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXRo
IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3N0b3JlUGF0aCwgIioiKSkK
KyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKIH0KIAogdm9p
ZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNpb24o
Y29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBmaWxlID0gV2ViQ29y
ZTo6b3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBtX2xl
Z2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICBpZiAoZmlsZSA9PSBX
ZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gZmlsZSA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0aCwgaWRl
bnRpZmllciwgbV9sZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JX
cml0ZSk7CisgICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogICAgIENvbnRlbnRSdWxlTGlzdE1ldGFE
YXRhIGludmFsaWRIZWFkZXIgPSB7MCwgMCwgMCwgMCwgMCwgMH07Ci0gICAgYXV0byBieXRlc1dy
aXR0ZW4gPSBXZWJDb3JlOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CisgICAgYXV0
byBieXRlc1dyaXR0ZW4gPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZh
bGlkSGVhZGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRl
biA9PSBzaXplb2YoaW52YWxpZEhlYWRlcikpOwotICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxl
KTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiB9CiAKIHZvaWQg
Q29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6
OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChXVEY6OlN0cmluZyk+IGNvbXBsZXRp
b25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
QVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4IDcwY2EzNmIzZWZiLi40NjZj
MGNmNWQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
CiAvLyBXaHkgaXMgb25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxh
ciBhcHBsaWNhdGlvbj8KIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0Nh
Y2hlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktp
dENhY2hlIikpOworICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9w
cmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0Q2FjaGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRf
cHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKIH0KIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgp
CkBAIC04MCwxMiArODAsMTIgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNl
cl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwg
ZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0
YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3Rv
cnlOYW1lKTsKIH0KIAogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDIy
MDhlYWVmMDUwLi5jMzc3NTgyNTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBJY29u
RGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUpCiAgICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IGRpcmVjdG9yeS5pc29sYXRlZENvcHko
KTsKIAogICAgIC8vIEZvcm11bGF0ZSB0aGUgZnVsbCBwYXRoIGZvciB0aGUgZGF0YWJhc2UgZmls
ZQotICAgIG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bV9kYXRhYmFzZURpcmVjdG9yeSwgZmlsZW5hbWUpOworICAgIG1fY29tcGxldGVEYXRhYmFzZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVj
dG9yeSwgZmlsZW5hbWUpOwogCiAgICAgLy8gTG9jayBoZXJlIGFzIHdlbGwgYXMgZmlyc3QgdGhp
bmcgaW4gdGhlIHRocmVhZCBzbyB0aGUgdGhyZWFkIGRvZXNuJ3QgYWN0dWFsbHkgY29tbWVuY2Ug
dW50aWwgdGhlIGNyZWF0ZVRocmVhZCgpIGNhbGwKICAgICAvLyBjb21wbGV0ZXMgYW5kIG1fc3lu
Y1RocmVhZFJ1bm5pbmcgaXMgcHJvcGVybHkgc2V0CkBAIC04NjksMTMgKzg2OSwxMyBAQCB2b2lk
IEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAjZW5kaWYKIAogICAgIC8v
IE5lZWQgdG8gY3JlYXRlIHRoZSBkYXRhYmFzZSBwYXRoIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBl
eGlzdAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBG
aWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9kYXRhYmFzZURpcmVjdG9yeSk7CiAKICAg
ICAvLyBFeGlzdGVuY2Ugb2YgYSBqb3VybmFsIGZpbGUgaXMgZXZpZGVuY2Ugb2YgYSBwcmV2aW91
cyBjcmFzaC9mb3JjZSBxdWl0IGFuZCBhdXRvbWF0aWNhbGx5IHF1YWxpZmllcwogICAgIC8vIHVz
IHRvIGRvIGFuIGludGVncml0eSBjaGVjawogICAgIFN0cmluZyBqb3VybmFsRmlsZW5hbWUgPSBt
X2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIjsKICAgICBpZiAoIWNoZWNrSW50ZWdy
aXR5T25PcGVuKQotICAgICAgICBjaGVja0ludGVncml0eU9uT3BlbiA9IGZpbGVFeGlzdHMoam91
cm5hbEZpbGVuYW1lKTsKKyAgICAgICAgY2hlY2tJbnRlZ3JpdHlPbk9wZW4gPSBGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGpvdXJuYWxGaWxlbmFtZSk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fc3luY0xvY2spOwpAQCAtMTAwOCw4ICsxMDA4LDggQEAgdm9pZCBJY29uRGF0
YWJhc2U6OnBlcmZvcm1PcGVuSW5pdGlhbGl6YXRpb24oKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAgICAgICAgICAg
IC8vIFNob3VsZCd2ZSBiZWVuIGNvbnN1bWVkIGJ5IFNRTGl0ZSwgZGVsZXRlIGp1c3QgdG8gbWFr
ZSBzdXJlIHdlIGRvbid0IHNlZSBpdCBhZ2FpbiBpbiB0aGUgZnV0dXJlOwotICAgICAgICAgICAg
ICAgIGRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCArICItam91cm5hbCIpOwotICAg
ICAgICAgICAgICAgIGRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCk7CisgICAgICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsg
Ii1qb3VybmFsIik7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Nv
bXBsZXRlRGF0YWJhc2VQYXRoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gUmVv
cGVuIHRoZSB3cml0ZSBkYXRhYmFzZSwgY3JlYXRpbmcgaXQgZnJvbSBzY3JhdGNoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRh
dGFiYXNlLmNwcAppbmRleCA2ZTI4NGY4MmRjZC4uMzcyNDQzZTJkM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFi
YXNlLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAg
cHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25EYXRh
YmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNB
cmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKIAotICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNl
LT5vcGVuKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUocGF0aCksIFdlYkNvcmU6OnBhdGhHZXRGaWxl
TmFtZShwYXRoKSkpIHsKKyAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG51
bGxwdHI7CiAgICAgICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBmNjAxMmM4NzNiNC4uNzg4MDQ5NGEz
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZp
bGVDaG9vc2VyUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIGNvbnN0
IGdjaGFyKiBjb25zdCogd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3RlZF9m
aWxlcyhXZWJLaXRGaWxlQ2hvCiAgICAgICAgIEFQSTo6U3RyaW5nKiB3ZWJGaWxlTmFtZSA9IHN0
YXRpY19jYXN0PEFQSTo6U3RyaW5nKj4oc2VsZWN0ZWRGaWxlTmFtZXMtPmF0KGkpKTsKICAgICAg
ICAgaWYgKHdlYkZpbGVOYW1lLT5zdHJpbmdWaWV3KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24od2ViRmlsZU5hbWUtPnN0cmluZygpKTsKKyAgICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJGaWxlTmFtZS0+c3RyaW5n
KCkpOwogICAgICAgICBnX3B0cl9hcnJheV9hZGQocmVxdWVzdC0+cHJpdi0+c2VsZWN0ZWRGaWxl
cy5nZXQoKSwgZ19zdHJkdXAoZmlsZW5hbWUuZGF0YSgpKSk7CiAgICAgfQogICAgIGdfcHRyX2Fy
cmF5X2FkZChyZXF1ZXN0LT5wcml2LT5zZWxlY3RlZEZpbGVzLmdldCgpLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAK
aW5kZXggNDI2MGVhYjc4MjQuLmZkMTc4MmY4YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzIxLDIxICsz
MjEsMjEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3Qq
IG9iamVjdCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmls
ZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwgSU5KRUNURURfQlVORExFX0ZJTEVOQU1F
LCBudWxscHRyKSk7CiAKICAgICBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1
cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkp
KTsKKyAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1l
LmdldCgpKSk7CiAgICAgY29uZmlndXJhdGlvbi5zZXRNYXhpbXVtUHJvY2Vzc0NvdW50KDEpOwog
ICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxl
ZCh0cnVlKTsKIAogICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VC
X0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdl
YkNvbnRleHQtPnByaXY7CiAgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciAmJiAhd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53
ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlz
a0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2Vy
LmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwotICAgICAgICBjb25maWd1cmF0
aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxp
bmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRl
RGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+
d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNl
X2xvYWRfc3RhdGlzdGljc19kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+
d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldERp
c2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5
KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3Rv
cnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hl
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNv
bmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5h
Z2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3NfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJp
di0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOworICAgICAgICBjb25maWd1cmF0aW9u
LnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRh
KCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShj
b25maWd1cmF0aW9uKTsKIApAQCAtOTEwLDcgKzkxMCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2Owog
ICAgIGVuc3VyZUZhdmljb25EYXRhYmFzZShjb250ZXh0KTsKIAotICAgIFN0cmluZyBkaXJlY3Rv
cnlQYXRoID0gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgLy8gVXNlIGRlZmF1bHQg
aWYgbnVsbHB0ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgogICAgIGlmIChkaXJlY3RvcnlQYXRo
LmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTkxOSw3ICs5MTksNyBAQCB2b2lk
IHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0
V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICBjb25zdCBjaGFyKiBwb3J0RGlyZWN0b3J5ID0g
IndwZSI7CiAjZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3Rv
cnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCBwb3J0RGlyZWN0b3J5
LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwotICAgICAgICBkaXJlY3RvcnlQYXRoID0gV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7CisgICAgICAgIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgp
KTsKICAgICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5
UGF0aC51dGY4KCk7CiAKQEAgLTkyOCw3ICs5MjgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4
dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dAogICAgICAgICAiV2VicGFnZUljb25zLmRiIiwgbnVsbHB0cikpOwogCiAgICAgLy8gU2V0dGlu
ZyB0aGUgcGF0aCB3aWxsIGNhdXNlIHRoZSBpY29uIGRhdGFiYXNlIHRvIGJlIG9wZW5lZC4KLSAg
ICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwg
V2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29uRGF0YWJh
c2VQYXRoLmdldCgpKSk7CisgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2LT5mYXZp
Y29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOwogCiAgICAgaWYg
KHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCkpCiAgICAgICAgIHdlYmtp
dEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdi0+ZmF2aWNvbkRh
dGFiYXNlLmdldCgpLCB0cnVlKTsKQEAgLTEwMTIsNyArMTAxMiw3IEBAIHZvaWQgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRl
eHQqIGNvbnRlCiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNl
dEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bv
b2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0K
IApAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tf
Y2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAgICAgZ19yZXR1
cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wt
PmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+
cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3Rvcnko
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwg
bmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdl
ci5jcHAKaW5kZXggY2U3Mjk0ZGZmNTkuLmZiMTk5N2E2NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFu
YWdlci5jcHAKQEAgLTM5MCwxNSArMzkwLDE1IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Vi
a2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAg
ICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3Rv
cmU6OkNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICAgICAgICAgY29uZmlndXJhdGlvbi5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSAhcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAg
ICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVj
dG9yeSgpIDogV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2
LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3Rv
cmFnZURpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hl
RGlyZWN0b3J5ID0gIXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtD
YWNoZVN1YmRpcmVjdG9yeSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdv
cmtDYWNoZVN1YmRpcmVjdG9yeSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeSA9ICFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAg
ICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnkoKSA6IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJp
di0+YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6Oldl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogICAgICAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAg
ICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVj
dG9yeSgpIDogV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2
LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0
b3J5LmdldCgpKTsKICAgICAgICAgY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5ID0gIXByaXYtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPwotICAg
ICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpIDogV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwcml2LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKKyAgICAg
ICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocHJpdi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5nZXQo
KSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsK
ICAgICAgICAgcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTU2MSw3ICs1
NjEsNyBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNr
X2NhY2hlX2RpcmVjdG9yeShXZWJLaXRXZWJzaXRlRAogCiAgICAgaWYgKCFwcml2LT5kaXNrQ2Fj
aGVEaXJlY3RvcnkpIHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkg
aGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5y
ZXNldChnX3N0cmR1cChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAg
ICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBw
cml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmlu
ZGV4IGJmMTliMGFhYzNlLi5hNWU4NThjMzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAg
LTY3OSw3ICs2NzksNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdl
KGNvbnN0IFdlYlBhZ2VQcm94eSYgcGFnZSkKIAogc3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0
ZWRGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBhbGxvd2VkTUlNRVR5cGVzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRGaWxlRXh0
ZW5zaW9ucykKIHsKLSAgICBpZiAoIVdlYkNvcmU6OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQorICAg
IGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGlmIChhbGxvd2VkTUlNRVR5cGVzLmlzRW1wdHkoKSAmJiBh
bGxvd2VkRmlsZUV4dGVuc2lvbnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggZmVlZjBjZWU0MDIu
LjRhMWUzYjI0OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTM3Niw3ICszNzYsNyBAQCBTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
KCkKICAgICAvLyBDdXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29u
dGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgogICAgIC8vIFdlIHNo
b3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCiAgICAgLy8gSW4gdGhl
IG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVz
IHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFi
YXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIiKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBhMmU0ODJmZWY4
Mi4uZDc2ZTEwOWU3NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFt
ZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3Rpbgog
ICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2aWEgLVtOU0Zp
bGVXcmFwcGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJMOmVycm9yOl0i
KTsKIAogICAgIGlmICghbV9wcm9taXNlZFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6
OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7CisgICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNl
ZFVSTCk7CiAgICAgCiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0aCBs
YXN0UGF0aENvbXBvbmVudF1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKaW5kZXggNWFj
NmZjZmY1YzYuLjkzYmI4MWY0NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAg
ICAgICAgZXhlY3V0YWJsZVBhdGguYXBwZW5kKCcyJyk7CiAjZW5kaWYKICAgICAgICAgcGx1Z2lu
UGF0aCA9IG1fbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoInBsdWdp
bi1wYXRoIik7Ci0gICAgICAgIHJlYWxQbHVnaW5QYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBsdWdpblBhdGgpOworICAgICAgICByZWFsUGx1Z2luUGF0aCA9IEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKICAgICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7CisgICAgcmVhbEV4ZWN1dGFibGVQYXRoID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiB3ZWJraXRTb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNv
Y2tldFBhaXIuY2xpZW50KSk7CiAgICAgdW5zaWduZWQgbmFyZ3MgPSA0OyAvLyBzaXplIG9mIHRo
ZSBhcmd2IGFycmF5IGZvciBnX3NwYXduX2FzeW5jKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGY1YTFkMTA4
ZDkuLmZjODgzZmRlODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbGF1bmNoUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGxhdW5jaFBhdGgsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBhcmd1bWVudHMsIGJvb2wmIHJlc3VsdCk7CiAgICAgdm9pZCBsYXVuY2hB
cHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYXJndW1lbnRzLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgb3BlblVSTChjb25zdCBT
dHJpbmcmIHVybCwgYm9vbCYgcmVzdWx0LCBpbnQzMl90JiBzdGF0dXMsIFN0cmluZyYgbGF1bmNo
ZWRVUkxTdHJpbmcpOwotICAgIHZvaWQgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCwg
Ym9vbCYgcmVzdWx0KTsKKyAgICB2b2lkIEZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0IFN0cmlu
ZyYgZnVsbFBhdGgsIGJvb2wmIHJlc3VsdCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMv
Z3RrL1BsdWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5z
L2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDFiZDY1MDc5ZTVkLi5iOWIwYzJlYWUzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5m
b0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVn
aW5JbmZvQ2FjaGUuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgUGx1Z2luSW5mb0NhY2hlOjpQbHVn
aW5JbmZvQ2FjaGUoKQogICAgIG1fc2F2ZVRvRmlsZUlkbGUuc2V0UHJpb3JpdHkoR19QUklPUklU
WV9ERUZBVUxUX0lETEUpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCBudWxs
cHRyKSk7Ci0gICAgaWYgKFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhjYWNoZURpcmVjdG9y
eS5nZXQoKSkpIHsKKyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKGNhY2hlRGlyZWN0b3J5LmdldCgpKSkgewogICAgICAgICAvLyBEZWxldGUgb2xkIGNhY2hl
IGZpbGUuCiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gb2xkQ2FjaGVQYXRoKGdfYnVpbGRfZmls
ZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksICJwbHVnaW5zIiwgbnVsbHB0cikpOwotICAgICAg
ICBXZWJDb3JlOjpkZWxldGVGaWxlKFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKIAogICAgICAgICBtX2NhY2hlUGF0
aC5yZXNldChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCBjYWNoZUZpbGVu
YW1lRm9yQ3VycmVudERpc3BsYXkoKSwgbnVsbHB0cikpOwogICAgICAgICBnX2tleV9maWxlX2xv
YWRfZnJvbV9maWxlKG1fY2FjaGVGaWxlLmdldCgpLCBtX2NhY2hlUGF0aC5nZXQoKSwgR19LRVlf
RklMRV9OT05FLCBudWxscHRyKTsKQEAgLTExMywxNCArMTEzLDE0IEBAIGJvb2wgUGx1Z2luSW5m
b0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9k
dWxlSW5mbyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdGltZV90IGxhc3RNb2RpZmll
ZDsKLSAgICBpZiAoIVdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgs
IGxhc3RNb2RpZmllZCkpCisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgdGltZV90IGNhY2hlZExhc3RNb2RpZmllZCA9IHN0YXRpY19jYXN0PHRpbWVf
dD4oZ19rZXlfZmlsZV9nZXRfdWludDY0KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5k
YXRhKCksICJtdGltZSIsIG51bGxwdHIpKTsKICAgICBpZiAobGFzdE1vZGlmaWVkICE9IGNhY2hl
ZExhc3RNb2RpZmllZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGgg
PSBwbHVnaW5QYXRoOwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpwYXRoR2V0Rmls
ZU5hbWUocGx1Z2luUGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gc3RyaW5nVmFsdWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgpLCBw
bHVnaW5Hcm91cC5kYXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZvLm5h
bWUgPSBTdHJpbmc6OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MSw3ICsxNDEs
NyBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiB2b2lkIFBsdWdpbkluZm9DYWNoZTo6dXBkYXRl
UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mIHBsdWdpbikKIHsKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAgIGlmICghV2ViQ29y
ZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSkKKyAg
ICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdp
blBhdGgsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcgcGx1
Z2luR3JvdXAgPSBwbHVnaW5QYXRoLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRl
eCAzYjdlZjM4MWE3My4uMDg0ZjZkZWJiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAg
LTU2LDEwICs1NiwxMCBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpblBh
dGhzSW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiB7CiAgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OwogICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAgIGZv
ciAoY29uc3QgYXV0byYgcGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBTdHJpbmcoIiou
c28iKSkpIHsKLSAgICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KGRpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpKSB7CisgICAgICAgIENTdHJpbmcg
ZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAg
ICAgICAgIGlmIChyZWFscGF0aChmaWxlbmFtZS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRoKSkKLSAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihub3JtYWxpemVkUGF0aCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGaWxlU3lzdGVt
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBQbHVnaW5J
bmZvU3RvcmU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5N
b2R1bGVJbmZvJgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIFN0
cmluZyBwbHVnaW5Qcm9jZXNzUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7
CiAgICAgICAgICAgICBwbHVnaW5Qcm9jZXNzUGF0aC5hcHBlbmQoJzInKTsKLSAgICAgICAgICAg
IGlmICghZmlsZUV4aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCisgICAgICAgICAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocGx1Z2luUHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5p
eC5jcHAKaW5kZXggMjc2NjkyYmQ5MTIuLmVhMGFhMDExODAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQ
cm94eVVuaXguY3BwCkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpz
Y2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAj
ZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1NfR1RLMikKICAgICAgICAgcGx1Z2luUHJv
Y2Vzc1BhdGguYXBwZW5kKCcyJyk7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cyhwbHVnaW5Qcm9j
ZXNzUGF0aCkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwbHVnaW5Qcm9j
ZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05OCw4ICs5OCw4IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2Fu
UGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAgICAg
fQogI2VuZGlmCiAKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGx1Z2luUHJvY2Vzc1BhdGgpOwotICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJpbmcg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAgQ1N0cmluZyBiaW5h
cnlQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblByb2Nl
c3NQYXRoKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOwogICAgIGNoYXIqIGFyZ3ZbNF07CiAg
ICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKICAgICBh
cmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAxMjQ4YWVmNjEyMy4uZDFkZmY0Zjk2OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBz
dGF0aWMgYm9vbCBoYXNGaWxlQ2hhbmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRp
bWUgc2luY2UpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgdGltZV90
IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRo
LCBtb2RpZmljYXRpb25UaW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSkg
PiBzaW5jZTsKQEAgLTU1LDI2ICs1NSwyNiBAQCBzdGF0aWMgYm9vbCBoYXNGaWxlQ2hhbmdlZFNp
bmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgc2luY2UpCiBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2RlckZvckZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gaGFuZGxl
ID0gb3BlbkFuZExvY2tGaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoaGFuZGxlID09
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVt
OjpvcGVuQW5kTG9ja0ZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlm
IChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgIGlm
ICghZ2V0RmlsZVNpemUoaGFuZGxlLCBmaWxlU2l6ZSkpIHsKLSAgICAgICAgdW5sb2NrQW5kQ2xv
c2VGaWxlKGhhbmRsZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShoYW5kbGUs
IGZpbGVTaXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFu
ZGxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgc2l6ZV90IGJ5dGVz
VG9SZWFkOwogICAgIGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTaXplLCBieXRlc1RvUmVh
ZCkpIHsKLSAgICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKLSAgICBz
aXplX3QgdG90YWxCeXRlc1JlYWQgPSByZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKKyAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVt
OjpyZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAot
ICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OnVubG9ja0Fu
ZENsb3NlRmlsZShoYW5kbGUpOwogCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9S
ZWFkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpyZXNvdXJjZUxvZ0ZpbGVQ
YXRoKCkgY29uc3QKICAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
c3RvcmFnZVBhdGgsICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiKTsK
KyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VQ
YXRoLCAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3Jp
bmdEaXNrKCkKQEAgLTE0NSw4ICsxNDUsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQogICAg
IFN0cmluZyBzdG9yYWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CiAgICAgQVNTRVJU
KCFzdG9yYWdlUGF0aC5pc0VtcHR5KCkpOwogCi0gICAgaWYgKCFmaWxlRXhpc3RzKHN0b3JhZ2VQ
YXRoKSkgewotICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCkpIHsK
KyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZVBhdGgpKSB7CisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKSkgewogICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogRmFpbGVkIHRvIGNyZWF0ZSBkaXJl
Y3RvcnkgcGF0aCAlcyIsIHN0b3JhZ2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0
aWNzKCkKICAgICAgICAgU3RyaW5nIHJlc291cmNlTG9nUGF0aCA9IHJlc291cmNlTG9nRmlsZVBh
dGgoKTsKICAgICAgICAgQVNTRVJUKCFyZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKTsKIAotICAg
ICAgICBpZiAoIWZpbGVFeGlzdHMocmVzb3VyY2VMb2dQYXRoKSkKKyAgICAgICAgaWYgKCFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHJlc291cmNlTG9nUGF0aCkpCiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgbV9maWxlTW9uaXRvciA9IG51bGxwdHI7CkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnBvcHVsYXRlTWVt
b3J5U3RvcmVGcm9tRGlzaygpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAg
ICBTdHJpbmcgZmlsZVBhdGggPSByZXNvdXJjZUxvZ0ZpbGVQYXRoKCk7Ci0gICAgaWYgKGZpbGVQ
YXRoLmlzRW1wdHkoKSB8fCAhZmlsZUV4aXN0cyhmaWxlUGF0aCkpIHsKKyAgICBpZiAoZmlsZVBh
dGguaXNFbXB0eSgpIHx8ICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkgewogICAg
ICAgICBtX21lbW9yeVN0b3JlLmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwogICAg
ICAgICBtb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpOwogICAgICAgICByZXR1cm47
CkBAIC0yNTgsMTYgKzI1OCwxNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiAKICAgICBhdXRvIHN0b3JhZ2VQ
YXRoID0gc3RvcmFnZURpcmVjdG9yeVBhdGgoKTsKICAgICBpZiAoIXN0b3JhZ2VQYXRoLmlzRW1w
dHkoKSkgewotICAgICAgICBtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOwogICAgICAgICBl
eGNsdWRlRnJvbUJhY2t1cCgpOwogICAgIH0KIAotICAgIGF1dG8gaGFuZGxlID0gb3BlbkFuZExv
Y2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgoKSwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoaGFu
ZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxl
U3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUocmVzb3VyY2VMb2dGaWxlUGF0aCgpLCBGaWxlU3lzdGVt
OjpPcGVuRm9yV3JpdGUpOworICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50NjRfdCB3cml0dGVu
Qnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6
ZSgpKTsKLSAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgp
LCByYXdEYXRhLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZSho
YW5kbGUpOwogCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihy
YXdEYXRhLT5zaXplKCkpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOiBXZSBv
bmx5IHdyb3RlICVkIG91dCBvZiAlenUgYnl0ZXMgdG8gZGlzayIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPih3cml0dGVuQnl0ZXMpLCByYXdEYXRhLT5zaXplKCkpOwpAQCAtMzA2LDcgKzMwNiw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjbGVhcigpCiAK
ICAgICBzdG9wTW9uaXRvcmluZ0Rpc2soKTsKIAotICAgIGlmICghZGVsZXRlRmlsZShmaWxlUGF0
aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKSkKICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogVW5hYmxlIHRvIGRlbGV0ZSBzdGF0aXN0aWNzIGZp
bGU6ICVzIiwgZmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKaW5kZXggYTQ1NDA4MWI3MGUuLjgyNjE1OGZiMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cApAQCAtODUsNyArODUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpvcGVuRGF0YWJh
c2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgb3BlbmluZ1N0cmF0ZWd5KQogCiBib29sIExvY2Fs
U3RvcmFnZURhdGFiYXNlOjp0cnlUb09wZW5EYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVn
eSBvcGVuaW5nU3RyYXRlZ3kpCiB7Ci0gICAgaWYgKCFmaWxlRXhpc3RzKG1fZGF0YWJhc2VQYXRo
KSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0g
U2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZGF0
YWJhc2VQYXRoLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IDE5YjIyOWY2YjUzLi5iOWNhODlmOGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hp
bGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAg
IGRlbGV0ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICAv
LyBGSVhNRTogQ2FsbCBvdXQgdG8gdGhlIGNsaWVudC4KICAgICB9CkBAIC0xMDYsNyArMTA2LDcg
QEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygp
CiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2Uo
KTsKIAotICAgIGlmICghZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CisgICAg
aWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsKICAg
ICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hlcmUgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlbGV0ZSB0
aGUgZGF0YWJhc2UgZmlsZSAoZS5nIHNvbWUgb3RoZXIgcHJvZ3JhbQogICAgICAgICAvLyBsaWtl
IGEgdmlydXMgc2Nhbm5lciBpcyBhY2Nlc3NpbmcgaXQpLCBtYWtlIHN1cmUgdG8gcmVtb3ZlIGFs
bCBlbnRyaWVzLgogICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKFNraXBJZk5vbkV4aXN0ZW50
KTsKQEAgLTEyNCwxOSArMTI0LDE5IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVBbGxEYXRhYmFzZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZGVsZXRlRW1w
dHlEaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIH0KIAogc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVDcmVhdGlvblRp
bWUoZmlsZVBhdGgsIHRpbWUpID8gdGltZSA6IHN0ZDo6b3B0aW9uYWw8dGltZV90PihzdGQ6Om51
bGxvcHQpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVQ
YXRoLCB0aW1lKSA/IHRpbWUgOiBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4oc3RkOjpudWxsb3B0KTsK
IH0KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9uVGltZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIGlmICghZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQorICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHRpbWU7CkBAIC0yMDksNyArMjA5LDcgQEAg
VmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSB7CisgICAg
aWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBMb2NhbFN0b3JhZ2Ug
ZGF0YWJhc2UgcGF0aCAlcyIsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBAIFN0
cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lKSBjb25zdAogICAgIHBsYXRmb3JtTWF5YmVFeGNsdWRlRnJvbUJhY2t1cCgp
OwogI2VuZGlmCiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5LCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgZmlsZW5hbWUpOwog
fQogCiBTdHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQ
YXRoKCkgY29uc3QKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVneSBvcAog
CiAgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHRyYWNrZXJEYXRhYmFzZVBhdGgoKTsKIAotICAg
IGlmICghZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lw
SWZOb25FeGlzdGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQ
YXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICghbV9kYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKQEAgLTI3
OSw3ICsyNzksNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6aW1wb3J0T3Jp
Z2luSWRlbnRpZmllcnMoKQogCiB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dXBk
YXRlVHJhY2tlckRhdGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRmlsZXMoKQogewotICAg
IFZlY3RvcjxTdHJpbmc+IHBhdGhzID0gbGlzdERpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVj
dG9yeSwgIioubG9jYWxzdG9yYWdlIik7CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCAiKi5sb2NhbHN0
b3JhZ2UiKTsKIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zKG1fb3JpZ2lucyk7CiAgICAg
SGFzaFNldDxTdHJpbmc+IG9yaWdpbnNGcm9tTG9jYWxTdG9yYWdlRGF0YWJhc2VGaWxlczsKQEAg
LTI5MCw3ICsyOTAsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dXBkYXRl
VHJhY2tlckRhdGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRgogICAgICAgICBpZiAoIXBh
dGguZW5kc1dpdGgoIi5sb2NhbHN0b3JhZ2UiKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICAgICAg
U3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpOwogCiAg
ICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIGZp
bGVuYW1lLmxlbmd0aCgpIC0gc3RybGVuKCIubG9jYWxzdG9yYWdlIikpOwogCkBAIC0zNjAsNyAr
MzYwLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURhdGFiYXNl
V2l0aE9yaWdpbklkZW50aWZpZXIoY29uc3QgU3RyaW4KICAgICAgICAgLy8gVGhlcmUgYXJlIG5v
IG9yaWdpbnMgbGVmdDsgZGVsZXRlIHRoZSB0cmFja2VyIGRhdGFiYXNlLgogICAgICAgICBtX2Rh
dGFiYXNlLmNsb3NlKCk7CiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNl
RmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9y
eShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB9CiAKICAgICAvLyBG
SVhNRTogVGVsbCBjbGllbnRzIHRoYXQgdGhlIG9yaWdpbiB3YXMgcmVtb3ZlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQppbmRleCA4ZDY1YmJlNDUwMy4uNDI4MDgxOGQ1YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTczLDcgKzczLDcgQEAg
V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygp
CiAgICAgcGFyYW1ldGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdD
b29raWVzKTsKIAogICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3JlOjpk
aXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
UmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoY29v
a2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOwog
CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgp
KSB7CiAgICAgICAgIHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1
cmF0aW9uLmNhY2hlU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggOTdkMmJh
Y2EyZWYuLmU1OTE2MWU0NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTI0LDggKzEyNCw4IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKQog
CiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRocy4KICAgICBpZiAoIW1f
Y29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9y
ZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSByZXNvbHZlQW5kQ3JlYXRl
UmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpkaXJlY3RvcnlO
YW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOwotICAgICAgICBtX3Jlc29s
dmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSwg
V2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9
IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0
b3JhZ2VGaWxlKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3Jh
Z2VGaWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
cmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlKSk7
CiAgICAgfQogfQogCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBWZWN0b3I8UGx1Z2luTW9kdWxlSW5m
bz4gV2Vic2l0ZURhdGFTdG9yZTo6cGx1Z2lucygpIGNvbnN0CiAKIHN0YXRpYyBTdHJpbmcgY29t
cHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5KQogewotICAg
IHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJlY3Rv
cnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3Au
cGxpc3QiKTsKIH0KIAogVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0
ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSkKQEAgLTEyNTcsMTIgKzEyNTcsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0
cmkKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5
KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpblBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUgPSBj
b21wdXRlTWVkaWFLZXlGaWxlKG9yaWdpblBhdGgpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OmZp
bGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZShv
cmlnaW5QYXRoKTsKKyAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CiAKICAgICAgICAgaWYgKGF1
dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKSkKICAgICAgICAgICAgIG9yaWdpbnMu
YXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CkBAIC0xMjc1LDE4ICsxMjc1LDE4IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSwKIHsKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnku
aXNFbXB0eSgpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBX
ZWJDb3JlOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDogV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAg
ICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtleURp
cmVjdG9yeSk7CiAKICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgIGlm
ICghV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2RpZmlj
YXRpb25UaW1lKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZy
b21fdGltZV90KG1vZGlmaWNhdGlvblRpbWUpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsK
LSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3Rvcnkp
OworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7
CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlh
S2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKQEAgLTEyOTUsMTEgKzEyOTUsMTEgQEAgdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0g
ICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlhS2V5Rmls
ZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIFdl
YkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9v
bEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsu
Y3BwCmluZGV4IGM1OTVkNTZkZjM5Li5iNGExNzIzOWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0xMjQsNyArMTI0LDcg
QEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2Fj
aGVEaXJlY3RvcnkoKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1
bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIG51
bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
amF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDJkMDI3
MjFmNzExLi5kZmVmNThiMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIE5TU3RyaW5nICpw
YXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBw
bGljYXRpb25SYXcoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9u
ZyBzaXplLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgLy8gRklYTUU6IFdyaXRlIG9y
aWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRh
IChwZXJoYXBzIFdlYkNvcmU6OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhNRTogV3Jp
dGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0
YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgog
ICAgIFVOVVNFRF9QQVJBTShvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKICAgICBpZiAoIXN1Z2dl
c3RlZEZpbGVuYW1lLmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAppbmRleCBlNTIyYTU5NTU4
ZC4uNzNkODAxYmE5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9X
ZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dl
YlByb2Nlc3NQb29sV1BFLmNwcApAQCAtODAsMTMgKzgwLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiBXVEY6OlN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVn
YWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2Vy
X2NhY2hlX2RpcigpLCAid3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBX
ZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5
LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFdURjo6U3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0
b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNoZSIsIG51bGxw
dHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0
KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0xMDIsMzcg
KzEwMiwzNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0
KCkKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFi
YXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0
YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5p
cXVlUHRyPGdjaGFyPiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1l
KGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFzZXMiLCAiaW5kZXhlZGRiIiwg
bnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihp
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19n
ZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9y
YWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAi
d3BlIiwgIm1lZGlha2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5Lmdl
dCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAog
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVE
aXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5KGdf
YnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJjYWNoZSIsIG51
bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURp
cmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZv
cm1EZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIkphdmFTY3JpcHRDb3JlRGVidWciLCBu
dWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggZGNm
MTNjMWY1MzcuLmFhYzI4MjgwY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktp
dEV4dGVuc2lvbk1hbmFnZXIuY3BwCkBAIC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lvbk1h
bmFnZXI6OldlYktpdEV4dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lvbk1h
bmFnZXI6OnNjYW5Nb2R1bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwg
VmVjdG9yPFN0cmluZz4mIG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0
aHMgPSBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmlu
ZygiKi5zbyIpKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIq
LnNvIikpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQor
ICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tp
XSkpCiAgICAgICAgICAgICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAgfQog
fQpAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgU3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJpYW50
KiBkYXRhID0gbnVsbHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIobSZz
bXYpIiwgJmRpcmVjdG9yeSwgJmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9
IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsK
KyAgICB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRpYWxpemF0
aW9uVXNlckRhdGEgPSBhZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3Rl
ZEJ1bmRsZUdsaWIuY3BwCmluZGV4IGEyMGE1ZmU0MjIzLi5jZmZhOGZjNGFjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRC
dW5kbGVHbGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2Vy
RGF0YSkKIHsKLSAgICBtX3BsYXRmb3JtQnVuZGxlID0gZ19tb2R1bGVfb3BlbihmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24obV9wYXRoKS5kYXRhKCksIEdfTU9EVUxFX0JJTkRfTE9DQUwpOworICAg
IG1fcGxhdGZvcm1CdW5kbGUgPSBnX21vZHVsZV9vcGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihtX3BhdGgpLmRhdGEoKSwgR19NT0RVTEVfQklORF9MT0NBTCk7CiAgICAg
aWYgKCFtX3BsYXRmb3JtQnVuZGxlKSB7CiAgICAgICAgIGdfd2FybmluZygiRXJyb3IgbG9hZGlu
ZyB0aGUgaW5qZWN0ZWQgYnVuZGxlICglcyk6ICVzIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCksIGdf
bW9kdWxlX2Vycm9yKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuY3BwCmluZGV4IGZiN2Y5YzZjYTc2Li45ZjhlYWYzOTA4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIFdlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXI6Om1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUZvck9yaWdpbihj
b25zdCBTZWN1cmkKICAgICBpZiAoIW1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlm
aWVyKCkpOwogfQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQpAQCAtNjIsNyArNjIsNyBAQCBWZWN0b3I8
U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtl
eU9yaWdpbnMoKQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOworICAg
IFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSht
X21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9y
aWdpblBhdGggOiBvcmlnaW5QYXRocykgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICB1cmwu
c2V0UHJvdG9jb2woQVNDSUlMaXRlcmFsKCJmaWxlIikpOwpAQCAtODIsMjUgKzgyLDI1IEBAIFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1l
ZGlhS2V5T3JpZ2lucygpCiAKIHN0YXRpYyB2b2lkIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZv
ck9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBkb3VibGUgc3RhcnREYXRlLCBk
b3VibGUgZW5kRGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYUtleVBhdGhzID0gbGlz
dERpcmVjdG9yeShvcmlnaW5QYXRoLCAiKiIpOworICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhS2V5
UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CiAKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5UGF0aCA6IG1lZGlhS2V5UGF0aHMpIHsKLSAgICAg
ICAgU3RyaW5nIG1lZGlhS2V5RmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtl
eVBhdGgsICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgICAgIFN0cmluZyBtZWRpYUtleUZpbGUg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlQYXRoLCAiU2Vj
dXJlU3RvcC5wbGlzdCIpOwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHRpbWVfdCBtb2RUaW1lOwotICAgICAgICBn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOworICAgICAgICBG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUp
OwogCiAgICAgICAgIGlmIChtb2RUaW1lIDwgc3RhcnREYXRlIHx8IG1vZFRpbWUgPiBlbmREYXRl
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGVsZXRlRmlsZShtZWRpYUtleUZp
bGUpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleVBhdGgpOworICAgICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5UGF0aCk7CiAgICAgfQogICAgIAotICAg
IGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIFdlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXI6OmRlbGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIG9yaWdpbkRhdGEpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRl
cyhkb3VibGUKICAgICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3RE
aXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAgVmVjdG9yPFN0
cmluZz4gb3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5LCAiKiIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdp
blBhdGhzKQogICAgICAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKG9y
aWdpblBhdGgsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9p
ZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVudHJpZXMoKQog
ICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVjdG9yeSht
X21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmln
aW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJl
Y3RvcnksICIqIik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpCiAg
ICAgICAgIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2luUGF0aCwg
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwgc3RkOjpudW1lcmljX2xpbWl0
czxkb3VibGU+OjptYXgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAK
aW5kZXggMDM3MThhMjczMGEuLjE4ZmU5Y2JmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW5TdHJlYW0uY3BwCkBAIC00NSw3ICs0NSw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpOZXRz
Y2FwZVBsdWdpblN0cmVhbShSZWY8TmV0c2NhcGVQbHVnaW4+JiYgcGx1Z2luLCB1aW50NjRfCiAg
ICAgLCBtX25wU3RyZWFtKCkKICAgICAsIG1fdHJhbnNmZXJNb2RlKE5QX05PUk1BTCkKICAgICAs
IG1fb2Zmc2V0KDApCi0gICAgLCBtX2ZpbGVIYW5kbGUoaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSkKKyAgICAsIG1fZmlsZUhhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKQogICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
ICwgbV91cmxOb3RpZnlIYXNCZWVuQ2FsbGVkKGZhbHNlKQpAQCAtNTksNyArNTksNyBAQCBOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6fk5ldHNjYXBlUGx1Z2luU3RyZWFtKCkKIHsKICAgICBBU1NFUlQo
IW1faXNTdGFydGVkKTsKICAgICBBU1NFUlQoIW1fc2VuZE5vdGlmaWNhdGlvbiB8fCBtX3VybE5v
dGlmeUhhc0JlZW5DYWxsZWQpOwotICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7CisgICAgQVNTRVJUKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpblN0
cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiBy
ZWRpcmVjdFJlc3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cykKQEAgLTI2Mywx
MiArMjYzLDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9QbHVn
aW4oKQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAobV9maWxlSGFuZGxlID09IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgJiYgbV9maWxlUGF0aC5pc051bGwoKSkgeworICAgIGlm
IChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAm
JiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBm
aWxlLgotICAgICAgICBtX2ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIldlYktpdFBsdWdp
blN0cmVhbSIsIG1fZmlsZUhhbmRsZSk7CisgICAgICAgIG1fZmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpvcGVuVGVtcG9yYXJ5RmlsZSgiV2ViS2l0UGx1Z2luU3RyZWFtIiwgbV9maWxlSGFuZGxlKTsK
IAogICAgICAgICAvLyBXZSBmYWlsZWQgdG8gb3BlbiB0aGUgZmlsZSwgc3RvcCB0aGUgc3RyZWFt
LgotICAgICAgICBpZiAobV9maWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
IHsKKyAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKSB7CiAgICAgICAgICAgICBzdG9wKE5QUkVTX05FVFdPUktfRVJSKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc3LDEwICsyNzcsMTAgQEAgdm9pZCBO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMs
IGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlu
dCBieXRlQ291bnQgPSB3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOwor
ICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUs
IGJ5dGVzLCBsZW5ndGgpOwogICAgIGlmIChieXRlQ291bnQgIT0gbGVuZ3RoKSB7CiAgICAgICAg
IC8vIFRoaXMgaGFwcGVucyBvbmx5IHJhcmVseSwgd2hlbiB3ZSBhcmUgb3V0IG9mIGRpc2sgc3Bh
Y2Ugb3IgaGF2ZSBhIGRpc2sgSS9PIGVycm9yLgotICAgICAgICBjbG9zZUZpbGUobV9maWxlSGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAKICAg
ICAgICAgc3RvcChOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpAQCAtMzE0LDIzICszMTQsMjMg
QEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RvcChOUFJlYXNvbiByZWFzb24pCiAgICAg
ICAgIGlmIChyZWFzb24gPT0gTlBSRVNfRE9ORSkgewogICAgICAgICAgICAgLy8gRW5zdXJlIHRo
YXQgdGhlIGZpbGUgaXMgY3JlYXRlZC4KICAgICAgICAgICAgIGRlbGl2ZXJEYXRhVG9GaWxlKDAs
IDApOwotICAgICAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQotICAgICAgICAgICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAg
ICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQorICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5k
bGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQoIW1fZmlsZVBhdGguaXNOdWxs
KCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3BsdWdpbi0+TlBQX1N0cmVhbUFzRmls
ZSgmbV9ucFN0cmVhbSwgbV9maWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIEp1c3QgY2xvc2UgdGhlIGZpbGUuCi0gICAgICAgICAgICBpZiAo
bV9maWxlSGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgICAgICAg
ICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICBpZiAobV9maWxlSGFuZGxl
ICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBEZWxldGUgdGhlIGZpbGUgYWZ0ZXIgY2FsbGluZyBOUFBfU3RyZWFtQXNGaWxlKCks
IGluc3RlYWQgb2YgaW4gdGhlIGRlc3RydWN0b3IuICBJdCBzaG91bGQgYmUgT0sKICAgICAgICAg
Ly8gdG8gZGVsZXRlIHRoZSBmaWxlIGhlcmUgLS0gTlBQX1N0cmVhbUFzRmlsZSgpIGlzIGFsd2F5
cyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIE5QUF9EZXN0cm95U3RyZWFtKCkKICAgICAgICAg
Ly8gKHRoZSBzdHJlYW0gZGVzdHJ1Y3Rpb24gZnVuY3Rpb24pLCBzbyB0aGVyZSBjYW4gYmUgbm8g
ZXhwZWN0YXRpb24gdGhhdCBhIHBsdWdpbiB3aWxsIHJlYWQgdGhlIHN0cmVhbQogICAgICAgICAv
LyBmaWxlIGFzeW5jaHJvbm91c2x5IGFmdGVyIE5QUF9TdHJlYW1Bc0ZpbGUoKSBpcyBjYWxsZWQu
Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9maWxlUGF0aCk7CiAgICAgICAgIG1fZmlsZVBhdGggPSBTdHJpbmcoKTsKIAog
ICAgICAgICAvLyBOUFBfU3RyZWFtQXNGaWxlIGNvdWxkIGNhbGwgTlBOX0Rlc3Ryb3lTdHJlYW0g
YW5kIGRlc3Ryb3kgdGhlIHN0cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmlu
ZGV4IDM2NzgwOTc4OTAxLi40MDc0MDc4ZDdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5oCkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29mZnNldDsK
IAogICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRs
ZSBtX2ZpbGVIYW5kbGU7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIG1fZmlsZUhhbmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJlYW0gaGFz
IHN1Y2Nlc3NmdWxseSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IDgwMjQxYzk1ZTFhLi4xYWUyYzNjOGI3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nl
c3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtNTQsNyArNTQsNyBA
QCBzdGF0aWMgSFRUUEJvZHkgdG9IVFRQQm9keShjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEpCiAg
ICAgICAgICAgICBlbGVtZW50LmZpbGVTdGFydCA9IGZvcm1EYXRhRWxlbWVudC5tX2ZpbGVTdGFy
dDsKICAgICAgICAgICAgIGlmIChmb3JtRGF0YUVsZW1lbnQubV9maWxlTGVuZ3RoICE9IEJsb2JE
YXRhSXRlbTo6dG9FbmRPZkZpbGUpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5maWxlTGVuZ3Ro
ID0gZm9ybURhdGFFbGVtZW50Lm1fZmlsZUxlbmd0aDsKLSAgICAgICAgICAgIGlmIChmb3JtRGF0
YUVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IGludmFsaWRGaWxlVGlt
ZSgpKQorICAgICAgICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1lKCkpCiAgICAgICAgICAg
ICAgICAgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZm9ybURhdGFFbGVt
ZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGJyZWFrOwog
CkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIFJlZjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25z
dCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNl
IEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURhdGEtPmFw
cGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVu
dC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50
LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoaW52YWxpZEZpbGVUaW1lKCkp
KTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0
aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0
YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
LnZhbHVlX29yKEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKSk7CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L0NoYW5nZUxvZwppbmRleCBiZjMyODVmOTA1ZC4uOWFjZTIyZTNhYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVyIFJlaWQg
IDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNw
YWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKiBT
dG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdl
VHJhY2tlci5jcHA6CisKIDIwMTctMTAtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzI3MS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggYmEx
NWU0YTRkYTAuLjQwMzk5NjBiMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0
b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZUFyZWFTeW5jLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RvcmFnZUFy
ZWFTeW5jOjpvcGVuRGF0YWJhc2UoT3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdTdHJhdGVn
eSkKIAogICAgIFN0cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERh
dGFiYXNlRmlsZW5hbWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwogCi0gICAgaWYgKCFmaWxlRXhp
c3RzKGRhdGFiYXNlRmlsZW5hbWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlz
dGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlbmFtZSkg
JiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoZGF0YWJhc2VGaWxlbmFtZS5pc0VtcHR5KCkpIHsKQEAgLTUyMSw3ICs1MjEs
NyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBkYXRhYmFzZUZp
bGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5hbWUobV9kYXRhYmFzZUlk
ZW50aWZpZXIpOwotICAgICAgICAgICAgaWYgKCFkZWxldGVGaWxlKGRhdGFiYXNlRmlsZW5hbWUp
KQorICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFiYXNlRmlsZW5h
bWUpKQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlbGV0ZSBkYXRhYmFz
ZSBmaWxlICVzXG4iLCBkYXRhYmFzZUZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VT
eW5jTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNN
YW5hZ2VyLmNwcAppbmRleCBlZGM5ZWIzM2M1MC4uM2U4ZmY2NWVlNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC01NSwx
MiArNTUsMTIgQEAgU3RvcmFnZVN5bmNNYW5hZ2VyOjp+U3RvcmFnZVN5bmNNYW5hZ2VyKCkKIC8v
IENhbGxlZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLgogU3RyaW5nIFN0b3JhZ2VTeW5jTWFuYWdl
cjo6ZnVsbERhdGFiYXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIp
CiB7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMobV9wYXRoKSkgeworICAgIGlmICghRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcGF0aCkpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGVkIHRvIGNyZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIG1fcGF0
aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAg
IHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBkYXRhYmFzZUlkZW50aWZp
ZXIgKyAiLmxvY2Fsc3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9wYXRoLCBkYXRhYmFzZUlkZW50aWZpZXIgKyAiLmxvY2Fsc3RvcmFn
ZSIpOwogfQogCiB2b2lkIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2goRnVuY3Rpb248dm9p
ZCAoKT4mJiBmdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwCmluZGV4IDEzMjZjN2QxOTM5Li5kNWU1Zjc0NzdlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0xMDQsMTUgKzEw
NCwxNSBAQCBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9y
YWdlUGF0aCkKIFN0cmluZyBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpCiB7
CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gcGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJTdG9yYWdlVHJh
Y2tlci5kYiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFja2VyLmRiIik7CiB9CiAKIHN0
YXRpYyBib29sIGVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewogICAgIGlmIChjcmVhdGVJZkRvZXNOb3RF
eGlzdCkKLSAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlOYW1lKGZp
bGVOYW1lKSk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSkpOwogCi0gICAgcmV0dXJuIGZpbGVF
eGlzdHMoZmlsZU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVO
YW1lKTsKIH0KIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShib29s
IGNyZWF0ZUlmRG9lc05vdEV4aXN0KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICBWZWN0b3I8U3Ry
aW5nPiBwYXRoczsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VN
dXRleCk7Ci0gICAgICAgIHBhdGhzID0gbGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQ
YXRoLCAiKi5sb2NhbHN0b3JhZ2UiKTsKKyAgICAgICAgcGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICIqLmxvY2Fsc3RvcmFnZSIpOwogICAg
IH0KIAogICAgIC8vIFVzZSBhIGNvcHkgb2YgbV9vcmlnaW5TZXQgdG8gZmluZCBleHBpcmVkIGVu
dHJpZXMgYW5kIHRvIHNjaGVkdWxlIHRoZWlyCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgICAgICBj
b25zdCBTdHJpbmcmIHBhdGggPSAqaXQ7CiAKICAgICAgICAgaWYgKHBhdGgubGVuZ3RoKCkgPiBm
aWxlRXh0ZW5zaW9uLmxlbmd0aCgpICYmIHBhdGguZW5kc1dpdGgoZmlsZUV4dGVuc2lvbikpIHsK
LSAgICAgICAgICAgIFN0cmluZyBmaWxlID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgICAg
ICAgICAgU3RyaW5nIGZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCk7CiAg
ICAgICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGUuc3Vic3RyaW5nKDAsIGZp
bGUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmICgh
b3JpZ2luU2V0Q29weS5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkKICAgICAgICAgICAgICAg
ICBzeW5jU2V0T3JpZ2luRGV0YWlscyhvcmlnaW5JZGVudGlmaWVyLCBwYXRoKTsKQEAgLTQxOCw3
ICs0MTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAg
ICAgICAgIGlmICghY2FuRGVsZXRlT3JpZ2luKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRlbGV0ZUZpbGUoc3RhdGVtZW50Lmdl
dENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVy
IGxvY2tlcihtX2NsaWVudE11dGV4KTsKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFN0b3JhZ2VU
cmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAgfQogCiAjaWYgIVBMQVRGT1JNKElP
UykKLSAgICBpZiAoIWRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgeworICAgIGlm
ICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CiAgICAg
ICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZWxldGUgdGhl
IGRhdGFiYXNlIGZpbGUgKGUuZyBzb21lIG90aGVyIHByb2dyYW0KICAgICAgICAgLy8gbGlrZSBh
IHZpcnVzIHNjYW5uZXIgaXMgYWNjZXNzaW5nIGl0KSwgbWFrZSBzdXJlIHRvIHJlbW92ZSBhbGwg
ZW50cmllcy4KICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CkBAIC00NTQsNyAr
NDU0LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTUzMyw3
ICs1MzMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRl
bGV0ZUZpbGUocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKICAgICAK
ICAgICBib29sIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IGZhbHNlOwogICAgIHsKQEAgLTU0
OCw4ICs1NDgsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNs
b3NlKCk7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgZGVsZXRlRmlsZSh0cmFja2VyRGF0
YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0b3JhZ2VEaXJl
Y3RvcnlQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJh
c2VQYXRoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0
b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICNlbmRpZgogICAgIH0KIApAQCAtNjQyLDcgKzY0Miw3IEBA
IGxvbmcgbG9uZyBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4pCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbG9uZyBsb25nIHNpemU7Ci0g
ICAgcmV0dXJuIGdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAzNzNi
NGNjMWYxMC4uMzRiZmIyOTM3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0
YWJhc2VQcm92aWRlci5tbToKKwogMjAxNy0xMC0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtGcmFtZVZpZXc6OmxheW91dCBjbGVhbnVwXSBNb3ZlIGNvcmUg
bGF5b3V0IGxvZ2ljIHRvIGEgc2VwYXJhdGUgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXggYmVmYzNl
MTM0NmMuLjM1NWRlYjAyMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9N
aXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC00Myw3ICs0Myw3IEBACiB7CiAg
ICAgQVNTRVJUKFVSTFN0cmluZyk7CiAgICAgQVNTRVJUKHBhdGgpOwotICAgIFdlYkNvcmU6OnNl
dE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOworICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOwogfQog
CiAjZW5kaWYgLy8gIVBMQVRGT1JNKElPUykKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIEJPT0wg
ZmlsZUV4aXN0cyhOU1N0cmluZyAqcGF0aCkKICNpZiBQTEFURk9STShJT1MpCiAtIChOU1N0cmlu
ZyAqKV93ZWJraXRfY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4OihO
U1N0cmluZyAqKXByZWZpeAogewotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkocHJlZml4KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCmluZGV4
IDU3NmQ1NzVhYzU5Li4wOTkyOThiZTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMzMsOSArMzMsOSBA
QCBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0
aCgpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW2Rl
ZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAg
ICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoQVNDSUlMaXRlcmFsKCJ+L0xpYnJhcnkv
V2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiKSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBi
dW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChBU0NJSUxpdGVyYWwoIn4vTGli
cmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIpLCBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlc0RpcmVj
dG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3Rv
cnksIEFTQ0lJTGl0ZXJhbCgiX19fSW5kZXhlZERCIikpOworICAgICAgICBkYXRhYmFzZXNEaXJl
Y3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VzRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIl9fX0luZGV4ZWREQiIpKTsKICAgICAKICAg
ICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0NzQ5MTU3MjNkZS4uYTYyMzczNTkw
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0x
MC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAg
QWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5jcHAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2MworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRh
YmFzZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcDoKKyAgICAgICAg
KiBQbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJl
YW0uaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJE
YXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAg
ICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDE3
LTEwLTI4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZyYW1l
Vmlldzo6bGF5b3V0IGNsZWFudXBdIE1vdmUgY29yZSBsYXlvdXQgbG9naWMgdG8gYSBzZXBhcmF0
ZSBjbGFzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5E
YXRhYmFzZS5jcHAKaW5kZXggYjBlNjA2ZTk0MzMuLjMyODUwNmYwYWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTI3
LDcgKzEyNyw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAgIGF1dG8gcGF0
aHNFbmQgPSBwYXRocy5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBwYXRocy5iZWdpbigpOyBp
dCAhPSBwYXRoc0VuZDsgKytpdCkgewogICAgICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAg
ICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKCppdCwgbGFzdE1vZGlmaWVkKSkKKyAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQsIGxhc3RN
b2RpZmllZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwYXRoc1dpdGhUaW1l
cy5hZGQoKml0LCBsYXN0TW9kaWZpZWQpOwpAQCAtMzEzLDEwICszMTMsMTAgQEAgdm9pZCBQbHVn
aW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgUGx1Z2kKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERp
c2FibGVkKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0CiB7CiAgICAgLy8gU2tpcCBwbHVn
aW4gZmlsZXMgdGhhdCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUuCi0gICAgaWYgKG1fZGlzYWJs
ZWRQbHVnaW5GaWxlcy5jb250YWlucyhwYXRoR2V0RmlsZU5hbWUoZmlsZVBhdGgpKSkKKyAgICBp
ZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZShmaWxlUGF0aCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZmls
ZUV4aXN0cyhmaWxlUGF0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmls
ZVBhdGgpOwogfQogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lucyhQbHVn
aW5TZXQmIHBsdWdpbnMpIGNvbnN0CkBAIC0zODIsNyArMzgyLDcgQEAgVmVjdG9yPFN0cmluZz4g
UGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiB7CiAgICAgVmVjdG9y
PFN0cmluZz4gcGF0aHM7CiAKLSAgICBTdHJpbmcgdXNlclBsdWdpblBhdGggPSBob21lRGlyZWN0
b3J5UGF0aCgpOworICAgIFN0cmluZyB1c2VyUGx1Z2luUGF0aCA9IEZpbGVTeXN0ZW06OmhvbWVE
aXJlY3RvcnlQYXRoKCk7CiAgICAgdXNlclBsdWdpblBhdGguYXBwZW5kKFN0cmluZygiXFxBcHBs
aWNhdGlvbiBEYXRhXFxNb3ppbGxhXFxwbHVnaW5zIikpOwogICAgIHBhdGhzLmFwcGVuZCh1c2Vy
UGx1Z2luUGF0aCk7CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5E
YXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKIAogYm9vbCBQbHVnaW5EYXRhYmFz
ZTo6aXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IFN0cmluZyBwcmVmZXJyZWRQYXRoID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKKyAgICBTdHJpbmcg
cHJlZmVycmVkUGF0aCA9IEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCk7CiAKICAgICBw
cmVmZXJyZWRQYXRoLmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRpb24gRGF0YVxcTW96aWxsYVxc
cGx1Z2lucyIpKTsKIApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6Omdl
dFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAog
CiAgICAgYXV0byBkaXJzRW5kID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5lbmQoKTsKICAgICBmb3Ig
KGF1dG8gZEl0ID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5iZWdpbigpOyBkSXQgIT0gZGlyc0VuZDsg
KytkSXQpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBsaXN0RGlyZWN0
b3J5KCpkSXQsIGZpbGVOYW1lRmlsdGVyKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2lu
UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KCpkSXQsIGZpbGVOYW1lRmlsdGVyKTsK
ICAgICAgICAgYXV0byBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMuZW5kKCk7CiAgICAgICAgIGZv
ciAoYXV0byBwSXQgPSBwbHVnaW5QYXRocy5iZWdpbigpOyBwSXQgIT0gcGx1Z2luc0VuZDsgKytw
SXQpIHsKICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoKnBJdCkp
CkBAIC00MjMsMTQgKzQyMywxNCBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRo
c0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAKLXN0YXRpYyB2b2lkIGZpbGxCdWZm
ZXJXaXRoQ29udGVudHNPZkZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIFZlY3RvcjxjaGFy
PiYgYnVmZmVyKQorc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCiB7
CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSAwOwogICAgIHNpemVfdCBidWZmZXJDYXBhY2l0eSA9
IDEwMjQ7CiAgICAgYnVmZmVyLnJlc2l6ZShidWZmZXJDYXBhY2l0eSk7CiAKICAgICBkbyB7Ci0g
ICAgICAgIGJ1ZmZlclNpemUgKz0gcmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBi
dWZmZXJTaXplLCBidWZmZXJDYXBhY2l0eSAtIGJ1ZmZlclNpemUpOworICAgICAgICBidWZmZXJT
aXplICs9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0YSgpICsgYnVm
ZmVyU2l6ZSwgYnVmZmVyQ2FwYWNpdHkgLSBidWZmZXJTaXplKTsKICAgICAgICAgaWYgKGJ1ZmZl
clNpemUgPT0gYnVmZmVyQ2FwYWNpdHkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXJDYXBhY2l0
eSA8IG1heGltdW1QZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVNpemUpIHsKICAgICAgICAg
ICAgICAgICBidWZmZXJDYXBhY2l0eSAqPSAyOwpAQCAtNDc4LDExICs0NzgsMTEgQEAgdm9pZCBQ
bHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBpZiAoIWlz
UGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFkYXRhQ2Fj
aGVQYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZTsKLSAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVn
aW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNvbHV0ZUNh
Y2hlUGF0aCwgT3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRs
ZSBmaWxlOworICAgIFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwgcGVyc2lz
dGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7CisgICAgZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CiAK
LSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmlsZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGZpbGUpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIGNhY2hlIGFz
IGxvYWRlZCByZWdhcmRsZXNzIG9mIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gSWYKQEAgLTQ5MSwxMSAr
NDkxLDExIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNo
ZSgpCiAKICAgICBWZWN0b3I8Y2hhcj4gZmlsZUNvbnRlbnRzOwogICAgIGZpbGxCdWZmZXJXaXRo
Q29udGVudHNPZkZpbGUoZmlsZSwgZmlsZUNvbnRlbnRzKTsKLSAgICBjbG9zZUZpbGUoZmlsZSk7
CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogCiAgICAgaWYgKGZpbGVDb250ZW50
cy5zaXplKCkgPCAyIHx8IGZpbGVDb250ZW50cy5maXJzdCgpICE9IHNjaGVtYVZlcnNpb24gfHwg
ZmlsZUNvbnRlbnRzLmxhc3QoKSAhPSAnXDAnKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHJlYWQgcGx1Z2luIG1ldGFkYXRhIGNhY2hlOiBjb3JydXB0IHNjaGVtYSIpOwotICAgICAg
ICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTUxOCwxMyArNTE4LDEzIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0
YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHJlYWRVVEY4U3RyaW5nKGRlc2MsIGJ1ZmZl
clBvcywgZW5kKQogICAgICAgICAgICAgICAmJiByZWFkVVRGOFN0cmluZyhtaW1lRGVzYywgYnVm
ZmVyUG9zLCBlbmQpKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmVhZCBw
bHVnaW4gbWV0YWRhdGEgY2FjaGU6IGNvcnJ1cHQgZGF0YSIpOwotICAgICAgICAgICAgZGVsZXRl
RmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFNraXAgbWV0YWRhdGEgdGhhdCBwb2ludHMgdG8gcGx1Z2lucyBmcm9tIGRp
cmVjdG9yaWVzIHRoYXQKICAgICAgICAgLy8gYXJlIG5vdCBwYXJ0IG9mIHBsdWdpbiBkaXJlY3Rv
cnkgbGlzdCBhbnltb3JlLgotICAgICAgICBTdHJpbmcgcGx1Z2luRGlyZWN0b3J5TmFtZSA9IGRp
cmVjdG9yeU5hbWUocGF0aCk7CisgICAgICAgIFN0cmluZyBwbHVnaW5EaXJlY3RvcnlOYW1lID0g
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKICAgICAgICAgaWYgKG1fcGx1Z2luRGly
ZWN0b3JpZXMuZmluZChwbHVnaW5EaXJlY3RvcnlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQogICAg
ICAgICAgICAgY29udGludWU7CiAKQEAgLTU0MSwxNiArNTQxLDE2IEBAIHZvaWQgUGx1Z2luRGF0
YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgbV9wbHVnaW5QYXRoc1dp
dGhUaW1lcy5zd2FwKGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzKTsKIH0KIAotc3RhdGljIGJv
b2wgd3JpdGVVVEY4U3RyaW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKK3N0YXRpYyBib29sIHdyaXRlVVRGOFN0cmluZyhGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQ1N0cmluZyB1
dGY4U3RyaW5nID0gc3RyaW5nLnV0ZjgoKTsKICAgICBpbnQgbGVuZ3RoID0gdXRmOFN0cmluZy5s
ZW5ndGgoKSArIDE7Ci0gICAgcmV0dXJuIHdyaXRlVG9GaWxlKGZpbGUsIHV0ZjhTdHJpbmcuZGF0
YSgpLCBsZW5ndGgpID09IGxlbmd0aDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0gbGVuZ3RoOwogfQogCi1zdGF0
aWMgYm9vbCB3cml0ZVRpbWUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IHRpbWVfdCYg
dGltZSkKK3N0YXRpYyBib29sIHdyaXRlVGltZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZSwgY29uc3QgdGltZV90JiB0aW1lKQogewotICAgIHJldHVybiB3cml0ZVRvRmlsZShm
aWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmdGltZSksIHNpemVvZih0aW1lX3Qp
KSA9PSBzaXplb2YodGltZV90KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJnRpbWUpLCBzaXplb2YodGltZV90
KSkgPT0gc2l6ZW9mKHRpbWVfdCk7CiB9CiAKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBl
cnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKQEAgLTU1OCwyNiArNTU4LDI2IEBAIHZvaWQgUGx1Z2lu
RGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBpZiAoIWlzUGVy
c2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQ
YXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtYWtlQWxsRGlyZWN0b3Jp
ZXMocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkpOwotICAgIFN0cmluZyBhYnNvbHV0ZUNh
Y2hlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNo
ZVBhdGgoKSwgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7Ci0gICAgZGVs
ZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpKTsKKyAgICBTdHJpbmcgYWJzb2x1
dGVDYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lz
dGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmls
ZW5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwog
CiAgICAgaWYgKG1fcGx1Z2lucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBmaWxlOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNvbHV0ZUNhY2hl
UGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZTsKKyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgs
IEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmls
ZSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBwbHVnaW4gbWV0YWRhdGEgY2FjaGUgZm9yIHNh
dmluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2hhciBsb2NhbFNjaGVtYVZl
cnNpb24gPSBzY2hlbWFWZXJzaW9uOwotICAgIGlmICh3cml0ZVRvRmlsZShmaWxlLCAmbG9jYWxT
Y2hlbWFWZXJzaW9uLCAxKSAhPSAxKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxl
KGZpbGUsICZsb2NhbFNjaGVtYVZlcnNpb24sIDEpICE9IDEpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIGNhY2hlIHNjaGVtYSIpOwotICAgICAg
ICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC01ODksMTMgKzU4OSwxMyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjp1cGRhdGVQZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHdyaXRlVVRGOFN0cmluZyhm
aWxlLCAoKml0KS0+ZGVzY3JpcHRpb24oKSkKICAgICAgICAgICAgICAgJiYgd3JpdGVVVEY4U3Ry
aW5nKGZpbGUsICgqaXQpLT5mdWxsTUlNRURlc2NyaXB0aW9uKCkpKSkgewogICAgICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIHRvIGNhY2hlIik7Ci0g
ICAgICAgICAgICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgICAgICBkZWxldGVGaWxlKGFic29s
dXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
KyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgY2xvc2VGaWxlKGZp
bGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKIH0KIAogYm9vbCBQbHVnaW5E
YXRhYmFzZTo6aXNQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXggN2RkZTJj
YjAyNzcuLjZhZmY1MWQwNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9Q
bHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBQbHVnaW5QYWNrYWdl
OjpQbHVnaW5QYWNrYWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90JiBsYXN0TW9k
aWZpZWQpCiAgICAgLCBtX2luZm9Jc0Zyb21DYWNoZSh0cnVlKQogI2VuZGlmCiB7Ci0gICAgbV9m
aWxlTmFtZSA9IHBhdGhHZXRGaWxlTmFtZShtX3BhdGgpOworICAgIG1fZmlsZU5hbWUgPSBGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9wYXRoKTsKICAgICBtX3BhcmVudERpcmVjdG9yeSA9
IG1fcGF0aC5sZWZ0KG1fcGF0aC5sZW5ndGgoKSAtIG1fZmlsZU5hbWUubGVuZ3RoKCkgLSAxKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5T
dHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0u
Y3BwCmluZGV4IDEzODdmYWJiMDEwLi5jNjllMWU5MDE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQ
bHVnaW5TdHJlYW06OlBsdWdpblN0cmVhbShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVudCwgRnJh
bWUqIGZyYW1lLCBjb25zdCBSZXNvdQogICAgICwgbV9zdHJlYW1TdGF0ZShTdHJlYW1CZWZvcmVT
dGFydGVkKQogICAgICwgbV9sb2FkTWFudWFsbHkoZmFsc2UpCiAgICAgLCBtX2RlbGF5RGVsaXZl
cnlUaW1lcigqdGhpcywgJlBsdWdpblN0cmVhbTo6ZGVsYXlEZWxpdmVyeVRpbWVyRmlyZWQpCi0g
ICAgLCBtX3RlbXBGaWxlSGFuZGxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBt
X3RlbXBGaWxlSGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAg
ICAgLCBtX3BsdWdpbkZ1bmNzKHBsdWdpbkZ1bmNzKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5j
ZSkKICAgICAsIG1fcXVpcmtzKHF1aXJrcykKQEAgLTIxMiwxMCArMjEyLDEwIEBAIHZvaWQgUGx1
Z2luU3RyZWFtOjpzdGFydFN0cmVhbSgpCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlID09IE5QX05P
Uk1BTCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYXRoID0gb3BlblRlbXBvcmFyeUZpbGUo
IldLUCIsIG1fdGVtcEZpbGVIYW5kbGUpOworICAgIG1fcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKCJXS1AiLCBtX3RlbXBGaWxlSGFuZGxlKTsKIAogICAgIC8vIFNvbWV0aGlu
ZyB3ZW50IHdyb25nLCBjYW5jZWwgbG9hZGluZyB0aGUgc3RyZWFtCi0gICAgaWYgKCFpc0hhbmRs
ZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChtX3RlbXBGaWxlSGFuZGxlKSkKICAgICAgICAgY2FuY2VsQW5kRGVzdHJveVN0cmVhbShO
UFJFU19ORVRXT1JLX0VSUik7CiB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBsdWdpblN0
cmVhbTo6ZGVzdHJveVN0cmVhbSgpCiAgICAgQVNTRVJUKG1fcmVhc29uICE9IFdlYlJlYXNvbk5v
bmUpOwogICAgIEFTU0VSVCghbV9kZWxpdmVyeURhdGEgfHwgbV9kZWxpdmVyeURhdGEtPnNpemUo
KSA9PSAwKTsKIAotICAgIGNsb3NlRmlsZShtX3RlbXBGaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUobV90ZW1wRmlsZUhhbmRsZSk7CiAKICAgICBib29sIG5ld1N0cmVhbUNh
bGxlZCA9IG1fc3RyZWFtLm5kYXRhOwogCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQbHVnaW5T
dHJlYW06OmRlc3Ryb3lTdHJlYW0oKQogICAgICAgICBtX2NsaWVudC0+c3RyZWFtRGlkRmluaXNo
TG9hZGluZyh0aGlzKTsKIAogICAgIGlmICghbV9wYXRoLmlzTnVsbCgpKQotICAgICAgICBkZWxl
dGVGaWxlKG1fcGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wYXRoKTsK
IH0KIAogdm9pZCBQbHVnaW5TdHJlYW06OmRlbGF5RGVsaXZlcnlUaW1lckZpcmVkKCkKQEAgLTQ0
MCw4ICs0NDAsOCBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogICAgICAgICBkZWxpdmVyRGF0
YSgpOwogICAgIH0KIAotICAgIGlmIChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0b3BwZWQgJiYg
aXNIYW5kbGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkgewotICAgICAgICBpbnQgYnl0ZXNXcml0
dGVuID0gd3JpdGVUb0ZpbGUobV90ZW1wRmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBp
ZiAobV9zdHJlYW1TdGF0ZSAhPSBTdHJlYW1TdG9wcGVkICYmIEZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQobV90ZW1wRmlsZUhhbmRsZSkpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fdGVtcEZpbGVIYW5kbGUsIGRhdGEsIGxlbmd0aCk7CiAg
ICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gbGVuZ3RoKQogICAgICAgICAgICAgY2FuY2VsQW5k
RGVzdHJveVN0cmVhbShOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggM2I2YzcxMDVmMTAuLjFl
NWFmMzBlZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1Bs
dWdpblN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
U3RyZWFtLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4gbV9kZWxpdmVyeURhdGE7CiAKLSAgICAg
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fdGVtcEZpbGVIYW5kbGU7CisgICAgICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBGaWxlSGFuZGxlOwogCiAgICAgICAgIGNvbnN0
IE5QUGx1Z2luRnVuY3MqIG1fcGx1Z2luRnVuY3M7CiAgICAgICAgIE5QUCBtX2luc3RhbmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRl
eCBkY2Q1NGE4YjkzMi4uMWVhOTAxNzhhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYkFwcGxpY2F0
aW9uQ2FjaGUqIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKIAogc3RhdGlj
IFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiB7Ci0gICAgU3RyaW5nIHBhdGggPSBsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTdHJpbmcgcGF0aCA9IEZpbGVT
eXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogCiAjaWYgVVNFKENG
KQogICAgIGF1dG8gY2FjaGVEaXJlY3RvcnlQcmVmZXJlbmNlID0gYWRvcHRDRihDRlByZWZlcmVu
Y2VzQ29weUFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViUHJlZmVyZW5j
ZXM6OmFwcGxpY2F0aW9uSWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAKaW5kZXggOWM0NmY0YjIyNDcuLmZiNTQ0MDgwMjBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTQyOCw3
ICs0MjgsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsK
ICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChX
ZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIp
OworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCksICJEYXRhYmFzZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2Vz
SWZOZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5j
cHAKaW5kZXggMTYwZTliYmM1YjEuLjg3MzI3NzhkOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdlYkRv
d25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiAKICAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2Vz
dGVkRmlsZW5hbWUoKTsKICAgICAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHJlc3BvbnNl
LnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gRmlsZVN5
c3RlbTo6cGF0aEdldEZpbGVOYW1lKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKICAgICAgICAg
c3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc3VnZ2VzdGVkRmls
ZW5hbWUpOwogICAgICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUihzdWdnZXN0ZWRG
aWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggZjQ0NjFiNmVmMTguLmYxMTUwZWU3
MmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIHVzaW5nIHN0ZDo6bnVtZXJpY19saW1pdHM7CiAKIHN0YXRpYyBjb25zdCBT
dHJpbmcmIG9sZFByZWZlcmVuY2VzUGF0aCgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBwYXRoID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksICJXZWJLaXRQcmVmZXJlbmNlcy5wbGlzdCIpOworICAgIHN0YXRpYyBTdHJpbmcgcGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpyb2Ft
aW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5jZXMucGxp
c3QiKTsKICAgICByZXR1cm4gcGF0aDsKIH0KIApAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgV2Vi
UHJlZmVyZW5jZXM6Om1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcygpCiAK
ICAgICBjb3B5V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPihwbGlzdC5nZXQoKSkpOwogCi0gICAgZGVsZXRlRmlsZShvbGRQcmVmZXJl
bmNlc1BhdGgoKSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShvbGRQcmVmZXJlbmNlc1Bh
dGgoKSk7CiB9CiAKIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1Rv
Q0ZQcmVmZXJlbmNlcyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKaW5kZXggMzllNDM4YzM2MGQuLjA5NGI2NTAzNmQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2Fj
aGVNb2RlbChXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIGlmIChwcmVmZXJlbmNl
ICYmIChDRlN0cmluZ0dldFR5cGVJRCgpID09IENGR2V0VHlwZUlEKHByZWZlcmVuY2UuZ2V0KCkp
KSkKICAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihwcmVmZXJlbmNlLmxlYWtSZWYoKSkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGNmdXJsQ2Fj
aGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOwogICAgIH0KICAgICBjYWNoZURpcmVjdG9y
eSA9IFN0cmluZyhjZnVybENhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICBDRkluZGV4IGNhY2hl
TWVtb3J5Q2FwYWNpdHkgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDY5ZmFjOGUwYzFiLi4xZDA0OWFlOTg0ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3
LTEwLTMxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93
aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisKIDIwMTctMTAtMzAgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZp
eCBidWlsZCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKaW5kZXggZmRlMWZlMTAzODAuLjBiNTllYTE3MzgyIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMg
U3RyaW5nIGxpYnJhcnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAgICAgICByZXR1cm4gU3Ry
aW5nIChwYXRoLmRhdGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsK
IH0KICNlbmRpZgogCkBAIC05MTIsNyArOTEyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q2FjaGVGb2xk
ZXIoKQogCiAgICAgQ09NUHRyPElXZWJDYWNoZT4gd2ViQ2FjaGU7CiAgICAgaWYgKFNVQ0NFRURF
RChXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJDYWNoZSwgMCwgSUlEX0lXZWJDYWNoZSwg
KHZvaWQqKikmd2ViQ2FjaGUpKSkgewotICAgICAgICBfYnN0cl90IGNhY2hlRm9sZGVyID0gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIp
LnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIF9ic3RyX3QgY2FjaGVGb2xkZXIgPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENh
Y2hlIikudXRmOCgpLmRhdGEoKTsKICAgICAgICAgd2ViQ2FjaGUtPnNldENhY2hlRm9sZGVyKGNh
Y2hlRm9sZGVyKTsKICAgICB9CiB9CkBAIC05MjksOSArOTI5LDkgQEAgc3RhdGljIHZvaWQgc2V0
RGVmYXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBTdHJpbmcgbGlicmFy
eVBhdGggPSBsaWJyYXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCk7CiAKICAgICAvLyBTZXQgdXAg
dGhlc2UgdmFsdWVzIGJlZm9yZSBjcmVhdGluZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRoZSB2YXJp
b3VzIGluaXRpYWxpemF0aW9ucyB3aWxsIHNlZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVzLgotICAg
IENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5
LCBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRhYmFz
ZXMiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIikuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRB
cHBWYWx1ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRh
dGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2Vi
U3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xMDMxLDcgKzEwMzEs
NyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0
cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJp
bmcgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwp
OworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFU
SF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2suY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMDUw
LDIwICsxMDUwLDIwIEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFy
KiBwYXRoT3JVcmwpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3RyaW5n
IHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRUZXN0
cy5sZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2Nh
dGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7CisgICAg
U3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5
b3V0VGVzdHMubGVuZ3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IHBvc3NpYmxlUGF0aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3Qp
KTsKKyAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogCiAg
ICAgc2l6ZV90IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcp
OwogICAgIHdoaWxlIChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVFbmQgIT0gV1RG
Ojpub3RGb3VuZCkgewogICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmco
MCwgbmV4dENhbmRpZGF0ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9U
ZXN0KSk7CisgICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0
KSk7CiAgICAgICAgIG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdc
XCcpOwogICAgIH0KIAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBv
c3NpYmxlUGF0aHMuYmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7
Ci0gICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwiKTsgCisgICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFj
ayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAi
cmVzb3VyY2VzXFwiKTsKIAogICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBhdGhUb0Zv
bnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gcGF0aFRvRm9udEZhbGxiYWNrOwpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAg
c3RhdGljIHZvaWQgYWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZh
bGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFs
bGJhY2suY3NzIik7CisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBh
dGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1co
Zm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9u
dEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKICAgICBp
ZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9u
dEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CisgICAg
U3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFj
ay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJh
Y3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5k
ZXggZmJjYzYyM2ZiZmMuLjI1Mjc0NGI0MjFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTU1LDE5ICs1NSwxOSBAQCBwdWJs
aWM6CiAgICAgICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogICAgICAgICAK
ICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUg
aGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1w
VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRs
ZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgICAgIAotICAg
ICAgICBpbnQgcmMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRm
OCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CisgICAgICAgIGludCBy
YyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51
dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRvclRlc3REYXRhLmxlbmd0aCgpKTsKICAgICAgICAgQVNT
RVJUX05FKHJjLCAtMSk7CiAgICAgICAgIAotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBG
aWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgp
OwogICAgIH0KICAgICAKICAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJu
IG1fdGVtcEZpbGVQYXRoOyB9CkBAIC0xMTQsMTkgKzExNCwxOSBAQCBzdGF0aWMgU3RyaW5nIHJl
YWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgY29uc3RleHByIGlu
dCBidWZmZXJTaXplID0gMTAyNDsKIAotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwg
T3BlbkZvclJlYWQpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAgIGF1dG8g
c291cmNlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJl
YWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChzb3VyY2UpKQogICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1ZmZlcjxMQ2hhcj4gYnVmZmVy
KGJ1ZmZlclNpemUpOwogCiAgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0
KFtzb3VyY2VdKCkgewotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNl
OwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CiAgICAgfSk7CiAKICAgICAvLyBTaW5jZSB3ZSBjb250cm9sIHRoZSB0ZXN0
IGZpbGVzLCB3ZSBrbm93IHdlIG9ubHkgbmVlZCBvbmUgcmVhZAotICAgIGludCByZWFkQnl0ZXMg
PSByZWFkRnJvbUZpbGUoc291cmNlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuY2hh
cmFjdGVycygpKSwgYnVmZmVyU2l6ZSk7CisgICAgaW50IHJlYWRCeXRlcyA9IEZpbGVTeXN0ZW06
OnJlYWRGcm9tRmlsZShzb3VyY2UsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5jaGFy
YWN0ZXJzKCkpLCBidWZmZXJTaXplKTsKICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgU3RyaW5n
IHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIFRFU1RfRihGaWxlTW9u
aXRvclRlc3QsIERldGVjdENoYW5nZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRl
bXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0
ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CiAKQEAgLTE4NCw3ICsxODQsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFu
Z2UpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIHsK
LSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVu
TG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNU
X0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0aXBsZUNoYW5nZXMpCiAKIFRFU1RfRihGaWxl
TW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlz
dHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxv
b3AoKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dERlbGV0aW9uKQogCiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVu
RGVsZXRlKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7
CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMzQwLDcgKzM0
MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUp
CiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRD
aGFuZ2UpCiB7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsK
IAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC0zNzcsMTIgKzM3
NywxMiBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1
ZW50Q2hhbmdlKQogICAgIHJlc2V0VGVzdFN0YXRlKCk7CiAKICAgICB0ZXN0UXVldWUtPmRpc3Bh
dGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMo
dGVtcEZpbGVQYXRoKCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAotICAgICAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxl
KHRlbXBGaWxlUGF0aCgpLCBPcGVuRm9yV3JpdGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxl
LCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBGaWxl
U3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRl
KTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiAKLSAgICAgICAgaW50IHJjID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxl
TW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEubGVuZ3Ro
KCkpOworICAgICAgICBpbnQgcmMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZp
bGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5n
dGgoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywgLTEpOwogCiAgICAgICAgIGF1dG8gZmlyc3RD
b21tYW5kID0gY3JlYXRlQ29tbWFuZCh0ZW1wRmlsZVBhdGgoKSwgRmlsZU1vbml0b3JSZXZpc2Vk
RGF0YSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmls
ZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3Rl
bS5jcHAKaW5kZXggN2Y2Zjk3NDk4ZDEuLmYyNTg2Njk0NjA2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NiwzNSArNDYsMzUg
QEAgcHVibGljOgogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAg
IAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRl
bXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5
c3RlbVRlc3REYXRhLCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAgICAgIGNsb3Nl
RmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0
YSkpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgICAgICBt
X3RlbXBGaWxlU3ltbGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7Ci0gICAg
ICAgIGNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQ
YXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQ
YXRoLCBtX3RlbXBGaWxlU3ltbGlua1BhdGgpOwogCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBh
dGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAg
ICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0
IEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9z
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5U
ZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNs
b3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUp
OworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX3F1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJU
ZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBt
X3F1b3RlQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
InRlbXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwogICAgIH0KIAogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0
ZUZpbGUobV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBF
bXB0eUZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwotICAg
ICAgICBkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX3RlbXBGaWxlU3ltbGlua1BhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7CiAgICAgfQogCiAgICAgY29u
c3QgU3RyaW5nJiB0ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQpAQCAt
OTYsNyArOTYsNyBAQCBwcml2YXRlOgogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlz
c2luZ0ZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBl
ZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7CisgICAgRmls
ZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3Rp
bmdfZmlsZSIpLCBzdWNjZXNzKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CiAgICAgRVhQ
RUNUX1RSVUUoIW1hcHBlZEZpbGVEYXRhKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgTWFwcGluZ0V4aXN0aW5nRmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgTWFwcGVk
RmlsZURhdGEgbWFwcGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBz
dWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghIW1h
cHBlZEZpbGVEYXRhKTsKICAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0g
c3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOwpAQCAtMTE0LDI2ICsxMTQsMjYgQEAgVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQogVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBNYXBwaW5nRXhpc3RpbmdFbXB0eUZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAg
IE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nl
c3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBF
bXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwogICAg
IEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVz
dCwgRmlsZXNIYXZlU2FtZVZvbHVtZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hhdmVTYW1l
Vm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAg
RVhQRUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgp
LCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hhdmVT
YW1lVm9sdW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBh
dGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUo
dGVtcEZpbGVQYXRoKCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQ
YXRoKCksIGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90
ZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0
RmlsZU1ldGFkYXRhU3ltbGluaykKIHsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IGZpbGVN
ZXRhZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIGF1dG8gc3ltbGlua01ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CiAgICAg
QVNTRVJUX1RSVUUoc3ltbGlua01ldGFkYXRhLmhhc192YWx1ZSgpKTsKICAgICBFWFBFQ1RfVFJV
RShzeW1saW5rTWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3lt
Ym9saWNMaW5rKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5r
TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsK
IAotICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOworICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxl
U3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRo
KCkpOwogICAgIEFTU0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc192YWx1ZSgpKTsKICAgICBF
WFBFQ1RfVFJVRSh0YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpU
eXBlOjpGaWxlKTsKICAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0
YXRpY19jYXN0PHNpemVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3Bw
CmluZGV4IDMyY2UzNjE4ZGU1Li5iOTI4MzI0ZjM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00MSwyNiArNDEs
MjYgQEAgcHVibGljOgogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKICAg
ICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVz
dEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIAotICAg
ICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXAg
RW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7Cisg
ICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5p
bmdGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhh
bmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX2JhbmdDb250YWlu
aW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFU
ZXN0IUZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKICAgICAgICAgCi0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVt
cG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xv
c2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogCiAgICAg
dm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBkZWxldGVGaWxlKG1fdGVt
cEZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRo
KTsKLSAgICAgICAgZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAg
ICBkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOwogICAgIH0KICAgICAKICAg
ICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVm
ZmVyVGVzdC5jcHAKaW5kZXggYTI5N2E1NWI4MzMuLjhmZTM1NjdjMWUxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3Bw
CkBAIC0zOCwxOSArMzgsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCiAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQot
ICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgbV90ZW1wRmlsZVBhdGggPSBvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICB3cml0ZVRvRmlsZSho
YW5kbGUsIHRlc3REYXRhKCksIHN0cmxlbih0ZXN0RGF0YSgpKSk7Ci0gICAgY2xvc2VGaWxlKGhh
bmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBt
X3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZp
bGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgdGVzdERh
dGEoKSwgc3RybGVuKHRlc3REYXRhKCkpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKIAotICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIG1f
dGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVt
cHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKLSAgICBkZWxldGVG
aWxlKG1fdGVtcEZpbGVQYXRoKTsKLSAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgp
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggYTIwYjM4
MzE1NjYuLjJlMmMzOTQ3OGU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQpAQCAtNDAs
MjEgKzQwLDIxIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkpCiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZTsKLSAgICBTdHJpbmcgZGF0YWJhc2VGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wRW1wdHlEYXRhYmFzZSIsIGhhbmRsZSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7
CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBTdHJpbmcg
ZGF0YWJhc2VGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1w
dHlEYXRhYmFzZSIsIGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7
CiAKICAgICBsb25nIGxvbmcgZmlsZVNpemU7Ci0gICAgZ2V0RmlsZVNpemUoZGF0YWJhc2VGaWxl
UGF0aCwgZmlsZVNpemUpOworICAgIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGRhdGFiYXNlRmls
ZVBhdGgsIGZpbGVTaXplKTsKICAgICBFWFBFQ1RfRVEoMCwgZmlsZVNpemUpOwogCiAgICAgRVhQ
RUNUX1RSVUUoRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGRhdGFi
YXNlRmlsZVBhdGgpKTsKIAotICAgIGJvb2wgZmlsZVN0aWxsRXhpc3RzID0gZmlsZUV4aXN0cyhk
YXRhYmFzZUZpbGVQYXRoKTsKKyAgICBib29sIGZpbGVTdGlsbEV4aXN0cyA9IEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlUGF0aCk7CiAgICAgRVhQRUNUX0ZBTFNFKGZpbGVTdGls
bEV4aXN0cyk7CiAKICAgICBpZiAoZmlsZVN0aWxsRXhpc3RzKQotICAgICAgICBkZWxldGVGaWxl
KGRhdGFiYXNlRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFi
YXNlRmlsZVBhdGgpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpAQCAtNzgsMTkgKzc4
LDE5IEBAIHN0YXRpYyB2b2lkIGFkZFRvRGF0YWJhc2VzVGFibGUoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZVBhdGgsIGNvbnN0IFNlY3VyaXR5T3JpZ2luCiAKIHN0YXRpYyB2b2lkIHJlbW92ZURpcmVj
dG9yeUFuZEFsbENvbnRlbnRzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKIHsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGZpbGUgOiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgsICIqIikp
Ci0gICAgICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUZpbGUoZmlsZSkpOworICAgIGZvciAoY29uc3Qg
YXV0byYgZmlsZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgIioi
KSkKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlKSk7CiAK
LSAgICBpZiAoZmlsZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKLSAgICAgICAgRVhQRUNUX1RSVUUo
ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpOworICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRpcmVjdG9yeVBhdGgpKQorICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGNyZWF0ZUZpbGVBdFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlSGFuZGxlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvcldyaXRlKTsKKyAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgRVhQRUNUX05F
KC0xLCBmaWxlSGFuZGxlKTsKLSAgICBjbG9zZUZpbGUoZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUV4aXN0cyhwYXRoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVI
YW5kbGUpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpOwog
fQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQpAQCAtOTksNyArOTksNyBA
QCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQogICAgIC8vIHRhYmxlcywgYW5k
IGFuIGFjdHVhbCBkYXRhYmFzZSBvbiBkaXNrLgogICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hv
dWxkIHJlbW92ZSB0aGUgb3JpZ2luJ3MgaW5mb3JtYXRpb24gZnJvbSBib3RoIHRoZSBPcmlnaW5z
CiAgICAgLy8gYW5kIERhdGFiYXNlcyB0YWJsZXMsIGFuZCByZW1vdmUgdGhlIGRhdGFiYXNlIGZy
b20gZGlzay4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZp
bGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmlu
ZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwpAQCAtMTA4LDE2ICsxMDgsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9y
aWdpbikKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAg
ICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXpl
KCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJh
c2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdpbiwg
d2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVk
KTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAKLSAg
ICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RS
VUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxl
RXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFs
bERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJhc2VQYXRo
ID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJh
c2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJhc2VQYXRo
KTsKQEAgLTEyOCwxNCArMTI4LDE0IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmln
aW4pCiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2Vy
OjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBF
WFBFQ1RfVFJVRShkZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNU
X1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOwogI2Vs
c2UKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAjZW5kaWYKIAog
ICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0YWJh
c2VEb2VzTm90RXhpc3QpCkBAIC0xNDMsNyArMTQzLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICAvLyBUZXN0IHRoZSBj
YXNlIHdoZXJlIHRoZXJlIGlzIGFuIGVudHJ5IGluIGJvdGggdGhlIE9yaWdpbnMgYW5kIERhdGFi
YXNlcyB0YWJsZXMsCiAgICAgLy8gYnV0IG5vdCBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4K
ICAgICAvLyBUaGUgaW5mb3JtYXRpb24gc2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUg
dGFibGVzLgotICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlE
aXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5n
IGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRh
YmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCk7CkBAIC0xNTIsMTUgKzE1MiwxNSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3Jp
Z2luV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVv
dGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNl
cy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdl
YkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxl
KGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwog
ICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVz
KG9yaWdpbikuc2l6ZSgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZUZ1bGxQYXRoID0gZGF0
YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1l
LCBmYWxzZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0
aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNl
RnVsbFBhdGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlT3Jp
Z2luKG9yaWdpbikpOwogCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBFWFBFQ1RfVFJVRShk
YXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwogCiAgICAg
cmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgp
KTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FE
YXRhYmFzZUZhaWxzKQpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBE
ZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICAvLyBXaGVuIHdlIGNh
bGwgZGVsZXRlT3JpZ2luKCksIGRlbGV0aW5nIG9uZSBvZiB0aGVzZSBkYXRhYmFzZXMgZmFpbHMu
CiAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBzaG91bGRuJ3QgcmVtb3ZlIHRoZSBpbmZvcm1hdGlv
biBmcm9tIGVpdGhlciB0aGUgRGF0YWJhc2VzIG9yCiAgICAgLy8gT3JpZ2lucyB0YWJsZXMuCi0g
ICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
IldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTE4
NywxNiArMTg3LDE2IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGVs
ZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdp
biwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXIt
Pm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsK
LSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJh
c2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFz
ZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFz
ZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBF
Q1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4p
LnNpemUoKSk7CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7
Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBF
WFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9y
eVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxs
V2ViRGF0YWJhc2VQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9y
aWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxs
V2ViRGF0YWJhc2VQYXRoKTsKQEAgLTIwOSw4ICsyMDksOCBAQCBURVNUKERhdGFiYXNlVHJhY2tl
ciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAKICAgICBFWFBFQ1Rf
RkFMU0UoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVPcmlnaW4ob3JpZ2luKSk7CiAKLSAgICBFWFBF
Q1RfVFJVRShmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIEVYUEVDVF9FUSgodW5zaWduZWQp
MSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoKHVu
c2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7
CkBAIC0yMjEsMTEgKzIyMSwxMSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2lu
V2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAgICAgY2hmbGFncyhmdWxsV2ViRGF0YWJhc2VQ
YXRoLnV0ZjgoKS5kYXRhKCksIDApOwogI2VuZGlmCiAKLSAgICBFWFBFQ1RfVFJVRShkZWxldGVG
aWxlKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShkZWxldGVFbXB0eURp
cmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOwogCiAgICAgcmVtb3ZlRGlyZWN0b3J5
QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVTVChE
YXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldpdGhNaXNzaW5nRW50cnlJbkRhdGFiYXNlc1Rh
YmxlKQpAQCAtMjM0LDcgKzIzNCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmln
aW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKICAgICAvLyB0aGUgRGF0YWJhc2Vz
IHRhYmxlLiBUaGVyZSBpcyBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4KICAgICAvLyBUaGUg
aW5mb3JtYXRpb24gc2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3JpZ2lucyB0YWJs
ZSwgYW5kIHRoZQogICAgIC8vIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVkIGZyb20gZGlzay4K
LSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5
KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06
OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFz
ZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFj
a2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAt
MjQzLDI4ICsyNDMsMjggQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldpdGhN
aXNzaW5nRW50cnlJbkRhdGFiYXNlc1RhYmxlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVv
dGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNl
cy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgRVhQRUNUX1RS
VUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKIAot
ICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBFWFBFQ1Rf
VFJVRShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKGZp
bGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5QYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2lu
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCi0gICAgU3RyaW5nIHdlYkRhdGFiYXNlUGF0aCA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIiKTsKKyAg
ICBTdHJpbmcgd2ViRGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG9yaWdpblBhdGgsICJkYXRhYmFzZS5kYiIpOwogICAgIGNyZWF0ZUZpbGVBdFBhdGgo
d2ViRGF0YWJhc2VQYXRoKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVs
ZXRlT3JpZ2luKG9yaWdpbikpOwogCi0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0
YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwor
ICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNlUGF0aCkp
OworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsK
IAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLmlzRW1wdHkoKSk7
CiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbiku
aXNFbXB0eSgpKTsKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVE
YXRhYmFzZSkKQEAgLTI3Miw3ICsyNzIsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRl
RGF0YWJhc2UpCiAgICAgLy8gVGVzdCB0aGUgZXhwZWN0ZWQgY2FzZS4gVGhlcmUgaXMgYW4gZW50
cnkgaW4gdGhlIERhdGFiYXNlcyB0YWJsZQogICAgIC8vIGFuZCBhIGRhdGFiYXNlIG9uIGRpc2su
IEFmdGVyIHRoZSBkZWxldGlvbiwgdGhlIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVkCiAgICAg
Ly8gZnJvbSBkaXNrLCBhbmQgdGhlIGluZm9ybWF0aW9uIHNob3VsZCBiZSBnb25lIGZyb20gdGhl
IERhdGFiYXNlcyB0YWJsZS4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVj
dG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwog
ICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJp
bmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFj
a2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURp
cmVjdG9yeVBhdGgpOwpAQCAtMjgxLDE2ICsyODEsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZURhdGFiYXNlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1
MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3Jp
Z2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFt
ZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxlKGRhdGFiYXNlUGF0
aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwogICAgIEVYUEVDVF9F
USgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuc2l6
ZSgpKTsKIAotICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAg
ICBFWFBFQ1RfVFJVRShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVD
VF9UUlVFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5QYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCiAgICAgU3RyaW5nIGZ1bGxXZWJE
YXRhYmFzZVBhdGggPSBkYXRhYmFzZVRyYWNrZXItPmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2lu
LCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKICAgICBjcmVhdGVGaWxlQXRQYXRoKGZ1bGxXZWJE
YXRhYmFzZVBhdGgpOwpAQCAtMzAxLDIwICszMDEsMjAgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIs
IERlbGV0ZURhdGFiYXNlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBFWFBFQ1RfVFJVRShEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoZnVsbFdlYkRhdGFiYXNlUGF0
aCkpOwogI2Vsc2UKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQ
YXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFdlYkRh
dGFiYXNlUGF0aCkpOwogI2VuZGlmCiAKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFi
YXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1w
dHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKICAgICByZW1vdmVEaXJlY3RvcnlBbmRB
bGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxl
RXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERhdGFi
YXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VXaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiB7CiAg
ICAgLy8gVGVzdCB0aGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gZGVsZXRlIGEgZGF0YWJhc2UgdGhh
dCBkb2Vzbid0IGV4aXN0IG9uIGRpc2suCiAgICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlbW92ZSB0
aGUgZGF0YWJhc2UgaW5mb3JtYXRpb24gZnJvbSB0aGUgRGF0YWJhc2VzIHRhYmxlLgotICAgIE5T
U3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJT
UUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0zMjMsMjEg
KzMyMywyMSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VXaGVuRGF0YWJh
c2VEb2VzTm90RXhpc3QpCiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUy
NDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmln
aW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAg
RVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJh
c2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1l
ID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRo
LCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VR
KCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXpl
KCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlRnVsbFBhdGggPSBkYXRhYmFzZVRyYWNrZXIt
PmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0aCkpOwog
CiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4s
IHdlYkRhdGFiYXNlTmFtZSkpOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0
YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7CiAKICAgICByZW1vdmVEaXJlY3RvcnlBbmRB
bGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxl
RXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiAjZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZC5tbQppbmRleCA3NDg2NjVjZjJjMi4uMmFjOGI1NmRlYjkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAt
OTIsMTAgKzkyLDEwIEBAIHN0YXRpYyBib29sIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlID0g
ZmFsc2U7CiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNwb25zZSk7CiAgICAgRVhQRUNU
X0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1w
b3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUo
ZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBX
ZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmls
ZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAg
ICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGJv
b2wgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUsIGRvd25sb2FkLndhc1VzZXJJbml0aWF0ZWQpOwogICAg
IEVYUEVDVF9UUlVFKF9leHBlY3RlZENvbnRlbnRMZW5ndGggPT0gTlNVUkxSZXNwb25zZVVua25v
d25MZW5ndGggfHwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9leHBlY3RlZENvbnRlbnRMZW5ndGgp
ID09IF9yZWNlaXZlZENvbnRlbnRMZW5ndGgpOwogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gY29udGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRpb25QYXRo
IGFuZFBhdGg6W3NvdXJjZVVSTCBwYXRoXV0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rl
c3RpbmF0aW9uUGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVz
dGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC0zOTMsMTAgKzM5Mywx
MCBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERpcmVjdERv
d25sb2FkV2l0aExvYWRlZENvbnRlbnQpCiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNw
b25zZSk7CiAgICAgRVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29y
ZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9
IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7
Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rl
c3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJU
ZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAh
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dP
dmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC00MTAsNyAr
NDEwLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEaXJl
Y3REb3dubG9hZFdpdGhMb2FkZWRDb250ZW50KQogICAgIE5TU3RyaW5nKiBleHBlY3RlZENvbnRl
bnQgPSBAIntcInhcIjo0MixcInNcIjpcImhlbGxvLCB3b3JsZFwifSI7CiAgICAgTlNEYXRhKiBl
eHBlY3RlZERhdGEgPSBbZXhwZWN0ZWRDb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKICAgICBFWFBFQ1RfVFJVRShbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb250ZW50c0F0UGF0aDpfZGVzdGluYXRpb25QYXRoXSBpc0VxdWFsVG9EYXRhOmV4
cGVjdGVkRGF0YV0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7
CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsK
ICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC00NjYsMTAgKzQ2NiwxMCBAQCBURVNUKF9XS0Rv
d25sb2FkLCBEb3dubG9hZFJlcXVlc3RCbG9iVVJMKQogCiAtIChOU1N0cmluZyAqKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93
T3ZlcndyaXRlCiB7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7
Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0
V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBX
ZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZp
bGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAg
RVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZUhhbmRsZSk7CiAgICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGlu
YXRpb25QYXRoOwogfQpAQCAtNDk2LDcgKzQ5Niw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25s
b2FkUmVxdWVzdEJsb2JVUkwpCiAgICAgaWYgKHJlZGlyZWN0Q2hhaW4uY291bnQgPiAyKQogICAg
ICAgICBFWFBFQ1RfU1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRpcmVjdENoYWluWzJdLmFic29s
dXRlU3RyaW5nIFVURjhTdHJpbmddKTsKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3Rp
bmF0aW9uUGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGlu
YXRpb25QYXRoKTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325513</attachid>
            <date>2017-10-31 16:18:00 -0700</date>
            <delta_ts>2017-11-01 00:52:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>179063-4.diff</filename>
            <type>text/plain</type>
            <size>307768</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTE2MGFiYjYxNy4uODY5YjE0MjMwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3Rl
bS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgIEFkZGluZyBhIEZp
bGVTeXN0ZW0gbmFtZXNwYWNlIHRvIG1vZGVybml6ZSB0aGUgY29kZSBiZWZvcmUKKyAgICAgICAg
bW92aW5nIEZpbGVTeXN0ZW0gdG8gUEFMLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVz
L2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogTW9kdWxlcy9lbnRyaWVz
YXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FM
aXRlSURCQmFja2luZ1N0b3JlLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L09yaWdpbkxvY2suY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9j
ay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgICogZmlsZWFwaS9GaWxl
Q29jb2EubW06CisgICAgICAgICogaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwOgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAg
ICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9GaWxlSGFuZGxlLmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVh
bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN0cmVhbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTeXN0ZW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jb2NvYS9GaWxlU3lzdGVtQ29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vZ2xp
Yi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9RdWlj
a0xvb2subW06CisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9h
cmQubW06CisgICAgICAgICogcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9G
b3JtRGF0YVN0cmVhbUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxlU3lz
dGVtV2luLmNwcDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHA6CisKIDIwMTctMTAtMzAgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgdGFiLXNpemU6IDBw
eCBhc3NlcnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRl
eCA2YWViYjFmZDQwNC4uN2VmYjc5ZDU1M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVk
aWFLZXlTZXNzaW9uLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBXZWJLaXRNZWRpYUtl
eVNlc3Npb246Om1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9y
aWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21TZWN1cml0eU9yaWdpbihkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiBib29sIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6aGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50
cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAppbmRleCA2ZDJlYjg4NTJjNC4uOGU1MDY2ZGRlZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lz
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5
c3RlbS5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGlj
IEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRh
dGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQ
YXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3Rz
IG9yIGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9
IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVk
Q2hpbGQ+IGxpc3RlZENoaWxkcmVuOwogICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDog
Y2hpbGRQYXRocykgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxk
UGF0aCk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEo
Y2hpbGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlz
SGlkZGVuKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVu
Y2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tl
ZEFwcGVuZChMaXN0ZWRDaGlsZCB7IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBh
dGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3Zl
KGxpc3RlZENoaWxkcmVuKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1Zh
bGlkVmlydHVhbFBhdGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRP
TUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9v
dFBhdGgoZGlyZWN0b3J5TmFtZShtX2ZpbGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVl
dWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAg
IEFTU0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25z
dCBTdHJpbmcmIGZ1bGxQYXRoLCBTdAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBt
ZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFt
ZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0
IikgfTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZh
bGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3Ry
aW5nJiBmdWxsUGF0aCkKIHsKLSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQ
YXRoKTsKICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCku
dHlwZTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQ
YXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5h
cHBlbmQoY29tcG9uZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29t
cG9uZW50cyk7CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVj
dG9yeSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnku
Y3BwCmluZGV4IGI2YmJjNjNhNjM2Li5kY2NiNWExMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0ZpbGVTeXN0ZW1FbnRyeS5jcHAKQEAgLTM5LDcg
KzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRmlsZVN5c3RlbUVudHJ5OjpGaWxlU3lzdGVt
RW50cnkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NRmlsZVN5c3RlbSYgZmls
ZXN5c3RlbSwgY29uc3QgU3RyaW5nJiB2aXJ0dWFsUGF0aCkKICAgICA6IEFjdGl2ZURPTU9iamVj
dCgmY29udGV4dCkKICAgICAsIG1fZmlsZXN5c3RlbShmaWxlc3lzdGVtKQotICAgICwgbV9uYW1l
KHBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFsUGF0aCkpCisgICAgLCBtX25hbWUoRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHZpcnR1YWxQYXRoKSkKICAgICAsIG1fdmlydHVhbFBhdGgodmlydHVh
bFBhdGgpCiB7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcAppbmRl
eCBkOTQ2YmU0M2YxZi4uOGJiODgwNTBiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcApAQCAtNjMs
MTMgKzYzLDEzIEBAIFN0cmluZyBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0
b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU3RyaW5nJiByb290CiAKIFN0cmluZyBJREJEYXRhYmFz
ZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BMZXZlbE9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cGVuaW5nT3JpZ2luLCBjb25zdCBTdHJpbmcmIHJvb3REaXJlY3RvcnkpCiB7Ci0gICAgU3RyaW5n
IG1haW5GcmFtZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290RGlyZWN0
b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgU3RyaW5nIG1h
aW5GcmFtZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
b290RGlyZWN0b3J5LCB0b3BMZXZlbE9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAKICAg
ICAvLyBJZiB0aGUgb3BlbmluZyBvcmlnaW4gYW5kIG1haW4gZnJhbWUgb3JpZ2lucyBhcmUgdGhl
IHNhbWUsIHRoZXJlIGlzIG5vIHBhcnRpdGlvbmluZy4KICAgICBpZiAob3BlbmluZ09yaWdpbiA9
PSB0b3BMZXZlbE9yaWdpbikKICAgICAgICAgcmV0dXJuIG1haW5GcmFtZURpcmVjdG9yeTsKIAot
ICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBv
cGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1haW5GcmFtZURpcmVjdG9yeSwgb3BlbmluZ09y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKICNpZiAhTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY4MWNlOGFiNmNhLi5mZmY4Zjg0Y2U3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2Niwx
MSArNDY2LDExIEBAIHZvaWQgSURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1
aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0
b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0
b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwo
IioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogZW50cmllcykgewotICAgICAgICBTdHJpbmcgZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50
T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGVudHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29k
ZWROYW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5n
VHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAgICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQo
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGVu
Y29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01ODEsMTQgKzU4MSwxNCBAQCB2b2lkIElEQlNlcnZl
cjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRo
KGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0
aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4g
ZGF0YWJhc2VQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2lu
UGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0byYgZGF0YWJhc2VQYXRoIDogZGF0YWJhc2VQYXRo
cykgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBk
YXRhYmFzZUZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigp
ICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5j
ZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAg
dGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBp
ZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNl
RmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2Rp
ZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2luY2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0
aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3Jp
Z2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxv
YiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIgd2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwK
ICAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRoZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJl
IHRyeWluZyB0byBkZWxldGUuCi0gICAgICAgIGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGly
ZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTldKi5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRv
JiBibG9iUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQ
YXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAgICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2
ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAg
ICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJpbmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3
aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAiLmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9u
LWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0
aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMgb25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0
LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5vdCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAg
ICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAg
ICAgICBTdHJpbmcgZmlsZW5hbWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUoYmxvYlBhdGgpOwogICAgICAgICAgICAgYXV0byBmaWxlbmFtZUxlbmd0aCA9IGZpbGVuYW1l
Lmxlbmd0aCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoZmlsZW5hbWVMZW5ndGggPj0gNik7CkBA
IC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAodmFsaWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBkZWxl
dGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyBkZWxldGUg
SW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgU1FMaXRlIGZpbGVzLgogICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxlKTsKIAogICAgICAg
ICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2FuLCBkZWxldGUgdGhlIGVtcHR5IGRpcmVjdG9yeS4K
LSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKICAg
ICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFzZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwgd2Ug
Y2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVjdG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNs
b3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgaWYgKCFtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiKiIpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIq
Iik7CiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAg
ICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZv
cm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5
T3IKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CiAgICAgICAgICAgICByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBh
dGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMw
YmViMzguLjlmZjhjMGYzMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApA
QCAtNzQ0LDcgKzc0NCw3IEBAIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNl
TmFtZUZyb21FbmNvZGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBlbmNvCiAgICAgU3RyaW5nIHBh
cnRpYWxseURlY29kZWQgPSBlbmNvZGVkTmFtZTsKICAgICBwYXJ0aWFsbHlEZWNvZGVkLnJlcGxh
Y2UoQVNDSUlMaXRlcmFsKCIlMkUiKSwgQVNDSUlMaXRlcmFsKCIuIikpOwogCi0gICAgcmV0dXJu
IGRlY29kZUZyb21GaWxlbmFtZShwYXJ0aWFsbHlEZWNvZGVkKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhcnRpYWxseURlY29kZWQpOwogfQogCiBTdHJpbmcg
U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpIGNvbnN0CkBA
IC03NTQsNyArNzU0LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVG
b3JEYXRhYmFzZU5hbWUoKSBjb25zdAogICAgIGlmIChtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1l
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gIiUwMCI7CiAKLSAgICBTdHJpbmcgZmlsZW5h
bWUgPSBlbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOworICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKG1faWRlbnRp
Zmllci5kYXRhYmFzZU5hbWUoKSk7CiAgICAgZmlsZW5hbWUucmVwbGFjZSgnLicsICIlMkUiKTsK
IAogICAgIHJldHVybiBmaWxlbmFtZTsKQEAgLTc2NCwxNCArNzY0LDE0IEBAIFN0cmluZyBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0
dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Fic29sdXRlRGF0YWJhc2VEaXJlY3Rvcnks
IGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFt
ZUZvckRhdGFiYXNlTmFtZSgpKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZnVsbERhdGFiYXNlUGF0aCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2lkZW50aWZpZXIuZGF0
YWJhc2VOYW1lKCkuaXNOdWxsKCkpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAg
cmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmdWxsRGF0YWJhc2VE
aXJlY3RvcnkoKSwgIkluZGV4ZWREQi5zcWxpdGUzIik7CiB9CiAKIElEQkVycm9yIFNRTGl0ZUlE
QkJhY2tpbmdTdG9yZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZv
JiBpbmZvKQpAQCAtNzgzLDcgKzc4Myw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6Z2V0T3JFc3RhYmxpc2hEYXRhYmFzZUluZm8oSURCRGF0YWJhc2VJbmZvJiBpbmZvCiAgICAg
ICAgIHJldHVybiBJREJFcnJvciB7IH07CiAgICAgfQogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVz
KGZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpKTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCkpOwogICAgIFN0cmluZyBkYkZpbGVuYW1lID0g
ZnVsbERhdGFiYXNlUGF0aCgpOwogCiAgICAgbV9zcWxpdGVEQiA9IHN0ZDo6bWFrZV91bmlxdWU8
U1FMaXRlRGF0YWJhc2U+KCk7CkBAIC0xODU4LDcgKzE4NTgsNyBAQCBJREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmdldEJsb2JSZWNvcmRzRm9yT2JqZWN0U3RvcmVSZWNvcmQoaW50NjRf
dCBvYmplYwogICAgICAgICBibG9iVVJMcy5hcHBlbmQoYmxvYlVSTCk7CiAKICAgICAgICAgU3Ry
aW5nIGZpbGVOYW1lID0gc3FsLT5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBibG9iRmlsZVBh
dGhzLmFwcGVuZChwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGZp
bGVOYW1lKSk7CisgICAgICAgIGJsb2JGaWxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZmlsZU5hbWUpKTsKICAgICB9
CiAKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwpAQCAtMjU0Miw4ICsyNTQyLDggQEAgdm9pZCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZUJhY2tpbmdTdG9yZSgpCiAKICAgICBTdHJpbmcg
ZGF0YWJhc2VEaXJlY3RvcnkgPSBmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBmb3IgKGF1
dG8mIGZpbGUgOiBibG9iRmlsZXMpIHsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsKLSAgICAgICAgaWYg
KCFkZWxldGVGaWxlKGZ1bGxQYXRoKSkKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlKTsK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKSkKICAgICAgICAg
ICAgIExPR19FUlJPUigiRXJyb3IgZGVsZXRpbmcgYmxvYiBmaWxlICVzIiwgZnVsbFBhdGgudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCA2MDg2M2E4YWE5My4uMjMxNjVjOWI5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjptb3ZlQmxv
YkZpbGVzSWZOZWNlc3NhcnkoKQogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JUZW1wb3Jh
cnlBbmRTdG9yZWRGaWxlbmFtZXMpIHsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5
RmlsZUhhbmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGVudHJ5LmZpcnN0
KTsKIAotICAgICAgICBpZiAoIWhhcmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpKSkKLSAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1wb3JhcnkgYmxvYiBm
aWxlICclcycgdG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpoYXJkTGlua09yQ29weUZp
bGUoZW50cnkuZmlyc3QsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25kKSkpCisgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBsaW5rL2NvcHkgdGVtcG9yYXJ5IGJsb2IgZmlsZSAnJXMnIHRvIGxvY2F0aW9uICcl
cyciLCBlbnRyeS5maXJzdC51dGY4KCkuZGF0YSgpLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGVudHJ5LnNlY29uZCkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nl
c3NUb1RlbXBvcmFyeUZpbGVDb21wbGV0ZShlbnRyeS5maXJzdCk7CiAgICAgfQpAQCAtMTA3LDcg
KzEwNyw3IEBAIHZvaWQgU1FMaXRlSURCVHJhbnNhY3Rpb246OmRlbGV0ZUJsb2JGaWxlc0lmTmVj
ZXNzYXJ5KCkKIAogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeSA9IG1fYmFja2luZ1N0b3Jl
LmZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2Jsb2JS
ZW1vdmVkRmlsZW5hbWVzKSB7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOworICAgICAgICBTdHJpbmcg
ZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnksIGVudHJ5KTsKICAgICAgICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhh
bmRsZXIoKS5wcmVwYXJlRm9yQWNjZXNzVG9UZW1wb3JhcnlGaWxlKGZ1bGxQYXRoKTsKICAgICAg
ICAgbV9iYWNraW5nU3RvcmUudGVtcG9yYXJ5RmlsZUhhbmRsZXIoKS5hY2Nlc3NUb1RlbXBvcmFy
eUZpbGVDb21wbGV0ZShmdWxsUGF0aCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNw
cAppbmRleCBhZGRkMWY4YzAwNC4uNjFhZWI4ZjdkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2
ZXIuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdl
dEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNw
cAppbmRleCA1NTI3NjlhNDFjNy4uZmVhMWJlNWU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTY0OSw5
ICs2NDksOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjp1c2FnZShjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbikKIHsKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9
IHRoaXMtPm9yaWdpblBhdGgob3JpZ2luKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGlza1Vz
YWdlID0gMDsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogbGlzdERpcmVjdG9yeShvcmlnaW5Q
YXRoLCBBU0NJSUxpdGVyYWwoIiouZGIiKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCBBU0NJSUxpdGVyYWwoIiouZGIi
KSkpIHsKICAgICAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgICAgIGdldEZpbGVTaXplKGZpbGVO
YW1lLCBzaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNp
emUpOwogICAgICAgICBkaXNrVXNhZ2UgKz0gc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIGRpc2tV
c2FnZTsKQEAgLTc4NSw5ICs3ODUsOSBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aQogICAgICAg
ICAgICAgLy8gSWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgd2UgcHJldmlvdXNseSBkZWxldGVk
IGl0IGJ1dCBmYWlsZWQgdG8gcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgLy8g
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZS4gV2Ugd2FudCB0byBkZWxldGUgYWxsIG9mIHRoZSBp
bmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgICAgICAgICAgLy8gZGF0YWJhc2Ug
ZnJvbSB0aGUgdHJhY2tlciBkYXRhYmFzZSwgc28gc3RpbGwgYWRkIGl0cyBuYW1lIHRvIGRhdGFi
YXNlTmFtZXNUb0RlbGV0ZS4KLSAgICAgICAgICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoKSkg
eworICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGgpKSB7CiAg
ICAgICAgICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICAgICAg
aWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkp
CisgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmdWxsUGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUgPCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3QodGltZSkpCkBAIC04MzcsNyArODM3LDcgQEAgYm9v
bCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgRGVsZXRpb25Nb2QKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVz
ZSBob2xkaW5nIGxvY2tzIGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwg
ZGVhZGxvY2suCiAgICAgYm9vbCBmYWlsZWRUb0RlbGV0ZUFueURhdGFiYXNlRmlsZSA9IGZhbHNl
OwogICAgIGZvciAoYXV0byYgbmFtZSA6IGRhdGFiYXNlTmFtZXMpIHsKLSAgICAgICAgaWYgKGZp
bGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRl
bGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9uTW9kZSkpIHsKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5h
bWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIGRlbGV0aW9u
TW9kZSkpIHsKICAgICAgICAgICAgIC8vIEV2ZW4gaWYgdGhlIGZpbGUgY2FuJ3QgYmUgZGVsZXRl
ZCwgd2Ugd2FudCB0byB0cnkgYW5kIGRlbGV0ZSB0aGUgcmVzdCwgZG9uJ3QgcmV0dXJuIGVhcmx5
IGhlcmUuCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZWxldGUgZmlsZSBmb3Ig
ZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCkuZGF0YSgpLCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBmYWlsZWRUb0Rl
bGV0ZUFueURhdGFiYXNlRmlsZSA9IHRydWU7CkBAIC04NTIsOCArODUyLDggQEAgYm9vbCBEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgRGVsZXRpb25Nb2QKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoRGF0YWJhc2VUcmFja2VyLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgZGF0YWJh
c2UgbmFtZXMgZm9yIG9yaWdpbiIpOwogI2VuZGlmCi0gICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZmlsZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWRlbGV0ZUZpbGUoZmlsZSkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZmls
ZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aChvcmlnaW4pLCAiKiIpKSB7
CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpCiAgICAgICAg
ICAgICAgICAgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAgYm9vbCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHIKICAg
ICB9CiAKICAgICAvLyBXZSBkcm9wIHRoZSBsb2NrIGhlcmUgYmVjYXVzZSBob2xkaW5nIGxvY2tz
IGR1cmluZyBhIGNhbGwgdG8gZGVsZXRlRGF0YWJhc2VGaWxlIHdpbGwgZGVhZGxvY2suCi0gICAg
aWYgKGZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNlKSkg
JiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVmYXVs
dCkpIHsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aEZvckRhdGFiYXNl
KG9yaWdpbiwgbmFtZSwgZmFsc2UpKSAmJiAhZGVsZXRlRGF0YWJhc2VGaWxlKG9yaWdpbiwgbmFt
ZSwgRGVsZXRpb25Nb2RlOjpEZWZhdWx0KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0
byBkZWxldGUgZmlsZSBmb3IgZGF0YWJhc2UgJXMgaW4gb3JpZ2luICVzIiwgbmFtZS51dGY4KCku
ZGF0YSgpLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIExvY2tIb2xkZXIgbG9ja0RhdGFiYXNlKG1fZGF0YWJhc2VHdWFyZCk7CiAgICAgICAgIGRv
bmVEZWxldGluZ0RhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CkBAIC0xMjA3LDcgKzEyMDcsNyBAQCB2
b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlRGVsZXRlZE9wZW5lZERhdGFiYXNlcygpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGF0YWJhc2UgaGFzIGJlZW4g
ZGVsZXRlZCBvciBpZiBpdHMgZGF0YWJhc2UgZmlsZSBubyBsb25nZXIgbWF0Y2hlcyB0aGUgY3Vy
cmVudCB2ZXJzaW9uLCB0aGlzIGRhdGFiYXNlIGlzIG5vIGxvbmdlciB2YWxpZCBhbmQgaXQgc2hv
dWxkIGJlIG1hcmtlZCBhcyBkZWxldGVkLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGFiYXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBwYXRoR2V0Rmls
ZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0
YWJhc2VGaWxlTmFtZS5pc051bGwoKSB8fCBkYXRhYmFzZUZpbGVOYW1lICE9IEZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShkYi0+ZmlsZU5hbWUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWxldGVkRGF0YWJhc2VzLmFwcGVuZChkYik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZm91bmREZWxldGVkRGF0YWJhc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMTIzOCw3ICsxMjM4LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92
ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogc3RhdGljIGJvb2wgaXNaZXJvQnl0ZUZpbGUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIGxvbmcgbG9uZyBzaXplID0gMDsKLSAgICByZXR1cm4g
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgJiYgIXNpemU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIHNpemUpICYmICFzaXplOwogfQogICAgIAogYm9vbCBEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoY29uc3QgU3RyaW5nJiBwYXRoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2Nr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAK
aW5kZXggNTE2YTJkMmYyNjQuLjMxZDJkMDRiMDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQ
YXRoKFN0cmluZyBvcmlnaW5QYXRoKQogewotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdpblBhdGgsIFN0cmluZygiLmxvY2siKSk7
CiB9CiAKIE9yaWdpbkxvY2s6Ok9yaWdpbkxvY2soU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgOiBt
X2xvY2tGaWxlTmFtZShsb2NrRmlsZU5hbWVGb3JQYXRoKG9yaWdpblBhdGgpLmlzb2xhdGVkQ29w
eSgpKQogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgLCBtX2xvY2tIYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fbG9ja0hhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogI2VuZGlmCiB7CiB9CkBAIC01MCw4ICs1MCw4IEBAIHZvaWQgT3Jp
Z2luTG9jazo6bG9jaygpCiAgICAgbV9tdXRleC5sb2NrKCk7CiAKICNpZiBVU0UoRklMRV9MT0NL
KQotICAgIG1fbG9ja0hhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgT3Bl
bkZvcldyaXRlKTsKLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9ja0ZpbGUo
bV9sb2NrRmlsZU5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKG1fbG9j
a0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAg
ICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBjYW4gZ2V0IGhlcmUgaXMgaWYgdGhlIGRpcmVjdG9yeSBj
b250YWluaW5nIHRoZSBsb2NrCiAgICAgICAgIC8vIGhhcyBiZWVuIGRlbGV0ZWQgb3Igd2Ugd2Vy
ZSBnaXZlbiBhIHBhdGggdG8gYSBub24tZXhpc3RhbnQgZGlyZWN0b3J5LgogICAgICAgICAvLyBJ
biB0aGF0IGNhc2UsIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYnV0IGNsZWFudXAgYW5kIHJl
dHVybi4KQEAgLTY4LDExICs2OCwxMSBAQCB2b2lkIE9yaWdpbkxvY2s6OnVubG9jaygpCiAgICAg
Ly8gY29udGFpbmluZyB0aGUgbG9jayBoYXMgYmVlbiBkZWxldGVkIGJlZm9yZSB3ZSBvcGVuZWQg
dGhlIGxvY2sgZmlsZSwgb3IKICAgICAvLyB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBhIG5vbi1l
eGlzdGFudCBkaXJlY3RvcnkuIFdoaWNoLCBpbiB0dXJuLCBtZWFucwogICAgIC8vIHRoYXQgdGhl
cmUncyBub3RoaW5nIHRvIHVubG9jay4KLSAgICBpZiAobV9sb2NrSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIAorICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5sb2Nr
QW5kQ2xvc2VGaWxlKG1fbG9ja0hhbmRsZSk7Ci0gICAgbV9sb2NrSGFuZGxlID0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUobV9s
b2NrSGFuZGxlKTsKKyAgICBtX2xvY2tIYW5kbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlOwogI2VuZGlmCiAKICAgICBtX211dGV4LnVubG9jaygpOwpAQCAtODMsNyAr
ODMsNyBAQCB2b2lkIE9yaWdpbkxvY2s6OmRlbGV0ZUxvY2tGaWxlKFN0cmluZyBvcmlnaW5QYXRo
KQogICAgIFVOVVNFRF9QQVJBTShvcmlnaW5QYXRoKTsKICNpZiBVU0UoRklMRV9MT0NLKQogICAg
IFN0cmluZyBsb2NrRmlsZU5hbWUgPSBPcmlnaW5Mb2NrOjpsb2NrRmlsZU5hbWVGb3JQYXRoKG9y
aWdpblBhdGgpOwotICAgIGRlbGV0ZUZpbGUobG9ja0ZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGxvY2tGaWxlTmFtZSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaAppbmRleCBkNzE1MWRlNzhiZC4u
YTE2ZTg0ZjE0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
T3JpZ2luTG9jay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9j
a0ZpbGVOYW1lOwogICAgIExvY2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBtX2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIG1fbG9ja0hhbmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKaW5kZXggM2ViMjg4NGFjYTEuLjAyNjFhMGZkMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBkb3VibGUgRmlsZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QK
ICAgICAvLyBUaGUgaS9vIHNob3VsZCBiZSBwZXJmb3JtZWQgb24gYSBiYWNrZ3JvdW5kIHRocmVh
ZCwKICAgICAvLyBhbmQgdGhlIHJlc3VsdCBzaG91bGQgYmUgY2FjaGVkIGFsb25nIHdpdGggYW4g
YXN5bmNocm9ub3VzIG1vbml0b3IgZm9yIGNoYW5nZXMgdG8gdGhlIGZpbGUuCiAgICAgdGltZV90
IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKGdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0
aCwgbW9kaWZpY2F0aW9uVGltZSkgJiYgaXNWYWxpZEZpbGVUaW1lKG1vZGlmaWNhdGlvblRpbWUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1v
ZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRp
b25UaW1lKSkKICAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAqIG1zUGVyU2Vjb25k
OwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gY3VycmVudFRpbWUoKSAqIG1zUGVyU2Vjb25k
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlw
ZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJyCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlz
TnVsbCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlOworICAgIGVmZmVj
dGl2ZU5hbWUgPSBuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGU7CiAgICAgc2l6ZV90IGluZGV4ID0gZWZmZWN0aXZl
TmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKICAgICAg
ICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKTsKQEAgLTE0Nyw3
ICsxNDcsNyBAQCBTdHJpbmcgRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGNvbnN0IFN0cmluZyYg
cGF0aCkKIGJvb2wgRmlsZTo6aXNEaXJlY3RvcnkoKSBjb25zdAogewogICAgIGlmICghbV9pc0Rp
cmVjdG9yeSkKLSAgICAgICAgbV9pc0RpcmVjdG9yeSA9IGZpbGVJc0RpcmVjdG9yeShtX3BhdGgs
IFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Olllcyk7CisgICAgICAgIG1faXNEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpZZXMpOwogICAgIHJldHVybiAqbV9pc0RpcmVjdG9yeTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVDb2NvYS5tbQppbmRleCAwZDVhNjk3ZjY1YS4uY2FhMjFk
NWI4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tCkBAIC01OSw5ICs1OSw5IEBA
IGJvb2wgRmlsZTo6c2hvdWxkUmVwbGFjZUZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGVGb3JSZXBsYWNlZEZpbGUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycmlkZSwgU3RyaW5nJiBlZmZlY3RpdmVO
YW1lLCBTdHJpbmcmIGVmZmVjdGl2ZUNvbnRlbnRUeXBlKQogewotICAgIEFTU0VSVCghcGF0aEdl
dEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0
aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KKyAgICBBU1NF
UlQoIUZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKS5lbmRzV2l0aCgnLycpKTsgLy8g
RXhwZWN0aW5nIHRvIGdldCBhIHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCwgZXZlbiBmb3Ig
ZGlyZWN0b3JpZXMuCiAgICAgZWZmZWN0aXZlQ29udGVudFR5cGUgPSBBU0NJSUxpdGVyYWwoImFw
cGxpY2F0aW9uL3ppcCIpOwotICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVs
bCgpID8gcGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJTGl0ZXJh
bCgiLnppcCIpOworICAgIGVmZmVjdGl2ZU5hbWUgPSAobmFtZU92ZXJyaWRlLmlzTnVsbCgpID8g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRlKSArIEFTQ0lJ
TGl0ZXJhbCgiLnppcCIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0ZpbGVMaXN0Q3JlYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRv
ci5jcHAKaW5kZXggOTEwNmRhZGNjZDQuLjc2ZjU2NTk3MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgRmlsZUxpc3RDcmVhdG9y
Ojp+RmlsZUxpc3RDcmVhdG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMo
Y29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0
b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFBhdGgg
OiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAgICBhdXRvIG1ldGFkYXRh
ID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRv
IG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CiAgICAgICAg
IGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWV0
YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIHBhdGhHZXRG
aWxlTmFtZShjaGlsZFBhdGgpOworICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSBy
ZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRo
KTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5
cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0
aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0
YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKQEAgLTgwLDgg
KzgwLDggQEAgUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNv
bnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+
PiBmaWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBp
ZiAoc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6
WWVzICYmIGZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlu
a3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgcGF0
aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgaWYgKHNob3Vs
ZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBG
aWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxl
cyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxl
T2JqZWN0cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChG
aWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA4NjQwY2YxMmM4
YS4uYmY0MzQzOTNhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyTWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJl
Y3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJl
dHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbihkb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRTZXRNZWRpYUtl
eXMoV2ViS2l0TWVkaWFLZXlzKiBtZWRpYUtleXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBh
ZmY4Njk5MmU1MC4uYTIxNTBlZDJmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcApAQCAtMzgxLDcg
KzM4MSw3IEBAIGludDY0X3QgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNwYWNlTmVlZGVkKGlu
dDY0X3QgY2FjaGVUb1NhdmUpCiB7CiAgICAgaW50NjRfdCBzcGFjZU5lZWRlZCA9IDA7CiAgICAg
bG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICBpZiAoIWdldEZpbGVTaXplKG1fY2FjaGVGaWxl
LCBmaWxlU2l6ZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShtX2NhY2hlRmls
ZSwgZmlsZVNpemUpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGludDY0X3QgY3VycmVudFNp
emUgPSBmaWxlU2l6ZSArIGZsYXRGaWxlQXJlYVNpemUoKTsKQEAgLTYwMCwxMSArNjAwLDExIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om9wZW5EYXRhYmFzZShib29sIGNyZWF0ZUlm
RG9lc05vdEV4aXN0KQogICAgIGlmIChtX2NhY2hlRGlyZWN0b3J5LmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2NhY2hlRmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X2NhY2hlRGlyZWN0b3J5LCAiQXBwbGljYXRpb25DYWNoZS5kYiIpOwotICAgIGlmICghY3JlYXRl
SWZEb2VzTm90RXhpc3QgJiYgIWZpbGVFeGlzdHMobV9jYWNoZUZpbGUpKQorICAgIG1fY2FjaGVG
aWxlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7CisgICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlz
dCAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKKyAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9jYWNoZURpcmVjdG9yeSk7CiAgICAgbV9kYXRh
YmFzZS5vcGVuKG1fY2FjaGVGaWxlKTsKICAgICAKICAgICBpZiAoIW1fZGF0YWJhc2UuaXNPcGVu
KCkpCkBAIC03OTksNyArNzk5LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKIAogICAgIFN0
cmluZyBmdWxsUGF0aDsKICAgICBpZiAoIXJlc291cmNlLT5wYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICBkYXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGhHZXRGaWxlTmFtZShyZXNvdXJjZS0+
cGF0aCgpKSk7CisgICAgICAgIGRhdGFTdGF0ZW1lbnQuYmluZFRleHQoMiwgRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKICAgICBlbHNlIGlmIChzaG91bGRT
dG9yZVJlc291cmNlQXNGbGF0RmlsZShyZXNvdXJjZSkpIHsKICAgICAgICAgLy8gRmlyc3QsIGNo
ZWNrIHRvIHNlZSBpZiBjcmVhdGluZyB0aGUgZmxhdCBmaWxlIHdvdWxkIHZpb2xhdGUgdGhlIG1h
eGltdW0gdG90YWwgcXVvdGEuIFdlIGRvbid0IG5lZWQKICAgICAgICAgLy8gdG8gY2hlY2sgdGhl
IHBlci1vcmlnaW4gcXVvdGEgaGVyZSwgYXMgaXQgd2FzIGFscmVhZHkgY2hlY2tlZCBpbiBzdG9y
ZU5ld2VzdENhY2hlKCkuCkBAIC04MDgsOCArODA4LDggQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWdu
ZWQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgbWFr
ZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKKyAgICAgICAgU3RyaW5nIGZsYXRG
aWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2Fj
aGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZsYXRGaWxlRGlyZWN0b3J5KTsKIAogICAgICAgICBT
dHJpbmcgZXh0ZW5zaW9uOwogICAgICAgICAKQEAgLTgyMiw3ICs4MjIsNyBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291
cmNlLCB1bnNpZ25lZAogICAgICAgICBpZiAoIXdyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0
b3J5KHJlc291cmNlLT5kYXRhKCksIGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoLCBleHRlbnNpb24p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgZnVsbFBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAg
ICAgICBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0
RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIHJlc291cmNlLT5zZXRQYXRoKGZ1bGxQYXRo
KTsKICAgICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewpAQCAtODMzLDcgKzgzMyw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3Jl
KEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkCiAgICAgaWYgKCFk
YXRhU3RhdGVtZW50LmV4ZWN1dGVDb21tYW5kKCkpIHsKICAgICAgICAgLy8gQ2xlYW4gdXAgdGhl
IGZpbGUgd2hpY2ggd2UgbWF5IGhhdmUgd3JpdHRlbiB0bzoKICAgICAgICAgaWYgKCFmdWxsUGF0
aC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CkBAIC0xMTE2LDcgKzExMTYsNyBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNo
ZT4gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQp
CiAKICAgICBhdXRvIGNhY2hlID0gQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlKCk7CiAKLSAgICBT
dHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0cmluZyBmbGF0
RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2Nh
Y2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAKICAgICBpbnQgcmVz
dWx0OwogICAgIHdoaWxlICgocmVzdWx0ID0gY2FjaGVTdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJ
VEVfUk9XKSB7CkBAIC0xMTM2LDggKzExMzYsOCBAQCBSZWZQdHI8QXBwbGljYXRpb25DYWNoZT4g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmxvYWRDYWNoZSh1bnNpZ25lZCBzdG9yYWdlSUQpCiAg
ICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHNpemUgPSBkYXRhLT5zaXpl
KCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Ci0gICAgICAgICAgICBnZXRGaWxlU2l6
ZShwYXRoLCBzaXplKTsKKyAgICAgICAgICAgIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IGNhY2hlU3RhdGVtZW50LmdldENvbHVtblRleHQoMyk7
CkBAIC0xMjk0LDI1ICsxMjk0LDI1IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Ondy
aXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KFNoYXJlZEJ1ZmZlciYgZGF0CiAgICAgU3Ry
aW5nIGZ1bGxQYXRoOwogICAgIAogICAgIGRvIHsKLSAgICAgICAgcGF0aCA9IGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyBmaWxlRXh0ZW5zaW9uOworICAg
ICAgICBwYXRoID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CiAgICAgICAgIC8vIEd1YXJkIGFnYWluc3Qg
dGhlIGFib3ZlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBvbiBhIHBsYXRmb3JtIHdoaWNoIGRvZXMg
bm90IGltcGxlbWVudAogICAgICAgICAvLyBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkuCiAg
ICAgICAgIEFTU0VSVCghcGF0aC5pc0VtcHR5KCkpOwogICAgICAgICBpZiAocGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnksIHBhdGgpOwotICAgIH0gd2hp
bGUgKGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGRpcmVjdG9yeSB8fCBmaWxlRXhpc3RzKGZ1
bGxQYXRoKSk7CisgICAgICAgIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7CisgICAgfSB3aGlsZSAoRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMoZnVsbFBhdGgpKTsKICAgICAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gb3Bl
bkZpbGUoZnVsbFBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZ1bGxQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUs
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CiAgICAgCiAgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihk
YXRhLnNpemUoKSkpIHsKLSAgICAgICAgZGVsZXRlRmlsZShmdWxsUGF0aCk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFBhdGgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIApAQCAtMTQ2NiwxNSArMTQ2NiwxNSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMoKQogICAgICAgICBpZiAocGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIFN0cmluZyBm
bGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0
b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7Cisg
ICAgICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFt
ZSk7CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CiAgICAgICAgIAogICAgICAgICAv
LyBEb24ndCBleGl0IHRoZSBmbGF0RmlsZURpcmVjdG9yeSEgVGhpcyBzaG91bGQgb25seSBoYXBw
ZW4gaWYgdGhlICJwYXRoIiBlbnRyeSBjb250YWlucyBhIGRpcmVjdG9yeSAKICAgICAgICAgLy8g
Y29tcG9uZW50LCBidXQgcHJvdGVjdCBhZ2FpbnN0IGl0IHJlZ2FyZGxlc3MuCi0gICAgICAgIGlm
IChkaXJlY3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBmbGF0RmlsZURpcmVjdG9yeSkKKyAgICAgICAg
aWYgKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0
b3J5KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBkZWxldGVGaWxl
KGZ1bGxQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAg
ICAgfSB3aGlsZSAoc2VsZWN0UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpOwogICAgIAogICAg
IGV4ZWN1dGVTUUxDb21tYW5kKCJERUxFVEUgRlJPTSBEZWxldGVkQ2FjaGVSZXNvdXJjZXMiKTsK
QEAgLTE0OTQsMTIgKzE0OTQsMTIgQEAgbG9uZyBsb25nIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
OjpmbGF0RmlsZUFyZWFTaXplKCkKICAgICB9CiAKICAgICBsb25nIGxvbmcgdG90YWxTaXplID0g
MDsKLSAgICBTdHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9jYWNoZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgIFN0
cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CiAgICAg
d2hpbGUgKHNlbGVjdFBhdGhzLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFN0cmlu
ZyBwYXRoID0gc2VsZWN0UGF0aHMuZ2V0Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgU3RyaW5nIGZ1
bGxQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRo
KTsKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgbG9uZyBsb25nIHBh
dGhTaXplID0gMDsKLSAgICAgICAgaWYgKCFnZXRGaWxlU2l6ZShmdWxsUGF0aCwgcGF0aFNpemUp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6
ZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdG90YWxTaXplICs9IHBhdGhTaXpl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNhMzY5YmVjMzU4Li41OWVjMWM5MGM4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBh
Z2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hl
ZXQ7CiAKICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUp
KSB7CiAgICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMg
anVzdCBkZWxldGVkLCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYg
d2UndmUgcmVhZCB0aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0
aHJvdyBhd2F5IHRoYXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdz
IG9uIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4
YmM3YTM3Li42YWQ2MzExMGFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5j
cHAKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmICFQTEFURk9S
TShJT1MpCi0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgp
ICYmICFmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgp
KSkKKyAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIgJiYgdXJsLmlzTG9jYWxGaWxlKCkgJiYg
IUZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUobV9maWxlUGF0aCwgdXJsLmZpbGVTeXN0
ZW1QYXRoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IDkyM2ZmMzMwZDZjLi5hZGExZjQx
ZDIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApAQCAt
ODcsNyArODcsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZp
ZXIoKSBjb25zdAogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChwcm90b2NvbCk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJh
dG9yQ2hhcmFjdGVyKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlbmNvZGVGb3JGaWxlTmFt
ZShob3N0KSk7CisgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoRmlsZVN5c3RlbTo6ZW5jb2RlRm9y
RmlsZU5hbWUoaG9zdCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHNlcGFyYXRvckNoYXJh
Y3Rlcik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmROdW1iZXIocG9ydC52YWx1ZV9vcigwKSk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwCmluZGV4IDgwM2E4MjA5
YjJjLi4yYTBhNjM0YzZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAK
QEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlSGFuZGxlOjpG
aWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFu
ZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5N
b2RlIG1vZGUpCiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kZShtb2RlKQogewpAQCAt
NDIsNyArNDIsNyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwg
RmlsZU9wZW5Nb2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBv
dGhlcikKICAgICA6IG1fcGF0aChXVEZNb3ZlKG90aGVyLm1fcGF0aCkpCiAgICAgLCBtX21vZGUo
V1RGTW92ZShvdGhlci5tX21vZGUpKQotICAgICwgbV9maWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9maWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSkKKyAgICAsIG1f
ZmlsZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBG
aWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogICAg
IGNsb3NlKCk7CiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9k
ZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKLSAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAg
bV9maWxlSGFuZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAog
RmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxl
VmFsaWQobV9maWxlSGFuZGxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChtX2ZpbGVIYW5kbGUpOwogfQogCi1ib29sIEZpbGVIYW5kbGU6Om9wZW4oY29uc3QgU3RyaW5n
JiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBT
dHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGlmICgq
dGhpcyAmJiBwYXRoID09IG1fcGF0aCAmJiBtb2RlID09IG1fbW9kZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsK
ICAgICBpZiAoISp0aGlzKQotICAgICAgICBtX2ZpbGVIYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgs
IG1fbW9kZSk7CisgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
cGF0aCwgbV9tb2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQog
CkBAIC04NywxNCArODcsMTQgQEAgaW50IEZpbGVIYW5kbGU6OnJlYWQodm9pZCogZGF0YSwgaW50
IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJl
dHVybiByZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSks
IGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5k
bGUsIHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAogaW50IEZpbGVIYW5k
bGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVu
KCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFu
ZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25z
dCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbGVIYW5kbGU6
OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBGaWxlSGFuZGxlOjpjbG9z
ZSgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMzYyNDNkZTQwZC4uNTYzZmVkOTg5NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV0VCQ09SRV9FWFBPUlQgRmlsZUhhbmRsZSBmaW5hbCB7
CiBwdWJsaWM6CiAgICAgRmlsZUhhbmRsZSgpID0gZGVmYXVsdDsKLSAgICBGaWxlSGFuZGxlKGNv
bnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBGaWxlSGFuZGxlKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKICAgICBGaWxlSGFuZGxlKGNv
bnN0IEZpbGVIYW5kbGUmIG90aGVyKSA9IGRlbGV0ZTsKICAgICBGaWxlSGFuZGxlKEZpbGVIYW5k
bGUmJiBvdGhlcik7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogCi0gICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZU9wZW5Nb2RlKTsKKyAgICBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogICAgIGJvb2wgb3BlbigpOwogICAgIGludCByZWFkKHZv
aWQqIGRhdGEsIGludCBsZW5ndGgpOwogICAgIGludCB3cml0ZShjb25zdCB2b2lkKiBkYXRhLCBp
bnQgbGVuZ3RoKTsKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFN0
cmluZyBtX3BhdGg7Ci0gICAgRmlsZU9wZW5Nb2RlIG1fbW9kZSB7IE9wZW5Gb3JSZWFkIH07Ci0g
ICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGUgbV9tb2RlIHsgRmlsZVN5c3Rl
bTo6T3BlbkZvclJlYWQgfTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9m
aWxlSGFuZGxlIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmNwcAppbmRleCBiMThiMWMzZTk3ZC4uZjc0NWQ3YzFkYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTdHJlYW0uY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZpbGVTdHJlYW06OkZpbGVTdHJlYW0oKQotICAgIDogbV9oYW5kbGUoaW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKKyAgICA6IG1faGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgLCBtX2J5dGVzUHJvY2Vzc2VkKDApCiAgICAgLCBtX3RvdGFsQnl0
ZXNUb1JlYWQoMCkKIHsKQEAgLTUzLDE2ICs1MywxNiBAQCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6
Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bQogewogICAgIC8vIENoZWNrIHRoZSBtb2RpZmljYXRpb24gdGltZSBmb3IgdGhlIHBvc3NpYmxl
IGZpbGUgY2hhbmdlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghZ2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1l
KSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChpc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKSkgeworICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUo
ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8dGlt
ZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9IG1vZGlmaWNhdGlvblRpbWUpCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLy8gTm93IGdldCB0aGUgZmlsZSBzaXpl
LgogICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShwYXRoLCBsZW5n
dGgpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocGF0aCwgbGVuZ3RoKSkKICAg
ICAgICAgcmV0dXJuIC0xOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKQEAgLTcwLDE3ICs3MCwxNyBA
QCBsb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJs
ZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbQogCiBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkK
IHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8v
IE9wZW4gdGhlIGZpbGUuCi0gICAgbV9oYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yUmVh
ZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBtX2hhbmRsZSA9IEZp
bGVTeXN0ZW06Om9wZW5GaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBKdW1wIHRvIHRoZSBiZWdpbm5pbmcgcG9zaXRpb24gaWYgdGhlIGZp
bGUgaGFzIGJlZW4gc2xpY2VkLgogICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAgIGlmIChz
ZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBTZWVrRnJvbUJlZ2lubmluZykgPCAwKQorICAgICAg
ICBpZiAoRmlsZVN5c3RlbTo6c2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgRmlsZVN5c3RlbTo6
U2Vla0Zyb21CZWdpbm5pbmcpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTkyLDIyICs5MiwyMiBAQCBib29sIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbgogCiB2b2lkIEZp
bGVTdHJlYW06OmNsb3NlKCkKIHsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpIHsK
LSAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxlKTsKLSAgICAgICAgbV9oYW5kbGUgPSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlOworICAgIGlmIChGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1f
aGFuZGxlKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9oYW5kbGUpOworICAg
ICAgICBtX2hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAg
ICAgfQogfQogCiBpbnQgRmlsZVN0cmVhbTo6cmVhZChjaGFyKiBidWZmZXIsIGludCBidWZmZXJT
aXplKQogewotICAgIGlmICghaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjppc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbG9uZyBsb25nIHJlbWFpbmluZyA9IG1fdG90YWxCeXRlc1RvUmVhZCAtIG1fYnl0ZXNQcm9j
ZXNzZWQ7CiAgICAgaW50IGJ5dGVzVG9SZWFkID0gKHJlbWFpbmluZyA8IGJ1ZmZlclNpemUpID8g
c3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogYnVmZmVyU2l6ZTsKICAgICBpbnQgYnl0ZXNS
ZWFkID0gMDsKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiAwKQotICAgICAgICBieXRlc1JlYWQgPSBy
ZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNUb1JlYWQpOworICAgICAgICBieXRl
c1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUobV9oYW5kbGUsIGJ1ZmZlciwgYnl0ZXNU
b1JlYWQpOwogICAgIGlmIChieXRlc1JlYWQgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAg
aWYgKGJ5dGVzUmVhZCA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKaW5kZXgg
ZDQyMWU0ZjNiYzEuLjk2N2RlZGM3YmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIs
IGludCBsZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRs
ZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9u
ZyBsb25nIG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVh
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDdh
ZTM0Li5iODk0NzVlMDI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmls
ZVN5c3RlbSB7CisKIC8vIFRoZSBmb2xsb3dpbmcgbG93ZXItQVNDSUkgY2hhcmFjdGVycyBuZWVk
IGVzY2FwaW5nIHRvIGJlIHVzZWQgaW4gYSBmaWxlbmFtZQogLy8gYWNyb3NzIGFsbCBzeXN0ZW1z
LCBpbmNsdWRpbmcgV2luZG93czoKIC8vICAgICAtIFVucHJpbnRhYmxlIEFTQ0lJICgwMC0xRikK
QEAgLTM1OSw0ICszNjEsNSBAQCBib29sIGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBh
dGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3Mgc2hvdWxkRm9sbG93UwogICAgIHJldHVybiBt
ZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpEaXJlY3Rvcnk7CiB9
CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAppbmRleCAzMmM5M2U2NThiMy4uYTZjN2UzZWI3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTU2LDYgKzU2LDEwIEBA
IHR5cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RydWN0IEZpbGVNZXRhZGF0YTsKKworbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCiAvLyBQbGF0Zm9ybUZpbGVIYW5kbGUKICNpZiBVU0UoR0xJQikgJiYgIVBMQVRGT1JN
KFdJTikKIHR5cGVkZWYgR0ZpbGVJT1N0cmVhbSogUGxhdGZvcm1GaWxlSGFuZGxlOwpAQCAtOTIs
OCArOTYsNiBAQCBlbnVtIEZpbGVMb2NrTW9kZSB7CiAKIGVudW0gY2xhc3MgU2hvdWxkRm9sbG93
U3ltYm9saWNMaW5rcyB7IE5vLCBZZXMgfTsKIAotc3RydWN0IEZpbGVNZXRhZGF0YTsKLQogV0VC
Q09SRV9FWFBPUlQgYm9vbCBmaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBkZWxldGVGaWxlKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBk
ZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTIxMyw1ICsyMTUsNiBAQCBp
bmxpbmUgTWFwcGVkRmlsZURhdGEmIE1hcHBlZEZpbGVEYXRhOjpvcGVyYXRvcj0oTWFwcGVkRmls
ZURhdGEmJiBvdGhlcikKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZp
bGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggZTFmY2RjZWJkMWMuLjBkMzViMjEzYmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hh
cmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90
IHNpemUpCiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBz
aXplKTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBm
aWxlRGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURh
dGEpKX0pOwpAQCAtNjEsNyArNjEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0
b3I8Y2hhcj4mJiBkYXRhKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29s
IG1hcHBpbmdTdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQ
YXRoLCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGlu
Z1N1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5n
RmlsZShmaWxlUGF0aCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVm
ZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtd
KGNvbnN0IEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7
IH0sCiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAg
ICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcg
KzIyNyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QK
ICNpZiBVU0UoU09VUCkKICAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYg
ZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2Vu
ZGlmCi0gICAgICAgIFtdKGNvbnN0IE1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRh
LnNpemUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYg
ZGF0YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZp
c2l0KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCmluZGV4IGZkMjZmMjFjNmJkLi4zNGZmNzFjNjM4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAj
aWYgVVNFKFNPVVApCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHVW5p
cXVlUHRyPFNvdXBCdWZmZXI+JiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2Vn
bWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KICNlbmRpZgotICAgICAgICBzdGF0aWMgUmVmPERhdGFT
ZWdtZW50PiBjcmVhdGUoTWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQorICAgICAgICBzdGF0aWMgUmVmPERh
dGFTZWdtZW50PiBjcmVhdGUoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKSB7IHJl
dHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIERhdGFTZWdtZW50KEdVbmlxdWVQdHI8U291
cEJ1ZmZlcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSAgICAgICAgRGF0YVNlZ21lbnQoTWFwcGVkRmlsZURhdGEmJiBk
YXRhKQorICAgICAgICBEYXRhU2VnbWVudChGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmIGRh
dGEpCiAgICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0YShXVEZNb3ZlKGRhdGEpKSB7IH0KIAog
ICAgICAgICBWYXJpYW50PFZlY3RvcjxjaGFyPiwKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6
CiAjaWYgVVNFKFNPVVApCiAgICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAogI2Vu
ZGlmCi0gICAgICAgICAgICBNYXBwZWRGaWxlRGF0YT4gbV9pbW11dGFibGVEYXRhOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKICAgICB9OwogCkBAIC0xNTcsNyArMTU3LDcg
QEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoY29uc3QgY2hhciosIHNpemVf
dCk7CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IHVuc2lnbmVkIGNoYXIqLCBzaXpl
X3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJik7Ci0gICAgZXhw
bGljaXQgU2hhcmVkQnVmZmVyKE1hcHBlZEZpbGVEYXRhJiYpOworICAgIGV4cGxpY2l0IFNoYXJl
ZEJ1ZmZlcihGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYmKTsKICNpZiBVU0UoQ0YpCiAgICAg
ZXhwbGljaXQgU2hhcmVkQnVmZmVyKENGRGF0YVJlZik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDFmNjg0YjY1YzE0Li4wODQ3MGEw
OGZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1N0cmluZyBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQorQ1N0cmluZyBGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
QEAgLTU1LDEyICs1NSwxMiBAQCBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIHBhdGgpCiAgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyLmRhdGEoKSwgc3RybGVu
KGJ1ZmZlci5kYXRhKCkpKTsKIH0KIAotU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgY2hhciogZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQorU3RyaW5nIEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgY2hhciog
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKQogewogICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5n
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pKS5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENGVVJMUmVm
PiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQorUmV0YWluUHRyPENGVVJMUmVmPiBGaWxl
U3lzdGVtOjpwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIENGVVJMUGF0aFN0
eWxlIHBhdGhTdHlsZTsKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JDb2NvYS5tbQppbmRleCAzOTVkZjc3NzE5YS4uNTc4
NDM0ZDJkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0gICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSk7
CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJG
YWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAg
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1
ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW2hh
bmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRj
aF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2NkOWY4Li4yMDQz
OWY4NTExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5
c3RlbUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVTeXN0
ZW1Db2NvYS5tbQpAQCAtNDYsNiArNDYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25h
bWVzcGFjZSBGaWxlU3lzdGVtIHsKKwogU3RyaW5nIGhvbWVEaXJlY3RvcnlQYXRoKCkKIHsKICAg
ICByZXR1cm4gTlNIb21lRGlyZWN0b3J5KCk7CkBAIC0xMjgsNCArMTMwLDUgQEAgTlNTdHJpbmcg
KmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShOU1N0cmluZyAqZGlyZWN0b3J5UHJlZml4KQogICAg
IHJldHVybiBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHN0cmluZ1dpdGhGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb246cGF0aC5kYXRhKCkgbGVuZ3RoOmxlbmd0aF07CiB9CiAKK30gLy8g
bmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1vbml0b3JHTGliLmNwcAppbmRleCBkNmQ5ZWY3
YTVjYS4uOTQ5MjRlNjFkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZU1vbml0b3JHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVNb25pdG9yR0xpYi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgRmlsZU1vbml0b3I6OkZpbGVN
b25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUs
IFdURjoKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIW1vZGlmaWNhdGlvbkhhbmRsZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBhdXRv
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgbV9jYW5jZWxsYWJsZSA9IGFk
b3B0R1JlZihnX2NhbmNlbGxhYmxlX25ldygpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgbV9wbGF0Zm9ybU1vbml0b3IgPSBhZG9wdEdSZWYoZ19maWxlX21vbml0b3Io
ZmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfTk9ORSwgbV9jYW5jZWxsYWJsZS5nZXQoKSwgJmVy
cm9yLm91dFB0cigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCmluZGV4IDkzMmU4M2ZkOTRhLi45MTUwYTc0ZTAxMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTQwLDYgKzQw
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisK
IC8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmlu
Z3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5CiAgKiBhcmUgdmFsaWQgZmlsZSBu
YW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMt
aXMgaW4gYSBTdHJpbmcKICAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KQEAgLTQ5Niw0ICs0
OTgsNSBAQCBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIH0KICNl
bmRpZiAvLyBVU0UoRklMRV9MT0NLKQogCi19Cit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCBhZDczNDlkNmYzZC4uMzM1ZDg1ZDFiMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJHbGliLmNw
cApAQCAtMzMsMTIgKzMzLDEyIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlRnJvbVJlYWRpbmdGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgaWYgKGZp
bGVQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBDU3RyaW5n
IGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBDU3Ry
aW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQ
YXRoKTsKICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBjb250ZW50czsKICAgICBnc2l6ZSBzaXpl
OwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9nZXRf
Y29udGVudHMoZmlsZW5hbWUuZGF0YSgpLCAmY29udGVudHMub3V0UHRyKCksICZzaXplLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGZ1bGx5IHJlYWQg
Y29udGVudHMgb2YgZmlsZSAlcyAtICVzIiwgZmlsZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51
dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IHRvIGZ1bGx5IHJlYWQgY29udGVudHMgb2YgZmlsZSAlcyAtICVzIiwgRmlsZVN5c3RlbTo6Zmls
ZW5hbWVGb3JEaXNwbGF5KGZpbGVQYXRoKS51dGY4KCkuZGF0YSgpLCBlcnJvci0+bWVzc2FnZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29u
dGVudEtleVNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbQppbmRleCBjYTYz
M2EyZGE4Zi4uY2I4MGU4MjM2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tCkBAIC0zNjUsMTAgKzM2NSwxMCBA
QCBBVkNvbnRlbnRLZXlTZXNzaW9uKiBDRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbjo6Y29u
dGVudEtleVNlc3Npb24oKQogCiAgICAgICAgIG1fY29udGVudEtleVNlc3Npb24gPSBbZ2V0QVZD
b250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVudEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOmdl
dEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCldOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gZGlyZWN0b3J5TmFtZShzdG9yYWdlUGF0
aCk7CisgICAgICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGlyZWN0
b3J5TmFtZShzdG9yYWdlUGF0aCk7CiAKLSAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHN0b3JhZ2VE
aXJlY3RvcnkpKSB7Ci0gICAgICAgICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdl
RGlyZWN0b3J5KSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN0b3JhZ2VE
aXJlY3RvcnkpKSB7CisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhzdG9yYWdlRGlyZWN0b3J5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDZhOTg5YTVhMDJkLi4xMDdiMWJkZmY3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNvdXJjZUFW
Rk9iakM6OnN0b3JhZ2VQYXRoKCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFn
ZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCmluZGV4IGMwOTczZWZjMGQ4Li4zMmQzMDhjMDI2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291
cmNlQVZGT2JqQy5tbQpAQCAtOTI3LDEyICs5MjcsMTIgQEAgQVZTdHJlYW1TZXNzaW9uKiBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN0cmVhbVNlc3Npb24oKQogICAgICAg
ICBpZiAoc3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgewotICAgICAg
ICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9yeSkpCisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdG9yYWdlRGlyZWN0b3J5KSkgeworICAgICAg
ICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZURpcmVjdG9y
eSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgfQogCi0gICAgICAgIFN0
cmluZyBzdG9yYWdlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0
b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOworICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNl
Y3VyZVN0b3AucGxpc3QiKTsKICAgICAgICAgbV9zdHJlYW1TZXNzaW9uID0gYWRvcHROUyhbYWxs
b2NBVlN0cmVhbVNlc3Npb25JbnN0YW5jZSgpIGluaXRXaXRoU3RvcmFnZURpcmVjdG9yeUF0VVJM
OltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c3RvcmFnZVBhdGhdXSk7CiAgICAgfQogICAgIHJldHVy
biBtX3N0cmVhbVNlc3Npb24uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGZkOWE3NTkyMTdkLi4xMmM5MDFmMzhmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEzODgs
NyArMTM4OCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1
ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgZ19vYmplY3RfZ2V0KHBs
YXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRlbXAtbG9jYXRpb24iLCAmZG93bmxvYWRG
aWxlLm91dFB0cigpLCBudWxscHRyKTsKICAgICBwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIgPSBu
dWxscHRyOwogCi0gICAgaWYgKFVOTElLRUxZKCFkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQo
KSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2Fk
RmlsZS5nZXQoKSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVk
aWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQwNSw4ICsxNDA1LDggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlT2xkRG93bmxvYWRGaWxlcyhjb25zdCBjaGFy
KiBkb3dubG9hZEZpbGUKICAgICBHVW5pcXVlUHRyPGNoYXI+IHRlbXBsYXRlRmlsZShnX3BhdGhf
Z2V0X2Jhc2VuYW1lKGRvd25sb2FkRmlsZVRlbXBsYXRlKSk7CiAgICAgU3RyaW5nIHRlbXBsYXRl
UGF0dGVybiA9IFN0cmluZyh0ZW1wbGF0ZUZpbGUuZ2V0KCkpLnJlcGxhY2UoIlgiLCAiPyIpOwog
Ci0gICAgZm9yIChhdXRvJiBmaWxlUGF0aCA6IGxpc3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdl
dCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZGVsZXRlRmls
ZShmaWxlUGF0aCkpKSB7CisgICAgZm9yIChhdXRvJiBmaWxlUGF0aCA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkodGVtcGxhdGVQYXRoLmdldCgpLCB0ZW1wbGF0ZVBhdHRlcm4pKSB7CisgICAg
ICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCkpKSB7CiAg
ICAgICAgICAgICBHU1RfV0FSTklORygiQ291bGRuJ3QgdW5saW5rIGxlZ2FjeSBtZWRpYSB0ZW1w
b3JhcnkgZmlsZTogJXMiLCBmaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vRElCUGl4ZWxEYXRhLmgKaW5kZXggNjVhZDIyNzg3MDQuLjRjM2U4MDE4ZDU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxE
YXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVs
RGF0YS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoSEJJ
VE1BUCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCB3cml0ZVRvRmlsZShMUENXU1RSKTsK
KyAgICB2b2lkIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKExQQ1dTVFIpOwogI2VuZGlmCiAKICAg
ICBVSW50OCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXBCdWZmZXI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE0NWY3NTdjZGY5Li5kM2Rm
OGVlZWZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCkBAIC0x
MzUsNyArMTM1LDcgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqdGVtcG9yYXJ5RGlyZWN0b3J5QXR0
cmlidXRlcygpCiAKIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlGaWxlRm9yUXVpY2tMb29rKE5T
U3RyaW5nICpmaWxlTmFtZSkKIHsKLSAgICBOU1N0cmluZyAqZG93bmxvYWREaXJlY3RvcnkgPSBj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJRdWlja0xvb2tDb250ZW50Iik7CisgICAgTlNTdHJp
bmcgKmRvd25sb2FkRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAiUXVpY2tMb29rQ29udGVudCIpOwogICAgIGlmICghZG93bmxvYWREaXJlY3RvcnkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggNWNkZjRkODgxYTQuLmIz
NDMxNjhlZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtNTE2LDcgKzUxNiw3IEBAIHN0YXRpYyBO
U1VSTCAqbGlua1RlbXBvcmFyeUl0ZW1Qcm92aWRlckZpbGVzVG9Ecm9wU3RhZ2luZ0RpcmVjdG9y
eShOU1VSTCAqdXJsLCBOCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29yZTo6
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7
CisgICAgTlNTdHJpbmcgKnRlbXBvcmFyeURhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeSA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShkYXRhSW50ZXJhY3Rpb25E
aXJlY3RvcnlQcmVmaXgpOwogICAgIGlmICghdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0
b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvRmlsZVN5c3RlbU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9GaWxlU3lzdGVtTWFjLm1tCmluZGV4IDhmMTQzMTY1ODE4Li42NDBkZmMxMmI2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KQEAgLTM0LDcgKzM0
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5T
KFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwogCkBAIC00NSwxMCArNDUsMTAgQEAgYm9v
bCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgfQogCiAgICAg
Ly8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0
aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1p
c3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhcm1kaXIoZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgcmV0dXJuICFybWRpcihGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIH0KIAotdm9pZCBz
ZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit2b2lkIEZpbGVTeXN0ZW06OnNldE1l
dGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwog
ICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0
cmluZywgbmlsKSkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgUwog
ICAgIH0pOwogfQogCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK2Jvb2wgRmlsZVN5c3Rl
bTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6
ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIC8vIEl0IGlzIGNy
aXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcg
YnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhj
bHVkZWQocGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7IAorICAgIENTQmFja3Vw
U2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwg
RkFMU0UpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYzg5
YjUyODNlMzkuLjZhNWYxMmU4NGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICAsIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkK
ICNlbmRpZgogICAgICwgbV9zaXplKDApCi0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZShpbnZhbGlkRmlsZVRpbWUoKSkKKyAgICAsIG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKEZp
bGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKQogewogfQogCkBAIC00Niw3ICs0Niw3IEBAIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSgpCiB7CiAjaWYgRU5B
QkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgaWYgKCFtX3JlcGxhY2VtZW50UGF0aC5pc051bGwo
KSkKLSAgICAgICAgZGVsZXRlRmlsZShtX3JlcGxhY2VtZW50UGF0aCk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTc5
LDcgKzc5LDcgQEAgZG91YmxlIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6ZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKCkKICAgICAvLyBXZSBkbyBub3QgY3VycmVudGx5IHRyYWNrIG1vZGlmaWNhdGlv
bnMgZm9yIGdlbmVyYXRlZCBmaWxlcywgYmVjYXVzZSB3ZSBoYXZlIGEgc25hcHNob3QuCiAgICAg
Ly8gVW5mb3J0dW5hdGVseSwgdGhpcyBpcyBpbmNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIGZpbGUg
aGFuZGxpbmcgLSBGaWxlIG9iamVjdHMgc2hvdWxkIGJlIGludmFsaWRhdGVkIHdoZW4gdW5kZXJs
eWluZyBmaWxlcyBjaGFuZ2UuCiAgICAgaWYgKG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRl
ZCB8fCAhbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBpbnZhbGlk
RmlsZVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgp
OwogI2VuZGlmCiAKICAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7CkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpzdGFydFRyYWNraW5nTW9k
aWZpY2F0aW9ucygpCiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBTb21lIHBsYXRmb3JtcyBwcm92
aWRlIGJldHRlciB3YXlzIHRvIGxpc3RlbiBmb3IgZmlsZSBzeXN0ZW0gb2JqZWN0IGNoYW5nZXMs
IGNvbnNpZGVyIHVzaW5nIHRoZXNlLgotICAgIGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFG
b2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOworICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVt
OjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3BhdGgpOwogICAgIGlmICghbWV0YWRh
dGEpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKaW5kZXggMGYwMTk3NGNhMmIuLjE5N2ViMjky
ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdp
c3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJl
Z2lzdHJ5SW1wbC5jcHAKQEAgLTI4MywxNCArMjgzLDE0IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1w
bDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzCiAKICAgICAgICAgYXV0byBwZXJmb3JtV3JpdGluZyA9IFtibG9ic0ZvcldyaXRpbmcgPSBX
VEZNb3ZlKGJsb2JzRm9yV3JpdGluZyksICZmaWxlUGF0aHNdKCkgewogICAgICAgICAgICAgZm9y
IChhdXRvJiBibG9iIDogYmxvYnNGb3JXcml0aW5nKSB7Ci0gICAgICAgICAgICAgICAgUGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGU7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHRlbXBGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKEFTQ0lJTGl0ZXJhbCgiQmxvYiIpLCBmaWxlKTsKKyAgICAgICAg
ICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgdGVtcEZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUo
QVNDSUlMaXRlcmFsKCJCbG9iIiksIGZpbGUpOwogCiAgICAgICAgICAgICAgICAgYXV0byBmaWxl
Q2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtmaWxlXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgICAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShmaWxlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhaXNIYW5k
bGVWYWxpZChmaWxlKSkgeworICAgICAgICAgICAgICAgIGlmICh0ZW1wRmlsZVBhdGguaXNFbXB0
eSgpIHx8ICFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgZm9yIHdyaXRp
bmcgYSBCbG9iIHRvIEluZGV4ZWREQiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjk4LDEzICsyOTgsMTMgQEAgdm9pZCBCbG9iUmVn
aXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlVSTHMKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHBhcnQgOiBibG9iLmZpbGVQ
YXRoc09yRGF0YUJ1ZmZlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQuc2Vjb25k
LmRhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCA9IHBhcnQuc2Vj
b25kLmRhdGEoKS0+c2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdyaXRlVG9G
aWxlKGZpbGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEo
KS0+ZGF0YSgpKSwgbGVuZ3RoKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihwYXJ0LnNlY29uZC5kYXRhKCktPmRhdGEoKSksIGxlbmd0aCkgIT0gbGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgd3JpdGluZyBh
IEJsb2IgdG8gdGVtcG9yYXJ5IGZpbGUgZm9yIHN0b3JhZ2UgaW4gSW5kZXhlZERCIik7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFwYXJ0LmZpcnN0LmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0LCBmaWxl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjphcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUocGFydC5maXJzdCwgZmlsZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVudHMgdG8g
YSBCbG9iIHRlbXBvcmFyeSBmaWxlIGZvciBzdG9yYWdlIGluIEluZGV4ZWREQiAoJXMgdG8gJXMp
IiwgcGFydC5maXJzdC51dGY4KCkuZGF0YSgpLCB0ZW1wRmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmNwcAppbmRleCBjNTc1ZmRhNDUyYS4uNzI0NDIzZWVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdWludDY0
X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgaWYgKG1f
ZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgcmV0
dXJuIG1fZmlsZUxlbmd0aDsKICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAgICBp
ZiAoZ2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1l
IDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Rmls
ZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9maWxl
bmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZpbGVTaXplOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5k
RGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkK
IHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAsIEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0
ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUs
IDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGlt
ZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6Om51
bGxvcHQ7CiB9CiAKQEAgLTQwOCw5ICs0MDgsOSBAQCB2b2lkIEZvcm1EYXRhOjpyZW1vdmVHZW5l
cmF0ZWRGaWxlc0lmTmVlZGVkKCkKICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1E
YXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUgJiYgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRG
aWxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZS5p
c0VtcHR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZp
bGUpOwotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoZWxlbWVu
dC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZWxlbWVudC5t
X2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGRp
cmVjdG9yeSk7CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZGly
ZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKICAgICAg
ICAgICAgIGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOwogICAgICAgICAg
ICAgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1D
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3Ry
ZWFtQ0ZOZXQuY3BwCmluZGV4IDkzODM4MjQ0YTdjLi5hMTQ0ZDM1MjUzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBzdGF0aWMgYm9vbCBhZHZhbmNlQ3VycmVu
dFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAgICBmb3JtLT5jdXJyZW50RGF0
YSA9IFdURk1vdmUoZGF0YSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gQ2hlY2sgaWYgdGhl
IGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYgcmVxdWlyZWQuCi0gICAgICAgIGlmIChp
c1ZhbGlkRmlsZVRpbWUobmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkp
IHsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShuZXh0SW5wdXQubV9l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkgewogICAgICAgICAgICAgdGltZV90IGZpbGVN
b2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShuZXh0SW5wdXQubV9maWxlbmFtZSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpIHx8IGZpbGVNb2Rp
ZmljYXRpb25UaW1lICE9IHN0YXRpY19jYXN0PHRpbWVfdD4obmV4dElucHV0Lm1fZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lKG5leHRJbnB1dC5tX2ZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9u
VGltZSkgfHwgZmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gc3RhdGljX2Nhc3Q8dGltZV90PihuZXh0
SW5wdXQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgU3RyaW5nJiBwYXRoID0gbmV4
dElucHV0Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gbmV4dElucHV0Lm1fZ2VuZXJhdGVkRmlsZW5h
bWUgOiBuZXh0SW5wdXQubV9maWxlbmFtZTsKLSAgICAgICAgZm9ybS0+Y3VycmVudFN0cmVhbSA9
IENGUmVhZFN0cmVhbUNyZWF0ZVdpdGhGaWxlKDAsIHBhdGhBc1VSTChwYXRoKS5nZXQoKSk7Cisg
ICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgw
LCBGaWxlU3lzdGVtOjpwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOwogICAgICAgICBpZiAoIWZvcm0t
PmN1cnJlbnRTdHJlYW0pIHsKICAgICAgICAgICAgIC8vIFRoZSBmaWxlIG11c3QgaGF2ZSBiZWVu
IHJlbW92ZWQgb3IgYmVjb21lIHVucmVhZGFibGUuCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zNzksNyArMzc5LDcgQEAgUmV0YWluUHRyPENGUmVhZFN0cmVhbVJlZj4gY3JlYXRlSFRU
UEJvZHlDRlJlYWRTdHJlYW0oRm9ybURhdGEmIGZvcm1EYXRhKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwot
ICAgICAgICAgICAgaWYgKGdldEZpbGVTaXplKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0ZUZpbGUg
PyBlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUgOiBlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVT
aXplKSkKKyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1f
c2hvdWxkR2VuZXJhdGVGaWxlID8gZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogZWxlbWVu
dC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZSkpCiAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IGZpbGVT
aXplOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggYzc1
NzVkN2FhODEuLjYyYzExYzEyNzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIx
Miw5ICsyMTIsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVl
c3QoKQogCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMDEyMDApCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAg
YXV0byBmc1JlcEZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3Rl
bVBhdGgoKSk7CisgICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwogICAgICAgICBpZiAoIWZz
UmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gZ2V0Rmls
ZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxl
U3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKICAgICAgICAgICAgIGlmIChmaWxl
RGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0
IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1
ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCBlZDU5MDI2NTFiMi4uMDM1YTZiMTkwNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDdXJs
Q2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFu
ZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVuYW1l
KGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZW5hbWUoY2FjaGVEaXIpCi0gICAgLCBtX2Nv
bnRlbnRGaWxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBtX2NvbnRlbnRGaWxl
KEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6
ZSgwKQogICAgICwgbV9leHBpcmVEYXRlKC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2Up
CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmlzTG9hZGluZygpIGNvbnN0
CiAvLyBDYWNoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQog
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6aXNDYWNoZWQoKQogewotICAgIGlmICghZmlsZUV4aXN0cyht
X2NvbnRlbnRGaWxlbmFtZSkgfHwgIWZpbGVFeGlzdHMobV9oZWFkZXJGaWxlbmFtZSkpCisgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY29udGVudEZpbGVuYW1lKSB8fCAhRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhtX2hlYWRlckZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgaWYgKCFtX2hlYWRlclBhcnNlZCkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBz
aXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBcHBlbmQKLSAgICB3cml0ZVRv
RmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMTI1LDggKzEyNSw4IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJl
c291cmNlSGFuZGxlKiBqb2IpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhl
YWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUGxhdGZvcm1G
aWxlSGFuZGxlIGhlYWRlckZpbGUgPSBvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9y
V3JpdGUpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoZWFkZXJGaWxlKSkgeworICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAo
IUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGVhZGVyRmlsZSkpIHsKICAgICAgICAgTE9HKE5l
dHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2hl
YWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CkBAIC0xNDAsMTIgKzE0MCwxMiBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9u
c2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBoZWFk
ZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJc
biIpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0
aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4x
LmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRl
ckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQ
SGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAK
LSAgICBjbG9zZUZpbGUoaGVhZGVyRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhl
YWRlckZpbGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMjcsMTYgKzIyNywxNiBAQCB2
b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1
cmwpCiBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYg
ZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIC8vIE9wZW4gdGhlIGZpbGUK
LSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gb3BlbkZpbGUoZmlsZXBhdGgsIE9w
ZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgeworICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5
c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAi
Q2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgbG9uZyBs
b25nIGZpbGVzaXplID0gLTE7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNp
emUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNp
emUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQg
ZmlsZSBzaXplIG9mICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICBj
bG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0
RmlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI0OSwyNCArMjQ5LDI0
IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBm
aWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBidWZmCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZl
clBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9
IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZy
b21GaWxlKGlucHV0RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJS
ZWFkU2l6ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShp
bnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUp
OwogICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJlYWRTaXplKSB7CiAgICAgICAgICAg
ICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgcmVhZCBmcm9tICVzXG4iLCBm
aWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgY2xvc2VGaWxlKGlucHV0Rmls
ZSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGJ1ZmZlclBvc2l0aW9u
ICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0KLSAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50
RmlsZSgpOwotICAgIGRlbGV0ZUZpbGUobV9oZWFkZXJGaWxlbmFtZSk7Ci0gICAgZGVsZXRlRmls
ZShtX2NvbnRlbnRGaWxlbmFtZSk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2hlYWRl
ckZpbGVuYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fY29udGVudEZpbGVuYW1l
KTsKICAgICBMT0coTmV0d29yaywgIkNhY2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9iYXNlbmFt
ZS5sYXRpbjEoKS5kYXRhKCkpOwogfQogCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDdXJsQ2Fj
aGVFbnRyeTo6cGFyc2VSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiAgICAgZG91YmxlIGZpbGVUaW1lOwogICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9u
RGF0ZTsKIAotICAgIGlmIChnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX2hlYWRlckZpbGVuYW1l
LCBmaWxlTW9kaWZpY2F0aW9uRGF0ZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKG1faGVhZGVyRmlsZW5hbWUsIGZpbGVNb2RpZmljYXRpb25EYXRlKSkKICAg
ICAgICAgZmlsZVRpbWUgPSBkaWZmdGltZShmaWxlTW9kaWZpY2F0aW9uRGF0ZSwgMCkgKiAxMDAw
LjA7CiAgICAgZWxzZQogICAgICAgICBmaWxlVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsgLy8gR01U
CkBAIC0zNDIsMTEgKzM0MiwxMSBAQCBzaXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgp
CiAgICAgICAgIGxvbmcgbG9uZyBoZWFkZXJGaWxlU2l6ZTsKICAgICAgICAgbG9uZyBsb25nIGNv
bnRlbnRGaWxlU2l6ZTsKIAotICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5h
bWUsIGhlYWRlckZpbGVTaXplKSkgeworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVT
aXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkgewogICAgICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIs
IG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBt
X2VudHJ5U2l6ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVu
dEZpbGVuYW1lLCBjb250ZW50RmlsZVNpemUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
Z2V0RmlsZVNpemUobV9jb250ZW50RmlsZW5hbWUsIGNvbnRlbnRGaWxlU2l6ZSkpIHsKICAgICAg
ICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXpl
IG9mICVzXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIG1fZW50cnlTaXplOwogICAgICAgICB9CkBAIC0zNjAsMTIgKzM2MCwxMiBAQCBz
aXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6
Om9wZW5Db250ZW50RmlsZSgpCiB7Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQobV9jb250ZW50Rmls
ZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIG1fY29udGVudEZpbGUgPSBvcGVuRmlsZSht
X2NvbnRlbnRGaWxlbmFtZSwgT3BlbkZvcldyaXRlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUobV9jb250ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JX
cml0ZSk7CiAKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKKyAgICBpZiAo
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCiAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9w
ZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwpA
QCAtMzc0LDExICszNzQsMTEgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6b3BlbkNvbnRlbnRGaWxl
KCkKIAogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6Y2xvc2VDb250ZW50RmlsZSgpCiB7Ci0gICAgaWYg
KCFpc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBj
bG9zZUZpbGUobV9jb250ZW50RmlsZSk7Ci0gICAgbV9jb250ZW50RmlsZSA9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fY29udGVudEZpbGUp
OworICAgIG1fY29udGVudEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmluZGV4IDkyZDZiYzMzYTRhLi44
MWNiYzcxMzliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9oZWFkZXJGaWxlbmFtZTsKICAgICBTdHJpbmcgbV9jb250ZW50RmlsZW5hbWU7CiAK
LSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250ZW50RmlsZTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9jb250ZW50RmlsZTsKIAogICAgIHNpemVfdCBtX2VudHJ5U2l6
ZTsKICAgICBkb3VibGUgbV9leHBpcmVEYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDM1YmZl
MmVmMmMyLi40NmUxN2U5ZmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtNzYsOCArNzYsOCBA
QCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
ZGlyZWN0b3J5KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFmaWxlRXhpc3Rz
KG1fY2FjaGVEaXIpKSB7Ci0gICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVE
aXIpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVEaXIpKSB7Cisg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXIpKSB7
CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qgb3BlbiBv
ciBjcmVhdGUgY2FjaGUgZGlyZWN0b3J5ISBDYWNoZU1hbmFnZXIgZGlzYWJsZWQuXG4iKTsKICAg
ICAgICAgICAgIG1fZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAz
LDE0ICsxMDMsMTQgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgIFN0
cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBwZW5k
KCJpbmRleC5kYXQiKTsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBvcGVu
RmlsZShpbmRleEZpbGVQYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlk
KGluZGV4RmlsZSkpIHsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhG
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6T3Bl
bkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbmRleEZpbGUp
KSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgV2FybmluZzogQ291bGQgbm90IG9wZW4g
JXMgZm9yIHJlYWRcbiIsIGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGxvbmcgbG9uZyBmaWxlc2l6ZSA9IC0xOwotICAgIGlmICgh
Z2V0RmlsZVNpemUoaW5kZXhGaWxlUGF0aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpnZXRGaWxlU2l6ZShpbmRleEZpbGVQYXRoLCBmaWxlc2l6ZSkpIHsKICAgICAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIs
IGluZGV4RmlsZVBhdGgubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEyNCwxMCArMTI0LDEwIEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KCkK
ICAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkK
ICAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXplID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsK
IAotICAgICAgICByZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVy
UG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6cmVhZEZyb21G
aWxlKGluZGV4RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFk
U2l6ZSk7CiAgICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0K
LSAgICBjbG9zZUZpbGUoaW5kZXhGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5k
ZXhGaWxlKTsKIAogICAgIC8vIENyZWF0ZSBzdHJpbmdzIGZyb20gYnVmZmVyCiAgICAgU3RyaW5n
IGhlYWRlckNvbnRlbnQgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CkBA
IC0xNjQsOSArMTY0LDkgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAg
IFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwogICAgIGluZGV4RmlsZVBhdGguYXBw
ZW5kKCJpbmRleC5kYXQiKTsKIAotICAgIGRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7Ci0gICAg
UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9w
ZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKKyAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZp
bGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChpbmRleEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUg
RXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0ZVxuIiwgaW5kZXhGaWxlUGF0aC5sYXRp
bjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc1LDEyICsxNzUsMTIg
QEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGNvbnN0IGF1dG8mIGVu
ZCA9IG1fTFJVRW50cnlMaXN0LmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAg
ICAgY29uc3QgQ1N0cmluZyYgdXJsTGF0aW4xID0gaXQtPmxhdGluMSgpOwotICAgICAgICB3cml0
ZVRvRmlsZShpbmRleEZpbGUsIHVybExhdGluMS5kYXRhKCksIHVybExhdGluMS5sZW5ndGgoKSk7
Ci0gICAgICAgIHdyaXRlVG9GaWxlKGluZGV4RmlsZSwgIlxuIiwgMSk7CisgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGluZGV4RmlsZSwgdXJsTGF0aW4xLmRhdGEoKSwgdXJsTGF0aW4x
Lmxlbmd0aCgpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCAi
XG4iLCAxKTsKICAgICAgICAgKytpdDsKICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaW5kZXhGaWxl
KTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5kZXhGaWxlKTsKIH0KIAogdm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjptYWtlUm9vbUZvck5ld0VudHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggODUwNDdm
ZGM2Y2UuLmFlMmJmZDY4ZTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQg
Q3VybERvd25sb2FkOjpjdXJsRGlkQ29tcGxldGUoKQogCiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9u
LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9jdXJsUmVxdWVzdCAmJiAhbV9jdXJsUmVxdWVz
dC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgbW92ZUZp
bGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24p
OworICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24pOwogICAgIH0KIAogICAgIGlmIChtX2xp
c3RlbmVyKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkRmFp
bFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAobV9kZWxldGVzRmlsZVVwb25GYWlsdXJlICYmIG1fY3VybFJlcXVl
c3QgJiYgIW1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRGaWxlUGF0aCgpLmlzRW1wdHkoKSkK
LSAgICAgICAgZGVsZXRlRmlsZShtX2N1cmxSZXF1ZXN0LT5nZXREb3dubG9hZGVkRmlsZVBhdGgo
KSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93
bmxvYWRlZEZpbGVQYXRoKCkpOwogCiAgICAgaWYgKG1fbGlzdGVuZXIpCiAgICAgICAgIG1fbGlz
dGVuZXItPmRpZEZhaWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJlZTM0N2Y0NzY1Li45N2NhMzJlYTg1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwCkBAIC00NDgsNyArNDQ4LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBGb3Jt
RGF0YShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgaXNQb3N0UmVxdWVzdCkKICAgICBm
b3IgKGF1dG8gZWxlbWVudCA6IGVsZW1lbnRzKSB7CiAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlw
ZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlKSB7CiAgICAgICAgICAgICBs
b25nIGxvbmcgZmlsZVNpemVSZXN1bHQ7Ci0gICAgICAgICAgICBpZiAoZ2V0RmlsZVNpemUoZWxl
bWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZVJlc3VsdCkpIHsKKyAgICAgICAgICAgIGlmIChGaWxl
U3lzdGVtOjpnZXRGaWxlU2l6ZShlbGVtZW50Lm1fZmlsZW5hbWUsIGZpbGVTaXplUmVzdWx0KSkg
ewogICAgICAgICAgICAgICAgIGlmIChmaWxlU2l6ZVJlc3VsdCA+IG1heEN1cmxPZmZUKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgc2l6ZSBpcyB0b28gYmlnIGZvciBzcGVjaWZ5aW5n
IGl0IHRvIGNVUkwKICAgICAgICAgICAgICAgICAgICAgY2h1bmtlZFRyYW5zZmVyID0gdHJ1ZTsK
QEAgLTYxOSwyMiArNjE5LDIyIEBAIHZvaWQgQ3VybFJlcXVlc3Q6OndyaXRlRGF0YVRvRG93bmxv
YWRGaWxlSWZFbmFibGVkKGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGlmIChtX2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0eSgpKQotICAg
ICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2Fk
IiwgbV9kb3dubG9hZEZpbGVIYW5kbGUpOworICAgICAgICAgICAgbV9kb3dubG9hZEZpbGVQYXRo
ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoImRvd25sb2FkIiwgbV9kb3dubG9hZEZp
bGVIYW5kbGUpOwogICAgIH0KIAotICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmls
ZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgaWYgKG1fZG93bmxv
YWRGaWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZG93bmxvYWRGaWxlSGFuZGxlLCBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIH0KIAogdm9pZCBDdXJsUmVxdWVzdDo6Y2xvc2VE
b3dubG9hZEZpbGUoKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7
CiAKLSAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKKyAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY2xvc2VGaWxlKG1f
ZG93bmxvYWRGaWxlSGFuZGxlKTsKLSAgICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRG
aWxlSGFuZGxlKTsKKyAgICBtX2Rvd25sb2FkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBEb3du
bG9hZEZpbGUoKQpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNsZWFudXBE
b3dubG9hZEZpbGUoKQogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZG93bmxvYWRNdXRleCk7CiAK
ICAgICBpZiAoIW1fZG93bmxvYWRGaWxlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZGVsZXRl
RmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fZG93bmxvYWRGaWxlUGF0aCk7CiAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IFN0cmlu
ZygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0LmgKaW5kZXggMjViMWU5NjczNWUuLmE2N2ZmNzFmNTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaApA
QCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX2Rvd25sb2FkTXV0ZXg7CiAg
ICAgYm9vbCBtX2lzRW5hYmxlZERvd25sb2FkVG9GaWxlIHsgZmFsc2UgfTsKICAgICBTdHJpbmcg
bV9kb3dubG9hZEZpbGVQYXRoOwotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmls
ZUhhbmRsZSB7IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGVIYW5kbGUgeyBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiAKICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3
b3JrTG9hZE1ldHJpY3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCBlY2RiZjExYTVi
Mi4uMWNmZmUzODNlZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJp
bmcmIGhvc3QsIGNvbnN0IFN0cmluZyYKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgaWYgKGZpbGVFeGlzdHMoY2VydGlmaWNhdGUpKQorICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGNlcnRpZmljYXRlKSkKICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigp
LnNzbEhhbmRsZSgpLnNldENsaWVudENlcnRpZmljYXRlSW5mbyhob3N0LCBjZXJ0aWZpY2F0ZSwg
a2V5KTsKICAgICBlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSW52YWxpZCBjbGllbnQgY2Vy
dGlmaWNhdGUgZmlsZTogJXMhXG4iLCBjZXJ0aWZpY2F0ZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVhYWQyM2E1YzI2Li5mY2Y1NWQ3NmVhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQpAQCAtODAsNyArODAsNyBAQCB2b2lkIEJs
b2JEYXRhRmlsZVJlZmVyZW5jZTo6Z2VuZXJhdGVSZXBsYWNlbWVudEZpbGUoKQogCiAgICAgbV9y
ZXBsYWNlbWVudFNob3VsZEJlR2VuZXJhdGVkID0gZmFsc2U7CiAgICAgaWYgKCFtX3JlcGxhY2Vt
ZW50UGF0aC5pc051bGwoKSkgewotICAgICAgICBpZiAoYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRh
ZGF0YUZvbGxvd2luZ1N5bWxpbmtzKG1fcmVwbGFjZW1lbnRQYXRoKSkKKyAgICAgICAgaWYgKGF1
dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyht
X3JlcGxhY2VtZW50UGF0aCkpCiAgICAgICAgICAgICBtX3NpemUgPSBtZXRhZGF0YS52YWx1ZSgp
Lmxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCA2NDU3ODYxNWMx
ZS4uMjI2YWVlOWYwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTQxLDExICs0MSwx
MSBAQCBzdGF0aWMgdWludDY0X3QgYXBwZW5kRW5jb2RlZEJsb2JJdGVtVG9Tb3VwTWVzc2FnZUJv
ZHkoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLAogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBi
bG9iSXRlbS5kYXRhKCkuZGF0YSgpLT5kYXRhKCkgKyBibG9iSXRlbS5vZmZzZXQoKSwgYmxvYkl0
ZW0ubGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4gYmxvYkl0ZW0ubGVuZ3RoKCk7CiAgICAgY2Fz
ZSBCbG9iRGF0YUl0ZW06OlR5cGU6OkZpbGU6IHsKLSAgICAgICAgaWYgKCFpc1ZhbGlkRmlsZVRp
bWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1lKGJsb2JJdGVtLmZpbGUoKS0+ZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
dGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBmaWxlTW9kaWZpY2F0aW9uVGltZSkK
KyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRl
bS5maWxlKCktPnBhdGgoKSwgZmlsZU1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgICAgICB8fCBm
aWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGJsb2JJdGVtLmZpbGUo
KS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZDVhNzQyNjdjY2MuLjc5NWQ3ZGJjYThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtT
ZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291
cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBzdHJpbmdJc051bWVyaWMoY29uc3QgY2hhciogc3RyKQogLy8gT2xkIHZlcnNpb25zIG9mIFdl
YktpdCBjcmVhdGVkIHRoaXMgY2FjaGUuCiB2b2lkIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJP
bGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVjdG9yeSkKIHsKLSAgICBDU3RyaW5n
IGNhY2hlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeSk7Cisg
ICAgQ1N0cmluZyBjYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY2FjaGVEaXJlY3RvcnkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2FjaGVGaWxlKGdfYnVp
bGRfZmlsZW5hbWUoY2FjaGVQYXRoLmRhdGEoKSwgInNvdXAuY2FjaGUyIiwgbnVsbHB0cikpOwog
ICAgIGlmICghZ19maWxlX3Rlc3QoY2FjaGVGaWxlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdV
TEFSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZGU5YTRhNmNlZGMuLmM2NzJkNzQxNDM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVgu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5j
cHAKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2Ug
RmlsZVN5c3RlbSB7CisKIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAg
ICAgaWYgKHBhdGguaXNOdWxsKCkpCkBAIC00NDUsNCArNDQ3LDUgQEAgc3RkOjpvcHRpb25hbDxp
bnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVy
biBmaWxlU3RhdC5zdF9kZXY7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bv
c2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4
L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcAppbmRleCBhMDAxYWJlOGRjMC4uNTEzMzc1ZDI0NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lY
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJ
WC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVy
OjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAgICBpZiAo
ZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIENTdHJp
bmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIENT
dHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmls
ZVBhdGgpOwogICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUuZGF0YSgpLCBPX1JET05MWSk7CiAg
ICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA4NDE5ZDc2Yzhh
NS4uNmIyYWY1NDUyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRmlsZVN5c3RlbS5jcHAKQEAgLTQ4LDE5ICs0OCwxOSBAQCBTUUxpdGVGaWxlU3lzdGVtOjpT
UUxpdGVGaWxlU3lzdGVtKCkKIAogaW50IFNRTGl0ZUZpbGVTeXN0ZW06Om9wZW5EYXRhYmFzZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzcWxpdGUzKiogZGF0YWJhc2UsIGJvb2wpCiB7Ci0gICAg
cmV0dXJuIHNxbGl0ZTNfb3Blbl92MihmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CisgICAgcmV0dXJuIHNxbGl0
ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9PUEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NS
RUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9YWSwgbnVsbHB0cik7CiB9CiAKIFN0cmluZyBTUUxp
dGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1lKTsKIH0KIAogYm9vbCBTUUxpdGVG
aWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgpOwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06
OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNo
ZWNrUGF0aE9ubHkpCkBAIC02OSwxNiArNjksMTYgQEAgYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpl
bnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBjaGUK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGNoZWNrUGF0aE9ubHkpIHsKLSAgICAg
ICAgU3RyaW5nIGRpciA9IGRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpOworICAgICAgICBTdHJpbmcg
ZGlyID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSk7CiAgICAgICAgIHJldHVy
biBlbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4aXN0cyhkaXIpOwogICAgIH0KIAotICAgIHJldHVy
biBmaWxlRXhpc3RzKGZpbGVOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmaWxlTmFtZSk7CiB9CiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRh
YmFzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgcmV0dXJuIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURp
cmVjdG9yeShwYXRoKTsKIH0KIAogYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFz
ZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKQEAgLTg3LDEyICs4NywxMiBAQCBib29sIFNR
TGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KQogICAgIFN0cmluZyBzaG1GaWxlTmFtZSA9IG1ha2VTdHJpbmcoZmlsZU5hbWUsIEFTQ0lJTGl0
ZXJhbCgiLXNobSIpKTsKIAogICAgIC8vIFRyeSB0byBkZWxldGUgYWxsIHRocmVlIGZpbGVzIHdo
ZXRoZXIgb3Igbm90IHRoZXkgYXJlIHRoZXJlLgotICAgIGRlbGV0ZUZpbGUoZmlsZU5hbWUpOwot
ICAgIGRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOwotICAgIGRlbGV0ZUZpbGUoc2htRmlsZU5hbWUp
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2ht
RmlsZU5hbWUpOwogCiAgICAgLy8gSWYgYW55IG9mIHRoZSB3YWwgb3Igc2htIGZpbGVzIHJlbWFp
biBhZnRlciB0aGUgZGVsZXRlIGF0dGVtcHQsIHRoZSBvdmVyYWxsIGRlbGV0ZSBvcGVyYXRpb24g
ZmFpbGVkLgotICAgIHJldHVybiAhZmlsZUV4aXN0cyhmaWxlTmFtZSkgJiYgIWZpbGVFeGlzdHMo
d2FsRmlsZU5hbWUpICYmICFmaWxlRXhpc3RzKHNobUZpbGVOYW1lKTsKKyAgICByZXR1cm4gIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZU5hbWUpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KHdhbEZpbGVOYW1lKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSk7CiB9
CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0xMDUsMTkgKzEwNSwxOSBAQCBib29sIFNRTGl0ZUZp
bGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKQogbG9uZyBs
b25nIFNRTGl0ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKIHsgICAgICAgIAogICAgIGxvbmcgbG9uZyBzaXplOwotICAgIHJldHVybiBnZXRG
aWxlU2l6ZShmaWxlTmFtZSwgc2l6ZSkgPyBzaXplIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNpemUpID8gc2l6ZSA6IDA7CiB9CiAKIGRvdWJsZSBT
UUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlQ3JlYXRpb25UaW1l
KGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRG
aWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOwogfQogCiBkb3VibGUg
U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiB7CiAgICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4
IDc2ZjkyNGVhYmIyLi5jOTA4NjkzMDE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAt
NTMsNyArNTMsNyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZp
bGVQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgLy8gRGljdGlvbmFyeSBmaWxl
cyBhbHdheXMgaGF2ZSB0aGUgZm9ybSAiaHlwaF88bG9jYWxlIG5hbWU+LmRpYyIKICAgICAvLyBz
byB3ZSBzdHJpcCBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgbG9jYWxlLgotICAgIFN0cmluZyBmaWxl
TmFtZSA9IHBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCk7CisgICAgU3RyaW5nIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKTsKICAgICBzdGF0aWMgY29uc3Qg
aW50IHByZWZpeExlbmd0aCA9IDU7CiAgICAgc3RhdGljIGNvbnN0IGludCBzdWZmaXhMZW5ndGgg
PSA0OwogICAgIHJldHVybiBmaWxlTmFtZS5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBmaWxlTmFt
ZS5sZW5ndGgoKSAtIHByZWZpeExlbmd0aCAtIHN1ZmZpeExlbmd0aCk7CkBAIC02MSwxNCArNjEs
MTQgQEAgc3RhdGljIFN0cmluZyBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlUGF0aChj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogCiBzdGF0aWMgdm9pZCBzY2FuRGlyZWN0b3J5Rm9yRGlj
dGlvbmFyaWVzKGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgsIEhhc2hNYXA8QXRvbWljU3RyaW5n
LCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBm
aWxlUGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgImh5cGhfKi5kaWMiKSkgewor
ICAgIGZvciAoYXV0byYgZmlsZVBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVj
dG9yeVBhdGgsICJoeXBoXyouZGljIikpIHsKICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGV4dHJh
Y3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVQYXRoKGZpbGVQYXRoKS5jb252ZXJ0VG9BU0NJSUxv
d2VyY2FzZSgpOwogCiAgICAgICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAg
ICAgICBpZiAoIXJlYWxwYXRoKGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCkuZGF0
YSgpLCBub3JtYWxpemVkUGF0aCkpCisgICAgICAgIGlmICghcmVhbHBhdGgoRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGZpbGVQYXRoID0gc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3JtYWxpemVkUGF0aCk7CisgICAgICAgIGZpbGVQ
YXRoID0gRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3Jt
YWxpemVkUGF0aCk7CiAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSwgVmVjdG9y
PFN0cmluZz4oKSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChmaWxlUGF0aCk7CiAKICAgICAgICAg
U3RyaW5nIGxvY2FsZVJlcGxhY2luZ1VuZGVyc2NvcmVzID0gU3RyaW5nKGxvY2FsZSk7CkBAIC0y
MjQsNyArMjI0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxXZWJDb3JlOjpIeXBo
ZW5hdGlvbkRpY3Rpb25hcnk+IGNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYg
ZGljdGlvbmFyeVBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRp
b25EaWN0aW9uYXJ5OjpjcmVhdGUoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRp
Y3Rpb25hcnlQYXRoLnN0cmluZygpKSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5h
dGlvbkRpY3Rpb25hcnk6OmNyZWF0ZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGljdGlvbmFyeVBhdGguc3RyaW5nKCkpKTsKICAgICB9CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggZjBjMzUw
Mjk4NjQuLmJkYWU0YmZjMTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCiBzdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNv
bmRzRnJvbUZpbGVUaW1lVG9UaW1ldCA9IDExNjQ0NDczNjAwOwogCiBzdGF0aWMgYm9vbCBnZXRG
aW5kRGF0YShTdHJpbmcgcGF0aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCkBAIC01NDMs
NCArNTQ1LDUgQEAgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
Q1N0cmluZyYgZnNGaWxlKQogICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdWb2x1bWVTZXJp
YWxOdW1iZXI7CiB9CiAKK30gLy8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmlu
ZGV4IDM3MDFjZGQ4YTAzLi4zYzZmNTZlMTk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBAIC0yMDA5LDcgKzIwMDksNyBAQCBTdHJpbmcgUmVuZGVy
VGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwg
Y29uc3QgRm9udAogCiAgICAgU3RyaW5nIHN0cmluZzsKICAgICBpZiAoZmlsZUxpc3QtPmxlbmd0
aCgpKQotICAgICAgICBzdHJpbmcgPSBwYXRoR2V0RmlsZU5hbWUoZmlsZUxpc3QtPml0ZW0oMCkt
PnBhdGgoKSk7CisgICAgICAgIHN0cmluZyA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShm
aWxlTGlzdC0+aXRlbSgwKS0+cGF0aCgpKTsKICAgICBlbHNlIGlmIChtdWx0aXBsZUZpbGVzQWxs
b3dlZCkKICAgICAgICAgc3RyaW5nID0gZmlsZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7
CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAK
aW5kZXggYWEzNzBjMzNmYTMuLmU1MWEyNGUyOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIENvbG9yIFJlbmRl
clRoZW1lV2luOjpzeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGNzc1ZhbHVlSWQpIGNvbnN0CiAjaWYg
RU5BQkxFKFZJREVPKQogc3RhdGljIGNvbnN0IHNpemVfdCBtYXhpbXVtUmVhc29uYWJsZUJ1ZmZl
clNpemUgPSAzMjc2ODsKIAotc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmls
ZShQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8Y2hh
cj4mIGJ1ZmZlcikKK3N0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9uZyBmaWxlc2l6ZSwgVmVj
dG9yPGNoYXI+JiBidWZmZXIpCiB7CiAgICAgLy8gTG9hZCB0aGUgZmlsZSBjb250ZW50IGludG8g
YnVmZmVyCiAgICAgYnVmZmVyLnJlc2l6ZShmaWxlc2l6ZSArIDEpOwpAQCAtMTAzNiw3ICsxMDM2
LDcgQEAgc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZSwgbG9uZyBsb25nIGZpbGUKICAgICAgICAgaWYgKGZpbGVzaXplIC0gYnVm
ZmVyUG9zaXRpb24gPCBidWZmZXJSZWFkU2l6ZSkKICAgICAgICAgICAgIGJ1ZmZlclJlYWRTaXpl
ID0gZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbjsKIAotICAgICAgICBieXRlc1JlYWQgPSByZWFk
RnJvbUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFk
U2l6ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxl
LCBidWZmZXIuZGF0YSgpICsgYnVmZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKICAgICAg
ICAgaWYgKGJ5dGVzUmVhZCAhPSBidWZmZXJSZWFkU2l6ZSkgewogICAgICAgICAgICAgYnVmZmVy
LmNsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDU4LDE5ICsxMDU4LDE5IEBAIFN0
cmluZyBSZW5kZXJUaGVtZVdpbjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKENGU3RyaW5nUmVm
IG5hbWUsIENGU3RyaW5nUmVmIHR5CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihyZXF1ZXN0ZWRVUkxSZWYuZ2V0KCksIGZhbHNlLCByZXF1ZXN0ZWRGaWxlUGF0aCwg
TUFYX1BBVEgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBQbGF0Zm9ybUZpbGVI
YW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IG9wZW5GaWxlKHJlcXVlc3RlZEZpbGVQYXRoLCBP
cGVuRm9yUmVhZCk7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUp
KQorICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocmVxdWVzdGVkRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9w
ZW5Gb3JSZWFkKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQocmVxdWVzdGVk
RmlsZUhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGxvbmcgbG9uZyBm
aWxlc2l6ZSA9IC0xOwotICAgIGlmICghZ2V0RmlsZVNpemUocmVxdWVzdGVkRmlsZUhhbmRsZSwg
ZmlsZXNpemUpKSB7Ci0gICAgICAgIGNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5kbGUsIGZpbGVz
aXplKSkgeworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRs
ZSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKICAgICBWZWN0b3I8Y2hhcj4g
ZmlsZUNvbnRlbnRzOwogICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUocmVxdWVzdGVk
RmlsZUhhbmRsZSwgZmlsZXNpemUsIGZpbGVDb250ZW50cyk7Ci0gICAgY2xvc2VGaWxlKHJlcXVl
c3RlZEZpbGVIYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxl
SGFuZGxlKTsKIAogICAgIHJldHVybiBTdHJpbmcoZmlsZUNvbnRlbnRzLmRhdGEoKSwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihmaWxlc2l6ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmNjdiMDU5N2UxMy4uZmNl
MDNmZmNlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTctMTAtMzEgIENocmlzdG9w
aGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0
ZW0gbmFtZXNwYWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93
bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9i
RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0
aWNzLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJl
TWFuYWdlci5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2Fw
dHVyZU1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVjb3JkZXIuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3Jr
UHJvY2Vzc1NvdXAuY3BwOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5N
b2R1bGVVbml4LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJj
aFBhdGguY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmNwcDoKKyAgICAg
ICAgKiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oOgorICAgICAgICAqIFNoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvaW9zL0NoaWxkUHJv
Y2Vzc0lPUy5tbToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAg
ICAgICAgKiBTaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW06CisgICAgICAgICogU2hh
cmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwOgorICAgICAgICAqIFN0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRSdWxlTGlzdFN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJ
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZp
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0
ZURhdGFNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NQb29sR3RrLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9Jbmpl
Y3RlZEJ1bmRsZUdsaWIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJN
ZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisKIDIwMTct
MTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdIEZpeCBidWlsZCB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKaW5k
ZXggYzZmZjE1YTNiYjguLjY1NDg2MGQ0N2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAK
QEAgLTU2LDE2ICs1NiwxNiBAQCB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkRGVjaWRlRG93
bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUAogewogICAgIEFTU0VS
VCghZGVzdGluYXRpb25QYXRoLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoZmlsZUV4aXN0cyhkZXN0
aW5hdGlvblBhdGgpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRp
b25QYXRoKSkgewogICAgICAgICBpZiAoIWFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgICAgICBk
aWRGYWlsKG51bGxwdHIsIGNhbmNlbGxlZEVycm9yKG1fZG93bmxvYWQucmVxdWVzdCgpKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZGVsZXRlRmlsZShkZXN0aW5h
dGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRlc3RpbmF0aW9uUGF0
aCk7CiAgICAgfQogCiAgICAgbV9kZXN0aW5hdGlvblBhdGggPSBkZXN0aW5hdGlvblBhdGg7Ci0g
ICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBvcGVuRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCwgT3BlbkZv
cldyaXRlKTsKKyAgICBtX2Rlc3RpbmF0aW9uRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1f
ZGVzdGluYXRpb25QYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIG1fZG93bmxv
YWQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9kZXN0aW5hdGlvblBhdGgpOwogCiAgICAgbV9kb3du
bG9hZC5jb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpOwpAQCAtNzMsMzAgKzczLDMwIEBAIHZv
aWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKGNvbnN0
IFN0cmluZyYgZGVzdGluYXRpb25QCiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGlu
dCkKIHsKLSAgICB3cml0ZVRvRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rlc3RpbmF0
aW9uRmlsZSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICBtX2Rvd25sb2Fk
LmRpZFJlY2VpdmVEYXRhKGJ1ZmZlci0+c2l6ZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRD
bGllbnQ6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqKQogewotICAgIGNsb3NlRmls
ZShtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZGVzdGlu
YXRpb25GaWxlKTsKICAgICBtX2Rvd25sb2FkLmRpZEZpbmlzaCgpOwogfQogCiB2b2lkIEJsb2JE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKCkKIHsKLSAgICBjbG9zZUZpbGUobV9kZXN0aW5hdGlv
bkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CiAg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRlbGV0ZUZpbGUo
bV9kZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZGVz
dGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVy
ZW5jZSgpKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoUmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBjbG9zZUZpbGUobV9k
ZXN0aW5hdGlvbkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9u
RmlsZSk7CiAgICAgaWYgKCFtX2Rlc3RpbmF0aW9uUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9kZXN0aW5hdGlvblBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuZGlkRmFpbChlcnJvciwg
SVBDOjpEYXRhUmVmZXJlbmNlKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaAppbmRleCA0YTQy
Y2MyY2E3Ny4uZjk0MDYxMWIzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oCkBAIC01Myw3ICs1
Myw3IEBAIHByaXZhdGU6CiAKICAgICBEb3dubG9hZCYgbV9kb3dubG9hZDsKICAgICBTdHJpbmcg
bV9kZXN0aW5hdGlvblBhdGg7Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVz
dGluYXRpb25GaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rlc3RpbmF0aW9uRmls
ZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Rh
dGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCmluZGV4IDc4ZTVhNDE2NWJjLi42ZGE1M2YzZTFiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBA
IC00MTIsNyArNDEyLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogICAgIG1fdG90YWxSZW1haW5pbmdTaXpl
IC09IGJ5dGVzUmVhZDsKIAogICAgIGlmIChieXRlc1JlYWQpIHsKLSAgICAgICAgaWYgKG1fZG93
bmxvYWRGaWxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgaWYgKG1f
ZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsK
ICAgICAgICAgICAgIGlmICghd3JpdGVEb3dubG9hZChkYXRhLCBieXRlc1JlYWQpKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ0OCw4ICs0NDgsOCBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbgogICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAg
ICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogCi0gICAgaWYgKGFsbG93T3Zlcndy
aXRlICYmIGZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CisgICAgaWYgKGFsbG93T3Zlcndy
aXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikp
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlv
bik7CiB9CiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgp
IGNvbnN0CkBAIC00NjcsOCArNDY3LDggQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3du
bG9hZCgpCiAKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Js
b2I6OmRvd25sb2FkIHRvICVzIiwgdGhpcywgbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4
KCkuZGF0YSgpKTsKIAotICAgIG1fZG93bmxvYWRGaWxlID0gb3BlbkZpbGUobV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbiwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgRmlsZVN5c3RlbTo6T3Bl
bkZvcldyaXRlKTsKKyAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVk
RXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OCw3
ICs0ODgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIGJvb2wgTmV0
d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVEb3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0
ZXNSZWFkKQogewogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGludCBieXRlc1dyaXR0
ZW4gPSB3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBp
bnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUs
IGRhdGEsIGJ5dGVzUmVhZCk7CiAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAg
ICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNTAzLDExICs1MDMsMTEgQEAgYm9vbCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAK
IHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBp
ZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewotICAgICAg
ICBjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUpOwotICAgICAgICBtX2Rvd25sb2FkRmlsZSA9IGlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlKTsKKyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogICAgIH0KLSAgICBkZWxldGVGaWxl
KG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZGlkRmFpbERvd25sb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNTM2LDgg
KzUzNiw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQoKQog
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmlu
aXNoRG93bmxvYWQiLCB0aGlzKTsKIAogICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGNs
b3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7Ci0gICAgbV9kb3dubG9hZEZpbGUgPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmls
ZSk7CisgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwogCiAgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBtX3NhbmRi
b3hFeHRlbnNpb24tPnJldm9rZSgpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZGlkRmFpbChFcnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlkRmluaXNoKCkKIHsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgIGRpZEZpbmlzaERvd25s
b2FkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCmluZGV4IDUxOTM1OTQ0OTU1Li45MjY2
ZWRlYzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmgKQEAgLTExMyw3ICsxMTMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fc2l6ZUl0ZW1Db3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX3JlYWRJdGVtQ291bnQgeyAw
IH07CiAgICAgYm9vbCBtX2ZpbGVPcGVuZWQgeyBmYWxzZSB9OwotICAgIFdlYkNvcmU6OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZSB7IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUgfTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
bV9kb3dubG9hZEZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+IG1fZmlsZVJlZmVyZW5jZXM7CiAgICAgUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+IG1f
c2FuZGJveEV4dGVuc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKaW5kZXggMmZkOGVmZjEzNTEuLjZlNWNkZjc2Zjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjAxLDcg
KzYwMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldENhY2hlTW9kZWwodWludDMyX3QgY20p
CiAgICAgdW5zaWduZWQgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3Qg
dXJsQ2FjaGVEaXNrQ2FwYWNpdHkgPSAwOwogICAgIHVpbnQ2NF90IGRpc2tGcmVlU2l6ZSA9IDA7
Ci0gICAgaWYgKFdlYkNvcmU6OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9y
eSwgZGlza0ZyZWVTaXplKSkgeworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRWb2x1
bWVGcmVlU3BhY2UobV9kaXNrQ2FjaGVEaXJlY3RvcnksIGRpc2tGcmVlU2l6ZSkpIHsKICAgICAg
ICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2YgMTAyNCwgaW4gY2Fz
ZSB0aGUgcmVwb3J0ZWQgYnl0ZQogICAgICAgICAvLyBjb3VudCBkb2Vzbid0IGFsaWduIGV4YWN0
bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KICAgICAgICAgZGlza0ZyZWVTaXplIC89IEtCICog
MTAwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2Fj
aGVTdG9yYWdlRW5naW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcAppbmRleCBmODE3MzYyZGFlNS4uNjc5NDkzNTAzOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdl
RW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVz
Um9vdFBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBLZXkga2V5KG9yaWdpbiwgeyB9LCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25I
YXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkp
OwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjA1LDkgKzIwNSw5IEBAIHZvaWQgRW5naW5l
Ojppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2Fs
bGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2FsdFBhdGggPSBX
ZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlMaXRlcmFs
KCJzYWx0IikpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7
CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUo
c2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9y
aWVzKG1fcm9vdFBhdGgpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIHNhbHQgPSByZWFk
T3JNYWtlU2FsdChzYWx0UGF0aCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXNhbHQpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhFcnJvcjo6V3JpdGVEaXNrKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmVt
b3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgp
IG11dGFibGUgewotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9
CiAKQEAgLTM4Miw4ICszODIsOCBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hv
dWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAog
ICAgIGF1dG8gdGFza0NvdW50ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdl
YkNvcmU6Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAoIVdl
YkNvcmU6OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpTaG91bGRGb2xsb3dT
eW1ib2xpY0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlm
ICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9y
eShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCld
IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11
dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQxNSw4
ICs0MTUsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dyZWdhdG9y
JiB0YXNrSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRj
aChbcGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIHRhc2tIYW5kbGVyID0gbWFrZVJl
Zih0YXNrSGFuZGxlcildIHsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6
Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OmZp
bGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
czo6Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAgICBpZiAoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRl
RGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVu
Z2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hl
U3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggYzhlZjZmMDdhMTAuLmU4NDMxNWUzZmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFn
ZUVuZ2luZUNhY2hlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCkBAIC00MiwxOCArNDIsMTggQEAgbmFtZXNw
YWNlIENhY2hlU3RvcmFnZSB7CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc0xpc3RGaWxl
bmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgi
Y2FjaGVzbGlzdCIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNhY2hlc2xpc3Qi
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIGNhY2hlc09yaWdpbkZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgY2FjaGVzUm9vdFBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJvcmlnaW4iKSk7CiB9CiAKIHZvaWQgQ2Fj
aGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBmb2xkZXJQYXRo
LCBXb3JrUXVldWUmIHF1ZXVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIHF1ZXVlLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBmb2xkZXJQYXRoID0gZm9sZGVyUGF0aC5pc29sYXRlZENvcHkoKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RG
aWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGNhY2hlc0xpc3RGaWxlbmFtZShmb2xkZXJQYXRoKSkpIHsKICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOwogICAgICAgICAgICAgfSk7CkBAIC0zMzMsNyArMzMz
LDcgQEAgdm9pZCBDYWNoZXM6OnJlYWRDYWNoZXNGcm9tRGlzayhXVEY6OkZ1bmN0aW9uPHZvaWQo
RXhwZWN0ZWQ8VmVjdG9yPENhY2hlPiwgRXJyb3IKICAgICB9CiAKICAgICBhdXRvIGZpbGVuYW1l
ID0gY2FjaGVzTGlzdEZpbGVuYW1lKG1fcm9vdFBhdGgpOwotICAgIGlmICghV2ViQ29yZTo6Zmls
ZUV4aXN0cyhmaWxlbmFtZSkpIHsKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoZmlsZW5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrKFZlY3RvcjxDYWNoZT4geyB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAppbmRleCA1NzA0Zjg1Njc0NC4uMTk1YzIzZjVh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBDYWNoZTo6Q2FjaGUoUmVmPFN0b3JhZ2U+
JiYgc3RvcmFnZSwgT3B0aW9uU2V0PE9wdGlvbj4gb3B0aW9ucykKICNlbmRpZgogI2lmIFBMQVRG
T1JNKEdUSykKICAgICAgICAgLy8gVHJpZ2dlcnMgd2l0aCAidG91Y2ggJGNhY2hlUGF0aC9kdW1w
Ii4KLSAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+
YmFzZVBhdGgoKSwgImR1bXAiKSk7CisgICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRoKCksICJk
dW1wIikpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkdW1wRmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl9wYXRoKGR1bXBGaWxlUGF0aC5kYXRhKCkpKTsKICAgICAgICAgR0ZpbGVNb25p
dG9yKiBtb25pdG9yID0gZ19maWxlX21vbml0b3JfZmlsZShkdW1wRmlsZS5nZXQoKSwgR19GSUxF
X01PTklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChtb25pdG9yLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZHVtcEZpbGVDaGFuZ2Vk
KSwgdGhpcyk7CkBAIC01MzcsMTYgKzUzNywxNiBAQCB2b2lkIENhY2hlOjp0cmF2ZXJzZShGdW5j
dGlvbjx2b2lkIChjb25zdCBUcmF2ZXJzYWxFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKIAog
U3RyaW5nIENhY2hlOjpkdW1wRmlsZVBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT52ZXJzaW9uUGF0aCgpLCAiZHVt
cC5qc29uIik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsKIH0KIAog
dm9pZCBDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKIHsKLSAgICBhdXRvIGZkID0gV2ViQ29y
ZTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7Ci0gICAg
aWYgKCFXZWJDb3JlOjppc0hhbmRsZVZhbGlkKGZkKSkKKyAgICBhdXRvIGZkID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6b3BlbkZpbGUoZHVtcEZpbGVQYXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06
Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjppc0hhbmRsZVZh
bGlkKGZkKSkKICAgICAgICAgcmV0dXJuOwogICAgIGF1dG8gcHJvbG9ndWUgPSBTdHJpbmcoIntc
blwiZW50cmllc1wiOiBbXG4iKS51dGY4KCk7Ci0gICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQs
IHByb2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOworICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZkLCBwcm9sb2d1ZS5kYXRhKCksIHByb2xvZ3VlLmxlbmd0aCgp
KTsKIAogICAgIHN0cnVjdCBUb3RhbHMgewogICAgICAgICB1bnNpZ25lZCBjb3VudCB7IDAgfTsK
QEAgLTU3NSw4ICs1NzUsOCBAQCB2b2lkIENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAg
ICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgiXG4iKTsKICAgICAgICAgICAgIGVwaWxv
Z3VlLmFwcGVuZExpdGVyYWwoIn1cbn1cbiIpOwogICAgICAgICAgICAgYXV0byB3cml0ZURhdGEg
PSBlcGlsb2d1ZS50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgICAgIFdlYkNvcmU6OndyaXRl
VG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOwotICAgICAg
ICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKGZkKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3Ro
KCkpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZkKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGVudHJ5ID0gRW50cnk6
OmRlY29kZVN0b3JhZ2VSZWNvcmQoKnJlY29yZCk7CkBAIC01OTAsMTQgKzU5MCwxNCBAQCB2b2lk
IENhY2hlOjpkdW1wQ29udGVudHNUb0ZpbGUoKQogICAgICAgICBlbnRyeS0+YXNKU09OKGpzb24s
IGluZm8pOwogICAgICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgICAgICBhdXRv
IHdyaXRlRGF0YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7Ci0gICAgICAgIFdlYkNvcmU6Ondy
aXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3RoKCkpOworICAg
ICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmZCwgd3JpdGVEYXRhLmRhdGEo
KSwgd3JpdGVEYXRhLmxlbmd0aCgpKTsKICAgICB9KTsKIH0KIAogdm9pZCBDYWNoZTo6ZGVsZXRl
RHVtcEZpbGUoKQogewogICAgIFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LkNh
Y2hlLmRlbGV0ZSIpLT5kaXNwYXRjaChbcGF0aCA9IGR1bXBGaWxlUGF0aCgpLmlzb2xhdGVkQ29w
eSgpXSB7Ci0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCk7CisgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggZjZiMzY0ZmE5ZWQuLjE2MzVmMjNjZTZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JT
dG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUJsb2JTdG9yYWdlLmNwcApAQCAtNTMsMTUgKzUzLDE1IEBAIHZvaWQgQmxvYlN0b3Jh
Z2U6OnN5bmNocm9uaXplKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBh
dGgoKSk7CiAKICAgICBtX2FwcHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0
b3J5ID0gYmxvYkRpcmVjdG9yeVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGly
ZWN0b3J5LCBbdGhpcywgJmJsb2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0
b3J5RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlU
eXBlOjpGaWxlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAg
ICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CisgICAgICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
ICAgICAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEo
KSwgJnN0YXQpOwogICAgICAgICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAg
LTc3LDcgKzc3LDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJs
b2JTdG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25z
dAogewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAg
IHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBh
dGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRo
KCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpC
bG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRh
KQpAQCAtODgsOCArODgsOCBAQCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGgg
PSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gp
KTsKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpOworICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQ
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
OwogICAgIHVubGluayhsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0g
YWNjZXNzKGJsb2JQYXRoLmRhdGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMTksNyArMTE5LDcgQEAg
QmxvYlN0b3JhZ2U6OkJsb2IgQmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0g
V2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1Bh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CiAgICAgYXV0byBkYXRhID0gbWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJu
IHsgZGF0YSwgY29tcHV0ZVNIQTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgQmxvYlN0b3JhZ2U6OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5s
aW5rKGxpbmtQYXRoLmRhdGEoKSk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB1bnNpZ25lZCBC
bG9iU3RvcmFnZTo6c2hhcmVDb3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0
IHN0YXQgc3RhdDsKICAgICBpZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcAppbmRleCA4YWM3OTdmNzhhMC4uN2JiNjQ5
MmE2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVEYXRhLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyBTYWx0IG1h
a2VTYWx0KCkKIAogc3RkOjpvcHRpb25hbDxTYWx0PiByZWFkT3JNYWtlU2FsdChjb25zdCBTdHJp
bmcmIHBhdGgpCiB7Ci0gICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKTsKKyAgICBhdXRvIGNwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIGF1dG8gZmQgPSBvcGVuKGNwYXRoLmRh
dGEoKSwgT19SRE9OTFksIDApOwogICAgIFNhbHQgc2FsdDsKICAgICBhdXRvIGJ5dGVzUmVhZCA9
IHJlYWQoZmQsIHNhbHQuZGF0YSgpLCBzYWx0LnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVt
LmNwcAppbmRleCA4MmQ3MzU1MTg5Ni4uZWU2ZDE0ZTU3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lz
dGVtLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgRGlyZWN0b3J5RW50cnlUeXBlIGRpcmVj
dG9yeUVudHJ5VHlwZSh1aW50OF90IGR0eXBlKQogCiB2b2lkIHRyYXZlcnNlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgRGly
ZWN0b3J5RW50cnlUeXBlKT4mIGZ1bmN0aW9uKQogewotICAgIERJUiogZGlyID0gb3BlbmRpcihX
ZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBESVIq
IGRpciA9IG9wZW5kaXIoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKCFkaXIpCiAgICAgICAgIHJldHVybjsKICAgICBk
aXJlbnQqIGRwOwpAQCAtODQsMTAgKzg0LDEwIEBAIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBECiB2
b2lkIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICB0cmF2ZXJzZURpcmVjdG9yeShwYXRoLCBbJnBhdGhdKGNvbnN0IFN0cmluZyYgbmFtZSwgRGly
ZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKLSAgICAgICAgU3RyaW5nIGVudHJ5UGF0aCA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBuYW1lKTsKKyAgICAgICAgU3RyaW5n
IGVudHJ5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChwYXRoLCBuYW1lKTsKICAgICAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgRGly
ZWN0b3J5RW50cnlUeXBlOjpGaWxlOgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShl
bnRyeVBhdGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRGlyZWN0b3J5RW50
cnlUeXBlOjpEaXJlY3Rvcnk6CiAgICAgICAgICAgICBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVs
eShlbnRyeVBhdGgpOwpAQCAtOTUsMTkgKzk1LDE5IEBAIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgZm9s
bG93IHN5bWxpbmtzLgogICAgICAgICB9CiAgICAgfSk7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkocGF0aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3RvcnkocGF0aCk7CiB9CiAKIEZpbGVUaW1lcyBmaWxlVGltZXMoY29uc3QgU3RyaW5nJiBw
YXRoKQogewogI2lmIEhBVkUoU1RBVF9CSVJUSFRJTUUpCiAgICAgc3RydWN0IHN0YXQgZmlsZUlu
Zm87Ci0gICAgaWYgKHN0YXQoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgp
LmRhdGEoKSwgJmZpbGVJbmZvKSkKKyAgICBpZiAoc3RhdChXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQogICAgICAg
ICByZXR1cm4geyB9OwogICAgIHJldHVybiB7IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZy
b21fdGltZV90KGZpbGVJbmZvLnN0X2JpcnRodGltZSksIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OmZyb21fdGltZV90KGZpbGVJbmZvLnN0X210aW1lKSB9OwogI2VsaWYgVVNFKFNPVVApCiAg
ICAgLy8gVGhlcmUncyBubyBzdF9iaXJ0aHRpbWUgaW4gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBs
aWtlIExpbnV4LCBzbyB3ZSB1c2UgeGF0dHJzIHRvIHNldC9nZXQgdGhlIGNyZWF0aW9uIHRpbWUu
Ci0gICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRo
KFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKKyAgICBH
UmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOwog
ICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlf
aW5mbyhmaWxlLmdldCgpLCAieGF0dHI6OmJpcnRodGltZSx0aW1lOjptb2RpZmllZCIsIEdfRklM
RV9RVUVSWV9JTkZPX05PTkUsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZv
KQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgdXBkYXRlRmls
ZU1vZGlmaWNhdGlvblRpbWVJZk5lZWRlZChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIC8vIFRoaXMgcmVhbGx5IHVwZGF0ZXMgYm90aCB0aGUgYWNj
ZXNzIHRpbWUgYW5kIHRoZSBtb2RpZmljYXRpb24gdGltZS4KLSAgICB1dGltZXMoV2ViQ29yZTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CisgICAgdXRp
bWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5k
YXRhKCksIG51bGxwdHIpOwogfQogCiBib29sIGNhblVzZVNoYXJlZE1lbW9yeUZvclBhdGgoY29u
c3QgU3RyaW5nJiBwYXRoKQpAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgY2FuVXNlU2hhcmVkTWVt
b3J5Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgYXR0cmxpc3QgYXR0ckxpc3QgPSB7
IH07CiAgICAgYXR0ckxpc3QuYml0bWFwY291bnQgPSBBVFRSX0JJVF9NQVBfQ09VTlQ7CiAgICAg
YXR0ckxpc3QuY29tbW9uYXR0ciA9IEFUVFJfQ01OX0RBVEFfUFJPVEVDVF9GTEFHUzsKLSAgICBp
bnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0dHJCdWZm
ZXIpLCBGU09QVF9OT0ZPTExPVyk7CisgICAgaW50MzJfdCBlcnJvciA9IGdldGF0dHJsaXN0KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCks
ICZhdHRyTGlzdCwgJmF0dHJCdWZmZXIsIHNpemVvZihhdHRyQnVmZmVyKSwgRlNPUFRfTk9GT0xM
T1cpOwogICAgIGlmIChlcnJvcikgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3Jr
LCAiVW5hYmxlIHRvIGdldCBjYWNoZSBkaXJlY3RvcnkgcHJvdGVjdGlvbiBjbGFzcywgZGlzYWJs
aW5nIHVzZSBvZiBzaGFyZWQgbWFwcGVkIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQppbmRleCBlZmQ3Nzk5ZGEyZi4uNzZiMTRl
MzM0OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEsNyBA
QCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUp
CiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRv
IHBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAg
IGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmaWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAgIGJvb2wg
dXNlTG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAK
aW5kZXggMDE2MTIwODBjNzkuLjRjZTc3NjJiOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVs
U291cC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgSU9DaGFubmVsOjpJT0NoYW5uZWwoY29uc3QgU3Ry
aW5nJiBmaWxlUGF0aCwgVHlwZSB0eXBlKQogICAgIDogbV9wYXRoKGZpbGVQYXRoKQogICAgICwg
bV90eXBlKHR5cGUpCiB7Ci0gICAgYXV0byBwYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVQYXRoKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwogICAgIEdSZWZQdHI8R0ZpbGU+
IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChwYXRoLmRhdGEoKSkpOwogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgY2FzZSBUeXBlOjpDcmVhdGU6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwCmluZGV4IDY5MzM0MTdmZDhjLi5iNGY2MjYyZGM0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0YXRpc3RpY3MuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxTdGF0aXN0
aWNzPiBTdGF0aXN0aWNzOjpvcGVuKENhY2hlJiBjYWNoZSwgY29uc3QgU3RyaW5nJiBjYWNoZVBh
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0cmluZyBkYXRhYmFz
ZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0
aXN0aWNzRGF0YWJhc2VOYW1lKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgU3RhdGlzdGlj
c0RhdGFiYXNlTmFtZSk7CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RhdGlzdGljcz4o
Y2FjaGUsIGRhdGFiYXNlUGF0aCk7CiB9CiAKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTdGF0aXN0
aWNzOjppbml0aWFsaXplKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQogICAgIHNlcmlhbEJh
Y2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIGRhdGFiYXNlUGF0aCA9IGRhdGFiYXNl
UGF0aC5pc29sYXRlZENvcHkoKSwgbmV0d29ya0NhY2hlUGF0aCA9IG1fY2FjaGUucmVjb3Jkc1Bh
dGgoKSwgc3RhcnRUaW1lXSB7CiAgICAgICAgIFdlYkNvcmU6OlNRTGl0ZVRyYW5zYWN0aW9uSW5Q
cm9ncmVzc0F1dG9Db3VudGVyIHRyYW5zYWN0aW9uQ291bnRlcjsKIAotICAgICAgICBpZiAoIVdl
YkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNl
UGF0aCkpKQorICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGRhdGFiYXNlUGF0aCkpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29y
a1Byb2Nlc3MpIE9wZW5pbmcgbmV0d29yayBjYWNoZSBzdGF0aXN0aWNzIGRhdGFiYXNlIGF0ICVz
Li4uIiwgZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5k
ZXggZTRhZGIxOWJjOGMuLjAzZTMwOTI5MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTEz
NiwyOSArMTM2LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJpbmcgbWFrZVZlcnNpb25lZERpcmVj
dG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKICAgICBTdHJpbmcg
dmVyc2lvblN1YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3RvcnlQcmVmaXggKyBTdHJpbmc6Om51
bWJlcihTdG9yYWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJh
c2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIFN0cmlu
ZyBtYWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0
aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VW
ZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9y
eU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBy
ZWNvcmRzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3Rv
cnlQYXRoKGNvbnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0
aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVk
RGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9
CiAKIHN0YXRpYyBTdHJpbmcgbWFrZVNhbHRGaWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJl
Y3RvcnlQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0Rmls
ZU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBz
YWx0RmlsZU5hbWUpOwogfQogCiBSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBT
dHJpbmcmIGNhY2hlUGF0aCwgTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBpZiAoIVdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lv
bmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBh
dGgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFr
ZVNhbHQobWFrZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0x
NzEsMTMgKzE3MSwxMyBAQCB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYg
cmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGly
ZWN0b3J5KHJlY29yZHNQYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJl
Y3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGly
ZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IFN0cmluZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBh
dGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jk
c1BhdGgsIHBhcnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRp
b25QYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUg
ZW50cnlUeXBlKSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5
VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlm
ICghZXhwZWN0ZWRUeXBlLmlzRW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0
b3J5UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRo
LCBhY3R1YWxUeXBlKTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBh
dGgsIGFjdHVhbFR5cGUpOwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGly
ZWN0b3J5UGF0aCwgWyZmdW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBl
XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7
CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZp
bGUgfHwgZmlsZU5hbWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk3LDE4ICsxOTcsMTggQEAgc3RhdGljIHZvaWQg
ZGVsZXRlRW1wdHlSZWNvcmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xk
ZXJzLgotICAgICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmlu
ZyBwYXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJl
Y3RvcnkocGFydGl0aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRp
ck5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChl
bnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQg
aXMgcmVhbGx5IGVtcHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRp
ck5hbWUpKTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0
aXRpb25QYXRoLCBzdWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0
ZSBbUGFydGl0aW9uXSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQg
aWYgaXQgaXMgcmVhbGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVj
dG9yeShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRp
dGlvbk5hbWUpKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3NiwxNyArMjc2LDE3
IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgICAgICB1bnNpZ25lZCBjb3VudCA9
IDA7CiAgICAgICAgIFN0cmluZyBhbnlUeXBlOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxl
cyhyZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBbJnJlY29yZEZpbHRlciwgJmJsb2JGaWx0ZXIsICZy
ZWNvcmRzU2l6ZSwgJmNvdW50XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmlu
ZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSk7CisgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsK
IAogICAgICAgICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6
OnN0cmluZ1RvSGFzaChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsK
ICAgICAgICAgICAgIGlmICghZmlsZVNpemUpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKQEAgLTM1MiwxMiArMzUyLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJs
b2IoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5
UGF0aEZvcktleShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBl
KCkuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXku
cGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9u
SGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29y
ZFBhdGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSks
IGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtl
eS5oYXNoQXNTdHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQ
YXRoKGNvbnN0IFN0cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0
b3JhZ2U6OmRlbGV0ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5
KGtleSkpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZv
cktleShrZXkpKTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkp
KTsKIH0KIApAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9w
ZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAg
ICAgIGF1dG8gcmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3
cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVj
b3JkUGF0aEZvcktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJD
b3JlOjptYWtlQWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7
CiAKICAgICAgICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtODYzLDcgKzg2
Myw3IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBUcmF2ZXJz
ZUZsYWdzIGZsYWdzLCBUcmF2ZXJzZUhhbmRsZXImCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZp
bGVOYW1lKTsKKyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFt
ZSk7CiAKICAgICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYgKHRy
YXZlcnNlT3BlcmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBAIC05
NTIsMTMgKzk1MiwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtbwogICAgIGlvUXVldWUoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNp
bmNlVGltZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
dHlwZSA9IHR5cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJl
Y29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRz
RmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUs
IGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAg
ICAgICAgIGF1dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRE
aXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRp
bWUgPiBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKSkgewogICAg
ICAgICAgICAgICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAg
ICAgICAgIGlmICh0aW1lcy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29y
ZTo6ZGVsZXRlRmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1w
dHlSZWNvcmRzRGlyZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAg
dm9pZCBTdG9yYWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7
CisgICAgICAgICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAg
ICAgICAgICAgYXV0byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRo
KTsKIAogICAgICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAg
LTEwNTAsNyArMTA1MCw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtD
b3VudD0lZCBzaG91bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNo
b3VsZERlbGV0ZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAg
ICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAg
ICAgICAgbV9ibG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9KTsKQEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVy
c2lvbnMoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBh
dXRvIG9sZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNh
Y2hlUGF0aCwgc3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwg
c3ViZGlyTmFtZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3
b3JrUHJvY2VzcykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJz
aW9uUGF0aC51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVj
dXJzaXZlbHkob2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRl
eCAzMTMxYzBmMWM0NC4uZTJkNDFlZTc4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuY3Bw
CkBAIC03MywxNSArNzMsMTUgQEAgdm9pZCBNYW5hZ2VyOjppbml0aWFsaXplKGNvbnN0IFN0cmlu
ZyYgcmVjb3JkUmVwbGF5TW9kZSwgY29uc3QgU3RyaW5nJiByZWNvcmRSZXAKICAgICAgICAgbV9y
ZWNvcmRSZXBsYXlNb2RlID0gRGlzYWJsZWQ7CiAgICAgfQogCi0gICAgbV9yZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZFJl
cGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKKyAgICBtX3JlY29yZFJl
cGxheUNhY2hlTG9jYXRpb24gPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZWNvcmRSZXBsYXkp
OwogICAgIERFQlVHX0xPRygiQ2FjaGUgbG9jYXRpb24gPSAiIFNUUklOR19TUEVDSUZJRVIsIERF
QlVHX1NUUihtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24pKTsKIAogICAgIGlmIChpc1JlY29y
ZGluZygpKSB7Ci0gICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5k
bGUocmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBt
X3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgo
KSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICB9IGVsc2UgaWYgKGlz
UmVwbGF5aW5nKCkpIHsKLSAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxlID0gV2ViQ29yZTo6Rmls
ZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKTsKLSAgICAg
ICAgbV9sb2FkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0TG9hZFBhdGgo
KSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICAgICAgbV9yZXBsYXlGaWxlSGFuZGxlID0g
V2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZXBsYXlQYXRoKCksIFdlYkNvcmU6Ok9wZW5Gb3JX
cml0ZSk7CisgICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUo
cmVwb3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7Cisg
ICAgICAgIG1fbG9hZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQ
YXRoKCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgICAgIG1fcmVw
bGF5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgICAgICBsb2FkUmVzb3VyY2Vz
KCk7CiAgICAgfQogfQpAQCAtMzY1LDE3ICszNjUsMTcgQEAgdm9pZCBNYW5hZ2VyOjpsb2FkUmVz
b3VyY2VzKCkKIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydExvYWRQYXRoKCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVM
b2NhdGlvbiwga0ZpbGVOYW1lUmVwb3J0TG9hZCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRp
b24sIGtGaWxlTmFtZVJlcG9ydExvYWQpOwogfQogCiBTdHJpbmcgTWFuYWdlcjo6cmVwb3J0UmVj
b3JkUGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCht
X3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlY29yZCk7CiB9CiAK
IFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRSZXBsYXlQYXRoKCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwg
a0ZpbGVOYW1lUmVwb3J0UmVwbGF5KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Zp
bGVOYW1lUmVwb3J0UmVwbGF5KTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcXVlc3RUb1BhdGgo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtNDExLDkgKzQxMSw5
IEBAIFN0cmluZyBNYW5hZ2VyOjpoYXNoVG9QYXRoKGNvbnN0IFN0cmluZyYgaGFzaCkKICAgICBm
aWxlTmFtZS5hcHBlbmQoaGFzaFRhaWwpOwogICAgIGZpbGVOYW1lLmFwcGVuZExpdGVyYWwoIi5k
YXRhIik7CiAKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGlyTmFtZVJlc291cmNlcyk7Ci0gICAg
cGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7
Ci0gICAgcGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxl
TmFtZS50b1N0cmluZygpKTsKKyAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRGly
TmFtZVJlc291cmNlcyk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwYXRoLCBoYXNoSGVhZCk7CisgICAgcGF0aCA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZS50b1N0cmlu
ZygpKTsKIAogICAgIHJldHVybiBwYXRoOwogfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgTWFu
YWdlcjo6bG9nUGxheWVkQmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYm9vCiAgICAgbV9yZXBsYXlGaWxlSGFuZGxlLnByaW50ZigiJXMgJXNcbiIs
IHdhc0NhY2hlTWlzcyA/ICJtaXNzIiA6ICJoaXQgIiwgREVCVUdfU1RSKHVybC5zdHJpbmcoKSkp
OwogfQogCi1XZWJDb3JlOjpGaWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlIG1vZGUpCitXZWJDb3JlOjpG
aWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiB7CiAgICAgLy8gSWYgd2Ug
Y2FuIHRyaXZpYWxseSBvcGVuIHRoZSBmaWxlLCB0aGVuIGRvIHRoYXQgYW5kIHJldHVybiB0aGUg
bmV3IGZpbGUKICAgICAvLyBoYW5kbGUuCkBAIC00NjQsOSArNDY0LDkgQEAgV2ViQ29yZTo6Rmls
ZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdl
YkNvcmU6OkZpbGUKICAgICAvLyBJZiB3ZSdyZSBvcGVuaW5nIHRoZSBmaWxlIGZvciB3cml0aW5n
IChpbmNsdWRpbmcgYXBwZW5kaW5nKSwgdGhlbiB0cnkKICAgICAvLyBhZ2FpbiBhZnRlciBtYWtp
bmcgc3VyZSBhbGwgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzIGhhdmUgYmVlbiBjcmVhdGVkLgog
Ci0gICAgaWYgKG1vZGUgIT0gV2ViQ29yZTo6T3BlbkZvclJlYWQpIHsKLSAgICAgICAgY29uc3Qg
YXV0byYgcGFyZW50RGlyID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShmaWxlUGF0aCk7Ci0gICAg
ICAgIGlmICghV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERpcikpIHsKKyAgICBp
ZiAobW9kZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkgeworICAgICAgICBj
b25zdCBhdXRvJiBwYXJlbnREaXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KGZpbGVQYXRoKTsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMocGFyZW50RGlyKSkgewogICAgICAgICAgICAgREVCVUdfTE9HX0VSUk9SKCJFcnJv
ciAlZCB0cnlpbmcgdG8gY3JlYXRlIGludGVybWVkaWF0ZSBkaXJlY3RvcmllczogIiBTVFJJTkdf
U1BFQ0lGSUVSLCBlcnJubywgREVCVUdfU1RSKHBhcmVudERpcikpOwogICAgICAgICAgICAgcmV0
dXJuIGZpbGVIYW5kbGU7CiAgICAgICAgIH0KQEAgLTQ3OSw3ICs0NzksNyBAQCBXZWJDb3JlOjpG
aWxlSGFuZGxlIE1hbmFnZXI6Om9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCwg
V2ViQ29yZTo6RmlsZQogICAgIC8vIENvdWxkIG5vdCBvcGVuIHRoZSBmaWxlLiBMb2cgdGhlIGVy
cm9yIGFuZCBsZWF2ZSwgcmV0dXJuaW5nIHRoZSBpbnZhbGlkCiAgICAgLy8gZmlsZSBoYW5kbGUu
CiAKLSAgICBpZiAobW9kZSA9PSBXZWJDb3JlOjpPcGVuRm9yUmVhZCkKKyAgICBpZiAobW9kZSA9
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCkKICAgICAgICAgREVCVUdfTE9HX0VS
Uk9SKCJFcnJvciAlZCB0cnlpbmcgdG8gb3BlbiAiIFNUUklOR19TUEVDSUZJRVIgIiBmb3IgcmVh
ZGluZyIsIGVycm5vLCBERUJVR19TVFIoZmlsZVBhdGgpKTsKICAgICBlbHNlCiAgICAgICAgIERF
QlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVS
ICIgZm9yIHdyaXRpbmciLCBlcnJubywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CkBAIC00OTAsNyAr
NDkwLDcgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGUKIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFZl
Y3RvcjxTdHJpbmc+Pj4gTWFuYWdlcjo6cmVhZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkK
IHsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICBXZWJDb3JlOjpNYXBwZWRGaWxlRGF0
YSBmaWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSBmaWxlKGZpbGVQYXRoLCBzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAppbmRl
eCBlYjJhY2M0OGRjYS4uNTBlZDVlMjNkMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKQEAg
LTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nTG9hZGVkUmVzb3VyY2UoUmVzb3Vy
Y2UmKTsKICAgICB2b2lkIGxvZ1BsYXllZEJhY2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBib29sIHdhc0NhY2hlTWlzcyk7CiAKLSAgICBXZWJDb3JlOjpGaWxlSGFu
ZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmlsZU9wZW5Nb2RlKTsK
KyAgICBXZWJDb3JlOjpGaWxlSGFuZGxlIG9wZW5DYWNoZUZpbGUoY29uc3QgU3RyaW5nJiwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKIAogICAgIFN0cmluZyByZXF1ZXN0VG9Q
YXRoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBTdHJpbmcg
dXJsSWRlbnRpZnlpbmdDb21tb25Eb21haW4oY29uc3QgV2ViQ29yZTo6VVJMJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZWNvcmRlci5jcHAKaW5kZXggZTY2MDNlNjM2ZDcuLjNhNTU5YTYxODQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1
cmVSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJl
L05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZWNv
cmRlcjo6cmVjb3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
dm9pZCBSZWNvcmRlcjo6d3JpdGVFdmVudHMoKQogewogICAgIGF1dG8gcGF0aCA9IE1hbmFnZXI6
OnNpbmdsZXRvbigpLnJlcXVlc3RUb1BhdGgobV9pbml0aWFsUmVxdWVzdCk7Ci0gICAgYXV0byBo
YW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6
Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBoYW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5v
cGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAg
ICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNl
LmgKaW5kZXggZTU3NjBlZDFiYzMuLjc1NzZjMGQ1ZTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291
cmNlLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIFN0
cmluZyBtX2V2ZW50RmlsZVBhdGg7CiAgICAgICAgIGJvb2wgbV9oYXZlTWFwcGVkRXZlbnRGaWxl
IHsgZmFsc2UgfTsKLSAgICAgICAgV2ViQ29yZTo6TWFwcGVkRmlsZURhdGEgbV9tYXBwZWRFdmVu
dEZpbGU7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1fbWFw
cGVkRXZlbnRGaWxlOwogICAgICAgICBzaXplX3QgbV9vZmZzZXQgeyAwIH07CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KaW5kZXggZGY2NGUzOWJlNjEuLjE3NTY1YjI3OWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Nv
Y29hOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5h
bQogCiAgICAgbV90YXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gbV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbjsKIAotICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJDb3JlOjpm
aWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQotICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICBpZiAoYWxsb3dPdmVyd3JpdGUgJiYgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX3BlbmRpbmdEb3dubG9hZExvY2F0aW9uKSkKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiB9CiAKIGJvb2wg
TmV0d29ya0RhdGFUYXNrQ29jb2E6OnRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5k
ZXggMDVjODY4NDhlMjUuLjVmOTY5YmIxMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC00NzIs
NyArNDcyLDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3Jr
TG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFn
ZXIgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIo
KTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3du
bG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9u
LT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2Fk
KCpkb3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpmaWxlRXhpc3RzKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBBU1NFUlQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9u
KG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRv
d25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZN
b3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggYmQ0ZjYyOTE5M2YuLjRjOGI0
YTRlMmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya1Byb2Nlc3NTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpCiAgICAgQVNTRVJUKCFwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5p
c0VtcHR5KCkpOwogICAgIG1fZGlza0NhY2hlRGlyZWN0b3J5ID0gcGFyYW1ldGVycy5kaXNrQ2Fj
aGVEaXJlY3Rvcnk7CiAKLSAgICBTb3VwTmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hl
KFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKKyAgICBTb3Vw
TmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRp
cmVjdG9yeU5hbWUobV9kaXNrQ2FjaGVEaXJlY3RvcnkpKTsKIAogICAgIE9wdGlvblNldDxOZXR3
b3JrQ2FjaGU6OkNhY2hlOjpPcHRpb24+IGNhY2hlT3B0aW9ucyB7IE5ldHdvcmtDYWNoZTo6Q2Fj
aGU6Ok9wdGlvbjo6UmVnaXN0ZXJOb3RpZnkgfTsKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRF
bmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9QbHVnaW5Q
cm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCA4ZTdmMGE3NTU1OS4uYTQ0NGYwNjk2YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaApAQCAtNjQsNyAr
NjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBsYXVuY2hQcm9jZXNzKGNvbnN0IFN0cmluZyYgbGF1
bmNoUGF0aCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFyZ3VtZW50cyk7CiAgICAgYm9vbCBsYXVu
Y2hBcHBsaWNhdGlvbkF0VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYXJndW1lbnRzKTsKICAgICBib29sIG9wZW5VUkwoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGludDMyX3QmIHN0YXR1cywgU3RyaW5nJiBsYXVuY2hlZFVSTFN0cmluZyk7Ci0gICAg
Ym9vbCBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CisgICAgYm9vbCBGaWxlU3lz
dGVtOjpvcGVuRmlsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CiAjZW5kaWYKIAogICAgIENv
dW50ZWRVc2VyQWN0aXZpdHkmIGNvbm5lY3Rpb25BY3Rpdml0eSgpIHsgcmV0dXJuIG1fY29ubmVj
dGlvbkFjdGl2aXR5OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVuaXgu
Y3BwCmluZGV4IGRhZjliYWVjZWU1Li43YWYwOTgzM2RiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5p
eC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luTW9kdWxlSQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9
IHBsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IHBhdGhHZXRGaWxlTmFtZShwbHVn
aW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVO
YW1lKHBsdWdpblBhdGgpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBtZXRhRGF0YS5uYW1lOwog
ICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0YS5kZXNjcmlwdGlvbjsKICAgICBwYXJzZU1J
TUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRpb24sIHBsdWdpbi5pbmZvLm1pbWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5T
ZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5T
ZWFyY2hQYXRoLmNwcAppbmRleCA3ZTg5MmYwMGM4NS4uMDc1MWYwZmY1OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5j
cHAKQEAgLTQ4LDggKzQ4LDggQEAgVmVjdG9yPFN0cmluZz4gcGx1Z2luc0RpcmVjdG9yaWVzKCkK
ICAgICBpZiAoIW1vemlsbGFIb21lLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZCht
b3ppbGxhSG9tZSArICIvcGx1Z2lucyIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChob21lRGlyZWN0
b3J5UGF0aCgpICsgIi8ubW96aWxsYS9wbHVnaW5zIik7Ci0gICAgcmVzdWx0LmFwcGVuZChob21l
RGlyZWN0b3J5UGF0aCgpICsgIi8ubmV0c2NhcGUvcGx1Z2lucyIpOworICAgIHJlc3VsdC5hcHBl
bmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIp
OworICAgIHJlc3VsdC5hcHBlbmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIv
Lm5ldHNjYXBlL3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9icm93c2Vy
L3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xvY2FsL2xpYi9tb3ppbGxhL3Bs
dWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9maXJlZm94L3BsdWdpbnMiKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5kZXggMTUxMzM5MDg4
ZGMuLjk2MzZmMTFmOGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1v
cnlTYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVy
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3RvcCgpCiAg
ICAgaWYgKCFtX2lzUnVubmluZykgCiAgICAgICAgIHJldHVybjsKICAgICBtX3NhbXBsZVRpbWVy
LnN0b3AoKTsKLSAgICBjbG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUobV9zYW1wbGVMb2dGaWxlKTsKIAogICAgIHByaW50ZigiU3RvcHBlZCBtZW1v
cnkgc2FtcGxlciBmb3IgcHJvY2VzcyAlcyAlZFxuIiwgcHJvY2Vzc05hbWUoKS51dGY4KCkuZGF0
YSgpLCBnZXRwaWQoKSk7CiAgICAgLy8gRmx1c2ggc3Rkb3V0IGJ1ZmZlciBzbyBweXRob24gc2Ny
aXB0IGNhbiBiZSBndWFyYW50ZWVkIHRvIHJlYWQgdXAgdG8gdGhpcyBwb2ludC4KQEAgLTEyNyw3
ICsxMjcsNyBAQCBib29sIFdlYk1lbW9yeVNhbXBsZXI6OmlzUnVubmluZygpIGNvbnN0CiAgICAg
CiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmluaXRpYWxpemVUZW1wTG9nRmlsZSgpCiB7Ci0gICAg
bV9zYW1wbGVMb2dGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1f
c2FtcGxlTG9nRmlsZSk7CisgICAgbV9zYW1wbGVMb2dGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKHByb2Nlc3NOYW1lKCksIG1fc2FtcGxlTG9nRmlsZSk7CiAgICAgd3Jp
dGVIZWFkZXJzKCk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBs
ZXI6OmluaXRpYWxpemVTYW5kYm94ZWRMb2dGaWxlKGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZQogICAgIGlmIChtX3NhbXBsZUxvZ1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2Ft
cGxlTG9nU2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwogICAgIG1fc2FtcGxlTG9nRmlsZVBh
dGggPSBzYW1wbGVMb2dGaWxlUGF0aDsKLSAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBvcGVuRmlsZSht
X3NhbXBsZUxvZ0ZpbGVQYXRoLCBPcGVuRm9yV3JpdGUpOworICAgIG1fc2FtcGxlTG9nRmlsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fc2FtcGxlTG9nRmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9w
ZW5Gb3JXcml0ZSk7CiAgICAgd3JpdGVIZWFkZXJzKCk7CiB9CiAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OndyaXRlSGVhZGVycygpCiAgICAgU3RyaW5nIHByb2Nl
c3NEZXRhaWxzID0gU3RyaW5nOjpmb3JtYXQoIlByb2Nlc3M6ICVzIFBpZDogJWRcbiIsIHByb2Nl
c3NOYW1lKCkudXRmOCgpLmRhdGEoKSwgZ2V0cGlkKCkpOwogCiAgICAgQ1N0cmluZyB1dGY4U3Ry
aW5nID0gcHJvY2Vzc0RldGFpbHMudXRmOCgpOwotICAgIHdyaXRlVG9GaWxlKG1fc2FtcGxlTG9n
RmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOworICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0
ZjhTdHJpbmcubGVuZ3RoKCkpOwogfQogCiB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnNhbXBsZVRp
bWVyRmlyZWQoKQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6c3Rv
cFRpbWVyRmlyZWQoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjph
cHBlbmRDdXJyZW50TWVtb3J5VXNhZ2VUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJikKK3ZvaWQg
V2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpCiB7CiAgICAgLy8gQ29sbGVjdCBzdGF0aXN0aWNzIGZy
b20gYWxsb2NhdG9ycyBhbmQgZ2V0IFJTSVpFIG1ldHJpYwogICAgIFN0cmluZ0J1aWxkZXIgc3Rh
dFN0cmluZzsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVu
ZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUmKQogICAgIHN0YXRT
dHJpbmcuYXBwZW5kKCdcbicpOwogCiAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gc3RhdFN0cmlu
Zy50b1N0cmluZygpLnV0ZjgoKTsKLSAgICB3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0
ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5n
Lmxlbmd0aCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
TWVtb3J5U2FtcGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5o
CmluZGV4IDI3ODdiNTE1ZGFiLi4zMjVlZWI4MmE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
Yk1lbW9yeVNhbXBsZXIuaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5p
dGlhbGl6ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQgc2FtcGxlVGltZXJGaXJlZCgpOwogICAg
IHZvaWQgc3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2Fn
ZVRvRmlsZShXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1
cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVzc3VyZUV2ZW50KCk7CiAgICAgCiAgICAg
U3lzdGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFsbG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5
NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3RhdGlzdGljcyBzYW1wbGVXZWJLaXQoKSBj
b25zdDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBjb25zdDsKICAgICAKLSAgICBXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dGaWxlIHsgV2ViQ29yZTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSB9OworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5nIG1fc2FtcGxlTG9nRmlsZVBhdGg7CiAgICAg
V2ViQ29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsKICAgICBXZWJDb3JlOjpUaW1lciBtX3N0b3BU
aW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0
YWJsZVBhdGhHdGsuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aEd0ay5jcHAKaW5kZXggOGIzODMzMzgwOGIuLjljYTZmZjY1NjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKIHsK
ICAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7
CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGRpcmVj
dG9yeU5hbWUoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aC5kYXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0
aC5kYXRhKCkpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAjZW5kaWYKQEAgLTUzLDIwICs1
MywyMCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nl
c3NOYW1lKQogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYg
KGV4ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0Rp
cmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1Bh
dGgpKQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Bh
dGg7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdldEV4ZWN1
dGFibGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewotICAgICAg
ICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJs
ZVBhdGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgp
KQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIHBy
b2Nlc3NQYXRoOwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBLR0xJQkVYRUNESVIp
LCBwcm9jZXNzTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBL
R0xJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CiB9CiAKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9m
V2ViUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQ
cm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5t
bQppbmRleCA3MmY1MTIzNmNiNS4uM2VjNTRiZjM0OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQpAQCAtNzEsMTQgKzcxLDE0IEBAIHZvaWQgQ2hpbGRQ
cm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlv
blBhcmFtZXRlcnMmCiAgICAgfQogCiAgICAgU3RyaW5nIHNhbmRib3hJbXBvcnRQYXRoID0gIi91
c3IvbG9jYWwvc2hhcmUvc2FuZGJveC9pbXBvcnRzIjsKLSAgICBzYW5kYm94UGFyYW1ldGVycy5h
ZGRQYXRoUGFyYW1ldGVyKCJJTVBPUlRfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNh
bmRib3hJbXBvcnRQYXRoKS5kYXRhKCkpOworICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQ
YXJhbWV0ZXIoIklNUE9SVF9ESVIiLCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oc2FuZGJveEltcG9ydFBhdGgpLmRhdGEoKSk7CiAKICAgICBzd2l0Y2ggKHNhbmRib3hQYXJh
bWV0ZXJzLm1vZGUoKSkgewogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVy
czo6VXNlRGVmYXVsdFNhbmRib3hQcm9maWxlUGF0aDoKICAgICBjYXNlIFNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnM6OlVzZU92ZXJyaWRlU2FuZGJveFByb2ZpbGVQYXRoOiB7CiAgICAg
ICAgIFN0cmluZyBzYW5kYm94UHJvZmlsZVBhdGggPSBzYW5kYm94UGFyYW1ldGVycy5tb2RlKCkg
PT0gU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlRGVmYXVsdFNhbmRib3hQcm9m
aWxlUGF0aCA/IGRlZmF1bHRQcm9maWxlUGF0aCA6IHNhbmRib3hQYXJhbWV0ZXJzLm92ZXJyaWRl
U2FuZGJveFByb2ZpbGVQYXRoKCk7CiAgICAgICAgIGlmICghc2FuZGJveFByb2ZpbGVQYXRoLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgQ1N0cmluZyBwcm9maWxlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihzYW5kYm94UHJvZmlsZVBhdGgpOworICAgICAgICAgICAgQ1N0cmluZyBw
cm9maWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94
UHJvZmlsZVBhdGgpOwogICAgICAgICAgICAgY2hhciogZXJyb3JCdWY7CiAgICAgICAgICAgICBp
ZiAoc2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhwcm9maWxlUGF0aC5kYXRhKCksIFNBTkRC
T1hfTkFNRURfRVhURVJOQUwsIHNhbmRib3hQYXJhbWV0ZXJzLm5hbWVkUGFyYW1ldGVyQXJyYXko
KSwgJmVycm9yQnVmKSkgewogICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6IENvdWxk
bid0IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxlIFslc10sIGVycm9yICclcydcbiIsIGdldHBy
b2duYW1lKCksIHByb2ZpbGVQYXRoLmRhdGEoKSwgZXJyb3JCdWYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KaW5kZXggNTRhZTY1ODAyZDMuLjI3NmU2ZTNm
YzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAg
LTEyOCw3ICsxMjgsNyBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIHNhbmRib3hQYXJh
bWV0ZXJzLmFkZFBhcmFtZXRlcigiX09TX1ZFUlNJT04iLCBvc1ZlcnNpb24udXRmOCgpLmRhdGEo
KSk7CiAKICAgICAvLyBVc2UgcHJpdmF0ZSB0ZW1wb3JhcnkgYW5kIGNhY2hlIGRpcmVjdG9yaWVz
LgotICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCIsIGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihzYW5kYm94UGFyYW1ldGVycy51c2VyRGlyZWN0b3J5U3VmZml4KCkpLmRhdGEo
KSwgMSk7CisgICAgc2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIiwgRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQYXJhbWV0ZXJzLnVzZXJEaXJlY3Rv
cnlTdWZmaXgoKSkuZGF0YSgpLCAxKTsKICAgICBjaGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQQVRI
X01BWF07CiAgICAgaWYgKCFjb25mc3RyKF9DU19EQVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9y
YXJ5RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5RGlyZWN0b3J5KSkpIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCIlczogY291bGRuJ3QgcmV0cmlldmUgcHJpdmF0ZSB0ZW1wb3JhcnkgZGlyZWN0
b3J5IHBhdGg6ICVkXG4iLCBnZXRwcm9nbmFtZSgpLCBlcnJubyk7CkBAIC0xNTQsMTggKzE1NCwx
OCBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpm
cm9tVVRGOChwd2QucHdfZGlyKTsKICAgICBwYXRoLmFwcGVuZCgiL0xpYnJhcnkiKTsKIAotICAg
IHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBzYW5kYm94UGFyYW1l
dGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfRElSIiwgRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAKICAgICBwYXRoLmFwcGVuZCgi
L1ByZWZlcmVuY2VzIik7CiAKLSAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVy
KCJIT01FX0xJQlJBUllfUFJFRkVSRU5DRVNfRElSIiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSk7CisgICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigi
SE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIsIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAgICAgc3dpdGNoIChzYW5kYm94UGFyYW1ldGVy
cy5tb2RlKCkpIHsKICAgICBjYXNlIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVz
ZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGg6CiAgICAgY2FzZSBTYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzOjpVc2VPdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aDogewogICAgICAgICBT
dHJpbmcgc2FuZGJveFByb2ZpbGVQYXRoID0gc2FuZGJveFBhcmFtZXRlcnMubW9kZSgpID09IFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBh
dGggPyBkZWZhdWx0UHJvZmlsZVBhdGggOiBzYW5kYm94UGFyYW1ldGVycy5vdmVycmlkZVNhbmRi
b3hQcm9maWxlUGF0aCgpOwogICAgICAgICBpZiAoIXNhbmRib3hQcm9maWxlUGF0aC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKKyAgICAgICAgICAgIENTdHJpbmcgcHJvZmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFByb2Zp
bGVQYXRoKTsKICAgICAgICAgICAgIGNoYXIqIGVycm9yQnVmOwogICAgICAgICAgICAgaWYgKHNh
bmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmlsZVBhdGguZGF0YSgpLCBTQU5EQk9YX05B
TUVEX0VYVEVSTkFMLCBzYW5kYm94UGFyYW1ldGVycy5uYW1lZFBhcmFtZXRlckFycmF5KCksICZl
cnJvckJ1ZikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBp
bml0aWFsaXplIHNhbmRib3ggcHJvZmlsZSBbJXNdLCBlcnJvciAnJXMnXG4iLCBnZXRwcm9nbmFt
ZSgpLCBwcm9maWxlUGF0aC5kYXRhKCksIGVycm9yQnVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KaW5kZXggMWE4YjlmZGNmYjAuLmQ5MmNi
Zjk3YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lv
bk1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVhZFdy
aXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiBTdHJp
bmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBib3RoIHJlc29sdmVTeW1saW5rc0luUGF0aCgpIGFu
ZCAtc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aD8KLSAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRo
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3Rh
bmRhcmRpemluZ1BhdGhdKTsKKyAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRoID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5U3Rh
bmRhcmRpemluZ1BhdGhdKTsKICAgICBpZiAoZmlsZVN5c3RlbVBhdGguaXNOdWxsKCkpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgdmFsaWQgZmlsZSBzeXN0ZW0gcmVw
cmVzZW50YXRpb24gZm9yIHRoZSBzdHJpbmcgJyVzJyBvZiBsZW5ndGggJWx1IiwgZmlsZVN5c3Rl
bVBhdGguZGF0YSgpLCBmaWxlU3lzdGVtUGF0aC5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiB7
IH07CkBAIC0zMzUsNyArMzM1LDcgQEAgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUKICAgICBwYXRo
LmFwcGVuZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKICAgICBwYXRo
LmFwcGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0gU2Fu
ZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aC5k
YXRhKCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNh
bmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUubV9z
YW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNyZWF0
ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5kYXRh
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRh
YmxlUGF0aFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFi
bGVQYXRoV1BFLmNwcAppbmRleCAyMmQ0NWNiYmJlZi4uNWVkNTZkMzcwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3Bw
CkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgZ2V0RXhlY3V0YWJsZVBhdGgoKQogewog
ICAgIENTdHJpbmcgZXhlY3V0YWJsZVBhdGggPSBnZXRDdXJyZW50RXhlY3V0YWJsZVBhdGgoKTsK
ICAgICBpZiAoIWV4ZWN1dGFibGVQYXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gZGlyZWN0
b3J5TmFtZShzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
LmRhdGEoKSkpOworICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
LmRhdGEoKSkpOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApAQCAtNDcsMTkgKzQ3LDE5IEBA
IHN0YXRpYyBTdHJpbmcgZmluZFdlYktpdFByb2Nlc3MoY29uc3QgY2hhciogcHJvY2Vzc05hbWUp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VC
S0lUX0VYRUNfUEFUSCIpOwogICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Ci0gICAgICAgIFN0cmlu
ZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAg
IGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1l
KTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAg
ICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmcg
ZXhlY3V0YWJsZVBhdGggPSBnZXRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJs
ZVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlm
IChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9j
ZXNzTmFtZSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRo
KSkKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKLSAgICByZXR1cm4g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oTElCRVhFQ0RJUiksIHByb2Nlc3NOYW1lKTsKIH0KIAogU3RyaW5nIGV4ZWN1
dGFibGVQYXRoT2ZXZWJQcm9jZXNzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TdG9yYWdlUHJvY2Vzcy5jcHAKaW5kZXggZWNkNTE3MDc4MzAuLjdiNDY1NjQzNTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAt
MTMzLDcgKzEzMyw3IEBAIHZvaWQgU3RvcmFnZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0g
ICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCiAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1h
a2UgYWxsIGRpcmVjdG9yaWVzIGZvciBwYXRoICclcyciLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwog
fQogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6YWNjZXNzVG9UZW1w
b3JhcnlGaWxlQ29tcGxldGUoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIFdlJ3ZlIGVpdGhl
ciBoYXJkIGxpbmtlZCB0aGUgdGVtcG9yYXJ5IGJsb2IgZmlsZSB0byB0aGUgZGF0YWJhc2UgZGly
ZWN0b3J5LCBjb3BpZWQgaXQgdGhlcmUsCiAgICAgLy8gb3IgdGhlIHRyYW5zYWN0aW9uIGlzIGJl
aW5nIGFib3J0ZWQuCiAgICAgLy8gSW4gYW55IG9mIHRob3NlIGNhc2VzLCB3ZSBjYW4gZGVsZXRl
IHRoZSB0ZW1wb3JhcnkgYmxvYiBmaWxlIG5vdy4KLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiAKICAgICBpZiAoYXV0byBleHRlbnNpb24g
PSBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJveEV4dGVuc2lvbnMudGFrZShwYXRoKSkKICAgICAg
ICAgZXh0ZW5zaW9uLT5yZXZva2UoKTsKQEAgLTMwMCw4ICszMDAsOCBAQCBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9yYWdlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3Jp
Z2lucyhjb25zdAogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlPcmlnaW5zOwotICAgIGZvciAoYXV0byYgb3JpZ2lu
UGF0aCA6IGxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICBTdHJpbmcgZGF0YWJh
c2VJZGVudGlmaWVyID0gcGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgIGZvciAoYXV0
byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewor
ICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZp
bGVOYW1lKG9yaWdpblBhdGgpOwogCiAgICAgICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0g
U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRp
ZmllcikpCiAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKFdURk1vdmUoKnNlY3Vy
aXR5T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAppbmRleCA3ZjRmODA0MmE3Ny4uMTE2YWQyZDM3MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcApAQCAtODUsNyArODUsNyBAQCBDb250ZW50UnVsZUxpc3RTdG9yZTo6
Q29udGVudFJ1bGVMaXN0U3RvcmUoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBs
ZQogICAgICwgbV9yZW1vdmVRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0
U3RvcmUgUmVtb3ZlIFF1ZXVlIikpCiAgICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2FjeUZpbGVu
YW1lKQogewotICAgIFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQog
CiBDb250ZW50UnVsZUxpc3RTdG9yZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKQEAgLTEwOCw3
ICsxMDgsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihib29s
IGxlZ2FjeUZpbGVuYW1lKQogCiBzdGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBT
dHJpbmcmIGJhc2UsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgYm9vbCBsZWdhY3lGaWxlbmFt
ZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2Us
IG1ha2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29y
ZTo6ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29u
c3RydWN0ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZW5jb2RlRm9yRmlsZU5hbWUoaWRlbnRpZmllcikpKTsKIH0KIAogLy8gVGhlIHNpemUgYW5kIG9m
ZnNldCBvZiB0aGUgZGVuc2VseSBwYWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2Yg
YW5kIG9mZnNldG9mLCB3aGljaCB3b3VsZApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBib29s
IGRlY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBt
ZXRhRGF0YSwgY29uCiAKIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29u
c3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEm
IGZpbGVEYXRhKQogewotICAgIGZpbGVEYXRhID0gbWFwRmlsZShXZWJDb3JlOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBmaWxlRGF0YSA9IG1hcEZpbGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
CiAgICAgaWYgKGZpbGVEYXRhLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTE5NCwxMSArMTk0LDExIEBAIHN0YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3Qo
Y29uc3QgU3RyaW5nJiBwYXRoLCBDb250ZW50UnVsZUxpc3RNZXRhRGF0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiBmaWxlRGF0
YSwgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkKQorc3RhdGljIGJvb2wgd3JpdGVEYXRh
VG9GaWxlKGNvbnN0IERhdGEmIGZpbGVEYXRhLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgZmQpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmaWxlRGF0
YS5hcHBseShbZmQsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkg
ewotICAgICAgICBpZiAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRh
LCBzaXplKSA9PSAtMSkgeworICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgewogICAgICAgICAgICAg
c3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBA
IC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShT
dHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKIAogICAgIGNsYXNzIENv
bXBpbGF0aW9uQ2xpZW50IGZpbmFsIDogcHVibGljIENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlv
bkNsaWVudCB7CiAgICAgcHVibGljOgotICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3Jl
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEm
IG1ldGFEYXRhKQorICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3JlOjpGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEm
IG1ldGFEYXRhKQogICAgICAgICAgICAgOiBtX2ZpbGVIYW5kbGUoZmlsZUhhbmRsZSkKICAgICAg
ICAgICAgICwgbV9tZXRhRGF0YShtZXRhRGF0YSkKICAgICAgICAgewpAQCAtMjg3LDggKzI4Nyw4
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwg
Y29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRp
dGlvbnNBcHBseU9ubHlUb0RvbWFpbiA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxl
TGlzdE1ldGFEYXRhKG1fbWV0YURhdGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAm
JiBXZWJDb3JlOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVNlZWtP
cmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFdlYkNv
cmU6OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJv
ciAmJiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAt
MSkgeworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Zp
bGVIYW5kbGUpOwogICAgICAgICAgICAgICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlcik7CkBAIC0zMDQsMTIgKzMwNCwx
MiBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24s
IGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAgICB2b2lkIHdyaXRlVG9GaWxlKGNv
bnN0IERhdGEmIGRhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3Ig
JiYgIXdyaXRlRGF0YVRvRmlsZShkYXRhLCBtX2ZpbGVIYW5kbGUpKSB7Ci0gICAgICAgICAgICAg
ICAgV2ViQ29yZTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgICAgICAg
ICAgbV9maWxlRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOworICAg
ICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxl
OwogICAgICAgICBDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbV9tZXRhRGF0YTsKICAgICAgICAg
c2l6ZV90IG1fZmlsdGVyc1dpdGhvdXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuIHsgMCB9Owog
ICAgICAgICBzaXplX3QgbV9maWx0ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiB7IDAg
fTsKQEAgLTMyMCwyNyArMzIwLDI3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRU
b0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAg
IGJvb2wgbV9maWxlRXJyb3IgeyBmYWxzZSB9OwogICAgIH07CiAKLSAgICBhdXRvIHRlbXBvcmFy
eUZpbGVIYW5kbGUgPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIFN0
cmluZyB0ZW1wb3JhcnlGaWxlUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJDb250
ZW50UnVsZUxpc3QiLCB0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKLSAgICBpZiAodGVtcG9yYXJ5Rmls
ZUhhbmRsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8g
dGVtcG9yYXJ5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7CisgICAgU3RyaW5nIHRlbXBvcmFyeUZpbGVQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIkNvbnRlbnRSdWxlTGlzdCIsIHRlbXBvcmFyeUZp
bGVIYW5kbGUpOworICAgIGlmICh0ZW1wb3JhcnlGaWxlSGFuZGxlID09IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBDb250ZW50
UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgCiAgICAgY2hhciBpbnZh
bGlkSGVhZGVyW0NvbnRlbnRSdWxlTGlzdEZpbGVIZWFkZXJTaXplXTsKICAgICBtZW1zZXQoaW52
YWxpZEhlYWRlciwgMHhGRiwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKICAgICAvLyBUaGlzIGhl
YWRlciB3aWxsIGJlIHJld3JpdHRlbiBpbiBDb21waWxhdGlvbkNsaWVudDo6ZmluYWxpemUuCi0g
ICAgaWYgKFdlYkNvcmU6OndyaXRlVG9GaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUsIGludmFsaWRI
ZWFkZXIsIHNpemVvZihpbnZhbGlkSGVhZGVyKSkgPT0gLTEpIHsKLSAgICAgICAgV2ViQ29yZTo6
Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlkSGVhZGVyLCBzaXpl
b2YoaW52YWxpZEhlYWRlcikpID09IC0xKSB7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIENvbnRlbnRS
dWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKICAgICB9CiAKICAgICBDb21waWxh
dGlvbkNsaWVudCBjb21waWxhdGlvbkNsaWVudCh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBtZXRhRGF0
YSk7CiAgICAgCiAgICAgaWYgKGF1dG8gY29tcGlsZXJFcnJvciA9IGNvbXBpbGVSdWxlTGlzdChj
b21waWxhdGlvbkNsaWVudCwgV1RGTW92ZShqc29uKSkpIHsKLSAgICAgICAgV2ViQ29yZTo6Y2xv
c2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBjb21waWxl
ckVycm9yOwogICAgIH0KICAgICBpZiAoY29tcGlsYXRpb25DbGllbnQuaGFkRXJyb3JXaGlsZVdy
aXRpbmdUb0ZpbGUoKSkgewotICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUodGVtcG9yYXJ5Rmls
ZUhhbmRsZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3Jh
cnlGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJv
cjo6Q29tcGlsZUZhaWxlZDsKICAgICB9CiAgICAgCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGlj
IHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJp
bmcmIGZpbmFsRmlsZVBhdGgKICAgICBpZiAobWFwcGVkRGF0YS5pc051bGwoKSkKICAgICAgICAg
cmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKIAotICAg
IGlmICghV2ViQ29yZTo6bW92ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgsIGZpbmFsRmlsZVBhdGgp
KQorICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bW92ZUZpbGUodGVtcG9yYXJ5RmlsZVBh
dGgsIGZpbmFsRmlsZVBhdGgpKQogICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6
OkVycm9yOjpDb21waWxlRmFpbGVkOwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTQxMiwxMiArNDEy
LDEyIEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxl
TGlzdElkZW50aWZpZXJzKEZ1bmN0aW9uPHZvaWQoCiB7CiAgICAgbV9yZWFkUXVldWUtPmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JlUGF0aCA9IG1fc3RvcmVQ
YXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZnVsbFBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVj
dG9yeShzdG9yZVBhdGgsIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lGaWxlbmFtZSkpOwor
ICAgICAgICBWZWN0b3I8U3RyaW5nPiBmdWxsUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjps
aXN0RGlyZWN0b3J5KHN0b3JlUGF0aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVyKGxlZ2FjeUZpbGVu
YW1lKSk7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGlkZW50aWZpZXJzOwogICAgICAgICBpZGVu
dGlmaWVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGZ1bGxQYXRocy5zaXplKCkpOwogICAgICAg
ICBjb25zdCBhdXRvIHByZWZpeExlbmd0aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lG
aWxlbmFtZSkubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGZ1bGxQ
YXRocykKLSAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpk
ZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsg
MSArIHByZWZpeExlbmd0aCkpKTsKKyAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFw
cGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJp
bmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSArIHByZWZpeExlbmd0aCkpKTsKIAogICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBpZGVudGlmaWVycyA9IFdURk1vdmUoaWRlbnRpZmllcnMpXSgpIG11dGFibGUgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShpZGVudGlmaWVycykpOwpAQCAtNDU0LDcg
KzQ1NCw3IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlz
dChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKICAgICBtX3JlbW92ZVF1ZXVlLT5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKSwgc3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5
KCksIGxlZ2FjeUZpbGVuYW1lID0gbV9sZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBw
YXRoID0gY29uc3RydWN0ZWRQYXRoKHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5h
bWUpOwogCi0gICAgICAgIGlmICghV2ViQ29yZTo6ZGVsZXRlRmlsZShwYXRoKSkgeworICAgICAg
ICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCkpIHsKICAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihFcnJvcjo6UmVtb3ZlRmFp
bGVkKTsKICAgICAgICAgICAgIH0pOwpAQCAtNDY5LDE5ICs0NjksMTkgQEAgdm9pZCBDb250ZW50
UnVsZUxpc3RTdG9yZTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBp
ZGVudGlmaWVyLAogCiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpzeW5jaHJvbm91c1JlbW92
ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogewotICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IFdl
YkNvcmU6Omxpc3REaXJlY3RvcnkobV9zdG9yZVBhdGgsICIqIikpCi0gICAgICAgIFdlYkNvcmU6
OmRlbGV0ZUZpbGUocGF0aCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3N0b3JlUGF0aCwgIioiKSkKKyAgICAgICAgV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKIH0KIAogdm9pZCBDb250ZW50UnVs
ZUxpc3RTdG9yZTo6aW52YWxpZGF0ZUNvbnRlbnRSdWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpT
dHJpbmcmIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBmaWxlID0gV2ViQ29yZTo6b3BlbkZpbGUo
Y29uc3RydWN0ZWRQYXRoKG1fc3RvcmVQYXRoLCBpZGVudGlmaWVyLCBtX2xlZ2FjeUZpbGVuYW1l
KSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICBpZiAoZmlsZSA9PSBXZWJDb3JlOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gZmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06Om9wZW5GaWxlKGNvbnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0aCwgaWRlbnRpZmllciwgbV9s
ZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAg
aWYgKGZpbGUgPT0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRI
ZWFkZXIgPSB7MCwgMCwgMCwgMCwgMCwgMH07Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSBXZWJD
b3JlOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52
YWxpZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CisgICAgYXV0byBieXRlc1dyaXR0
ZW4gPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7
CiAgICAgQVNTRVJUX1VOVVNFRChieXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplb2Yo
aW52YWxpZEhlYWRlcikpOwotICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxlKTsKKyAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiB9CiAKIHZvaWQgQ29udGVudFJ1bGVM
aXN0U3RvcmU6OmdldENvbnRlbnRSdWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRl
bnRpZmllciwgRnVuY3Rpb248dm9pZChXVEY6OlN0cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwCmluZGV4IDcwY2EzNmIzZWZiLi40NjZjMGNmNWQ1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFT
dG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdl
YnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAvLyBXaHkgaXMg
b25seSB0aGlzIGRpcmVjdG9yeSBuYW1lc3BhY2VkIHRvIGEgcGFydGljdWxhciBhcHBsaWNhdGlv
bj8KIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOwor
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAi
V2ViS2l0Q2FjaGUiKSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0Q2Fj
aGVTdG9yYWdlRGlyZWN0b3J5KCkKIHsKLSAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwg
IkNhY2hlU3RvcmFnZSIpKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
Z19nZXRfcHJnbmFtZSgpKSwgIkNhY2hlU3RvcmFnZSIpKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpCkBAIC04MCwxMiAr
ODAsMTIgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCkKIAogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9jYWNoZV9kaXIo
KSksIGRpcmVjdG9yeU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFt
ZSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSksIGRp
cmVjdG9yeU5hbWUpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0K
IAogV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWd1cmF0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDIyMDhlYWVmMDUwLi5j
Mzc3NTgyNTRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgYm9vbCBJY29uRGF0YWJhc2U6Om9w
ZW4oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAg
bV9kYXRhYmFzZURpcmVjdG9yeSA9IGRpcmVjdG9yeS5pc29sYXRlZENvcHkoKTsKIAogICAgIC8v
IEZvcm11bGF0ZSB0aGUgZnVsbCBwYXRoIGZvciB0aGUgZGF0YWJhc2UgZmlsZQotICAgIG1fY29t
cGxldGVEYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURp
cmVjdG9yeSwgZmlsZW5hbWUpOworICAgIG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeSwgZmlsZW5h
bWUpOwogCiAgICAgLy8gTG9jayBoZXJlIGFzIHdlbGwgYXMgZmlyc3QgdGhpbmcgaW4gdGhlIHRo
cmVhZCBzbyB0aGUgdGhyZWFkIGRvZXNuJ3QgYWN0dWFsbHkgY29tbWVuY2UgdW50aWwgdGhlIGNy
ZWF0ZVRocmVhZCgpIGNhbGwKICAgICAvLyBjb21wbGV0ZXMgYW5kIG1fc3luY1RocmVhZFJ1bm5p
bmcgaXMgcHJvcGVybHkgc2V0CkBAIC04NjksMTMgKzg2OSwxMyBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAjZW5kaWYKIAogICAgIC8vIE5lZWQgdG8gY3Jl
YXRlIHRoZSBkYXRhYmFzZSBwYXRoIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAotICAgIG1h
a2VBbGxEaXJlY3RvcmllcyhtX2RhdGFiYXNlRGlyZWN0b3J5KTsKKyAgICBGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMobV9kYXRhYmFzZURpcmVjdG9yeSk7CiAKICAgICAvLyBFeGlzdGVu
Y2Ugb2YgYSBqb3VybmFsIGZpbGUgaXMgZXZpZGVuY2Ugb2YgYSBwcmV2aW91cyBjcmFzaC9mb3Jj
ZSBxdWl0IGFuZCBhdXRvbWF0aWNhbGx5IHF1YWxpZmllcwogICAgIC8vIHVzIHRvIGRvIGFuIGlu
dGVncml0eSBjaGVjawogICAgIFN0cmluZyBqb3VybmFsRmlsZW5hbWUgPSBtX2NvbXBsZXRlRGF0
YWJhc2VQYXRoICsgIi1qb3VybmFsIjsKICAgICBpZiAoIWNoZWNrSW50ZWdyaXR5T25PcGVuKQot
ICAgICAgICBjaGVja0ludGVncml0eU9uT3BlbiA9IGZpbGVFeGlzdHMoam91cm5hbEZpbGVuYW1l
KTsKKyAgICAgICAgY2hlY2tJbnRlZ3JpdHlPbk9wZW4gPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGpvdXJuYWxGaWxlbmFtZSk7CiAKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1f
c3luY0xvY2spOwpAQCAtMTAwOCw4ICsxMDA4LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZv
cm1PcGVuSW5pdGlhbGl6YXRpb24oKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fc3luY0xvY2spOwogICAgICAgICAgICAgICAgIC8vIFNob3VsZCd2
ZSBiZWVuIGNvbnN1bWVkIGJ5IFNRTGl0ZSwgZGVsZXRlIGp1c3QgdG8gbWFrZSBzdXJlIHdlIGRv
bid0IHNlZSBpdCBhZ2FpbiBpbiB0aGUgZnV0dXJlOwotICAgICAgICAgICAgICAgIGRlbGV0ZUZp
bGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCArICItam91cm5hbCIpOwotICAgICAgICAgICAgICAg
IGRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0aCk7CisgICAgICAgICAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIik7
CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJh
c2VQYXRoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gUmVvcGVuIHRoZSB3cml0
ZSBkYXRhYmFzZSwgY3JlYXRpbmcgaXQgZnJvbSBzY3JhdGNoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApp
bmRleCA2ZTI4NGY4MmRjZC4uMzcyNDQzZTJkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAt
MjY5LDcgKzI2OSw3IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3BlbihXZWJLaXRGYXZp
Y29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAgcHJpdi0+aWNvbkRh
dGFiYXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNBcmVVc2luZ1ByaXZh
dGVCcm93c2luZygpKTsKIAotICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNlLT5vcGVuKFdlYkNv
cmU6OmRpcmVjdG9yeU5hbWUocGF0aCksIFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZShwYXRoKSkp
IHsKKyAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUocGF0aCkpKSB7CiAgICAgICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG51bGxwdHI7CiAgICAg
ICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNo
b29zZXJSZXF1ZXN0LmNwcAppbmRleCBmNjAxMmM4NzNiNC4uNzg4MDQ5NGEzNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Rmls
ZUNob29zZXJSZXF1ZXN0LmNwcApAQCAtMzYxLDcgKzM2MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25z
dCogd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3RlZF9maWxlcyhXZWJLaXRG
aWxlQ2hvCiAgICAgICAgIEFQSTo6U3RyaW5nKiB3ZWJGaWxlTmFtZSA9IHN0YXRpY19jYXN0PEFQ
STo6U3RyaW5nKj4oc2VsZWN0ZWRGaWxlTmFtZXMtPmF0KGkpKTsKICAgICAgICAgaWYgKHdlYkZp
bGVOYW1lLT5zdHJpbmdWaWV3KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2ViRmls
ZU5hbWUtPnN0cmluZygpKTsKKyAgICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJGaWxlTmFtZS0+c3RyaW5nKCkpOwogICAgICAg
ICBnX3B0cl9hcnJheV9hZGQocmVxdWVzdC0+cHJpdi0+c2VsZWN0ZWRGaWxlcy5nZXQoKSwgZ19z
dHJkdXAoZmlsZW5hbWUuZGF0YSgpKSk7CiAgICAgfQogICAgIGdfcHRyX2FycmF5X2FkZChyZXF1
ZXN0LT5wcml2LT5zZWxlY3RlZEZpbGVzLmdldCgpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAKaW5kZXggNDI2MGVh
Yjc4MjQuLmZkMTc4MmY4YmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMzIxLDIxICszMjEsMjEgQEAgc3Rh
dGljIHZvaWQgd2Via2l0V2ViQ29udGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGJ1bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0
ZWRCdW5kbGVEaXJlY3RvcnkoKSwgSU5KRUNURURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7
CiAKICAgICBBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAg
IGNvbmZpZ3VyYXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25m
aWd1cmF0aW9uLnNldEluamVjdGVkQnVuZGxlUGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CiAg
ICAgY29uZmlndXJhdGlvbi5zZXRNYXhpbXVtUHJvY2Vzc0NvdW50KDEpOwogICAgIGNvbmZpZ3Vy
YXRpb24uc2V0RGlza0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAog
ICAgIFdlYktpdFdlYkNvbnRleHQqIHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2Jq
ZWN0KTsKICAgICBXZWJLaXRXZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnBy
aXY7CiAgICAgaWYgKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkp
KSB7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1h
bmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0
b3J5KFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
ZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5l
dHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRp
b25fY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAg
ICAgICAgY29uZmlndXJhdGlvbi5zZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIu
Z2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlz
dGljc19kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAg
ICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVj
dG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNp
dGVEYXRhTWFuYWdlci5nZXQoKSkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAg
ICAgY29uZmlndXJhdGlvbi5zZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShw
cml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24u
c2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X2luZGV4ZWRkYl9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkp
OworICAgICAgICBjb25maWd1cmF0aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNv
dXJjZV9sb2FkX3N0YXRpc3RpY3NfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5n
ZXQoKSkpKTsKICAgICB9IGVsc2UgaWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNO
dWxsKCkpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdl
YkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9y
YWdlRGlyZWN0b3J5LmRhdGEoKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3Rv
cmFnZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAg
IHByaXYtPnByb2Nlc3NQb29sID0gV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9u
KTsKIApAQCAtOTEwLDcgKzkxMCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZp
Y29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgV2Vi
S2l0V2ViQ29udGV4dFByaXZhdGUqIHByaXYgPSBjb250ZXh0LT5wcml2OwogICAgIGVuc3VyZUZh
dmljb25EYXRhYmFzZShjb250ZXh0KTsKIAotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBTdHJp
bmcgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgLy8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0ciBp
cyBwYXNzZWQgYXMgcGFyYW1ldGVyLgogICAgIGlmIChkaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkg
ewogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTkxOSw3ICs5MTksNyBAQCB2b2lkIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dAogICAgICAgICBjb25zdCBjaGFyKiBwb3J0RGlyZWN0b3J5ID0gIndwZSI7CiAjZW5k
aWYKICAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRhdGFi
YXNlIiwgbnVsbHB0cikpOwotICAgICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7Cisg
ICAgICAgIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICAgICB9CiAg
ICAgcHJpdi0+ZmF2aWNvbkRhdGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51dGY4KCk7
CiAKQEAgLTkyOCw3ICs5MjgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNv
bl9kYXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICAi
V2VicGFnZUljb25zLmRiIiwgbnVsbHB0cikpOwogCiAgICAgLy8gU2V0dGluZyB0aGUgcGF0aCB3
aWxsIGNhdXNlIHRoZSBpY29uIGRhdGFiYXNlIHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJraXRGYXZp
Y29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQoKSwgV2ViQ29yZTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgp
KSk7CisgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2Uu
Z2V0KCksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZmF2aWNvbkRhdGFiYXNlUGF0aC5nZXQoKSkpOwogCiAgICAgaWYgKHdlYmtpdF93ZWJf
Y29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dCkpCiAgICAgICAgIHdlYmtpdEZhdmljb25EYXRh
YmFzZVNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgp
LCB0cnVlKTsKQEAgLTEwMTIsNyArMTAxMiw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRlCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BM
VUdJTl9BUEkpCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQ
bHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0
aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0KIApAQCAtMTM1OCw3
ICsxMzU4LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0
b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChk
aXJlY3RvcnkpOwogCi0gICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRp
b24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5
KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vz
c1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hl
U3ViZGlyZWN0b3J5KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXgg
Y2U3Mjk0ZGZmNTkuLmZiMTk5N2E2NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAg
LTM5MCwxNSArMzkwLDE1IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURh
dGFNYW5hZ2VyR2V0RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgaWYgKCFwcml2
LT53ZWJzaXRlRGF0YVN0b3JlKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbjsKICAgICAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkgPSAhcHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9y
eS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0g
IXByaXYtPmRpc2tDYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVj
dG9yeSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRp
cmVjdG9yeSk7CiAgICAgICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSA9ICFwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IFdl
YkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5ID0gIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJl
Y3RvcnkuZ2V0KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsK
ICAgICAgICAgY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0g
IXByaXYtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJ
OjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSgpIDogV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
KSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24ocHJpdi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICAgICAgcHJp
di0+d2Vic2l0ZURhdGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5
KFdURk1vdmUoY29uZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTU2MSw3ICs1NjEsNyBAQCBjb25z
dCBnY2hhciogd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVj
dG9yeShXZWJLaXRXZWJzaXRlRAogCiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3Rvcnkp
IHsKICAgICAgICAgLy8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJk
aXJlY3RvcnkuCi0gICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1
cChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5l
dHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRp
c2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVj
dG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2Fj
aGVEaXJlY3RvcnkuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGJmMTliMGFh
YzNlLi5hNWU4NThjMzAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTY3OSw3ICs2Nzks
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3aWxsQ2xvc2VQYWdlKGNvbnN0IFdlYlBh
Z2VQcm94eSYgcGFnZSkKIAogc3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhbGxvd2VkTUlN
RVR5cGVzLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucykKIHsK
LSAgICBpZiAoIVdlYkNvcmU6OmZpbGVFeGlzdHMoZmlsZW5hbWUpKQorICAgIGlmICghV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChhbGxvd2VkTUlNRVR5cGVzLmlzRW1wdHkoKSAmJiBhbGxvd2VkRmlsZUV4
dGVuc2lvbnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggZmVlZjBjZWU0MDIuLjRhMWUzYjI0OGIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KQEAgLTM3Niw3ICszNzYsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6Omxl
Z2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKICAgICAvLyBD
dXJyZW50bHksIHRoZSB0b3AgbGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50aXRp
ZXMgcmVsYXRlZCB0byBXZWJTUUwgZGF0YWJhc2VzLgogICAgIC8vIFdlIHNob3VsZCBmaXggdGhp
cywgYW5kIG1vdmUgV2ViU1FMIGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ4MDcpCiAgICAgLy8gSW4gdGhlIG1lYW50aW1lLCBh
biBlbnRpdHkgbmFtZSBwcmVmaXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90IGNv
bmZsaWN0IHdpdGggYW55IFdlYlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCksICJfX19JbmRleGVkREIiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCksICJfX19JbmRleGVkREIiKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQ
bGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCBhMmU0ODJmZWY4Mi4uZDc2ZTEwOWU3
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBA
IC0zOTI3LDcgKzM5MjcsNyBAQCBOU0FycmF5ICpXZWJWaWV3SW1wbDo6bmFtZXNPZlByb21pc2Vk
RmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJvcERlc3RpbgogICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2aWEgLVtOU0ZpbGVXcmFwcGVyIHdy
aXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJMOmVycm9yOl0iKTsKIAogICAgIGlm
ICghbV9wcm9taXNlZFVSTC5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OnNldE1ldGFkYXRh
VVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7CiAgICAg
CiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdDpbcGF0aCBsYXN0UGF0aENvbXBv
bmVudF1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
Z2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKaW5kZXggNWFjNmZjZmY1YzYuLjkz
YmI4MWY0NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9n
bGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICAgICAgZXhlY3V0
YWJsZVBhdGguYXBwZW5kKCcyJyk7CiAjZW5kaWYKICAgICAgICAgcGx1Z2luUGF0aCA9IG1fbGF1
bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQoInBsdWdpbi1wYXRoIik7Ci0g
ICAgICAgIHJlYWxQbHVnaW5QYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBh
dGgpOworICAgICAgICByZWFsUGx1Z2luUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNl
IFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms6CkBAIC05Myw3ICs5Myw3IEBA
IHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihleGVjdXRhYmxlUGF0aCk7CisgICAgcmVhbEV4ZWN1dGFibGVQYXRoID0gRmlsZVN5c3RlbTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRoKTsKICAgICBHVW5pcXVlUHRy
PGdjaGFyPiB3ZWJraXRTb2NrZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIHNvY2tldFBhaXIuY2xp
ZW50KSk7CiAgICAgdW5zaWduZWQgbmFyZ3MgPSA0OyAvLyBzaXplIG9mIHRoZSBhcmd2IGFycmF5
IGZvciBnX3NwYXduX2FzeW5jKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggOGY1YTFkMTA4ZDkuLmZjODgzZmRl
ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF1
bmNoUHJvY2Vzcyhjb25zdCBTdHJpbmcmIGxhdW5jaFBhdGgsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBhcmd1bWVudHMsIGJvb2wmIHJlc3VsdCk7CiAgICAgdm9pZCBsYXVuY2hBcHBsaWNhdGlvbkF0
VVJMKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYXJndW1l
bnRzLCBib29sJiByZXN1bHQpOwogICAgIHZvaWQgb3BlblVSTChjb25zdCBTdHJpbmcmIHVybCwg
Ym9vbCYgcmVzdWx0LCBpbnQzMl90JiBzdGF0dXMsIFN0cmluZyYgbGF1bmNoZWRVUkxTdHJpbmcp
OwotICAgIHZvaWQgb3BlbkZpbGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCwgYm9vbCYgcmVzdWx0
KTsKKyAgICB2b2lkIEZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgs
IGJvb2wmIHJlc3VsdCk7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUGx1
Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbklu
Zm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5J
bmZvQ2FjaGUuY3BwCmluZGV4IDFiZDY1MDc5ZTVkLi5iOWIwYzJlYWUzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUu
Y3BwCkBAIC02NiwxMCArNjYsMTAgQEAgUGx1Z2luSW5mb0NhY2hlOjpQbHVnaW5JbmZvQ2FjaGUo
KQogICAgIG1fc2F2ZVRvRmlsZUlkbGUuc2V0UHJpb3JpdHkoR19QUklPUklUWV9ERUZBVUxUX0lE
TEUpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsiLCBudWxscHRyKSk7Ci0gICAg
aWYgKFdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhjYWNoZURpcmVjdG9yeS5nZXQoKSkpIHsK
KyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlRGly
ZWN0b3J5LmdldCgpKSkgewogICAgICAgICAvLyBEZWxldGUgb2xkIGNhY2hlIGZpbGUuCiAgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gb2xkQ2FjaGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVE
aXJlY3RvcnkuZ2V0KCksICJwbHVnaW5zIiwgbnVsbHB0cikpOwotICAgICAgICBXZWJDb3JlOjpk
ZWxldGVGaWxlKFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xk
Q2FjaGVQYXRoLmdldCgpKSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKIAogICAgICAgICBtX2NhY2hlUGF0aC5yZXNldChnX2J1
aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCBjYWNoZUZpbGVuYW1lRm9yQ3VycmVu
dERpc3BsYXkoKSwgbnVsbHB0cikpOwogICAgICAgICBnX2tleV9maWxlX2xvYWRfZnJvbV9maWxl
KG1fY2FjaGVGaWxlLmdldCgpLCBtX2NhY2hlUGF0aC5nZXQoKSwgR19LRVlfRklMRV9OT05FLCBu
dWxscHRyKTsKQEAgLTExMywxNCArMTEzLDE0IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQ
bHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICBpZiAo
IVdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RNb2RpZmll
ZCkpCisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
dGltZV90IGNhY2hlZExhc3RNb2RpZmllZCA9IHN0YXRpY19jYXN0PHRpbWVfdD4oZ19rZXlfZmls
ZV9nZXRfdWludDY0KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJtdGlt
ZSIsIG51bGxwdHIpKTsKICAgICBpZiAobGFzdE1vZGlmaWVkICE9IGNhY2hlZExhc3RNb2RpZmll
ZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRo
OwotICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBXZWJDb3JlOjpwYXRoR2V0RmlsZU5hbWUocGx1Z2lu
UGF0aCk7CisgICAgcGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhH
ZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyaW5nVmFs
dWUoZ19rZXlfZmlsZV9nZXRfc3RyaW5nKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5k
YXRhKCksICJuYW1lIiwgbnVsbHB0cikpOwogICAgIHBsdWdpbi5pbmZvLm5hbWUgPSBTdHJpbmc6
OmZyb21VVEY4KHN0cmluZ1ZhbHVlLmdldCgpKTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBib29sIFBs
dWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBs
dWdpbk1vZHVsZUluZm8mCiB2b2lkIFBsdWdpbkluZm9DYWNoZTo6dXBkYXRlUGx1Z2luSW5mbyhj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikK
IHsKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAgIGlmICghV2ViQ29yZTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSkKKyAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RN
b2RpZmllZCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcgcGx1Z2luR3JvdXAgPSBw
bHVnaW5QYXRoLnV0ZjgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAppbmRleCAzYjdlZjM4MWE3
My4uMDg0ZjZkZWJiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTU2LDEwICs1Niwx
MCBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpblBhdGhzSW5EaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0
OwogICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAgIGZvciAoY29uc3QgYXV0
byYgcGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBTdHJpbmcoIiouc28iKSkpIHsKLSAg
ICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRp
cmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpKSB7CisgICAgICAgIENTdHJpbmcgZmlsZW5hbWUgPSBG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgICAgIGlmIChy
ZWFscGF0aChmaWxlbmFtZS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRoKSkKLSAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihub3JtYWxpemVk
UGF0aCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBQbHVnaW5JbmZvU3RvcmU6Omdl
dFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIFN0cmluZyBwbHVnaW5Q
cm9jZXNzUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7CiAgICAgICAgICAg
ICBwbHVnaW5Qcm9jZXNzUGF0aC5hcHBlbmQoJzInKTsKLSAgICAgICAgICAgIGlmICghZmlsZUV4
aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCisgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMocGx1Z2luUHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKaW5kZXgg
Mjc2NjkyYmQ5MTIuLmVhMGFhMDExODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAjZW5kaWYKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1NfR1RLMikKICAgICAgICAgcGx1Z2luUHJvY2Vzc1BhdGguYXBw
ZW5kKCcyJyk7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCisg
ICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC05OCw4ICs5OCw4IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2FuUGx1Z2luKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAgICAgfQogI2VuZGlmCiAK
LSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2lu
UHJvY2Vzc1BhdGgpOwotICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJpbmcgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblByb2Nlc3NQYXRoKTsKKyAg
ICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBsdWdpblBhdGgpOwogICAgIGNoYXIqIGFyZ3ZbNF07CiAgICAgYXJndlswXSA9
IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKICAgICBhcmd2WzFdID0gY29u
c3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlLmNwcAppbmRleCAxMjQ4YWVmNjEyMy4uZDFkZmY0Zjk2OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgYm9vbCBo
YXNGaWxlQ2hhbmdlZFNpbmNlKGNvbnN0IFN0cmluZyYgcGF0aCwgV2FsbFRpbWUgc2luY2UpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgdGltZV90IG1vZGlmaWNhdGlv
blRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRp
b25UaW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBh
dGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSkgPiBzaW5jZTsKQEAg
LTU1LDI2ICs1NSwyNiBAQCBzdGF0aWMgYm9vbCBoYXNGaWxlQ2hhbmdlZFNpbmNlKGNvbnN0IFN0
cmluZyYgcGF0aCwgV2FsbFRpbWUgc2luY2UpCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEtleWVk
RGVjb2Rlcj4gY3JlYXRlRGVjb2RlckZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGF1dG8gaGFuZGxlID0gb3BlbkFuZExv
Y2tGaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuQW5kTG9j
a0ZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmIChoYW5kbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKICAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgIGlmICghZ2V0RmlsZVNp
emUoaGFuZGxlLCBmaWxlU2l6ZSkpIHsKLSAgICAgICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRs
ZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShoYW5kbGUsIGZpbGVTaXplKSkg
eworICAgICAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgc2l6ZV90IGJ5dGVzVG9SZWFkOwogICAg
IGlmICghV1RGOjpjb252ZXJ0U2FmZWx5KGZpbGVTaXplLCBieXRlc1RvUmVhZCkpIHsKLSAgICAg
ICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OnVubG9j
a0FuZENsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
ICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyKGJ5dGVzVG9SZWFkKTsKLSAgICBzaXplX3QgdG90YWxC
eXRlc1JlYWQgPSByZWFkRnJvbUZpbGUoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6
ZSgpKTsKKyAgICBzaXplX3QgdG90YWxCeXRlc1JlYWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZp
bGUoaGFuZGxlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKIAotICAgIHVubG9ja0Fu
ZENsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZSho
YW5kbGUpOwogCiAgICAgaWYgKHRvdGFsQnl0ZXNSZWFkICE9IGJ5dGVzVG9SZWFkKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTExMiw3ICsxMTIsNyBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpyZXNvdXJjZUxvZ0ZpbGVQYXRoKCkgY29uc3QK
ICAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZVBhdGgs
ICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VQYXRoLCAiZnVsbF9i
cm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CiB9CiAKIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdGFydE1vbml0b3JpbmdEaXNrKCkKQEAg
LTE0NSw4ICsxNDUsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKQogICAgIFN0cmluZyBzdG9y
YWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CiAgICAgQVNTRVJUKCFzdG9yYWdlUGF0
aC5pc0VtcHR5KCkpOwogCi0gICAgaWYgKCFmaWxlRXhpc3RzKHN0b3JhZ2VQYXRoKSkgewotICAg
ICAgICBpZiAoIW1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCkpIHsKKyAgICBpZiAoIUZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZVBhdGgpKSB7CisgICAgICAgIGlmICghRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKSkgewogICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgcGF0aCAl
cyIsIHN0b3JhZ2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICAg
ICAgU3RyaW5nIHJlc291cmNlTG9nUGF0aCA9IHJlc291cmNlTG9nRmlsZVBhdGgoKTsKICAgICAg
ICAgQVNTRVJUKCFyZXNvdXJjZUxvZ1BhdGguaXNFbXB0eSgpKTsKIAotICAgICAgICBpZiAoIWZp
bGVFeGlzdHMocmVzb3VyY2VMb2dQYXRoKSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKHJlc291cmNlTG9nUGF0aCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
bV9maWxlTW9uaXRvciA9IG51bGxwdHI7CkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9t
RGlzaygpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBTdHJpbmcgZmls
ZVBhdGggPSByZXNvdXJjZUxvZ0ZpbGVQYXRoKCk7Ci0gICAgaWYgKGZpbGVQYXRoLmlzRW1wdHko
KSB8fCAhZmlsZUV4aXN0cyhmaWxlUGF0aCkpIHsKKyAgICBpZiAoZmlsZVBhdGguaXNFbXB0eSgp
IHx8ICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKSkgewogICAgICAgICBtX21lbW9y
eVN0b3JlLmdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwogICAgICAgICBtb25pdG9y
RGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpOwogICAgICAgICByZXR1cm47CkBAIC0yNTgsMTYg
KzI1OCwxNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6
d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiAKICAgICBhdXRvIHN0b3JhZ2VQYXRoID0gc3RvcmFn
ZURpcmVjdG9yeVBhdGgoKTsKICAgICBpZiAoIXN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkgewotICAg
ICAgICBtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpOwogICAgICAgICBleGNsdWRlRnJvbUJh
Y2t1cCgpOwogICAgIH0KIAotICAgIGF1dG8gaGFuZGxlID0gb3BlbkFuZExvY2tGaWxlKHJlc291
cmNlTG9nRmlsZVBhdGgoKSwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoaGFuZGxlID09IGludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVu
QW5kTG9ja0ZpbGUocmVzb3VyY2VMb2dGaWxlUGF0aCgpLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3Jp
dGUpOworICAgIGlmIChoYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0
ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKLSAgICB1
bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5z
aXplKCkpOworICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwogCiAg
ICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYXdEYXRhLT5zaXpl
KCkpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOiBXZSBvbmx5IHdyb3RlICVk
IG91dCBvZiAlenUgYnl0ZXMgdG8gZGlzayIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPih3cml0dGVu
Qnl0ZXMpLCByYXdEYXRhLT5zaXplKCkpOwpAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjbGVhcigpCiAKICAgICBzdG9wTW9u
aXRvcmluZ0Rpc2soKTsKIAotICAgIGlmICghZGVsZXRlRmlsZShmaWxlUGF0aCkpCisgICAgaWYg
KCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKSkKICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTogVW5hYmxlIHRvIGRlbGV0ZSBzdGF0aXN0aWNzIGZpbGU6ICVzIiwgZmls
ZVBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggYTQ1
NDA4MWI3MGUuLjgyNjE1OGZiMTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtODUsNyAr
ODUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpvcGVuRGF0YWJhc2UoRGF0YWJhc2VP
cGVuaW5nU3RyYXRlZ3kgb3BlbmluZ1N0cmF0ZWd5KQogCiBib29sIExvY2FsU3RvcmFnZURhdGFi
YXNlOjp0cnlUb09wZW5EYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVneSBvcGVuaW5nU3Ry
YXRlZ3kpCiB7Ci0gICAgaWYgKCFmaWxlRXhpc3RzKG1fZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5n
U3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG1fZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhp
c3RlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZGF0YWJhc2VQYXRoLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDE5YjIy
OWY2YjUzLi5iOWNhODlmOGFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNw
cApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGVs
ZXRlQWxsRGF0YWJhc2VzKCkKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQg
PSBzdGF0ZW1lbnQuc3RlcCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGRlbGV0ZUZpbGUo
c3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICAvLyBGSVhNRTogQ2Fs
bCBvdXQgdG8gdGhlIGNsaWVudC4KICAgICB9CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBMb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCiAgICAgaWYgKG1f
ZGF0YWJhc2UuaXNPcGVuKCkpCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKIAotICAgIGlm
ICghZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsKICAgICAgICAgLy8gSW4g
dGhlIGNhc2Ugd2hlcmUgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlbGV0ZSB0aGUgZGF0YWJhc2Ug
ZmlsZSAoZS5nIHNvbWUgb3RoZXIgcHJvZ3JhbQogICAgICAgICAvLyBsaWtlIGEgdmlydXMgc2Nh
bm5lciBpcyBhY2Nlc3NpbmcgaXQpLCBtYWtlIHN1cmUgdG8gcmVtb3ZlIGFsbCBlbnRyaWVzLgog
ICAgICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKFNraXBJZk5vbkV4aXN0ZW50KTsKQEAgLTEyNCwx
OSArMTI0LDE5IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZWxldGVBbGxE
YXRhYmFzZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgZGVsZXRlRW1wdHlEaXJlY3Rvcnko
bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9u
YWw8dGltZV90PiBmaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAg
ICAgdGltZV90IHRpbWU7Ci0gICAgcmV0dXJuIGdldEZpbGVDcmVhdGlvblRpbWUoZmlsZVBhdGgs
IHRpbWUpID8gdGltZSA6IHN0ZDo6b3B0aW9uYWw8dGltZV90PihzdGQ6Om51bGxvcHQpOworICAg
IHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSA/
IHRpbWUgOiBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4oc3RkOjpudWxsb3B0KTsKIH0KIAogc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcm
IGZpbGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIGlmICghZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCiAgICAgcmV0dXJuIHRpbWU7CkBAIC0yMDksNyArMjA5LDcgQEAgVmVjdG9yPExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gTG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjoKIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJh
c2VQYXRoKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFtYWtlQWxs
RGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSB7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSB7CiAgICAg
ICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0
aCAlcyIsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBAIFN0cmluZyBMb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1l
KSBjb25zdAogICAgIHBsYXRmb3JtTWF5YmVFeGNsdWRlRnJvbUJhY2t1cCgpOwogI2VuZGlmCiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5LCBmaWxlbmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgZmlsZW5hbWUpOwogfQogCiBTdHJpbmcg
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKCkgY29uc3QK
QEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6b3Bl
blRyYWNrZXJEYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVneSBvcAogCiAgICAgU3RyaW5n
IGRhdGFiYXNlUGF0aCA9IHRyYWNrZXJEYXRhYmFzZVBhdGgoKTsKIAotICAgIGlmICghZmlsZUV4
aXN0cyhkYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVu
dCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSAmJiBvcGVu
aW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV9kYXRhYmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKQEAgLTI3OSw3ICsyNzksNyBA
QCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6aW1wb3J0T3JpZ2luSWRlbnRpZmll
cnMoKQogCiB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dXBkYXRlVHJhY2tlckRh
dGFiYXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRmlsZXMoKQogewotICAgIFZlY3RvcjxTdHJp
bmc+IHBhdGhzID0gbGlzdERpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgIioubG9j
YWxzdG9yYWdlIik7CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCAiKi5sb2NhbHN0b3JhZ2UiKTsKIAog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zKG1fb3JpZ2lucyk7CiAgICAgSGFzaFNldDxTdHJp
bmc+IG9yaWdpbnNGcm9tTG9jYWxTdG9yYWdlRGF0YWJhc2VGaWxlczsKQEAgLTI5MCw3ICsyOTAs
NyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dXBkYXRlVHJhY2tlckRhdGFi
YXNlRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRgogICAgICAgICBpZiAoIXBhdGguZW5kc1dpdGgo
Ii5sb2NhbHN0b3JhZ2UiKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICAgICAgU3RyaW5nIGZpbGVu
YW1lID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpOwogCiAgICAgICAgIFN0cmlu
ZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIGZpbGVuYW1lLmxlbmd0
aCgpIC0gc3RybGVuKCIubG9jYWxzdG9yYWdlIikpOwogCkBAIC0zNjAsNyArMzYwLDcgQEAgdm9p
ZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURhdGFiYXNlV2l0aE9yaWdpbklk
ZW50aWZpZXIoY29uc3QgU3RyaW4KICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIG9yaWdpbnMgbGVm
dDsgZGVsZXRlIHRoZSB0cmFja2VyIGRhdGFiYXNlLgogICAgICAgICBtX2RhdGFiYXNlLmNsb3Nl
KCk7CiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZSh0cmFja2Vy
RGF0YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX2xvY2FsU3Rv
cmFnZURpcmVjdG9yeSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGVsbCBj
bGllbnRzIHRoYXQgdGhlIG9yaWdpbiB3YXMgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRh
U3RvcmVDb2NvYS5tbQppbmRleCA4ZDY1YmJlNDUwMy4uNDI4MDgxOGQ1YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTczLDcgKzczLDcgQEAgV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgcGFyYW1l
dGVycy5wZW5kaW5nQ29va2llcyA9IGNvcHlUb1ZlY3RvcihtX3BlbmRpbmdDb29raWVzKTsKIAog
ICAgIGlmICghY29va2llRmlsZS5pc0VtcHR5KCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3JlOjpkaXJlY3RvcnlOYW1l
KGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VQYXRoRXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGly
ZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBh
cmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgaWYgKCFt
X2NvbmZpZ3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5LmlzTnVsbCgpKSB7CiAgICAgICAg
IHBhcmFtZXRlcnMuY2FjaGVTdG9yYWdlRGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLmNhY2hl
U3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggOTdkMmJhY2EyZWYuLmU1OTE2
MWU0NjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTI0LDggKzEyNCw4IEBAIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3NhcnkoKQogCiAgICAgLy8gUmVz
b2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRocy4KICAgICBpZiAoIW1fY29uZmlndXJhdGlv
bi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yZXNvbHZlZENvbmZp
Z3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSByZXNvbHZlQW5kQ3JlYXRlUmVhZFdyaXRlRGly
ZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKG1fY29uZmln
dXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOwotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJh
dGlvbi5jb29raWVTdG9yYWdlRmlsZSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSwgV2ViQ29yZTo6cGF0
aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOworICAgICAg
ICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9IHJlc29sdmVBbmRD
cmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlKSk7
CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25m
aWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlKSk7CiAgICAgfQogfQog
CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBWZWN0b3I8UGx1Z2luTW9kdWxlSW5mbz4gV2Vic2l0ZURh
dGFTdG9yZTo6cGx1Z2lucygpIGNvbnN0CiAKIHN0YXRpYyBTdHJpbmcgY29tcHV0ZU1lZGlhS2V5
RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5KQogewotICAgIHJldHVybiBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJlY3RvcnksICJTZWN1cmVT
dG9wLnBsaXN0Iik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0K
IAogVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6
bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkK
QEAgLTEyNTcsMTIgKzEyNTcsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmkKIAogICAgIFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7CiAKLSAgICBmb3IgKGNv
bnN0IGF1dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGgg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFL
ZXlGaWxlKG9yaWdpblBhdGgpOwotICAgICAgICBpZiAoIVdlYkNvcmU6OmZpbGVFeGlzdHMobWVk
aWFLZXlGaWxlKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KG1lZGlhS2V5RmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIG1l
ZGlhS2V5SWRlbnRpZmllciA9IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsK
KyAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CiAKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlP
cmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZp
ZXIobWVkaWFLZXlJZGVudGlmaWVyKSkKICAgICAgICAgICAgIG9yaWdpbnMuYXBwZW5kKCpzZWN1
cml0eU9yaWdpbik7CkBAIC0xMjc1LDE4ICsxMjc1LDE4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSwKIHsKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKTsK
IAotICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3RvcnkgOiBXZWJDb3JlOjpsaXN0
RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7CiAgICAgICAgIGF1dG8g
bWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtleURpcmVjdG9yeSk7CiAK
ICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2RpZmljYXRpb25UaW1lKSkK
KyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShtZWRpYUtleUZpbGUsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OmZyb21fdGltZV90KG1v
ZGlmaWNhdGlvblRpbWUpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2Vi
Q29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5
KTsKICAgICB9CiB9CiAKQEAgLTEyOTUsMTEgKzEyOTUsMTEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0
b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwog
CiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Ci0gICAgICAgIGF1dG8g
bWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAg
ICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmlnaW4uZGF0
YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVN
ZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0
ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3Rv
cnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IGM1
OTVkNTZkZjM5Li5iNGExNzIzOWY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRKYXZhU2NyaXB0
Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gamF2YVNj
cmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFf
ZGlyKCksICJ3ZWJraXRndGsiLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihqYXZh
U2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENv
cmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDJkMDI3MjFmNzExLi5kZmVm
NThiMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRp
c2soY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb25SYXco
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgY29uc3QgdWludDhfdCogZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25z
dCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgLy8gRklYTUU6IFdyaXRlIG9yaWdpbmF0aW5nVVJM
U3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1ldGFkYXRhIChwZXJoYXBzIFdl
YkNvcmU6OnNldE1ldGFkYXRhVVJMKCk/KS4KKyAgICAvLyBGSVhNRTogV3JpdGUgb3JpZ2luYXRp
bmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0YWRhdGEgKHBlcmhh
cHMgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwoKT8pLgogICAgIFVOVVNFRF9Q
QVJBTShvcmlnaW5hdGluZ1VSTFN0cmluZyk7CiAKICAgICBpZiAoIXN1Z2dlc3RlZEZpbGVuYW1l
LmVuZHNXaXRoKCIucGRmIiwgZmFsc2UpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcAppbmRleCBlNTIyYTU5NTU4ZC4uNzNkODAxYmE5
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9v
bFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29s
V1BFLmNwcApAQCAtODAsMTMgKzgwLDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
SW5pdGlhbGl6ZSgpCiBXVEY6OlN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1E
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hh
cj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2Rpcigp
LCAid3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJp
bmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFdURjo6U3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0
X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNoZSIsIG51bGxwdHIpKTsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURp
cmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0xMDIsMzcgKzEwMiwzNyBAQCB2
b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVDb250ZXh0KCkKIFN0cmluZyBX
ZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsIG51bGxw
dHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3Rv
cnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVm
YXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFy
PiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJf
ZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFzZXMiLCAiaW5kZXhlZGRiIiwgbnVsbHB0cikpOwot
ICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihpbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRh
X2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5
LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5n
IFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIm1lZGlh
a2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQog
ewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJjYWNoZSIsIG51bGxwdHIpKTsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXNr
Q2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQo
KSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0SmF2
YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+
IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNl
cl9kYXRhX2RpcigpLCAid3BlIiwgIkphdmFTY3JpcHRDb3JlRGVidWciLCBudWxscHRyKSk7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2
YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGphdmFTY3JpcHRD
b3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5z
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5kZXggZGNmMTNjMWY1MzcuLmFh
YzI4MjgwY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1h
bmFnZXIuY3BwCkBAIC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OldlYktp
dEV4dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNjYW5N
b2R1bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgVmVjdG9yPFN0cmlu
Zz4mIG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3Jl
OjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxp
c3REaXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgaWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQorICAgICAgICBpZiAo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCiAgICAgICAg
ICAgICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAgfQogfQpAQCAtNjMsNyAr
NjMsNyBAQCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
U3RyaW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJpYW50KiBkYXRhID0gbnVs
bHB0cjsKICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIobSZzbXYpIiwgJmRpcmVj
dG9yeSwgJmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKKyAgICB3ZWJFeHRl
bnNpb25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRpYWxpemF0aW9uVXNlckRhdGEg
PSBhZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIu
Y3BwCmluZGV4IGEyMGE1ZmU0MjIzLi5jZmZhOGZjNGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9Jbmpl
Y3RlZEJ1bmRsZUdsaWIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmLCBBUEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKIHsKLSAg
ICBtX3BsYXRmb3JtQnVuZGxlID0gZ19tb2R1bGVfb3BlbihmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24obV9wYXRoKS5kYXRhKCksIEdfTU9EVUxFX0JJTkRfTE9DQUwpOworICAgIG1fcGxhdGZvcm1C
dW5kbGUgPSBnX21vZHVsZV9vcGVuKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihtX3BhdGgpLmRhdGEoKSwgR19NT0RVTEVfQklORF9MT0NBTCk7CiAgICAgaWYgKCFtX3BsYXRm
b3JtQnVuZGxlKSB7CiAgICAgICAgIGdfd2FybmluZygiRXJyb3IgbG9hZGluZyB0aGUgaW5qZWN0
ZWQgYnVuZGxlICglcyk6ICVzIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCksIGdfbW9kdWxlX2Vycm9y
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIu
Y3BwCmluZGV4IGZiN2Y5YzZjYTc2Li45ZjhlYWYzOTA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3RyaW5nIFdlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXI6Om1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUZvck9yaWdpbihjb25zdCBTZWN1cmkK
ICAgICBpZiAoIW1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9tZWRp
YUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9tZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQog
CiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpn
ZXRNZWRpYUtleU9yaWdpbnMoKQpAQCAtNjIsNyArNjIsNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmln
aW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQog
ICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGly
ZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOworICAgIFZlY3RvcjxTdHJp
bmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBv
cmlnaW5QYXRocykgewogICAgICAgICBVUkwgdXJsOwogICAgICAgICB1cmwuc2V0UHJvdG9jb2wo
QVNDSUlMaXRlcmFsKCJmaWxlIikpOwpAQCAtODIsMjUgKzgyLDI1IEBAIFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lu
cygpCiAKIHN0YXRpYyB2b2lkIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgo
Y29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0
ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYUtleVBhdGhzID0gbGlzdERpcmVjdG9yeShv
cmlnaW5QYXRoLCAiKiIpOworICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhS2V5UGF0aHMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CiAKICAgICBmb3IgKGNvbnN0
IGF1dG8mIG1lZGlhS2V5UGF0aCA6IG1lZGlhS2V5UGF0aHMpIHsKLSAgICAgICAgU3RyaW5nIG1l
ZGlhS2V5RmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleVBhdGgsICJTZWN1
cmVTdG9wLnBsaXN0Iik7CisgICAgICAgIFN0cmluZyBtZWRpYUtleUZpbGUgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlQYXRoLCAiU2VjdXJlU3RvcC5wbGlz
dCIpOwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQorICAgICAgICBp
ZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIHRpbWVfdCBtb2RUaW1lOwotICAgICAgICBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOworICAgICAgICBGaWxlU3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOwogCiAgICAgICAg
IGlmIChtb2RUaW1lIDwgc3RhcnREYXRlIHx8IG1vZFRpbWUgPiBlbmREYXRlKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAg
ICBkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleVBhdGgpOworICAgICAgICBGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG1lZGlhS2V5UGF0aCk7CiAgICAgfQogICAgIAotICAgIGRlbGV0ZUVtcHR5
RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0
b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbkRhdGEpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhkb3VibGUKICAg
ICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3RvcnkobV9t
ZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2lu
UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0
b3J5LCAiKiIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAg
ICAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIHN0
YXJ0RGF0ZSwgZW5kRGF0ZSk7CiB9CkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBXZWJNZWRpYUtl
eVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVudHJpZXMoKQogICAgIGlmIChtX21l
ZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7
CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpCiAgICAgICAgIHJlbW92
ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RkOjpudW1lcmlj
X2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKaW5kZXggMDM3MThh
MjczMGEuLjE4ZmU5Y2JmMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3Bw
CkBAIC00NSw3ICs0NSw3IEBAIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBsdWdpblN0
cmVhbShSZWY8TmV0c2NhcGVQbHVnaW4+JiYgcGx1Z2luLCB1aW50NjRfCiAgICAgLCBtX25wU3Ry
ZWFtKCkKICAgICAsIG1fdHJhbnNmZXJNb2RlKE5QX05PUk1BTCkKICAgICAsIG1fb2Zmc2V0KDAp
Ci0gICAgLCBtX2ZpbGVIYW5kbGUoaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAsIG1f
ZmlsZUhhbmRsZShGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICwg
bV9pc1N0YXJ0ZWQoZmFsc2UpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICwgbV91cmxOb3Rp
ZnlIYXNCZWVuQ2FsbGVkKGZhbHNlKQpAQCAtNTksNyArNTksNyBAQCBOZXRzY2FwZVBsdWdpblN0
cmVhbTo6fk5ldHNjYXBlUGx1Z2luU3RyZWFtKCkKIHsKICAgICBBU1NFUlQoIW1faXNTdGFydGVk
KTsKICAgICBBU1NFUlQoIW1fc2VuZE5vdGlmaWNhdGlvbiB8fCBtX3VybE5vdGlmeUhhc0JlZW5D
YWxsZWQpOwotICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSk7CisgICAgQVNTRVJUKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKIH0KIAogdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNl
bmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJlc3Bv
bnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25zZVN0YXR1cykKQEAgLTI2MywxMiArMjYzLDEyIEBA
IHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9QbHVnaW4oKQogCiB2b2lk
IE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRl
cywgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAobV9maWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUgJiYgbV9maWxlUGF0aC5pc051bGwoKSkgeworICAgIGlmIChtX2ZpbGVIYW5k
bGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRo
LmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgotICAgICAg
ICBtX2ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIldlYktpdFBsdWdpblN0cmVhbSIsIG1f
ZmlsZUhhbmRsZSk7CisgICAgICAgIG1fZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9y
YXJ5RmlsZSgiV2ViS2l0UGx1Z2luU3RyZWFtIiwgbV9maWxlSGFuZGxlKTsKIAogICAgICAgICAv
LyBXZSBmYWlsZWQgdG8gb3BlbiB0aGUgZmlsZSwgc3RvcCB0aGUgc3RyZWFtLgotICAgICAgICBp
ZiAobV9maWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAg
aWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgICAgICBzdG9wKE5QUkVTX05FVFdPUktfRVJSKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMjc3LDEwICsyNzcsMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
blN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgp
CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBieXRlQ291bnQg
PSB3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOworICAgIGludCBieXRl
Q291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5n
dGgpOwogICAgIGlmIChieXRlQ291bnQgIT0gbGVuZ3RoKSB7CiAgICAgICAgIC8vIFRoaXMgaGFw
cGVucyBvbmx5IHJhcmVseSwgd2hlbiB3ZSBhcmUgb3V0IG9mIGRpc2sgc3BhY2Ugb3IgaGF2ZSBh
IGRpc2sgSS9PIGVycm9yLgotICAgICAgICBjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAKICAgICAgICAgc3RvcChO
UFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpAQCAtMzE0LDIzICszMTQsMjMgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdpblN0cmVhbTo6c3RvcChOUFJlYXNvbiByZWFzb24pCiAgICAgICAgIGlmIChyZWFz
b24gPT0gTlBSRVNfRE9ORSkgewogICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGZpbGUg
aXMgY3JlYXRlZC4KICAgICAgICAgICAgIGRlbGl2ZXJEYXRhVG9GaWxlKDAsIDApOwotICAgICAg
ICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAg
ICAgICAgICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKG1f
ZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAg
ICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBBU1NFUlQoIW1fZmlsZVBhdGguaXNOdWxsKCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBtX3BsdWdpbi0+TlBQX1N0cmVhbUFzRmlsZSgmbV9ucFN0cmVh
bSwgbV9maWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIEp1c3QgY2xvc2UgdGhlIGZpbGUuCi0gICAgICAgICAgICBpZiAobV9maWxlSGFuZGxl
ICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgICAgICAgICAgY2xvc2VGaWxl
KG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICBpZiAobV9maWxlSGFuZGxlICE9IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBEZWxl
dGUgdGhlIGZpbGUgYWZ0ZXIgY2FsbGluZyBOUFBfU3RyZWFtQXNGaWxlKCksIGluc3RlYWQgb2Yg
aW4gdGhlIGRlc3RydWN0b3IuICBJdCBzaG91bGQgYmUgT0sKICAgICAgICAgLy8gdG8gZGVsZXRl
IHRoZSBmaWxlIGhlcmUgLS0gTlBQX1N0cmVhbUFzRmlsZSgpIGlzIGFsd2F5cyBjYWxsZWQgaW1t
ZWRpYXRlbHkgYmVmb3JlIE5QUF9EZXN0cm95U3RyZWFtKCkKICAgICAgICAgLy8gKHRoZSBzdHJl
YW0gZGVzdHJ1Y3Rpb24gZnVuY3Rpb24pLCBzbyB0aGVyZSBjYW4gYmUgbm8gZXhwZWN0YXRpb24g
dGhhdCBhIHBsdWdpbiB3aWxsIHJlYWQgdGhlIHN0cmVhbQogICAgICAgICAvLyBmaWxlIGFzeW5j
aHJvbm91c2x5IGFmdGVyIE5QUF9TdHJlYW1Bc0ZpbGUoKSBpcyBjYWxsZWQuCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9m
aWxlUGF0aCk7CiAgICAgICAgIG1fZmlsZVBhdGggPSBTdHJpbmcoKTsKIAogICAgICAgICAvLyBO
UFBfU3RyZWFtQXNGaWxlIGNvdWxkIGNhbGwgTlBOX0Rlc3Ryb3lTdHJlYW0gYW5kIGRlc3Ryb3kg
dGhlIHN0cmVhbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCmluZGV4IDM2NzgwOTc4
OTAxLi40MDc0MDc4ZDdhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oCkBAIC05
Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgaW50MzJfdCBtX29mZnNldDsKIAogICAgIFN0cmlu
ZyBtX2ZpbGVQYXRoOwotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5k
bGU7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhh
bmRsZTsKICAgICAKICAgICAvLyBXaGV0aGVyIE5QUF9OZXdTdHJlYW0gaGFzIHN1Y2Nlc3NmdWxs
eSBiZWVuIGNhbGxlZC4KICAgICBib29sIG1faXNTdGFydGVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0
ZUNvbnZlcnNpb24uY3BwCmluZGV4IDgwMjQxYzk1ZTFhLi4xYWUyYzNjOGI3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNv
bnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgSFRU
UEJvZHkgdG9IVFRQQm9keShjb25zdCBGb3JtRGF0YSYgZm9ybURhdGEpCiAgICAgICAgICAgICBl
bGVtZW50LmZpbGVTdGFydCA9IGZvcm1EYXRhRWxlbWVudC5tX2ZpbGVTdGFydDsKICAgICAgICAg
ICAgIGlmIChmb3JtRGF0YUVsZW1lbnQubV9maWxlTGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9F
bmRPZkZpbGUpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5maWxlTGVuZ3RoID0gZm9ybURhdGFF
bGVtZW50Lm1fZmlsZUxlbmd0aDsKLSAgICAgICAgICAgIGlmIChmb3JtRGF0YUVsZW1lbnQubV9l
eHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IGludmFsaWRGaWxlVGltZSgpKQorICAgICAg
ICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUg
IT0gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1lKCkpCiAgICAgICAgICAgICAgICAgZWxlbWVu
dC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZm9ybURhdGFFbGVtZW50Lm1fZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xMzQsNyAr
MTM0LDcgQEAgc3RhdGljIFJlZjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYg
aHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpF
bGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5n
ZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3Ro
LnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmls
ZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoaW52YWxpZEZpbGVUaW1lKCkpKTsKKyAgICAgICAg
ICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5m
aWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0ZW06OnRvRW5k
T2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLnZhbHVlX29yKEZp
bGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxv
ZwppbmRleCBiZjMyODVmOTA1ZC4uOWFjZTIyZTNhYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTctMTAtMzEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlk
QHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRvIEZpbGVT
eXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKiBTdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHA6CisgICAgICAgICogU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6
CisKIDIwMTctMTAtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzI3MS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggYmExNWU0YTRkYTAuLjQw
Mzk5NjBiMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZUFyZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpvcGVu
RGF0YWJhc2UoT3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdTdHJhdGVneSkKIAogICAgIFN0
cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5h
bWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwogCi0gICAgaWYgKCFmaWxlRXhpc3RzKGRhdGFiYXNl
RmlsZW5hbWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlbmFtZSkgJiYgb3BlbmluZ1N0
cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
ZGF0YWJhc2VGaWxlbmFtZS5pc0VtcHR5KCkpIHsKQEAgLTUyMSw3ICs1MjEsNyBAQCB2b2lkIFN0
b3JhZ2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9z
eW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5hbWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwot
ICAgICAgICAgICAgaWYgKCFkZWxldGVGaWxlKGRhdGFiYXNlRmlsZW5hbWUpKQorICAgICAgICAg
ICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFiYXNlRmlsZW5hbWUpKQogICAgICAg
ICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlbGV0ZSBkYXRhYmFzZSBmaWxlICVzXG4i
LCBkYXRhYmFzZUZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApp
bmRleCBlZGM5ZWIzM2M1MC4uM2U4ZmY2NWVlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwCkBAIC01NSwxMiArNTUsMTIgQEAg
U3RvcmFnZVN5bmNNYW5hZ2VyOjp+U3RvcmFnZVN5bmNNYW5hZ2VyKCkKIC8vIENhbGxlZCBvbiBh
IGJhY2tncm91bmQgdGhyZWFkLgogU3RyaW5nIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZnVsbERhdGFi
YXNlRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7Ci0gICAgaWYg
KCFtYWtlQWxsRGlyZWN0b3JpZXMobV9wYXRoKSkgeworICAgIGlmICghRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKG1fcGF0aCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGVkIHRv
IGNyZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIG1fcGF0aC51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIHJldHVybiBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9wYXRoLCBkYXRhYmFzZUlkZW50aWZpZXIgKyAiLmxvY2Fs
c3RvcmFnZSIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobV9wYXRoLCBkYXRhYmFzZUlkZW50aWZpZXIgKyAiLmxvY2Fsc3RvcmFnZSIpOwogfQogCiB2
b2lkIFN0b3JhZ2VTeW5jTWFuYWdlcjo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5j
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3Bw
CmluZGV4IDEzMjZjN2QxOTM5Li5kNWU1Zjc0NzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0xMDQsMTUgKzEwNCwxNSBAQCBTdG9y
YWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKIFN0
cmluZyBTdG9yYWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0aCgpCiB7CiAgICAgQVNTRVJU
KCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygpKTsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICJTdG9yYWdlVHJhY2tlci5kYiIpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdl
RGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFja2VyLmRiIik7CiB9CiAKIHN0YXRpYyBib29sIGVu
c3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNyZWF0
ZUlmRG9lc05vdEV4aXN0KQogewogICAgIGlmIChjcmVhdGVJZkRvZXNOb3RFeGlzdCkKLSAgICAg
ICAgcmV0dXJuIG1ha2VBbGxEaXJlY3RvcmllcyhkaXJlY3RvcnlOYW1lKGZpbGVOYW1lKSk7Cisg
ICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSkpOwogCi0gICAgcmV0dXJuIGZpbGVFeGlzdHMoZmlsZU5h
bWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVOYW1lKTsKIH0KIAog
dm9pZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRhYmFzZShib29sIGNyZWF0ZUlmRG9l
c05vdEV4aXN0KQpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNG
aWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsK
ICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7Ci0gICAg
ICAgIHBhdGhzID0gbGlzdERpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiKi5sb2Nh
bHN0b3JhZ2UiKTsKKyAgICAgICAgcGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1f
c3RvcmFnZURpcmVjdG9yeVBhdGgsICIqLmxvY2Fsc3RvcmFnZSIpOwogICAgIH0KIAogICAgIC8v
IFVzZSBhIGNvcHkgb2YgbV9vcmlnaW5TZXQgdG8gZmluZCBleHBpcmVkIGVudHJpZXMgYW5kIHRv
IHNjaGVkdWxlIHRoZWlyCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6
c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgICAgICBjb25zdCBTdHJpbmcm
IHBhdGggPSAqaXQ7CiAKICAgICAgICAgaWYgKHBhdGgubGVuZ3RoKCkgPiBmaWxlRXh0ZW5zaW9u
Lmxlbmd0aCgpICYmIHBhdGguZW5kc1dpdGgoZmlsZUV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IFN0cmluZyBmaWxlID0gcGF0aEdldEZpbGVOYW1lKHBhdGgpOworICAgICAgICAgICAgU3RyaW5n
IGZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCk7CiAgICAgICAgICAgICBT
dHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGUuc3Vic3RyaW5nKDAsIGZpbGUubGVuZ3RoKCkg
LSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpKTsKICAgICAgICAgICAgIGlmICghb3JpZ2luU2V0Q29w
eS5jb250YWlucyhvcmlnaW5JZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICBzeW5jU2V0T3Jp
Z2luRGV0YWlscyhvcmlnaW5JZGVudGlmaWVyLCBwYXRoKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAgICAgIGlmICgh
Y2FuRGVsZXRlT3JpZ2luKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDApKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGRlbGV0ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRleHQo
MSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5U
ZXh0KDEpKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Ns
aWVudE11dGV4KTsKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5j
RGVsZXRlQWxsT3JpZ2lucygpCiAgICAgfQogCiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAo
IWRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgeworICAgIGlmICghRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CiAgICAgICAgIC8vIEluIHRo
ZSBjYXNlIHdoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZWxldGUgdGhlIGRhdGFiYXNlIGZp
bGUgKGUuZyBzb21lIG90aGVyIHByb2dyYW0KICAgICAgICAgLy8gbGlrZSBhIHZpcnVzIHNjYW5u
ZXIgaXMgYWNjZXNzaW5nIGl0KSwgbWFrZSBzdXJlIHRvIHJlbW92ZSBhbGwgZW50cmllcy4KICAg
ICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShmYWxzZSk7CkBAIC00NTQsNyArNDU0LDcgQEAgdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFn
ZURpcmVjdG9yeVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1f
c3RvcmFnZURpcmVjdG9yeVBhdGgpOwogI2VuZGlmCiB9CiAKQEAgLTUzMyw3ICs1MzMsNyBAQCB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2lu
SWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRlbGV0ZUZpbGUocGF0
aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKICAgICAKICAgICBib29sIHNo
b3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IGZhbHNlOwogICAgIHsKQEAgLTU0OCw4ICs1NDgsOCBA
QCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllcikKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAjaWYg
IVBMQVRGT1JNKElPUykKLSAgICAgICAgZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkp
OwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3Rv
cnlQYXRoKTsKICNlbmRpZgogICAgIH0KIApAQCAtNjQyLDcgKzY0Miw3IEBAIGxvbmcgbG9uZyBT
dG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4p
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbG9uZyBsb25nIHNpemU7Ci0gICAgcmV0dXJuIGdl
dEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6ZSA6IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCAzNzNiNGNjMWYxMC4uMzRi
ZmIyOTM3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNy0xMC0zMSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAg
ICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlzYy9XZWJOU0Zp
bGVNYW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRl
ci5tbToKKwogMjAxNy0xMC0yOCAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtGcmFtZVZpZXc6OmxheW91dCBjbGVhbnVwXSBNb3ZlIGNvcmUgbGF5b3V0IGxvZ2lj
IHRvIGEgc2VwYXJhdGUgY2xhc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KaW5kZXggYmVmYzNlMTM0NmMuLjM1NWRl
YjAyMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmls
ZU1hbmFnZXJFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tCkBAIC00Myw3ICs0Myw3IEBACiB7CiAgICAgQVNTRVJUKFVS
TFN0cmluZyk7CiAgICAgQVNTRVJUKHBhdGgpOwotICAgIFdlYkNvcmU6OnNldE1ldGFkYXRhVVJM
KHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNl
dE1ldGFkYXRhVVJMKHBhdGgsIFVSTFN0cmluZywgcmVmZXJyZXIpOwogfQogCiAjZW5kaWYgLy8g
IVBMQVRGT1JNKElPUykKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIEJPT0wgZmlsZUV4aXN0cyhO
U1N0cmluZyAqcGF0aCkKICNpZiBQTEFURk9STShJT1MpCiAtIChOU1N0cmluZyAqKV93ZWJraXRf
Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5V2l0aFRlbXBsYXRlUHJlZml4OihOU1N0cmluZyAqKXBy
ZWZpeAogewotICAgIHJldHVybiBXZWJDb3JlOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkocHJl
Zml4KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KHByZWZpeCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCmluZGV4IDU3NmQ1NzVhYzU5
Li4wOTkyOThiZTI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFn
ZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0
b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAtMzMsOSArMzMsOSBAQCBTdHJpbmcgV2Vi
RGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpCiAgICAgTlNV
c2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGlyZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVj
dEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5XTsKICAgICBpZiAoIWRhdGFi
YXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoQVNDSUlMaXRlcmFsKCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFi
YXNlcy9fX19JbmRleGVkREIiKSwgW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChBU0NJSUxpdGVyYWwoIn4vTGlicmFyeS9XZWJLaXQv
RGF0YWJhc2VzL19fX0luZGV4ZWREQiIpLCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZXNEaXJlY3RvcnksIEFTQ0lJTGl0
ZXJhbCgiX19fSW5kZXhlZERCIikpOworICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VzRGlyZWN0
b3J5LCBBU0NJSUxpdGVyYWwoIl9fX0luZGV4ZWREQiIpKTsKICAgICAKICAgICByZXR1cm4gW2Rh
dGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NoYW5nZUxvZwppbmRleCA0NzQ5MTU3MjNkZS4uYTYyMzczNTkwYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0xMC0zMSAgQ2hyaXN0
b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5
c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHA6Cisg
ICAgICAgICogUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcDoKKyAgICAgICAgKiBQbHVnaW5zL1Bs
dWdpblN0cmVhbS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uaDoKKyAgICAg
ICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwOgorICAgICAgICAqIFdlYkRvd25sb2FkQ3VybC5jcHA6CisgICAgICAgICogV2ViUHJl
ZmVyZW5jZXMuY3BwOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorCiAyMDE3LTEwLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0ZyYW1lVmlldzo6bGF5b3V0
IGNsZWFudXBdIE1vdmUgY29yZSBsYXlvdXQgbG9naWMgdG8gYSBzZXBhcmF0ZSBjbGFzcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAK
aW5kZXggYjBlNjA2ZTk0MzMuLjMyODUwNmYwYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBA
IGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogICAgIGF1dG8gcGF0aHNFbmQgPSBwYXRo
cy5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQgPSBwYXRocy5iZWdpbigpOyBpdCAhPSBwYXRoc0Vu
ZDsgKytpdCkgewogICAgICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAgICAgICBpZiAoIWdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKCppdCwgbGFzdE1vZGlmaWVkKSkKKyAgICAgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQsIGxhc3RNb2RpZmllZCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwYXRoc1dpdGhUaW1lcy5hZGQoKml0LCBs
YXN0TW9kaWZpZWQpOwpAQCAtMzEzLDEwICszMTMsMTAgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6
c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1
Z2kKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKGNvbnN0
IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0CiB7CiAgICAgLy8gU2tpcCBwbHVnaW4gZmlsZXMgdGhh
dCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUuCi0gICAgaWYgKG1fZGlzYWJsZWRQbHVnaW5GaWxl
cy5jb250YWlucyhwYXRoR2V0RmlsZU5hbWUoZmlsZVBhdGgpKSkKKyAgICBpZiAobV9kaXNhYmxl
ZFBsdWdpbkZpbGVzLmNvbnRhaW5zKEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShmaWxlUGF0
aCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZmlsZUV4aXN0cyhmaWxl
UGF0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZVBhdGgpOwogfQog
CiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXREZWxldGVkUGx1Z2lucyhQbHVnaW5TZXQmIHBsdWdp
bnMpIGNvbnN0CkBAIC0zODIsNyArMzgyLDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJh
c2U6OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0
aHM7CiAKLSAgICBTdHJpbmcgdXNlclBsdWdpblBhdGggPSBob21lRGlyZWN0b3J5UGF0aCgpOwor
ICAgIFN0cmluZyB1c2VyUGx1Z2luUGF0aCA9IEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRo
KCk7CiAgICAgdXNlclBsdWdpblBhdGguYXBwZW5kKFN0cmluZygiXFxBcHBsaWNhdGlvbiBEYXRh
XFxNb3ppbGxhXFxwbHVnaW5zIikpOwogICAgIHBhdGhzLmFwcGVuZCh1c2VyUGx1Z2luUGF0aCk7
CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVm
YXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKIAogYm9vbCBQbHVnaW5EYXRhYmFzZTo6aXNQcmVmZXJy
ZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFN0cmluZyBwcmVm
ZXJyZWRQYXRoID0gaG9tZURpcmVjdG9yeVBhdGgoKTsKKyAgICBTdHJpbmcgcHJlZmVycmVkUGF0
aCA9IEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCk7CiAKICAgICBwcmVmZXJyZWRQYXRo
LmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRpb24gRGF0YVxcTW96aWxsYVxccGx1Z2lucyIpKTsK
IApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhz
SW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmluZz4mIHBhdGhzKSBjb25zdAogCiAgICAgYXV0byBk
aXJzRW5kID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5lbmQoKTsKICAgICBmb3IgKGF1dG8gZEl0ID0g
bV9wbHVnaW5EaXJlY3Rvcmllcy5iZWdpbigpOyBkSXQgIT0gZGlyc0VuZDsgKytkSXQpIHsKLSAg
ICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KCpkSXQsIGZp
bGVOYW1lRmlsdGVyKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KCpkSXQsIGZpbGVOYW1lRmlsdGVyKTsKICAgICAgICAgYXV0
byBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMuZW5kKCk7CiAgICAgICAgIGZvciAoYXV0byBwSXQg
PSBwbHVnaW5QYXRocy5iZWdpbigpOyBwSXQgIT0gcGx1Z2luc0VuZDsgKytwSXQpIHsKICAgICAg
ICAgICAgIGlmICghZmlsZUV4aXN0c0FuZElzTm90RGlzYWJsZWQoKnBJdCkpCkBAIC00MjMsMTQg
KzQyMywxNCBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3Jp
ZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAKLXN0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVu
dHNPZkZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQor
c3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZShGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgZmlsZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCiB7CiAgICAgc2l6ZV90
IGJ1ZmZlclNpemUgPSAwOwogICAgIHNpemVfdCBidWZmZXJDYXBhY2l0eSA9IDEwMjQ7CiAgICAg
YnVmZmVyLnJlc2l6ZShidWZmZXJDYXBhY2l0eSk7CiAKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZl
clNpemUgKz0gcmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJTaXplLCBi
dWZmZXJDYXBhY2l0eSAtIGJ1ZmZlclNpemUpOworICAgICAgICBidWZmZXJTaXplICs9IEZpbGVT
eXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZSwgYnVm
ZmVyQ2FwYWNpdHkgLSBidWZmZXJTaXplKTsKICAgICAgICAgaWYgKGJ1ZmZlclNpemUgPT0gYnVm
ZmVyQ2FwYWNpdHkpIHsKICAgICAgICAgICAgIGlmIChidWZmZXJDYXBhY2l0eSA8IG1heGltdW1Q
ZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZVNpemUpIHsKICAgICAgICAgICAgICAgICBidWZm
ZXJDYXBhY2l0eSAqPSAyOwpAQCAtNDc4LDExICs0NzgsMTEgQEAgdm9pZCBQbHVnaW5EYXRhYmFz
ZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBpZiAoIWlzUGVyc2lzdGVudE1l
dGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsK
LSAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNh
Y2hlRmlsZW5hbWUpOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgT3Bl
bkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOworICAg
IFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwgcGVyc2lzdGVudFBsdWdpbk1l
dGFkYXRhQ2FjaGVGaWxlbmFtZSk7CisgICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFi
c29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CiAKLSAgICBpZiAoIWlz
SGFuZGxlVmFsaWQoZmlsZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZp
bGUpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBNYXJrIGNhY2hlIGFzIGxvYWRlZCByZWdh
cmRsZXNzIG9mIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4gSWYKQEAgLTQ5MSwxMSArNDkxLDExIEBAIHZv
aWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAKICAgICBW
ZWN0b3I8Y2hhcj4gZmlsZUNvbnRlbnRzOwogICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZp
bGUoZmlsZSwgZmlsZUNvbnRlbnRzKTsKLSAgICBjbG9zZUZpbGUoZmlsZSk7CisgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogCiAgICAgaWYgKGZpbGVDb250ZW50cy5zaXplKCkgPCAy
IHx8IGZpbGVDb250ZW50cy5maXJzdCgpICE9IHNjaGVtYVZlcnNpb24gfHwgZmlsZUNvbnRlbnRz
Lmxhc3QoKSAhPSAnXDAnKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHJlYWQgcGx1
Z2luIG1ldGFkYXRhIGNhY2hlOiBjb3JydXB0IHNjaGVtYSIpOwotICAgICAgICBkZWxldGVGaWxl
KGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShhYnNv
bHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUxOCwxMyArNTE4
LDEzIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgp
CiAgICAgICAgICAgICAgICYmIHJlYWRVVEY4U3RyaW5nKGRlc2MsIGJ1ZmZlclBvcywgZW5kKQog
ICAgICAgICAgICAgICAmJiByZWFkVVRGOFN0cmluZyhtaW1lRGVzYywgYnVmZmVyUG9zLCBlbmQp
KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gcmVhZCBwbHVnaW4gbWV0YWRh
dGEgY2FjaGU6IGNvcnJ1cHQgZGF0YSIpOwotICAgICAgICAgICAgZGVsZXRlRmlsZShhYnNvbHV0
ZUNhY2hlUGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGFic29sdXRl
Q2FjaGVQYXRoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IFNraXAgbWV0YWRhdGEgdGhhdCBwb2ludHMgdG8gcGx1Z2lucyBmcm9tIGRpcmVjdG9yaWVzIHRo
YXQKICAgICAgICAgLy8gYXJlIG5vdCBwYXJ0IG9mIHBsdWdpbiBkaXJlY3RvcnkgbGlzdCBhbnlt
b3JlLgotICAgICAgICBTdHJpbmcgcGx1Z2luRGlyZWN0b3J5TmFtZSA9IGRpcmVjdG9yeU5hbWUo
cGF0aCk7CisgICAgICAgIFN0cmluZyBwbHVnaW5EaXJlY3RvcnlOYW1lID0gRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShwYXRoKTsKICAgICAgICAgaWYgKG1fcGx1Z2luRGlyZWN0b3JpZXMuZmlu
ZChwbHVnaW5EaXJlY3RvcnlOYW1lKSA9PSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgY29u
dGludWU7CiAKQEAgLTU0MSwxNiArNTQxLDE2IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQ
ZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5zd2Fw
KGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVzKTsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVVEY4
U3RyaW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0
YXRpYyBib29sIHdyaXRlVVRGOFN0cmluZyhGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0g
c3RyaW5nLnV0ZjgoKTsKICAgICBpbnQgbGVuZ3RoID0gdXRmOFN0cmluZy5sZW5ndGgoKSArIDE7
Ci0gICAgcmV0dXJuIHdyaXRlVG9GaWxlKGZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCBsZW5ndGgp
ID09IGxlbmd0aDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgdXRm
OFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0gbGVuZ3RoOwogfQogCi1zdGF0aWMgYm9vbCB3cml0
ZVRpbWUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGNvbnN0IHRpbWVfdCYgdGltZSkKK3N0YXRp
YyBib29sIHdyaXRlVGltZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29u
c3QgdGltZV90JiB0aW1lKQogewotICAgIHJldHVybiB3cml0ZVRvRmlsZShmaWxlLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPigmdGltZSksIHNpemVvZih0aW1lX3QpKSA9PSBzaXplb2Yo
dGltZV90KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJnRpbWUpLCBzaXplb2YodGltZV90KSkgPT0gc2l6ZW9m
KHRpbWVfdCk7CiB9CiAKIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRh
ZGF0YUNhY2hlKCkKQEAgLTU1OCwyNiArNTU4LDI2IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnVw
ZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKICAgICBpZiAoIWlzUGVyc2lzdGVudE1ldGFk
YXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtYWtlQWxsRGlyZWN0b3JpZXMocGVyc2lzdGVu
dE1ldGFkYXRhQ2FjaGVQYXRoKCkpOwotICAgIFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IHBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwgcGVy
c2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7Ci0gICAgZGVsZXRlRmlsZShhYnNv
bHV0ZUNhY2hlUGF0aCk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpKTsKKyAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRh
Q2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOworICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogCiAgICAgaWYgKG1f
cGx1Z2lucy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlOwotICAgIGZpbGUgPSBvcGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgT3BlbkZv
cldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICBm
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVTeXN0ZW06
Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gb3BlbiBwbHVnaW4gbWV0YWRhdGEgY2FjaGUgZm9yIHNhdmluZyIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgY2hhciBsb2NhbFNjaGVtYVZlcnNpb24gPSBzY2hl
bWFWZXJzaW9uOwotICAgIGlmICh3cml0ZVRvRmlsZShmaWxlLCAmbG9jYWxTY2hlbWFWZXJzaW9u
LCAxKSAhPSAxKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsICZsb2Nh
bFNjaGVtYVZlcnNpb24sIDEpICE9IDEpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
d3JpdGUgcGx1Z2luIG1ldGFkYXRhIGNhY2hlIHNjaGVtYSIpOwotICAgICAgICBjbG9zZUZpbGUo
ZmlsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01ODks
MTMgKzU4OSwxMyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjp1cGRhdGVQZXJzaXN0ZW50TWV0YWRh
dGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHdyaXRlVVRGOFN0cmluZyhmaWxlLCAoKml0KS0+
ZGVzY3JpcHRpb24oKSkKICAgICAgICAgICAgICAgJiYgd3JpdGVVVEY4U3RyaW5nKGZpbGUsICgq
aXQpLT5mdWxsTUlNRURlc2NyaXB0aW9uKCkpKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJV
bmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIHRvIGNhY2hlIik7Ci0gICAgICAgICAgICBj
bG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgICAgICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRo
KTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICAgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgY2xvc2VGaWxlKGZpbGUpOworICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKIH0KIAogYm9vbCBQbHVnaW5EYXRhYmFzZTo6aXNQ
ZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKaW5kZXggN2RkZTJjYjAyNzcuLjZhZmY1
MWQwNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdp
blBhY2thZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2lu
UGFja2FnZS5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBQbHVnaW5QYWNrYWdlOjpQbHVnaW5QYWNr
YWdlKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgdGltZV90JiBsYXN0TW9kaWZpZWQpCiAgICAg
LCBtX2luZm9Jc0Zyb21DYWNoZSh0cnVlKQogI2VuZGlmCiB7Ci0gICAgbV9maWxlTmFtZSA9IHBh
dGhHZXRGaWxlTmFtZShtX3BhdGgpOworICAgIG1fZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUobV9wYXRoKTsKICAgICBtX3BhcmVudERpcmVjdG9yeSA9IG1fcGF0aC5sZWZ0
KG1fcGF0aC5sZW5ndGgoKSAtIG1fZmlsZU5hbWUubGVuZ3RoKCkgLSAxKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCmluZGV4IDEz
ODdmYWJiMDEwLi5jNjllMWU5MDE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQbHVnaW5TdHJlYW06
OlBsdWdpblN0cmVhbShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVudCwgRnJhbWUqIGZyYW1lLCBj
b25zdCBSZXNvdQogICAgICwgbV9zdHJlYW1TdGF0ZShTdHJlYW1CZWZvcmVTdGFydGVkKQogICAg
ICwgbV9sb2FkTWFudWFsbHkoZmFsc2UpCiAgICAgLCBtX2RlbGF5RGVsaXZlcnlUaW1lcigqdGhp
cywgJlBsdWdpblN0cmVhbTo6ZGVsYXlEZWxpdmVyeVRpbWVyRmlyZWQpCi0gICAgLCBtX3RlbXBG
aWxlSGFuZGxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBtX3RlbXBGaWxlSGFu
ZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX3BsdWdp
bkZ1bmNzKHBsdWdpbkZ1bmNzKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKICAgICAsIG1f
cXVpcmtzKHF1aXJrcykKQEAgLTIxMiwxMCArMjEyLDEwIEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpz
dGFydFN0cmVhbSgpCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlID09IE5QX05PUk1BTCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIldLUCIsIG1fdGVt
cEZpbGVIYW5kbGUpOworICAgIG1fcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJXS1AiLCBtX3RlbXBGaWxlSGFuZGxlKTsKIAogICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25n
LCBjYW5jZWwgbG9hZGluZyB0aGUgc3RyZWFtCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1fdGVt
cEZpbGVIYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX3RlbXBG
aWxlSGFuZGxlKSkKICAgICAgICAgY2FuY2VsQW5kRGVzdHJveVN0cmVhbShOUFJFU19ORVRXT1JL
X0VSUik7CiB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGVzdHJv
eVN0cmVhbSgpCiAgICAgQVNTRVJUKG1fcmVhc29uICE9IFdlYlJlYXNvbk5vbmUpOwogICAgIEFT
U0VSVCghbV9kZWxpdmVyeURhdGEgfHwgbV9kZWxpdmVyeURhdGEtPnNpemUoKSA9PSAwKTsKIAot
ICAgIGNsb3NlRmlsZShtX3RlbXBGaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUobV90ZW1wRmlsZUhhbmRsZSk7CiAKICAgICBib29sIG5ld1N0cmVhbUNhbGxlZCA9IG1fc3Ry
ZWFtLm5kYXRhOwogCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06OmRlc3Ry
b3lTdHJlYW0oKQogICAgICAgICBtX2NsaWVudC0+c3RyZWFtRGlkRmluaXNoTG9hZGluZyh0aGlz
KTsKIAogICAgIGlmICghbV9wYXRoLmlzTnVsbCgpKQotICAgICAgICBkZWxldGVGaWxlKG1fcGF0
aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wYXRoKTsKIH0KIAogdm9pZCBQ
bHVnaW5TdHJlYW06OmRlbGF5RGVsaXZlcnlUaW1lckZpcmVkKCkKQEAgLTQ0MCw4ICs0NDAsOCBA
QCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogICAgICAgICBkZWxpdmVyRGF0YSgpOwogICAgIH0K
IAotICAgIGlmIChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0b3BwZWQgJiYgaXNIYW5kbGVWYWxp
ZChtX3RlbXBGaWxlSGFuZGxlKSkgewotICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gd3JpdGVU
b0ZpbGUobV90ZW1wRmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAobV9zdHJlYW1T
dGF0ZSAhPSBTdHJlYW1TdG9wcGVkICYmIEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV90ZW1w
RmlsZUhhbmRsZSkpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKG1fdGVtcEZpbGVIYW5kbGUsIGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIGlmIChi
eXRlc1dyaXR0ZW4gIT0gbGVuZ3RoKQogICAgICAgICAgICAgY2FuY2VsQW5kRGVzdHJveVN0cmVh
bShOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggM2I2YzcxMDVmMTAuLjFlNWFmMzBlZTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKQEAg
LTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPFZlY3RvcjxjaGFyPj4gbV9kZWxpdmVyeURhdGE7CiAKLSAgICAgICAgUGxhdGZvcm1G
aWxlSGFuZGxlIG1fdGVtcEZpbGVIYW5kbGU7CisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3Jt
RmlsZUhhbmRsZSBtX3RlbXBGaWxlSGFuZGxlOwogCiAgICAgICAgIGNvbnN0IE5QUGx1Z2luRnVu
Y3MqIG1fcGx1Z2luRnVuY3M7CiAgICAgICAgIE5QUCBtX2luc3RhbmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBkY2Q1NGE4Yjkz
Mi4uMWVhOTAxNzhhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFw
cGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCkBAIC02Niw3ICs2Niw3IEBAIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIFdl
YkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKIAogc3RhdGljIFN0cmluZyBhcHBs
aWNhdGlvbkNhY2hlUGF0aCgpCiB7Ci0gICAgU3RyaW5nIHBhdGggPSBsb2NhbFVzZXJTcGVjaWZp
Y1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBTdHJpbmcgcGF0aCA9IEZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogCiAjaWYgVVNFKENGKQogICAgIGF1dG8g
Y2FjaGVEaXJlY3RvcnlQcmVmZXJlbmNlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZh
bHVlKFdlYktpdExvY2FsQ2FjaGVEZWZhdWx0c0tleSwgV2ViUHJlZmVyZW5jZXM6OmFwcGxpY2F0
aW9uSWQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJh
c2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdl
ci5jcHAKaW5kZXggOWM0NmY0YjIyNDcuLmZiNTQ0MDgwMjBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTQyOCw3ICs0MjgsNyBAQCBz
dGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpsb2Nh
bFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOworICAgIHJldHVy
biBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJEYXRhYmFz
ZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2VzSWZOZWNlc3Nhcnko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKaW5kZXggMTYw
ZTliYmM1YjEuLjg3MzI3NzhkOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb3dubG9hZEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
d25sb2FkQ3VybC5jcHAKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICAg
ICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUo
KTsKICAgICAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IHN1Z2dlc3RlZEZpbGVuYW1lID0gcGF0aEdldEZpbGVOYW1lKHJlc3BvbnNlLnVybCgpLnN0cmlu
ZygpKTsKKyAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEdl
dEZpbGVOYW1lKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKICAgICAgICAgc3VnZ2VzdGVkRmls
ZW5hbWUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAg
ICAgICBCU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUihzdWdnZXN0ZWRGaWxlbmFtZSk7CiAg
ICAgICAgIG1fZGVsZWdhdGUtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KHRoaXMsIHN1Z2dlc3RlZEZpbGVuYW1lQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggZjQ0NjFiNmVmMTguLmYxMTUwZWU3MmI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC01OCw3ICs1OCw3IEBA
IHVzaW5nIHN0ZDo6bnVtZXJpY19saW1pdHM7CiAKIHN0YXRpYyBjb25zdCBTdHJpbmcmIG9sZFBy
ZWZlcmVuY2VzUGF0aCgpCiB7Ci0gICAgc3RhdGljIFN0cmluZyBwYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJL
aXRQcmVmZXJlbmNlcy5wbGlzdCIpOworICAgIHN0YXRpYyBTdHJpbmcgcGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpyb2FtaW5nVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5jZXMucGxpc3QiKTsKICAgICBy
ZXR1cm4gcGF0aDsKIH0KIApAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
Om1pZ3JhdGVXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcygpCiAKICAgICBjb3B5V2Vi
S2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVm
PihwbGlzdC5nZXQoKSkpOwogCi0gICAgZGVsZXRlRmlsZShvbGRQcmVmZXJlbmNlc1BhdGgoKSk7
CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShvbGRQcmVmZXJlbmNlc1BhdGgoKSk7CiB9CiAK
IHZvaWQgV2ViUHJlZmVyZW5jZXM6OmNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNl
cyhDRkRpY3Rpb25hcnlSZWYgZGljdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5k
ZXggMzllNDM4YzM2MGQuLjA5NGI2NTAzNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIGlmIChwcmVmZXJlbmNlICYmIChDRlN0cmlu
Z0dldFR5cGVJRCgpID09IENGR2V0VHlwZUlEKHByZWZlcmVuY2UuZ2V0KCkpKSkKICAgICAgICAg
ICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihwcmVmZXJlbmNlLmxlYWtSZWYoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjZnVy
bENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3Rvcnkg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rvcnko
KS5jcmVhdGVDRlN0cmluZygpOwogICAgIH0KICAgICBjYWNoZURpcmVjdG9yeSA9IFN0cmluZyhj
ZnVybENhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICBDRkluZGV4IGNhY2hlTWVtb3J5Q2FwYWNp
dHkgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDY5ZmFjOGUwYzFiLi4xZDA0OWFlOTg0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTEwLTMxICBDaHJp
c3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBBZGQgYSBGaWxl
U3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRl
clRyZWUuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0
ZW0uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlclRlc3QuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisKIDIwMTctMTAtMzAgIE1pY2hhZWwgQ2F0YW56YXJv
ICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEZpeCBidWlsZCB3YXJu
aW5ncwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXgg
ZmRlMWZlMTAzODAuLjBiNTllYTE3MzgyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBzdGF0aWMgU3RyaW5nIGxpYnJh
cnlQYXRoRm9yRHVtcFJlbmRlclRyZWUoKQogICAgICAgICByZXR1cm4gU3RyaW5nIChwYXRoLmRh
dGEoKSwgcGF0aC5sZW5ndGgoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIFdlYkNvcmU6OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIH0KICNlbmRpZgog
CkBAIC05MTIsNyArOTEyLDcgQEAgc3RhdGljIHZvaWQgc2V0Q2FjaGVGb2xkZXIoKQogCiAgICAg
Q09NUHRyPElXZWJDYWNoZT4gd2ViQ2FjaGU7CiAgICAgaWYgKFNVQ0NFRURFRChXZWJLaXRDcmVh
dGVJbnN0YW5jZShDTFNJRF9XZWJDYWNoZSwgMCwgSUlEX0lXZWJDYWNoZSwgKHZvaWQqKikmd2Vi
Q2FjaGUpKSkgewotICAgICAgICBfYnN0cl90IGNhY2hlRm9sZGVyID0gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLnV0ZjgoKS5kYXRh
KCk7CisgICAgICAgIF9ic3RyX3QgY2FjaGVGb2xkZXIgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIikudXRmOCgp
LmRhdGEoKTsKICAgICAgICAgd2ViQ2FjaGUtPnNldENhY2hlRm9sZGVyKGNhY2hlRm9sZGVyKTsK
ICAgICB9CiB9CkBAIC05MjksOSArOTI5LDkgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0Nv
bnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBTdHJpbmcgbGlicmFyeVBhdGggPSBsaWJy
YXJ5UGF0aEZvckR1bXBSZW5kZXJUcmVlKCk7CiAKICAgICAvLyBTZXQgdXAgdGhlc2UgdmFsdWVz
IGJlZm9yZSBjcmVhdGluZyB0aGUgV2ViVmlldyBzbyB0aGF0IHRoZSB2YXJpb3VzIGluaXRpYWxp
emF0aW9ucyB3aWxsIHNlZSB0aGVzZSBwcmVmZXJyZWQgdmFsdWVzLgotICAgIENGUHJlZmVyZW5j
ZXNTZXRBcHBWYWx1ZShXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFyeVBhdGgsICJEYXRhYmFzZXMiKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBhcHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZh
bHVlKFdlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSwgV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxTdG9yYWdlIikuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJL
aXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJ
ZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYkRhdGFiYXNlRGlyZWN0
b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFw
cElkLmdldCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFnZURpcmVj
dG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBhcHBJZC5nZXQoKSk7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2Fs
Q2FjaGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGxpYnJhcnlQYXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGFwcElkLmdldCgpKTsKICNlbmRpZgogfQogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBzdGF0aWMg
dm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9u
dEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9u
dEZhbGxiYWNrID0gV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShwYXRoT3JVcmwpOworICAgIFN0cmlu
ZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1l
KHBhdGhPclVybCk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAgICAgaWYg
KCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhO
dWxsVGVybWluYXRpb24oKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMDUwLDIwICsxMDUwLDIw
IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwp
CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgU3RyaW5nIHBhdGhUb1Rlc3Qg
PSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSAr
IDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gV2ViQ29yZTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygwLCBsb2NhdGlvbiArIGxheW91
dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIik7CisgICAgU3RyaW5nIHBvc3Np
YmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVu
Z3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IHBvc3Np
YmxlUGF0aHM7Ci0gICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICBwb3Nz
aWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOwogCiAgICAgc2l6ZV90IG5l
eHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIHdoaWxl
IChuZXh0Q2FuZGlkYXRlRW5kICYmIG5leHRDYW5kaWRhdGVFbmQgIT0gV1RGOjpub3RGb3VuZCkg
ewogICAgICAgICBwYXRoVG9UZXN0ID0gcGF0aFRvVGVzdC5zdWJzdHJpbmcoMCwgbmV4dENhbmRp
ZGF0ZUVuZCk7Ci0gICAgICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CisgICAg
ICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAgICAgICAg
IG5leHRDYW5kaWRhdGVFbmQgPSBwYXRoVG9UZXN0LnJldmVyc2VGaW5kKCdcXCcpOwogICAgIH0K
IAogICAgIGZvciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIHBvcyA9IHBvc3NpYmxlUGF0aHMu
YmVnaW4oKTsgcG9zICE9IHBvc3NpYmxlUGF0aHMuZW5kKCk7ICsrcG9zKSB7Ci0gICAgICAgIHBh
dGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9z
LCAicmVzb3VyY2VzXFwiKTsgCisgICAgICAgIHBhdGhUb0ZvbnRGYWxsYmFjayA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgqcG9zLCAicmVzb3VyY2VzXFwi
KTsKIAogICAgICAgICBpZiAoOjpQYXRoSXNEaXJlY3RvcnlXKHBhdGhUb0ZvbnRGYWxsYmFjay5j
aGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLmRhdGEoKSkpCiAgICAgICAgICAgICByZXR1
cm4gcGF0aFRvRm9udEZhbGxiYWNrOwpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgc3RhdGljIHZvaWQg
YWRkRm9udEZhbGxiYWNrSWZQcmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkK
ICAgICBpZiAoZm9udEZhbGxiYWNrUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0cmluZyBmb250RmFsbGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZm9udEZhbGxiYWNrUGF0aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7
CisgICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1m
YWxsYmFjay5jc3MiKTsKIAogICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNr
LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRm9udEZhbGxiYWNrSWZQ
cmVzZW50KGNvbnN0IFN0cmluZyYgZm9udEZhbGxiYWNrUGF0aCkKICAgICBpZiAoZm9udEZhbGxi
YWNrUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBmb250RmFs
bGJhY2sgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZm9udEZhbGxiYWNrUGF0
aCwgIk1hYy1jb21wYXRpYmxlLWZvbnQtZmFsbGJhY2suY3NzIik7CisgICAgU3RyaW5nIGZvbnRG
YWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChm
b250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKIAog
ICAgIGlmICghOjpQYXRoRmlsZUV4aXN0c1coZm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggZmJjYzYyM2Zi
ZmMuLjI1Mjc0NGI0MjFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTU1LDE5ICs1NSwxOSBAQCBwdWJsaWM6CiAgICAgICAg
IFJ1bkxvb3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogICAgICAgICAKICAgICAgICAgLy8g
Y3JlYXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAg
ICAgICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBo
YW5kbGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAg
ICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgICAgIAotICAgICAgICBpbnQgcmMg
PSB3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwg
RmlsZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CisgICAgICAgIGludCByYyA9IEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgp
LCBGaWxlTW9uaXRvclRlc3REYXRhLmxlbmd0aCgpKTsKICAgICAgICAgQVNTRVJUX05FKHJjLCAt
MSk7CiAgICAgICAgIAotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIH0KICAg
ICAKICAgICBjb25zdCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQ
YXRoOyB9CkBAIC0xMTQsMTkgKzExNCwxOSBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09m
RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgY29uc3RleHByIGludCBidWZmZXJTaXpl
ID0gMTAyNDsKIAotICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvclJlYWQp
OwotICAgIGlmICghaXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAgIGF1dG8gc291cmNlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlm
ICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChzb3VyY2UpKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1ZmZlcjxMQ2hhcj4gYnVmZmVyKGJ1ZmZlclNpemUp
OwogCiAgICAgYXV0byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2VdKCkg
ewotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOwotICAgICAgICBj
bG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxl
IGhhbmRsZSA9IHNvdXJjZTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7
CiAgICAgfSk7CiAKICAgICAvLyBTaW5jZSB3ZSBjb250cm9sIHRoZSB0ZXN0IGZpbGVzLCB3ZSBr
bm93IHdlIG9ubHkgbmVlZCBvbmUgcmVhZAotICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZp
bGUoc291cmNlLCByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuY2hhcmFjdGVycygpKSwg
YnVmZmVyU2l6ZSk7CisgICAgaW50IHJlYWRCeXRlcyA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmls
ZShzb3VyY2UsIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5jaGFyYWN0ZXJzKCkpLCBi
dWZmZXJTaXplKTsKICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50
c09mRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERl
dGVjdENoYW5nZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgp
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgo
KSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTE4NCw3
ICsxODQsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2UpCiAKIFRFU1Rf
RihGaWxlTW9uaXRvclRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIHsKLSAgICBFWFBFQ1Rf
VFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlh
bGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUX0YoRmlsZU1vbml0
b3JUZXN0LCBEZXRlY3RNdWx0aXBsZUNoYW5nZXMpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3Qs
IERldGVjdERlbGV0aW9uKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQ
YXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxl
UGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAt
MjgzLDcgKzI4Myw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQog
CiBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogewot
ICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5M
b29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMzQwLDcgKzM0MCw3IEBAIFRFU1Rf
RihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUpCiAKIFRFU1RfRihG
aWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiB7Ci0g
ICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAogICAgIFJ1bkxv
b3A6OmluaXRpYWxpemVNYWluUnVuTG9vcCgpOwogCkBAIC0zNzcsMTIgKzM3NywxMiBAQCBURVNU
X0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQog
ICAgIHJlc2V0VGVzdFN0YXRlKCk7CiAKICAgICB0ZXN0UXVldWUtPmRpc3BhdGNoKFt0aGlzXSAo
KSBtdXRhYmxlIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRo
KCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZp
bGVQYXRoKCkpKTsKIAotICAgICAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHRlbXBGaWxlUGF0
aCgpLCBPcGVuRm9yV3JpdGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAg
QVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7
CiAKLSAgICAgICAgaW50IHJjID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlTW9uaXRvclRlc3RE
YXRhLnV0ZjgoKS5kYXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEubGVuZ3RoKCkpOworICAgICAg
ICBpbnQgcmMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVz
dERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CiAgICAg
ICAgIEFTU0VSVF9ORShyYywgLTEpOwogCiAgICAgICAgIGF1dG8gZmlyc3RDb21tYW5kID0gY3Jl
YXRlQ29tbWFuZCh0ZW1wRmlsZVBhdGgoKSwgRmlsZU1vbml0b3JSZXZpc2VkRGF0YSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKaW5kZXgg
N2Y2Zjk3NDk4ZDEuLmYyNTg2Njk0NjA2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwCkBAIC00NiwzNSArNDYsMzUgQEAgcHVibGljOgog
ICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgICAgIAogICAgICAgICAv
LyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0g
ICAgICAgIG1fdGVtcEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIs
IGhhbmRsZSk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhhbmRsZSwgRmlsZVN5c3RlbVRlc3REYXRh
LCBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUp
OworICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgICAg
ICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVz
dEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUs
IEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSkpOworICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAogICAgICAgICBtX3RlbXBGaWxlU3lt
bGlua1BhdGggPSBtX3RlbXBGaWxlUGF0aCArICItc3ltbGluayI7Ci0gICAgICAgIGNyZWF0ZVN5
bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6Y3JlYXRlU3ltYm9saWNMaW5rKG1fdGVtcEZpbGVQYXRoLCBtX3RlbXBG
aWxlU3ltbGlua1BhdGgpOwogCi0gICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBvcGVuVGVt
cG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZp
bGUoaGFuZGxlKTsKKyAgICAgICAgbV90ZW1wRW1wdHlGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCi0gICAgICAgIG1fc3BhY2VDb250YWluaW5n
RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5k
bGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5p
bmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRl
c3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwogCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxl
KCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5k
bGUpOworICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX3F1b3RlQ29udGFpbmlu
Z0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5XCJUZXN0RmlsZSIsIGhh
bmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX3F1b3RlQ29udGFp
bmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXBcIkVtcHR5
XCJUZXN0RmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5k
bGUpOwogICAgIH0KIAogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsKLSAgICAg
ICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV90ZW1w
RmlsZVN5bWxpbmtQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRo
KTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAg
ICAgZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVG
aWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X3RlbXBGaWxlU3ltbGlua1BhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
dGVtcEVtcHR5RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7CiAgICAgfQogCiAgICAgY29uc3QgU3RyaW5nJiB0
ZW1wRmlsZVBhdGgoKSB7IHJldHVybiBtX3RlbXBGaWxlUGF0aDsgfQpAQCAtOTYsNyArOTYsNyBA
QCBwcml2YXRlOgogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlzc2luZ0ZpbGUpCiB7
CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKFN0
cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFw
cGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoU3RyaW5nKCJub3RfZXhpc3RpbmdfZmlsZSIpLCBz
dWNjZXNzKTsKICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoIW1h
cHBlZEZpbGVEYXRhKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRl
c3QsIE1hcHBpbmdNaXNzaW5nRmlsZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4
aXN0aW5nRmlsZSkKIHsKICAgICBib29sIHN1Y2Nlc3M7Ci0gICAgTWFwcGVkRmlsZURhdGEgbWFw
cGVkRmlsZURhdGEodGVtcEZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKICAg
ICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghIW1hcHBlZEZpbGVEYXRh
KTsKICAgICBFWFBFQ1RfVFJVRShtYXBwZWRGaWxlRGF0YS5zaXplKCkgPT0gc3RybGVuKEZpbGVT
eXN0ZW1UZXN0RGF0YSkpOwpAQCAtMTE0LDI2ICsxMTQsMjYgQEAgVEVTVF9GKEZpbGVTeXN0ZW1U
ZXN0LCBNYXBwaW5nRXhpc3RpbmdGaWxlKQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5n
RXhpc3RpbmdFbXB0eUZpbGUpCiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIE1hcHBlZEZpbGVE
YXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRoKCksIHN1Y2Nlc3MpOworICAgIEZp
bGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBFbXB0eUZpbGVQYXRo
KCksIHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVF
KCFtYXBwZWRGaWxlRGF0YSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgRmlsZXNIYXZl
U2FtZVZvbHVtZSkKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hhdmVTYW1lVm9sdW1lKHRlbXBG
aWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUo
ZmlsZXNIYXZlU2FtZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpLCBiYW5nQ29udGFp
bmluZ0ZpbGVQYXRoKCkpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlc0hhdmVTYW1lVm9sdW1lKGJh
bmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOworICAg
IEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVzSGF2ZVNhbWVWb2x1bWUodGVtcEZpbGVQYXRo
KCksIHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHNwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKCksIGJhbmdD
b250YWluaW5nRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVz
SGF2ZVNhbWVWb2x1bWUoYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpLCBxdW90ZUNvbnRhaW5pbmdG
aWxlUGF0aCgpKSk7CiB9CiAKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgR2V0RmlsZU1ldGFkYXRh
U3ltbGluaykKIHsKLSAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IGZpbGVNZXRhZGF0YSh0ZW1w
RmlsZVN5bWxpbmtQYXRoKCkpOworICAgIGF1dG8gc3ltbGlua01ldGFkYXRhID0gRmlsZVN5c3Rl
bTo6ZmlsZU1ldGFkYXRhKHRlbXBGaWxlU3ltbGlua1BhdGgoKSk7CiAgICAgQVNTRVJUX1RSVUUo
c3ltbGlua01ldGFkYXRhLmhhc192YWx1ZSgpKTsKICAgICBFWFBFQ1RfVFJVRShzeW1saW5rTWV0
YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6U3ltYm9saWNMaW5rKTsK
ICAgICBFWFBFQ1RfRkFMU0Uoc3RhdGljX2Nhc3Q8c2l6ZV90PihzeW1saW5rTWV0YWRhdGEudmFs
dWUoKS5sZW5ndGgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKIAotICAgIGF1dG8g
dGFyZ2V0TWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5
bWxpbmtQYXRoKCkpOworICAgIGF1dG8gdGFyZ2V0TWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxl
TWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwogICAgIEFT
U0VSVF9UUlVFKHRhcmdldE1ldGFkYXRhLmhhc192YWx1ZSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0
YXJnZXRNZXRhZGF0YS52YWx1ZSgpLnR5cGUgPT0gRmlsZU1ldGFkYXRhOjpUeXBlOjpGaWxlKTsK
ICAgICBFWFBFQ1RfRVEoc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0YSksIHN0YXRpY19jYXN0PHNp
emVfdD4odGFyZ2V0TWV0YWRhdGEudmFsdWUoKS5sZW5ndGgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDMyY2Uz
NjE4ZGU1Li5iOTI4MzI0ZjM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00MSwyNiArNDEsMjYgQEAgcHVibGlj
OgogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKICAgICAgICAgLy8gY3Jl
YXRlIHRlbXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAg
ICBtX3RlbXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5k
bGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIAotICAgICAgICBtX3NwYWNl
Q29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBG
aWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1fc3Bh
Y2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Ci0gICAg
ICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBo
YW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAg
Ci0gICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgi
dGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRs
ZSk7CisgICAgICAgIG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZSgidGVtcFwiRW1wdHlcIlRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfQogCiAgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsK
LSAgICAgICAgZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAg
ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxl
KG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fdGVtcEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Nw
YWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSht
X2JhbmdDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgpOwogICAgIH0KICAgICAKICAgICBjb25zdCBTdHJp
bmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAK
aW5kZXggYTI5N2E1NWI4MzMuLjhmZTM1NjdjMWUxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0zOCwxOSAr
MzgsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOwogCiAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgIFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgbV90ZW1wRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5Rmls
ZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICB3cml0ZVRvRmlsZShoYW5kbGUsIHRlc3RE
YXRhKCksIHN0cmxlbih0ZXN0RGF0YSgpKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBtX3RlbXBGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUp
OworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgdGVzdERhdGEoKSwgc3RybGVu
KHRlc3REYXRhKCkpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAg
IG1fdGVtcEVtcHR5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZp
bGUiLCBoYW5kbGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIG1fdGVtcEVtcHR5Rmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUi
LCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCiB2b2lk
IFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKLSAgICBkZWxldGVGaWxlKG1fdGVtcEZp
bGVQYXRoKTsKLSAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOworICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggYTIwYjM4MzE1NjYuLjJlMmMz
OTQ3OGU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbQpAQCAtNDAsMjEgKzQwLDIxIEBA
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0
ZURhdGFiYXNlRmlsZUlmRW1wdHkpCiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsK
LSAgICBTdHJpbmcgZGF0YWJhc2VGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1w
dHlEYXRhYmFzZSIsIGhhbmRsZSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBTdHJpbmcgZGF0YWJhc2VGaWxl
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wRW1wdHlEYXRhYmFzZSIs
IGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBsb25n
IGxvbmcgZmlsZVNpemU7Ci0gICAgZ2V0RmlsZVNpemUoZGF0YWJhc2VGaWxlUGF0aCwgZmlsZVNp
emUpOworICAgIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGRhdGFiYXNlRmlsZVBhdGgsIGZpbGVT
aXplKTsKICAgICBFWFBFQ1RfRVEoMCwgZmlsZVNpemUpOwogCiAgICAgRVhQRUNUX1RSVUUoRGF0
YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGRhdGFiYXNlRmlsZVBhdGgp
KTsKIAotICAgIGJvb2wgZmlsZVN0aWxsRXhpc3RzID0gZmlsZUV4aXN0cyhkYXRhYmFzZUZpbGVQ
YXRoKTsKKyAgICBib29sIGZpbGVTdGlsbEV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZGF0YWJhc2VGaWxlUGF0aCk7CiAgICAgRVhQRUNUX0ZBTFNFKGZpbGVTdGlsbEV4aXN0cyk7CiAK
ICAgICBpZiAoZmlsZVN0aWxsRXhpc3RzKQotICAgICAgICBkZWxldGVGaWxlKGRhdGFiYXNlRmls
ZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFiYXNlRmlsZVBhdGgp
OwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpAQCAtNzgsMTkgKzc4LDE5IEBAIHN0YXRp
YyB2b2lkIGFkZFRvRGF0YWJhc2VzVGFibGUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luCiAKIHN0YXRpYyB2b2lkIHJlbW92ZURpcmVjdG9yeUFuZEFsbENv
bnRlbnRzKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKIHsKLSAgICBmb3IgKGNvbnN0IGF1
dG8mIGZpbGUgOiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgsICIqIikpCi0gICAgICAgIEVY
UEVDVF9UUlVFKGRlbGV0ZUZpbGUoZmlsZSkpOworICAgIGZvciAoY29uc3QgYXV0byYgZmlsZSA6
IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgIioiKSkKKyAgICAgICAg
RVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlKSk7CiAKLSAgICBpZiAoZmls
ZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKLSAgICAgICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1wdHlE
aXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpOworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGRpcmVjdG9yeVBhdGgpKQorICAgICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0ZUZp
bGVBdFBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlSGFuZGxlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKHBh
dGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgRVhQRUNUX05FKC0xLCBmaWxlSGFu
ZGxlKTsKLSAgICBjbG9zZUZpbGUoZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4
aXN0cyhwYXRoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGVIYW5kbGUpOworICAg
IEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpOwogfQogCiBURVNUKERh
dGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQpAQCAtOTksNyArOTksNyBAQCBURVNUKERhdGFi
YXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQogICAgIC8vIHRhYmxlcywgYW5kIGFuIGFjdHVhbCBk
YXRhYmFzZSBvbiBkaXNrLgogICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkIHJlbW92ZSB0
aGUgb3JpZ2luJ3MgaW5mb3JtYXRpb24gZnJvbSBib3RoIHRoZSBPcmlnaW5zCiAgICAgLy8gYW5k
IERhdGFiYXNlcyB0YWJsZXMsIGFuZCByZW1vdmUgdGhlIGRhdGFiYXNlIGZyb20gZGlzay4KLSAg
ICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAi
V2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNy
ZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFzZURp
cmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAtMTA4
LDE2ICsxMDgsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbikKICAgICBk
YXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VR
KCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAg
U3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3Rz
KGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2Vz
LmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBh
dGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAg
ICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VO
YW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNl
VHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgb3Jp
Z2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgs
IG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFsbERp
cmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9yaWdp
blBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50
aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVz
KG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9y
aWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJhc2VQYXRoID0gZGF0YWJhc2VU
cmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxz
ZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJhc2VQYXRoKTsKQEAgLTEyOCwx
NCArMTI4LDE0IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW4pCiAKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRh
YmFzZUZpbGVJZkVtcHR5KGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShk
ZWxldGVFbXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOwogI2Vsc2UKLSAgICBFWFBF
Q1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAjZW5kaWYKIAogICAgIHJlbW92ZURp
cmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAK
IFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0YWJhc2VEb2VzTm90RXhp
c3QpCkBAIC0xNDMsNyArMTQzLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdp
bldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICAvLyBUZXN0IHRoZSBjYXNlIHdoZXJlIHRo
ZXJlIGlzIGFuIGVudHJ5IGluIGJvdGggdGhlIE9yaWdpbnMgYW5kIERhdGFiYXNlcyB0YWJsZXMs
CiAgICAgLy8gYnV0IG5vdCBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4KICAgICAvLyBUaGUg
aW5mb3JtYXRpb24gc2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgdGFibGVzLgotICAg
IE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJX
ZWJTUUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3Jl
YXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6
OnRyYWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0xNTIs
MTUgKzE1MiwxNSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRhdGFi
YXNlRG9lc05vdEV4aXN0KQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1
MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3Jp
Z2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFt
ZSA9ICJkYXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxlKGRhdGFiYXNlUGF0
aCwgb3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwogICAgIEVYUEVDVF9F
USgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuc2l6
ZSgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZUZ1bGxQYXRoID0gZGF0YWJhc2VUcmFja2Vy
LT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxzZSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0aCkpOworICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNlRnVsbFBhdGgpKTsK
IAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbikp
OwogCkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdp
bldoZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNr
ZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwogCiAgICAgcmVtb3ZlRGlyZWN0
b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFM
U0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVT
VChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFzZUZhaWxz
KQpAQCAtMTc4LDcgKzE3OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5X
aGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKICAgICAvLyBXaGVuIHdlIGNhbGwgZGVsZXRlT3Jp
Z2luKCksIGRlbGV0aW5nIG9uZSBvZiB0aGVzZSBkYXRhYmFzZXMgZmFpbHMuCiAgICAgLy8gSW4g
dGhpcyBjYXNlLCB3ZSBzaG91bGRuJ3QgcmVtb3ZlIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGVpdGhl
ciB0aGUgRGF0YWJhc2VzIG9yCiAgICAgLy8gT3JpZ2lucyB0YWJsZXMuCi0gICAgTlNTdHJpbmcg
KndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwor
ICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3Jh
cnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
KHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRh
YmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldp
dGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTE4NywxNiArMTg3LDE2
IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJh
c2VGYWlscykKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7
CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5z
aXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1Rf
VFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0
YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdp
biwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2ln
bmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAK
LSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNU
X1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShm
aWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdp
bi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJhc2VQ
YXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0
YWJhc2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJhc2VQ
YXRoKTsKQEAgLTIwOSw4ICsyMDksOCBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3Jp
Z2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAKICAgICBFWFBFQ1RfRkFMU0UoZGF0YWJh
c2VUcmFja2VyLT5kZWxldGVPcmlnaW4ob3JpZ2luKSk7CiAKLSAgICBFWFBFQ1RfVFJVRShmaWxl
RXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3Rz
KG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1
bGxXZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKG9yaWdpblBhdGgpKTsKIAogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VU
cmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRh
dGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CkBAIC0yMjEsMTEg
KzIyMSwxMSBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5n
QURhdGFiYXNlRmFpbHMpCiAgICAgY2hmbGFncyhmdWxsV2ViRGF0YWJhc2VQYXRoLnV0ZjgoKS5k
YXRhKCksIDApOwogI2VuZGlmCiAKLSAgICBFWFBFQ1RfVFJVRShkZWxldGVGaWxlKGZ1bGxXZWJE
YXRhYmFzZVBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShkZWxldGVFbXB0eURpcmVjdG9yeShvcmln
aW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsV2Vi
RGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlE
aXJlY3Rvcnkob3JpZ2luUGF0aCkpOwogCiAgICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVu
dHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhk
YXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNr
ZXIsIERlbGV0ZU9yaWdpbldpdGhNaXNzaW5nRW50cnlJbkRhdGFiYXNlc1RhYmxlKQpAQCAtMjM0
LDcgKzIzNCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaXRoTWlzc2lu
Z0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKICAgICAvLyB0aGUgRGF0YWJhc2VzIHRhYmxlLiBUaGVy
ZSBpcyBhbiBhY3R1YWwgZGF0YWJhc2Ugb24gZGlzay4KICAgICAvLyBUaGUgaW5mb3JtYXRpb24g
c2hvdWxkIHN0aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgT3JpZ2lucyB0YWJsZSwgYW5kIHRoZQog
ICAgIC8vIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVkIGZyb20gZGlzay4KLSAgICBOU1N0cmlu
ZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7
CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBh
dGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERh
dGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
V2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAtMjQzLDI4ICsyNDMs
MjggQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldpdGhNaXNzaW5nRW50cnlJ
bkRhdGFiYXNlc1RhYmxlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1
MjQyODgwKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3Jp
Z2lucygpLnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAg
IEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFi
YXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VU
cmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKIAotICAgIFN0cmluZyBv
cmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBFWFBFQ1RfVFJVRShtYWtlQWxs
RGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMob3Jp
Z2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3Jp
ZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
b3JpZ2luUGF0aCkpOwogCi0gICAgU3RyaW5nIHdlYkRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIiKTsKKyAgICBTdHJpbmcgd2Vi
RGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9yaWdp
blBhdGgsICJkYXRhYmFzZS5kYiIpOwogICAgIGNyZWF0ZUZpbGVBdFBhdGgod2ViRGF0YWJhc2VQ
YXRoKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlT3JpZ2luKG9y
aWdpbikpOwogCi0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0YWJhc2VQYXRoKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNlUGF0aCkpOworICAgIEVYUEVD
VF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIEVYUEVD
VF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLmlzRW1wdHkoKSk7CiAgICAgRVhQRUNU
X1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsK
IAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0
aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7
CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKQEAg
LTI3Miw3ICsyNzIsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2UpCiAg
ICAgLy8gVGVzdCB0aGUgZXhwZWN0ZWQgY2FzZS4gVGhlcmUgaXMgYW4gZW50cnkgaW4gdGhlIERh
dGFiYXNlcyB0YWJsZQogICAgIC8vIGFuZCBhIGRhdGFiYXNlIG9uIGRpc2suIEFmdGVyIHRoZSBk
ZWxldGlvbiwgdGhlIGRhdGFiYXNlIHNob3VsZCBiZSBkZWxldGVkCiAgICAgLy8gZnJvbSBkaXNr
LCBhbmQgdGhlIGluZm9ybWF0aW9uIHNob3VsZCBiZSBnb25lIGZyb20gdGhlIERhdGFiYXNlcyB0
YWJsZS4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVT
eXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBk
YXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJh
c2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgp
OwpAQCAtMjgxLDE2ICsyODEsMTYgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFi
YXNlKQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAg
ICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUo
KSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAgIEVYUEVDVF9UUlVF
KGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgs
ICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFz
ZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxlKGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3
ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQp
MSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuc2l6ZSgpKTsKIAotICAg
IFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKLSAgICBFWFBFQ1RfVFJV
RShtYWtlQWxsRGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVF
eGlzdHMob3JpZ2luUGF0aCkpOworICAgIFN0cmluZyBvcmlnaW5QYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgb3JpZ2luLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMob3JpZ2luUGF0aCkpOwogCiAgICAgU3RyaW5nIGZ1bGxXZWJEYXRhYmFzZVBhdGgg
PSBkYXRhYmFzZVRyYWNrZXItPmZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFz
ZU5hbWUsIGZhbHNlKTsKICAgICBjcmVhdGVGaWxlQXRQYXRoKGZ1bGxXZWJEYXRhYmFzZVBhdGgp
OwpAQCAtMzAxLDIwICszMDEsMjAgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFi
YXNlKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBFWFBFQ1RfVFJVRShEYXRhYmFzZVRyYWNrZXI6
OmRlbGV0ZURhdGFiYXNlRmlsZUlmRW1wdHkoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOwogI2Vsc2UK
LSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFdlYkRhdGFiYXNlUGF0aCkp
OwogI2VuZGlmCiAKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+
b3JpZ2lucygpLnNpemUoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1wdHlEaXJlY3Rvcnko
b3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG9yaWdpblBhdGgpKTsKICAgICByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhk
YXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwg
RGVsZXRlRGF0YWJhc2VXaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiB7CiAgICAgLy8gVGVzdCB0
aGUgY2FzZSB3aGVyZSB3ZSB0cnkgdG8gZGVsZXRlIGEgZGF0YWJhc2UgdGhhdCBkb2Vzbid0IGV4
aXN0IG9uIGRpc2suCiAgICAgLy8gV2Ugc2hvdWxkIHN0aWxsIHJlbW92ZSB0aGUgZGF0YWJhc2Ug
aW5mb3JtYXRpb24gZnJvbSB0aGUgRGF0YWJhc2VzIHRhYmxlLgotICAgIE5TU3RyaW5nICp3ZWJT
UUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBO
U1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJT
UUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VU
cmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0
YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0zMjMsMjEgKzMyMywyMSBAQCBU
RVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2VXaGVuRGF0YWJhc2VEb2VzTm90RXhp
c3QpCiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAg
IEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgp
KTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUo
ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwg
IkRhdGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNl
X25hbWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdl
YkRhdGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkx
LCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwogCiAgICAg
U3RyaW5nIHdlYkRhdGFiYXNlRnVsbFBhdGggPSBkYXRhYmFzZVRyYWNrZXItPmZ1bGxQYXRoRm9y
RGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUsIGZhbHNlKTsKLSAgICBFWFBFQ1RfRkFM
U0UoZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0aCkpOwogCiAgICAgRVhQRUNU
X1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kZWxldGVEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNl
TmFtZSkpOwogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhv
cmlnaW4pLmlzRW1wdHkoKSk7CiAKICAgICByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhk
YXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQppbmRleCA3NDg2NjVjZjJjMi4uMmFjOGI1NmRlYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtOTIsMTAgKzkyLDEw
IEBAIHN0YXRpYyBib29sIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0YXRlID0gZmFsc2U7CiAgICAg
RVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNwb25zZSk7CiAgICAgRVhQRUNUX0VRKF9kb3dubG9h
ZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5k
bGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJU
ZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAh
PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpjbG9z
ZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Cisg
ICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
ZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9k
ZXN0aW5hdGlvblBhdGg7CkBAIC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIGJvb2wgZXhwZWN0ZWRV
c2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRVc2VySW5p
dGlhdGVkU3RhdGUsIGRvd25sb2FkLndhc1VzZXJJbml0aWF0ZWQpOwogICAgIEVYUEVDVF9UUlVF
KF9leHBlY3RlZENvbnRlbnRMZW5ndGggPT0gTlNVUkxSZXNwb25zZVVua25vd25MZW5ndGggfHwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KF9leHBlY3RlZENvbnRlbnRMZW5ndGgpID09IF9yZWNlaXZl
ZENvbnRlbnRMZW5ndGgpOwogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY29udGVudHNFcXVhbEF0UGF0aDpfZGVzdGluYXRpb25QYXRoIGFuZFBhdGg6W3Nv
dXJjZVVSTCBwYXRoXV0pOwotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0
aCk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRo
KTsKICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC0zOTMsMTAgKzM5MywxMCBAQCBURVNUKF9X
S0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERpcmVjdERvd25sb2FkV2l0aExv
YWRlZENvbnRlbnQpCiAgICAgRVhQRUNUX1RSVUUoaGFzUmVjZWl2ZWRSZXNwb25zZSk7CiAgICAg
RVhQRUNUX0VRKF9kb3dubG9hZCwgZG93bmxvYWQpOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9w
ZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsK
LSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0
aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJ
IiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAKICAgICAqYWxsb3dPdmVyd3JpdGUgPSBZ
RVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CkBAIC00MTAsNyArNDEwLDcgQEAgVEVT
VChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEaXJlY3REb3dubG9hZFdp
dGhMb2FkZWRDb250ZW50KQogICAgIE5TU3RyaW5nKiBleHBlY3RlZENvbnRlbnQgPSBAIntcInhc
Ijo0MixcInNcIjpcImhlbGxvLCB3b3JsZFwifSI7CiAgICAgTlNEYXRhKiBleHBlY3RlZERhdGEg
PSBbZXhwZWN0ZWRDb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XTsKICAgICBFWFBFQ1RfVFJVRShbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjb250
ZW50c0F0UGF0aDpfZGVzdGluYXRpb25QYXRoXSBpc0VxdWFsVG9EYXRhOmV4cGVjdGVkRGF0YV0p
OwotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7CisgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKICAgICBpc0RvbmUg
PSB0cnVlOwogfQogCkBAIC00NjYsMTAgKzQ2NiwxMCBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3du
bG9hZFJlcXVlc3RCbG9iVVJMKQogCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxv
YWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNT
dHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlCiB7
Ci0gICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGU7Ci0gICAgX2Rlc3Rp
bmF0aW9uUGF0aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwg
ZmlsZUhhbmRsZSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKLSAgICBXZWJDb3JlOjpjbG9zZUZpbGUoZmlsZUhhbmRs
ZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5k
bGU7CisgICAgX2Rlc3RpbmF0aW9uUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1w
b3JhcnlGaWxlKCJUZXN0V2ViS2l0QVBJIiwgZmlsZUhhbmRsZSk7CisgICAgRVhQRUNUX1RSVUUo
ZmlsZUhhbmRsZSAhPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZUhhbmRsZSk7CiAg
ICAgKmFsbG93T3ZlcndyaXRlID0gWUVTOwogICAgIHJldHVybiBfZGVzdGluYXRpb25QYXRoOwog
fQpAQCAtNDk2LDcgKzQ5Niw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdEJs
b2JVUkwpCiAgICAgaWYgKHJlZGlyZWN0Q2hhaW4uY291bnQgPiAyKQogICAgICAgICBFWFBFQ1Rf
U1RSRVEoImh0dHA6Ly9wYXNzLyIsIFtyZWRpcmVjdENoYWluWzJdLmFic29sdXRlU3RyaW5nIFVU
RjhTdHJpbmddKTsKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUoX2Rlc3RpbmF0aW9uUGF0aCk7
CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsK
ICAgICBpc0RvbmUgPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325555</attachid>
            <date>2017-11-01 00:52:16 -0700</date>
            <delta_ts>2017-11-02 15:52:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>179063.diff</filename>
            <type>text/plain</type>
            <size>332163</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YTg3MzkzLi5lODZhYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUx
IEBACisyMDE3LTExLTAxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4K
KworICAgICAgICBBZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgQWRkaW5nIGEgRmlsZVN5c3Rl
bSBuYW1lc3BhY2Ugc28gaXRzIGZ1bmN0aW9ucyBhcmVuJ3QgZ2xvYmFsIGluIFdlYkNvcmUuCisK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjptZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNh
cGkvRE9NRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5V2l0
aE1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0
ZW0pOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVQYXRoSXNFeHBlY3RlZFR5cGUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3Rl
bTo6ZXZhbHVhdGVQYXRoKToKKyAgICAgICAgKiBNb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3Rl
bUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW1FbnRyeTo6RmlsZVN5c3Rl
bUVudHJ5KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZp
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VJZGVudGlmaWVyOjpkYXRhYmFz
ZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2Vy
dmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6OnJlbW92ZUFsbERhdGFiYXNlc0Zvck9yaWdpblBhdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc01v
ZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnBl
cmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbnMpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlTmFtZUZy
b21FbmNvZGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VE
aXJlY3RvcnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpnZXRCbG9iUmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3RvcmUpOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpt
b3ZlQmxvYkZpbGVzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpT
UUxpdGVJREJUcmFuc2FjdGlvbjo6ZGVsZXRlQmxvYkZpbGVzSWZOZWNlc3NhcnkpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5Qcm9jZXNzSURCU2VydmVyOjphY2Nlc3NUb1RlbXBvcmFyeUZpbGVD
b21wbGV0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjp1c2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMp
OgorICAgICAgICAoV2ViQ29yZTo6aXNaZXJvQnl0ZUZpbGUpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcmlnaW5Mb2Nr
Ojpsb2NrRmlsZU5hbWVGb3JQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Ok9yaWdpbkxvY2s6Ok9y
aWdpbkxvY2spOgorICAgICAgICAoV2ViQ29yZTo6T3JpZ2luTG9jazo6bG9jayk6CisgICAgICAg
IChXZWJDb3JlOjpPcmlnaW5Mb2NrOjp1bmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6T3JpZ2lu
TG9jazo6ZGVsZXRlTG9ja0ZpbGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvT3Jp
Z2luTG9jay5oOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlOjpsYXN0TW9kaWZpZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6Y29t
cHV0ZU5hbWVBbmRDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlOjppc0RpcmVj
dG9yeSBjb25zdCk6CisgICAgICAgICogZmlsZWFwaS9GaWxlQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlRm9yUmVwbGFjZWRGaWxlKToK
KyAgICAgICAgKiBodG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
cHBlbmREaXJlY3RvcnlGaWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlTGlzdENyZWF0b3I6
OmNyZWF0ZUZpbGVMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJNZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5IGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OnNwYWNlTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpsb2FkQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjaGVja0ZvckRlbGV0ZWRSZXNvdXJjZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJlYVNp
emUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1
c2VyU3R5bGVTaGVldCBjb25zdCk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSBjb25zdCk6Cisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRhYmFzZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6
RmlsZUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWxlSGFuZGxlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVI
YW5kbGU6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6d3JpdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsZUhhbmRsZTo6Y2xvc2UpOgorICAgICAgICAqIHBsYXRmb3JtL0Zp
bGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVTdHJlYW06OkZpbGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVN0cmVhbTo6Z2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtOjpvcGVuRm9y
UmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtOjpjbG9zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGaWxlU3RyZWFtOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFt
Lmg6CisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaG91bGRFc2NhcGVVQ2hhcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjplbmNvZGVG
b3JGaWxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVGcm9tRmlsZW5h
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9y
aW5nVHJhaWxpbmdTbGFzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBlbmRGaWxl
Q29udGVudHNUb0ZpbGVIYW5kbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsZXNI
YXZlU2FtZVZvbHVtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZXRNZXRhZGF0YVVS
TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5FeGNsdWRlRnJvbUJhY2t1cCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpleGNsdWRlRnJvbUJhY2t1cCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNYXBwZWRGaWxlRGF0YTo6fk1hcHBlZEZpbGVEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hcHBlZEZpbGVEYXRhOjpNYXBwZWRGaWxlRGF0YSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpvcGVuQW5kTG9ja0ZpbGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6dW5sb2NrQW5kQ2xvc2VGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmZpbGVJc0RpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vRmls
ZVN5c3RlbS5oOgorICAgICAgICAoV2ViQ29yZTo6c2V0TWV0YWRhdGFVUkwpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aXNIYW5kbGVWYWxpZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjppbnZhbGlkRmlsZVRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxp
ZEZpbGVUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1hcHBlZEZpbGVEYXRhOjpN
YXBwZWRGaWxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXBwZWRGaWxlRGF0
YTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXBw
ZWRGaWxlRGF0YTo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXBw
ZWRGaWxlRGF0YTo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNYXBw
ZWRGaWxlRGF0YTo6b3BlcmF0b3I9KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0
YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50Ojpz
aXplIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEFzVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBh
dGhBc1VSTCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZU1vbml0b3JD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVNb25pdG9yOjpGaWxlTW9uaXRvcik6Cisg
ICAgICAgICogcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6aG9tZURpcmVjdG9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6b3Bl
blRlbXBvcmFyeUZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bW92ZUZpbGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dW5lc2NhcGVk
RmlsZW5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGVuYW1lRm9yRGlzcGxheSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpmaWxlRXhpc3RzKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmRlbGV0ZUZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVN0
YXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZUxTdGF0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmdldEZpbGVDcmVhdGlvblRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9GaWxl
TWV0YXRhVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpmaWxlTWV0YWRhdGFVc2lu
Z0Z1bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGVNZXRhZGF0YSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3JpZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6aG9tZURpcmVjdG9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlU3ltYm9saWNMaW5rKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnBhdGhHZXRGaWxlTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBsaWNhdGlv
bkRpcmVjdG9yeVBhdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2hhcmVkUmVzb3Vy
Y2VzUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRWb2x1bWVGcmVlU3BhY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Om9wZW5UZW1wb3JhcnlGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZW5G
aWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsb3NlRmlsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp3
cml0ZVRvRmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyZWFkRnJvbUZpbGUpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bW92ZUZpbGUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6aGFyZExpbmtPckNvcHlGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OmdldEZpbGVEZXZpY2VJZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsb2NrRmlsZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp1bmxvY2tGaWxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNz
aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb246
OmNvbnRlbnRLZXlTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQzo6c3RvcmFnZVBhdGggY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3RyZWFtU2Vzc2lvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRvd25s
b2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnB1cmdlT2xkRG93bmxvYWRGaWxlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9RdWlja0xvb2subW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUZW1wb3JhcnlGaWxl
Rm9yUXVpY2tMb29rKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbToKKyAgICAgICAgKGxpbmtUZW1wb3JhcnlJdGVtUHJvdmlkZXJGaWxlc1RvRHJv
cFN0YWdpbmdEaXJlY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXApOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXApOgorICAgICAgICAoV2ViQ29y
ZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2V0
TWV0YWRhdGFVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FuRXhjbHVkZUZyb21C
YWNrdXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZXhjbHVkZUZyb21CYWNrdXApOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6
fkJsb2JEYXRhRmlsZVJlZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OnN0YXJ0VHJhY2tpbmdNb2RpZmljYXRpb25zKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZvcm1EYXRhOjphcHBlbmRGaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpyZW1v
dmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJl
bnRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRUUEJvZHlDRlJlYWRTdHJlYW0p
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZUVudHJ5Ojppc0NhY2hlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6c2F2ZUNhY2hlZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybENhY2hlRW50cnk6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hl
RW50cnk6OnBhcnNlUmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNo
ZUVudHJ5OjplbnRyeVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlRW50cnk6Om9w
ZW5Db250ZW50RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Y2xvc2VD
b250ZW50RmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVu
dHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdlcjo6bG9hZEluZGV4KToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCk6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDdXJsRG93bmxvYWQ6OmN1cmxEaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJs
RG93bmxvYWQ6OmN1cmxEaWRGYWlsV2l0aEVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6
OnNldHVwRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3Q6OndyaXRlRGF0
YVRvRG93bmxvYWRGaWxlSWZFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
OjpjbG9zZURvd25sb2FkRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2xl
YW51cERvd25sb2FkRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6c2V0Q2xpZW50Q2Vy
dGlmaWNhdGVJbmZvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZp
bGVSZWZlcmVuY2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRF
bmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3Vw
TmV0d29ya1Nlc3Npb246OmNsZWFyT2xkU291cENhY2hlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZUV4aXN0cyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkZWxldGVGaWxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Om9wZW5GaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNsb3Nl
RmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzZWVrRmlsZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjp0cnVuY2F0ZUZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6d3JpdGVUb0ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cmVhZEZyb21GaWxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmxvY2tGaWxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OnVubG9ja0ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNp
emUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZUNyZWF0aW9uVGltZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjp0b0ZpbGVNZXRhdGFUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OmZpbGVNZXRhZGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpm
aWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVTeW1ib2xpY0xpbmspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bWFrZUFsbERp
cmVjdG9yaWVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Omxpc3REaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6b3BlblRlbXBvcmFyeUZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aGFyZExp
bmtPckNvcHlGaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbGVEZXZpY2VJ
ZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0Zp
bGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06Om9wZW5EYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFzZUZpbGVOYW1lVG9QYXRoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRGlyZWN0
b3J5RXhpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURh
dGFiYXNlRmlsZUV4aXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVG
aWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0
ZUZpbGVTeXN0ZW06OmRhdGFiYXNlQ3JlYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgICogcGxh
dGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5RmlsZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6c2NhbkRpcmVjdG9yeUZvckRpY3Rpb25hcmllcyk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmluZERhdGEpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemVGcm9tRmluZERhdGEpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZVNpemVGcm9tQnlIYW5kbGVGaWxlSW5mb3Jt
YXRpb25TdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZUNyZWF0
aW9uVGltZUZyb21GaW5kRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZUZyb21GaW5kRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpnZXRGaWxlU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRGaWxlQ3JlYXRpb25U
aW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmdldEZpbmFsUGF0aE5hbWUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6aXNTeW1ib2xpY0xpbmspOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6dG9GaWxlTWV0YWRhdGFUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmZpbmREYXRhVG9GaWxlTWV0YWRhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZmlsZU1ldGFkYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGVNZXRhZGF0YUZv
bGxvd2luZ1N5bWxpbmtzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN5bWJv
bGljTGluayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpmaWxlRXhpc3RzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZUZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
bW92ZUZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1ha2VBbGxEaXJlY3Rvcmllcyk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpob21lRGlyZWN0b3J5UGF0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpwYXRoR2V0RmlsZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6ZGlyZWN0b3J5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpidW5kbGVO
YW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnN0b3JhZ2VEaXJlY3RvcnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVkU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpvcGVuRmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpjbG9zZUZp
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6c2Vla0ZpbGUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6d3JpdGVUb0ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
cmVhZEZyb21GaWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmhhcmRMaW5rT3JDb3B5
RmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6cm9hbWluZ1VzZXJTcGVj
aWZpY1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bGlzdERp
cmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRWb2x1bWVGcmVlU3BhY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2V0RmlsZURldmljZUlkKTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZvcldpZHRoIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbEJ1
ZmZlcldpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZVdp
bjo6c3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlKToKKwogMjAxNy0xMC0zMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBzb21lIGRyYWcg
YW5kIGRyb3AgZmVhdHVyZSBmbGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vz
c2lvbi5jcHAKaW5kZXggNmFlYmIxZi4uN2VmYjc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJL
aXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1l
ZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYg
KHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9y
eSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKS5k
YXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJvb2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpo
YXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IDZkMmViODguLjhlNTA2NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3Rl
bS5jcHAKQEAgLTQ4LDE3ICs0OCwxNyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGljIEV4
Y2VwdGlvbk9yPFZlY3RvcjxMaXN0ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEo
Y29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAoIWZpbGVJc0RpcmVjdG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNM
aW5rczo6Tm8pKQorICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQYXRo
LCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RGb3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9y
IGlzIG5vIGxvbmdlciBhIGRpcmVjdG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9IGxp
c3REaXJlY3RvcnkoZnVsbFBhdGgsICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeShmdWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVkQ2hp
bGQ+IGxpc3RlZENoaWxkcmVuOwogICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoY2hpbGRQYXRocy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogY2hp
bGRQYXRocykgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0
aCk7CisgICAgICAgIGF1dG8gbWV0YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY2hp
bGRQYXRoKTsKICAgICAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlk
ZGVuKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hl
Y2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBtZXRh
ZGF0YS52YWx1ZSgpLnR5cGUgfSk7CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFw
cGVuZChMaXN0ZWRDaGlsZCB7IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgp
LCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGxp
c3RlZENoaWxkcmVuKTsKIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlk
VmlydHVhbFBhdGgoU3RyaW5nVmlldyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRPTUZp
bGVTeXN0ZW0oUmVmPEZpbGU+JiYgZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCkpCiAgICAgLCBtX2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9vdFBh
dGgoZGlyZWN0b3J5TmFtZShtX2ZpbGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZpbGVT
eXN0ZW06OmRpcmVjdG9yeU5hbWUobV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVldWUo
V29ya1F1ZXVlOjpjcmVhdGUoIkRPTUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAgIEFT
U0VSVCghbV9yb290UGF0aC5lbmRzV2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBzdGF0
aWMgRXhjZXB0aW9uT3I8U3RyaW5nPiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25zdCBT
dHJpbmcmIGZ1bGxQYXRoLCBTdAogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgYXV0byBtZXRhZGF0YSA9IGZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBtZXRh
ZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFtZXRh
ZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90Rm91bmRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0Iikg
fTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZhbGlk
YXRlUGF0aElzRXhwZWN0ZWRUeXBlKGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3RyaW5n
JiBmdWxsUGF0aCkKIHsKLSAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQYXRo
KTsKKyAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQYXRo
KTsKICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCkudHlw
ZTsKQEAgLTIzNiw3ICsyMzYsNyBAQCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRo
KFN0cmluZ1ZpZXcgdmlydHVhbFBhdGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5hcHBl
bmQoY29tcG9uZW50KTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50cyhtX3Jvb3RQYXRoLCByZXNvbHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29tcG9u
ZW50cyk7CiB9CiAKIHZvaWQgRE9NRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9y
eSwgRGlyZWN0b3J5TGlzdGluZ0NhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3Bw
CmluZGV4IGI2YmJjNjMuLmRjY2I1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIEZpbGVTeXN0ZW1FbnRyeTo6RmlsZVN5c3RlbUVudHJ5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNv
bnN0IFN0cmluZyYgdmlydHVhbFBhdGgpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQp
CiAgICAgLCBtX2ZpbGVzeXN0ZW0oZmlsZXN5c3RlbSkKLSAgICAsIG1fbmFtZShwYXRoR2V0Rmls
ZU5hbWUodmlydHVhbFBhdGgpKQorICAgICwgbV9uYW1lKEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxl
TmFtZSh2aXJ0dWFsUGF0aCkpCiAgICAgLCBtX3ZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoKQogewog
ICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggZDk0NmJlNC4u
OGJiODgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgU3RyaW5n
IElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChj
b25zdCBTdHJpbmcmIHJvb3QKIAogU3RyaW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJh
c2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExl
dmVsT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcm9vdERpcmVjdG9yeSkKIHsKLSAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksIHRvcExldmVsT3JpZ2lu
LmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksIHRvcExl
dmVsT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIC8vIElmIHRoZSBvcGVuaW5n
IG9yaWdpbiBhbmQgbWFpbiBmcmFtZSBvcmlnaW5zIGFyZSB0aGUgc2FtZSwgdGhlcmUgaXMgbm8g
cGFydGl0aW9uaW5nLgogICAgIGlmIChvcGVuaW5nT3JpZ2luID09IHRvcExldmVsT3JpZ2luKQog
ICAgICAgICByZXR1cm4gbWFpbkZyYW1lRGlyZWN0b3J5OwogCi0gICAgcmV0dXJuIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtYWluRnJhbWVEaXJlY3RvcnksIG9wZW5pbmdPcmlnaW4uZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBvcGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRp
ZmllcigpKTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNjgxY2U4YS4u
ZmZmOGY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2NiwxMSArNDY2LDExIEBAIHZvaWQgSURCU2VydmVy
OjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVudGlmaWVy
OjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1haW5GcmFtZU9yaWdpbiwgb3Blbmlu
Z09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgpOwogCi0gICAgVmVjdG9yPFN0cmluZz4g
ZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7Cisg
ICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4g
ZGF0YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMu
c2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgewotICAgICAgICBTdHJp
bmcgZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNo
KGVudHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29kZWROYW1lID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAg
ICAgIGRhdGFiYXNlcy51bmNoZWNrZWRBcHBlbmQoU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRh
YmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGVuY29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01
ODEsMTQgKzU4MSwxNCBAQCB2b2lkIElEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNG
b3JPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCBy
ZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewot
ICAgIFZlY3RvcjxTdHJpbmc+IGRhdGFiYXNlUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBh
dGgsICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VQYXRocyA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0
byYgZGF0YWJhc2VQYXRoIDogZGF0YWJhc2VQYXRocykgewotICAgICAgICBTdHJpbmcgZGF0YWJh
c2VGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWRE
Qi5zcWxpdGUzIik7CisgICAgICAgIFN0cmluZyBkYXRhYmFzZUZpbGUgPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERC
LnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9kaWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxl
KSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0g
ICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9k
aWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2RpZmljYXRpb25UaW1lKSA8IG1vZGlmaWVkU2lu
Y2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRhYmFzZXNG
b3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbgogICAgICAg
ICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxvYiBmaWxlcyBhcmUgbmFtZWQgIk4uYmxvYiIg
d2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwKICAgICAgICAgLy8gc28gdGhvc2UgYXJlIHRo
ZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJlIHRyeWluZyB0byBkZWxldGUuCi0gICAgICAg
IGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGlyZWN0b3J5KGRhdGFiYXNlUGF0aCwgIlswLTld
Ki5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iUGF0aCA6IFdlYkNvcmU6OkZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQYXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAg
ICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGlu
ZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAgICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJp
bmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAi
LmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9uLWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAg
ICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMg
b25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5v
dCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhH
ZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoYmxvYlBhdGgpOwogICAgICAgICAgICAg
YXV0byBmaWxlbmFtZUxlbmd0aCA9IGZpbGVuYW1lLmxlbmd0aCgpOwogCiAgICAgICAgICAgICBB
U1NFUlQoZmlsZW5hbWVMZW5ndGggPj0gNik7CkBAIC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMg
dm9pZCByZW1vdmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2lu
UGF0aCwgc3RkOjpjaHJvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAodmFsaWRG
aWxlbmFtZSkKLSAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAg
ICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIE5vdyBkZWxldGUgSW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0
ZWQgU1FMaXRlIGZpbGVzLgogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFz
ZUZpbGUoZGF0YWJhc2VGaWxlKTsKIAogICAgICAgICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2Fu
LCBkZWxldGUgdGhlIGVtcHR5IGRpcmVjdG9yeS4KLSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3Rv
cnkoZGF0YWJhc2VQYXRoKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsKICAgICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFz
ZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwgd2UgY2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVj
dG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwog
fQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2lu
Y2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYgKCFtX2RhdGFiYXNlRGlyZWN0b3J5
UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBs
aXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiKiIpOworICAgICAgICBWZWN0
b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIqIik7CiAgICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAgICAgICAgcmVtb3ZlQWxsRGF0YWJhc2VzRm9y
T3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmllZFNpbmNlKTsKICAgICB9CkBAIC02NTksNyAr
NjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3IKIHsKICAgICBpZiAoIW1fZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdp
biA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0cmluZyBvcmlnaW5QYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3RyaW5nIG9yaWdpblBhdGggPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeVBh
dGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICByZW1vdmVBbGxE
YXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMwYi4uOWZmOGMwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTc0NCw3ICs3NDQsNyBAQCBTdHJpbmcgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1lKGNvbnN0IFN0cmlu
ZyYgZW5jbwogICAgIFN0cmluZyBwYXJ0aWFsbHlEZWNvZGVkID0gZW5jb2RlZE5hbWU7CiAgICAg
cGFydGlhbGx5RGVjb2RlZC5yZXBsYWNlKEFTQ0lJTGl0ZXJhbCgiJTJFIiksIEFTQ0lJTGl0ZXJh
bCgiLiIpKTsKIAotICAgIHJldHVybiBkZWNvZGVGcm9tRmlsZW5hbWUocGFydGlhbGx5RGVjb2Rl
ZCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFtZShwYXJ0aWFsbHlE
ZWNvZGVkKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZmlsZW5hbWVGb3JE
YXRhYmFzZU5hbWUoKSBjb25zdApAQCAtNzU0LDcgKzc1NCw3IEBAIFN0cmluZyBTUUxpdGVJREJC
YWNraW5nU3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3QKICAgICBpZiAobV9p
ZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuICIlMDAi
OwogCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gZW5jb2RlRm9yRmlsZU5hbWUobV9pZGVudGlmaWVy
LmRhdGFiYXNlTmFtZSgpKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjplbmNv
ZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwogICAgIGZpbGVuYW1l
LnJlcGxhY2UoJy4nLCAiJTJFIik7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7CkBAIC03NjQsMTQg
Kzc2NCwxNCBAQCBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxsRGF0YWJhc2VEaXJl
Y3RvcnkoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgp
LmlzTnVsbCgpKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9hYnNv
bHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFtZUZvckRhdGFiYXNlTmFtZSgpKTsKKyAgICBy
ZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fYWJzb2x1dGVEYXRh
YmFzZURpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7CiB9CiAKIFN0cmluZyBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGgoKSBjb25zdAogewogICAgIEFT
U0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsKIAotICAgIHJldHVy
biBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCksICJJbmRl
eGVkREIuc3FsaXRlMyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCksICJJbmRleGVkREIuc3FsaXRlMyIpOwog
fQogCiBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKQEAgLTc4Myw3ICs3ODMsNyBAQCBJREJFcnJv
ciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRh
dGFiYXNlSW5mbyYgaW5mbwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogICAgIH0KIAot
ICAgIG1ha2VBbGxEaXJlY3RvcmllcyhmdWxsRGF0YWJhc2VEaXJlY3RvcnkoKSk7CisgICAgRmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZ1bGxEYXRhYmFzZURpcmVjdG9yeSgpKTsKICAg
ICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAogICAgIG1fc3FsaXRl
REIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwpAQCAtMTg1OCw3ICsxODU4
LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRCbG9iUmVjb3Jkc0Zvck9i
amVjdFN0b3JlUmVjb3JkKGludDY0X3Qgb2JqZWMKICAgICAgICAgYmxvYlVSTHMuYXBwZW5kKGJs
b2JVUkwpOwogCiAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IHNxbC0+Z2V0Q29sdW1uVGV4dCgw
KTsKLSAgICAgICAgYmxvYkZpbGVQYXRocy5hcHBlbmQocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlTmFtZSkpOworICAgICAgICBibG9iRmlsZVBhdGhzLmFw
cGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3Rv
cnksIGZpbGVOYW1lKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKQEAgLTI1
NDIsOCArMjU0Miw4IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5n
U3RvcmUoKQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5ID0gZnVsbERhdGFiYXNlRGly
ZWN0b3J5KCk7CiAgICAgZm9yIChhdXRvJiBmaWxlIDogYmxvYkZpbGVzKSB7Ci0gICAgICAgIFN0
cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9y
eSwgZmlsZSk7Ci0gICAgICAgIGlmICghZGVsZXRlRmlsZShmdWxsUGF0aCkpCisgICAgICAgIFN0
cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZmlsZSk7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShmdWxsUGF0aCkpCiAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIGRlbGV0aW5nIGJsb2Ig
ZmlsZSAlcyIsIGZ1bGxQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjA4NjNhOC4uMjMxNjVjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCVHJhbnNhY3Rpb24uY3BwCkBAIC05MSw4ICs5MSw4IEBAIHZvaWQgU1FMaXRlSURCVHJhbnNh
Y3Rpb246Om1vdmVCbG9iRmlsZXNJZk5lY2Vzc2FyeSgpCiAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IG1fYmxvYlRlbXBvcmFyeUFuZFN0b3JlZEZpbGVuYW1lcykgewogICAgICAgICBtX2JhY2tpbmdT
dG9yZS50ZW1wb3JhcnlGaWxlSGFuZGxlcigpLnByZXBhcmVGb3JBY2Nlc3NUb1RlbXBvcmFyeUZp
bGUoZW50cnkuZmlyc3QpOwogCi0gICAgICAgIGlmICghaGFyZExpbmtPckNvcHlGaWxlKGVudHJ5
LmZpcnN0LCBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnksIGVudHJ5
LnNlY29uZCkpKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbGluay9jb3B5IHRl
bXBvcmFyeSBibG9iIGZpbGUgJyVzJyB0byBsb2NhdGlvbiAnJXMnIiwgZW50cnkuZmlyc3QudXRm
OCgpLmRhdGEoKSwgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBl
bnRyeS5zZWNvbmQpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Omhh
cmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpKSkKKyAgICAgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1wb3JhcnkgYmxvYiBmaWxlICclcycg
dG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0ZjgoKS5kYXRhKCksIEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkuc2Vjb25k
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBtX2JhY2tpbmdTdG9yZS50ZW1wb3JhcnlGaWxl
SGFuZGxlcigpLmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGVudHJ5LmZpcnN0KTsKICAg
ICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBTUUxpdGVJREJUcmFuc2FjdGlvbjo6ZGVsZXRl
QmxvYkZpbGVzSWZOZWNlc3NhcnkoKQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5ID0g
bV9iYWNraW5nU3RvcmUuZnVsbERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgZm9yIChhdXRvJiBl
bnRyeSA6IG1fYmxvYlJlbW92ZWRGaWxlbmFtZXMpIHsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRo
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeSk7Cisg
ICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOwogICAgICAgICBtX2JhY2tpbmdTdG9yZS50
ZW1wb3JhcnlGaWxlSGFuZGxlcigpLnByZXBhcmVGb3JBY2Nlc3NUb1RlbXBvcmFyeUZpbGUoZnVs
bFBhdGgpOwogICAgICAgICBtX2JhY2tpbmdTdG9yZS50ZW1wb3JhcnlGaWxlSGFuZGxlcigpLmFj
Y2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGZ1bGxQYXRoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2Vy
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nl
c3NJREJTZXJ2ZXIuY3BwCmluZGV4IGFkZGQxZjguLjYxYWViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJ
REJTZXJ2ZXIuY3BwCkBAIC00NDMsNyArNDQzLDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRl
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFj
a2VyLmNwcAppbmRleCA1NTI3NjlhLi5mZWExYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC02NDksOSAr
NjQ5LDkgQEAgdW5zaWduZWQgbG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6dXNhZ2UoY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4pCiB7CiAgICAgU3RyaW5nIG9yaWdpblBhdGggPSB0
aGlzLT5vcmlnaW5QYXRoKG9yaWdpbik7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRpc2tVc2Fn
ZSA9IDA7Ci0gICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0
aCwgQVNDSUlMaXRlcmFsKCIqLmRiIikpKSB7CisgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZp
bGVTeXN0ZW06Omxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aCwgQVNDSUlMaXRlcmFsKCIqLmRiIikp
KSB7CiAgICAgICAgIGxvbmcgbG9uZyBzaXplOwotICAgICAgICBnZXRGaWxlU2l6ZShmaWxlTmFt
ZSwgc2l6ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVOYW1lLCBzaXpl
KTsKICAgICAgICAgZGlza1VzYWdlICs9IHNpemU7CiAgICAgfQogICAgIHJldHVybiBkaXNrVXNh
Z2U7CkBAIC03ODUsOSArNzg1LDkgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFi
YXNlc01vZGlmaWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGkKICAgICAgICAg
ICAgIC8vIElmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIHdlIHByZXZpb3VzbHkgZGVsZXRlZCBp
dCBidXQgZmFpbGVkIHRvIHJlbW92ZSB0aGUgaW5mb3JtYXRpb24KICAgICAgICAgICAgIC8vIGZy
b20gdGhlIHRyYWNrZXIgZGF0YWJhc2UuIFdlIHdhbnQgdG8gZGVsZXRlIGFsbCBvZiB0aGUgaW5m
b3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMKICAgICAgICAgICAgIC8vIGRhdGFiYXNlIGZy
b20gdGhlIHRyYWNrZXIgZGF0YWJhc2UsIHNvIHN0aWxsIGFkZCBpdHMgbmFtZSB0byBkYXRhYmFz
ZU5hbWVzVG9EZWxldGUuCi0gICAgICAgICAgICBpZiAoZmlsZUV4aXN0cyhmdWxsUGF0aCkpIHsK
KyAgICAgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxQYXRoKSkgewogICAg
ICAgICAgICAgICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgICAgIGlm
ICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZnVsbFBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQor
ICAgICAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUo
ZnVsbFBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgICAgIGlmIChtb2RpZmljYXRpb25UaW1lIDwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dG9fdGltZV90KHRpbWUpKQpAQCAtODM3LDcgKzgzNyw3IEBAIGJvb2wg
RGF0YWJhc2VUcmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBv
cmlnaW4sIERlbGV0aW9uTW9kCiAgICAgLy8gV2UgZHJvcCB0aGUgbG9jayBoZXJlIGJlY2F1c2Ug
aG9sZGluZyBsb2NrcyBkdXJpbmcgYSBjYWxsIHRvIGRlbGV0ZURhdGFiYXNlRmlsZSB3aWxsIGRl
YWRsb2NrLgogICAgIGJvb2wgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSBmYWxzZTsK
ICAgICBmb3IgKGF1dG8mIG5hbWUgOiBkYXRhYmFzZU5hbWVzKSB7Ci0gICAgICAgIGlmIChmaWxl
RXhpc3RzKGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBmYWxzZSkpICYmICFkZWxl
dGVEYXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lLCBkZWxldGlvbk1vZGUpKSB7CisgICAgICAgIGlm
IChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1l
LCBmYWxzZSkpICYmICFkZWxldGVEYXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lLCBkZWxldGlvbk1v
ZGUpKSB7CiAgICAgICAgICAgICAvLyBFdmVuIGlmIHRoZSBmaWxlIGNhbid0IGJlIGRlbGV0ZWQs
IHdlIHdhbnQgdG8gdHJ5IGFuZCBkZWxldGUgdGhlIHJlc3QsIGRvbid0IHJldHVybiBlYXJseSBo
ZXJlLgogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRh
dGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmRhdGFi
YXNlSWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgZmFpbGVkVG9EZWxl
dGVBbnlEYXRhYmFzZUZpbGUgPSB0cnVlOwpAQCAtODUyLDggKzg1Miw4IEBAIGJvb2wgRGF0YWJh
c2VUcmFja2VyOjpkZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4s
IERlbGV0aW9uTW9kCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKERhdGFiYXNlVHJhY2tlciwgIlVuYWJsZSB0byByZXRyaWV2ZSBsaXN0IG9mIGRhdGFiYXNl
IG5hbWVzIGZvciBvcmlnaW4iKTsKICNlbmRpZgotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZp
bGUgOiBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgob3JpZ2luKSwgIioiKSkgewotICAgICAgICAg
ICAgaWYgKCFkZWxldGVGaWxlKGZpbGUpKQorICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZpbGUg
OiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgob3JpZ2luKSwgIioiKSkgewor
ICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGUpKQogICAgICAgICAg
ICAgICAgIGZhaWxlZFRvRGVsZXRlQW55RGF0YWJhc2VGaWxlID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTEwNjYsNyArMTA2Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVE
YXRhYmFzZShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyCiAgICAg
fQogCiAgICAgLy8gV2UgZHJvcCB0aGUgbG9jayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2NrcyBk
dXJpbmcgYSBjYWxsIHRvIGRlbGV0ZURhdGFiYXNlRmlsZSB3aWxsIGRlYWRsb2NrLgotICAgIGlm
IChmaWxlRXhpc3RzKGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBmYWxzZSkpICYm
ICFkZWxldGVEYXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lLCBEZWxldGlvbk1vZGU6OkRlZmF1bHQp
KSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShv
cmlnaW4sIG5hbWUsIGZhbHNlKSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUs
IERlbGV0aW9uTW9kZTo6RGVmYXVsdCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
ZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUudXRmOCgpLmRh
dGEoKSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBkb25l
RGVsZXRpbmdEYXRhYmFzZShvcmlnaW4sIG5hbWUpOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgdm9p
ZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGRhdGFiYXNlIGhhcyBiZWVuIGRl
bGV0ZWQgb3IgaWYgaXRzIGRhdGFiYXNlIGZpbGUgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGN1cnJl
bnQgdmVyc2lvbiwgdGhpcyBkYXRhYmFzZSBpcyBubyBsb25nZXIgdmFsaWQgYW5kIGl0IHNob3Vs
ZCBiZSBtYXJrZWQgYXMgZGVsZXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRh
YmFzZUZpbGVOYW1lLmlzTnVsbCgpIHx8IGRhdGFiYXNlRmlsZU5hbWUgIT0gcGF0aEdldEZpbGVO
YW1lKGRiLT5maWxlTmFtZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFi
YXNlRmlsZU5hbWUuaXNOdWxsKCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUoZGItPmZpbGVOYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlZERhdGFiYXNlcy5hcHBlbmQoZGIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvdW5kRGVsZXRlZERhdGFiYXNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTEyMzgsNyArMTIzOCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVE
ZWxldGVkT3BlbmVkRGF0YWJhc2VzKCkKIHN0YXRpYyBib29sIGlzWmVyb0J5dGVGaWxlKGNvbnN0
IFN0cmluZyYgcGF0aCkKIHsKICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7Ci0gICAgcmV0dXJuIGdl
dEZpbGVTaXplKHBhdGgsIHNpemUpICYmICFzaXplOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpn
ZXRGaWxlU2l6ZShwYXRoLCBzaXplKSAmJiAhc2l6ZTsKIH0KICAgICAKIGJvb2wgRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYgcGF0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCmlu
ZGV4IDUxNmEyZDIuLjMxZDJkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9PcmlnaW5Mb2NrLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3RyaW5nIE9yaWdpbkxvY2s6OmxvY2tGaWxlTmFtZUZvclBhdGgoU3RyaW5n
IG9yaWdpblBhdGgpCiB7Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmln
aW5QYXRoLCBTdHJpbmcoIi5sb2NrIikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKIH0KIAogT3Jp
Z2luTG9jazo6T3JpZ2luTG9jayhTdHJpbmcgb3JpZ2luUGF0aCkKICAgICA6IG1fbG9ja0ZpbGVO
YW1lKGxvY2tGaWxlTmFtZUZvclBhdGgob3JpZ2luUGF0aCkuaXNvbGF0ZWRDb3B5KCkpCiAjaWYg
VVNFKEZJTEVfTE9DSykKLSAgICAsIG1fbG9ja0hhbmRsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKQorICAgICwgbV9sb2NrSGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpCiAjZW5kaWYKIHsKIH0KQEAgLTUwLDggKzUwLDggQEAgdm9pZCBPcmlnaW5Mb2NrOjps
b2NrKCkKICAgICBtX211dGV4LmxvY2soKTsKIAogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgbV9s
b2NrSGFuZGxlID0gb3BlbkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1lLCBPcGVuRm9yV3JpdGUp
OwotICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewor
ICAgIG1fbG9ja0hhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxl
TmFtZSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAobV9sb2NrSGFuZGxlID09
IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgLy8gVGhl
IG9ubHkgd2F5IHdlIGNhbiBnZXQgaGVyZSBpcyBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcg
dGhlIGxvY2sKICAgICAgICAgLy8gaGFzIGJlZW4gZGVsZXRlZCBvciB3ZSB3ZXJlIGdpdmVuIGEg
cGF0aCB0byBhIG5vbi1leGlzdGFudCBkaXJlY3RvcnkuCiAgICAgICAgIC8vIEluIHRoYXQgY2Fz
ZSwgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBidXQgY2xlYW51cCBhbmQgcmV0dXJuLgpAQCAt
NjgsMTEgKzY4LDExIEBAIHZvaWQgT3JpZ2luTG9jazo6dW5sb2NrKCkKICAgICAvLyBjb250YWlu
aW5nIHRoZSBsb2NrIGhhcyBiZWVuIGRlbGV0ZWQgYmVmb3JlIHdlIG9wZW5lZCB0aGUgbG9jayBm
aWxlLCBvcgogICAgIC8vIHdlIHdlcmUgZ2l2ZW4gYSBwYXRoIHRvIGEgbm9uLWV4aXN0YW50IGRp
cmVjdG9yeS4gV2hpY2gsIGluIHR1cm4sIG1lYW5zCiAgICAgLy8gdGhhdCB0aGVyZSdzIG5vdGhp
bmcgdG8gdW5sb2NrLgotICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmls
ZUhhbmRsZSkgCisgICAgaWYgKG1fbG9ja0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICB1bmxvY2tBbmRDbG9zZUZp
bGUobV9sb2NrSGFuZGxlKTsKLSAgICBtX2xvY2tIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOworICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShtX2xvY2tIYW5kbGUp
OworICAgIG1fbG9ja0hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGU7CiAjZW5kaWYKIAogICAgIG1fbXV0ZXgudW5sb2NrKCk7CkBAIC04Myw3ICs4Myw3IEBAIHZv
aWQgT3JpZ2luTG9jazo6ZGVsZXRlTG9ja0ZpbGUoU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgVU5V
U0VEX1BBUkFNKG9yaWdpblBhdGgpOwogI2lmIFVTRShGSUxFX0xPQ0spCiAgICAgU3RyaW5nIGxv
Y2tGaWxlTmFtZSA9IE9yaWdpbkxvY2s6OmxvY2tGaWxlTmFtZUZvclBhdGgob3JpZ2luUGF0aCk7
Ci0gICAgZGVsZXRlRmlsZShsb2NrRmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUobG9ja0ZpbGVOYW1lKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCmluZGV4IGQ3MTUxZGUuLmExNmU4NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCkBAIC00
OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9ja0ZpbGVOYW1lOwogICAgIExv
Y2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBt
X2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fbG9ja0hh
bmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggM2ViMjg4NC4u
MDI2MWEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgZG91
YmxlIEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiAgICAgLy8gVGhlIGkvbyBzaG91bGQgYmUg
cGVyZm9ybWVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQsCiAgICAgLy8gYW5kIHRoZSByZXN1bHQg
c2hvdWxkIGJlIGNhY2hlZCBhbG9uZyB3aXRoIGFuIGFzeW5jaHJvbm91cyBtb25pdG9yIGZvciBj
aGFuZ2VzIHRvIHRoZSBmaWxlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlm
IChnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1vZGlmaWNhdGlvblRpbWUpICYmIGlz
VmFsaWRGaWxlVGltZShtb2RpZmljYXRpb25UaW1lKSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUobV9wYXRoLCBtb2RpZmljYXRpb25UaW1lKSAmJiBGaWxlU3lz
dGVtOjppc1ZhbGlkRmlsZVRpbWUobW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgIHJlc3VsdCA9
IG1vZGlmaWNhdGlvblRpbWUgKiBtc1BlclNlY29uZDsKICAgICBlbHNlCiAgICAgICAgIHJlc3Vs
dCA9IGN1cnJlbnRUaW1lKCkgKiBtc1BlclNlY29uZDsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lk
IEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25z
dCBTdHJpbmcmIG5hbWVPdmVycgogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAg
ZWZmZWN0aXZlTmFtZSA9IG5hbWVPdmVycmlkZS5pc051bGwoKSA/IHBhdGhHZXRGaWxlTmFtZShw
YXRoKSA6IG5hbWVPdmVycmlkZTsKKyAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92ZXJyaWRlLmlz
TnVsbCgpID8gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFtZU92ZXJyaWRl
OwogICAgIHNpemVfdCBpbmRleCA9IGVmZmVjdGl2ZU5hbWUucmV2ZXJzZUZpbmQoJy4nKTsKICAg
ICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCiAgICAgICAgIGVmZmVjdGl2ZUNvbnRlbnRUeXBlID0g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZWZmZWN0aXZlTmFtZS5z
dWJzdHJpbmcoaW5kZXggKyAxKSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgU3RyaW5nIEZpbGU6OmNv
bnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiBib29sIEZpbGU6OmlzRGlyZWN0
b3J5KCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNEaXJlY3RvcnkpCi0gICAgICAgIG1faXNEaXJl
Y3RvcnkgPSBmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
OjpZZXMpOworICAgICAgICBtX2lzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0
b3J5KG1fcGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6WWVzKTsK
ICAgICByZXR1cm4gKm1faXNEaXJlY3Rvcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29j
b2EubW0KaW5kZXggMGQ1YTY5Ny4uY2FhMjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9GaWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29j
b2EubW0KQEAgLTU5LDkgKzU5LDkgQEAgYm9vbCBGaWxlOjpzaG91bGRSZXBsYWNlRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAKIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZUZv
clJlcGxhY2VkRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgbmFtZU92ZXJy
aWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZmZWN0aXZlQ29udGVudFR5cGUp
CiB7Ci0gICAgQVNTRVJUKCFwYXRoR2V0RmlsZU5hbWUocGF0aCkuZW5kc1dpdGgoJy8nKSk7IC8v
IEV4cGVjdGluZyB0byBnZXQgYSBwYXRoIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2gsIGV2ZW4gZm9y
IGRpcmVjdG9yaWVzLgorICAgIEFTU0VSVCghRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBh
dGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0IGEgcGF0aCB3aXRob3V0IHRy
YWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KICAgICBlZmZlY3RpdmVDb250ZW50
VHlwZSA9IEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vemlwIik7Ci0gICAgZWZmZWN0aXZlTmFt
ZSA9IChuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBwYXRoR2V0RmlsZU5hbWUocGF0aCkgOiBuYW1l
T3ZlcnJpZGUpICsgQVNDSUlMaXRlcmFsKCIuemlwIik7CisgICAgZWZmZWN0aXZlTmFtZSA9IChu
YW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkg
OiBuYW1lT3ZlcnJpZGUpICsgQVNDSUlMaXRlcmFsKCIuemlwIik7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCA5MTA2ZGFkLi43NmY1NjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAg
RmlsZUxpc3RDcmVhdG9yOjp+RmlsZUxpc3RDcmVhdG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5k
RGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVs
YXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYgZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChh
dXRvJiBjaGlsZFBhdGggOiBsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAg
ICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRv
JiBjaGlsZFBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkg
eworICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxk
UGF0aCk7CiAgICAgICAgIGlmICghbWV0YWRhdGEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBpZiAobWV0YWRhdGEudmFsdWUoKS5pc0hpZGRlbikKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIFN0cmluZyBjaGlsZFJlbGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCAr
ICIvIiArIHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpOworICAgICAgICBTdHJpbmcgY2hpbGRS
ZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVBhdGggKyAiLyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUoY2hpbGRQYXRoKTsKICAgICAgICAgaWYgKG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBG
aWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9y
eUZpbGVzKGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAg
ICAgZWxzZSBpZiAobWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RmlsZSkKQEAgLTgwLDggKzgwLDggQEAgUmVmPEZpbGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNy
ZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBW
ZWN0b3I8UmVmPEZpbGU+PiBmaWxlT2JqZWN0czsKICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRo
cykgewotICAgICAgICBpZiAoc2hvdWxkUmVzb2x2ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29s
dmVEaXJlY3Rvcmllczo6WWVzICYmIGZpbGVJc0RpcmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZv
bGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVz
KGluZm8ucGF0aCwgcGF0aEdldEZpbGVOYW1lKGluZm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAg
ICAgICAgaWYgKHNob3VsZFJlc29sdmVEaXJlY3RvcmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0
b3JpZXM6OlllcyAmJiBGaWxlU3lzdGVtOjpmaWxlSXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxl
U3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgICAgICAgICBhcHBl
bmREaXJlY3RvcnlGaWxlcyhpbmZvLnBhdGgsIEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShp
bmZvLnBhdGgpLCBmaWxlT2JqZWN0cyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVP
YmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRoTmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxh
eU5hbWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCA4NjQwY2YxLi5iZjQzNDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTI1NjcsNyArMjU2Nyw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllck1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9y
YWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
LSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKSkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tU2VjdXJpdHlPcmlnaW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKS5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U2V0
TWVkaWFLZXlzKFdlYktpdE1lZGlhS2V5cyogbWVkaWFLZXlzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAK
aW5kZXggYWZmODY5OS4uYTIxNTBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zODEsNyAr
MzgxLDcgQEAgaW50NjRfdCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3BhY2VOZWVkZWQoaW50
NjRfdCBjYWNoZVRvU2F2ZSkKIHsKICAgICBpbnQ2NF90IHNwYWNlTmVlZGVkID0gMDsKICAgICBs
b25nIGxvbmcgZmlsZVNpemUgPSAwOwotICAgIGlmICghZ2V0RmlsZVNpemUobV9jYWNoZUZpbGUs
IGZpbGVTaXplKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKG1fY2FjaGVGaWxl
LCBmaWxlU2l6ZSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaW50NjRfdCBjdXJyZW50U2l6
ZSA9IGZpbGVTaXplICsgZmxhdEZpbGVBcmVhU2l6ZSgpOwpAQCAtNjAwLDExICs2MDAsMTEgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKGJvb2wgY3JlYXRlSWZE
b2VzTm90RXhpc3QpCiAgICAgaWYgKG1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fY2FjaGVGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
Y2FjaGVEaXJlY3RvcnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7Ci0gICAgaWYgKCFjcmVhdGVJ
ZkRvZXNOb3RFeGlzdCAmJiAhZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCisgICAgbV9jYWNoZUZp
bGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNoZURpcmVjdG9y
eSwgIkFwcGxpY2F0aW9uQ2FjaGUuZGIiKTsKKyAgICBpZiAoIWNyZWF0ZUlmRG9lc05vdEV4aXN0
ICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVGaWxlKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXJlY3RvcnkpOworICAgIEZpbGVT
eXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKICAgICBtX2RhdGFi
YXNlLm9wZW4obV9jYWNoZUZpbGUpOwogICAgIAogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4o
KSkKQEAgLTc5OSw3ICs3OTksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9y
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogCiAgICAgU3Ry
aW5nIGZ1bGxQYXRoOwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCi0gICAg
ICAgIGRhdGFTdGF0ZW1lbnQuYmluZFRleHQoMiwgcGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5w
YXRoKCkpKTsKKyAgICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocmVzb3VyY2UtPnBhdGgoKSkpOwogICAgIGVsc2UgaWYgKHNob3VsZFN0
b3JlUmVzb3VyY2VBc0ZsYXRGaWxlKHJlc291cmNlKSkgewogICAgICAgICAvLyBGaXJzdCwgY2hl
Y2sgdG8gc2VlIGlmIGNyZWF0aW5nIHRoZSBmbGF0IGZpbGUgd291bGQgdmlvbGF0ZSB0aGUgbWF4
aW11bSB0b3RhbCBxdW90YS4gV2UgZG9uJ3QgbmVlZAogICAgICAgICAvLyB0byBjaGVjayB0aGUg
cGVyLW9yaWdpbiBxdW90YSBoZXJlLCBhcyBpdCB3YXMgYWxyZWFkeSBjaGVja2VkIGluIHN0b3Jl
TmV3ZXN0Q2FjaGUoKS4KQEAgLTgwOCw4ICs4MDgsOCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzdG9yZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25l
ZAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBTdHJpbmcgZmxhdEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9j
YWNoZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwotICAgICAgICBtYWtl
QWxsRGlyZWN0b3JpZXMoZmxhdEZpbGVEaXJlY3RvcnkpOworICAgICAgICBTdHJpbmcgZmxhdEZp
bGVEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNo
ZURpcmVjdG9yeSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgICAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoZmxhdEZpbGVEaXJlY3RvcnkpOwogCiAgICAgICAgIFN0
cmluZyBleHRlbnNpb247CiAgICAgICAgIApAQCAtODIyLDcgKzgyMiw3IEBAIGJvb2wgQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3Vy
Y2UsIHVuc2lnbmVkCiAgICAgICAgIGlmICghd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rv
cnkocmVzb3VyY2UtPmRhdGEoKSwgZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgsIGV4dGVuc2lvbikp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0aCA9
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CisgICAg
ICAgIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRG
aWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgcmVzb3VyY2UtPnNldFBhdGgoZnVsbFBhdGgp
OwogICAgICAgICBkYXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7
CkBAIC04MzMsNyArODMzLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUo
QXBwbGljYXRpb25DYWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBpZiAoIWRh
dGFTdGF0ZW1lbnQuZXhlY3V0ZUNvbW1hbmQoKSkgewogICAgICAgICAvLyBDbGVhbiB1cCB0aGUg
ZmlsZSB3aGljaCB3ZSBtYXkgaGF2ZSB3cml0dGVuIHRvOgogICAgICAgICBpZiAoIWZ1bGxQYXRo
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZnVsbFBhdGgpOworICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTExMTYsNyArMTExNiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hl
PiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkK
IAogICAgIGF1dG8gY2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsKIAotICAgIFN0
cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hl
RGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAgU3RyaW5nIGZsYXRG
aWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2Fj
aGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKIAogICAgIGludCByZXN1
bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBjYWNoZVN0YXRlbWVudC5zdGVwKCkpID09IFNRTElU
RV9ST1cpIHsKQEAgLTExMzYsOCArMTEzNiw4IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAg
ICAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQogICAgICAgICAgICAgc2l6ZSA9IGRhdGEtPnNpemUo
KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKLSAgICAgICAgICAgIGdldEZpbGVTaXpl
KHBhdGgsIHNpemUpOworICAgICAgICAgICAgcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CisgICAgICAgICAgICBGaWxl
U3lzdGVtOjpnZXRGaWxlU2l6ZShwYXRoLCBzaXplKTsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgU3RyaW5nIG1pbWVUeXBlID0gY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgzKTsK
QEAgLTEyOTQsMjUgKzEyOTQsMjUgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3Jp
dGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXQKICAgICBTdHJp
bmcgZnVsbFBhdGg7CiAgICAgCiAgICAgZG8gewotICAgICAgICBwYXRoID0gZW5jb2RlRm9yRmls
ZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CisgICAg
ICAgIHBhdGggPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCkpICsgZmlsZUV4dGVuc2lvbjsKICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0
aGUgYWJvdmUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIG9uIGEgcGxhdGZvcm0gd2hpY2ggZG9lcyBu
b3QgaW1wbGVtZW50CiAgICAgICAgIC8vIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS4KICAg
ICAgICAgQVNTRVJUKCFwYXRoLmlzRW1wdHkoKSk7CiAgICAgICAgIGlmIChwYXRoLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGZ1bGxQYXRo
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7Ci0gICAgfSB3aGls
ZSAoZGlyZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IGZpbGVFeGlzdHMoZnVs
bFBhdGgpKTsKKyAgICAgICAgZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZGlyZWN0b3J5LCBwYXRoKTsKKyAgICB9IHdoaWxlIChGaWxlU3lzdGVtOjpkaXJl
Y3RvcnlOYW1lKGZ1bGxQYXRoKSAhPSBkaXJlY3RvcnkgfHwgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhmdWxsUGF0aCkpOwogICAgIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBvcGVu
RmlsZShmdWxsUGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZnVsbFBhdGgsIEZpbGVTeXN0
ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9GaWxlKGhhbmRsZSwg
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBp
bnQ2NF90IHdyaXR0ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRh
dGEuc2l6ZSgpKSkgewotICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgCkBAIC0xNDY2LDE1ICsxNDY2LDE1IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OmNoZWNrRm9yRGVsZXRlZFJlc291cmNlcygpCiAgICAgICAgIGlmIChwYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgU3RyaW5nIGZs
YXRGaWxlRGlyZWN0b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRo
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKKyAg
ICAgICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1l
KTsKKyAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgCiAgICAgICAgIC8v
IERvbid0IGV4aXQgdGhlIGZsYXRGaWxlRGlyZWN0b3J5ISBUaGlzIHNob3VsZCBvbmx5IGhhcHBl
biBpZiB0aGUgInBhdGgiIGVudHJ5IGNvbnRhaW5zIGEgZGlyZWN0b3J5IAogICAgICAgICAvLyBj
b21wb25lbnQsIGJ1dCBwcm90ZWN0IGFnYWluc3QgaXQgcmVnYXJkbGVzcy4KLSAgICAgICAgaWYg
KGRpcmVjdG9yeU5hbWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0b3J5KQorICAgICAgICBp
ZiAoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZmxhdEZpbGVEaXJlY3Rv
cnkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGRlbGV0ZUZpbGUo
ZnVsbFBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKTsKICAg
ICB9IHdoaWxlIChzZWxlY3RQYXRocy5zdGVwKCkgPT0gU1FMSVRFX1JPVyk7CiAgICAgCiAgICAg
ZXhlY3V0ZVNRTENvbW1hbmQoIkRFTEVURSBGUk9NIERlbGV0ZWRDYWNoZVJlc291cmNlcyIpOwpA
QCAtMTQ5NCwxMiArMTQ5NCwxMiBAQCBsb25nIGxvbmcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmZsYXRGaWxlQXJlYVNpemUoKQogICAgIH0KIAogICAgIGxvbmcgbG9uZyB0b3RhbFNpemUgPSAw
OwotICAgIFN0cmluZyBmbGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX2NhY2hlRGlyZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAgU3Ry
aW5nIGZsYXRGaWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fY2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKICAgICB3
aGlsZSAoc2VsZWN0UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgU3RyaW5n
IHBhdGggPSBzZWxlY3RQYXRocy5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBTdHJpbmcgZnVs
bFBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgp
OworICAgICAgICBTdHJpbmcgZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOwogICAgICAgICBsb25nIGxvbmcgcGF0
aFNpemUgPSAwOwotICAgICAgICBpZiAoIWdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6ZSkp
CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZnVsbFBhdGgsIHBhdGhTaXpl
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0b3RhbFNpemUgKz0gcGF0aFNpemU7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggY2EzNjliZS4uNTllYzFjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJT
dHlsZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKICAg
ICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fdXNl
clN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUpKSB7CiAgICAg
ICAgIC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMganVzdCBkZWxl
dGVkLCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYgd2UndmUgcmVh
ZCB0aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0aHJvdyBhd2F5
IHRoYXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdzIG9uIGRpc2su
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4YmMuLjZhZDYz
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zNTAsNyArMzUw
LDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVybCkgY29u
c3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICht
X3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAhZmlsZXNIYXZlU2Ft
ZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3RlbVBhdGgoKSkpCisgICAgaWYgKG1fcHJv
dG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgpICYmICFGaWxlU3lzdGVtOjpmaWxl
c0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcAppbmRleCA5MjNmZjMzLi5hZGExZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBTZWN1
cml0eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHByb3RvY29sKTsK
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwotICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGVuY29kZUZvckZpbGVOYW1lKGhvc3QpKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSk7CiAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZE51bWJlcihwb3J0LnZhbHVlX29yKDApKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggODAzYTgyMC4uMmEwYTYzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1GaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmls
ZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0
aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUpCiAgICAgOiBtX3BhdGgocGF0aCkKICAg
ICAsIG1fbW9kZShtb2RlKQogewpAQCAtNDIsNyArNDIsNyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFu
ZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpG
aWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBvdGhlcikKICAgICA6IG1fcGF0aChXVEZNb3ZlKG90aGVy
Lm1fcGF0aCkpCiAgICAgLCBtX21vZGUoV1RGTW92ZShvdGhlci5tX21vZGUpKQotICAgICwgbV9m
aWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9maWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZv
cm1GaWxlSGFuZGxlKSkKKyAgICAsIG1fZmlsZUhhbmRsZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
ZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9
CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBGaWxlSGFuZGxlJiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0o
RmlsZUhhbmRsZSYmIG90aGVyKQogICAgIGNsb3NlKCk7CiAgICAgbV9wYXRoID0gV1RGTW92ZShv
dGhlci5tX3BhdGgpOwogICAgIG1fbW9kZSA9IFdURk1vdmUob3RoZXIubV9tb2RlKTsKLSAgICBt
X2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7CisgICAgbV9maWxlSGFuZGxlID0gc3RkOjpleGNoYW5nZShvdGhl
ci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwog
ICAgIHJldHVybiAqdGhpczsKIH0KIAogRmlsZUhhbmRsZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQobV9maWxlSGFuZGxlKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2ZpbGVIYW5kbGUpOwogfQogCi1ib29sIEZpbGVI
YW5kbGU6Om9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBGaWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wg
RmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVu
TW9kZSBtb2RlKQogewogICAgIGlmICgqdGhpcyAmJiBwYXRoID09IG1fcGF0aCAmJiBtb2RlID09
IG1fbW9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgRmls
ZUhhbmRsZTo6b3Blbihjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSBtb2RlKQogYm9v
bCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsKICAgICBpZiAoISp0aGlzKQotICAgICAgICBtX2ZpbGVI
YW5kbGUgPSBvcGVuRmlsZShtX3BhdGgsIG1fbW9kZSk7CisgICAgICAgIG1fZmlsZUhhbmRsZSA9
IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fcGF0aCwgbV9tb2RlKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQogCkBAIC04NywxNCArODcsMTQgQEAgaW50IEZpbGVIYW5k
bGU6OnJlYWQodm9pZCogZGF0YSwgaW50IGxlbmd0aCkKIHsKICAgICBpZiAoIW9wZW4oKSkKICAg
ICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiByZWFkRnJvbUZpbGUobV9maWxlSGFuZGxlLCBz
dGF0aWNfY2FzdDxjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5kbGUsIHN0YXRpY19jYXN0PGNoYXIqPihkYXRhKSwgbGVu
Z3RoKTsKIH0KIAogaW50IEZpbGVIYW5kbGU6OndyaXRlKGNvbnN0IHZvaWQqIGRhdGEsIGludCBs
ZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVuKCkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1
cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhh
bmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBib29s
IEZpbGVIYW5kbGU6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKQEAgLTExNyw3ICsx
MTcsNyBAQCBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikK
IAogdm9pZCBGaWxlSGFuZGxlOjpjbG9zZSgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRs
ZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaAppbmRleCBk
MzYyNDNkLi41NjNmZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxl
SGFuZGxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCkBAIC0z
Nyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEZp
bGVIYW5kbGUgZmluYWwgewogcHVibGljOgogICAgIEZpbGVIYW5kbGUoKSA9IGRlZmF1bHQ7Ci0g
ICAgRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CisgICAgRmls
ZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSk7CiAg
ICAgRmlsZUhhbmRsZShjb25zdCBGaWxlSGFuZGxlJiBvdGhlcikgPSBkZWxldGU7CiAgICAgRmls
ZUhhbmRsZShGaWxlSGFuZGxlJiYgb3RoZXIpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
IAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKIAotICAgIGJvb2wgb3Blbihj
b25zdCBTdHJpbmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CisgICAgYm9vbCBvcGVuKGNvbnN0IFN0
cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlKTsKICAgICBib29sIG9wZW4oKTsK
ICAgICBpbnQgcmVhZCh2b2lkKiBkYXRhLCBpbnQgbGVuZ3RoKTsKICAgICBpbnQgd3JpdGUoY29u
c3Qgdm9pZCogZGF0YSwgaW50IGxlbmd0aCk7CkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXRoOwotICAgIEZpbGVPcGVuTW9kZSBtX21vZGUgeyBP
cGVuRm9yUmVhZCB9OwotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGUgeyBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1f
bW9kZSB7IEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5kZXggYjE4YjFjMy4uZjc0NWQ3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRmlsZVN0cmVhbTo6RmlsZVN0cmVhbSgpCi0gICAgOiBtX2hhbmRsZShpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIDogbV9oYW5kbGUoRmlsZVN5c3RlbTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAsIG1fYnl0ZXNQcm9jZXNzZWQoMCkKICAgICAsIG1f
dG90YWxCeXRlc1RvUmVhZCgwKQogewpAQCAtNTMsMTYgKzUzLDE2IEBAIGxvbmcgbG9uZyBGaWxl
U3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltCiB7CiAgICAgLy8gQ2hlY2sgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUg
cG9zc2libGUgZmlsZSBjaGFuZ2UuCiAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAg
aWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKKyAg
ICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNh
dGlvblRpbWUpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGlzVmFsaWRGaWxlVGltZShl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmlzVmFsaWRG
aWxlVGltZShleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKSB7CiAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDx0aW1lX3Q+KGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkgIT0gbW9kaWZpY2F0aW9uVGlt
ZSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvLyBOb3cgZ2V0IHRoZSBm
aWxlIHNpemUuCiAgICAgbG9uZyBsb25nIGxlbmd0aDsKLSAgICBpZiAoIWdldEZpbGVTaXplKHBh
dGgsIGxlbmd0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShwYXRoLCBsZW5n
dGgpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICByZXR1cm4gbGVuZ3RoOwpAQCAtNzAsMTcg
KzcwLDE3IEBAIGxvbmcgbG9uZyBGaWxlU3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0
aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltCiAKIGJvb2wgRmlsZVN0cmVhbTo6b3Bl
bkZvclJlYWQoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcg
bGVuZ3RoKQogewotICAgIGlmIChpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBpZiAoRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gT3BlbiB0aGUgZmlsZS4KLSAgICBtX2hhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIE9w
ZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQorICAgIG1faGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQp
OworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIEp1bXAgdG8gdGhlIGJlZ2lubmluZyBwb3NpdGlvbiBp
ZiB0aGUgZmlsZSBoYXMgYmVlbiBzbGljZWQuCiAgICAgaWYgKG9mZnNldCA+IDApIHsKLSAgICAg
ICAgaWYgKHNlZWtGaWxlKG1faGFuZGxlLCBvZmZzZXQsIFNlZWtGcm9tQmVnaW5uaW5nKSA8IDAp
CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpzZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBGaWxl
U3lzdGVtOjpTZWVrRnJvbUJlZ2lubmluZykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIApAQCAtOTIsMjIgKzkyLDIyIEBAIGJvb2wgRmlsZVN0cmVhbTo6b3BlbkZvclJl
YWQoY29uc3QgU3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuCiAK
IHZvaWQgRmlsZVN0cmVhbTo6Y2xvc2UoKQogewotICAgIGlmIChpc0hhbmRsZVZhbGlkKG1faGFu
ZGxlKSkgewotICAgICAgICBjbG9zZUZpbGUobV9oYW5kbGUpOwotICAgICAgICBtX2hhbmRsZSA9
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQobV9oYW5kbGUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRs
ZSk7CisgICAgICAgIG1faGFuZGxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsKICAgICB9CiB9CiAKIGludCBGaWxlU3RyZWFtOjpyZWFkKGNoYXIqIGJ1ZmZlciwgaW50
IGJ1ZmZlclNpemUpCiB7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBp
ZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4g
LTE7CiAKICAgICBsb25nIGxvbmcgcmVtYWluaW5nID0gbV90b3RhbEJ5dGVzVG9SZWFkIC0gbV9i
eXRlc1Byb2Nlc3NlZDsKICAgICBpbnQgYnl0ZXNUb1JlYWQgPSAocmVtYWluaW5nIDwgYnVmZmVy
U2l6ZSkgPyBzdGF0aWNfY2FzdDxpbnQ+KHJlbWFpbmluZykgOiBidWZmZXJTaXplOwogICAgIGlu
dCBieXRlc1JlYWQgPSAwOwogICAgIGlmIChieXRlc1RvUmVhZCA+IDApCi0gICAgICAgIGJ5dGVz
UmVhZCA9IHJlYWRGcm9tRmlsZShtX2hhbmRsZSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CisgICAg
ICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2hhbmRsZSwgYnVmZmVy
LCBieXRlc1RvUmVhZCk7CiAgICAgaWYgKGJ5dGVzUmVhZCA8IDApCiAgICAgICAgIHJldHVybiAt
MTsKICAgICBpZiAoYnl0ZXNSZWFkID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0u
aAppbmRleCBkNDIxZTRmLi45NjdkZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9GaWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVh
bS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIs
IGludCBsZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRs
ZTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9u
ZyBsb25nIG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVh
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDcu
LmI4OTQ3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC00Miw2
ICs0Miw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIEZpbGVTeXN0ZW0g
eworCiAvLyBUaGUgZm9sbG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBlc2NhcGlu
ZyB0byBiZSB1c2VkIGluIGEgZmlsZW5hbWUKIC8vIGFjcm9zcyBhbGwgc3lzdGVtcywgaW5jbHVk
aW5nIFdpbmRvd3M6CiAvLyAgICAgLSBVbnByaW50YWJsZSBBU0NJSSAoMDAtMUYpCkBAIC0zNTks
NCArMzYxLDUgQEAgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBTaG91
bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1MKICAgICByZXR1cm4gbWV0YWRhdGEu
dmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwogfQogCit9IC8v
IG5hbWVzcGFjZSBGaWxlU3lzdGVtCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggMzJjOTNlNi4uYTZjN2UzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtNTYsNiArNTYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg
X0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dHJ1Y3QgRmlsZU1ldGFkYXRhOworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKIC8vIFBsYXRm
b3JtRmlsZUhhbmRsZQogI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQogdHlwZWRlZiBH
RmlsZUlPU3RyZWFtKiBQbGF0Zm9ybUZpbGVIYW5kbGU7CkBAIC05Miw4ICs5Niw2IEBAIGVudW0g
RmlsZUxvY2tNb2RlIHsKIAogZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHsg
Tm8sIFllcyB9OwogCi1zdHJ1Y3QgRmlsZU1ldGFkYXRhOwotCiBXRUJDT1JFX0VYUE9SVCBib29s
IGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZUZp
bGUoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpOwpAQCAtMjEzLDUgKzIxNSw2IEBAIGlubGluZSBNYXBwZWRGaWxl
RGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0YSYmIG90aGVyKQog
ICAgIHJldHVybiAqdGhpczsKIH0KIAorfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAppbmRleCBlMWZjZGNlLi4wZDM1YjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIo
Y29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgYXBwZW5kKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplKTsKIH0KIAotU2hhcmVkQnVmZmVy
OjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBmaWxlRGF0YSkKK1NoYXJlZEJ1ZmZlcjo6
U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZmlsZURhdGEpCiAgICAg
OiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAgIG1fc2VnbWVudHMuYXBwZW5kKHswLCBE
YXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEpKX0pOwpAQCAtNjEsNyArNjEsNyBA
QCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8Y2hhcj4mJiBkYXRhKQogUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29sIG1hcHBpbmdTdWNjZXNzOwotICAgIE1h
cHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRoLCBtYXBwaW5nU3VjY2Vzcyk7Cisg
ICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVkRmlsZURhdGEoZmlsZVBhdGgsIG1h
cHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGluZ1N1Y2Nlc3MpCiAgICAgICAgIHJldHVy
biBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShmaWxlUGF0aCk7CkBAIC0yMDYs
NyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6ZGF0YSgp
IGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtdKGNvbnN0IEdVbmlxdWVQdHI8U291cEJ1
ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7IH0sCiAjZW5kaWYKLSAgICAgICAgW10o
Y29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICByZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9y
LCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcgKzIyNyw3IEBAIHNpemVfdCBTaGFyZWRC
dWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNpZiBVU0UoU09VUCkKICAgICAgICAg
W10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2VuZGlmCi0gICAgICAgIFtdKGNvbnN0IE1h
cHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNpemUoKTsgfQorICAgICAgICBbXShj
b25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gZGF0YS5zaXpl
KCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0b3IsIG1faW1tdXRhYmxl
RGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZm
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IGZkMjZm
MjEuLjM0ZmY3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0x
MTIsNyArMTEyLDcgQEAgcHVibGljOgogI2lmIFVTRShTT1VQKQogICAgICAgICBzdGF0aWMgUmVm
PERhdGFTZWdtZW50PiBjcmVhdGUoR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYmIGRhdGEpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYK
LSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKE1hcHBlZEZpbGVEYXRhJiYg
ZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7
IH0KKyAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1h
cHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChX
VEZNb3ZlKGRhdGEpKSk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIERhdGFTZWdtZW50KFZl
Y3RvcjxjaGFyPiYmIGRhdGEpCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgICAgICBE
YXRhU2VnbWVudChHVW5pcXVlUHRyPFNvdXBCdWZmZXI+JiYgZGF0YSkKICAgICAgICAgICAgIDog
bV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIERhdGFT
ZWdtZW50KE1hcHBlZEZpbGVEYXRhJiYgZGF0YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5
c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURh
dGEoV1RGTW92ZShkYXRhKSkgeyB9CiAKICAgICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCkBA
IC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogI2lmIFVTRShTT1VQKQogICAgICAgICAgICAgR1Vu
aXF1ZVB0cjxTb3VwQnVmZmVyPiwKICNlbmRpZgotICAgICAgICAgICAgTWFwcGVkRmlsZURhdGE+
IG1faW1tdXRhYmxlRGF0YTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
PiBtX2ltbXV0YWJsZURhdGE7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAg
ICAgfTsKIApAQCAtMTU3LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVk
QnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3QpOwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihj
b25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90KTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIo
VmVjdG9yPGNoYXI+JiYpOwotICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihNYXBwZWRGaWxlRGF0
YSYmKTsKKyAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURh
dGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcApp
bmRleCAxZjY4NGI2Li4wODQ3MGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jZi9GaWxlU3lzdGVtQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0Zp
bGVTeXN0ZW1DRi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1DU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCitD
U3RyaW5nIEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKTsKIApAQCAtNTUsMTIgKzU1LDEyIEBAIENTdHJpbmcgZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gQ1N0cmluZyhidWZm
ZXIuZGF0YSgpLCBzdHJsZW4oYnVmZmVyLmRhdGEoKSkpOwogfQogCi1TdHJpbmcgc3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24pCitTdHJpbmcgRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCiB7CiAgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOwogfQogCi1S
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCitSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IEZpbGVTeXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCiB7
CiAgICAgQ0ZVUkxQYXRoU3R5bGUgcGF0aFN0eWxlOwogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4
IDM5NWRmNzcuLjU3ODQzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL0ZpbGVNb25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvRmlsZU1vbml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6Rmls
ZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1
ZSwgV1RGOgogICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0g
ICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBo
YW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZl
bnRzT25seSk7CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MsICJGYWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVz
IiwgcGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcg
KzcxLDcgQEAgRmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVm
PFdvcmtRdWV1ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAg
ICAgZGlzcGF0Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5n
ZXQoKSwgW2hhbmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAg
ICBkaXNwYXRjaF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2Mu
LjIwNDM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0KQEAgLTQ2LDYgKzQ2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitu
YW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiB7CiAg
ICAgcmV0dXJuIE5TSG9tZURpcmVjdG9yeSgpOwpAQCAtMTI4LDQgKzEzMCw1IEBAIE5TU3RyaW5n
ICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCkKICAg
ICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOwogfQogCit9IC8v
IG5hbWVzcGFjZSBGaWxlU3lzdGVtCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKaW5kZXggZDZkOWVm
Ny4uOTQ5MjRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
TW9uaXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZU1v
bml0b3JHTGliLmNwcApAQCAtMzcsNyArMzcsNyBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgo
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIGF1dG8gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBtX2NhbmNlbGxhYmxlID0gYWRvcHRHUmVm
KGdfY2FuY2VsbGFibGVfbmV3KCkpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICBtX3BsYXRmb3JtTW9uaXRvciA9IGFkb3B0R1JlZihnX2ZpbGVfbW9uaXRvcihmaWxlLmdl
dCgpLCBHX0ZJTEVfTU9OSVRPUl9OT05FLCBtX2NhbmNlbGxhYmxlLmdldCgpLCAmZXJyb3Iub3V0
UHRyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xp
Yi5jcHAKaW5kZXggOTMyZTgzZi4uOTE1MGE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTQwLDYgKzQwLDggQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKIC8qIE9uIGxpbnV4IGZp
bGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0cmluZ3MgdGhhdCBjYW5ub3Qg
YmUgZW5jb2RlZCBpbiBhbnkgd2F5CiAgKiBhcmUgdmFsaWQgZmlsZSBuYW1lcy4gVGhpcyBtZWFu
IHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUgYXMtaXMgaW4gYSBTdHJpbmcK
ICAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KQEAgLTQ5Niw0ICs0OTgsNSBAQCBib29sIHVu
bG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIH0KICNlbmRpZiAvLyBVU0UoRklM
RV9MT0NLKQogCi19Cit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1
ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9TaGFyZWRCdWZmZXJH
bGliLmNwcAppbmRleCBhZDczNDlkLi4zMzVkODVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xpYi5jcHAKQEAgLTMzLDEyICszMywxMiBAQCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gY29udGVudHM7CiAgICAgZ3NpemUgc2l6ZTsKICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRhdGEo
KSwgJmNvbnRlbnRzLm91dFB0cigpLCAmc2l6ZSwgJmVycm9yLm91dFB0cigpKSkgewotICAgICAg
ICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAl
cyIsIGZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1l
c3NhZ2UpOworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRz
IG9mIGZpbGUgJXMgLSAlcyIsIEZpbGVTeXN0ZW06OmZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0
aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lv
bkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXggY2E2MzNhMi4uY2I4MGU4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b24ubW0KQEAgLTM2NSwxMCArMzY1LDEwIEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETVNlc3Np
b25BVkNvbnRlbnRLZXlTZXNzaW9uOjpjb250ZW50S2V5U2Vzc2lvbigpCiAKICAgICAgICAgbV9j
b250ZW50S2V5U2Vzc2lvbiA9IFtnZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50
S2V5U2Vzc2lvbldpdGhLZXlTeXN0ZW06Z2V0QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJl
YW1pbmcoKV07CiAgICAgfSBlbHNlIHsKLSAgICAgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3Rvcnkg
PSBkaXJlY3RvcnlOYW1lKHN0b3JhZ2VQYXRoKTsKKyAgICAgICAgU3RyaW5nIHN0b3JhZ2VEaXJl
Y3RvcnkgPSBGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHN0b3JhZ2VQYXRoKTsKIAotICAgICAg
ICBpZiAoIWZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKLSAgICAgICAgICAgIGlmICgh
bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGlmICgh
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL0NETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNmE5ODlh
NS4uMTA3YjFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNz
aW9uTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAgU3RyaW5nIENETVNl
c3Npb25NZWRpYVNvdXJjZUFWRk9iakM6OnN0b3JhZ2VQYXRoKCkgY29uc3QKICAgICBpZiAoc3Rv
cmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAi
U2VjdXJlU3RvcC5wbGlzdCIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IGMwOTczZWYuLjMyZDMwOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTkyNywxMiArOTI3LDEyIEBAIEFWU3RyZWFtU2Vz
c2lvbiogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdHJlYW1TZXNzaW9u
KCkKICAgICAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICBpZiAoIWZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkp
IHsKLSAgICAgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VEaXJlY3Rvcnkp
KQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkp
IHsKKyAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3Jh
Z2VEaXJlY3RvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIAot
ICAgICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Rv
cmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICAgICAgU3RyaW5nIHN0b3Jh
Z2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJl
Y3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAgICAgICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFk
b3B0TlMoW2FsbG9jQVZTdHJlYW1TZXNzaW9uSW5zdGFuY2UoKSBpbml0V2l0aFN0b3JhZ2VEaXJl
Y3RvcnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV0pOwogICAgIH0K
ICAgICByZXR1cm4gbV9zdHJlYW1TZXNzaW9uLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmZDlhNzU5Li4xMmM5MDFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTM4
OCw3ICsxMzg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRvd25sb2Fk
QnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBnX29iamVjdF9nZXQo
cGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9h
ZEZpbGUub3V0UHRyKCksIG51bGxwdHIpOwogICAgIHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlciA9
IG51bGxwdHI7CiAKLSAgICBpZiAoVU5MSUtFTFkoIWRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdl
dCgpKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxv
YWRGaWxlLmdldCgpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBt
ZWRpYSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDA1LDggKzE0MDUsOCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVyZ2VPbGREb3dubG9hZEZpbGVzKGNvbnN0IGNo
YXIqIGRvd25sb2FkRmlsZQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVtcGxhdGVGaWxlKGdfcGF0
aF9nZXRfYmFzZW5hbWUoZG93bmxvYWRGaWxlVGVtcGxhdGUpKTsKICAgICBTdHJpbmcgdGVtcGxh
dGVQYXR0ZXJuID0gU3RyaW5nKHRlbXBsYXRlRmlsZS5nZXQoKSkucmVwbGFjZSgiWCIsICI/Iik7
CiAKLSAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDogbGlzdERpcmVjdG9yeSh0ZW1wbGF0ZVBhdGgu
Z2V0KCksIHRlbXBsYXRlUGF0dGVybikpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFkZWxldGVG
aWxlKGZpbGVQYXRoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDogRmlsZVN5c3RlbTo6
bGlzdERpcmVjdG9yeSh0ZW1wbGF0ZVBhdGguZ2V0KCksIHRlbXBsYXRlUGF0dGVybikpIHsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRoKSkpIHsK
ICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbGVnYWN5IG1lZGlhIHRl
bXBvcmFyeSBmaWxlOiAlcyIsIGZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaAppbmRleCA2NWFkMjI3Li40YzNlODAxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RJQlBpeGVsRGF0YS5o
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemUoSEJJVE1BUCk7
CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCB3cml0ZVRvRmlsZShMUENXU1RSKTsKKyAgICB2
b2lkIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKExQQ1dTVFIpOwogI2VuZGlmCiAKICAgICBVSW50
OCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXBCdWZmZXI7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE0NWY3NTcuLmQzZGY4ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbQpAQCAtMTM1LDcgKzEzNSw3IEBA
IHN0YXRpYyBOU0RpY3Rpb25hcnkgKnRlbXBvcmFyeURpcmVjdG9yeUF0dHJpYnV0ZXMoKQogCiBO
U1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1aWNrTG9vayhOU1N0cmluZyAqZmlsZU5h
bWUpCiB7Ci0gICAgTlNTdHJpbmcgKmRvd25sb2FkRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5
RGlyZWN0b3J5KEAiUXVpY2tMb29rQ29udGVudCIpOworICAgIE5TU3RyaW5nICpkb3dubG9hZERp
cmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIlF1aWNrTG9v
a0NvbnRlbnQiKTsKICAgICBpZiAoIWRvd25sb2FkRGlyZWN0b3J5KQogICAgICAgICByZXR1cm4g
bmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDVjZGY0ZDguLmIzNDMxNjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tCkBAIC01MTYsNyArNTE2LDcgQEAgc3RhdGljIE5TVVJMICpsaW5rVGVtcG9yYXJ5SXRl
bVByb3ZpZGVyRmlsZXNUb0Ryb3BTdGFnaW5nRGlyZWN0b3J5KE5TVVJMICp1cmwsIE4KICAgICBp
ZiAoIXVybCkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlE
YXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkgPSBXZWJDb3JlOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoZGF0YUludGVyYWN0aW9uRGlyZWN0b3J5UHJlZml4KTsKKyAgICBOU1N0cmluZyAqdGVtcG9y
YXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJbnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CiAgICAg
aWYgKCF0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVt
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KaW5k
ZXggOGYxNDMxNi4uNjQwZGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0ZpbGVTeXN0ZW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Zp
bGVTeXN0ZW1NYWMubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1ib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmls
ZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IGF1dG8gZmlsZU1hbmFnZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0p
OwogCkBAIC00NSwxMCArNDUsMTAgQEAgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBT
dHJpbmcmIHBhdGgpCiAgICAgfQogCiAgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3Vj
Y2Vzc2Z1bCBkZWxldGlvbiBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNh
c2UgKGluY2x1ZGluZyBpbnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQot
ICAgIHJldHVybiAhcm1kaXIoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7
CisgICAgcmV0dXJuICFybWRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
cGF0aCkuZGF0YSgpKTsKIH0KIAotdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIpCit2b2lkIEZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikK
IHsKICAgICBTdHJpbmcgdXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVz
ZXJUeXBlZFN0cmluZyhtZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKQEAgLTcxLDE1ICs3MSwxNSBA
QCB2b2lkIHNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBt
ZXRhZGF0YVVSTFN0cmluZywgY29uc3QgUwogICAgIH0pOwogfQogCi1ib29sIGNhbkV4Y2x1ZGVG
cm9tQmFja3VwKCkKK2Jvb2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1
ZGVCeVBhdGggYmVjYXVzZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVn
ZXMuCi0gICAgQ1NCYWNrdXBTZXRJdGVtRXhjbHVkZWQocGF0aEFzVVJMKHBhdGgpLmdldCgpLCBU
UlVFLCBGQUxTRSk7IAorICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBh
dGhBc1VSTChwYXRoKS5nZXQoKSwgVFJVRSwgRkFMU0UpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5jcHAKaW5kZXggYzg5YjUyOC4uNmE1ZjEyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmls
ZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLCBtX3JlcGxhY2VtZW50U2hvdWxk
QmVHZW5lcmF0ZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fc2l6ZSgwKQotICAgICwgbV9leHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCisgICAgLCBtX2V4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZShGaWxlU3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSkKIHsKIH0KIApA
QCAtNDYsNyArNDYsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZl
cmVuY2UoKQogewogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGlmICghbV9yZXBs
YWNlbWVudFBhdGguaXNOdWxsKCkpCi0gICAgICAgIGRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBh
dGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcmVwbGFjZW1lbnRQYXRoKTsK
ICNlbmRpZgogfQogCkBAIC03OSw3ICs3OSw3IEBAIGRvdWJsZSBCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRs
eSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2
ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoaXMgaXMgaW5jb25zaXN0ZW50
IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmplY3RzIHNob3VsZCBiZSBpbnZh
bGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgogICAgIGlmIChtX3JlcGxhY2Vt
ZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gaW52YWxpZEZpbGVUaW1lKCk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVt
OjppbnZhbGlkRmlsZVRpbWUoKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG1fZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lOwpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5j
ZTo6c3RhcnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTog
U29tZSBwbGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lz
dGVtIG9iamVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KLSAgICBhdXRvIG1ldGFk
YXRhID0gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9wYXRoKTsKKyAgICBhdXRvIG1l
dGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9wYXRo
KTsKICAgICBpZiAoIW1ldGFkYXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDBm
MDE5NzQuLjE5N2ViMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMjgzLDE0ICsyODMsMTQgQEAgdm9pZCBCbG9i
UmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYlVSTHMKIAogICAgICAgICBhdXRvIHBlcmZvcm1Xcml0aW5nID0gW2Jsb2JzRm9y
V3JpdGluZyA9IFdURk1vdmUoYmxvYnNGb3JXcml0aW5nKSwgJmZpbGVQYXRoc10oKSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGJsb2IgOiBibG9ic0ZvcldyaXRpbmcpIHsKLSAgICAgICAgICAg
ICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgdGVt
cEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoQVNDSUlMaXRlcmFsKCJCbG9iIiksIGZpbGUp
OworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOwor
ICAgICAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZShBU0NJSUxpdGVyYWwoIkJsb2IiKSwgZmlsZSk7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW2ZpbGVdKCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICAgICAgICAgIGNsb3NlRmlsZShmaWxlKTsKKyAgICAgICAgICAgICAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICh0ZW1wRmlsZVBhdGguaXNFbXB0eSgp
IHx8ICFpc0hhbmRsZVZhbGlkKGZpbGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRlbXBGaWxl
UGF0aC5pc0VtcHR5KCkgfHwgIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKICAg
ICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiB0ZW1wb3JhcnkgZmls
ZSBmb3Igd3JpdGluZyBhIEJsb2IgdG8gSW5kZXhlZERCIik7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CkBAIC0yOTgsMTMgKzI5OCwxMyBAQCB2
b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcGFydCA6
IGJsb2IuZmlsZVBhdGhzT3JEYXRhQnVmZmVycykgewogICAgICAgICAgICAgICAgICAgICBpZiAo
cGFydC5zZWNvbmQuZGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3Ro
ID0gcGFydC5zZWNvbmQuZGF0YSgpLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAod3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFydC5z
ZWNvbmQuZGF0YSgpLT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwgbGVuZ3RoKSAh
PSBsZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxl
ZCB3cml0aW5nIGEgQmxvYiB0byB0ZW1wb3JhcnkgZmlsZSBmb3Igc3RvcmFnZSBpbiBJbmRleGVk
REIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoIXBhcnQuZmlyc3QuaXNFbXB0eSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICghYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHBhcnQu
Zmlyc3QsIGZpbGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06
OmFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0LCBmaWxlKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIGNvcHlpbmcgRmlsZSBj
b250ZW50cyB0byBhIEJsb2IgdGVtcG9yYXJ5IGZpbGUgZm9yIHN0b3JhZ2UgaW4gSW5kZXhlZERC
ICglcyB0byAlcykiLCBwYXJ0LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHRlbXBGaWxlUGF0aC51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCmluZGV4IGM1NzVmZGEuLjcyNDQyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgdWlu
dDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QKICAgICAgICAgaWYg
KG1fZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAg
cmV0dXJuIG1fZmlsZUxlbmd0aDsKICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgICAg
ICBpZiAoZ2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVu
YW1lIDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQorICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0
RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZpbGVuYW1lIDogbV9m
aWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZpbGVTaXplOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6
YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAs
IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5l
cmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5h
bWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxl
VGltZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKICAgICBtX2xlbmd0aEluQnl0ZXMgPSBzdGQ6
Om51bGxvcHQ7CiB9CiAKQEAgLTQwOCw5ICs0MDgsOSBAQCB2b2lkIEZvcm1EYXRhOjpyZW1vdmVH
ZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCkKICAgICAgICAgaWYgKGVsZW1lbnQubV90eXBlID09IEZv
cm1EYXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUgJiYgZWxlbWVudC5tX293bnNHZW5lcmF0
ZWRGaWxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFt
ZS5pc0VtcHR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQubV9zaG91bGRHZW5lcmF0
ZUZpbGUpOwotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IGRpcmVjdG9yeU5hbWUoZWxl
bWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZWxlbWVu
dC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGRpcmVjdG9yeSk7CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAgICAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOworICAg
ICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5KTsKICAg
ICAgICAgICAgIGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmluZygpOwogICAgICAg
ICAgICAgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJl
YW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwCmluZGV4IDkzODM4MjQuLmExNDRkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0
LmNwcApAQCAtMTQ3LDEzICsxNDcsMTMgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJl
YW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAgICAgZm9ybS0+Y3VycmVudERhdGEgPSBX
VEZNb3ZlKGRhdGEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBmaWxl
IGhhcyBiZWVuIGNoYW5nZWQgb3Igbm90IGlmIHJlcXVpcmVkLgotICAgICAgICBpZiAoaXNWYWxp
ZEZpbGVUaW1lKG5leHRJbnB1dC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKSB7Cisg
ICAgICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUobmV4dElucHV0Lm1fZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpIHsKICAgICAgICAgICAgIHRpbWVfdCBmaWxlTW9kaWZp
Y2F0aW9uVGltZTsKLSAgICAgICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobmV4
dElucHV0Lm1fZmlsZW5hbWUsIGZpbGVNb2RpZmljYXRpb25UaW1lKSB8fCBmaWxlTW9kaWZpY2F0
aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KG5leHRJbnB1dC5tX2V4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUpKQorICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShuZXh0SW5wdXQubV9maWxlbmFtZSwgZmlsZU1vZGlmaWNhdGlvblRpbWUp
IHx8IGZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0YXRpY19jYXN0PHRpbWVfdD4obmV4dElucHV0
Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IFN0cmluZyYgcGF0aCA9IG5leHRJbnB1
dC5tX3Nob3VsZEdlbmVyYXRlRmlsZSA/IG5leHRJbnB1dC5tX2dlbmVyYXRlZEZpbGVuYW1lIDog
bmV4dElucHV0Lm1fZmlsZW5hbWU7Ci0gICAgICAgIGZvcm0tPmN1cnJlbnRTdHJlYW0gPSBDRlJl
YWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCBwYXRoQXNVUkwocGF0aCkuZ2V0KCkpOworICAgICAg
ICBmb3JtLT5jdXJyZW50U3RyZWFtID0gQ0ZSZWFkU3RyZWFtQ3JlYXRlV2l0aEZpbGUoMCwgRmls
ZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpKTsKICAgICAgICAgaWYgKCFmb3JtLT5jdXJy
ZW50U3RyZWFtKSB7CiAgICAgICAgICAgICAvLyBUaGUgZmlsZSBtdXN0IGhhdmUgYmVlbiByZW1v
dmVkIG9yIGJlY29tZSB1bnJlYWRhYmxlLgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
Mzc5LDcgKzM3OSw3IEBAIFJldGFpblB0cjxDRlJlYWRTdHJlYW1SZWY+IGNyZWF0ZUhUVFBCb2R5
Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZTsKLSAgICAg
ICAgICAgIGlmIChnZXRGaWxlU2l6ZShlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlID8gZWxl
bWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZSkp
CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZWxlbWVudC5tX3Nob3Vs
ZEdlbmVyYXRlRmlsZSA/IGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA6IGVsZW1lbnQubV9m
aWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgICAgIGxlbmd0aCArPSBmaWxlU2l6ZTsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IGM3NTc1ZDcu
LjYyYzExYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjEyLDkgKzIxMiw5IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiAo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MCkKICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmls
ZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKKyAg
ICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7CiAgICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBnZXRGaWxlRGV2aWNlSWQoZnNS
ZXBGaWxlKTsKKyAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZp
bGVEZXZpY2VJZChmc1JlcEZpbGUpOwogICAgICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmls
ZURldmljZS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5
OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpA
Ik5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuY3BwCmluZGV4IGVkNTkwMjYuLjAzNWE2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNTAs
NyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hl
RW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmlu
ZyYgY2FjaGVEaXIpCiAgICAgOiBtX2hlYWRlckZpbGVuYW1lKGNhY2hlRGlyKQogICAgICwgbV9j
b250ZW50RmlsZW5hbWUoY2FjaGVEaXIpCi0gICAgLCBtX2NvbnRlbnRGaWxlKGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBtX2NvbnRlbnRGaWxlKEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBtX2VudHJ5U2l6ZSgwKQogICAgICwgbV9leHBpcmVE
YXRlKC0xKQogICAgICwgbV9oZWFkZXJQYXJzZWQoZmFsc2UpCkBAIC03OSw3ICs3OSw3IEBAIGJv
b2wgQ3VybENhY2hlRW50cnk6OmlzTG9hZGluZygpIGNvbnN0CiAvLyBDYWNoZSBtYW5hZ2VyIHNo
b3VsZCBpbnZhbGlkYXRlIHRoZSBlbnRyeSBvbiBmYWxzZQogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6
aXNDYWNoZWQoKQogewotICAgIGlmICghZmlsZUV4aXN0cyhtX2NvbnRlbnRGaWxlbmFtZSkgfHwg
IWZpbGVFeGlzdHMobV9oZWFkZXJGaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG1fY29udGVudEZpbGVuYW1lKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2hl
YWRlckZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2hlYWRl
clBhcnNlZCkgewpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVD
YWNoZWREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBBcHBlbmQKLSAgICB3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBk
YXRhLCBzaXplKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBk
YXRhLCBzaXplKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTI1LDggKzEyNSw4IEBAIGJv
b2wgQ3VybENhY2hlRW50cnk6OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiAK
IGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRlckZpbGUg
PSBvcGVuRmlsZShtX2hlYWRlckZpbGVuYW1lLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmICghaXNI
YW5kbGVWYWxpZChoZWFkZXJGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBoZWFkZXJGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwg
RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxl
VmFsaWQoaGVhZGVyRmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjog
Q291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNDAsMTIgKzE0MCwx
MiBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZh
bHVlKTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOwogICAgICAgICBDU3RyaW5n
IGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7Ci0gICAgICAgIHdyaXRl
VG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRM
YXRpbjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJG
aWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgp
KTsKICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwg
aXQtPnZhbHVlKTsKICAgICAgICAgKytpdDsKICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaGVhZGVy
RmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhlYWRlckZpbGUpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0yMjcsMTYgKzIyNywxNiBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5Ojpn
ZW5lcmF0ZUJhc2VGaWxlbmFtZShjb25zdCBDU3RyaW5nJiB1cmwpCiBib29sIEN1cmxDYWNoZUVu
dHJ5Ojpsb2FkRmlsZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFy
PiYgYnVmZmVyKQogewogICAgIC8vIE9wZW4gdGhlIGZpbGUKLSAgICBQbGF0Zm9ybUZpbGVIYW5k
bGUgaW5wdXRGaWxlID0gb3BlbkZpbGUoZmlsZXBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoaW5wdXRGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBpbnB1dEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlcGF0aCwgRmlsZVN5
c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChp
bnB1dEZpbGUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5v
dCBvcGVuICVzIGZvciByZWFkXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgbG9uZyBsb25nIGZpbGVzaXplID0gLTE7Ci0g
ICAgaWYgKCFnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxl
U3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CiAgICAgICAgIExPRyhO
ZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBm
aWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTI0OSwyNCArMjQ5LDI0IEBAIGJvb2wgQ3VybENhY2hlRW50
cnk6OmxvYWRGaWxlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPGNoYXI+
JiBidWZmCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVh
ZFNpemUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVyUG9z
aXRpb247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZyb21GaWxlKGlucHV0RmlsZSwgYnVm
ZmVyLmRhdGEoKSArIGJ1ZmZlclBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CisgICAgICAgIGJ5
dGVzUmVhZCA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZlci5kYXRh
KCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOwogICAgICAgICBpZiAoYnl0ZXNS
ZWFkICE9IGJ1ZmZlclJlYWRTaXplKSB7CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hl
IEVycm9yOiBDb3VsZCBub3QgcmVhZCBmcm9tICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRh
KCkpOwotICAgICAgICAgICAgY2xvc2VGaWxlKGlucHV0RmlsZSk7CisgICAgICAgICAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCiAgICAgICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwog
ICAgIH0KLSAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaW5wdXRGaWxlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBDdXJsQ2FjaGVFbnRy
eTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2xvc2VDb250ZW50RmlsZSgpOwotICAgIGRlbGV0ZUZp
bGUobV9oZWFkZXJGaWxlbmFtZSk7Ci0gICAgZGVsZXRlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7
CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2hlYWRlckZpbGVuYW1lKTsKKyAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fY29udGVudEZpbGVuYW1lKTsKICAgICBMT0coTmV0d29yaywg
IkNhY2hlOiBpbnZhbGlkYXRlZCAlc1xuIiwgbV9iYXNlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwog
fQogCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cGFyc2VSZXNwb25z
ZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgZG91YmxlIGZp
bGVUaW1lOwogICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9uRGF0ZTsKIAotICAgIGlmIChnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShtX2hlYWRlckZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9uRGF0
ZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1faGVhZGVy
RmlsZW5hbWUsIGZpbGVNb2RpZmljYXRpb25EYXRlKSkKICAgICAgICAgZmlsZVRpbWUgPSBkaWZm
dGltZShmaWxlTW9kaWZpY2F0aW9uRGF0ZSwgMCkgKiAxMDAwLjA7CiAgICAgZWxzZQogICAgICAg
ICBmaWxlVGltZSA9IGN1cnJlbnRUaW1lTVMoKTsgLy8gR01UCkBAIC0zNDIsMTEgKzM0MiwxMSBA
QCBzaXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgpCiAgICAgICAgIGxvbmcgbG9uZyBo
ZWFkZXJGaWxlU2l6ZTsKICAgICAgICAgbG9uZyBsb25nIGNvbnRlbnRGaWxlU2l6ZTsKIAotICAg
ICAgICBpZiAoIWdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkg
eworICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUs
IGhlYWRlckZpbGVTaXplKSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJv
cjogQ291bGQgbm90IGdldCBmaWxlIHNpemUgb2YgJXNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0
aW4xKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsKICAgICAgICAg
fQotICAgICAgICBpZiAoIWdldEZpbGVTaXplKG1fY29udGVudEZpbGVuYW1lLCBjb250ZW50Rmls
ZVNpemUpKSB7CisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9jb250ZW50
RmlsZW5hbWUsIGNvbnRlbnRGaWxlU2l6ZSkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAi
Q2FjaGUgRXJyb3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBtX2NvbnRlbnRG
aWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZW50cnlTaXpl
OwogICAgICAgICB9CkBAIC0zNjAsMTIgKzM2MCwxMiBAQCBzaXplX3QgQ3VybENhY2hlRW50cnk6
OmVudHJ5U2l6ZSgpCiAKIGJvb2wgQ3VybENhY2hlRW50cnk6Om9wZW5Db250ZW50RmlsZSgpCiB7
Ci0gICAgaWYgKGlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCisgICAgaWYgKEZpbGVTeXN0
ZW06OmlzSGFuZGxlVmFsaWQobV9jb250ZW50RmlsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIAotICAgIG1fY29udGVudEZpbGUgPSBvcGVuRmlsZShtX2NvbnRlbnRGaWxlbmFtZSwgT3Bl
bkZvcldyaXRlKTsKKyAgICBtX2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9j
b250ZW50RmlsZW5hbWUsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoaXNI
YW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVW
YWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgTE9H
KE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBt
X2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwpAQCAtMzc0LDExICszNzQsMTEgQEAg
Ym9vbCBDdXJsQ2FjaGVFbnRyeTo6b3BlbkNvbnRlbnRGaWxlKCkKIAogYm9vbCBDdXJsQ2FjaGVF
bnRyeTo6Y2xvc2VDb250ZW50RmlsZSgpCiB7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1fY29u
dGVudEZpbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRG
aWxlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBjbG9zZUZpbGUobV9jb250ZW50Rmls
ZSk7Ci0gICAgbV9jb250ZW50RmlsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fY29udGVudEZpbGUpOworICAgIG1fY29udGVudEZpbGUg
PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVFbnRyeS5oCmluZGV4IDkyZDZiYzMuLjgxY2JjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCkBAIC03
NSw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faGVhZGVyRmlsZW5hbWU7CiAgICAg
U3RyaW5nIG1fY29udGVudEZpbGVuYW1lOwogCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fY29u
dGVudEZpbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fY29udGVudEZp
bGU7CiAKICAgICBzaXplX3QgbV9lbnRyeVNpemU7CiAgICAgZG91YmxlIG1fZXhwaXJlRGF0ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzNWJmZTJlLi40NmUxN2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
Y3BwCkBAIC03Niw4ICs3Niw4IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoIWZpbGVFeGlzdHMobV9jYWNoZURpcikpIHsKLSAgICAgICAgaWYgKCFtYWtlQWxs
RGlyZWN0b3JpZXMobV9jYWNoZURpcikpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9jYWNoZURpcikpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMobV9jYWNoZURpcikpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJy
b3I6IENvdWxkIG5vdCBvcGVuIG9yIGNyZWF0ZSBjYWNoZSBkaXJlY3RvcnkhIENhY2hlTWFuYWdl
ciBkaXNhYmxlZC5cbiIpOwogICAgICAgICAgICAgbV9kaXNhYmxlZCA9IHRydWU7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMDMsMTQgKzEwMywxNCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6
OmxvYWRJbmRleCgpCiAgICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURpcik7CiAgICAg
aW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwogCi0gICAgUGxhdGZvcm1GaWxlSGFu
ZGxlIGluZGV4RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQoaW5kZXhGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBXYXJu
aW5nOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbG9uZyBsb25nIGZpbGVz
aXplID0gLTE7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShpbmRleEZpbGVQYXRoLCBmaWxlc2l6ZSkp
IHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGluZGV4RmlsZVBhdGgsIGZpbGVz
aXplKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgZ2V0
IGZpbGUgc2l6ZSBvZiAlc1xuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgdm9pZCBDdXJsQ2FjaGVN
YW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgICAgICBpZiAoZmlsZXNpemUgLSBidWZmZXJQb3NpdGlv
biA8IGJ1ZmZlclJlYWRTaXplKQogICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSBmaWxlc2l6
ZSAtIGJ1ZmZlclBvc2l0aW9uOwogCi0gICAgICAgIHJlYWRGcm9tRmlsZShpbmRleEZpbGUsIGJ1
ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOworICAgICAgICBG
aWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVy
UG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKICAgICAgICAgYnVmZmVyUG9zaXRpb24gKz0gYnVm
ZmVyUmVhZFNpemU7CiAgICAgfQotICAgIGNsb3NlRmlsZShpbmRleEZpbGUpOworICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOwogCiAgICAgLy8gQ3JlYXRlIHN0cmluZ3MgZnJv
bSBidWZmZXIKICAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZyhidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKQEAgLTE2NCw5ICsxNjQsOSBAQCB2b2lkIEN1cmxDYWNoZU1hbmFn
ZXI6OnNhdmVJbmRleCgpCiAgICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURpcik7CiAg
ICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwogCi0gICAgZGVsZXRlRmlsZShp
bmRleEZpbGVQYXRoKTsKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gb3BlbkZp
bGUoaW5kZXhGaWxlUGF0aCwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aW5kZXhGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7
CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAgICAg
TE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4i
LCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xNzUsMTIgKzE3NSwxMiBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgp
CiAgICAgY29uc3QgYXV0byYgZW5kID0gbV9MUlVFbnRyeUxpc3QuZW5kKCk7CiAgICAgd2hpbGUg
KGl0ICE9IGVuZCkgewogICAgICAgICBjb25zdCBDU3RyaW5nJiB1cmxMYXRpbjEgPSBpdC0+bGF0
aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGluZGV4RmlsZSwgdXJsTGF0aW4xLmRhdGEoKSwg
dXJsTGF0aW4xLmxlbmd0aCgpKTsKLSAgICAgICAgd3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCAiXG4i
LCAxKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCB1cmxMYXRp
bjEuZGF0YSgpLCB1cmxMYXRpbjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShpbmRleEZpbGUsICJcbiIsIDEpOwogICAgICAgICArK2l0OwogICAgIH0KIAotICAg
IGNsb3NlRmlsZShpbmRleEZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZp
bGUpOwogfQogCiB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6Om1ha2VSb29tRm9yTmV3RW50cnkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcAppbmRleCA4NTA0N2ZkLi5hZTJiZmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTIyLDcgKzEy
Miw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkQ29tcGxldGUoKQogCiAgICAgaWYgKCFt
X2Rlc3RpbmF0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9jdXJsUmVxdWVzdCAmJiAh
bV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgbW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1f
ZGVzdGluYXRpb24pOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUobV9jdXJsUmVx
dWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24pOwogICAgIH0KIAog
ICAgIGlmIChtX2xpc3RlbmVyKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3VybERvd25sb2Fk
OjpjdXJsRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9y
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kZWxldGVzRmlsZVVwb25GYWlsdXJlICYm
IG1fY3VybFJlcXVlc3QgJiYgIW1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRGaWxlUGF0aCgp
LmlzRW1wdHkoKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX2N1cmxSZXF1ZXN0LT5nZXREb3dubG9h
ZGVkRmlsZVBhdGgoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9jdXJsUmVx
dWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkpOwogCiAgICAgaWYgKG1fbGlzdGVuZXIpCiAg
ICAgICAgIG1fbGlzdGVuZXItPmRpZEZhaWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJlZTM0N2YuLjk3Y2Ez
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXF1ZXN0LmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVw
Rm9ybURhdGEoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGlzUG9zdFJlcXVlc3QpCiAg
ICAgZm9yIChhdXRvIGVsZW1lbnQgOiBlbGVtZW50cykgewogICAgICAgICBpZiAoZWxlbWVudC5t
X3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpFbmNvZGVkRmlsZSkgewogICAgICAgICAg
ICAgbG9uZyBsb25nIGZpbGVTaXplUmVzdWx0OwotICAgICAgICAgICAgaWYgKGdldEZpbGVTaXpl
KGVsZW1lbnQubV9maWxlbmFtZSwgZmlsZVNpemVSZXN1bHQpKSB7CisgICAgICAgICAgICBpZiAo
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZWxlbWVudC5tX2ZpbGVuYW1lLCBmaWxlU2l6ZVJlc3Vs
dCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsZVNpemVSZXN1bHQgPiBtYXhDdXJsT2ZmVCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBGaWxlIHNpemUgaXMgdG9vIGJpZyBmb3Igc3BlY2lm
eWluZyBpdCB0byBjVVJMCiAgICAgICAgICAgICAgICAgICAgIGNodW5rZWRUcmFuc2ZlciA9IHRy
dWU7CkBAIC02MTksMjIgKzYxOSwyMiBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojp3cml0ZURhdGFUb0Rv
d25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9kb3dubG9hZEZpbGVQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJkb3du
bG9hZCIsIG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKKyAgICAgICAgICAgIG1fZG93bmxvYWRGaWxl
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJkb3dubG9hZCIsIG1fZG93bmxv
YWRGaWxlSGFuZGxlKTsKICAgICB9CiAKLSAgICBpZiAobV9kb3dubG9hZEZpbGVIYW5kbGUgIT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgd3JpdGVUb0ZpbGUobV9kb3dubG9h
ZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIGlmIChtX2Rv
d25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQorICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSwg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZvaWQgQ3VybFJlcXVlc3Q6OmNs
b3NlRG93bmxvYWRGaWxlKCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0
ZXgpOwogCi0gICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCisgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlID09IEZpbGVTeXN0ZW06Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNsb3NlRmls
ZShtX2Rvd25sb2FkRmlsZUhhbmRsZSk7Ci0gICAgbV9kb3dubG9hZEZpbGVIYW5kbGUgPSBpbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25s
b2FkRmlsZUhhbmRsZSk7CisgICAgbV9kb3dubG9hZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogfQogCiB2b2lkIEN1cmxSZXF1ZXN0OjpjbGVhbnVw
RG93bmxvYWRGaWxlKCkKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjbGVh
bnVwRG93bmxvYWRGaWxlKCkKICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rvd25sb2FkTXV0ZXgp
OwogCiAgICAgaWYgKCFtX2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIGRl
bGV0ZUZpbGUobV9kb3dubG9hZEZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOwogICAgICAgICBtX2Rvd25sb2FkRmlsZVBhdGggPSBT
dHJpbmcoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IDI1YjFlOTYuLmE2N2ZmNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0x
NTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fZG93bmxvYWRNdXRleDsKICAgICBi
b29sIG1faXNFbmFibGVkRG93bmxvYWRUb0ZpbGUgeyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2Rv
d25sb2FkRmlsZVBhdGg7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlSGFu
ZGxlIHsgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZUhhbmRsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUgfTsKIAogICAgIE5ldHdvcmtMb2FkTWV0cmljcyBtX25ldHdvcmtM
b2FkTWV0cmljczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IGVjZGJmMTEuLjFjZmZl
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OnNldENsaWVudENlcnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFN0cmluZyYKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZp
bGVFeGlzdHMoY2VydGlmaWNhdGUpKQorICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNl
cnRpZmljYXRlKSkKICAgICAgICAgQ3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgp
LnNldENsaWVudENlcnRpZmljYXRlSW5mbyhob3N0LCBjZXJ0aWZpY2F0ZSwga2V5KTsKICAgICBl
bHNlCiAgICAgICAgIExPRyhOZXR3b3JrLCAiSW52YWxpZCBjbGllbnQgY2VydGlmaWNhdGUgZmls
ZTogJXMhXG4iLCBjZXJ0aWZpY2F0ZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlTWFjLm1tCmluZGV4IDVhYWQyM2EuLmZjZjU1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZl
cmVuY2VNYWMubW0KQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6
OmdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKCkKIAogICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdl
bmVyYXRlZCA9IGZhbHNlOwogICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsK
LSAgICAgICAgaWYgKGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5r
cyhtX3JlcGxhY2VtZW50UGF0aCkpCisgICAgICAgIGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5
c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpKQog
ICAgICAgICAgICAgbV9zaXplID0gbWV0YWRhdGEudmFsdWUoKS5sZW5ndGg7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VS
ZXF1ZXN0U291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXF1ZXN0U291cC5jcHAKaW5kZXggNjQ1Nzg2MS4uMjI2YWVlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
cXVlc3RTb3VwLmNwcApAQCAtNDEsMTEgKzQxLDExIEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRF
bmNvZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2Us
CiAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9i
b2R5LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJsb2JJdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEo
KSArIGJsb2JJdGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVy
biBibG9iSXRlbS5sZW5ndGgoKTsKICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZTog
ewotICAgICAgICBpZiAoIWlzVmFsaWRGaWxlVGltZShibG9iSXRlbS5maWxlKCktPmV4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZSgpKSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc1ZhbGlkRmls
ZVRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICB0aW1lX3QgZmlsZU1vZGlmaWNhdGlvblRpbWU7
Ci0gICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5w
YXRoKCksIGZpbGVNb2RpZmljYXRpb25UaW1lKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBmaWxlTW9kaWZp
Y2F0aW9uVGltZSkKICAgICAgICAgICAgIHx8IGZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0YXRp
Y19jYXN0PHRpbWVfdD4oYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUo
KSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBk
NWE3NDI2Li43OTVkN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDcgKzIwNSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzdHJpbmdJc051bWVyaWMoY29uc3QgY2hhciogc3RyKQog
Ly8gT2xkIHZlcnNpb25zIG9mIFdlYktpdCBjcmVhdGVkIHRoaXMgY2FjaGUuCiB2b2lkIFNvdXBO
ZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNoZURpcmVj
dG9yeSkKIHsKLSAgICBDU3RyaW5nIGNhY2hlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjYWNoZURpcmVjdG9yeSk7CisgICAgQ1N0cmluZyBjYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkpOwogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gY2FjaGVGaWxlKGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVQYXRoLmRhdGEoKSwgInNvdXAu
Y2FjaGUyIiwgbnVsbHB0cikpOwogICAgIGlmICghZ19maWxlX3Rlc3QoY2FjaGVGaWxlLmdldCgp
LCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggZGU5YTRh
Ni4uYzY3MmQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCiBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5n
JiBwYXRoKQogewogICAgIGlmIChwYXRoLmlzTnVsbCgpKQpAQCAtNDQ1LDQgKzQ0Nyw1IEBAIHN0
ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmls
ZSkKICAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OwogfQogCit9IC8vIG5hbWVzcGFjZSBGaWxl
U3lzdGVtCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXggYTAwMWFiZS4uNTEzMzc1
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZl
clBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZm
ZXJQT1NJWC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVk
QnVmZmVyOjpjcmVhdGVGcm9tUmVhZGluZ0ZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKICAg
ICBpZiAoZmlsZVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IENTdHJpbmcgZmlsZW5hbWUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOwor
ICAgIENTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZmlsZVBhdGgpOwogICAgIGludCBmZCA9IG9wZW4oZmlsZW5hbWUuZGF0YSgpLCBPX1JET05M
WSk7CiAgICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA4NDE5
ZDc2Li42YjJhZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwCkBAIC00OCwxOSArNDgsMTkgQEAgU1FMaXRlRmlsZVN5c3RlbTo6U1FM
aXRlRmlsZVN5c3RlbSgpCiAKIGludCBTUUxpdGVGaWxlU3lzdGVtOjpvcGVuRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgc3FsaXRlMyoqIGRhdGFiYXNlLCBib29sKQogewotICAgIHJl
dHVybiBzcWxpdGUzX29wZW5fdjIoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5k
YXRhKCksIGRhdGFiYXNlLCBTUUxJVEVfT1BFTl9SRUFEV1JJVEUgfCBTUUxJVEVfT1BFTl9DUkVB
VEUgfCBTUUxJVEVfT1BFTl9BVVRPUFJPWFksIG51bGxwdHIpOworICAgIHJldHVybiBzcWxpdGUz
X29wZW5fdjIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5k
YXRhKCksIGRhdGFiYXNlLCBTUUxJVEVfT1BFTl9SRUFEV1JJVEUgfCBTUUxJVEVfT1BFTl9DUkVB
VEUgfCBTUUxJVEVfT1BFTl9BVVRPUFJPWFksIG51bGxwdHIpOwogfQogCiBTdHJpbmcgU1FMaXRl
RmlsZVN5c3RlbTo6YXBwZW5kRGF0YWJhc2VGaWxlTmFtZVRvUGF0aChjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChwYXRoLCBmaWxlTmFtZSk7CiB9CiAKIGJvb2wgU1FMaXRlRmls
ZVN5c3RlbTo6ZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRo
KQogewogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMocGF0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoKTsKIH0KIAogYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjpl
bnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBjaGVj
a1BhdGhPbmx5KQpAQCAtNjksMTYgKzY5LDE2IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZW5z
dXJlRGF0YWJhc2VGaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGJvb2wgY2hlCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjaGVja1BhdGhPbmx5KSB7Ci0gICAgICAg
IFN0cmluZyBkaXIgPSBkaXJlY3RvcnlOYW1lKGZpbGVOYW1lKTsKKyAgICAgICAgU3RyaW5nIGRp
ciA9IEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpOwogICAgICAgICByZXR1cm4g
ZW5zdXJlRGF0YWJhc2VEaXJlY3RvcnlFeGlzdHMoZGlyKTsKICAgICB9CiAKLSAgICByZXR1cm4g
ZmlsZUV4aXN0cyhmaWxlTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZmlsZU5hbWUpOwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJh
c2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIHJldHVybiBkZWxldGVFbXB0
eURpcmVjdG9yeShwYXRoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkocGF0aCk7CiB9CiAKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCkBAIC04NywxMiArODcsMTIgQEAgYm9vbCBTUUxp
dGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkK
ICAgICBTdHJpbmcgc2htRmlsZU5hbWUgPSBtYWtlU3RyaW5nKGZpbGVOYW1lLCBBU0NJSUxpdGVy
YWwoIi1zaG0iKSk7CiAKICAgICAvLyBUcnkgdG8gZGVsZXRlIGFsbCB0aHJlZSBmaWxlcyB3aGV0
aGVyIG9yIG5vdCB0aGV5IGFyZSB0aGVyZS4KLSAgICBkZWxldGVGaWxlKGZpbGVOYW1lKTsKLSAg
ICBkZWxldGVGaWxlKHdhbEZpbGVOYW1lKTsKLSAgICBkZWxldGVGaWxlKHNobUZpbGVOYW1lKTsK
KyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKHdhbEZpbGVOYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHNobUZp
bGVOYW1lKTsKIAogICAgIC8vIElmIGFueSBvZiB0aGUgd2FsIG9yIHNobSBmaWxlcyByZW1haW4g
YWZ0ZXIgdGhlIGRlbGV0ZSBhdHRlbXB0LCB0aGUgb3ZlcmFsbCBkZWxldGUgb3BlcmF0aW9uIGZh
aWxlZC4KLSAgICByZXR1cm4gIWZpbGVFeGlzdHMoZmlsZU5hbWUpICYmICFmaWxlRXhpc3RzKHdh
bEZpbGVOYW1lKSAmJiAhZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSk7CisgICAgcmV0dXJuICFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVOYW1lKSAmJiAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh3
YWxGaWxlTmFtZSkgJiYgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc2htRmlsZU5hbWUpOwogfQog
CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTA1LDE5ICsxMDUsMTkgQEAgYm9vbCBTUUxpdGVGaWxl
U3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUzKiBkYXRhYmFzZSkKIGxvbmcgbG9u
ZyBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUpCiB7ICAgICAgICAKICAgICBsb25nIGxvbmcgc2l6ZTsKLSAgICByZXR1cm4gZ2V0Rmls
ZVNpemUoZmlsZU5hbWUsIHNpemUpID8gc2l6ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06
OmdldEZpbGVTaXplKGZpbGVOYW1lLCBzaXplKSA/IHNpemUgOiAwOwogfQogCiBkb3VibGUgU1FM
aXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSkKIHsKICAgICB0aW1lX3QgdGltZTsKLSAgICByZXR1cm4gZ2V0RmlsZUNyZWF0aW9uVGltZShm
aWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0Rmls
ZUNyZWF0aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsKIH0KIAogZG91YmxlIFNR
TGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGltZSA6IDA7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAppbmRleCA3
NmY5MjRlLi5jOTA4NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHN0YXRpYyBTdHJpbmcgZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5RmlsZVBhdGgoY29u
c3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICAvLyBEaWN0aW9uYXJ5IGZpbGVzIGFsd2F5cyBo
YXZlIHRoZSBmb3JtICJoeXBoXzxsb2NhbGUgbmFtZT4uZGljIgogICAgIC8vIHNvIHdlIHN0cmlw
IGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBsb2NhbGUuCi0gICAgU3RyaW5nIGZpbGVOYW1lID0gcGF0
aEdldEZpbGVOYW1lKGZpbGVQYXRoKTsKKyAgICBTdHJpbmcgZmlsZU5hbWUgPSBGaWxlU3lzdGVt
OjpwYXRoR2V0RmlsZU5hbWUoZmlsZVBhdGgpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgcHJlZml4
TGVuZ3RoID0gNTsKICAgICBzdGF0aWMgY29uc3QgaW50IHN1ZmZpeExlbmd0aCA9IDQ7CiAgICAg
cmV0dXJuIGZpbGVOYW1lLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIGZpbGVOYW1lLmxlbmd0aCgp
IC0gcHJlZml4TGVuZ3RoIC0gc3VmZml4TGVuZ3RoKTsKQEAgLTYxLDE0ICs2MSwxNCBAQCBzdGF0
aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVQYXRoKGNvbnN0IFN0cmlu
ZyYgZmlsZVBhdGgpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlGb3JEaWN0aW9uYXJpZXMo
Y29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFZlY3RvcjxT
dHJpbmc+PiYgYXZhaWxhYmxlTG9jYWxlcykKIHsKLSAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDog
bGlzdERpcmVjdG9yeShkaXJlY3RvcnlQYXRoLCAiaHlwaF8qLmRpYyIpKSB7CisgICAgZm9yIChh
dXRvJiBmaWxlUGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwg
Imh5cGhfKi5kaWMiKSkgewogICAgICAgICBTdHJpbmcgbG9jYWxlID0gZXh0cmFjdExvY2FsZUZy
b21EaWN0aW9uYXJ5RmlsZVBhdGgoZmlsZVBhdGgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
CiAKICAgICAgICAgY2hhciBub3JtYWxpemVkUGF0aFtQQVRIX01BWF07Ci0gICAgICAgIGlmICgh
cmVhbHBhdGgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKS5kYXRhKCksIG5vcm1h
bGl6ZWRQYXRoKSkKKyAgICAgICAgaWYgKCFyZWFscGF0aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwgbm9ybWFsaXplZFBhdGgpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgZmlsZVBhdGggPSBzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKTsKKyAgICAgICAgZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRo
KTsKICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9jYWxlLCBWZWN0b3I8U3RyaW5nPigp
KS5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGZpbGVQYXRoKTsKIAogICAgICAgICBTdHJpbmcgbG9j
YWxlUmVwbGFjaW5nVW5kZXJzY29yZXMgPSBTdHJpbmcobG9jYWxlKTsKQEAgLTIyNCw3ICsyMjQs
NyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPFdlYkNvcmU6Okh5cGhlbmF0aW9uRGlj
dGlvbmFyeT4gY3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBkaWN0aW9uYXJ5
UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpIeXBoZW5hdGlvbkRpY3Rpb25h
cnk6OmNyZWF0ZShXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGljdGlvbmFyeVBh
dGguc3RyaW5nKCkpKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlv
bmFyeTo6Y3JlYXRlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCBmMGMzNTAyLi5iZGFlNGJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIEZpbGVT
eXN0ZW0geworCiBzdGF0aWMgY29uc3QgVUxPTkdMT05HIGtTZWNvbmRzRnJvbUZpbGVUaW1lVG9U
aW1ldCA9IDExNjQ0NDczNjAwOwogCiBzdGF0aWMgYm9vbCBnZXRGaW5kRGF0YShTdHJpbmcgcGF0
aCwgV0lOMzJfRklORF9EQVRBVyYgZmluZERhdGEpCkBAIC01NDMsNCArNTQ1LDUgQEAgc3RkOjpv
cHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQog
ICAgIHJldHVybiBmaWxlSW5mb3JtYXRpb24uZHdWb2x1bWVTZXJpYWxOdW1iZXI7CiB9CiAKK30g
Ly8gbmFtZXNwYWNlIEZpbGVTeXN0ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDM3MDFjZGQuLjNjNmY1
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcApAQCAt
MjAwOSw3ICsyMDA5LDcgQEAgU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpmaWxlTGlzdE5hbWVGb3JX
aWR0aChjb25zdCBGaWxlTGlzdCogZmlsZUxpc3QsIGNvbnN0IEZvbnQKIAogICAgIFN0cmluZyBz
dHJpbmc7CiAgICAgaWYgKGZpbGVMaXN0LT5sZW5ndGgoKSkKLSAgICAgICAgc3RyaW5nID0gcGF0
aEdldEZpbGVOYW1lKGZpbGVMaXN0LT5pdGVtKDApLT5wYXRoKCkpOworICAgICAgICBzdHJpbmcg
PSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoZmlsZUxpc3QtPml0ZW0oMCktPnBhdGgoKSk7
CiAgICAgZWxzZSBpZiAobXVsdGlwbGVGaWxlc0FsbG93ZWQpCiAgICAgICAgIHN0cmluZyA9IGZp
bGVCdXR0b25Ob0ZpbGVzU2VsZWN0ZWRMYWJlbCgpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCmluZGV4IGFhMzcwYzMuLmU1MWEyNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcApAQCAtMTAyNCw3
ICsxMDI0LDcgQEAgQ29sb3IgUmVuZGVyVGhlbWVXaW46OnN5c3RlbUNvbG9yKENTU1ZhbHVlSUQg
Y3NzVmFsdWVJZCkgY29uc3QKICNpZiBFTkFCTEUoVklERU8pCiBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1heGltdW1SZWFzb25hYmxlQnVmZmVyU2l6ZSA9IDMyNzY4OwogCi1zdGF0aWMgdm9pZCBmaWxs
QnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBsb25nIGxv
bmcgZmlsZXNpemUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQorc3RhdGljIHZvaWQgZmlsbEJ1ZmZl
cldpdGhDb250ZW50c09mRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwg
bG9uZyBsb25nIGZpbGVzaXplLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKIHsKICAgICAvLyBMb2Fk
IHRoZSBmaWxlIGNvbnRlbnQgaW50byBidWZmZXIKICAgICBidWZmZXIucmVzaXplKGZpbGVzaXpl
ICsgMSk7CkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBzdGF0aWMgdm9pZCBmaWxsQnVmZmVyV2l0aENv
bnRlbnRzT2ZGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBsb25nIGxvbmcgZmlsZQogICAg
ICAgICBpZiAoZmlsZXNpemUgLSBidWZmZXJQb3NpdGlvbiA8IGJ1ZmZlclJlYWRTaXplKQogICAg
ICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSBmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uOwogCi0g
ICAgICAgIGJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0YSgpICsgYnVm
ZmVyUG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKKyAgICAgICAgYnl0ZXNSZWFkID0gRmlsZVN5
c3RlbTo6cmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwg
YnVmZmVyUmVhZFNpemUpOwogICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJlYWRTaXpl
KSB7CiAgICAgICAgICAgICBidWZmZXIuY2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEwNTgsMTkgKzEwNTgsMTkgQEAgU3RyaW5nIFJlbmRlclRoZW1lV2luOjpzdHJpbmdXaXRoQ29u
dGVudHNPZkZpbGUoQ0ZTdHJpbmdSZWYgbmFtZSwgQ0ZTdHJpbmdSZWYgdHkKICAgICBpZiAoIUNG
VVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVlc3RlZFVSTFJlZi5nZXQoKSwgZmFs
c2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSByZXF1ZXN0ZWRGaWxlSGFuZGxlID0gb3BlbkZp
bGUocmVxdWVzdGVkRmlsZVBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFs
aWQocmVxdWVzdGVkRmlsZUhhbmRsZSkpCisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIHJlcXVlc3RlZEZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShyZXF1ZXN0ZWRG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6
aXNIYW5kbGVWYWxpZChyZXF1ZXN0ZWRGaWxlSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgbG9uZyBsb25nIGZpbGVzaXplID0gLTE7Ci0gICAgaWYgKCFnZXRGaWxlU2l6
ZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCBmaWxlc2l6ZSkpIHsKLSAgICAgICAgY2xvc2VGaWxlKHJl
cXVlc3RlZEZpbGVIYW5kbGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUocmVx
dWVzdGVkRmlsZUhhbmRsZSwgZmlsZXNpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KIAogICAgIFZlY3RvcjxjaGFyPiBmaWxlQ29udGVudHM7CiAgICAgZmlsbEJ1ZmZlcldpdGhD
b250ZW50c09mRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCBmaWxlc2l6ZSwgZmlsZUNvbnRlbnRz
KTsKLSAgICBjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUpOwogCiAgICAgcmV0dXJuIFN0cmluZyhmaWxl
Q29udGVudHMuZGF0YSgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGZpbGVzaXplKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDMyYzljNjMuLjliZjAyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjM4IEBACisyMDE3
LTExLTAxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxvYkRv
d25sb2FkQ2xpZW50OjpkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6QmxvYkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQnVmZmVyKToKKyAgICAgICAgKFdl
YktpdDo6QmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YktpdDo6QmxvYkRvd25sb2FkQ2xpZW50OjpkaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpC
bG9iRG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
QmxvYjo6Y29uc3VtZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9i
OjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza0Jsb2I6OmRvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
QmxvYjo6d3JpdGVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Js
b2I6OmNsZWFuRG93bmxvYWRGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
a0Jsb2I6OmRpZEZpbmlzaERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlkRmluaXNoKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmNhY2hlc1Jvb3RQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FjaGVTdG9yYWdlOjpFbmdpbmU6OmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6cmVtb3ZlRmlsZSk6CisgICAgICAgIChXZWJL
aXQ6OkNhY2hlU3RvcmFnZTo6RW5naW5lOjpmZXRjaEVudHJpZXMpOgorICAgICAgICAoV2ViS2l0
OjpDYWNoZVN0b3JhZ2U6OkVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNhY2hlU3RvcmFnZTo6Y2FjaGVzTGlzdEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktp
dDo6Q2FjaGVTdG9yYWdlOjpjYWNoZXNPcmlnaW5GaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OkNhY2hlU3RvcmFnZTo6Q2FjaGVzOjpyZXRyaWV2ZU9yaWdpbkZyb21EaXJlY3RvcnkpOgorICAg
ICAgICAoV2ViS2l0OjpDYWNoZVN0b3JhZ2U6OkNhY2hlczo6cmVhZENhY2hlc0Zyb21EaXNrKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpDYWNoZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OmR1bXBGaWxlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OmRlbGV0ZUR1bXBGaWxlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6QmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFnZTo6YmxvYlBhdGhGb3JIYXNoIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFnZTo6YWRkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFnZTo6Z2V0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFnZTo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFnZTo6c2hhcmVDb3VudCk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmVhZE9yTWFrZVNhbHQpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OnRyYXZlcnNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6ZmlsZVRpbWVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hl
Ojp1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpjYW5Vc2VTaGFyZWRNZW1vcnlGb3JQYXRoKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OklPQ2hhbm5lbCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpJT0NoYW5uZWwpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6Om9wZW4pOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0YXRpc3RpY3M6OmluaXRpYWxpemUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6Om1ha2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlUmVjb3Jkc0RpcmVjdG9yeVBhdGgpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6Om1ha2VCbG9iRGlyZWN0b3J5UGF0aCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFrZVNhbHRGaWxlUGF0aCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6b3Blbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6dHJhdmVyc2VSZWNvcmRzRmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ2FjaGU6OmRlbGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpzeW5jaHJvbml6ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVjb3JkUGF0aEZvcktl
eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRl
RmlsZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OmRpc3BhdGNo
V3JpdGVPcGVyYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6
OnRyYXZlcnNlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpjbGVh
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6c2hyaW5rKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpyZXBvcnRMb2Fk
UGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2VyOjpyZXBvcnRS
ZWNvcmRQYXRoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFnZXI6OnJl
cG9ydFJlcGxheVBhdGgpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FwdHVyZTo6TWFuYWdl
cjo6aGFzaFRvUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpNYW5hZ2Vy
OjpvcGVuQ2FjaGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhcHR1cmU6Ok1hbmFn
ZXI6OnJlYWRGaWxlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29y
a0NhcHR1cmVSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYXB0dXJlOjpS
ZWNvcmRlcjo6d3JpdGVFdmVudHMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUv
TmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZEJlY29tZURvd25sb2FkVGFz
azpdKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6
CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1v
ZHVsZVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0
UGx1Z2luSW5mbyk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQ
YXRoLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cGx1Z2luc0RpcmVjdG9yaWVzKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9y
eVNhbXBsZXI6OnN0b3ApOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjppbml0
aWFsaXplVGVtcExvZ0ZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZW1vcnlTYW1wbGVyOjpp
bml0aWFsaXplU2FuZGJveGVkTG9nRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNh
bXBsZXI6OndyaXRlSGVhZGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lbW9yeVNhbXBsZXI6
OmFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZSk6CisgICAgICAgICogU2hhcmVkL1dlYk1l
bW9yeVNhbXBsZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0
aEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldEV4ZWN1dGFibGVQYXRoKToKKyAgICAgICAg
KFdlYktpdDo6ZmluZFdlYktpdFByb2Nlc3MpOgorICAgICAgICAqIFNoYXJlZC9pb3MvQ2hpbGRQ
cm9jZXNzSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVT
YW5kYm94KToKKyAgICAgICAgKiBTaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6Q2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAgICAgICog
U2hhcmVkL21hYy9TYW5kYm94RXh0ZW5zaW9uTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXNv
bHZlUGF0aEZvclNhbmRib3hFeHRlbnNpb24pOgorICAgICAgICAoV2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKToKKyAgICAgICAgKiBTaGFyZWQv
d3BlL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldEV4
ZWN1dGFibGVQYXRoKToKKyAgICAgICAgKFdlYktpdDo6ZmluZFdlYktpdFByb2Nlc3MpOgorICAg
ICAgICAqIFN0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U3RvcmFnZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpT
dG9yYWdlUHJvY2Vzczo6YWNjZXNzVG9UZW1wb3JhcnlGaWxlQ29tcGxldGUpOgorICAgICAgICAo
V2ViS2l0OjpTdG9yYWdlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3JpZ2lucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHA6CisgICAgICAgIChB
UEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpDb250ZW50UnVsZUxpc3RTdG9yZSk6CisgICAgICAg
IChBUEk6OmNvbnN0cnVjdGVkUGF0aCk6CisgICAgICAgIChBUEk6Om9wZW5BbmRNYXBDb250ZW50
UnVsZUxpc3QpOgorICAgICAgICAoQVBJOjp3cml0ZURhdGFUb0ZpbGUpOgorICAgICAgICAoQVBJ
Ojpjb21waWxlZFRvRmlsZSk6CisgICAgICAgIChBUEk6OkNvbnRlbnRSdWxlTGlzdFN0b3JlOjpn
ZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyk6CisgICAgICAgIChBUEk6OkNv
bnRlbnRSdWxlTGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QpOgorICAgICAgICAoQVBJ
OjpDb250ZW50UnVsZUxpc3RTdG9yZTo6c3luY2hyb25vdXNSZW1vdmVBbGxDb250ZW50UnVsZUxp
c3RzKToKKyAgICAgICAgKEFQSTo6Q29udGVudFJ1bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb250
ZW50UnVsZUxpc3RWZXJzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vi
c2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6Om9wZW4pOgorICAgICAg
ICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQpOgorICAgICAg
ICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnBlcmZvcm1PcGVuSW5pdGlhbGl6YXRpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwOgorICAg
ICAgICAod2Via2l0RmF2aWNvbkRhdGFiYXNlT3Blbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfZmls
ZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3NlbGVjdGVkX2ZpbGVzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJDb250
ZXh0Q29uc3RydWN0ZWQpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29u
X2RhdGFiYXNlX2RpcmVjdG9yeSk6CisgICAgICAgICh3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Fk
ZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkpOgorICAgICAgICAod2Via2l0X3dlYl9jb250ZXh0
X3NldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJzaXRlRGF0
YU1hbmFnZXJHZXREYXRhU3RvcmUpOgorICAgICAgICAod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpmaWxlQ2Fu
QmVBY2NlcHRlZEZvclVwbG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQ
bGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
bkluZm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5m
b0NhY2hlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luSW5mb0NhY2hl
Ojp1cGRhdGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1Bs
dWdpbkluZm9TdG9yZVVuaXguY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6
OnBsdWdpblBhdGhzSW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3Rv
cmU6OmdldFBsdWdpbkluZm8pOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1
Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQ
cm94eTo6c2NhblBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Omhhc0ZpbGVDaGFu
Z2VkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVEZWNvZGVyRm9yRmlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cmVz
b3VyY2VMb2dGaWxlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3Rp
Y3MpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6OnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRv
RGlzayk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6Y2xlYXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6
OnRyeVRvT3BlbkRhdGFiYXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2Nh
bFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcyk6CisgICAgICAgIChXZWJLaXQ6
OmZpbGVDcmVhdGlvblRpbWUpOgorICAgICAgICAoV2ViS2l0OjpmaWxlTW9kaWZpY2F0aW9uVGlt
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJh
c2VQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjp1cGRhdGVUcmFja2VyRGF0YWJhc2VGcm9tTG9jYWxTdG9yYWdlRGF0
YWJhc2VGaWxlcyk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6cmVtb3ZlRGF0YWJhc2VXaXRoT3JpZ2luSWRlbnRpZmllcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3JpZXNJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJLaXQ6OmNvbXB1dGVNZWRpYUtleUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc1Bvb2xHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBvcmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBw
bGljYXRpb25SYXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZh
dWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9y
bURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRK
YXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViS2l0RXh0ZW5zaW9uTWFuYWdlcjo6c2Nhbk1vZHVsZXMpOgorICAgICAg
ICAoV2ViS2l0OjpwYXJzZVVzZXJEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVHbGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNo
ZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlcjo6bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5Rm9yT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlP
cmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6cmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3Jp
Z2luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZU1lZGlhS2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlQWxsTWVkaWFLZXlFbnRyaWVzKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJl
YW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6TmV0c2NhcGVQ
bHVnaW5TdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpblN0cmVhbTo6fk5l
dHNjYXBlUGx1Z2luU3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5TdHJl
YW06OmRlbGl2ZXJEYXRhVG9GaWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5T
dHJlYW06OnN0b3ApOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpblN0cmVhbS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvSFRUUEJvZHkp
OgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1EYXRhKToKKwogMjAxNy0xMC0zMSAgVGltIEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBzb21lIGRy
YWcgYW5kIGRyb3AgZmVhdHVyZSBmbGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKaW5kZXgg
YzZmZjE1YS4uNjU0ODYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCkBAIC01NiwxNiAr
NTYsMTYgQEAgdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGlu
YXRpb24oY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblAKIHsKICAgICBBU1NFUlQoIWRlc3RpbmF0
aW9uUGF0aC5pc0VtcHR5KCkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMoZGVzdGluYXRpb25QYXRo
KSkgeworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0aCkpIHsK
ICAgICAgICAgaWYgKCFhbGxvd092ZXJ3cml0ZSkgewogICAgICAgICAgICAgZGlkRmFpbChudWxs
cHRyLCBjYW5jZWxsZWRFcnJvcihtX2Rvd25sb2FkLnJlcXVlc3QoKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZUZpbGUoZGVzdGluYXRpb25QYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkZXN0aW5hdGlvblBhdGgpOwogICAgIH0K
IAogICAgIG1fZGVzdGluYXRpb25QYXRoID0gZGVzdGluYXRpb25QYXRoOwotICAgIG1fZGVzdGlu
YXRpb25GaWxlID0gb3BlbkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5Gb3JXcml0ZSk7Cisg
ICAgbV9kZXN0aW5hdGlvbkZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX2Rlc3RpbmF0aW9u
UGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICBtX2Rvd25sb2FkLmRpZENyZWF0
ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuY29udGlu
dWVEaWRSZWNlaXZlUmVzcG9uc2UoKTsKQEAgLTczLDMwICs3MywzMCBAQCB2b2lkIEJsb2JEb3du
bG9hZENsaWVudDo6ZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUAogCiB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZXNvdXJjZUhhbmRsZSosIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQpCiB7Ci0gICAg
d3JpdGVUb0ZpbGUobV9kZXN0aW5hdGlvbkZpbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNp
emUoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kZXN0aW5hdGlvbkZpbGUsIGJ1
ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CiAgICAgbV9kb3dubG9hZC5kaWRSZWNlaXZl
RGF0YShidWZmZXItPnNpemUoKSk7CiB9CiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKikKIHsKLSAgICBjbG9zZUZpbGUobV9kZXN0aW5h
dGlvbkZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7
CiAgICAgbV9kb3dubG9hZC5kaWRGaW5pc2goKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRDbGll
bnQ6OmRpZENhbmNlbCgpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZpbGUpOwogICAgIGlmICghbV9k
ZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKQotICAgICAgICBkZWxldGVGaWxlKG1fZGVzdGluYXRp
b25QYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0
aCk7CiAKICAgICBtX2Rvd25sb2FkLmRpZENhbmNlbChJUEM6OkRhdGFSZWZlcmVuY2UoKSk7CiB9
CiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25G
aWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZpbGUpOwogICAg
IGlmICghbV9kZXN0aW5hdGlvblBhdGguaXNFbXB0eSgpKQotICAgICAgICBkZWxldGVGaWxlKG1f
ZGVzdGluYXRpb25QYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3Rp
bmF0aW9uUGF0aCk7CiAKICAgICBtX2Rvd25sb2FkLmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJl
ZmVyZW5jZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmgKaW5kZXggNGE0MmNjMi4uZjk0MDYx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxv
YkRvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvQmxvYkRvd25sb2FkQ2xpZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIERvd25sb2FkJiBtX2Rvd25sb2FkOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uUGF0aDsK
LSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUgeyBXZWJD
b3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZGVzdGluYXRpb25GaWxlIHsgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXgg
NzhlNWE0MS4uNmRhNTNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNS
ZWFkKQogICAgIG1fdG90YWxSZW1haW5pbmdTaXplIC09IGJ5dGVzUmVhZDsKIAogICAgIGlmIChi
eXRlc1JlYWQpIHsKLSAgICAgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpIHsKKyAgICAgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgICAgIGlmICghd3JpdGVEb3du
bG9hZChkYXRhLCBieXRlc1JlYWQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTQ0OCw4ICs0NDgsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbgogICAg
IGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29u
c3VtZSgpOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIGZpbGVFeGlzdHMobV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIGRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRM
b2NhdGlvbik7CisgICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKIFN0cmluZyBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CkBAIC00NjcsOCArNDY3LDggQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAKICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkIHRvICVzIiwgdGhpcywg
bV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fZG93bmxv
YWRGaWxlID0gb3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgT3BlbkZvcldyaXRl
KTsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkg
eworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbiwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAobV9kb3du
bG9hZEZpbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAg
ICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0Jsb2I6OmRvd25sb2FkKCkKIGJvb2wgTmV0d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVEb3du
bG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIEFTU0VSVChpc0Rv
d25sb2FkKCkpOwotICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShtX2Rvd25sb2Fk
RmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGRhdGEsIGJ5dGVzUmVhZCk7CiAgICAgaWYg
KGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVk
RXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTAzLDEx
ICs1MDMsMTEgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKGNvbnN0
IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkgewotICAgICAgICBjbG9zZUZpbGUobV9kb3dubG9hZEZpbGUp
OwotICAgICAgICBtX2Rvd25sb2FkRmlsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7Cisg
ICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVI
YW5kbGUpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxlKTsK
KyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwogICAgIH0KLSAgICBkZWxldGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24p
OworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7
CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmFpbERvd25sb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQpAQCAtNTM2LDggKzUzNiw4IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQoKQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVw
IC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQiLCB0aGlzKTsKIAogICAg
IEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7Ci0g
ICAgbV9kb3dubG9hZEZpbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7CisgICAgbV9kb3dubG9hZEZpbGUgPSBG
aWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgaWYgKG1fc2FuZGJv
eEV4dGVuc2lvbikgewogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPnJldm9rZSgpOwpAQCAt
NTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmFpbChFcnJvciBl
cnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoKCkKIHsKLSAg
ICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAg
IGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKSB7CiAgICAgICAgIGRpZEZpbmlzaERvd25sb2FkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNr
QmxvYi5oCmluZGV4IDUxOTM1OTQuLjkyNjZlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC0xMTMsNyArMTEzLDcgQEAg
cHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemVJdGVtQ291bnQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9yZWFkSXRlbUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9maWxlT3BlbmVkIHsgZmFsc2Ug
fTsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9hZEZpbGUgeyBXZWJD
b3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2VzOwogICAgIFJlZlB0
cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDJmZDhlZmYuLjZlNWNk
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Q2FjaGVNb2Rl
bCh1aW50MzJfdCBjbSkKICAgICB1bnNpZ25lZCB1cmxDYWNoZU1lbW9yeUNhcGFjaXR5ID0gMDsK
ICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9IDA7CiAgICAgdWludDY0X3QgZGlz
a0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6Z2V0Vm9sdW1lRnJlZVNwYWNlKG1fZGlz
a0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7CisgICAgaWYgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNoZURpcmVjdG9yeSwgZGlza0ZyZWVT
aXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVhZCBv
ZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAgICAgICAgIC8vIGNvdW50IGRvZXNu
J3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgogICAgICAgICBkaXNrRnJl
ZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwCmluZGV4IGY4MTczNjIuLjY3OTQ5
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVT
dG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIEVuZ2luZTo6
Y2FjaGVzUm9vdFBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBLZXkga2V5KG9yaWdpbiwgeyB9LCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1
cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5wYXJ0
aXRpb25IYXNoQXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3Ry
aW5nKCkpOwogfQogCiBFbmdpbmU6On5FbmdpbmUoKQpAQCAtMjA1LDkgKzIwNSw5IEBAIHZvaWQg
RW5naW5lOjppbml0aWFsaXplKEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+
JiYgY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2FsdFBh
dGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlM
aXRlcmFsKCJzYWx0IikpOworICAgIFN0cmluZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNh
bHQiKSk7CiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdU
Rk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERp
cmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIHNhbHQg
PSByZWFkT3JNYWtlU2FsdChzYWx0UGF0aCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXNhbHQpIHsKICAgICAgICAgICAgICAgICBj
YWxsYmFjayhFcnJvcjo6V3JpdGVEaXNrKTsKQEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEVuZ2lu
ZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtmaWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29w
eSgpXSgpIG11dGFibGUgewotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsK
KyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAg
fSk7CiB9CiAKQEAgLTM4Miw4ICszODIsOCBAQCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJv
b2wgc2hvdWxkQ29tcHV0ZVNpemUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAg
IH0KIAogICAgIGF1dG8gdGFza0NvdW50ZXIgPSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVh
dGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0
aCA6IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBp
ZiAoIVdlYkNvcmU6OmZpbGVJc0RpcmVjdG9yeShmb2xkZXJQYXRoLCBXZWJDb3JlOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisgICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAg
ICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgs
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURp
cmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzaG91bGRDb21wdXRlU2l6ZSwgdGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5
UmVmKCldIChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmln
aW4pIG11dGFibGUgewogICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTQxNSw4ICs0MTUsOCBAQCB2b2lkIEVuZ2luZTo6Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dy
ZWdhdG9yJiB0YXNrSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5k
aXNwYXRjaChbcGF0aCA9IG1fcm9vdFBhdGguaXNvbGF0ZWRDb3B5KCksIHRhc2tIYW5kbGVyID0g
bWFrZVJlZih0YXNrSGFuZGxlcildIHsKLSAgICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdl
YkNvcmU6Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNv
cmU6OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFtZSwgV2ViQ29yZTo6U2hvdWxkRm9sbG93U3ltYm9s
aWNMaW5rczo6Tm8pKQorICAgICAgICBmb3IgKGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgICAgICBpZiAoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAg
ZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3Rv
cmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAKaW5kZXggMzVmNTlhMi4uM2M0ZTc3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VF
bmdpbmVDYWNoZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lQ2FjaGVzLmNwcApAQCAtNDIsMTggKzQyLDE4IEBAIG5hbWVzcGFj
ZSBDYWNoZVN0b3JhZ2UgewogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBjYWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNh
Y2hlc2xpc3QiKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChjYWNoZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJjYWNoZXNsaXN0Iikp
OwogfQogCiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNPcmlnaW5GaWxlbmFtZShjb25zdCBT
dHJpbmcmIGNhY2hlc1Jvb3RQYXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgib3JpZ2luIikpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
Y2FjaGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgib3JpZ2luIikpOwogfQogCiB2b2lkIENhY2hl
czo6cmV0cmlldmVPcmlnaW5Gcm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwg
V29ya1F1ZXVlJiBxdWV1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBxdWV1ZS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgZm9sZGVyUGF0aCA9IGZvbGRlclBhdGguaXNvbGF0ZWRDb3B5KCldKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhjYWNoZXNMaXN0Rmls
ZW5hbWUoZm9sZGVyUGF0aCkpKSB7CisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhjYWNoZXNMaXN0RmlsZW5hbWUoZm9sZGVyUGF0aCkpKSB7CiAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIH0pOwpAQCAtMzM4LDcgKzMzOCw3
IEBAIHZvaWQgQ2FjaGVzOjpyZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4
cGVjdGVkPFZlY3RvcjxDYWNoZT4sIEVycm9yCiAgICAgfQogCiAgICAgYXV0byBmaWxlbmFtZSA9
IGNhY2hlc0xpc3RGaWxlbmFtZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAoIVdlYkNvcmU6OmZpbGVF
eGlzdHMoZmlsZW5hbWUpKSB7CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGZpbGVuYW1lKSkgewogICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggNTcwNGY4NS4uMTk1YzIzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIENhY2hlOjpDYWNoZShSZWY8U3RvcmFnZT4mJiBzdG9yYWdl
LCBPcHRpb25TZXQ8T3B0aW9uPiBvcHRpb25zKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICAvLyBUcmlnZ2VycyB3aXRoICJ0b3VjaCAkY2FjaGVQYXRoL2R1bXAiLgotICAgICAg
ICBDU3RyaW5nIGR1bXBGaWxlUGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aCgp
LCAiZHVtcCIpKTsKKyAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZVBhdGgoKSwgImR1bXAiKSk7CiAg
ICAgICAgIEdSZWZQdHI8R0ZpbGU+IGR1bXBGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgoZHVtcEZpbGVQYXRoLmRhdGEoKSkpOwogICAgICAgICBHRmlsZU1vbml0b3IqIG1vbml0
b3IgPSBnX2ZpbGVfbW9uaXRvcl9maWxlKGR1bXBGaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9O
T05FLCBudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KG1vbml0b3IsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhkdW1wRmlsZUNoYW5nZWQpLCB0aGlzKTsK
QEAgLTUzNywxNiArNTM3LDE2IEBAIHZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFRyYXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogCiBTdHJpbmcgQ2Fj
aGU6OmR1bXBGaWxlUGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fc3RvcmFnZS0+dmVyc2lvblBhdGgoKSwgImR1bXAuanNvbiIpOwogfQogCiB2b2lkIENhY2hl
OjpkdW1wQ29udGVudHNUb0ZpbGUoKQogewotICAgIGF1dG8gZmQgPSBXZWJDb3JlOjpvcGVuRmls
ZShkdW1wRmlsZVBhdGgoKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIVdlYkNv
cmU6OmlzSGFuZGxlVmFsaWQoZmQpKQorICAgIGF1dG8gZmQgPSBXZWJDb3JlOjpGaWxlU3lzdGVt
OjpvcGVuRmlsZShkdW1wRmlsZVBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldy
aXRlKTsKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmQpKQog
ICAgICAgICByZXR1cm47CiAgICAgYXV0byBwcm9sb2d1ZSA9IFN0cmluZygie1xuXCJlbnRyaWVz
XCI6IFtcbiIpLnV0ZjgoKTsKLSAgICBXZWJDb3JlOjp3cml0ZVRvRmlsZShmZCwgcHJvbG9ndWUu
ZGF0YSgpLCBwcm9sb2d1ZS5sZW5ndGgoKSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmQsIHByb2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOwogCiAgICAg
c3RydWN0IFRvdGFscyB7CiAgICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwpAQCAtNTc1LDgg
KzU3NSw4IEBAIHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgICAgICBl
cGlsb2d1ZS5hcHBlbmRMaXRlcmFsKCJcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5k
TGl0ZXJhbCgifVxufVxuIik7CiAgICAgICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGVwaWxvZ3Vl
LnRvU3RyaW5nKCkudXRmOCgpOwotICAgICAgICAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQs
IHdyaXRlRGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpjbG9zZUZpbGUoZmQpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3Jp
dGVUb0ZpbGUoZmQsIHdyaXRlRGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CisgICAg
ICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGF1dG8gZW50cnkgPSBFbnRyeTo6ZGVjb2RlU3Rv
cmFnZVJlY29yZCgqcmVjb3JkKTsKQEAgLTU5MCwxNCArNTkwLDE0IEBAIHZvaWQgQ2FjaGU6OmR1
bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgIGVudHJ5LT5hc0pTT04oanNvbiwgaW5mbyk7CiAg
ICAgICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAgICAgIGF1dG8gd3JpdGVEYXRh
ID0ganNvbi50b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUo
ZmQsIHdyaXRlRGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CisgICAgICAgIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURh
dGEubGVuZ3RoKCkpOwogICAgIH0pOwogfQogCiB2b2lkIENhY2hlOjpkZWxldGVEdW1wRmlsZSgp
CiB7CiAgICAgV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGUuZGVsZXRl
IiktPmRpc3BhdGNoKFtwYXRoID0gZHVtcEZpbGVQYXRoKCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAg
ICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShwYXRoKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShwYXRoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9y
YWdlLmNwcAppbmRleCBmNmIzNjRmLi4xNjM1ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdl
LmNwcApAQCAtNTMsMTUgKzUzLDE1IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6Om1ha2VB
bGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CiAKICAgICBtX2Fw
cHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0b3J5ID0gYmxvYkRpcmVjdG9y
eVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGlyZWN0b3J5LCBbdGhpcywgJmJs
b2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUp
IHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAgICAgIGF1dG8gZmlsZVBhdGgg
PSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgICAgIGF1dG8g
cGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9i
RGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAgICAgc3RydWN0IHN0
YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEoKSwgJnN0YXQpOwogICAgICAg
ICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJsb2JTdG9yYWdlOjpibG9iUGF0
aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25zdAogewogICAgIGF1dG8gaGFz
aEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAgIHJldHVybiBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpmcm9t
VVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0cmluZzo6ZnJvbVVU
RjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjph
ZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRhKQpAQCAtODgsOCArODgsOCBA
QCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKLSAgICBhdXRvIGxpbmtQ
YXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8g
YmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
YmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHVubGluayhsaW5r
UGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0gYWNjZXNzKGJsb2JQYXRoLmRh
dGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMTksNyArMTE5LDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2Ig
QmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgYXV0byBkYXRhID0g
bWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHsgZGF0YSwgY29tcHV0ZVNI
QTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6
OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5saW5rKGxpbmtQYXRoLmRhdGEo
KSk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB1bnNpZ25lZCBCbG9iU3RvcmFnZTo6c2hhcmVD
b3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICBp
ZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmNwcAppbmRleCA4YWM3OTdmLi43YmI2NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5jcHAKQEAg
LTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgU2FsdCBtYWtlU2FsdCgpCiAKIHN0ZDo6b3B0aW9uYWw8
U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIGF1dG8gY3Bh
dGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgYXV0byBj
cGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKICAgICBhdXRvIGZkID0gb3BlbihjcGF0aC5kYXRhKCksIE9fUkRPTkxZLCAwKTsKICAgICBT
YWx0IHNhbHQ7CiAgICAgYXV0byBieXRlc1JlYWQgPSByZWFkKGZkLCBzYWx0LmRhdGEoKSwgc2Fs
dC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggODJkNzM1NS4uZWU2ZDE0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBE
aXJlY3RvcnlFbnRyeVR5cGUgZGlyZWN0b3J5RW50cnlUeXBlKHVpbnQ4X3QgZHR5cGUpCiAKIHZv
aWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3RvcnlFbnRyeVR5cGUpPiYgZnVuY3Rpb24pCiB7Ci0g
ICAgRElSKiBkaXIgPSBvcGVuZGlyKFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKS5kYXRhKCkpOworICAgIERJUiogZGlyID0gb3BlbmRpcihXZWJDb3JlOjpGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKICAgICBpZiAoIWRpcikK
ICAgICAgICAgcmV0dXJuOwogICAgIGRpcmVudCogZHA7CkBAIC04NCwxMCArODQsMTAgQEAgdm9p
ZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIEQKIHZvaWQgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogICAgIHRyYXZlcnNlRGlyZWN0b3J5KHBhdGgsIFsmcGF0aF0o
Y29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewotICAgICAgICBT
dHJpbmcgZW50cnlQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgs
IG5hbWUpOworICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOwogICAgICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGU6Ci0gICAgICAgICAg
ICBXZWJDb3JlOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeToKICAgICAgICAgICAgIGRl
bGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGVudHJ5UGF0aCk7CkBAIC05NSwxOSArOTUsMTkgQEAg
dm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
ICAgIC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCiAgICAgICAgIH0KICAgICB9KTsK
LSAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKKyAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogRmlsZVRpbWVzIGZp
bGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFWRShTVEFUX0JJUlRIVElNRSkK
ICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3RhdChXZWJDb3JlOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUluZm8pKQorICAgIGlmIChzdGF0
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRh
KCksICZmaWxlSW5mbykpCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIHsgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoZmlsZUluZm8uc3RfYmlydGh0aW1lKSwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoZmlsZUluZm8uc3RfbXRpbWUp
IH07CiAjZWxpZiBVU0UoU09VUCkKICAgICAvLyBUaGVyZSdzIG5vIHN0X2JpcnRodGltZSBpbiBz
b21lIG9wZXJhdGluZyBzeXN0ZW1zIGxpa2UgTGludXgsIHNvIHdlIHVzZSB4YXR0cnMgdG8gc2V0
L2dldCB0aGUgY3JlYXRpb24gdGltZS4KLSAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHBhdGgpLmRhdGEoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19m
aWxlX25ld19mb3JfcGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0g
YWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKGZpbGUuZ2V0KCksICJ4YXR0cjo6YmlydGh0aW1l
LHRpbWU6Om1vZGlmaWVkIiwgR19GSUxFX1FVRVJZX0lORk9fTk9ORSwgbnVsbHB0ciwgbnVsbHB0
cikpOwogICAgIGlmICghZmlsZUluZm8pCiAgICAgICAgIHJldHVybiB7IH07CkBAIC0xMjgsNyAr
MTI4LDcgQEAgdm9pZCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZUlmTmVlZGVkKGNvbnN0IFN0
cmluZyYgcGF0aCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gVGhpcyByZWFs
bHkgdXBkYXRlcyBib3RoIHRoZSBhY2Nlc3MgdGltZSBhbmQgdGhlIG1vZGlmaWNhdGlvbiB0aW1l
LgotICAgIHV0aW1lcyhXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0
YSgpLCBudWxscHRyKTsKKyAgICB1dGltZXMoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7CiB9CiAKIGJvb2wgY2FuVXNl
U2hhcmVkTWVtb3J5Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC0xNDIsNyArMTQyLDcg
QEAgYm9vbCBjYW5Vc2VTaGFyZWRNZW1vcnlGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKICAg
ICBhdHRybGlzdCBhdHRyTGlzdCA9IHsgfTsKICAgICBhdHRyTGlzdC5iaXRtYXBjb3VudCA9IEFU
VFJfQklUX01BUF9DT1VOVDsKICAgICBhdHRyTGlzdC5jb21tb25hdHRyID0gQVRUUl9DTU5fREFU
QV9QUk9URUNUX0ZMQUdTOwotICAgIGludDMyX3QgZXJyb3IgPSBnZXRhdHRybGlzdChXZWJDb3Jl
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmYXR0ckxpc3QsICZhdHRy
QnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9MTE9XKTsKKyAgICBpbnQzMl90
IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0ckJ1ZmZlciwgc2l6ZW9mKGF0
dHJCdWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CiAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJVbmFibGUgdG8gZ2V0IGNhY2hlIGRpcmVjdG9yeSBw
cm90ZWN0aW9uIGNsYXNzLCBkaXNhYmxpbmcgdXNlIG9mIHNoYXJlZCBtYXBwZWQgbWVtb3J5Iik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tCmlu
ZGV4IGVmZDc3OTkuLjc2YjE0ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpA
QCAtNDEsNyArNDEsNyBAQCBJT0NoYW5uZWw6OklPQ2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoLCBUeXBlIHR5cGUpCiAgICAgOiBtX3BhdGgoZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlw
ZSkKIHsKLSAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZVBhdGgpOworICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBt
b2RlOwogICAgIGJvb2wgdXNlTG93SU9Qcmlvcml0eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9D
aGFubmVsU291cC5jcHAKaW5kZXggMDE2MTIwOC4uNGNlNzc2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbFNvdXAuY3BwCkBAIC00MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNv
bnN0IFN0cmluZyYgZmlsZVBhdGgsIFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkK
ICAgICAsIG1fdHlwZSh0eXBlKQogewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHUmVmUHRy
PEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5kYXRhKCkp
KTsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6Q3JlYXRlOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcAppbmRleCA2OTMzNDE3Li5iNGY2MjYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RhdGlzdGljcy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0YXRpc3Rp
Y3M+IFN0YXRpc3RpY3M6Om9wZW4oQ2FjaGUmIGNhY2hlLCBjb25zdCBTdHJpbmcmIGNhY2hlUGEK
IHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNl
UGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIFN0YXRp
c3RpY3NEYXRhYmFzZU5hbWUpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0aWNz
RGF0YWJhc2VOYW1lKTsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aXN0aWNzPihj
YWNoZSwgZGF0YWJhc2VQYXRoKTsKIH0KIApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFN0YXRpc3Rp
Y3M6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAgICAgc2VyaWFsQmFj
a2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgZGF0YWJhc2VQYXRoID0gZGF0YWJhc2VQ
YXRoLmlzb2xhdGVkQ29weSgpLCBuZXR3b3JrQ2FjaGVQYXRoID0gbV9jYWNoZS5yZWNvcmRzUGF0
aCgpLCBzdGFydFRpbWVdIHsKICAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb25JblBy
b2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0gICAgICAgIGlmICghV2Vi
Q29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQ
YXRoKSkpCisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3Jr
UHJvY2VzcykgT3BlbmluZyBuZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3MgZGF0YWJhc2UgYXQgJXMu
Li4iLCBkYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRl
eCBlNGFkYjE5Li4wM2UzMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTEzNiwyOSArMTM2
LDI5IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJpbmcgbWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgo
Y29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKICAgICBTdHJpbmcgdmVyc2lvblN1
YmRpcmVjdG9yeSA9IHZlcnNpb25EaXJlY3RvcnlQcmVmaXggKyBTdHJpbmc6Om51bWJlcihTdG9y
YWdlOjp2ZXJzaW9uKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3Rv
cnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlUmVj
b3Jkc0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWRE
aXJlY3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGly
ZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3RvcnlQYXRoKGNv
bnN0IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGly
ZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5
UGF0aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRp
YyBTdHJpbmcgbWFrZVNhbHRGaWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRo
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZl
cnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5h
bWUpOwogfQogCiBSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIGNh
Y2hlUGF0aCwgTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBpZiAoIVdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0
b3J5UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFr
ZVNhbHRGaWxlUGF0aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0xNzEsMTMgKzE3
MSwxMyBAQCB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1Bh
dGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJl
Y29yZHNQYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJlY3RvcnlFbnRy
eVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50
cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBw
YXJ0aXRpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQ
YXRoLCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBh
cnRpdGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25QYXRoLCBb
Jl0oY29uc3QgU3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBl
KSB7CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGly
ZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghZXhwZWN0
ZWRUeXBlLmlzRW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1YWxU
eXBlKTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVh
bFR5cGUpOwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGlyZWN0b3J5UGF0
aCwgWyZmdW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBlXShjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUgfHwgZmls
ZU5hbWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTk3LDE4ICsxOTcsMTggQEAgc3RhdGljIHZvaWQgZGVsZXRlRW1w
dHlSZWNvcmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xkZXJzLgotICAg
ICAgICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBwYXJ0aXRp
b25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Y29yZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFy
dGl0aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRpck5hbWUsIERp
cmVjdG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUg
IT0gRGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMgcmVhbGx5
IGVtcHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2ViQ29y
ZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRpck5hbWUpKTsK
KyAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRo
LCBzdWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0ZSBbUGFydGl0
aW9uXSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMg
cmVhbGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUp
KTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBw
YXJ0aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3NiwxNyArMjc2LDE3IEBAIHZvaWQg
U3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAg
ICAgIFN0cmluZyBhbnlUeXBlOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRz
UGF0aCgpLCBhbnlUeXBlLCBbJnJlY29yZEZpbHRlciwgJmJsb2JGaWx0ZXIsICZyZWNvcmRzU2l6
ZSwgJmNvdW50XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJp
bmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3Jk
RGlyZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Cisg
ICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKIAogICAgICAg
ICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6OnN0cmluZ1Rv
SGFzaChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0
ZUZpbGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAgICAgICBXZWJD
b3JlOjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKICAgICAgICAg
ICAgIGlmICghZmlsZVNpemUpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxl
KGZpbGVQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
QEAgLTM1MiwxMiArMzUyLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJsb2IoY29uc3Qg
S2V5JiBrZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0aEZvcktl
eShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBlKCkuaXNFbXB0
eSgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9u
SGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3Ry
aW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZFBhdGhGb3JL
ZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5oYXNo
QXNTdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5oYXNoQXNT
dHJpbmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQYXRoKGNvbnN0
IFN0cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0b3JhZ2U6OmRl
bGV0ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5KGtleSkpOwor
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShrZXkp
KTsKICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkpKTsKIH0KIApA
QCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJhdGlvbihz
dGQ6OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAgICAgIGF1dG8g
cmVjb3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3cml0ZU9wZXJh
dGlvbi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVjb3JkUGF0aEZv
cktleSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJDb3JlOjptYWtl
QWxsRGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAgICAgICAgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7CiAKICAgICAg
ICAgKyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtODYzLDcgKzg2Myw3IEBAIHZv
aWQgU3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBUcmF2ZXJzZUZsYWdzIGZs
YWdzLCBUcmF2ZXJzZUhhbmRsZXImCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsK
KyAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAKICAg
ICAgICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYgKHRyYXZlcnNlT3Bl
cmF0aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBAIC05NTIsMTMgKzk1
MiwxMyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtbwogICAgIGlvUXVldWUoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNpbmNlVGltZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9IHR5
cGUuaXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRo
ID0gdGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVj
b3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNC
bG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAgICAgICAgIGF1
dG8gZmlsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGly
ZWN0b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUgPiBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKSkgewogICAgICAgICAgICAg
ICAgIGF1dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIGlm
ICh0aW1lcy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRl
RmlsZShmaWxlUGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1wdHlSZWNvcmRz
RGlyZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBTdG9y
YWdlOjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAg
ICAgICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAg
YXV0byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRoKTsKIAogICAg
ICAgICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAgLTEwNTAsNyAr
MTA1MCw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExPRyhOZXR3b3Jr
Q2FjaGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtDb3VudD0lZCBz
aG91bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNob3VsZERlbGV0
ZSk7CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAgICAgICAgICBX
ZWJDb3JlOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAgICAgICAgbV9i
bG9iU3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsK
QEAgLTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBhdXRvIG9sZFZl
cnNpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwg
c3ViZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFt
ZSk7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vz
cykgZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9uUGF0aC51
dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHko
b2xkVmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAzMTMxYzBm
Li5lMmQ0MWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1
cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNzMsMTUgKzczLDE1
IEBAIHZvaWQgTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIHJlY29yZFJlcGxheU1v
ZGUsIGNvbnN0IFN0cmluZyYgcmVjb3JkUmVwCiAgICAgICAgIG1fcmVjb3JkUmVwbGF5TW9kZSA9
IERpc2FibGVkOwogICAgIH0KIAotICAgIG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9u
LCBrRGlyTmFtZVJlY29yZFJlcGxheSk7CisgICAgbV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9u
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZFJl
cGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKICAgICBERUJVR19MT0co
IkNhY2hlIGxvY2F0aW9uID0gIiBTVFJJTkdfU1BFQ0lGSUVSLCBERUJVR19TVFIobV9yZWNvcmRS
ZXBsYXlDYWNoZUxvY2F0aW9uKSk7CiAKICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAg
ICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBh
dGgoKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9yZWNvcmRGaWxlSGFuZGxl
ID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6OkZpbGVT
eXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgfSBlbHNlIGlmIChpc1JlcGxheWluZygpKSB7Ci0g
ICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVwb3J0UmVj
b3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yUmVhZCk7Ci0gICAgICAgIG1fbG9hZEZpbGVIYW5k
bGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRoKCksIFdlYkNvcmU6Ok9wZW5G
b3JXcml0ZSk7Ci0gICAgICAgIG1fcmVwbGF5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5k
bGUocmVwb3J0UmVwbGF5UGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBt
X3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29yZFBhdGgo
KSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgICAgICBtX2xvYWRGaWxl
SGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRMb2FkUGF0aCgpLCBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3JlcGxheUZpbGVIYW5kbGUgPSBX
ZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlcGxheVBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6T3BlbkZvcldyaXRlKTsKICAgICAgICAgbG9hZFJlc291cmNlcygpOwogICAgIH0KIH0KQEAg
LTM2NSwxNyArMzY1LDE3IEBAIHZvaWQgTWFuYWdlcjo6bG9hZFJlc291cmNlcygpCiAKIFN0cmlu
ZyBNYW5hZ2VyOjpyZXBvcnRMb2FkUGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFt
ZVJlcG9ydExvYWQpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBv
cnRMb2FkKTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydFJlY29yZFBhdGgoKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlD
YWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOworICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNo
ZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOwogfQogCiBTdHJpbmcgTWFuYWdlcjo6
cmVwb3J0UmVwbGF5UGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJl
cGxheSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9ydFJlcGxh
eSk7CiB9CiAKIFN0cmluZyBNYW5hZ2VyOjpyZXF1ZXN0VG9QYXRoKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTQxMSw5ICs0MTEsOSBAQCBTdHJpbmcgTWFuYWdl
cjo6aGFzaFRvUGF0aChjb25zdCBTdHJpbmcmIGhhc2gpCiAgICAgZmlsZU5hbWUuYXBwZW5kKGhh
c2hUYWlsKTsKICAgICBmaWxlTmFtZS5hcHBlbmRMaXRlcmFsKCIuZGF0YSIpOwogCi0gICAgYXV0
byBwYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5
Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZXNvdXJjZXMpOwotICAgIHBhdGggPSBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgaGFzaEhlYWQpOwotICAgIHBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUudG9TdHJpbmcoKSk7
CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZXNvdXJjZXMpOwor
ICAgIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cGF0aCwgaGFzaEhlYWQpOworICAgIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUudG9TdHJpbmcoKSk7CiAKICAgICByZXR1
cm4gcGF0aDsKIH0KQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIE1hbmFnZXI6OmxvZ1BsYXllZEJh
Y2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvbwog
ICAgIG1fcmVwbGF5RmlsZUhhbmRsZS5wcmludGYoIiVzICVzXG4iLCB3YXNDYWNoZU1pc3MgPyAi
bWlzcyIgOiAiaGl0ICIsIERFQlVHX1NUUih1cmwuc3RyaW5nKCkpKTsKIH0KIAotV2ViQ29yZTo6
RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IFdlYkNvcmU6OkZpbGVPcGVuTW9kZSBtb2RlKQorV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2Vy
OjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIC8vIElmIHdlIGNhbiB0cml2aWFsbHkgb3Bl
biB0aGUgZmlsZSwgdGhlbiBkbyB0aGF0IGFuZCByZXR1cm4gdGhlIG5ldyBmaWxlCiAgICAgLy8g
aGFuZGxlLgpAQCAtNDY0LDkgKzQ2NCw5IEBAIFdlYkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6
b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxlCiAgICAg
Ly8gSWYgd2UncmUgb3BlbmluZyB0aGUgZmlsZSBmb3Igd3JpdGluZyAoaW5jbHVkaW5nIGFwcGVu
ZGluZyksIHRoZW4gdHJ5CiAgICAgLy8gYWdhaW4gYWZ0ZXIgbWFraW5nIHN1cmUgYWxsIGludGVy
bWVkaWF0ZSBkaXJlY3RvcmllcyBoYXZlIGJlZW4gY3JlYXRlZC4KIAotICAgIGlmIChtb2RlICE9
IFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHBhcmVudERpciA9
IFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoZmlsZVBhdGgpOwotICAgICAgICBpZiAoIVdlYkNvcmU6
Om1ha2VBbGxEaXJlY3RvcmllcyhwYXJlbnREaXIpKSB7CisgICAgaWYgKG1vZGUgIT0gV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpIHsKKyAgICAgICAgY29uc3QgYXV0byYgcGFyZW50
RGlyID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlUGF0aCk7CisgICAg
ICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhcmVudERp
cikpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5nIHRvIGNy
ZWF0ZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXM6ICIgU1RSSU5HX1NQRUNJRklFUiwgZXJybm8s
IERFQlVHX1NUUihwYXJlbnREaXIpKTsKICAgICAgICAgICAgIHJldHVybiBmaWxlSGFuZGxlOwog
ICAgICAgICB9CkBAIC00NzksNyArNDc5LDcgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBNYW5hZ2Vy
OjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZpbGUKICAg
ICAvLyBDb3VsZCBub3Qgb3BlbiB0aGUgZmlsZS4gTG9nIHRoZSBlcnJvciBhbmQgbGVhdmUsIHJl
dHVybmluZyB0aGUgaW52YWxpZAogICAgIC8vIGZpbGUgaGFuZGxlLgogCi0gICAgaWYgKG1vZGUg
PT0gV2ViQ29yZTo6T3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUgPT0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6T3BlbkZvclJlYWQpCiAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5
aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVSICIgZm9yIHJlYWRpbmciLCBlcnJubywgREVC
VUdfU1RSKGZpbGVQYXRoKSk7CiAgICAgZWxzZQogICAgICAgICBERUJVR19MT0dfRVJST1IoIkVy
cm9yICVkIHRyeWluZyB0byBvcGVuICIgU1RSSU5HX1NQRUNJRklFUiAiIGZvciB3cml0aW5nIiwg
ZXJybm8sIERFQlVHX1NUUihmaWxlUGF0aCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIFdlYkNvcmU6
OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
LCBXZWJDb3JlOjpGaWxlCiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4+IE1h
bmFnZXI6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgYm9vbCBzdWNj
ZXNzID0gZmFsc2U7Ci0gICAgV2ViQ29yZTo6TWFwcGVkRmlsZURhdGEgZmlsZShmaWxlUGF0aCwg
c3VjY2Vzcyk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgZmlsZShm
aWxlUGF0aCwgc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
cHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggZWIyYWNjNC4uNTBlZDVl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fw
dHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBsb2dMb2FkZWRSZXNvdXJjZShSZXNvdXJjZSYpOwogICAgIHZvaWQgbG9nUGxheWVk
QmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgd2FzQ2Fj
aGVNaXNzKTsKIAotICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpGaWxlT3Blbk1vZGUpOworICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUg
b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGUpOwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFN0cmluZyB1cmxJZGVudGlmeWluZ0NvbW1vbkRvbWFp
bihjb25zdCBXZWJDb3JlOjpVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNwcAppbmRl
eCBlNjYwM2U2Li4zYTU1OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0x
MzEsNyArMTMxLDcgQEAgdm9pZCBSZWNvcmRlcjo6cmVjb3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQogdm9pZCBSZWNvcmRlcjo6d3JpdGVFdmVudHMoKQogewog
ICAgIGF1dG8gcGF0aCA9IE1hbmFnZXI6OnNpbmdsZXRvbigpLnJlcXVlc3RUb1BhdGgobV9pbml0
aWFsUmVxdWVzdCk7Ci0gICAgYXV0byBoYW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVu
Q2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7CisgICAgYXV0byBoYW5kbGUg
PSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6OkZpbGVT
eXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdv
cmtDYXB0dXJlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVy
ZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKaW5kZXggZTU3NjBlZC4uNzU3NmMwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJl
UmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0
d29ya0NhcHR1cmVSZXNvdXJjZS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBwcml2
YXRlOgogICAgICAgICBTdHJpbmcgbV9ldmVudEZpbGVQYXRoOwogICAgICAgICBib29sIG1faGF2
ZU1hcHBlZEV2ZW50RmlsZSB7IGZhbHNlIH07Ci0gICAgICAgIFdlYkNvcmU6Ok1hcHBlZEZpbGVE
YXRhIG1fbWFwcGVkRXZlbnRGaWxlOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBw
ZWRGaWxlRGF0YSBtX21hcHBlZEV2ZW50RmlsZTsKICAgICAgICAgc2l6ZV90IG1fb2Zmc2V0IHsg
MCB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmluZGV4IGRmNjRlMzkuLjE3NTY1YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMjg1LDggKzI4NSw4IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5n
JiBmaWxlbmFtCiAKICAgICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgPSBt
X3BlbmRpbmdEb3dubG9hZExvY2F0aW9uOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIFdl
YkNvcmU6OmZpbGVFeGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIFdl
YkNvcmU6OmRlbGV0ZUZpbGUoZmlsZW5hbWUpOworICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24p
KQorICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKIH0K
IAogYm9vbCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0
aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQppbmRleCAwNWM4Njg0Li41Zjk2OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC00NzIs
NyArNDcyLDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3JpdHkgdG9OZXR3b3Jr
TG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICBhdXRvJiBkb3dubG9hZE1hbmFn
ZXIgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIo
KTsKICAgICAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViS2l0OjpEb3du
bG9hZD4oZG93bmxvYWRNYW5hZ2VyLCBkb3dubG9hZElELCBkb3dubG9hZFRhc2ssIF9zZXNzaW9u
LT5zZXNzaW9uSUQoKSwgbmV0d29ya0RhdGFUYXNrLT5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKICAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT50cmFuc2ZlclNhbmRib3hFeHRlbnNpb25Ub0Rvd25sb2Fk
KCpkb3dubG9hZCk7Ci0gICAgICAgIEFTU0VSVChXZWJDb3JlOjpmaWxlRXhpc3RzKG5ldHdvcmtE
YXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSkpOworICAgICAgICBBU1NFUlQoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3du
bG9hZExvY2F0aW9uKCkpKTsKICAgICAgICAgZG93bmxvYWQtPmRpZENyZWF0ZURlc3RpbmF0aW9u
KG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oKSk7CiAgICAgICAgIGRv
d25sb2FkTWFuYWdlci5kYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhkb3dubG9hZElELCBXVEZN
b3ZlKGRvd25sb2FkKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKaW5kZXggYmQ0ZjYyOS4uNGM4YjRhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9j
ZXNzU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdv
cmtQcm9jZXNzU291cC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
OjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzcyhjb25zdCBOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aQogICAgIEFTU0VSVCghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgp
KTsKICAgICBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0
b3J5OwogCi0gICAgU291cE5ldHdvcmtTZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShXZWJDb3Jl
OjpkaXJlY3RvcnlOYW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CisgICAgU291cE5ldHdvcmtT
ZXNzaW9uOjpjbGVhck9sZFNvdXBDYWNoZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlO
YW1lKG1fZGlza0NhY2hlRGlyZWN0b3J5KSk7CiAKICAgICBPcHRpb25TZXQ8TmV0d29ya0NhY2hl
OjpDYWNoZTo6T3B0aW9uPiBjYWNoZU9wdGlvbnMgeyBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpPcHRp
b246OlJlZ2lzdGVyTm90aWZ5IH07CiAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0
d29ya0NhY2hlRWZmaWNhY3lMb2dnaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5N
b2R1bGVVbml4LmNwcAppbmRleCBkYWY5YmFlLi43YWYwOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgvTmV0c2NhcGVQbHVnaW5Nb2R1bGVV
bml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL3VuaXgv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVVbml4LmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
LCBQbHVnaW5Nb2R1bGVJCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHBsdWdpbi5wYXRo
ID0gcGx1Z2luUGF0aDsKLSAgICBwbHVnaW4uaW5mby5maWxlID0gcGF0aEdldEZpbGVOYW1lKHBs
dWdpblBhdGgpOworICAgIHBsdWdpbi5pbmZvLmZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0Rmls
ZU5hbWUocGx1Z2luUGF0aCk7CiAgICAgcGx1Z2luLmluZm8ubmFtZSA9IG1ldGFEYXRhLm5hbWU7
CiAgICAgcGx1Z2luLmluZm8uZGVzYyA9IG1ldGFEYXRhLmRlc2NyaXB0aW9uOwogICAgIHBhcnNl
TUlNRURlc2NyaXB0aW9uKG1ldGFEYXRhLm1pbWVEZXNjcmlwdGlvbiwgcGx1Z2luLmluZm8ubWlt
ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdp
blNlYXJjaFBhdGguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91bml4L1BsdWdp
blNlYXJjaFBhdGguY3BwCmluZGV4IDdlODkyZjAuLjA3NTFmMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5jcHAKQEAg
LTQ4LDggKzQ4LDggQEAgVmVjdG9yPFN0cmluZz4gcGx1Z2luc0RpcmVjdG9yaWVzKCkKICAgICBp
ZiAoIW1vemlsbGFIb21lLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZChtb3ppbGxh
SG9tZSArICIvcGx1Z2lucyIpOwogCi0gICAgcmVzdWx0LmFwcGVuZChob21lRGlyZWN0b3J5UGF0
aCgpICsgIi8ubW96aWxsYS9wbHVnaW5zIik7Ci0gICAgcmVzdWx0LmFwcGVuZChob21lRGlyZWN0
b3J5UGF0aCgpICsgIi8ubmV0c2NhcGUvcGx1Z2lucyIpOworICAgIHJlc3VsdC5hcHBlbmQoRmls
ZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIpOworICAg
IHJlc3VsdC5hcHBlbmQoRmlsZVN5c3RlbTo6aG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm5ldHNj
YXBlL3BsdWdpbnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9icm93c2VyL3BsdWdp
bnMiKTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xvY2FsL2xpYi9tb3ppbGxhL3BsdWdpbnMi
KTsKICAgICByZXN1bHQuYXBwZW5kKCIvdXNyL2xpYi9maXJlZm94L3BsdWdpbnMiKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKaW5kZXggMTUxMzM5MC4uOTYzNmYx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5jcHAKQEAgLTEwNCw3
ICsxMDQsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnN0b3AoKQogICAgIGlmICghbV9pc1J1
bm5pbmcpIAogICAgICAgICByZXR1cm47CiAgICAgbV9zYW1wbGVUaW1lci5zdG9wKCk7Ci0gICAg
Y2xvc2VGaWxlKG1fc2FtcGxlTG9nRmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1f
c2FtcGxlTG9nRmlsZSk7CiAKICAgICBwcmludGYoIlN0b3BwZWQgbWVtb3J5IHNhbXBsZXIgZm9y
IHByb2Nlc3MgJXMgJWRcbiIsIHByb2Nlc3NOYW1lKCkudXRmOCgpLmRhdGEoKSwgZ2V0cGlkKCkp
OwogICAgIC8vIEZsdXNoIHN0ZG91dCBidWZmZXIgc28gcHl0aG9uIHNjcmlwdCBjYW4gYmUgZ3Vh
cmFudGVlZCB0byByZWFkIHVwIHRvIHRoaXMgcG9pbnQuCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9v
bCBXZWJNZW1vcnlTYW1wbGVyOjppc1J1bm5pbmcoKSBjb25zdAogICAgIAogdm9pZCBXZWJNZW1v
cnlTYW1wbGVyOjppbml0aWFsaXplVGVtcExvZ0ZpbGUoKQogewotICAgIG1fc2FtcGxlTG9nRmls
ZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZShwcm9jZXNzTmFtZSgpLCBtX3NhbXBsZUxvZ0ZpbGUp
OworICAgIG1fc2FtcGxlTG9nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZShwcm9jZXNzTmFtZSgpLCBtX3NhbXBsZUxvZ0ZpbGUpOwogICAgIHdyaXRlSGVhZGVycygpOwog
fQogCkBAIC0xMzcsNyArMTM3LDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjppbml0aWFsaXpl
U2FuZGJveGVkTG9nRmlsZShjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUKICAgICBpZiAo
bV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBtX3NhbXBsZUxvZ1NhbmRib3hF
eHRlbnNpb24tPmNvbnN1bWUoKTsKICAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRoID0gc2FtcGxlTG9n
RmlsZVBhdGg7Ci0gICAgbV9zYW1wbGVMb2dGaWxlID0gb3BlbkZpbGUobV9zYW1wbGVMb2dGaWxl
UGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBtX3NhbXBsZUxvZ0ZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShtX3NhbXBsZUxvZ0ZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwog
ICAgIHdyaXRlSGVhZGVycygpOwogfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBXZWJNZW1v
cnlTYW1wbGVyOjp3cml0ZUhlYWRlcnMoKQogICAgIFN0cmluZyBwcm9jZXNzRGV0YWlscyA9IFN0
cmluZzo6Zm9ybWF0KCJQcm9jZXNzOiAlcyBQaWQ6ICVkXG4iLCBwcm9jZXNzTmFtZSgpLnV0Zjgo
KS5kYXRhKCksIGdldHBpZCgpKTsKIAogICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHByb2Nlc3NE
ZXRhaWxzLnV0ZjgoKTsKLSAgICB3cml0ZVRvRmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhTdHJp
bmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX3NhbXBsZUxvZ0ZpbGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCB1dGY4U3RyaW5nLmxlbmd0
aCgpKTsKIH0KIAogdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjpzYW1wbGVUaW1lckZpcmVkKCkKQEAg
LTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYk1lbW9yeVNhbXBsZXI6OnN0b3BUaW1lckZpcmVkKCkK
ICAgICBzdG9wKCk7CiB9CiAKLXZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1l
bW9yeVVzYWdlVG9GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSYpCit2b2lkIFdlYk1lbW9yeVNhbXBs
ZXI6OmFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUmKQogewogICAgIC8vIENvbGxlY3Qgc3RhdGlzdGljcyBmcm9tIGFsbG9jYXRvcnMg
YW5kIGdldCBSU0laRSBtZXRyaWMKICAgICBTdHJpbmdCdWlsZGVyIHN0YXRTdHJpbmc7CkBAIC0x
ODIsNyArMTgyLDcgQEAgdm9pZCBXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRDdXJyZW50TWVtb3J5
VXNhZ2VUb0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlJikKICAgICBzdGF0U3RyaW5nLmFwcGVuZCgn
XG4nKTsKIAogICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IHN0YXRTdHJpbmcudG9TdHJpbmcoKS51
dGY4KCk7Ci0gICAgd3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCB1dGY4U3RyaW5nLmRhdGEo
KSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9z
YW1wbGVMb2dGaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaAppbmRleCAyNzg3YjUx
Li4zMjVlZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1w
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCkBAIC04
Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplVGltZXJzKGRvdWJsZSk7
CiAgICAgdm9pZCBzYW1wbGVUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzdG9wVGltZXJGaXJlZCgp
OwotICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFdlYkNvcmU6OlBsYXRm
b3JtRmlsZUhhbmRsZSYpOworICAgIHZvaWQgYXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxl
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSYpOwogICAgIHZvaWQgc2Vu
ZE1lbW9yeVByZXNzdXJlRXZlbnQoKTsKICAgICAKICAgICBTeXN0ZW1NYWxsb2NTdGF0cyBzYW1w
bGVTeXN0ZW1NYWxsb2MoKSBjb25zdDsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBX
ZWJNZW1vcnlTdGF0aXN0aWNzIHNhbXBsZVdlYktpdCgpIGNvbnN0OwogICAgIFN0cmluZyBwcm9j
ZXNzTmFtZSgpIGNvbnN0OwogICAgIAotICAgIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhhbmRsZSBt
X3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07Cisg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fc2FtcGxlTG9nRmls
ZSB7IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKICAg
ICBTdHJpbmcgbV9zYW1wbGVMb2dGaWxlUGF0aDsKICAgICBXZWJDb3JlOjpUaW1lciBtX3NhbXBs
ZVRpbWVyOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fc3RvcFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAppbmRleCA4
YjM4MzMzLi45Y2E2ZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
UHJvY2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgU3Ry
aW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKIHsKICAgICBDU3RyaW5nIGV4ZWN1dGFibGVQYXRoID0g
Z2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIGRpcmVjdG9yeU5hbWUoc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5kYXRhKCkpKTsKKyAgICAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5kYXRhKCkpKTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAjZW5kaWYKQEAgLTUzLDIwICs1MywyMCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRXZWJL
aXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lKQogI2lmIEVOQUJMRShERVZFTE9QRVJf
TU9ERSkKICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJX
RUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYgKGV4ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3Ry
aW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAg
ICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1Bh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05h
bWUpOworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAg
ICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmlu
ZyBleGVjdXRhYmxlUGF0aCA9IGdldEV4ZWN1dGFibGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRh
YmxlUGF0aC5pc051bGwoKSkgewotICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAg
aWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHBy
b2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1Bh
dGgpKQogICAgICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKFBLR0xJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CisgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFBLR0xJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CiB9
CiAKIFN0cmluZyBleGVjdXRhYmxlUGF0aE9mV2ViUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbQppbmRleCA3MmY1MTIzLi4zZWM1NGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KQEAgLTcxLDE0ICs3
MSwxNCBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgogICAgIH0KIAogICAgIFN0cmluZyBzYW5k
Ym94SW1wb3J0UGF0aCA9ICIvdXNyL2xvY2FsL3NoYXJlL3NhbmRib3gvaW1wb3J0cyI7Ci0gICAg
c2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSU1QT1JUX0RJUiIsIGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94SW1wb3J0UGF0aCkuZGF0YSgpKTsKKyAgICBzYW5kYm94
UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJJTVBPUlRfRElSIiwgRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hJbXBvcnRQYXRoKS5kYXRhKCkpOwogCiAgICAg
c3dpdGNoIChzYW5kYm94UGFyYW1ldGVycy5tb2RlKCkpIHsKICAgICBjYXNlIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGg6CiAgICAg
Y2FzZSBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpVc2VPdmVycmlkZVNhbmRib3hQ
cm9maWxlUGF0aDogewogICAgICAgICBTdHJpbmcgc2FuZGJveFByb2ZpbGVQYXRoID0gc2FuZGJv
eFBhcmFtZXRlcnMubW9kZSgpID09IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVz
ZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGggPyBkZWZhdWx0UHJvZmlsZVBhdGggOiBzYW5kYm94
UGFyYW1ldGVycy5vdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aCgpOwogICAgICAgICBpZiAoIXNh
bmRib3hQcm9maWxlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIENTdHJpbmcgcHJvZmls
ZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKKyAg
ICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKICAgICAgICAgICAgIGNoYXIqIGVycm9y
QnVmOwogICAgICAgICAgICAgaWYgKHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJvZmls
ZVBhdGguZGF0YSgpLCBTQU5EQk9YX05BTUVEX0VYVEVSTkFMLCBzYW5kYm94UGFyYW1ldGVycy5u
YW1lZFBhcmFtZXRlckFycmF5KCksICZlcnJvckJ1ZikpIHsKICAgICAgICAgICAgICAgICBXVEZM
b2dBbHdheXMoIiVzOiBDb3VsZG4ndCBpbml0aWFsaXplIHNhbmRib3ggcHJvZmlsZSBbJXNdLCBl
cnJvciAnJXMnXG4iLCBnZXRwcm9nbmFtZSgpLCBwcm9maWxlUGF0aC5kYXRhKCksIGVycm9yQnVm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGlsZFByb2Nlc3NNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCmluZGV4IDU0
YWU2NTguLjI3NmU2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9DaGls
ZFByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vz
c01hYy5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXpl
U2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmCiAgICAg
c2FuZGJveFBhcmFtZXRlcnMuYWRkUGFyYW1ldGVyKCJfT1NfVkVSU0lPTiIsIG9zVmVyc2lvbi51
dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIFVzZSBwcml2YXRlIHRlbXBvcmFyeSBhbmQgY2FjaGUg
ZGlyZWN0b3JpZXMuCi0gICAgc2V0ZW52KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIiwgZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQYXJhbWV0ZXJzLnVzZXJEaXJlY3RvcnlTdWZm
aXgoKSkuZGF0YSgpLCAxKTsKKyAgICBzZXRlbnYoIkRJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgi
LCBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFBhcmFtZXRlcnMu
dXNlckRpcmVjdG9yeVN1ZmZpeCgpKS5kYXRhKCksIDEpOwogICAgIGNoYXIgdGVtcG9yYXJ5RGly
ZWN0b3J5W1BBVEhfTUFYXTsKICAgICBpZiAoIWNvbmZzdHIoX0NTX0RBUldJTl9VU0VSX1RFTVBf
RElSLCB0ZW1wb3JhcnlEaXJlY3RvcnksIHNpemVvZih0ZW1wb3JhcnlEaXJlY3RvcnkpKSkgewog
ICAgICAgICBXVEZMb2dBbHdheXMoIiVzOiBjb3VsZG4ndCByZXRyaWV2ZSBwcml2YXRlIHRlbXBv
cmFyeSBkaXJlY3RvcnkgcGF0aDogJWRcbiIsIGdldHByb2duYW1lKCksIGVycm5vKTsKQEAgLTE1
NCwxOCArMTU0LDE4IEBAIHZvaWQgQ2hpbGRQcm9jZXNzOjppbml0aWFsaXplU2FuZGJveChjb25z
dCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmCiAgICAgU3RyaW5nIHBhdGgg
PSBTdHJpbmc6OmZyb21VVEY4KHB3ZC5wd19kaXIpOwogICAgIHBhdGguYXBwZW5kKCIvTGlicmFy
eSIpOwogCi0gICAgc2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJS
QVJZX0RJUiIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworICAgIHNh
bmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKIAogICAgIHBh
dGguYXBwZW5kKCIvUHJlZmVyZW5jZXMiKTsKIAotICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBh
dGhQYXJhbWV0ZXIoIkhPTUVfTElCUkFSWV9QUkVGRVJFTkNFU19ESVIiLCBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsKKyAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRo
UGFyYW1ldGVyKCJIT01FX0xJQlJBUllfUFJFRkVSRU5DRVNfRElSIiwgRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAKICAgICBzd2l0Y2ggKHNhbmRi
b3hQYXJhbWV0ZXJzLm1vZGUoKSkgewogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVyczo6VXNlRGVmYXVsdFNhbmRib3hQcm9maWxlUGF0aDoKICAgICBjYXNlIFNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZU92ZXJyaWRlU2FuZGJveFByb2ZpbGVQYXRoOiB7
CiAgICAgICAgIFN0cmluZyBzYW5kYm94UHJvZmlsZVBhdGggPSBzYW5kYm94UGFyYW1ldGVycy5t
b2RlKCkgPT0gU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlRGVmYXVsdFNhbmRi
b3hQcm9maWxlUGF0aCA/IGRlZmF1bHRQcm9maWxlUGF0aCA6IHNhbmRib3hQYXJhbWV0ZXJzLm92
ZXJyaWRlU2FuZGJveFByb2ZpbGVQYXRoKCk7CiAgICAgICAgIGlmICghc2FuZGJveFByb2ZpbGVQ
YXRoLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgQ1N0cmluZyBwcm9maWxlUGF0aCA9IGZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94UHJvZmlsZVBhdGgpOworICAgICAgICAgICAgQ1N0
cmluZyBwcm9maWxlUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihz
YW5kYm94UHJvZmlsZVBhdGgpOwogICAgICAgICAgICAgY2hhciogZXJyb3JCdWY7CiAgICAgICAg
ICAgICBpZiAoc2FuZGJveF9pbml0X3dpdGhfcGFyYW1ldGVycyhwcm9maWxlUGF0aC5kYXRhKCks
IFNBTkRCT1hfTkFNRURfRVhURVJOQUwsIHNhbmRib3hQYXJhbWV0ZXJzLm5hbWVkUGFyYW1ldGVy
QXJyYXkoKSwgJmVycm9yQnVmKSkgewogICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiJXM6
IENvdWxkbid0IGluaXRpYWxpemUgc2FuZGJveCBwcm9maWxlIFslc10sIGVycm9yICclcydcbiIs
IGdldHByb2duYW1lKCksIHByb2ZpbGVQYXRoLmRhdGEoKSwgZXJyb3JCdWYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbQppbmRleCAxYThiOWZk
Li5kOTJjYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4
dGVuc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvU2FuZGJveEV4dGVu
c2lvbk1hYy5tbQpAQCAtMjc3LDcgKzI3Nyw3IEBAIFN0cmluZyByZXNvbHZlQW5kQ3JlYXRlUmVh
ZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiBT
dHJpbmcgcmVzb2x2ZVBhdGhGb3JTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBib3RoIHJlc29sdmVTeW1saW5rc0luUGF0aCgp
IGFuZCAtc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aD8KLSAgICBDU3RyaW5nIGZpbGVTeXN0ZW1Q
YXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5
U3RhbmRhcmRpemluZ1BhdGhdKTsKKyAgICBDU3RyaW5nIGZpbGVTeXN0ZW1QYXRoID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFsoTlNTdHJpbmcgKilwYXRoIHN0cmluZ0J5
U3RhbmRhcmRpemluZ1BhdGhdKTsKICAgICBpZiAoZmlsZVN5c3RlbVBhdGguaXNOdWxsKCkpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIGEgdmFsaWQgZmlsZSBzeXN0ZW0g
cmVwcmVzZW50YXRpb24gZm9yIHRoZSBzdHJpbmcgJyVzJyBvZiBsZW5ndGggJWx1IiwgZmlsZVN5
c3RlbVBhdGguZGF0YSgpLCBmaWxlU3lzdGVtUGF0aC5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVy
biB7IH07CkBAIC0zMzUsNyArMzM1LDcgQEAgU3RyaW5nIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiBwcmVmaXgsIFR5cGUKICAgICBw
YXRoLmFwcGVuZChwcmVmaXgudXRmOCgpLmRhdGEoKSwgcHJlZml4Lmxlbmd0aCgpKTsKICAgICBw
YXRoLmFwcGVuZCgnXDAnKTsKICAgICAKLSAgICBoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9uID0g
U2FuZGJveEV4dGVuc2lvbkltcGw6OmNyZWF0ZShmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aC5kYXRhKCkpLmRhdGEoKSwgdHlwZSk7CisgICAgaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9
IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOwogCiAgICAgaWYgKCFoYW5kbGUu
bV9zYW5kYm94RXh0ZW5zaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGNy
ZWF0ZSBhIHNhbmRib3ggZXh0ZW5zaW9uIGZvciB0ZW1wb3JhcnkgZmlsZSAnJXMnIiwgcGF0aC5k
YXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVj
dXRhYmxlUGF0aFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1
dGFibGVQYXRoV1BFLmNwcAppbmRleCAyMmQ0NWNiLi41ZWQ1NmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC93cGUvUHJvY2Vzc0V4ZWN1dGFibGVQYXRoV1BFLmNwcApAQCAt
MzksNyArMzksNyBAQCBzdGF0aWMgU3RyaW5nIGdldEV4ZWN1dGFibGVQYXRoKCkKIHsKICAgICBD
U3RyaW5nIGV4ZWN1dGFibGVQYXRoID0gZ2V0Q3VycmVudEV4ZWN1dGFibGVQYXRoKCk7CiAgICAg
aWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIGRpcmVjdG9yeU5h
bWUoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5kYXRh
KCkpKTsKKyAgICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoRmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aC5kYXRh
KCkpKTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKQEAgLTQ3LDE5ICs0NywxOSBAQCBzdGF0
aWMgU3RyaW5nIGZpbmRXZWJLaXRQcm9jZXNzKGNvbnN0IGNoYXIqIHByb2Nlc3NOYW1lKQogewog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleGVjRGlyZWN0b3J5ID0gZ19nZXRlbnYoIldFQktJVF9F
WEVDX1BBVEgiKTsKICAgICBpZiAoZXhlY0RpcmVjdG9yeSkgewotICAgICAgICBTdHJpbmcgcHJv
Y2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOwotICAgICAgICBpZiAo
ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCisgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Cisg
ICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKICAgICAgICAg
ICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAKICAgICBzdGF0aWMgU3RyaW5nIGV4ZWN1
dGFibGVQYXRoID0gZ2V0RXhlY3V0YWJsZVBhdGgoKTsKICAgICBpZiAoIWV4ZWN1dGFibGVQYXRo
LmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChleGVjdXRhYmxlUGF0aCwgcHJvY2Vzc05hbWUpOwotICAgICAgICBpZiAoZmls
ZUV4aXN0cyhwcm9jZXNzUGF0aCkpCisgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChleGVjdXRhYmxlUGF0aCwgcHJvY2Vzc05h
bWUpOworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAg
ICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7CiAgICAgfQogCi0gICAgcmV0dXJuIHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKExJ
QkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKExJQkVYRUNESVIpLCBwcm9jZXNzTmFtZSk7CiB9CiAKIFN0cmluZyBleGVjdXRhYmxl
UGF0aE9mV2ViUHJvY2VzcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9j
ZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3Rv
cmFnZVByb2Nlc3MuY3BwCmluZGV4IGVjZDUxNzAuLjdiNDY1NjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MuY3BwCkBAIC0xMzMsNyArMTMzLDcg
QEAgdm9pZCBTdG9yYWdlUHJvY2Vzczo6ZW5zdXJlUGF0aEV4aXN0cyhjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAoIW1ha2VB
bGxEaXJlY3RvcmllcyhwYXRoKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rv
cmllcyhwYXRoKSkKICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gbWFrZSBhbGwgZGlyZWN0
b3JpZXMgZm9yIHBhdGggJyVzJyIsIHBhdGgudXRmOCgpLmRhdGEoKSk7CiB9CiAKQEAgLTI4OCw3
ICsyODgsNyBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjphY2Nlc3NUb1RlbXBvcmFyeUZpbGVDb21w
bGV0ZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLy8gV2UndmUgZWl0aGVyIGhhcmQgbGlua2Vk
IHRoZSB0ZW1wb3JhcnkgYmxvYiBmaWxlIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnksIGNvcGll
ZCBpdCB0aGVyZSwKICAgICAvLyBvciB0aGUgdHJhbnNhY3Rpb24gaXMgYmVpbmcgYWJvcnRlZC4K
ICAgICAvLyBJbiBhbnkgb2YgdGhvc2UgY2FzZXMsIHdlIGNhbiBkZWxldGUgdGhlIHRlbXBvcmFy
eSBibG9iIGZpbGUgbm93LgotICAgIGRlbGV0ZUZpbGUocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShwYXRoKTsKIAogICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IG1fYmxvYlRlbXBv
cmFyeUZpbGVTYW5kYm94RXh0ZW5zaW9ucy50YWtlKHBhdGgpKQogICAgICAgICBleHRlbnNpb24t
PnJldm9rZSgpOwpAQCAtMzAwLDggKzMwMCw4IEBAIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE+IFN0b3JhZ2VQcm9jZXNzOjppbmRleGVkRGF0YWJhc2VPcmlnaW5zKGNvbnN0CiAg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhPiBzZWN1cml0eU9yaWdpbnM7Ci0gICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogbGlzdERp
cmVjdG9yeShwYXRoLCAiKiIpKSB7Ci0gICAgICAgIFN0cmluZyBkYXRhYmFzZUlkZW50aWZpZXIg
PSBwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CisgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRo
IDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRoLCAiKiIpKSB7CisgICAgICAgIFN0cmlu
ZyBkYXRhYmFzZUlkZW50aWZpZXIgPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2lu
UGF0aCk7CiAKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJhc2VJZGVudGlmaWVyKSkKICAgICAg
ICAgICAgIHNlY3VyaXR5T3JpZ2lucy5hcHBlbmQoV1RGTW92ZSgqc2VjdXJpdHlPcmlnaW4pKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxp
c3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVM
aXN0U3RvcmUuY3BwCmluZGV4IDdmNGY4MDQuLjExNmFkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApAQCAt
ODUsNyArODUsNyBAQCBDb250ZW50UnVsZUxpc3RTdG9yZTo6Q29udGVudFJ1bGVMaXN0U3RvcmUo
Y29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCwgYm9vbCBsZQogICAgICwgbV9yZW1vdmVRdWV1
ZShXb3JrUXVldWU6OmNyZWF0ZSgiQ29udGVudFJ1bGVMaXN0U3RvcmUgUmVtb3ZlIFF1ZXVlIikp
CiAgICAgLCBtX2xlZ2FjeUZpbGVuYW1lKGxlZ2FjeUZpbGVuYW1lKQogewotICAgIFdlYkNvcmU6
Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yZVBhdGgpOwogfQogCiBDb250ZW50UnVsZUxpc3RTdG9y
ZTo6fkNvbnRlbnRSdWxlTGlzdFN0b3JlKCkKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgY29u
c3QgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aEZpbHRlcihib29sIGxlZ2FjeUZpbGVuYW1lKQogCiBz
dGF0aWMgU3RyaW5nIGNvbnN0cnVjdGVkUGF0aChjb25zdCBTdHJpbmcmIGJhc2UsIGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgYm9vbCBsZWdhY3lGaWxlbmFtZSkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29uc3RydWN0
ZWRQYXRoUHJlZml4KGxlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6ZW5jb2RlRm9yRmlsZU5hbWUo
aWRlbnRpZmllcikpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGJhc2UsIG1ha2VTdHJpbmcoY29uc3RydWN0ZWRQYXRoUHJlZml4KGxl
Z2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoaWRl
bnRpZmllcikpKTsKIH0KIAogLy8gVGhlIHNpemUgYW5kIG9mZnNldCBvZiB0aGUgZGVuc2VseSBw
YWNrZWQgYnl0ZXMgaW4gdGhlIGZpbGUsIG5vdCBzaXplb2YgYW5kIG9mZnNldG9mLCB3aGljaCB3
b3VsZApAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBib29sIGRlY29kZUNvbnRlbnRSdWxlTGlz
dE1ldGFEYXRhKENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSwgY29uCiAKIHN0YXRp
YyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBwYXRoLCBDb250
ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIERhdGEmIGZpbGVEYXRhKQogewotICAgIGZp
bGVEYXRhID0gbWFwRmlsZShXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpKTsKKyAgICBmaWxlRGF0YSA9IG1hcEZpbGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CiAgICAgaWYgKGZpbGVEYXRhLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE5NCwxMSArMTk0LDExIEBAIHN0
YXRpYyBib29sIG9wZW5BbmRNYXBDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBwYXRoLCBD
b250ZW50UnVsZUxpc3RNZXRhRGF0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29s
IHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiBmaWxlRGF0YSwgV2ViQ29yZTo6UGxhdGZvcm1G
aWxlSGFuZGxlIGZkKQorc3RhdGljIGJvb2wgd3JpdGVEYXRhVG9GaWxlKGNvbnN0IERhdGEmIGZp
bGVEYXRhLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQpCiB7CiAg
ICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBmaWxlRGF0YS5hcHBseShbZmQsICZzdWNjZXNz
XShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgewotICAgICAgICBpZiAoV2ViQ29y
ZTo6d3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFyKilkYXRhLCBzaXplKSA9PSAtMSkgeworICAg
ICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmQsIChjb25zdCBjaGFy
KilkYXRhLCBzaXplKSA9PSAtMSkgewogICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0yMTQsNyArMjE0LDcgQEAgc3Rh
dGljIHN0ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBT
dHJpbmcmIGZpbmFsRmlsZVBhdGgKIAogICAgIGNsYXNzIENvbXBpbGF0aW9uQ2xpZW50IGZpbmFs
IDogcHVibGljIENvbnRlbnRFeHRlbnNpb25Db21waWxhdGlvbkNsaWVudCB7CiAgICAgcHVibGlj
OgotICAgICAgICBDb21waWxhdGlvbkNsaWVudChXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhKQorICAgICAgICBD
b21waWxhdGlvbkNsaWVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZSwgQ29udGVudFJ1bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhKQogICAgICAgICAg
ICAgOiBtX2ZpbGVIYW5kbGUoZmlsZUhhbmRsZSkKICAgICAgICAgICAgICwgbV9tZXRhRGF0YSht
ZXRhRGF0YSkKICAgICAgICAgewpAQCAtMjg3LDggKzI4Nyw4IEBAIHN0YXRpYyBzdGQ6OmVycm9y
X2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZp
bGVQYXRoCiAgICAgICAgICAgICBtX21ldGFEYXRhLmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFp
biA9IG1fY29uZGl0aW9uc0FwcGx5T25seVRvRG9tYWluOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBEYXRhIGhlYWRlciA9IGVuY29kZUNvbnRlbnRSdWxlTGlzdE1ldGFEYXRhKG1fbWV0YURh
dGEpOwotICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBXZWJDb3JlOjpzZWVrRmlsZSht
X2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5u
aW5nKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZShtX2ZpbGVI
YW5kbGUpOworICAgICAgICAgICAgaWYgKCFtX2ZpbGVFcnJvciAmJiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzZWVrRmlsZShtX2ZpbGVIYW5kbGUsIDBsbCwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Rmls
ZVNlZWtPcmlnaW46OlNlZWtGcm9tQmVnaW5uaW5nKSA9PSAtMSkgeworICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICAg
ICAgICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdy
aXRlVG9GaWxlKGhlYWRlcik7CkBAIC0zMDQsMTIgKzMwNCwxMiBAQCBzdGF0aWMgc3RkOjplcnJv
cl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxG
aWxlUGF0aAogICAgICAgICB2b2lkIHdyaXRlVG9GaWxlKGNvbnN0IERhdGEmIGRhdGEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgIXdyaXRlRGF0YVRvRmlsZShk
YXRhLCBtX2ZpbGVIYW5kbGUpKSB7Ci0gICAgICAgICAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxl
KG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKG1fZmlsZUhhbmRsZSk7CiAgICAgICAgICAgICAgICAgbV9maWxlRXJyb3IgPSB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBXZWJDb3JlOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOwogICAgICAgICBDb250ZW50UnVs
ZUxpc3RNZXRhRGF0YSYgbV9tZXRhRGF0YTsKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dpdGhv
dXRDb25kaXRpb25zQnl0ZWNvZGVXcml0dGVuIHsgMCB9OwogICAgICAgICBzaXplX3QgbV9maWx0
ZXJzV2l0aENvbmRpdGlvbkJ5dGVjb2RlV3JpdHRlbiB7IDAgfTsKQEAgLTMyMCwyNyArMzIwLDI3
IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwg
Y29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgIGJvb2wgbV9maWxlRXJyb3IgeyBm
YWxzZSB9OwogICAgIH07CiAKLSAgICBhdXRvIHRlbXBvcmFyeUZpbGVIYW5kbGUgPSBXZWJDb3Jl
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwotICAgIFN0cmluZyB0ZW1wb3JhcnlGaWxlUGF0
aCA9IFdlYkNvcmU6Om9wZW5UZW1wb3JhcnlGaWxlKCJDb250ZW50UnVsZUxpc3QiLCB0ZW1wb3Jh
cnlGaWxlSGFuZGxlKTsKLSAgICBpZiAodGVtcG9yYXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gdGVtcG9yYXJ5RmlsZUhhbmRsZSA9
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgU3Ry
aW5nIHRlbXBvcmFyeUZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIkNvbnRlbnRSdWxlTGlzdCIsIHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgIGlmICh0
ZW1wb3JhcnlGaWxlSGFuZGxlID09IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6
OkNvbXBpbGVGYWlsZWQ7CiAgICAgCiAgICAgY2hhciBpbnZhbGlkSGVhZGVyW0NvbnRlbnRSdWxl
TGlzdEZpbGVIZWFkZXJTaXplXTsKICAgICBtZW1zZXQoaW52YWxpZEhlYWRlciwgMHhGRiwgc2l6
ZW9mKGludmFsaWRIZWFkZXIpKTsKICAgICAvLyBUaGlzIGhlYWRlciB3aWxsIGJlIHJld3JpdHRl
biBpbiBDb21waWxhdGlvbkNsaWVudDo6ZmluYWxpemUuCi0gICAgaWYgKFdlYkNvcmU6OndyaXRl
VG9GaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUsIGludmFsaWRIZWFkZXIsIHNpemVvZihpbnZhbGlk
SGVhZGVyKSkgPT0gLTEpIHsKLSAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZp
bGVIYW5kbGUpOworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSh0ZW1w
b3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlkSGVhZGVyLCBzaXplb2YoaW52YWxpZEhlYWRlcikpID09
IC0xKSB7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlG
aWxlSGFuZGxlKTsKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6
Q29tcGlsZUZhaWxlZDsKICAgICB9CiAKICAgICBDb21waWxhdGlvbkNsaWVudCBjb21waWxhdGlv
bkNsaWVudCh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBtZXRhRGF0YSk7CiAgICAgCiAgICAgaWYgKGF1
dG8gY29tcGlsZXJFcnJvciA9IGNvbXBpbGVSdWxlTGlzdChjb21waWxhdGlvbkNsaWVudCwgV1RG
TW92ZShqc29uKSkpIHsKLSAgICAgICAgV2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVI
YW5kbGUpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5
RmlsZUhhbmRsZSk7CiAgICAgICAgIHJldHVybiBjb21waWxlckVycm9yOwogICAgIH0KICAgICBp
ZiAoY29tcGlsYXRpb25DbGllbnQuaGFkRXJyb3JXaGlsZVdyaXRpbmdUb0ZpbGUoKSkgewotICAg
ICAgICBXZWJDb3JlOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CisgICAgICAgIFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKICAgICAg
ICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKICAg
ICB9CiAgICAgCkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBjb21w
aWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBhdGgKICAg
ICBpZiAobWFwcGVkRGF0YS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKIAotICAgIGlmICghV2ViQ29yZTo6bW92ZUZp
bGUodGVtcG9yYXJ5RmlsZVBhdGgsIGZpbmFsRmlsZVBhdGgpKQorICAgIGlmICghV2ViQ29yZTo6
RmlsZVN5c3RlbTo6bW92ZUZpbGUodGVtcG9yYXJ5RmlsZVBhdGgsIGZpbmFsRmlsZVBhdGgpKQog
ICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVycm9yOjpDb21waWxlRmFpbGVk
OwogCiAgICAgcmV0dXJuIHsgfTsKQEAgLTQxMiwxMiArNDEyLDEyIEBAIHZvaWQgQ29udGVudFJ1
bGVMaXN0U3RvcmU6OmdldEF2YWlsYWJsZUNvbnRlbnRSdWxlTGlzdElkZW50aWZpZXJzKEZ1bmN0
aW9uPHZvaWQoCiB7CiAgICAgbV9yZWFkUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIHN0b3JlUGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBs
ZWdhY3lGaWxlbmFtZSA9IG1fbGVnYWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAKLSAgICAgICAgVmVjdG9yPFN0
cmluZz4gZnVsbFBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNvbnN0
cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lGaWxlbmFtZSkpOworICAgICAgICBWZWN0b3I8U3RyaW5n
PiBmdWxsUGF0aHMgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHN0b3JlUGF0
aCwgY29uc3RydWN0ZWRQYXRoRmlsdGVyKGxlZ2FjeUZpbGVuYW1lKSk7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmc+IGlkZW50aWZpZXJzOwogICAgICAgICBpZGVudGlmaWVycy5yZXNlcnZlSW5pdGlh
bENhcGFjaXR5KGZ1bGxQYXRocy5zaXplKCkpOwogICAgICAgICBjb25zdCBhdXRvIHByZWZpeExl
bmd0aCA9IGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lGaWxlbmFtZSkubGVuZ3RoKCk7CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGZ1bGxQYXRocykKLSAgICAgICAgICAgIGlk
ZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpkZWNvZGVGcm9tRmlsZW5hbWUocGF0
aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSArIHByZWZpeExlbmd0aCkpKTsK
KyAgICAgICAgICAgIGlkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpkZWNvZGVGcm9tRmlsZW5hbWUocGF0aC5zdWJzdHJpbmcocGF0aC5yZXZlcnNlRmluZCgn
LycpICsgMSArIHByZWZpeExlbmd0aCkpKTsKIAogICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBpZGVudGlmaWVycyA9IFdURk1v
dmUoaWRlbnRpZmllcnMpXSgpIG11dGFibGUgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShpZGVudGlmaWVycykpOwpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgQ29udGVu
dFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYg
aWRlbnRpZmllciwKICAgICBtX3JlbW92ZVF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyID0gaWRlbnRpZmllci5pc29sYXRlZENvcHkoKSwg
c3RvcmVQYXRoID0gbV9zdG9yZVBhdGguaXNvbGF0ZWRDb3B5KCksIGxlZ2FjeUZpbGVuYW1lID0g
bV9sZWdhY3lGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBwYXRoID0gY29uc3RydWN0ZWRQYXRo
KHN0b3JlUGF0aCwgaWRlbnRpZmllciwgbGVnYWN5RmlsZW5hbWUpOwogCi0gICAgICAgIGlmICgh
V2ViQ29yZTo6ZGVsZXRlRmlsZShwYXRoKSkgeworICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUocGF0aCkpIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihFcnJvcjo6UmVtb3ZlRmFpbGVkKTsKICAgICAgICAgICAgIH0p
OwpAQCAtNDY5LDE5ICs0NjksMTkgQEAgdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLAogCiB2b2lkIENv
bnRlbnRSdWxlTGlzdFN0b3JlOjpzeW5jaHJvbm91c1JlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMo
KQogewotICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IFdlYkNvcmU6Omxpc3REaXJlY3Rvcnko
bV9zdG9yZVBhdGgsICIqIikpCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUocGF0aCk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShtX3N0b3JlUGF0aCwgIioiKSkKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShwYXRoKTsKIH0KIAogdm9pZCBDb250ZW50UnVsZUxpc3RTdG9yZTo6aW52YWxpZGF0
ZUNvbnRlbnRSdWxlTGlzdFZlcnNpb24oY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIpCiB7
Ci0gICAgYXV0byBmaWxlID0gV2ViQ29yZTo6b3BlbkZpbGUoY29uc3RydWN0ZWRQYXRoKG1fc3Rv
cmVQYXRoLCBpZGVudGlmaWVyLCBtX2xlZ2FjeUZpbGVuYW1lKSwgV2ViQ29yZTo6T3BlbkZvcldy
aXRlKTsKLSAgICBpZiAoZmlsZSA9PSBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KQorICAgIGF1dG8gZmlsZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5GaWxlKGNvbnN0cnVj
dGVkUGF0aChtX3N0b3JlUGF0aCwgaWRlbnRpZmllciwgbV9sZWdhY3lGaWxlbmFtZSksIFdlYkNv
cmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhIGludmFsaWRIZWFkZXIgPSB7MCwgMCwgMCwgMCwg
MCwgMH07Ci0gICAgYXV0byBieXRlc1dyaXR0ZW4gPSBXZWJDb3JlOjp3cml0ZVRvRmlsZShmaWxl
LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52YWxpZEhlYWRlciksIHNpemVvZihp
bnZhbGlkSGVhZGVyKSk7CisgICAgYXV0byBieXRlc1dyaXR0ZW4gPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmaW52
YWxpZEhlYWRlciksIHNpemVvZihpbnZhbGlkSGVhZGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChi
eXRlc1dyaXR0ZW4sIGJ5dGVzV3JpdHRlbiA9PSBzaXplb2YoaW52YWxpZEhlYWRlcikpOwotICAg
IFdlYkNvcmU6OmNsb3NlRmlsZShmaWxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CiB9CiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmdldENvbnRlbnRS
dWxlTGlzdFNvdXJjZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248dm9p
ZChXVEY6OlN0cmluZyk+IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CmluZGV4IDcwY2EzNmIuLjQ2NmMwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTQ1
LDEyICs0NSwxMiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKQogLy8gV2h5IGlzIG9ubHkgdGhpcyBkaXJlY3RvcnkgbmFtZXNwYWNl
ZCB0byBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24/CiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgcmV0dXJuIGNhY2hlRGlyZWN0
b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3By
Z25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKKyAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZ19nZXRfcHJnbmFtZSgpKSwgIldlYktpdENhY2hlIikpOwogfQogCiBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdENhY2hlU3RvcmFnZURpcmVjdG9yeSgpCiB7Ci0gICAg
cmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3JhZ2UiKSk7CisgICAgcmV0dXJu
IGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJDYWNoZVN0b3Jh
Z2UiKSk7CiB9CiAKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0
YWJhc2VEaXJlY3RvcnkoKQpAQCAtODAsMTIgKzgwLDEyIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiAKIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNl
cl9jYWNoZV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6d2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihnX2dldF91c2VyX2RhdGFfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZ19nZXRfdXNlcl9kYXRh
X2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CiB9CiAKIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
Q29uZmlndXJhdGlvbiBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJh
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcAppbmRleCAyMjA4ZWFlLi5jMzc3NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBi
b29sIEljb25EYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKICAgICBtX2RhdGFiYXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5Lmlzb2xh
dGVkQ29weSgpOwogCiAgICAgLy8gRm9ybXVsYXRlIHRoZSBmdWxsIHBhdGggZm9yIHRoZSBkYXRh
YmFzZSBmaWxlCi0gICAgbV9jb21wbGV0ZURhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX2RhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFtZSk7CisgICAgbV9jb21wbGV0ZURh
dGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2RhdGFi
YXNlRGlyZWN0b3J5LCBmaWxlbmFtZSk7CiAKICAgICAvLyBMb2NrIGhlcmUgYXMgd2VsbCBhcyBm
aXJzdCB0aGluZyBpbiB0aGUgdGhyZWFkIHNvIHRoZSB0aHJlYWQgZG9lc24ndCBhY3R1YWxseSBj
b21tZW5jZSB1bnRpbCB0aGUgY3JlYXRlVGhyZWFkKCkgY2FsbAogICAgIC8vIGNvbXBsZXRlcyBh
bmQgbV9zeW5jVGhyZWFkUnVubmluZyBpcyBwcm9wZXJseSBzZXQKQEAgLTg2OSwxMyArODY5LDEz
IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICNlbmRpZgog
CiAgICAgLy8gTmVlZCB0byBjcmVhdGUgdGhlIGRhdGFiYXNlIHBhdGggaWYgaXQgZG9lc24ndCBh
bHJlYWR5IGV4aXN0Ci0gICAgbWFrZUFsbERpcmVjdG9yaWVzKG1fZGF0YWJhc2VEaXJlY3Rvcnkp
OworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhtX2RhdGFiYXNlRGlyZWN0b3J5
KTsKIAogICAgIC8vIEV4aXN0ZW5jZSBvZiBhIGpvdXJuYWwgZmlsZSBpcyBldmlkZW5jZSBvZiBh
IHByZXZpb3VzIGNyYXNoL2ZvcmNlIHF1aXQgYW5kIGF1dG9tYXRpY2FsbHkgcXVhbGlmaWVzCiAg
ICAgLy8gdXMgdG8gZG8gYW4gaW50ZWdyaXR5IGNoZWNrCiAgICAgU3RyaW5nIGpvdXJuYWxGaWxl
bmFtZSA9IG1fY29tcGxldGVEYXRhYmFzZVBhdGggKyAiLWpvdXJuYWwiOwogICAgIGlmICghY2hl
Y2tJbnRlZ3JpdHlPbk9wZW4pCi0gICAgICAgIGNoZWNrSW50ZWdyaXR5T25PcGVuID0gZmlsZUV4
aXN0cyhqb3VybmFsRmlsZW5hbWUpOworICAgICAgICBjaGVja0ludGVncml0eU9uT3BlbiA9IEZp
bGVTeXN0ZW06OmZpbGVFeGlzdHMoam91cm5hbEZpbGVuYW1lKTsKIAogICAgIHsKICAgICAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9zeW5jTG9jayk7CkBAIC0xMDA4LDggKzEwMDgsOCBAQCB2b2lk
IEljb25EYXRhYmFzZTo6cGVyZm9ybU9wZW5Jbml0aWFsaXphdGlvbigpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9zeW5jTG9jayk7CiAgICAgICAg
ICAgICAgICAgLy8gU2hvdWxkJ3ZlIGJlZW4gY29uc3VtZWQgYnkgU1FMaXRlLCBkZWxldGUganVz
dCB0byBtYWtlIHN1cmUgd2UgZG9uJ3Qgc2VlIGl0IGFnYWluIGluIHRoZSBmdXR1cmU7Ci0gICAg
ICAgICAgICAgICAgZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFs
Iik7Ci0gICAgICAgICAgICAgICAgZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoKTsK
KyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fY29tcGxldGVEYXRhYmFz
ZVBhdGggKyAiLWpvdXJuYWwiKTsKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKG1fY29tcGxldGVEYXRhYmFzZVBhdGgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAvLyBSZW9wZW4gdGhlIHdyaXRlIGRhdGFiYXNlLCBjcmVhdGluZyBpdCBmcm9tIHNjcmF0Y2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
YXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDZlMjg0ZjguLjM3MjQ0M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFi
YXNlLmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgd2Via2l0RmF2aWNvbkRhdGFiYXNlT3Bl
bihXZWJLaXRGYXZpY29uRGF0YWJhc2UqIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHBhCiAgICAg
cHJpdi0+aWNvbkRhdGFiYXNlLT5zZXRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPmljb25EYXRh
YmFzZS0+c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChXZWJQcmVmZXJlbmNlczo6YW55UGFnZXNB
cmVVc2luZ1ByaXZhdGVCcm93c2luZygpKTsKIAotICAgIGlmICghcHJpdi0+aWNvbkRhdGFiYXNl
LT5vcGVuKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUocGF0aCksIFdlYkNvcmU6OnBhdGhHZXRGaWxl
TmFtZShwYXRoKSkpIHsKKyAgICBpZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKHBhdGgpLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CiAgICAgICAgIHByaXYtPmljb25EYXRhYmFzZSA9IG51
bGxwdHI7CiAgICAgICAgIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRG
aWxlQ2hvb3NlclJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAppbmRleCBmNjAxMmM4Li43ODgwNDk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3Nl
clJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKQEAgLTM2MSw3ICszNjEsNyBAQCBjb25zdCBnY2hhciog
Y29uc3QqIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0ZWRfZmlsZXMoV2Vi
S2l0RmlsZUNobwogICAgICAgICBBUEk6OlN0cmluZyogd2ViRmlsZU5hbWUgPSBzdGF0aWNfY2Fz
dDxBUEk6OlN0cmluZyo+KHNlbGVjdGVkRmlsZU5hbWVzLT5hdChpKSk7CiAgICAgICAgIGlmICh3
ZWJGaWxlTmFtZS0+c3RyaW5nVmlldygpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdl
YkZpbGVOYW1lLT5zdHJpbmcoKSk7CisgICAgICAgIENTdHJpbmcgZmlsZW5hbWUgPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2ViRmlsZU5hbWUtPnN0cmluZygpKTsKICAg
ICAgICAgZ19wdHJfYXJyYXlfYWRkKHJlcXVlc3QtPnByaXYtPnNlbGVjdGVkRmlsZXMuZ2V0KCks
IGdfc3RyZHVwKGZpbGVuYW1lLmRhdGEoKSkpOwogICAgIH0KICAgICBnX3B0cl9hcnJheV9hZGQo
cmVxdWVzdC0+cHJpdi0+c2VsZWN0ZWRGaWxlcy5nZXQoKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDQy
NjBlYWIuLmZkMTc4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFdlYkNvbnRleHQuY3BwCkBAIC0zMjEsMjEgKzMyMSwyMSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRXZWJDb250ZXh0Q29uc3RydWN0ZWQoR09iamVjdCogb2JqZWN0KQogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gYnVuZGxlRmlsZW5hbWUoZ19idWlsZF9maWxlbmFtZShpbmplY3RlZEJ1
bmRsZURpcmVjdG9yeSgpLCBJTkpFQ1RFRF9CVU5ETEVfRklMRU5BTUUsIG51bGxwdHIpKTsKIAog
ICAgIEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247Ci0gICAgY29u
ZmlndXJhdGlvbi5zZXRJbmplY3RlZEJ1bmRsZVBhdGgoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihidW5kbGVGaWxlbmFtZS5nZXQoKSkpOworICAgIGNvbmZpZ3Vy
YXRpb24uc2V0SW5qZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKICAgICBj
b25maWd1cmF0aW9uLnNldE1heGltdW1Qcm9jZXNzQ291bnQoMSk7CiAgICAgY29uZmlndXJhdGlv
bi5zZXREaXNrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlkYXRpb25FbmFibGVkKHRydWUpOwogCiAgICAg
V2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IFdFQktJVF9XRUJfQ09OVEVYVChvYmplY3Qp
OwogICAgIFdlYktpdFdlYkNvbnRleHRQcml2YXRlKiBwcml2ID0gd2ViQ29udGV4dC0+cHJpdjsK
ICAgICBpZiAocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyICYmICF3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfaXNfZXBoZW1lcmFsKHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpIHsK
LSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29yZTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdl
ci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXREaXNrQ2FjaGVEaXJlY3Rvcnko
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNr
X2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSwgbmV0d29y
a0NhY2hlU3ViZGlyZWN0b3J5KSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9j
YWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAgICAg
ICBjb25maWd1cmF0aW9uLnNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OnN0
cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQo
KSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeShX
ZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfcmVzb3VyY2VfbG9hZF9zdGF0aXN0aWNz
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7CisgICAgICAgIGNv
bmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURh
dGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSkpOworICAgICAgICBj
b25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHByaXYt
PndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRJ
bmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
aW5kZXhlZGRiX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Cisg
ICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFN
YW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3Jlc291cmNl
X2xvYWRfc3RhdGlzdGljc19kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgp
KSkpOwogICAgIH0gZWxzZSBpZiAoIXByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5pc051bGwo
KSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5zZXRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2ViQ29y
ZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkuZGF0YSgpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkpOwogCiAgICAgcHJp
di0+cHJvY2Vzc1Bvb2wgPSBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlKGNvbmZpZ3VyYXRpb24pOwog
CkBAIC05MTAsNyArOTEwLDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Zhdmljb25f
ZGF0YWJhc2VfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQKICAgICBXZWJLaXRX
ZWJDb250ZXh0UHJpdmF0ZSogcHJpdiA9IGNvbnRleHQtPnByaXY7CiAgICAgZW5zdXJlRmF2aWNv
bkRhdGFiYXNlKGNvbnRleHQpOwogCi0gICAgU3RyaW5nIGRpcmVjdG9yeVBhdGggPSBXZWJDb3Jl
OjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIFN0cmluZyBk
aXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAvLyBVc2UgZGVmYXVsdCBpZiBudWxscHRyIGlzIHBh
c3NlZCBhcyBwYXJhbWV0ZXIuCiAgICAgaWYgKGRpcmVjdG9yeVBhdGguaXNFbXB0eSgpKSB7CiAj
aWYgUExBVEZPUk0oR1RLKQpAQCAtOTE5LDcgKzkxOSw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250
ZXh0CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvcnREaXJlY3RvcnkgPSAid3BlIjsKICNlbmRpZgog
ICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBkYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVu
YW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksIHBvcnREaXJlY3RvcnksICJpY29uZGF0YWJhc2Ui
LCBudWxscHRyKSk7Ci0gICAgICAgIGRpcmVjdG9yeVBhdGggPSBXZWJDb3JlOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICAg
ICAgZGlyZWN0b3J5UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogICAgIH0KICAgICBw
cml2LT5mYXZpY29uRGF0YWJhc2VEaXJlY3RvcnkgPSBkaXJlY3RvcnlQYXRoLnV0ZjgoKTsKIApA
QCAtOTI4LDcgKzkyOCw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2Rh
dGFiYXNlX2RpcmVjdG9yeShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgICAgICJXZWJw
YWdlSWNvbnMuZGIiLCBudWxscHRyKSk7CiAKICAgICAvLyBTZXR0aW5nIHRoZSBwYXRoIHdpbGwg
Y2F1c2UgdGhlIGljb24gZGF0YWJhc2UgdG8gYmUgb3BlbmVkLgotICAgIHdlYmtpdEZhdmljb25E
YXRhYmFzZU9wZW4ocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCBXZWJDb3JlOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZhdmljb25EYXRhYmFzZVBhdGguZ2V0KCkpKTsK
KyAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYtPmZhdmljb25EYXRhYmFzZS5nZXQo
KSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CiAKICAgICBpZiAod2Via2l0X3dlYl9jb250
ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0KSkKICAgICAgICAgd2Via2l0RmF2aWNvbkRhdGFiYXNl
U2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIHRy
dWUpOwpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgdm9pZCB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2Fk
ZGl0aW9uYWxfcGx1Z2luc19kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGUKICAgICBn
X3JldHVybl9pZl9mYWlsKGRpcmVjdG9yeSk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRpb25hbFBsdWdp
bnNEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihk
aXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+c2V0QWRkaXRpb25h
bFBsdWdpbnNEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpKTsKICNlbmRpZgogfQogCkBAIC0xMzU4LDcgKzEz
NTgsNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZGlza19jYWNoZV9kaXJlY3Rvcnko
V2ViS2l0V2ViQ29udGV4dCogY29udGV4dCwgY29ucwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKGRpcmVj
dG9yeSk7CiAKLSAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9vbC0+Y29uZmlndXJhdGlvbigp
LnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBu
ZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICBjb250ZXh0LT5wcml2LT5wcm9jZXNzUG9v
bC0+Y29uZmlndXJhdGlvbigpLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpLCBuZXR3b3JrQ2FjaGVTdWJk
aXJlY3RvcnkpKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAppbmRleCBjZTcy
OTRkLi5mYjE5OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKQEAgLTM5MCwxNSArMzkw
LDE1IEBAIEFQSTo6V2Vic2l0ZURhdGFTdG9yZSYgd2Via2l0V2Vic2l0ZURhdGFNYW5hZ2VyR2V0
RGF0YVN0b3JlKFdlYktpdFdlYnNpdGVEYXRhTWFuCiAgICAgaWYgKCFwcml2LT53ZWJzaXRlRGF0
YVN0b3JlKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbjsKICAgICAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSAh
cHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
Z2V0KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CiAg
ICAgICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gIXByaXYtPmRpc2tD
YWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmRp
c2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSk7CisgICAg
ICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYt
PmRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9yeSk7CiAg
ICAgICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9ICFwcml2LT5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+YXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdG
cm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkuZ2V0KCkpOwogICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
ID0gIXByaXYtPndlYlNRTERpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT53ZWJTUUxEaXJlY3RvcnkuZ2V0KCkp
OworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsKICAgICAgICAgY29u
ZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gIXByaXYtPnJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpIDogV2ViQ29y
ZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKKyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSA6IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICAgICAgcHJpdi0+d2Vic2l0ZURh
dGFTdG9yZSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6Y3JlYXRlTGVnYWN5KFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOwogICAgIH0KQEAgLTU2MSw3ICs1NjEsNyBAQCBjb25zdCBnY2hhciogd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShXZWJLaXRX
ZWJzaXRlRAogCiAgICAgaWYgKCFwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkpIHsKICAgICAgICAg
Ly8gVGhlIGRlZmF1bHQgZGlyZWN0b3J5IGFscmVhZHkgaGFzIHRoZSBzdWJkaXJlY3RvcnkuCi0g
ICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVjdG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpk
aXJlY3RvcnlOYW1lKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURp
cmVjdG9yeSgpKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHByaXYtPmRpc2tDYWNoZURpcmVj
dG9yeS5yZXNldChnX3N0cmR1cChXZWJDb3JlOjpGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgfQogICAgIHJldHVybiBwcml2LT5kaXNrQ2FjaGVEaXJlY3Rvcnku
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IGJmMTliMGEuLmE1ZTg1OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC02NzksNyArNjc5LDcgQEAgdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6d2lsbENsb3NlUGFnZShjb25zdCBXZWJQYWdlUHJveHkmIHBhZ2UpCiAKIHN0
YXRpYyBib29sIGZpbGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYWxsb3dlZE1JTUVUeXBlcywgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhbGxvd2VkRmlsZUV4dGVuc2lvbnMpCiB7Ci0gICAgaWYgKCFXZWJDb3JlOjpm
aWxlRXhpc3RzKGZpbGVuYW1lKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoYWxsb3dl
ZE1JTUVUeXBlcy5pc0VtcHR5KCkgJiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zLmlzRW1wdHkoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IGZlZWYwY2UuLjRhMWUzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMzc2LDcgKzM3Niw3
IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0SW5kZXhlZERC
RGF0YWJhc2VEaXJlY3RvcnkoKQogICAgIC8vIEN1cnJlbnRseSwgdGhlIHRvcCBsZXZlbCBvZiB0
aGF0IGRpcmVjdG9yeSBjb250YWlucyBlbnRpdGllcyByZWxhdGVkIHRvIFdlYlNRTCBkYXRhYmFz
ZXMuCiAgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGlzLCBhbmQgbW92ZSBXZWJTUUwgaW50byBhIHN1
YmRpcmVjdG9yeSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDgw
NykKICAgICAvLyBJbiB0aGUgbWVhbnRpbWUsIGFuIGVudGl0eSBuYW1lIHByZWZpeGVkIHdpdGgg
dGhyZWUgdW5kZXJzY29yZXMgd2lsbCBub3QgY29uZmxpY3Qgd2l0aCBhbnkgV2ViU1FMIGVudGl0
aWVzLgotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVnYWN5UGxhdGZvcm1E
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGVnYWN5UGxhdGZvcm1E
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSwgIl9fX0luZGV4ZWREQiIpOwogfQogCiBT
dHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IGEyZTQ4MmYuLmQ3NmUxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC0zOTI3LDcgKzM5MjcsNyBAQCBOU0FycmF5ICpXZWJWaWV3
SW1wbDo6bmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbihOU1VSTCAqZHJv
cERlc3RpbgogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgaW1hZ2UgZmlsZSB2
aWEgLVtOU0ZpbGVXcmFwcGVyIHdyaXRlVG9VUkw6b3B0aW9uczpvcmlnaW5hbENvbnRlbnRzVVJM
OmVycm9yOl0iKTsKIAogICAgIGlmICghbV9wcm9taXNlZFVSTC5pc0VtcHR5KCkpCi0gICAgICAg
IFdlYkNvcmU6OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwgbV9wcm9taXNlZFVSTCk7Cisg
ICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKFN0cmluZyhwYXRoKSwg
bV9wcm9taXNlZFVSTCk7CiAgICAgCiAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dDpbcGF0aCBsYXN0UGF0aENvbXBvbmVudF1dOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHAK
aW5kZXggNWFjNmZjZi4uOTNiYjgxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvZ2xpYi9Qcm9jZXNzTGF1bmNoZXJHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nlc3NMYXVuY2hlckdMaWIuY3BwCkBAIC03
OSw3ICs3OSw3IEBAIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9jZXNzKCkKICAgICAg
ICAgICAgIGV4ZWN1dGFibGVQYXRoLmFwcGVuZCgnMicpOwogI2VuZGlmCiAgICAgICAgIHBsdWdp
blBhdGggPSBtX2xhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuZ2V0KCJwbHVn
aW4tcGF0aCIpOwotICAgICAgICByZWFsUGx1Z2luUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwbHVnaW5QYXRoKTsKKyAgICAgICAgcmVhbFBsdWdpblBhdGggPSBGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgpAQCAt
OTMsNyArOTMsNyBAQCB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOworICAgIHJlYWxFeGVjdXRhYmxlUGF0aCA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihleGVjdXRhYmxlUGF0aCk7CiAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gd2Via2l0U29ja2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBz
b2NrZXRQYWlyLmNsaWVudCkpOwogICAgIHVuc2lnbmVkIG5hcmdzID0gNDsgLy8gc2l6ZSBvZiB0
aGUgYXJndiBhcnJheSBmb3IgZ19zcGF3bl9hc3luYygpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IDFi
ZDY1MDcuLmI5YjBjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdp
bnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIFBsdWdp
bkluZm9DYWNoZTo6UGx1Z2luSW5mb0NhY2hlKCkKICAgICBtX3NhdmVUb0ZpbGVJZGxlLnNldFBy
aW9yaXR5KEdfUFJJT1JJVFlfREVGQVVMVF9JRExFKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
Y2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAi
d2Via2l0Z3RrIiwgbnVsbHB0cikpOwotICAgIGlmIChXZWJDb3JlOjptYWtlQWxsRGlyZWN0b3Jp
ZXMoY2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CisgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhjYWNoZURpcmVjdG9yeS5nZXQoKSkpIHsKICAgICAgICAgLy8g
RGVsZXRlIG9sZCBjYWNoZSBmaWxlLgogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG9sZENhY2hl
UGF0aChnX2J1aWxkX2ZpbGVuYW1lKGNhY2hlRGlyZWN0b3J5LmdldCgpLCAicGx1Z2lucyIsIG51
bGxwdHIpKTsKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShXZWJDb3JlOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOworICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ob2xkQ2FjaGVQYXRoLmdldCgpKSk7CiAKICAg
ICAgICAgbV9jYWNoZVBhdGgucmVzZXQoZ19idWlsZF9maWxlbmFtZShjYWNoZURpcmVjdG9yeS5n
ZXQoKSwgY2FjaGVGaWxlbmFtZUZvckN1cnJlbnREaXNwbGF5KCksIG51bGxwdHIpKTsKICAgICAg
ICAgZ19rZXlfZmlsZV9sb2FkX2Zyb21fZmlsZShtX2NhY2hlRmlsZS5nZXQoKSwgbV9jYWNoZVBh
dGguZ2V0KCksIEdfS0VZX0ZJTEVfTk9ORSwgbnVsbHB0cik7CkBAIC0xMTMsMTQgKzExMywxNCBA
QCBib29sIFBsdWdpbkluZm9DYWNoZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIFBsdWdpbk1vZHVsZUluZm8mCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHRp
bWVfdCBsYXN0TW9kaWZpZWQ7Ci0gICAgaWYgKCFXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQorICAgIGlmICghV2ViQ29yZTo6RmlsZVN5
c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFzdE1vZGlmaWVkKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHRpbWVfdCBjYWNoZWRMYXN0TW9kaWZpZWQgPSBz
dGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5X2ZpbGVfZ2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5nZXQo
KSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibXRpbWUiLCBudWxscHRyKSk7CiAgICAgaWYgKGxhc3RN
b2RpZmllZCAhPSBjYWNoZWRMYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKLSAgICBwbHVnaW4uaW5mby5maWxlID0gV2Vi
Q29yZTo6cGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOworICAgIHBsdWdpbi5pbmZvLmZpbGUg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUocGx1Z2luUGF0aCk7CiAKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IHN0cmluZ1ZhbHVlKGdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhtX2Nh
Y2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibmFtZSIsIG51bGxwdHIpKTsKICAg
ICBwbHVnaW4uaW5mby5uYW1lID0gU3RyaW5nOjpmcm9tVVRGOChzdHJpbmdWYWx1ZS5nZXQoKSk7
CkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8o
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogdm9pZCBQbHVnaW5J
bmZvQ2FjaGU6OnVwZGF0ZVBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25z
dCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7CiAgICAgdGltZV90IGxhc3RNb2RpZmllZDsK
LSAgICBpZiAoIVdlYkNvcmU6OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxh
c3RNb2RpZmllZCkpCisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBDU3RyaW5nIHBsdWdpbkdyb3VwID0gcGx1Z2luUGF0aC51dGY4KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5p
eC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0
b3JlVW5peC5jcHAKaW5kZXggM2I3ZWYzOC4uMDg0ZjZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4
LmNwcApAQCAtNTYsMTAgKzU2LDEwIEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkluZm9TdG9yZTo6
cGx1Z2luUGF0aHNJbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKIHsKICAgICBW
ZWN0b3I8U3RyaW5nPiByZXN1bHQ7CiAgICAgY2hhciBub3JtYWxpemVkUGF0aFtQQVRIX01BWF07
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogbGlzdERpcmVjdG9yeShkaXJlY3RvcnksIFN0
cmluZygiKi5zbyIpKSkgewotICAgICAgICBDU3RyaW5nIGZpbGVuYW1lID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGgpOworICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IEZpbGVTeXN0
ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBTdHJpbmcoIiouc28iKSkpIHsKKyAgICAgICAg
Q1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKICAgICAgICAgaWYgKHJlYWxwYXRoKGZpbGVuYW1lLmRhdGEoKSwgbm9ybWFsaXplZFBh
dGgpKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKEZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obm9ybWFsaXplZFBh
dGgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODAsNyArODAsNyBAQCBib29s
IFBsdWdpbkluZm9TdG9yZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUluZm8mCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgU3RyaW5nIHBsdWdpblByb2Nlc3NQYXRoID0gZXhlY3V0YWJsZVBhdGhPZlBsdWdpblBy
b2Nlc3MoKTsKICAgICAgICAgICAgIHBsdWdpblByb2Nlc3NQYXRoLmFwcGVuZCgnMicpOwotICAg
ICAgICAgICAgaWYgKCFmaWxlRXhpc3RzKHBsdWdpblByb2Nlc3NQYXRoKSkKKyAgICAgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNz
UHJveHlVbml4LmNwcAppbmRleCAyNzY2OTJiLi5lYTBhYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQ
cm94eVVuaXguY3BwCkBAIC05MCw3ICs5MCw3IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpz
Y2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAj
ZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1NfR1RLMikKICAgICAgICAgcGx1Z2luUHJv
Y2Vzc1BhdGguYXBwZW5kKCcyJyk7Ci0gICAgICAgIGlmICghZmlsZUV4aXN0cyhwbHVnaW5Qcm9j
ZXNzUGF0aCkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwbHVnaW5Qcm9j
ZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05OCw4ICs5OCw4IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpzY2Fu
UGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmCiAgICAg
fQogI2VuZGlmCiAKLSAgICBDU3RyaW5nIGJpbmFyeVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24ocGx1Z2luUHJvY2Vzc1BhdGgpOwotICAgIENTdHJpbmcgcGx1Z2luUGF0aENTdHJpbmcg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAgQ1N0cmluZyBiaW5h
cnlQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblByb2Nl
c3NQYXRoKTsKKyAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0gRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOwogICAgIGNoYXIqIGFyZ3ZbNF07CiAg
ICAgYXJndlswXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGJpbmFyeVBhdGguZGF0YSgpKTsKICAgICBh
cmd2WzFdID0gY29uc3RfY2FzdDxjaGFyKj4oIi1zY2FuUGx1Z2luIik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCAxMjQ4YWVmLi5kMWRmZjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGJv
b2wgaGFzRmlsZUNoYW5nZWRTaW5jZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIHNpbmNl
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHRpbWVfdCBtb2RpZmlj
YXRpb25UaW1lOwotICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZp
Y2F0aW9uVGltZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBy
ZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRpbWUpID4gc2luY2U7
CkBAIC01NSwyNiArNTUsMjYgQEAgc3RhdGljIGJvb2wgaGFzRmlsZUNoYW5nZWRTaW5jZShjb25z
dCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIHNpbmNlKQogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxL
ZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGb3JGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5B
bmRMb2NrRmlsZShwYXRoLCBPcGVuRm9yUmVhZCk7Ci0gICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6b3BlbkFu
ZExvY2tGaWxlKHBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JSZWFkKTsKKyAgICBpZiAoaGFuZGxl
ID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgbG9uZyBsb25nIGZpbGVTaXplID0gMDsKLSAgICBpZiAoIWdldEZp
bGVTaXplKGhhbmRsZSwgZmlsZVNpemUpKSB7Ci0gICAgICAgIHVubG9ja0FuZENsb3NlRmlsZSho
YW5kbGUpOworICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoaGFuZGxlLCBmaWxlU2l6
ZSkpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIHNpemVfdCBieXRlc1RvUmVhZDsK
ICAgICBpZiAoIVdURjo6Y29udmVydFNhZmVseShmaWxlU2l6ZSwgYnl0ZXNUb1JlYWQpKSB7Ci0g
ICAgICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjp1
bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCiAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcihieXRlc1RvUmVhZCk7Ci0gICAgc2l6ZV90IHRv
dGFsQnl0ZXNSZWFkID0gcmVhZEZyb21GaWxlKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVy
LnNpemUoKSk7CisgICAgc2l6ZV90IHRvdGFsQnl0ZXNSZWFkID0gRmlsZVN5c3RlbTo6cmVhZEZy
b21GaWxlKGhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiAKLSAgICB1bmxv
Y2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZp
bGUoaGFuZGxlKTsKIAogICAgIGlmICh0b3RhbEJ5dGVzUmVhZCAhPSBieXRlc1RvUmVhZCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMTIsNyArMTEyLDcgQEAgU3RyaW5nIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCgpIGNv
bnN0CiAgICAgaWYgKHN0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VQ
YXRoLCAiZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0Iik7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlUGF0aCwgImZ1
bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOwogfQogCiB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RhcnRNb25pdG9yaW5nRGlzaygp
CkBAIC0xNDUsOCArMTQ1LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCkKICAgICBTdHJpbmcg
c3RvcmFnZVBhdGggPSBzdG9yYWdlRGlyZWN0b3J5UGF0aCgpOwogICAgIEFTU0VSVCghc3RvcmFn
ZVBhdGguaXNFbXB0eSgpKTsKIAotICAgIGlmICghZmlsZUV4aXN0cyhzdG9yYWdlUGF0aCkpIHsK
LSAgICAgICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpKSB7CisgICAgaWYg
KCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHN0b3JhZ2VQYXRoKSkgeworICAgICAgICBpZiAoIUZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCkpIHsKICAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6IEZhaWxlZCB0byBjcmVhdGUgZGlyZWN0b3J5IHBh
dGggJXMiLCBzdG9yYWdlUGF0aC51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAg
ICAgICAgIFN0cmluZyByZXNvdXJjZUxvZ1BhdGggPSByZXNvdXJjZUxvZ0ZpbGVQYXRoKCk7CiAg
ICAgICAgIEFTU0VSVCghcmVzb3VyY2VMb2dQYXRoLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgaWYg
KCFmaWxlRXhpc3RzKHJlc291cmNlTG9nUGF0aCkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhyZXNvdXJjZUxvZ1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIG1fZmlsZU1vbml0b3IgPSBudWxscHRyOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1bGF0ZU1lbW9yeVN0b3Jl
RnJvbURpc2soKQogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgU3RyaW5n
IGZpbGVQYXRoID0gcmVzb3VyY2VMb2dGaWxlUGF0aCgpOwotICAgIGlmIChmaWxlUGF0aC5pc0Vt
cHR5KCkgfHwgIWZpbGVFeGlzdHMoZmlsZVBhdGgpKSB7CisgICAgaWYgKGZpbGVQYXRoLmlzRW1w
dHkoKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlUGF0aCkpIHsKICAgICAgICAgbV9t
ZW1vcnlTdG9yZS5ncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsKICAgICAgICAgbW9u
aXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3RpY3MoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU4
LDE2ICsyNTgsMTYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2U6OndyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKQogCiAgICAgYXV0byBzdG9yYWdlUGF0aCA9IHN0
b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CiAgICAgaWYgKCFzdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKTsKICAgICAgICAgZXhjbHVkZUZy
b21CYWNrdXAoKTsKICAgICB9CiAKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5BbmRMb2NrRmlsZShy
ZXNvdXJjZUxvZ0ZpbGVQYXRoKCksIE9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKGhhbmRsZSA9PSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgIGF1dG8gaGFuZGxlID0gRmlsZVN5c3RlbTo6
b3BlbkFuZExvY2tGaWxlKHJlc291cmNlTG9nRmlsZVBhdGgoKSwgRmlsZVN5c3RlbTo6T3BlbkZv
cldyaXRlKTsKKyAgICBpZiAoaGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludDY0X3Qgd3JpdHRlbkJ5dGVzID0g
d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEtPnNpemUoKSk7Ci0g
ICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgaW50NjRfdCB3cml0dGVuQnl0ZXMg
PSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0
YS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjp1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsK
IAogICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocmF3RGF0YS0+
c2l6ZSgpKSkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTogV2Ugb25seSB3cm90
ZSAlZCBvdXQgb2YgJXp1IGJ5dGVzIHRvIGRpc2siLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4od3Jp
dHRlbkJ5dGVzKSwgcmF3RGF0YS0+c2l6ZSgpKTsKQEAgLTMwNiw3ICszMDYsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Y2xlYXIoKQogCiAgICAgc3Rv
cE1vbml0b3JpbmdEaXNrKCk7CiAKLSAgICBpZiAoIWRlbGV0ZUZpbGUoZmlsZVBhdGgpKQorICAg
IGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShmaWxlUGF0aCkpCiAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2U6IFVuYWJsZSB0byBkZWxldGUgc3RhdGlzdGljcyBmaWxlOiAlcyIs
IGZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmluZGV4
IGE0NTQwODEuLjgyNjE1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC04NSw3ICs4NSw3
IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShEYXRhYmFzZU9wZW5p
bmdTdHJhdGVneSBvcGVuaW5nU3RyYXRlZ3kpCiAKIGJvb2wgTG9jYWxTdG9yYWdlRGF0YWJhc2U6
OnRyeVRvT3BlbkRhdGFiYXNlKERhdGFiYXNlT3BlbmluZ1N0cmF0ZWd5IG9wZW5pbmdTdHJhdGVn
eSkKIHsKLSAgICBpZiAoIWZpbGVFeGlzdHMobV9kYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJh
dGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9kYXRhYmFzZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVu
dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9kYXRhYmFzZVBhdGguaXNFbXB0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggMTliMjI5Zi4u
YjljYTg5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9M
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtOTUsNyAr
OTUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlQWxsRGF0YWJh
c2VzKCkKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBzdGF0ZW1lbnQu
c3RlcCgpKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGRlbGV0ZUZpbGUoc3RhdGVtZW50Lmdl
dENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHN0YXRlbWVu
dC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICAvLyBGSVhNRTogQ2FsbCBvdXQgdG8gdGhl
IGNsaWVudC4KICAgICB9CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNP
cGVuKCkpCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKIAotICAgIGlmICghZGVsZXRlRmls
ZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugd2hl
cmUgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlbGV0ZSB0aGUgZGF0YWJhc2UgZmlsZSAoZS5nIHNv
bWUgb3RoZXIgcHJvZ3JhbQogICAgICAgICAvLyBsaWtlIGEgdmlydXMgc2Nhbm5lciBpcyBhY2Nl
c3NpbmcgaXQpLCBtYWtlIHN1cmUgdG8gcmVtb3ZlIGFsbCBlbnRyaWVzLgogICAgICAgICBvcGVu
VHJhY2tlckRhdGFiYXNlKFNraXBJZk5vbkV4aXN0ZW50KTsKQEAgLTEyNCwxOSArMTI0LDE5IEBA
IHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBm
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgdGltZV90IHRp
bWU7Ci0gICAgcmV0dXJuIGdldEZpbGVDcmVhdGlvblRpbWUoZmlsZVBhdGgsIHRpbWUpID8gdGlt
ZSA6IHN0ZDo6b3B0aW9uYWw8dGltZV90PihzdGQ6Om51bGxvcHQpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSA/IHRpbWUgOiBzdGQ6
Om9wdGlvbmFsPHRpbWVfdD4oc3RkOjpudWxsb3B0KTsKIH0KIAogc3RhdGljIHN0ZDo6b3B0aW9u
YWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQog
ewogICAgIHRpbWVfdCB0aW1lOwotICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmls
ZVBhdGgsIHRpbWUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUoZmlsZVBhdGgsIHRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
cmV0dXJuIHRpbWU7CkBAIC0yMDksNyArMjA5LDcgQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoK
IAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VQYXRoKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMo
bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGNyZWF0ZSBMb2NhbFN0b3JhZ2UgZGF0YWJhc2UgcGF0aCAlcyIsIG1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAgICAgfQpAQCAtMjE4LDcgKzIxOCw3IEBAIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdAogICAg
IHBsYXRmb3JtTWF5YmVFeGNsdWRlRnJvbUJhY2t1cCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5LCBmaWxlbmFt
ZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2xv
Y2FsU3RvcmFnZURpcmVjdG9yeSwgZmlsZW5hbWUpOwogfQogCiBTdHJpbmcgTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKCkgY29uc3QKQEAgLTIzMyw3ICsy
MzMsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6b3BlblRyYWNrZXJEYXRh
YmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVneSBvcAogCiAgICAgU3RyaW5nIGRhdGFiYXNlUGF0
aCA9IHRyYWNrZXJEYXRhYmFzZVBhdGgoKTsKIAotICAgIGlmICghZmlsZUV4aXN0cyhkYXRhYmFz
ZVBhdGgpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkKKyAgICBpZiAo
IUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kg
PT0gU2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9kYXRh
YmFzZS5vcGVuKGRhdGFiYXNlUGF0aCkpIHsKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6aW1wb3J0T3JpZ2luSWRlbnRpZmllcnMoKQogCiB2b2lk
IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dXBkYXRlVHJhY2tlckRhdGFiYXNlRnJvbUxv
Y2FsU3RvcmFnZURhdGFiYXNlRmlsZXMoKQogewotICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzID0g
bGlzdERpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgIioubG9jYWxzdG9yYWdlIik7
CisgICAgVmVjdG9yPFN0cmluZz4gcGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1f
bG9jYWxTdG9yYWdlRGlyZWN0b3J5LCAiKi5sb2NhbHN0b3JhZ2UiKTsKIAogICAgIEhhc2hTZXQ8
U3RyaW5nPiBvcmlnaW5zKG1fb3JpZ2lucyk7CiAgICAgSGFzaFNldDxTdHJpbmc+IG9yaWdpbnNG
cm9tTG9jYWxTdG9yYWdlRGF0YWJhc2VGaWxlczsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIExv
Y2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dXBkYXRlVHJhY2tlckRhdGFiYXNlRnJvbUxvY2Fs
U3RvcmFnZURhdGFiYXNlRgogICAgICAgICBpZiAoIXBhdGguZW5kc1dpdGgoIi5sb2NhbHN0b3Jh
Z2UiKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0cmluZyBmaWxlbmFtZSA9
IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKKyAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5
c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpOwogCiAgICAgICAgIFN0cmluZyBvcmlnaW5JZGVu
dGlmaWVyID0gZmlsZW5hbWUuc3Vic3RyaW5nKDAsIGZpbGVuYW1lLmxlbmd0aCgpIC0gc3RybGVu
KCIubG9jYWxzdG9yYWdlIikpOwogCkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBMb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZURhdGFiYXNlV2l0aE9yaWdpbklkZW50aWZpZXIoY29u
c3QgU3RyaW4KICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIG9yaWdpbnMgbGVmdDsgZGVsZXRlIHRo
ZSB0cmFja2VyIGRhdGFiYXNlLgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgICAg
IFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFiYXNlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRo
KCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9y
eSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogVGVsbCBjbGllbnRzIHRoYXQg
dGhlIG9yaWdpbiB3YXMgcmVtb3ZlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQppbmRleCA4ZDY1YmJlLi40MjgwODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCkBAIC03Myw3ICs3Myw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNp
dGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMucGVuZGluZ0Nvb2tpZXMg
PSBjb3B5VG9WZWN0b3IobV9wZW5kaW5nQ29va2llcyk7CiAKICAgICBpZiAoIWNvb2tpZUZpbGUu
aXNFbXB0eSgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFk
V3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShjb29raWVGaWxlKSwgcGFyYW1l
dGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKGNvb2tpZUZpbGUpLCBwYXJhbWV0ZXJzLmNvb2tpZVN0b3Jh
Z2VQYXRoRXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNhY2hl
U3RvcmFnZURpcmVjdG9yeS5pc051bGwoKSkgewogICAgICAgICBwYXJhbWV0ZXJzLmNhY2hlU3Rv
cmFnZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3Rvcnk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCmluZGV4IDk3ZDJiYWMuLmU1OTE2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBA
IC0xMjQsOCArMTI0LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZXNvbHZlRGlyZWN0b3Jp
ZXNJZk5lY2Vzc2FyeSgpCiAKICAgICAvLyBSZXNvbHZlIGRpcmVjdG9yaWVzIGZvciBmaWxlIHBh
dGhzLgogICAgIGlmICghbV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLmlzRW1wdHko
KSkgewotICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9
IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9uKFdl
YkNvcmU6OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlKSk7
Ci0gICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlID0gV2Vi
Q29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNv
b2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9u
LmNvb2tpZVN0b3JhZ2VGaWxlKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNv
b2tpZVN0b3JhZ2VGaWxlID0gcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNh
bmRib3hFeHRlbnNpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShtX2NvbmZp
Z3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUpKTsKKyAgICAgICAgbV9yZXNvbHZlZENvbmZpZ3Vy
YXRpb24uY29va2llU3RvcmFnZUZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUs
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShtX2NvbmZpZ3VyYXRpb24uY29v
a2llU3RvcmFnZUZpbGUpKTsKICAgICB9CiB9CiAKQEAgLTEyNDgsNyArMTI0OCw3IEBAIFZlY3Rv
cjxQbHVnaW5Nb2R1bGVJbmZvPiBXZWJzaXRlRGF0YVN0b3JlOjpwbHVnaW5zKCkgY29uc3QKIAog
c3RhdGljIFN0cmluZyBjb21wdXRlTWVkaWFLZXlGaWxlKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlE
aXJlY3RvcnkpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5RGlyZWN0
b3J5LCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogfQogCiBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtleU9yaWdpbnMoY29uc3QgU3RyaW5n
JiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KQpAQCAtMTI1NywxMiArMTI1NywxMiBAQCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJzaXRlRGF0YVN0b3JlOjptZWRpYUtl
eU9yaWdpbnMoY29uc3QgU3RyaQogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luczsKIAotICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IFdlYkNv
cmU6Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgeworICAg
IGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3RE
aXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgIioiKSkgewogICAgICAgICBhdXRv
IG1lZGlhS2V5RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUob3JpZ2luUGF0aCk7Ci0gICAgICAg
IGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhtZWRpYUtleUZpbGUpKQorICAgICAgICBpZiAoIVdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gbWVkaWFLZXlJZGVudGlmaWVyID0gV2ViQ29yZTo6
cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOworICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRp
ZmllciA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShvcmlnaW5QYXRoKTsK
IAogICAgICAgICBpZiAoYXV0byBzZWN1cml0eU9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihtZWRpYUtleUlkZW50aWZpZXIpKQogICAg
ICAgICAgICAgb3JpZ2lucy5hcHBlbmQoKnNlY3VyaXR5T3JpZ2luKTsKQEAgLTEyNzUsMTggKzEy
NzUsMTggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3Ry
aW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LAogewogICAgIEFTU0VSVCghbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpOwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBtZWRp
YUtleURpcmVjdG9yeSA6IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkobWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSwgIioiKSkgeworICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3Rvcnkg
OiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUgPSBjb21wdXRlTWVkaWFL
ZXlGaWxlKG1lZGlhS2V5RGlyZWN0b3J5KTsKIAogICAgICAgICB0aW1lX3QgbW9kaWZpY2F0aW9u
VGltZTsKLSAgICAgICAgaWYgKCFXZWJDb3JlOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRp
YUtleUZpbGUsIG1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICBpZiAoIVdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlhS2V5RmlsZSwgbW9kaWZpY2F0aW9u
VGltZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QobW9kaWZpY2F0aW9uVGltZSkgPCBtb2RpZmllZFNp
bmNlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmls
ZShtZWRpYUtleUZpbGUpOwotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeSht
ZWRpYUtleURpcmVjdG9yeSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUobWVkaWFLZXlGaWxlKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1w
dHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOwogICAgIH0KIH0KIApAQCAtMTI5NSwxMSAr
MTI5NSwxMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZU1lZGlhS2V5cyhjb25zdCBT
dHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksCiAgICAgQVNTRVJUKCFtZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdp
biA6IG9yaWdpbnMpIHsKLSAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCBvcmln
aW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvIG1lZGlhS2V5RGlyZWN0b3J5
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgICAg
IGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtleURpcmVjdG9y
eSk7CiAKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwotICAgICAg
ICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleURpcmVjdG9yeSk7CisgICAg
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKKyAgICAg
ICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJl
Y3RvcnkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
ZWJQcm9jZXNzUG9vbEd0ay5jcHAKaW5kZXggYzU5NWQ1Ni4uYjRhMTcyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCkBAIC0xMjQs
NyArMTI0LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0
Zm9ybURlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1Vu
aXF1ZVB0cjxnY2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxl
bmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3ZWJraXRndGsiLCAiSmF2YVNjcmlwdENvcmVE
ZWJ1ZyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25z
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IDJkMDI3MjEuLmRmZWY1OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyBOU1N0cmluZyAq
cGF0aFRvUERGT25EaXNrKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFw
cGxpY2F0aW9uUmF3KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHVuc2lnbmVkIGxv
bmcgc2l6ZSwgY29uc3QgU3RyaW5nJiBwZGZVVUlEKQogewotICAgIC8vIEZJWE1FOiBXcml0ZSBv
cmlnaW5hdGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVSTCBtZXRhZGF0
YSAocGVyaGFwcyBXZWJDb3JlOjpzZXRNZXRhZGF0YVVSTCgpPykuCisgICAgLy8gRklYTUU6IFdy
aXRlIG9yaWdpbmF0aW5nVVJMU3RyaW5nIHRvIHRoZSBmaWxlJ3Mgb3JpZ2luYXRpbmcgVVJMIG1l
dGFkYXRhIChwZXJoYXBzIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnNldE1ldGFkYXRhVVJMKCk/KS4K
ICAgICBVTlVTRURfUEFSQU0ob3JpZ2luYXRpbmdVUkxTdHJpbmcpOwogCiAgICAgaWYgKCFzdWdn
ZXN0ZWRGaWxlbmFtZS5lbmRzV2l0aCgiLnBkZiIsIGZhbHNlKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKaW5kZXggZTUyMmE1OS4u
NzNkODAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd3BlL1dlYlByb2Nl
c3NQb29sV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vz
c1Bvb2xXUEUuY3BwCkBAIC04MCwxMyArODAsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1Jbml0aWFsaXplKCkKIFdURjo6U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0
Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVf
ZGlyKCksICJ3cGUiLCAiYXBwY2FjaGUiLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkuZ2V0KCkp
OworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGNhY2hlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogV1RGOjpTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQog
ewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJtZWRpYWNhY2hlIiwgbnVsbHB0cikpOwot
ICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNh
Y2hlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9
CiAKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKQEAgLTEwMiwzNyArMTAyLDM3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW52YWxpZGF0ZUNvbnRleHQoKQogU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19i
dWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiZGF0YWJhc2VzIiwg
bnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURp
cmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZv
cm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRf
dXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImRhdGFiYXNlcyIsICJpbmRleGVkZGIiLCBudWxscHRy
KSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oaW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlx
dWVQdHI8Z2NoYXI+IHN0b3JhZ2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2Vy
X2RhdGFfZGlyKCksICJ3cGUiLCAibG9jYWxzdG9yYWdlIiwgbnVsbHB0cikpOwotICAgIHJldHVy
biBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJl
Y3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9t
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBT
dHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IG1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAi
bWVkaWFrZXlzIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBkaXNrQ2FjaGVEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImNhY2hlIiwgbnVsbHB0cikp
OwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlza0NhY2hlRGlyZWN0b3J5
LmdldCgpKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1
bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpCiB7CiAgICAgR1VuaXF1ZVB0cjxn
Y2hhcj4gamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2RhdGFfZGlyKCksICJ3cGUiLCAiSmF2YVNjcmlwdENvcmVEZWJ1ZyIsIG51bGxwdHIp
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihqYXZhU2NyaXB0Q29yZUNvbmZpZ0RpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oamF2YVNj
cmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybVJlc29sdmVQYXRoc0ZvclNhbmRib3hFeHRlbnNpb25zKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRF
eHRlbnNpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcAppbmRleCBkY2YxM2MxLi5h
YWMyODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFn
ZXIuY3BwCkBAIC00MSw5ICs0MSw5IEBAIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OldlYktpdEV4
dGVuc2lvbk1hbmFnZXIoKQogCiB2b2lkIFdlYktpdEV4dGVuc2lvbk1hbmFnZXI6OnNjYW5Nb2R1
bGVzKGNvbnN0IFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgVmVjdG9yPFN0cmluZz4m
IG1vZHVsZXMpCiB7Ci0gICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJDb3JlOjps
aXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0cmluZygiKi5zbyIpKTsKKyAg
ICBWZWN0b3I8U3RyaW5nPiBtb2R1bGVQYXRocyA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3RE
aXJlY3Rvcnkod2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbW9kdWxlUGF0aHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
aWYgKFdlYkNvcmU6OmZpbGVFeGlzdHMobW9kdWxlUGF0aHNbaV0pKQorICAgICAgICBpZiAoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtb2R1bGVQYXRoc1tpXSkpCiAgICAgICAgICAg
ICBtb2R1bGVzLmFwcGVuZChtb2R1bGVQYXRoc1tpXSk7CiAgICAgfQogfQpAQCAtNjMsNyArNjMs
NyBAQCBzdGF0aWMgdm9pZCBwYXJzZVVzZXJEYXRhKEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU3Ry
aW5nJiB3ZWJFeHRlbnNpb25zRGlyZWN0b3J5LAogICAgIEdWYXJpYW50KiBkYXRhID0gbnVsbHB0
cjsKICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIobSZzbXYpIiwgJmRpcmVjdG9y
eSwgJmRhdGEpOwogCi0gICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKKyAgICB3ZWJFeHRlbnNp
b25zRGlyZWN0b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihkaXJlY3RvcnkpOwogICAgIGluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBh
ZG9wdEdSZWYoZGF0YSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRsZUdsaWIuY3Bw
CmluZGV4IGEyMGE1ZmUuLmNmZmE4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIvSW5qZWN0ZWRCdW5kbGVH
bGliLmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBJbmpl
Y3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
JiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7Ci0gICAgbV9wbGF0Zm9y
bUJ1bmRsZSA9IGdfbW9kdWxlX29wZW4oZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fcGF0aCku
ZGF0YSgpLCBHX01PRFVMRV9CSU5EX0xPQ0FMKTsKKyAgICBtX3BsYXRmb3JtQnVuZGxlID0gZ19t
b2R1bGVfb3BlbihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV9wYXRoKS5k
YXRhKCksIEdfTU9EVUxFX0JJTkRfTE9DQUwpOwogICAgIGlmICghbV9wbGF0Zm9ybUJ1bmRsZSkg
ewogICAgICAgICBnX3dhcm5pbmcoIkVycm9yIGxvYWRpbmcgdGhlIGluamVjdGVkIGJ1bmRsZSAo
JXMpOiAlcyIsIG1fcGF0aC51dGY4KCkuZGF0YSgpLCBnX21vZHVsZV9lcnJvcigpKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01l
ZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCBm
YjdmOWM2Li45ZjhlYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVk
aWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAt
NTIsNyArNTIsNyBAQCBTdHJpbmcgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6bWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5Rm9yT3JpZ2luKGNvbnN0IFNlY3VyaQogICAgIGlmICghbV9tZWRpYUtl
eVN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAg
cmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9y
eSwgb3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwg
b3JpZ2luRGF0YS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lucygp
CkBAIC02Miw3ICs2Miw3IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXI6OmdldE1lZGlhS2V5T3JpZ2lucygpCiAgICAgaWYgKG1fbWVkaWFLZXlT
dG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAKLSAg
ICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IGxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBG
aWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIp
OwogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKSB7CiAgICAg
ICAgIFVSTCB1cmw7CiAgICAgICAgIHVybC5zZXRQcm90b2NvbChBU0NJSUxpdGVyYWwoImZpbGUi
KSk7CkBAIC04MiwyNSArODIsMjUgQEAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkKIAogc3RhdGljIHZvaWQg
cmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdp
blBhdGgsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlKQogewotICAgIFZlY3RvcjxT
dHJpbmc+IG1lZGlhS2V5UGF0aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7Cisg
ICAgVmVjdG9yPFN0cmluZz4gbWVkaWFLZXlQYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkob3JpZ2luUGF0aCwgIioiKTsKIAogICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlQYXRo
IDogbWVkaWFLZXlQYXRocykgewotICAgICAgICBTdHJpbmcgbWVkaWFLZXlGaWxlID0gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1lZGlhS2V5UGF0aCwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAg
ICAgICAgU3RyaW5nIG1lZGlhS2V5RmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtZWRpYUtleVBhdGgsICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAKLSAgICAgICAgaWYg
KCFmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCisgICAgICAgIGlmICghRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhtZWRpYUtleUZpbGUpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
dGltZV90IG1vZFRpbWU7Ci0gICAgICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1lZGlhS2V5
RmlsZSwgbW9kVGltZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKG1lZGlhS2V5RmlsZSwgbW9kVGltZSk7CiAKICAgICAgICAgaWYgKG1vZFRpbWUgPCBzdGFy
dERhdGUgfHwgbW9kVGltZSA+IGVuZERhdGUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7Ci0gICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0
b3J5KG1lZGlhS2V5UGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFL
ZXlGaWxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFL
ZXlQYXRoKTsKICAgICB9CiAgICAgCi0gICAgZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0
aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCk7CiB9
CiAKIHZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTWVkaWFLZXlFbnRyaWVz
Rm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSkKQEAgLTExNyw3
ICsxMTcsNyBAQCB2b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU1lZGlhS2V5
RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJsZQogICAgIGlmIChtX21lZGlhS2V5U3Rv
cmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxT
dHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVj
dG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CiAgICAgZm9y
IChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2luUGF0aHMpCiAgICAgICAgIHJlbW92ZUFsbE1lZGlh
S2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RhcnREYXRlLCBlbmREYXRlKTsK
IH0KQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRl
bGV0ZUFsbE1lZGlhS2V5RW50cmllcygpCiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFN0cmluZz4gb3Jp
Z2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIp
OworICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGF1dG8mIG9y
aWdpblBhdGggOiBvcmlnaW5QYXRocykKICAgICAgICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdl
Rm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxv
d2VzdCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luU3RyZWFtLmNwcAppbmRleCAwMzcxOGEyLi4xOGZlOWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJlYW0uY3BwCkBAIC00NSw3ICs0NSw3IEBAIE5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpOZXRzY2FwZVBsdWdpblN0cmVhbShSZWY8TmV0c2NhcGVQbHVnaW4+JiYg
cGx1Z2luLCB1aW50NjRfCiAgICAgLCBtX25wU3RyZWFtKCkKICAgICAsIG1fdHJhbnNmZXJNb2Rl
KE5QX05PUk1BTCkKICAgICAsIG1fb2Zmc2V0KDApCi0gICAgLCBtX2ZpbGVIYW5kbGUoaW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAsIG1fZmlsZUhhbmRsZShGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICwgbV9pc1N0YXJ0ZWQoZmFsc2UpCiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgICwgbV91cmxOb3RpZnlIYXNCZWVuQ2FsbGVkKGZhbHNlKQpAQCAt
NTksNyArNTksNyBAQCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6fk5ldHNjYXBlUGx1Z2luU3RyZWFt
KCkKIHsKICAgICBBU1NFUlQoIW1faXNTdGFydGVkKTsKICAgICBBU1NFUlQoIW1fc2VuZE5vdGlm
aWNhdGlvbiB8fCBtX3VybE5vdGlmeUhhc0JlZW5DYWxsZWQpOwotICAgIEFTU0VSVChtX2ZpbGVI
YW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgQVNTRVJUKG1fZmlsZUhh
bmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKIH0KIAogdm9p
ZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFVSTCYgcmVxdWVz
dFVSTCwgY29uc3QgVVJMJiByZWRpcmVjdFJlc3BvbnNlVVJMLCBpbnQgcmVkaXJlY3RSZXNwb25z
ZVN0YXR1cykKQEAgLTI2MywxMiArMjYzLDEyIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06
OmRlbGl2ZXJEYXRhVG9QbHVnaW4oKQogCiB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxp
dmVyRGF0YVRvRmlsZShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKIHsKLSAgICBpZiAo
bV9maWxlSGFuZGxlID09IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgJiYgbV9maWxlUGF0aC5p
c051bGwoKSkgeworICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSAmJiBtX2ZpbGVQYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIENy
ZWF0ZSBhIHRlbXBvcmFyeSBmaWxlLgotICAgICAgICBtX2ZpbGVQYXRoID0gb3BlblRlbXBvcmFy
eUZpbGUoIldlYktpdFBsdWdpblN0cmVhbSIsIG1fZmlsZUhhbmRsZSk7CisgICAgICAgIG1fZmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiV2ViS2l0UGx1Z2luU3RyZWFt
IiwgbV9maWxlSGFuZGxlKTsKIAogICAgICAgICAvLyBXZSBmYWlsZWQgdG8gb3BlbiB0aGUgZmls
ZSwgc3RvcCB0aGUgc3RyZWFtLgotICAgICAgICBpZiAobV9maWxlSGFuZGxlID09IGludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBGaWxlU3lz
dGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CiAgICAgICAgICAgICBzdG9wKE5QUkVT
X05FVFdPUktfRVJSKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjc3LDEw
ICsyNzcsMTAgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFUb0ZpbGUo
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGludCBieXRlQ291bnQgPSB3cml0ZVRvRmlsZShtX2ZpbGVIYW5kbGUs
IGJ5dGVzLCBsZW5ndGgpOworICAgIGludCBieXRlQ291bnQgPSBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShtX2ZpbGVIYW5kbGUsIGJ5dGVzLCBsZW5ndGgpOwogICAgIGlmIChieXRlQ291bnQgIT0g
bGVuZ3RoKSB7CiAgICAgICAgIC8vIFRoaXMgaGFwcGVucyBvbmx5IHJhcmVseSwgd2hlbiB3ZSBh
cmUgb3V0IG9mIGRpc2sgc3BhY2Ugb3IgaGF2ZSBhIGRpc2sgSS9PIGVycm9yLgotICAgICAgICBj
bG9zZUZpbGUobV9maWxlSGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1f
ZmlsZUhhbmRsZSk7CiAKICAgICAgICAgc3RvcChOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpA
QCAtMzE0LDIzICszMTQsMjMgQEAgdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RvcChOUFJl
YXNvbiByZWFzb24pCiAgICAgICAgIGlmIChyZWFzb24gPT0gTlBSRVNfRE9ORSkgewogICAgICAg
ICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGZpbGUgaXMgY3JlYXRlZC4KICAgICAgICAgICAgIGRl
bGl2ZXJEYXRhVG9GaWxlKDAsIDApOwotICAgICAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAgICAgICAgICAgICAgIGNsb3NlRmlsZShtX2Zp
bGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQo
IW1fZmlsZVBhdGguaXNOdWxsKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX3BsdWdp
bi0+TlBQX1N0cmVhbUFzRmlsZSgmbV9ucFN0cmVhbSwgbV9maWxlUGF0aC51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEp1c3QgY2xvc2UgdGhlIGZpbGUu
Ci0gICAgICAgICAgICBpZiAobV9maWxlSGFuZGxlICE9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCi0gICAgICAgICAgICAgICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgICAgICAg
ICBpZiAobV9maWxlSGFuZGxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpCisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBEZWxldGUgdGhlIGZpbGUgYWZ0ZXIgY2FsbGluZyBO
UFBfU3RyZWFtQXNGaWxlKCksIGluc3RlYWQgb2YgaW4gdGhlIGRlc3RydWN0b3IuICBJdCBzaG91
bGQgYmUgT0sKICAgICAgICAgLy8gdG8gZGVsZXRlIHRoZSBmaWxlIGhlcmUgLS0gTlBQX1N0cmVh
bUFzRmlsZSgpIGlzIGFsd2F5cyBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIE5QUF9EZXN0cm95
U3RyZWFtKCkKICAgICAgICAgLy8gKHRoZSBzdHJlYW0gZGVzdHJ1Y3Rpb24gZnVuY3Rpb24pLCBz
byB0aGVyZSBjYW4gYmUgbm8gZXhwZWN0YXRpb24gdGhhdCBhIHBsdWdpbiB3aWxsIHJlYWQgdGhl
IHN0cmVhbQogICAgICAgICAvLyBmaWxlIGFzeW5jaHJvbm91c2x5IGFmdGVyIE5QUF9TdHJlYW1B
c0ZpbGUoKSBpcyBjYWxsZWQuCi0gICAgICAgIGRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CiAgICAgICAgIG1fZmlsZVBh
dGggPSBTdHJpbmcoKTsKIAogICAgICAgICAvLyBOUFBfU3RyZWFtQXNGaWxlIGNvdWxkIGNhbGwg
TlBOX0Rlc3Ryb3lTdHJlYW0gYW5kIGRlc3Ryb3kgdGhlIHN0cmVhbS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3Ry
ZWFtLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpblN0cmVhbS5oCmluZGV4IDM2NzgwOTcuLjQwNzQwNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFt
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW5TdHJlYW0uaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIGludDMyX3Qg
bV9vZmZzZXQ7CiAKICAgICBTdHJpbmcgbV9maWxlUGF0aDsKLSAgICBXZWJDb3JlOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGU7CiAgICAgCiAgICAgLy8gV2hldGhlciBOUFBfTmV3
U3RyZWFtIGhhcyBzdWNjZXNzZnVsbHkgYmVlbiBjYWxsZWQuCiAgICAgYm9vbCBtX2lzU3RhcnRl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9T
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA4MDI0MWM5Li4xYWUy
YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC01NCw3ICs1NCw3
IEBAIHN0YXRpYyBIVFRQQm9keSB0b0hUVFBCb2R5KGNvbnN0IEZvcm1EYXRhJiBmb3JtRGF0YSkK
ICAgICAgICAgICAgIGVsZW1lbnQuZmlsZVN0YXJ0ID0gZm9ybURhdGFFbGVtZW50Lm1fZmlsZVN0
YXJ0OwogICAgICAgICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5tX2ZpbGVMZW5ndGggIT0gQmxv
YkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbGVMZW5n
dGggPSBmb3JtRGF0YUVsZW1lbnQubV9maWxlTGVuZ3RoOwotICAgICAgICAgICAgaWYgKGZvcm1E
YXRhRWxlbWVudC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gaW52YWxpZEZpbGVU
aW1lKCkpCisgICAgICAgICAgICBpZiAoZm9ybURhdGFFbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9k
aWZpY2F0aW9uVGltZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSkKICAgICAgICAg
ICAgICAgICBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBmb3JtRGF0YUVs
ZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAgICAgYnJlYWs7
CiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgUmVmPEZvcm1EYXRhPiB0b0Zvcm1EYXRhKGNv
bnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+
YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQuZmlsZVN0YXJ0LCBlbGVt
ZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSksIGVsZW1l
bnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcihpbnZhbGlkRmlsZVRpbWUo
KSkpOworICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQ
YXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JE
YXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRp
bWUudmFsdWVfb3IoRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1lKCkpKTsKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvQ2hhbmdlTG9nCmluZGV4IGJmMzI4NWYuLjM3Y2IyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTEtMDEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJp
cy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRv
IEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
QXJlYVN5bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFn
ZVN5bmNNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VTeW5jTWFuYWdlcjo6
ZnVsbERhdGFiYXNlRmlsZW5hbWUpOgorICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNlUGF0
aCk6CisgICAgICAgIChXZWJLaXQ6OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyk6CisgICAgICAg
IChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lu
cyk6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKToK
KyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OmRpc2tVc2FnZUZvck9yaWdpbik6CisK
IDIwMTctMTAtMTYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIyMzI3MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlQXJlYVN5bmMuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAKaW5kZXggYmExNWU0YS4uNDAzOTk2MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAK
QEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFN0b3JhZ2VBcmVhU3luYzo6b3BlbkRhdGFiYXNlKE9w
ZW5EYXRhYmFzZVBhcmFtVHlwZSBvcGVuaW5nU3RyYXRlZ3kpCiAKICAgICBTdHJpbmcgZGF0YWJh
c2VGaWxlbmFtZSA9IG1fc3luY01hbmFnZXItPmZ1bGxEYXRhYmFzZUZpbGVuYW1lKG1fZGF0YWJh
c2VJZGVudGlmaWVyKTsKIAotICAgIGlmICghZmlsZUV4aXN0cyhkYXRhYmFzZUZpbGVuYW1lKSAm
JiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCisgICAgaWYgKCFGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRmlsZW5hbWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBT
a2lwSWZOb25FeGlzdGVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGRhdGFiYXNlRmls
ZW5hbWUuaXNFbXB0eSgpKSB7CkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBTdG9yYWdlQXJlYVN5
bmM6OmRlbGV0ZUVtcHR5RGF0YWJhc2UoKQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlbmFtZSA9IG1fc3luY01hbmFnZXIt
PmZ1bGxEYXRhYmFzZUZpbGVuYW1lKG1fZGF0YWJhc2VJZGVudGlmaWVyKTsKLSAgICAgICAgICAg
IGlmICghZGVsZXRlRmlsZShkYXRhYmFzZUZpbGVuYW1lKSkKKyAgICAgICAgICAgIGlmICghRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShkYXRhYmFzZUZpbGVuYW1lKSkKICAgICAgICAgICAgICAgICBM
T0dfRVJST1IoIkZhaWxlZCB0byBkZWxldGUgZGF0YWJhc2UgZmlsZSAlc1xuIiwgZGF0YWJhc2VG
aWxlbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAKaW5kZXggZWRjOWVi
My4uM2U4ZmY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VTeW5jTWFuYWdlci5jcHAKQEAgLTU1LDEyICs1NSwxMiBAQCBTdG9yYWdlU3luY01hbmFnZXI6
On5TdG9yYWdlU3luY01hbmFnZXIoKQogLy8gQ2FsbGVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQu
CiBTdHJpbmcgU3RvcmFnZVN5bmNNYW5hZ2VyOjpmdWxsRGF0YWJhc2VGaWxlbmFtZShjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsKLSAgICBpZiAoIW1ha2VBbGxEaXJlY3Rvcmll
cyhtX3BhdGgpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9w
YXRoKSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZWQgdG8gY3JlYXRlIExvY2FsU3RvcmFn
ZSBkYXRhYmFzZSBwYXRoICVzIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3BhdGgsIGRhdGFiYXNlSWRlbnRpZmllciArICIubG9jYWxzdG9yYWdlIik7CisgICAgcmV0
dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3BhdGgsIGRhdGFiYXNl
SWRlbnRpZmllciArICIubG9jYWxzdG9yYWdlIik7CiB9CiAKIHZvaWQgU3RvcmFnZVN5bmNNYW5h
Z2VyOjpkaXNwYXRjaChGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggMTMyNmM3ZC4uZDVl
NWY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCkBAIC0xMDQsMTUgKzEwNCwxNSBAQCBTdG9yYWdlVHJhY2tlcjo6U3RvcmFnZVRyYWNrZXIo
Y29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCkKIFN0cmluZyBTdG9yYWdlVHJhY2tlcjo6dHJhY2tl
ckRhdGFiYXNlUGF0aCgpCiB7CiAgICAgQVNTRVJUKCFtX2RhdGFiYXNlTXV0ZXgudHJ5TG9jaygp
KTsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZURpcmVjdG9y
eVBhdGgsICJTdG9yYWdlVHJhY2tlci5kYiIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFj
a2VyLmRiIik7CiB9CiAKIHN0YXRpYyBib29sIGVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQogewogICAgIGlm
IChjcmVhdGVJZkRvZXNOb3RFeGlzdCkKLSAgICAgICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmll
cyhkaXJlY3RvcnlOYW1lKGZpbGVOYW1lKSk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlTmFtZSkpOwog
Ci0gICAgcmV0dXJuIGZpbGVFeGlzdHMoZmlsZU5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGZpbGVOYW1lKTsKIH0KIAogdm9pZCBTdG9yYWdlVHJhY2tlcjo6b3BlblRy
YWNrZXJEYXRhYmFzZShib29sIGNyZWF0ZUlmRG9lc05vdEV4aXN0KQpAQCAtMjM2LDcgKzIzNiw3
IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNl
KCkKICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fZGF0YWJhc2VNdXRleCk7Ci0gICAgICAgIHBhdGhzID0gbGlzdERpcmVjdG9yeSht
X3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCAiKi5sb2NhbHN0b3JhZ2UiKTsKKyAgICAgICAgcGF0aHMg
PSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICIqLmxv
Y2Fsc3RvcmFnZSIpOwogICAgIH0KIAogICAgIC8vIFVzZSBhIGNvcHkgb2YgbV9vcmlnaW5TZXQg
dG8gZmluZCBleHBpcmVkIGVudHJpZXMgYW5kIHRvIHNjaGVkdWxlIHRoZWlyCkBAIC0yNTYsNyAr
MjU2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0
YWJhc2UoKQogICAgICAgICBjb25zdCBTdHJpbmcmIHBhdGggPSAqaXQ7CiAKICAgICAgICAgaWYg
KHBhdGgubGVuZ3RoKCkgPiBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpICYmIHBhdGguZW5kc1dpdGgo
ZmlsZUV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIFN0cmluZyBmaWxlID0gcGF0aEdldEZpbGVO
YW1lKHBhdGgpOworICAgICAgICAgICAgU3RyaW5nIGZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoR2V0
RmlsZU5hbWUocGF0aCk7CiAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZp
bGUuc3Vic3RyaW5nKDAsIGZpbGUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpKTsK
ICAgICAgICAgICAgIGlmICghb3JpZ2luU2V0Q29weS5jb250YWlucyhvcmlnaW5JZGVudGlmaWVy
KSkKICAgICAgICAgICAgICAgICBzeW5jU2V0T3JpZ2luRGV0YWlscyhvcmlnaW5JZGVudGlmaWVy
LCBwYXRoKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVs
ZXRlQWxsT3JpZ2lucygpCiAgICAgICAgIGlmICghY2FuRGVsZXRlT3JpZ2luKHN0YXRlbWVudC5n
ZXRDb2x1bW5UZXh0KDApKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGRlbGV0
ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRleHQoMSkpOworICAgICAgICBGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKIAogICAgICAgICB7CiAgICAg
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2NsaWVudE11dGV4KTsKQEAgLTQzOCw3ICs0Mzgs
NyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAgfQog
CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICBpZiAoIWRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNl
UGF0aCgpKSkgeworICAgIGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJh
c2VQYXRoKCkpKSB7CiAgICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGl0IGlzIG5vdCBwb3Nz
aWJsZSB0byBkZWxldGUgdGhlIGRhdGFiYXNlIGZpbGUgKGUuZyBzb21lIG90aGVyIHByb2dyYW0K
ICAgICAgICAgLy8gbGlrZSBhIHZpcnVzIHNjYW5uZXIgaXMgYWNjZXNzaW5nIGl0KSwgbWFrZSBz
dXJlIHRvIHJlbW92ZSBhbGwgZW50cmllcy4KICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShm
YWxzZSk7CkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0
ZUFsbE9yaWdpbnMoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAg
IGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOworICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwogI2Vu
ZGlmCiB9CiAKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVs
ZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGRlbGV0ZUZpbGUocGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShwYXRoKTsKICAgICAKICAgICBib29sIHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcyA9IGZh
bHNlOwogICAgIHsKQEAgLTU0OCw4ICs1NDgsOCBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5j
RGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKICNlbmRpZgogICAg
ICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgZGVs
ZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVj
dG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKICNlbmRpZgogICAgIH0KIApA
QCAtNjQyLDcgKzY0Miw3IEBAIGxvbmcgbG9uZyBTdG9yYWdlVHJhY2tlcjo6ZGlza1VzYWdlRm9y
T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
bG9uZyBsb25nIHNpemU7Ci0gICAgcmV0dXJuIGdldEZpbGVTaXplKHBhdGgsIHNpemUpID8gc2l6
ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKHBhdGgsIHNpemUpID8g
c2l6ZSA6IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCBjNDA5YjI0Li5lNDRlYjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTEtMDEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJp
cy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRv
IEZpbGVTeXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbToKKyAgICAgICAgKC1bTlNG
aWxlTWFuYWdlciBfd2Via2l0X3NldE1ldGFkYXRhVVJMOnJlZmVycmVyOmF0UGF0aDpdKToKKyAg
ICAgICAgKC1bTlNGaWxlTWFuYWdlciBfd2Via2l0X2NyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeVdp
dGhUZW1wbGF0ZVByZWZpeDpdKToKKyAgICAgICAgKiBTdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlk
ZXIubW06CisgICAgICAgIChXZWJEYXRhYmFzZVByb3ZpZGVyOjppbmRleGVkRGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKToKKwogMjAxNy0xMC0zMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBzb21lIGRyYWcgYW5kIGRyb3AgZmVhdHVyZSBm
bGFncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVN
YW5hZ2VyRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVN
YW5hZ2VyRXh0cmFzLm1tCmluZGV4IGJlZmMzZTEuLjM1NWRlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KQEAg
LTQzLDcgKzQzLDcgQEAKIHsKICAgICBBU1NFUlQoVVJMU3RyaW5nKTsKICAgICBBU1NFUlQocGF0
aCk7Ci0gICAgV2ViQ29yZTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJl
cik7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3Ry
aW5nLCByZWZlcnJlcik7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpAQCAtOTIsNyAr
OTIsNyBAQCBzdGF0aWMgQk9PTCBmaWxlRXhpc3RzKE5TU3RyaW5nICpwYXRoKQogI2lmIFBMQVRG
T1JNKElPUykKIC0gKE5TU3RyaW5nICopX3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlX
aXRoVGVtcGxhdGVQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4CiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOworICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4KTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlUHJvdmlkZXIubW0KaW5kZXggNTc2ZDU3NS4uMDk5Mjk4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5tbQpAQCAt
MzMsOSArMzMsOSBAQCBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhlZERhdGFiYXNl
RGlyZWN0b3J5UGF0aCgpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0gW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0YWJhc2VzRGly
ZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVjdG9yeURlZmF1
bHRzS2V5XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFiYXNlc0RpcmVj
dG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBkYXRhYmFzZXNE
aXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoQVNDSUlMaXRlcmFs
KCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiKSwgW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNlc0RpcmVjdG9y
eSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChBU0NJSUxp
dGVyYWwoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIpLCBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0gICAgICAgIGRh
dGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZXNEaXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgiX19fSW5kZXhlZERCIikpOworICAgICAgICBk
YXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZGF0YWJhc2VzRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIl9fX0luZGV4ZWREQiIp
KTsKICAgICAKICAgICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJk
aXppbmdQYXRoXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCA0NzQ5MTU3Li41
ZTZmMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIw
MTctMTEtMDEgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAg
ICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRvIEZpbGVTeXN0ZW0uY3BwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwNjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2lu
RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OmZpbGVFeGlzdHNBbmRJc05vdERp
c2FibGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFiYXNlOjpkZWZhdWx0
UGx1Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6Omlz
UHJlZmVycmVkUGx1Z2luRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGFi
YXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6ZmlsbEJ1ZmZlcldpdGhDb250ZW50c09mRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKToKKyAgICAgICAgKFdlYkNv
cmU6OndyaXRlVVRGOFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNh
Y2hlKToKKyAgICAgICAgKiBQbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luUGFja2FnZTo6UGx1Z2luUGFja2FnZSk6CisgICAgICAgICogUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpQbHVnaW5T
dHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpzdGFydFN0cmVhbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJlYW06OmRlc3Ryb3lTdHJlYW0pOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogUGx1Z2lu
cy9QbHVnaW5TdHJlYW0uaDoKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAg
ICAgICAgKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKToKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwOgorICAgICAgICAoZGF0YWJhc2VzRGlyZWN0b3J5KToKKyAgICAgICAgKiBXZWJEb3du
bG9hZEN1cmwuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAob2xkUHJlZmVyZW5jZXNQ
YXRoKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjptaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNU
b0NGUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6c2V0Q2FjaGVNb2RlbCk6CisKIDIwMTctMTAtMjggIFphbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbRnJhbWVWaWV3OjpsYXlvdXQgY2xlYW51cF0gTW92ZSBjb3Jl
IGxheW91dCBsb2dpYyB0byBhIHNlcGFyYXRlIGNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcAppbmRleCBiMGU2MDZlLi4zMjg1
MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRh
dGFiYXNlLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJl
c2goKQogICAgIGF1dG8gcGF0aHNFbmQgPSBwYXRocy5lbmQoKTsKICAgICBmb3IgKGF1dG8gaXQg
PSBwYXRocy5iZWdpbigpOyBpdCAhPSBwYXRoc0VuZDsgKytpdCkgewogICAgICAgICB0aW1lX3Qg
bGFzdE1vZGlmaWVkOwotICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKCppdCwg
bGFzdE1vZGlmaWVkKSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZSgqaXQsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBwYXRoc1dpdGhUaW1lcy5hZGQoKml0LCBsYXN0TW9kaWZpZWQpOwpAQCAtMzEzLDEwICsz
MTMsMTAgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6c2V0UHJlZmVycmVkUGx1Z2luRm9yTUlNRVR5
cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUGx1Z2kKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmZp
bGVFeGlzdHNBbmRJc05vdERpc2FibGVkKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpIGNvbnN0CiB7
CiAgICAgLy8gU2tpcCBwbHVnaW4gZmlsZXMgdGhhdCBhcmUgZGlzYWJsZWQgYnkgZmlsZW5hbWUu
Ci0gICAgaWYgKG1fZGlzYWJsZWRQbHVnaW5GaWxlcy5jb250YWlucyhwYXRoR2V0RmlsZU5hbWUo
ZmlsZVBhdGgpKSkKKyAgICBpZiAobV9kaXNhYmxlZFBsdWdpbkZpbGVzLmNvbnRhaW5zKEZpbGVT
eXN0ZW06OnBhdGhHZXRGaWxlTmFtZShmaWxlUGF0aCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXR1cm4gZmlsZUV4aXN0cyhmaWxlUGF0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoZmlsZVBhdGgpOwogfQogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRE
ZWxldGVkUGx1Z2lucyhQbHVnaW5TZXQmIHBsdWdpbnMpIGNvbnN0CkBAIC0zODIsNyArMzgyLDcg
QEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6OmRlZmF1bHRQbHVnaW5EaXJlY3Rvcmll
cygpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CiAKLSAgICBTdHJpbmcgdXNlclBsdWdp
blBhdGggPSBob21lRGlyZWN0b3J5UGF0aCgpOworICAgIFN0cmluZyB1c2VyUGx1Z2luUGF0aCA9
IEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCk7CiAgICAgdXNlclBsdWdpblBhdGguYXBw
ZW5kKFN0cmluZygiXFxBcHBsaWNhdGlvbiBEYXRhXFxNb3ppbGxhXFxwbHVnaW5zIikpOwogICAg
IHBhdGhzLmFwcGVuZCh1c2VyUGx1Z2luUGF0aCk7CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBWZWN0
b3I8U3RyaW5nPiBQbHVnaW5EYXRhYmFzZTo6ZGVmYXVsdFBsdWdpbkRpcmVjdG9yaWVzKCkKIAog
Ym9vbCBQbHVnaW5EYXRhYmFzZTo6aXNQcmVmZXJyZWRQbHVnaW5EaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBwYXRoKQogewotICAgIFN0cmluZyBwcmVmZXJyZWRQYXRoID0gaG9tZURpcmVjdG9yeVBh
dGgoKTsKKyAgICBTdHJpbmcgcHJlZmVycmVkUGF0aCA9IEZpbGVTeXN0ZW06OmhvbWVEaXJlY3Rv
cnlQYXRoKCk7CiAKICAgICBwcmVmZXJyZWRQYXRoLmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRp
b24gRGF0YVxcTW96aWxsYVxccGx1Z2lucyIpKTsKIApAQCAtNDA4LDcgKzQwOCw3IEBAIHZvaWQg
UGx1Z2luRGF0YWJhc2U6OmdldFBsdWdpblBhdGhzSW5EaXJlY3RvcmllcyhIYXNoU2V0PFN0cmlu
Zz4mIHBhdGhzKSBjb25zdAogCiAgICAgYXV0byBkaXJzRW5kID0gbV9wbHVnaW5EaXJlY3Rvcmll
cy5lbmQoKTsKICAgICBmb3IgKGF1dG8gZEl0ID0gbV9wbHVnaW5EaXJlY3Rvcmllcy5iZWdpbigp
OyBkSXQgIT0gZGlyc0VuZDsgKytkSXQpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gcGx1Z2lu
UGF0aHMgPSBsaXN0RGlyZWN0b3J5KCpkSXQsIGZpbGVOYW1lRmlsdGVyKTsKKyAgICAgICAgVmVj
dG9yPFN0cmluZz4gcGx1Z2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KCpkSXQs
IGZpbGVOYW1lRmlsdGVyKTsKICAgICAgICAgYXV0byBwbHVnaW5zRW5kID0gcGx1Z2luUGF0aHMu
ZW5kKCk7CiAgICAgICAgIGZvciAoYXV0byBwSXQgPSBwbHVnaW5QYXRocy5iZWdpbigpOyBwSXQg
IT0gcGx1Z2luc0VuZDsgKytwSXQpIHsKICAgICAgICAgICAgIGlmICghZmlsZUV4aXN0c0FuZElz
Tm90RGlzYWJsZWQoKnBJdCkpCkBAIC00MjMsMTQgKzQyMywxNCBAQCB2b2lkIFBsdWdpbkRhdGFi
YXNlOjpnZXRQbHVnaW5QYXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykg
Y29uc3QKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fTUVUQURBVEFfQ0FDSEUpCiAKLXN0
YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoUGxhdGZvcm1GaWxlSGFuZGxl
IGZpbGUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQorc3RhdGljIHZvaWQgZmlsbEJ1ZmZlcldpdGhD
b250ZW50c09mRmlsZShGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgVmVjdG9y
PGNoYXI+JiBidWZmZXIpCiB7CiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSAwOwogICAgIHNpemVf
dCBidWZmZXJDYXBhY2l0eSA9IDEwMjQ7CiAgICAgYnVmZmVyLnJlc2l6ZShidWZmZXJDYXBhY2l0
eSk7CiAKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZlclNpemUgKz0gcmVhZEZyb21GaWxlKGZpbGUs
IGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJTaXplLCBidWZmZXJDYXBhY2l0eSAtIGJ1ZmZlclNpemUp
OworICAgICAgICBidWZmZXJTaXplICs9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShmaWxlLCBi
dWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZSwgYnVmZmVyQ2FwYWNpdHkgLSBidWZmZXJTaXplKTsK
ICAgICAgICAgaWYgKGJ1ZmZlclNpemUgPT0gYnVmZmVyQ2FwYWNpdHkpIHsKICAgICAgICAgICAg
IGlmIChidWZmZXJDYXBhY2l0eSA8IG1heGltdW1QZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNo
ZVNpemUpIHsKICAgICAgICAgICAgICAgICBidWZmZXJDYXBhY2l0eSAqPSAyOwpAQCAtNDc4LDEx
ICs0NzgsMTEgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6bG9hZFBlcnNpc3RlbnRNZXRhZGF0YUNh
Y2hlKCkKICAgICBpZiAoIWlzUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVy
c2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKLSAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBh
dGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRo
KCksIHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwotICAgIGZpbGUgPSBv
cGVuRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgT3BlbkZvclJlYWQpOworICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOworICAgIFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJzaXN0ZW50TWV0YWRhdGFD
YWNoZVBhdGgoKSwgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVGaWxlbmFtZSk7CisgICAg
ZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lzdGVt
OjpPcGVuRm9yUmVhZCk7CiAKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoZmlsZSkpCisgICAgaWYg
KCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBNYXJrIGNhY2hlIGFzIGxvYWRlZCByZWdhcmRsZXNzIG9mIHN1Y2Nlc3Mgb3IgZmFpbHVy
ZS4gSWYKQEAgLTQ5MSwxMSArNDkxLDExIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAKICAgICBWZWN0b3I8Y2hhcj4gZmlsZUNvbnRlbnRzOwog
ICAgIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoZmlsZSwgZmlsZUNvbnRlbnRzKTsKLSAg
ICBjbG9zZUZpbGUoZmlsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogCiAg
ICAgaWYgKGZpbGVDb250ZW50cy5zaXplKCkgPCAyIHx8IGZpbGVDb250ZW50cy5maXJzdCgpICE9
IHNjaGVtYVZlcnNpb24gfHwgZmlsZUNvbnRlbnRzLmxhc3QoKSAhPSAnXDAnKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIHJlYWQgcGx1Z2luIG1ldGFkYXRhIGNhY2hlOiBjb3JydXB0
IHNjaGVtYSIpOwotICAgICAgICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTUxOCwxMyArNTE4LDEzIEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6
OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYmIHJlYWRVVEY4
U3RyaW5nKGRlc2MsIGJ1ZmZlclBvcywgZW5kKQogICAgICAgICAgICAgICAmJiByZWFkVVRGOFN0
cmluZyhtaW1lRGVzYywgYnVmZmVyUG9zLCBlbmQpKSkgewogICAgICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gcmVhZCBwbHVnaW4gbWV0YWRhdGEgY2FjaGU6IGNvcnJ1cHQgZGF0YSIpOwot
ICAgICAgICAgICAgZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNraXAgbWV0YWRhdGEgdGhhdCBwb2ludHMg
dG8gcGx1Z2lucyBmcm9tIGRpcmVjdG9yaWVzIHRoYXQKICAgICAgICAgLy8gYXJlIG5vdCBwYXJ0
IG9mIHBsdWdpbiBkaXJlY3RvcnkgbGlzdCBhbnltb3JlLgotICAgICAgICBTdHJpbmcgcGx1Z2lu
RGlyZWN0b3J5TmFtZSA9IGRpcmVjdG9yeU5hbWUocGF0aCk7CisgICAgICAgIFN0cmluZyBwbHVn
aW5EaXJlY3RvcnlOYW1lID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKTsKICAgICAg
ICAgaWYgKG1fcGx1Z2luRGlyZWN0b3JpZXMuZmluZChwbHVnaW5EaXJlY3RvcnlOYW1lKSA9PSBX
VEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTU0MSwxNiArNTQxLDE2
IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAg
ICAgbV9wbHVnaW5QYXRoc1dpdGhUaW1lcy5zd2FwKGNhY2hlZFBsdWdpblBhdGhzV2l0aFRpbWVz
KTsKIH0KIAotc3RhdGljIGJvb2wgd3JpdGVVVEY4U3RyaW5nKFBsYXRmb3JtRmlsZUhhbmRsZSBm
aWxlLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0YXRpYyBib29sIHdyaXRlVVRGOFN0cmluZyhG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7CiAgICAgQ1N0cmluZyB1dGY4U3RyaW5nID0gc3RyaW5nLnV0ZjgoKTsKICAgICBpbnQgbGVu
Z3RoID0gdXRmOFN0cmluZy5sZW5ndGgoKSArIDE7Ci0gICAgcmV0dXJuIHdyaXRlVG9GaWxlKGZp
bGUsIHV0ZjhTdHJpbmcuZGF0YSgpLCBsZW5ndGgpID09IGxlbmd0aDsKKyAgICByZXR1cm4gRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIGxlbmd0aCkgPT0g
bGVuZ3RoOwogfQogCi1zdGF0aWMgYm9vbCB3cml0ZVRpbWUoUGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGUsIGNvbnN0IHRpbWVfdCYgdGltZSkKK3N0YXRpYyBib29sIHdyaXRlVGltZShGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgdGltZV90JiB0aW1lKQogewotICAgIHJl
dHVybiB3cml0ZVRvRmlsZShmaWxlLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPigmdGlt
ZSksIHNpemVvZih0aW1lX3QpKSA9PSBzaXplb2YodGltZV90KTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJnRp
bWUpLCBzaXplb2YodGltZV90KSkgPT0gc2l6ZW9mKHRpbWVfdCk7CiB9CiAKIHZvaWQgUGx1Z2lu
RGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlKCkKQEAgLTU1OCwyNiArNTU4
LDI2IEBAIHZvaWQgUGx1Z2luRGF0YWJhc2U6OnVwZGF0ZVBlcnNpc3RlbnRNZXRhZGF0YUNhY2hl
KCkKICAgICBpZiAoIWlzUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkgfHwgcGVyc2lz
dGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtYWtlQWxsRGlyZWN0b3JpZXMocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCkpOwotICAg
IFN0cmluZyBhYnNvbHV0ZUNhY2hlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwZXJz
aXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSwgcGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVG
aWxlbmFtZSk7Ci0gICAgZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpKTsK
KyAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVn
aW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJz
b2x1dGVDYWNoZVBhdGgpOwogCiAgICAgaWYgKG1fcGx1Z2lucy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlOwotICAgIGZpbGUgPSBvcGVu
RmlsZShhYnNvbHV0ZUNhY2hlUGF0aCwgT3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
YWJzb2x1dGVDYWNoZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAo
IWlzSGFuZGxlVmFsaWQoZmlsZSkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFs
aWQoZmlsZSkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gb3BlbiBwbHVnaW4gbWV0
YWRhdGEgY2FjaGUgZm9yIHNhdmluZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
Y2hhciBsb2NhbFNjaGVtYVZlcnNpb24gPSBzY2hlbWFWZXJzaW9uOwotICAgIGlmICh3cml0ZVRv
RmlsZShmaWxlLCAmbG9jYWxTY2hlbWFWZXJzaW9uLCAxKSAhPSAxKSB7CisgICAgaWYgKEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsICZsb2NhbFNjaGVtYVZlcnNpb24sIDEpICE9IDEpIHsK
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFkYXRhIGNhY2hl
IHNjaGVtYSIpOwotICAgICAgICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgIGRlbGV0ZUZpbGUo
YWJzb2x1dGVDYWNoZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7
CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJzb2x1dGVDYWNoZVBhdGgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC01ODksMTMgKzU4OSwxMyBAQCB2b2lkIFBsdWdpbkRh
dGFiYXNlOjp1cGRhdGVQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgICAgICAgICAgICYm
IHdyaXRlVVRGOFN0cmluZyhmaWxlLCAoKml0KS0+ZGVzY3JpcHRpb24oKSkKICAgICAgICAgICAg
ICAgJiYgd3JpdGVVVEY4U3RyaW5nKGZpbGUsICgqaXQpLT5mdWxsTUlNRURlc2NyaXB0aW9uKCkp
KSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gd3JpdGUgcGx1Z2luIG1ldGFk
YXRhIHRvIGNhY2hlIik7Ci0gICAgICAgICAgICBjbG9zZUZpbGUoZmlsZSk7Ci0gICAgICAgICAg
ICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlKTsKKyAgICAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoYWJz
b2x1dGVDYWNoZVBhdGgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgY2xvc2VGaWxlKGZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsK
IH0KIAogYm9vbCBQbHVnaW5EYXRhYmFzZTo6aXNQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZUVuYWJs
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5Q
YWNrYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2Fn
ZS5jcHAKaW5kZXggN2RkZTJjYi4uNmFmZjUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgUGx1
Z2luUGFja2FnZTo6UGx1Z2luUGFja2FnZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IHRpbWVf
dCYgbGFzdE1vZGlmaWVkKQogICAgICwgbV9pbmZvSXNGcm9tQ2FjaGUodHJ1ZSkKICNlbmRpZgog
ewotICAgIG1fZmlsZU5hbWUgPSBwYXRoR2V0RmlsZU5hbWUobV9wYXRoKTsKKyAgICBtX2ZpbGVO
YW1lID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG1fcGF0aCk7CiAgICAgbV9wYXJlbnRE
aXJlY3RvcnkgPSBtX3BhdGgubGVmdChtX3BhdGgubGVuZ3RoKCkgLSBtX2ZpbGVOYW1lLmxlbmd0
aCgpIC0gMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdp
bnMvUGx1Z2luU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1
Z2luU3RyZWFtLmNwcAppbmRleCAxMzg3ZmFiLi5jNjllMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCkBAIC02NSw3ICs2NSw3IEBA
IFBsdWdpblN0cmVhbTo6UGx1Z2luU3RyZWFtKFBsdWdpblN0cmVhbUNsaWVudCogY2xpZW50LCBG
cmFtZSogZnJhbWUsIGNvbnN0IFJlc291CiAgICAgLCBtX3N0cmVhbVN0YXRlKFN0cmVhbUJlZm9y
ZVN0YXJ0ZWQpCiAgICAgLCBtX2xvYWRNYW51YWxseShmYWxzZSkKICAgICAsIG1fZGVsYXlEZWxp
dmVyeVRpbWVyKCp0aGlzLCAmUGx1Z2luU3RyZWFtOjpkZWxheURlbGl2ZXJ5VGltZXJGaXJlZCkK
LSAgICAsIG1fdGVtcEZpbGVIYW5kbGUoaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICAs
IG1fdGVtcEZpbGVIYW5kbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkK
ICAgICAsIG1fcGx1Z2luRnVuY3MocGx1Z2luRnVuY3MpCiAgICAgLCBtX2luc3RhbmNlKGluc3Rh
bmNlKQogICAgICwgbV9xdWlya3MocXVpcmtzKQpAQCAtMjEyLDEwICsyMTIsMTAgQEAgdm9pZCBQ
bHVnaW5TdHJlYW06OnN0YXJ0U3RyZWFtKCkKICAgICBpZiAobV90cmFuc2Zlck1vZGUgPT0gTlBf
Tk9STUFMKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhdGggPSBvcGVuVGVtcG9yYXJ5Rmls
ZSgiV0tQIiwgbV90ZW1wRmlsZUhhbmRsZSk7CisgICAgbV9wYXRoID0gRmlsZVN5c3RlbTo6b3Bl
blRlbXBvcmFyeUZpbGUoIldLUCIsIG1fdGVtcEZpbGVIYW5kbGUpOwogCiAgICAgLy8gU29tZXRo
aW5nIHdlbnQgd3JvbmcsIGNhbmNlbCBsb2FkaW5nIHRoZSBzdHJlYW0KLSAgICBpZiAoIWlzSGFu
ZGxlVmFsaWQobV90ZW1wRmlsZUhhbmRsZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRs
ZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKQogICAgICAgICBjYW5jZWxBbmREZXN0cm95U3RyZWFt
KE5QUkVTX05FVFdPUktfRVJSKTsKIH0KIApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUGx1Z2lu
U3RyZWFtOjpkZXN0cm95U3RyZWFtKCkKICAgICBBU1NFUlQobV9yZWFzb24gIT0gV2ViUmVhc29u
Tm9uZSk7CiAgICAgQVNTRVJUKCFtX2RlbGl2ZXJ5RGF0YSB8fCBtX2RlbGl2ZXJ5RGF0YS0+c2l6
ZSgpID09IDApOwogCi0gICAgY2xvc2VGaWxlKG1fdGVtcEZpbGVIYW5kbGUpOworICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShtX3RlbXBGaWxlSGFuZGxlKTsKIAogICAgIGJvb2wgbmV3U3RyZWFt
Q2FsbGVkID0gbV9zdHJlYW0ubmRhdGE7CiAKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIFBsdWdp
blN0cmVhbTo6ZGVzdHJveVN0cmVhbSgpCiAgICAgICAgIG1fY2xpZW50LT5zdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKHRoaXMpOwogCiAgICAgaWYgKCFtX3BhdGguaXNOdWxsKCkpCi0gICAgICAgIGRl
bGV0ZUZpbGUobV9wYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3BhdGgp
OwogfQogCiB2b2lkIFBsdWdpblN0cmVhbTo6ZGVsYXlEZWxpdmVyeVRpbWVyRmlyZWQoKQpAQCAt
NDQwLDggKzQ0MCw4IEBAIHZvaWQgUGx1Z2luU3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2Fw
ZVBsdWdJblN0cmVhbUxvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyCiAgICAgICAgIGRlbGl2ZXJE
YXRhKCk7CiAgICAgfQogCi0gICAgaWYgKG1fc3RyZWFtU3RhdGUgIT0gU3RyZWFtU3RvcHBlZCAm
JiBpc0hhbmRsZVZhbGlkKG1fdGVtcEZpbGVIYW5kbGUpKSB7Ci0gICAgICAgIGludCBieXRlc1dy
aXR0ZW4gPSB3cml0ZVRvRmlsZShtX3RlbXBGaWxlSGFuZGxlLCBkYXRhLCBsZW5ndGgpOworICAg
IGlmIChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0b3BwZWQgJiYgRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkgeworICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0g
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV90ZW1wRmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsK
ICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBsZW5ndGgpCiAgICAgICAgICAgICBjYW5jZWxB
bmREZXN0cm95U3RyZWFtKE5QUkVTX05FVFdPUktfRVJSKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaAppbmRleCAzYjZjNzEwLi4xZTVh
ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFt
LmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxjaGFyPj4gbV9kZWxpdmVyeURhdGE7CiAKLSAgICAgICAgUGxh
dGZvcm1GaWxlSGFuZGxlIG1fdGVtcEZpbGVIYW5kbGU7CisgICAgICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBGaWxlSGFuZGxlOwogCiAgICAgICAgIGNvbnN0IE5QUGx1
Z2luRnVuY3MqIG1fcGx1Z2luRnVuY3M7CiAgICAgICAgIE5QUCBtX2luc3RhbmNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCBkY2Q1
NGE4Li4xZWE5MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNh
dGlvbkNhY2hlLmNwcApAQCAtNjYsNyArNjYsNyBAQCBXZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJB
cHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCiAKIHN0YXRpYyBTdHJpbmcgYXBwbGlj
YXRpb25DYWNoZVBhdGgoKQogewotICAgIFN0cmluZyBwYXRoID0gbG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgU3RyaW5nIHBhdGggPSBGaWxlU3lzdGVtOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKTsKIAogI2lmIFVTRShDRikKICAgICBhdXRvIGNh
Y2hlRGlyZWN0b3J5UHJlZmVyZW5jZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1
ZShXZWJLaXRMb2NhbENhY2hlRGVmYXVsdHNLZXksIFdlYlByZWZlcmVuY2VzOjphcHBsaWNhdGlv
bklkKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCmluZGV4IDljNDZmNGIuLmZiNTQ0MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBXVEY6
OlN0cmluZyBkYXRhYmFzZXNEaXJlY3RvcnkoKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KGRpcmVjdG9yeVByZWYuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICByZXR1cm4g
V2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiRGF0YWJhc2VzIik7CisgICAgcmV0dXJuIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVt
Ojpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwogfQog
CiB2b2lkIFdlYktpdEluaXRpYWxpemVXZWJEYXRhYmFzZXNJZk5lY2Vzc2FyeSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAppbmRleCAxNjBlOWJiLi44NzMy
Nzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZEN1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAKQEAg
LTIxNiw3ICsyMTYsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICAgICAgU3RyaW5nIHN1Z2dlc3Rl
ZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKICAgICAgICAgaWYgKHN1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gcGF0aEdldEZpbGVOYW1lKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgICAg
IHN1Z2dlc3RlZEZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHJlc3BvbnNl
LnVybCgpLnN0cmluZygpKTsKICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXMoc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgICAgICBCU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lQlNUUihzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgIG1fZGVsZWdhdGUt
PmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRoaXMsIHN1Z2dlc3RlZEZp
bGVuYW1lQlNUUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAK
aW5kZXggZjQ0NjFiNi4uZjExNTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlBy
ZWZlcmVuY2VzLmNwcApAQCAtNTgsNyArNTgsNyBAQCB1c2luZyBzdGQ6Om51bWVyaWNfbGltaXRz
OwogCiBzdGF0aWMgY29uc3QgU3RyaW5nJiBvbGRQcmVmZXJlbmNlc1BhdGgoKQogewotICAgIHN0
YXRpYyBTdHJpbmcgcGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb2FtaW5nVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCAiV2ViS2l0UHJlZmVyZW5jZXMucGxpc3QiKTsKKyAg
ICBzdGF0aWMgU3RyaW5nIHBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6cm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIldl
YktpdFByZWZlcmVuY2VzLnBsaXN0Iik7CiAgICAgcmV0dXJuIHBhdGg7CiB9CiAKQEAgLTUxNiw3
ICs1MTYsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjptaWdyYXRlV2ViS2l0UHJlZmVyZW5jZXNU
b0NGUHJlZmVyZW5jZXMoKQogCiAgICAgY29weVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVu
Y2VzKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4ocGxpc3QuZ2V0KCkpKTsKIAotICAgIGRl
bGV0ZUZpbGUob2xkUHJlZmVyZW5jZXNQYXRoKCkpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUob2xkUHJlZmVyZW5jZXNQYXRoKCkpOwogfQogCiB2b2lkIFdlYlByZWZlcmVuY2VzOjpjb3B5
V2ViS2l0UHJlZmVyZW5jZXNUb0NGUHJlZmVyZW5jZXMoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IDM5ZTQzOGMuLjA5NGI2NTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBXZWJW
aWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICAgICAgaWYg
KHByZWZlcmVuY2UgJiYgKENGU3RyaW5nR2V0VHlwZUlEKCkgPT0gQ0ZHZXRUeXBlSUQocHJlZmVy
ZW5jZS5nZXQoKSkpKQogICAgICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IGFkb3B0Q0Yo
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHByZWZlcmVuY2UubGVha1JlZigpKSk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAg
ICAgY2Z1cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2FsVXNlclNw
ZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgfQogICAgIGNh
Y2hlRGlyZWN0b3J5ID0gU3RyaW5nKGNmdXJsQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOwogICAgIENG
SW5kZXggY2FjaGVNZW1vcnlDYXBhY2l0eSA9IDA7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODkxZjNkYy4uOWU2ZmJmMiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisy
MDE3LTExLTAxICBDaHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAg
ICAgICBBZGQgYSBGaWxlU3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobGlicmFyeVBhdGhGb3JEdW1wUmVu
ZGVyVHJlZSk6CisgICAgICAgIChzZXRDYWNoZUZvbGRlcik6CisgICAgICAgIChzZXREZWZhdWx0
c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICAoZmluZEZvbnRGYWxsYmFj
ayk6CisgICAgICAgIChhZGRGb250RmFsbGJhY2tJZlByZXNlbnQpOgorICAgICAgICAocmVtb3Zl
Rm9udEZhbGxiYWNrSWZQcmVzZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVhZENvbnRl
bnRzT2ZGaWxlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNoYXJl
ZEJ1ZmZlclRlc3Q6OlNldFVwKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlNoYXJlZEJ1ZmZl
clRlc3Q6OlRlYXJEb3duKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVu
dHMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlRmlsZUF0UGF0aCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAg
KC1bRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWU6YWxsb3dPdmVyd3JpdGU6XSk6CisgICAgICAgICgtW0Rvd25sb2FkRGVsZWdh
dGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtCbG9iRG93bmxvYWREZWxlZ2F0
ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6YWxsb3dP
dmVyd3JpdGU6XSk6CisgICAgICAgICgtW0Jsb2JEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERp
ZEZpbmlzaDpdKToKKyAgICAgICAgKC1bUmVkaXJlY3RlZERvd25sb2FkRGVsZWdhdGUgX2Rvd25s
b2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmFsbG93T3ZlcndyaXRl
Ol0pOgorICAgICAgICAoLVtSZWRpcmVjdGVkRG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRG
aW5pc2g6XSk6CisKIDIwMTctMTAtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2xlYW4gdXAgc29tZSBkcmFnIGFuZCBkcm9wIGZlYXR1cmUgZmxh
Z3MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGZk
ZTFmZTEuLjBiNTllYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBTdHJpbmcgbGlicmFyeVBhdGhGb3JE
dW1wUmVuZGVyVHJlZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBwYXRo
Lmxlbmd0aCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lm
aWNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlmCiAKQEAgLTkxMiw3
ICs5MTIsNyBAQCBzdGF0aWMgdm9pZCBzZXRDYWNoZUZvbGRlcigpCiAKICAgICBDT01QdHI8SVdl
YkNhY2hlPiB3ZWJDYWNoZTsKICAgICBpZiAoU1VDQ0VFREVEKFdlYktpdENyZWF0ZUluc3RhbmNl
KENMU0lEX1dlYkNhY2hlLCAwLCBJSURfSVdlYkNhY2hlLCAodm9pZCoqKSZ3ZWJDYWNoZSkpKSB7
Ci0gICAgICAgIF9ic3RyX3QgY2FjaGVGb2xkZXIgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIikudXRmOCgpLmRhdGEoKTsKKyAgICAg
ICAgX2JzdHJfdCBjYWNoZUZvbGRlciA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS51dGY4KCkuZGF0YSgpOwog
ICAgICAgICB3ZWJDYWNoZS0+c2V0Q2FjaGVGb2xkZXIoY2FjaGVGb2xkZXIpOwogICAgIH0KIH0K
QEAgLTkyOSw5ICs5MjksOSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZh
bHVlc0ZvclRlc3RpbmcoKQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9y
RHVtcFJlbmRlclRyZWUoKTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNy
ZWF0aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25zIHdp
bGwgc2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZh
bHVlKFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGFwcElkLmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3Rv
cmFnZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQobGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBh
cHBJZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2Fj
aGVEZWZhdWx0c0tleSwgV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQ
YXRoLCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsK
KyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0
c0tleSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJh
cnlQYXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkp
OworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVs
dHNLZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJy
YXJ5UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdl
dCgpKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1
bHRzS2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGli
cmFyeVBhdGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0
KCkpOwogI2VuZGlmCiB9CiAKQEAgLTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyB2b2lkIHNpemVX
ZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2so
Y29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sg
PSBXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhUb0Zv
bnRGYWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJs
KTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAoIV93ZnVsbHBh
dGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTEwNTAsMjAgKzEwNTAsMjAgQEAgc3RhdGlj
IFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9IHBhdGhUb0No
ZWNrLnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7Ci0gICAg
U3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVu
Z3RoKCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKKyAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9M
b2d1ZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRo
VG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEp
LCAicGxhdGZvcm1cXHdpbiIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9zc2libGVQYXRoczsK
LSAgICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOworICAgIHBvc3NpYmxlUGF0aHMu
YXBwZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3Nz
aWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRpZGF0
ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRDYW5k
aWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAgICAg
IHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsK
LSAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2li
bGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAgbmV4dENhbmRp
ZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQogCiAgICAgZm9y
IChWZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBw
b3MgIT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAgICAgICAgcGF0aFRvRm9udEZh
bGxiYWNrID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJj
ZXNcXCIpOyAKKyAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwogCiAgICAg
ICAgIGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNX
aXRoTnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9G
b250RmFsbGJhY2s7CkBAIC0xMDc3LDcgKzEwNzcsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFs
bGJhY2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChm
b250RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5n
IGZvbnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFs
bGJhY2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJp
bmcgZm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNz
cyIpOwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVy
c1dpdGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xMDkw
LDcgKzEwOTAsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29u
c3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNv
bXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFj
a1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6
OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRp
b24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCBmYmNjNjIzLi4yNTI3NDRiIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3Iu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAKQEAgLTU1LDE5ICs1NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwogICAgICAgICAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQot
ICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0
aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBB
U1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICAgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBh
dGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxl
KTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3Jt
RmlsZUhhbmRsZSk7CiAgICAgICAgIAotICAgICAgICBpbnQgcmMgPSB3cml0ZVRvRmlsZShoYW5k
bGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0
YS5sZW5ndGgoKSk7CisgICAgICAgIGludCByYyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhh
bmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRvclRlc3RE
YXRhLmxlbmd0aCgpKTsKICAgICAgICAgQVNTRVJUX05FKHJjLCAtMSk7CiAgICAgICAgIAotICAg
ICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIH0KICAgICAKICAgICBjb25zdCBTdHJp
bmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9CkBAIC0xMTQsMTkg
KzExNCwxOSBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJpbmcm
IHBhdGgpCiB7CiAgICAgY29uc3RleHByIGludCBidWZmZXJTaXplID0gMTAyNDsKIAotICAgIGF1
dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvclJlYWQpOwotICAgIGlmICghaXNIYW5k
bGVWYWxpZChzb3VyY2UpKQorICAgIGF1dG8gc291cmNlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
cGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChzb3VyY2UpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAg
IFN0cmluZ0J1ZmZlcjxMQ2hhcj4gYnVmZmVyKGJ1ZmZlclNpemUpOwogCiAgICAgYXV0byBmaWxl
Q2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2VdKCkgewotICAgICAgICBQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNvdXJjZTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfSk7CiAKICAgICAv
LyBTaW5jZSB3ZSBjb250cm9sIHRoZSB0ZXN0IGZpbGVzLCB3ZSBrbm93IHdlIG9ubHkgbmVlZCBv
bmUgcmVhZAotICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUoc291cmNlLCByZWludGVy
cHJldF9jYXN0PGNoYXIqPihidWZmZXIuY2hhcmFjdGVycygpKSwgYnVmZmVyU2l6ZSk7CisgICAg
aW50IHJlYWRCeXRlcyA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShzb3VyY2UsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5jaGFyYWN0ZXJzKCkpLCBidWZmZXJTaXplKTsKICAgICBp
ZiAocmVhZEJ5dGVzIDwgMCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKQEAgLTE0
Miw3ICsxNDIsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09mRmlsZShjb25zdCBTdHJp
bmcmIHBhdGgpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkKIHsKLSAg
ICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RS
VUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9v
cDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTE4NCw3ICsxODQsNyBAQCBURVNUX0Yo
RmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2UpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3Qs
IERldGVjdE11bHRpcGxlQ2hhbmdlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRl
bXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0
ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7
CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0
aXBsZUNoYW5nZXMpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQog
ewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBS
dW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMjgzLDcgKzI4Myw3IEBAIFRF
U1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogCiBURVNUX0YoRmlsZU1vbml0
b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogewotICAgIEVYUEVDVF9UUlVFKGZp
bGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFp
blJ1bkxvb3AoKTsKIApAQCAtMzQwLDcgKzM0MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3Qs
IERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERl
dGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiB7Ci0gICAgRVhQRUNUX1RSVUUoZmls
ZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAogICAgIFJ1bkxvb3A6OmluaXRpYWxpemVNYWlu
UnVuTG9vcCgpOwogCkBAIC0zNzcsMTIgKzM3NywxMiBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0
LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogICAgIHJlc2V0VGVzdFN0YXRl
KCk7CiAKICAgICB0ZXN0UXVldWUtPmRpc3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICAgICAgRVhQ
RUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAotICAg
ICAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBPcGVuRm9yV3JpdGUp
OwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsK
KyAgICAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgo
KSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwg
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKLSAgICAgICAgaW50IHJj
ID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCks
IEZpbGVNb25pdG9yVGVzdERhdGEubGVuZ3RoKCkpOworICAgICAgICBpbnQgcmMgPSBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEo
KSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVF9ORShyYywg
LTEpOwogCiAgICAgICAgIGF1dG8gZmlyc3RDb21tYW5kID0gY3JlYXRlQ29tbWFuZCh0ZW1wRmls
ZVBhdGgoKSwgRmlsZU1vbml0b3JSZXZpc2VkRGF0YSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKaW5kZXggN2Y2Zjk3NC4uZjI1ODY2OSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVTeXN0ZW0u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNw
cApAQCAtNDYsMzUgKzQ2LDM1IEBAIHB1YmxpYzoKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpOwogICAgICAgICAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgICAg
ICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IG9w
ZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICB3cml0ZVRv
RmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZpbGVTeXN0ZW1UZXN0RGF0
YSkpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmlsZVBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVtVGVzdERhdGEsIHN0cmxl
bihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhh
bmRsZSk7CiAKICAgICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRoID0gbV90ZW1wRmlsZVBhdGgg
KyAiLXN5bWxpbmsiOwotICAgICAgICBjcmVhdGVTeW1ib2xpY0xpbmsobV90ZW1wRmlsZVBhdGgs
IG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNyZWF0ZVN5bWJv
bGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKIAotICAgICAg
ICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBFbXB0eVRlc3RG
aWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1fdGVt
cEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5
VGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKIAotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZp
bGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhh
bmRsZSk7CisgICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOworICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX2JhbmdDb250YWlu
aW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0eSFUZXN0IUZpbGUiLCBo
YW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9iYW5nQ29udGFp
bmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkh
VGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRs
ZSk7CiAKLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOworICAg
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9CiAKICAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV90ZW1wRmlsZVBh
dGgpOwotICAgICAgICBkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7Ci0gICAgICAg
IGRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9z
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9iYW5nQ29udGFp
bmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3F1b3RlQ29udGFpbmluZ0ZpbGVQ
YXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVN5bWxpbmtQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZpbGVQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoKTsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2JhbmdDb250YWluaW5nRmlsZVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcXVvdGVDb250YWluaW5nRmlsZVBhdGgp
OwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQYXRoKCkgeyByZXR1cm4gbV90
ZW1wRmlsZVBhdGg7IH0KQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIFRFU1RfRihGaWxlU3lz
dGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICBN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9leGlzdGluZ19maWxlIiks
IHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX0ZBTFNF
KHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0YSk7CiB9CkBAIC0xMDQs
NyArMTA0LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5nTWlzc2luZ0ZpbGUpCiBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUpCiB7CiAgICAgYm9vbCBz
dWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKHRlbXBGaWxlUGF0aCgp
LCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0
YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CiAg
ICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7CiAgICAgRVhQRUNUX1RSVUUobWFwcGVk
RmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKQEAgLTExNCwy
NiArMTE0LDI2IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRmlsZSkK
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1wdHlGaWxlKQogewogICAg
IGJvb2wgc3VjY2VzczsKLSAgICBNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1w
dHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBt
YXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKICAgICBFWFBFQ1Rf
VFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmlsZURhdGEpOwogfQogCiBU
RVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUpCiB7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwgc3BhY2VDb250YWluaW5n
RmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVzSGF2ZVNhbWVWb2x1bWUoc3BhY2VD
b250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCgpKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCksIHF1
b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpm
aWxlc0hhdmVTYW1lVm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNvbnRhaW5pbmdGaWxlUGF0
aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNIYXZlU2FtZVZvbHVtZShz
cGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpLCBiYW5nQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKGJhbmdDb250YWlu
aW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkpOwogfQogCiBURVNUX0Yo
RmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmspCiB7Ci0gICAgYXV0byBzeW1s
aW5rTWV0YWRhdGEgPSBmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBh
dXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRhZGF0YSh0ZW1wRmlsZVN5
bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRhZGF0YS5oYXNfdmFsdWUo
KSk7CiAgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxl
TWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7CiAgICAgRVhQRUNUX0ZBTFNFKHN0YXRpY19j
YXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSA9PSBzdHJsZW4oRmls
ZVN5c3RlbVRlc3REYXRhKSk7CiAKLSAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gZmlsZU1ldGFk
YXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKKyAgICBhdXRvIHRh
cmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3Mo
dGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBBU1NFUlRfVFJVRSh0YXJnZXRNZXRhZGF0YS5o
YXNfdmFsdWUoKSk7CiAgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRhdGEudmFsdWUoKS50eXBl
ID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CiAgICAgRVhQRUNUX0VRKHN0cmxlbihGaWxl
U3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdldE1ldGFkYXRhLnZhbHVl
KCkubGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAzMmNlMzYxLi5iOTI4MzI0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAg
LTQxLDI2ICs0MSwyNiBAQCBwdWJsaWM6CiAgICAgICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJl
YWQoKTsKIAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBmaWxlCi0gICAgICAgIFBsYXRmb3JtRmls
ZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZp
bGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgICAgICBt
X3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZp
bGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAg
ICAgICAgCi0gICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5
RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRlc3QgRmlsZSIsIGhhbmRsZSk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9i
YW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXAhRW1wdHkhVGVz
dCFGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1f
YmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0
ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOwogICAgICAgICAKLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwot
ICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxl
UGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZp
bGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAg
ICB9CiAKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGRlbGV0
ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxlKG1fc3BhY2VDb250YWlu
aW5nRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0
aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOworICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCk7CiAgICAg
fQogICAgIAogICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQYXRoKCkgeyByZXR1cm4gbV90ZW1w
RmlsZVBhdGg7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCBhMjk3YTU1Li44ZmUzNTY3IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3Qu
Y3BwCkBAIC0zOCwxOSArMzgsMTkgQEAgdm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogCiAgICAgLy8gY3JlYXRlIHRlbXAgZmls
ZQotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgbV90ZW1wRmlsZVBhdGggPSBv
cGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICB3cml0ZVRvRmls
ZShoYW5kbGUsIHRlc3REYXRhKCksIHN0cmxlbih0ZXN0RGF0YSgpKSk7Ci0gICAgY2xvc2VGaWxl
KGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAg
ICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVz
dEZpbGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgdGVz
dERhdGEoKSwgc3RybGVuKHRlc3REYXRhKCkpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aGFuZGxlKTsKIAotICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgi
dGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAg
IG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVt
cEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5k
bGUpOwogfQogCiB2b2lkIFNoYXJlZEJ1ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKLSAgICBkZWxl
dGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsKLSAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBh
dGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFzZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggYTIw
YjM4My4uMmUyYzM5NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KQEAgLTQwLDIxICs0
MCwyMSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoRGF0YWJhc2VUcmFja2Vy
LCBEZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KQogewotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGU7Ci0gICAgU3RyaW5nIGRhdGFiYXNlRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgi
dGVtcEVtcHR5RGF0YWJhc2UiLCBoYW5kbGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgU3RyaW5nIGRhdGFi
YXNlRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5RGF0
YWJhc2UiLCBoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCiAg
ICAgbG9uZyBsb25nIGZpbGVTaXplOwotICAgIGdldEZpbGVTaXplKGRhdGFiYXNlRmlsZVBhdGgs
IGZpbGVTaXplKTsKKyAgICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShkYXRhYmFzZUZpbGVQYXRo
LCBmaWxlU2l6ZSk7CiAgICAgRVhQRUNUX0VRKDAsIGZpbGVTaXplKTsKIAogICAgIEVYUEVDVF9U
UlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eShkYXRhYmFzZUZp
bGVQYXRoKSk7CiAKLSAgICBib29sIGZpbGVTdGlsbEV4aXN0cyA9IGZpbGVFeGlzdHMoZGF0YWJh
c2VGaWxlUGF0aCk7CisgICAgYm9vbCBmaWxlU3RpbGxFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKGRhdGFiYXNlRmlsZVBhdGgpOwogICAgIEVYUEVDVF9GQUxTRShmaWxlU3RpbGxFeGlz
dHMpOwogCiAgICAgaWYgKGZpbGVTdGlsbEV4aXN0cykKLSAgICAgICAgZGVsZXRlRmlsZShkYXRh
YmFzZUZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkYXRhYmFzZUZp
bGVQYXRoKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKQEAgLTc4LDE5ICs3OCwxOSBA
QCBzdGF0aWMgdm9pZCBhZGRUb0RhdGFiYXNlc1RhYmxlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQ
YXRoLCBjb25zdCBTZWN1cml0eU9yaWdpbgogCiBzdGF0aWMgdm9pZCByZW1vdmVEaXJlY3RvcnlB
bmRBbGxDb250ZW50cyhjb25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiB7Ci0gICAgZm9yIChj
b25zdCBhdXRvJiBmaWxlIDogbGlzdERpcmVjdG9yeShkaXJlY3RvcnlQYXRoLCAiKiIpKQotICAg
ICAgICBFWFBFQ1RfVFJVRShkZWxldGVGaWxlKGZpbGUpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGZpbGUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgsICIqIikpCisg
ICAgICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpOwogCi0gICAg
aWYgKGZpbGVFeGlzdHMoZGlyZWN0b3J5UGF0aCkpCi0gICAgICAgIEVYUEVDVF9UUlVFKGRlbGV0
ZUVtcHR5RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgpKTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhkaXJlY3RvcnlQYXRoKSkKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpOwogfQogCiBzdGF0aWMgdm9pZCBj
cmVhdGVGaWxlQXRQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZUhhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmls
ZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVu
RmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIEVYUEVDVF9ORSgtMSwg
ZmlsZUhhbmRsZSk7Ci0gICAgY2xvc2VGaWxlKGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVF
KGZpbGVFeGlzdHMocGF0aCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpKTsKIH0KIAog
VEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbikKQEAgLTk5LDcgKzk5LDcgQEAgVEVT
VChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbikKICAgICAvLyB0YWJsZXMsIGFuZCBhbiBh
Y3R1YWwgZGF0YWJhc2Ugb24gZGlzay4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCBy
ZW1vdmUgdGhlIG9yaWdpbidzIGluZm9ybWF0aW9uIGZyb20gYm90aCB0aGUgT3JpZ2lucwogICAg
IC8vIGFuZCBEYXRhYmFzZXMgdGFibGVzLCBhbmQgcmVtb3ZlIHRoZSBkYXRhYmFzZSBmcm9tIGRp
c2suCi0gICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeShAIldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lz
dGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0
YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNl
VHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsK
QEAgLTEwOCwxNiArMTA4LDE2IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW4p
CiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVY
UEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsK
IAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmls
ZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRh
dGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0
YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25h
bWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdlYkRh
dGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBk
YXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwogCi0gICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIEVYUEVDVF9UUlVFKG1h
a2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0
cyhvcmlnaW5QYXRoKSk7CisgICAgU3RyaW5nIG9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAgICBTdHJpbmcgZnVsbFdlYkRhdGFiYXNlUGF0aCA9IGRh
dGFiYXNlVHJhY2tlci0+ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFt
ZSwgZmFsc2UpOwogICAgIGNyZWF0ZUZpbGVBdFBhdGgoZnVsbFdlYkRhdGFiYXNlUGF0aCk7CkBA
IC0xMjgsMTQgKzEyOCwxNCBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQog
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVs
ZXRlRGF0YWJhc2VGaWxlSWZFbXB0eShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNU
X1RSVUUoZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVF
KEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKICNlbHNlCi0g
ICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOwotICAgIEVY
UEVDVF9GQUxTRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX0ZB
TFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogI2VuZGlmCiAKICAgICBy
ZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAg
IEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkp
OwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRhdGFiYXNlRG9l
c05vdEV4aXN0KQpAQCAtMTQzLDcgKzE0Myw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVPcmlnaW5XaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiAgICAgLy8gVGVzdCB0aGUgY2FzZSB3
aGVyZSB0aGVyZSBpcyBhbiBlbnRyeSBpbiBib3RoIHRoZSBPcmlnaW5zIGFuZCBEYXRhYmFzZXMg
dGFibGVzLAogICAgIC8vIGJ1dCBub3QgYW4gYWN0dWFsIGRhdGFiYXNlIG9uIGRpc2suCiAgICAg
Ly8gVGhlIGluZm9ybWF0aW9uIHNob3VsZCBzdGlsbCBiZSByZW1vdmVkIGZyb20gdGhlIHRhYmxl
cy4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0
ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRh
YmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VU
cmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpA
QCAtMTUyLDE1ICsxNTIsMTUgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldo
ZW5EYXRhYmFzZURvZXNOb3RFeGlzdCkKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9y
aWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNr
ZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIi
KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmlu
ZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRh
YmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRh
YmFzZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBF
WFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmln
aW4pLnNpemUoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VGdWxsUGF0aCA9IGRhdGFiYXNl
VHJhY2tlci0+ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgZmFs
c2UpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKHdlYkRhdGFiYXNlRnVsbFBhdGgpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQ
YXRoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZU9yaWdpbihv
cmlnaW4pKTsKIApAQCAtMTY4LDcgKzE2OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVPcmlnaW5XaGVuRGF0YWJhc2VEb2VzTm90RXhpc3QpCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJh
c2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKIAogICAgIHJlbW92
ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CisgICAgRVhQRUNU
X0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9
CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJh
c2VGYWlscykKQEAgLTE3OCw3ICsxNzgsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRl
T3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMpCiAgICAgLy8gV2hlbiB3ZSBjYWxsIGRl
bGV0ZU9yaWdpbigpLCBkZWxldGluZyBvbmUgb2YgdGhlc2UgZGF0YWJhc2VzIGZhaWxzLgogICAg
IC8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkbid0IHJlbW92ZSB0aGUgaW5mb3JtYXRpb24gZnJv
bSBlaXRoZXIgdGhlIERhdGFiYXNlcyBvcgogICAgIC8vIE9yaWdpbnMgdGFibGVzLgotICAgIE5T
U3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJT
UUwiKTsKKyAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRl
VGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0
b3J5UGF0aCh3ZWJTUUxEaXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8RGF0YWJhc2VUcmFja2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXJXaXRoRGF0YWJhc2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0xODcsMTYg
KzE4NywxNiBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5n
QURhdGFiYXNlRmFpbHMpCiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUy
NDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmln
aW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAg
RVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJh
c2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1l
ID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRo
LCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VR
KCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXpl
KCkpOwogCi0gICAgU3RyaW5nIG9yaWdpblBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAg
IEVYUEVDVF9UUlVFKG1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CisgICAgU3RyaW5nIG9yaWdpblBhdGggPSBG
aWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAgICBTdHJpbmcgZnVsbFdlYkRh
dGFiYXNlUGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4s
IHdlYkRhdGFiYXNlTmFtZSwgZmFsc2UpOwogICAgIGNyZWF0ZUZpbGVBdFBhdGgoZnVsbFdlYkRh
dGFiYXNlUGF0aCk7CkBAIC0yMDksOCArMjA5LDggQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERl
bGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFzZUZhaWxzKQogCiAgICAgRVhQRUNUX0ZBTFNF
KGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlT3JpZ2luKG9yaWdpbikpOwogCi0gICAgRVhQRUNUX1RS
VUUoZmlsZUV4aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmls
ZUV4aXN0cyhvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRh
dGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25l
ZCkxLCBkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwpAQCAt
MjIxLDExICsyMjEsMTEgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5E
ZWxldGluZ0FEYXRhYmFzZUZhaWxzKQogICAgIGNoZmxhZ3MoZnVsbFdlYkRhdGFiYXNlUGF0aC51
dGY4KCkuZGF0YSgpLCAwKTsKICNlbmRpZgogCi0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRmlsZShm
dWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1wdHlEaXJlY3Rv
cnkob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
ZnVsbFdlYkRhdGFiYXNlUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0
ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFs
bENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVF
eGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJh
c2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkK
QEAgLTIzNCw3ICsyMzQsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2l0
aE1pc3NpbmdFbnRyeUluRGF0YWJhc2VzVGFibGUpCiAgICAgLy8gdGhlIERhdGFiYXNlcyB0YWJs
ZS4gVGhlcmUgaXMgYW4gYWN0dWFsIGRhdGFiYXNlIG9uIGRpc2suCiAgICAgLy8gVGhlIGluZm9y
bWF0aW9uIHNob3VsZCBzdGlsbCBiZSByZW1vdmVkIGZyb20gdGhlIE9yaWdpbnMgdGFibGUsIGFu
ZCB0aGUKICAgICAvLyBkYXRhYmFzZSBzaG91bGQgYmUgZGVsZXRlZCBmcm9tIGRpc2suCi0gICAg
TlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldl
YlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVh
dGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6
dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTI0Mywy
OCArMjQzLDI4IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaXRoTWlzc2lu
Z0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9y
aWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNr
ZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIi
KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmlu
ZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRh
dGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7CiAKLSAgICBT
dHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVj
dG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RSVUUo
bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhp
c3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKG9yaWdpblBhdGgpKTsKIAotICAgIFN0cmluZyB3ZWJEYXRhYmFzZVBhdGggPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQob3JpZ2luUGF0aCwgImRhdGFiYXNlLmRiIik7CisgICAgU3Ry
aW5nIHdlYkRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChvcmlnaW5QYXRoLCAiZGF0YWJhc2UuZGIiKTsKICAgICBjcmVhdGVGaWxlQXRQYXRoKHdlYkRh
dGFiYXNlUGF0aCk7CiAKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZU9y
aWdpbihvcmlnaW4pKTsKIAotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKHdlYkRhdGFiYXNl
UGF0aCkpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZVBhdGgpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAg
ICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5pc0VtcHR5KCkpOwogICAg
IEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1w
dHkoKSk7CiAKICAgICByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVj
dG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJh
c2UpCkBAIC0yNzIsNyArMjcyLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFi
YXNlKQogICAgIC8vIFRlc3QgdGhlIGV4cGVjdGVkIGNhc2UuIFRoZXJlIGlzIGFuIGVudHJ5IGlu
IHRoZSBEYXRhYmFzZXMgdGFibGUKICAgICAvLyBhbmQgYSBkYXRhYmFzZSBvbiBkaXNrLiBBZnRl
ciB0aGUgZGVsZXRpb24sIHRoZSBkYXRhYmFzZSBzaG91bGQgYmUgZGVsZXRlZAogICAgIC8vIGZy
b20gZGlzaywgYW5kIHRoZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgZ29uZSBmcm9tIHRoZSBEYXRh
YmFzZXMgdGFibGUuCi0gICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAIldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBT
dHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9
IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoKTsKQEAgLTI4MSwxNiArMjgxLDE2IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVEYXRhYmFzZSkKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4
MCk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMo
KS5zaXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBF
Q1RfVFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBh
dGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAi
ZGF0YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9y
aWdpbiwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVu
c2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7
CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQ
RUNUX1RSVUUobWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6
bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJh
c2VQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2Vi
RGF0YWJhc2VOYW1lLCBmYWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJh
c2VQYXRoKTsKQEAgLTMwMSwyMCArMzAxLDIwIEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVEYXRhYmFzZSkKICNpZiBQTEFURk9STShJT1MpCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VU
cmFja2VyOjpkZWxldGVEYXRhYmFzZUZpbGVJZkVtcHR5KGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsK
ICNlbHNlCi0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZnVsbFdlYkRhdGFiYXNlUGF0aCkp
OworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFz
ZVBhdGgpKTsKICNlbmRpZgogCiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRy
YWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShvcmlnaW5QYXRoKSk7CiAgICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29u
dGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0
cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZURhdGFiYXNlV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQogewogICAgIC8v
IFRlc3QgdGhlIGNhc2Ugd2hlcmUgd2UgdHJ5IHRvIGRlbGV0ZSBhIGRhdGFiYXNlIHRoYXQgZG9l
c24ndCBleGlzdCBvbiBkaXNrLgogICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZW1vdmUgdGhlIGRh
dGFiYXNlIGluZm9ybWF0aW9uIGZyb20gdGhlIERhdGFiYXNlcyB0YWJsZS4KLSAgICBOU1N0cmlu
ZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7
CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBh
dGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERh
dGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
V2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAtMzIzLDIxICszMjMs
MjEgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlV2hlbkRhdGFiYXNlRG9l
c05vdEV4aXN0KQogICAgIGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgw
KTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygp
LnNpemUoKSk7CiAKLSAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAgIEVYUEVD
VF9UUlVFKGZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0
aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9y
eVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKGRhdGFiYXNlUGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJk
YXRhYmFzZV9uYW1lIjsKICAgICBhZGRUb0RhdGFiYXNlc1RhYmxlKGRhdGFiYXNlUGF0aCwgb3Jp
Z2luLCB3ZWJEYXRhYmFzZU5hbWUsICJkYXRhYmFzZS5kYiIpOwogICAgIEVYUEVDVF9FUSgodW5z
aWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuc2l6ZSgpKTsK
IAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZUZ1bGxQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxs
UGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxzZSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKGZpbGVFeGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0aCkpOworICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNlRnVsbFBhdGgpKTsKIAogICAg
IEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+ZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCB3ZWJE
YXRhYmFzZU5hbWUpKTsKICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNl
TmFtZXMob3JpZ2luKS5pc0VtcHR5KCkpOwogCiAgICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29u
dGVudHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0
cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRG
T1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWQubW0KaW5kZXggNzQ4NjY1Yy4uMmFjOGI1NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC05MiwxMCArOTIsMTAg
QEAgc3RhdGljIGJvb2wgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBF
WFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2Fk
LCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRs
ZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoIlRl
c3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9
IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OmNsb3Nl
RmlsZShmaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5
c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAg
ICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQ
bGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rl
c3RpbmF0aW9uUGF0aDsKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgYm9vbCBleHBlY3RlZFVz
ZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwogICAgIEVYUEVDVF9FUShleHBlY3RlZFVzZXJJbml0
aWF0ZWRTdGF0ZSwgZG93bmxvYWQud2FzVXNlckluaXRpYXRlZCk7CiAgICAgRVhQRUNUX1RSVUUo
X2V4cGVjdGVkQ29udGVudExlbmd0aCA9PSBOU1VSTFJlc3BvbnNlVW5rbm93bkxlbmd0aCB8fCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oX2V4cGVjdGVkQ29udGVudExlbmd0aCkgPT0gX3JlY2VpdmVk
Q29udGVudExlbmd0aCk7CiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjb250ZW50c0VxdWFsQXRQYXRoOl9kZXN0aW5hdGlvblBhdGggYW5kUGF0aDpbc291
cmNlVVJMIHBhdGhdXSk7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRo
KTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgp
OwogICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTM5MywxMCArMzkzLDEwIEBAIFRFU1QoX1dL
RG93bmxvYWQsIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93bmxvYWRXaXRoTG9h
ZGVkQ29udGVudCkKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBF
WFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6b3Bl
blRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1Rf
VFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwot
ICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRo
ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEki
LCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlF
UzsKICAgICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTQxMCw3ICs0MTAsNyBAQCBURVNU
KF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERpcmVjdERvd25sb2FkV2l0
aExvYWRlZENvbnRlbnQpCiAgICAgTlNTdHJpbmcqIGV4cGVjdGVkQ29udGVudCA9IEAie1wieFwi
OjQyLFwic1wiOlwiaGVsbG8sIHdvcmxkXCJ9IjsKICAgICBOU0RhdGEqIGV4cGVjdGVkRGF0YSA9
IFtleHBlY3RlZENvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
OwogICAgIEVYUEVDVF9UUlVFKFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRl
bnRzQXRQYXRoOl9kZXN0aW5hdGlvblBhdGhdIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhXSk7
Ci0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9
IHRydWU7CiB9CiAKQEAgLTQ2NiwxMCArNDY2LDEwIEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25s
b2FkUmVxdWVzdEJsb2JVUkwpCiAKIC0gKE5TU3RyaW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0
cmluZyAqKWZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOihCT09MICopYWxsb3dPdmVyd3JpdGUKIHsK
LSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGlu
YXRpb25QYXRoID0gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBm
aWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxlSGFuZGxl
KTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRs
ZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBv
cmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShm
aWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5k
bGUpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAg
ICAqYWxsb3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CiB9
CkBAIC00OTYsNyArNDk2LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0Qmxv
YlVSTCkKICAgICBpZiAocmVkaXJlY3RDaGFpbi5jb3VudCA+IDIpCiAgICAgICAgIEVYUEVDVF9T
VFJFUSgiaHR0cDovL3Bhc3MvIiwgW3JlZGlyZWN0Q2hhaW5bMl0uYWJzb2x1dGVTdHJpbmcgVVRG
OFN0cmluZ10pOwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsK
KyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwog
ICAgIGlzRG9uZSA9IHRydWU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325786</attachid>
            <date>2017-11-02 15:53:02 -0700</date>
            <delta_ts>2017-11-02 19:33:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-179063-20171102155300.patch</filename>
            <type>text/plain</type>
            <size>315057</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjgzMjgzZmJjOTk0MGNk
MDQwMTk4OGVkOWJiMDM0YTgxMjQwMTBiMy4uN2RkN2ZiYjk2MzQyZmRhZWZhMTA3ZDMwNDhlYTE3
OTU5MDQxZmUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDE3LTExLTAyICBDaHJp
c3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBBZGQgYSBGaWxl
U3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgQWRkaW5nIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2Ugc28gaXRzIGZ1bmN0
aW9ucyBhcmVuJ3QgZ2xvYmFsIGluIFdlYkNvcmUuCisKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAqIE1v
ZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2Vu
dHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luTG9jay5jcHA6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9Pcmln
aW5Mb2NrLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAgKiBmaWxlYXBp
L0ZpbGVDb2NvYS5tbToKKyAgICAgICAgKiBodG1sL0ZpbGVMaXN0Q3JlYXRvci5jcHA6CisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICogcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL0ZpbGVIYW5kbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxl
U3RyZWFtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmg6CisgICAgICAgICog
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHA6IEFkZGVkIEZpbGVTeXN0ZW0gbmFtZXNwYWNlCisgICAg
ICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOiBBZGRlZCBGaWxlU3lzdGVtIG5hbWVzcGFjZQor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcDog
QWRkZWQgRmlsZVN5c3RlbSBuYW1lc3BhY2UKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9GaWxl
TW9uaXRvckNvY29hLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL0ZpbGVTeXN0ZW1Db2Nv
YS5tbTogQWRkZWQgRmlsZVN5c3RlbSBuYW1lc3BhY2UKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGli
L0ZpbGVNb25pdG9yR0xpYi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVt
R2xpYi5jcHA6IEFkZGVkIEZpbGVTeXN0ZW0gbmFtZXNwYWNlCisgICAgICAgICogcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lvbi5tbToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRElCUGl4ZWxEYXRhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vaW9zL1F1aWNrTG9vay5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
RmlsZVN5c3RlbU1hYy5tbTogQWRkZWQgRmlsZVN5c3RlbSBuYW1lc3BhY2UKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1E
YXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW06CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHA6IEFkZGVkIEZpbGVTeXN0ZW0g
bmFtZXNwYWNlCisgICAgICAgICogcGxhdGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3Bw
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwOiBBZGRlZCBGaWxlU3lzdGVtIG5hbWVz
cGFjZQorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHA6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcDoKKwogMjAxNy0xMS0wMiAgSm9obiBXaWxhbmRl
ciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJZ25vcmUgSFNUUyBmb3IgcGFydGl0
aW9uZWQsIGNyb3NzLW9yaWdpbiBzdWJyZXNvdXJjZSByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5
L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggNmFlYmIxZmQ0MDRlMDMwMDA1NWIwZjA0
NmM1MDMzZGZjYzBjMDcwZi4uN2VmYjc5ZDU1M2ZjZjg2ODg3NjU5NzMwZGQ4ZGRkNDUyM2JkNTQ1
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdh
Y3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNlc3Npb24uY3BwCkBAIC0yMzEs
NyArMjMxLDcgQEAgU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6bWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0CiAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2Vj
dXJpdHlPcmlnaW4oZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0
b3JhZ2VEaXJlY3RvcnksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKGRv
Y3VtZW50LT5zZWN1cml0eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIGJv
b2wgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbnRyaWVzYXBpL0RPTUZpbGVTeXN0ZW0uY3Bw
CmluZGV4IDZkMmViODg1MmM0ZDczOTZkOTdmZTE4YmMyODFlNzFjNmE0NDQyYjcuLjhlNTA2NmRk
ZWQxZDZkYTlmMzFjYjhiZDg1ODRjMTg4YjkyZjE1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW50cmllc2FwaS9ET01GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VudHJpZXNhcGkvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTQ4LDE3ICs0OCwx
NyBAQCBzdHJ1Y3QgTGlzdGVkQ2hpbGQgewogc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3RvcjxMaXN0
ZWRDaGlsZD4+IGxpc3REaXJlY3RvcnlXaXRoTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIWZpbGVJc0RpcmVj
dG9yeShmdWxsUGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgIGlmICgh
RmlsZVN5c3RlbTo6ZmlsZUlzRGlyZWN0b3J5KGZ1bGxQYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRG
b2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RG
b3VuZEVycm9yLCAiUGF0aCBubyBsb25nZXIgZXhpc3RzIG9yIGlzIG5vIGxvbmdlciBhIGRpcmVj
dG9yeSIgfTsKIAotICAgIGF1dG8gY2hpbGRQYXRocyA9IGxpc3REaXJlY3RvcnkoZnVsbFBhdGgs
ICIqIik7CisgICAgYXV0byBjaGlsZFBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShm
dWxsUGF0aCwgIioiKTsKICAgICBWZWN0b3I8TGlzdGVkQ2hpbGQ+IGxpc3RlZENoaWxkcmVuOwog
ICAgIGxpc3RlZENoaWxkcmVuLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY2hpbGRQYXRocy5zaXpl
KCkpOwogICAgIGZvciAoYXV0byYgY2hpbGRQYXRoIDogY2hpbGRQYXRocykgewotICAgICAgICBh
dXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CisgICAgICAgIGF1dG8gbWV0
YWRhdGEgPSBGaWxlU3lzdGVtOjpmaWxlTWV0YWRhdGEoY2hpbGRQYXRoKTsKICAgICAgICAgaWYg
KCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1ZSgpLmlzSGlkZGVuKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChMaXN0ZWRDaGls
ZCB7IHBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5cGUgfSk7
CisgICAgICAgIGxpc3RlZENoaWxkcmVuLnVuY2hlY2tlZEFwcGVuZChMaXN0ZWRDaGlsZCB7IEZp
bGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShjaGlsZFBhdGgpLCBtZXRhZGF0YS52YWx1ZSgpLnR5
cGUgfSk7CiAgICAgfQogICAgIHJldHVybiBXVEZNb3ZlKGxpc3RlZENoaWxkcmVuKTsKIH0KQEAg
LTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlkVmlydHVhbFBhdGgoU3RyaW5nVmll
dyB2aXJ0dWFsUGF0aCkKIERPTUZpbGVTeXN0ZW06OkRPTUZpbGVTeXN0ZW0oUmVmPEZpbGU+JiYg
ZmlsZSkKICAgICA6IG1fbmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCiAgICAgLCBt
X2ZpbGUoV1RGTW92ZShmaWxlKSkKLSAgICAsIG1fcm9vdFBhdGgoZGlyZWN0b3J5TmFtZShtX2Zp
bGUtPnBhdGgoKSkpCisgICAgLCBtX3Jvb3RQYXRoKEZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUo
bV9maWxlLT5wYXRoKCkpKQogICAgICwgbV93b3JrUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIkRP
TUZpbGVTeXN0ZW0gd29yayBxdWV1ZSIpKQogewogICAgIEFTU0VSVCghbV9yb290UGF0aC5lbmRz
V2l0aCgnLycpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8U3RyaW5n
PiB2YWxpZGF0ZVBhdGhJc0V4cGVjdGVkVHlwZShjb25zdCBTdHJpbmcmIGZ1bGxQYXRoLCBTdAog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byBtZXRhZGF0YSA9IGZp
bGVNZXRhZGF0YShmdWxsUGF0aCk7CisgICAgYXV0byBtZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZp
bGVNZXRhZGF0YShmdWxsUGF0aCk7CiAgICAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS52YWx1
ZSgpLmlzSGlkZGVuKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90Rm91bmRFcnJvciwg
QVNDSUlMaXRlcmFsKCJQYXRoIGRvZXMgbm90IGV4aXN0IikgfTsKIApAQCAtMTc5LDcgKzE3OSw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxTdHJpbmc+IHZhbGlkYXRlUGF0aElzRXhwZWN0ZWRUeXBl
KGNvbnN0IFN0cmluZyYgZnVsbFBhdGgsIFN0CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVN
ZXRhZGF0YTo6VHlwZT4gZmlsZVR5cGUoY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKIHsKLSAgICBh
dXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRhKGZ1bGxQYXRoKTsKKyAgICBhdXRvIG1ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGZ1bGxQYXRoKTsKICAgICBpZiAoIW1ldGFkYXRh
IHx8IG1ldGFkYXRhLnZhbHVlKCkuaXNIaWRkZW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgcmV0dXJuIG1ldGFkYXRhLnZhbHVlKCkudHlwZTsKQEAgLTIzNiw3ICsyMzYsNyBA
QCBTdHJpbmcgRE9NRmlsZVN5c3RlbTo6ZXZhbHVhdGVQYXRoKFN0cmluZ1ZpZXcgdmlydHVhbFBh
dGgpCiAgICAgICAgIHJlc29sdmVkQ29tcG9uZW50cy5hcHBlbmQoY29tcG9uZW50KTsKICAgICB9
CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3RQYXRoLCByZXNv
bHZlZENvbXBvbmVudHMpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnRzKG1fcm9vdFBhdGgsIHJlc29sdmVkQ29tcG9uZW50cyk7CiB9CiAKIHZvaWQgRE9N
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkmIGRpcmVjdG9yeSwgRGlyZWN0b3J5TGlzdGluZ0Nh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VudHJpZXNhcGkvRmlsZVN5c3RlbUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW50cmllc2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCmluZGV4IGI2YmJjNjNhNjM2NjVj
NWQzMjQ4ZWU0ZTZhYWM2YjAwNTUwOWQxODQuLmRjY2I1YTExODYzZDliYjEwZjI4N2Q1N2ZkYzEz
OWEwYjliMWIxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmllc2Fw
aS9GaWxlU3lzdGVtRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW50cmll
c2FwaS9GaWxlU3lzdGVtRW50cnkuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIEZpbGVTeXN0ZW1FbnRyeTo6RmlsZVN5c3RlbUVudHJ5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIERPTUZpbGVTeXN0ZW0mIGZpbGVzeXN0ZW0sIGNvbnN0IFN0cmluZyYg
dmlydHVhbFBhdGgpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2Zp
bGVzeXN0ZW0oZmlsZXN5c3RlbSkKLSAgICAsIG1fbmFtZShwYXRoR2V0RmlsZU5hbWUodmlydHVh
bFBhdGgpKQorICAgICwgbV9uYW1lKEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZSh2aXJ0dWFs
UGF0aCkpCiAgICAgLCBtX3ZpcnR1YWxQYXRoKHZpcnR1YWxQYXRoKQogewogICAgIHN1c3BlbmRJ
Zk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VJZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlSWRlbnRpZmllci5jcHAKaW5kZXggZDk0NmJlNDNmMWYzZTE1NTRkMjYx
YWUwYWVmY2VkNTEwMTMwNGI5Ni4uOGJiODgwNTBiMDMxNzA3YjEyZjJlNmE5ZjQ3ZWRiNzhiZWY1
YjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUlkZW50aWZpZXIuY3BwCkBAIC02MywxMyArNjMsMTMgQEAgU3RyaW5nIElE
QkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25z
dCBTdHJpbmcmIHJvb3QKIAogU3RyaW5nIElEQkRhdGFiYXNlSWRlbnRpZmllcjo6ZGF0YWJhc2VE
aXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcExldmVs
T3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIGNvbnN0IFN0
cmluZyYgcm9vdERpcmVjdG9yeSkKIHsKLSAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0g
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksIHRvcExldmVsT3JpZ2luLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICBTdHJpbmcgbWFpbkZyYW1lRGlyZWN0b3J5ID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJvb3REaXJlY3RvcnksIHRvcExldmVs
T3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIAogICAgIC8vIElmIHRoZSBvcGVuaW5nIG9y
aWdpbiBhbmQgbWFpbiBmcmFtZSBvcmlnaW5zIGFyZSB0aGUgc2FtZSwgdGhlcmUgaXMgbm8gcGFy
dGl0aW9uaW5nLgogICAgIGlmIChvcGVuaW5nT3JpZ2luID09IHRvcExldmVsT3JpZ2luKQogICAg
ICAgICByZXR1cm4gbWFpbkZyYW1lRGlyZWN0b3J5OwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtYWluRnJhbWVEaXJlY3RvcnksIG9wZW5pbmdPcmlnaW4uZGF0YWJhc2VJ
ZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobWFpbkZyYW1lRGlyZWN0b3J5LCBvcGVuaW5nT3JpZ2luLmRhdGFiYXNlSWRlbnRpZmll
cigpKTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggNjgxY2U4YWI2Y2E3
YTg4NjE1MGFlODBjYjk5ZmVhYTdmY2Q0NmM4OC4uYWJjNjE5MzY2ZmZiNWNlNGIwYTdhNmYwMGIz
NDBkNmNiZDYwOGM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTQ2NiwxMSArNDY2LDExIEBAIHZvaWQgSURC
U2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwKIHsKICAgICBTdHJpbmcgZGlyZWN0b3J5ID0gSURCRGF0YWJhc2VJZGVu
dGlmaWVyOjpkYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KG1haW5GcmFtZU9yaWdpbiwg
b3BlbmluZ09yaWdpbiwgbV9kYXRhYmFzZURpcmVjdG9yeVBhdGgpOwogCi0gICAgVmVjdG9yPFN0
cmluZz4gZW50cmllcyA9IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIioi
KSk7CisgICAgVmVjdG9yPFN0cmluZz4gZW50cmllcyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkoZGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIioiKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gZGF0
YWJhc2VzOwogICAgIGRhdGFiYXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGVudHJpZXMuc2l6
ZSgpKTsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogZW50cmllcykgewotICAgICAgICBTdHJpbmcg
ZW5jb2RlZE5hbWUgPSBsYXN0Q29tcG9uZW50T2ZQYXRoSWdub3JpbmdUcmFpbGluZ1NsYXNoKGVu
dHJ5KTsKKyAgICAgICAgU3RyaW5nIGVuY29kZWROYW1lID0gRmlsZVN5c3RlbTo6bGFzdENvbXBv
bmVudE9mUGF0aElnbm9yaW5nVHJhaWxpbmdTbGFzaChlbnRyeSk7CiAgICAgICAgIGRhdGFiYXNl
cy51bmNoZWNrZWRBcHBlbmQoU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9t
RW5jb2RlZEZpbGVuYW1lKGVuY29kZWROYW1lKSk7CiAgICAgfQogCkBAIC01ODEsMTQgKzU4MSwx
NCBAQCB2b2lkIElEQlNlcnZlcjo6Y2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JPcmlnaW5zKGNv
bnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdAogCiBzdGF0aWMgdm9pZCByZW1vdmVBbGxEYXRh
YmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQogewotICAgIFZlY3RvcjxT
dHJpbmc+IGRhdGFiYXNlUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7Cisg
ICAgVmVjdG9yPFN0cmluZz4gZGF0YWJhc2VQYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkob3JpZ2luUGF0aCwgIioiKTsKIAogICAgIGZvciAoYXV0byYgZGF0YWJhc2VQYXRoIDogZGF0
YWJhc2VQYXRocykgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VGaWxlID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlUGF0aCwgIkluZGV4ZWREQi5zcWxpdGUzIik7CisgICAgICAg
IFN0cmluZyBkYXRhYmFzZUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGF0YWJhc2VQYXRoLCAiSW5kZXhlZERCLnNxbGl0ZTMiKTsKIAotICAgICAgICBpZiAobW9k
aWZpZWRTaW5jZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigp
ICYmIGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgeworICAgICAgICBpZiAobW9kaWZpZWRTaW5j
ZSA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpICYmIEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlKSkgewogICAgICAgICAgICAgdGltZV90IG1v
ZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgICAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1l
KGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9uVGltZSkpCisgICAgICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGRhdGFiYXNlRmlsZSwgbW9kaWZpY2F0aW9u
VGltZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpmcm9tX3RpbWVfdChtb2RpZmljYXRpb25UaW1lKSA8IG1v
ZGlmaWVkU2luY2UpCkBAIC02MDYsMTEgKzYwNiwxMSBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxE
YXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3RkOjpjaHJv
bgogICAgICAgICAvLwogICAgICAgICAvLyBJbmRleGVkREIgYmxvYiBmaWxlcyBhcmUgbmFtZWQg
Ik4uYmxvYiIgd2hlcmUgTiBpcyBhIGRlY2ltYWwgaW50ZWdlciwKICAgICAgICAgLy8gc28gdGhv
c2UgYXJlIHRoZSBvbmx5IGJsb2IgZmlsZXMgd2Ugc2hvdWxkIGJlIHRyeWluZyB0byBkZWxldGUu
Ci0gICAgICAgIGZvciAoYXV0byYgYmxvYlBhdGggOiBsaXN0RGlyZWN0b3J5KGRhdGFiYXNlUGF0
aCwgIlswLTldKi5ibG9iIikpIHsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iUGF0aCA6IEZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkoZGF0YWJhc2VQYXRoLCAiWzAtOV0qLmJsb2IiKSkgewogICAg
ICAgICAgICAgLy8gR2xvYmJpbmcgY2FuJ3QgZ2l2ZSB1cyBvbmx5IGZpbGVuYW1lcyBzdGFydGlu
ZyB3aXRoIDEtb3ItbW9yZSBkaWdpdHMuCiAgICAgICAgICAgICAvLyBUaGUgYWJvdmUgZ2xvYmJp
bmcgZ2l2ZXMgdXMgZmlsZXMgdGhhdCBzdGFydCB3aXRoIGEgZGlnaXQgYW5kIGVuZHMgd2l0aCAi
LmJsb2IiLCBidXQgdGhlcmUgbWlnaHQgYmUgbm9uLWRpZ2l0cyBpbiBiZXR3ZWVuLgogICAgICAg
ICAgICAgLy8gV2UgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IGVhY2ggZmlsZW5hbWUgY29udGFpbnMg
b25seSBkaWdpdHMgYmVmb3JlIGRlbGV0aW5nIGl0LCBhcyBhbnkgb3RoZXIgZmlsZXMgYXJlIG5v
dCBvbmVzIHdlIHB1dCB0aGVyZS4KLSAgICAgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IHBhdGhH
ZXRGaWxlTmFtZShibG9iUGF0aCk7CisgICAgICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoYmxvYlBhdGgpOwogICAgICAgICAgICAgYXV0byBmaWxl
bmFtZUxlbmd0aCA9IGZpbGVuYW1lLmxlbmd0aCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoZmls
ZW5hbWVMZW5ndGggPj0gNik7CkBAIC02MzAsMjQgKzYzMCwyNCBAQCBzdGF0aWMgdm9pZCByZW1v
dmVBbGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgc3Rk
OjpjaHJvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAodmFsaWRGaWxlbmFtZSkK
LSAgICAgICAgICAgICAgICBkZWxldGVGaWxlKGJsb2JQYXRoKTsKKyAgICAgICAgICAgICAgICBG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGJsb2JQYXRoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IE5vdyBkZWxldGUgSW5kZXhlZERCLnNxbGl0ZTMgYW5kIHJlbGF0ZWQgU1FMaXRlIGZpbGVzLgog
ICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoZGF0YWJhc2VGaWxl
KTsKIAogICAgICAgICAvLyBBbmQgZmluYWxseSwgaWYgd2UgY2FuLCBkZWxldGUgdGhlIGVtcHR5
IGRpcmVjdG9yeS4KLSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGF0YWJhc2VQYXRoKTsK
ICAgICB9CiAKICAgICAvLyBJZiBubyBkYXRhYmFzZXMgcmVtYWluIGZvciB0aGlzIG9yaWdpbiwg
d2UgY2FuIGRlbGV0ZSB0aGUgb3JpZ2luIGRpcmVjdG9yeSBhcyB3ZWxsLgotICAgIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGly
ZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5k
RGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgaWYg
KCFtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmVjdG9yPFN0
cmluZz4gb3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCAiKiIpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeVBhdGgsICIqIik7CiAgICAgICAgIGZv
ciAoYXV0byYgb3JpZ2luUGF0aCA6IG9yaWdpblBhdGhzKQogICAgICAgICAgICAgcmVtb3ZlQWxs
RGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCBtb2RpZmllZFNpbmNlKTsKICAgICB9
CkBAIC02NTksNyArNjU5LDcgQEAgdm9pZCBJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFuZERlbGV0
ZURhdGFiYXNlc0Zvck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3IKIHsKICAgICBpZiAo
IW1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKLSAgICAgICAgICAgIFN0cmluZyBvcmlnaW5QYXRo
ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmln
aW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgICAgICAgICAgU3RyaW5nIG9yaWdpblBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9y
eVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiAgICAgICAgICAgICByZW1vdmVB
bGxEYXRhYmFzZXNGb3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ6Om1pbigpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXggYjI5ZjMwYmViMzhkNTU3OGVjNzY0Zjc4ZDU5MjAz
NThhYzk5ZjM3Yi4uOWZmOGMwZjMxOTIwZjJmYWYyM2U0ZDRkNGY4MjA1NGJkMzJkMTMyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKQEAgLTc0NCw3ICs3NDQsNyBAQCBTdHJp
bmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZU5hbWVGcm9tRW5jb2RlZEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYgZW5jbwogICAgIFN0cmluZyBwYXJ0aWFsbHlEZWNvZGVkID0gZW5jb2Rl
ZE5hbWU7CiAgICAgcGFydGlhbGx5RGVjb2RlZC5yZXBsYWNlKEFTQ0lJTGl0ZXJhbCgiJTJFIiks
IEFTQ0lJTGl0ZXJhbCgiLiIpKTsKIAotICAgIHJldHVybiBkZWNvZGVGcm9tRmlsZW5hbWUocGFy
dGlhbGx5RGVjb2RlZCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmRlY29kZUZyb21GaWxlbmFt
ZShwYXJ0aWFsbHlEZWNvZGVkKTsKIH0KIAogU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSBjb25zdApAQCAtNzU0LDcgKzc1NCw3IEBAIFN0cmlu
ZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkgY29uc3QK
ICAgICBpZiAobV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuICIlMDAiOwogCi0gICAgU3RyaW5nIGZpbGVuYW1lID0gZW5jb2RlRm9yRmlsZU5hbWUo
bV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpKTsKKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBGaWxl
U3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShtX2lkZW50aWZpZXIuZGF0YWJhc2VOYW1lKCkpOwog
ICAgIGZpbGVuYW1lLnJlcGxhY2UoJy4nLCAiJTJFIik7CiAKICAgICByZXR1cm4gZmlsZW5hbWU7
CkBAIC03NjQsMTQgKzc2NCwxNCBAQCBTdHJpbmcgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpmdWxs
RGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRh
dGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9hYnNvbHV0ZURhdGFiYXNlRGlyZWN0b3J5LCBmaWxlbmFtZUZvckRhdGFiYXNlTmFt
ZSgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1f
YWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7CiB9
CiAKIFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZVBhdGgoKSBjb25z
dAogewogICAgIEFTU0VSVCghbV9pZGVudGlmaWVyLmRhdGFiYXNlTmFtZSgpLmlzTnVsbCgpKTsK
IAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZnVsbERhdGFiYXNlRGlyZWN0
b3J5KCksICJJbmRleGVkREIuc3FsaXRlMyIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZnVsbERhdGFiYXNlRGlyZWN0b3J5KCksICJJbmRleGVkREIu
c3FsaXRlMyIpOwogfQogCiBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0
YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbykKQEAgLTc4Myw3ICs3ODMs
NyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldE9yRXN0YWJsaXNoRGF0YWJh
c2VJbmZvKElEQkRhdGFiYXNlSW5mbyYgaW5mbwogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9
OwogICAgIH0KIAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhmdWxsRGF0YWJhc2VEaXJlY3Rvcnko
KSk7CisgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGZ1bGxEYXRhYmFzZURpcmVj
dG9yeSgpKTsKICAgICBTdHJpbmcgZGJGaWxlbmFtZSA9IGZ1bGxEYXRhYmFzZVBhdGgoKTsKIAog
ICAgIG1fc3FsaXRlREIgPSBzdGQ6Om1ha2VfdW5pcXVlPFNRTGl0ZURhdGFiYXNlPigpOwpAQCAt
MTg1OCw3ICsxODU4LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRCbG9i
UmVjb3Jkc0Zvck9iamVjdFN0b3JlUmVjb3JkKGludDY0X3Qgb2JqZWMKICAgICAgICAgYmxvYlVS
THMuYXBwZW5kKGJsb2JVUkwpOwogCiAgICAgICAgIFN0cmluZyBmaWxlTmFtZSA9IHNxbC0+Z2V0
Q29sdW1uVGV4dCgwKTsKLSAgICAgICAgYmxvYkZpbGVQYXRocy5hcHBlbmQocGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBmaWxlTmFtZSkpOworICAgICAgICBibG9i
RmlsZVBhdGhzLmFwcGVuZChGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VEaXJlY3RvcnksIGZpbGVOYW1lKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIElEQkVycm9y
IHsgfTsKQEAgLTI1NDIsOCArMjU0Miw4IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpk
ZWxldGVCYWNraW5nU3RvcmUoKQogCiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5ID0gZnVs
bERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgZm9yIChhdXRvJiBmaWxlIDogYmxvYkZpbGVzKSB7
Ci0gICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRh
YmFzZURpcmVjdG9yeSwgZmlsZSk7Ci0gICAgICAgIGlmICghZGVsZXRlRmlsZShmdWxsUGF0aCkp
CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZmlsZSk7CisgICAgICAgIGlmICghRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShmdWxsUGF0aCkpCiAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIGRl
bGV0aW5nIGJsb2IgZmlsZSAlcyIsIGZ1bGxQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0
ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggNjA4NjNhOGFhOTMyMzM1Mzc4N2Vh
OGM5MWZkM2Y5M2JlNTJkMDM3Ny4uMjMxNjVjOWI5NmQxZGZjZWVkZGM5ZDI0ZTE1OWYyNmYwMWZi
Zjg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC05MSw4ICs5MSw4IEBA
IHZvaWQgU1FMaXRlSURCVHJhbnNhY3Rpb246Om1vdmVCbG9iRmlsZXNJZk5lY2Vzc2FyeSgpCiAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYmxvYlRlbXBvcmFyeUFuZFN0b3JlZEZpbGVuYW1lcykg
ewogICAgICAgICBtX2JhY2tpbmdTdG9yZS50ZW1wb3JhcnlGaWxlSGFuZGxlcigpLnByZXBhcmVG
b3JBY2Nlc3NUb1RlbXBvcmFyeUZpbGUoZW50cnkuZmlyc3QpOwogCi0gICAgICAgIGlmICghaGFy
ZExpbmtPckNvcHlGaWxlKGVudHJ5LmZpcnN0LCBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VEaXJlY3RvcnksIGVudHJ5LnNlY29uZCkpKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJG
YWlsZWQgdG8gbGluay9jb3B5IHRlbXBvcmFyeSBibG9iIGZpbGUgJyVzJyB0byBsb2NhdGlvbiAn
JXMnIiwgZW50cnkuZmlyc3QudXRmOCgpLmRhdGEoKSwgcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5zZWNvbmQpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBpZiAoIUZpbGVTeXN0ZW06OmhhcmRMaW5rT3JDb3B5RmlsZShlbnRyeS5maXJzdCwgRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5LCBlbnRyeS5z
ZWNvbmQpKSkKKyAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGxpbmsvY29weSB0ZW1w
b3JhcnkgYmxvYiBmaWxlICclcycgdG8gbG9jYXRpb24gJyVzJyIsIGVudHJ5LmZpcnN0LnV0Zjgo
KS5kYXRhKCksIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURp
cmVjdG9yeSwgZW50cnkuc2Vjb25kKS51dGY4KCkuZGF0YSgpKTsKIAogICAgICAgICBtX2JhY2tp
bmdTdG9yZS50ZW1wb3JhcnlGaWxlSGFuZGxlcigpLmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBs
ZXRlKGVudHJ5LmZpcnN0KTsKICAgICB9CkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBTUUxpdGVJ
REJUcmFuc2FjdGlvbjo6ZGVsZXRlQmxvYkZpbGVzSWZOZWNlc3NhcnkoKQogCiAgICAgU3RyaW5n
IGRhdGFiYXNlRGlyZWN0b3J5ID0gbV9iYWNraW5nU3RvcmUuZnVsbERhdGFiYXNlRGlyZWN0b3J5
KCk7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fYmxvYlJlbW92ZWRGaWxlbmFtZXMpIHsKLSAg
ICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNl
RGlyZWN0b3J5LCBlbnRyeSk7CisgICAgICAgIFN0cmluZyBmdWxsUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeSwgZW50cnkpOwogICAg
ICAgICBtX2JhY2tpbmdTdG9yZS50ZW1wb3JhcnlGaWxlSGFuZGxlcigpLnByZXBhcmVGb3JBY2Nl
c3NUb1RlbXBvcmFyeUZpbGUoZnVsbFBhdGgpOwogICAgICAgICBtX2JhY2tpbmdTdG9yZS50ZW1w
b3JhcnlGaWxlSGFuZGxlcigpLmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGZ1bGxQYXRo
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
aGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCmluZGV4IGFkZGQxZjhjMDA0NDk1
MDk1N2RlNDA2M2FmMTMxYTI1ZmE1MGE4ZWQuLjYxYWViOGY3ZDcwMTUxYjk0MjI4NWFjZGNjZjgx
YmZiMWVhNDI2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3BwCkBAIC00NDMsNyArNDQz
LDcgQEAgdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWlu
dDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgVmVjdG8KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
OmFjY2Vzc1RvVGVtcG9yYXJ5RmlsZUNvbXBsZXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAg
ICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0aCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCA1NTI3NjlhNDFjNzQy
YjVmYTI5OTI0MWIyYzE1M2RhOTI2MTY1YjRlLi5mZWExYmU1ZTViMjc0OWUxN2ZjMjIzMGMwNjVm
NWY0NjUxYThjN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC02NDksOSArNjQ5LDkgQEAgdW5zaWduZWQg
bG9uZyBsb25nIERhdGFiYXNlVHJhY2tlcjo6dXNhZ2UoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBvcmlnaW4pCiB7CiAgICAgU3RyaW5nIG9yaWdpblBhdGggPSB0aGlzLT5vcmlnaW5QYXRoKG9y
aWdpbik7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRpc2tVc2FnZSA9IDA7Ci0gICAgZm9yIChh
dXRvJiBmaWxlTmFtZSA6IGxpc3REaXJlY3Rvcnkob3JpZ2luUGF0aCwgQVNDSUlMaXRlcmFsKCIq
LmRiIikpKSB7CisgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3Rvcnkob3JpZ2luUGF0aCwgQVNDSUlMaXRlcmFsKCIqLmRiIikpKSB7CiAgICAgICAgIGxvbmcg
bG9uZyBzaXplOwotICAgICAgICBnZXRGaWxlU2l6ZShmaWxlTmFtZSwgc2l6ZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGZpbGVOYW1lLCBzaXplKTsKICAgICAgICAgZGlza1Vz
YWdlICs9IHNpemU7CiAgICAgfQogICAgIHJldHVybiBkaXNrVXNhZ2U7CkBAIC03ODUsOSArNzg1
LDkgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uo
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGkKICAgICAgICAgICAgIC8vIElmIHRoZSBmaWxl
IGRvZXNuJ3QgZXhpc3QsIHdlIHByZXZpb3VzbHkgZGVsZXRlZCBpdCBidXQgZmFpbGVkIHRvIHJl
bW92ZSB0aGUgaW5mb3JtYXRpb24KICAgICAgICAgICAgIC8vIGZyb20gdGhlIHRyYWNrZXIgZGF0
YWJhc2UuIFdlIHdhbnQgdG8gZGVsZXRlIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYXNzb2NpYXRl
ZCB3aXRoIHRoaXMKICAgICAgICAgICAgIC8vIGRhdGFiYXNlIGZyb20gdGhlIHRyYWNrZXIgZGF0
YWJhc2UsIHNvIHN0aWxsIGFkZCBpdHMgbmFtZSB0byBkYXRhYmFzZU5hbWVzVG9EZWxldGUuCi0g
ICAgICAgICAgICBpZiAoZmlsZUV4aXN0cyhmdWxsUGF0aCkpIHsKKyAgICAgICAgICAgIGlmIChG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxQYXRoKSkgewogICAgICAgICAgICAgICAgIHRpbWVf
dCBtb2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoZnVsbFBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICAgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZnVsbFBhdGgsIG1vZGlmaWNh
dGlvblRpbWUpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAg
ICAgIGlmIChtb2RpZmljYXRpb25UaW1lIDwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dG9f
dGltZV90KHRpbWUpKQpAQCAtODM3LDcgKzgzNyw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpk
ZWxldGVPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9k
CiAgICAgLy8gV2UgZHJvcCB0aGUgbG9jayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2NrcyBkdXJp
bmcgYSBjYWxsIHRvIGRlbGV0ZURhdGFiYXNlRmlsZSB3aWxsIGRlYWRsb2NrLgogICAgIGJvb2wg
ZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8mIG5h
bWUgOiBkYXRhYmFzZU5hbWVzKSB7Ci0gICAgICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQYXRoRm9y
RGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBmYWxzZSkpICYmICFkZWxldGVEYXRhYmFzZUZpbGUob3Jp
Z2luLCBuYW1lLCBkZWxldGlvbk1vZGUpKSB7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBmYWxzZSkpICYmICFkZWxl
dGVEYXRhYmFzZUZpbGUob3JpZ2luLCBuYW1lLCBkZWxldGlvbk1vZGUpKSB7CiAgICAgICAgICAg
ICAvLyBFdmVuIGlmIHRoZSBmaWxlIGNhbid0IGJlIGRlbGV0ZWQsIHdlIHdhbnQgdG8gdHJ5IGFu
ZCBkZWxldGUgdGhlIHJlc3QsIGRvbid0IHJldHVybiBlYXJseSBoZXJlLgogICAgICAgICAgICAg
TE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRhdGFiYXNlICVzIGluIG9yaWdp
biAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpLnV0
ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgZmFpbGVkVG9EZWxldGVBbnlEYXRhYmFzZUZpbGUg
PSB0cnVlOwpAQCAtODUyLDggKzg1Miw4IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVP
cmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIERlbGV0aW9uTW9kCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKERhdGFiYXNlVHJhY2tl
ciwgIlVuYWJsZSB0byByZXRyaWV2ZSBsaXN0IG9mIGRhdGFiYXNlIG5hbWVzIGZvciBvcmlnaW4i
KTsKICNlbmRpZgotICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZpbGUgOiBsaXN0RGlyZWN0b3J5
KG9yaWdpblBhdGgob3JpZ2luKSwgIioiKSkgewotICAgICAgICAgICAgaWYgKCFkZWxldGVGaWxl
KGZpbGUpKQorICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGZpbGUgOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KG9yaWdpblBhdGgob3JpZ2luKSwgIioiKSkgeworICAgICAgICAgICAgaWYgKCFG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGUpKQogICAgICAgICAgICAgICAgIGZhaWxlZFRvRGVs
ZXRlQW55RGF0YWJhc2VGaWxlID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTEwNjYsNyAr
MTA2Niw3IEBAIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZShjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgY29uc3QgU3RyCiAgICAgfQogCiAgICAgLy8gV2UgZHJv
cCB0aGUgbG9jayBoZXJlIGJlY2F1c2UgaG9sZGluZyBsb2NrcyBkdXJpbmcgYSBjYWxsIHRvIGRl
bGV0ZURhdGFiYXNlRmlsZSB3aWxsIGRlYWRsb2NrLgotICAgIGlmIChmaWxlRXhpc3RzKGZ1bGxQ
YXRoRm9yRGF0YWJhc2Uob3JpZ2luLCBuYW1lLCBmYWxzZSkpICYmICFkZWxldGVEYXRhYmFzZUZp
bGUob3JpZ2luLCBuYW1lLCBEZWxldGlvbk1vZGU6OkRlZmF1bHQpKSB7CisgICAgaWYgKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMoZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIG5hbWUsIGZhbHNl
KSkgJiYgIWRlbGV0ZURhdGFiYXNlRmlsZShvcmlnaW4sIG5hbWUsIERlbGV0aW9uTW9kZTo6RGVm
YXVsdCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVsZXRlIGZpbGUgZm9yIGRh
dGFiYXNlICVzIGluIG9yaWdpbiAlcyIsIG5hbWUudXRmOCgpLmRhdGEoKSwgb3JpZ2luLmRhdGFi
YXNlSWRlbnRpZmllcigpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBMb2NrSG9sZGVyIGxvY2tE
YXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwogICAgICAgICBkb25lRGVsZXRpbmdEYXRhYmFzZShv
cmlnaW4sIG5hbWUpOwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6
OnJlbW92ZURlbGV0ZWRPcGVuZWREYXRhYmFzZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBJZiB0aGlzIGRhdGFiYXNlIGhhcyBiZWVuIGRlbGV0ZWQgb3IgaWYgaXRzIGRh
dGFiYXNlIGZpbGUgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIGN1cnJlbnQgdmVyc2lvbiwgdGhpcyBk
YXRhYmFzZSBpcyBubyBsb25nZXIgdmFsaWQgYW5kIGl0IHNob3VsZCBiZSBtYXJrZWQgYXMgZGVs
ZXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhYmFzZUZpbGVOYW1lLmlzTnVs
bCgpIHx8IGRhdGFiYXNlRmlsZU5hbWUgIT0gcGF0aEdldEZpbGVOYW1lKGRiLT5maWxlTmFtZSgp
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFiYXNlRmlsZU5hbWUuaXNOdWxs
KCkgfHwgZGF0YWJhc2VGaWxlTmFtZSAhPSBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoZGIt
PmZpbGVOYW1lKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlZERhdGFi
YXNlcy5hcHBlbmQoZGIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kRGVsZXRl
ZERhdGFiYXNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMzgsNyAr
MTIzOCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJh
c2VzKCkKIHN0YXRpYyBib29sIGlzWmVyb0J5dGVGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsK
ICAgICBsb25nIGxvbmcgc2l6ZSA9IDA7Ci0gICAgcmV0dXJuIGdldEZpbGVTaXplKHBhdGgsIHNp
emUpICYmICFzaXplOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShwYXRoLCBz
aXplKSAmJiAhc2l6ZTsKIH0KICAgICAKIGJvb2wgRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRh
YmFzZUZpbGVJZkVtcHR5KGNvbnN0IFN0cmluZyYgcGF0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL09yaWdpbkxvY2suY3BwCmluZGV4IDUxNmEyZDJmMjY0MTZi
NDhmY2U2YTA0YzNiYmY3YWFlNDJhMjc2YjkuLjMxZDJkMDRiMDE0NGI2YTI4YzNkODBlMzBhNWQw
YTk5ZTZlODI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvT3JpZ2luTG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9PcmlnaW5Mb2NrLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU3RyaW5nIE9yaWdpbkxvY2s6OmxvY2tGaWxlTmFtZUZvclBhdGgoU3RyaW5nIG9yaWdpblBh
dGgpCiB7Ci0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCBT
dHJpbmcoIi5sb2NrIikpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQob3JpZ2luUGF0aCwgU3RyaW5nKCIubG9jayIpKTsKIH0KIAogT3JpZ2luTG9jazo6
T3JpZ2luTG9jayhTdHJpbmcgb3JpZ2luUGF0aCkKICAgICA6IG1fbG9ja0ZpbGVOYW1lKGxvY2tG
aWxlTmFtZUZvclBhdGgob3JpZ2luUGF0aCkuaXNvbGF0ZWRDb3B5KCkpCiAjaWYgVVNFKEZJTEVf
TE9DSykKLSAgICAsIG1fbG9ja0hhbmRsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAg
ICwgbV9sb2NrSGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAj
ZW5kaWYKIHsKIH0KQEAgLTUwLDggKzUwLDggQEAgdm9pZCBPcmlnaW5Mb2NrOjpsb2NrKCkKICAg
ICBtX211dGV4LmxvY2soKTsKIAogI2lmIFVTRShGSUxFX0xPQ0spCi0gICAgbV9sb2NrSGFuZGxl
ID0gb3BlbkFuZExvY2tGaWxlKG1fbG9ja0ZpbGVOYW1lLCBPcGVuRm9yV3JpdGUpOwotICAgIGlm
IChtX2xvY2tIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgeworICAgIG1fbG9j
a0hhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5BbmRMb2NrRmlsZShtX2xvY2tGaWxlTmFtZSwgRmls
ZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAobV9sb2NrSGFuZGxlID09IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgLy8gVGhlIG9ubHkgd2F5
IHdlIGNhbiBnZXQgaGVyZSBpcyBpZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGxvY2sK
ICAgICAgICAgLy8gaGFzIGJlZW4gZGVsZXRlZCBvciB3ZSB3ZXJlIGdpdmVuIGEgcGF0aCB0byBh
IG5vbi1leGlzdGFudCBkaXJlY3RvcnkuCiAgICAgICAgIC8vIEluIHRoYXQgY2FzZSwgdGhlcmUn
cyBub3RoaW5nIHdlIGNhbiBkbyBidXQgY2xlYW51cCBhbmQgcmV0dXJuLgpAQCAtNjgsMTEgKzY4
LDExIEBAIHZvaWQgT3JpZ2luTG9jazo6dW5sb2NrKCkKICAgICAvLyBjb250YWluaW5nIHRoZSBs
b2NrIGhhcyBiZWVuIGRlbGV0ZWQgYmVmb3JlIHdlIG9wZW5lZCB0aGUgbG9jayBmaWxlLCBvcgog
ICAgIC8vIHdlIHdlcmUgZ2l2ZW4gYSBwYXRoIHRvIGEgbm9uLWV4aXN0YW50IGRpcmVjdG9yeS4g
V2hpY2gsIGluIHR1cm4sIG1lYW5zCiAgICAgLy8gdGhhdCB0aGVyZSdzIG5vdGhpbmcgdG8gdW5s
b2NrLgotICAgIGlmIChtX2xvY2tIYW5kbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkg
CisgICAgaWYgKG1fbG9ja0hhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICB1bmxvY2tBbmRDbG9zZUZpbGUobV9sb2Nr
SGFuZGxlKTsKLSAgICBtX2xvY2tIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwor
ICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShtX2xvY2tIYW5kbGUpOworICAgIG1f
bG9ja0hhbmRsZSA9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CiAjZW5k
aWYKIAogICAgIG1fbXV0ZXgudW5sb2NrKCk7CkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgT3JpZ2lu
TG9jazo6ZGVsZXRlTG9ja0ZpbGUoU3RyaW5nIG9yaWdpblBhdGgpCiAgICAgVU5VU0VEX1BBUkFN
KG9yaWdpblBhdGgpOwogI2lmIFVTRShGSUxFX0xPQ0spCiAgICAgU3RyaW5nIGxvY2tGaWxlTmFt
ZSA9IE9yaWdpbkxvY2s6OmxvY2tGaWxlTmFtZUZvclBhdGgob3JpZ2luUGF0aCk7Ci0gICAgZGVs
ZXRlRmlsZShsb2NrRmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobG9ja0Zp
bGVOYW1lKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL09yaWdpbkxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvT3JpZ2luTG9jay5oCmluZGV4IGQ3MTUxZGU3OGJkYTEwOTRlNWMyYmRkMjJjNDJmNmVl
MTk5OTU0Y2EuLmExNmU4NGYxNDg5ZGFmMmVlOGY1MDQ2MTlkMTM5OTNiOGQzNzVlMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvT3JpZ2luTG9jay5oCkBAIC00
OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fbG9ja0ZpbGVOYW1lOwogICAgIExv
Y2sgbV9tdXRleDsKICNpZiBVU0UoRklMRV9MT0NLKQotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBt
X2xvY2tIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fbG9ja0hh
bmRsZTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9G
aWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKaW5kZXggM2ViMjg4NGFj
YTEwNGM2MzUxMmZlMWM3NWYwNWMzZmEyNTI2MGY2YS4uMDI2MWEwZmQwMDJhM2VmYjE2OWJmMmIw
NzkyNWNlOTYwNTMzYjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCkBAIC0xMTMsNyArMTEz
LDcgQEAgZG91YmxlIEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0CiAgICAgLy8gVGhlIGkvbyBz
aG91bGQgYmUgcGVyZm9ybWVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQsCiAgICAgLy8gYW5kIHRo
ZSByZXN1bHQgc2hvdWxkIGJlIGNhY2hlZCBhbG9uZyB3aXRoIGFuIGFzeW5jaHJvbm91cyBtb25p
dG9yIGZvciBjaGFuZ2VzIHRvIHRoZSBmaWxlLgogICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1l
OwotICAgIGlmIChnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtX3BhdGgsIG1vZGlmaWNhdGlvblRp
bWUpICYmIGlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRpb25UaW1lKSkKKyAgICBpZiAoRmlsZVN5
c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV9wYXRoLCBtb2RpZmljYXRpb25UaW1lKSAm
JiBGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUobW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAg
IHJlc3VsdCA9IG1vZGlmaWNhdGlvblRpbWUgKiBtc1BlclNlY29uZDsKICAgICBlbHNlCiAgICAg
ICAgIHJlc3VsdCA9IGN1cnJlbnRUaW1lKCkgKiBtc1BlclNlY29uZDsKQEAgLTEyOSw3ICsxMjks
NyBAQCB2b2lkIEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBTdHJpbmcmIG5hbWVPdmVycgogICAgICAgICByZXR1cm47CiAgICAgfQogI2Vu
ZGlmCi0gICAgZWZmZWN0aXZlTmFtZSA9IG5hbWVPdmVycmlkZS5pc051bGwoKSA/IHBhdGhHZXRG
aWxlTmFtZShwYXRoKSA6IG5hbWVPdmVycmlkZTsKKyAgICBlZmZlY3RpdmVOYW1lID0gbmFtZU92
ZXJyaWRlLmlzTnVsbCgpID8gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpIDogbmFt
ZU92ZXJyaWRlOwogICAgIHNpemVfdCBpbmRleCA9IGVmZmVjdGl2ZU5hbWUucmV2ZXJzZUZpbmQo
Jy4nKTsKICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCiAgICAgICAgIGVmZmVjdGl2ZUNvbnRl
bnRUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZWZmZWN0
aXZlTmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSk7CkBAIC0xNDcsNyArMTQ3LDcgQEAgU3RyaW5n
IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiBib29sIEZpbGU6
OmlzRGlyZWN0b3J5KCkgY29uc3QKIHsKICAgICBpZiAoIW1faXNEaXJlY3RvcnkpCi0gICAgICAg
IG1faXNEaXJlY3RvcnkgPSBmaWxlSXNEaXJlY3RvcnkobV9wYXRoLCBTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzOjpZZXMpOworICAgICAgICBtX2lzRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Zmls
ZUlzRGlyZWN0b3J5KG1fcGF0aCwgRmlsZVN5c3RlbTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5r
czo6WWVzKTsKICAgICByZXR1cm4gKm1faXNEaXJlY3Rvcnk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9GaWxlQ29jb2EubW0KaW5kZXggMGQ1YTY5N2Y2NWE2MTIyZTQ5ZDNmMTQyZGJiYWM1YjlhZTdi
YmVkMC4uY2FhMjFkNWI4OTJmOGYzNjNmMjc0MDA4ZDA4MzM5YTUwZjQ1YmQ4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlQ29jb2EubW0KQEAgLTU5LDkgKzU5LDkgQEAgYm9vbCBGaWxlOjpzaG91
bGRSZXBsYWNlRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCiAKIHZvaWQgRmlsZTo6Y29tcHV0ZU5h
bWVBbmRDb250ZW50VHlwZUZvclJlcGxhY2VkRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0
IFN0cmluZyYgbmFtZU92ZXJyaWRlLCBTdHJpbmcmIGVmZmVjdGl2ZU5hbWUsIFN0cmluZyYgZWZm
ZWN0aXZlQ29udGVudFR5cGUpCiB7Ci0gICAgQVNTRVJUKCFwYXRoR2V0RmlsZU5hbWUocGF0aCku
ZW5kc1dpdGgoJy8nKSk7IC8vIEV4cGVjdGluZyB0byBnZXQgYSBwYXRoIHdpdGhvdXQgdHJhaWxp
bmcgc2xhc2gsIGV2ZW4gZm9yIGRpcmVjdG9yaWVzLgorICAgIEFTU0VSVCghRmlsZVN5c3RlbTo6
cGF0aEdldEZpbGVOYW1lKHBhdGgpLmVuZHNXaXRoKCcvJykpOyAvLyBFeHBlY3RpbmcgdG8gZ2V0
IGEgcGF0aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoLCBldmVuIGZvciBkaXJlY3Rvcmllcy4KICAg
ICBlZmZlY3RpdmVDb250ZW50VHlwZSA9IEFTQ0lJTGl0ZXJhbCgiYXBwbGljYXRpb24vemlwIik7
Ci0gICAgZWZmZWN0aXZlTmFtZSA9IChuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBwYXRoR2V0Rmls
ZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGUpICsgQVNDSUlMaXRlcmFsKCIuemlwIik7CisgICAg
ZWZmZWN0aXZlTmFtZSA9IChuYW1lT3ZlcnJpZGUuaXNOdWxsKCkgPyBGaWxlU3lzdGVtOjpwYXRo
R2V0RmlsZU5hbWUocGF0aCkgOiBuYW1lT3ZlcnJpZGUpICsgQVNDSUlMaXRlcmFsKCIuemlwIik7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUxpc3RDcmVhdG9yLmNwcAppbmRleCA5MTA2
ZGFkY2NkNDc3ZmRhNTZkY2QyOThlYWM3YTk5ZTI3ODZiMTFhLi43NmY1NjU5NzBhZDFkZDhkODEw
NmMyNWE1NzllNDU5MWJhYmQ0OWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zp
bGVMaXN0Q3JlYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxlTGlzdENyZWF0
b3IuY3BwCkBAIC00MSwxNSArNDEsMTUgQEAgRmlsZUxpc3RDcmVhdG9yOjp+RmlsZUxpc3RDcmVh
dG9yKCkKIAogc3RhdGljIHZvaWQgYXBwZW5kRGlyZWN0b3J5RmlsZXMoY29uc3QgU3RyaW5nJiBk
aXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcmVsYXRpdmVQYXRoLCBWZWN0b3I8UmVmPEZpbGU+PiYg
ZmlsZU9iamVjdHMpCiB7Ci0gICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBsaXN0RGlyZWN0b3J5
KGRpcmVjdG9yeSwgIioiKSkgewotICAgICAgICBhdXRvIG1ldGFkYXRhID0gZmlsZU1ldGFkYXRh
KGNoaWxkUGF0aCk7CisgICAgZm9yIChhdXRvJiBjaGlsZFBhdGggOiBGaWxlU3lzdGVtOjpsaXN0
RGlyZWN0b3J5KGRpcmVjdG9yeSwgIioiKSkgeworICAgICAgICBhdXRvIG1ldGFkYXRhID0gRmls
ZVN5c3RlbTo6ZmlsZU1ldGFkYXRhKGNoaWxkUGF0aCk7CiAgICAgICAgIGlmICghbWV0YWRhdGEp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWV0YWRhdGEudmFsdWUoKS5p
c0hpZGRlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0cmluZyBjaGlsZFJl
bGF0aXZlUGF0aCA9IHJlbGF0aXZlUGF0aCArICIvIiArIHBhdGhHZXRGaWxlTmFtZShjaGlsZFBh
dGgpOworICAgICAgICBTdHJpbmcgY2hpbGRSZWxhdGl2ZVBhdGggPSByZWxhdGl2ZVBhdGggKyAi
LyIgKyBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoY2hpbGRQYXRoKTsKICAgICAgICAgaWYg
KG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeSkK
ICAgICAgICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGNoaWxkUGF0aCwgY2hpbGRSZWxhdGl2
ZVBhdGgsIGZpbGVPYmplY3RzKTsKICAgICAgICAgZWxzZSBpZiAobWV0YWRhdGEudmFsdWUoKS50
eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSkKQEAgLTgwLDggKzgwLDggQEAgUmVmPEZp
bGVMaXN0PiBGaWxlTGlzdENyZWF0b3I6OmNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxl
Q2hvb3NlckZpbGVJbmZvPiYKIHsKICAgICBWZWN0b3I8UmVmPEZpbGU+PiBmaWxlT2JqZWN0czsK
ICAgICBmb3IgKGF1dG8mIGluZm8gOiBwYXRocykgewotICAgICAgICBpZiAoc2hvdWxkUmVzb2x2
ZURpcmVjdG9yaWVzID09IFNob3VsZFJlc29sdmVEaXJlY3Rvcmllczo6WWVzICYmIGZpbGVJc0Rp
cmVjdG9yeShpbmZvLnBhdGgsIFNob3VsZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKLSAgICAg
ICAgICAgIGFwcGVuZERpcmVjdG9yeUZpbGVzKGluZm8ucGF0aCwgcGF0aEdldEZpbGVOYW1lKGlu
Zm8ucGF0aCksIGZpbGVPYmplY3RzKTsKKyAgICAgICAgaWYgKHNob3VsZFJlc29sdmVEaXJlY3Rv
cmllcyA9PSBTaG91bGRSZXNvbHZlRGlyZWN0b3JpZXM6OlllcyAmJiBGaWxlU3lzdGVtOjpmaWxl
SXNEaXJlY3RvcnkoaW5mby5wYXRoLCBGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xp
bmtzOjpObykpCisgICAgICAgICAgICBhcHBlbmREaXJlY3RvcnlGaWxlcyhpbmZvLnBhdGgsIEZp
bGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShpbmZvLnBhdGgpLCBmaWxlT2JqZWN0cyk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGZpbGVPYmplY3RzLmFwcGVuZChGaWxlOjpjcmVhdGVXaXRo
TmFtZShpbmZvLnBhdGgsIGluZm8uZGlzcGxheU5hbWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAwYmRhNzVjM2I4YWM3MGNkZWNiN2EwZGNl
YWY4MTI4ZTBmMzk3ZjI1Li4wYzdjN2FiNWI2MjZlMjU3MDMyY2JkOWViMjQxOTEyMjlhNGM4ZDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTI1NjcsNyAr
MjU2Nyw3IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogICAgIGlmIChzdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3RvcnksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJv
bVNlY3VyaXR5T3JpZ2luKGRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkuZGF0YWJhc2VJZGVu
dGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoc3RvcmFnZURpcmVjdG9yeSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0U2V0TWVkaWFLZXlzKFdlYktpdE1lZGlh
S2V5cyogbWVkaWFLZXlzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggYWZmODY5OTJlNTBjNWJj
NWZkMTEzNDdhZDdkMjM5NzJjNDMxN2VlYS4uYTIxNTBlZDJmYWMyNTFiMjdkNDM1ZDRjNGM2MDNi
MzRiYmMzZDUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0zODEsNyArMzgxLDcgQEAgaW50
NjRfdCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3BhY2VOZWVkZWQoaW50NjRfdCBjYWNoZVRv
U2F2ZSkKIHsKICAgICBpbnQ2NF90IHNwYWNlTmVlZGVkID0gMDsKICAgICBsb25nIGxvbmcgZmls
ZVNpemUgPSAwOwotICAgIGlmICghZ2V0RmlsZVNpemUobV9jYWNoZUZpbGUsIGZpbGVTaXplKSkK
KyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKG1fY2FjaGVGaWxlLCBmaWxlU2l6ZSkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaW50NjRfdCBjdXJyZW50U2l6ZSA9IGZpbGVTaXpl
ICsgZmxhdEZpbGVBcmVhU2l6ZSgpOwpAQCAtNjAwLDExICs2MDAsMTEgQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6b3BlbkRhdGFiYXNlKGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3Qp
CiAgICAgaWYgKG1fY2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY2FjaGVGaWxlID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rv
cnksICJBcHBsaWNhdGlvbkNhY2hlLmRiIik7Ci0gICAgaWYgKCFjcmVhdGVJZkRvZXNOb3RFeGlz
dCAmJiAhZmlsZUV4aXN0cyhtX2NhY2hlRmlsZSkpCisgICAgbV9jYWNoZUZpbGUgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNoZURpcmVjdG9yeSwgIkFwcGxpY2F0
aW9uQ2FjaGUuZGIiKTsKKyAgICBpZiAoIWNyZWF0ZUlmRG9lc05vdEV4aXN0ICYmICFGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1fY2FjaGVGaWxlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbWFr
ZUFsbERpcmVjdG9yaWVzKG1fY2FjaGVEaXJlY3RvcnkpOworICAgIEZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhtX2NhY2hlRGlyZWN0b3J5KTsKICAgICBtX2RhdGFiYXNlLm9wZW4obV9j
YWNoZUZpbGUpOwogICAgIAogICAgIGlmICghbV9kYXRhYmFzZS5pc09wZW4oKSkKQEAgLTc5OSw3
ICs3OTksNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZShBcHBsaWNhdGlv
bkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogCiAgICAgU3RyaW5nIGZ1bGxQYXRo
OwogICAgIGlmICghcmVzb3VyY2UtPnBhdGgoKS5pc0VtcHR5KCkpCi0gICAgICAgIGRhdGFTdGF0
ZW1lbnQuYmluZFRleHQoMiwgcGF0aEdldEZpbGVOYW1lKHJlc291cmNlLT5wYXRoKCkpKTsKKyAg
ICAgICAgZGF0YVN0YXRlbWVudC5iaW5kVGV4dCgyLCBGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5h
bWUocmVzb3VyY2UtPnBhdGgoKSkpOwogICAgIGVsc2UgaWYgKHNob3VsZFN0b3JlUmVzb3VyY2VB
c0ZsYXRGaWxlKHJlc291cmNlKSkgewogICAgICAgICAvLyBGaXJzdCwgY2hlY2sgdG8gc2VlIGlm
IGNyZWF0aW5nIHRoZSBmbGF0IGZpbGUgd291bGQgdmlvbGF0ZSB0aGUgbWF4aW11bSB0b3RhbCBx
dW90YS4gV2UgZG9uJ3QgbmVlZAogICAgICAgICAvLyB0byBjaGVjayB0aGUgcGVyLW9yaWdpbiBx
dW90YSBoZXJlLCBhcyBpdCB3YXMgYWxyZWFkeSBjaGVja2VkIGluIHN0b3JlTmV3ZXN0Q2FjaGUo
KS4KQEAgLTgwOCw4ICs4MDgsOCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9y
ZShBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIHJlc291cmNlLCB1bnNpZ25lZAogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBTdHJpbmcgZmxh
dEZpbGVEaXJlY3RvcnkgPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNoZURpcmVjdG9y
eSwgbV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOwotICAgICAgICBtYWtlQWxsRGlyZWN0b3Jp
ZXMoZmxhdEZpbGVEaXJlY3RvcnkpOworICAgICAgICBTdHJpbmcgZmxhdEZpbGVEaXJlY3Rvcnkg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9jYWNoZURpcmVjdG9yeSwg
bV9mbGF0RmlsZVN1YmRpcmVjdG9yeU5hbWUpOworICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxs
RGlyZWN0b3JpZXMoZmxhdEZpbGVEaXJlY3RvcnkpOwogCiAgICAgICAgIFN0cmluZyBleHRlbnNp
b247CiAgICAgICAgIApAQCAtODIyLDcgKzgyMiw3IEBAIGJvb2wgQXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6OnN0b3JlKEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogcmVzb3VyY2UsIHVuc2lnbmVk
CiAgICAgICAgIGlmICghd3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkocmVzb3VyY2Ut
PmRhdGEoKSwgZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgsIGV4dGVuc2lvbikpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBmdWxsUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CisgICAgICAgIGZ1bGxQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5
LCBwYXRoKTsKICAgICAgICAgcmVzb3VyY2UtPnNldFBhdGgoZnVsbFBhdGgpOwogICAgICAgICBk
YXRhU3RhdGVtZW50LmJpbmRUZXh0KDIsIHBhdGgpOwogICAgIH0gZWxzZSB7CkBAIC04MzMsNyAr
ODMzLDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBwbGljYXRpb25D
YWNoZVJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQu
ZXhlY3V0ZUNvbW1hbmQoKSkgewogICAgICAgICAvLyBDbGVhbiB1cCB0aGUgZmlsZSB3aGljaCB3
ZSBtYXkgaGF2ZSB3cml0dGVuIHRvOgogICAgICAgICBpZiAoIWZ1bGxQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGRlbGV0ZUZpbGUoZnVsbFBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShmdWxsUGF0aCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
QEAgLTExMTYsNyArMTExNiw3IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKIAogICAgIGF1dG8g
Y2FjaGUgPSBBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGUoKTsKIAotICAgIFN0cmluZyBmbGF0Rmls
ZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGlyZWN0b3J5LCBt
X2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0b3J5
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3Rvcnks
IG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKIAogICAgIGludCByZXN1bHQ7CiAgICAgd2hp
bGUgKChyZXN1bHQgPSBjYWNoZVN0YXRlbWVudC5zdGVwKCkpID09IFNRTElURV9ST1cpIHsKQEAg
LTExMzYsOCArMTEzNiw4IEBAIFJlZlB0cjxBcHBsaWNhdGlvbkNhY2hlPiBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6bG9hZENhY2hlKHVuc2lnbmVkIHN0b3JhZ2VJRCkKICAgICAgICAgaWYgKHBh
dGguaXNFbXB0eSgpKQogICAgICAgICAgICAgc2l6ZSA9IGRhdGEtPnNpemUoKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZsYXRG
aWxlRGlyZWN0b3J5LCBwYXRoKTsKLSAgICAgICAgICAgIGdldEZpbGVTaXplKHBhdGgsIHNpemUp
OworICAgICAgICAgICAgcGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChmbGF0RmlsZURpcmVjdG9yeSwgcGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpnZXRG
aWxlU2l6ZShwYXRoLCBzaXplKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgU3RyaW5n
IG1pbWVUeXBlID0gY2FjaGVTdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgzKTsKQEAgLTEyOTQsMjUg
KzEyOTQsMjUgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9Vbmlx
dWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVkQnVmZmVyJiBkYXQKICAgICBTdHJpbmcgZnVsbFBhdGg7
CiAgICAgCiAgICAgZG8gewotICAgICAgICBwYXRoID0gZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpKSArIGZpbGVFeHRlbnNpb247CisgICAgICAgIHBhdGggPSBG
aWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkp
ICsgZmlsZUV4dGVuc2lvbjsKICAgICAgICAgLy8gR3VhcmQgYWdhaW5zdCB0aGUgYWJvdmUgZnVu
Y3Rpb24gYmVpbmcgY2FsbGVkIG9uIGEgcGxhdGZvcm0gd2hpY2ggZG9lcyBub3QgaW1wbGVtZW50
CiAgICAgICAgIC8vIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKS4KICAgICAgICAgQVNTRVJU
KCFwYXRoLmlzRW1wdHkoKSk7CiAgICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGZ1bGxQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeSwgcGF0aCk7Ci0gICAgfSB3aGlsZSAoZGlyZWN0b3J5
TmFtZShmdWxsUGF0aCkgIT0gZGlyZWN0b3J5IHx8IGZpbGVFeGlzdHMoZnVsbFBhdGgpKTsKKyAg
ICAgICAgZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGly
ZWN0b3J5LCBwYXRoKTsKKyAgICB9IHdoaWxlIChGaWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKGZ1
bGxQYXRoKSAhPSBkaXJlY3RvcnkgfHwgRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsUGF0aCkp
OwogICAgIAotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUgPSBvcGVuRmlsZShmdWxsUGF0
aCwgT3BlbkZvcldyaXRlKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZnVsbFBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JX
cml0ZSk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKLSAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgZGF0YS5kYXRhKCksIGRh
dGEuc2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAg
ICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkg
ewotICAgICAgICBkZWxldGVGaWxlKGZ1bGxQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShmdWxsUGF0aCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBA
IC0xNDY2LDE1ICsxNDY2LDE1IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNoZWNr
Rm9yRGVsZXRlZFJlc291cmNlcygpCiAgICAgICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgU3RyaW5nIGZsYXRGaWxlRGlyZWN0
b3J5ID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVEaXJlY3RvcnksIG1fZmxhdEZp
bGVTdWJkaXJlY3RvcnlOYW1lKTsKLSAgICAgICAgU3RyaW5nIGZ1bGxQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGZsYXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKKyAgICAgICAgU3RyaW5n
IGZsYXRGaWxlRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fY2FjaGVEaXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKKyAgICAgICAg
U3RyaW5nIGZ1bGxQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZs
YXRGaWxlRGlyZWN0b3J5LCBwYXRoKTsKICAgICAgICAgCiAgICAgICAgIC8vIERvbid0IGV4aXQg
dGhlIGZsYXRGaWxlRGlyZWN0b3J5ISBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiB0aGUgInBh
dGgiIGVudHJ5IGNvbnRhaW5zIGEgZGlyZWN0b3J5IAogICAgICAgICAvLyBjb21wb25lbnQsIGJ1
dCBwcm90ZWN0IGFnYWluc3QgaXQgcmVnYXJkbGVzcy4KLSAgICAgICAgaWYgKGRpcmVjdG9yeU5h
bWUoZnVsbFBhdGgpICE9IGZsYXRGaWxlRGlyZWN0b3J5KQorICAgICAgICBpZiAoRmlsZVN5c3Rl
bTo6ZGlyZWN0b3J5TmFtZShmdWxsUGF0aCkgIT0gZmxhdEZpbGVEaXJlY3RvcnkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAgICAgIGRlbGV0ZUZpbGUoZnVsbFBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZ1bGxQYXRoKTsKICAgICB9IHdoaWxlIChz
ZWxlY3RQYXRocy5zdGVwKCkgPT0gU1FMSVRFX1JPVyk7CiAgICAgCiAgICAgZXhlY3V0ZVNRTENv
bW1hbmQoIkRFTEVURSBGUk9NIERlbGV0ZWRDYWNoZVJlc291cmNlcyIpOwpAQCAtMTQ5NCwxMiAr
MTQ5NCwxMiBAQCBsb25nIGxvbmcgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmZsYXRGaWxlQXJl
YVNpemUoKQogICAgIH0KIAogICAgIGxvbmcgbG9uZyB0b3RhbFNpemUgPSAwOwotICAgIFN0cmlu
ZyBmbGF0RmlsZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2NhY2hlRGly
ZWN0b3J5LCBtX2ZsYXRGaWxlU3ViZGlyZWN0b3J5TmFtZSk7CisgICAgU3RyaW5nIGZsYXRGaWxl
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY2FjaGVE
aXJlY3RvcnksIG1fZmxhdEZpbGVTdWJkaXJlY3RvcnlOYW1lKTsKICAgICB3aGlsZSAoc2VsZWN0
UGF0aHMuc3RlcCgpID09IFNRTElURV9ST1cpIHsKICAgICAgICAgU3RyaW5nIHBhdGggPSBzZWxl
Y3RQYXRocy5nZXRDb2x1bW5UZXh0KDApOwotICAgICAgICBTdHJpbmcgZnVsbFBhdGggPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZmxhdEZpbGVEaXJlY3RvcnksIHBhdGgpOworICAgICAgICBT
dHJpbmcgZnVsbFBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZmxh
dEZpbGVEaXJlY3RvcnksIHBhdGgpOwogICAgICAgICBsb25nIGxvbmcgcGF0aFNpemUgPSAwOwot
ICAgICAgICBpZiAoIWdldEZpbGVTaXplKGZ1bGxQYXRoLCBwYXRoU2l6ZSkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZnVsbFBhdGgsIHBhdGhTaXplKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB0b3RhbFNpemUgKz0gcGF0aFNpemU7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggMTc4MTk5MjBmZTVjZmE3MTZkZWEzMWI1N2ZkMTMwYWIyNjQxNDA1
Zi4uZGY3MTVjYzNhOTNlMmVmYTY2YzA4NGY3NDEwY2JhMTUxMzFlODVjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xMTU5LDcgKzExNTksNyBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHls
ZVNoZWV0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKICAgICB0
aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fdXNlclN0
eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgsIG1vZFRpbWUpKSB7CiAgICAgICAg
IC8vIFRoZSBzdHlsZXNoZWV0IGVpdGhlciBkb2Vzbid0IGV4aXN0LCB3YXMganVzdCBkZWxldGVk
LCBvciBpcwogICAgICAgICAvLyBvdGhlcndpc2UgdW5yZWFkYWJsZS4gSWYgd2UndmUgcmVhZCB0
aGUgc3R5bGVzaGVldCBiZWZvcmUsIHdlIHNob3VsZAogICAgICAgICAvLyB0aHJvdyBhd2F5IHRo
YXQgZGF0YSBub3cgYXMgaXQgbm8gbG9uZ2VyIHJlcHJlc2VudHMgd2hhdCdzIG9uIGRpc2suCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDNiZDE4YmM3YTM3NmI1YjAx
NTFmYmNiYzU2NzdiMjk2ZWY3MDU1ZjAuLjZhZDYzMTEwYWViMmQ4ZTc3MWVjOWIyZjNhY2ExN2Fl
ZjBjNTk4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0zNTAs
NyArMzUwLDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheShjb25zdCBVUkwmIHVy
bCkgY29uc3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAg
IGlmIChtX3Byb3RvY29sID09ICJmaWxlIiAmJiB1cmwuaXNMb2NhbEZpbGUoKSAmJiAhZmlsZXNI
YXZlU2FtZVZvbHVtZShtX2ZpbGVQYXRoLCB1cmwuZmlsZVN5c3RlbVBhdGgoKSkpCisgICAgaWYg
KG1fcHJvdG9jb2wgPT0gImZpbGUiICYmIHVybC5pc0xvY2FsRmlsZSgpICYmICFGaWxlU3lzdGVt
OjpmaWxlc0hhdmVTYW1lVm9sdW1lKG1fZmlsZVBhdGgsIHVybC5maWxlU3lzdGVtUGF0aCgpKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcAppbmRleCA5MjNmZjMzMGQ2YzMzZmI0Y2FkMzdmZjJlYzhiZjNl
NzA4YjhiNDQyLi5hZGExZjQxZDIzMDVhN2VhNGEwOGE2ZDIwZjY2ODA0YjZjNjdlMzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0
CiAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHByb3RvY29sKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChzZXBhcmF0b3JDaGFyYWN0
ZXIpOwotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGVuY29kZUZvckZpbGVOYW1lKGhvc3QpKTsK
KyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZSho
b3N0KSk7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZE51bWJlcihwb3J0LnZhbHVlX29yKDApKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKaW5kZXggODAzYTgyMDliMmMxOWVkYTlm
MDg2NDVmYjNmNzJiMTA3ODc5YzllZi4uMmEwYTYzNGM2ZjY4MTJjZjZmY2U3YjIwODFjZDllYWI4
YmFlNTkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5jcHAKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GaWxlSGFuZGxlOjpGaWxlSGFuZGxl
KGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5Nb2RlIG1vZGUpCitGaWxlSGFuZGxlOjpGaWxl
SGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1vZGUp
CiAgICAgOiBtX3BhdGgocGF0aCkKICAgICAsIG1fbW9kZShtb2RlKQogewpAQCAtNDIsNyArNDIs
NyBAQCBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZU9wZW5N
b2RlIG1vZGUpCiBGaWxlSGFuZGxlOjpGaWxlSGFuZGxlKEZpbGVIYW5kbGUmJiBvdGhlcikKICAg
ICA6IG1fcGF0aChXVEZNb3ZlKG90aGVyLm1fcGF0aCkpCiAgICAgLCBtX21vZGUoV1RGTW92ZShv
dGhlci5tX21vZGUpKQotICAgICwgbV9maWxlSGFuZGxlKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9m
aWxlSGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSkKKyAgICAsIG1fZmlsZUhhbmRs
ZShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fZmlsZUhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkpCiB7CiB9CiAKQEAgLTU2LDE2ICs1NiwxNiBAQCBGaWxlSGFuZGxl
JiBGaWxlSGFuZGxlOjpvcGVyYXRvcj0oRmlsZUhhbmRsZSYmIG90aGVyKQogICAgIGNsb3NlKCk7
CiAgICAgbV9wYXRoID0gV1RGTW92ZShvdGhlci5tX3BhdGgpOwogICAgIG1fbW9kZSA9IFdURk1v
dmUob3RoZXIubV9tb2RlKTsKLSAgICBtX2ZpbGVIYW5kbGUgPSBzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fZmlsZUhhbmRsZSwgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CisgICAgbV9maWxlSGFu
ZGxlID0gc3RkOjpleGNoYW5nZShvdGhlci5tX2ZpbGVIYW5kbGUsIEZpbGVTeXN0ZW06OmludmFs
aWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogRmlsZUhhbmRs
ZTo6b3BlcmF0b3IgYm9vbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQobV9m
aWxlSGFuZGxlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2ZpbGVI
YW5kbGUpOwogfQogCi1ib29sIEZpbGVIYW5kbGU6Om9wZW4oY29uc3QgU3RyaW5nJiBwYXRoLCBG
aWxlT3Blbk1vZGUgbW9kZSkKK2Jvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIGlmICgqdGhpcyAmJiBw
YXRoID09IG1fcGF0aCAmJiBtb2RlID09IG1fbW9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC03OSw3ICs3OSw3IEBAIGJvb2wgRmlsZUhhbmRsZTo6b3Blbihjb25zdCBTdHJpbmcmIHBhdGgs
IEZpbGVPcGVuTW9kZSBtb2RlKQogYm9vbCBGaWxlSGFuZGxlOjpvcGVuKCkKIHsKICAgICBpZiAo
ISp0aGlzKQotICAgICAgICBtX2ZpbGVIYW5kbGUgPSBvcGVuRmlsZShtX3BhdGgsIG1fbW9kZSk7
CisgICAgICAgIG1fZmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKG1fcGF0aCwgbV9t
b2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oKnRoaXMpOwogfQogCkBAIC04Nywx
NCArODcsMTQgQEAgaW50IEZpbGVIYW5kbGU6OnJlYWQodm9pZCogZGF0YSwgaW50IGxlbmd0aCkK
IHsKICAgICBpZiAoIW9wZW4oKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiByZWFk
RnJvbUZpbGUobV9maWxlSGFuZGxlLCBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSksIGxlbmd0aCk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2ZpbGVIYW5kbGUsIHN0YXRp
Y19jYXN0PGNoYXIqPihkYXRhKSwgbGVuZ3RoKTsKIH0KIAogaW50IEZpbGVIYW5kbGU6OndyaXRl
KGNvbnN0IHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgaWYgKCFvcGVuKCkpCiAgICAg
ICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIGxlbmd0aCk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fZmlsZUhhbmRsZSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRh
dGEpLCBsZW5ndGgpOwogfQogCiBib29sIEZpbGVIYW5kbGU6OnByaW50Zihjb25zdCBjaGFyKiBm
b3JtYXQsIC4uLikKQEAgLTExNyw3ICsxMTcsNyBAQCBib29sIEZpbGVIYW5kbGU6OnByaW50Zihj
b25zdCBjaGFyKiBmb3JtYXQsIC4uLikKIAogdm9pZCBGaWxlSGFuZGxlOjpjbG9zZSgpCiB7Ci0g
ICAgY2xvc2VGaWxlKG1fZmlsZUhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1f
ZmlsZUhhbmRsZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVIYW5kbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVIYW5kbGUuaAppbmRleCBkMzYyNDNkZTQwZDc3ZWUwNDE2OTA3MTIzNDcwZDM5Yjdh
ZDAwMGJmLi41NjNmZWQ5ODk0MDdhMDQ4ZWEyODA4MjUxOGI1MTI3M2UwZjQzNzZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlSGFuZGxlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZUhhbmRsZS5oCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEZpbGVIYW5kbGUgZmluYWwgewogcHVibGlj
OgogICAgIEZpbGVIYW5kbGUoKSA9IGRlZmF1bHQ7Ci0gICAgRmlsZUhhbmRsZShjb25zdCBTdHJp
bmcmIHBhdGgsIEZpbGVPcGVuTW9kZSk7CisgICAgRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBh
dGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZSk7CiAgICAgRmlsZUhhbmRsZShjb25zdCBGaWxl
SGFuZGxlJiBvdGhlcikgPSBkZWxldGU7CiAgICAgRmlsZUhhbmRsZShGaWxlSGFuZGxlJiYgb3Ro
ZXIpOwogCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIGV4cGxpY2l0IG9wZXJhdG9y
IGJvb2woKSBjb25zdDsKIAotICAgIGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIHBhdGgsIEZpbGVP
cGVuTW9kZSk7CisgICAgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgcGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlKTsKICAgICBib29sIG9wZW4oKTsKICAgICBpbnQgcmVhZCh2b2lkKiBkYXRh
LCBpbnQgbGVuZ3RoKTsKICAgICBpbnQgd3JpdGUoY29uc3Qgdm9pZCogZGF0YSwgaW50IGxlbmd0
aCk7CkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBTdHJpbmcgbV9w
YXRoOwotICAgIEZpbGVPcGVuTW9kZSBtX21vZGUgeyBPcGVuRm9yUmVhZCB9OwotICAgIFBsYXRm
b3JtRmlsZUhhbmRsZSBtX2ZpbGVIYW5kbGUgeyBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07
CisgICAgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlIG1fbW9kZSB7IEZpbGVTeXN0ZW06Ok9wZW5G
b3JSZWFkIH07CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRs
ZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5k
ZXggYjE4YjFjM2U5N2Q0YTc1MWRmZWY4YmVhNjYyZTY5MDZkOTUyYWQ4YS4uZjc0NWQ3YzFkYzg3
NTIzZWNhNzNkZWE2MDQxZmE4Y2RmNzAyZDE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN0cmVhbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmls
ZVN0cmVhbTo6RmlsZVN0cmVhbSgpCi0gICAgOiBtX2hhbmRsZShpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQorICAgIDogbV9oYW5kbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZSkKICAgICAsIG1fYnl0ZXNQcm9jZXNzZWQoMCkKICAgICAsIG1fdG90YWxCeXRlc1RvUmVh
ZCgwKQogewpAQCAtNTMsMTYgKzUzLDE2IEBAIGxvbmcgbG9uZyBGaWxlU3RyZWFtOjpnZXRTaXpl
KGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltCiB7CiAg
ICAgLy8gQ2hlY2sgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgcG9zc2libGUgZmlsZSBj
aGFuZ2UuCiAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKCFnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQogICAg
ICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGlzVmFsaWRGaWxlVGltZShleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpKSB7CisgICAgaWYgKEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUpKSB7CiAgICAgICAgIGlmIChzdGF0aWNfY2FzdDx0aW1lX3Q+KGV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkgIT0gbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgICAg
IHJldHVybiAtMTsKICAgICB9CiAKICAgICAvLyBOb3cgZ2V0IHRoZSBmaWxlIHNpemUuCiAgICAg
bG9uZyBsb25nIGxlbmd0aDsKLSAgICBpZiAoIWdldEZpbGVTaXplKHBhdGgsIGxlbmd0aCkpCisg
ICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShwYXRoLCBsZW5ndGgpKQogICAgICAgICBy
ZXR1cm4gLTE7CiAKICAgICByZXR1cm4gbGVuZ3RoOwpAQCAtNzAsMTcgKzcwLDE3IEBAIGxvbmcg
bG9uZyBGaWxlU3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltCiAKIGJvb2wgRmlsZVN0cmVhbTo6b3BlbkZvclJlYWQoY29uc3Qg
U3RyaW5nJiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewotICAg
IGlmIChpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChtX2hhbmRsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gT3BlbiB0
aGUgZmlsZS4KLSAgICBtX2hhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQorICAgIG1faGFuZGxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmls
ZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIEp1bXAgdG8gdGhlIGJlZ2lubmluZyBwb3NpdGlvbiBpZiB0aGUgZmlsZSBoYXMg
YmVlbiBzbGljZWQuCiAgICAgaWYgKG9mZnNldCA+IDApIHsKLSAgICAgICAgaWYgKHNlZWtGaWxl
KG1faGFuZGxlLCBvZmZzZXQsIFNlZWtGcm9tQmVnaW5uaW5nKSA8IDApCisgICAgICAgIGlmIChG
aWxlU3lzdGVtOjpzZWVrRmlsZShtX2hhbmRsZSwgb2Zmc2V0LCBGaWxlU3lzdGVtOjpTZWVrRnJv
bUJlZ2lubmluZykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
OTIsMjIgKzkyLDIyIEBAIGJvb2wgRmlsZVN0cmVhbTo6b3BlbkZvclJlYWQoY29uc3QgU3RyaW5n
JiBwYXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuCiAKIHZvaWQgRmlsZVN0cmVh
bTo6Y2xvc2UoKQogewotICAgIGlmIChpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkgewotICAgICAg
ICBjbG9zZUZpbGUobV9oYW5kbGUpOwotICAgICAgICBtX2hhbmRsZSA9IGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGU7CisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUp
KSB7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2hhbmRsZSk7CisgICAgICAgIG1f
aGFuZGxlID0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKICAgICB9CiB9
CiAKIGludCBGaWxlU3RyZWFtOjpyZWFkKGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpCiB7
Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06
OmlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBsb25n
IGxvbmcgcmVtYWluaW5nID0gbV90b3RhbEJ5dGVzVG9SZWFkIC0gbV9ieXRlc1Byb2Nlc3NlZDsK
ICAgICBpbnQgYnl0ZXNUb1JlYWQgPSAocmVtYWluaW5nIDwgYnVmZmVyU2l6ZSkgPyBzdGF0aWNf
Y2FzdDxpbnQ+KHJlbWFpbmluZykgOiBidWZmZXJTaXplOwogICAgIGludCBieXRlc1JlYWQgPSAw
OwogICAgIGlmIChieXRlc1RvUmVhZCA+IDApCi0gICAgICAgIGJ5dGVzUmVhZCA9IHJlYWRGcm9t
RmlsZShtX2hhbmRsZSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CisgICAgICAgIGJ5dGVzUmVhZCA9
IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShtX2hhbmRsZSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7
CiAgICAgaWYgKGJ5dGVzUmVhZCA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoYnl0
ZXNSZWFkID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJl
YW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaAppbmRleCBkNDIxZTRm
M2JjMTVlMGM2OWVmOWMxYmUyOGJmMWM2MzYwYmFiNjA2Li45NjdkZWRjN2JhNmVjZjQyOTJkZjE5
Y2ZjMTg4NTFkMTY2YjNhYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCkBA
IC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIsIGludCBs
ZW5ndGgpOwogCiBwcml2YXRlOgotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZTsKKyAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9oYW5kbGU7CiAgICAgbG9uZyBsb25n
IG1fYnl0ZXNQcm9jZXNzZWQ7CiAgICAgbG9uZyBsb25nIG1fdG90YWxCeXRlc1RvUmVhZDsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDQ5ZGUzNDdhZTM0Nzlm
MDc1YTgwOGU2ZDRjYzU0YzVjOWNiYTUzY2YuLmI4OTQ3NWUwMjU4NzU1YjA0MTlhOWRkNTU3MmIw
NGI3ZjM4NzViZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCkBAIC00
Miw2ICs0Miw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIEZpbGVTeXN0
ZW0geworCiAvLyBUaGUgZm9sbG93aW5nIGxvd2VyLUFTQ0lJIGNoYXJhY3RlcnMgbmVlZCBlc2Nh
cGluZyB0byBiZSB1c2VkIGluIGEgZmlsZW5hbWUKIC8vIGFjcm9zcyBhbGwgc3lzdGVtcywgaW5j
bHVkaW5nIFdpbmRvd3M6CiAvLyAgICAgLSBVbnByaW50YWJsZSBBU0NJSSAoMDAtMUYpCkBAIC0z
NTksNCArMzYxLDUgQEAgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoLCBT
aG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1MKICAgICByZXR1cm4gbWV0YWRh
dGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RGlyZWN0b3J5OwogfQogCit9
IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVtCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggMzJjOTNlNjU4YjNlNWYxZDhjYjhiZDhlYWQw
Y2M2ODA0NGEzMmJhMi4uYTZjN2UzZWI3YzJkMzY2MjRlNTQ5MDRkNzVjZDQ3NmE2NWRlY2JkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAtNTYsNiArNTYsMTAgQEAgdHlw
ZWRlZiBzdHJ1Y3QgX0dGaWxlSU9TdHJlYW0gR0ZpbGVJT1N0cmVhbTsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitzdHJ1Y3QgRmlsZU1ldGFkYXRhOworCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7
CisKIC8vIFBsYXRmb3JtRmlsZUhhbmRsZQogI2lmIFVTRShHTElCKSAmJiAhUExBVEZPUk0oV0lO
KQogdHlwZWRlZiBHRmlsZUlPU3RyZWFtKiBQbGF0Zm9ybUZpbGVIYW5kbGU7CkBAIC05Miw4ICs5
Niw2IEBAIGVudW0gRmlsZUxvY2tNb2RlIHsKIAogZW51bSBjbGFzcyBTaG91bGRGb2xsb3dTeW1i
b2xpY0xpbmtzIHsgTm8sIFllcyB9OwogCi1zdHJ1Y3QgRmlsZU1ldGFkYXRhOwotCiBXRUJDT1JF
X0VYUE9SVCBib29sIGZpbGVFeGlzdHMoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBi
b29sIGRlbGV0ZUZpbGUoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0
ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwpAQCAtMjEzLDUgKzIxNSw2IEBAIGlubGlu
ZSBNYXBwZWRGaWxlRGF0YSYgTWFwcGVkRmlsZURhdGE6Om9wZXJhdG9yPShNYXBwZWRGaWxlRGF0
YSYmIG90aGVyKQogICAgIHJldHVybiAqdGhpczsKIH0KIAorfSAvLyBuYW1lc3BhY2UgRmlsZVN5
c3RlbQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAppbmRleCBlMWZjZGNlYmQxY2FjYmNjZGYxMTNhMDg5OTNhMmYzODU2YjFh
MmI5Li4wZDM1YjIxM2JmYzIxZDlkOGE5YjFkYTFmM2IyYmM5MDU3NGI5MjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgU2hhcmVk
QnVmZmVyOjpTaGFyZWRCdWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgc2l6ZV90IHNp
emUpCiAgICAgYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBzaXpl
KTsKIH0KIAotU2hhcmVkQnVmZmVyOjpTaGFyZWRCdWZmZXIoTWFwcGVkRmlsZURhdGEmJiBmaWxl
RGF0YSkKK1NoYXJlZEJ1ZmZlcjo6U2hhcmVkQnVmZmVyKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVE
YXRhJiYgZmlsZURhdGEpCiAgICAgOiBtX3NpemUoZmlsZURhdGEuc2l6ZSgpKQogewogICAgIG1f
c2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoZmlsZURhdGEp
KX0pOwpAQCAtNjEsNyArNjEsNyBAQCBTaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihWZWN0b3I8
Y2hhcj4mJiBkYXRhKQogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVX
aXRoQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICBib29sIG1h
cHBpbmdTdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRhKGZpbGVQYXRo
LCBtYXBwaW5nU3VjY2Vzcyk7CisgICAgRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEgbWFwcGVk
RmlsZURhdGEoZmlsZVBhdGgsIG1hcHBpbmdTdWNjZXNzKTsKIAogICAgIGlmICghbWFwcGluZ1N1
Y2Nlc3MpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmls
ZShmaWxlUGF0aCk7CkBAIC0yMDYsNyArMjA2LDcgQEAgY29uc3QgY2hhciogU2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6ZGF0YSgpIGNvbnN0CiAjaWYgVVNFKFNPVVApCiAgICAgICAgIFtdKGNv
bnN0IEdVbmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7IH0s
CiAjZW5kaWYKLSAgICAgICAgW10oY29uc3QgTWFwcGVkRmlsZURhdGEmIGRhdGEpIHsgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsgfQorICAgICAgICBb
XShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0YSkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOyB9CiAgICAgKTsKICAgICByZXR1
cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQpAQCAtMjI3LDcgKzIy
Nyw3IEBAIHNpemVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNp
ZiBVU0UoU09VUCkKICAgICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYgZGF0
YSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAogI2VuZGlm
Ci0gICAgICAgIFtdKGNvbnN0IE1hcHBlZEZpbGVEYXRhJiBkYXRhKSB7IHJldHVybiBkYXRhLnNp
emUoKTsgfQorICAgICAgICBbXShjb25zdCBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSYgZGF0
YSkgeyByZXR1cm4gZGF0YS5zaXplKCk7IH0KICAgICApOwogICAgIHJldHVybiBXVEY6OnZpc2l0
KHZpc2l0b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCmluZGV4IGZkMjZmMjFjNmJkYzdkMDU1MWYwNzQ0YmMyYWFiZTNkYmU2ZTNiZWYu
LjM0ZmY3MWM2Mzg2ZDgyY2VjNzVkZmEyNWM1ZDIwYTBhNGZlZmEyNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogI2lm
IFVTRShTT1VQKQogICAgICAgICBzdGF0aWMgUmVmPERhdGFTZWdtZW50PiBjcmVhdGUoR1VuaXF1
ZVB0cjxTb3VwQnVmZmVyPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YVNlZ21l
bnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2Vn
bWVudD4gY3JlYXRlKE1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KKyAgICAgICAgc3RhdGljIFJlZjxEYXRh
U2VnbWVudD4gY3JlYXRlKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgZGF0YSkgeyByZXR1
cm4gYWRvcHRSZWYoKm5ldyBEYXRhU2VnbWVudChXVEZNb3ZlKGRhdGEpKSk7IH0KIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIERhdGFTZWdtZW50KFZlY3RvcjxjaGFyPiYmIGRhdGEpCkBAIC0xMjUs
NyArMTI1LDcgQEAgcHVibGljOgogICAgICAgICBEYXRhU2VnbWVudChHVW5pcXVlUHRyPFNvdXBC
dWZmZXI+JiYgZGF0YSkKICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0
YSkpIHsgfQogI2VuZGlmCi0gICAgICAgIERhdGFTZWdtZW50KE1hcHBlZEZpbGVEYXRhJiYgZGF0
YSkKKyAgICAgICAgRGF0YVNlZ21lbnQoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBkYXRh
KQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAKICAg
ICAgICAgVmFyaWFudDxWZWN0b3I8Y2hhcj4sCkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgog
I2lmIFVTRShTT1VQKQogICAgICAgICAgICAgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiwKICNlbmRp
ZgotICAgICAgICAgICAgTWFwcGVkRmlsZURhdGE+IG1faW1tdXRhYmxlRGF0YTsKKyAgICAgICAg
ICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhPiBtX2ltbXV0YWJsZURhdGE7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAgICAgfTsKIApAQCAtMTU3LDcgKzE1Nyw3IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2hhcmVkQnVmZmVyKGNvbnN0IGNoYXIqLCBzaXplX3Qp
OwogICAgIGV4cGxpY2l0IFNoYXJlZEJ1ZmZlcihjb25zdCB1bnNpZ25lZCBjaGFyKiwgc2l6ZV90
KTsKICAgICBleHBsaWNpdCBTaGFyZWRCdWZmZXIoVmVjdG9yPGNoYXI+JiYpOwotICAgIGV4cGxp
Y2l0IFNoYXJlZEJ1ZmZlcihNYXBwZWRGaWxlRGF0YSYmKTsKKyAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJik7CiAjaWYgVVNFKENGKQogICAgIGV4
cGxpY2l0IFNoYXJlZEJ1ZmZlcihDRkRhdGFSZWYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAppbmRleCAxZjY4NGI2NWMxNGRiNDkyODM3ZTc2
YzFlOWQwMzk5ZjY5ODhmZmE1Li4wODQ3MGEwOGZhNWQyZjQ1MmU2YzkzODcwMWM2ZDkyNmNhNjA5
ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAg
LTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DU3RyaW5nIGZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCitDU3RyaW5nIEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmcoKTsKIApA
QCAtNTUsMTIgKzU1LDEyIEBAIENTdHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICByZXR1cm4gQ1N0cmluZyhidWZmZXIuZGF0YSgpLCBzdHJsZW4o
YnVmZmVyLmRhdGEoKSkpOwogfQogCi1TdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBjaGFyKiBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCitTdHJpbmcgRmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBjaGFyKiBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVXaXRoRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbikpLmdldCgpOwogfQogCi1SZXRhaW5QdHI8Q0ZVUkxSZWY+
IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCitSZXRhaW5QdHI8Q0ZVUkxSZWY+IEZpbGVT
eXN0ZW06OnBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQ0ZVUkxQYXRoU3R5
bGUgcGF0aFN0eWxlOwogI2lmIFBMQVRGT1JNKFdJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVNb25pdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9GaWxlTW9uaXRvckNvY29hLm1tCmluZGV4IDM5NWRmNzc3MTlhMDY0MzFj
NzkzN2JmZTUzZTZmZjg1ZjFlOTQxNzQuLjU3ODQzNGQyZDA3YmE5NjUxNTZjNWE2YTg3NzA1OTk3
MjBjMmRjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVN
b25pdG9yQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZU1v
bml0b3JDb2NvYS5tbQpAQCAtNDMsOCArNDMsOCBAQCBGaWxlTW9uaXRvcjo6RmlsZU1vbml0b3Io
Y29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1ZSwgV1RGOgog
ICAgIGlmICghbW9kaWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBoYW5kbGUgPSBvcGVuRmlsZShwYXRoLCBPcGVuRm9yRXZlbnRzT25seSk7Ci0gICAgaWYgKGhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKSB7CisgICAgYXV0byBoYW5kbGUgPSBG
aWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yRXZlbnRzT25seSk7
CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxl
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0YXRpc3RpY3MsICJG
YWlsZWQgdG8gb3BlbiBzdGF0aXN0aWNzIGZpbGUgZm9yIG1vbml0b3Jpbmc6ICVzIiwgcGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcxLDcgKzcxLDcgQEAg
RmlsZU1vbml0b3I6OkZpbGVNb25pdG9yKGNvbnN0IFN0cmluZyYgcGF0aCwgUmVmPFdvcmtRdWV1
ZT4mJiBoYW5kbGVyUXVldWUsIFdURjoKICAgICB9KS5nZXQoKSk7CiAgICAgCiAgICAgZGlzcGF0
Y2hfc291cmNlX3NldF9jYW5jZWxfaGFuZGxlcihtX3BsYXRmb3JtTW9uaXRvci5nZXQoKSwgW2hh
bmRsZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9KTsKICAgICAKICAgICBkaXNwYXRj
aF9yZXN1bWUobV9wbGF0Zm9ybU1vbml0b3IuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvRmlsZVN5c3RlbUNvY29hLm1tCmluZGV4IGE3ZDA5N2NkOWY4N2Y0Yzhm
ZjYwNGYzNDlkYjY4MmRjYzE4NGUzMzguLjIwNDM5Zjg1MTFjNDJhMWExYjRmNjgzOTM2MWE0YWIx
YTNiNTk0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0ZpbGVT
eXN0ZW1Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9GaWxlU3lz
dGVtQ29jb2EubW0KQEAgLTQ2LDYgKzQ2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitu
YW1lc3BhY2UgRmlsZVN5c3RlbSB7CisKIFN0cmluZyBob21lRGlyZWN0b3J5UGF0aCgpCiB7CiAg
ICAgcmV0dXJuIE5TSG9tZURpcmVjdG9yeSgpOwpAQCAtMTI4LDQgKzEzMCw1IEBAIE5TU3RyaW5n
ICpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCkKICAg
ICByZXR1cm4gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBzdHJpbmdXaXRoRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uOnBhdGguZGF0YSgpIGxlbmd0aDpsZW5ndGhdOwogfQogCit9IC8v
IG5hbWVzcGFjZSBGaWxlU3lzdGVtCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0ZpbGVNb25pdG9yR0xpYi5jcHAKaW5kZXggZDZkOWVm
N2E1Y2EwMjhmYzhiMjA3MGY0NmZhODk0MGE2M2IxZGNmYi4uOTQ5MjRlNjFkYmY0ZjY3YTE4ZWJh
ZTk0ZDk0Y2Y3OTIyODQ5ZmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9GaWxlTW9uaXRvckdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZU1vbml0b3JHTGliLmNwcApAQCAtMzcsNyArMzcsNyBAQCBGaWxlTW9uaXRvcjo6Rmls
ZU1vbml0b3IoY29uc3QgU3RyaW5nJiBwYXRoLCBSZWY8V29ya1F1ZXVlPiYmIGhhbmRsZXJRdWV1
ZSwgV1RGOgogICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhbW9kaWZpY2F0aW9uSGFuZGxlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3BhdGgoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIGF1
dG8gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpKTsKICAgICBtX2NhbmNlbGxhYmxlID0g
YWRvcHRHUmVmKGdfY2FuY2VsbGFibGVfbmV3KCkpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9y
PiBlcnJvcjsKICAgICBtX3BsYXRmb3JtTW9uaXRvciA9IGFkb3B0R1JlZihnX2ZpbGVfbW9uaXRv
cihmaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9OT05FLCBtX2NhbmNlbGxhYmxlLmdldCgpLCAm
ZXJyb3Iub3V0UHRyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ds
aWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxl
U3lzdGVtR2xpYi5jcHAKaW5kZXggOTMyZTgzZmQ5NGFlMzg2ZTE3Nzk0ZjVhOGM0N2ExYWM4YWVh
ZDU1MS4uOTE1MGE3NGUwMTA1NzQxMzJlMWI2Njk3MDBiZjJhZTI0MGI4NzcyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTQwLDYg
KzQwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7
CisKIC8qIE9uIGxpbnV4IGZpbGUgbmFtZXMgYXJlIGp1c3QgcmF3IGJ5dGVzLCBzbyBhbHNvIHN0
cmluZ3MgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBhbnkgd2F5CiAgKiBhcmUgdmFsaWQgZmls
ZSBuYW1lcy4gVGhpcyBtZWFuIHRoYXQgd2UgY2Fubm90IGp1c3Qgc3RvcmUgYSBmaWxlIG5hbWUg
YXMtaXMgaW4gYSBTdHJpbmcKICAqIGJ1dCB3ZSBoYXZlIHRvIGVzY2FwZSBpdC4KQEAgLTQ5Niw0
ICs0OTgsNSBAQCBib29sIHVubG9ja0ZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSkKIH0K
ICNlbmRpZiAvLyBVU0UoRklMRV9MT0NLKQogCi19Cit9IC8vIG5hbWVzcGFjZSBGaWxlU3lzdGVt
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9TaGFyZWRCdWZmZXJHbGliLmNwcAppbmRleCBhZDczNDlkNmYzZGEyMGI4ZDkyMGJiZjQ1
MzRiZWZmZjc2YWMxYjJkLi4zMzVkODVkMWIxYjg3MzkxYzM2MWRkM2Q4OGJjMmNkYmIxZjI3ZWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1NoYXJlZEJ1ZmZlckds
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvU2hhcmVkQnVmZmVyR2xp
Yi5jcHAKQEAgLTMzLDEyICszMywxMiBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlm
IChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQ1N0
cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAg
Q1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihm
aWxlUGF0aCk7CiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gY29udGVudHM7CiAgICAgZ3NpemUg
c2l6ZTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVf
Z2V0X2NvbnRlbnRzKGZpbGVuYW1lLmRhdGEoKSwgJmNvbnRlbnRzLm91dFB0cigpLCAmc2l6ZSwg
JmVycm9yLm91dFB0cigpKSkgewotICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBmdWxseSBy
ZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIGZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0
aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBmdWxseSByZWFkIGNvbnRlbnRzIG9mIGZpbGUgJXMgLSAlcyIsIEZpbGVTeXN0ZW06
OmZpbGVuYW1lRm9yRGlzcGxheShmaWxlUGF0aCkudXRmOCgpLmRhdGEoKSwgZXJyb3ItPm1lc3Nh
Z2UpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25B
VkNvbnRlbnRLZXlTZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KaW5kZXgg
Y2E2MzNhMmRhOGZiODcyOWI2Yjg0NTY4YjZhN2JmYjUxODRiN2VmOC4uY2I4MGU4MjM2YjI1NThj
MzA1MzRlM2IzOTMzNGRlNjNiNmI2MzIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24ubW0KQEAgLTM2NSwxMCArMzY1
LDEwIEBAIEFWQ29udGVudEtleVNlc3Npb24qIENETVNlc3Npb25BVkNvbnRlbnRLZXlTZXNzaW9u
Ojpjb250ZW50S2V5U2Vzc2lvbigpCiAKICAgICAgICAgbV9jb250ZW50S2V5U2Vzc2lvbiA9IFtn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lvbldpdGhLZXlTeXN0
ZW06Z2V0QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKV07CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkgPSBkaXJlY3RvcnlOYW1lKHN0b3Jh
Z2VQYXRoKTsKKyAgICAgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKHN0b3JhZ2VQYXRoKTsKIAotICAgICAgICBpZiAoIWZpbGVFeGlzdHMoc3Rv
cmFnZURpcmVjdG9yeSkpIHsKLSAgICAgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHN0
b3JhZ2VEaXJlY3RvcnkpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3Rv
cmFnZURpcmVjdG9yeSkpIHsKKyAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERp
cmVjdG9yaWVzKHN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Np
b25NZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggNmE5ODlhNWEwMmRiNTI3NGFlYmQ3ODM5ZTAy
ZTg1YTFmNzMzZDllMC4uMTA3YjFiZGZmNzFlNmI0ODQ0MDhlZGJmZGI3Njc3YWNjMjk2ODFhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCkBAIC0xMDUsNyArMTA1LDcgQEAgU3RyaW5nIENETVNlc3Npb25NZWRpYVNv
dXJjZUFWRk9iakM6OnN0b3JhZ2VQYXRoKCkgY29uc3QKICAgICBpZiAoc3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJu
IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdG9yYWdlRGlyZWN0b3J5LCAiU2VjdXJlU3RvcC5w
bGlzdCIpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
c3RvcmFnZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCmluZGV4IGMwOTczZWZjMGQ4NDQ3ODY0Yjk0OTdhNmY2ZTQ3YzU3NTIx
MWFiZGUuLjMyZDMwOGMwMjZmMzQ3NjRjMjA0MTRlM2YxYzM2MDc0MGU4ZGM1ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTkyNywxMiArOTI3LDEyIEBAIEFWU3RyZWFtU2Vzc2lv
biogTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdHJlYW1TZXNzaW9uKCkK
ICAgICAgICAgaWYgKHN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgICAgICBpZiAoIWZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsK
LSAgICAgICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VEaXJlY3RvcnkpKQor
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoc3RvcmFnZURpcmVjdG9yeSkpIHsK
KyAgICAgICAgICAgIGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VE
aXJlY3RvcnkpKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAgIH0KIAotICAg
ICAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFn
ZURpcmVjdG9yeSwgIlNlY3VyZVN0b3AucGxpc3QiKTsKKyAgICAgICAgU3RyaW5nIHN0b3JhZ2VQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHN0b3JhZ2VEaXJlY3Rv
cnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CiAgICAgICAgIG1fc3RyZWFtU2Vzc2lvbiA9IGFkb3B0
TlMoW2FsbG9jQVZTdHJlYW1TZXNzaW9uSW5zdGFuY2UoKSBpbml0V2l0aFN0b3JhZ2VEaXJlY3Rv
cnlBdFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnN0b3JhZ2VQYXRoXV0pOwogICAgIH0KICAg
ICByZXR1cm4gbV9zdHJlYW1TZXNzaW9uLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmZDlhNzU5MjE3ZDQ5ODM0YzdhNzNhYWY1
ZWVkMDI0ZGYwOTQ4YWVjLi4xMmM5MDFmMzhmODFjMjcxY2Y5YjhjOTBhYWRmNzY4OTNhMGQ5YjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTM4OCw3ICsxMzg4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRv
d25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBnX29iamVj
dF9nZXQocGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZk
b3dubG9hZEZpbGUub3V0UHRyKCksIG51bGxwdHIpOwogICAgIHBsYXllci0+bV9kb3dubG9hZEJ1
ZmZlciA9IG51bGxwdHI7CiAKLSAgICBpZiAoVU5MSUtFTFkoIWRlbGV0ZUZpbGUoZG93bmxvYWRG
aWxlLmdldCgpKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
ZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVu
bGluayBtZWRpYSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmls
ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDA1LDggKzE0MDUsOCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVyZ2VPbGREb3dubG9hZEZpbGVzKGNv
bnN0IGNoYXIqIGRvd25sb2FkRmlsZQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGVtcGxhdGVGaWxl
KGdfcGF0aF9nZXRfYmFzZW5hbWUoZG93bmxvYWRGaWxlVGVtcGxhdGUpKTsKICAgICBTdHJpbmcg
dGVtcGxhdGVQYXR0ZXJuID0gU3RyaW5nKHRlbXBsYXRlRmlsZS5nZXQoKSkucmVwbGFjZSgiWCIs
ICI/Iik7CiAKLSAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDogbGlzdERpcmVjdG9yeSh0ZW1wbGF0
ZVBhdGguZ2V0KCksIHRlbXBsYXRlUGF0dGVybikpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFk
ZWxldGVGaWxlKGZpbGVQYXRoKSkpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeSh0ZW1wbGF0ZVBhdGguZ2V0KCksIHRlbXBsYXRlUGF0dGVybikp
IHsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVQYXRo
KSkpIHsKICAgICAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbGVnYWN5IG1l
ZGlhIHRlbXBvcmFyeSBmaWxlOiAlcyIsIGZpbGVQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9ESUJQaXhlbERhdGEuaAppbmRleCA2NWFkMjI3ODcwNDkwYzcyMzE0
MWE4OWFmNTE2NGMzNGU0Y2Y0Yzk3Li40YzNlODAxOGQ1NDNkYjM1NDY2MDQ4MTJhNjY5NzcyNGYy
YTdjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RElCUGl4ZWxEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RJQlBpeGVsRGF0YS5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRp
YWxpemUoSEJJVE1BUCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCB3cml0ZVRvRmlsZShM
UENXU1RSKTsKKyAgICB2b2lkIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKExQQ1dTVFIpOwogI2Vu
ZGlmCiAKICAgICBVSW50OCogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRtYXBCdWZmZXI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9RdWlja0xvb2subW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUXVpY2tMb29rLm1tCmluZGV4IGE0NWY3NTdj
ZGY5NThjM2M2NWE0YzA1ZDRjMDA5YjNjNzc5YzQ0NmMuLmQzZGY4ZWVlZmZlMTY4NGEzNWU1Yjg0
NWEwNWE0NzUxODUzMzQxYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9RdWlja0xvb2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1F1aWNrTG9v
ay5tbQpAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnRlbXBvcmFyeURp
cmVjdG9yeUF0dHJpYnV0ZXMoKQogCiBOU1N0cmluZyAqY3JlYXRlVGVtcG9yYXJ5RmlsZUZvclF1
aWNrTG9vayhOU1N0cmluZyAqZmlsZU5hbWUpCiB7Ci0gICAgTlNTdHJpbmcgKmRvd25sb2FkRGly
ZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiUXVpY2tMb29rQ29udGVudCIpOwor
ICAgIE5TU3RyaW5nICpkb3dubG9hZERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAIlF1aWNrTG9va0NvbnRlbnQiKTsKICAgICBpZiAoIWRvd25sb2FkRGly
ZWN0b3J5KQogICAgICAgICByZXR1cm4gbmlsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDVjZGY0
ZDg4MWE0NTk1MDU1YjQxNjZlZjJjMTg4NzdiN2IyMWM3ZGYuLmIzNDMxNjhlZjI0NDJlNWU3ZDNm
N2I1ZDUzZDA5MjlhZmU4NmU3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCkBAIC01MTYsNyArNTE2LDcg
QEAgc3RhdGljIE5TVVJMICpsaW5rVGVtcG9yYXJ5SXRlbVByb3ZpZGVyRmlsZXNUb0Ryb3BTdGFn
aW5nRGlyZWN0b3J5KE5TVVJMICp1cmwsIE4KICAgICBpZiAoIXVybCkKICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgIE5TU3RyaW5nICp0ZW1wb3JhcnlEYXRhSW50ZXJhY3Rpb25EaXJlY3Rvcnkg
PSBXZWJDb3JlOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoZGF0YUludGVyYWN0aW9uRGlyZWN0
b3J5UHJlZml4KTsKKyAgICBOU1N0cmluZyAqdGVtcG9yYXJ5RGF0YUludGVyYWN0aW9uRGlyZWN0
b3J5ID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KGRhdGFJ
bnRlcmFjdGlvbkRpcmVjdG9yeVByZWZpeCk7CiAgICAgaWYgKCF0ZW1wb3JhcnlEYXRhSW50ZXJh
Y3Rpb25EaXJlY3RvcnkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9GaWxlU3lzdGVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0KaW5kZXggOGYxNDMxNjU4MTg3OTgxMzE1NzY0
YmU4OTQzZGJjNzQ3ODNiMTBiMy4uNjQwZGZjMTJiNmIzNzk3YjlmMDFjODU0ZTZlNTZhMzJlMDA2
NTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1N
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0ZpbGVTeXN0ZW1NYWMubW0K
QEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wgRmlsZVN5c3RlbTo6ZGVsZXRl
RW1wdHlEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGF1dG8gZmlsZU1hbmFn
ZXIgPSBhZG9wdE5TKFtbTlNGaWxlTWFuYWdlciBhbGxvY10gaW5pdF0pOwogCkBAIC00NSwxMCAr
NDUsMTAgQEAgYm9vbCBkZWxldGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgfQogCiAgICAgLy8gcm1kaXIoLi4uKSByZXR1cm5zIDAgb24gc3VjY2Vzc2Z1bCBkZWxldGlv
biBvZiB0aGUgcGF0aCBhbmQgbm9uLXplcm8gaW4gYW55IG90aGVyIGNhc2UgKGluY2x1ZGluZyBp
bnZhbGlkIHBlcm1pc3Npb25zIG9yIG5vbi1leGlzdGVudCBmaWxlKQotICAgIHJldHVybiAhcm1k
aXIoZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgcmV0dXJuICFy
bWRpcihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKTsK
IH0KIAotdm9pZCBzZXRNZXRhZGF0YVVSTChjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFN0cmlu
ZyYgbWV0YWRhdGFVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCit2b2lkIEZpbGVT
eXN0ZW06OnNldE1ldGFkYXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBt
ZXRhZGF0YVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBTdHJpbmcg
dXJsU3RyaW5nOwogICAgIGlmIChOU1VSTCAqdXJsID0gVVJMV2l0aFVzZXJUeXBlZFN0cmluZyht
ZXRhZGF0YVVSTFN0cmluZywgbmlsKSkKQEAgLTcxLDE1ICs3MSwxNSBAQCB2b2lkIHNldE1ldGFk
YXRhVVJMKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YVVSTFN0cmlu
ZywgY29uc3QgUwogICAgIH0pOwogfQogCi1ib29sIGNhbkV4Y2x1ZGVGcm9tQmFja3VwKCkKK2Jv
b2wgRmlsZVN5c3RlbTo6Y2FuRXhjbHVkZUZyb21CYWNrdXAoKQogewogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIGV4Y2x1ZGVGcm9tQmFja3VwKGNvbnN0IFN0cmluZyYgcGF0aCkKK2Jvb2wg
RmlsZVN5c3RlbTo6ZXhjbHVkZUZyb21CYWNrdXAoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAg
IC8vIEl0IGlzIGNyaXRpY2FsIHRvIHBhc3MgRkFMU0UgZm9yIGV4Y2x1ZGVCeVBhdGggYmVjYXVz
ZSBleGNsdWRpbmcgYnkgcGF0aCByZXF1aXJlcyByb290IHByaXZpbGVnZXMuCi0gICAgQ1NCYWNr
dXBTZXRJdGVtRXhjbHVkZWQocGF0aEFzVVJMKHBhdGgpLmdldCgpLCBUUlVFLCBGQUxTRSk7IAor
ICAgIENTQmFja3VwU2V0SXRlbUV4Y2x1ZGVkKEZpbGVTeXN0ZW06OnBhdGhBc1VSTChwYXRoKS5n
ZXQoKSwgVFJVRSwgRkFMU0UpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5j
cHAKaW5kZXggYzg5YjUyODNlMzlkYjU5ODBiZTJiNTg2M2M4YzZkMDFjMWYzZmU2MS4uNmE1ZjEy
ZTg0ZDc0N2Q4NWMwOWUwNWZhMTQzMDkzZjQ4MTAwNmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcApA
QCAtMzgsNyArMzgsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLCBtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5l
cmF0ZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fc2l6ZSgwKQotICAgICwgbV9leHBlY3RlZE1v
ZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCisgICAgLCBtX2V4cGVjdGVkTW9kaWZp
Y2F0aW9uVGltZShGaWxlU3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSkKIHsKIH0KIApAQCAtNDYs
NyArNDYsNyBAQCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6On5CbG9iRGF0YUZpbGVSZWZlcmVuY2Uo
KQogewogI2lmIEVOQUJMRShGSUxFX1JFUExBQ0VNRU5UKQogICAgIGlmICghbV9yZXBsYWNlbWVu
dFBhdGguaXNOdWxsKCkpCi0gICAgICAgIGRlbGV0ZUZpbGUobV9yZXBsYWNlbWVudFBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcmVwbGFjZW1lbnRQYXRoKTsKICNlbmRp
ZgogfQogCkBAIC03OSw3ICs3OSw3IEBAIGRvdWJsZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4
cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRseSB0cmFj
ayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2ZSBhIHNu
YXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRoaXMgaXMgaW5jb25zaXN0ZW50IHdpdGgg
cmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmplY3RzIHNob3VsZCBiZSBpbnZhbGlkYXRl
ZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgogICAgIGlmIChtX3JlcGxhY2VtZW50U2hv
dWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQYXRoLmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm4gaW52YWxpZEZpbGVUaW1lKCk7CisgICAgICAgIHJldHVybiBGaWxlU3lzdGVtOjppbnZh
bGlkRmlsZVRpbWUoKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIG1fZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lOwpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c3Rh
cnRUcmFja2luZ01vZGlmaWNhdGlvbnMoKQogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogU29tZSBw
bGF0Zm9ybXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lzdGVtIG9i
amVjdCBjaGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KLSAgICBhdXRvIG1ldGFkYXRhID0g
ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9wYXRoKTsKKyAgICBhdXRvIG1ldGFkYXRh
ID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9wYXRoKTsKICAg
ICBpZiAoIW1ldGFkYXRhKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCmluZGV4IDBmMDE5NzRj
YTJiMzMyYTM0ZmNmMTAwNzgxYjMyM2M5N2JiMzQzY2YuLjE5N2ViMjkyZTMwYTVjYjIxMGE4NTdk
YmVjMzE1MzQ2NGYyM2U4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcApAQCAtMjgzLDE0ICsyODMsMTQgQEAgdm9pZCBC
bG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYlVSTHMKIAogICAgICAgICBhdXRvIHBlcmZvcm1Xcml0aW5nID0gW2Jsb2Jz
Rm9yV3JpdGluZyA9IFdURk1vdmUoYmxvYnNGb3JXcml0aW5nKSwgJmZpbGVQYXRoc10oKSB7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGJsb2IgOiBibG9ic0ZvcldyaXRpbmcpIHsKLSAgICAgICAg
ICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKLSAgICAgICAgICAgICAgICBTdHJpbmcg
dGVtcEZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoQVNDSUlMaXRlcmFsKCJCbG9iIiksIGZp
bGUpOworICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmaWxl
OworICAgICAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVu
VGVtcG9yYXJ5RmlsZShBU0NJSUxpdGVyYWwoIkJsb2IiKSwgZmlsZSk7CiAKICAgICAgICAgICAg
ICAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW2ZpbGVdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsb3NlRmlsZShmaWxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwogICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmICh0ZW1wRmlsZVBhdGguaXNFbXB0
eSgpIHx8ICFpc0hhbmRsZVZhbGlkKGZpbGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHRlbXBG
aWxlUGF0aC5pc0VtcHR5KCkgfHwgIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmlsZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiB0ZW1wb3Jhcnkg
ZmlsZSBmb3Igd3JpdGluZyBhIEJsb2IgdG8gSW5kZXhlZERCIik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CkBAIC0yOTgsMTMgKzI5OCwxMyBA
QCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcwogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcGFy
dCA6IGJsb2IuZmlsZVBhdGhzT3JEYXRhQnVmZmVycykgewogICAgICAgICAgICAgICAgICAgICBp
ZiAocGFydC5zZWNvbmQuZGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVu
Z3RoID0gcGFydC5zZWNvbmQuZGF0YSgpLT5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFy
dC5zZWNvbmQuZGF0YSgpLT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHBhcnQuc2Vjb25kLmRhdGEoKS0+ZGF0YSgpKSwgbGVuZ3Ro
KSAhPSBsZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB3cml0aW5nIGEgQmxvYiB0byB0ZW1wb3JhcnkgZmlsZSBmb3Igc3RvcmFnZSBpbiBJbmRl
eGVkREIiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIXBhcnQuZmlyc3QuaXNFbXB0eSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKHBh
cnQuZmlyc3QsIGZpbGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUZpbGVTeXN0
ZW06OmFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShwYXJ0LmZpcnN0LCBmaWxlKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVkIGNvcHlpbmcgRmls
ZSBjb250ZW50cyB0byBhIEJsb2IgdGVtcG9yYXJ5IGZpbGUgZm9yIHN0b3JhZ2UgaW4gSW5kZXhl
ZERCICglcyB0byAlcykiLCBwYXJ0LmZpcnN0LnV0ZjgoKS5kYXRhKCksIHRlbXBGaWxlUGF0aC51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IGM1NzVmZGE0NTJhZDhjMGIxZDIwZjQzMTZjYmFhZDBj
OTczZGU5ZjMuLjcyNDQyM2VlYTVjYTVkZTc4N2U1OGVjMDQ5MTA3M2UyZTFkMjIwNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdWludDY0X3QgRm9ybURhdGFFbGVtZW50OjpsZW5ndGhJbkJ5dGVzKCkgY29uc3QK
ICAgICAgICAgaWYgKG1fZmlsZUxlbmd0aCAhPSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQog
ICAgICAgICAgICAgcmV0dXJuIG1fZmlsZUxlbmd0aDsKICAgICAgICAgbG9uZyBsb25nIGZpbGVT
aXplOwotICAgICAgICBpZiAoZ2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dl
bmVyYXRlZEZpbGVuYW1lIDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQorICAgICAgICBpZiAoRmls
ZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9zaG91bGRHZW5lcmF0ZUZpbGUgPyBtX2dlbmVyYXRlZEZp
bGVuYW1lIDogbV9maWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgcmV0dXJuIGZpbGVT
aXplOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBG
b3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9p
ZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3Vs
ZEdlbmVyYXRlRmlsZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQo
ZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIGludmFsaWRGaWxlVGltZSgp
LCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVs
ZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06
OmludmFsaWRGaWxlVGltZSgpLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKICAgICBtX2xlbmd0aElu
Qnl0ZXMgPSBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTQwOCw5ICs0MDgsOSBAQCB2b2lkIEZvcm1E
YXRhOjpyZW1vdmVHZW5lcmF0ZWRGaWxlc0lmTmVlZGVkKCkKICAgICAgICAgaWYgKGVsZW1lbnQu
bV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGUgJiYgZWxlbWVudC5t
X293bnNHZW5lcmF0ZWRGaWxlKSB7CiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQubV9nZW5l
cmF0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpOwogICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQubV9z
aG91bGRHZW5lcmF0ZUZpbGUpOwotICAgICAgICAgICAgU3RyaW5nIGRpcmVjdG9yeSA9IGRpcmVj
dG9yeU5hbWUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0
ZUZpbGUoZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICAgICAgICAgIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KGRpcmVjdG9yeSk7CisgICAgICAgICAgICBTdHJpbmcgZGlyZWN0b3J5ID0g
RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmlsZW5hbWUpOwor
ICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShlbGVtZW50Lm1fZ2VuZXJhdGVkRmls
ZW5hbWUpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoZGly
ZWN0b3J5KTsKICAgICAgICAgICAgIGVsZW1lbnQubV9nZW5lcmF0ZWRGaWxlbmFtZSA9IFN0cmlu
ZygpOwogICAgICAgICAgICAgZWxlbWVudC5tX293bnNHZW5lcmF0ZWRGaWxlID0gZmFsc2U7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Rm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCmluZGV4IGQ4YjQ1YjNlMDdkZjNhNjA5ZDgxYTBk
ZTU3ZmJkY2NlNjA4MzI4MTUuLjI3MTFkMjlmMGVkOWY0MmY5OGU5NzE0ODYxNjgxZjBmY2QyNmNj
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcApAQCAtMTQ3LDEzICsxNDcsMTMgQEAgc3RhdGljIGJv
b2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVhbUZpZWxkcyogZm9ybSkKICAgICAgICAg
Zm9ybS0+Y3VycmVudERhdGEgPSBXVEZNb3ZlKGRhdGEpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIENoZWNrIGlmIHRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQgb3Igbm90IGlmIHJlcXVpcmVk
LgotICAgICAgICBpZiAoaXNWYWxpZEZpbGVUaW1lKG5leHRJbnB1dC5tX2V4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUpKSB7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRp
bWUobmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpIHsKICAgICAgICAg
ICAgIHRpbWVfdCBmaWxlTW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAgICAgIGlmICghZ2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUobmV4dElucHV0Lm1fZmlsZW5hbWUsIGZpbGVNb2RpZmljYXRpb25U
aW1lKSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KG5leHRJ
bnB1dC5tX2V4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICAgICAgaWYgKCFG
aWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShuZXh0SW5wdXQubV9maWxlbmFtZSwg
ZmlsZU1vZGlmaWNhdGlvblRpbWUpIHx8IGZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0YXRpY19j
YXN0PHRpbWVfdD4obmV4dElucHV0Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgcGF0aCA9IG5leHRJbnB1dC5tX3Nob3VsZEdlbmVyYXRlRmlsZSA/IG5leHRJbnB1dC5t
X2dlbmVyYXRlZEZpbGVuYW1lIDogbmV4dElucHV0Lm1fZmlsZW5hbWU7Ci0gICAgICAgIGZvcm0t
PmN1cnJlbnRTdHJlYW0gPSBDRlJlYWRTdHJlYW1DcmVhdGVXaXRoRmlsZSgwLCBwYXRoQXNVUkwo
cGF0aCkuZ2V0KCkpOworICAgICAgICBmb3JtLT5jdXJyZW50U3RyZWFtID0gQ0ZSZWFkU3RyZWFt
Q3JlYXRlV2l0aEZpbGUoMCwgRmlsZVN5c3RlbTo6cGF0aEFzVVJMKHBhdGgpLmdldCgpKTsKICAg
ICAgICAgaWYgKCFmb3JtLT5jdXJyZW50U3RyZWFtKSB7CiAgICAgICAgICAgICAvLyBUaGUgZmls
ZSBtdXN0IGhhdmUgYmVlbiByZW1vdmVkIG9yIGJlY29tZSB1bnJlYWRhYmxlLgogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMzc5LDcgKzM3OSw3IEBAIFJldGFpblB0cjxDRlJlYWRTdHJl
YW1SZWY+IGNyZWF0ZUhUVFBCb2R5Q0ZSZWFkU3RyZWFtKEZvcm1EYXRhJiBmb3JtRGF0YSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxvbmcg
bG9uZyBmaWxlU2l6ZTsKLSAgICAgICAgICAgIGlmIChnZXRGaWxlU2l6ZShlbGVtZW50Lm1fc2hv
dWxkR2VuZXJhdGVGaWxlID8gZWxlbWVudC5tX2dlbmVyYXRlZEZpbGVuYW1lIDogZWxlbWVudC5t
X2ZpbGVuYW1lLCBmaWxlU2l6ZSkpCisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0Rmls
ZVNpemUoZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSA/IGVsZW1lbnQubV9nZW5lcmF0ZWRG
aWxlbmFtZSA6IGVsZW1lbnQubV9maWxlbmFtZSwgZmlsZVNpemUpKQogICAgICAgICAgICAgICAg
IGxlbmd0aCArPSBmaWxlU2l6ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENv
Y29hLm1tCmluZGV4IGM3NTc1ZDdhYTgxMDMxMTY2YTkyODg3MmQyYTc5ZjY2N2UzMzdlNTYuLjYy
YzExYzEyNzVkY2E2NjY5MDU0ZWM3MDEwOTY2N2RmY2ZjNDgxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbQpAQCAtMjEyLDkgKzIxMiw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1Vw
ZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMCkKICAgICBpZiAobV91cmwuaXNMb2NhbEZp
bGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKKyAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7
CiAgICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZp
bGVEZXZpY2UgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgICAgIGF1dG8g
ZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOwogICAg
ICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52YWx1ZSgpKQogICAgICAgICAg
ICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdl
cjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4
cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IGVkNTkwMjY1MWIy
OTkxYmYzODUzZmVhYWMzZGI5ZjY5M2ExYWQ4ZTQuLjAzNWE2YjE5MDYzMzk5NzllZjQ0Y2MzYjEw
MGRjMTdjODFjODA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5n
JiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cmluZyYgY2FjaGVEaXIpCiAgICAg
OiBtX2hlYWRlckZpbGVuYW1lKGNhY2hlRGlyKQogICAgICwgbV9jb250ZW50RmlsZW5hbWUoY2Fj
aGVEaXIpCi0gICAgLCBtX2NvbnRlbnRGaWxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisg
ICAgLCBtX2NvbnRlbnRGaWxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUp
CiAgICAgLCBtX2VudHJ5U2l6ZSgwKQogICAgICwgbV9leHBpcmVEYXRlKC0xKQogICAgICwgbV9o
ZWFkZXJQYXJzZWQoZmFsc2UpCkBAIC03OSw3ICs3OSw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6
OmlzTG9hZGluZygpIGNvbnN0CiAvLyBDYWNoZSBtYW5hZ2VyIHNob3VsZCBpbnZhbGlkYXRlIHRo
ZSBlbnRyeSBvbiBmYWxzZQogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6aXNDYWNoZWQoKQogewotICAg
IGlmICghZmlsZUV4aXN0cyhtX2NvbnRlbnRGaWxlbmFtZSkgfHwgIWZpbGVFeGlzdHMobV9oZWFk
ZXJGaWxlbmFtZSkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG1fY29udGVudEZp
bGVuYW1lKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhtX2hlYWRlckZpbGVuYW1lKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2hlYWRlclBhcnNlZCkgewpAQCAtMTA0
LDcgKzEwNCw3IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVDYWNoZWREYXRhKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBB
cHBlbmQKLSAgICB3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKKyAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2NvbnRlbnRGaWxlLCBkYXRhLCBzaXplKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQpAQCAtMTI1LDggKzEyNSw4IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6
OnJlYWRDYWNoZWREYXRhKFJlc291cmNlSGFuZGxlKiBqb2IpCiAKIGJvb2wgQ3VybENhY2hlRW50
cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGhlYWRlckZpbGUgPSBvcGVuRmlsZShtX2hlYWRl
ckZpbGVuYW1lLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmICghaXNIYW5kbGVWYWxpZChoZWFkZXJG
aWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoZWFkZXJGaWxlID0g
RmlsZVN5c3RlbTo6b3BlbkZpbGUobV9oZWFkZXJGaWxlbmFtZSwgRmlsZVN5c3RlbTo6T3BlbkZv
cldyaXRlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoaGVhZGVyRmlsZSkp
IHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMg
Zm9yIHdyaXRlXG4iLCBtX2hlYWRlckZpbGVuYW1lLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xNDAsMTIgKzE0MCwxMiBAQCBib29sIEN1cmxDYWNo
ZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKICAgICAgICAgaGVh
ZGVyRmllbGQuYXBwZW5kKCJcbiIpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4x
ID0gaGVhZGVyRmllbGQubGF0aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGhlYWRlckZpbGUs
IGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwor
ICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExh
dGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNo
ZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAgICAg
ICAgKytpdDsKICAgICB9CiAKLSAgICBjbG9zZUZpbGUoaGVhZGVyRmlsZSk7CisgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKGhlYWRlckZpbGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0y
MjcsMTYgKzIyNywxNiBAQCB2b2lkIEN1cmxDYWNoZUVudHJ5OjpnZW5lcmF0ZUJhc2VGaWxlbmFt
ZShjb25zdCBDU3RyaW5nJiB1cmwpCiBib29sIEN1cmxDYWNoZUVudHJ5Ojpsb2FkRmlsZVRvQnVm
ZmVyKGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAg
IC8vIE9wZW4gdGhlIGZpbGUKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5wdXRGaWxlID0gb3Bl
bkZpbGUoZmlsZXBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaW5w
dXRGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbnB1dEZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlcGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQp
OworICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChpbnB1dEZpbGUpKSB7CiAgICAg
ICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxkIG5vdCBvcGVuICVzIGZvciByZWFk
XG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgbG9uZyBsb25nIGZpbGVzaXplID0gLTE7Ci0gICAgaWYgKCFnZXRGaWxlU2l6
ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRGaWxlU2l6
ZShmaWxlcGF0aCwgZmlsZXNpemUpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJy
b3I6IENvdWxkIG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5k
YXRhKCkpOwotICAgICAgICBjbG9zZUZpbGUoaW5wdXRGaWxlKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGlucHV0RmlsZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTI0OSwyNCArMjQ5LDI0IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OmxvYWRGaWxlVG9CdWZm
ZXIoY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgVmVjdG9yPGNoYXI+JiBidWZmCiAgICAgICAgIGlm
IChmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVhZFNpemUpCiAgICAgICAgICAg
ICBidWZmZXJSZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVyUG9zaXRpb247CiAKLSAgICAgICAg
Ynl0ZXNSZWFkID0gcmVhZEZyb21GaWxlKGlucHV0RmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZl
clBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CisgICAgICAgIGJ5dGVzUmVhZCA9IEZpbGVTeXN0
ZW06OnJlYWRGcm9tRmlsZShpbnB1dEZpbGUsIGJ1ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlv
biwgYnVmZmVyUmVhZFNpemUpOwogICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ1ZmZlclJlYWRT
aXplKSB7CiAgICAgICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3Qg
cmVhZCBmcm9tICVzXG4iLCBmaWxlcGF0aC5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAg
Y2xvc2VGaWxlKGlucHV0RmlsZSk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
aW5wdXRGaWxlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAg
ICAgIGJ1ZmZlclBvc2l0aW9uICs9IGJ1ZmZlclJlYWRTaXplOwogICAgIH0KLSAgICBjbG9zZUZp
bGUoaW5wdXRGaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5wdXRGaWxlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBDdXJsQ2FjaGVFbnRyeTo6aW52YWxpZGF0ZSgpCiB7
CiAgICAgY2xvc2VDb250ZW50RmlsZSgpOwotICAgIGRlbGV0ZUZpbGUobV9oZWFkZXJGaWxlbmFt
ZSk7Ci0gICAgZGVsZXRlRmlsZShtX2NvbnRlbnRGaWxlbmFtZSk7CisgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX2hlYWRlckZpbGVuYW1lKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KG1fY29udGVudEZpbGVuYW1lKTsKICAgICBMT0coTmV0d29yaywgIkNhY2hlOiBpbnZhbGlkYXRl
ZCAlc1xuIiwgbV9iYXNlbmFtZS5sYXRpbjEoKS5kYXRhKCkpOwogfQogCkBAIC0yODAsNyArMjgw
LDcgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6cGFyc2VSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgZG91YmxlIGZpbGVUaW1lOwogICAgIHRpbWVf
dCBmaWxlTW9kaWZpY2F0aW9uRGF0ZTsKIAotICAgIGlmIChnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShtX2hlYWRlckZpbGVuYW1lLCBmaWxlTW9kaWZpY2F0aW9uRGF0ZSkpCisgICAgaWYgKEZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1faGVhZGVyRmlsZW5hbWUsIGZpbGVNb2Rp
ZmljYXRpb25EYXRlKSkKICAgICAgICAgZmlsZVRpbWUgPSBkaWZmdGltZShmaWxlTW9kaWZpY2F0
aW9uRGF0ZSwgMCkgKiAxMDAwLjA7CiAgICAgZWxzZQogICAgICAgICBmaWxlVGltZSA9IGN1cnJl
bnRUaW1lTVMoKTsgLy8gR01UCkBAIC0zNDIsMTEgKzM0MiwxMSBAQCBzaXplX3QgQ3VybENhY2hl
RW50cnk6OmVudHJ5U2l6ZSgpCiAgICAgICAgIGxvbmcgbG9uZyBoZWFkZXJGaWxlU2l6ZTsKICAg
ICAgICAgbG9uZyBsb25nIGNvbnRlbnRGaWxlU2l6ZTsKIAotICAgICAgICBpZiAoIWdldEZpbGVT
aXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkgeworICAgICAgICBpZiAoIUZp
bGVTeXN0ZW06OmdldEZpbGVTaXplKG1faGVhZGVyRmlsZW5hbWUsIGhlYWRlckZpbGVTaXplKSkg
ewogICAgICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IGdldCBm
aWxlIHNpemUgb2YgJXNcbiIsIG1faGVhZGVyRmlsZW5hbWUubGF0aW4xKCkuZGF0YSgpKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2VudHJ5U2l6ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoIWdl
dEZpbGVTaXplKG1fY29udGVudEZpbGVuYW1lLCBjb250ZW50RmlsZVNpemUpKSB7CisgICAgICAg
IGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUobV9jb250ZW50RmlsZW5hbWUsIGNvbnRlbnRG
aWxlU2l6ZSkpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJyb3I6IENvdWxk
IG5vdCBnZXQgZmlsZSBzaXplIG9mICVzXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5sYXRpbjEoKS5k
YXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZW50cnlTaXplOwogICAgICAgICB9CkBAIC0z
NjAsMTIgKzM2MCwxMiBAQCBzaXplX3QgQ3VybENhY2hlRW50cnk6OmVudHJ5U2l6ZSgpCiAKIGJv
b2wgQ3VybENhY2hlRW50cnk6Om9wZW5Db250ZW50RmlsZSgpCiB7Ci0gICAgaWYgKGlzSGFuZGxl
VmFsaWQobV9jb250ZW50RmlsZSkpCisgICAgaWYgKEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
bV9jb250ZW50RmlsZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAgIG1fY29udGVu
dEZpbGUgPSBvcGVuRmlsZShtX2NvbnRlbnRGaWxlbmFtZSwgT3BlbkZvcldyaXRlKTsKKyAgICBt
X2NvbnRlbnRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9jb250ZW50RmlsZW5hbWUsIEZp
bGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2NvbnRl
bnRGaWxlKSkKKyAgICBpZiAoRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxl
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBF
cnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4iLCBtX2NvbnRlbnRGaWxlbmFtZS5s
YXRpbjEoKS5kYXRhKCkpOwpAQCAtMzc0LDExICszNzQsMTEgQEAgYm9vbCBDdXJsQ2FjaGVFbnRy
eTo6b3BlbkNvbnRlbnRGaWxlKCkKIAogYm9vbCBDdXJsQ2FjaGVFbnRyeTo6Y2xvc2VDb250ZW50
RmlsZSgpCiB7Ci0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1fY29udGVudEZpbGUpKQorICAgIGlm
ICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChtX2NvbnRlbnRGaWxlKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBjbG9zZUZpbGUobV9jb250ZW50RmlsZSk7Ci0gICAgbV9jb250ZW50
RmlsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKG1fY29udGVudEZpbGUpOworICAgIG1fY29udGVudEZpbGUgPSBGaWxlU3lzdGVtOjppbnZh
bGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCmlu
ZGV4IDkyZDZiYzMzYTRhNGIwNjNmOTRmYWM5ZDQ3YmY2MGM5Yzc4MGZlMzMuLjgxY2JjNzEzOWIy
OWQ4MTA5ZGVjOTQyYjIxYjkyNjZhMjg2Zjk3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5oCkBAIC03NSw3ICs3NSw3
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faGVhZGVyRmlsZW5hbWU7CiAgICAgU3RyaW5nIG1f
Y29udGVudEZpbGVuYW1lOwogCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1fY29udGVudEZpbGU7
CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fY29udGVudEZpbGU7CiAKICAg
ICBzaXplX3QgbV9lbnRyeVNpemU7CiAgICAgZG91YmxlIG1fZXhwaXJlRGF0ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcAppbmRleCAzNWJmZTJlZjJjMmE3ZTA2YzQ5MzhlNjlhYTdlMzFiZTcxNmEwMjhlLi40
NmUxN2U5ZmQxZmYwMTVhMTU4MmNkNTFmN2EzOTlhNGIyN2NjNGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIu
Y3BwCkBAIC03Niw4ICs3Niw4IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBpZiAoIWZpbGVFeGlzdHMobV9jYWNoZURpcikpIHsKLSAgICAgICAgaWYgKCFtYWtlQWxs
RGlyZWN0b3JpZXMobV9jYWNoZURpcikpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlz
dHMobV9jYWNoZURpcikpIHsKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0
b3JpZXMobV9jYWNoZURpcikpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrLCAiQ2FjaGUgRXJy
b3I6IENvdWxkIG5vdCBvcGVuIG9yIGNyZWF0ZSBjYWNoZSBkaXJlY3RvcnkhIENhY2hlTWFuYWdl
ciBkaXNhYmxlZC5cbiIpOwogICAgICAgICAgICAgbV9kaXNhYmxlZCA9IHRydWU7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMDMsMTQgKzEwMywxNCBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6
OmxvYWRJbmRleCgpCiAgICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURpcik7CiAgICAg
aW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwogCi0gICAgUGxhdGZvcm1GaWxlSGFu
ZGxlIGluZGV4RmlsZSA9IG9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIE9wZW5Gb3JSZWFkKTsKLSAg
ICBpZiAoIWlzSGFuZGxlVmFsaWQoaW5kZXhGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRleEZpbGVQ
YXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjppc0hh
bmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJDYWNoZSBXYXJu
aW5nOiBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgcmVhZFxuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbG9uZyBsb25nIGZpbGVz
aXplID0gLTE7Ci0gICAgaWYgKCFnZXRGaWxlU2l6ZShpbmRleEZpbGVQYXRoLCBmaWxlc2l6ZSkp
IHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGluZGV4RmlsZVBhdGgsIGZpbGVz
aXplKSkgewogICAgICAgICBMT0coTmV0d29yaywgIkNhY2hlIEVycm9yOiBDb3VsZCBub3QgZ2V0
IGZpbGUgc2l6ZSBvZiAlc1xuIiwgaW5kZXhGaWxlUGF0aC5sYXRpbjEoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI0LDEwICsxMjQsMTAgQEAgdm9pZCBDdXJsQ2FjaGVN
YW5hZ2VyOjpsb2FkSW5kZXgoKQogICAgICAgICBpZiAoZmlsZXNpemUgLSBidWZmZXJQb3NpdGlv
biA8IGJ1ZmZlclJlYWRTaXplKQogICAgICAgICAgICAgYnVmZmVyUmVhZFNpemUgPSBmaWxlc2l6
ZSAtIGJ1ZmZlclBvc2l0aW9uOwogCi0gICAgICAgIHJlYWRGcm9tRmlsZShpbmRleEZpbGUsIGJ1
ZmZlci5kYXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOworICAgICAgICBG
aWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoaW5kZXhGaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVy
UG9zaXRpb24sIGJ1ZmZlclJlYWRTaXplKTsKICAgICAgICAgYnVmZmVyUG9zaXRpb24gKz0gYnVm
ZmVyUmVhZFNpemU7CiAgICAgfQotICAgIGNsb3NlRmlsZShpbmRleEZpbGUpOworICAgIEZpbGVT
eXN0ZW06OmNsb3NlRmlsZShpbmRleEZpbGUpOwogCiAgICAgLy8gQ3JlYXRlIHN0cmluZ3MgZnJv
bSBidWZmZXIKICAgICBTdHJpbmcgaGVhZGVyQ29udGVudCA9IFN0cmluZyhidWZmZXIuZGF0YSgp
LCBidWZmZXIuc2l6ZSgpKTsKQEAgLTE2NCw5ICsxNjQsOSBAQCB2b2lkIEN1cmxDYWNoZU1hbmFn
ZXI6OnNhdmVJbmRleCgpCiAgICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURpcik7CiAg
ICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwogCi0gICAgZGVsZXRlRmlsZShp
bmRleEZpbGVQYXRoKTsKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gb3BlbkZp
bGUoaW5kZXhGaWxlUGF0aCwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aW5kZXhGaWxlKSkgeworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7
CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGluZGV4RmlsZSkpIHsKICAgICAgICAg
TE9HKE5ldHdvcmssICJDYWNoZSBFcnJvcjogQ291bGQgbm90IG9wZW4gJXMgZm9yIHdyaXRlXG4i
LCBpbmRleEZpbGVQYXRoLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xNzUsMTIgKzE3NSwxMiBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgp
CiAgICAgY29uc3QgYXV0byYgZW5kID0gbV9MUlVFbnRyeUxpc3QuZW5kKCk7CiAgICAgd2hpbGUg
KGl0ICE9IGVuZCkgewogICAgICAgICBjb25zdCBDU3RyaW5nJiB1cmxMYXRpbjEgPSBpdC0+bGF0
aW4xKCk7Ci0gICAgICAgIHdyaXRlVG9GaWxlKGluZGV4RmlsZSwgdXJsTGF0aW4xLmRhdGEoKSwg
dXJsTGF0aW4xLmxlbmd0aCgpKTsKLSAgICAgICAgd3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCAiXG4i
LCAxKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaW5kZXhGaWxlLCB1cmxMYXRp
bjEuZGF0YSgpLCB1cmxMYXRpbjEubGVuZ3RoKCkpOworICAgICAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShpbmRleEZpbGUsICJcbiIsIDEpOwogICAgICAgICArK2l0OwogICAgIH0KIAotICAg
IGNsb3NlRmlsZShpbmRleEZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbmRleEZp
bGUpOwogfQogCiB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6Om1ha2VSb29tRm9yTmV3RW50cnkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3du
bG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcAppbmRleCA4NTA0N2ZkYzZjZTZhNjc3ODUzMTJiZjMxMzliNDVkYzhiZTNjMGJkLi5h
ZTJiZmQ2OGU1ZmY5YmRhZTM1MmQxMmZhZDIxNzFmYTdlN2YxMmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAt
MTIyLDcgKzEyMiw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjpjdXJsRGlkQ29tcGxldGUoKQogCiAg
ICAgaWYgKCFtX2Rlc3RpbmF0aW9uLmlzRW1wdHkoKSkgewogICAgICAgICBpZiAobV9jdXJsUmVx
dWVzdCAmJiAhbV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkuaXNFbXB0eSgp
KQotICAgICAgICAgICAgbW92ZUZpbGUobV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQ
YXRoKCksIG1fZGVzdGluYXRpb24pOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6bW92ZUZpbGUo
bV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCksIG1fZGVzdGluYXRpb24pOwog
ICAgIH0KIAogICAgIGlmIChtX2xpc3RlbmVyKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHZvaWQgQ3Vy
bERvd25sb2FkOjpjdXJsRGlkRmFpbFdpdGhFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiByZXNv
dXJjZUVycm9yKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kZWxldGVzRmlsZVVwb25G
YWlsdXJlICYmIG1fY3VybFJlcXVlc3QgJiYgIW1fY3VybFJlcXVlc3QtPmdldERvd25sb2FkZWRG
aWxlUGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgZGVsZXRlRmlsZShtX2N1cmxSZXF1ZXN0LT5n
ZXREb3dubG9hZGVkRmlsZVBhdGgoKSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9jdXJsUmVxdWVzdC0+Z2V0RG93bmxvYWRlZEZpbGVQYXRoKCkpOwogCiAgICAgaWYgKG1fbGlz
dGVuZXIpCiAgICAgICAgIG1fbGlzdGVuZXItPmRpZEZhaWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJlZTM0
N2Y0NzY1YTJkODhjZjQ5ZjJhYWUxNDc1MGE1MzlmNGJmY2MuLjk3Y2EzMmVhODUwYzNkZWQ5YmQ3
Y2E2MmFhNjkxMGExMjcwZWQ5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNDQ4LDcgKzQ0OCw3IEBAIHZvaWQg
Q3VybFJlcXVlc3Q6OnNldHVwRm9ybURhdGEoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29s
IGlzUG9zdFJlcXVlc3QpCiAgICAgZm9yIChhdXRvIGVsZW1lbnQgOiBlbGVtZW50cykgewogICAg
ICAgICBpZiAoZWxlbWVudC5tX3R5cGUgPT0gRm9ybURhdGFFbGVtZW50OjpUeXBlOjpFbmNvZGVk
RmlsZSkgewogICAgICAgICAgICAgbG9uZyBsb25nIGZpbGVTaXplUmVzdWx0OwotICAgICAgICAg
ICAgaWYgKGdldEZpbGVTaXplKGVsZW1lbnQubV9maWxlbmFtZSwgZmlsZVNpemVSZXN1bHQpKSB7
CisgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZWxlbWVudC5tX2ZpbGVu
YW1lLCBmaWxlU2l6ZVJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsZVNpemVSZXN1
bHQgPiBtYXhDdXJsT2ZmVCkgewogICAgICAgICAgICAgICAgICAgICAvLyBGaWxlIHNpemUgaXMg
dG9vIGJpZyBmb3Igc3BlY2lmeWluZyBpdCB0byBjVVJMCiAgICAgICAgICAgICAgICAgICAgIGNo
dW5rZWRUcmFuc2ZlciA9IHRydWU7CkBAIC02MTksMjIgKzYxOSwyMiBAQCB2b2lkIEN1cmxSZXF1
ZXN0Ojp3cml0ZURhdGFUb0Rvd25sb2FkRmlsZUlmRW5hYmxlZChjb25zdCBTaGFyZWRCdWZmZXIm
IGJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAobV9kb3dubG9hZEZp
bGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IG9wZW5U
ZW1wb3JhcnlGaWxlKCJkb3dubG9hZCIsIG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKKyAgICAgICAg
ICAgIG1fZG93bmxvYWRGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJk
b3dubG9hZCIsIG1fZG93bmxvYWRGaWxlSGFuZGxlKTsKICAgICB9CiAKLSAgICBpZiAobV9kb3du
bG9hZEZpbGVIYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgd3Jp
dGVUb0ZpbGUobV9kb3dubG9hZEZpbGVIYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpOworICAgIGlmIChtX2Rvd25sb2FkRmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlk
UGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShtX2Rv
d25sb2FkRmlsZUhhbmRsZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CiB9CiAKIHZv
aWQgQ3VybFJlcXVlc3Q6OmNsb3NlRG93bmxvYWRGaWxlKCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX2Rvd25sb2FkTXV0ZXgpOwogCi0gICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxlID09
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgaWYgKG1fZG93bmxvYWRGaWxlSGFuZGxl
ID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSk7Ci0gICAgbV9kb3dubG9h
ZEZpbGVIYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIEZpbGVTeXN0ZW06
OmNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZUhhbmRsZSk7CisgICAgbV9kb3dubG9hZEZpbGVIYW5k
bGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogfQogCiB2b2lkIEN1
cmxSZXF1ZXN0OjpjbGVhbnVwRG93bmxvYWRGaWxlKCkKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0OjpjbGVhbnVwRG93bmxvYWRGaWxlKCkKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihtX2Rvd25sb2FkTXV0ZXgpOwogCiAgICAgaWYgKCFtX2Rvd25sb2FkRmlsZVBhdGguaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9kb3dubG9hZEZpbGVQYXRoKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rvd25sb2FkRmlsZVBhdGgpOwogICAgICAgICBtX2Rv
d25sb2FkRmlsZVBhdGggPSBTdHJpbmcoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5oCmluZGV4IDI1YjFlOTY3MzVl
N2JiMTAzMmEzZjUxYzc1NTgxMjlkMGVkMTAxZjYuLmE2N2ZmNzFmNTdlYjdjYTNjMTQ3ZDFmYTVl
MWZkMjI3MTU1MzcyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5oCkBAIC0xNTQsNyArMTU0LDcgQEAgcHJpdmF0ZToKICAgICBM
b2NrIG1fZG93bmxvYWRNdXRleDsKICAgICBib29sIG1faXNFbmFibGVkRG93bmxvYWRUb0ZpbGUg
eyBmYWxzZSB9OwogICAgIFN0cmluZyBtX2Rvd25sb2FkRmlsZVBhdGg7Ci0gICAgUGxhdGZvcm1G
aWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlSGFuZGxlIHsgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSB9OworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2Rvd25sb2FkRmlsZUhh
bmRsZSB7IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKIAogICAgIE5l
dHdvcmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmljczsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCmluZGV4IDM5MzhjODAwNzBiMmQ0MzhkYTAzZDAzNWEwNmMzYmM0ZGExZDM2MWMuLjVm
ZTVjOTMzMGIzZDM1NjNkM2I3MTQ3NjYxNGM0NWIxNDI1MzkxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldENsaWVudENl
cnRpZmljYXRlSW5mbyhjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFN0cmluZyYKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMoY2VydGlmaWNhdGUp
KQorICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGNlcnRpZmljYXRlKSkKICAgICAgICAg
Q3VybENvbnRleHQ6OnNpbmdsZXRvbigpLnNzbEhhbmRsZSgpLnNldENsaWVudENlcnRpZmljYXRl
SW5mbyhob3N0LCBjZXJ0aWZpY2F0ZSwga2V5KTsKICAgICBlbHNlCiAgICAgICAgIExPRyhOZXR3
b3JrLCAiSW52YWxpZCBjbGllbnQgY2VydGlmaWNhdGUgZmlsZTogJXMhXG4iLCBjZXJ0aWZpY2F0
ZS5sYXRpbjEoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQmxvYkRhdGFGaWxlUmVmZXJlbmNlTWFjLm1tCmluZGV4IDVh
YWQyM2E1YzI2YzJkZTZkODNjZmQ5YzQxODUzYmYxZTNlNTc2M2YuLmZjZjU1ZDc2ZWE0NWViYjA2
NzA0M2VjZGZjOGNmMDhjYzkyNDZhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvbWFjL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9CbG9iRGF0YUZpbGVSZWZlcmVuY2VNYWMubW0K
QEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmdlbmVyYXRlUmVw
bGFjZW1lbnRGaWxlKCkKIAogICAgIG1fcmVwbGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZCA9IGZh
bHNlOwogICAgIGlmICghbV9yZXBsYWNlbWVudFBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgaWYg
KGF1dG8gbWV0YWRhdGEgPSBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1saW5rcyhtX3JlcGxhY2Vt
ZW50UGF0aCkpCisgICAgICAgIGlmIChhdXRvIG1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1l
dGFkYXRhRm9sbG93aW5nU3ltbGlua3MobV9yZXBsYWNlbWVudFBhdGgpKQogICAgICAgICAgICAg
bV9zaXplID0gbWV0YWRhdGEudmFsdWUoKS5sZW5ndGg7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAKaW5kZXggNjQ1Nzg2MTVjMWU3ZjQ0ODA1YWI3NDVkY2EyZmM2Nzk1YTg0NDVjOS4u
MjI2YWVlOWYwMGViYTQ2YWNmZTMwM2Q3NGQ2ZGExODJjNzJjN2ViNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcApAQCAtNDEsMTEgKzQxLDExIEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNv
ZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5
LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJsb2JJdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEoKSAr
IGJsb2JJdGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBi
bG9iSXRlbS5sZW5ndGgoKTsKICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZTogewot
ICAgICAgICBpZiAoIWlzVmFsaWRGaWxlVGltZShibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSgpKSkKKyAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRp
bWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKIAogICAgICAgICB0aW1lX3QgZmlsZU1vZGlmaWNhdGlvblRpbWU7Ci0g
ICAgICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRo
KCksIGZpbGVNb2RpZmljYXRpb25UaW1lKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZp
bGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBmaWxlTW9kaWZpY2F0
aW9uVGltZSkKICAgICAgICAgICAgIHx8IGZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0YXRpY19j
YXN0PHRpbWVfdD4oYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKSkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBkNWE3
NDI2N2NjYzE3YTkyYjQ0NmU5MDdlNzVkN2EwYzRkMDgyNzM0Li43OTVkN2RiY2E4YzM1MDVjNDcz
YTQ0NmI5M2I5NjdiMzRhZWExYTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjA1LDcg
KzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzdHJpbmdJc051bWVyaWMoY29uc3QgY2hhciog
c3RyKQogLy8gT2xkIHZlcnNpb25zIG9mIFdlYktpdCBjcmVhdGVkIHRoaXMgY2FjaGUuCiB2b2lk
IFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoY29uc3QgU3RyaW5nJiBjYWNo
ZURpcmVjdG9yeSkKIHsKLSAgICBDU3RyaW5nIGNhY2hlUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjYWNoZURpcmVjdG9yeSk7CisgICAgQ1N0cmluZyBjYWNoZVBhdGggPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3RvcnkpOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gY2FjaGVGaWxlKGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVQYXRoLmRhdGEoKSwg
InNvdXAuY2FjaGUyIiwgbnVsbHB0cikpOwogICAgIGlmICghZ19maWxlX3Rlc3QoY2FjaGVGaWxl
LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19SRUdVTEFSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXgg
ZGU5YTRhNmNlZGM2NDAzZWZjZjc1ZDdkODE4NjYyMWIxOTUwNTYzOC4uYzY3MmQ3NDE0MzdiOGE0
NzM5Mzg1OTk1NzdlNDAzOGM4YmM0MmM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorbmFtZXNwYWNlIEZpbGVTeXN0ZW0geworCiBib29sIGZpbGVFeGlz
dHMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIGlmIChwYXRoLmlzTnVsbCgpKQpAQCAtNDQ1
LDQgKzQ0Nyw1IEBAIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKICAgICByZXR1cm4gZmlsZVN0YXQuc3RfZGV2OwogfQogCit9IC8v
IG5hbWVzcGFjZSBGaWxlU3lzdGVtCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9TaGFyZWRCdWZmZXJQT1NJWC5jcHAKaW5kZXgg
YTAwMWFiZThkYzA3ODBjM2YzZTM1MDVmZDE0ZjgzOGUwNDRiZTdhZS4uNTEzMzc1ZDI0NWVmNDVj
MTk2YTg1NDYxNWNlNzBiNzhhOTBjZWNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcG9zaXgvU2hhcmVkQnVmZmVyUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3Bvc2l4L1NoYXJlZEJ1ZmZlclBPU0lYLmNwcApAQCAtNDAsNyArNDAsNyBAQCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6OmNyZWF0ZUZyb21SZWFkaW5nRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIGlmIChmaWxlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmaWxlUGF0aCk7CisgICAgQ1N0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAgICAgaW50IGZkID0gb3Blbihm
aWxlbmFtZS5kYXRhKCksIE9fUkRPTkxZKTsKICAgICBpZiAoZmQgPT0gLTEpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwCmluZGV4IDg0MTlkNzZjOGE1YWJlMmQ2NTAxM2ExZjM5MjY2ZmRjZWNiMTZh
YTUuLjZiMmFmNTQ1MjQzMTNkODY2MWM0OTA1ODM0OGZhZjJjMWMwMjBlMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTQ4LDE5
ICs0OCwxOSBAQCBTUUxpdGVGaWxlU3lzdGVtOjpTUUxpdGVGaWxlU3lzdGVtKCkKIAogaW50IFNR
TGl0ZUZpbGVTeXN0ZW06Om9wZW5EYXRhYmFzZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzcWxp
dGUzKiogZGF0YWJhc2UsIGJvb2wpCiB7Ci0gICAgcmV0dXJuIHNxbGl0ZTNfb3Blbl92MihmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUpLmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9P
UEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NSRUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9Y
WSwgbnVsbHB0cik7CisgICAgcmV0dXJuIHNxbGl0ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUpLmRhdGEoKSwgZGF0YWJhc2UsIFNRTElURV9P
UEVOX1JFQURXUklURSB8IFNRTElURV9PUEVOX0NSRUFURSB8IFNRTElURV9PUEVOX0FVVE9QUk9Y
WSwgbnVsbHB0cik7CiB9CiAKIFN0cmluZyBTUUxpdGVGaWxlU3lzdGVtOjphcHBlbmREYXRhYmFz
ZUZpbGVOYW1lVG9QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSkKIHsKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIGZpbGVOYW1l
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgs
IGZpbGVOYW1lKTsKIH0KIAogYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZURp
cmVjdG9yeUV4aXN0cyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgaWYgKHBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1ha2VBbGxEaXJlY3Rvcmll
cyhwYXRoKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGgp
OwogfQogCiBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OmVuc3VyZURhdGFiYXNlRmlsZUV4aXN0cyhj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBib29sIGNoZWNrUGF0aE9ubHkpCkBAIC02OSwxNiArNjks
MTYgQEAgYm9vbCBTUUxpdGVGaWxlU3lzdGVtOjplbnN1cmVEYXRhYmFzZUZpbGVFeGlzdHMoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgYm9vbCBjaGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGNoZWNrUGF0aE9ubHkpIHsKLSAgICAgICAgU3RyaW5nIGRpciA9IGRpcmVjdG9yeU5h
bWUoZmlsZU5hbWUpOworICAgICAgICBTdHJpbmcgZGlyID0gRmlsZVN5c3RlbTo6ZGlyZWN0b3J5
TmFtZShmaWxlTmFtZSk7CiAgICAgICAgIHJldHVybiBlbnN1cmVEYXRhYmFzZURpcmVjdG9yeUV4
aXN0cyhkaXIpOwogICAgIH0KIAotICAgIHJldHVybiBmaWxlRXhpc3RzKGZpbGVOYW1lKTsKKyAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmaWxlTmFtZSk7CiB9CiAKIGJvb2wgU1FM
aXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
IHBhdGgpCiB7Ci0gICAgcmV0dXJuIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KHBhdGgpOworICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsKIH0KIAogYm9vbCBT
UUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFzZUZpbGUoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSkKQEAgLTg3LDEyICs4NywxMiBAQCBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZURhdGFi
YXNlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgIFN0cmluZyBzaG1GaWxlTmFtZSA9
IG1ha2VTdHJpbmcoZmlsZU5hbWUsIEFTQ0lJTGl0ZXJhbCgiLXNobSIpKTsKIAogICAgIC8vIFRy
eSB0byBkZWxldGUgYWxsIHRocmVlIGZpbGVzIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIHRoZXJl
LgotICAgIGRlbGV0ZUZpbGUoZmlsZU5hbWUpOwotICAgIGRlbGV0ZUZpbGUod2FsRmlsZU5hbWUp
OwotICAgIGRlbGV0ZUZpbGUoc2htRmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoZmlsZU5hbWUpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUod2FsRmlsZU5hbWUpOwor
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc2htRmlsZU5hbWUpOwogCiAgICAgLy8gSWYgYW55
IG9mIHRoZSB3YWwgb3Igc2htIGZpbGVzIHJlbWFpbiBhZnRlciB0aGUgZGVsZXRlIGF0dGVtcHQs
IHRoZSBvdmVyYWxsIGRlbGV0ZSBvcGVyYXRpb24gZmFpbGVkLgotICAgIHJldHVybiAhZmlsZUV4
aXN0cyhmaWxlTmFtZSkgJiYgIWZpbGVFeGlzdHMod2FsRmlsZU5hbWUpICYmICFmaWxlRXhpc3Rz
KHNobUZpbGVOYW1lKTsKKyAgICByZXR1cm4gIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZU5h
bWUpICYmICFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHdhbEZpbGVOYW1lKSAmJiAhRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhzaG1GaWxlTmFtZSk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0x
MDUsMTkgKzEwNSwxOSBAQCBib29sIFNRTGl0ZUZpbGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VG
aWxlKHNxbGl0ZTMqIGRhdGFiYXNlKQogbG9uZyBsb25nIFNRTGl0ZUZpbGVTeXN0ZW06OmdldERh
dGFiYXNlRmlsZVNpemUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIHsgICAgICAgIAogICAgIGxv
bmcgbG9uZyBzaXplOwotICAgIHJldHVybiBnZXRGaWxlU2l6ZShmaWxlTmFtZSwgc2l6ZSkgPyBz
aXplIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZU5hbWUsIHNp
emUpID8gc2l6ZSA6IDA7CiB9CiAKIGRvdWJsZSBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNy
ZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewogICAgIHRpbWVfdCB0aW1lOwot
ICAgIHJldHVybiBnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUgOiAw
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lLCB0
aW1lKSA/IHRpbWUgOiAwOwogfQogCiBkb3VibGUgU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7CiAgICAgdGltZV90IHRp
bWU7Ci0gICAgcmV0dXJuIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/
IHRpbWUgOiAwOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShmaWxlTmFtZSwgdGltZSkgPyB0aW1lIDogMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVu
YXRpb25MaWJIeXBoZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4v
SHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCmluZGV4IDc2ZjkyNGVhYmIyMDdjYzQ5OGZhNDE0Zjg1
NWM4MWI3NGFmYjZiNGEuLmM5MDg2OTMwMTYxODU1OGI2MGUxZjMwNDgxOGRiZGQ5ZTUxZGJjMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0
aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhl
bi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGljIFN0cmlu
ZyBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQ
YXRoKQogewogICAgIC8vIERpY3Rpb25hcnkgZmlsZXMgYWx3YXlzIGhhdmUgdGhlIGZvcm0gImh5
cGhfPGxvY2FsZSBuYW1lPi5kaWMiCiAgICAgLy8gc28gd2Ugc3RyaXAgZXZlcnl0aGluZyBleGNl
cHQgdGhlIGxvY2FsZS4KLSAgICBTdHJpbmcgZmlsZU5hbWUgPSBwYXRoR2V0RmlsZU5hbWUoZmls
ZVBhdGgpOworICAgIFN0cmluZyBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFt
ZShmaWxlUGF0aCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBwcmVmaXhMZW5ndGggPSA1OwogICAg
IHN0YXRpYyBjb25zdCBpbnQgc3VmZml4TGVuZ3RoID0gNDsKICAgICByZXR1cm4gZmlsZU5hbWUu
c3Vic3RyaW5nKHByZWZpeExlbmd0aCwgZmlsZU5hbWUubGVuZ3RoKCkgLSBwcmVmaXhMZW5ndGgg
LSBzdWZmaXhMZW5ndGgpOwpAQCAtNjEsMTQgKzYxLDE0IEBAIHN0YXRpYyBTdHJpbmcgZXh0cmFj
dExvY2FsZUZyb21EaWN0aW9uYXJ5RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIAog
c3RhdGljIHZvaWQgc2NhbkRpcmVjdG9yeUZvckRpY3Rpb25hcmllcyhjb25zdCBjaGFyKiBkaXJl
Y3RvcnlQYXRoLCBIYXNoTWFwPEF0b21pY1N0cmluZywgVmVjdG9yPFN0cmluZz4+JiBhdmFpbGFi
bGVMb2NhbGVzKQogewotICAgIGZvciAoYXV0byYgZmlsZVBhdGggOiBsaXN0RGlyZWN0b3J5KGRp
cmVjdG9yeVBhdGgsICJoeXBoXyouZGljIikpIHsKKyAgICBmb3IgKGF1dG8mIGZpbGVQYXRoIDog
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnlQYXRoLCAiaHlwaF8qLmRpYyIpKSB7
CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxl
UGF0aChmaWxlUGF0aCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKIAogICAgICAgICBjaGFy
IG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKLSAgICAgICAgaWYgKCFyZWFscGF0aChmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwgbm9ybWFsaXplZFBhdGgpKQorICAg
ICAgICBpZiAoIXJlYWxwYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihm
aWxlUGF0aCkuZGF0YSgpLCBub3JtYWxpemVkUGF0aCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBmaWxlUGF0aCA9IHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
bm9ybWFsaXplZFBhdGgpOworICAgICAgICBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obm9ybWFsaXplZFBhdGgpOwogICAgICAgICBhdmFp
bGFibGVMb2NhbGVzLmFkZChsb2NhbGUsIFZlY3RvcjxTdHJpbmc+KCkpLml0ZXJhdG9yLT52YWx1
ZS5hcHBlbmQoZmlsZVBhdGgpOwogCiAgICAgICAgIFN0cmluZyBsb2NhbGVSZXBsYWNpbmdVbmRl
cnNjb3JlcyA9IFN0cmluZyhsb2NhbGUpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBSZWZQdHI8V2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5PiBjcmVhdGVW
YWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGRpY3Rpb25hcnlQYXRoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6Okh5cGhlbmF0aW9uRGljdGlvbmFyeTo6Y3JlYXRlKFdlYkNv
cmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkaWN0aW9uYXJ5UGF0aC5zdHJpbmcoKSkpOwor
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6SHlwaGVuYXRpb25EaWN0aW9uYXJ5OjpjcmVhdGUoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpY3Rpb25hcnlQYXRo
LnN0cmluZygpKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IGYwYzM1MDI5ODY0MWMxMDI2M2MxZTRiMDVhYzU1MzJi
Yjg4NTZmOTcuLmJkYWU0YmZjMTdjNjQzZjEyMWU0ODIxZDQ1NmYyYmFjMTVhNTI4NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAgLTQ1LDYg
KzQ1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3BhY2UgRmlsZVN5c3RlbSB7
CisKIHN0YXRpYyBjb25zdCBVTE9OR0xPTkcga1NlY29uZHNGcm9tRmlsZVRpbWVUb1RpbWV0ID0g
MTE2NDQ0NzM2MDA7CiAKIHN0YXRpYyBib29sIGdldEZpbmREYXRhKFN0cmluZyBwYXRoLCBXSU4z
Ml9GSU5EX0RBVEFXJiBmaW5kRGF0YSkKQEAgLTU0Myw0ICs1NDUsNSBAQCBzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCiAgICAgcmV0
dXJuIGZpbGVJbmZvcm1hdGlvbi5kd1ZvbHVtZVNlcmlhbE51bWJlcjsKIH0KIAorfSAvLyBuYW1l
c3BhY2UgRmlsZVN5c3RlbQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5jcHAKaW5kZXggMzcwMWNkZDhhMDM3MWMyMzAwMWYz
YzVkNmVlOTBhY2VlODg4MDZlYS4uM2M2ZjU2ZTE5NDBhNzZjNzgzYjQ0ZTU4Nzc1NTc5ZjJlMTNi
MTM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVHdGsuY3BwCkBA
IC0yMDA5LDcgKzIwMDksNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVHdGs6OmZpbGVMaXN0TmFtZUZv
cldpZHRoKGNvbnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udAogCiAgICAgU3RyaW5n
IHN0cmluZzsKICAgICBpZiAoZmlsZUxpc3QtPmxlbmd0aCgpKQotICAgICAgICBzdHJpbmcgPSBw
YXRoR2V0RmlsZU5hbWUoZmlsZUxpc3QtPml0ZW0oMCktPnBhdGgoKSk7CisgICAgICAgIHN0cmlu
ZyA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShmaWxlTGlzdC0+aXRlbSgwKS0+cGF0aCgp
KTsKICAgICBlbHNlIGlmIChtdWx0aXBsZUZpbGVzQWxsb3dlZCkKICAgICAgICAgc3RyaW5nID0g
ZmlsZUJ1dHRvbk5vRmlsZXNTZWxlY3RlZExhYmVsKCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAKaW5kZXggYWEzNzBjMzNmYTMwZTU1NjMy
Y2U2NzQ5Nzk2MjExZjUxYTZhYjZjOS4uZTUxYTI0ZTI5OTllMzE5MTViOTU2Y2ZlOTFjZWQwNWFm
MWI5OGRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3Bw
CkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBDb2xvciBSZW5kZXJUaGVtZVdpbjo6c3lzdGVtQ29sb3Io
Q1NTVmFsdWVJRCBjc3NWYWx1ZUlkKSBjb25zdAogI2lmIEVOQUJMRShWSURFTykKIHN0YXRpYyBj
b25zdCBzaXplX3QgbWF4aW11bVJlYXNvbmFibGVCdWZmZXJTaXplID0gMzI3Njg7CiAKLXN0YXRp
YyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGUsIGxvbmcgbG9uZyBmaWxlc2l6ZSwgVmVjdG9yPGNoYXI+JiBidWZmZXIpCitzdGF0aWMgdm9p
ZCBmaWxsQnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhh
bmRsZSBmaWxlLCBsb25nIGxvbmcgZmlsZXNpemUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewog
ICAgIC8vIExvYWQgdGhlIGZpbGUgY29udGVudCBpbnRvIGJ1ZmZlcgogICAgIGJ1ZmZlci5yZXNp
emUoZmlsZXNpemUgKyAxKTsKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHN0YXRpYyB2b2lkIGZpbGxC
dWZmZXJXaXRoQ29udGVudHNPZkZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIGxvbmcgbG9u
ZyBmaWxlCiAgICAgICAgIGlmIChmaWxlc2l6ZSAtIGJ1ZmZlclBvc2l0aW9uIDwgYnVmZmVyUmVh
ZFNpemUpCiAgICAgICAgICAgICBidWZmZXJSZWFkU2l6ZSA9IGZpbGVzaXplIC0gYnVmZmVyUG9z
aXRpb247CiAKLSAgICAgICAgYnl0ZXNSZWFkID0gcmVhZEZyb21GaWxlKGZpbGUsIGJ1ZmZlci5k
YXRhKCkgKyBidWZmZXJQb3NpdGlvbiwgYnVmZmVyUmVhZFNpemUpOworICAgICAgICBieXRlc1Jl
YWQgPSBGaWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZl
clBvc2l0aW9uLCBidWZmZXJSZWFkU2l6ZSk7CiAgICAgICAgIGlmIChieXRlc1JlYWQgIT0gYnVm
ZmVyUmVhZFNpemUpIHsKICAgICAgICAgICAgIGJ1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTA1OCwxOSArMTA1OCwxOSBAQCBTdHJpbmcgUmVuZGVyVGhlbWVXaW46OnN0
cmluZ1dpdGhDb250ZW50c09mRmlsZShDRlN0cmluZ1JlZiBuYW1lLCBDRlN0cmluZ1JlZiB0eQog
ICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocmVxdWVzdGVkVVJMUmVm
LmdldCgpLCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIE1BWF9QQVRIKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIHJlcXVlc3RlZEZpbGVIYW5k
bGUgPSBvcGVuRmlsZShyZXF1ZXN0ZWRGaWxlUGF0aCwgT3BlbkZvclJlYWQpOwotICAgIGlmICgh
aXNIYW5kbGVWYWxpZChyZXF1ZXN0ZWRGaWxlSGFuZGxlKSkKKyAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgcmVxdWVzdGVkRmlsZUhhbmRsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KHJlcXVlc3RlZEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFG
aWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKHJlcXVlc3RlZEZpbGVIYW5kbGUpKQogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBsb25nIGxvbmcgZmlsZXNpemUgPSAtMTsKLSAgICBpZiAo
IWdldEZpbGVTaXplKHJlcXVlc3RlZEZpbGVIYW5kbGUsIGZpbGVzaXplKSkgewotICAgICAgICBj
bG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRG
aWxlU2l6ZShyZXF1ZXN0ZWRGaWxlSGFuZGxlLCBmaWxlc2l6ZSkpIHsKKyAgICAgICAgRmlsZVN5
c3RlbTo6Y2xvc2VGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUpOwogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgVmVjdG9yPGNoYXI+IGZpbGVDb250ZW50czsKICAgICBmaWxs
QnVmZmVyV2l0aENvbnRlbnRzT2ZGaWxlKHJlcXVlc3RlZEZpbGVIYW5kbGUsIGZpbGVzaXplLCBm
aWxlQ29udGVudHMpOwotICAgIGNsb3NlRmlsZShyZXF1ZXN0ZWRGaWxlSGFuZGxlKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUocmVxdWVzdGVkRmlsZUhhbmRsZSk7CiAKICAgICByZXR1cm4g
U3RyaW5nKGZpbGVDb250ZW50cy5kYXRhKCksIHN0YXRpY19jYXN0PHNpemVfdD4oZmlsZXNpemUp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggMzJkYjI0ZTc0OWE3Y2QxNDRlMmE4Mjk2NjgyM2VmZTQ3MWQ4YjFj
Yi4uYTBhYjQxN2NkMGMzOWZlYzVlZGY5Nzc5NTA2NDkzYWZlZDhlMWE2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw3MSBAQAorMjAxNy0xMS0wMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRA
c29ueS5jb20+CisKKyAgICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5
c3RlbS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3OTA2MworCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHA6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JEb3dubG9hZENsaWVudC5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
Q2FjaGVTdG9yYWdlRW5naW5lLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9D
YWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZURhdGEuY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRlci5jcHA6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6CisgICAg
ICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVu
aXguY3BwOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL3VuaXgvUGx1Z2luU2VhcmNoUGF0aC5j
cHA6CisgICAgICAgICogU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwOgorICAgICAgICAqIFNo
YXJlZC9XZWJNZW1vcnlTYW1wbGVyLmg6CisgICAgICAgICogU2hhcmVkL2d0ay9Qcm9jZXNzRXhl
Y3V0YWJsZVBhdGhHdGsuY3BwOgorICAgICAgICAqIFNoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9T
Lm1tOgorICAgICAgICAqIFNoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tOgorICAgICAgICAq
IFNoYXJlZC9tYWMvU2FuZGJveEV4dGVuc2lvbk1hYy5tbToKKyAgICAgICAgKiBTaGFyZWQvd3Bl
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHA6CisgICAgICAgICogU3RvcmFnZVByb2Nlc3Mv
U3RvcmFnZVByb2Nlc3MuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1
bGVMaXN0U3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRl
RGF0YVN0b3JlR0xpYi5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRh
YmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZhdmljb25EYXRh
YmFzZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYkNvbnRl
eHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1h
bmFnZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW06CisgICAgICAg
ICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5jaGVyR0xpYi5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNoZS5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c1Bvb2xHdGsuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
OgorICAgICAgICAqIFVJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFu
YWdlci5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9nbGliL0luamVj
dGVkQnVuZGxlR2xpYi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1l
ZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcDoKKwogMjAxNy0x
MS0wMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJZ25v
cmUgSFNUUyBmb3IgcGFydGl0aW9uZWQsIGNyb3NzLW9yaWdpbiBzdWJyZXNvdXJjZSByZXF1ZXN0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxv
YkRvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Jsb2JEb3dubG9hZENsaWVudC5jcHAKaW5kZXggYTE5NmRmZjIzYjY1MjE3MjA4MTAwNTMy
ZTkxN2FkMDRlZWI1NzJkMi4uMjEwNGNiMzhiYjJjMTI1NjI0MWQ3ZjIxZmM2NjhmZDg1YWNjMDEw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxv
YkRvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwCkBAIC01NiwxNiArNTYsMTYgQEAgdm9pZCBC
bG9iRG93bmxvYWRDbGllbnQ6OmRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24oY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblAKIHsKICAgICBBU1NFUlQoIWRlc3RpbmF0aW9uUGF0aC5pc0VtcHR5
KCkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMoZGVzdGluYXRpb25QYXRoKSkgeworICAgIGlmIChG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0aCkpIHsKICAgICAgICAgaWYgKCFh
bGxvd092ZXJ3cml0ZSkgewogICAgICAgICAgICAgZGlkRmFpbChudWxscHRyLCBjYW5jZWxsZWRF
cnJvcihtX2Rvd25sb2FkLnJlcXVlc3QoKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIGRlbGV0ZUZpbGUoZGVzdGluYXRpb25QYXRoKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShkZXN0aW5hdGlvblBhdGgpOwogICAgIH0KIAogICAgIG1fZGVzdGlu
YXRpb25QYXRoID0gZGVzdGluYXRpb25QYXRoOwotICAgIG1fZGVzdGluYXRpb25GaWxlID0gb3Bl
bkZpbGUobV9kZXN0aW5hdGlvblBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgbV9kZXN0aW5hdGlv
bkZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCwgRmlsZVN5c3Rl
bTo6T3BlbkZvcldyaXRlKTsKICAgICBtX2Rvd25sb2FkLmRpZENyZWF0ZURlc3RpbmF0aW9uKG1f
ZGVzdGluYXRpb25QYXRoKTsKIAogICAgIG1fZG93bmxvYWQuY29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKTsKQEAgLTg1LDMwICs4NSwzMCBAQCB2b2lkIEJsb2JEb3dubG9hZENsaWVudDo6Y2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKFJlc291cmNlSGFuZAogCiB2
b2lkIEJsb2JEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZXNvdXJjZUhhbmRsZSos
IFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQpCiB7Ci0gICAgd3JpdGVUb0ZpbGUobV9k
ZXN0aW5hdGlvbkZpbGUsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9kZXN0aW5hdGlvbkZpbGUsIGJ1ZmZlci0+ZGF0YSgpLCBi
dWZmZXItPnNpemUoKSk7CiAgICAgbV9kb3dubG9hZC5kaWRSZWNlaXZlRGF0YShidWZmZXItPnNp
emUoKSk7CiB9CiAKIHZvaWQgQmxvYkRvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlSGFuZGxlKikKIHsKLSAgICBjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZpbGUpOworICAg
IEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rlc3RpbmF0aW9uRmlsZSk7CiAgICAgbV9kb3dubG9h
ZC5kaWRGaW5pc2goKTsKIH0KIAogdm9pZCBCbG9iRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbCgp
CiB7Ci0gICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUobV9kZXN0aW5hdGlvbkZpbGUpOwogICAgIGlmICghbV9kZXN0aW5hdGlvblBhdGgu
aXNFbXB0eSgpKQotICAgICAgICBkZWxldGVGaWxlKG1fZGVzdGluYXRpb25QYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCk7CiAKICAgICBtX2Rv
d25sb2FkLmRpZENhbmNlbChJUEM6OkRhdGFSZWZlcmVuY2UoKSk7CiB9CiAKIHZvaWQgQmxvYkRv
d25sb2FkQ2xpZW50OjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB7Ci0gICAgY2xvc2VGaWxlKG1fZGVzdGluYXRpb25GaWxlKTsKKyAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUobV9kZXN0aW5hdGlvbkZpbGUpOwogICAgIGlmICghbV9kZXN0aW5h
dGlvblBhdGguaXNFbXB0eSgpKQotICAgICAgICBkZWxldGVGaWxlKG1fZGVzdGluYXRpb25QYXRo
KTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Rlc3RpbmF0aW9uUGF0aCk7CiAK
ICAgICBtX2Rvd25sb2FkLmRpZEZhaWwoZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZSgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Jsb2JE
b3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmgKaW5kZXggMWI0NDFmNjY2ZjdhNWEzZTNmYTc1ZGUwMDRjMGFi
MDQ4Y2QzNzZlOS4uNjRiMmYzYjFkZDkwNzA5MjkyOGE2NzI3ODY4M2E5M2QyNTdjODllNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvQmxvYkRvd25s
b2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHJpdmF0ZToKIAogICAgIERv
d25sb2FkJiBtX2Rvd25sb2FkOwogICAgIFN0cmluZyBtX2Rlc3RpbmF0aW9uUGF0aDsKLSAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kZXN0aW5hdGlvbkZpbGUgeyBXZWJDb3JlOjpp
bnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxh
dGZvcm1GaWxlSGFuZGxlIG1fZGVzdGluYXRpb25GaWxlIHsgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggNzhlNWE0
MTY1YmMzNDJiOThhOTE3MWMyZmY4YTAzNTQyMTg2NDNlZC4uNmRhNTNmM2UxYmJmYmVkMTdkNDFi
ZGMzNDk2YWJlZGE1ZDViMTFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0
ZXNSZWFkKQogICAgIG1fdG90YWxSZW1haW5pbmdTaXplIC09IGJ5dGVzUmVhZDsKIAogICAgIGlm
IChieXRlc1JlYWQpIHsKLSAgICAgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpIHsKKyAgICAgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpIHsKICAgICAgICAgICAgIGlmICghd3JpdGVE
b3dubG9hZChkYXRhLCBieXRlc1JlYWQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTQ0OCw4ICs0NDgsOCBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6
OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbgog
ICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+
Y29uc3VtZSgpOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIGZpbGVFeGlzdHMobV9wZW5k
aW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIGRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxv
YWRMb2NhdGlvbik7CisgICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbik7CiB9CiAKIFN0cmluZyBOZXR3b3Jr
RGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CkBAIC00NjcsOCArNDY3LDgg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCiAKICAgICBMT0coTmV0d29y
a1Nlc3Npb24sICIlcCAtIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkIHRvICVzIiwgdGhp
cywgbV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbi51dGY4KCkuZGF0YSgpKTsKIAotICAgIG1fZG93
bmxvYWRGaWxlID0gb3BlbkZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbiwgT3BlbkZvcldy
aXRlKTsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRs
ZSkgeworICAgIG1fZG93bmxvYWRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9wZW5kaW5n
RG93bmxvYWRMb2NhdGlvbiwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICBpZiAobV9k
b3dubG9hZEZpbGUgPT0gRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewog
ICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2VsbGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ4OCw3ICs0ODgsNyBAQCB2b2lkIE5ldHdvcmtE
YXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKIGJvb2wgTmV0d29ya0RhdGFUYXNrQmxvYjo6d3JpdGVE
b3dubG9hZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIEFTU0VSVChp
c0Rvd25sb2FkKCkpOwotICAgIGludCBieXRlc1dyaXR0ZW4gPSB3cml0ZVRvRmlsZShtX2Rvd25s
b2FkRmlsZSwgZGF0YSwgYnl0ZXNSZWFkKTsKKyAgICBpbnQgYnl0ZXNXcml0dGVuID0gRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUobV9kb3dubG9hZEZpbGUsIGRhdGEsIGJ5dGVzUmVhZCk7CiAgICAg
aWYgKGJ5dGVzV3JpdHRlbiA9PSAtMSkgewogICAgICAgICBkaWRGYWlsRG93bmxvYWQoY2FuY2Vs
bGVkRXJyb3IobV9maXJzdFJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTAz
LDExICs1MDMsMTEgQEAgYm9vbCBOZXR3b3JrRGF0YVRhc2tCbG9iOjp3cml0ZURvd25sb2FkKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6Y2xlYW5Eb3dubG9hZEZpbGVzKCkKIHsKLSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewotICAgICAgICBjbG9zZUZpbGUobV9kb3dubG9hZEZp
bGUpOwotICAgICAgICBtX2Rvd25sb2FkRmlsZSA9IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGU7
CisgICAgaWYgKG1fZG93bmxvYWRGaWxlICE9IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUpIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKG1fZG93bmxvYWRGaWxl
KTsKKyAgICAgICAgbV9kb3dubG9hZEZpbGUgPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlOwogICAgIH0KLSAgICBkZWxldGVGaWxlKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRp
b24pOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlv
bik7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmFpbERvd25sb2FkKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtNTM2LDggKzUzNiw4IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQoKQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwg
IiVwIC0gTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoRG93bmxvYWQiLCB0aGlzKTsKIAog
ICAgIEFTU0VSVChpc0Rvd25sb2FkKCkpOwotICAgIGNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7
Ci0gICAgbV9kb3dubG9hZEZpbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShtX2Rvd25sb2FkRmlsZSk7CisgICAgbV9kb3dubG9hZEZpbGUg
PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOwogCiAgICAgaWYgKG1fc2Fu
ZGJveEV4dGVuc2lvbikgewogICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPnJldm9rZSgpOwpA
QCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmFpbChFcnJv
ciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkRmluaXNoKCkKIHsK
LSAgICBpZiAobV9kb3dubG9hZEZpbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewor
ICAgIGlmIChtX2Rvd25sb2FkRmlsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKSB7CiAgICAgICAgIGRpZEZpbmlzaERvd25sb2FkKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrQmxvYi5oCmluZGV4IDUxOTM1OTQ0OTU1M2Q4OTYyNzlhNjdlNGM3NDMyZTE1NWM0MGY1MjQu
LjkyNjZlZGVjNmE2MWFmMjRhMTU1OTExNGY3Zjk2N2UwZGRhMjg0NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5oCkBAIC0xMTMs
NyArMTEzLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3NpemVJdGVtQ291bnQgeyAwIH07
CiAgICAgdW5zaWduZWQgbV9yZWFkSXRlbUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9maWxlT3Bl
bmVkIHsgZmFsc2UgfTsKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9kb3dubG9h
ZEZpbGUgeyBXZWJDb3JlOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CisgICAgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIG1fZG93bmxvYWRGaWxlIHsgV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogCiAgICAgVmVjdG9y
PFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBtX2ZpbGVSZWZlcmVuY2Vz
OwogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hFeHRlbnNpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDJm
ZDhlZmYxMzUxMTNlYWI4MjRlYzFiZmZjMmI0NTUwZTViNzBiOWUuLjZlNWNkZjc2Zjk0YzUxMGE2
ZjdhYjBkMGE2ZGU2MGQzMmQ1ZjJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0Q2FjaGVNb2RlbCh1aW50MzJfdCBjbSkKICAgICB1bnNpZ25lZCB1cmxDYWNo
ZU1lbW9yeUNhcGFjaXR5ID0gMDsKICAgICB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSA9
IDA7CiAgICAgdWludDY0X3QgZGlza0ZyZWVTaXplID0gMDsKLSAgICBpZiAoV2ViQ29yZTo6Z2V0
Vm9sdW1lRnJlZVNwYWNlKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBkaXNrRnJlZVNpemUpKSB7Cisg
ICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldFZvbHVtZUZyZWVTcGFjZShtX2Rpc2tDYWNo
ZURpcmVjdG9yeSwgZGlza0ZyZWVTaXplKSkgewogICAgICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3Rv
ciwgdXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlCiAg
ICAgICAgIC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5k
YXJ5LgogICAgICAgICBkaXNrRnJlZVNpemUgLz0gS0IgKiAxMDAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmUuY3Bw
CmluZGV4IGY4MTczNjJkYWU1NTQ2ZDZiZjBhZDg5NWY4ODgzNjUzYmU4NjYwMGYuLjY3OTQ5MzUw
MzljZWM5ZGMxOTNmNzAzZjliZmU2ZmRiY2Y5MGIzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZS5jcHAKQEAg
LTU4LDcgKzU4LDcgQEAgU3RyaW5nIEVuZ2luZTo6Y2FjaGVzUm9vdFBhdGgoY29uc3QgU3RyaW5n
JiBvcmlnaW4pCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBLZXkga2V5KG9yaWdpbiwgeyB9
LCB7IH0sIHsgfSwgc2FsdCgpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHJvb3RQYXRoKCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyb290
UGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpOwogfQogCiBFbmdpbmU6On5Fbmdp
bmUoKQpAQCAtMjA1LDkgKzIwNSw5IEBAIHZvaWQgRW5naW5lOjppbml0aWFsaXplKEZ1bmN0aW9u
PHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYgY2FsbGJhY2spCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBTdHJpbmcgc2FsdFBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9yb290UGF0aCwgQVNDSUlMaXRlcmFsKCJzYWx0IikpOworICAgIFN0cmlu
ZyBzYWx0UGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtX3Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoInNhbHQiKSk7CiAgICAgbV9pb1F1ZXVlLT5kaXNw
YXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBzYWx0UGF0aCA9IFdURk1vdmUoc2FsdFBhdGgpXSAoKSBtdXRhYmxl
IHsKLSAgICAgICAgV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fcm9vdFBhdGgpOworICAg
ICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9yb290UGF0aCk7
CiAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIHNhbHQgPSByZWFkT3JNYWtlU2FsdChzYWx0UGF0aCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXNhbHQpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhFcnJvcjo6V3JpdGVEaXNrKTsK
QEAgLTMzNCw3ICszMzQsNyBAQCB2b2lkIEVuZ2luZTo6cmVtb3ZlRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2lvUXVldWUtPmRpc3BhdGNoKFtm
aWxlbmFtZSA9IGZpbGVuYW1lLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewotICAgICAgICBX
ZWJDb3JlOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShmaWxlbmFtZSk7CiAgICAgfSk7CiB9CiAKQEAgLTM4Miw4ICszODIsOCBA
QCB2b2lkIEVuZ2luZTo6ZmV0Y2hFbnRyaWVzKGJvb2wgc2hvdWxkQ29tcHV0ZVNpemUsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZQogICAgIH0KIAogICAgIGF1dG8gdGFza0NvdW50ZXIg
PSBSZWFkT3JpZ2luc1Rhc2tDb3VudGVyOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgIGZvciAoYXV0byYgZm9sZGVyUGF0aCA6IFdlYkNvcmU6Omxpc3REaXJlY3Rvcnko
bV9yb290UGF0aCwgIioiKSkgewotICAgICAgICBpZiAoIVdlYkNvcmU6OmZpbGVJc0RpcmVjdG9y
eShmb2xkZXJQYXRoLCBXZWJDb3JlOjpTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzOjpObykpCisg
ICAgZm9yIChhdXRvJiBmb2xkZXJQYXRoIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVj
dG9yeShtX3Jvb3RQYXRoLCAiKiIpKSB7CisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZmlsZUlzRGlyZWN0b3J5KGZvbGRlclBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OlNob3Vs
ZEZvbGxvd1N5bWJvbGljTGlua3M6Ok5vKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBDYWNoZXM6OnJldHJpZXZlT3JpZ2luRnJvbURpcmVjdG9yeShmb2xkZXJQYXRoLCAqbV9pb1F1
ZXVlLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaG91bGRDb21wdXRlU2l6ZSwg
dGFza0NvdW50ZXIgPSB0YXNrQ291bnRlci5jb3B5UmVmKCldIChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJiBvcmlnaW4pIG11dGFibGUgewogICAgICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTQxNSw4ICs0MTUsOCBAQCB2b2lkIEVuZ2lu
ZTo6Y2xlYXJBbGxDYWNoZXMoQ2FsbGJhY2tBZ2dyZWdhdG9yJiB0YXNrSGFuZGxlcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9pb1F1ZXVlLT5kaXNwYXRjaChbcGF0aCA9IG1fcm9vdFBhdGgu
aXNvbGF0ZWRDb3B5KCksIHRhc2tIYW5kbGVyID0gbWFrZVJlZih0YXNrSGFuZGxlcildIHsKLSAg
ICAgICAgZm9yIChhdXRvJiBmaWxlbmFtZSA6IFdlYkNvcmU6Omxpc3REaXJlY3RvcnkocGF0aCwg
IioiKSkgewotICAgICAgICAgICAgaWYgKFdlYkNvcmU6OmZpbGVJc0RpcmVjdG9yeShmaWxlbmFt
ZSwgV2ViQ29yZTo6U2hvdWxkRm9sbG93U3ltYm9saWNMaW5rczo6Tm8pKQorICAgICAgICBmb3Ig
KGF1dG8mIGZpbGVuYW1lIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShwYXRo
LCAiKiIpKSB7CisgICAgICAgICAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUlzRGly
ZWN0b3J5KGZpbGVuYW1lLCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpTaG91bGRGb2xsb3dTeW1ib2xp
Y0xpbmtzOjpObykpCiAgICAgICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHko
ZmlsZW5hbWUpOwogICAgICAgICB9CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0NhY2hlU3RvcmFnZUVuZ2luZUNhY2hlcy5j
cHAKaW5kZXggMzVmNTlhMjY0YWM3MzdiYWI4Mjg2YjYwYjc0MGQyYzU5OTViNGE4NS4uM2M0ZTc3
NzUxNWE4NTMxYWRhZGZiZmJkZjU1NjIyOGM0NDM4ZjJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9DYWNoZVN0b3JhZ2VFbmdpbmVDYWNoZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQ2FjaGVTdG9yYWdlRW5naW5l
Q2FjaGVzLmNwcApAQCAtNDIsMTggKzQyLDE4IEBAIG5hbWVzcGFjZSBDYWNoZVN0b3JhZ2Ugewog
CiBzdGF0aWMgaW5saW5lIFN0cmluZyBjYWNoZXNMaXN0RmlsZW5hbWUoY29uc3QgU3RyaW5nJiBj
YWNoZXNSb290UGF0aCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KGNhY2hlc1Jvb3RQYXRoLCBBU0NJSUxpdGVyYWwoImNhY2hlc2xpc3QiKSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNo
ZXNSb290UGF0aCwgQVNDSUlMaXRlcmFsKCJjYWNoZXNsaXN0IikpOwogfQogCiBzdGF0aWMgaW5s
aW5lIFN0cmluZyBjYWNoZXNPcmlnaW5GaWxlbmFtZShjb25zdCBTdHJpbmcmIGNhY2hlc1Jvb3RQ
YXRoKQogewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2Fj
aGVzUm9vdFBhdGgsIEFTQ0lJTGl0ZXJhbCgib3JpZ2luIikpOworICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVzUm9vdFBhdGgsIEFT
Q0lJTGl0ZXJhbCgib3JpZ2luIikpOwogfQogCiB2b2lkIENhY2hlczo6cmV0cmlldmVPcmlnaW5G
cm9tRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZm9sZGVyUGF0aCwgV29ya1F1ZXVlJiBxdWV1ZSwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBxdWV1ZS5kaXNw
YXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZm9s
ZGVyUGF0aCA9IGZvbGRlclBhdGguaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGlmICghV2ViQ29yZTo6ZmlsZUV4aXN0cyhjYWNoZXNMaXN0RmlsZW5hbWUoZm9sZGVyUGF0aCkp
KSB7CisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhjYWNoZXNM
aXN0RmlsZW5hbWUoZm9sZGVyUGF0aCkpKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjpudWxs
b3B0KTsKICAgICAgICAgICAgIH0pOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQ2FjaGVzOjpy
ZWFkQ2FjaGVzRnJvbURpc2soV1RGOjpGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFZlY3RvcjxDYWNo
ZT4sIEVycm9yCiAgICAgfQogCiAgICAgYXV0byBmaWxlbmFtZSA9IGNhY2hlc0xpc3RGaWxlbmFt
ZShtX3Jvb3RQYXRoKTsKLSAgICBpZiAoIVdlYkNvcmU6OmZpbGVFeGlzdHMoZmlsZW5hbWUpKSB7
CisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVuYW1lKSkgewog
ICAgICAgICBjYWxsYmFjayhWZWN0b3I8Q2FjaGU+IHsgfSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAKaW5kZXggNTcwNGY4NTY3NDQ3MzI3YWJmMjFjN2ZjNDlhY2Q0OTUyYWU0YTNjZi4u
MTk1YzIzZjVhM2EwNWQ5Y2FhYWQ1NTNhMTgyMjljYzdlNTEwNjQ2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMTEx
LDcgKzExMSw3IEBAIENhY2hlOjpDYWNoZShSZWY8U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25T
ZXQ8T3B0aW9uPiBvcHRpb25zKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAv
LyBUcmlnZ2VycyB3aXRoICJ0b3VjaCAkY2FjaGVQYXRoL2R1bXAiLgotICAgICAgICBDU3RyaW5n
IGR1bXBGaWxlUGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0aCgpLCAiZHVtcCIp
KTsKKyAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZVBhdGgoKSwgImR1bXAiKSk7CiAgICAgICAgIEdS
ZWZQdHI8R0ZpbGU+IGR1bXBGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZHVt
cEZpbGVQYXRoLmRhdGEoKSkpOwogICAgICAgICBHRmlsZU1vbml0b3IqIG1vbml0b3IgPSBnX2Zp
bGVfbW9uaXRvcl9maWxlKGR1bXBGaWxlLmdldCgpLCBHX0ZJTEVfTU9OSVRPUl9OT05FLCBudWxs
cHRyLCBudWxscHRyKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1vbml0b3Is
ICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhkdW1wRmlsZUNoYW5nZWQpLCB0aGlzKTsKQEAgLTUzNywx
NiArNTM3LDE2IEBAIHZvaWQgQ2FjaGU6OnRyYXZlcnNlKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFRy
YXZlcnNhbEVudHJ5Kik+JiYgdHJhdmVyc2VIYW5kbGVyKQogCiBTdHJpbmcgQ2FjaGU6OmR1bXBG
aWxlUGF0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChtX3N0b3JhZ2UtPnZlcnNpb25QYXRoKCksICJkdW1wLmpzb24iKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFn
ZS0+dmVyc2lvblBhdGgoKSwgImR1bXAuanNvbiIpOwogfQogCiB2b2lkIENhY2hlOjpkdW1wQ29u
dGVudHNUb0ZpbGUoKQogewotICAgIGF1dG8gZmQgPSBXZWJDb3JlOjpvcGVuRmlsZShkdW1wRmls
ZVBhdGgoKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIVdlYkNvcmU6OmlzSGFu
ZGxlVmFsaWQoZmQpKQorICAgIGF1dG8gZmQgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuRmls
ZShkdW1wRmlsZVBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAg
ICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQoZmQpKQogICAgICAgICBy
ZXR1cm47CiAgICAgYXV0byBwcm9sb2d1ZSA9IFN0cmluZygie1xuXCJlbnRyaWVzXCI6IFtcbiIp
LnV0ZjgoKTsKLSAgICBXZWJDb3JlOjp3cml0ZVRvRmlsZShmZCwgcHJvbG9ndWUuZGF0YSgpLCBw
cm9sb2d1ZS5sZW5ndGgoKSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmQsIHByb2xvZ3VlLmRhdGEoKSwgcHJvbG9ndWUubGVuZ3RoKCkpOwogCiAgICAgc3RydWN0IFRv
dGFscyB7CiAgICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9OwpAQCAtNTc1LDggKzU3NSw4IEBA
IHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50c1RvRmlsZSgpCiAgICAgICAgICAgICBlcGlsb2d1ZS5h
cHBlbmRMaXRlcmFsKCJcbiIpOwogICAgICAgICAgICAgZXBpbG9ndWUuYXBwZW5kTGl0ZXJhbCgi
fVxufVxuIik7CiAgICAgICAgICAgICBhdXRvIHdyaXRlRGF0YSA9IGVwaWxvZ3VlLnRvU3RyaW5n
KCkudXRmOCgpOwotICAgICAgICAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIHdyaXRlRGF0
YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBXZWJDb3JlOjpjbG9z
ZUZpbGUoZmQpOworICAgICAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUo
ZmQsIHdyaXRlRGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CisgICAgICAgICAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGF1dG8gZW50cnkgPSBFbnRyeTo6ZGVjb2RlU3RvcmFnZVJlY29y
ZCgqcmVjb3JkKTsKQEAgLTU5MCwxNCArNTkwLDE0IEBAIHZvaWQgQ2FjaGU6OmR1bXBDb250ZW50
c1RvRmlsZSgpCiAgICAgICAgIGVudHJ5LT5hc0pTT04oanNvbiwgaW5mbyk7CiAgICAgICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAgICAgIGF1dG8gd3JpdGVEYXRhID0ganNvbi50
b1N0cmluZygpLnV0ZjgoKTsKLSAgICAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmQsIHdyaXRl
RGF0YS5kYXRhKCksIHdyaXRlRGF0YS5sZW5ndGgoKSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZkLCB3cml0ZURhdGEuZGF0YSgpLCB3cml0ZURhdGEubGVuZ3Ro
KCkpOwogICAgIH0pOwogfQogCiB2b2lkIENhY2hlOjpkZWxldGVEdW1wRmlsZSgpCiB7CiAgICAg
V29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuQ2FjaGUuZGVsZXRlIiktPmRpc3Bh
dGNoKFtwYXRoID0gZHVtcEZpbGVQYXRoKCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgV2Vi
Q29yZTo6ZGVsZXRlRmlsZShwYXRoKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShwYXRoKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApp
bmRleCBmNmIzNjRmYTllZDg1ZWYxMjQxODZkYTgxN2NiNDE4Yjc0OGM1ZTJiLi4xNjM1ZjIzY2U2
ZTA4ZmFkYjBhYzY1Mzg1ZWQ2NDFjMWM1NWY2MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdl
LmNwcApAQCAtNTMsMTUgKzUzLDE1IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkK
IHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFdlYkNvcmU6Om1ha2VB
bGxEaXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CiAKICAgICBtX2Fw
cHJveGltYXRlU2l6ZSA9IDA7CiAgICAgYXV0byBibG9iRGlyZWN0b3J5ID0gYmxvYkRpcmVjdG9y
eVBhdGgoKTsKICAgICB0cmF2ZXJzZURpcmVjdG9yeShibG9iRGlyZWN0b3J5LCBbdGhpcywgJmJs
b2JEaXJlY3RvcnldKGNvbnN0IFN0cmluZyYgbmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUp
IHsKICAgICAgICAgaWYgKHR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeSwgbmFtZSk7Ci0gICAgICAgIGF1dG8gZmlsZVBhdGgg
PSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgICAgIGF1dG8g
cGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9i
RGlyZWN0b3J5LCBuYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICAgICAgc3RydWN0IHN0
YXQgc3RhdDsKICAgICAgICAgOjpzdGF0KGZpbGVQYXRoLmRhdGEoKSwgJnN0YXQpOwogICAgICAg
ICAvLyBObyBjbGllbnRzIGxlZnQgZm9yIHRoaXMgYmxvYi4KQEAgLTc3LDcgKzc3LDcgQEAgdm9p
ZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJsb2JTdG9yYWdlOjpibG9iUGF0
aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25zdAogewogICAgIGF1dG8gaGFz
aEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAgIHJldHVybiBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBhdGgoKSwgU3RyaW5nOjpmcm9t
VVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0cmluZzo6ZnJvbVVU
RjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdlOjpCbG9iIEJsb2JTdG9yYWdlOjph
ZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBkYXRhKQpAQCAtODgsOCArODgsOCBA
QCBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwg
Y29uc3QgRGF0YSYgZGF0YSkKICAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB7IGRhdGEsIGhhc2ggfTsKIAotICAgIGF1dG8gYmxvYlBhdGggPSBXZWJDb3JlOjpmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oYmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKLSAgICBhdXRvIGxpbmtQ
YXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8g
YmxvYlBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
YmxvYlBhdGhGb3JIYXNoKGhhc2gpKTsKKyAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogICAgIHVubGluayhsaW5r
UGF0aC5kYXRhKCkpOwogCiAgICAgYm9vbCBibG9iRXhpc3RzID0gYWNjZXNzKGJsb2JQYXRoLmRh
dGEoKSwgRl9PSykgIT0gLTE7CkBAIC0xMTksNyArMTE5LDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2Ig
QmxvYlN0b3JhZ2U6OmdldChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgYXV0byBkYXRhID0g
bWFwRmlsZShsaW5rUGF0aC5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHsgZGF0YSwgY29tcHV0ZVNI
QTEoZGF0YSwgbV9zYWx0KSB9OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6
OnJlbW92ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgdW5saW5rKGxpbmtQYXRoLmRhdGEo
KSk7CiB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCB1bnNpZ25lZCBCbG9iU3RvcmFnZTo6c2hhcmVD
b3VudChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBhdXRvIGxpbmtQYXRoID0gV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBhdGgpOworICAgIGF1dG8gbGlua1BhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgc3RhdDsKICAgICBp
ZiAoOjpzdGF0KGxpbmtQYXRoLmRhdGEoKSwgJnN0YXQpIDwgMCkKICAgICAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZURhdGEuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmNwcAppbmRleCA4YWM3OTdmNzhhMDJkNTU5MjI2NWQxMGIwYzM3ODI3NjZhOTNi
MjRhLi43YmI2NDkyYTY2MGVjMmM0YWU1ZGZmNDMxMTI4ZGViOTJhZTcyNzMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YS5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgU2FsdCBtYWtlU2FsdCgpCiAKIHN0ZDo6
b3B0aW9uYWw8U2FsdD4gcmVhZE9yTWFrZVNhbHQoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IGF1dG8gY3BhdGggPSBXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7Cisg
ICAgYXV0byBjcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihwYXRoKTsKICAgICBhdXRvIGZkID0gb3BlbihjcGF0aC5kYXRhKCksIE9fUkRPTkxZLCAw
KTsKICAgICBTYWx0IHNhbHQ7CiAgICAgYXV0byBieXRlc1JlYWQgPSByZWFkKGZkLCBzYWx0LmRh
dGEoKSwgc2FsdC5zaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHAKaW5kZXggODJkNzM1
NTE4OTY2ZWVjNzI3YWNiYTQwMjYzOGUyZmVmMGFiMDk3NS4uZWU2ZDE0ZTU3MmU3OWY4YzMzYzY0
NjRmMDcyZDA4ZTY0YzQ0MzBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVGaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwCkBAIC02Myw3
ICs2Myw3IEBAIHN0YXRpYyBEaXJlY3RvcnlFbnRyeVR5cGUgZGlyZWN0b3J5RW50cnlUeXBlKHVp
bnQ4X3QgZHR5cGUpCiAKIHZvaWQgdHJhdmVyc2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBEaXJlY3RvcnlFbnRyeVR5cGUp
PiYgZnVuY3Rpb24pCiB7Ci0gICAgRElSKiBkaXIgPSBvcGVuZGlyKFdlYkNvcmU6OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOworICAgIERJUiogZGlyID0gb3BlbmRpcihX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgp
KTsKICAgICBpZiAoIWRpcikKICAgICAgICAgcmV0dXJuOwogICAgIGRpcmVudCogZHA7CkBAIC04
NCwxMCArODQsMTAgQEAgdm9pZCB0cmF2ZXJzZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIEQKIHZvaWQgZGVsZXRlRGlyZWN0
b3J5UmVjdXJzaXZlbHkoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHRyYXZlcnNlRGlyZWN0
b3J5KHBhdGgsIFsmcGF0aF0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUg
dHlwZSkgewotICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOworICAgICAgICBTdHJpbmcgZW50cnlQYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGgsIG5hbWUpOwog
ICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6
OkZpbGU6Ci0gICAgICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CisgICAg
ICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGVudHJ5UGF0aCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9y
eToKICAgICAgICAgICAgIGRlbGV0ZURpcmVjdG9yeVJlY3Vyc2l2ZWx5KGVudHJ5UGF0aCk7CkBA
IC05NSwxOSArOTUsMTkgQEAgdm9pZCBkZWxldGVEaXJlY3RvcnlSZWN1cnNpdmVseShjb25zdCBT
dHJpbmcmIHBhdGgpCiAgICAgICAgIC8vIFRoaXMgZG9lc24ndCBmb2xsb3cgc3ltbGlua3MuCiAg
ICAgICAgIH0KICAgICB9KTsKLSAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRo
KTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShwYXRoKTsK
IH0KIAogRmlsZVRpbWVzIGZpbGVUaW1lcyhjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAjaWYgSEFW
RShTVEFUX0JJUlRIVElNRSkKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKLSAgICBpZiAoc3Rh
dChXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpLCAmZmlsZUlu
Zm8pKQorICAgIGlmIChzdGF0KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihwYXRoKS5kYXRhKCksICZmaWxlSW5mbykpCiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgcmV0dXJuIHsgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3QoZmlsZUlu
Zm8uc3RfYmlydGh0aW1lKSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6ZnJvbV90aW1lX3Qo
ZmlsZUluZm8uc3RfbXRpbWUpIH07CiAjZWxpZiBVU0UoU09VUCkKICAgICAvLyBUaGVyZSdzIG5v
IHN0X2JpcnRodGltZSBpbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIGxpa2UgTGludXgsIHNvIHdl
IHVzZSB4YXR0cnMgdG8gc2V0L2dldCB0aGUgY3JlYXRpb24gdGltZS4KLSAgICBHUmVmUHRyPEdG
aWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSkpOworICAgIEdSZWZQdHI8R0ZpbGU+IGZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmls
ZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9pbmZvKGZpbGUuZ2V0KCks
ICJ4YXR0cjo6YmlydGh0aW1lLHRpbWU6Om1vZGlmaWVkIiwgR19GSUxFX1FVRVJZX0lORk9fTk9O
RSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICghZmlsZUluZm8pCiAgICAgICAgIHJldHVy
biB7IH07CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCB1cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGlt
ZUlmTmVlZGVkKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgLy8gVGhpcyByZWFsbHkgdXBkYXRlcyBib3RoIHRoZSBhY2Nlc3MgdGltZSBhbmQgdGhl
IG1vZGlmaWNhdGlvbiB0aW1lLgotICAgIHV0aW1lcyhXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocGF0aCkuZGF0YSgpLCBudWxscHRyKTsKKyAgICB1dGltZXMoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgbnVsbHB0cik7
CiB9CiAKIGJvb2wgY2FuVXNlU2hhcmVkTWVtb3J5Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
CkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBjYW5Vc2VTaGFyZWRNZW1vcnlGb3JQYXRoKGNvbnN0
IFN0cmluZyYgcGF0aCkKICAgICBhdHRybGlzdCBhdHRyTGlzdCA9IHsgfTsKICAgICBhdHRyTGlz
dC5iaXRtYXBjb3VudCA9IEFUVFJfQklUX01BUF9DT1VOVDsKICAgICBhdHRyTGlzdC5jb21tb25h
dHRyID0gQVRUUl9DTU5fREFUQV9QUk9URUNUX0ZMQUdTOwotICAgIGludDMyX3QgZXJyb3IgPSBn
ZXRhdHRybGlzdChXZWJDb3JlOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCkuZGF0YSgp
LCAmYXR0ckxpc3QsICZhdHRyQnVmZmVyLCBzaXplb2YoYXR0ckJ1ZmZlciksIEZTT1BUX05PRk9M
TE9XKTsKKyAgICBpbnQzMl90IGVycm9yID0gZ2V0YXR0cmxpc3QoV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSwgJmF0dHJMaXN0LCAmYXR0
ckJ1ZmZlciwgc2l6ZW9mKGF0dHJCdWZmZXIpLCBGU09QVF9OT0ZPTExPVyk7CiAgICAgaWYgKGVy
cm9yKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJVbmFibGUgdG8gZ2V0
IGNhY2hlIGRpcmVjdG9yeSBwcm90ZWN0aW9uIGNsYXNzLCBkaXNhYmxpbmcgdXNlIG9mIHNoYXJl
ZCBtYXBwZWQgbWVtb3J5Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbENvY29hLm1tCmluZGV4IGVmZDc3OTlkYTJmOTVjYTQwOGUwMGU3ZWQwZTZiYzBkN2I4
MWI0NWYuLjc2YjE0ZTMzNDhlYzVjNmZmY2YyMmI4ZWRmYzlmM2NmODY0YTdhMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQpAQCAtNDEsNyArNDEsNyBAQCBJT0NoYW5uZWw6OklP
Q2hhbm5lbChjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBUeXBlIHR5cGUpCiAgICAgOiBtX3BhdGgo
ZmlsZVBhdGgpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKLSAgICBhdXRvIHBhdGggPSBXZWJDb3Jl
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpOworICAgIGF1dG8gcGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCk7CiAg
ICAgaW50IG9mbGFnOwogICAgIG1vZGVfdCBtb2RlOwogICAgIGJvb2wgdXNlTG93SU9Qcmlvcml0
eSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAKaW5kZXggMDE2MTIwODBj
NzljNDllNDFiNjQ2NTdlOWU4OWVjMGQ2ZjVlNGNiOC4uNGNlNzc2MmI5MWRmMDE2NGYyMGY2MDIz
Y2QzZWQwYWJlZTdhM2NiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIElPQ2hhbm5lbDo6SU9DaGFubmVsKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgs
IFR5cGUgdHlwZSkKICAgICA6IG1fcGF0aChmaWxlUGF0aCkKICAgICAsIG1fdHlwZSh0eXBlKQog
ewotICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxl
UGF0aCk7CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGZpbGVQYXRoKTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRH
UmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5kYXRhKCkpKTsKICAgICBzd2l0Y2ggKG1fdHlw
ZSkgewogICAgIGNhc2UgVHlwZTo6Q3JlYXRlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcApp
bmRleCA2OTMzNDE3ZmQ4Y2QwYzNmOWRjYjBiN2Y4MWRjZDEwNGRkOTI5ZmY1Li5iNGY2MjYyZGM0
ODAyNDdmMzcxZmNiNWEwMjA3ZTUxMWYyODYzZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGljcy5j
cHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFN0YXRpc3RpY3M+IFN0YXRpc3Rp
Y3M6Om9wZW4oQ2FjaGUmIGNhY2hlLCBjb25zdCBTdHJpbmcmIGNhY2hlUGEKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChjYWNoZVBhdGgsIFN0YXRpc3RpY3NEYXRhYmFz
ZU5hbWUpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoY2FjaGVQYXRoLCBTdGF0aXN0aWNzRGF0YWJhc2VOYW1l
KTsKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdGF0aXN0aWNzPihjYWNoZSwgZGF0YWJh
c2VQYXRoKTsKIH0KIApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFN0YXRpc3RpY3M6OmluaXRpYWxp
emUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAgICAgc2VyaWFsQmFja2dyb3VuZElPUXVl
dWUoKS5kaXNwYXRjaChbdGhpcywgZGF0YWJhc2VQYXRoID0gZGF0YWJhc2VQYXRoLmlzb2xhdGVk
Q29weSgpLCBuZXR3b3JrQ2FjaGVQYXRoID0gbV9jYWNoZS5yZWNvcmRzUGF0aCgpLCBzdGFydFRp
bWVdIHsKICAgICAgICAgV2ViQ29yZTo6U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwogCi0gICAgICAgIGlmICghV2ViQ29yZTo6bWFrZUFs
bERpcmVjdG9yaWVzKFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCisgICAg
ICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKFdlYkNvcmU6
OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUoZGF0YWJhc2VQYXRoKSkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgT3Bl
bmluZyBuZXR3b3JrIGNhY2hlIHN0YXRpc3RpY3MgZGF0YWJhc2UgYXQgJXMuLi4iLCBkYXRhYmFz
ZVBhdGgudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBlNGFkYjE5YmM4
Y2YzYjNkOWRjN2RiNDY0ZGE0MThlYWMwYmRmOWJlLi4wM2UzMDkyOTA3MTJkZjQ0NzRkZGE3ZjE2
YmI0Y2ZiMjZiZTYzZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTEzNiwyOSArMTM2LDI5
IEBAIHB1YmxpYzoKIHN0YXRpYyBTdHJpbmcgbWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoY29u
c3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKICAgICBTdHJpbmcgdmVyc2lvblN1YmRp
cmVjdG9yeSA9IHZlcnNpb25EaXJlY3RvcnlQcmVmaXggKyBTdHJpbmc6Om51bWJlcihTdG9yYWdl
Ojp2ZXJzaW9uKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGJhc2VEaXJlY3RvcnlQYXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJhc2VEaXJlY3RvcnlQ
YXRoLCB2ZXJzaW9uU3ViZGlyZWN0b3J5KTsKIH0KIAogc3RhdGljIFN0cmluZyBtYWtlUmVjb3Jk
c0RpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBiYXNlRGlyZWN0b3J5UGF0aCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1ha2VWZXJzaW9uZWREaXJl
Y3RvcnlQYXRoKGJhc2VEaXJlY3RvcnlQYXRoKSwgcmVjb3Jkc0RpcmVjdG9yeU5hbWUpOworICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFr
ZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCByZWNvcmRzRGlyZWN0
b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgbWFrZUJsb2JEaXJlY3RvcnlQYXRoKGNvbnN0
IFN0cmluZyYgYmFzZURpcmVjdG9yeVBhdGgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChiYXNlRGlyZWN0
b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0
aChiYXNlRGlyZWN0b3J5UGF0aCksIGJsb2JzRGlyZWN0b3J5TmFtZSk7CiB9CiAKIHN0YXRpYyBT
dHJpbmcgbWFrZVNhbHRGaWxlUGF0aChjb25zdCBTdHJpbmcmIGJhc2VEaXJlY3RvcnlQYXRoKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFrZVZlcnNp
b25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUpOworICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWFr
ZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZURpcmVjdG9yeVBhdGgpLCBzYWx0RmlsZU5hbWUp
OwogfQogCiBSZWZQdHI8U3RvcmFnZT4gU3RvcmFnZTo6b3Blbihjb25zdCBTdHJpbmcmIGNhY2hl
UGF0aCwgTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBpZiAoIVdlYkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5
UGF0aChjYWNoZVBhdGgpKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhtYWtlVmVyc2lvbmVkRGlyZWN0b3J5UGF0aChjYWNoZVBhdGgpKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBzYWx0ID0gcmVhZE9yTWFrZVNhbHQobWFrZVNh
bHRGaWxlUGF0aChjYWNoZVBhdGgpKTsKICAgICBpZiAoIXNhbHQpCkBAIC0xNzEsMTMgKzE3MSwx
MyBAQCB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgs
IGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRUeXBlLAogICAgIHRyYXZlcnNlRGlyZWN0b3J5KHJlY29y
ZHNQYXRoLCBbJl0oY29uc3QgU3RyaW5nJiBwYXJ0aXRpb25OYW1lLCBEaXJlY3RvcnlFbnRyeVR5
cGUgZW50cnlUeXBlKSB7CiAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlU
eXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBwYXJ0
aXRpb25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRo
LCBwYXJ0aXRpb25OYW1lKTsKKyAgICAgICAgU3RyaW5nIHBhcnRpdGlvblBhdGggPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRp
dGlvbk5hbWUpOwogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShwYXJ0aXRpb25QYXRoLCBbJl0o
Y29uc3QgU3RyaW5nJiBhY3R1YWxUeXBlLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7
CiAgICAgICAgICAgICBpZiAoZW50cnlUeXBlICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0
b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRU
eXBlLmlzRW1wdHkoKSAmJiBleHBlY3RlZFR5cGUgIT0gYWN0dWFsVHlwZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBTdHJpbmcgcmVjb3JkRGlyZWN0b3J5UGF0aCA9IFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBhY3R1YWxUeXBl
KTsKKyAgICAgICAgICAgIFN0cmluZyByZWNvcmREaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIGFjdHVhbFR5
cGUpOwogICAgICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocmVjb3JkRGlyZWN0b3J5UGF0aCwg
WyZmdW5jdGlvbiwgJnJlY29yZERpcmVjdG9yeVBhdGgsICZhY3R1YWxUeXBlXShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgZW50cnlUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUgfHwgZmlsZU5h
bWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk3LDE4ICsxOTcsMTggQEAgc3RhdGljIHZvaWQgZGVsZXRlRW1wdHlS
ZWNvcmRzRGlyZWN0b3JpZXMoY29uc3QgU3RyaW5nJiByZWNvcmRzUGF0aCkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAvLyBEZWxldGUgW3R5cGVdIHN1Yi1mb2xkZXJzLgotICAgICAg
ICBTdHJpbmcgcGFydGl0aW9uUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChyZWNvcmRzUGF0aCwgcGFydGl0aW9uTmFtZSk7CisgICAgICAgIFN0cmluZyBwYXJ0aXRpb25Q
YXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29y
ZHNQYXRoLCBwYXJ0aXRpb25OYW1lKTsKICAgICAgICAgdHJhdmVyc2VEaXJlY3RvcnkocGFydGl0
aW9uUGF0aCwgWyZwYXJ0aXRpb25QYXRoXShjb25zdCBTdHJpbmcmIHN1YmRpck5hbWUsIERpcmVj
dG9yeUVudHJ5VHlwZSBlbnRyeVR5cGUpIHsKICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0g
RGlyZWN0b3J5RW50cnlUeXBlOjpEaXJlY3RvcnkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMgcmVhbGx5IGVt
cHR5LgotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhcnRpdGlvblBhdGgsIHN1YmRpck5hbWUpKTsKKyAg
ICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KFdlYkNv
cmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXJ0aXRpb25QYXRoLCBz
dWJkaXJOYW1lKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIC8vIERlbGV0ZSBbUGFydGl0aW9u
XSBmb2xkZXJzLgogICAgICAgICAvLyBMZXQgc3lzdGVtIGZpZ3VyZSBvdXQgaWYgaXQgaXMgcmVh
bGx5IGVtcHR5LgotICAgICAgICBXZWJDb3JlOjpkZWxldGVFbXB0eURpcmVjdG9yeShXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3Jkc1BhdGgsIHBhcnRpdGlvbk5hbWUpKTsK
KyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkoV2ViQ29y
ZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoLCBwYXJ0
aXRpb25OYW1lKSk7CiAgICAgfSk7CiB9CiAKQEAgLTI3NiwxNyArMjc2LDE3IEBAIHZvaWQgU3Rv
cmFnZTo6c3luY2hyb25pemUoKQogICAgICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgICAg
IFN0cmluZyBhbnlUeXBlOwogICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0
aCgpLCBhbnlUeXBlLCBbJnJlY29yZEZpbHRlciwgJmJsb2JGaWx0ZXIsICZyZWNvcmRzU2l6ZSwg
JmNvdW50XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGly
ZWN0b3J5UGF0aCkgewotICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAg
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKIAogICAgICAgICAg
ICAgS2V5OjpIYXNoVHlwZSBoYXNoOwogICAgICAgICAgICAgaWYgKCFLZXk6OnN0cmluZ1RvSGFz
aChoYXNoU3RyaW5nLCBoYXNoKSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZp
bGUoZmlsZVBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgICAgICAgICBXZWJDb3Jl
OjpnZXRGaWxlU2l6ZShmaWxlUGF0aCwgZmlsZVNpemUpOworICAgICAgICAgICAgV2ViQ29yZTo6
RmlsZVN5c3RlbTo6Z2V0RmlsZVNpemUoZmlsZVBhdGgsIGZpbGVTaXplKTsKICAgICAgICAgICAg
IGlmICghZmlsZVNpemUpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKGZp
bGVQYXRoKTsKKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGZpbGVQYXRoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAg
LTM1MiwxMiArMzUyLDEyIEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJsb2IoY29uc3QgS2V5
JiBrZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShj
b25zdCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBlKCkuaXNFbXB0eSgp
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFz
aEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5n
KCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZFBhdGhGb3JLZXko
Y29uc3QgS2V5JiBrZXkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5oYXNoQXNT
dHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGtleSksIGtleS5oYXNoQXNTdHJp
bmcoKSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgYmxvYlBhdGhGb3JSZWNvcmRQYXRoKGNvbnN0IFN0
cmluZyYgcmVjb3JkUGF0aCkKQEAgLTYwMiw3ICs2MDIsNyBAQCB2b2lkIFN0b3JhZ2U6OmRlbGV0
ZUZpbGVzKGNvbnN0IEtleSYga2V5KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShyZWNvcmRQYXRoRm9yS2V5KGtleSkpOworICAg
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aEZvcktleShrZXkpKTsK
ICAgICBtX2Jsb2JTdG9yYWdlLnJlbW92ZShibG9iUGF0aEZvcktleShrZXkpKTsKIH0KIApAQCAt
NzY0LDcgKzc2NCw3IEBAIHZvaWQgU3RvcmFnZTo6ZGlzcGF0Y2hXcml0ZU9wZXJhdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8V3JpdGVPcGVyYXRpb24+IHdyaXRlT3BlcmF0CiAgICAgICAgIGF1dG8gcmVj
b3JkRGlyZWN0b3JQYXRoID0gcmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleSh3cml0ZU9wZXJhdGlv
bi5yZWNvcmQua2V5KTsKICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gcmVjb3JkUGF0aEZvcktl
eSh3cml0ZU9wZXJhdGlvbi5yZWNvcmQua2V5KTsKIAotICAgICAgICBXZWJDb3JlOjptYWtlQWxs
RGlyZWN0b3JpZXMocmVjb3JkRGlyZWN0b3JQYXRoKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHJlY29yZERpcmVjdG9yUGF0aCk7CiAKICAgICAgICAg
Kyt3cml0ZU9wZXJhdGlvbi5hY3RpdmVDb3VudDsKIApAQCAtODYzLDcgKzg2Myw3IEBAIHZvaWQg
U3RvcmFnZTo6dHJhdmVyc2UoY29uc3QgU3RyaW5nJiB0eXBlLCBUcmF2ZXJzZUZsYWdzIGZsYWdz
LCBUcmF2ZXJzZUhhbmRsZXImCiAgICAgICAgICAgICBpZiAoaXNCbG9iKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgYXV0byByZWNvcmRQYXRoID0gV2ViQ29yZTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAg
ICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAKICAgICAg
ICAgICAgIGRvdWJsZSB3b3J0aCA9IC0xOwogICAgICAgICAgICAgaWYgKHRyYXZlcnNlT3BlcmF0
aW9uLmZsYWdzICYgVHJhdmVyc2VGbGFnOjpDb21wdXRlV29ydGgpCkBAIC05NTIsMTMgKzk1Miwx
MyBAQCB2b2lkIFN0b3JhZ2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtbwogICAgIGlvUXVldWUoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtb2RpZmllZFNpbmNlVGltZSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdHlwZSA9IHR5cGUu
aXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0g
dGhpcy0+cmVjb3Jkc1BhdGgoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jk
c1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9i
LCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsKLSAgICAgICAgICAgIGF1dG8g
ZmlsZVBhdGggPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0
b3J5UGF0aCwgZmlsZU5hbWUpOworICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IFdlYkNvcmU6
OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRo
LCBmaWxlTmFtZSk7CiAgICAgICAgICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUgPiBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptaW4oKSkgewogICAgICAgICAgICAgICAg
IGF1dG8gdGltZXMgPSBmaWxlVGltZXMoZmlsZVBhdGgpOwogICAgICAgICAgICAgICAgIGlmICh0
aW1lcy5tb2RpZmljYXRpb24gPCBtb2RpZmllZFNpbmNlVGltZSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRmls
ZShmaWxlUGF0aCk7CisgICAgICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGZpbGVQYXRoKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZGVsZXRlRW1wdHlSZWNvcmRzRGly
ZWN0b3JpZXMocmVjb3Jkc1BhdGgpOwpAQCAtMTAzOCw3ICsxMDM4LDcgQEAgdm9pZCBTdG9yYWdl
OjpzaHJpbmsoKQogICAgICAgICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIGF1dG8gcmVjb3JkUGF0aCA9IFdlYkNvcmU6OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgICAg
ICBhdXRvIHJlY29yZFBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAgICAgYXV0
byBibG9iUGF0aCA9IGJsb2JQYXRoRm9yUmVjb3JkUGF0aChyZWNvcmRQYXRoKTsKIAogICAgICAg
ICAgICAgYXV0byB0aW1lcyA9IGZpbGVUaW1lcyhyZWNvcmRQYXRoKTsKQEAgLTEwNTAsNyArMTA1
MCw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTdG9yYWdlLCAiRGVsZXRpb24gcHJvYmFiaWxpdHk9JWYgYm9keUxpbmtDb3VudD0lZCBzaG91
bGREZWxldGU9JWQiLCBwcm9iYWJpbGl0eSwgYm9keVNoYXJlQ291bnQsIHNob3VsZERlbGV0ZSk7
CiAKICAgICAgICAgICAgIGlmIChzaG91bGREZWxldGUpIHsKLSAgICAgICAgICAgICAgICBXZWJD
b3JlOjpkZWxldGVGaWxlKHJlY29yZFBhdGgpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUocmVjb3JkUGF0aCk7CiAgICAgICAgICAgICAgICAgbV9ibG9i
U3RvcmFnZS5yZW1vdmUoYmxvYlBhdGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKQEAg
LTEwODYsNyArMTA4Niw3IEBAIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgICAgICAgICBhdXRvIG9sZFZlcnNp
b25QYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3Vi
ZGlyTmFtZSk7CisgICAgICAgICAgICBhdXRvIG9sZFZlcnNpb25QYXRoID0gV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGNhY2hlUGF0aCwgc3ViZGlyTmFtZSk7
CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vzcykg
ZGVsZXRpbmcgb2xkIGNhY2hlIHZlcnNpb24sIHBhdGggJXMiLCBvbGRWZXJzaW9uUGF0aC51dGY4
KCkuZGF0YSgpKTsKIAogICAgICAgICAgICAgZGVsZXRlRGlyZWN0b3J5UmVjdXJzaXZlbHkob2xk
VmVyc2lvblBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAppbmRleCAzMTMxYzBmMWM0
NDdiZjk0ODU4MjRkNDA0ODYxOWZiYmMyMjc3OTBlLi5lMmQ0MWVlNzg0YTYyNDQ3MTFjZjA5ZGU1
NDFkZjVhZmVkODg2MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmNwcApAQCAtNzMsMTUg
KzczLDE1IEBAIHZvaWQgTWFuYWdlcjo6aW5pdGlhbGl6ZShjb25zdCBTdHJpbmcmIHJlY29yZFJl
cGxheU1vZGUsIGNvbnN0IFN0cmluZyYgcmVjb3JkUmVwCiAgICAgICAgIG1fcmVjb3JkUmVwbGF5
TW9kZSA9IERpc2FibGVkOwogICAgIH0KIAotICAgIG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlv
biA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRSZXBsYXlDYWNoZUxv
Y2F0aW9uLCBrRGlyTmFtZVJlY29yZFJlcGxheSk7CisgICAgbV9yZWNvcmRSZXBsYXlDYWNoZUxv
Y2F0aW9uID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJl
Y29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtEaXJOYW1lUmVjb3JkUmVwbGF5KTsKICAgICBERUJV
R19MT0coIkNhY2hlIGxvY2F0aW9uID0gIiBTVFJJTkdfU1BFQ0lGSUVSLCBERUJVR19TVFIobV9y
ZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uKSk7CiAKICAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewot
ICAgICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJl
Y29yZFBhdGgoKSwgV2ViQ29yZTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgbV9yZWNvcmRGaWxl
SGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRSZWNvcmRQYXRoKCksIFdlYkNvcmU6
OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgfSBlbHNlIGlmIChpc1JlcGxheWluZygp
KSB7Ci0gICAgICAgIG1fcmVjb3JkRmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZpbGVIYW5kbGUocmVw
b3J0UmVjb3JkUGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yUmVhZCk7Ci0gICAgICAgIG1fbG9hZEZp
bGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydExvYWRQYXRoKCksIFdlYkNvcmU6
Ok9wZW5Gb3JXcml0ZSk7Ci0gICAgICAgIG1fcmVwbGF5RmlsZUhhbmRsZSA9IFdlYkNvcmU6OkZp
bGVIYW5kbGUocmVwb3J0UmVwbGF5UGF0aCgpLCBXZWJDb3JlOjpPcGVuRm9yV3JpdGUpOworICAg
ICAgICBtX3JlY29yZEZpbGVIYW5kbGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlY29y
ZFBhdGgoKSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgICAgICBtX2xv
YWRGaWxlSGFuZGxlID0gV2ViQ29yZTo6RmlsZUhhbmRsZShyZXBvcnRMb2FkUGF0aCgpLCBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgICAgICBtX3JlcGxheUZpbGVIYW5k
bGUgPSBXZWJDb3JlOjpGaWxlSGFuZGxlKHJlcG9ydFJlcGxheVBhdGgoKSwgV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICAgICAgbG9hZFJlc291cmNlcygpOwogICAgIH0K
IH0KQEAgLTM2NSwxNyArMzY1LDE3IEBAIHZvaWQgTWFuYWdlcjo6bG9hZFJlc291cmNlcygpCiAK
IFN0cmluZyBNYW5hZ2VyOjpyZXBvcnRMb2FkUGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtG
aWxlTmFtZVJlcG9ydExvYWQpOworICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5h
bWVSZXBvcnRMb2FkKTsKIH0KIAogU3RyaW5nIE1hbmFnZXI6OnJlcG9ydFJlY29yZFBhdGgoKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRS
ZXBsYXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOworICAgIHJldHVybiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9yZWNvcmRSZXBs
YXlDYWNoZUxvY2F0aW9uLCBrRmlsZU5hbWVSZXBvcnRSZWNvcmQpOwogfQogCiBTdHJpbmcgTWFu
YWdlcjo6cmVwb3J0UmVwbGF5UGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJl
cG9ydFJlcGxheSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3JlY29yZFJlcGxheUNhY2hlTG9jYXRpb24sIGtGaWxlTmFtZVJlcG9y
dFJlcGxheSk7CiB9CiAKIFN0cmluZyBNYW5hZ2VyOjpyZXF1ZXN0VG9QYXRoKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTQxMSw5ICs0MTEsOSBAQCBTdHJpbmcg
TWFuYWdlcjo6aGFzaFRvUGF0aChjb25zdCBTdHJpbmcmIGhhc2gpCiAgICAgZmlsZU5hbWUuYXBw
ZW5kKGhhc2hUYWlsKTsKICAgICBmaWxlTmFtZS5hcHBlbmRMaXRlcmFsKCIuZGF0YSIpOwogCi0g
ICAgYXV0byBwYXRoID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fcmVjb3Jk
UmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZXNvdXJjZXMpOwotICAgIHBhdGggPSBXZWJD
b3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgaGFzaEhlYWQpOwotICAgIHBhdGgg
PSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUudG9TdHJp
bmcoKSk7CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1fcmVjb3JkUmVwbGF5Q2FjaGVMb2NhdGlvbiwga0Rpck5hbWVSZXNvdXJj
ZXMpOworICAgIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aCwgaGFzaEhlYWQpOworICAgIHBhdGggPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aCwgZmlsZU5hbWUudG9TdHJpbmcoKSk7CiAKICAg
ICByZXR1cm4gcGF0aDsKIH0KQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIE1hbmFnZXI6OmxvZ1Bs
YXllZEJhY2tSZXNvdXJjZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvbwogICAgIG1fcmVwbGF5RmlsZUhhbmRsZS5wcmludGYoIiVzICVzXG4iLCB3YXNDYWNoZU1p
c3MgPyAibWlzcyIgOiAiaGl0ICIsIERFQlVHX1NUUih1cmwuc3RyaW5nKCkpKTsKIH0KIAotV2Vi
Q29yZTo6RmlsZUhhbmRsZSBNYW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmls
ZVBhdGgsIFdlYkNvcmU6OkZpbGVPcGVuTW9kZSBtb2RlKQorV2ViQ29yZTo6RmlsZUhhbmRsZSBN
YW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZSBtb2RlKQogewogICAgIC8vIElmIHdlIGNhbiB0cml2aWFs
bHkgb3BlbiB0aGUgZmlsZSwgdGhlbiBkbyB0aGF0IGFuZCByZXR1cm4gdGhlIG5ldyBmaWxlCiAg
ICAgLy8gaGFuZGxlLgpAQCAtNDY0LDkgKzQ2NCw5IEBAIFdlYkNvcmU6OkZpbGVIYW5kbGUgTWFu
YWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBXZWJDb3JlOjpGaWxl
CiAgICAgLy8gSWYgd2UncmUgb3BlbmluZyB0aGUgZmlsZSBmb3Igd3JpdGluZyAoaW5jbHVkaW5n
IGFwcGVuZGluZyksIHRoZW4gdHJ5CiAgICAgLy8gYWdhaW4gYWZ0ZXIgbWFraW5nIHN1cmUgYWxs
IGludGVybWVkaWF0ZSBkaXJlY3RvcmllcyBoYXZlIGJlZW4gY3JlYXRlZC4KIAotICAgIGlmICht
b2RlICE9IFdlYkNvcmU6Ok9wZW5Gb3JSZWFkKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIHBhcmVu
dERpciA9IFdlYkNvcmU6OmRpcmVjdG9yeU5hbWUoZmlsZVBhdGgpOwotICAgICAgICBpZiAoIVdl
YkNvcmU6Om1ha2VBbGxEaXJlY3RvcmllcyhwYXJlbnREaXIpKSB7CisgICAgaWYgKG1vZGUgIT0g
V2ViQ29yZTo6RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpIHsKKyAgICAgICAgY29uc3QgYXV0byYg
cGFyZW50RGlyID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShmaWxlUGF0aCk7
CisgICAgICAgIGlmICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBh
cmVudERpcikpIHsKICAgICAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3IgJWQgdHJ5aW5n
IHRvIGNyZWF0ZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXM6ICIgU1RSSU5HX1NQRUNJRklFUiwg
ZXJybm8sIERFQlVHX1NUUihwYXJlbnREaXIpKTsKICAgICAgICAgICAgIHJldHVybiBmaWxlSGFu
ZGxlOwogICAgICAgICB9CkBAIC00NzksNyArNDc5LDcgQEAgV2ViQ29yZTo6RmlsZUhhbmRsZSBN
YW5hZ2VyOjpvcGVuQ2FjaGVGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgsIFdlYkNvcmU6OkZp
bGUKICAgICAvLyBDb3VsZCBub3Qgb3BlbiB0aGUgZmlsZS4gTG9nIHRoZSBlcnJvciBhbmQgbGVh
dmUsIHJldHVybmluZyB0aGUgaW52YWxpZAogICAgIC8vIGZpbGUgaGFuZGxlLgogCi0gICAgaWYg
KG1vZGUgPT0gV2ViQ29yZTo6T3BlbkZvclJlYWQpCisgICAgaWYgKG1vZGUgPT0gV2ViQ29yZTo6
RmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpCiAgICAgICAgIERFQlVHX0xPR19FUlJPUigiRXJyb3Ig
JWQgdHJ5aW5nIHRvIG9wZW4gIiBTVFJJTkdfU1BFQ0lGSUVSICIgZm9yIHJlYWRpbmciLCBlcnJu
bywgREVCVUdfU1RSKGZpbGVQYXRoKSk7CiAgICAgZWxzZQogICAgICAgICBERUJVR19MT0dfRVJS
T1IoIkVycm9yICVkIHRyeWluZyB0byBvcGVuICIgU1RSSU5HX1NQRUNJRklFUiAiIGZvciB3cml0
aW5nIiwgZXJybm8sIERFQlVHX1NUUihmaWxlUGF0aCkpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIFdl
YkNvcmU6OkZpbGVIYW5kbGUgTWFuYWdlcjo6b3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoLCBXZWJDb3JlOjpGaWxlCiBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxWZWN0b3I8U3RyaW5n
Pj4+IE1hbmFnZXI6OnJlYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiB7CiAgICAgYm9v
bCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgV2ViQ29yZTo6TWFwcGVkRmlsZURhdGEgZmlsZShmaWxl
UGF0aCwgc3VjY2Vzcyk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEg
ZmlsZShmaWxlUGF0aCwgc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVNYW5hZ2VyLmgKaW5kZXggZWIyYWNjNDhk
Y2EyMjczYTUzOTIwZjI3YmEwMTQ2YTAzYzNjMjk4NC4uNTBlZDVlMjNkMTg1MjFkNTg3ZTk4N2Ix
ZGQyNzMyZjFlMDVhYjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZU1hbmFnZXIuaApAQCAtNzksNyArNzks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dMb2FkZWRSZXNvdXJjZShSZXNvdXJjZSYpOwogICAg
IHZvaWQgbG9nUGxheWVkQmFja1Jlc291cmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgd2FzQ2FjaGVNaXNzKTsKIAotICAgIFdlYkNvcmU6OkZpbGVIYW5kbGUgb3BlbkNh
Y2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxlT3Blbk1vZGUpOworICAgIFdlYkNv
cmU6OkZpbGVIYW5kbGUgb3BlbkNhY2hlRmlsZShjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpGaWxlT3Blbk1vZGUpOwogCiAgICAgU3RyaW5nIHJlcXVlc3RUb1BhdGgoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFN0cmluZyB1cmxJZGVudGlm
eWluZ0NvbW1vbkRvbWFpbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlY29yZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJl
Y29yZGVyLmNwcAppbmRleCBlNjYwM2U2MzZkNzQ4ZmE2OWVlNDFhNTZkOWVmOWYxNjc5NTU5YjA0
Li4zYTU1OWE2MTg0NTBkM2ZiOWZiM2M1MDZkNTRkOWExZTI2MTBiOTIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtD
YXB0dXJlUmVjb3JkZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBSZWNvcmRlcjo6cmVj
b3JkRmluaXNoKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogdm9pZCBSZWNv
cmRlcjo6d3JpdGVFdmVudHMoKQogewogICAgIGF1dG8gcGF0aCA9IE1hbmFnZXI6OnNpbmdsZXRv
bigpLnJlcXVlc3RUb1BhdGgobV9pbml0aWFsUmVxdWVzdCk7Ci0gICAgYXV0byBoYW5kbGUgPSBN
YW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVGaWxlKHBhdGgsIFdlYkNvcmU6Ok9wZW5Gb3JX
cml0ZSk7CisgICAgYXV0byBoYW5kbGUgPSBNYW5hZ2VyOjpzaW5nbGV0b24oKS5vcGVuQ2FjaGVG
aWxlKHBhdGgsIFdlYkNvcmU6OkZpbGVTeXN0ZW06Ok9wZW5Gb3JXcml0ZSk7CiAgICAgaWYgKCFo
YW5kbGUpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FwdHVyZS9OZXR3b3JrQ2FwdHVyZVJlc291cmNlLmgKaW5kZXgg
ZTU3NjBlZDFiYzMwYTE5YWFlZjg0YjBlOGRmODFjMzk3ODg5YWE5NS4uNzU3NmMwZDVlMDA4NDg5
MTYyYzE4Yzk2NjA0ZmUzYTM4N2YzOWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYXB0dXJlL05ldHdvcmtDYXB0dXJlUmVzb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhcHR1cmUvTmV0d29ya0NhcHR1cmVSZXNvdXJjZS5oCkBA
IC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBTdHJpbmcgbV9l
dmVudEZpbGVQYXRoOwogICAgICAgICBib29sIG1faGF2ZU1hcHBlZEV2ZW50RmlsZSB7IGZhbHNl
IH07Ci0gICAgICAgIFdlYkNvcmU6Ok1hcHBlZEZpbGVEYXRhIG1fbWFwcGVkRXZlbnRGaWxlOwor
ICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0YSBtX21hcHBlZEV2ZW50
RmlsZTsKICAgICAgICAgc2l6ZV90IG1fb2Zmc2V0IHsgMCB9OwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCmluZGV4IGViNTNmNmMzMmYxNDA2NGIxM2M4MDA3YzdmNDMwOTczMThhMDMwYzEu
LjQ4MTc1ZmQxODIwZDRjMmRmMTdmMjJlZTFiOTljNTQyOTk1ZDBlNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQpAQCAtMzAyLDggKzMwMiw4IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OnNl
dFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtCiAKICAg
ICBtX3Rhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgPSBtX3BlbmRpbmdEb3dubG9h
ZExvY2F0aW9uOwogCi0gICAgaWYgKGFsbG93T3ZlcndyaXRlICYmIFdlYkNvcmU6OmZpbGVFeGlz
dHMobV9wZW5kaW5nRG93bmxvYWRMb2NhdGlvbikpCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZp
bGUoZmlsZW5hbWUpOworICAgIGlmIChhbGxvd092ZXJ3cml0ZSAmJiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1fcGVuZGluZ0Rvd25sb2FkTG9jYXRpb24pKQorICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGZpbGVuYW1lKTsKIH0KIAogYm9vbCBOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAyYTgw
NTJkNGE5NzZhNjY0NDEzMjk3MDQ1MDE0YzZhNGM1YzRiNDRhLi5iYjY4ZjhkYjgwNzA0YjI5Mjc3
YzEyMGQxMjc4M2ZmODQ1YjgzZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC01NDEsNyArNTQx
LDcgQEAgc3RhdGljIE5TVVJMUmVxdWVzdCogdXBkYXRlSWdub3JlU3RyaWN0VHJhbnNwb3J0U2Vj
dXJpdHlTZXR0aW5nSWZOZWNlc3NhcnkoTlNVUkwKICAgICAgICAgYXV0byYgZG93bmxvYWRNYW5h
Z2VyID0gV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuZG93bmxvYWRNYW5hZ2Vy
KCk7CiAgICAgICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6RG93
bmxvYWQ+KGRvd25sb2FkTWFuYWdlciwgZG93bmxvYWRJRCwgZG93bmxvYWRUYXNrLCBfc2Vzc2lv
bi0+c2Vzc2lvbklEKCksIG5ldHdvcmtEYXRhVGFzay0+c3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiAg
ICAgICAgIG5ldHdvcmtEYXRhVGFzay0+dHJhbnNmZXJTYW5kYm94RXh0ZW5zaW9uVG9Eb3dubG9h
ZCgqZG93bmxvYWQpOwotICAgICAgICBBU1NFUlQoV2ViQ29yZTo6ZmlsZUV4aXN0cyhuZXR3b3Jr
RGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKFdl
YkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93
bmxvYWRMb2NhdGlvbigpKSk7CiAgICAgICAgIGRvd25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlv
bihuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZExvY2F0aW9uKCkpOwogICAgICAgICBk
b3dubG9hZE1hbmFnZXIuZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soZG93bmxvYWRJRCwgV1RG
TW92ZShkb3dubG9hZCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3NvdXAvTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCmluZGV4IGJkNGY2MjkxOTNmZDJhNWE0
ZjE5NDVmYjNiYzk1Yjg1ZWM1NDE3YTguLjRjOGI0YTRlMmI5ZWQ0OTU5ZTlkYTcwZGI3MTBmNzhk
ZTU2N2FkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrUHJvY2Vzc1NvdXAuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGkKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
LmlzRW1wdHkoKSk7CiAgICAgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeTsKIAotICAgIFNvdXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2Fj
aGUoV2ViQ29yZTo6ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOworICAgIFNv
dXBOZXR3b3JrU2Vzc2lvbjo6Y2xlYXJPbGRTb3VwQ2FjaGUoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGlyZWN0b3J5TmFtZShtX2Rpc2tDYWNoZURpcmVjdG9yeSkpOwogCiAgICAgT3B0aW9uU2V0PE5l
dHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpD
YWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9OwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9OZXRzY2FwZVBsdWdpbk1vZHVsZVVu
aXguY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05ldHNj
YXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKaW5kZXggZGFmOWJhZWNlZTVjM2E2ZjJjMGI3MDFlNTk3
OWE2M2YxZWM0ODUyZS4uN2FmMDk4MzNkYjFiYWIyYzMzMTFiNjU3ZTIyODg1MDg0ZmMwYzgwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS91bml4L05l
dHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS91bml4L05ldHNjYXBlUGx1Z2luTW9kdWxlVW5peC5jcHAKQEAgLTE2Miw3
ICsxNjIsNyBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBwbHVnaW4ucGF0aCA9IHBsdWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9
IHBhdGhHZXRGaWxlTmFtZShwbHVnaW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gRmls
ZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOwogICAgIHBsdWdpbi5pbmZvLm5h
bWUgPSBtZXRhRGF0YS5uYW1lOwogICAgIHBsdWdpbi5pbmZvLmRlc2MgPSBtZXRhRGF0YS5kZXNj
cmlwdGlvbjsKICAgICBwYXJzZU1JTUVEZXNjcmlwdGlvbihtZXRhRGF0YS5taW1lRGVzY3JpcHRp
b24sIHBsdWdpbi5pbmZvLm1pbWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcAppbmRleCA3ZTg5MmYwMGM4NTkxMmJj
YTY2MDRhYzdlZTM1YjBjOWZhZDdhMGU3Li4wNzUxZjBmZjU5YzUxZGFmMzM1YWU4YjU4MGU5OGIy
MWRlMmI2NjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL3VuaXgv
UGx1Z2luU2VhcmNoUGF0aC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy91
bml4L1BsdWdpblNlYXJjaFBhdGguY3BwCkBAIC00OCw4ICs0OCw4IEBAIFZlY3RvcjxTdHJpbmc+
IHBsdWdpbnNEaXJlY3RvcmllcygpCiAgICAgaWYgKCFtb3ppbGxhSG9tZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobW96aWxsYUhvbWUgKyAiL3BsdWdpbnMiKTsKIAotICAgIHJl
c3VsdC5hcHBlbmQoaG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm1vemlsbGEvcGx1Z2lucyIpOwot
ICAgIHJlc3VsdC5hcHBlbmQoaG9tZURpcmVjdG9yeVBhdGgoKSArICIvLm5ldHNjYXBlL3BsdWdp
bnMiKTsKKyAgICByZXN1bHQuYXBwZW5kKEZpbGVTeXN0ZW06OmhvbWVEaXJlY3RvcnlQYXRoKCkg
KyAiLy5tb3ppbGxhL3BsdWdpbnMiKTsKKyAgICByZXN1bHQuYXBwZW5kKEZpbGVTeXN0ZW06Omhv
bWVEaXJlY3RvcnlQYXRoKCkgKyAiLy5uZXRzY2FwZS9wbHVnaW5zIik7CiAgICAgcmVzdWx0LmFw
cGVuZCgiL3Vzci9saWIvYnJvd3Nlci9wbHVnaW5zIik7CiAgICAgcmVzdWx0LmFwcGVuZCgiL3Vz
ci9sb2NhbC9saWIvbW96aWxsYS9wbHVnaW5zIik7CiAgICAgcmVzdWx0LmFwcGVuZCgiL3Vzci9s
aWIvZmlyZWZveC9wbHVnaW5zIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJNZW1vcnlTYW1wbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBs
ZXIuY3BwCmluZGV4IDE1MTMzOTA4OGRjNWUwMGE5MGMxYTJjYTRhYWE2ZjkzODEyNWMxY2IuLjk2
MzZmMTFmOGMxMTdlZGYwMTU4ZjBkMTc3NTc5NGIyNDdlM2E1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXZWJN
ZW1vcnlTYW1wbGVyOjpzdG9wKCkKICAgICBpZiAoIW1faXNSdW5uaW5nKSAKICAgICAgICAgcmV0
dXJuOwogICAgIG1fc2FtcGxlVGltZXIuc3RvcCgpOwotICAgIGNsb3NlRmlsZShtX3NhbXBsZUxv
Z0ZpbGUpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX3NhbXBsZUxvZ0ZpbGUpOwogCiAg
ICAgcHJpbnRmKCJTdG9wcGVkIG1lbW9yeSBzYW1wbGVyIGZvciBwcm9jZXNzICVzICVkXG4iLCBw
cm9jZXNzTmFtZSgpLnV0ZjgoKS5kYXRhKCksIGdldHBpZCgpKTsKICAgICAvLyBGbHVzaCBzdGRv
dXQgYnVmZmVyIHNvIHB5dGhvbiBzY3JpcHQgY2FuIGJlIGd1YXJhbnRlZWQgdG8gcmVhZCB1cCB0
byB0aGlzIHBvaW50LgpAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgV2ViTWVtb3J5U2FtcGxlcjo6
aXNSdW5uaW5nKCkgY29uc3QKICAgICAKIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6
ZVRlbXBMb2dGaWxlKCkKIHsKLSAgICBtX3NhbXBsZUxvZ0ZpbGVQYXRoID0gb3BlblRlbXBvcmFy
eUZpbGUocHJvY2Vzc05hbWUoKSwgbV9zYW1wbGVMb2dGaWxlKTsKKyAgICBtX3NhbXBsZUxvZ0Zp
bGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUocHJvY2Vzc05hbWUoKSwgbV9z
YW1wbGVMb2dGaWxlKTsKICAgICB3cml0ZUhlYWRlcnMoKTsKIH0KIApAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6aW5pdGlhbGl6ZVNhbmRib3hlZExvZ0ZpbGUoY29u
c3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlCiAgICAgaWYgKG1fc2FtcGxlTG9nU2FuZGJveEV4
dGVuc2lvbikKICAgICAgICAgbV9zYW1wbGVMb2dTYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7
CiAgICAgbV9zYW1wbGVMb2dGaWxlUGF0aCA9IHNhbXBsZUxvZ0ZpbGVQYXRoOwotICAgIG1fc2Ft
cGxlTG9nRmlsZSA9IG9wZW5GaWxlKG1fc2FtcGxlTG9nRmlsZVBhdGgsIE9wZW5Gb3JXcml0ZSk7
CisgICAgbV9zYW1wbGVMb2dGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUobV9zYW1wbGVMb2dG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKICAgICB3cml0ZUhlYWRlcnMoKTsK
IH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgV2ViTWVtb3J5U2FtcGxlcjo6d3JpdGVIZWFk
ZXJzKCkKICAgICBTdHJpbmcgcHJvY2Vzc0RldGFpbHMgPSBTdHJpbmc6OmZvcm1hdCgiUHJvY2Vz
czogJXMgUGlkOiAlZFxuIiwgcHJvY2Vzc05hbWUoKS51dGY4KCkuZGF0YSgpLCBnZXRwaWQoKSk7
CiAKICAgICBDU3RyaW5nIHV0ZjhTdHJpbmcgPSBwcm9jZXNzRGV0YWlscy51dGY4KCk7Ci0gICAg
d3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmlu
Zy5sZW5ndGgoKSk7CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9zYW1wbGVMb2dGaWxl
LCB1dGY4U3RyaW5nLmRhdGEoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKIHZvaWQgV2Vi
TWVtb3J5U2FtcGxlcjo6c2FtcGxlVGltZXJGaXJlZCgpCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9p
ZCBXZWJNZW1vcnlTYW1wbGVyOjpzdG9wVGltZXJGaXJlZCgpCiAgICAgc3RvcCgpOwogfQogCi12
b2lkIFdlYk1lbW9yeVNhbXBsZXI6OmFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShQbGF0
Zm9ybUZpbGVIYW5kbGUmKQordm9pZCBXZWJNZW1vcnlTYW1wbGVyOjphcHBlbmRDdXJyZW50TWVt
b3J5VXNhZ2VUb0ZpbGUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlJikKIHsKICAgICAv
LyBDb2xsZWN0IHN0YXRpc3RpY3MgZnJvbSBhbGxvY2F0b3JzIGFuZCBnZXQgUlNJWkUgbWV0cmlj
CiAgICAgU3RyaW5nQnVpbGRlciBzdGF0U3RyaW5nOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
V2ViTWVtb3J5U2FtcGxlcjo6YXBwZW5kQ3VycmVudE1lbW9yeVVzYWdlVG9GaWxlKFBsYXRmb3Jt
RmlsZUhhbmRsZSYpCiAgICAgc3RhdFN0cmluZy5hcHBlbmQoJ1xuJyk7CiAKICAgICBDU3RyaW5n
IHV0ZjhTdHJpbmcgPSBzdGF0U3RyaW5nLnRvU3RyaW5nKCkudXRmOCgpOwotICAgIHdyaXRlVG9G
aWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3Ro
KCkpOworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKG1fc2FtcGxlTG9nRmlsZSwgdXRmOFN0
cmluZy5kYXRhKCksIHV0ZjhTdHJpbmcubGVuZ3RoKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJNZW1vcnlTYW1wbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJNZW1vcnlTYW1wbGVyLmgKaW5kZXggMjc4N2I1MTVkYWJjNTFlYmVjNWJjMDY0NmYx
M2JlZmU1MTI5ODYyMi4uMzI1ZWViODJhODcyMmFmZTRiMTA0YWQ4OGQwZDFkMzcxZDc2NzdjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViTWVtb3J5U2FtcGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYk1lbW9yeVNhbXBsZXIuaApAQCAtODcsNyArODcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZVRpbWVycyhkb3VibGUpOwogICAgIHZvaWQg
c2FtcGxlVGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3RvcFRpbWVyRmlyZWQoKTsKLSAgICB2b2lk
IGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5k
bGUmKTsKKyAgICB2b2lkIGFwcGVuZEN1cnJlbnRNZW1vcnlVc2FnZVRvRmlsZShXZWJDb3JlOjpG
aWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKICAgICB2b2lkIHNlbmRNZW1vcnlQcmVz
c3VyZUV2ZW50KCk7CiAgICAgCiAgICAgU3lzdGVtTWFsbG9jU3RhdHMgc2FtcGxlU3lzdGVtTWFs
bG9jKCkgY29uc3Q7CkBAIC05NSw3ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgV2ViTWVtb3J5U3Rh
dGlzdGljcyBzYW1wbGVXZWJLaXQoKSBjb25zdDsKICAgICBTdHJpbmcgcHJvY2Vzc05hbWUoKSBj
b25zdDsKICAgICAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9zYW1wbGVMb2dG
aWxlIHsgV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OworICAgIFdlYkNvcmU6
OkZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX3NhbXBsZUxvZ0ZpbGUgeyBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlIH07CiAgICAgU3RyaW5nIG1f
c2FtcGxlTG9nRmlsZVBhdGg7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9zYW1wbGVUaW1lcjsKICAg
ICBXZWJDb3JlOjpUaW1lciBtX3N0b3BUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2d0ay9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhHdGsuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvZ3RrL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKaW5kZXggOGIzODMzMzgwOGI1
NWFkNmZmNjliMjc4ZTQ4NzY5ZmJkOTA0MDY5Ni4uOWNhNmZmNjU2NGZhNzk0YWJlNjAwMmE2Zjdk
OTcwNzFiZWJkNjljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1Byb2Nl
c3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1By
b2Nlc3NFeGVjdXRhYmxlUGF0aEd0ay5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIFN0cmlu
ZyBnZXRFeGVjdXRhYmxlUGF0aCgpCiB7CiAgICAgQ1N0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdl
dEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJsZVBhdGguaXNOdWxs
KCkpCi0gICAgICAgIHJldHVybiBkaXJlY3RvcnlOYW1lKHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CisgICAgICAgIHJldHVybiBGaWxl
U3lzdGVtOjpkaXJlY3RvcnlOYW1lKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogI2VuZGlmCkBAIC01MywyMCArNTMsMjAgQEAgc3RhdGljIFN0cmluZyBmaW5kV2ViS2l0
UHJvY2Vzcyhjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSkKICNpZiBFTkFCTEUoREVWRUxPUEVSX01P
REUpCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4ZWNEaXJlY3RvcnkgPSBnX2dldGVudigiV0VC
S0lUX0VYRUNfUEFUSCIpOwogICAgIGlmIChleGVjRGlyZWN0b3J5KSB7Ci0gICAgICAgIFN0cmlu
ZyBwcm9jZXNzUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWNEaXJlY3RvcnkpLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAg
IGlmIChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVjdG9yeSksIHByb2Nlc3NOYW1l
KTsKKyAgICAgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAg
ICAgICAgICAgcmV0dXJuIHByb2Nlc3NQYXRoOwogICAgIH0KIAogICAgIHN0YXRpYyBTdHJpbmcg
ZXhlY3V0YWJsZVBhdGggPSBnZXRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJs
ZVBhdGguaXNOdWxsKCkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9jZXNzTmFtZSk7Ci0gICAgICAgIGlm
IChmaWxlRXhpc3RzKHByb2Nlc3NQYXRoKSkKKyAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGV4ZWN1dGFibGVQYXRoLCBwcm9j
ZXNzTmFtZSk7CisgICAgICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHByb2Nlc3NQYXRo
KSkKICAgICAgICAgICAgIHJldHVybiBwcm9jZXNzUGF0aDsKICAgICB9CiAjZW5kaWYKIAotICAg
IHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihQS0dMSUJFWEVDRElSKSwgcHJvY2Vzc05hbWUpOworICAgIHJldHVybiBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihQS0dMSUJFWEVDRElSKSwgcHJvY2Vzc05hbWUpOwogfQog
CiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL2lvcy9DaGlsZFByb2Nlc3NJT1MubW0KaW5kZXggNzJmNTEyMzZjYjU4NmVjMWE1YWI5NWQ5
NmRjNTczNzU1MDRmYzk4Mi4uM2VjNTRiZjM0OGRmMjFjMTg0ZTdlZmUzYjU3NjdlMmRkZWI0MGZl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0NoaWxkUHJvY2Vzc0lPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvQ2hpbGRQcm9jZXNzSU9TLm1tCkBAIC03
MSwxNCArNzEsMTQgQEAgdm9pZCBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KGNvbnN0
IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYKICAgICB9CiAKICAgICBTdHJp
bmcgc2FuZGJveEltcG9ydFBhdGggPSAiL3Vzci9sb2NhbC9zaGFyZS9zYW5kYm94L2ltcG9ydHMi
OwotICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJhbWV0ZXIoIklNUE9SVF9ESVIiLCBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveEltcG9ydFBhdGgpLmRhdGEoKSk7CisgICAg
c2FuZGJveFBhcmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSU1QT1JUX0RJUiIsIEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94SW1wb3J0UGF0aCkuZGF0YSgpKTsK
IAogICAgIHN3aXRjaCAoc2FuZGJveFBhcmFtZXRlcnMubW9kZSgpKSB7CiAgICAgY2FzZSBTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpVc2VEZWZhdWx0U2FuZGJveFByb2ZpbGVQYXRo
OgogICAgIGNhc2UgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVyczo6VXNlT3ZlcnJpZGVT
YW5kYm94UHJvZmlsZVBhdGg6IHsKICAgICAgICAgU3RyaW5nIHNhbmRib3hQcm9maWxlUGF0aCA9
IHNhbmRib3hQYXJhbWV0ZXJzLm1vZGUoKSA9PSBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzOjpVc2VEZWZhdWx0U2FuZGJveFByb2ZpbGVQYXRoID8gZGVmYXVsdFByb2ZpbGVQYXRoIDog
c2FuZGJveFBhcmFtZXRlcnMub3ZlcnJpZGVTYW5kYm94UHJvZmlsZVBhdGgoKTsKICAgICAgICAg
aWYgKCFzYW5kYm94UHJvZmlsZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBDU3RyaW5n
IHByb2ZpbGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQcm9maWxlUGF0
aCk7CisgICAgICAgICAgICBDU3RyaW5nIHByb2ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHNhbmRib3hQcm9maWxlUGF0aCk7CiAgICAgICAgICAgICBjaGFy
KiBlcnJvckJ1ZjsKICAgICAgICAgICAgIGlmIChzYW5kYm94X2luaXRfd2l0aF9wYXJhbWV0ZXJz
KHByb2ZpbGVQYXRoLmRhdGEoKSwgU0FOREJPWF9OQU1FRF9FWFRFUk5BTCwgc2FuZGJveFBhcmFt
ZXRlcnMubmFtZWRQYXJhbWV0ZXJBcnJheSgpLCAmZXJyb3JCdWYpKSB7CiAgICAgICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCIlczogQ291bGRuJ3QgaW5pdGlhbGl6ZSBzYW5kYm94IHByb2ZpbGUg
WyVzXSwgZXJyb3IgJyVzJ1xuIiwgZ2V0cHJvZ25hbWUoKSwgcHJvZmlsZVBhdGguZGF0YSgpLCBl
cnJvckJ1Zik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ2hpbGRQcm9j
ZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NoaWxkUHJvY2Vzc01hYy5tbQpp
bmRleCA1NGFlNjU4MDJkMzExMzRjZTE4ZDg2Mzg5MzRmYzQyODUxNTkwNDdhLi4yNzZlNmUzZmM4
ZmM2OGIxNzg3NjEwNDkwZTM4NjhhNzhhNmVhMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvQ2hpbGRQcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9DaGlsZFByb2Nlc3NNYWMubW0KQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENoaWxkUHJv
Y2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJgogICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhcmFtZXRlcigiX09TX1ZFUlNJ
T04iLCBvc1ZlcnNpb24udXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBVc2UgcHJpdmF0ZSB0ZW1w
b3JhcnkgYW5kIGNhY2hlIGRpcmVjdG9yaWVzLgotICAgIHNldGVudigiRElSSEVMUEVSX1VTRVJf
RElSX1NVRkZJWCIsIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzYW5kYm94UGFyYW1ldGVycy51
c2VyRGlyZWN0b3J5U3VmZml4KCkpLmRhdGEoKSwgMSk7CisgICAgc2V0ZW52KCJESVJIRUxQRVJf
VVNFUl9ESVJfU1VGRklYIiwgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHNh
bmRib3hQYXJhbWV0ZXJzLnVzZXJEaXJlY3RvcnlTdWZmaXgoKSkuZGF0YSgpLCAxKTsKICAgICBj
aGFyIHRlbXBvcmFyeURpcmVjdG9yeVtQQVRIX01BWF07CiAgICAgaWYgKCFjb25mc3RyKF9DU19E
QVJXSU5fVVNFUl9URU1QX0RJUiwgdGVtcG9yYXJ5RGlyZWN0b3J5LCBzaXplb2YodGVtcG9yYXJ5
RGlyZWN0b3J5KSkpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCIlczogY291bGRuJ3QgcmV0cmll
dmUgcHJpdmF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGg6ICVkXG4iLCBnZXRwcm9nbmFtZSgp
LCBlcnJubyk7CkBAIC0xNTQsMTggKzE1NCwxOCBAQCB2b2lkIENoaWxkUHJvY2Vzczo6aW5pdGlh
bGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJgog
ICAgIFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwd2QucHdfZGlyKTsKICAgICBwYXRo
LmFwcGVuZCgiL0xpYnJhcnkiKTsKIAotICAgIHNhbmRib3hQYXJhbWV0ZXJzLmFkZFBhdGhQYXJh
bWV0ZXIoIkhPTUVfTElCUkFSWV9ESVIiLCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCku
ZGF0YSgpKTsKKyAgICBzYW5kYm94UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJ
QlJBUllfRElSIiwgRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRh
dGEoKSk7CiAKICAgICBwYXRoLmFwcGVuZCgiL1ByZWZlcmVuY2VzIik7CiAKLSAgICBzYW5kYm94
UGFyYW1ldGVycy5hZGRQYXRoUGFyYW1ldGVyKCJIT01FX0xJQlJBUllfUFJFRkVSRU5DRVNfRElS
IiwgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEoKSk7CisgICAgc2FuZGJveFBh
cmFtZXRlcnMuYWRkUGF0aFBhcmFtZXRlcigiSE9NRV9MSUJSQVJZX1BSRUZFUkVOQ0VTX0RJUiIs
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogCiAg
ICAgc3dpdGNoIChzYW5kYm94UGFyYW1ldGVycy5tb2RlKCkpIHsKICAgICBjYXNlIFNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnM6OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGg6CiAg
ICAgY2FzZSBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzOjpVc2VPdmVycmlkZVNhbmRi
b3hQcm9maWxlUGF0aDogewogICAgICAgICBTdHJpbmcgc2FuZGJveFByb2ZpbGVQYXRoID0gc2Fu
ZGJveFBhcmFtZXRlcnMubW9kZSgpID09IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnM6
OlVzZURlZmF1bHRTYW5kYm94UHJvZmlsZVBhdGggPyBkZWZhdWx0UHJvZmlsZVBhdGggOiBzYW5k
Ym94UGFyYW1ldGVycy5vdmVycmlkZVNhbmRib3hQcm9maWxlUGF0aCgpOwogICAgICAgICBpZiAo
IXNhbmRib3hQcm9maWxlUGF0aC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIENTdHJpbmcgcHJv
ZmlsZVBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsK
KyAgICAgICAgICAgIENTdHJpbmcgcHJvZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oc2FuZGJveFByb2ZpbGVQYXRoKTsKICAgICAgICAgICAgIGNoYXIqIGVy
cm9yQnVmOwogICAgICAgICAgICAgaWYgKHNhbmRib3hfaW5pdF93aXRoX3BhcmFtZXRlcnMocHJv
ZmlsZVBhdGguZGF0YSgpLCBTQU5EQk9YX05BTUVEX0VYVEVSTkFMLCBzYW5kYm94UGFyYW1ldGVy
cy5uYW1lZFBhcmFtZXRlckFycmF5KCksICZlcnJvckJ1ZikpIHsKICAgICAgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIiVzOiBDb3VsZG4ndCBpbml0aWFsaXplIHNhbmRib3ggcHJvZmlsZSBbJXNd
LCBlcnJvciAnJXMnXG4iLCBnZXRwcm9nbmFtZSgpLCBwcm9maWxlUGF0aC5kYXRhKCksIGVycm9y
QnVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9TYW5kYm94RXh0ZW5z
aW9uTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMu
bW0KaW5kZXggMWE4YjlmZGNmYjBkMzlkYjc4NDE3ZGNkZDg2ZmQwZDBlNjI4NzNjZS4uZDkyY2Jm
OTdjOWU4YjQzOTI4YTIxOGU3MGI4YTYzODk3YzdjMWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL1NhbmRib3hFeHRlbnNpb25NYWMubW0KQEAgLTI3Nyw3ICsyNzcsNyBAQCBT
dHJpbmcgcmVzb2x2ZUFuZENyZWF0ZVJlYWRXcml0ZURpcmVjdG9yeUZvclNhbmRib3hFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBwYXRoKQogU3RyaW5nIHJlc29sdmVQYXRoRm9yU2FuZGJveEV4dGVu
c2lvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYm90
aCByZXNvbHZlU3ltbGlua3NJblBhdGgoKSBhbmQgLXN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGg/
Ci0gICAgQ1N0cmluZyBmaWxlU3lzdGVtUGF0aCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihb
KE5TU3RyaW5nICopcGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CisgICAgQ1N0cmlu
ZyBmaWxlU3lzdGVtUGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihb
KE5TU3RyaW5nICopcGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiAgICAgaWYgKGZp
bGVTeXN0ZW1QYXRoLmlzTnVsbCgpKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSBhIHZhbGlkIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uIGZvciB0aGUgc3RyaW5nICcl
cycgb2YgbGVuZ3RoICVsdSIsIGZpbGVTeXN0ZW1QYXRoLmRhdGEoKSwgZmlsZVN5c3RlbVBhdGgu
bGVuZ3RoKCkpOwogICAgICAgICByZXR1cm4geyB9OwpAQCAtMzM1LDcgKzMzNSw3IEBAIFN0cmlu
ZyBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKGNvbnN0IFN0
cmluZyYgcHJlZml4LCBUeXBlCiAgICAgcGF0aC5hcHBlbmQocHJlZml4LnV0ZjgoKS5kYXRhKCks
IHByZWZpeC5sZW5ndGgoKSk7CiAgICAgcGF0aC5hcHBlbmQoJ1wwJyk7CiAgICAgCi0gICAgaGFu
ZGxlLm1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb25JbXBsOjpjcmVhdGUoZmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGguZGF0YSgpKS5kYXRhKCksIHR5cGUpOworICAgIGhh
bmRsZS5tX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uSW1wbDo6Y3JlYXRlKEZp
bGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoLmRhdGEoKSkuZGF0YSgpLCB0
eXBlKTsKIAogICAgIGlmICghaGFuZGxlLm1fc2FuZGJveEV4dGVuc2lvbikgewogICAgICAgICBX
VEZMb2dBbHdheXMoIkNvdWxkIG5vdCBjcmVhdGUgYSBzYW5kYm94IGV4dGVuc2lvbiBmb3IgdGVt
cG9yYXJ5IGZpbGUgJyVzJyIsIHBhdGguZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL3dwZS9Qcm9jZXNzRXhlY3V0YWJsZVBhdGhXUEUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvd3BlL1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHAKaW5kZXggMjJkNDVjYmJi
ZWZhNGEyNDE0Mzk2Y2U1ZDUxNmY2MzZlMWE5YzJlMS4uNWVkNTZkMzcwODQ3NTQ5OTViZGExZDMz
NjlmNjhiZDljZjM2MzA4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvd3BlL1By
b2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvd3Bl
L1Byb2Nlc3NFeGVjdXRhYmxlUGF0aFdQRS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIFN0
cmluZyBnZXRFeGVjdXRhYmxlUGF0aCgpCiB7CiAgICAgQ1N0cmluZyBleGVjdXRhYmxlUGF0aCA9
IGdldEN1cnJlbnRFeGVjdXRhYmxlUGF0aCgpOwogICAgIGlmICghZXhlY3V0YWJsZVBhdGguaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBkaXJlY3RvcnlOYW1lKHN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CisgICAgICAgIHJldHVybiBG
aWxlU3lzdGVtOjpkaXJlY3RvcnlOYW1lKEZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oZXhlY3V0YWJsZVBhdGguZGF0YSgpKSk7CiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCkBAIC00NywxOSArNDcsMTkgQEAgc3RhdGljIFN0cmluZyBmaW5kV2ViS2l0UHJv
Y2Vzcyhjb25zdCBjaGFyKiBwcm9jZXNzTmFtZSkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciog
ZXhlY0RpcmVjdG9yeSA9IGdfZ2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIik7CiAgICAgaWYgKGV4
ZWNEaXJlY3RvcnkpIHsKLSAgICAgICAgU3RyaW5nIHByb2Nlc3NQYXRoID0gcGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZXhlY0RpcmVj
dG9yeSksIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgp
KQorICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoRmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihleGVjRGlyZWN0b3J5KSwgcHJvY2Vzc05hbWUpOworICAgICAgICBpZiAoRmlsZVN5c3RlbTo6
ZmlsZUV4aXN0cyhwcm9jZXNzUGF0aCkpCiAgICAgICAgICAgICByZXR1cm4gcHJvY2Vzc1BhdGg7
CiAgICAgfQogCiAgICAgc3RhdGljIFN0cmluZyBleGVjdXRhYmxlUGF0aCA9IGdldEV4ZWN1dGFi
bGVQYXRoKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlUGF0aC5pc051bGwoKSkgewotICAgICAgICBT
dHJpbmcgcHJvY2Vzc1BhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZXhlY3V0YWJsZVBh
dGgsIHByb2Nlc3NOYW1lKTsKLSAgICAgICAgaWYgKGZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQor
ICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoZXhlY3V0YWJsZVBhdGgsIHByb2Nlc3NOYW1lKTsKKyAgICAgICAgaWYgKEZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMocHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIHByb2Nl
c3NQYXRoOwogICAgIH0KIAotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihMSUJFWEVDRElSKSwgcHJvY2Vzc05hbWUp
OworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5
c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihMSUJFWEVDRElSKSwgcHJv
Y2Vzc05hbWUpOwogfQogCiBTdHJpbmcgZXhlY3V0YWJsZVBhdGhPZldlYlByb2Nlc3MoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCBl
Y2Q1MTcwNzgzMDgwOWJlMzUyMjM3NWIxMTI0YTlhODRlMzQzNDNmLi43YjQ2NTY0MzU3ZTdkZDNi
YzBhMDY5NDYyMmI1YjgxZDNkZDczYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQ
cm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgU3RvcmFn
ZVByb2Nlc3M6OmVuc3VyZVBhdGhFeGlzdHMoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFtYWtlQWxsRGlyZWN0b3JpZXMo
cGF0aCkpCisgICAgaWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocGF0aCkpCiAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIG1ha2UgYWxsIGRpcmVjdG9yaWVzIGZvciBwYXRo
ICclcyciLCBwYXRoLnV0ZjgoKS5kYXRhKCkpOwogfQogCkBAIC0yODgsNyArMjg4LDcgQEAgdm9p
ZCBTdG9yYWdlUHJvY2Vzczo6YWNjZXNzVG9UZW1wb3JhcnlGaWxlQ29tcGxldGUoY29uc3QgU3Ry
aW5nJiBwYXRoKQogICAgIC8vIFdlJ3ZlIGVpdGhlciBoYXJkIGxpbmtlZCB0aGUgdGVtcG9yYXJ5
IGJsb2IgZmlsZSB0byB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5LCBjb3BpZWQgaXQgdGhlcmUsCiAg
ICAgLy8gb3IgdGhlIHRyYW5zYWN0aW9uIGlzIGJlaW5nIGFib3J0ZWQuCiAgICAgLy8gSW4gYW55
IG9mIHRob3NlIGNhc2VzLCB3ZSBjYW4gZGVsZXRlIHRoZSB0ZW1wb3JhcnkgYmxvYiBmaWxlIG5v
dy4KLSAgICBkZWxldGVGaWxlKHBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUocGF0
aCk7CiAKICAgICBpZiAoYXV0byBleHRlbnNpb24gPSBtX2Jsb2JUZW1wb3JhcnlGaWxlU2FuZGJv
eEV4dGVuc2lvbnMudGFrZShwYXRoKSkKICAgICAgICAgZXh0ZW5zaW9uLT5yZXZva2UoKTsKQEAg
LTMwMCw4ICszMDAsOCBAQCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBTdG9y
YWdlUHJvY2Vzczo6aW5kZXhlZERhdGFiYXNlT3JpZ2lucyhjb25zdAogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gc2VjdXJpdHlP
cmlnaW5zOwotICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IGxpc3REaXJlY3RvcnkocGF0aCwg
IioiKSkgewotICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVudGlmaWVyID0gcGF0aEdldEZpbGVO
YW1lKG9yaWdpblBhdGgpOworICAgIGZvciAoYXV0byYgb3JpZ2luUGF0aCA6IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkocGF0aCwgIioiKSkgeworICAgICAgICBTdHJpbmcgZGF0YWJhc2VJZGVu
dGlmaWVyID0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKG9yaWdpblBhdGgpOwogCiAgICAg
ICAgIGlmIChhdXRvIHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcikpCiAgICAgICAgICAgICBzZWN1cml0
eU9yaWdpbnMuYXBwZW5kKFdURk1vdmUoKnNlY3VyaXR5T3JpZ2luKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcApp
bmRleCA3ZjRmODA0MmE3NzQ4NTc1ZDAyNGJhZDNmNDViZmUwOTczN2QyYzIxLi4xMTZhZDJkMzcx
MjMxNjhkNWZjNGVkNzcyNWU5MDM0Njc3ZWUxNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKQEAgLTg1LDcg
Kzg1LDcgQEAgQ29udGVudFJ1bGVMaXN0U3RvcmU6OkNvbnRlbnRSdWxlTGlzdFN0b3JlKGNvbnN0
IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgsIGJvb2wgbGUKICAgICAsIG1fcmVtb3ZlUXVldWUoV29y
a1F1ZXVlOjpjcmVhdGUoIkNvbnRlbnRSdWxlTGlzdFN0b3JlIFJlbW92ZSBRdWV1ZSIpKQogICAg
ICwgbV9sZWdhY3lGaWxlbmFtZShsZWdhY3lGaWxlbmFtZSkKIHsKLSAgICBXZWJDb3JlOjptYWtl
QWxsRGlyZWN0b3JpZXMoc3RvcmVQYXRoKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoc3RvcmVQYXRoKTsKIH0KIAogQ29udGVudFJ1bGVMaXN0U3RvcmU6On5D
b250ZW50UnVsZUxpc3RTdG9yZSgpCkBAIC0xMDgsNyArMTA4LDcgQEAgc3RhdGljIGNvbnN0IFN0
cmluZyBjb25zdHJ1Y3RlZFBhdGhGaWx0ZXIoYm9vbCBsZWdhY3lGaWxlbmFtZSkKIAogc3RhdGlj
IFN0cmluZyBjb25zdHJ1Y3RlZFBhdGgoY29uc3QgU3RyaW5nJiBiYXNlLCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGJvb2wgbGVnYWN5RmlsZW5hbWUpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChiYXNlLCBtYWtlU3RyaW5nKGNvbnN0cnVjdGVkUGF0
aFByZWZpeChsZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6OmVuY29kZUZvckZpbGVOYW1lKGlkZW50
aWZpZXIpKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChiYXNlLCBtYWtlU3RyaW5nKGNvbnN0cnVjdGVkUGF0aFByZWZpeChsZWdhY3lG
aWxlbmFtZSksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGlkZW50aWZp
ZXIpKSk7CiB9CiAKIC8vIFRoZSBzaXplIGFuZCBvZmZzZXQgb2YgdGhlIGRlbnNlbHkgcGFja2Vk
IGJ5dGVzIGluIHRoZSBmaWxlLCBub3Qgc2l6ZW9mIGFuZCBvZmZzZXRvZiwgd2hpY2ggd291bGQK
QEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVDb250ZW50UnVsZUxpc3RNZXRh
RGF0YShDb250ZW50UnVsZUxpc3RNZXRhRGF0YSYgbWV0YURhdGEsIGNvbgogCiBzdGF0aWMgYm9v
bCBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgQ29udGVudFJ1
bGVMaXN0TWV0YURhdGEmIG1ldGFEYXRhLCBEYXRhJiBmaWxlRGF0YSkKIHsKLSAgICBmaWxlRGF0
YSA9IG1hcEZpbGUoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpLmRhdGEo
KSk7CisgICAgZmlsZURhdGEgPSBtYXBGaWxlKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihwYXRoKS5kYXRhKCkpOwogICAgIGlmIChmaWxlRGF0YS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xOTQsMTEgKzE5NCwxMSBAQCBzdGF0aWMg
Ym9vbCBvcGVuQW5kTWFwQ29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgcGF0aCwgQ29udGVu
dFJ1bGVMaXN0TWV0YURhdAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCB3cml0
ZURhdGFUb0ZpbGUoY29uc3QgRGF0YSYgZmlsZURhdGEsIFdlYkNvcmU6OlBsYXRmb3JtRmlsZUhh
bmRsZSBmZCkKK3N0YXRpYyBib29sIHdyaXRlRGF0YVRvRmlsZShjb25zdCBEYXRhJiBmaWxlRGF0
YSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZkKQogewogICAgIGJv
b2wgc3VjY2VzcyA9IHRydWU7CiAgICAgZmlsZURhdGEuYXBwbHkoW2ZkLCAmc3VjY2Vzc10oY29u
c3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgaWYgKFdlYkNvcmU6Ondy
aXRlVG9GaWxlKGZkLCAoY29uc3QgY2hhciopZGF0YSwgc2l6ZSkgPT0gLTEpIHsKKyAgICAgICAg
aWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZkLCAoY29uc3QgY2hhciopZGF0
YSwgc2l6ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMjE0LDcgKzIxNCw3IEBAIHN0YXRpYyBz
dGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5n
JiBmaW5hbEZpbGVQYXRoCiAKICAgICBjbGFzcyBDb21waWxhdGlvbkNsaWVudCBmaW5hbCA6IHB1
YmxpYyBDb250ZW50RXh0ZW5zaW9uQ29tcGlsYXRpb25DbGllbnQgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQ29tcGlsYXRpb25DbGllbnQoV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGUsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSkKKyAgICAgICAgQ29tcGls
YXRpb25DbGllbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGVI
YW5kbGUsIENvbnRlbnRSdWxlTGlzdE1ldGFEYXRhJiBtZXRhRGF0YSkKICAgICAgICAgICAgIDog
bV9maWxlSGFuZGxlKGZpbGVIYW5kbGUpCiAgICAgICAgICAgICAsIG1fbWV0YURhdGEobWV0YURh
dGEpCiAgICAgICAgIHsKQEAgLTI4Nyw4ICsyODcsOCBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2Rl
IGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0
aAogICAgICAgICAgICAgbV9tZXRhRGF0YS5jb25kaXRpb25zQXBwbHlPbmx5VG9Eb21haW4gPSBt
X2NvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbjsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
RGF0YSBoZWFkZXIgPSBlbmNvZGVDb250ZW50UnVsZUxpc3RNZXRhRGF0YShtX21ldGFEYXRhKTsK
LSAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgV2ViQ29yZTo6c2Vla0ZpbGUobV9maWxl
SGFuZGxlLCAwbGwsIFdlYkNvcmU6OkZpbGVTZWVrT3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykg
PT0gLTEpIHsKLSAgICAgICAgICAgICAgICBXZWJDb3JlOjpjbG9zZUZpbGUobV9maWxlSGFuZGxl
KTsKKyAgICAgICAgICAgIGlmICghbV9maWxlRXJyb3IgJiYgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
c2Vla0ZpbGUobV9maWxlSGFuZGxlLCAwbGwsIFdlYkNvcmU6OkZpbGVTeXN0ZW06OkZpbGVTZWVr
T3JpZ2luOjpTZWVrRnJvbUJlZ2lubmluZykgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUobV9maWxlSGFuZGxlKTsKICAgICAgICAgICAgICAg
ICBtX2ZpbGVFcnJvciA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3cml0ZVRv
RmlsZShoZWFkZXIpOwpAQCAtMzA0LDEyICszMDQsMTIgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29k
ZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcmIGZpbmFsRmlsZVBh
dGgKICAgICAgICAgdm9pZCB3cml0ZVRvRmlsZShjb25zdCBEYXRhJiBkYXRhKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fZmlsZUVycm9yICYmICF3cml0ZURhdGFUb0ZpbGUoZGF0YSwg
bV9maWxlSGFuZGxlKSkgewotICAgICAgICAgICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZShtX2Zp
bGVIYW5kbGUpOworICAgICAgICAgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmls
ZShtX2ZpbGVIYW5kbGUpOwogICAgICAgICAgICAgICAgIG1fZmlsZUVycm9yID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgV2ViQ29yZTo6UGxhdGZv
cm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKICAgICAgICAgQ29udGVudFJ1bGVMaXN0
TWV0YURhdGEmIG1fbWV0YURhdGE7CiAgICAgICAgIHNpemVfdCBtX2ZpbHRlcnNXaXRob3V0Q29u
ZGl0aW9uc0J5dGVjb2RlV3JpdHRlbiB7IDAgfTsKICAgICAgICAgc2l6ZV90IG1fZmlsdGVyc1dp
dGhDb25kaXRpb25CeXRlY29kZVdyaXR0ZW4geyAwIH07CkBAIC0zMjAsMjcgKzMyMCwyNyBAQCBz
dGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYmIGpzb24sIGNvbnN0
IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAgICBib29sIG1fZmlsZUVycm9yIHsgZmFsc2Ug
fTsKICAgICB9OwogCi0gICAgYXV0byB0ZW1wb3JhcnlGaWxlSGFuZGxlID0gV2ViQ29yZTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZTsKLSAgICBTdHJpbmcgdGVtcG9yYXJ5RmlsZVBhdGggPSBX
ZWJDb3JlOjpvcGVuVGVtcG9yYXJ5RmlsZSgiQ29udGVudFJ1bGVMaXN0IiwgdGVtcG9yYXJ5Rmls
ZUhhbmRsZSk7Ci0gICAgaWYgKHRlbXBvcmFyeUZpbGVIYW5kbGUgPT0gV2ViQ29yZTo6aW52YWxp
ZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIHRlbXBvcmFyeUZpbGVIYW5kbGUgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIFN0cmluZyB0
ZW1wb3JhcnlGaWxlUGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJDb250ZW50UnVsZUxpc3QiLCB0ZW1wb3JhcnlGaWxlSGFuZGxlKTsKKyAgICBpZiAodGVtcG9y
YXJ5RmlsZUhhbmRsZSA9PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlKQogICAgICAgICByZXR1cm4gQ29udGVudFJ1bGVMaXN0U3RvcmU6OkVycm9yOjpDb21w
aWxlRmFpbGVkOwogICAgIAogICAgIGNoYXIgaW52YWxpZEhlYWRlcltDb250ZW50UnVsZUxpc3RG
aWxlSGVhZGVyU2l6ZV07CiAgICAgbWVtc2V0KGludmFsaWRIZWFkZXIsIDB4RkYsIHNpemVvZihp
bnZhbGlkSGVhZGVyKSk7CiAgICAgLy8gVGhpcyBoZWFkZXIgd2lsbCBiZSByZXdyaXR0ZW4gaW4g
Q29tcGlsYXRpb25DbGllbnQ6OmZpbmFsaXplLgotICAgIGlmIChXZWJDb3JlOjp3cml0ZVRvRmls
ZSh0ZW1wb3JhcnlGaWxlSGFuZGxlLCBpbnZhbGlkSGVhZGVyLCBzaXplb2YoaW52YWxpZEhlYWRl
cikpID09IC0xKSB7Ci0gICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFu
ZGxlKTsKKyAgICBpZiAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUodGVtcG9yYXJ5
RmlsZUhhbmRsZSwgaW52YWxpZEhlYWRlciwgc2l6ZW9mKGludmFsaWRIZWFkZXIpKSA9PSAtMSkg
eworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhh
bmRsZSk7CiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBp
bGVGYWlsZWQ7CiAgICAgfQogCiAgICAgQ29tcGlsYXRpb25DbGllbnQgY29tcGlsYXRpb25DbGll
bnQodGVtcG9yYXJ5RmlsZUhhbmRsZSwgbWV0YURhdGEpOwogICAgIAogICAgIGlmIChhdXRvIGNv
bXBpbGVyRXJyb3IgPSBjb21waWxlUnVsZUxpc3QoY29tcGlsYXRpb25DbGllbnQsIFdURk1vdmUo
anNvbikpKSB7Ci0gICAgICAgIFdlYkNvcmU6OmNsb3NlRmlsZSh0ZW1wb3JhcnlGaWxlSGFuZGxl
KTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVI
YW5kbGUpOwogICAgICAgICByZXR1cm4gY29tcGlsZXJFcnJvcjsKICAgICB9CiAgICAgaWYgKGNv
bXBpbGF0aW9uQ2xpZW50LmhhZEVycm9yV2hpbGVXcml0aW5nVG9GaWxlKCkpIHsKLSAgICAgICAg
V2ViQ29yZTo6Y2xvc2VGaWxlKHRlbXBvcmFyeUZpbGVIYW5kbGUpOworICAgICAgICBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpjbG9zZUZpbGUodGVtcG9yYXJ5RmlsZUhhbmRsZSk7CiAgICAgICAgIHJl
dHVybiBDb250ZW50UnVsZUxpc3RTdG9yZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAgICAgfQog
ICAgIApAQCAtMzQ4LDcgKzM0OCw3IEBAIHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRU
b0ZpbGUoU3RyaW5nJiYganNvbiwgY29uc3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgaWYg
KG1hcHBlZERhdGEuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBDb250ZW50UnVsZUxpc3RTdG9y
ZTo6RXJyb3I6OkNvbXBpbGVGYWlsZWQ7CiAKLSAgICBpZiAoIVdlYkNvcmU6Om1vdmVGaWxlKHRl
bXBvcmFyeUZpbGVQYXRoLCBmaW5hbEZpbGVQYXRoKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVT
eXN0ZW06Om1vdmVGaWxlKHRlbXBvcmFyeUZpbGVQYXRoLCBmaW5hbEZpbGVQYXRoKSkKICAgICAg
ICAgcmV0dXJuIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpFcnJvcjo6Q29tcGlsZUZhaWxlZDsKIAog
ICAgIHJldHVybiB7IH07CkBAIC00MTIsMTIgKzQxMiwxMiBAQCB2b2lkIENvbnRlbnRSdWxlTGlz
dFN0b3JlOjpnZXRBdmFpbGFibGVDb250ZW50UnVsZUxpc3RJZGVudGlmaWVycyhGdW5jdGlvbjx2
b2lkKAogewogICAgIG1fcmVhZFF1ZXVlLT5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBzdG9yZVBhdGggPSBtX3N0b3JlUGF0aC5pc29sYXRlZENvcHkoKSwgbGVnYWN5
RmlsZW5hbWUgPSBtX2xlZ2FjeUZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+
IGZ1bGxQYXRocyA9IFdlYkNvcmU6Omxpc3REaXJlY3Rvcnkoc3RvcmVQYXRoLCBjb25zdHJ1Y3Rl
ZFBhdGhGaWx0ZXIobGVnYWN5RmlsZW5hbWUpKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gZnVs
bFBhdGhzID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShzdG9yZVBhdGgsIGNv
bnN0cnVjdGVkUGF0aEZpbHRlcihsZWdhY3lGaWxlbmFtZSkpOwogICAgICAgICBWZWN0b3I8U3Ry
aW5nPiBpZGVudGlmaWVyczsKICAgICAgICAgaWRlbnRpZmllcnMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShmdWxsUGF0aHMuc2l6ZSgpKTsKICAgICAgICAgY29uc3QgYXV0byBwcmVmaXhMZW5ndGgg
PSBjb25zdHJ1Y3RlZFBhdGhQcmVmaXgobGVnYWN5RmlsZW5hbWUpLmxlbmd0aCgpOwogICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBmdWxsUGF0aHMpCi0gICAgICAgICAgICBpZGVudGlm
aWVycy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6ZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vi
c3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEgKyBwcmVmaXhMZW5ndGgpKSk7CisgICAg
ICAgICAgICBpZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVjb2RlRnJvbUZpbGVuYW1lKHBhdGguc3Vic3RyaW5nKHBhdGgucmV2ZXJzZUZpbmQoJy8nKSAr
IDEgKyBwcmVmaXhMZW5ndGgpKSk7CiAKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgaWRlbnRpZmllcnMgPSBXVEZNb3ZlKGlk
ZW50aWZpZXJzKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoaWRlbnRpZmllcnMpKTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lkIENvbnRlbnRSdWxl
TGlzdFN0b3JlOjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsCiAgICAgbV9yZW1vdmVRdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaWRlbnRpZmllciA9IGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHN0b3Jl
UGF0aCA9IG1fc3RvcmVQYXRoLmlzb2xhdGVkQ29weSgpLCBsZWdhY3lGaWxlbmFtZSA9IG1fbGVn
YWN5RmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gcGF0aCA9IGNvbnN0cnVjdGVkUGF0aChzdG9y
ZVBhdGgsIGlkZW50aWZpZXIsIGxlZ2FjeUZpbGVuYW1lKTsKIAotICAgICAgICBpZiAoIVdlYkNv
cmU6OmRlbGV0ZUZpbGUocGF0aCkpIHsKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKHBhdGgpKSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoRXJyb3I6OlJlbW92ZUZhaWxlZCk7CiAgICAgICAgICAgICB9KTsKQEAg
LTQ2OSwxOSArNDY5LDE5IEBAIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OnJlbW92ZUNvbnRl
bnRSdWxlTGlzdChjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllciwKIAogdm9pZCBDb250ZW50
UnVsZUxpc3RTdG9yZTo6c3luY2hyb25vdXNSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKIHsK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KG1fc3Rv
cmVQYXRoLCAiKiIpKQotICAgICAgICBXZWJDb3JlOjpkZWxldGVGaWxlKHBhdGgpOworICAgIGZv
ciAoY29uc3QgYXV0byYgcGF0aCA6IFdlYkNvcmU6OkZpbGVTeXN0ZW06Omxpc3REaXJlY3Rvcnko
bV9zdG9yZVBhdGgsICIqIikpCisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUocGF0aCk7CiB9CiAKIHZvaWQgQ29udGVudFJ1bGVMaXN0U3RvcmU6OmludmFsaWRhdGVDb250
ZW50UnVsZUxpc3RWZXJzaW9uKGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyKQogewotICAg
IGF1dG8gZmlsZSA9IFdlYkNvcmU6Om9wZW5GaWxlKGNvbnN0cnVjdGVkUGF0aChtX3N0b3JlUGF0
aCwgaWRlbnRpZmllciwgbV9sZWdhY3lGaWxlbmFtZSksIFdlYkNvcmU6Ok9wZW5Gb3JXcml0ZSk7
Ci0gICAgaWYgKGZpbGUgPT0gV2ViQ29yZTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAg
ICBhdXRvIGZpbGUgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpvcGVuRmlsZShjb25zdHJ1Y3RlZFBh
dGgobV9zdG9yZVBhdGgsIGlkZW50aWZpZXIsIG1fbGVnYWN5RmlsZW5hbWUpLCBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpPcGVuRm9yV3JpdGUpOworICAgIGlmIChmaWxlID09IFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgICAgIHJldHVybjsKICAgICBD
b250ZW50UnVsZUxpc3RNZXRhRGF0YSBpbnZhbGlkSGVhZGVyID0gezAsIDAsIDAsIDAsIDAsIDB9
OwotICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmludmFsaWRIZWFkZXIpLCBzaXplb2YoaW52YWxp
ZEhlYWRlcikpOworICAgIGF1dG8gYnl0ZXNXcml0dGVuID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJmludmFsaWRI
ZWFkZXIpLCBzaXplb2YoaW52YWxpZEhlYWRlcikpOwogICAgIEFTU0VSVF9VTlVTRUQoYnl0ZXNX
cml0dGVuLCBieXRlc1dyaXR0ZW4gPT0gc2l6ZW9mKGludmFsaWRIZWFkZXIpKTsKLSAgICBXZWJD
b3JlOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGUpOwogfQogCiB2b2lkIENvbnRlbnRSdWxlTGlzdFN0b3JlOjpnZXRDb250ZW50UnVsZUxp
c3RTb3VyY2UoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoV1RG
OjpTdHJpbmcpPiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0FQSVdlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAppbmRl
eCA3MGNhMzZiM2VmYjJkNDQ2OWJmMGYxNGNhODkxMzY2M2M1NzBiYTYzLi40NjZjMGNmNWQ1NTEz
NTY4M2QwMTFhMmE4NDQ1MTIzMTA5YjAzMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9BUElXZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvQVBJV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBA
IC00NSwxMiArNDUsMTIgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKIC8vIFdoeSBpcyBvbmx5IHRoaXMgZGlyZWN0b3J5IG5hbWVz
cGFjZWQgdG8gYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uPwogU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIHJldHVybiBjYWNoZURp
cmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dl
dF9wcmduYW1lKCkpLCAiV2ViS2l0Q2FjaGUiKSk7CisgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKGdfZ2V0X3ByZ25hbWUoKSksICJXZWJLaXRDYWNoZSIpKTsKIH0KIAogU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRDYWNoZVN0b3JhZ2VEaXJlY3RvcnkoKQogewot
ICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3Jl
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVTdG9yYWdlIikpOworICAgIHJl
dHVybiBjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3Ry
aW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihnX2dldF9wcmduYW1lKCkpLCAiQ2FjaGVT
dG9yYWdlIikpOwogfQogCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KCkKQEAgLTgwLDEyICs4MCwxMiBAQCBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewotICAgIHJldHVybiBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0
X3VzZXJfY2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKIH0KIAogU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OndlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZ19nZXRfdXNlcl9kYXRhX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpG
aWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGdfZ2V0X3VzZXJf
ZGF0YV9kaXIoKSksIGRpcmVjdG9yeU5hbWUpOwogfQogCiBXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OkNvbmZpZ3VyYXRpb24gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25E
YXRhYmFzZS5jcHAKaW5kZXggMjIwOGVhZWYwNTAxODdkZTcyZGZmYTM0MzA4NmE5OTY0ZmFjZTUz
ZC4uYzM3NzU4MjU0YjRkNGY4ZjAxY2U5YTM4ZTZmMGRlOGI1MjU4OTk2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC0yMTQs
NyArMjE0LDcgQEAgYm9vbCBJY29uRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUpCiAgICAgbV9kYXRhYmFzZURpcmVjdG9yeSA9IGRp
cmVjdG9yeS5pc29sYXRlZENvcHkoKTsKIAogICAgIC8vIEZvcm11bGF0ZSB0aGUgZnVsbCBwYXRo
IGZvciB0aGUgZGF0YWJhc2UgZmlsZQotICAgIG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9kYXRhYmFzZURpcmVjdG9yeSwgZmlsZW5hbWUpOworICAg
IG1fY29tcGxldGVEYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9kYXRhYmFzZURpcmVjdG9yeSwgZmlsZW5hbWUpOwogCiAgICAgLy8gTG9jayBoZXJl
IGFzIHdlbGwgYXMgZmlyc3QgdGhpbmcgaW4gdGhlIHRocmVhZCBzbyB0aGUgdGhyZWFkIGRvZXNu
J3QgYWN0dWFsbHkgY29tbWVuY2UgdW50aWwgdGhlIGNyZWF0ZVRocmVhZCgpIGNhbGwKICAgICAv
LyBjb21wbGV0ZXMgYW5kIG1fc3luY1RocmVhZFJ1bm5pbmcgaXMgcHJvcGVybHkgc2V0CkBAIC04
NjksMTMgKzg2OSwxMyBAQCB2b2lkIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVh
ZCgpCiAjZW5kaWYKIAogICAgIC8vIE5lZWQgdG8gY3JlYXRlIHRoZSBkYXRhYmFzZSBwYXRoIGlm
IGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdAotICAgIG1ha2VBbGxEaXJlY3RvcmllcyhtX2RhdGFi
YXNlRGlyZWN0b3J5KTsKKyAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMobV9kYXRh
YmFzZURpcmVjdG9yeSk7CiAKICAgICAvLyBFeGlzdGVuY2Ugb2YgYSBqb3VybmFsIGZpbGUgaXMg
ZXZpZGVuY2Ugb2YgYSBwcmV2aW91cyBjcmFzaC9mb3JjZSBxdWl0IGFuZCBhdXRvbWF0aWNhbGx5
IHF1YWxpZmllcwogICAgIC8vIHVzIHRvIGRvIGFuIGludGVncml0eSBjaGVjawogICAgIFN0cmlu
ZyBqb3VybmFsRmlsZW5hbWUgPSBtX2NvbXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIjsK
ICAgICBpZiAoIWNoZWNrSW50ZWdyaXR5T25PcGVuKQotICAgICAgICBjaGVja0ludGVncml0eU9u
T3BlbiA9IGZpbGVFeGlzdHMoam91cm5hbEZpbGVuYW1lKTsKKyAgICAgICAgY2hlY2tJbnRlZ3Jp
dHlPbk9wZW4gPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGpvdXJuYWxGaWxlbmFtZSk7CiAKICAg
ICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xvY2spOwpAQCAtMTAwOCw4ICsx
MDA4LDggQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1PcGVuSW5pdGlhbGl6YXRpb24oKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fc3luY0xv
Y2spOwogICAgICAgICAgICAgICAgIC8vIFNob3VsZCd2ZSBiZWVuIGNvbnN1bWVkIGJ5IFNRTGl0
ZSwgZGVsZXRlIGp1c3QgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHNlZSBpdCBhZ2FpbiBpbiB0aGUg
ZnV0dXJlOwotICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUobV9jb21wbGV0ZURhdGFiYXNlUGF0
aCArICItam91cm5hbCIpOwotICAgICAgICAgICAgICAgIGRlbGV0ZUZpbGUobV9jb21wbGV0ZURh
dGFiYXNlUGF0aCk7CisgICAgICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Nv
bXBsZXRlRGF0YWJhc2VQYXRoICsgIi1qb3VybmFsIik7CisgICAgICAgICAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX2NvbXBsZXRlRGF0YWJhc2VQYXRoKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gUmVvcGVuIHRoZSB3cml0ZSBkYXRhYmFzZSwgY3JlYXRpbmcgaXQg
ZnJvbSBzY3JhdGNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCA2ZTI4NGY4MmRjZDI5NzE0MmU4
OTkyMmEzNjEzZmIzYTViYzFlYjkzLi4zNzI0NDNlMmQzYmMxMjFmNTRkODc2YjU0YmU0MTNkZTBj
ZWNjNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIHdl
YmtpdEZhdmljb25EYXRhYmFzZU9wZW4oV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwg
Y29uc3QgU3RyaW5nJiBwYQogICAgIHByaXYtPmljb25EYXRhYmFzZS0+c2V0RW5hYmxlZCh0cnVl
KTsKICAgICBwcml2LT5pY29uRGF0YWJhc2UtPnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoV2Vi
UHJlZmVyZW5jZXM6OmFueVBhZ2VzQXJlVXNpbmdQcml2YXRlQnJvd3NpbmcoKSk7CiAKLSAgICBp
ZiAoIXByaXYtPmljb25EYXRhYmFzZS0+b3BlbihXZWJDb3JlOjpkaXJlY3RvcnlOYW1lKHBhdGgp
LCBXZWJDb3JlOjpwYXRoR2V0RmlsZU5hbWUocGF0aCkpKSB7CisgICAgaWYgKCFwcml2LT5pY29u
RGF0YWJhc2UtPm9wZW4oV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShwYXRoKSwg
V2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKHBhdGgpKSkgewogICAgICAgICBw
cml2LT5pY29uRGF0YWJhc2UgPSBudWxscHRyOwogICAgICAgICBJY29uRGF0YWJhc2U6OmFsbG93
RGF0YWJhc2VDbGVhbnVwKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEZpbGVDaG9vc2VyUmVxdWVzdC5jcHAKaW5kZXgg
ZjYwMTJjODczYjRjZTBhYTA0ZDZkZjVmYWNmZjc0YmMxMjk5Zjk0Ny4uNzg4MDQ5NGEzNTMxZDI3
ZDNmMWZkZmE2N2Y5NGVhNDMyMDQ0OTRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaWxlQ2hvb3NlclJlcXVlc3QuY3BwCkBA
IC0zNjEsNyArMzYxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3ZWJraXRfZmlsZV9jaG9vc2Vy
X3JlcXVlc3RfZ2V0X3NlbGVjdGVkX2ZpbGVzKFdlYktpdEZpbGVDaG8KICAgICAgICAgQVBJOjpT
dHJpbmcqIHdlYkZpbGVOYW1lID0gc3RhdGljX2Nhc3Q8QVBJOjpTdHJpbmcqPihzZWxlY3RlZEZp
bGVOYW1lcy0+YXQoaSkpOwogICAgICAgICBpZiAod2ViRmlsZU5hbWUtPnN0cmluZ1ZpZXcoKS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQ1N0cmluZyBmaWxlbmFt
ZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJGaWxlTmFtZS0+c3RyaW5nKCkpOworICAg
ICAgICBDU3RyaW5nIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYkZpbGVOYW1lLT5zdHJpbmcoKSk7CiAgICAgICAgIGdfcHRyX2FycmF5X2FkZChyZXF1
ZXN0LT5wcml2LT5zZWxlY3RlZEZpbGVzLmdldCgpLCBnX3N0cmR1cChmaWxlbmFtZS5kYXRhKCkp
KTsKICAgICB9CiAgICAgZ19wdHJfYXJyYXlfYWRkKHJlcXVlc3QtPnByaXYtPnNlbGVjdGVkRmls
ZXMuZ2V0KCksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCA0MjYwZWFiNzgyNDA3YTY5NmIyZjQ0NTI0NjBi
YjllNGI5YjVhMTY0Li5mZDE3ODJmOGJlOGNkNjc5NGZmNGZkNWY3Yjc3NmJjYmExOWVjYzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcApAQCAtMzIxLDIxICszMjEsMjEgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViQ29u
dGV4dENvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1
bmRsZUZpbGVuYW1lKGdfYnVpbGRfZmlsZW5hbWUoaW5qZWN0ZWRCdW5kbGVEaXJlY3RvcnkoKSwg
SU5KRUNURURfQlVORExFX0ZJTEVOQU1FLCBudWxscHRyKSk7CiAKICAgICBBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5q
ZWN0ZWRCdW5kbGVQYXRoKFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oYnVuZGxlRmlsZW5hbWUuZ2V0KCkpKTsKKyAgICBjb25maWd1cmF0aW9uLnNldEluamVjdGVk
QnVuZGxlUGF0aChXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGJ1bmRsZUZpbGVuYW1lLmdldCgpKSk7CiAgICAgY29uZmlndXJhdGlvbi5zZXRN
YXhpbXVtUHJvY2Vzc0NvdW50KDEpOwogICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlU3Bl
Y3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCh0cnVlKTsKIAogICAgIFdlYktpdFdlYkNvbnRleHQq
IHdlYkNvbnRleHQgPSBXRUJLSVRfV0VCX0NPTlRFWFQob2JqZWN0KTsKICAgICBXZWJLaXRXZWJD
b250ZXh0UHJpdmF0ZSogcHJpdiA9IHdlYkNvbnRleHQtPnByaXY7CiAgICAgaWYgKHByaXYtPndl
YnNpdGVEYXRhTWFuYWdlciAmJiAhd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVt
ZXJhbChwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSB7Ci0gICAgICAgIGNvbmZpZ3Vy
YXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9z
dG9yYWdlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uc2V0RGlza0NhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3Rvcnko
cHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSksIG5ldHdvcmtDYWNoZVN1YmRpcmVjdG9y
eSkpOwotICAgICAgICBjb25maWd1cmF0aW9uLnNldEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnko
V2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KHBy
aXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKLSAgICAgICAgY29uZmlndXJhdGlvbi5z
ZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRi
X2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCkpKSk7Ci0gICAgICAgIGNv
bmZpZ3VyYXRpb24uc2V0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2ViQ29yZTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X3dlYnNxbF9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOwotICAg
ICAgICBjb25maWd1cmF0aW9uLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X3Jlc291cmNlX2xvYWRfc3RhdGlzdGljc19kaXJlY3RvcnkocHJpdi0+
d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0aW9uLnNldExv
Y2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxf
c3RvcmFnZV9kaXJlY3RvcnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAg
ICAgICBjb25maWd1cmF0aW9uLnNldERpc2tDYWNoZURpcmVjdG9yeShXZWJDb3JlOjpGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5n
RnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkp
LCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRB
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21G
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9v
ZmZsaW5lX2FwcGxpY2F0aW9uX2NhY2hlX2RpcmVjdG9yeShwcml2LT53ZWJzaXRlRGF0YU1hbmFn
ZXIuZ2V0KCkpKSk7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uc2V0SW5kZXhlZERCRGF0YWJhc2VE
aXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9kaXJlY3Rv
cnkocHJpdi0+d2Vic2l0ZURhdGFNYW5hZ2VyLmdldCgpKSkpOworICAgICAgICBjb25maWd1cmF0
aW9uLnNldFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF93ZWJzcWxfZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsK
KyAgICAgICAgY29uZmlndXJhdGlvbi5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9yZXNvdXJjZV9sb2FkX3N0YXRpc3RpY3Nf
ZGlyZWN0b3J5KHByaXYtPndlYnNpdGVEYXRhTWFuYWdlci5nZXQoKSkpKTsKICAgICB9IGVsc2Ug
aWYgKCFwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpCi0gICAgICAgIGNvbmZp
Z3VyYXRpb24uc2V0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmRhdGEoKSkp
OworICAgICAgICBjb25maWd1cmF0aW9uLnNldExvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5kYXRhKCkpKTsKIAogICAgIHByaXYtPnByb2Nlc3NQb29sID0g
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZShjb25maWd1cmF0aW9uKTsKIApAQCAtOTEwLDcgKzkxMCw3
IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9mYXZpY29uX2RhdGFiYXNlX2RpcmVjdG9y
eShXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0CiAgICAgV2ViS2l0V2ViQ29udGV4dFByaXZhdGUq
IHByaXYgPSBjb250ZXh0LT5wcml2OwogICAgIGVuc3VyZUZhdmljb25EYXRhYmFzZShjb250ZXh0
KTsKIAotICAgIFN0cmluZyBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKKyAgICBTdHJpbmcgZGlyZWN0b3J5UGF0aCA9IFdl
YkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0
aCk7CiAgICAgLy8gVXNlIGRlZmF1bHQgaWYgbnVsbHB0ciBpcyBwYXNzZWQgYXMgcGFyYW1ldGVy
LgogICAgIGlmIChkaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKEdUSykK
QEAgLTkxOSw3ICs5MTksNyBAQCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9k
YXRhYmFzZV9kaXJlY3RvcnkoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICBjb25z
dCBjaGFyKiBwb3J0RGlyZWN0b3J5ID0gIndwZSI7CiAjZW5kaWYKICAgICAgICAgR1VuaXF1ZVB0
cjxnY2hhcj4gZGF0YWJhc2VEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2Nh
Y2hlX2RpcigpLCBwb3J0RGlyZWN0b3J5LCAiaWNvbmRhdGFiYXNlIiwgbnVsbHB0cikpOwotICAg
ICAgICBkaXJlY3RvcnlQYXRoID0gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgIGRpcmVjdG9yeVBhdGgg
PSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKICAgICB9CiAgICAgcHJpdi0+ZmF2aWNvbkRhdGFi
YXNlRGlyZWN0b3J5ID0gZGlyZWN0b3J5UGF0aC51dGY4KCk7CiAKQEAgLTkyOCw3ICs5MjgsNyBA
QCB2b2lkIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfZmF2aWNvbl9kYXRhYmFzZV9kaXJlY3Rvcnko
V2ViS2l0V2ViQ29udGV4dCogY29udGV4dAogICAgICAgICAiV2VicGFnZUljb25zLmRiIiwgbnVs
bHB0cikpOwogCiAgICAgLy8gU2V0dGluZyB0aGUgcGF0aCB3aWxsIGNhdXNlIHRoZSBpY29uIGRh
dGFiYXNlIHRvIGJlIG9wZW5lZC4KLSAgICB3ZWJraXRGYXZpY29uRGF0YWJhc2VPcGVuKHByaXYt
PmZhdmljb25EYXRhYmFzZS5nZXQoKSwgV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihmYXZpY29uRGF0YWJhc2VQYXRoLmdldCgpKSk7CisgICAgd2Via2l0RmF2aWNv
bkRhdGFiYXNlT3Blbihwcml2LT5mYXZpY29uRGF0YWJhc2UuZ2V0KCksIFdlYkNvcmU6OkZpbGVT
eXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmF2aWNvbkRhdGFiYXNl
UGF0aC5nZXQoKSkpOwogCiAgICAgaWYgKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwo
Y29udGV4dCkpCiAgICAgICAgIHdlYmtpdEZhdmljb25EYXRhYmFzZVNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQocHJpdi0+ZmF2aWNvbkRhdGFiYXNlLmdldCgpLCB0cnVlKTsKQEAgLTEwMTIsNyAr
MTAxMiw3IEBAIHZvaWQgd2Via2l0X3dlYl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNf
ZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQqIGNvbnRlCiAgICAgZ19yZXR1cm5faWZfZmFpbChk
aXJlY3RvcnkpOwogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgY29udGV4
dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5KFdlYkNv
cmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSk7CisgICAg
Y29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPnNldEFkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3J5
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZGlyZWN0b3J5KSk7CiAjZW5kaWYKIH0KIApAQCAtMTM1OCw3ICsxMzU4LDcgQEAgdm9pZCB3ZWJr
aXRfd2ViX2NvbnRleHRfc2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KFdlYktpdFdlYkNvbnRleHQq
IGNvbnRleHQsIGNvbnMKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQ09OVEVY
VChjb250ZXh0KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChkaXJlY3RvcnkpOwogCi0gICAgY29u
dGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24oKS5zZXREaXNrQ2FjaGVEaXJl
Y3RvcnkoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFdlYkNvcmU6OnN0cmluZ0Zy
b21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGly
ZWN0b3J5KSk7CisgICAgY29udGV4dC0+cHJpdi0+cHJvY2Vzc1Bvb2wtPmNvbmZpZ3VyYXRpb24o
KS5zZXREaXNrQ2FjaGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oZGlyZWN0b3J5KSwgbmV0d29ya0NhY2hlU3ViZGlyZWN0b3J5KSk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYnNpdGVEYXRhTWFuYWdlci5jcHAKaW5kZXggY2U3Mjk0ZGZmNTk2M2M0MjU5YTZi
YmU2MDg4Y2QzODJiMDdhYmM1MC4uZmIxOTk3YTY1NzZlMzJkMDQ2Y2RjNDkyNmIzZGMwYWVhNmI2
OTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIuY3BwCkBAIC0zOTAsMTUgKzM5MCwxNSBAQCBB
UEk6OldlYnNpdGVEYXRhU3RvcmUmIHdlYmtpdFdlYnNpdGVEYXRhTWFuYWdlckdldERhdGFTdG9y
ZShXZWJLaXRXZWJzaXRlRGF0YU1hbgogICAgIGlmICghcHJpdi0+d2Vic2l0ZURhdGFTdG9yZSkg
ewogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247
CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gIXByaXYtPmxv
Y2FsU3RvcmFnZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+bG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
KyAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihwcml2LT5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwogICAgICAgICBj
b25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9ICFwcml2LT5kaXNrQ2FjaGVEaXJl
Y3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2Vi
Q29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2FjaGVE
aXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpOworICAgICAgICAgICAg
QVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkgOiBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5kaXNrQ2Fj
aGVEaXJlY3RvcnkuZ2V0KCkpLCBuZXR3b3JrQ2FjaGVTdWJkaXJlY3RvcnkpOwogICAgICAgICBj
b25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSAhcHJpdi0+YXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSA/Ci0gICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpzdHJpbmdGcm9tRmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuZ2V0
KCkpOworICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpIDogV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwcml2LT5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmdldCgp
KTsKICAgICAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9ICFwcml2
LT53ZWJTUUxEaXJlY3RvcnkgPwotICAgICAgICAgICAgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+d2ViU1FMRGlyZWN0b3J5LmdldCgpKTsKKyAgICAg
ICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHByaXYtPndlYlNRTERpcmVjdG9yeS5nZXQoKSk7CiAgICAgICAgIGNvbmZpZ3VyYXRp
b24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9ICFwcml2LT5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5ID8KLSAgICAgICAgICAgIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSA6IFdlYkNvcmU6OnN0cmlu
Z0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocHJpdi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeS5nZXQoKSk7CisgICAgICAgICAgICBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgOiBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHByaXYtPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkuZ2V0KCkpOwogICAgICAgICBjb25maWd1cmF0aW9uLm1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgICAgIHByaXYtPndlYnNpdGVEYXRhU3RvcmUg
PSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmNyZWF0ZUxlZ2FjeShXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24pKTsKICAgICB9CkBAIC01NjEsNyArNTYxLDcgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJz
aXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoV2ViS2l0V2Vic2l0ZUQK
IAogICAgIGlmICghcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5KSB7CiAgICAgICAgIC8vIFRoZSBk
ZWZhdWx0IGRpcmVjdG9yeSBhbHJlYWR5IGhhcyB0aGUgc3ViZGlyZWN0b3J5LgotICAgICAgICBw
cml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVzZXQoZ19zdHJkdXAoV2ViQ29yZTo6ZGlyZWN0b3J5
TmFtZShBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3Rvcnko
KSkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBwcml2LT5kaXNrQ2FjaGVEaXJlY3RvcnkucmVz
ZXQoZ19zdHJkdXAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkudXRmOCgpLmRhdGEo
KSkpOwogICAgIH0KICAgICByZXR1cm4gcHJpdi0+ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCBiZjE5YjBhYWMzZWI2MWFkNzkzNWM2MTUzZWU2
YjI0ODlkODhmZTAxLi5hNWU4NThjMzAzNzAxMTVkMjllMTFjNDhmZDUwYmEyN2I4ZWFlYTc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNjc5LDcgKzY3OSw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246OndpbGxDbG9zZVBhZ2UoY29uc3QgV2ViUGFnZVByb3h5JiBwYWdlKQogCiBz
dGF0aWMgYm9vbCBmaWxlQ2FuQmVBY2NlcHRlZEZvclVwbG9hZChjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGFsbG93ZWRNSU1FVHlwZXMsIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgYWxsb3dlZEZpbGVFeHRlbnNpb25zKQogewotICAgIGlmICghV2ViQ29yZTo6
ZmlsZUV4aXN0cyhmaWxlbmFtZSkpCisgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpmaWxl
RXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGFsbG93
ZWRNSU1FVHlwZXMuaXNFbXB0eSgpICYmIGFsbG93ZWRGaWxlRXh0ZW5zaW9ucy5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQppbmRleCBmZWVmMGNlZTQwMjljNWIzMjNhM2I5OTAxZDRhMmM5ZWUxM2U1YTQwLi40
YTFlM2IyNDhiMDU2YmQ4NWI3YTZkZDI0YTBiMjUwMGJlNWRiOWJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTM3
Niw3ICszNzYsNyBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVs
dEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKICAgICAvLyBDdXJyZW50bHksIHRoZSB0b3Ag
bGV2ZWwgb2YgdGhhdCBkaXJlY3RvcnkgY29udGFpbnMgZW50aXRpZXMgcmVsYXRlZCB0byBXZWJT
UUwgZGF0YWJhc2VzLgogICAgIC8vIFdlIHNob3VsZCBmaXggdGhpcywgYW5kIG1vdmUgV2ViU1FM
IGludG8gYSBzdWJkaXJlY3RvcnkgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ4MDcpCiAgICAgLy8gSW4gdGhlIG1lYW50aW1lLCBhbiBlbnRpdHkgbmFtZSBwcmVm
aXhlZCB3aXRoIHRocmVlIHVuZGVyc2NvcmVzIHdpbGwgbm90IGNvbmZsaWN0IHdpdGggYW55IFdl
YlNRTCBlbnRpdGllcy4KLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIi
KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCksICJfX19JbmRleGVkREIi
KTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQppbmRleCBhMmU0ODJmZWY4MjYzNDQzMTE2YzI1Y2E5ZTg0MDdjYzA1NzE5NGE5
Li5kNzZlMTA5ZTc0N2U1YTFjNjEzODUwMTViN2Y4MTg1ZTE5NmMyMzAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMzkyNyw3ICszOTI3LDcg
QEAgTlNBcnJheSAqV2ViVmlld0ltcGw6Om5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVz
dGluYXRpb24oTlNVUkwgKmRyb3BEZXN0aW4KICAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8g
Y3JlYXRlIGltYWdlIGZpbGUgdmlhIC1bTlNGaWxlV3JhcHBlciB3cml0ZVRvVVJMOm9wdGlvbnM6
b3JpZ2luYWxDb250ZW50c1VSTDplcnJvcjpdIik7CiAKICAgICBpZiAoIW1fcHJvbWlzZWRVUkwu
aXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpzZXRNZXRhZGF0YVVSTChTdHJpbmcocGF0aCks
IG1fcHJvbWlzZWRVUkwpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0
YVVSTChTdHJpbmcocGF0aCksIG1fcHJvbWlzZWRVUkwpOwogICAgIAogICAgIHJldHVybiBbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6W3BhdGggbGFzdFBhdGhDb21wb25lbnRdXTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5j
aGVyR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL1Byb2Nl
c3NMYXVuY2hlckdMaWIuY3BwCmluZGV4IDVhYzZmY2ZmNWM2M2Y2ZDg2NGY3YTdmNmMxNDlkZjY2
MWQwNmFhMWYuLjkzYmI4MWY0NjQ5ZTVjOWZjNGM5OTVkNWQzMDY5OWI1YjIyMGRjMjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvUHJvY2Vzc0xhdW5j
aGVyR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9Q
cm9jZXNzTGF1bmNoZXJHTGliLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFByb2Nlc3NMYXVu
Y2hlcjo6bGF1bmNoUHJvY2VzcygpCiAgICAgICAgICAgICBleGVjdXRhYmxlUGF0aC5hcHBlbmQo
JzInKTsKICNlbmRpZgogICAgICAgICBwbHVnaW5QYXRoID0gbV9sYXVuY2hPcHRpb25zLmV4dHJh
SW5pdGlhbGl6YXRpb25EYXRhLmdldCgicGx1Z2luLXBhdGgiKTsKLSAgICAgICAgcmVhbFBsdWdp
blBhdGggPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGx1Z2luUGF0aCk7CisgICAgICAgIHJl
YWxQbHVnaW5QYXRoID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdp
blBhdGgpOwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVy
OjpQcm9jZXNzVHlwZTo6TmV0d29yazoKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcmVh
bEV4ZWN1dGFibGVQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGV4ZWN1dGFibGVQYXRo
KTsKKyAgICByZWFsRXhlY3V0YWJsZVBhdGggPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZXhlY3V0YWJsZVBhdGgpOwogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHdlYmtpdFNv
Y2tldChnX3N0cmR1cF9wcmludGYoIiVkIiwgc29ja2V0UGFpci5jbGllbnQpKTsKICAgICB1bnNp
Z25lZCBuYXJncyA9IDQ7IC8vIHNpemUgb2YgdGhlIGFyZ3YgYXJyYXkgZm9yIGdfc3Bhd25fYXN5
bmMoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5JbmZvQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsv
UGx1Z2luSW5mb0NhY2hlLmNwcAppbmRleCAxYmQ2NTA3OWU1ZDUwZTU3NWVlNzJlMmI4ZTFlZDk4
ZGJlZmU5MDhlLi5iOWIwYzJlYWUzNjBiNGUwMWZmNDQ0NDhjYjI2YjQzOTQ4ZTljNmNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbklu
Zm9DYWNoZS5jcHAKQEAgLTY2LDEwICs2NiwxMCBAQCBQbHVnaW5JbmZvQ2FjaGU6OlBsdWdpbklu
Zm9DYWNoZSgpCiAgICAgbV9zYXZlVG9GaWxlSWRsZS5zZXRQcmlvcml0eShHX1BSSU9SSVRZX0RF
RkFVTFRfSURMRSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNhY2hlRGlyZWN0b3J5KGdfYnVp
bGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsIG51bGxwdHIp
KTsKLSAgICBpZiAoV2ViQ29yZTo6bWFrZUFsbERpcmVjdG9yaWVzKGNhY2hlRGlyZWN0b3J5Lmdl
dCgpKSkgeworICAgIGlmIChXZWJDb3JlOjpGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMo
Y2FjaGVEaXJlY3RvcnkuZ2V0KCkpKSB7CiAgICAgICAgIC8vIERlbGV0ZSBvbGQgY2FjaGUgZmls
ZS4KICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBvbGRDYWNoZVBhdGgoZ19idWlsZF9maWxlbmFt
ZShjYWNoZURpcmVjdG9yeS5nZXQoKSwgInBsdWdpbnMiLCBudWxscHRyKSk7Ci0gICAgICAgIFdl
YkNvcmU6OmRlbGV0ZUZpbGUoV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihvbGRDYWNoZVBhdGguZ2V0KCkpKTsKKyAgICAgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKG9sZENhY2hlUGF0aC5nZXQoKSkpOwogCiAgICAgICAgIG1fY2FjaGVQYXRoLnJl
c2V0KGdfYnVpbGRfZmlsZW5hbWUoY2FjaGVEaXJlY3RvcnkuZ2V0KCksIGNhY2hlRmlsZW5hbWVG
b3JDdXJyZW50RGlzcGxheSgpLCBudWxscHRyKSk7CiAgICAgICAgIGdfa2V5X2ZpbGVfbG9hZF9m
cm9tX2ZpbGUobV9jYWNoZUZpbGUuZ2V0KCksIG1fY2FjaGVQYXRoLmdldCgpLCBHX0tFWV9GSUxF
X05PTkUsIG51bGxwdHIpOwpAQCAtMTEzLDE0ICsxMTMsMTQgQEAgYm9vbCBQbHVnaW5JbmZvQ2Fj
aGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJ
bmZvJgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwot
ICAgIGlmICghV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFz
dE1vZGlmaWVkKSkKKyAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RNb2RpZmllZCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB0aW1lX3QgY2FjaGVkTGFzdE1vZGlmaWVkID0gc3RhdGljX2Nhc3Q8dGltZV90Pihn
X2tleV9maWxlX2dldF91aW50NjQobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEo
KSwgIm10aW1lIiwgbnVsbHB0cikpOwogICAgIGlmIChsYXN0TW9kaWZpZWQgIT0gY2FjaGVkTGFz
dE1vZGlmaWVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBwbHVnaW4ucGF0aCA9IHBs
dWdpblBhdGg7Ci0gICAgcGx1Z2luLmluZm8uZmlsZSA9IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFt
ZShwbHVnaW5QYXRoKTsKKyAgICBwbHVnaW4uaW5mby5maWxlID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6cGF0aEdldEZpbGVOYW1lKHBsdWdpblBhdGgpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBz
dHJpbmdWYWx1ZShnX2tleV9maWxlX2dldF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdp
bkdyb3VwLmRhdGEoKSwgIm5hbWUiLCBudWxscHRyKSk7CiAgICAgcGx1Z2luLmluZm8ubmFtZSA9
IFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nVmFsdWUuZ2V0KCkpOwpAQCAtMTQxLDcgKzE0MSw3IEBA
IGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKIHZvaWQgUGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVn
aW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luKQogewogICAgIHRpbWVfdCBsYXN0TW9kaWZpZWQ7Ci0gICAgaWYgKCFXZWJDb3JlOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQorICAgIGlm
ICghV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0
aCwgbGFzdE1vZGlmaWVkKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ1N0cmluZyBwbHVnaW5H
cm91cCA9IHBsdWdpblBhdGgudXRmOCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCmluZGV4IDNi
N2VmMzgxYTczMDMzZDYzODRlOGU0NGM0OWRjZjVkZTc0N2Q0OTQuLjA4NGY2ZGViYmY5OWI4NDg1
ZTZhZjA4MTU3ZTIwZmNiNjMyYTY5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5JbmZvU3RvcmVVbml4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luSW5mb1N0b3JlVW5peC5jcHAKQEAgLTU2
LDEwICs1NiwxMCBAQCBWZWN0b3I8U3RyaW5nPiBQbHVnaW5JbmZvU3RvcmU6OnBsdWdpblBhdGhz
SW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzdWx0OwogICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAgIGZvciAo
Y29uc3QgYXV0byYgcGF0aCA6IGxpc3REaXJlY3RvcnkoZGlyZWN0b3J5LCBTdHJpbmcoIiouc28i
KSkpIHsKLSAgICAgICAgQ1N0cmluZyBmaWxlbmFtZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihwYXRoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGly
ZWN0b3J5KGRpcmVjdG9yeSwgU3RyaW5nKCIqLnNvIikpKSB7CisgICAgICAgIENTdHJpbmcgZmls
ZW5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAg
ICAgIGlmIChyZWFscGF0aChmaWxlbmFtZS5kYXRhKCksIG5vcm1hbGl6ZWRQYXRoKSkKLSAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihu
b3JtYWxpemVkUGF0aCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChGaWxlU3lzdGVtOjpz
dHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG5vcm1hbGl6ZWRQYXRoKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTgwLDcgKzgwLDcgQEAgYm9vbCBQbHVnaW5JbmZv
U3RvcmU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1
bGVJbmZvJgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIFN0cmlu
ZyBwbHVnaW5Qcm9jZXNzUGF0aCA9IGV4ZWN1dGFibGVQYXRoT2ZQbHVnaW5Qcm9jZXNzKCk7CiAg
ICAgICAgICAgICBwbHVnaW5Qcm9jZXNzUGF0aC5hcHBlbmQoJzInKTsKLSAgICAgICAgICAgIGlm
ICghZmlsZUV4aXN0cyhwbHVnaW5Qcm9jZXNzUGF0aCkpCisgICAgICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMocGx1Z2luUHJvY2Vzc1BhdGgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5VW5peC5j
cHAKaW5kZXggMjc2NjkyYmQ5MTI1YWI0N2EwOTAxM2ExZWM2ODQ1MTU0NWE0OGNiZC4uZWEwYWEw
MTE4MDIzOTIxNDYyZTAwNTYwNDc0YjJkZWRlY2QwNmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblByb2Nlc3NQcm94eVVuaXguY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJv
eHlVbml4LmNwcApAQCAtOTAsNyArOTAsNyBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2Nh
blBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJgogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTX0dUSzIpCiAgICAgICAgIHBsdWdpblByb2Nl
c3NQYXRoLmFwcGVuZCgnMicpOwotICAgICAgICBpZiAoIWZpbGVFeGlzdHMocGx1Z2luUHJvY2Vz
c1BhdGgpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGx1Z2luUHJvY2Vz
c1BhdGgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtOTgsOCArOTgsOCBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6c2NhblBs
dWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJgogICAgIH0K
ICNlbmRpZgogCi0gICAgQ1N0cmluZyBiaW5hcnlQYXRoID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHBsdWdpblByb2Nlc3NQYXRoKTsKLSAgICBDU3RyaW5nIHBsdWdpblBhdGhDU3RyaW5nID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBsdWdpblBhdGgpOworICAgIENTdHJpbmcgYmluYXJ5
UGF0aCA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5Qcm9jZXNz
UGF0aCk7CisgICAgQ1N0cmluZyBwbHVnaW5QYXRoQ1N0cmluZyA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbihwbHVnaW5QYXRoKTsKICAgICBjaGFyKiBhcmd2WzRdOwogICAg
IGFyZ3ZbMF0gPSBjb25zdF9jYXN0PGNoYXIqPihiaW5hcnlQYXRoLmRhdGEoKSk7CiAgICAgYXJn
dlsxXSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KCItc2NhblBsdWdpbiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggMTI0OGFlZjYxMjMyZjdlN2RmOGM2YTlhZmEwODg2
ODdhOWY5YzgzYy4uZDFkZmY0Zjk2OWI3ZDg5ZDE5ZjNiZWJmYTkzOTIxOGFkOGViMTc0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0
YXRpYyBib29sIGhhc0ZpbGVDaGFuZ2VkU2luY2UoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGlt
ZSBzaW5jZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICB0aW1lX3Qg
bW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgs
IG1vZGlmaWNhdGlvblRpbWUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKSA+
IHNpbmNlOwpAQCAtNTUsMjYgKzU1LDI2IEBAIHN0YXRpYyBib29sIGhhc0ZpbGVDaGFuZ2VkU2lu
Y2UoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBzaW5jZSkKIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8S2V5ZWREZWNvZGVyPiBjcmVhdGVEZWNvZGVyRm9yRmlsZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgYXV0byBoYW5kbGUg
PSBvcGVuQW5kTG9ja0ZpbGUocGF0aCwgT3BlbkZvclJlYWQpOwotICAgIGlmIChoYW5kbGUgPT0g
aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVTeXN0ZW06
Om9wZW5BbmRMb2NrRmlsZShwYXRoLCBGaWxlU3lzdGVtOjpPcGVuRm9yUmVhZCk7CisgICAgaWYg
KGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGxvbmcgbG9uZyBmaWxlU2l6ZSA9IDA7Ci0gICAgaWYg
KCFnZXRGaWxlU2l6ZShoYW5kbGUsIGZpbGVTaXplKSkgewotICAgICAgICB1bmxvY2tBbmRDbG9z
ZUZpbGUoaGFuZGxlKTsKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVTaXplKGhhbmRsZSwg
ZmlsZVNpemUpKSB7CisgICAgICAgIEZpbGVTeXN0ZW06OnVubG9ja0FuZENsb3NlRmlsZShoYW5k
bGUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBzaXplX3QgYnl0ZXNU
b1JlYWQ7CiAgICAgaWYgKCFXVEY6OmNvbnZlcnRTYWZlbHkoZmlsZVNpemUsIGJ5dGVzVG9SZWFk
KSkgewotICAgICAgICB1bmxvY2tBbmRDbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAogICAgIFZlY3RvcjxjaGFyPiBidWZmZXIoYnl0ZXNUb1JlYWQpOwotICAgIHNp
emVfdCB0b3RhbEJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgIHNpemVfdCB0b3RhbEJ5dGVzUmVhZCA9IEZpbGVTeXN0ZW06
OnJlYWRGcm9tRmlsZShoYW5kbGUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwogCi0g
ICAgdW5sb2NrQW5kQ2xvc2VGaWxlKGhhbmRsZSk7CisgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5k
Q2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICBpZiAodG90YWxCeXRlc1JlYWQgIT0gYnl0ZXNUb1Jl
YWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTEyLDcgKzExMiw3IEBAIFN0cmluZyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnJlc291cmNlTG9nRmlsZVBh
dGgoKSBjb25zdAogICAgIGlmIChzdG9yYWdlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChz
dG9yYWdlUGF0aCwgImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOwor
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoc3RvcmFnZVBh
dGgsICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiKTsKIH0KIAogdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0YXJ0TW9uaXRvcmlu
Z0Rpc2soKQpAQCAtMTQ1LDggKzE0NSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3RhdGlzdGljcygpCiAgICAg
U3RyaW5nIHN0b3JhZ2VQYXRoID0gc3RvcmFnZURpcmVjdG9yeVBhdGgoKTsKICAgICBBU1NFUlQo
IXN0b3JhZ2VQYXRoLmlzRW1wdHkoKSk7CiAKLSAgICBpZiAoIWZpbGVFeGlzdHMoc3RvcmFnZVBh
dGgpKSB7Ci0gICAgICAgIGlmICghbWFrZUFsbERpcmVjdG9yaWVzKHN0b3JhZ2VQYXRoKSkgewor
ICAgIGlmICghRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhzdG9yYWdlUGF0aCkpIHsKKyAgICAgICAg
aWYgKCFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoc3RvcmFnZVBhdGgpKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOiBGYWlsZWQgdG8gY3JlYXRlIGRpcmVj
dG9yeSBwYXRoICVzIiwgc3RvcmFnZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZvck5ld1N0YXRpc3Rp
Y3MoKQogICAgICAgICBTdHJpbmcgcmVzb3VyY2VMb2dQYXRoID0gcmVzb3VyY2VMb2dGaWxlUGF0
aCgpOwogICAgICAgICBBU1NFUlQoIXJlc291cmNlTG9nUGF0aC5pc0VtcHR5KCkpOwogCi0gICAg
ICAgIGlmICghZmlsZUV4aXN0cyhyZXNvdXJjZUxvZ1BhdGgpKQorICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmZpbGVFeGlzdHMocmVzb3VyY2VMb2dQYXRoKSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBtX2ZpbGVNb25pdG9yID0gbnVsbHB0cjsKQEAgLTIwOSw3ICsyMDksNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1v
cnlTdG9yZUZyb21EaXNrKCkKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IFN0cmluZyBmaWxlUGF0aCA9IHJlc291cmNlTG9nRmlsZVBhdGgoKTsKLSAgICBpZiAoZmlsZVBh
dGguaXNFbXB0eSgpIHx8ICFmaWxlRXhpc3RzKGZpbGVQYXRoKSkgeworICAgIGlmIChmaWxlUGF0
aC5pc0VtcHR5KCkgfHwgIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZVBhdGgpKSB7CiAgICAg
ICAgIG1fbWVtb3J5U3RvcmUuZ3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKCk7CiAgICAg
ICAgIG1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNzKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTI1OCwxNiArMjU4LDE2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCkKIAogICAgIGF1dG8gc3RvcmFnZVBh
dGggPSBzdG9yYWdlRGlyZWN0b3J5UGF0aCgpOwogICAgIGlmICghc3RvcmFnZVBhdGguaXNFbXB0
eSgpKSB7Ci0gICAgICAgIG1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCk7CisgICAgICAg
IEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhzdG9yYWdlUGF0aCk7CiAgICAgICAgIGV4
Y2x1ZGVGcm9tQmFja3VwKCk7CiAgICAgfQogCi0gICAgYXV0byBoYW5kbGUgPSBvcGVuQW5kTG9j
a0ZpbGUocmVzb3VyY2VMb2dGaWxlUGF0aCgpLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmIChoYW5k
bGUgPT0gaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkKKyAgICBhdXRvIGhhbmRsZSA9IEZpbGVT
eXN0ZW06Om9wZW5BbmRMb2NrRmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRoKCksIEZpbGVTeXN0ZW06
Ok9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKGhhbmRsZSA9PSBGaWxlU3lzdGVtOjppbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBpbnQ2NF90IHdyaXR0ZW5C
eXRlcyA9IHdyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5zaXpl
KCkpOwotICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOworICAgIGludDY0X3Qgd3JpdHRl
bkJ5dGVzID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCks
IHJhd0RhdGEtPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6dW5sb2NrQW5kQ2xvc2VGaWxlKGhh
bmRsZSk7CiAKICAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHJh
d0RhdGEtPnNpemUoKSkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MsICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6IFdlIG9u
bHkgd3JvdGUgJWQgb3V0IG9mICV6dSBieXRlcyB0byBkaXNrIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHdyaXR0ZW5CeXRlcyksIHJhd0RhdGEtPnNpemUoKSk7CkBAIC0zMDYsNyArMzA2LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmNsZWFyKCkKIAog
ICAgIHN0b3BNb25pdG9yaW5nRGlzaygpOwogCi0gICAgaWYgKCFkZWxldGVGaWxlKGZpbGVQYXRo
KSkKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZVBhdGgpKQogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOiBVbmFibGUgdG8gZGVsZXRlIHN0YXRpc3RpY3MgZmls
ZTogJXMiLCBmaWxlUGF0aC51dGY4KCkuZGF0YSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cAppbmRleCBhNDU0MDgxYjcwZWQwNTE5ZjQ0MjkzMTJlODMyNGE0MGVmZDk2NTRmLi44MjYxNThm
YjE0YzhkNWE2ZGIzMTg2NWE2ZTk5YWI4NDg3YTkyNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNw
cApAQCAtODUsNyArODUsNyBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlOjpvcGVuRGF0YWJh
c2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgb3BlbmluZ1N0cmF0ZWd5KQogCiBib29sIExvY2Fs
U3RvcmFnZURhdGFiYXNlOjp0cnlUb09wZW5EYXRhYmFzZShEYXRhYmFzZU9wZW5pbmdTdHJhdGVn
eSBvcGVuaW5nU3RyYXRlZ3kpCiB7Ci0gICAgaWYgKCFmaWxlRXhpc3RzKG1fZGF0YWJhc2VQYXRo
KSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tpcElmTm9uRXhpc3RlbnQpCisgICAgaWYgKCFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1fZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0g
U2tpcElmTm9uRXhpc3RlbnQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZGF0
YWJhc2VQYXRoLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IDE5YjIyOWY2YjUzNzRhNzc0NjNhYWY5YjQ2NGNlOTM2YTA0YWNjMmIuLmI5Y2E4OWY4
YWJjNjcwZTFmZjEwYzQ1ZTdmZGQ0YTczMTc0Mjk2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6OmRlbGV0ZUFsbERhdGFiYXNlcygpCiAKICAgICBpbnQgcmVzdWx0OwogICAgIHdo
aWxlICgocmVzdWx0ID0gc3RhdGVtZW50LnN0ZXAoKSkgPT0gU1FMSVRFX1JPVykgewotICAgICAg
ICBkZWxldGVGaWxlKHN0YXRlbWVudC5nZXRDb2x1bW5UZXh0KDEpKTsKKyAgICAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgxKSk7CiAKICAgICAgICAg
Ly8gRklYTUU6IENhbGwgb3V0IHRvIHRoZSBjbGllbnQuCiAgICAgfQpAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZWxldGVBbGxEYXRhYmFzZXMo
KQogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICBtX2RhdGFiYXNlLmNsb3Nl
KCk7CiAKLSAgICBpZiAoIWRlbGV0ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKSkgeworICAg
IGlmICghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CiAg
ICAgICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBkZWxldGUg
dGhlIGRhdGFiYXNlIGZpbGUgKGUuZyBzb21lIG90aGVyIHByb2dyYW0KICAgICAgICAgLy8gbGlr
ZSBhIHZpcnVzIHNjYW5uZXIgaXMgYWNjZXNzaW5nIGl0KSwgbWFrZSBzdXJlIHRvIHJlbW92ZSBh
bGwgZW50cmllcy4KICAgICAgICAgb3BlblRyYWNrZXJEYXRhYmFzZShTa2lwSWZOb25FeGlzdGVu
dCk7CkBAIC0xMjQsMTkgKzEyNCwxOSBAQCB2b2lkIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
cjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGRlbGV0ZUVt
cHR5RGlyZWN0b3J5KG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKKyAgICBGaWxlU3lzdGVtOjpk
ZWxldGVFbXB0eURpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiB9CiAKIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gZmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIGZp
bGVQYXRoKQogewogICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVybiBnZXRGaWxlQ3JlYXRpb25U
aW1lKGZpbGVQYXRoLCB0aW1lKSA/IHRpbWUgOiBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4oc3RkOjpu
dWxsb3B0KTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGltZShmaWxl
UGF0aCwgdGltZSkgPyB0aW1lIDogc3RkOjpvcHRpb25hbDx0aW1lX3Q+KHN0ZDo6bnVsbG9wdCk7
CiB9CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gZmlsZU1vZGlmaWNhdGlvblRpbWUo
Y29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIHsKICAgICB0aW1lX3QgdGltZTsKLSAgICBpZiAoIWdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSkKKyAgICBpZiAoIUZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVQYXRoLCB0aW1lKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHJldHVybiB0aW1lOwpAQCAtMjA5LDcgKzIwOSw3IEBA
IFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+IExvY2Fs
U3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6CiAKIFN0cmluZyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXI6OmRhdGFiYXNlUGF0aChjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBjb25zdAogewotICAg
IGlmICghbWFrZUFsbERpcmVjdG9yaWVzKG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkgeworICAg
IGlmICghRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG1fbG9jYWxTdG9yYWdlRGlyZWN0
b3J5KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgTG9jYWxTdG9yYWdl
IGRhdGFiYXNlIHBhdGggJXMiLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeS51dGY4KCkuZGF0YSgp
KTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KQEAgLTIxOCw3ICsyMTgsNyBAQCBT
dHJpbmcgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZVBhdGgoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkgY29uc3QKICAgICBwbGF0Zm9ybU1heWJlRXhjbHVkZUZyb21CYWNrdXAo
KTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeSwgZmlsZW5hbWUpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnksIGZpbGVuYW1lKTsK
IH0KIAogU3RyaW5nIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlckRhdGFiYXNl
UGF0aCgpIGNvbnN0CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFz
ZVRyYWNrZXI6Om9wZW5UcmFja2VyRGF0YWJhc2UoRGF0YWJhc2VPcGVuaW5nU3RyYXRlZ3kgb3AK
IAogICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSB0cmFja2VyRGF0YWJhc2VQYXRoKCk7CiAKLSAg
ICBpZiAoIWZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSAmJiBvcGVuaW5nU3RyYXRlZ3kgPT0gU2tp
cElmTm9uRXhpc3RlbnQpCisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNl
UGF0aCkgJiYgb3BlbmluZ1N0cmF0ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1fZGF0YWJhc2Uub3BlbihkYXRhYmFzZVBhdGgpKSB7CkBAIC0y
NzksNyArMjc5LDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmltcG9ydE9y
aWdpbklkZW50aWZpZXJzKCkKIAogdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnVw
ZGF0ZVRyYWNrZXJEYXRhYmFzZUZyb21Mb2NhbFN0b3JhZ2VEYXRhYmFzZUZpbGVzKCkKIHsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBwYXRocyA9IGxpc3REaXJlY3RvcnkobV9sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnksICIqLmxvY2Fsc3RvcmFnZSIpOworICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzID0gRmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSwgIioubG9jYWxz
dG9yYWdlIik7CiAKICAgICBIYXNoU2V0PFN0cmluZz4gb3JpZ2lucyhtX29yaWdpbnMpOwogICAg
IEhhc2hTZXQ8U3RyaW5nPiBvcmlnaW5zRnJvbUxvY2FsU3RvcmFnZURhdGFiYXNlRmlsZXM7CkBA
IC0yOTAsNyArMjkwLDcgQEAgdm9pZCBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OnVwZGF0
ZVRyYWNrZXJEYXRhYmFzZUZyb21Mb2NhbFN0b3JhZ2VEYXRhYmFzZUYKICAgICAgICAgaWYgKCFw
YXRoLmVuZHNXaXRoKCIubG9jYWxzdG9yYWdlIikpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgICAg
IFN0cmluZyBmaWxlbmFtZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKTsKIAog
ICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCBm
aWxlbmFtZS5sZW5ndGgoKSAtIHN0cmxlbigiLmxvY2Fsc3RvcmFnZSIpKTsKIApAQCAtMzYwLDcg
KzM2MCw3IEBAIHZvaWQgTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEYXRhYmFz
ZVdpdGhPcmlnaW5JZGVudGlmaWVyKGNvbnN0IFN0cmluCiAgICAgICAgIC8vIFRoZXJlIGFyZSBu
byBvcmlnaW5zIGxlZnQ7IGRlbGV0ZSB0aGUgdHJhY2tlciBkYXRhYmFzZS4KICAgICAgICAgbV9k
YXRhYmFzZS5jbG9zZSgpOwogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVEYXRhYmFz
ZUZpbGUodHJhY2tlckRhdGFiYXNlUGF0aCgpKTsKLSAgICAgICAgZGVsZXRlRW1wdHlEaXJlY3Rv
cnkobV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVF
bXB0eURpcmVjdG9yeShtX2xvY2FsU3RvcmFnZURpcmVjdG9yeSk7CiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFRlbGwgY2xpZW50cyB0aGF0IHRoZSBvcmlnaW4gd2FzIHJlbW92ZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2Nv
YS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggOGQ2NWJiZTQ1MDNkN2NkNzJhMWRmNzJj
MGI4OTEwYjc0MGFiNzZiMi4uNDI4MDgxOGQ1YTYyNTNmYWMxYWIxY2RjM2M2NjMzMjg0NTJkOTM2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtNzMsNyArNzMsNyBA
QCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJz
KCkKICAgICBwYXJhbWV0ZXJzLnBlbmRpbmdDb29raWVzID0gY29weVRvVmVjdG9yKG1fcGVuZGlu
Z0Nvb2tpZXMpOwogCiAgICAgaWYgKCFjb29raWVGaWxlLmlzRW1wdHkoKSkKLSAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KFdlYkNvcmU6
OmRpcmVjdG9yeU5hbWUoY29va2llRmlsZSksIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZVBhdGhF
eHRlbnNpb25IYW5kbGUpOworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkV3JpdGVEaXJlY3RvcnkoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShj
b29raWVGaWxlKSwgcGFyYW1ldGVycy5jb29raWVTdG9yYWdlUGF0aEV4dGVuc2lvbkhhbmRsZSk7
CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxs
KCkpIHsKICAgICAgICAgcGFyYW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkgPSBtX2NvbmZp
Z3VyYXRpb24uY2FjaGVTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA5N2Qy
YmFjYTJlZjc1ZWQ1MjMwMmQ3NThmYTM4MTU3N2ZhMjlkNWU1Li5lNTkxNjFlNDY3YTdhNDU5ZGI2
ZDg1N2I4NTBmOWJjM2QwMDRiODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTI0LDggKzEyNCw4
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb2x2ZURpcmVjdG9yaWVzSWZOZWNlc3Nhcnko
KQogCiAgICAgLy8gUmVzb2x2ZSBkaXJlY3RvcmllcyBmb3IgZmlsZSBwYXRocy4KICAgICBpZiAo
IW1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
bV9yZXNvbHZlZENvbmZpZ3VyYXRpb24uY29va2llU3RvcmFnZUZpbGUgPSByZXNvbHZlQW5kQ3Jl
YXRlUmVhZFdyaXRlRGlyZWN0b3J5Rm9yU2FuZGJveEV4dGVuc2lvbihXZWJDb3JlOjpkaXJlY3Rv
cnlOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSkpOwotICAgICAgICBtX3Jl
c29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmlsZSA9IFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZSwgV2ViQ29yZTo6cGF0aEdldEZpbGVOYW1lKG1fY29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdl
RmlsZSkpOworICAgICAgICBtX3Jlc29sdmVkQ29uZmlndXJhdGlvbi5jb29raWVTdG9yYWdlRmls
ZSA9IHJlc29sdmVBbmRDcmVhdGVSZWFkV3JpdGVEaXJlY3RvcnlGb3JTYW5kYm94RXh0ZW5zaW9u
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tp
ZVN0b3JhZ2VGaWxlKSk7CisgICAgICAgIG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0
b3JhZ2VGaWxlID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcmVzb2x2ZWRDb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxlLCBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUobV9jb25maWd1cmF0aW9uLmNvb2tpZVN0b3JhZ2VGaWxl
KSk7CiAgICAgfQogfQogCkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBWZWN0b3I8UGx1Z2luTW9kdWxl
SW5mbz4gV2Vic2l0ZURhdGFTdG9yZTo6cGx1Z2lucygpIGNvbnN0CiAKIHN0YXRpYyBTdHJpbmcg
Y29tcHV0ZU1lZGlhS2V5RmlsZShjb25zdCBTdHJpbmcmIG1lZGlhS2V5RGlyZWN0b3J5KQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlEaXJl
Y3RvcnksICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleURpcmVjdG9yeSwgIlNlY3VyZVN0
b3AucGxpc3QiKTsKIH0KIAogVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gV2Vi
c2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSkKQEAgLTEyNTcsMTIgKzEyNTcsMTIgQEAgVmVjdG9yPFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YT4gV2Vic2l0ZURhdGFTdG9yZTo6bWVkaWFLZXlPcmlnaW5zKGNvbnN0
IFN0cmkKIAogICAgIFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnM7
CiAKLSAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpsaXN0RGlyZWN0
b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIG9yaWdpblBhdGggOiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikpIHsKICAgICAgICAgYXV0byBtZWRpYUtleUZpbGUg
PSBjb21wdXRlTWVkaWFLZXlGaWxlKG9yaWdpblBhdGgpOwotICAgICAgICBpZiAoIVdlYkNvcmU6
OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBhdXRvIG1lZGlhS2V5SWRlbnRpZmllciA9IFdlYkNvcmU6OnBhdGhHZXRGaWxlTmFt
ZShvcmlnaW5QYXRoKTsKKyAgICAgICAgYXV0byBtZWRpYUtleUlkZW50aWZpZXIgPSBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUob3JpZ2luUGF0aCk7CiAKICAgICAgICAgaWYg
KGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21E
YXRhYmFzZUlkZW50aWZpZXIobWVkaWFLZXlJZGVudGlmaWVyKSkKICAgICAgICAgICAgIG9yaWdp
bnMuYXBwZW5kKCpzZWN1cml0eU9yaWdpbik7CkBAIC0xMjc1LDE4ICsxMjc1LDE4IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlzKGNvbnN0IFN0cmluZyYgbWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSwKIHsKICAgICBBU1NFUlQoIW1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkuaXNFbXB0eSgpKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgbWVkaWFLZXlEaXJlY3Rvcnkg
OiBXZWJDb3JlOjpsaXN0RGlyZWN0b3J5KG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnksICIqIikp
IHsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5RGlyZWN0b3J5IDogV2ViQ29yZTo6Rmls
ZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LCAiKiIpKSB7
CiAgICAgICAgIGF1dG8gbWVkaWFLZXlGaWxlID0gY29tcHV0ZU1lZGlhS2V5RmlsZShtZWRpYUtl
eURpcmVjdG9yeSk7CiAKICAgICAgICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAg
IGlmICghV2ViQ29yZTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2Rp
ZmljYXRpb25UaW1lKSkKKyAgICAgICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZGlmaWNhdGlvblRpbWUpKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OmZyb21fdGltZV90KG1vZGlmaWNhdGlvblRpbWUpIDwgbW9kaWZpZWRTaW5jZSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxl
KTsKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3Rv
cnkpOworICAgICAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5Rmls
ZSk7CisgICAgICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1l
ZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9CiB9CiAKQEAgLTEyOTUsMTEgKzEyOTUsMTEgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVNZWRpYUtleXMoY29uc3QgU3RyaW5nJiBtZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5LAogICAgIEFTU0VSVCghbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eS5pc0VtcHR5KCkpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7
Ci0gICAgICAgIGF1dG8gbWVkaWFLZXlEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSwgb3JpZ2luLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKKyAgICAgICAgYXV0byBtZWRpYUtleURpcmVjdG9yeSA9IFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogICAgICAgICBhdXRvIG1lZGlhS2V5
RmlsZSA9IGNvbXB1dGVNZWRpYUtleUZpbGUobWVkaWFLZXlEaXJlY3RvcnkpOwogCi0gICAgICAg
IFdlYkNvcmU6OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKLSAgICAgICAgV2ViQ29yZTo6ZGVs
ZXRlRW1wdHlEaXJlY3RvcnkobWVkaWFLZXlEaXJlY3RvcnkpOworICAgICAgICBXZWJDb3JlOjpG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAgIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5RGlyZWN0b3J5KTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
UG9vbEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xH
dGsuY3BwCmluZGV4IGM1OTVkNTZkZjM5MTM0YzA1MWU1YzE3NDJmOTUzODNkNDg4MWMzOWIuLmI0
YTE3MjM5ZjViYzQ0NmRiYzBhNWMwZWJlZTNhYTU4N2NmZjhiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtMTI0LDcgKzEy
NCw3IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCkKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1E
ZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
Z19nZXRfdXNlcl9kYXRhX2RpcigpLCAid2Via2l0Z3RrIiwgIkphdmFTY3JpcHRDb3JlRGVidWci
LCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJl
dHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCAy
ZDAyNzIxZjcxMTQxYTJkYjVkOTYwNWNlYjU0ZDYyOWQ3NDZlODkwLi5kZmVmNThiMDg1OWJhNTdl
Y2E2MmZkZDE3OGExZTRlMWIzZDYwNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgTlNTdHJp
bmcgKnBhdGhUb1BERk9uRGlzayhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRp
dmVBcHBsaWNhdGlvblJhdyhjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCB1aW50OF90KiBkYXRhLCB1bnNpZ25l
ZCBsb25nIHNpemUsIGNvbnN0IFN0cmluZyYgcGRmVVVJRCkKIHsKLSAgICAvLyBGSVhNRTogV3Jp
dGUgb3JpZ2luYXRpbmdVUkxTdHJpbmcgdG8gdGhlIGZpbGUncyBvcmlnaW5hdGluZyBVUkwgbWV0
YWRhdGEgKHBlcmhhcHMgV2ViQ29yZTo6c2V0TWV0YWRhdGFVUkwoKT8pLgorICAgIC8vIEZJWE1F
OiBXcml0ZSBvcmlnaW5hdGluZ1VSTFN0cmluZyB0byB0aGUgZmlsZSdzIG9yaWdpbmF0aW5nIFVS
TCBtZXRhZGF0YSAocGVyaGFwcyBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzZXRNZXRhZGF0YVVSTCgp
PykuCiAgICAgVU5VU0VEX1BBUkFNKG9yaWdpbmF0aW5nVVJMU3RyaW5nKTsKIAogICAgIGlmICgh
c3VnZ2VzdGVkRmlsZW5hbWUuZW5kc1dpdGgoIi5wZGYiLCBmYWxzZSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93cGUvV2ViUHJvY2Vzc1Bvb2xXUEUuY3BwCmluZGV4IGU1MjJh
NTk1NThkYjFjZTlkYzY3MjE5MzM0N2NkN2I5MDg4NTI0NGIuLjczZDgwMWJhOTVjYzBiZDc4MTZm
MjI1Mzg2NTg0NzFlZDM2YzZkNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dwZS9XZWJQcm9jZXNzUG9vbFdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
d3BlL1dlYlByb2Nlc3NQb29sV1BFLmNwcApAQCAtODAsMTMgKzgwLDEzIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiBXVEY6OlN0cmluZyBXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiB7CiAg
ICAgR1VuaXF1ZVB0cjxnY2hhcj4gY2FjaGVEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dl
dF91c2VyX2NhY2hlX2RpcigpLCAid3BlIiwgImFwcGNhY2hlIiwgbnVsbHB0cikpOwotICAgIHJl
dHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNhY2hlRGly
ZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJv
bUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFdU
Rjo6U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBjYWNoZURpcmVjdG9yeShnX2J1
aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3cGUiLCAibWVkaWFjYWNoZSIs
IG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbihjYWNoZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZp
bGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY2FjaGVEaXJlY3Rv
cnkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCkBAIC0x
MDIsMzcgKzEwMiwzNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUludmFsaWRhdGVD
b250ZXh0KCkKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGRhdGFiYXNl
RGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwg
ImRhdGFiYXNlcyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwogfQogCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAg
ICBHVW5pcXVlUHRyPGdjaGFyPiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKGdfZ2V0X3VzZXJfZGF0YV9kaXIoKSwgIndwZSIsICJkYXRhYmFzZXMiLCAiaW5kZXhl
ZGRiIiwgbnVsbHB0cikpOwotICAgIHJldHVybiBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgImxvY2Fsc3RvcmFnZSIsIG51bGxwdHIp
KTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihzdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihzdG9yYWdlRGlyZWN0b3J5Lmdl
dCgpKTsKIH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRN
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICBHVW5pcXVlUHRyPGdjaGFyPiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2Rp
cigpLCAid3BlIiwgIm1lZGlha2V5cyIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6
c3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5LmdldCgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6c3RyaW5nRnJvbUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5LmdldCgpKTsK
IH0KIAogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkoKQogewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0
b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndwZSIsICJjYWNo
ZSIsIG51bGxwdHIpKTsKLSAgICByZXR1cm4gV2ViQ29yZTo6c3RyaW5nRnJvbUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0KCkpOworICAgIHJldHVybiBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpc2tD
YWNoZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKQogewogICAg
IEdVbmlxdWVQdHI8Z2NoYXI+IGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoZ19nZXRfdXNlcl9kYXRhX2RpcigpLCAid3BlIiwgIkphdmFTY3JpcHRDb3JlRGVi
dWciLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OnN0cmluZ0Zyb21GaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24oamF2YVNjcmlwdENvcmVDb25maWdEaXJlY3RvcnkuZ2V0KCkpOworICAg
IHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKGphdmFTY3JpcHRDb3JlQ29uZmlnRGlyZWN0b3J5LmdldCgpKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1SZXNvbHZlUGF0aHNGb3JTYW5kYm94RXh0ZW5zaW9ucygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0RXh0ZW5zaW9uTWFuYWdlci5jcHAKaW5k
ZXggZGNmMTNjMWY1Mzc5NDc1YTc5N2YxYTVkYTc5ODMxZDQ3ZTkyNGFmMC4uYWFjMjgyODBjYTUy
MGJmODM5NjViNzk0YzNlMzRmZWFmYzYxZWU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdEV4dGVuc2lvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRFeHRlbnNpb25NYW5hZ2VyLmNwcApAQCAtNDEsOSArNDEsOSBAQCBXZWJLaXRFeHRl
bnNpb25NYW5hZ2VyOjpXZWJLaXRFeHRlbnNpb25NYW5hZ2VyKCkKIAogdm9pZCBXZWJLaXRFeHRl
bnNpb25NYW5hZ2VyOjpzY2FuTW9kdWxlcyhjb25zdCBTdHJpbmcmIHdlYkV4dGVuc2lvbnNEaXJl
Y3RvcnksIFZlY3RvcjxTdHJpbmc+JiBtb2R1bGVzKQogewotICAgIFZlY3RvcjxTdHJpbmc+IG1v
ZHVsZVBhdGhzID0gV2ViQ29yZTo6bGlzdERpcmVjdG9yeSh3ZWJFeHRlbnNpb25zRGlyZWN0b3J5
LCBTdHJpbmcoIiouc28iKSk7CisgICAgVmVjdG9yPFN0cmluZz4gbW9kdWxlUGF0aHMgPSBXZWJD
b3JlOjpGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KHdlYkV4dGVuc2lvbnNEaXJlY3RvcnksIFN0
cmluZygiKi5zbyIpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1vZHVsZVBhdGhzLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChXZWJDb3JlOjpmaWxlRXhpc3RzKG1vZHVsZVBhdGhz
W2ldKSkKKyAgICAgICAgaWYgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobW9kdWxl
UGF0aHNbaV0pKQogICAgICAgICAgICAgbW9kdWxlcy5hcHBlbmQobW9kdWxlUGF0aHNbaV0pOwog
ICAgIH0KIH0KQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIHZvaWQgcGFyc2VVc2VyRGF0YShBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFN0cmluZyYgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSwKICAgICBH
VmFyaWFudCogZGF0YSA9IG51bGxwdHI7CiAgICAgZ192YXJpYW50X2dldCh2YXJpYW50LmdldCgp
LCAiKG0mc212KSIsICZkaXJlY3RvcnksICZkYXRhKTsKIAotICAgIHdlYkV4dGVuc2lvbnNEaXJl
Y3RvcnkgPSBXZWJDb3JlOjpzdHJpbmdGcm9tRmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGRpcmVj
dG9yeSk7CisgICAgd2ViRXh0ZW5zaW9uc0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06
OnN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZGlyZWN0b3J5KTsKICAgICBpbml0
aWFsaXphdGlvblVzZXJEYXRhID0gYWRvcHRHUmVmKGRhdGEpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9JbmplY3RlZEJ1bmRs
ZUdsaWIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL2dsaWIv
SW5qZWN0ZWRCdW5kbGVHbGliLmNwcAppbmRleCBhMjBhNWZlNDIyMzg5NDdlNDZiZjIzNWUwZWU3
NmUyYWY4ZmJiYjlhLi5jZmZhOGZjNGFjOGJmODM3NTE2ODg3ODY5M2MxZWRlZDAzODQ1ODUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvZ2xpYi9J
bmplY3RlZEJ1bmRsZUdsaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9nbGliL0luamVjdGVkQnVuZGxlR2xpYi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgSW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUoY29u
c3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXph
dGlvblVzZXJEYXRhKQogewotICAgIG1fcGxhdGZvcm1CdW5kbGUgPSBnX21vZHVsZV9vcGVuKGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3BhdGgpLmRhdGEoKSwgR19NT0RVTEVfQklORF9MT0NB
TCk7CisgICAgbV9wbGF0Zm9ybUJ1bmRsZSA9IGdfbW9kdWxlX29wZW4oRmlsZVN5c3RlbTo6Zmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fcGF0aCkuZGF0YSgpLCBHX01PRFVMRV9CSU5EX0xPQ0FM
KTsKICAgICBpZiAoIW1fcGxhdGZvcm1CdW5kbGUpIHsKICAgICAgICAgZ193YXJuaW5nKCJFcnJv
ciBsb2FkaW5nIHRoZSBpbmplY3RlZCBidW5kbGUgKCVzKTogJXMiLCBtX3BhdGgudXRmOCgpLmRh
dGEoKSwgZ19tb2R1bGVfZXJyb3IoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFn
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggZmI3ZjljNmNhNzZkZmY4Zjk4NjUyZDE4ZDMw
MjAyODkyMmFiMmJkMi4uOWY4ZWFmMzkwODE3ZjUxNDlkZGVkMGM3NjA0MjY0NTA0MTk4NjcxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgU3Ry
aW5nIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6Om1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUZv
ck9yaWdpbihjb25zdCBTZWN1cmkKICAgICBpZiAoIW1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5
KQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIHJldHVybiBwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0
YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksIG9yaWdpbkRhdGEuZGF0YWJh
c2VJZGVudGlmaWVyKCkpOwogfQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRp
YUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQpAQCAtNjIsNyArNjIsNyBA
QCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpn
ZXRNZWRpYUtleU9yaWdpbnMoKQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1bHRzOwogCi0gICAgVmVjdG9yPFN0cmluZz4g
b3JpZ2luUGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAi
KiIpOworICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGNvbnN0
IGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykgewogICAgICAgICBVUkwgdXJsOwogICAg
ICAgICB1cmwuc2V0UHJvdG9jb2woQVNDSUlMaXRlcmFsKCJmaWxlIikpOwpAQCAtODIsMjUgKzgy
LDI1IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXI6OmdldE1lZGlhS2V5T3JpZ2lucygpCiAKIHN0YXRpYyB2b2lkIHJlbW92ZUFsbE1lZGlhS2V5
U3RvcmFnZUZvck9yaWdpblBhdGgoY29uc3QgU3RyaW5nJiBvcmlnaW5QYXRoLCBkb3VibGUgc3Rh
cnREYXRlLCBkb3VibGUgZW5kRGF0ZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYUtleVBh
dGhzID0gbGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCAiKiIpOworICAgIFZlY3RvcjxTdHJpbmc+
IG1lZGlhS2V5UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIq
Iik7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIG1lZGlhS2V5UGF0aCA6IG1lZGlhS2V5UGF0aHMp
IHsKLSAgICAgICAgU3RyaW5nIG1lZGlhS2V5RmlsZSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChtZWRpYUtleVBhdGgsICJTZWN1cmVTdG9wLnBsaXN0Iik7CisgICAgICAgIFN0cmluZyBtZWRp
YUtleUZpbGUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobWVkaWFLZXlQ
YXRoLCAiU2VjdXJlU3RvcC5wbGlzdCIpOwogCi0gICAgICAgIGlmICghZmlsZUV4aXN0cyhtZWRp
YUtleUZpbGUpKQorICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlG
aWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHRpbWVfdCBtb2RUaW1lOwot
ICAgICAgICBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUs
IG1vZFRpbWUpOwogCiAgICAgICAgIGlmIChtb2RUaW1lIDwgc3RhcnREYXRlIHx8IG1vZFRpbWUg
PiBlbmREYXRlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgZGVsZXRlRmlsZSht
ZWRpYUtleUZpbGUpOwotICAgICAgICBkZWxldGVFbXB0eURpcmVjdG9yeShtZWRpYUtleVBhdGgp
OworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5RmlsZSk7CisgICAgICAg
IEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1lZGlhS2V5UGF0aCk7CiAgICAgfQog
ICAgIAotICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOworICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpOwogfQogCiB2b2lkIFdlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEpCkBAIC0xMTcsNyArMTE3LDcgQEAgdm9pZCBX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJl
dHdlZW5EYXRlcyhkb3VibGUKICAgICBpZiAobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRo
cyA9IGxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CisgICAg
VmVjdG9yPFN0cmluZz4gb3JpZ2luUGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KG1f
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LCAiKiIpOwogICAgIGZvciAoYXV0byYgb3JpZ2luUGF0
aCA6IG9yaWdpblBhdGhzKQogICAgICAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmln
aW5QYXRoKG9yaWdpblBhdGgsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSk7CiB9CkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVu
dHJpZXMoKQogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpblBhdGhzID0gbGlzdERp
cmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9tZWRpYUtleVN0
b3JhZ2VEaXJlY3RvcnksICIqIik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogb3JpZ2lu
UGF0aHMpCiAgICAgICAgIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3Jp
Z2luUGF0aCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwgc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0
cmVhbS5jcHAKaW5kZXggMDM3MThhMjczMGE3NzRkZmQzZWNmYjAxNjVjNWI4MTkyMmVjODNiYS4u
MThmZTljYmYyNDMwODQ4YjYyZWY3MGUxNGZjN2U3MGM5NmQxMGRhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5TdHJl
YW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luU3RyZWFtLmNwcApAQCAtNDUsNyArNDUsNyBAQCBOZXRzY2FwZVBsdWdpblN0
cmVhbTo6TmV0c2NhcGVQbHVnaW5TdHJlYW0oUmVmPE5ldHNjYXBlUGx1Z2luPiYmIHBsdWdpbiwg
dWludDY0XwogICAgICwgbV9ucFN0cmVhbSgpCiAgICAgLCBtX3RyYW5zZmVyTW9kZShOUF9OT1JN
QUwpCiAgICAgLCBtX29mZnNldCgwKQotICAgICwgbV9maWxlSGFuZGxlKGludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpCisgICAgLCBtX2ZpbGVIYW5kbGUoRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSkKICAgICAsIG1faXNTdGFydGVkKGZhbHNlKQogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICAsIG1fdXJsTm90aWZ5SGFzQmVlbkNhbGxlZChmYWxzZSkKQEAgLTU5LDcgKzU5
LDcgQEAgTmV0c2NhcGVQbHVnaW5TdHJlYW06On5OZXRzY2FwZVBsdWdpblN0cmVhbSgpCiB7CiAg
ICAgQVNTRVJUKCFtX2lzU3RhcnRlZCk7CiAgICAgQVNTRVJUKCFtX3NlbmROb3RpZmljYXRpb24g
fHwgbV91cmxOb3RpZnlIYXNCZWVuQ2FsbGVkKTsKLSAgICBBU1NFUlQobV9maWxlSGFuZGxlID09
IGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIEFTU0VSVChtX2ZpbGVIYW5kbGUgPT0g
RmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiB9CiAKIHZvaWQgTmV0c2Nh
cGVQbHVnaW5TdHJlYW06OndpbGxTZW5kUmVxdWVzdChjb25zdCBVUkwmIHJlcXVlc3RVUkwsIGNv
bnN0IFVSTCYgcmVkaXJlY3RSZXNwb25zZVVSTCwgaW50IHJlZGlyZWN0UmVzcG9uc2VTdGF0dXMp
CkBAIC0yNjMsMTIgKzI2MywxMiBAQCB2b2lkIE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVy
RGF0YVRvUGx1Z2luKCkKIAogdm9pZCBOZXRzY2FwZVBsdWdpblN0cmVhbTo6ZGVsaXZlckRhdGFU
b0ZpbGUoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCiB7Ci0gICAgaWYgKG1fZmlsZUhh
bmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlICYmIG1fZmlsZVBhdGguaXNOdWxsKCkp
IHsKKyAgICBpZiAobV9maWxlSGFuZGxlID09IEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZp
bGVIYW5kbGUgJiYgbV9maWxlUGF0aC5pc051bGwoKSkgewogICAgICAgICAvLyBDcmVhdGUgYSB0
ZW1wb3JhcnkgZmlsZS4KLSAgICAgICAgbV9maWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJX
ZWJLaXRQbHVnaW5TdHJlYW0iLCBtX2ZpbGVIYW5kbGUpOworICAgICAgICBtX2ZpbGVQYXRoID0g
RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIldlYktpdFBsdWdpblN0cmVhbSIsIG1fZmls
ZUhhbmRsZSk7CiAKICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIG9wZW4gdGhlIGZpbGUsIHN0b3Ag
dGhlIHN0cmVhbS4KLSAgICAgICAgaWYgKG1fZmlsZUhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1G
aWxlSGFuZGxlKSB7CisgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgPT0gRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSkgewogICAgICAgICAgICAgc3RvcChOUFJFU19ORVRXT1JL
X0VSUik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI3NywxMCArMjc3LDEw
IEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlbGl2ZXJEYXRhVG9GaWxlKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpbnQgYnl0ZUNvdW50ID0gd3JpdGVUb0ZpbGUobV9maWxlSGFuZGxlLCBieXRlcywg
bGVuZ3RoKTsKKyAgICBpbnQgYnl0ZUNvdW50ID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUobV9m
aWxlSGFuZGxlLCBieXRlcywgbGVuZ3RoKTsKICAgICBpZiAoYnl0ZUNvdW50ICE9IGxlbmd0aCkg
ewogICAgICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSByYXJlbHksIHdoZW4gd2UgYXJlIG91dCBv
ZiBkaXNrIHNwYWNlIG9yIGhhdmUgYSBkaXNrIEkvTyBlcnJvci4KLSAgICAgICAgY2xvc2VGaWxl
KG1fZmlsZUhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5k
bGUpOwogCiAgICAgICAgIHN0b3AoTlBSRVNfTkVUV09SS19FUlIpOwogICAgIH0KQEAgLTMxNCwy
MyArMzE0LDIzIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW5TdHJlYW06OnN0b3AoTlBSZWFzb24gcmVh
c29uKQogICAgICAgICBpZiAocmVhc29uID09IE5QUkVTX0RPTkUpIHsKICAgICAgICAgICAgIC8v
IEVuc3VyZSB0aGF0IHRoZSBmaWxlIGlzIGNyZWF0ZWQuCiAgICAgICAgICAgICBkZWxpdmVyRGF0
YVRvRmlsZSgwLCAwKTsKLSAgICAgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgIT0gaW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKLSAgICAgICAgICAgICAgICBjbG9zZUZpbGUobV9maWxlSGFuZGxl
KTsKKyAgICAgICAgICAgIGlmIChtX2ZpbGVIYW5kbGUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSkKKyAgICAgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUo
bV9maWxlSGFuZGxlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKCFtX2ZpbGVQ
YXRoLmlzTnVsbCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9wbHVnaW4tPk5QUF9T
dHJlYW1Bc0ZpbGUoJm1fbnBTdHJlYW0sIG1fZmlsZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBKdXN0IGNsb3NlIHRoZSBmaWxlLgotICAgICAg
ICAgICAgaWYgKG1fZmlsZUhhbmRsZSAhPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQotICAg
ICAgICAgICAgICAgIGNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOworICAgICAgICAgICAgaWYgKG1f
ZmlsZUhhbmRsZSAhPSBGaWxlU3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAg
ICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShtX2ZpbGVIYW5kbGUpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRGVsZXRlIHRoZSBmaWxlIGFmdGVyIGNhbGxpbmcgTlBQX1N0cmVh
bUFzRmlsZSgpLCBpbnN0ZWFkIG9mIGluIHRoZSBkZXN0cnVjdG9yLiAgSXQgc2hvdWxkIGJlIE9L
CiAgICAgICAgIC8vIHRvIGRlbGV0ZSB0aGUgZmlsZSBoZXJlIC0tIE5QUF9TdHJlYW1Bc0ZpbGUo
KSBpcyBhbHdheXMgY2FsbGVkIGltbWVkaWF0ZWx5IGJlZm9yZSBOUFBfRGVzdHJveVN0cmVhbSgp
CiAgICAgICAgIC8vICh0aGUgc3RyZWFtIGRlc3RydWN0aW9uIGZ1bmN0aW9uKSwgc28gdGhlcmUg
Y2FuIGJlIG5vIGV4cGVjdGF0aW9uIHRoYXQgYSBwbHVnaW4gd2lsbCByZWFkIHRoZSBzdHJlYW0K
ICAgICAgICAgLy8gZmlsZSBhc3luY2hyb25vdXNseSBhZnRlciBOUFBfU3RyZWFtQXNGaWxlKCkg
aXMgY2FsbGVkLgotICAgICAgICBkZWxldGVGaWxlKG1fZmlsZVBhdGgpOworICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwogICAgICAgICBtX2ZpbGVQYXRoID0gU3Ry
aW5nKCk7CiAKICAgICAgICAgLy8gTlBQX1N0cmVhbUFzRmlsZSBjb3VsZCBjYWxsIE5QTl9EZXN0
cm95U3RyZWFtIGFuZCBkZXN0cm95IHRoZSBzdHJlYW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVhbS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5T
dHJlYW0uaAppbmRleCAzNjc4MDk3ODkwMTgyZmUyZTRjZmI4ZTFhMDcyMWU2YmQxYWZkNmJkLi40
MDc0MDc4ZDdhOGZiNTM4Y2ZmNDdkYzFhZGE0ZjlkMjBiNzBkMjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpblN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luU3RyZWFtLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBpbnQzMl90
IG1fb2Zmc2V0OwogCiAgICAgU3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgV2ViQ29yZTo6UGxhdGZv
cm1GaWxlSGFuZGxlIG1fZmlsZUhhbmRsZTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgbV9maWxlSGFuZGxlOwogICAgIAogICAgIC8vIFdoZXRoZXIgTlBQX05l
d1N0cmVhbSBoYXMgc3VjY2Vzc2Z1bGx5IGJlZW4gY2FsbGVkLgogICAgIGJvb2wgbV9pc1N0YXJ0
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
U2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggODAyNDFjOTVlMWFm
ODA2NzdhNzUwNGVjZGU5YzU5M2JmM2U5MWIwMS4uMWFlMmMzYzhiN2Q2MjIxNTI4ZjhhYjE0NWI0
YzhiYjdlYWQ2NzU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcApAQCAt
NTQsNyArNTQsNyBAQCBzdGF0aWMgSFRUUEJvZHkgdG9IVFRQQm9keShjb25zdCBGb3JtRGF0YSYg
Zm9ybURhdGEpCiAgICAgICAgICAgICBlbGVtZW50LmZpbGVTdGFydCA9IGZvcm1EYXRhRWxlbWVu
dC5tX2ZpbGVTdGFydDsKICAgICAgICAgICAgIGlmIChmb3JtRGF0YUVsZW1lbnQubV9maWxlTGVu
Z3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpCiAgICAgICAgICAgICAgICAgZWxlbWVu
dC5maWxlTGVuZ3RoID0gZm9ybURhdGFFbGVtZW50Lm1fZmlsZUxlbmd0aDsKLSAgICAgICAgICAg
IGlmIChmb3JtRGF0YUVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IGlu
dmFsaWRGaWxlVGltZSgpKQorICAgICAgICAgICAgaWYgKGZvcm1EYXRhRWxlbWVudC5tX2V4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1lKCkp
CiAgICAgICAgICAgICAgICAgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0g
Zm9ybURhdGFFbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAg
ICAgIGJyZWFrOwogCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIFJlZjxGb3JtRGF0YT4gdG9G
b3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxlOgotICAgICAgICAgICAg
Zm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVT
dGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZp
bGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUudmFsdWVfb3IoaW52YWxp
ZEZpbGVUaW1lKCkpKTsKKyAgICAgICAgICAgIGZvcm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxl
bWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3RhcnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1
ZV9vcihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lLnZhbHVlX29yKEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgpKSk7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBl
OjpCbG9iOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCBmMGFmZDJlZDNmYjYyNWQ0MzBmNzYxNGMx
MmJhMjVjOGZlMTgyNWI2Li45ZDgxOWNmYjUzN2M2OTlkNjU2YmIyZDZjMDY0ZWRlYWZkNmQyZjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTExLTAyICBDaHJp
c3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBBZGQgYSBGaWxl
U3lzdGVtIG5hbWVzcGFjZSB0byBGaWxlU3lzdGVtLmNwcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHA6Cisg
ICAgICAgICogU3RvcmFnZS9TdG9yYWdlU3luY01hbmFnZXIuY3BwOgorICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorCiAyMDE3LTEwLTMxICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIGFzeW5jaHJvbm91cyBSZXNv
dXJjZUhhbmRsZUNsaWVudCBjYWxscyBmb3IgV2ViS2l0MQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VBcmVhU3luYy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFTeW5jLmNwcAppbmRleCBiYTE1ZTRhNGRhMGJjMjMwOWY5
ZTJmMTc2MTQxYmY2YTYxM2QwMzBlLi40MDM5OTYwYjE0MGZjYjljNjNhNzZkNmQwNzcxM2EzYTMx
ODJjNWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFy
ZWFTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZUFyZWFT
eW5jLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFTeW5jOjpvcGVuRGF0
YWJhc2UoT3BlbkRhdGFiYXNlUGFyYW1UeXBlIG9wZW5pbmdTdHJhdGVneSkKIAogICAgIFN0cmlu
ZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5jTWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5hbWUo
bV9kYXRhYmFzZUlkZW50aWZpZXIpOwogCi0gICAgaWYgKCFmaWxlRXhpc3RzKGRhdGFiYXNlRmls
ZW5hbWUpICYmIG9wZW5pbmdTdHJhdGVneSA9PSBTa2lwSWZOb25FeGlzdGVudCkKKyAgICBpZiAo
IUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlbmFtZSkgJiYgb3BlbmluZ1N0cmF0
ZWd5ID09IFNraXBJZk5vbkV4aXN0ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZGF0
YWJhc2VGaWxlbmFtZS5pc0VtcHR5KCkpIHsKQEAgLTUyMSw3ICs1MjEsNyBAQCB2b2lkIFN0b3Jh
Z2VBcmVhU3luYzo6ZGVsZXRlRW1wdHlEYXRhYmFzZSgpCiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBkYXRhYmFzZUZpbGVuYW1lID0gbV9zeW5j
TWFuYWdlci0+ZnVsbERhdGFiYXNlRmlsZW5hbWUobV9kYXRhYmFzZUlkZW50aWZpZXIpOwotICAg
ICAgICAgICAgaWYgKCFkZWxldGVGaWxlKGRhdGFiYXNlRmlsZW5hbWUpKQorICAgICAgICAgICAg
aWYgKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRhdGFiYXNlRmlsZW5hbWUpKQogICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGRlbGV0ZSBkYXRhYmFzZSBmaWxlICVzXG4iLCBk
YXRhYmFzZUZpbGVuYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VTeW5jTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAppbmRl
eCBlZGM5ZWIzM2M1MDM1NTIwYWM1NDJkMzVkMGE1YmNhMjJmOWM3NmQyLi4zZThmZjY1ZWU2MGYy
NzRkYzkwNGViNThjMTE3NGVkNWNjMWE1NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVN5bmNNYW5hZ2VyLmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIFN0
b3JhZ2VTeW5jTWFuYWdlcjo6flN0b3JhZ2VTeW5jTWFuYWdlcigpCiAvLyBDYWxsZWQgb24gYSBi
YWNrZ3JvdW5kIHRocmVhZC4KIFN0cmluZyBTdG9yYWdlU3luY01hbmFnZXI6OmZ1bGxEYXRhYmFz
ZUZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQogewotICAgIGlmICgh
bWFrZUFsbERpcmVjdG9yaWVzKG1fcGF0aCkpIHsKKyAgICBpZiAoIUZpbGVTeXN0ZW06Om1ha2VB
bGxEaXJlY3RvcmllcyhtX3BhdGgpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlZCB0byBj
cmVhdGUgTG9jYWxTdG9yYWdlIGRhdGFiYXNlIHBhdGggJXMiLCBtX3BhdGgudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICByZXR1cm4gcGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KG1fcGF0aCwgZGF0YWJhc2VJZGVudGlmaWVyICsgIi5sb2NhbHN0
b3JhZ2UiKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fcGF0aCwgZGF0YWJhc2VJZGVudGlmaWVyICsgIi5sb2NhbHN0b3JhZ2UiKTsKIH0KIAogdm9p
ZCBTdG9yYWdlU3luY01hbmFnZXI6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+JiYgZnVuY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApp
bmRleCAxMzI2YzdkMTkzOTI1OWUzMmZmMmYxOGNjNTA4MjhjZDE5MWVhN2NkLi5kNWU1Zjc0Nzdl
ODMzZDI0Y2ViM2JhMTkyOGYxZDFjMTY5MmZlYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTEwNCwxNSArMTA0LDE1IEBAIFN0b3Jh
Z2VUcmFja2VyOjpTdG9yYWdlVHJhY2tlcihjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoKQogU3Ry
aW5nIFN0b3JhZ2VUcmFja2VyOjp0cmFja2VyRGF0YWJhc2VQYXRoKCkKIHsKICAgICBBU1NFUlQo
IW1fZGF0YWJhc2VNdXRleC50cnlMb2NrKCkpOwotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgIlN0b3JhZ2VUcmFja2VyLmRiIik7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VE
aXJlY3RvcnlQYXRoLCAiU3RvcmFnZVRyYWNrZXIuZGIiKTsKIH0KIAogc3RhdGljIGJvb2wgZW5z
dXJlRGF0YWJhc2VGaWxlRXhpc3RzKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGJvb2wgY3JlYXRl
SWZEb2VzTm90RXhpc3QpCiB7CiAgICAgaWYgKGNyZWF0ZUlmRG9lc05vdEV4aXN0KQotICAgICAg
ICByZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVzKGRpcmVjdG9yeU5hbWUoZmlsZU5hbWUpKTsKKyAg
ICAgICAgcmV0dXJuIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpk
aXJlY3RvcnlOYW1lKGZpbGVOYW1lKSk7CiAKLSAgICByZXR1cm4gZmlsZUV4aXN0cyhmaWxlTmFt
ZSk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZmlsZU5hbWUpOwogfQogCiB2
b2lkIFN0b3JhZ2VUcmFja2VyOjpvcGVuVHJhY2tlckRhdGFiYXNlKGJvb2wgY3JlYXRlSWZEb2Vz
Tm90RXhpc3QpCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0Zp
bGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgIFZlY3RvcjxTdHJpbmc+IHBhdGhzOwog
ICAgIHsKICAgICAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9kYXRhYmFzZU11dGV4KTsKLSAgICAg
ICAgcGF0aHMgPSBsaXN0RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgsICIqLmxvY2Fs
c3RvcmFnZSIpOworICAgICAgICBwYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobV9z
dG9yYWdlRGlyZWN0b3J5UGF0aCwgIioubG9jYWxzdG9yYWdlIik7CiAgICAgfQogCiAgICAgLy8g
VXNlIGEgY29weSBvZiBtX29yaWdpblNldCB0byBmaW5kIGV4cGlyZWQgZW50cmllcyBhbmQgdG8g
c2NoZWR1bGUgdGhlaXIKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpz
eW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSgpCiAgICAgICAgIGNvbnN0IFN0cmluZyYg
cGF0aCA9ICppdDsKIAogICAgICAgICBpZiAocGF0aC5sZW5ndGgoKSA+IGZpbGVFeHRlbnNpb24u
bGVuZ3RoKCkgJiYgcGF0aC5lbmRzV2l0aChmaWxlRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAg
U3RyaW5nIGZpbGUgPSBwYXRoR2V0RmlsZU5hbWUocGF0aCk7CisgICAgICAgICAgICBTdHJpbmcg
ZmlsZSA9IEZpbGVTeXN0ZW06OnBhdGhHZXRGaWxlTmFtZShwYXRoKTsKICAgICAgICAgICAgIFN0
cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZS5zdWJzdHJpbmcoMCwgZmlsZS5sZW5ndGgoKSAt
IGZpbGVFeHRlbnNpb24ubGVuZ3RoKCkpOwogICAgICAgICAgICAgaWYgKCFvcmlnaW5TZXRDb3B5
LmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAgICAgICAgICAgICAgIHN5bmNTZXRPcmln
aW5EZXRhaWxzKG9yaWdpbklkZW50aWZpZXIsIHBhdGgpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIHZv
aWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKICAgICAgICAgaWYgKCFj
YW5EZWxldGVPcmlnaW4oc3RhdGVtZW50LmdldENvbHVtblRleHQoMCkpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgZGVsZXRlRmlsZShzdGF0ZW1lbnQuZ2V0Q29sdW1uVGV4dCgx
KSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoc3RhdGVtZW50LmdldENvbHVtblRl
eHQoMSkpOwogCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fY2xp
ZW50TXV0ZXgpOwpAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNE
ZWxldGVBbGxPcmlnaW5zKCkKICAgICB9CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIGlmICgh
ZGVsZXRlRmlsZSh0cmFja2VyRGF0YWJhc2VQYXRoKCkpKSB7CisgICAgaWYgKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSkpIHsKICAgICAgICAgLy8gSW4gdGhl
IGNhc2Ugd2hlcmUgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRlbGV0ZSB0aGUgZGF0YWJhc2UgZmls
ZSAoZS5nIHNvbWUgb3RoZXIgcHJvZ3JhbQogICAgICAgICAvLyBsaWtlIGEgdmlydXMgc2Nhbm5l
ciBpcyBhY2Nlc3NpbmcgaXQpLCBtYWtlIHN1cmUgdG8gcmVtb3ZlIGFsbCBlbnRyaWVzLgogICAg
ICAgICBvcGVuVHJhY2tlckRhdGFiYXNlKGZhbHNlKTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lk
IFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9zdG9yYWdl
RGlyZWN0b3J5UGF0aCk7CisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJlY3RvcnkobV9z
dG9yYWdlRGlyZWN0b3J5UGF0aCk7CiAjZW5kaWYKIH0KIApAQCAtNTMzLDcgKzUzMyw3IEBAIHZv
aWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZGVsZXRlRmlsZShwYXRo
KTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHBhdGgpOwogICAgIAogICAgIGJvb2wgc2hv
dWxkRGVsZXRlVHJhY2tlckZpbGVzID0gZmFsc2U7CiAgICAgewpAQCAtNTQ4LDggKzU0OCw4IEBA
IHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyKQogI2VuZGlmCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKICNpZiAh
UExBVEZPUk0oSU9TKQotICAgICAgICBkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSk7
Ci0gICAgICAgIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9yeVBhdGgpOwor
ICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKHRyYWNrZXJEYXRhYmFzZVBhdGgoKSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5KG1fc3RvcmFnZURpcmVjdG9y
eVBhdGgpOwogI2VuZGlmCiAgICAgfQogCkBAIC02NDIsNyArNjQyLDcgQEAgbG9uZyBsb25nIFN0
b3JhZ2VUcmFja2VyOjpkaXNrVXNhZ2VGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBsb25nIGxvbmcgc2l6ZTsKLSAgICByZXR1cm4gZ2V0
RmlsZVNpemUocGF0aCwgc2l6ZSkgPyBzaXplIDogMDsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6
Z2V0RmlsZVNpemUocGF0aCwgc2l6ZSkgPyBzaXplIDogMDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDEzNjM3ZjYxMzM5NmE5ZDNk
YjFkY2FjZGNhYjU3YzNkNmFiZGM5ZmMuLjMyNTZjMTc0ZDMyMWY4ZGQ2M2I5ZjBiOThjMGU4MDRj
MmMyMDQ5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNy0xMS0wMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAg
ICAgICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogTWlzYy9XZWJOU0ZpbGVN
YW5hZ2VyRXh0cmFzLm1tOgorICAgICAgICAqIFN0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5t
bToKKwogMjAxNy0xMS0wMiAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgQWRkIHJlZmVyZW5jZXMgdG8gYnVnIDE3OTE2NyBpbiBGSVhNRSBjb21tZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvTWlzYy9XZWJOU0ZpbGVNYW5hZ2VyRXh0
cmFzLm1tCmluZGV4IGJlZmMzZTEzNDZjOTk0Njk4ZGRkM2NhNTdiYTE4ODc3ODI3ZTRlOTIuLjM1
NWRlYjAyMWQ0OTI4OGQ3NjlhYzk1MDEwMTY4NGZkMDlhYzdlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL01pc2MvV2ViTlNGaWxlTWFuYWdlckV4dHJhcy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9NaXNjL1dlYk5TRmlsZU1hbmFnZXJFeHRyYXMubW0KQEAg
LTQzLDcgKzQzLDcgQEAKIHsKICAgICBBU1NFUlQoVVJMU3RyaW5nKTsKICAgICBBU1NFUlQocGF0
aCk7Ci0gICAgV2ViQ29yZTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3RyaW5nLCByZWZlcnJl
cik7CisgICAgV2ViQ29yZTo6RmlsZVN5c3RlbTo6c2V0TWV0YWRhdGFVUkwocGF0aCwgVVJMU3Ry
aW5nLCByZWZlcnJlcik7CiB9CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oSU9TKQpAQCAtOTIsNyAr
OTIsNyBAQCBzdGF0aWMgQk9PTCBmaWxlRXhpc3RzKE5TU3RyaW5nICpwYXRoKQogI2lmIFBMQVRG
T1JNKElPUykKIC0gKE5TU3RyaW5nICopX3dlYmtpdF9jcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnlX
aXRoVGVtcGxhdGVQcmVmaXg6KE5TU3RyaW5nICopcHJlZml4CiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXgpOworICAgIHJldHVybiBXZWJDb3Jl
OjpGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkocHJlZml4KTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlUHJvdmlkZXIubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9TdG9yYWdlL1dlYkRhdGFi
YXNlUHJvdmlkZXIubW0KaW5kZXggNTc2ZDU3NWFjNTk5OWYyNTE0YWU4NjhlOWQ5NzA0ZWIzMmE5
ZjVhNy4uMDk5Mjk4YmUyOWZlOGE4NDI0ZWRiNGM5N2ViN2JkNTFmMTI4ZDVjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRl
ci5tbQpAQCAtMzMsOSArMzMsOSBAQCBTdHJpbmcgV2ViRGF0YWJhc2VQcm92aWRlcjo6aW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5UGF0aCgpCiAgICAgTlNVc2VyRGVmYXVsdHMgKmRlZmF1bHRzID0g
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXTsKICAgICBOU1N0cmluZyAqZGF0
YWJhc2VzRGlyZWN0b3J5ID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpXZWJEYXRhYmFzZURpcmVj
dG9yeURlZmF1bHRzS2V5XTsKICAgICBpZiAoIWRhdGFiYXNlc0RpcmVjdG9yeSB8fCAhW2RhdGFi
YXNlc0RpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICBk
YXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoQVND
SUlMaXRlcmFsKCJ+L0xpYnJhcnkvV2ViS2l0L0RhdGFiYXNlcy9fX19JbmRleGVkREIiKSwgW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CisgICAgICAgIGRhdGFiYXNl
c0RpcmVjdG9yeSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChBU0NJSUxpdGVyYWwoIn4vTGlicmFyeS9XZWJLaXQvRGF0YWJhc2VzL19fX0luZGV4ZWREQiIp
LCBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKICAgICBlbHNlCi0g
ICAgICAgIGRhdGFiYXNlc0RpcmVjdG9yeSA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZXNEaXJlY3RvcnksIEFTQ0lJTGl0ZXJhbCgiX19fSW5kZXhlZERCIikpOwor
ICAgICAgICBkYXRhYmFzZXNEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VzRGlyZWN0b3J5LCBBU0NJSUxpdGVyYWwoIl9fX0lu
ZGV4ZWREQiIpKTsKICAgICAKICAgICByZXR1cm4gW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdC
eVN0YW5kYXJkaXppbmdQYXRoXTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwppbmRleCBk
ZmNlYzFmM2YyMjg5NGFkNTM2YWQ0YjNiZmJmNTVlYWFkODE5NzY3Li40NzE1YTE0ZGEwODgwMjky
YzRhMWNjNTNjMzM3MzM5YmEzNGQ4ZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTctMTEtMDIgIENocmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlk
QHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIEZpbGVTeXN0ZW0gbmFtZXNwYWNlIHRvIEZpbGVT
eXN0ZW0uY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzkwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAqIFBsdWdpbnMvUGx1Z2luUGFj
a2FnZS5jcHA6CisgICAgICAgICogUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAq
IFBsdWdpbnMvUGx1Z2luU3RyZWFtLmg6CisgICAgICAgICogV2ViQXBwbGljYXRpb25DYWNoZS5j
cHA6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBXZWJEb3du
bG9hZEN1cmwuY3BwOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKwogMjAxNy0xMC0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkIGFmdGVyIHIyMjQyNjAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5j
cHAKaW5kZXggYjBlNjA2ZTk0MzM1MzYwZmM4ODM0MjYzNzkxM2M2YTVkYmZmYjExNC4uMzI4NTA2
ZjBhYzY0MmRkOWMxNzJlZDAzNjU5YTM5NTdmNGQ1NmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTEyNyw3ICsxMjcs
NyBAQCBib29sIFBsdWdpbkRhdGFiYXNlOjpyZWZyZXNoKCkKICAgICBhdXRvIHBhdGhzRW5kID0g
cGF0aHMuZW5kKCk7CiAgICAgZm9yIChhdXRvIGl0ID0gcGF0aHMuYmVnaW4oKTsgaXQgIT0gcGF0
aHNFbmQ7ICsraXQpIHsKICAgICAgICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICAgICAgaWYg
KCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQsIGxhc3RNb2RpZmllZCkpCisgICAgICAgIGlm
ICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKml0LCBsYXN0TW9kaWZpZWQp
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgcGF0aHNXaXRoVGltZXMuYWRkKCpp
dCwgbGFzdE1vZGlmaWVkKTsKQEAgLTMxMywxMCArMzEzLDEwIEBAIHZvaWQgUGx1Z2luRGF0YWJh
c2U6OnNldFByZWZlcnJlZFBsdWdpbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFBsdWdpCiBib29sIFBsdWdpbkRhdGFiYXNlOjpmaWxlRXhpc3RzQW5kSXNOb3REaXNhYmxlZChj
b25zdCBTdHJpbmcmIGZpbGVQYXRoKSBjb25zdAogewogICAgIC8vIFNraXAgcGx1Z2luIGZpbGVz
IHRoYXQgYXJlIGRpc2FibGVkIGJ5IGZpbGVuYW1lLgotICAgIGlmIChtX2Rpc2FibGVkUGx1Z2lu
RmlsZXMuY29udGFpbnMocGF0aEdldEZpbGVOYW1lKGZpbGVQYXRoKSkpCisgICAgaWYgKG1fZGlz
YWJsZWRQbHVnaW5GaWxlcy5jb250YWlucyhGaWxlU3lzdGVtOjpwYXRoR2V0RmlsZU5hbWUoZmls
ZVBhdGgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGZpbGVFeGlzdHMo
ZmlsZVBhdGgpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZpbGVQYXRoKTsK
IH0KIAogdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0RGVsZXRlZFBsdWdpbnMoUGx1Z2luU2V0JiBw
bHVnaW5zKSBjb25zdApAQCAtMzgyLDcgKzM4Miw3IEBAIFZlY3RvcjxTdHJpbmc+IFBsdWdpbkRh
dGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMoKQogewogICAgIFZlY3RvcjxTdHJpbmc+
IHBhdGhzOwogCi0gICAgU3RyaW5nIHVzZXJQbHVnaW5QYXRoID0gaG9tZURpcmVjdG9yeVBhdGgo
KTsKKyAgICBTdHJpbmcgdXNlclBsdWdpblBhdGggPSBGaWxlU3lzdGVtOjpob21lRGlyZWN0b3J5
UGF0aCgpOwogICAgIHVzZXJQbHVnaW5QYXRoLmFwcGVuZChTdHJpbmcoIlxcQXBwbGljYXRpb24g
RGF0YVxcTW96aWxsYVxccGx1Z2lucyIpKTsKICAgICBwYXRocy5hcHBlbmQodXNlclBsdWdpblBh
dGgpOwogCkBAIC0zOTEsNyArMzkxLDcgQEAgVmVjdG9yPFN0cmluZz4gUGx1Z2luRGF0YWJhc2U6
OmRlZmF1bHRQbHVnaW5EaXJlY3RvcmllcygpCiAKIGJvb2wgUGx1Z2luRGF0YWJhc2U6OmlzUHJl
ZmVycmVkUGx1Z2luRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBTdHJpbmcg
cHJlZmVycmVkUGF0aCA9IGhvbWVEaXJlY3RvcnlQYXRoKCk7CisgICAgU3RyaW5nIHByZWZlcnJl
ZFBhdGggPSBGaWxlU3lzdGVtOjpob21lRGlyZWN0b3J5UGF0aCgpOwogCiAgICAgcHJlZmVycmVk
UGF0aC5hcHBlbmQoU3RyaW5nKCJcXEFwcGxpY2F0aW9uIERhdGFcXE1vemlsbGFcXHBsdWdpbnMi
KSk7CiAKQEAgLTQwOCw3ICs0MDgsNyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpnZXRQbHVnaW5Q
YXRoc0luRGlyZWN0b3JpZXMoSGFzaFNldDxTdHJpbmc+JiBwYXRocykgY29uc3QKIAogICAgIGF1
dG8gZGlyc0VuZCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuZW5kKCk7CiAgICAgZm9yIChhdXRvIGRJ
dCA9IG1fcGx1Z2luRGlyZWN0b3JpZXMuYmVnaW4oKTsgZEl0ICE9IGRpcnNFbmQ7ICsrZEl0KSB7
Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdpblBhdGhzID0gbGlzdERpcmVjdG9yeSgqZEl0
LCBmaWxlTmFtZUZpbHRlcik7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBsdWdpblBhdGhzID0g
RmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeSgqZEl0LCBmaWxlTmFtZUZpbHRlcik7CiAgICAgICAg
IGF1dG8gcGx1Z2luc0VuZCA9IHBsdWdpblBhdGhzLmVuZCgpOwogICAgICAgICBmb3IgKGF1dG8g
cEl0ID0gcGx1Z2luUGF0aHMuYmVnaW4oKTsgcEl0ICE9IHBsdWdpbnNFbmQ7ICsrcEl0KSB7CiAg
ICAgICAgICAgICBpZiAoIWZpbGVFeGlzdHNBbmRJc05vdERpc2FibGVkKCpwSXQpKQpAQCAtNDIz
LDE0ICs0MjMsMTQgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6Z2V0UGx1Z2luUGF0aHNJbkRpcmVj
dG9yaWVzKEhhc2hTZXQ8U3RyaW5nPiYgcGF0aHMpIGNvbnN0CiAKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX01FVEFEQVRBX0NBQ0hFKQogCi1zdGF0aWMgdm9pZCBmaWxsQnVmZmVyV2l0aENv
bnRlbnRzT2ZGaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBWZWN0b3I8Y2hhcj4mIGJ1ZmZl
cikKK3N0YXRpYyB2b2lkIGZpbGxCdWZmZXJXaXRoQ29udGVudHNPZkZpbGUoRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUsIFZlY3RvcjxjaGFyPiYgYnVmZmVyKQogewogICAgIHNp
emVfdCBidWZmZXJTaXplID0gMDsKICAgICBzaXplX3QgYnVmZmVyQ2FwYWNpdHkgPSAxMDI0Owog
ICAgIGJ1ZmZlci5yZXNpemUoYnVmZmVyQ2FwYWNpdHkpOwogCiAgICAgZG8gewotICAgICAgICBi
dWZmZXJTaXplICs9IHJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6
ZSwgYnVmZmVyQ2FwYWNpdHkgLSBidWZmZXJTaXplKTsKKyAgICAgICAgYnVmZmVyU2l6ZSArPSBG
aWxlU3lzdGVtOjpyZWFkRnJvbUZpbGUoZmlsZSwgYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclNpemUs
IGJ1ZmZlckNhcGFjaXR5IC0gYnVmZmVyU2l6ZSk7CiAgICAgICAgIGlmIChidWZmZXJTaXplID09
IGJ1ZmZlckNhcGFjaXR5KSB7CiAgICAgICAgICAgICBpZiAoYnVmZmVyQ2FwYWNpdHkgPCBtYXhp
bXVtUGVyc2lzdGVudFBsdWdpbk1ldGFkYXRhQ2FjaGVTaXplKSB7CiAgICAgICAgICAgICAgICAg
YnVmZmVyQ2FwYWNpdHkgKj0gMjsKQEAgLTQ3OCwxMSArNDc4LDExIEBAIHZvaWQgUGx1Z2luRGF0
YWJhc2U6OmxvYWRQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgaWYgKCFpc1BlcnNpc3Rl
bnRNZXRhZGF0YUNhY2hlRW5hYmxlZCgpIHx8IHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgp
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIGZp
bGU7Ci0gICAgU3RyaW5nIGFic29sdXRlQ2FjaGVQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLCBwZXJzaXN0ZW50UGx1Z2luTWV0YWRh
dGFDYWNoZUZpbGVuYW1lKTsKLSAgICBmaWxlID0gb3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgs
IE9wZW5Gb3JSZWFkKTsKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsK
KyAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCksIHBlcnNpc3RlbnRQbHVn
aW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOworICAgIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmls
ZShhYnNvbHV0ZUNhY2hlUGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOwogCi0gICAgaWYg
KCFpc0hhbmRsZVZhbGlkKGZpbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxp
ZChmaWxlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTWFyayBjYWNoZSBhcyBsb2FkZWQg
cmVnYXJkbGVzcyBvZiBzdWNjZXNzIG9yIGZhaWx1cmUuIElmCkBAIC00OTEsMTEgKzQ5MSwxMSBA
QCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogCiAg
ICAgVmVjdG9yPGNoYXI+IGZpbGVDb250ZW50czsKICAgICBmaWxsQnVmZmVyV2l0aENvbnRlbnRz
T2ZGaWxlKGZpbGUsIGZpbGVDb250ZW50cyk7Ci0gICAgY2xvc2VGaWxlKGZpbGUpOworICAgIEZp
bGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKIAogICAgIGlmIChmaWxlQ29udGVudHMuc2l6ZSgp
IDwgMiB8fCBmaWxlQ29udGVudHMuZmlyc3QoKSAhPSBzY2hlbWFWZXJzaW9uIHx8IGZpbGVDb250
ZW50cy5sYXN0KCkgIT0gJ1wwJykgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byByZWFk
IHBsdWdpbiBtZXRhZGF0YSBjYWNoZTogY29ycnVwdCBzY2hlbWEiKTsKLSAgICAgICAgZGVsZXRl
RmlsZShhYnNvbHV0ZUNhY2hlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
YWJzb2x1dGVDYWNoZVBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTgsMTMg
KzUxOCwxMyBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjpsb2FkUGVyc2lzdGVudE1ldGFkYXRhQ2Fj
aGUoKQogICAgICAgICAgICAgICAmJiByZWFkVVRGOFN0cmluZyhkZXNjLCBidWZmZXJQb3MsIGVu
ZCkKICAgICAgICAgICAgICAgJiYgcmVhZFVURjhTdHJpbmcobWltZURlc2MsIGJ1ZmZlclBvcywg
ZW5kKSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIHJlYWQgcGx1Z2luIG1l
dGFkYXRhIGNhY2hlOiBjb3JydXB0IGRhdGEiKTsKLSAgICAgICAgICAgIGRlbGV0ZUZpbGUoYWJz
b2x1dGVDYWNoZVBhdGgpOworICAgICAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShhYnNv
bHV0ZUNhY2hlUGF0aCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBTa2lwIG1ldGFkYXRhIHRoYXQgcG9pbnRzIHRvIHBsdWdpbnMgZnJvbSBkaXJlY3Rvcmll
cyB0aGF0CiAgICAgICAgIC8vIGFyZSBub3QgcGFydCBvZiBwbHVnaW4gZGlyZWN0b3J5IGxpc3Qg
YW55bW9yZS4KLSAgICAgICAgU3RyaW5nIHBsdWdpbkRpcmVjdG9yeU5hbWUgPSBkaXJlY3RvcnlO
YW1lKHBhdGgpOworICAgICAgICBTdHJpbmcgcGx1Z2luRGlyZWN0b3J5TmFtZSA9IEZpbGVTeXN0
ZW06OmRpcmVjdG9yeU5hbWUocGF0aCk7CiAgICAgICAgIGlmIChtX3BsdWdpbkRpcmVjdG9yaWVz
LmZpbmQocGx1Z2luRGlyZWN0b3J5TmFtZSkgPT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCkBAIC01NDEsMTYgKzU0MSwxNiBAQCB2b2lkIFBsdWdpbkRhdGFiYXNlOjps
b2FkUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGUoKQogICAgIG1fcGx1Z2luUGF0aHNXaXRoVGltZXMu
c3dhcChjYWNoZWRQbHVnaW5QYXRoc1dpdGhUaW1lcyk7CiB9CiAKLXN0YXRpYyBib29sIHdyaXRl
VVRGOFN0cmluZyhQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcp
CitzdGF0aWMgYm9vbCB3cml0ZVVURjhTdHJpbmcoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGZpbGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIENTdHJpbmcgdXRmOFN0cmlu
ZyA9IHN0cmluZy51dGY4KCk7CiAgICAgaW50IGxlbmd0aCA9IHV0ZjhTdHJpbmcubGVuZ3RoKCkg
KyAxOwotICAgIHJldHVybiB3cml0ZVRvRmlsZShmaWxlLCB1dGY4U3RyaW5nLmRhdGEoKSwgbGVu
Z3RoKSA9PSBsZW5ndGg7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUs
IHV0ZjhTdHJpbmcuZGF0YSgpLCBsZW5ndGgpID09IGxlbmd0aDsKIH0KIAotc3RhdGljIGJvb2wg
d3JpdGVUaW1lKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlLCBjb25zdCB0aW1lX3QmIHRpbWUpCitz
dGF0aWMgYm9vbCB3cml0ZVRpbWUoRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUs
IGNvbnN0IHRpbWVfdCYgdGltZSkKIHsKLSAgICByZXR1cm4gd3JpdGVUb0ZpbGUoZmlsZSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oJnRpbWUpLCBzaXplb2YodGltZV90KSkgPT0gc2l6
ZW9mKHRpbWVfdCk7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KCZ0aW1lKSwgc2l6ZW9mKHRpbWVfdCkpID09IHNp
emVvZih0aW1lX3QpOwogfQogCiB2b2lkIFBsdWdpbkRhdGFiYXNlOjp1cGRhdGVQZXJzaXN0ZW50
TWV0YWRhdGFDYWNoZSgpCkBAIC01NTgsMjYgKzU1OCwyNiBAQCB2b2lkIFBsdWdpbkRhdGFiYXNl
Ojp1cGRhdGVQZXJzaXN0ZW50TWV0YWRhdGFDYWNoZSgpCiAgICAgaWYgKCFpc1BlcnNpc3RlbnRN
ZXRhZGF0YUNhY2hlRW5hYmxlZCgpIHx8IHBlcnNpc3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbWFrZUFsbERpcmVjdG9yaWVzKHBlcnNp
c3RlbnRNZXRhZGF0YUNhY2hlUGF0aCgpKTsKLSAgICBTdHJpbmcgYWJzb2x1dGVDYWNoZVBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVQYXRoKCks
IHBlcnNpc3RlbnRQbHVnaW5NZXRhZGF0YUNhY2hlRmlsZW5hbWUpOwotICAgIGRlbGV0ZUZpbGUo
YWJzb2x1dGVDYWNoZVBhdGgpOworICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhw
ZXJzaXN0ZW50TWV0YWRhdGFDYWNoZVBhdGgoKSk7CisgICAgU3RyaW5nIGFic29sdXRlQ2FjaGVQ
YXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBlcnNpc3RlbnRNZXRh
ZGF0YUNhY2hlUGF0aCgpLCBwZXJzaXN0ZW50UGx1Z2luTWV0YWRhdGFDYWNoZUZpbGVuYW1lKTsK
KyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKIAogICAgIGlm
IChtX3BsdWdpbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBQbGF0Zm9ybUZp
bGVIYW5kbGUgZmlsZTsKLSAgICBmaWxlID0gb3BlbkZpbGUoYWJzb2x1dGVDYWNoZVBhdGgsIE9w
ZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGU7Cisg
ICAgZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGFic29sdXRlQ2FjaGVQYXRoLCBGaWxlU3lz
dGVtOjpPcGVuRm9yV3JpdGUpOwogCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlkKGZpbGUpKSB7Cisg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKGZpbGUpKSB7CiAgICAgICAgIExPR19F
UlJPUigiVW5hYmxlIHRvIG9wZW4gcGx1Z2luIG1ldGFkYXRhIGNhY2hlIGZvciBzYXZpbmciKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNoYXIgbG9jYWxTY2hlbWFWZXJzaW9uID0g
c2NoZW1hVmVyc2lvbjsKLSAgICBpZiAod3JpdGVUb0ZpbGUoZmlsZSwgJmxvY2FsU2NoZW1hVmVy
c2lvbiwgMSkgIT0gMSkgeworICAgIGlmIChGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCAm
bG9jYWxTY2hlbWFWZXJzaW9uLCAxKSAhPSAxKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxl
IHRvIHdyaXRlIHBsdWdpbiBtZXRhZGF0YSBjYWNoZSBzY2hlbWEiKTsKLSAgICAgICAgY2xvc2VG
aWxlKGZpbGUpOwotICAgICAgICBkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxl
dGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NTg5LDEzICs1ODksMTMgQEAgdm9pZCBQbHVnaW5EYXRhYmFzZTo6dXBkYXRlUGVyc2lzdGVudE1l
dGFkYXRhQ2FjaGUoKQogICAgICAgICAgICAgICAmJiB3cml0ZVVURjhTdHJpbmcoZmlsZSwgKCpp
dCktPmRlc2NyaXB0aW9uKCkpCiAgICAgICAgICAgICAgICYmIHdyaXRlVVRGOFN0cmluZyhmaWxl
LCAoKml0KS0+ZnVsbE1JTUVEZXNjcmlwdGlvbigpKSkpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIHdyaXRlIHBsdWdpbiBtZXRhZGF0YSB0byBjYWNoZSIpOwotICAgICAgICAg
ICAgY2xvc2VGaWxlKGZpbGUpOwotICAgICAgICAgICAgZGVsZXRlRmlsZShhYnNvbHV0ZUNhY2hl
UGF0aCk7CisgICAgICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGFic29sdXRlQ2FjaGVQYXRoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIGNsb3NlRmlsZShmaWxlKTsKKyAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CiB9CiAKIGJvb2wgUGx1Z2luRGF0YWJhc2U6
OmlzUGVyc2lzdGVudE1ldGFkYXRhQ2FjaGVFbmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwCmluZGV4IDdkZGUyY2IwMjc3MWVh
OTFjZDRiMTY3YjM3ODE2MjkxNmZlMWZjMGUuLjZhZmY1MWQwNjk2ZTY3NDMxZTE1YzQ5ZjY4ODA5
NWEwNmY1NWY4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMv
UGx1Z2luUGFja2FnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9Q
bHVnaW5QYWNrYWdlLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIFBsdWdpblBhY2thZ2U6OlBsdWdp
blBhY2thZ2UoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCB0aW1lX3QmIGxhc3RNb2RpZmllZCkK
ICAgICAsIG1faW5mb0lzRnJvbUNhY2hlKHRydWUpCiAjZW5kaWYKIHsKLSAgICBtX2ZpbGVOYW1l
ID0gcGF0aEdldEZpbGVOYW1lKG1fcGF0aCk7CisgICAgbV9maWxlTmFtZSA9IEZpbGVTeXN0ZW06
OnBhdGhHZXRGaWxlTmFtZShtX3BhdGgpOwogICAgIG1fcGFyZW50RGlyZWN0b3J5ID0gbV9wYXRo
LmxlZnQobV9wYXRoLmxlbmd0aCgpIC0gbV9maWxlTmFtZS5sZW5ndGgoKSAtIDEpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAKaW5k
ZXggMTM4N2ZhYmIwMTBjZDNjMzBmMmU3YzYzZjEzMzk2ZWUzNzUwMmM0Yi4uYzY5ZTFlOTAxODU1
Y2M0MmJiMDczMzBjOTZkZDJjYWMzZWY3ZDM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQbHVnaW5T
dHJlYW06OlBsdWdpblN0cmVhbShQbHVnaW5TdHJlYW1DbGllbnQqIGNsaWVudCwgRnJhbWUqIGZy
YW1lLCBjb25zdCBSZXNvdQogICAgICwgbV9zdHJlYW1TdGF0ZShTdHJlYW1CZWZvcmVTdGFydGVk
KQogICAgICwgbV9sb2FkTWFudWFsbHkoZmFsc2UpCiAgICAgLCBtX2RlbGF5RGVsaXZlcnlUaW1l
cigqdGhpcywgJlBsdWdpblN0cmVhbTo6ZGVsYXlEZWxpdmVyeVRpbWVyRmlyZWQpCi0gICAgLCBt
X3RlbXBGaWxlSGFuZGxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgLCBtX3RlbXBG
aWxlSGFuZGxlKEZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCiAgICAgLCBt
X3BsdWdpbkZ1bmNzKHBsdWdpbkZ1bmNzKQogICAgICwgbV9pbnN0YW5jZShpbnN0YW5jZSkKICAg
ICAsIG1fcXVpcmtzKHF1aXJrcykKQEAgLTIxMiwxMCArMjEyLDEwIEBAIHZvaWQgUGx1Z2luU3Ry
ZWFtOjpzdGFydFN0cmVhbSgpCiAgICAgaWYgKG1fdHJhbnNmZXJNb2RlID09IE5QX05PUk1BTCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoIldLUCIs
IG1fdGVtcEZpbGVIYW5kbGUpOworICAgIG1fcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3Jh
cnlGaWxlKCJXS1AiLCBtX3RlbXBGaWxlSGFuZGxlKTsKIAogICAgIC8vIFNvbWV0aGluZyB3ZW50
IHdyb25nLCBjYW5jZWwgbG9hZGluZyB0aGUgc3RyZWFtCi0gICAgaWYgKCFpc0hhbmRsZVZhbGlk
KG1fdGVtcEZpbGVIYW5kbGUpKQorICAgIGlmICghRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZCht
X3RlbXBGaWxlSGFuZGxlKSkKICAgICAgICAgY2FuY2VsQW5kRGVzdHJveVN0cmVhbShOUFJFU19O
RVRXT1JLX0VSUik7CiB9CiAKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6
ZGVzdHJveVN0cmVhbSgpCiAgICAgQVNTRVJUKG1fcmVhc29uICE9IFdlYlJlYXNvbk5vbmUpOwog
ICAgIEFTU0VSVCghbV9kZWxpdmVyeURhdGEgfHwgbV9kZWxpdmVyeURhdGEtPnNpemUoKSA9PSAw
KTsKIAotICAgIGNsb3NlRmlsZShtX3RlbXBGaWxlSGFuZGxlKTsKKyAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUobV90ZW1wRmlsZUhhbmRsZSk7CiAKICAgICBib29sIG5ld1N0cmVhbUNhbGxlZCA9
IG1fc3RyZWFtLm5kYXRhOwogCkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBQbHVnaW5TdHJlYW06
OmRlc3Ryb3lTdHJlYW0oKQogICAgICAgICBtX2NsaWVudC0+c3RyZWFtRGlkRmluaXNoTG9hZGlu
Zyh0aGlzKTsKIAogICAgIGlmICghbV9wYXRoLmlzTnVsbCgpKQotICAgICAgICBkZWxldGVGaWxl
KG1fcGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9wYXRoKTsKIH0KIAog
dm9pZCBQbHVnaW5TdHJlYW06OmRlbGF5RGVsaXZlcnlUaW1lckZpcmVkKCkKQEAgLTQ0MCw4ICs0
NDAsOCBAQCB2b2lkIFBsdWdpblN0cmVhbTo6ZGlkUmVjZWl2ZURhdGEoTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhcgogICAgICAgICBkZWxpdmVyRGF0YSgpOwog
ICAgIH0KIAotICAgIGlmIChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0b3BwZWQgJiYgaXNIYW5k
bGVWYWxpZChtX3RlbXBGaWxlSGFuZGxlKSkgewotICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0g
d3JpdGVUb0ZpbGUobV90ZW1wRmlsZUhhbmRsZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBpZiAobV9z
dHJlYW1TdGF0ZSAhPSBTdHJlYW1TdG9wcGVkICYmIEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
bV90ZW1wRmlsZUhhbmRsZSkpIHsKKyAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKG1fdGVtcEZpbGVIYW5kbGUsIGRhdGEsIGxlbmd0aCk7CiAgICAgICAg
IGlmIChieXRlc1dyaXR0ZW4gIT0gbGVuZ3RoKQogICAgICAgICAgICAgY2FuY2VsQW5kRGVzdHJv
eVN0cmVhbShOUFJFU19ORVRXT1JLX0VSUik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5TdHJlYW0uaCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1BsdWdpbnMvUGx1Z2luU3RyZWFtLmgKaW5kZXggM2I2YzcxMDVmMTA5NGIwYTAzYTBm
YjNhNjEwZTc2MzljNThlZDJlNC4uMWU1YWYzMGVlMzcxOWIyZDUxMTAzYzZiZDQ4ZjU1OWRkOGI2
YThjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5T
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVh
bS5oCkBAIC0xMDUsNyArMTA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxWZWN0b3I8Y2hhcj4+IG1fZGVsaXZlcnlEYXRhOwogCi0gICAgICAgIFBs
YXRmb3JtRmlsZUhhbmRsZSBtX3RlbXBGaWxlSGFuZGxlOworICAgICAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgbV90ZW1wRmlsZUhhbmRsZTsKIAogICAgICAgICBjb25zdCBOUFBs
dWdpbkZ1bmNzKiBtX3BsdWdpbkZ1bmNzOwogICAgICAgICBOUFAgbV9pbnN0YW5jZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggZGNk
NTRhOGI5MzI2NTY3ZDUxNmQ1NWQ0YzliMGM2OTY5ZTRlZjM5NC4uMWVhOTAxNzhhZDhkMzhmMjQw
ODc3NTc3MmI5NzkyNTEzYWNhNDAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV2ViQXBwbGljYXRpb25D
YWNoZSogV2ViQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQogCiBzdGF0aWMgU3Ry
aW5nIGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIHsKLSAgICBTdHJpbmcgcGF0aCA9IGxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOworICAgIFN0cmluZyBwYXRoID0gRmlsZVN5c3Rl
bTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCk7CiAKICNpZiBVU0UoQ0YpCiAg
ICAgYXV0byBjYWNoZURpcmVjdG9yeVByZWZlcmVuY2UgPSBhZG9wdENGKENGUHJlZmVyZW5jZXND
b3B5QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRzS2V5LCBXZWJQcmVmZXJlbmNlczo6
YXBwbGljYXRpb25JZCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJh
c2VNYW5hZ2VyLmNwcAppbmRleCA5YzQ2ZjRiMjI0NzIwYzI3YmYxNDk5MjVjMjUwYjgwN2U3NjVh
MDJhLi5mYjU0NDA4MDIwYTA3MjM1YWY2YWU0ZTQ1Y2JmMjFhMjk0OGU0YTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTQyOCw3ICs0
MjgsNyBAQCBzdGF0aWMgV1RGOjpTdHJpbmcgZGF0YWJhc2VzRGlyZWN0b3J5KCkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihkaXJlY3RvcnlQcmVmLmdldCgpKTsKICNl
bmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChXZWJD
b3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgIkRhdGFiYXNlcyIpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCks
ICJEYXRhYmFzZXMiKTsKIH0KIAogdm9pZCBXZWJLaXRJbml0aWFsaXplV2ViRGF0YWJhc2VzSWZO
ZWNlc3NhcnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxv
YWRDdXJsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ3VybC5jcHAK
aW5kZXggMTYwZTliYmM1YjFkNDVmZTk2ZGM2YjdhNjJjZGY0M2E2OWEwMzBiOS4uODczMjc3OGQ5
ZDgxMjAzZTFlNzdmMGM0YzYzMzA3M2E2OGFhNjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWRDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb3dubG9hZEN1cmwuY3BwCkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBXZWJEb3du
bG9hZDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogCiAgICAgICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3Rl
ZEZpbGVuYW1lKCk7CiAgICAgICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShyZXNwb25zZS51
cmwoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IEZpbGVTeXN0
ZW06OnBhdGhHZXRGaWxlTmFtZShyZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIHN1
Z2dlc3RlZEZpbGVuYW1lID0gZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHN1Z2dlc3RlZEZpbGVu
YW1lKTsKICAgICAgICAgQlN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZUJTVFIoc3VnZ2VzdGVkRmls
ZW5hbWUpOwogICAgICAgICBtX2RlbGVnYXRlLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSh0aGlzLCBzdWdnZXN0ZWRGaWxlbmFtZUJTVFIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IGY0NDYxYjZlZjE4MGNmYTU4Njc5Yzdl
NzRiY2M4MGZmNjkyYmFkMzIuLmYxMTUwZWU3MmI4MjUxZDBiYjhjYmI4MDZmNmU3MTExMTE3YWZj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgdXNpbmcgc3RkOjpudW1lcmljX2xpbWl0czsKIAogc3RhdGljIGNvbnN0IFN0
cmluZyYgb2xkUHJlZmVyZW5jZXNQYXRoKCkKIHsKLSAgICBzdGF0aWMgU3RyaW5nIHBhdGggPSBw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQocm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKSwgIldlYktpdFByZWZlcmVuY2VzLnBsaXN0Iik7CisgICAgc3RhdGljIFN0cmluZyBwYXRo
ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnJvYW1p
bmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksICJXZWJLaXRQcmVmZXJlbmNlcy5wbGlz
dCIpOwogICAgIHJldHVybiBwYXRoOwogfQogCkBAIC01MTYsNyArNTE2LDcgQEAgdm9pZCBXZWJQ
cmVmZXJlbmNlczo6bWlncmF0ZVdlYktpdFByZWZlcmVuY2VzVG9DRlByZWZlcmVuY2VzKCkKIAog
ICAgIGNvcHlXZWJLaXRQcmVmZXJlbmNlc1RvQ0ZQcmVmZXJlbmNlcyhzdGF0aWNfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KHBsaXN0LmdldCgpKSk7CiAKLSAgICBkZWxldGVGaWxlKG9sZFByZWZlcmVu
Y2VzUGF0aCgpKTsKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG9sZFByZWZlcmVuY2VzUGF0
aCgpKTsKIH0KIAogdm9pZCBXZWJQcmVmZXJlbmNlczo6Y29weVdlYktpdFByZWZlcmVuY2VzVG9D
RlByZWZlcmVuY2VzKENGRGljdGlvbmFyeVJlZiBkaWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCA3NDRiNDM1YTRjZDU1OTM3ZjNmMjMzMDQxYTRkZDRmNzI5ZjgzZmZiLi4z
MTQ5OWFhZmY3MDc2Y2M1ZDUxM2IwYjZiZjVhNWZlMDJkODZkYjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcApAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2Fj
aGVNb2RlbChXZWJDYWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgICAgIGlmIChwcmVmZXJlbmNl
ICYmIChDRlN0cmluZ0dldFR5cGVJRCgpID09IENGR2V0VHlwZUlEKHByZWZlcmVuY2UuZ2V0KCkp
KSkKICAgICAgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkgPSBhZG9wdENGKHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihwcmVmZXJlbmNlLmxlYWtSZWYoKSkpOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGNmdXJsQ2Fj
aGVEaXJlY3RvcnkgPSBXZWJDb3JlOjpGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpOwogICAgIH0KICAgICBjYWNoZURpcmVjdG9y
eSA9IFN0cmluZyhjZnVybENhY2hlRGlyZWN0b3J5LmdldCgpKTsKICAgICBDRkluZGV4IGNhY2hl
TWVtb3J5Q2FwYWNpdHkgPSAwOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDY4ZTMyYmY5YWQyNGZiMWM3M2RmNmVjMTdiODRhYjQzYmJjMWVkNjMu
LmMzMjMzMmY2M2ZlMGMxMjZhM2RjNjFiODNlMDQwOWQ0ZTgyMzZjNzcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
Ny0xMS0wMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAg
ICAgQWRkIGEgRmlsZVN5c3RlbSBuYW1lc3BhY2UgdG8gRmlsZVN5c3RlbS5jcHAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTA2MworCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXJUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY29jb2EvRGF0YWJhc2VUcmFja2VyVGVzdC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorCiAyMDE3LTExLTAyICBDYXJsb3Mg
QWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVd
W0pIQnVpbGRdIFVwZGF0ZSBXUEVCYWNrZW5kIGFuZCBXUEVCYWNrZW5kLW1lc2EKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IGZkZTFmZTEwMzgwMjgy
MmM1MTcxZjg0YjFlMmYwZGM1MWNlNzI3ZmUuLjBiNTllYTE3MzgyMzFlMDFmMTczYWNmZGVmNjJi
ODEwNTQ5OWE3MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVu
ZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIHN0YXRpYyBTdHJpbmcgbGlicmFyeVBhdGhGb3JEdW1w
UmVuZGVyVHJlZSgpCiAgICAgICAgIHJldHVybiBTdHJpbmcgKHBhdGguZGF0YSgpLCBwYXRoLmxl
bmd0aCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmxvY2Fs
VXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpOwogfQogI2VuZGlmCiAKQEAgLTkxMiw3ICs5
MTIsNyBAQCBzdGF0aWMgdm9pZCBzZXRDYWNoZUZvbGRlcigpCiAKICAgICBDT01QdHI8SVdlYkNh
Y2hlPiB3ZWJDYWNoZTsKICAgICBpZiAoU1VDQ0VFREVEKFdlYktpdENyZWF0ZUluc3RhbmNlKENM
U0lEX1dlYkNhY2hlLCAwLCBJSURfSVdlYkNhY2hlLCAodm9pZCoqKSZ3ZWJDYWNoZSkpKSB7Ci0g
ICAgICAgIF9ic3RyX3QgY2FjaGVGb2xkZXIgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobGlicmFyeVBhdGgsICJMb2NhbENhY2hlIikudXRmOCgpLmRhdGEoKTsKKyAgICAgICAg
X2JzdHJfdCBjYWNoZUZvbGRlciA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkxvY2FsQ2FjaGUiKS51dGY4KCkuZGF0YSgpOwogICAg
ICAgICB3ZWJDYWNoZS0+c2V0Q2FjaGVGb2xkZXIoY2FjaGVGb2xkZXIpOwogICAgIH0KIH0KQEAg
LTkyOSw5ICs5MjksOSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVl
c0ZvclRlc3RpbmcoKQogICAgIFN0cmluZyBsaWJyYXJ5UGF0aCA9IGxpYnJhcnlQYXRoRm9yRHVt
cFJlbmRlclRyZWUoKTsKIAogICAgIC8vIFNldCB1cCB0aGVzZSB2YWx1ZXMgYmVmb3JlIGNyZWF0
aW5nIHRoZSBXZWJWaWV3IHNvIHRoYXQgdGhlIHZhcmlvdXMgaW5pdGlhbGl6YXRpb25zIHdpbGwg
c2VlIHRoZXNlIHByZWZlcnJlZCB2YWx1ZXMuCi0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KFdlYkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXksIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChsaWJyYXJ5UGF0aCwgIkRhdGFiYXNlcyIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGFwcElkLmdldCgpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5LCBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
bGlicmFyeVBhdGgsICJMb2NhbFN0b3JhZ2UiKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcHBJ
ZC5nZXQoKSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKFdlYktpdExvY2FsQ2FjaGVE
ZWZhdWx0c0tleSwgV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQYXRo
LCAiTG9jYWxDYWNoZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgpKTsKKyAg
ICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tl
eSwgV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGxpYnJhcnlQ
YXRoLCAiRGF0YWJhc2VzIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkpOwor
ICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShXZWJTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNL
ZXksIFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChsaWJyYXJ5
UGF0aCwgIkxvY2FsU3RvcmFnZSIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFwcElkLmdldCgp
KTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoV2ViS2l0TG9jYWxDYWNoZURlZmF1bHRz
S2V5LCBXZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobGlicmFy
eVBhdGgsICJMb2NhbENhY2hlIikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXBwSWQuZ2V0KCkp
OwogI2VuZGlmCiB9CiAKQEAgLTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJW
aWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29u
c3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBX
ZWJDb3JlOjpkaXJlY3RvcnlOYW1lKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhUb0ZvbnRG
YWxsYmFjayA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUocGF0aE9yVXJsKTsK
IAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAoIV93ZnVsbHBhdGgo
ZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlv
bigpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTEwNTAsMjAgKzEwNTAsMjAgQEAgc3RhdGljIFN0
cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKICAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBTdHJpbmcgcGF0aFRvVGVzdCA9IHBhdGhUb0NoZWNr
LnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7Ci0gICAgU3Ry
aW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aFRvQ2hlY2suc3Vic3RyaW5nKDAsIGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3Ro
KCkgKyAxKSwgInBsYXRmb3JtXFx3aW4iKTsKKyAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1
ZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9D
aGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAi
cGxhdGZvcm1cXHdpbiIpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gcG9zc2libGVQYXRoczsKLSAg
ICBwb3NzaWJsZVBhdGhzLmFwcGVuZChXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
cG9zc2libGVQYXRoVG9Mb2d1ZSwgcGF0aFRvVGVzdCkpOworICAgIHBvc3NpYmxlUGF0aHMuYXBw
ZW5kKFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJs
ZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRpZGF0ZUVu
ZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRDYW5kaWRh
dGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAgICAgIHBh
dGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsKLSAg
ICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKKyAgICAgICAgcG9zc2libGVQ
YXRocy5hcHBlbmQoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAgbmV4dENhbmRpZGF0
ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQogCiAgICAgZm9yIChW
ZWN0b3I8U3RyaW5nPjo6aXRlcmF0b3IgcG9zID0gcG9zc2libGVQYXRocy5iZWdpbigpOyBwb3Mg
IT0gcG9zc2libGVQYXRocy5lbmQoKTsgKytwb3MpIHsKLSAgICAgICAgcGF0aFRvRm9udEZhbGxi
YWNrID0gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNc
XCIpOyAKKyAgICAgICAgcGF0aFRvRm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCpwb3MsICJyZXNvdXJjZXNcXCIpOwogCiAgICAgICAg
IGlmICg6OlBhdGhJc0RpcmVjdG9yeVcocGF0aFRvRm9udEZhbGxiYWNrLmNoYXJhY3RlcnNXaXRo
TnVsbFRlcm1pbmF0aW9uKCkuZGF0YSgpKSkKICAgICAgICAgICAgIHJldHVybiBwYXRoVG9Gb250
RmFsbGJhY2s7CkBAIC0xMDc3LDcgKzEwNzcsNyBAQCBzdGF0aWMgdm9pZCBhZGRGb250RmFsbGJh
Y2tJZlByZXNlbnQoY29uc3QgU3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250
RmFsbGJhY2tQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZv
bnRGYWxsYmFjayA9IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJh
Y2tQYXRoLCAiTWFjLWNvbXBhdGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcg
Zm9udEZhbGxiYWNrID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGZvbnRGYWxsYmFja1BhdGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIp
OwogCiAgICAgaWYgKCE6OlBhdGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CkBAIC0xMDkwLDcg
KzEwOTAsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVGb250RmFsbGJhY2tJZlByZXNlbnQoY29uc3Qg
U3RyaW5nJiBmb250RmFsbGJhY2tQYXRoKQogICAgIGlmIChmb250RmFsbGJhY2tQYXRoLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGZvbnRGYWxsYmFjayA9IFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChmb250RmFsbGJhY2tQYXRoLCAiTWFjLWNvbXBh
dGlibGUtZm9udC1mYWxsYmFjay5jc3MiKTsKKyAgICBTdHJpbmcgZm9udEZhbGxiYWNrID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGZvbnRGYWxsYmFja1Bh
dGgsICJNYWMtY29tcGF0aWJsZS1mb250LWZhbGxiYWNrLmNzcyIpOwogCiAgICAgaWYgKCE6OlBh
dGhGaWxlRXhpc3RzVyhmb250RmFsbGJhY2suY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24o
KS5kYXRhKCkpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAppbmRleCBmYmNjNjIzZmJmYzYxZWMwNWMzZmQ4
MDkyODdiZmVhZDg4NmE3OGNiLi4yNTI3NDRiNDIxZDI1MjE3Mjc4ZWNlNjAxMWQ4M2U2OGViODA5
ZTY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1v
bml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKQEAgLTU1LDE5ICs1NSwxOSBAQCBwdWJsaWM6CiAgICAgICAgIFJ1bkxvb3A6Omlu
aXRpYWxpemVNYWluUnVuTG9vcCgpOwogICAgICAgICAKICAgICAgICAgLy8gY3JlYXRlIHRlbXAg
ZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3RlbXBG
aWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwotICAg
ICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1w
RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwg
aGFuZGxlKTsKKyAgICAgICAgQVNTRVJUX05FKGhhbmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBs
YXRmb3JtRmlsZUhhbmRsZSk7CiAgICAgICAgIAotICAgICAgICBpbnQgcmMgPSB3cml0ZVRvRmls
ZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRhdGEoKSwgRmlsZU1vbml0b3JU
ZXN0RGF0YS5sZW5ndGgoKSk7CisgICAgICAgIGludCByYyA9IEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGhhbmRsZSwgRmlsZU1vbml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBGaWxlTW9uaXRv
clRlc3REYXRhLmxlbmd0aCgpKTsKICAgICAgICAgQVNTRVJUX05FKHJjLCAtMSk7CiAgICAgICAg
IAotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQog
ICAgIHsKLSAgICAgICAgZGVsZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CisgICAgICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwogICAgIH0KICAgICAKICAgICBjb25z
dCBTdHJpbmcmIHRlbXBGaWxlUGF0aCgpIHsgcmV0dXJuIG1fdGVtcEZpbGVQYXRoOyB9CkBAIC0x
MTQsMTkgKzExNCwxOSBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09mRmlsZShjb25zdCBT
dHJpbmcmIHBhdGgpCiB7CiAgICAgY29uc3RleHByIGludCBidWZmZXJTaXplID0gMTAyNDsKIAot
ICAgIGF1dG8gc291cmNlID0gb3BlbkZpbGUocGF0aCwgT3BlbkZvclJlYWQpOwotICAgIGlmICgh
aXNIYW5kbGVWYWxpZChzb3VyY2UpKQorICAgIGF1dG8gc291cmNlID0gRmlsZVN5c3RlbTo6b3Bl
bkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6T3BlbkZvclJlYWQpOworICAgIGlmICghRmlsZVN5c3Rl
bTo6aXNIYW5kbGVWYWxpZChzb3VyY2UpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIFN0cmluZ0J1ZmZlcjxMQ2hhcj4gYnVmZmVyKGJ1ZmZlclNpemUpOwogCiAgICAgYXV0
byBmaWxlQ2xvc2VyID0gV1RGOjptYWtlU2NvcGVFeGl0KFtzb3VyY2VdKCkgewotICAgICAgICBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlID0gc291cmNlOwotICAgICAgICBjbG9zZUZpbGUoaGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSA9IHNv
dXJjZTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAgICAgfSk7CiAK
ICAgICAvLyBTaW5jZSB3ZSBjb250cm9sIHRoZSB0ZXN0IGZpbGVzLCB3ZSBrbm93IHdlIG9ubHkg
bmVlZCBvbmUgcmVhZAotICAgIGludCByZWFkQnl0ZXMgPSByZWFkRnJvbUZpbGUoc291cmNlLCBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIuY2hhcmFjdGVycygpKSwgYnVmZmVyU2l6ZSk7
CisgICAgaW50IHJlYWRCeXRlcyA9IEZpbGVTeXN0ZW06OnJlYWRGcm9tRmlsZShzb3VyY2UsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlci5jaGFyYWN0ZXJzKCkpLCBidWZmZXJTaXplKTsK
ICAgICBpZiAocmVhZEJ5dGVzIDwgMCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgU3RyaW5nIHJlYWRDb250ZW50c09mRmlsZShjb25z
dCBTdHJpbmcmIHBhdGgpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZSkK
IHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQ
RUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAg
UnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5Mb29wKCk7CiAKQEAgLTE4NCw3ICsxODQsNyBAQCBU
RVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2UpCiAKIFRFU1RfRihGaWxlTW9uaXRv
clRlc3QsIERldGVjdE11bHRpcGxlQ2hhbmdlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhp
c3RzKHRlbXBGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOwogCiAgICAgUnVuTG9vcDo6aW5pdGlhbGl6ZU1haW5SdW5M
b29wKCk7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRl
Y3RNdWx0aXBsZUNoYW5nZXMpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0
aW9uKQogewotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAg
ICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAK
ICAgICBSdW5Mb29wOjppbml0aWFsaXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMjgzLDcgKzI4Myw3
IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0aW9uKQogCiBURVNUX0YoRmls
ZU1vbml0b3JUZXN0LCBEZXRlY3RDaGFuZ2VBbmRUaGVuRGVsZXRlKQogewotICAgIEVYUEVDVF9U
UlVFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBSdW5Mb29wOjppbml0aWFs
aXplTWFpblJ1bkxvb3AoKTsKIApAQCAtMzQwLDcgKzM0MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRv
clRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUpCiAKIFRFU1RfRihGaWxlTW9uaXRvclRl
c3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiB7Ci0gICAgRVhQRUNUX1RS
VUUoZmlsZUV4aXN0cyh0ZW1wRmlsZVBhdGgoKSkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKIAogICAgIFJ1bkxvb3A6OmluaXRpYWxp
emVNYWluUnVuTG9vcCgpOwogCkBAIC0zNzcsMTIgKzM3NywxMiBAQCBURVNUX0YoRmlsZU1vbml0
b3JUZXN0LCBEZXRlY3REZWxldGVCdXROb3RTdWJzZXF1ZW50Q2hhbmdlKQogICAgIHJlc2V0VGVz
dFN0YXRlKCk7CiAKICAgICB0ZXN0UXVldWUtPmRpc3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsKKyAgICAg
ICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHModGVtcEZpbGVQYXRoKCkpKTsK
IAotICAgICAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHRlbXBGaWxlUGF0aCgpLCBPcGVuRm9y
V3JpdGUpOwotICAgICAgICBBU1NFUlRfTkUoaGFuZGxlLCBpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKTsKKyAgICAgICAgYXV0byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmls
ZVBhdGgoKSwgRmlsZVN5c3RlbTo6T3BlbkZvcldyaXRlKTsKKyAgICAgICAgQVNTRVJUX05FKGhh
bmRsZSwgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSk7CiAKLSAgICAgICAg
aW50IHJjID0gd3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5k
YXRhKCksIEZpbGVNb25pdG9yVGVzdERhdGEubGVuZ3RoKCkpOworICAgICAgICBpbnQgcmMgPSBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgp
LmRhdGEoKSwgRmlsZU1vbml0b3JUZXN0RGF0YS5sZW5ndGgoKSk7CiAgICAgICAgIEFTU0VSVF9O
RShyYywgLTEpOwogCiAgICAgICAgIGF1dG8gZmlyc3RDb21tYW5kID0gY3JlYXRlQ29tbWFuZCh0
ZW1wRmlsZVBhdGgoKSwgRmlsZU1vbml0b3JSZXZpc2VkRGF0YSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKaW5kZXggN2Y2Zjk3NDk4ZDE3
NjUyOWVhNWJiNDkzZTQ0NGZmOWQ0ODMwNjk3Zi4uZjI1ODY2OTQ2MDYzZGJmZjc4ZWE3MWE5ZGU3
OTUzZGEwODE1NTE5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9GaWxlU3lzdGVtLmNwcApAQCAtNDYsMzUgKzQ2LDM1IEBAIHB1YmxpYzoKICAgICAgICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgICAgICAKICAgICAgICAgLy8gY3JlYXRlIHRl
bXAgZmlsZQotICAgICAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgICAgICBtX3Rl
bXBGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOwot
ICAgICAgICB3cml0ZVRvRmlsZShoYW5kbGUsIEZpbGVTeXN0ZW1UZXN0RGF0YSwgc3RybGVuKEZp
bGVTeXN0ZW1UZXN0RGF0YSkpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV90ZW1wRmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRlc3RGaWxlIiwgaGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFuZGxlLCBGaWxlU3lzdGVt
VGVzdERhdGEsIHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpKTsKKyAgICAgICAgRmlsZVN5c3Rl
bTo6Y2xvc2VGaWxlKGhhbmRsZSk7CiAKICAgICAgICAgbV90ZW1wRmlsZVN5bWxpbmtQYXRoID0g
bV90ZW1wRmlsZVBhdGggKyAiLXN5bWxpbmsiOwotICAgICAgICBjcmVhdGVTeW1ib2xpY0xpbmso
bV90ZW1wRmlsZVBhdGgsIG1fdGVtcEZpbGVTeW1saW5rUGF0aCk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNyZWF0ZVN5bWJvbGljTGluayhtX3RlbXBGaWxlUGF0aCwgbV90ZW1wRmlsZVN5bWxpbmtQ
YXRoKTsKIAotICAgICAgICBtX3RlbXBFbXB0eUZpbGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUo
InRlbXBFbXB0eVRlc3RGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VGaWxlKGhhbmRsZSk7
CisgICAgICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5
RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAgICBtX3NwYWNlQ29udGFpbmluZ0ZpbGVQYXRoID0g
b3BlblRlbXBvcmFyeUZpbGUoInRlbXAgRW1wdHkgVGVzdCBGaWxlIiwgaGFuZGxlKTsKLSAgICAg
ICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBo
YW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgICAg
ICBtX2JhbmdDb250YWluaW5nRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCFFbXB0
eSFUZXN0IUZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAg
ICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6
Y2xvc2VGaWxlKGhhbmRsZSk7CiAKLSAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9
IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAg
ICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUi
LCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9
CiAKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGRlbGV0ZUZp
bGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxlKG1fdGVtcEZpbGVTeW1saW5r
UGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV90ZW1wRW1wdHlGaWxlUGF0aCk7Ci0gICAgICAg
IGRlbGV0ZUZpbGUobV9zcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZp
bGUobV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoKTsKLSAgICAgICAgZGVsZXRlRmlsZShtX3F1b3Rl
Q29udGFpbmluZ0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Rl
bXBGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1wRmlsZVN5
bWxpbmtQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3RlbXBFbXB0eUZp
bGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3NwYWNlQ29udGFpbmlu
Z0ZpbGVQYXRoKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2JhbmdDb250YWlu
aW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcXVvdGVDb250
YWluaW5nRmlsZVBhdGgpOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgdGVtcEZpbGVQYXRo
KCkgeyByZXR1cm4gbV90ZW1wRmlsZVBhdGg7IH0KQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToK
IFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ01pc3NpbmdGaWxlKQogewogICAgIGJvb2wg
c3VjY2VzczsKLSAgICBNYXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YShTdHJpbmcoIm5vdF9l
eGlzdGluZ19maWxlIiksIHN1Y2Nlc3MpOworICAgIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
IG1hcHBlZEZpbGVEYXRhKFN0cmluZygibm90X2V4aXN0aW5nX2ZpbGUiKSwgc3VjY2Vzcyk7CiAg
ICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOwogICAgIEVYUEVDVF9UUlVFKCFtYXBwZWRGaWxlRGF0
YSk7CiB9CkBAIC0xMDQsNyArMTA0LDcgQEAgVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBNYXBwaW5n
TWlzc2luZ0ZpbGUpCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIE1hcHBpbmdFeGlzdGluZ0ZpbGUp
CiB7CiAgICAgYm9vbCBzdWNjZXNzOwotICAgIE1hcHBlZEZpbGVEYXRhIG1hcHBlZEZpbGVEYXRh
KHRlbXBGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpNYXBwZWRGaWxlRGF0
YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRmlsZVBhdGgoKSwgc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RS
VUUoc3VjY2Vzcyk7CiAgICAgRVhQRUNUX1RSVUUoISFtYXBwZWRGaWxlRGF0YSk7CiAgICAgRVhQ
RUNUX1RSVUUobWFwcGVkRmlsZURhdGEuc2l6ZSgpID09IHN0cmxlbihGaWxlU3lzdGVtVGVzdERh
dGEpKTsKQEAgLTExNCwyNiArMTE0LDI2IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGlu
Z0V4aXN0aW5nRmlsZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgTWFwcGluZ0V4aXN0aW5nRW1w
dHlGaWxlKQogewogICAgIGJvb2wgc3VjY2VzczsKLSAgICBNYXBwZWRGaWxlRGF0YSBtYXBwZWRG
aWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNzKTsKKyAgICBGaWxlU3lzdGVtOjpN
YXBwZWRGaWxlRGF0YSBtYXBwZWRGaWxlRGF0YSh0ZW1wRW1wdHlGaWxlUGF0aCgpLCBzdWNjZXNz
KTsKICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKICAgICBFWFBFQ1RfVFJVRSghbWFwcGVkRmls
ZURhdGEpOwogfQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEZpbGVzSGF2ZVNhbWVWb2x1bWUp
CiB7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZSh0ZW1wRmlsZVBhdGgoKSwg
c3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSkpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVzSGF2ZVNh
bWVWb2x1bWUoc3BhY2VDb250YWluaW5nRmlsZVBhdGgoKSwgYmFuZ0NvbnRhaW5pbmdGaWxlUGF0
aCgpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZXNIYXZlU2FtZVZvbHVtZShiYW5nQ29udGFpbmlu
Z0ZpbGVQYXRoKCksIHF1b3RlQ29udGFpbmluZ0ZpbGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9sdW1lKHRlbXBGaWxlUGF0aCgpLCBzcGFjZUNv
bnRhaW5pbmdGaWxlUGF0aCgpKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZXNI
YXZlU2FtZVZvbHVtZShzcGFjZUNvbnRhaW5pbmdGaWxlUGF0aCgpLCBiYW5nQ29udGFpbmluZ0Zp
bGVQYXRoKCkpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlc0hhdmVTYW1lVm9s
dW1lKGJhbmdDb250YWluaW5nRmlsZVBhdGgoKSwgcXVvdGVDb250YWluaW5nRmlsZVBhdGgoKSkp
OwogfQogCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIEdldEZpbGVNZXRhZGF0YVN5bWxpbmspCiB7
Ci0gICAgYXV0byBzeW1saW5rTWV0YWRhdGEgPSBmaWxlTWV0YWRhdGEodGVtcEZpbGVTeW1saW5r
UGF0aCgpKTsKKyAgICBhdXRvIHN5bWxpbmtNZXRhZGF0YSA9IEZpbGVTeXN0ZW06OmZpbGVNZXRh
ZGF0YSh0ZW1wRmlsZVN5bWxpbmtQYXRoKCkpOwogICAgIEFTU0VSVF9UUlVFKHN5bWxpbmtNZXRh
ZGF0YS5oYXNfdmFsdWUoKSk7CiAgICAgRVhQRUNUX1RSVUUoc3ltbGlua01ldGFkYXRhLnZhbHVl
KCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OlN5bWJvbGljTGluayk7CiAgICAgRVhQRUNU
X0ZBTFNFKHN0YXRpY19jYXN0PHNpemVfdD4oc3ltbGlua01ldGFkYXRhLnZhbHVlKCkubGVuZ3Ro
KSA9PSBzdHJsZW4oRmlsZVN5c3RlbVRlc3REYXRhKSk7CiAKLSAgICBhdXRvIHRhcmdldE1ldGFk
YXRhID0gZmlsZU1ldGFkYXRhRm9sbG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgp
KTsKKyAgICBhdXRvIHRhcmdldE1ldGFkYXRhID0gRmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhRm9s
bG93aW5nU3ltbGlua3ModGVtcEZpbGVTeW1saW5rUGF0aCgpKTsKICAgICBBU1NFUlRfVFJVRSh0
YXJnZXRNZXRhZGF0YS5oYXNfdmFsdWUoKSk7CiAgICAgRVhQRUNUX1RSVUUodGFyZ2V0TWV0YWRh
dGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6RmlsZSk7CiAgICAgRVhQRUNU
X0VRKHN0cmxlbihGaWxlU3lzdGVtVGVzdERhdGEpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHRhcmdl
dE1ldGFkYXRhLnZhbHVlKCkubGVuZ3RoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvU2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCAzMmNlMzYxOGRlNTNhODZi
MzhjOGUyNjU3ZmY2MDJjNTZmNTU4NTdiLi5iOTI4MzI0ZjM1OThkZGI0NjE3YTFkZWViODgyNjM2
MGM2NWE0MjA1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQxLDI2ICs0MSwyNiBAQCBwdWJsaWM6CiAgICAgICAg
IFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKIAogICAgICAgICAvLyBjcmVhdGUgdGVtcCBm
aWxlCi0gICAgICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgICAgIG1fdGVtcEZp
bGVQYXRoID0gb3BlblRlbXBvcmFyeUZpbGUoInRlbXBUZXN0RmlsZSIsIGhhbmRsZSk7Ci0gICAg
ICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaGFuZGxlOworICAgICAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAgICAgCi0gICAgICAgIG1fc3BhY2VDb250YWluaW5n
RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcCBFbXB0eSBUZXN0IEZpbGUiLCBoYW5k
bGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgbV9zcGFjZUNvbnRhaW5p
bmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIEVtcHR5IFRl
c3QgRmlsZSIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUp
OwogICAgICAgICAKLSAgICAgICAgbV9iYW5nQ29udGFpbmluZ0ZpbGVQYXRoID0gb3BlblRlbXBv
cmFyeUZpbGUoInRlbXAhRW1wdHkhVGVzdCFGaWxlIiwgaGFuZGxlKTsKLSAgICAgICAgY2xvc2VG
aWxlKGhhbmRsZSk7CisgICAgICAgIG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0
ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wIUVtcHR5IVRlc3QhRmlsZSIsIGhhbmRsZSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogICAgICAgICAKLSAgICAgICAg
bV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IG9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wXCJFbXB0
eVwiVGVzdEZpbGUiLCBoYW5kbGUpOwotICAgICAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAg
ICAgbV9xdW90ZUNvbnRhaW5pbmdGaWxlUGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlG
aWxlKCJ0ZW1wXCJFbXB0eVwiVGVzdEZpbGUiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICB9CiAKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKICAgICB7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOwotICAgICAgICBk
ZWxldGVGaWxlKG1fc3BhY2VDb250YWluaW5nRmlsZVBhdGgpOwotICAgICAgICBkZWxldGVGaWxl
KG1fYmFuZ0NvbnRhaW5pbmdGaWxlUGF0aCk7Ci0gICAgICAgIGRlbGV0ZUZpbGUobV9xdW90ZUNv
bnRhaW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90ZW1w
RmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fc3BhY2VDb250YWlu
aW5nRmlsZVBhdGgpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fYmFuZ0NvbnRh
aW5pbmdGaWxlUGF0aCk7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9xdW90ZUNv
bnRhaW5pbmdGaWxlUGF0aCk7CiAgICAgfQogICAgIAogICAgIGNvbnN0IFN0cmluZyYgdGVtcEZp
bGVQYXRoKCkgeyByZXR1cm4gbV90ZW1wRmlsZVBhdGg7IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXJUZXN0LmNwcAppbmRleCBhMjk3
YTU1YjgzM2UzYWNiM2E3MTk5MDUxNmUwZjU4OTQzMTU1ZGQ4Li44ZmUzNTY3YzFlMTEzNjkxZDg1
YjdjNTVhMWY5NjY1OWRlOWQxZjI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlclRlc3QuY3BwCkBAIC0zOCwxOSArMzgsMTkgQEAg
dm9pZCBTaGFyZWRCdWZmZXJUZXN0OjpTZXRVcCgpCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRo
cmVhZCgpOwogCiAgICAgLy8gY3JlYXRlIHRlbXAgZmlsZQotICAgIFBsYXRmb3JtRmlsZUhhbmRs
ZSBoYW5kbGU7Ci0gICAgbV90ZW1wRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcFRl
c3RGaWxlIiwgaGFuZGxlKTsKLSAgICB3cml0ZVRvRmlsZShoYW5kbGUsIHRlc3REYXRhKCksIHN0
cmxlbih0ZXN0RGF0YSgpKSk7Ci0gICAgY2xvc2VGaWxlKGhhbmRsZSk7CisgICAgRmlsZVN5c3Rl
bTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBtX3RlbXBGaWxlUGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJ0ZW1wVGVzdEZpbGUiLCBoYW5kbGUpOworICAgIEZp
bGVTeXN0ZW06OndyaXRlVG9GaWxlKGhhbmRsZSwgdGVzdERhdGEoKSwgc3RybGVuKHRlc3REYXRh
KCkpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKIAotICAgIG1fdGVtcEVt
cHR5RmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5k
bGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIG1fdGVtcEVtcHR5RmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5VGVzdEZpbGUiLCBoYW5kbGUp
OworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogfQogCiB2b2lkIFNoYXJlZEJ1
ZmZlclRlc3Q6OlRlYXJEb3duKCkKIHsKLSAgICBkZWxldGVGaWxlKG1fdGVtcEZpbGVQYXRoKTsK
LSAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUobV90ZW1wRmlsZVBhdGgpOworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV90
ZW1wRW1wdHlGaWxlUGF0aCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2NvYS9EYXRhYmFz
ZVRyYWNrZXJUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29h
L0RhdGFiYXNlVHJhY2tlclRlc3QubW0KaW5kZXggYTIwYjM4MzE1NjY4ZGUyYjNmZWY2YzljYWI1
NDgxNDc1ZGEwNzYxOC4uMmUyYzM5NDc4ZTU0ODZjMTYzOTA2M2EwZWYwYzJkNjk3N2RmYzIyNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL0RhdGFi
YXNlVHJhY2tlclRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2NvY29hL0RhdGFiYXNlVHJhY2tlclRlc3QubW0KQEAgLTQwLDIxICs0MCwyMSBAQCBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFz
ZUZpbGVJZkVtcHR5KQogewotICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAgU3Ry
aW5nIGRhdGFiYXNlRmlsZVBhdGggPSBvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5RGF0YWJh
c2UiLCBoYW5kbGUpOwotICAgIGNsb3NlRmlsZShoYW5kbGUpOworICAgIEZpbGVTeXN0ZW06OlBs
YXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgU3RyaW5nIGRhdGFiYXNlRmlsZVBhdGggPSBG
aWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgidGVtcEVtcHR5RGF0YWJhc2UiLCBoYW5kbGUp
OworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwogCiAgICAgbG9uZyBsb25nIGZp
bGVTaXplOwotICAgIGdldEZpbGVTaXplKGRhdGFiYXNlRmlsZVBhdGgsIGZpbGVTaXplKTsKKyAg
ICBGaWxlU3lzdGVtOjpnZXRGaWxlU2l6ZShkYXRhYmFzZUZpbGVQYXRoLCBmaWxlU2l6ZSk7CiAg
ICAgRVhQRUNUX0VRKDAsIGZpbGVTaXplKTsKIAogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJh
Y2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxlSWZFbXB0eShkYXRhYmFzZUZpbGVQYXRoKSk7CiAKLSAg
ICBib29sIGZpbGVTdGlsbEV4aXN0cyA9IGZpbGVFeGlzdHMoZGF0YWJhc2VGaWxlUGF0aCk7Cisg
ICAgYm9vbCBmaWxlU3RpbGxFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNl
RmlsZVBhdGgpOwogICAgIEVYUEVDVF9GQUxTRShmaWxlU3RpbGxFeGlzdHMpOwogCiAgICAgaWYg
KGZpbGVTdGlsbEV4aXN0cykKLSAgICAgICAgZGVsZXRlRmlsZShkYXRhYmFzZUZpbGVQYXRoKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkYXRhYmFzZUZpbGVQYXRoKTsKIH0KIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKQEAgLTc4LDE5ICs3OCwxOSBAQCBzdGF0aWMgdm9pZCBh
ZGRUb0RhdGFiYXNlc1RhYmxlKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoLCBjb25zdCBTZWN1
cml0eU9yaWdpbgogCiBzdGF0aWMgdm9pZCByZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeVBhdGgpCiB7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBmaWxl
IDogbGlzdERpcmVjdG9yeShkaXJlY3RvcnlQYXRoLCAiKiIpKQotICAgICAgICBFWFBFQ1RfVFJV
RShkZWxldGVGaWxlKGZpbGUpKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGZpbGUgOiBGaWxlU3lz
dGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgsICIqIikpCisgICAgICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZmlsZSkpOwogCi0gICAgaWYgKGZpbGVFeGlzdHMo
ZGlyZWN0b3J5UGF0aCkpCi0gICAgICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUVtcHR5RGlyZWN0b3J5
KGRpcmVjdG9yeVBhdGgpKTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkaXJlY3Rv
cnlQYXRoKSkKKyAgICAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEaXJl
Y3RvcnkoZGlyZWN0b3J5UGF0aCkpOwogfQogCiBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlQXRQYXRo
KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRs
ZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5Gb3JXcml0ZSk7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZv
cm1GaWxlSGFuZGxlIGZpbGVIYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShwYXRoLCBGaWxl
U3lzdGVtOjpPcGVuRm9yV3JpdGUpOwogICAgIEVYUEVDVF9ORSgtMSwgZmlsZUhhbmRsZSk7Ci0g
ICAgY2xvc2VGaWxlKGZpbGVIYW5kbGUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlzdHMocGF0
aCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1Rf
VFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRy
YWNrZXIsIERlbGV0ZU9yaWdpbikKQEAgLTk5LDcgKzk5LDcgQEAgVEVTVChEYXRhYmFzZVRyYWNr
ZXIsIERlbGV0ZU9yaWdpbikKICAgICAvLyB0YWJsZXMsIGFuZCBhbiBhY3R1YWwgZGF0YWJhc2Ug
b24gZGlzay4KICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHNob3VsZCByZW1vdmUgdGhlIG9yaWdp
bidzIGluZm9ybWF0aW9uIGZyb20gYm90aCB0aGUgT3JpZ2lucwogICAgIC8vIGFuZCBEYXRhYmFz
ZXMgdGFibGVzLCBhbmQgcmVtb3ZlIHRoZSBkYXRhYmFzZSBmcm9tIGRpc2suCi0gICAgTlNTdHJp
bmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIp
OworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1w
b3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxE
YXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTEwOCwxNiArMTA4
LDE2IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW4pCiAgICAgZGF0YWJhc2VU
cmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVYUEVDVF9FUSgodW5zaWdu
ZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsKIAotICAgIFN0cmluZyBk
YXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhkYXRhYmFz
ZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwor
ICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VQYXRoKSk7CiAK
ICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25hbWUiOwogICAgIGFkZFRv
RGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgImRh
dGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXIt
PmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwogCi0gICAgU3RyaW5nIG9yaWdpblBhdGgg
PSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4u
ZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIEVYUEVDVF9UUlVFKG1ha2VBbGxEaXJlY3Rvcmll
cyhvcmlnaW5QYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7
CisgICAgU3RyaW5nIG9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkp
OworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhvcmlnaW5Q
YXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRo
KSk7CiAKICAgICBTdHJpbmcgZnVsbFdlYkRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+
ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgZmFsc2UpOwogICAg
IGNyZWF0ZUZpbGVBdFBhdGgoZnVsbFdlYkRhdGFiYXNlUGF0aCk7CkBAIC0xMjgsMTQgKzEyOCwx
NCBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luKQogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIEVYUEVDVF9UUlVFKERhdGFiYXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VGaWxl
SWZFbXB0eShmdWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1w
dHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRl
bGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBhdGgpKTsKICNlbHNlCi0gICAgRVhQRUNUX0ZBTFNF
KGZpbGVFeGlzdHMoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOwotICAgIEVYUEVDVF9GQUxTRShmaWxl
RXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhmdWxsV2ViRGF0YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06
OmZpbGVFeGlzdHMob3JpZ2luUGF0aCkpOwogI2VuZGlmCiAKICAgICByZW1vdmVEaXJlY3RvcnlB
bmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAgIEVYUEVDVF9GQUxTRShm
aWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOwogfQogCiBURVNUKERh
dGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQpAQCAt
MTQzLDcgKzE0Myw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0
YWJhc2VEb2VzTm90RXhpc3QpCiAgICAgLy8gVGVzdCB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpcyBh
biBlbnRyeSBpbiBib3RoIHRoZSBPcmlnaW5zIGFuZCBEYXRhYmFzZXMgdGFibGVzLAogICAgIC8v
IGJ1dCBub3QgYW4gYWN0dWFsIGRhdGFiYXNlIG9uIGRpc2suCiAgICAgLy8gVGhlIGluZm9ybWF0
aW9uIHNob3VsZCBzdGlsbCBiZSByZW1vdmVkIGZyb20gdGhlIHRhYmxlcy4KLSAgICBOU1N0cmlu
ZyAqd2ViU1FMRGlyZWN0b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7
CisgICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBv
cmFyeURpcmVjdG9yeShAIldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBh
dGgod2ViU1FMRGlyZWN0b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERh
dGFiYXNlVHJhY2tlcj4gZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2Vy
V2l0aERhdGFiYXNlUGF0aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAtMTUyLDE1ICsxNTIs
MTUgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EYXRhYmFzZURvZXNO
b3RFeGlzdCkKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7
CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5z
aXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1Rf
VFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0
YWJhc2VfbmFtZSI7CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdp
biwgd2ViRGF0YWJhc2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2ln
bmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAK
ICAgICBTdHJpbmcgd2ViRGF0YWJhc2VGdWxsUGF0aCA9IGRhdGFiYXNlVHJhY2tlci0+ZnVsbFBh
dGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFtZSwgZmFsc2UpOwotICAgIEVYUEVD
VF9GQUxTRShmaWxlRXhpc3RzKHdlYkRhdGFiYXNlRnVsbFBhdGgpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZUZ1bGxQYXRoKSk7CiAKICAgICBF
WFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4pKTsKIApAQCAt
MTY4LDcgKzE2OCw3IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGF0
YWJhc2VEb2VzTm90RXhpc3QpCiAgICAgRVhQRUNUX1RSVUUoZGF0YWJhc2VUcmFja2VyLT5kYXRh
YmFzZU5hbWVzKG9yaWdpbikuaXNFbXB0eSgpKTsKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFs
bENvbnRlbnRzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVF
eGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0
ZW06OmZpbGVFeGlzdHMoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJh
c2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaGVuRGVsZXRpbmdBRGF0YWJhc2VGYWlscykKQEAgLTE3
OCw3ICsxNzgsNyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0
aW5nQURhdGFiYXNlRmFpbHMpCiAgICAgLy8gV2hlbiB3ZSBjYWxsIGRlbGV0ZU9yaWdpbigpLCBk
ZWxldGluZyBvbmUgb2YgdGhlc2UgZGF0YWJhc2VzIGZhaWxzLgogICAgIC8vIEluIHRoaXMgY2Fz
ZSwgd2Ugc2hvdWxkbid0IHJlbW92ZSB0aGUgaW5mb3JtYXRpb24gZnJvbSBlaXRoZXIgdGhlIERh
dGFiYXNlcyBvcgogICAgIC8vIE9yaWdpbnMgdGFibGVzLgotICAgIE5TU3RyaW5nICp3ZWJTUUxE
aXJlY3RvcnkgPSBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKKyAgICBOU1N0
cmluZyAqd2ViU1FMRGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6Y3JlYXRlVGVtcG9yYXJ5RGlyZWN0
b3J5KEAiV2ViU1FMIik7CiAgICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCh3ZWJTUUxE
aXJlY3RvcnkuVVRGOFN0cmluZyk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUcmFj
a2VyPiBkYXRhYmFzZVRyYWNrZXIgPSBEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXJXaXRoRGF0YWJh
c2VQYXRoKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCk7CkBAIC0xODcsMTYgKzE4NywxNiBAQCBURVNU
KERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2hlbkRlbGV0aW5nQURhdGFiYXNlRmFpbHMp
CiAgICAgZGF0YWJhc2VUcmFja2VyLT5zZXRRdW90YShvcmlnaW4sIDUyNDI4ODApOwogICAgIEVY
UEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJhc2VUcmFja2VyLT5vcmlnaW5zKCkuc2l6ZSgpKTsK
IAotICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0
YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJhc2VzLmRiIik7Ci0gICAgRVhQRUNUX1RSVUUoZmls
ZUV4aXN0cyhkYXRhYmFzZVBhdGgpKTsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwgIkRh
dGFiYXNlcy5kYiIpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGF0
YWJhc2VQYXRoKSk7CiAKICAgICBTdHJpbmcgd2ViRGF0YWJhc2VOYW1lID0gImRhdGFiYXNlX25h
bWUiOwogICAgIGFkZFRvRGF0YWJhc2VzVGFibGUoZGF0YWJhc2VQYXRoLCBvcmlnaW4sIHdlYkRh
dGFiYXNlTmFtZSwgImRhdGFiYXNlLmRiIik7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBk
YXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwogCi0gICAgU3Ry
aW5nIG9yaWdpblBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3Rv
cnlQYXRoLCBvcmlnaW4uZGF0YWJhc2VJZGVudGlmaWVyKCkpOwotICAgIEVYUEVDVF9UUlVFKG1h
a2VBbGxEaXJlY3RvcmllcyhvcmlnaW5QYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0
cyhvcmlnaW5QYXRoKSk7CisgICAgU3RyaW5nIG9yaWdpblBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCBvcmlnaW4uZGF0YWJh
c2VJZGVudGlmaWVyKCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJl
Y3RvcmllcyhvcmlnaW5QYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAgICBTdHJpbmcgZnVsbFdlYkRhdGFiYXNlUGF0aCA9IGRh
dGFiYXNlVHJhY2tlci0+ZnVsbFBhdGhGb3JEYXRhYmFzZShvcmlnaW4sIHdlYkRhdGFiYXNlTmFt
ZSwgZmFsc2UpOwogICAgIGNyZWF0ZUZpbGVBdFBhdGgoZnVsbFdlYkRhdGFiYXNlUGF0aCk7CkBA
IC0yMDksOCArMjA5LDggQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5E
ZWxldGluZ0FEYXRhYmFzZUZhaWxzKQogCiAgICAgRVhQRUNUX0ZBTFNFKGRhdGFiYXNlVHJhY2tl
ci0+ZGVsZXRlT3JpZ2luKG9yaWdpbikpOwogCi0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhm
dWxsV2ViRGF0YWJhc2VQYXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUV4aXN0cyhvcmlnaW5Q
YXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhmdWxsV2ViRGF0
YWJhc2VQYXRoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmln
aW5QYXRoKSk7CiAKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+
b3JpZ2lucygpLnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRy
YWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5zaXplKCkpOwpAQCAtMjIxLDExICsyMjEsMTEg
QEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZU9yaWdpbldoZW5EZWxldGluZ0FEYXRhYmFz
ZUZhaWxzKQogICAgIGNoZmxhZ3MoZnVsbFdlYkRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpLCAw
KTsKICNlbmRpZgogCi0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRmlsZShmdWxsV2ViRGF0YWJhc2VQ
YXRoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVsZXRlRW1wdHlEaXJlY3Rvcnkob3JpZ2luUGF0aCkp
OworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZnVsbFdlYkRhdGFiYXNl
UGF0aCkpOworICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGlyZWN0b3J5
KG9yaWdpblBhdGgpKTsKIAogICAgIHJlbW92ZURpcmVjdG9yeUFuZEFsbENvbnRlbnRzKGRhdGFi
YXNlRGlyZWN0b3J5UGF0aCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVFeGlzdHMoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKSk7CisgICAgRVhQRUNUX0ZBTFNFKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMo
ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKSk7CiB9CiAKIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxl
dGVPcmlnaW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFzZXNUYWJsZSkKQEAgLTIzNCw3ICsyMzQs
NyBAQCBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlT3JpZ2luV2l0aE1pc3NpbmdFbnRyeUlu
RGF0YWJhc2VzVGFibGUpCiAgICAgLy8gdGhlIERhdGFiYXNlcyB0YWJsZS4gVGhlcmUgaXMgYW4g
YWN0dWFsIGRhdGFiYXNlIG9uIGRpc2suCiAgICAgLy8gVGhlIGluZm9ybWF0aW9uIHNob3VsZCBz
dGlsbCBiZSByZW1vdmVkIGZyb20gdGhlIE9yaWdpbnMgdGFibGUsIGFuZCB0aGUKICAgICAvLyBk
YXRhYmFzZSBzaG91bGQgYmUgZGVsZXRlZCBmcm9tIGRpc2suCi0gICAgTlNTdHJpbmcgKndlYlNR
TERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShAIldlYlNRTCIpOworICAgIE5T
U3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpjcmVhdGVUZW1wb3JhcnlEaXJl
Y3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnlQYXRoKHdlYlNR
TERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRy
YWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcldpdGhEYXRh
YmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTI0MywyOCArMjQzLDI4IEBAIFRF
U1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVPcmlnaW5XaXRoTWlzc2luZ0VudHJ5SW5EYXRhYmFz
ZXNUYWJsZSkKICAgICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7
CiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5z
aXplKCkpOwogCi0gICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1Rf
VFJVRShmaWxlRXhpc3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQ
YXRoLCAiRGF0YWJhc2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhkYXRhYmFzZVBhdGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRhdGFiYXNlVHJhY2tlci0+
ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7CiAKLSAgICBTdHJpbmcgb3JpZ2luUGF0
aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdp
bi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFsbERpcmVjdG9y
aWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9yaWdpblBhdGgp
KTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIo
KSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG9yaWdp
blBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKG9yaWdpblBh
dGgpKTsKIAotICAgIFN0cmluZyB3ZWJEYXRhYmFzZVBhdGggPSBwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQob3JpZ2luUGF0aCwgImRhdGFiYXNlLmRiIik7CisgICAgU3RyaW5nIHdlYkRhdGFiYXNl
UGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChvcmlnaW5QYXRoLCAi
ZGF0YWJhc2UuZGIiKTsKICAgICBjcmVhdGVGaWxlQXRQYXRoKHdlYkRhdGFiYXNlUGF0aCk7CiAK
ICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRlbGV0ZU9yaWdpbihvcmlnaW4pKTsK
IAotICAgIEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKHdlYkRhdGFiYXNlUGF0aCkpOwotICAgIEVY
UEVDVF9GQUxTRShmaWxlRXhpc3RzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmls
ZVN5c3RlbTo6ZmlsZUV4aXN0cyh3ZWJEYXRhYmFzZVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
RmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhvcmlnaW5QYXRoKSk7CiAKICAgICBFWFBFQ1RfVFJVRShk
YXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5pc0VtcHR5KCkpOwogICAgIEVYUEVDVF9UUlVFKGRh
dGFiYXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLmlzRW1wdHkoKSk7CiAKICAgICBy
ZW1vdmVEaXJlY3RvcnlBbmRBbGxDb250ZW50cyhkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwotICAg
IEVYUEVDVF9GQUxTRShmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkpOworICAgIEVY
UEVDVF9GQUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNlRGlyZWN0b3J5UGF0aCkp
OwogfQogCiBURVNUKERhdGFiYXNlVHJhY2tlciwgRGVsZXRlRGF0YWJhc2UpCkBAIC0yNzIsNyAr
MjcyLDcgQEAgVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlKQogICAgIC8vIFRl
c3QgdGhlIGV4cGVjdGVkIGNhc2UuIFRoZXJlIGlzIGFuIGVudHJ5IGluIHRoZSBEYXRhYmFzZXMg
dGFibGUKICAgICAvLyBhbmQgYSBkYXRhYmFzZSBvbiBkaXNrLiBBZnRlciB0aGUgZGVsZXRpb24s
IHRoZSBkYXRhYmFzZSBzaG91bGQgYmUgZGVsZXRlZAogICAgIC8vIGZyb20gZGlzaywgYW5kIHRo
ZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgZ29uZSBmcm9tIHRoZSBEYXRhYmFzZXMgdGFibGUuCi0g
ICAgTlNTdHJpbmcgKndlYlNRTERpcmVjdG9yeSA9IGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
IldlYlNRTCIpOworICAgIE5TU3RyaW5nICp3ZWJTUUxEaXJlY3RvcnkgPSBGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoQCJXZWJTUUwiKTsKICAgICBTdHJpbmcgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKHdlYlNRTERpcmVjdG9yeS5VVEY4U3RyaW5nKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxEYXRhYmFzZVRyYWNrZXI+IGRhdGFiYXNlVHJhY2tlciA9IERhdGFiYXNlVHJhY2tl
cjo6dHJhY2tlcldpdGhEYXRhYmFzZVBhdGgoZGF0YWJhc2VEaXJlY3RvcnlQYXRoKTsKQEAgLTI4
MSwxNiArMjgxLDE2IEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKICAg
ICBkYXRhYmFzZVRyYWNrZXItPnNldFF1b3RhKG9yaWdpbiwgNTI0Mjg4MCk7CiAgICAgRVhQRUNU
X0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMoKS5zaXplKCkpOwogCi0g
ICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsICJEYXRhYmFzZXMuZGIiKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhp
c3RzKGRhdGFiYXNlUGF0aCkpOworICAgIFN0cmluZyBkYXRhYmFzZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAiRGF0YWJh
c2VzLmRiIik7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFz
ZVBhdGgpKTsKIAogICAgIFN0cmluZyB3ZWJEYXRhYmFzZU5hbWUgPSAiZGF0YWJhc2VfbmFtZSI7
CiAgICAgYWRkVG9EYXRhYmFzZXNUYWJsZShkYXRhYmFzZVBhdGgsIG9yaWdpbiwgd2ViRGF0YWJh
c2VOYW1lLCAiZGF0YWJhc2UuZGIiKTsKICAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKTEsIGRhdGFi
YXNlVHJhY2tlci0+ZGF0YWJhc2VOYW1lcyhvcmlnaW4pLnNpemUoKSk7CiAKLSAgICBTdHJpbmcg
b3JpZ2luUGF0aCA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBh
dGgsIG9yaWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKSk7Ci0gICAgRVhQRUNUX1RSVUUobWFrZUFs
bERpcmVjdG9yaWVzKG9yaWdpblBhdGgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlRXhpc3RzKG9y
aWdpblBhdGgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsIG9yaWdpbi5kYXRhYmFzZUlk
ZW50aWZpZXIoKSk7CisgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9y
aWVzKG9yaWdpblBhdGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3Rz
KG9yaWdpblBhdGgpKTsKIAogICAgIFN0cmluZyBmdWxsV2ViRGF0YWJhc2VQYXRoID0gZGF0YWJh
c2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBm
YWxzZSk7CiAgICAgY3JlYXRlRmlsZUF0UGF0aChmdWxsV2ViRGF0YWJhc2VQYXRoKTsKQEAgLTMw
MSwyMCArMzAxLDIwIEBAIFRFU1QoRGF0YWJhc2VUcmFja2VyLCBEZWxldGVEYXRhYmFzZSkKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgRVhQRUNUX1RSVUUoRGF0YWJhc2VUcmFja2VyOjpkZWxldGVE
YXRhYmFzZUZpbGVJZkVtcHR5KGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKICNlbHNlCi0gICAgRVhQ
RUNUX0ZBTFNFKGZpbGVFeGlzdHMoZnVsbFdlYkRhdGFiYXNlUGF0aCkpOworICAgIEVYUEVDVF9G
QUxTRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGZ1bGxXZWJEYXRhYmFzZVBhdGgpKTsKICNlbmRp
ZgogCiAgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCkxLCBkYXRhYmFzZVRyYWNrZXItPm9yaWdpbnMo
KS5zaXplKCkpOwotICAgIEVYUEVDVF9UUlVFKGRlbGV0ZUVtcHR5RGlyZWN0b3J5KG9yaWdpblBh
dGgpKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURpcmVjdG9yeShv
cmlnaW5QYXRoKSk7CiAgICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVj
dG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRh
YmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogVEVTVChEYXRhYmFzZVRyYWNrZXIsIERlbGV0ZURh
dGFiYXNlV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQogewogICAgIC8vIFRlc3QgdGhlIGNhc2Ug
d2hlcmUgd2UgdHJ5IHRvIGRlbGV0ZSBhIGRhdGFiYXNlIHRoYXQgZG9lc24ndCBleGlzdCBvbiBk
aXNrLgogICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZW1vdmUgdGhlIGRhdGFiYXNlIGluZm9ybWF0
aW9uIGZyb20gdGhlIERhdGFiYXNlcyB0YWJsZS4KLSAgICBOU1N0cmluZyAqd2ViU1FMRGlyZWN0
b3J5ID0gY3JlYXRlVGVtcG9yYXJ5RGlyZWN0b3J5KEAiV2ViU1FMIik7CisgICAgTlNTdHJpbmcg
KndlYlNRTERpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShA
IldlYlNRTCIpOwogICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGgod2ViU1FMRGlyZWN0
b3J5LlVURjhTdHJpbmcpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlVHJhY2tlcj4g
ZGF0YWJhc2VUcmFja2VyID0gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyV2l0aERhdGFiYXNlUGF0
aChkYXRhYmFzZURpcmVjdG9yeVBhdGgpOwpAQCAtMzIzLDIxICszMjMsMjEgQEAgVEVTVChEYXRh
YmFzZVRyYWNrZXIsIERlbGV0ZURhdGFiYXNlV2hlbkRhdGFiYXNlRG9lc05vdEV4aXN0KQogICAg
IGRhdGFiYXNlVHJhY2tlci0+c2V0UXVvdGEob3JpZ2luLCA1MjQyODgwKTsKICAgICBFWFBFQ1Rf
RVEoKHVuc2lnbmVkKTEsIGRhdGFiYXNlVHJhY2tlci0+b3JpZ2lucygpLnNpemUoKSk7CiAKLSAg
ICBTdHJpbmcgZGF0YWJhc2VQYXRoID0gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNl
RGlyZWN0b3J5UGF0aCwgIkRhdGFiYXNlcy5kYiIpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVFeGlz
dHMoZGF0YWJhc2VQYXRoKSk7CisgICAgU3RyaW5nIGRhdGFiYXNlUGF0aCA9IEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGgsICJEYXRhYmFz
ZXMuZGIiKTsKKyAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRhdGFiYXNl
UGF0aCkpOwogCiAgICAgU3RyaW5nIHdlYkRhdGFiYXNlTmFtZSA9ICJkYXRhYmFzZV9uYW1lIjsK
ICAgICBhZGRUb0RhdGFiYXNlc1RhYmxlKGRhdGFiYXNlUGF0aCwgb3JpZ2luLCB3ZWJEYXRhYmFz
ZU5hbWUsICJkYXRhYmFzZS5kYiIpOwogICAgIEVYUEVDVF9FUSgodW5zaWduZWQpMSwgZGF0YWJh
c2VUcmFja2VyLT5kYXRhYmFzZU5hbWVzKG9yaWdpbikuc2l6ZSgpKTsKIAogICAgIFN0cmluZyB3
ZWJEYXRhYmFzZUZ1bGxQYXRoID0gZGF0YWJhc2VUcmFja2VyLT5mdWxsUGF0aEZvckRhdGFiYXNl
KG9yaWdpbiwgd2ViRGF0YWJhc2VOYW1lLCBmYWxzZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpbGVF
eGlzdHMod2ViRGF0YWJhc2VGdWxsUGF0aCkpOworICAgIEVYUEVDVF9GQUxTRShGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHdlYkRhdGFiYXNlRnVsbFBhdGgpKTsKIAogICAgIEVYUEVDVF9UUlVFKGRh
dGFiYXNlVHJhY2tlci0+ZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCB3ZWJEYXRhYmFzZU5hbWUpKTsK
ICAgICBFWFBFQ1RfVFJVRShkYXRhYmFzZVRyYWNrZXItPmRhdGFiYXNlTmFtZXMob3JpZ2luKS5p
c0VtcHR5KCkpOwogCiAgICAgcmVtb3ZlRGlyZWN0b3J5QW5kQWxsQ29udGVudHMoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmlsZUV4aXN0cyhkYXRhYmFzZURpcmVj
dG9yeVBhdGgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRh
YmFzZURpcmVjdG9yeVBhdGgpKTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5k
ZXggNzQ4NjY1Y2YyYzI4NTM2YzM0MzUxZTYwNjM3YjA2NmRlYzM3MTZmZS4uMmFjOGI1NmRlYjkw
Zjc3NDk5YThjNmNjODg1MjU0YjExNGJmNThjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC05MiwxMCArOTIsMTAgQEAgc3Rh
dGljIGJvb2wgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAgICBFWFBFQ1Rf
VFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1RfRVEoX2Rvd25sb2FkLCBkb3du
bG9hZCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAg
ICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJL
aXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNv
cmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OmNsb3NlRmlsZShm
aWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUg
ZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBF
Q1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9y
bUZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFu
ZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAgICByZXR1cm4gX2Rlc3RpbmF0
aW9uUGF0aDsKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgYm9vbCBleHBlY3RlZFVzZXJJbml0
aWF0ZWRTdGF0ZSA9IGZhbHNlOwogICAgIEVYUEVDVF9FUShleHBlY3RlZFVzZXJJbml0aWF0ZWRT
dGF0ZSwgZG93bmxvYWQud2FzVXNlckluaXRpYXRlZCk7CiAgICAgRVhQRUNUX1RSVUUoX2V4cGVj
dGVkQ29udGVudExlbmd0aCA9PSBOU1VSTFJlc3BvbnNlVW5rbm93bkxlbmd0aCB8fCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oX2V4cGVjdGVkQ29udGVudExlbmd0aCkgPT0gX3JlY2VpdmVkQ29udGVu
dExlbmd0aCk7CiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjb250ZW50c0VxdWFsQXRQYXRoOl9kZXN0aW5hdGlvblBhdGggYW5kUGF0aDpbc291cmNlVVJM
IHBhdGhdXSk7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAg
IGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTM5MywxMCArMzkzLDEwIEBAIFRFU1QoX1dLRG93bmxv
YWQsIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93bmxvYWRXaXRoTG9hZGVkQ29u
dGVudCkKICAgICBFWFBFQ1RfVFJVRShoYXNSZWNlaXZlZFJlc3BvbnNlKTsKICAgICBFWFBFQ1Rf
RVEoX2Rvd25sb2FkLCBkb3dubG9hZCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6b3BlblRlbXBv
cmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShm
aWxlSGFuZGxlICE9IFdlYkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdl
YkNvcmU6OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAgICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAgICBfZGVzdGluYXRpb25QYXRoID0gV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxl
SGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0
ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOworICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKIAogICAgICphbGxvd092ZXJ3cml0ZSA9IFlFUzsKICAg
ICByZXR1cm4gX2Rlc3RpbmF0aW9uUGF0aDsKQEAgLTQxMCw3ICs0MTAsNyBAQCBURVNUKF9XS0Rv
d25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERpcmVjdERvd25sb2FkV2l0aExvYWRl
ZENvbnRlbnQpCiAgICAgTlNTdHJpbmcqIGV4cGVjdGVkQ29udGVudCA9IEAie1wieFwiOjQyLFwi
c1wiOlwiaGVsbG8sIHdvcmxkXCJ9IjsKICAgICBOU0RhdGEqIGV4cGVjdGVkRGF0YSA9IFtleHBl
Y3RlZENvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwogICAg
IEVYUEVDVF9UUlVFKFtbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNvbnRlbnRzQXRQ
YXRoOl9kZXN0aW5hdGlvblBhdGhdIGlzRXF1YWxUb0RhdGE6ZXhwZWN0ZWREYXRhXSk7Ci0gICAg
V2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBXZWJDb3JlOjpGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlzRG9uZSA9IHRydWU7
CiB9CiAKQEAgLTQ2NiwxMCArNDY2LDEwIEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVx
dWVzdEJsb2JVUkwpCiAKIC0gKE5TU3RyaW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAq
KWZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOihCT09MICopYWxsb3dPdmVyd3JpdGUKIHsKLSAgICBX
ZWJDb3JlOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKLSAgICBfZGVzdGluYXRpb25Q
YXRoID0gV2ViQ29yZTo6b3BlblRlbXBvcmFyeUZpbGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFu
ZGxlKTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlSGFuZGxlICE9IFdlYkNvcmU6OmludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpOwotICAgIFdlYkNvcmU6OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKKyAg
ICBXZWJDb3JlOjpGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZUhhbmRsZTsKKyAg
ICBfZGVzdGluYXRpb25QYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIlRlc3RXZWJLaXRBUEkiLCBmaWxlSGFuZGxlKTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlSGFu
ZGxlICE9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpOwor
ICAgIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlSGFuZGxlKTsKICAgICAqYWxs
b3dPdmVyd3JpdGUgPSBZRVM7CiAgICAgcmV0dXJuIF9kZXN0aW5hdGlvblBhdGg7CiB9CkBAIC00
OTYsNyArNDk2LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0QmxvYlVSTCkK
ICAgICBpZiAocmVkaXJlY3RDaGFpbi5jb3VudCA+IDIpCiAgICAgICAgIEVYUEVDVF9TVFJFUSgi
aHR0cDovL3Bhc3MvIiwgW3JlZGlyZWN0Q2hhaW5bMl0uYWJzb2x1dGVTdHJpbmcgVVRGOFN0cmlu
Z10pOwogCi0gICAgV2ViQ29yZTo6ZGVsZXRlRmlsZShfZGVzdGluYXRpb25QYXRoKTsKKyAgICBX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpkZWxldGVGaWxlKF9kZXN0aW5hdGlvblBhdGgpOwogICAgIGlz
RG9uZSA9IHRydWU7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>