<?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>101825</bug_id>
          
          <creation_ts>2012-11-09 18:09:10 -0800</creation_ts>
          <short_desc>Rename the LOG() macro to LOG_INFO()</short_desc>
          <delta_ts>2012-11-10 19:21:16 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>backer</cc>
    
    <cc>benjamin</cc>
    
    <cc>danw</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>mrobinson</cc>
    
    <cc>mrowe</cc>
    
    <cc>noam</cc>
    
    <cc>piman</cc>
    
    <cc>rakuco</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763521</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-09 18:09:10 -0800</bug_when>
    <thetext>Rename the LOG() macro to LOG_INFO()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763532</commentid>
    <comment_count>1</comment_count>
      <attachid>173422</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-09 18:17:02 -0800</bug_when>
    <thetext>Created attachment 173422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763535</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-11-09 18:21:02 -0800</bug_when>
    <thetext>This makes sense alongside LOG_ERROR, LOG_VERBOSE, etc.  I suspect this might need coordination with the Apple folks if other Apple-internal code is using this macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763536</commentid>
    <comment_count>3</comment_count>
      <attachid>173422</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-09 18:25:17 -0800</bug_when>
    <thetext>Comment on attachment 173422
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        The current macro name conflicts with a macro from the chromium base/
&gt; +        library. This conflict makes it very difficult to include headers from

But this macro predates the Chromium base library by many years. Chromium should change, not WebKit.

&gt; Source/WTF/ChangeLog:14
&gt; +        By renaming the macro to LOG_INFO() we avoid conflicts, and give the
&gt; +        macro a more descriptive name as well.

How does “info” make the name more descriptive? Isn’t everything in a computer “information”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763538</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-11-09 18:25:42 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; This makes sense alongside LOG_ERROR, LOG_VERBOSE, etc.

I don’t agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763770</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-11-10 19:21:16 -0800</bug_when>
    <thetext>Marking WONTFIX per the above discussion.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173422</attachid>
            <date>2012-11-09 18:17:02 -0800</date>
            <delta_ts>2012-11-09 18:25:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101825-20121109211508.patch</filename>
            <type>text/plain</type>
            <size>473138</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmM2NlNzhhMGExZWNhYjBjMzc0NjQ3
OTIxMWE5NTlhNjM5YTg4YmUuLjZkOGE3YTE0MDkyYzczZThhOTkxMWExNjc3OTRiY2QyMzMzZjBl
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMTEtMDkgIERhbmEgSmFuc2VucyAgPGRhbmFr
akBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIHRoZSBMT0coKSBtYWNybyB0byBMT0df
SU5GTygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUgY3VycmVudCBtYWNybyBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgbWFjcm8gZnJvbSB0aGUgY2hy
b21pdW0gYmFzZS8KKyAgICAgICAgbGlicmFyeS4gVGhpcyBjb25mbGljdCBtYWtlcyBpdCB2ZXJ5
IGRpZmZpY3VsdCB0byBpbmNsdWRlIGhlYWRlcnMgZnJvbQorICAgICAgICBib3RoIFdlYktpdCwg
YW5kIGNocm9taXVtLCBzaW5jZSB3dGYvQXNzZXJ0aW9ucy5oIGlzIGluY2x1ZGVkIGZyb20ganVz
dAorICAgICAgICBhYm91dCBhbnl3aGVyZSBpbiBXZWJLaXQuCisKKyAgICAgICAgQnkgcmVuYW1p
bmcgdGhlIG1hY3JvIHRvIExPR19JTkZPKCkgd2UgYXZvaWQgY29uZmxpY3RzLCBhbmQgZ2l2ZSB0
aGUKKyAgICAgICAgbWFjcm8gYSBtb3JlIGRlc2NyaXB0aXZlIG5hbWUgYXMgd2VsbC4KKworICAg
ICAgICAqIHd0Zi9Bc3NlcnRpb25zLmg6CisgICAgICAgICogd3RmL1JlZkNvdW50ZWRMZWFrQ291
bnRlci5jcHA6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlcjo6flJlZkNvdW50
ZWRMZWFrQ291bnRlcik6CisKIDIwMTItMTEtMDkgIEFsZXhlaSBGaWxpcHBvdiAgPGFscGhAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZpeCBoZWFwIHNuYXBzaG90cyBj
b3VudGVkIHNldmVyYWwgdGltZXMgYnkgTk1JCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE3MWMyMzBkYTM5Njc1
ODk3OWIxZDIyYWRkMGE5MzJlMjgzM2Q3Ni4uNmE5OGE4NWIyNDhkZmQxOGQyNmI1YzVjZWQwMjhl
YzVmNmZjOTIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzOSBAQAorMjAxMi0xMS0wOSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgdGhlIExP
RygpIG1hY3JvIHRvIExPR19JTkZPKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2Rl
Ojppbml0aWFsaXplKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGU6OnNldEZvcm1hdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0
cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNl
L0Fic3RyYWN0RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJzdHJhY3REYXRhYmFz
ZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6Om9wZW5EYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6bWFya0FzRGVsZXRlZEFuZENsb3NlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRhdGFiYXNlOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YWJhc2VTeW5jOjpvcGVuRGF0YWJhc2VTeW5jKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlVGFzay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZXF1ZXN0VGVybWlu
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFk
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmFkZE9wZW5EYXRhYmFzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMU3RhdGVtZW50OjpleGVjdXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
OjpjaGVja0FuZEhhbmRsZUNsb3NlZE9ySW50ZXJydXB0ZWREYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cGVyZm9ybU5leHRTdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVuZGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpsb2NrQWNxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6c2NoZWR1bGVUb1J1blN0YXRlbWVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJlbnRTdGF0ZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1cnJlbnRTdGF0ZW1lbnRFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclF1b3RhSW5jcmVhc2VD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6cG9zdGZsaWdodEFu
ZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN1Y2Nl
c3NDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2FjdGlvbjo6Y2xlYW51cEFm
dGVyU3VjY2Vzc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uOjpo
YW5kbGVUcmFuc2FjdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9u
OjpkZWxpdmVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TFRyYW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2spOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Ojpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6c2Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXQ6OmRpZENvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRSZWNl
aXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFJlY2VpdmVNZXNz
YWdlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpkaWRVcGRhdGVCdWZmZXJl
ZEFtb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZFN0YXJ0Q2xvc2luZ0hh
bmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmRpZENsb3NlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OnN1YnByb3RvY29sKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OmV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFt
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbG9zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpmYWlsKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldENoYW5uZWw6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6d2lsbE9wZW5Tb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkT3BlblNvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJTb2NrZXRDaGFubmVsOjpkaWRDbG9zZVNvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRGYWlsU29ja2V0U3RyZWFtKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZFN0YXJ0TG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6YXBwZW5kVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpzdGFydENsb3NpbmdIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRE
ZWZsYXRlcjo6fldlYlNvY2tldERlZmxhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEluZmxhdGVyOjp+V2ViU29ja2V0SW5mbGF0ZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAgICAgKiBkb20vUG9zaXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OnJlbmRlcnNJbkRpZmZlcmVudFBvc2l0
aW9uKToKKyAgICAgICAgKiBmaWxlYXBpL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsZVJlYWRlcjo6cmVhZEFzQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
ZVJlYWRlcjo6cmVhZEFzQmluYXJ5U3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFk
ZXI6OnJlYWRBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVJlYWRlcjo6cmVhZEFzRGF0
YVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlUmVhZGVyOjphYm9ydCk6CisgICAgICAgICog
ZmlsZWFwaS9GaWxlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVUaHJlYWQ6OnJ1
bkxvb3ApOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VD
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNo
ZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6cmVsZWFzZUF1dG9yZWxlYXNl
ZFBhZ2VzTm93RHVlVG9UaW1lcik6CisgICAgICAgICogaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFy
c2VBbmRBcHBlbmRPbmVMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVRlbXBsYXRlRG9j
dW1lbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURvY3VtZW50UGFyc2Vy
OjpjcmVhdGVCYXNpY0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZUUERpcmVjdG9yeURv
Y3VtZW50UGFyc2VyOjphcHBlbmQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50byk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnByZXBhcmVGb3JMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
bGVjdE1lZGlhUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0
ZUFjdGl2ZVRleHRUcmFja0N1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6aXNTYWZlVG9Mb2FkVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OndhaXRGb3JTb3VyY2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bm9uZVN1cHBvcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYUVuZ2luZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNh
bmNlbFBlbmRpbmdFdmVudHNBbmRDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnJld2luZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXR1
cm5Ub1JlYWx0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFBs
YXllZFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVU
b1BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vlayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hTZWVrKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmludmFsaWRhdGVDYWNoZWRUaW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXliYWNrUmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzZXRXZWJraXRQcmVzZXJ2ZXNQaXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRBdXRvcGxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cGxheUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TG9vcCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9scyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6c2V0TXV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dG9nZ2xlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmJlZ2luU2NydWJiaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmVu
ZFNjcnViYmluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVt
b3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4
dFNvdXJjZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJj
ZVdhc0FkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdh
c1JlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJNdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTYXdVbnN1cHBv
cnRlZFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllclJlc291cmNlTm90U3VwcG9ydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJh
bWVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFWb2x1bWVEaWRDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ2FuU3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5n
U3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICAqIGh0bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OkhUTUxTb3VyY2VFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjpzY2hlZHVsZUVycm9yRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNvdXJjZUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdFcnJv
ckV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTb3VyY2VFbGVtZW50OjplcnJvckV2ZW50
VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFja0VsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVybCk6CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21t
aXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQ
cm92aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSk6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjpzYXZl
RG9jdW1lbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVz
dG9yZURvY3VtZW50U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvckJhY2tGb3J3YXJkTmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3Rv
cnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJk
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xp
ZW50UmVkaXJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0
ZUZvckNvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRl
QmFja0ZvcndhcmRMaXN0Q2xpcHBlZEF0VGFyZ2V0KToKKyAgICAgICAgKiBsb2FkZXIvUHJvZ3Jl
c3NUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jl
c3NTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3ND
b21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjpmaW5hbFByb2dy
ZXNzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6UHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1l
bnRQcm9ncmVzcyk6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1Jl
cXVlc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1
bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnJlcXVlc3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZFNjaGVkdWxlcjo6SG9zdEluZm9ybWF0aW9uOjphZGRMb2FkSW5Qcm9ncmVzcyk6CisgICAg
ICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyOjp3aWxsQ2FuY2VsKToKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6ZmlsZUZhaWxlZFRvUGFyc2Up
OgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVz
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6cmF3RGF0YVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6OmZhaWxCZWZvcmVTdGFydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZTo6c2V0UmVzb3VyY2VUb1JldmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2U6OnN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6Om11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhl
YWRlcnMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2
YWxpZGF0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmFkZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNhY2hlOjpldmljdCk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OmNvbW1pdFRvRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Okljb25Db250cm9sbGVyOjpsb2FkRGVjaXNpb25SZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKToK
KyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpJY29u
RGF0YWJhc2U6OnBlcmZvcm1SZXRhaW5JY29uRm9yUGFnZVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6OnBlcmZvcm1SZWxlYXNlSWNvbkZvclBhZ2VVUkwpOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwpOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpzZXRJY29uVVJMRm9yUGFnZVVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpJY29uRGF0YWJhc2U6OnN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlbGF5RGF0YWJhc2VDbGVhbnVwKToK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXApOgor
ICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpJY29uRGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpub3RpZnlQZW5kaW5nTG9hZERlY2lzaW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmdldE9yQ3JlYXRlUGFnZVVSTFJlY29yZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Oklj
b25EYXRhYmFzZTo6cGVyZm9ybU9wZW5Jbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6OnBlcmZvcm1VUkxJbXBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SWNv
bkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxvb3ApOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRh
dGFiYXNlOjpyZWFkRnJvbURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFz
ZTo6d3JpdGVUb0RhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6cHJ1
bmVVbnJldGFpbmVkSWNvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpjaGVj
a0ZvckRhbmdsaW5nUGFnZVVSTHMpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpy
ZW1vdmVBbGxJY29uc09uVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6
Y2xlYW51cFN5bmNUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVhZHlTUUxpdGVTdGF0ZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjp3cml0ZUljb25TbmFwc2hvdFRv
U1FMRGF0YWJhc2UpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGxv
YWRlci9pY29uL0ljb25SZWNvcmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvblJlY29yZDo6
fkljb25SZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SWNvblJlY29yZDo6c2V0SW1hZ2VEYXRh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRlRGcmFtZTo6cHJpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVBhcnNlcjo6cGFyc2VPbmVD
b29raWUpOgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9HYW1lcGFkc0VmbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHYW1lcGFkc0VmbDo6cmVnaXN0ZXJEZXZpY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6R2FtZXBhZHNFZmw6OnVucmVnaXN0ZXJEZXZpY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjps
b2FkV2l0aE5leHRNZWRpYUVuZ2luZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRVcFZpZGVvUmVuZGVyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dGVh
ckRvd25WaWRlb1JlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjpwbGF5YWJpbGl0eUtub3duKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cHJlcGFyZVRvUGxheSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnBsYXkpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpwYXVzZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmR1cmF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2Vlayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFJhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRO
YXR1cmFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246Om1heFRpbWVTZWVrYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OmRpZExvYWRpbmdQcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnRpbWVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2Vla0Nv
bXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmludmFsaWRhdGVDYWNoZWREdXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Om1haW5UaHJlYWRDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVh
ZE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0Y6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OmNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpkZXN0cm95VmlkZW9MYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxh
dGZvcm1NZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25DRjo6cGxhdGZvcm1QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybVBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp1cGRhdGVSYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUR1cmF0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpz
ZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjp0cmFja3NDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFWRldyYXBwZXI6OkFWRldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBl
cjo6fkFWRldyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6YWRkVG9NYXAp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6cmVtb3ZlRnJvbU1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpBVkZXcmFwcGVyOjpkaXNjb25uZWN0QW5kRGVsZXRlQVZGV3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxvYWRQbGF5YWJsZUNvbXBsZXRpb25DYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpjaGVja1BsYXlhYmlsaXR5KToK
KyAgICAgICAgKFdlYkNvcmU6OkFWRldyYXBwZXI6OmxvYWRNZXRhZGF0YUNvbXBsZXRpb25DYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpiZWdpbkxvYWRpbmdNZXRhZGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlQVZDRlZpZGVvTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGVzdHJveVZpZGVvTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6QVZGV3JhcHBlcjo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6QVZGV3JhcHBlcjo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkFWRldyYXBwZXI6OmNyZWF0ZUltYWdlRm9yVGltZUluUmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNhbmNlbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveUlt
YWdlR2VuZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZB
c3NldEZvclVSTCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjpjcmVhdGVBVlBsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBsYXllckl0ZW0pOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tQbGF5YWJp
bGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybU1lZGlhKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxh
dGZvcm1QbGF5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtUGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1EdXJhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRDbG9zZWRDYXB0aW9u
c1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnRyYWNrc0NoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlk
ZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6ZGVzdHJveVZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVBpeGVsQnVmZmVyKToKKyAgICAgICAg
KC1bV2ViQ29yZUFWRk1vdmllT2JzZXJ2ZXIgb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVj
dDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlOjpzaG93RXJyb3JEaWFsb2cpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp+TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWVW
aWV3KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkZXRhY2hR
VE1vdmllVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRWaWRlb1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpkZXN0cm95UVRWaWRlb1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmRlc3Ryb3lRVE1vdmllTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFVwVmlkZW9SZW5kZXJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnRlYXJEb3du
VmlkZW9SZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBy
ZXBhcmVUb1BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OnBsYXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBhdXNl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZWVrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYW5jZWxTZWVrKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRWb2x1bWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFJhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFByZXNlcnZlc1BpdGNoKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjYW5jZWxMb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwcmVwYXJlRm9yUmVu
ZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRh
dGVTdGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Omxv
YWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmxvYWRlZFJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OnJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6dGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmRpZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVF0OjpzdXJmYWNlRm9ybWF0Q2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdDo6c2V0U2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRdDo6bmF0dXJhbFNpemUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbTo6
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW0pOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HYW1l
cGFkc0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkc0d0azo6cmVnaXN0ZXJEZXZp
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZHNHdGs6OnVucmVnaXN0ZXJEZXZpY2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9LZXlFdmVudElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OmtleUlkZW50aWZpZXJGb3JLZXlFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1BsYXRm
b3JtRXZlbnRGYWN0b3J5TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRlbnRpZmllckZv
cktleUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q29udGVudHNTaXplKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXREZWZlcnNMb2FkaW5nKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1I
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3Nl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cHJveHlBdXRvQ29uZmlndXJhdGlvblJlc3VsdENhbGxiYWNrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpkaWRSZWNlaXZlRGF0YUFycmF5
KToKKyAgICAgICAgKFdlYkNvcmU6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpkaWRGYWlsKToKKyAgICAgICAg
KFdlYkNvcmU6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2FuUmVz
cG9uZFRvUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
SW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRs
ZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OnJlY2VpdmVkUmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlh
bCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6cmVjZWl2ZWRDYW5jZWxsYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VDb25uZWN0aW9u
Rm9yRG93bmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFt
SGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL1NvY2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0
U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
Y2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9lZmwvTmV0d29ya1N0YXRlTm90aWZpZXJFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0YXRlTm90aWZpZXI6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjp+UmVzb3VyY2VIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGU6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpjYW5jZWwp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5l
Y3Rpb246d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6XSk6CisgICAgICAgICgtW1dl
YkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvblNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
IGNvbm5lY3Rpb246ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl0pOgorICAgICAg
ICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkQ2FuY2Vs
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhh
bmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNv
bm5lY3Rpb246ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3Vy
Y2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkUmVjZWl2ZURhdGFBcnJheTpdKToKKyAg
ICAgICAgKC1bV2ViQ29yZVJlc291cmNlSGFuZGxlQXNEZWxlZ2F0ZSBjb25uZWN0aW9uOmRpZFJl
Y2VpdmVEYXRhOmxlbmd0aFJlY2VpdmVkOl0pOgorICAgICAgICAoLVtXZWJDb3JlUmVzb3VyY2VI
YW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbFN0b3BCdWZmZXJpbmdEYXRhOl0pOgorICAg
ICAgICAoLVtXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246ZGlkU2Vu
ZEJvZHlEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6
CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVsZWdhdGUgY29ubmVjdGlvbkRp
ZEZpbmlzaExvYWRpbmc6XSk6CisgICAgICAgICgtW1dlYkNvcmVSZXNvdXJjZUhhbmRsZUFzRGVs
ZWdhdGUgY29ubmVjdGlvbjpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXZWJDb3Jl
UmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRlIGNvbm5lY3Rpb246d2lsbENhY2hlUmVzcG9uc2U6XSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1I
YW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNl
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3Nl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVh
bUhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRT
dHJlYW1IYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0
Zm9ybVNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9y
bUNsb3NlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5k
bGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRT
dHJlYW1IYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjp+U29j
a2V0U3RyZWFtSGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6
cGxhdGZvcm1TZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6cGxh
dGZvcm1DbG9zZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjpzZXRCdXN5VGltZW91dCk6CisgICAg
ICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6c2V0QnVzeUhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmNsZWFyQWxsVGFibGVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlOjpydW5WYWN1dW1Db21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQpOgorICAgICAgICAq
IHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlU3RhdGVtZW50OjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dDo6c3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmZpbmFsaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5CbG9iKToKKyAgICAgICAgKFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudDo6cmV0dXJuVGV4dFJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50OjpyZXR1cm5JbnRSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudDo6cmV0dXJuSW50NjRSZXN1bHRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZVN0YXRlbWVudDo6cmV0dXJuRG91YmxlUmVzdWx0cyk6CisgICAgICAgICogcGxhdGZvcm0v
d2luL0dESU9iamVjdENvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R0RJT2JqZWN0Q291
bnRlcjo6fkdESU9iamVjdENvdW50ZXIpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojppbml0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsdWdpblZpZXc6On5QbHVnaW5WaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZp
ZXc6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0aWMpOgorICAgICAgICAoV2Vi
Q29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6Z2V0VmFsdWVGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0VmFs
dWVGb3JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0QXV0aGVudGljYXRp
b25JbmZvKToKKyAgICAgICAgKiBwbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luUGFja2FnZUJsYWNr
QmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luUGFja2FnZTo6bG9hZCk6CisgICAg
ICAgICogcGx1Z2lucy9ndGsvUGx1Z2luUGFja2FnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVnaW5zL21hYy9QbHVnaW5QYWNr
YWdlTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmZldGNoSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5QYWNrYWdlOjpsb2FkKToKKyAgICAgICAgKiBwbHVn
aW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6
cGxhdGZvcm1TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzZXRQYXJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2hvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpQbHVnaW5WaWV3OjpoaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldEZv
Y3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OnNldE5QV2luZG93SWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6cGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luVmlldzo6aGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZp
ZXc6Om51bGxFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIHBsdWdpbnMvcXQvUGx1Z2luUGFj
a2FnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblBhY2thZ2U6OmxvYWQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5mbyk6CisK
IDIwMTItMTEtMDkgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAK
ICAgICAgICAgW1RleE1hcF0gSW5pdGlhbGl6ZSBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0ciBp
biBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMDc2MDM5ODc5YTE3YTNjNWUwNzUwZDNlODlkZTg2MTkwNmE4N2EwYS4uNzM1Y2JkZTRjNzYx
ZTBkYjE2YTgzNTFkNDQ2MjllZmRmNjgwYWYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMS0wOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgdGhlIExPRygpIG1hY3JvIHRvIExPR19JTkZPKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgyNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1Nv
Y2tldFN0cmVhbUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGVJbnRlcm5hbDo6Y29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5k
bGVJbnRlcm5hbDo6c2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJ
bnRlcm5hbDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW50
ZXJuYWw6OmRpZE9wZW5TdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlSW50ZXJuYWw6OmRpZFNlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUludGVybmFsOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb2Nr
ZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkQ2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZEZhaWwpOgorCiAyMDEyLTExLTA5ICBBbGVjIEZs
ZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IENvbWJp
bmUgSURCQmFja2luZ1N0b3JlIGFuZCBJREJMZXZlbERCQmFja2luZ1N0b3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKaW5kZXggNjM5ZDEwMjlmODEyMzBlMzU5ZTM3N2Q1ODE1ZDIyYzhlMGNkNGUzNC4uZDZkN2U0
NjdkYzU1MjBjYmVkZTk4ZGJjNTVkZGZhMzZmMDQ4MGI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwMyBAQAorMjAxMi0xMS0wOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZW5hbWUgdGhlIExPRygpIG1hY3JvIHRvIExPR19JTkZPKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgyNQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGlzdG9yeS9X
ZWJIaXN0b3J5Lm1tOgorICAgICAgICAoLVtXZWJIaXN0b3J5UHJpdmF0ZSB2aXNpdGVkVVJMOndp
dGhUaXRsZTppbmNyZWFzZVZpc2l0Q291bnQ6XSk6CisgICAgICAgICgtW1dlYkhpc3RvcnlQcml2
YXRlIGxvYWRGcm9tVVJMOmNvbGxlY3REaXNjYXJkZWRJdGVtc0ludG86ZXJyb3I6XSk6CisgICAg
ICAgICgtW1dlYkhpc3RvcnlQcml2YXRlIHNhdmVUb1VSTDplcnJvcjpdKToKKyAgICAgICAgKiBN
aXNjL1dlYkljb25EYXRhYmFzZS5tbToKKyAgICAgICAgKC1bV2ViSWNvbkRhdGFiYXNlIF9zY2Fs
ZUljb246dG9TaXplOl0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVu
dEhhbmRsZXJDYXJib24ubW06CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxl
ckNhcmJvbjo6ZHJhd1JlY3QpOgorICAgICAgICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDYXJib246Om1vdXNlRG93bik6CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNhcmJvbjo6bW91c2VVcCk6CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFu
ZGxlckNhcmJvbjo6bW91c2VFbnRlcmVkKToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luRXZl
bnRIYW5kbGVyQ2FyYm9uOjptb3VzZUV4aXRlZCk6CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdp
bkV2ZW50SGFuZGxlckNhcmJvbjo6bW91c2VNb3ZlZCk6CisgICAgICAgIChXZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNhcmJvbjo6Zm9jdXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYk5ldHNj
YXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uOjp3aW5kb3dGb2N1c0NoYW5nZWQpOgorICAgICAg
ICAoV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJib246OlRTTUV2ZW50SGFuZGxlcik6
CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW06CisgICAgICAg
ICgtW1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZSBfdHJ5TG9hZF0pOgorICAgICAgICAoLVtXZWJO
ZXRzY2FwZVBsdWdpblBhY2thZ2UgX3VubG9hZFdpdGhTaHV0ZG93bjpdKToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAoV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW06OnN0YXJ0U3RyZWFtKToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3Ry
ZWFtOjpkZXN0cm95U3RyZWFtKToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpk
ZWxpdmVyRGF0YSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06
CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzZXRXaW5kb3dJZk5lY2Vzc2FyeV0p
OgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgY3JlYXRlUGx1Z2luXSk6CisgICAg
ICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBzZXRBdHRyaWJ1dGVLZXlzOmFuZFZhbHVlczpd
KToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGdldFVSTE5vdGlmeTp0YXJnZXQ6
bm90aWZ5RGF0YTpdKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGdldFVSTDp0
YXJnZXQ6XSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2luVmlldyBwb3N0VVJMTm90aWZ5
OnRhcmdldDpsZW46YnVmOmZpbGU6bm90aWZ5RGF0YTpdKToKKyAgICAgICAgKC1bV2ViTmV0c2Nh
cGVQbHVnaW5WaWV3IHBvc3RVUkw6dGFyZ2V0OmxlbjpidWY6ZmlsZTpdKToKKyAgICAgICAgKC1b
V2ViTmV0c2NhcGVQbHVnaW5WaWV3IG5ld1N0cmVhbTp0YXJnZXQ6c3RyZWFtOl0pOgorICAgICAg
ICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgd3JpdGU6bGVuOmJ1ZmZlcjpdKToKKyAgICAgICAg
KC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3IGRlc3Ryb3lTdHJlYW06cmVhc29uOl0pOgorICAgICAg
ICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgc3RhdHVzOl0pOgorICAgICAgICAoLVtXZWJOZXRz
Y2FwZVBsdWdpblZpZXcgaW52YWxpZGF0ZVJlY3Q6XSk6CisgICAgICAgICgtW1dlYk5ldHNjYXBl
UGx1Z2luVmlldyBpbnZhbGlkYXRlUmVnaW9uOl0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBs
dWdpblZpZXcgZm9yY2VSZWRyYXddKToKKyAgICAgICAgKC1bV2ViTmV0c2NhcGVQbHVnaW5WaWV3
IHNldFZhcmlhYmxlOnZhbHVlOl0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcg
X2NyZWF0ZVBsdWdpbl0pOgorICAgICAgICAoLVtXZWJOZXRzY2FwZVBsdWdpblZpZXcgX2Rlc3Ry
b3lQbHVnaW5dKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRyb2xsZXIubW06Cisg
ICAgICAgICgtW1dlYlBsdWdpbkNvbnRyb2xsZXIgc3RhcnRBbGxQbHVnaW5zXSk6CisgICAgICAg
ICgtW1dlYlBsdWdpbkNvbnRyb2xsZXIgc3RvcEFsbFBsdWdpbnNdKToKKyAgICAgICAgKC1bV2Vi
UGx1Z2luQ29udHJvbGxlciBhZGRQbHVnaW46XSk6CisgICAgICAgICogUGx1Z2lucy9XZWJQbHVn
aW5EYXRhYmFzZS5tbToKKyAgICAgICAgKC1bV2ViUGx1Z2luRGF0YWJhc2UgcmVmcmVzaF0pOgor
ICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luUGFja2FnZS5tbToKKyAgICAgICAgKC1bV2ViUGx1
Z2luUGFja2FnZSBsb2FkXSk6CisgICAgICAgICogUGx1Z2lucy9ucGFwaS5tbToKKyAgICAgICAg
KE5QTl9NZW1GbHVzaCk6CisgICAgICAgIChOUE5fUmVsb2FkUGx1Z2lucyk6CisgICAgICAgIChO
UE5fUmVxdWVzdFJlYWQpOgorICAgICAgICAoTlBOX0dldEphdmFFbnYpOgorICAgICAgICAoTlBO
X0dldEphdmFQZWVyKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
bW06CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06Cisg
ICAgICAgIChwbHVnaW5WaWV3KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkFyY2hpdmUubW06Cisg
ICAgICAgICgtW1dlYkFyY2hpdmUgaW5pdFdpdGhEYXRhOl0pOgorICAgICAgICAoLVtXZWJBcmNo
aXZlIGRhdGFdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRhdGFTb3VyY2UubW06CisgICAgICAg
ICgtW1dlYkRhdGFTb3VyY2UgX2luaXRXaXRoRG9jdW1lbnRMb2FkZXI6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgZGlkQWRkU3Vi
dmlldzpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgd2lsbFJlbW92ZVN1YnZpZXc6XSk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IHJlYXBwbHlTdHlsZXNdKToKKyAgICAgICAgKC1bV2ViSFRN
TFZpZXcgbGF5b3V0VG9NaW5pbXVtUGFnZVdpZHRoOmhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0aDpv
cmlnaW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdGluZ1ZpZXdTaXplOl0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXROZWVkc0Rpc3BsYXk6XSk6CisgICAgICAgICgt
W1dlYkhUTUxWaWV3IHNldE5lZWRzTGF5b3V0Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBz
ZXROZWVkc1RvQXBwbHlTdHlsZXM6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRyYXdSZWN0
Ol0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyB2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0
XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHRleHRTdG9yYWdlXSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IGNoYXJhY3RlckluZGV4Rm9yUG9pbnQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmll
dyBzZWxlY3RlZFJhbmdlXSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1hcmtlZFJhbmdlXSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6XSk6
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGhhc01hcmtlZFRleHRdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgdW5tYXJrVGV4dF0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXRNYXJrZWRU
ZXh0OnNlbGVjdGVkUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGRvQ29tbWFuZEJ5
U2VsZWN0b3I6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IGluc2VydFRleHQ6XSk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF9hdHRyaWJ1dGVTdHJpbmdGcm9tRE9NUmFuZ2U6XSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5j
ZXMgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX2dldEluc3Rh
bmNlRm9ySWRlbnRpZmllcjpdKToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgX3NldEluc3Rh
bmNlOmZvcklkZW50aWZpZXI6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW1dlYlZpZXcgZW5j
b2RlV2l0aENvZGVyOl0pOgorCiAyMDEyLTExLTA4ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5
QGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgdXNlIGEgdGV4dHVyZWQgd2luZG93IGZvciB0
aGUgV2ViIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAyNjM1MTc0M2JkODY1ODIwYTE4
NmZjMzkwZGZiM2MyY2QwNTQyMWY4Li4wYzMyZjg2Y2RlNTk2YzI2Y2NkNWYxYjJkNGYyYjBlMzlj
MWJlZTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTItMTEtMDkgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIHRoZSBM
T0coKSBtYWNybyB0byBMT0dfSU5GTygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIERlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAg
KERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZSk6CisgICAgICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlkQ2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6
OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKERlZmF1bHREb3dubG9hZERlbGVnYXRl
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoRGVmYXVsdERv
d25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhT2ZMZW5ndGgpOgorICAgICAgICAoRGVmYXVs
dERvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChEZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZTo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUpOgorICAg
ICAgICAoRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OndpbGxSZXN1bWVXaXRoUmVzcG9uc2UpOgor
ICAgICAgICAoRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlkQmVnaW4pOgorICAgICAgICAoRGVmYXVs
dERvd25sb2FkRGVsZWdhdGU6OmRpZEZpbmlzaCk6CisgICAgICAgIChEZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZTo6ZGlkRmFpbFdpdGhFcnJvcik6CisgICAgICAgICogV2ViRG93bmxvYWQuY3BwOgor
ICAgICAgICAoV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCk6CisgICAgICAgICogV2ViRG93bmxv
YWRDRk5ldC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6aW5pdCk6CisgICAgICAgIChXZWJE
b3dubG9hZDo6aW5pdFdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkRvd25sb2FkOjppbml0VG9S
ZXN1bWVXaXRoQnVuZGxlKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpzdGFydCk6CisgICAgICAg
IChXZWJEb3dubG9hZDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjpjYW5jZWxGb3JS
ZXN1bWUpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKToKKyAgICAgICAg
KFdlYkRvd25sb2FkOjpkaWRTdGFydCk6CisgICAgICAgIChXZWJEb3dubG9hZDo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmRpZEZpbmlzaCk6CisgICAgICAgICogV2Vi
Vmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpvbklNRVN0YXJ0Q29tcG9zaXRpb24pOgorICAg
ICAgICAoV2ViVmlldzo6b25JTUVDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJWaWV3OjpvbklN
RUVuZENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdlYlZpZXc6Om9uSU1FQ2hhcik6CisgICAgICAg
IChXZWJWaWV3OjpvbklNRU5vdGlmeSk6CisgICAgICAgIChXZWJWaWV3OjpvbklNRVJlcXVlc3Qp
OgorICAgICAgICAoV2ViVmlldzo6b25JTUVTZWxlY3QpOgorICAgICAgICAoV2ViVmlldzo6b25J
TUVTZXRDb250ZXh0KToKKwogMjAxMi0xMS0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGF5ZXIgYm9yZGVycyB0byBjbGVhbmluZyBhcHBl
YXIgYW5kIGRpc2FwcGVhciBvbiBzd2l0Y2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkOGFmZTE3YTJmODMx
MTIzZDc2YmE4YmMyYzI0Y2FjOTczNmFjMTFhLi4yMTk4OThmMDllMmI2YjhkMzk1NmZhOGM5OWJk
OWViZjlmMGNiMWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODYgQEAKKzIwMTItMTEtMDkgIERh
bmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lIHRoZSBM
T0coKSBtYWNybyB0byBMT0dfSU5GTygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDE4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzY2hlZHVsZU5ldHdvcmtSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFNjaGVkdWxlcjo6YWRkTG9hZEluUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmVMb2FkSWRlbnRpZmllcik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVk
aXJlY3RSZWNlaXZlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHNGb3JIb3N0KToKKyAgICAg
ICAgKiBQbHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6d2Via2l0WEVycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9X
S1ByaW50aW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZE
YXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZF0pOgorICAgICAgICAocGFnZURpZENvbXB1
dGVQYWdlUmVjdHMpOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBrbm93c1BhZ2VSYW5nZTpd
KToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgZHJhd1JlY3Q6XSk6CisgICAgICAgICgtW1dL
UHJpbnRpbmdWaWV3IHJlY3RGb3JQYWdlOl0pOgorICAgICAgICAoLVtXS1ByaW50aW5nVmlldyBi
ZWdpbkRvY3VtZW50XSk6CisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IGVuZERvY3VtZW50XSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1Zp
ZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpdKToKKyAgICAgICAgKC1bV0tWaWV3IGluc2VydFRleHQ6
cmVwbGFjZW1lbnRSYW5nZTpdKToKKyAgICAgICAgKC1bV0tWaWV3IGtleVVwOl0pOgorICAgICAg
ICAoLVtXS1ZpZXcga2V5RG93bjpdKToKKyAgICAgICAgKC1bV0tWaWV3IGZsYWdzQ2hhbmdlZDpd
KToKKyAgICAgICAgKC1bV0tWaWV3IF9leGVjdXRlU2F2ZWRLZXlwcmVzc0NvbW1hbmRzXSk6Cisg
ICAgICAgICgtW1dLVmlldyBfbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3Np
dGlvbl0pOgorICAgICAgICAoLVtXS1ZpZXcgc2VsZWN0ZWRSYW5nZV0pOgorICAgICAgICAoLVtX
S1ZpZXcgaGFzTWFya2VkVGV4dF0pOgorICAgICAgICAoLVtXS1ZpZXcgdW5tYXJrVGV4dF0pOgor
ICAgICAgICAoLVtXS1ZpZXcgdmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dF0pOgorICAgICAg
ICAoLVtXS1ZpZXcgc2V0TWFya2VkVGV4dDpzZWxlY3RlZFJhbmdlOnJlcGxhY2VtZW50UmFuZ2U6
XSk6CisgICAgICAgICgtW1dLVmlldyBtYXJrZWRSYW5nZV0pOgorICAgICAgICAoLVtXS1ZpZXcg
YXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2U6YWN0dWFsUmFuZ2U6XSk6CisgICAg
ICAgICgtW1dLVmlldyBjaGFyYWN0ZXJJbmRleEZvclBvaW50Ol0pOgorICAgICAgICAoLVtXS1Zp
ZXcgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6YWN0dWFsUmFuZ2U6XSk6CisgICAgICAgICgt
W1dLVmlldyBkcmF3UmVjdDpdKToKKyAgICAgICAgKC1bV0tWaWV3IF9pbnRlcnByZXRLZXlFdmVu
dDpzYXZpbmdDb21tYW5kc1RvOldlYkNvcmU6Ol0pOgorICAgICAgICAoLVtXS1ZpZXcgX3VwZGF0
ZVNlY3VyZUlucHV0U3RhdGVdKToKKyAgICAgICAgKC1bV0tWaWV3IHByaW50T3BlcmF0aW9uV2l0
aFByaW50SW5mbzpmb3JGcmFtZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViSWNvbkRhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFiYXNlOjpzZXRJY29uVVJMRm9y
UGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYkljb25EYXRhYmFzZTo6c2V0SWNvbkRhdGFG
b3JJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFiYXNlOjpnZXRMb2FkRGVj
aXNpb25Gb3JJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViSWNvbkRhdGFiYXNlOjpkaWRG
aW5pc2hVUkxJbXBvcnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQ6Omdl
dENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJl
c2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpyZXN0b3Jl
RnJvbUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0OjpyZXN0b3JlRnJvbVYwQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OnJlc3RvcmVGcm9tVjFDRkRpY3Rp
b25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmV4dHJhY3RCYWNrRm9yd2Fy
ZExpc3RFbnRyaWVzRnJvbUFycmF5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVBy
b3h5Q0YuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vz
c2lvblN0YXRlRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlldzo6b25JTUVTdGFydENvbXBvc2l0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6b25JTUVDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6Om9uSU1FRW5kQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpv
bklNRVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpvbklNRVNlbGVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6Om9uSU1FU2V0Q29udGV4dCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xp
ZW50OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjphZGRNYWluUmVzb3VyY2VMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNl
aXZlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQ
ZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNj
aGVkdWxlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQpOgorCiAyMDEyLTEx
LTA5ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgTmV0d29ya1Byb2Nlc3Mgd2lsbFNlbmRSZXF1ZXN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9Bc3NlcnRpb25zLmggYi9Tb3VyY2UvV1RGL3d0Zi9Bc3NlcnRpb25zLmgKaW5kZXggN2Uw
NzlhYjE4N2M2NDM3YWEyMWNkY2I2MDkwNmM1MGM4MDY1YWQ1Ny4uMTk2ZWFmNTJkODAyZTUzYjY3
MmRlMzViOWY2NDFjZjJhYTQwYWY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQXNzZXJ0
aW9ucy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Fzc2VydGlvbnMuaApAQCAtMzU1LDExICszNTUs
MTEgQEAgd2hpbGUgKDApCiAvKiBMT0cgKi8KIAogI2lmIENPTVBJTEVSKE1TVkM3X09SX0xPV0VS
KQotI2RlZmluZSBMT0coKSAoKHZvaWQpMCkKKyNkZWZpbmUgTE9HX0lORk8oKSAoKHZvaWQpMCkK
ICNlbGlmIExPR19ESVNBQkxFRAotI2RlZmluZSBMT0coY2hhbm5lbCwgLi4uKSAoKHZvaWQpMCkK
KyNkZWZpbmUgTE9HX0lORk8oY2hhbm5lbCwgLi4uKSAoKHZvaWQpMCkKICNlbHNlCi0jZGVmaW5l
IExPRyhjaGFubmVsLCAuLi4pIFdURkxvZygmSk9JTl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWChM
T0dfQ0hBTk5FTF9QUkVGSVgsIGNoYW5uZWwpLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgTE9HX0lO
Rk8oY2hhbm5lbCwgLi4uKSBXVEZMb2coJkpPSU5fTE9HX0NIQU5ORUxfV0lUSF9QUkVGSVgoTE9H
X0NIQU5ORUxfUFJFRklYLCBjaGFubmVsKSwgX19WQV9BUkdTX18pCiAjZGVmaW5lIEpPSU5fTE9H
X0NIQU5ORUxfV0lUSF9QUkVGSVgocHJlZml4LCBjaGFubmVsKSBKT0lOX0xPR19DSEFOTkVMX1dJ
VEhfUFJFRklYX0xFVkVMXzIocHJlZml4LCBjaGFubmVsKQogI2RlZmluZSBKT0lOX0xPR19DSEFO
TkVMX1dJVEhfUFJFRklYX0xFVkVMXzIocHJlZml4LCBjaGFubmVsKSBwcmVmaXggIyMgY2hhbm5l
bAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuY3BwIGIvU291cmNlL1dURi93dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAppbmRleCA0
YTA0NTI4MjQ4OWZlOTVhMTdlMjM5MTk3NzNkMzdjYjI0NDEwYmU1Li5iY2IxM2VkNmRhN2RjODI1
MmYzMTEyMDY4OTBkNDk5OGFhZDNlMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRMZWFr
Q291bnRlci5jcHAKQEAgLTY4LDEwICs2OCwxMCBAQCBSZWZDb3VudGVkTGVha0NvdW50ZXI6On5S
ZWZDb3VudGVkTGVha0NvdW50ZXIoKQogICAgIHN0YXRpYyBib29sIGxvZ2dlZFN1cHByZXNzaW9u
UmVhc29uOwogICAgIGlmIChtX2NvdW50KSB7CiAgICAgICAgIGlmICghbGVha01lc3NhZ2VTdXBw
cmVzc2lvblJlYXNvbnMgfHwgbGVha01lc3NhZ2VTdXBwcmVzc2lvblJlYXNvbnMtPmlzRW1wdHko
KSkKLSAgICAgICAgICAgIExPRyhSZWZDb3VudGVkTGVha3MsICJMRUFLOiAldSAlcyIsIG1fY291
bnQsIG1fZGVzY3JpcHRpb24pOworICAgICAgICAgICAgTE9HX0lORk8oUmVmQ291bnRlZExlYWtz
LCAiTEVBSzogJXUgJXMiLCBtX2NvdW50LCBtX2Rlc2NyaXB0aW9uKTsKICAgICAgICAgZWxzZSBp
ZiAoIWxvZ2dlZFN1cHByZXNzaW9uUmVhc29uKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGxvZ3Mg
b25seSBvbmUgcmVhc29uLiBMYXRlciB3ZSBjb3VsZCBjaGFuZ2UgaXQgc28gd2UgbG9nIGFsbCB0
aGUgcmVhc29ucy4KLSAgICAgICAgICAgIExPRyhSZWZDb3VudGVkTGVha3MsICJObyBsZWFrIGNo
ZWNraW5nIGRvbmU6ICVzIiwgbGVha01lc3NhZ2VTdXBwcmVzc2lvblJlYXNvbnMtPmJlZ2luKCkt
PmtleSk7CisgICAgICAgICAgICBMT0dfSU5GTyhSZWZDb3VudGVkTGVha3MsICJObyBsZWFrIGNo
ZWNraW5nIGRvbmU6ICVzIiwgbGVha01lc3NhZ2VTdXBwcmVzc2lvblJlYXNvbnMtPmJlZ2luKCkt
PmtleSk7CiAgICAgICAgICAgICBsb2dnZWRTdXBwcmVzc2lvblJlYXNvbiA9IHRydWU7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggZmU0N2FjY2Zh
MGYyMmQ0YWU3NDg2ZGVhZTFkNDIxNjdiMDAyMGUxNy4uYTgxZGFmNjkzNWQxNmRhZTE2NzE1MmUw
ZGU4NDcwYzA0ZDVlZmVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtNDgs
NyArNDgsNyBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6aW5pdGlhbGl6ZSgp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IGhhcmR3YXJlU2FtcGxlUmF0ZSA9IEF1ZGlv
RGVzdGluYXRpb246OmhhcmR3YXJlU2FtcGxlUmF0ZSgpOwotICAgIExPRyhXZWJBdWRpbywgIj4+
Pj4gaGFyZHdhcmVTYW1wbGVSYXRlID0gJWZcbiIsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CisgICAg
TE9HX0lORk8oV2ViQXVkaW8sICI+Pj4+IGhhcmR3YXJlU2FtcGxlUmF0ZSA9ICVmXG4iLCBoYXJk
d2FyZVNhbXBsZVJhdGUpOwogICAgIAogICAgIG1fZGVzdGluYXRpb24gPSBBdWRpb0Rlc3RpbmF0
aW9uOjpjcmVhdGUoKnRoaXMsIGhhcmR3YXJlU2FtcGxlUmF0ZSk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggZGFkMDY3YTNkODA4YWQ4NzAxNGY5OWQ4YTZhODdhZjNh
YzhkZjM1NC4uYzkxYzJmYmU3MjAyNDQ4NzE4OGE5OGIzMWRlOTcxNzYyNzIwNTI0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1Nv
dXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtNzAsNyArNzAsNyBAQCB2b2lkIE1lZGlhRWxl
bWVudEF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBm
bG9hdCBzb3VyYwogICAgIGlmIChudW1iZXJPZkNoYW5uZWxzICE9IG1fc291cmNlTnVtYmVyT2ZD
aGFubmVscyB8fCBzb3VyY2VTYW1wbGVSYXRlICE9IG1fc291cmNlU2FtcGxlUmF0ZSkgewogICAg
ICAgICBpZiAoIW51bWJlck9mQ2hhbm5lbHMgfHwgbnVtYmVyT2ZDaGFubmVscyA+IEF1ZGlvQ29u
dGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpIHx8IHNvdXJjZVNhbXBsZVJhdGUgPCBtaW5TYW1w
bGVSYXRlIHx8IHNvdXJjZVNhbXBsZVJhdGUgPiBtYXhTYW1wbGVSYXRlKSB7CiAgICAgICAgICAg
ICAvLyBwcm9jZXNzKCkgd2lsbCBnZW5lcmF0ZSBzaWxlbmNlIGZvciB0aGVzZSB1bmluaXRpYWxp
emVkIHZhbHVlcy4KLSAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZTo6c2V0Rm9ybWF0KCV1LCAlZikgLSB1bmhhbmRsZWQgZm9ybWF0IGNoYW5nZSIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihudW1iZXJPZkNoYW5uZWxzKSwgc291cmNlU2FtcGxlUmF0ZSk7
CisgICAgICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZTo6c2V0Rm9ybWF0KCV1LCAlZikgLSB1bmhhbmRsZWQgZm9ybWF0IGNoYW5nZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihudW1iZXJPZkNoYW5uZWxzKSwgc291cmNlU2FtcGxlUmF0ZSk7CiAgICAg
ICAgICAgICBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMgPSAwOwogICAgICAgICAgICAgbV9zb3Vy
Y2VTYW1wbGVSYXRlID0gMDsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZS5jcHAKaW5kZXggNmE4MGYwNGU3ODNkNzYzYWYxOTRlOWIyOTljMjk0OTJkYmVhNzQwMC4u
ZmY3YTA1YTlhOGFlZGNmYWI3YWIxYjQ2MTYzNmE1M2MxMTIwYTIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UK
ICAgICAgICAgLy8gVGhlIHNhbXBsZS1yYXRlIG11c3QgYmUgZXF1YWwgdG8gdGhlIGNvbnRleHQn
cyBzYW1wbGUtcmF0ZS4KICAgICAgICAgaWYgKCFudW1iZXJPZkNoYW5uZWxzIHx8IG51bWJlck9m
Q2hhbm5lbHMgPiBBdWRpb0NvbnRleHQ6Om1heE51bWJlck9mQ2hhbm5lbHMoKSB8fCBzb3VyY2VT
YW1wbGVSYXRlICE9IHNhbXBsZVJhdGUoKSkgewogICAgICAgICAgICAgLy8gcHJvY2VzcygpIHdp
bGwgZ2VuZXJhdGUgc2lsZW5jZSBmb3IgdGhlc2UgdW5pbml0aWFsaXplZCB2YWx1ZXMuCi0gICAg
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0
KCV1LCAlZikgLSB1bmhhbmRsZWQgZm9ybWF0IGNoYW5nZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihudW1iZXJPZkNoYW5uZWxzKSwgc291cmNlU2FtcGxlUmF0ZSk7CisgICAgICAgICAgICBMT0df
SU5GTyhNZWRpYSwgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoJXUsICVm
KSAtIHVuaGFuZGxlZCBmb3JtYXQgY2hhbmdlIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bWJl
ck9mQ2hhbm5lbHMpLCBzb3VyY2VTYW1wbGVSYXRlKTsKICAgICAgICAgICAgIG1fc291cmNlTnVt
YmVyT2ZDaGFubmVscyA9IDA7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJh
c2UuY3BwCmluZGV4IDYyOTA3ZTNlMWNlNmIwOTE1YzJiMDM0NzYwOWU1MDdlOGMwMWNlYjYuLjhi
YzQ3NTE1NjY5NzBiODI4ZTNlYmZmZmY5NjY1OTUxNzhmNDBkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlLmNwcApA
QCAtMjgzLDcgKzI4Myw3IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRW
ZXJpZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwKICAgICAgICAgaWYgKGVu
dHJ5ICE9IGd1aWRUb1ZlcnNpb25NYXAoKS5lbmQoKSkgewogICAgICAgICAgICAgLy8gTWFwIG51
bGwgc3RyaW5nIHRvIGVtcHR5IHN0cmluZyAoc2VlIHVwZGF0ZUd1aWRWZXJzaW9uTWFwKCkpLgog
ICAgICAgICAgICAgY3VycmVudFZlcnNpb24gPSBlbnRyeS0+dmFsdWUuaXNOdWxsKCkgPyBlbXB0
eVN0cmluZygpIDogZW50cnktPnZhbHVlLmlzb2xhdGVkQ29weSgpOwotICAgICAgICAgICAgTE9H
KFN0b3JhZ2VBUEksICJDdXJyZW50IGNhY2hlZCB2ZXJzaW9uIGZvciBndWlkICVpIGlzICVzIiwg
bV9ndWlkLCBjdXJyZW50VmVyc2lvbi5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0df
SU5GTyhTdG9yYWdlQVBJLCAiQ3VycmVudCBjYWNoZWQgdmVyc2lvbiBmb3IgZ3VpZCAlaSBpcyAl
cyIsIG1fZ3VpZCwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRhKCkpOwogCiAjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCiAgICAgICAgICAgICAvLyBOb3RlOiBJbiBtdWx0aS1wcm9jZXNzIGJyb3dz
ZXJzIHRoZSBjYWNoZWQgdmFsdWUgbWF5IGJlIGluYWNjdXJhdGUsIGJ1dApAQCAtMzAyLDcgKzMw
Miw3IEBAIGJvb2wgQWJzdHJhY3REYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBz
aG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwKICAgICAgICAgICAgIG1fc3FsaXRlRGF0YWJh
c2Uuc2V0QnVzeVRpbWVvdXQobWF4U3FsaXRlQnVzeVdhaXRUaW1lKTsKICNlbmRpZgogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJObyBjYWNoZWQgdmVyc2lv
biBmb3IgZ3VpZCAlaSIsIG1fZ3VpZCk7CisgICAgICAgICAgICBMT0dfSU5GTyhTdG9yYWdlQVBJ
LCAiTm8gY2FjaGVkIHZlcnNpb24gZm9yIGd1aWQgJWkiLCBtX2d1aWQpOwogCiAgICAgICAgICAg
ICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihtX3NxbGl0ZURhdGFiYXNlKTsKICAgICAg
ICAgICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CkBAIC0zMzYsOSArMzM2LDkgQEAgYm9vbCBBYnN0
cmFjdERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNob3VsZFNldFZlcnNpb25J
bk5ld0RhdGFiYXNlLAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoY3VycmVudFZl
cnNpb24ubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlJldHJp
ZXZlZCBjdXJyZW50IHZlcnNpb24gJXMgZnJvbSBkYXRhYmFzZSAlcyIsIGN1cnJlbnRWZXJzaW9u
LmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgICAgICBMT0dfSU5GTyhTdG9yYWdlQVBJLCAiUmV0cmlldmVkIGN1cnJlbnQgdmVy
c2lvbiAlcyBmcm9tIGRhdGFiYXNlICVzIiwgY3VycmVudFZlcnNpb24uYXNjaWkoKS5kYXRhKCks
IGRhdGFiYXNlRGVidWdOYW1lKCkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgfSBlbHNl
IGlmICghbV9uZXcgfHwgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UpIHsKLSAgICAgICAg
ICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNldHRpbmcgdmVyc2lvbiAlcyBpbiBkYXRhYmFzZSAl
cyB0aGF0IHdhcyBqdXN0IGNyZWF0ZWQiLCBtX2V4cGVjdGVkVmVyc2lvbi5hc2NpaSgpLmRhdGEo
KSwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAg
TE9HX0lORk8oU3RvcmFnZUFQSSwgIlNldHRpbmcgdmVyc2lvbiAlcyBpbiBkYXRhYmFzZSAlcyB0
aGF0IHdhcyBqdXN0IGNyZWF0ZWQiLCBtX2V4cGVjdGVkVmVyc2lvbi5hc2NpaSgpLmRhdGEoKSwg
ZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KCFzZXRWZXJzaW9uSW5EYXRhYmFzZShtX2V4cGVjdGVkVmVyc2lvbiwgZmFsc2UpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJlcG9ydE9wZW5EYXRhYmFzZVJlc3VsdCg1LCBJTlZBTElEX1NUQVRF
X0VSUiwgbV9zcWxpdGVEYXRhYmFzZS5sYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGVycm9yTWVzc2FnZSA9IGZvcm1hdEVycm9yTWVzc2FnZSgidW5hYmxlIHRvIG9wZW4gZGF0YWJh
c2UsIGZhaWxlZCB0byB3cml0ZSBjdXJyZW50IHZlcnNpb24iLCBtX3NxbGl0ZURhdGFiYXNlLmxh
c3RFcnJvcigpLCBtX3NxbGl0ZURhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTM1NSw3ICsz
NTUsNyBAQCBib29sIEFic3RyYWN0RGF0YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wg
c2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsCiAgICAgfQogCiAgICAgaWYgKGN1cnJlbnRW
ZXJzaW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAiRGF0YWJhc2UgJXMg
ZG9lcyBub3QgaGF2ZSBpdHMgdmVyc2lvbiBzZXQiLCBkYXRhYmFzZURlYnVnTmFtZSgpLmFzY2lp
KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwgIkRhdGFiYXNlICVzIGRv
ZXMgbm90IGhhdmUgaXRzIHZlcnNpb24gc2V0IiwgZGF0YWJhc2VEZWJ1Z05hbWUoKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgICAgIGN1cnJlbnRWZXJzaW9uID0gIiI7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGQwYzNh
N2ExZTViZDc4NjI4OGI2NDMyOWQxY2JiMDhjNzFhYzE4ZWEuLmM0MTZmMzhjZThjYjk5ZjVjYmZh
ZjExMjdmZmZlNjBlMDliM2I5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC05NSw3ICs5NSw3IEBAIFBhc3NSZWZQdHI8RGF0YWJh
c2U+IERhdGFiYXNlOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgY29uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2Vw
dGlvbkNvZGUmIGUpCiB7CiAgICAgaWYgKCFEYXRhYmFzZVRyYWNrZXI6OnRyYWNrZXIoKS5jYW5F
c3RhYmxpc2hEYXRhYmFzZShjb250ZXh0LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6
ZSkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3JpZ2luICVz
IG5vdCBhbGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgY29u
dGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAg
ICAgIExPR19JTkZPKFN0b3JhZ2VBUEksICJEYXRhYmFzZSAlcyBmb3Igb3JpZ2luICVzIG5vdCBh
bGxvd2VkIHRvIGJlIGVzdGFibGlzaGVkIiwgbmFtZS5hc2NpaSgpLmRhdGEoKSwgY29udGV4dC0+
c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMTE1LDcgKzExNSw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2U+
IERhdGFiYXNlOjpvcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoY29udGV4
dCwgZGF0YWJhc2UsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCktPmhvc3QoKSwgbmFtZSwgZXhw
ZWN0ZWRWZXJzaW9uKTsKIAogICAgIGlmIChkYXRhYmFzZS0+aXNOZXcoKSAmJiBjcmVhdGlvbkNh
bGxiYWNrLmdldCgpKSB7Ci0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRh
YmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0
KCkpOworICAgICAgICBMT0dfSU5GTyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZUNy
ZWF0aW9uQ2FsbGJhY2tUYXNrIGZvciBkYXRhYmFzZSAlcFxuIiwgZGF0YWJhc2UuZ2V0KCkpOwog
ICAgICAgICBkYXRhYmFzZS0+bV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhEYXRh
YmFzZUNyZWF0aW9uQ2FsbGJhY2tUYXNrOjpjcmVhdGUoZGF0YWJhc2UsIGNyZWF0aW9uQ2FsbGJh
Y2spKTsKICAgICB9CiAKQEAgLTE5NiwxMiArMTk2LDEyIEBAIHZvaWQgRGF0YWJhc2U6Om1hcmtB
c0RlbGV0ZWRBbmRDbG9zZSgpCiAgICAgaWYgKG1fZGVsZXRlZCB8fCAhZGF0YWJhc2VDb250ZXh0
KCktPmRhdGFiYXNlVGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhTdG9yYWdl
QVBJLCAiTWFya2luZyAlcyAoJXApIGFzIGRlbGV0ZWQiLCBzdHJpbmdJZGVudGlmaWVyKCkuYXNj
aWkoKS5kYXRhKCksIHRoaXMpOworICAgIExPR19JTkZPKFN0b3JhZ2VBUEksICJNYXJraW5nICVz
ICglcCkgYXMgZGVsZXRlZCIsIHN0cmluZ0lkZW50aWZpZXIoKS5hc2NpaSgpLmRhdGEoKSwgdGhp
cyk7CiAgICAgbV9kZWxldGVkID0gdHJ1ZTsKIAogICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXpl
ciBzeW5jaHJvbml6ZXI7CiAgICAgaWYgKGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkgewotICAgICAgICBMT0co
U3RvcmFnZUFQSSwgIkRhdGFiYXNlIGhhbmRsZSAlcCBpcyBvbiBhIHRlcm1pbmF0ZWQgRGF0YWJh
c2VUaHJlYWQsIGNhbm5vdCBiZSBtYXJrZWQgZm9yIG5vcm1hbCBjbG9zdXJlXG4iLCB0aGlzKTsK
KyAgICAgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwgIkRhdGFiYXNlIGhhbmRsZSAlcCBpcyBvbiBh
IHRlcm1pbmF0ZWQgRGF0YWJhc2VUaHJlYWQsIGNhbm5vdCBiZSBtYXJrZWQgZm9yIG5vcm1hbCBj
bG9zdXJlXG4iLCB0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE0LDcgKzMx
NCw3IEBAIHZvaWQgRGF0YWJhc2U6OnNjaGVkdWxlVHJhbnNhY3Rpb24oKQogCiAgICAgaWYgKHRy
YW5zYWN0aW9uICYmIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKSB7CiAgICAg
ICAgIE93blB0cjxEYXRhYmFzZVRyYW5zYWN0aW9uVGFzaz4gdGFzayA9IERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwotICAgICAgICBMT0coU3RvcmFnZUFQSSwg
IlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVw
XG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2FjdGlvbigpKTsKKyAgICAgICAgTE9HX0lORk8o
U3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRy
YW5zYWN0aW9uICVwXG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2FjdGlvbigpKTsKICAgICAg
ICAgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwogICAgICAgICBkYXRhYmFzZUNvbnRl
eHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKHRhc2sucmVsZWFzZSgpKTsKICAg
ICB9IGVsc2UKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIERhdGFiYXNlOjpzY2hlZHVsZVRyYW5z
YWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGJvb2wgaW1tZWRpYQogICAg
ICAgICByZXR1cm47CiAKICAgICBPd25QdHI8RGF0YWJhc2VUcmFuc2FjdGlvblRhc2s+IHRhc2sg
PSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKLSAgICBMT0co
U3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRo
ZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKKyAgICBMT0dfSU5GTyhTdG9yYWdl
QVBJLCAiU2NoZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5z
YWN0aW9uIHN0ZXBcbiIsIHRhc2suZ2V0KCkpOwogICAgIGlmIChpbW1lZGlhdGVseSkKICAgICAg
ICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlSW1tZWRpYXRl
VGFzayh0YXNrLnJlbGVhc2UoKSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVN5bmMuY3BwCmluZGV4IDhiNzQ0YjhjNjhjM2Zj
YjA0YmQxMzE1NmFiZDcwYjNjNjEyMzE5MTAuLmExNzBhYTMzZjkxMWNjNjE1NzgzOWY1MDk5M2Uw
NGM0ZDNmZmI1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTeW5jLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU3luYy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxEYXRhYmFz
ZVN5bmM+IERhdGFiYXNlU3luYzo6b3BlbkRhdGFiYXNlU3luYyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KgogICAgIEFTU0VSVChjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQoKSk7CiAKICAgICBpZiAo
IURhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmNhbkVzdGFibGlzaERhdGFiYXNlKGNvbnRleHQs
IG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKSkgewotICAgICAgICBMT0coU3RvcmFn
ZUFQSSwgIkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMgbm90IGFsbG93ZWQgdG8gYmUgZXN0YWJs
aXNoZWQiLCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50
b1N0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwg
IkRhdGFiYXNlICVzIGZvciBvcmlnaW4gJXMgbm90IGFsbG93ZWQgdG8gYmUgZXN0YWJsaXNoZWQi
LCBuYW1lLmFzY2lpKCkuZGF0YSgpLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC02OSw3
ICs2OSw3IEBAIFBhc3NSZWZQdHI8RGF0YWJhc2VTeW5jPiBEYXRhYmFzZVN5bmM6Om9wZW5EYXRh
YmFzZVN5bmMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5zZXREYXRhYmFzZURldGFpbHMoY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgbmFt
ZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogCiAgICAgaWYgKGRhdGFiYXNlLT5pc05l
dygpICYmIGNyZWF0aW9uQ2FsbGJhY2suZ2V0KCkpIHsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEks
ICJJbnZva2luZyB0aGUgY3JlYXRpb24gY2FsbGJhY2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRh
YmFzZS5nZXQoKSk7CisgICAgICAgIExPR19JTkZPKFN0b3JhZ2VBUEksICJJbnZva2luZyB0aGUg
Y3JlYXRpb24gY2FsbGJhY2sgZm9yIGRhdGFiYXNlICVwXG4iLCBkYXRhYmFzZS5nZXQoKSk7CiAg
ICAgICAgIGNyZWF0aW9uQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGRhdGFiYXNlLmdldCgpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VUYXNrLmNwcAppbmRleCAwNjY3MjVmZTM3NzJhYTQ4ZGUwYWQ5OWU1MTNkN2Y5ZGZmMmM4OWUy
Li43NDE2Yjg2ODRkYzc1Njc3YzAxMjlkYzM2ODVkMTRlZGFhMDNkZDZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGFzay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suY3BwCkBAIC04
Miw3ICs4Miw3IEBAIHZvaWQgRGF0YWJhc2VUYXNrOjpwZXJmb3JtVGFzaygpCiAgICAgQVNTRVJU
KCFtX2NvbXBsZXRlKTsKICNlbmRpZgogCi0gICAgTE9HKFN0b3JhZ2VBUEksICJQZXJmb3JtaW5n
ICVzICVwXG4iLCBkZWJ1Z1Rhc2tOYW1lKCksIHRoaXMpOworICAgIExPR19JTkZPKFN0b3JhZ2VB
UEksICJQZXJmb3JtaW5nICVzICVwXG4iLCBkZWJ1Z1Rhc2tOYW1lKCksIHRoaXMpOwogCiAgICAg
bV9kYXRhYmFzZS0+cmVzZXRBdXRob3JpemVyKCk7CiAgICAgZG9QZXJmb3JtVGFzaygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFk
LmNwcAppbmRleCBkNzcxYjFjYTFlYzRhYWE3NGY5MzcyZGY1MDllNjJjODdiZmMyMjEwLi42N2I5
MzY5YmMyYmUxYjExMTE0ZmY2OWYyNmNkYTgwNzc5ZDJhNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtNzIs
NyArNzIsNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpyZXF1ZXN0VGVybWluYXRpb24oRGF0YWJh
c2VUYXNrU3luY2hyb25pemVyICpjbGVhbnVwU3luYykKIHsKICAgICBBU1NFUlQoIW1fY2xlYW51
cFN5bmMpOwogICAgIG1fY2xlYW51cFN5bmMgPSBjbGVhbnVwU3luYzsKLSAgICBMT0coU3RvcmFn
ZUFQSSwgIkRhdGFiYXNlVGhyZWFkICVwIHdhcyBhc2tlZCB0byB0ZXJtaW5hdGVcbiIsIHRoaXMp
OworICAgIExPR19JTkZPKFN0b3JhZ2VBUEksICJEYXRhYmFzZVRocmVhZCAlcCB3YXMgYXNrZWQg
dG8gdGVybWluYXRlXG4iLCB0aGlzKTsKICAgICBtX3F1ZXVlLmtpbGwoKTsKIH0KIApAQCAtOTks
NyArOTksNyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAgICAgewog
ICAgICAgICAvLyBXYWl0IGZvciBEYXRhYmFzZVRocmVhZDo6c3RhcnQoKSB0byBjb21wbGV0ZS4K
ICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotICAgICAg
ICBMT0coU3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJhc2VUaHJlYWQgJXAiLCB0aGlzKTsKKyAg
ICAgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwgIlN0YXJ0ZWQgRGF0YWJhc2VUaHJlYWQgJXAiLCB0
aGlzKTsKICAgICB9CiAKICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKQEAgLTExMSw3ICsxMTEs
NyBAQCB2b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRocmVhZCgpCiAgICAgLy8gQ2xlYW4g
dXAgdGhlIGxpc3Qgb2YgYWxsIHBlbmRpbmcgdHJhbnNhY3Rpb25zIG9uIHRoaXMgZGF0YWJhc2Ug
dGhyZWFkCiAgICAgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLT5zaHV0ZG93bigpOwogCi0gICAg
TE9HKFN0b3JhZ2VBUEksICJBYm91dCB0byBkZXRhY2ggdGhyZWFkICVpIGFuZCBjbGVhciB0aGUg
cmVmIHRvIERhdGFiYXNlVGhyZWFkICVwLCB3aGljaCBjdXJyZW50bHkgaGFzICVpIHJlZihzKSIs
IG1fdGhyZWFkSUQsIHRoaXMsIHJlZkNvdW50KCkpOworICAgIExPR19JTkZPKFN0b3JhZ2VBUEks
ICJBYm91dCB0byBkZXRhY2ggdGhyZWFkICVpIGFuZCBjbGVhciB0aGUgcmVmIHRvIERhdGFiYXNl
VGhyZWFkICVwLCB3aGljaCBjdXJyZW50bHkgaGFzICVpIHJlZihzKSIsIG1fdGhyZWFkSUQsIHRo
aXMsIHJlZkNvdW50KCkpOwogCiAgICAgLy8gQ2xvc2UgdGhlIGRhdGFiYXNlcyB0aGF0IHdlIHJh
biB0cmFuc2FjdGlvbnMgb24uIFRoaXMgZW5zdXJlcyB0aGF0IGlmIGFueSB0cmFuc2FjdGlvbnMg
YXJlIHN0aWxsIG9wZW4sIHRoZXkgYXJlIHJvbGxlZCBiYWNrIGFuZCB3ZSBkb24ndCBsZWF2ZSB0
aGUgZGF0YWJhc2UgaW4gYW4KICAgICAvLyBpbmNvbnNpc3RlbnQgb3IgbG9ja2VkIHN0YXRlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwCmluZGV4IDViZDVlN2IzZDJlMWM0MDIxMWIwMWE2MWQwYmY3ODNjYjM1MjYyMjgu
Ljc1OTM5NGQ1OGE5MjgwYjljZDgzMzRiMzY3MGJhNGMzOTljYTc1MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAK
QEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNl
KEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogCiAgICAgICAgIGRhdGFiYXNlU2V0LT5hZGQo
ZGF0YWJhc2UpOwogCi0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAiQWRkZWQgb3BlbiBEYXRhYmFz
ZSAlcyAoJXApXG4iLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRpZmllcigpLmFzY2lpKCkuZGF0YSgp
LCBkYXRhYmFzZSk7CisgICAgICAgIExPR19JTkZPKFN0b3JhZ2VBUEksICJBZGRlZCBvcGVuIERh
dGFiYXNlICVzICglcClcbiIsIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5k
YXRhKCksIGRhdGFiYXNlKTsKIAogICAgICAgICBMb2NrZXI8T3JpZ2luUXVvdGFNYW5hZ2VyPiBx
dW90YU1hbmFnZXJMb2NrZXIob3JpZ2luUXVvdGFNYW5hZ2VyKCkpOwogICAgICAgICBpZiAoIW9y
aWdpblF1b3RhTWFuYWdlcigpLnRyYWNrc09yaWdpbihkYXRhYmFzZS0+c2VjdXJpdHlPcmlnaW4o
KSkpIHsKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3Bl
bkRhdGFiYXNlKEFic3RyYWN0RGF0YWJhc2UqIGRhdGFiYXNlKQogCiAgICAgICAgIGRhdGFiYXNl
U2V0LT5yZW1vdmUoZGF0YWJhc2UpOwogCi0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAiUmVtb3Zl
ZCBvcGVuIERhdGFiYXNlICVzICglcClcbiIsIGRhdGFiYXNlLT5zdHJpbmdJZGVudGlmaWVyKCku
YXNjaWkoKS5kYXRhKCksIGRhdGFiYXNlKTsKKyAgICAgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwg
IlJlbW92ZWQgb3BlbiBEYXRhYmFzZSAlcyAoJXApXG4iLCBkYXRhYmFzZS0+c3RyaW5nSWRlbnRp
ZmllcigpLmFzY2lpKCkuZGF0YSgpLCBkYXRhYmFzZSk7CiAKICAgICAgICAgaWYgKCFkYXRhYmFz
ZVNldC0+aXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwCmluZGV4IGYzNWRiMmYw
Y2ZlNTVhZjY2MTk1YWViMmYxZTk4MTIyODhmNTQxNWUuLmZlYTc5ODg5Yjk1NjZlOGU4MjAyZTM4
MzU2Mjg1MGExNjE2ZTdjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMU3RhdGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTFN0YXRlbWVudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBTUUxTdGF0
ZW1lbnQ6OmV4ZWN1dGUoRGF0YWJhc2UqIGRiKQogICAgIGludCByZXN1bHQgPSBzdGF0ZW1lbnQu
cHJlcGFyZSgpOwogCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHRPaykgewotICAgICAgICBM
T0coU3RvcmFnZUFQSSwgIlVuYWJsZSB0byB2ZXJpZnkgY29ycmVjdG5lc3Mgb2Ygc3RhdGVtZW50
ICVzIC0gZXJyb3IgJWkgKCVzKSIsIG1fc3RhdGVtZW50LmFzY2lpKCkuZGF0YSgpLCByZXN1bHQs
IGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19JTkZPKFN0b3JhZ2VBUEks
ICJVbmFibGUgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzIG9mIHN0YXRlbWVudCAlcyAtIGVycm9yICVp
ICglcykiLCBtX3N0YXRlbWVudC5hc2NpaSgpLmRhdGEoKSwgcmVzdWx0LCBkYXRhYmFzZS0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICBpZiAocmVzdWx0ID09IFNRTFJlc3VsdEludGVycnVwdCkK
ICAgICAgICAgICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKFNRTEVycm9yOjpEQVRBQkFT
RV9FUlIsICJjb3VsZCBub3QgcHJlcGFyZSBzdGF0ZW1lbnQiLCByZXN1bHQsICJpbnRlcnJ1cHRl
ZCIpOwogICAgICAgICBlbHNlCkBAIC04OSw3ICs4OSw3IEBAIGJvb2wgU1FMU3RhdGVtZW50Ojpl
eGVjdXRlKERhdGFiYXNlKiBkYikKICAgICAvLyBGSVhNRTogIElmIHRoZSBzdGF0ZW1lbnQgdXNl
cyB0aGUgPyMjIyBzeW50YXggc3VwcG9ydGVkIGJ5IHNxbGl0ZSwgdGhlIGJpbmQgcGFyYW1ldGVy
IGNvdW50IGlzIHZlcnkgbGlrZWx5IG9mZiBmcm9tIHRoZSBudW1iZXIgb2YgcXVlc3Rpb24gbWFy
a3MuCiAgICAgLy8gSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhleSBtaWdodCBiZSB0cnlpbmcgdG8g
ZG8gc29tZXRoaW5nIGZpc2h5IG9yIG1hbGljaW91cwogICAgIGlmIChzdGF0ZW1lbnQuYmluZFBh
cmFtZXRlckNvdW50KCkgIT0gbV9hcmd1bWVudHMuc2l6ZSgpKSB7Ci0gICAgICAgIExPRyhTdG9y
YWdlQVBJLCAiQmluZCBwYXJhbWV0ZXIgY291bnQgZG9lc24ndCBtYXRjaCBudW1iZXIgb2YgcXVl
c3Rpb24gbWFya3MiKTsKKyAgICAgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwgIkJpbmQgcGFyYW1l
dGVyIGNvdW50IGRvZXNuJ3QgbWF0Y2ggbnVtYmVyIG9mIHF1ZXN0aW9uIG1hcmtzIik7CiAgICAg
ICAgIG1fZXJyb3IgPSBTUUxFcnJvcjo6Y3JlYXRlKGRiLT5pc0ludGVycnVwdGVkKCkgPyBTUUxF
cnJvcjo6REFUQUJBU0VfRVJSIDogU1FMRXJyb3I6OlNZTlRBWF9FUlIsICJudW1iZXIgb2YgJz8n
cyBpbiBzdGF0ZW1lbnQgc3RyaW5nIGRvZXMgbm90IG1hdGNoIGFyZ3VtZW50IGNvdW50Iik7CiAg
ICAgICAgIGRiLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDIsIG1fZXJyb3ItPmNvZGUo
KSwgMCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBib29sIFNR
TFN0YXRlbWVudDo6ZXhlY3V0ZShEYXRhYmFzZSogZGIpCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAocmVzdWx0ICE9IFNRTFJlc3VsdE9rKSB7Ci0gICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwg
IkZhaWxlZCB0byBiaW5kIHZhbHVlIGluZGV4ICVpIHRvIHN0YXRlbWVudCBmb3IgcXVlcnkgJyVz
JyIsIGkgKyAxLCBtX3N0YXRlbWVudC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0df
SU5GTyhTdG9yYWdlQVBJLCAiRmFpbGVkIHRvIGJpbmQgdmFsdWUgaW5kZXggJWkgdG8gc3RhdGVt
ZW50IGZvciBxdWVyeSAnJXMnIiwgaSArIDEsIG1fc3RhdGVtZW50LmFzY2lpKCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIGRiLT5yZXBvcnRFeGVjdXRlU3RhdGVtZW50UmVzdWx0KDMsIFNRTEVycm9y
OjpEQVRBQkFTRV9FUlIsIHJlc3VsdCk7CiAgICAgICAgICAgICBtX2Vycm9yID0gU1FMRXJyb3I6
OmNyZWF0ZShTUUxFcnJvcjo6REFUQUJBU0VfRVJSLCAiY291bGQgbm90IGJpbmQgdmFsdWUiLCBy
ZXN1bHQsIGRhdGFiYXNlLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRy
YW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDMyNTk3N2E4YjcxMzRmN2Y1ZDU3ZWJkNWYzY2M3NzI3MTdjMmM5
ZjguLjk1MTVkNzgwMzNhMWQwOWQ5NGJiZWRiYzAzZTAxMDU5YzE3YjFjMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3Bw
CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2hlY2tBbmRIYW5kbGVD
bG9zZWRPckludGVycnVwdGVkRGF0YWJhc2UoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBJ
ZiB0aGUgZGF0YWJhc2Ugd2FzIHN0b3BwZWQsIGRvbid0IGRvIGFueXRoaW5nIGFuZCBjYW5jZWwg
cXVldWVkIHdvcmsKLSAgICBMT0coU3RvcmFnZUFQSSwgIkRhdGFiYXNlIHdhcyBzdG9wcGVkIG9y
IGludGVycnVwdGVkIC0gY2FuY2VsbGluZyB3b3JrIGZvciB0aGlzIHRyYW5zYWN0aW9uIik7Cisg
ICAgTE9HX0lORk8oU3RvcmFnZUFQSSwgIkRhdGFiYXNlIHdhcyBzdG9wcGVkIG9yIGludGVycnVw
dGVkIC0gY2FuY2VsbGluZyB3b3JrIGZvciB0aGlzIHRyYW5zYWN0aW9uIik7CiAgICAgTXV0ZXhM
b2NrZXIgbG9ja2VyKG1fc3RhdGVtZW50TXV0ZXgpOwogICAgIG1fc3RhdGVtZW50UXVldWUuY2xl
YXIoKTsKICAgICBtX25leHRTdGVwID0gMDsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFNRTFRy
YW5zYWN0aW9uOjpjaGVja0FuZEhhbmRsZUNsb3NlZE9ySW50ZXJydXB0ZWREYXRhYmFzZSgpCiAK
IGJvb2wgU1FMVHJhbnNhY3Rpb246OnBlcmZvcm1OZXh0U3RlcCgpCiB7Ci0gICAgTE9HKFN0b3Jh
Z2VBUEksICJTdGVwICVzXG4iLCBkZWJ1Z1N0ZXBOYW1lKG1fbmV4dFN0ZXApKTsKKyAgICBMT0df
SU5GTyhTdG9yYWdlQVBJLCAiU3RlcCAlc1xuIiwgZGVidWdTdGVwTmFtZShtX25leHRTdGVwKSk7
CiAKICAgICBBU1NFUlQobV9uZXh0U3RlcCA9PSAmU1FMVHJhbnNhY3Rpb246OmFjcXVpcmVMb2Nr
IHx8CiAgICAgICAgICAgIG1fbmV4dFN0ZXAgPT0gJlNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNh
Y3Rpb25BbmRQcmVmbGlnaHQgfHwKQEAgLTIwMCw3ICsyMDAsNyBAQCBib29sIFNRTFRyYW5zYWN0
aW9uOjpwZXJmb3JtTmV4dFN0ZXAoKQogCiB2b2lkIFNRTFRyYW5zYWN0aW9uOjpwZXJmb3JtUGVu
ZGluZ0NhbGxiYWNrKCkKIHsKLSAgICBMT0coU3RvcmFnZUFQSSwgIkNhbGxiYWNrICVzXG4iLCBk
ZWJ1Z1N0ZXBOYW1lKG1fbmV4dFN0ZXApKTsKKyAgICBMT0dfSU5GTyhTdG9yYWdlQVBJLCAiQ2Fs
bGJhY2sgJXNcbiIsIGRlYnVnU3RlcE5hbWUobV9uZXh0U3RlcCkpOwogCiAgICAgQVNTRVJUKG1f
bmV4dFN0ZXAgPT0gJlNRTFRyYW5zYWN0aW9uOjpkZWxpdmVyVHJhbnNhY3Rpb25DYWxsYmFjayB8
fAogICAgICAgICAgICBtX25leHRTdGVwID09ICZTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjayB8fApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgU1FMVHJhbnNh
Y3Rpb246OmxvY2tBY3F1aXJlZCgpCiB7CiAgICAgbV9sb2NrQWNxdWlyZWQgPSB0cnVlOwogICAg
IG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246Om9wZW5UcmFuc2FjdGlvbkFuZFByZWZsaWdo
dDsKLSAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgb3BlblRyYW5zYWN0aW9uQW5kUHJl
ZmxpZ2h0IGltbWVkaWF0ZWx5IGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CisgICAgTE9H
X0lORk8oU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgb3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0
IGltbWVkaWF0ZWx5IGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgbV9kYXRhYmFz
ZS0+c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAodGhpcywgdHJ1ZSk7CiB9CiAKQEAgLTI0Miw3ICsy
NDIsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQo
KQogICAgIEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbklu
UHJvZ3Jlc3MoKSk7CiAgICAgQVNTRVJUKG1fbG9ja0FjcXVpcmVkKTsKIAotICAgIExPRyhTdG9y
YWdlQVBJLCAiT3BlbmluZyBhbmQgcHJlZmxpZ2h0aW5nIHRyYW5zYWN0aW9uICVwIiwgdGhpcyk7
CisgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwgIk9wZW5pbmcgYW5kIHByZWZsaWdodGluZyB0cmFu
c2FjdGlvbiAlcCIsIHRoaXMpOwogCiAgICAgLy8gSWYgdGhlIGRhdGFiYXNlIHdhcyBkZWxldGVk
LCBqdW1wIHRvIHRoZSBlcnJvciBjYWxsYmFjawogICAgIGlmIChtX2RhdGFiYXNlLT5kZWxldGVk
KCkpIHsKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVuVHJhbnNh
Y3Rpb25BbmRQcmVmbGlnaHQoKQogCiAgICAgLy8gVHJhbnNhY3Rpb24gU3RlcCA0IC0gSW52b2tl
IHRoZSB0cmFuc2FjdGlvbiBjYWxsYmFjayB3aXRoIHRoZSBuZXcgU1FMVHJhbnNhY3Rpb24gb2Jq
ZWN0CiAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclRyYW5zYWN0aW9u
Q2FsbGJhY2s7Ci0gICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIGRlbGl2ZXJUcmFuc2Fj
dGlvbkNhbGxiYWNrIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CisgICAgTE9HX0lORk8o
U3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgZGVsaXZlclRyYW5zYWN0aW9uQ2FsbGJhY2sgZm9yIHRy
YW5zYWN0aW9uICVwXG4iLCB0aGlzKTsKICAgICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5zYWN0
aW9uQ2FsbGJhY2sodGhpcyk7CiB9CiAKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIFNRTFRyYW5z
YWN0aW9uOjpkZWxpdmVyVHJhbnNhY3Rpb25DYWxsYmFjaygpCiB2b2lkIFNRTFRyYW5zYWN0aW9u
OjpzY2hlZHVsZVRvUnVuU3RhdGVtZW50cygpCiB7CiAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFu
c2FjdGlvbjo6cnVuU3RhdGVtZW50czsKLSAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcg
cnVuU3RhdGVtZW50cyBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOworICAgIExPR19JTkZP
KFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIHJ1blN0YXRlbWVudHMgZm9yIHRyYW5zYWN0aW9uICVw
XG4iLCB0aGlzKTsKICAgICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5zYWN0aW9uU3RlcCh0aGlz
KTsKIH0KIApAQCAtNDA4LDcgKzQwOCw3IEBAIGJvb2wgU1FMVHJhbnNhY3Rpb246OnJ1bkN1cnJl
bnRTdGF0ZW1lbnQoKQogCiAgICAgICAgIGlmIChtX2N1cnJlbnRTdGF0ZW1lbnQtPmhhc1N0YXRl
bWVudENhbGxiYWNrKCkpIHsKICAgICAgICAgICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rp
b246OmRlbGl2ZXJTdGF0ZW1lbnRDYWxsYmFjazsKLSAgICAgICAgICAgIExPRyhTdG9yYWdlQVBJ
LCAiU2NoZWR1bGluZyBkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2sgZm9yIHRyYW5zYWN0aW9uICVw
XG4iLCB0aGlzKTsKKyAgICAgICAgICAgIExPR19JTkZPKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5n
IGRlbGl2ZXJTdGF0ZW1lbnRDYWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwog
ICAgICAgICAgICAgbV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKHRoaXMp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC00MTcsNyArNDE3LDcg
QEAgYm9vbCBTUUxUcmFuc2FjdGlvbjo6cnVuQ3VycmVudFN0YXRlbWVudCgpCiAKICAgICBpZiAo
bV9jdXJyZW50U3RhdGVtZW50LT5sYXN0RXhlY3V0aW9uRmFpbGVkRHVlVG9RdW90YSgpKSB7CiAg
ICAgICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJRdW90YUluY3JlYXNl
Q2FsbGJhY2s7Ci0gICAgICAgIExPRyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBkZWxpdmVyUXVv
dGFJbmNyZWFzZUNhbGxiYWNrIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CisgICAgICAg
IExPR19JTkZPKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIGRlbGl2ZXJRdW90YUluY3JlYXNlQ2Fs
bGJhY2sgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0aGlzKTsKICAgICAgICAgbV9kYXRhYmFzZS0+
c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKHRoaXMpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQpAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmhhbmRsZUN1
cnJlbnRTdGF0ZW1lbnRFcnJvcigpCiAgICAgLy8gb3IgdGhlIHRyYW5zYWN0aW9uIHdhcyByb2xs
ZWQgYmFjaywganVtcCB0byB0aGUgdHJhbnNhY3Rpb24gZXJyb3IgY2FsbGJhY2sKICAgICBpZiAo
bV9jdXJyZW50U3RhdGVtZW50LT5oYXNTdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgJiYgIW1fc3Fs
aXRlVHJhbnNhY3Rpb24tPndhc1JvbGxlZEJhY2tCeVNxbGl0ZSgpKSB7CiAgICAgICAgIG1fbmV4
dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJTdGF0ZW1lbnRDYWxsYmFjazsKLSAgICAg
ICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIGRlbGl2ZXJTdGF0ZW1lbnRDYWxsYmFjayBm
b3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOworICAgICAgICBMT0dfSU5GTyhTdG9yYWdlQVBJ
LCAiU2NoZWR1bGluZyBkZWxpdmVyU3RhdGVtZW50Q2FsbGJhY2sgZm9yIHRyYW5zYWN0aW9uICVw
XG4iLCB0aGlzKTsKICAgICAgICAgbV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxi
YWNrKHRoaXMpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25FcnJvciA9IG1f
Y3VycmVudFN0YXRlbWVudC0+c3FsRXJyb3IoKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIFNR
TFRyYW5zYWN0aW9uOjpkZWxpdmVyUXVvdGFJbmNyZWFzZUNhbGxiYWNrKCkKICAgICBtX3Nob3Vs
ZFJldHJ5Q3VycmVudFN0YXRlbWVudCA9IG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ2xpZW50KCkt
PmRpZEV4Y2VlZFF1b3RhKGRhdGFiYXNlKCkpOwogCiAgICAgbV9uZXh0U3RlcCA9ICZTUUxUcmFu
c2FjdGlvbjo6cnVuU3RhdGVtZW50czsKLSAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcg
cnVuU3RhdGVtZW50cyBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOworICAgIExPR19JTkZP
KFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIHJ1blN0YXRlbWVudHMgZm9yIHRyYW5zYWN0aW9uICVw
XG4iLCB0aGlzKTsKICAgICBtX2RhdGFiYXNlLT5zY2hlZHVsZVRyYW5zYWN0aW9uU3RlcCh0aGlz
KTsKIH0KIApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OnBvc3RmbGln
aHRBbmRDb21taXQoKQogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgMTAgLSBEZWxpdmVyIHN1Y2Nl
c3MgY2FsbGJhY2ssIGlmIHRoZXJlIGlzIG9uZQogICAgIGlmIChtX3N1Y2Nlc3NDYWxsYmFja1dy
YXBwZXIuaGFzQ2FsbGJhY2soKSkgewogICAgICAgICBtX25leHRTdGVwID0gJlNRTFRyYW5zYWN0
aW9uOjpkZWxpdmVyU3VjY2Vzc0NhbGxiYWNrOwotICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNj
aGVkdWxpbmcgZGVsaXZlclN1Y2Nlc3NDYWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRo
aXMpOworICAgICAgICBMT0dfSU5GTyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBkZWxpdmVyU3Vj
Y2Vzc0NhbGxiYWNrIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGhpcyk7CiAgICAgICAgIG1fZGF0
YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rpb25DYWxsYmFjayh0aGlzKTsKICAgICB9IGVsc2UKICAg
ICAgICAgY2xlYW51cEFmdGVyU3VjY2Vzc0NhbGxiYWNrKCk7CkBAIC01NDEsNyArNTQxLDcgQEAg
dm9pZCBTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclN1Y2Nlc3NDYWxsYmFjaygpCiAgICAgLy8gU2No
ZWR1bGUgYSAicG9zdC1zdWNjZXNzIGNhbGxiYWNrIiBzdGVwIHRvIHJldHVybiBjb250cm9sIHRv
IHRoZSBkYXRhYmFzZSB0aHJlYWQgaW4gY2FzZSB0aGVyZQogICAgIC8vIGFyZSBmdXJ0aGVyIHRy
YW5zYWN0aW9ucyBxdWV1ZWQgdXAgZm9yIHRoaXMgRGF0YWJhc2UKICAgICBtX25leHRTdGVwID0g
JlNRTFRyYW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJTdWNjZXNzQ2FsbGJhY2s7Ci0gICAgTE9HKFN0
b3JhZ2VBUEksICJTY2hlZHVsaW5nIGNsZWFudXBBZnRlclN1Y2Nlc3NDYWxsYmFjayBmb3IgdHJh
bnNhY3Rpb24gJXBcbiIsIHRoaXMpOworICAgIExPR19JTkZPKFN0b3JhZ2VBUEksICJTY2hlZHVs
aW5nIGNsZWFudXBBZnRlclN1Y2Nlc3NDYWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRo
aXMpOwogICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKHRoaXMpOwogfQog
CkBAIC01NTEsNyArNTUxLDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6Y2xlYW51cEFmdGVyU3Vj
Y2Vzc0NhbGxiYWNrKCkKIAogICAgIC8vIFRyYW5zYWN0aW9uIFN0ZXAgMTEgLSBFbmQgdHJhbnNh
Y3Rpb24gc3RlcHMKICAgICAvLyBUaGVyZSBpcyBubyBuZXh0IHN0ZXAKLSAgICBMT0coU3RvcmFn
ZUFQSSwgIlRyYW5zYWN0aW9uICVwIGlzIGNvbXBsZXRlXG4iLCB0aGlzKTsKKyAgICBMT0dfSU5G
TyhTdG9yYWdlQVBJLCAiVHJhbnNhY3Rpb24gJXAgaXMgY29tcGxldGVcbiIsIHRoaXMpOwogICAg
IEFTU0VSVCghbV9kYXRhYmFzZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jl
c3MoKSk7CiAgICAgbV9zcWxpdGVUcmFuc2FjdGlvbi5jbGVhcigpOwogICAgIG1fbmV4dFN0ZXAg
PSAwOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgU1FMVHJhbnNhY3Rpb246OmhhbmRsZVRyYW5z
YWN0aW9uRXJyb3IoYm9vbCBpbkNhbGxiYWNrKQogICAgICAgICAgICAgZGVsaXZlclRyYW5zYWN0
aW9uRXJyb3JDYWxsYmFjaygpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIG1fbmV4dFN0
ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmRlbGl2ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7Ci0g
ICAgICAgICAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgZGVsaXZlclRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOworICAgICAgICAgICAg
TE9HX0lORk8oU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgZGVsaXZlclRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAgICAgICAgICAgbV9kYXRh
YmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvbkNhbGxiYWNrKHRoaXMpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpoYW5k
bGVUcmFuc2FjdGlvbkVycm9yKGJvb2wgaW5DYWxsYmFjaykKICAgICAvLyBUcmFuc2FjdGlvbiBT
dGVwIDEyIC0gUm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uLgogICAgIGlmIChpbkNhbGxiYWNrKSB7
CiAgICAgICAgIG1fbmV4dFN0ZXAgPSAmU1FMVHJhbnNhY3Rpb246OmNsZWFudXBBZnRlclRyYW5z
YWN0aW9uRXJyb3JDYWxsYmFjazsKLSAgICAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5n
IGNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayBmb3IgdHJhbnNhY3Rpb24gJXBc
biIsIHRoaXMpOworICAgICAgICBMT0dfSU5GTyhTdG9yYWdlQVBJLCAiU2NoZWR1bGluZyBjbGVh
bnVwQWZ0ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2sgZm9yIHRyYW5zYWN0aW9uICVwXG4iLCB0
aGlzKTsKICAgICAgICAgbV9kYXRhYmFzZS0+c2NoZWR1bGVUcmFuc2FjdGlvblN0ZXAodGhpcyk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgY2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrKCk7CkBAIC01OTUsNyArNTk1LDcgQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6ZGVsaXZlclRy
YW5zYWN0aW9uRXJyb3JDYWxsYmFjaygpCiAgICAgICAgIGVycm9yQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KG1fdHJhbnNhY3Rpb25FcnJvci5nZXQoKSk7CiAKICAgICBtX25leHRTdGVwID0gJlNRTFRy
YW5zYWN0aW9uOjpjbGVhbnVwQWZ0ZXJUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s7Ci0gICAgTE9H
KFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIGNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JDYWxs
YmFjayBmb3IgdHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOworICAgIExPR19JTkZPKFN0b3JhZ2VB
UEksICJTY2hlZHVsaW5nIGNsZWFudXBBZnRlclRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjayBmb3Ig
dHJhbnNhY3Rpb24gJXBcbiIsIHRoaXMpOwogICAgIG1fZGF0YWJhc2UtPnNjaGVkdWxlVHJhbnNh
Y3Rpb25TdGVwKHRoaXMpOwogfQogCkBAIC02MjAsNyArNjIwLDcgQEAgdm9pZCBTUUxUcmFuc2Fj
dGlvbjo6Y2xlYW51cEFmdGVyVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKCkKICAgICB9CiAKICAg
ICAvLyBUcmFuc2FjdGlvbiBpcyBjb21wbGV0ZSEgIFRoZXJlIGlzIG5vIG5leHQgc3RlcAotICAg
IExPRyhTdG9yYWdlQVBJLCAiVHJhbnNhY3Rpb24gJXAgaXMgY29tcGxldGUgd2l0aCBhbiBlcnJv
clxuIiwgdGhpcyk7CisgICAgTE9HX0lORk8oU3RvcmFnZUFQSSwgIlRyYW5zYWN0aW9uICVwIGlz
IGNvbXBsZXRlIHdpdGggYW4gZXJyb3JcbiIsIHRoaXMpOwogICAgIEFTU0VSVCghbV9kYXRhYmFz
ZS0+c3FsaXRlRGF0YWJhc2UoKS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSk7CiAgICAgbV9uZXh0
U3RlcCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKaW5kZXggNDZkNjJkZTg5ZjQ2NjhmZTdhMTUxZmVlZDUzMTEzODI0NzMwMjdkYS4u
ZmMxOTcxYTA4OGQ1ZjBjN2M1OTZiYjllOTZjMDNhZDA1MzFhNWNmOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTE3OSw3ICsxNzks
NyBAQCB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZQogCiB2b2lkIFdlYlNvY2tldDo6Y29ubmVjdChj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY29ubmVjdCB0
byAlcyIsIHRoaXMsIHVybC51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAi
V2ViU29ja2V0ICVwIGNvbm5lY3QgdG8gJXMiLCB0aGlzLCB1cmwudXRmOCgpLmRhdGEoKSk7CiAg
ICAgbV91cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKIAogICAgIGlmICghbV91cmwuaXNWYWxpZCgp
KSB7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2UKIAogYm9vbCBX
ZWJTb2NrZXQ6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kICVzIiwgdGhpcywgbWVzc2Fn
ZS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNl
bmQgJXMiLCB0aGlzLCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgIGlmIChtX3N0YXRlID09
IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjc4LDcgKzI3OCw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0
OjpzZW5kKEFycmF5QnVmZmVyKiBiaW5hcnlEYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kIGFycmF5YnVmZmVyICVwIiwgdGhpcywg
YmluYXJ5RGF0YSk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kIGFy
cmF5YnVmZmVyICVwIiwgdGhpcywgYmluYXJ5RGF0YSk7CiAgICAgQVNTRVJUKGJpbmFyeURhdGEp
OwogICAgIGlmIChtX3N0YXRlID09IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIFdlYlNvY2tldDo6c2VuZChBcnJh
eUJ1ZmZlciogYmluYXJ5RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIGJvb2wgV2ViU29ja2V0
OjpzZW5kKEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3LCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kIGFycmF5YnVmZmVydmll
dyAlcCIsIHRoaXMsIGFycmF5QnVmZmVyVmlldyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldl
YlNvY2tldCAlcCBzZW5kIGFycmF5YnVmZmVydmlldyAlcCIsIHRoaXMsIGFycmF5QnVmZmVyVmll
dyk7CiAgICAgQVNTRVJUKGFycmF5QnVmZmVyVmlldyk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09O
TkVDVElORykgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMzE1LDcgKzMx
NSw3IEBAIGJvb2wgV2ViU29ja2V0OjpzZW5kKEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJW
aWV3LCBFeGNlcHRpb25Db2RlJiBlYykKIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQmxvYiogYmlu
YXJ5RGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXQgJXAgc2VuZCBibG9iICVzIiwgdGhpcywgYmluYXJ5RGF0YS0+dXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldCAlcCBzZW5kIGJs
b2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICBBU1NFUlQoYmluYXJ5RGF0YSk7CiAgICAgaWYgKG1fc3RhdGUgPT0gQ09OTkVDVElORykg
ewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwpAQCAtMzM0LDkgKzMzNCw5IEBAIGJv
b2wgV2ViU29ja2V0OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
dm9pZCBXZWJTb2NrZXQ6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbiwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGNvZGUgPT0gV2ViU29ja2V0Q2hhbm5lbDo6Q2xv
c2VFdmVudENvZGVOb3RTcGVjaWZpZWQpCi0gICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
ICVwIGNsb3NlIHdpdGhvdXQgY29kZSBhbmQgcmVhc29uIiwgdGhpcyk7CisgICAgICAgIExPR19J
TkZPKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgY2xvc2Ugd2l0aG91dCBjb2RlIGFuZCByZWFzb24i
LCB0aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAg
Y2xvc2Ugd2l0aCBjb2RlID0gJWQsIHJlYXNvbiA9ICVzIiwgdGhpcywgY29kZSwgcmVhc29uLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfSU5GTyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGNs
b3NlIHdpdGggY29kZSA9ICVkLCByZWFzb24gPSAlcyIsIHRoaXMsIGNvZGUsIHJlYXNvbi51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKCEoY29kZSA9PSBXZWJTb2NrZXRDaGFubmVsOjpDbG9z
ZUV2ZW50Q29kZU5vcm1hbENsb3N1cmUgfHwgKFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRD
b2RlTWluaW11bVVzZXJEZWZpbmVkIDw9IGNvZGUgJiYgY29kZSA8PSBXZWJTb2NrZXRDaGFubmVs
OjpDbG9zZUV2ZW50Q29kZU1heGltdW1Vc2VyRGVmaW5lZCkpKSB7CiAgICAgICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQyOSw3ICs0Mjks
NyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBXZWJTb2NrZXQ6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdAogCiB2b2lkIFdlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCgpCiB7Ci0g
ICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCBkZXN0
cm95ZWQiLCB0aGlzKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgZGVzdHJveWVkIiwgdGhpcyk7CiAgICAgQVNTRVJUKCFtX2NoYW5u
ZWwpOwogICAgIEFTU0VSVChtX3N0YXRlID09IENMT1NFRCk7CiAgICAgQWN0aXZlRE9NT2JqZWN0
Ojpjb250ZXh0RGVzdHJveWVkKCk7CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBXZWJTb2NrZXQ6
OnN0b3AoKQogCiB2b2lkIFdlYlNvY2tldDo6ZGlkQ29ubmVjdCgpCiB7Ci0gICAgTE9HKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgZGlkQ29ubmVjdCIsIHRoaXMpOwogICAgIGlmIChtX3N0YXRlICE9
IENPTk5FQ1RJTkcpIHsKICAgICAgICAgZGlkQ2xvc2UoMCwgQ2xvc2luZ0hhbmRzaGFrZUluY29t
cGxldGUsIFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlLCAi
Iik7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFdlYlNvY2tldDo6
ZGlkQ29ubmVjdCgpCiAKIHZvaWQgV2ViU29ja2V0OjpkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1zZykKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRSZWNlaXZl
TWVzc2FnZSAlcyIsIHRoaXMsIG1zZy51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3
b3JrLCAiV2ViU29ja2V0ICVwIGRpZFJlY2VpdmVNZXNzYWdlICVzIiwgdGhpcywgbXNnLnV0Zjgo
KS5kYXRhKCkpOwogICAgIGlmIChtX3N0YXRlICE9IE9QRU4gJiYgbV9zdGF0ZSAhPSBDTE9TSU5H
KQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CkBAIC01MDksMTQgKzUwOSwxNCBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkUmVjZWl2ZUJpbmFyeURh
dGEoUGFzc093blB0cjxWZWN0b3I8Y2hhcj4gPiBiaW5hcnlEYXRhKQogCiB2b2lkIFdlYlNvY2tl
dDo6ZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2Nr
ZXQgJXAgZGlkUmVjZWl2ZUVycm9yTWVzc2FnZSIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdv
cmssICJXZWJTb2NrZXQgJXAgZGlkUmVjZWl2ZUVycm9yTWVzc2FnZSIsIHRoaXMpOwogICAgIEFT
U0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiB9CiAKIHZv
aWQgV2ViU29ja2V0OjpkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZl
cmVkQW1vdW50KQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFVwZGF0ZUJ1
ZmZlcmVkQW1vdW50ICVsdSIsIHRoaXMsIGJ1ZmZlcmVkQW1vdW50KTsKKyAgICBMT0dfSU5GTyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50ICVsdSIsIHRoaXMs
IGJ1ZmZlcmVkQW1vdW50KTsKICAgICBpZiAobV9zdGF0ZSA9PSBDTE9TRUQpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2J1ZmZlcmVkQW1vdW50ID0gYnVmZmVyZWRBbW91bnQ7CkBAIC01MjQsMTMg
KzUyNCwxMyBAQCB2b2lkIFdlYlNvY2tldDo6ZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWdu
ZWQgbG9uZyBidWZmZXJlZEFtb3VudCkKIAogdm9pZCBXZWJTb2NrZXQ6OmRpZFN0YXJ0Q2xvc2lu
Z0hhbmRzaGFrZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkU3RhcnRD
bG9zaW5nSGFuZHNoYWtlIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tl
dCAlcCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UiLCB0aGlzKTsKICAgICBtX3N0YXRlID0gQ0xP
U0lORzsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzIGNsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldCAlcCBkaWRDbG9zZSIsIHRo
aXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgZGlkQ2xvc2UiLCB0aGlz
KTsKICAgICBpZiAoIW1fY2hhbm5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgd2FzQ2xl
YW4gPSBtX3N0YXRlID09IENMT1NJTkcgJiYgIXVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50ICYmIGNs
b3NpbmdIYW5kc2hha2VDb21wbGV0aW9uID09IENsb3NpbmdIYW5kc2hha2VDb21wbGV0ZSAmJiBj
b2RlICE9IFdlYlNvY2tldENoYW5uZWw6OkNsb3NlRXZlbnRDb2RlQWJub3JtYWxDbG9zdXJlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDM3MWNlMmE3MTUwMTk1ZGE4NjAxYTcwMDljYTQ3NDRiZmEwZDhiM2Yu
Ljk1OThhYjk2MzIyYmZlYzc2ZmExOGE0MDFlMjc3ZDZmMzlmYzIyZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
QEAgLTk5LDcgKzk5LDcgQEAgV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQog
CiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHByb3RvY29sKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAl
cCBjb25uZWN0IiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgY29ubmVjdCIsIHRoaXMpOwogICAgIEFTU0VSVCghbV9oYW5kbGUpOwogICAgIEFTU0VS
VCghbV9zdXNwZW5kZWQpOwogICAgIG1faGFuZHNoYWtlID0gYWRvcHRQdHIobmV3IFdlYlNvY2tl
dEhhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBtX2RvY3VtZW50KSk7CkBAIC0xMTQsNyArMTE0LDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCkKIAogU3RyaW5nIFdlYlNvY2tldENoYW5uZWw6OnN1YnByb3RvY29s
KCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc3VicHJvdG9jb2wi
LCB0aGlzKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzdWJw
cm90b2NvbCIsIHRoaXMpOwogICAgIGlmICghbV9oYW5kc2hha2UgfHwgbV9oYW5kc2hha2UtPm1v
ZGUoKSAhPSBXZWJTb2NrZXRIYW5kc2hha2U6OkNvbm5lY3RlZCkKICAgICAgICAgcmV0dXJuICIi
OwogICAgIFN0cmluZyBzZXJ2ZXJQcm90b2NvbCA9IG1faGFuZHNoYWtlLT5zZXJ2ZXJXZWJTb2Nr
ZXRQcm90b2NvbCgpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIFN0cmluZyBXZWJTb2NrZXRDaGFubmVs
OjpzdWJwcm90b2NvbCgpCiAKIFN0cmluZyBXZWJTb2NrZXRDaGFubmVsOjpleHRlbnNpb25zKCkK
IHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZXh0ZW5zaW9ucyIsIHRo
aXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGV4dGVuc2lv
bnMiLCB0aGlzKTsKICAgICBpZiAoIW1faGFuZHNoYWtlIHx8IG1faGFuZHNoYWtlLT5tb2RlKCkg
IT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpCiAgICAgICAgIHJldHVybiAiIjsKICAg
ICBTdHJpbmcgZXh0ZW5zaW9ucyA9IG1faGFuZHNoYWtlLT5hY2NlcHRlZEV4dGVuc2lvbnMoKTsK
QEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgV2ViU29ja2V0Q2hhbm5lbDo6ZXh0ZW5zaW9ucygp
CiAKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5u
ZWw6OnNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhpcywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsK
KyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kICVzIiwgdGhp
cywgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKICAgICBDU3RyaW5nIHV0ZjggPSBtZXNzYWdlLnV0
ZjgodHJ1ZSk7CiAgICAgaWYgKHV0ZjguaXNOdWxsKCkgJiYgbWVzc2FnZS5sZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIEludmFsaWRNZXNzYWdlOwpAQCAtMTUyLDI4ICsxNTIsMjggQEAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChj
b25zdCBTdHJpbmcmIG1lc3MKIAogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYgYmluYXJ5RGF0YSwg
dW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0ZUxlbmd0aCkKIHsKLSAgICBMT0coTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCBhcnJheWJ1ZmZlciAlcCAldSAldSIsIHRo
aXMsICZiaW5hcnlEYXRhLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKTsKKyAgICBMT0dfSU5GTyhO
ZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGFycmF5YnVmZmVyICVwICV1ICV1Iiwg
dGhpcywgJmJpbmFyeURhdGEsIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpOwogICAgIGVucXVldWVS
YXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmluYXJ5LCBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4oYmluYXJ5RGF0YS5kYXRhKCkpICsgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCk7CiAgICAg
cmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kU3VjY2VzczsKIH0KIAogVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZChjb25zdCBCbG9iJiBiaW5hcnlEYXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
Q2hhbm5lbCAlcCBzZW5kIGJsb2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIHNlbmQgYmxvYiAlcyIsIHRoaXMsIGJpbmFyeURhdGEudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgZW5xdWV1ZUJsb2JGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQmlu
YXJ5LCBiaW5hcnlEYXRhKTsKICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRTdWNjZXNzOwogfQogCiBib29sIFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgc2VuZCBiaW5hcnkgJXAgKCVkQikiLCB0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIExP
R19JTkZPKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHNlbmQgYmluYXJ5ICVwICglZEIp
IiwgdGhpcywgZGF0YSwgbGVuZ3RoKTsKICAgICBlbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJh
bWU6Ok9wQ29kZUJpbmFyeSwgZGF0YSwgbGVuZ3RoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dW5zaWduZWQgbG9uZyBXZWJTb2NrZXRDaGFubmVsOjpidWZmZXJlZEFtb3VudCgpIGNvbnN0CiB7
Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGJ1ZmZlcmVkQW1vdW50Iiwg
dGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgYnVmZmVy
ZWRBbW91bnQiLCB0aGlzKTsKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIEFTU0VSVCghbV9z
dXNwZW5kZWQpOwogICAgIHJldHVybiBtX2hhbmRsZS0+YnVmZmVyZWRBbW91bnQoKTsKQEAgLTE4
MSw3ICsxODEsNyBAQCB1bnNpZ25lZCBsb25nIFdlYlNvY2tldENoYW5uZWw6OmJ1ZmZlcmVkQW1v
dW50KCkgY29uc3QKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVs
ICVwIGNsb3NlIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgY2xvc2UiLCB0aGlzKTsKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAo
IW1faGFuZGxlKQogICAgICAgICByZXR1cm47CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiAKIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBM
T0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZmFpbDogJXMiLCB0aGlzLCByZWFzb24u
dXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgZmFpbDogJXMiLCB0aGlzLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKCFt
X3N1c3BlbmRlZCk7CiAgICAgaWYgKG1fZG9jdW1lbnQpIHsKICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcihtX2RvY3VtZW50LCBt
X2lkZW50aWZpZXIsIHJlYXNvbik7CkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQogCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpc2Nvbm5lY3QoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAl
cCBkaXNjb25uZWN0IiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENo
YW5uZWwgJXAgZGlzY29ubmVjdCIsIHRoaXMpOwogICAgIGlmIChtX2lkZW50aWZpZXIgJiYgbV9k
b2N1bWVudCkKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNv
Y2tldChtX2RvY3VtZW50LCBtX2lkZW50aWZpZXIpOwogICAgIGlmIChtX2hhbmRzaGFrZSkKQEAg
LTI0MSw3ICsyNDEsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZSgpCiAKIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6d2lsbE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxl
KiBoYW5kbGUpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIHdpbGxP
cGVuc29ja2V0U3RyZWFtIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgd2lsbE9wZW5zb2NrZXRTdHJlYW0iLCB0aGlzKTsKICAgICBBU1NFUlQoaGFu
ZGxlKTsKICAgICBpZiAobV9kb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgbV9kb2N1bWVudC0+
ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5kaXNwYXRjaFdpbGxPcGVuU29ja2V0U3RyZWFt
KGhhbmRsZSk7CkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjp3aWxs
T3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIAogdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSogaGFu
ZGxlKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRPcGVuU29j
a2V0U3RyZWFtIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgZGlkT3BlblNvY2tldFN0cmVhbSIsIHRoaXMpOwogICAgIEFTU0VSVChoYW5kbGUgPT0g
bV9oYW5kbGUpOwogICAgIGlmICghbV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYy
LDcgKzI2Miw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlblNvY2tldFN0cmVhbShT
b2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRD
bG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkQ2xvc2VTb2NrZXRTdHJlYW0iLCB0aGlz
KTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRDbG9zZVNv
Y2tldFN0cmVhbSIsIHRoaXMpOwogICAgIGlmIChtX2lkZW50aWZpZXIgJiYgbV9kb2N1bWVudCkK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldChtX2Rv
Y3VtZW50LCBtX2lkZW50aWZpZXIpOwogICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxlLCBoYW5kbGUg
PT0gbV9oYW5kbGUgfHwgIW1faGFuZGxlKTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIFdlYlNv
Y2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSogaGFu
ZGxlKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRh
KFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQog
ewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSAlZCIsIHRoaXMsIGxlbik7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNv
Y2tldENoYW5uZWwgJXAgZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEgJWQiLCB0aGlzLCBsZW4p
OwogICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUgY2xp
ZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3Qg
cmVmZXJlbmNlLgogICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9k
b2N1bWVudCkgewpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
VXBkYXRlQnVmZmVyZWRBbW91bnQoU29ja2V0U3RyZWFtSGFuZGxlKiwgc2l6ZV90IGJ1ZmZlCiAK
IHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbFNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1I
YW5kbGUqIGhhbmRsZSwgY29uc3QgU29ja2V0U3RyZWFtRXJyb3ImIGVycm9yKQogewotICAgIExP
RyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGYWlsU29ja2V0U3RyZWFtIiwgdGhp
cyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbFNv
Y2tldFN0cmVhbSIsIHRoaXMpOwogICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUgfHwgIW1f
aGFuZGxlKTsKICAgICBpZiAobV9kb2N1bWVudCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZTsK
QEAgLTM1MywyMSArMzUzLDIxIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uCiAjaWYgRU5BQkxF
KEJMT0IpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFN0YXJ0TG9hZGluZygpCiB7Ci0gICAg
TE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFN0YXJ0TG9hZGluZyIsIHRoaXMp
OworICAgIExPR19JTkZPKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZFN0YXJ0TG9h
ZGluZyIsIHRoaXMpOwogICAgIEFTU0VSVChtX2Jsb2JMb2FkZXIpOwogICAgIEFTU0VSVChtX2Js
b2JMb2FkZXJTdGF0dXMgPT0gQmxvYkxvYWRlclN0YXJ0ZWQpOwogfQogCiB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OmRpZFJlY2VpdmVEYXRhKCkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tl
dENoYW5uZWwgJXAgZGlkUmVjZWl2ZURhdGEiLCB0aGlzKTsKKyAgICBMT0dfSU5GTyhOZXR3b3Jr
LCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlRGF0YSIsIHRoaXMpOwogICAgIEFTU0VS
VChtX2Jsb2JMb2FkZXIpOwogICAgIEFTU0VSVChtX2Jsb2JMb2FkZXJTdGF0dXMgPT0gQmxvYkxv
YWRlclN0YXJ0ZWQpOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZEZpbmlzaExvYWRp
bmcoKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRGaW5pc2hM
b2FkaW5nIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwg
JXAgZGlkRmluaXNoTG9hZGluZyIsIHRoaXMpOwogICAgIEFTU0VSVChtX2Jsb2JMb2FkZXIpOwog
ICAgIEFTU0VSVChtX2Jsb2JMb2FkZXJTdGF0dXMgPT0gQmxvYkxvYWRlclN0YXJ0ZWQpOwogICAg
IG1fYmxvYkxvYWRlclN0YXR1cyA9IEJsb2JMb2FkZXJGaW5pc2hlZDsKQEAgLTM3Nyw3ICszNzcs
NyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZEZpbmlzaExvYWRpbmcoKQogCiB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OmRpZEZhaWwoaW50IGVycm9yQ29kZSkKIHsKLSAgICBMT0coTmV0d29y
aywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbCAlZCIsIHRoaXMsIGVycm9yQ29kZSk7Cisg
ICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgZGlkRmFpbCAlZCIsIHRo
aXMsIGVycm9yQ29kZSk7CiAgICAgQVNTRVJUKG1fYmxvYkxvYWRlcik7CiAgICAgQVNTRVJUKG1f
YmxvYkxvYWRlclN0YXR1cyA9PSBCbG9iTG9hZGVyU3RhcnRlZCk7CiAgICAgbV9ibG9iTG9hZGVy
LmNsZWFyKCk7CkBAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjphcHBl
bmRUb0J1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuKQogewogICAgIHNpemVfdCBu
ZXdCdWZmZXJTaXplID0gbV9idWZmZXIuc2l6ZSgpICsgbGVuOwogICAgIGlmIChuZXdCdWZmZXJT
aXplIDwgbV9idWZmZXIuc2l6ZSgpKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0
IGJ1ZmZlciBvdmVyZmxvdyAoJWx1KyVsdSkiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPiht
X2J1ZmZlci5zaXplKCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihsZW4pKTsKKyAgICAg
ICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldCBidWZmZXIgb3ZlcmZsb3cgKCVsdSslbHUp
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgpKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4obGVuKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgbV9idWZmZXIuYXBwZW5kKGRhdGEsIGxlbik7CkBAIC00MTAsNyArNDEwLDcgQEAgYm9vbCBX
ZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVk
KTsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVCghbV9idWZmZXIuaXNFbXB0eSgp
KTsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgcHJvY2Vzc0J1ZmZlciAl
bHUiLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2J1ZmZlci5zaXplKCkpKTsK
KyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBwcm9jZXNzQnVmZmVy
ICVsdSIsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVyLnNpemUoKSkp
OwogCiAgICAgaWYgKG1fc2hvdWxkRGlzY2FyZFJlY2VpdmVkRGF0YSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtNDM2LDE0ICs0MzYsMTQgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9j
ZXNzQnVmZmVyKCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBGSVhNRTogaGFuZGxlIHNldC1jb29raWUyLgotICAgICAgICAgICAgTE9HKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGNvbm5lY3RlZCIsIHRoaXMpOworICAgICAgICAgICAgTE9H
X0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGVkIiwgdGhpcyk7CiAg
ICAgICAgICAgICBza2lwQnVmZmVyKGhlYWRlckxlbmd0aCk7CiAgICAgICAgICAgICBtX2NsaWVu
dC0+ZGlkQ29ubmVjdCgpOwotICAgICAgICAgICAgTE9HKE5ldHdvcmssICJyZW1haW5pbmcgaW4g
cmVhZCBidWYgJWx1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV9idWZmZXIuc2l6ZSgp
KSk7CisgICAgICAgICAgICBMT0dfSU5GTyhOZXR3b3JrLCAicmVtYWluaW5nIGluIHJlYWQgYnVm
ICVsdSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fYnVmZmVyLnNpemUoKSkpOwogICAg
ICAgICAgICAgcmV0dXJuICFtX2J1ZmZlci5pc0VtcHR5KCk7CiAgICAgICAgIH0KICAgICAgICAg
QVNTRVJUKG1faGFuZHNoYWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpGYWlsZWQp
OwotICAgICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY29ubmVjdGlvbiBm
YWlsZWQiLCB0aGlzKTsKKyAgICAgICAgTE9HX0lORk8oTmV0d29yaywgIldlYlNvY2tldENoYW5u
ZWwgJXAgY29ubmVjdGlvbiBmYWlsZWQiLCB0aGlzKTsKICAgICAgICAgc2tpcEJ1ZmZlcihoZWFk
ZXJMZW5ndGgpOwogICAgICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwog
ICAgICAgICBmYWlsKG1faGFuZHNoYWtlLT5mYWlsdXJlUmVhc29uKCkpOwpAQCAtNDY5LDcgKzQ2
OSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJT
b2NrZXRDaGFubmVsPiogdGltZXIpCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9z
aW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKIHsKLSAgICBMT0co
TmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyAlZCAlZCIsIHRoaXMsIG1fY2xv
c2luZywgbV9yZWNlaXZlZENsb3NpbmdIYW5kc2hha2UpOworICAgIExPR19JTkZPKE5ldHdvcmss
ICJXZWJTb2NrZXRDaGFubmVsICVwIGNsb3NpbmcgJWQgJWQiLCB0aGlzLCBtX2Nsb3NpbmcsIG1f
cmVjZWl2ZWRDbG9zaW5nSGFuZHNoYWtlKTsKICAgICBpZiAobV9jbG9zaW5nKQogICAgICAgICBy
ZXR1cm47CiAgICAgQVNTRVJUKG1faGFuZGxlKTsKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29kZSwgY29uc3QgU3Ry
aW5nJiByZWFzb24pCiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6Y2xvc2luZ1RpbWVyRmlyZWQo
VGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQogewotICAgIExPRyhOZXR3b3JrLCAiV2Vi
U29ja2V0Q2hhbm5lbCAlcCBjbG9zaW5nIHRpbWVyIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0
d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgY2xvc2luZyB0aW1lciIsIHRoaXMpOwogICAgIEFT
U0VSVF9VTlVTRUQodGltZXIsICZtX2Nsb3NpbmdUaW1lciA9PSB0aW1lcik7CiAgICAgaWYgKG1f
aGFuZGxlKQogICAgICAgICBtX2hhbmRsZS0+ZGlzY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXREZWZsYXRlci5jcHAKaW5k
ZXggYTBjY2VlNTNkYmViYjQ0MGE2MjE2ZmRkNmVlOWZiOGIzMDY2ODNkNS4uMmNmNmE0NzM1Yzlk
OTI5ZWY5MmZmNDg2ZGIyZWYzNGIwZGUzNDk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0ZXIuY3BwCkBAIC03MSw3ICs3
MSw3IEBAIFdlYlNvY2tldERlZmxhdGVyOjp+V2ViU29ja2V0RGVmbGF0ZXIoKQogewogICAgIGlu
dCByZXN1bHQgPSBkZWZsYXRlRW5kKG1fc3RyZWFtLmdldCgpKTsKICAgICBpZiAocmVzdWx0ICE9
IFpfT0spCi0gICAgICAgIExPRyhOZXR3b3JrLCAiZGVmbGF0ZUVuZCgpIGZhaWxlZDogJWQiLCBy
ZXN1bHQpOworICAgICAgICBMT0dfSU5GTyhOZXR3b3JrLCAiZGVmbGF0ZUVuZCgpIGZhaWxlZDog
JWQiLCByZXN1bHQpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRTdHJlYW1QYXJhbWV0ZXIoel9zdHJl
YW0qIHN0cmVhbSwgY29uc3QgY2hhciogaW5wdXREYXRhLCBzaXplX3QgaW5wdXRMZW5ndGgsIGNo
YXIqIG91dHB1dERhdGEsIHNpemVfdCBvdXRwdXRMZW5ndGgpCkBAIC0xNDgsNyArMTQ4LDcgQEAg
V2ViU29ja2V0SW5mbGF0ZXI6On5XZWJTb2NrZXRJbmZsYXRlcigpCiB7CiAgICAgaW50IHJlc3Vs
dCA9IGluZmxhdGVFbmQobV9zdHJlYW0uZ2V0KCkpOwogICAgIGlmIChyZXN1bHQgIT0gWl9PSykK
LSAgICAgICAgTE9HKE5ldHdvcmssICJpbmZsYXRlRW5kKCkgZmFpbGVkOiAlZCIsIHJlc3VsdCk7
CisgICAgICAgIExPR19JTkZPKE5ldHdvcmssICJpbmZsYXRlRW5kKCkgZmFpbGVkOiAlZCIsIHJl
c3VsdCk7CiB9CiAKIGJvb2wgV2ViU29ja2V0SW5mbGF0ZXI6OmFkZEJ5dGVzKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGRmZGFiMTNkNDE3Zjky
MDVkOTU4ZTY4YTRjZGQ0YmFjZjRjOGY5NTUuLmVkMDk3OGZkNTRkNmRiM2NhYjMwYTQyZThkNjY4
MjNiMzQ5YTljMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC0yOTAsNyArMjkwLDcgQEAgaW50IFdl
YlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIs
IHNpemVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsgLy8gbV9mYWlsdXJlUmVhc29u
IGlzIHNldCBpbnNpZGUgcmVhZFN0YXR1c0xpbmUoKS4KICAgICAgICAgcmV0dXJuIGxlbjsKICAg
ICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlZCIsIHN0YXR1c0NvZGUpOwor
ICAgIExPR19JTkZPKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlZCIsIHN0YXR1c0NvZGUpOwog
ICAgIG1fcmVzcG9uc2Uuc2V0U3RhdHVzQ29kZShzdGF0dXNDb2RlKTsKICAgICBtX3Jlc3BvbnNl
LnNldFN0YXR1c1RleHQoc3RhdHVzVGV4dCk7CiAgICAgaWYgKHN0YXR1c0NvZGUgIT0gMTAxKSB7
CkBAIC0zMDYsMTIgKzMwNiwxMiBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVy
SGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAgICB9CiAgICAgY29u
c3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXIgKyBsaW5lTGVuZ3RoLCBoZWFkZXIg
KyBsZW4pOwogICAgIGlmICghcCkgewotICAgICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVh
ZGVycyBmYWlsZWQiKTsKKyAgICAgICAgTE9HX0lORk8oTmV0d29yaywgInJlYWRIVFRQSGVhZGVy
cyBmYWlsZWQiKTsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOyAvLyBtX2ZhaWx1cmVSZWFzb24g
aXMgc2V0IGluc2lkZSByZWFkSFRUUEhlYWRlcnMoKS4KICAgICAgICAgcmV0dXJuIGxlbjsKICAg
ICB9CiAgICAgaWYgKCFjaGVja1Jlc3BvbnNlSGVhZGVycygpKSB7Ci0gICAgICAgIExPRyhOZXR3
b3JrLCAiaGVhZGVyIHByb2Nlc3MgZmFpbGVkIik7CisgICAgICAgIExPR19JTkZPKE5ldHdvcmss
ICJoZWFkZXIgcHJvY2VzcyBmYWlsZWQiKTsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAg
ICAgICByZXR1cm4gcCAtIGhlYWRlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAppbmRl
eCBjYjYwNzAwNzA3MWMyYzcyMWU3MDNlNDJhNDEzODU0YTYzN2RhMDQzLi5jZmI4ZTIxY2YzZDA4
OTliNzllMTIzZWViY2M1MmQ4MmUzMjdkNzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKQEAg
LTEwMzcsMTMgKzEwMzcsMTMgQEAgYm9vbCBQb3NpdGlvbjo6cmVuZGVyc0luRGlmZmVyZW50UG9z
aXRpb24oY29uc3QgUG9zaXRpb24gJnBvcykgY29uc3QKICAgICBJbmxpbmVCb3gqIGIyOwogICAg
IHBvcy5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoRE9XTlNUUkVBTSwgYjIsIGlnbm9yZWRDYXJldE9m
ZnNldCk7CiAKLSAgICBMT0coRWRpdGluZywgInJlbmRlcmVyOiAgICAgICAgICAgICAgICVwIFsl
cF1cbiIsIHJlbmRlcmVyLCBiMSk7Ci0gICAgTE9HKEVkaXRpbmcsICJ0aGlzUmVuZGVyZWRPZmZz
ZXQ6ICAgICAgICAgJWRcbiIsIHRoaXNSZW5kZXJlZE9mZnNldCk7Ci0gICAgTE9HKEVkaXRpbmcs
ICJwb3NSZW5kZXJlcjogICAgICAgICAgICAlcCBbJXBdXG4iLCBwb3NSZW5kZXJlciwgYjIpOwot
ICAgIExPRyhFZGl0aW5nLCAicG9zUmVuZGVyZWRPZmZzZXQ6ICAgICAgJWRcbiIsIHBvc1JlbmRl
cmVkT2Zmc2V0KTsKLSAgICBMT0coRWRpdGluZywgIm5vZGUgbWluL21heDogICAgICAgICAgICVk
OiVkXG4iLCBjYXJldE1pbk9mZnNldChkZXByZWNhdGVkTm9kZSgpKSwgY2FyZXRNYXhPZmZzZXQo
ZGVwcmVjYXRlZE5vZGUoKSkpOwotICAgIExPRyhFZGl0aW5nLCAicG9zIG5vZGUgbWluL21heDog
ICAgICAgJWQ6JWRcbiIsIGNhcmV0TWluT2Zmc2V0KHBvcy5kZXByZWNhdGVkTm9kZSgpKSwgY2Fy
ZXRNYXhPZmZzZXQocG9zLmRlcHJlY2F0ZWROb2RlKCkpKTsKLSAgICBMT0coRWRpdGluZywgIi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS1cbiIpOworICAgIExPR19JTkZPKEVkaXRpbmcsICJyZW5kZXJlcjogICAgICAg
ICAgICAgICAlcCBbJXBdXG4iLCByZW5kZXJlciwgYjEpOworICAgIExPR19JTkZPKEVkaXRpbmcs
ICJ0aGlzUmVuZGVyZWRPZmZzZXQ6ICAgICAgICAgJWRcbiIsIHRoaXNSZW5kZXJlZE9mZnNldCk7
CisgICAgTE9HX0lORk8oRWRpdGluZywgInBvc1JlbmRlcmVyOiAgICAgICAgICAgICVwIFslcF1c
biIsIHBvc1JlbmRlcmVyLCBiMik7CisgICAgTE9HX0lORk8oRWRpdGluZywgInBvc1JlbmRlcmVk
T2Zmc2V0OiAgICAgICVkXG4iLCBwb3NSZW5kZXJlZE9mZnNldCk7CisgICAgTE9HX0lORk8oRWRp
dGluZywgIm5vZGUgbWluL21heDogICAgICAgICAgICVkOiVkXG4iLCBjYXJldE1pbk9mZnNldChk
ZXByZWNhdGVkTm9kZSgpKSwgY2FyZXRNYXhPZmZzZXQoZGVwcmVjYXRlZE5vZGUoKSkpOworICAg
IExPR19JTkZPKEVkaXRpbmcsICJwb3Mgbm9kZSBtaW4vbWF4OiAgICAgICAlZDolZFxuIiwgY2Fy
ZXRNaW5PZmZzZXQocG9zLmRlcHJlY2F0ZWROb2RlKCkpLCBjYXJldE1heE9mZnNldChwb3MuZGVw
cmVjYXRlZE5vZGUoKSkpOworICAgIExPR19JTkZPKEVkaXRpbmcsICItLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4i
KTsKIAogICAgIGlmICghYjEgfHwgIWIyKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCmluZGV4IDEyOGViNjQ1YzZlN2Y1OGZiZjQwN2Mz
MjE5MTYzMTZmMzA4NjA3MzcuLmVmYmZjYjQzNTk0NzlhZjA0NDA0ZmMwNDkwMGQ1NWMwMmJlNjVl
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmNwcApAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIEZpbGVSZWFkZXI6OnJlYWRBc0FycmF5QnVmZmVyKEJsb2IqIGJsb2IsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgIGlmICghYmxvYikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKEZp
bGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIGFycmF5IGJ1ZmZlcjogJXMgJXNcbiIsIGJs
b2ItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2ItPmlzRmlsZSgpID8gdG9GaWxl
KGJsb2IpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKKyAgICBMT0dfSU5GTyhGaWxlQVBJ
LCAiRmlsZVJlYWRlcjogcmVhZGluZyBhcyBhcnJheSBidWZmZXI6ICVzICVzXG4iLCBibG9iLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHRvRmlsZShibG9i
KS0+cGF0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CiAKICAgICByZWFkSW50ZXJuYWwoYmxvYiwg
RmlsZVJlYWRlckxvYWRlcjo6UmVhZEFzQXJyYXlCdWZmZXIsIGVjKTsKIH0KQEAgLTEwMCw3ICsx
MDAsNyBAQCB2b2lkIEZpbGVSZWFkZXI6OnJlYWRBc0JpbmFyeVN0cmluZyhCbG9iKiBibG9iLCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAoIWJsb2IpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExPRyhGaWxlQVBJLCAiRmlsZVJlYWRlcjogcmVhZGluZyBhcyBiaW5hcnk6ICVzICVzXG4iLCBi
bG9iLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBibG9iLT5pc0ZpbGUoKSA/IHRvRmls
ZShibG9iKS0+cGF0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIik7CisgICAgTE9HX0lORk8oRmlsZUFQ
SSwgIkZpbGVSZWFkZXI6IHJlYWRpbmcgYXMgYmluYXJ5OiAlcyAlc1xuIiwgYmxvYi0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgYmxvYi0+aXNGaWxlKCkgPyB0b0ZpbGUoYmxvYiktPnBh
dGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCiAgICAgcmVhZEludGVybmFsKGJsb2IsIEZpbGVS
ZWFkZXJMb2FkZXI6OlJlYWRBc0JpbmFyeVN0cmluZywgZWMpOwogfQpAQCAtMTEwLDcgKzExMCw3
IEBAIHZvaWQgRmlsZVJlYWRlcjo6cmVhZEFzVGV4dChCbG9iKiBibG9iLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBFeGNlcHRpb25Db2RlJiBlCiAgICAgaWYgKCFibG9iKQogICAgICAgICByZXR1
cm47CiAKLSAgICBMT0coRmlsZUFQSSwgIkZpbGVSZWFkZXI6IHJlYWRpbmcgYXMgdGV4dDogJXMg
JXNcbiIsIGJsb2ItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGJsb2ItPmlzRmlsZSgp
ID8gdG9GaWxlKGJsb2IpLT5wYXRoKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKKyAgICBMT0dfSU5G
TyhGaWxlQVBJLCAiRmlsZVJlYWRlcjogcmVhZGluZyBhcyB0ZXh0OiAlcyAlc1xuIiwgYmxvYi0+
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgYmxvYi0+aXNGaWxlKCkgPyB0b0ZpbGUoYmxv
YiktPnBhdGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCiAgICAgbV9lbmNvZGluZyA9IGVuY29k
aW5nOwogICAgIHJlYWRJbnRlcm5hbChibG9iLCBGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNUZXh0
LCBlYyk7CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBGaWxlUmVhZGVyOjpyZWFkQXNEYXRhVVJM
KEJsb2IqIGJsb2IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmICghYmxvYikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTE9HKEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIGRhdGEg
VVJMOiAlcyAlc1xuIiwgYmxvYi0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgYmxvYi0+
aXNGaWxlKCkgPyB0b0ZpbGUoYmxvYiktPnBhdGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOworICAg
IExPR19JTkZPKEZpbGVBUEksICJGaWxlUmVhZGVyOiByZWFkaW5nIGFzIGRhdGEgVVJMOiAlcyAl
c1xuIiwgYmxvYi0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgYmxvYi0+aXNGaWxlKCkg
PyB0b0ZpbGUoYmxvYiktPnBhdGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCiAgICAgcmVhZElu
dGVybmFsKGJsb2IsIEZpbGVSZWFkZXJMb2FkZXI6OlJlYWRBc0RhdGFVUkwsIGVjKTsKIH0KQEAg
LTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgdm9pZCBkZWxheWVkQWJvcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEZpbGVSZWFkZXIqIHJlYWRlcikKIAogdm9pZCBGaWxlUmVhZGVyOjphYm9ydCgp
CiB7Ci0gICAgTE9HKEZpbGVBUEksICJGaWxlUmVhZGVyOiBhYm9ydGluZ1xuIik7CisgICAgTE9H
X0lORk8oRmlsZUFQSSwgIkZpbGVSZWFkZXI6IGFib3J0aW5nXG4iKTsKIAogICAgIGlmIChtX2Fi
b3J0aW5nIHx8IG1fc3RhdGUgIT0gTE9BRElORykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZVRocmVhZC5jcHAKaW5kZXggNGY0ZjQ3M2ZkZWE4ZDc0ZWUwM2UwYjFhNjI5
ZjM2MjY0ZjJmNDNlYi4uNGQxOGI3NzhiN2M4YzVmNjllYmQ5NDExMTYyYjlhMmY4YzVjOTk1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlVGhyZWFkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVUaHJlYWQuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHZv
aWQgRmlsZVRocmVhZDo6cnVuTG9vcCgpCiAgICAgICAgIC8vIFdhaXQgZm9yIEZpbGVUaHJlYWQ6
OnN0YXJ0KCkgdG8gY29tcGxldGUgdG8gaGF2ZSBtX3RocmVhZElECiAgICAgICAgIC8vIGVzdGFi
bGlzaGVkIGJlZm9yZSBzdGFydGluZyB0aGUgbWFpbiBsb29wLgogICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7Ci0gICAgICAgIExPRyhGaWxlQVBJLCAiU3Rh
cnRlZCBGaWxlVGhyZWFkICVwIiwgdGhpcyk7CisgICAgICAgIExPR19JTkZPKEZpbGVBUEksICJT
dGFydGVkIEZpbGVUaHJlYWQgJXAiLCB0aGlzKTsKICAgICB9CiAKICAgICBBdXRvZHJhaW5lZFBv
b2wgcG9vbDsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEZpbGVUaHJlYWQ6OnJ1bkxvb3AoKQog
ICAgICAgICBwb29sLmN5Y2xlKCk7CiAgICAgfQogCi0gICAgTE9HKEZpbGVBUEksICJBYm91dCB0
byBkZXRhY2ggdGhyZWFkICVpIGFuZCBjbGVhciB0aGUgcmVmIHRvIEZpbGVUaHJlYWQgJXAsIHdo
aWNoIGN1cnJlbnRseSBoYXMgJWkgcmVmKHMpIiwgbV90aHJlYWRJRCwgdGhpcywgcmVmQ291bnQo
KSk7CisgICAgTE9HX0lORk8oRmlsZUFQSSwgIkFib3V0IHRvIGRldGFjaCB0aHJlYWQgJWkgYW5k
IGNsZWFyIHRoZSByZWYgdG8gRmlsZVRocmVhZCAlcCwgd2hpY2ggY3VycmVudGx5IGhhcyAlaSBy
ZWYocykiLCBtX3RocmVhZElELCB0aGlzLCByZWZDb3VudCgpKTsKIAogICAgIGRldGFjaFRocmVh
ZChtX3RocmVhZElEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRl
eCA5YmFkYzkxZGEzODVmMjk3ZjQwY2FhMzU2MTNjODliYzBkNGYwNzE5Li5hZWEzMGY1ZTJkNDgx
MGU1NWI2YzRmNWNkZWVlNDI0NzBmZTg0YTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcApAQCAtMTk5LDkgKzE5OSw5IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShG
cmFtZSogZnJhbWUpCiAKICNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKG1faXNNYWluRnJhbWUpCi0g
ICAgICAgIExPRyhQYWdlQ2FjaGUsICJGaW5pc2hlZCBjcmVhdGluZyBDYWNoZWRGcmFtZSBmb3Ig
bWFpbiBmcmFtZSB1cmwgJyVzJyBhbmQgRG9jdW1lbnRMb2FkZXIgJXBcbiIsIG1fdXJsLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOworICAgICAgICBMT0df
SU5GTyhQYWdlQ2FjaGUsICJGaW5pc2hlZCBjcmVhdGluZyBDYWNoZWRGcmFtZSBmb3IgbWFpbiBm
cmFtZSB1cmwgJyVzJyBhbmQgRG9jdW1lbnRMb2FkZXIgJXBcbiIsIG1fdXJsLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIG1fZG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIGVsc2UKLSAgICAgICAg
TE9HKFBhZ2VDYWNoZSwgIkZpbmlzaGVkIGNyZWF0aW5nIENhY2hlZEZyYW1lIGZvciBjaGlsZCBm
cmFtZSB3aXRoIHVybCAnJXMnIGFuZCBEb2N1bWVudExvYWRlciAlcFxuIiwgbV91cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CisgICAgICAgIExPR19J
TkZPKFBhZ2VDYWNoZSwgIkZpbmlzaGVkIGNyZWF0aW5nIENhY2hlZEZyYW1lIGZvciBjaGlsZCBm
cmFtZSB3aXRoIHVybCAnJXMnIGFuZCBEb2N1bWVudExvYWRlciAlcFxuIiwgbV91cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgbV9kb2N1bWVudExvYWRlci5nZXQoKSk7CiAjZW5kaWYKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCmluZGV4IGU3ZWViZGM0Mzc0MmM1NWYxNDEx
MWVjZDJlMjE0YThlMGJjYTQ2OGQuLjg0NTNmMThkNWNkOGRiNzNkNmQ2MjZiZTJhYTg1MDM4NzI5
NWU3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pIHx8ICFkZWZp
bmVkKE5ERUJVRykKIAotI2RlZmluZSBQQ0xPRyguLi4pIExPRyhQYWdlQ2FjaGUsICIlKnMlcyIs
IGluZGVudExldmVsKjQsICIiLCBtYWtlU3RyaW5nKF9fVkFfQVJHU19fKS51dGY4KCkuZGF0YSgp
KQorI2RlZmluZSBQQ0xPRyguLi4pIExPR19JTkZPKFBhZ2VDYWNoZSwgIiUqcyVzIiwgaW5kZW50
TGV2ZWwqNCwgIiIsIG1ha2VTdHJpbmcoX19WQV9BUkdTX18pLnV0ZjgoKS5kYXRhKCkpCiAgICAg
CiAvLyBVc2VkIGluIGhpc3RvZ3JhbXMsIHBsZWFzZSBvbmx5IGFkZCBhdCB0aGUgZW5kLCBhbmQg
ZG8gbm90IHJlbW92ZSBlbGVtZW50cyAocmVuYW1pbmcgZS5nLiB0byAiRm9vRW51bVVudXNlZDEi
IGlzIGZpbmUpLgogLy8gVGhpcyBpcyBiZWNhdXNlIHN0YXRpc3RpY3MgbWF5IGJlIGdhdGhlcmVk
IGZyb20gaGlzdG9ncmFtcyBiZXR3ZWVuIHZlcnNpb25zIG92ZXIgdGltZSwgYW5kIHJlLXVzaW5n
IHZhbHVlcyBjYXVzZXMgY29sbGlzaW9ucy4KQEAgLTQ2Myw3ICs0NjMsNyBAQCBDYWNoZWRQYWdl
KiBQYWdlQ2FjaGU6OmdldChIaXN0b3J5SXRlbSogaXRlbSkKICAgICAgICAgaWYgKGN1cnJlbnRU
aW1lKCkgLSBjYWNoZWRQYWdlLT50aW1lU3RhbXAoKSA8PSAxODAwKQogICAgICAgICAgICAgcmV0
dXJuIGNhY2hlZFBhZ2U7CiAgICAgICAgIAotICAgICAgICBMT0coUGFnZUNhY2hlLCAiTm90IHJl
c3RvcmluZyBwYWdlIGZvciAlcyBmcm9tIGJhY2svZm9yd2FyZCBjYWNoZSBiZWNhdXNlIGNhY2hl
IGVudHJ5IGhhcyBleHBpcmVkIiwgaXRlbS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICBMT0dfSU5GTyhQYWdlQ2FjaGUsICJOb3QgcmVzdG9yaW5nIHBhZ2UgZm9yICVz
IGZyb20gYmFjay9mb3J3YXJkIGNhY2hlIGJlY2F1c2UgY2FjaGUgZW50cnkgaGFzIGV4cGlyZWQi
LCBpdGVtLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHBhZ2VDYWNo
ZSgpLT5yZW1vdmUoaXRlbSk7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtNTI3LDcgKzUyNyw3
IEBAIHZvaWQgUGFnZUNhY2hlOjpyZW1vdmVGcm9tTFJVTGlzdChIaXN0b3J5SXRlbSogaXRlbSkK
IAogdm9pZCBQYWdlQ2FjaGU6OnJlbGVhc2VBdXRvcmVsZWFzZWRQYWdlc05vd0R1ZVRvVGltZXIo
VGltZXI8UGFnZUNhY2hlPiopCiB7Ci0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQYWdlQ2Fj
aGU6IFJlbGVhc2luZyBwYWdlIGNhY2hlcyAtICVpIG9iamVjdHMgcGVuZGluZyByZWxlYXNlIiwg
bV9hdXRvcmVsZWFzZVNldC5zaXplKCkpOworICAgIExPR19JTkZPKFBhZ2VDYWNoZSwgIldlYkNv
cmVQYWdlQ2FjaGU6IFJlbGVhc2luZyBwYWdlIGNhY2hlcyAtICVpIG9iamVjdHMgcGVuZGluZyBy
ZWxlYXNlIiwgbV9hdXRvcmVsZWFzZVNldC5zaXplKCkpOwogICAgIHJlbGVhc2VBdXRvcmVsZWFz
ZWRQYWdlc05vdygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuY3BwCmluZGV4IGMxYTAxNTBlMzEwMWVhNDU3MmJjMjM0MTA1NWRjYTk4NmY0ZjEwOWEu
LmFiMWIyMjdlNzNkZmFjYjg5MmQwZTAwMzc4MzgyOTM0MjQ2YzdiNmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9jdW1lbnQuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAg
dm9pZCBGVFBEaXJlY3RvcnlEb2N1bWVudFBhcnNlcjo6cGFyc2VBbmRBcHBlbmRPbmVMaW5lKGNv
bnN0IFN0cmluZyYgaW5wdXRMaW5lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IExPRyhGVFAsICJBcHBlbmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRh
dGEoKSwgcmVzdWx0LmZpbGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhGVFAs
ICJBcHBlbmRpbmcgZW50cnkgLSAlcywgJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwgcmVz
dWx0LmZpbGVTaXplLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIGFwcGVuZEVudHJ5KGZpbGVuYW1l
LCBwcm9jZXNzRmlsZXNpemVTdHJpbmcocmVzdWx0LmZpbGVTaXplLCByZXN1bHQudHlwZSA9PSBG
VFBEaXJlY3RvcnlFbnRyeSksIHByb2Nlc3NGaWxlRGF0ZVN0cmluZyhyZXN1bHQubW9kaWZpZWRU
aW1lKSwgcmVzdWx0LnR5cGUgPT0gRlRQRGlyZWN0b3J5RW50cnkpOwogfQpAQCAtMjg2LDcgKzI4
Niw3IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGNyZWF0ZVRlbXBs
YXRlRG9jdW1lbnREYXRhKFNldHRpbmdzKiBzZXR0CiAgICAgaWYgKHNldHRpbmdzKQogICAgICAg
ICBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09mRmlsZShzZXR0aW5n
cy0+ZnRwRGlyZWN0b3J5VGVtcGxhdGVQYXRoKCkpOwogICAgIGlmIChidWZmZXIpCi0gICAgICAg
IExPRyhGVFAsICJMb2FkZWQgRlRQRGlyZWN0b3J5VGVtcGxhdGUgb2YgbGVuZ3RoICVpXG4iLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgIExPR19JTkZPKEZUUCwgIkxvYWRlZCBGVFBEaXJlY3Rv
cnlUZW1wbGF0ZSBvZiBsZW5ndGggJWlcbiIsIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICByZXR1cm4g
YnVmZmVyLnJlbGVhc2UoKTsKIH0KICAgICAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIEZUUERp
cmVjdG9yeURvY3VtZW50UGFyc2VyOjpsb2FkRG9jdW1lbnRUZW1wbGF0ZSgpCiAKIHZvaWQgRlRQ
RGlyZWN0b3J5RG9jdW1lbnRQYXJzZXI6OmNyZWF0ZUJhc2ljRG9jdW1lbnQoKQogewotICAgIExP
RyhGVFAsICJDcmVhdGluZyBhIGJhc2ljIEZUUCBkb2N1bWVudCBzdHJ1Y3R1cmUgYXMgbm8gdGVt
cGxhdGUgd2FzIGxvYWRlZCIpOworICAgIExPR19JTkZPKEZUUCwgIkNyZWF0aW5nIGEgYmFzaWMg
RlRQIGRvY3VtZW50IHN0cnVjdHVyZSBhcyBubyB0ZW1wbGF0ZSB3YXMgbG9hZGVkIik7CiAKICAg
ICAvLyBGSVhNRTogTWFrZSB0aGlzICJiYXNpYyBkb2N1bWVudCIgbW9yZSBhY2NlcHRhYmxlCiAK
QEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIEZUUERpcmVjdG9yeURvY3VtZW50UGFyc2VyOjphcHBl
bmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCiAgICAgd2hpbGUgKGN1cnNvciA8IG1f
ZGVzdCkgewogICAgICAgICBpZiAoKmN1cnNvciA9PSAnXG4nKSB7CiAgICAgICAgICAgICBtX2Nh
cnJ5T3Zlci5hcHBlbmQoU3RyaW5nKHN0YXJ0LCBjdXJzb3IgLSBzdGFydCkpOwotICAgICAgICAg
ICAgTE9HKEZUUCwgIiVzIiwgbV9jYXJyeU92ZXIuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAg
ICAgTE9HX0lORk8oRlRQLCAiJXMiLCBtX2NhcnJ5T3Zlci5hc2NpaSgpLmRhdGEoKSk7CiAgICAg
ICAgICAgICBwYXJzZUFuZEFwcGVuZE9uZUxpbmUobV9jYXJyeU92ZXIpOwogICAgICAgICAgICAg
bV9jYXJyeU92ZXIgPSBTdHJpbmcoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggM2QyNWZiMTg3YTQyMDViZjJjMzcwOWVjMDllMTk3MzAzMzc3MTMxZC4u
YjRmMzI3OWY5ZjAzNWI2ZjI1ZDkzM2M0YjE0OTQ5YTc5YTkzMzEzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0yNjYsNyArMjY2LDcgQEAgSFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW0KICAgICAsIG1fYXVkaW9Tb3VyY2VOb2RlKDApCiAjZW5kaWYKIHsKLSAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50Iik7CisgICAg
TE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50Iik7CiAg
ICAgZG9jdW1lbnQtPnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVDYWxsYmFja3ModGhpcyk7CiAgICAg
ZG9jdW1lbnQtPnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tz
KHRoaXMpOwogICAgIApAQCAtMjk0LDcgKzI5NCw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
CiAKIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKIHsKLSAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCIpOworICAgIExPR19JTkZP
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQiKTsKICAgICBpZiAo
bV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpCiAgICAgICAgIGRvY3VtZW50KCktPnJlbW92
ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsKICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVu
dChmYWxzZSk7CkBAIC01MTIsNyArNTEyLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjaGkKIAog
Tm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBIVE1MTWVkaWFFbGVtZW50OjppbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQpCiB7Ci0gICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvIik7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8iKTsKICAgICBIVE1MRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9j
dW1lbnQoKSAmJiAhZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiBtX25ldHdvcmtT
dGF0ZSA9PSBORVRXT1JLX0VNUFRZKQogICAgICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJj
ZSk7CkBAIC01MjMsNyArNTIzLDcgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSoKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSogaW5zZXJ0aW9uUG9pbnQp
CiB7CiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpIHsKLSAgICAgICAgTE9H
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCIpOworICAgICAg
ICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQi
KTsKICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogICAgICAgICBpZiAobV9uZXR3
b3JrU3RhdGUgPiBORVRXT1JLX0VNUFRZKQogICAgICAgICAgICAgcGF1c2UoKTsKQEAgLTU3Niw3
ICs1NzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKFN0eWxlQ2hh
bmdlKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZChMb2FkVHlwZSBsb2Fk
VHlwZSkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQi
KTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZCIp
OwogCiAgICAgaWYgKChsb2FkVHlwZSAmIE1lZGlhUmVzb3VyY2UpICYmICEobV9wZW5kaW5nTG9h
ZEZsYWdzICYgTWVkaWFSZXNvdXJjZSkpIHsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9W
SURFTykKQEAgLTYwNiw3ICs2MDYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxl
TmV4dFNvdXJjZUNoaWxkKCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsKICNpZiBMT0dfTUVESUFfRVZFTlRTCi0g
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudCAtIHNjaGVkdWxp
bmcgJyVzJyIsIGV2ZW50TmFtZS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HX0lO
Rk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUV2ZW50IC0gc2NoZWR1bGluZyAn
JXMnIiwgZXZlbnROYW1lLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICNlbmRpZgogICAgIFJl
ZlB0cjxFdmVudD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIHRydWUp
OwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CkBAIC02NjcsNyArNjY3LDcgQEAgU3RyaW5n
IEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNv
bnN0IFN0cmluZyYga2V5U3kKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKLSAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZSglcywgJXMsICVzKSAtPiAl
cyIsIG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCksIGtleVN5c3RlbS51dGY4KCkuZGF0YSgpLCB1cmwu
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgY2FuUGxheS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0df
SU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKCVzLCAlcywgJXMpIC0+
ICVzIiwgbWltZVR5cGUudXRmOCgpLmRhdGEoKSwga2V5U3lzdGVtLnV0ZjgoKS5kYXRhKCksIHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBjYW5QbGF5LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAg
cmV0dXJuIGNhblBsYXk7CiB9CkBAIC02NzYsNyArNjc2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpsb2FkKEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxIVE1MTWVkaWFFbGVt
ZW50PiBwcm90ZWN0KHRoaXMpOyAvLyBsb2FkSW50ZXJuYWwgbWF5IHJlc3VsdCBpbiBhICdiZWZv
cmVsb2FkJyBldmVudCwgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAg
ICAgCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZCgpIik7CisgICAgTE9H
X0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKCkiKTsKICAgICAKICAgICBpZiAo
dXNlckdlc3R1cmVSZXF1aXJlZEZvckxvYWQoKSAmJiAhU2NyaXB0Q29udHJvbGxlcjo6cHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKQEAg
LTY5Myw3ICs2OTMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoRXhjZXB0aW9uQ29k
ZSYgZWMpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogewotICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkIik7CisgICAgTE9H
X0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCIpOwogCiAgICAg
Ly8gUGVyZm9ybSB0aGUgY2xlYW51cCByZXF1aXJlZCBmb3IgdGhlIHJlc291cmNlIGxvYWQgYWxn
b3JpdGhtIHRvIHJ1bi4KICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKQEAgLTgxOSw3ICs4MTks
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCgpCiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSIpOworICAgIExPR19JTkZPKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSIpOwogCiAgICAgZW51bSBN
b2RlIHsgYXR0cmlidXRlLCBjaGlsZHJlbiB9OwogCkBAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKICAgICAgICAgICAgIHNldFNo
b3VsZERlbGF5TG9hZEV2ZW50KGZhbHNlKTsKICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0g
TkVUV09SS19FTVBUWTsKIAotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6c2VsZWN0TWVkaWFSZXNvdXJjZSwgbm90aGluZyB0byBsb2FkIik7CisgICAgICAgICAgICBM
T0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UsIG5v
dGhpbmcgdG8gbG9hZCIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpA
QCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNv
dXJjZSgpCiAgICAgICAgIEtVUkwgbWVkaWFVUkwgPSBnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShz
cmNBdHRyKTsKICAgICAgICAgaWYgKG1lZGlhVVJMLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
bWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7Ci0gICAgICAgICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0
eSAnc3JjJyIpOworICAgICAgICAgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzZWxlY3RNZWRpYVJlc291cmNlLCBlbXB0eSAnc3JjJyIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTg4Miw3ICs4ODIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQogICAgICAgICAvLyB3aWxsIGhhdmUgdG8gcGljayBhIG1l
ZGlhIGVuZ2luZSBiYXNlZCBvbiB0aGUgZmlsZSBleHRlbnNpb24uCiAgICAgICAgIENvbnRlbnRU
eXBlIGNvbnRlbnRUeXBlKChTdHJpbmcoKSkpOwogICAgICAgICBsb2FkUmVzb3VyY2UobWVkaWFV
UkwsIGNvbnRlbnRUeXBlLCBTdHJpbmcoKSk7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UsIHVzaW5nICdzcmMnIGF0dHJpYnV0ZSB1cmwi
KTsKKyAgICAgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRp
YVJlc291cmNlLCB1c2luZyAnc3JjJyBhdHRyaWJ1dGUgdXJsIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRS
ZXNvdXJjZShjb25zdCBLVVJMJiBpbml0aWFsVVJMLCBDb250ZW50VHlwZSYgY29udGVudAogewog
ICAgIEFTU0VSVChpc1NhZmVUb0xvYWRVUkwoaW5pdGlhbFVSTCwgQ29tcGxhaW4pKTsKIAotICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZSglcywgJXMsICVzKSIs
IHVybEZvckxvZ2dpbmcoaW5pdGlhbFVSTCkudXRmOCgpLmRhdGEoKSwgY29udGVudFR5cGUucmF3
KCkudXRmOCgpLmRhdGEoKSwga2V5U3lzdGVtLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZP
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKCVzLCAlcywgJXMpIiwgdXJs
Rm9yTG9nZ2luZyhpbml0aWFsVVJMKS51dGY4KCkuZGF0YSgpLCBjb250ZW50VHlwZS5yYXcoKS51
dGY4KCkuZGF0YSgpLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEoKSk7CiAKICAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpIHsKQEAgLTk4NiwxMSAr
OTg2LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnN0IEtVUkwm
IGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50CiAjaWYgIVBMQVRGT1JNKENIUk9NSVVN
KQogICAgIGlmIChyZXNvdXJjZSkgewogICAgICAgICB1cmwgPSBjcmVhdGVGaWxlVVJMRm9yQXBw
bGljYXRpb25DYWNoZVJlc291cmNlKHJlc291cmNlLT5wYXRoKCkpOwotICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UgLSB3aWxsIGxvYWQgZnJvbSBhcHAg
Y2FjaGUgLT4gJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
IExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlIC0gd2lsbCBs
b2FkIGZyb20gYXBwIGNhY2hlIC0+ICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRh
KCkpOwogICAgIH0KICNlbmRpZgogCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
bG9hZFJlc291cmNlIC0gbV9jdXJyZW50U3JjIC0+ICVzIiwgdXJsRm9yTG9nZ2luZyhtX2N1cnJl
bnRTcmMpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6bG9hZFJlc291cmNlIC0gbV9jdXJyZW50U3JjIC0+ICVzIiwgdXJsRm9yTG9nZ2luZyht
X2N1cnJlbnRTcmMpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKG1fc2VuZFByb2dyZXNzRXZl
bnRzKSAKICAgICAgICAgc3RhcnRQcm9ncmVzc0V2ZW50VGltZXIoKTsKQEAgLTEwNTEsNyArMTA1
MSw3IEBAIHN0YXRpYyBib29sIGV2ZW50VGltZUN1ZUNvbXBhcmUoY29uc3Qgc3RkOjpwYWlyPGRv
dWJsZSwgVGV4dFRyYWNrQ3VlKj4mIGEsCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
QWN0aXZlVGV4dFRyYWNrQ3VlcyhmbG9hdCBtb3ZpZVRpbWUpCiB7Ci0gICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrcyIpOworICAgIExPR19JTkZP
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrcyIpOwogCiAg
ICAgLy8gNC44LjEwLjggUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKIApAQCAtMTM5MSw3ICsx
MzkxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRy
YWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGMKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmIHVybCwgSW52YWxpZFVSTEFjdGlvbiBhY3Rpb25J
ZkludmFsaWQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7Ci0gICAgICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcykgLT4gRkFMU0UgYmVjYXVz
ZSB1cmwgaXMgaW52YWxpZCIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwo
JXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlzIGludmFsaWQiLCB1cmxGb3JMb2dnaW5nKHVybCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEzOTks
MTIgKzEzOTksMTIgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoY29u
c3QgS1VSTCYgdXJsLCBJbnZhbGlkVVJMQWN0aW9uIGFjdGlvbkkKICAgICBpZiAoIWZyYW1lIHx8
ICFkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAg
ICAgaWYgKGFjdGlvbklmSW52YWxpZCA9PSBDb21wbGFpbikKICAgICAgICAgICAgIEZyYW1lTG9h
ZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUsIHVybC5zdHJpbmcoKSk7Ci0gICAgICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcykgLT4gRkFM
U0UgcmVqZWN0ZWQgYnkgU2VjdXJpdHlPcmlnaW4iLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aXNT
YWZlVG9Mb2FkVVJMKCVzKSAtPiBGQUxTRSByZWplY3RlZCBieSBTZWN1cml0eU9yaWdpbiIsIHVy
bEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAogICAgIGlmICghZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFs
bG93TWVkaWFGcm9tU291cmNlKHVybCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKCVzKSAtPiByZWplY3RlZCBieSBDb250ZW50IFNlY3Vy
aXR5IFBvbGljeSIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
TE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+
IHJlamVjdGVkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IiwgdXJsRm9yTG9nZ2luZyh1cmwp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xNDIz
LDcgKzE0MjMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0YXJ0UHJvZ3Jlc3NFdmVudFRp
bWVyKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yU291cmNlQ2hhbmdlKCkKIHsK
LSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yU291cmNlQ2hhbmdlIik7
CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp3YWl0Rm9yU291cmNlQ2hh
bmdlIik7CiAKICAgICBzdG9wUGVyaW9kaWNUaW1lcnMoKTsKICAgICBtX2xvYWRTdGF0ZSA9IFdh
aXRpbmdGb3JTb3VyY2U7CkBAIC0xNDQyLDcgKzE0NDIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OndhaXRGb3JTb3VyY2VDaGFuZ2UoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVT
dXBwb3J0ZWQoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBw
b3J0ZWQiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om5vbmVTdXBw
b3J0ZWQiKTsKIAogICAgIHN0b3BQZXJpb2RpY1RpbWVycygpOwogICAgIG1fbG9hZFN0YXRlID0g
V2FpdGluZ0ZvclNvdXJjZTsKQEAgLTE0ODIsNyArMTQ4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bm9uZVN1cHBvcnRlZCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFFbmdp
bmVFcnJvcihQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IGVycikKIHsKLSAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjptZWRpYUVuZ2luZUVycm9yKCVkKSIsIHN0YXRpY19jYXN0PGludD4o
ZXJyLT5jb2RlKCkpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhRW5naW5lRXJyb3IoJWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnItPmNvZGUoKSkpOwogCiAg
ICAgLy8gMSAtIFRoZSB1c2VyIGFnZW50IHNob3VsZCBjYW5jZWwgdGhlIGZldGNoaW5nIHByb2Nl
c3MuCiAgICAgc3RvcFBlcmlvZGljVGltZXJzKCk7CkBAIC0xNTEzLDcgKzE1MTMsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhRW5naW5lRXJyb3IoUGFzc1JlZlB0cjxNZWRpYUVycm9y
PiBlcnIpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0FuZENh
bGxiYWNrcygpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVu
ZGluZ0V2ZW50c0FuZENhbGxiYWNrcyIpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0FuZENhbGxiYWNrcyIpOwogICAgIG1fYXN5bmNF
dmVudFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsKIAogICAgIGZvciAoTm9kZSogbm9kZSA9IGZp
cnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKQEAgLTE1ODcs
MTMgKzE1ODcsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWQo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBlcnJvcikKICAgICAgICAgaWYgKG1fY3VycmVudFNv
dXJjZU5vZGUpCiAgICAgICAgICAgICBtX2N1cnJlbnRTb3VyY2VOb2RlLT5zY2hlZHVsZUVycm9y
RXZlbnQoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6c2V0TmV0d29ya1N0YXRlIC0gZXJyb3IgZXZlbnQgbm90IHNlbnQsIDxzb3VyY2U+
IHdhcyByZW1vdmVkIik7CisgICAgICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZSAtIGVycm9yIGV2ZW50IG5vdCBzZW50LCA8c291cmNlPiB3
YXMgcmVtb3ZlZCIpOwogICAgICAgICAKICAgICAgICAgaWYgKGhhdmVQb3RlbnRpYWxTb3VyY2VD
aGlsZCgpKSB7Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRO
ZXR3b3JrU3RhdGUgLSBzY2hlZHVsaW5nIG5leHQgPHNvdXJjZT4iKTsKKyAgICAgICAgICAgIExP
R19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0TmV0d29ya1N0YXRlIC0gc2NoZWR1
bGluZyBuZXh0IDxzb3VyY2U+Iik7CiAgICAgICAgICAgICBzY2hlZHVsZU5leHRTb3VyY2VDaGls
ZCgpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6c2V0TmV0d29ya1N0YXRlIC0gbm8gbW9yZSA8c291cmNlPiBlbGVtZW50cywgd2Fp
dGluZyIpOworICAgICAgICAgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZXROZXR3b3JrU3RhdGUgLSBubyBtb3JlIDxzb3VyY2U+IGVsZW1lbnRzLCB3YWl0aW5nIik7CiAg
ICAgICAgICAgICB3YWl0Rm9yU291cmNlQ2hhbmdlKCk7CiAgICAgICAgIH0KICAgICAgICAgCkBA
IC0xNjE4LDcgKzE2MTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yKQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIHN0YXRlKQog
ewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZSglZCkg
LSBjdXJyZW50IHN0YXRlIGlzICVkIiwgc3RhdGljX2Nhc3Q8aW50PihzdGF0ZSksIHN0YXRpY19j
YXN0PGludD4obV9uZXR3b3JrU3RhdGUpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnNldE5ldHdvcmtTdGF0ZSglZCkgLSBjdXJyZW50IHN0YXRlIGlzICVkIiwgc3Rh
dGljX2Nhc3Q8aW50PihzdGF0ZSksIHN0YXRpY19jYXN0PGludD4obV9uZXR3b3JrU3RhdGUpKTsK
IAogICAgIGlmIChzdGF0ZSA9PSBNZWRpYVBsYXllcjo6RW1wdHkpIHsKICAgICAgICAgLy8gSnVz
dCB1cGRhdGUgdGhlIGNhY2hlZCBzdGF0ZSBhbmQgbGVhdmUsIHdlIGNhbid0IGRvIGFueXRoaW5n
LgpAQCAtMTY4MCw3ICsxNjgwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clJlYWR5U3RhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogewotICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoJWQpIC0gY3VycmVudCBz
dGF0ZSBpcyAlZCwiLCBzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSwgc3RhdGljX2Nhc3Q8aW50Piht
X3JlYWR5U3RhdGUpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFJlYWR5U3RhdGUoJWQpIC0gY3VycmVudCBzdGF0ZSBpcyAlZCwiLCBzdGF0aWNfY2FzdDxpbnQ+
KHN0YXRlKSwgc3RhdGljX2Nhc3Q8aW50PihtX3JlYWR5U3RhdGUpKTsKIAogICAgIC8vIFNldCAi
d2FzUG90ZW50aWFsbHlQbGF5aW5nIiBCRUZPUkUgdXBkYXRpbmcgbV9yZWFkeVN0YXRlLCBwb3Rl
bnRpYWxseVBsYXlpbmcoKSB1c2VzIGl0CiAgICAgYm9vbCB3YXNQb3RlbnRpYWxseVBsYXlpbmcg
PSBwb3RlbnRpYWxseVBsYXlpbmcoKTsKQEAgLTE5MzgsNyArMTkzOCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6d2lsbEFkZEF1dGhvclNoYWRvd1Jvb3QoKQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJld2luZChmbG9hdCB0aW1lRGVsdGEpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6cmV3aW5kKCVmKSIsIHRpbWVEZWx0YSk7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjpyZXdpbmQoJWYpIiwgdGltZURlbHRhKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZTsKICAgICBzZXRDdXJyZW50VGltZShtYXgoY3VycmVudFRpbWUoKSAtIHRpbWVE
ZWx0YSwgbWluVGltZVNlZWthYmxlKCkpLCBlKTsKQEAgLTE5NDYsMTQgKzE5NDYsMTQgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpyZXdpbmQoZmxvYXQgdGltZURlbHRhKQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJldHVyblRvUmVhbHRpbWUoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnJldHVyblRvUmVhbHRpbWUiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnJldHVyblRvUmVhbHRpbWUiKTsKICAgICBFeGNlcHRpb25Db2RlIGU7
CiAgICAgc2V0Q3VycmVudFRpbWUobWF4VGltZVNlZWthYmxlKCksIGUpOwogfSAgCiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6YWRkUGxheWVkUmFuZ2UoZmxvYXQgc3RhcnQsIGZsb2F0IGVuZCkK
IHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjphZGRQbGF5ZWRSYW5nZSglZiwg
JWYpIiwgc3RhcnQsIGVuZCk7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjphZGRQbGF5ZWRSYW5nZSglZiwgJWYpIiwgc3RhcnQsIGVuZCk7CiAgICAgaWYgKCFtX3BsYXll
ZFRpbWVSYW5nZXMpCiAgICAgICAgIG1fcGxheWVkVGltZVJhbmdlcyA9IFRpbWVSYW5nZXM6OmNy
ZWF0ZSgpOwogICAgIG1fcGxheWVkVGltZVJhbmdlcy0+YWRkKHN0YXJ0LCBlbmQpOwpAQCAtMTk3
MSw3ICsxOTcxLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpzdXBwb3J0c1NjYW5uaW5nKCkg
Y29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlVG9QbGF5KCkKIHsKLSAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlVG9QbGF5KCVwKSIsIHRoaXMpOwor
ICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZVRvUGxheSglcCki
LCB0aGlzKTsKICAgICBpZiAobV9oYXZlUHJlcGFyZWRUb1BsYXkpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2hhdmVQcmVwYXJlZFRvUGxheSA9IHRydWU7CkBAIC0xOTgwLDcgKzE5ODAsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVUb1BsYXkoKQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNlZWsoZmxvYXQgdGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VlayglZikiLCB0aW1lKTsKKyAgICBMT0dfSU5GTyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWsoJWYpIiwgdGltZSk7CiAKICAgICAvLyA0Ljgu
OS45IFNlZWtpbmcKIApAQCAtMjAyMyw3ICsyMDIzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZWVrKGZsb2F0IHRpbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogI2lmICFMT0dfRElTQUJMRUQK
ICAgICBmbG9hdCBtZWRpYVRpbWUgPSBtX3BsYXllci0+bWVkaWFUaW1lRm9yVGltZVZhbHVlKHRp
bWUpOwogICAgIGlmICh0aW1lICE9IG1lZGlhVGltZSkKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6c2VlayglZikgLSBtZWRpYSB0aW1lbGluZSBlcXVpdmFsZW50IGlzICVm
IiwgdGltZSwgbWVkaWFUaW1lKTsKKyAgICAgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjpzZWVrKCVmKSAtIG1lZGlhIHRpbWVsaW5lIGVxdWl2YWxlbnQgaXMgJWYiLCB0aW1l
LCBtZWRpYVRpbWUpOwogI2VuZGlmCiAgICAgdGltZSA9IG1fcGxheWVyLT5tZWRpYVRpbWVGb3JU
aW1lVmFsdWUodGltZSk7CiAKQEAgLTIwODIsNyArMjA4Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2VlayhmbG9hdCB0aW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpmaW5pc2hTZWVrKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjpmaW5pc2hTZWVrIik7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpmaW5pc2hTZWVrIik7CiAKICAgICAvLyA0LjguMTAuOSBTZWVraW5nIHN0ZXAgMTQKICAgICBt
X3NlZWtpbmcgPSBmYWxzZTsKQEAgLTIxMjEsNyArMjEyMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVmcmVzaENhY2hlZFRpbWUoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmludmFsaWRhdGVDYWNoZWRUaW1lKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50OjppbnZhbGlkYXRlQ2FjaGVkVGltZSIpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6aW52YWxpZGF0ZUNhY2hlZFRpbWUiKTsKIAogICAgIC8vIERvbid0IHRyeSB0
byBjYWNoZSBtb3ZpZSB0aW1lIHdoZW4gcGxheWJhY2sgZmlyc3Qgc3RhcnRzIGFzIHRoZSB0aW1l
IHJlcG9ydGVkIGJ5IHRoZSBlbmdpbmUKICAgICAvLyBzb21ldGltZXMgZmx1Y3R1YXRlcyBmb3Ig
YSBzaG9ydCBhbW91bnQgb2YgdGltZSwgc28gdGhlIGNhY2hlZCB0aW1lIHdpbGwgYmUgb2ZmIGlm
IHdlIHRha2UgaXQKQEAgLTIxNDMsNyArMjE0Myw3IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6
OmN1cnJlbnRUaW1lKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAobV9zZWVr
aW5nKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1l
IC0gc2Vla2luZywgcmV0dXJuaW5nICVmIiwgbV9sYXN0U2Vla1RpbWUpOworICAgICAgICBMT0df
SU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lIC0gc2Vla2luZywgcmV0
dXJuaW5nICVmIiwgbV9sYXN0U2Vla1RpbWUpOwogICAgICAgICByZXR1cm4gbV9sYXN0U2Vla1Rp
bWU7CiAgICAgfQogCkBAIC0yMTUxLDcgKzIxNTEsNyBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50
OjpjdXJyZW50VGltZSgpIGNvbnN0CiAjaWYgTE9HX0NBQ0hFRF9USU1FX1dBUk5JTkdTCiAgICAg
ICAgIGZsb2F0IGRlbHRhID0gbV9jYWNoZWRUaW1lIC0gbV9wbGF5ZXItPmN1cnJlbnRUaW1lKCk7
CiAgICAgICAgIGlmIChkZWx0YSA+IG1pbkNhY2hlZERlbHRhRm9yV2FybmluZykKLSAgICAgICAg
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJlbnRUaW1lIC0gV0FSTklORywg
Y2FjaGVkIHRpbWUgaXMgJWYgc2Vjb25kcyBvZmYgb2YgbWVkaWEgdGltZSB3aGVuIHBhdXNlZCIs
IGRlbHRhKTsKKyAgICAgICAgICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
Y3VycmVudFRpbWUgLSBXQVJOSU5HLCBjYWNoZWQgdGltZSBpcyAlZiBzZWNvbmRzIG9mZiBvZiBt
ZWRpYSB0aW1lIHdoZW4gcGF1c2VkIiwgZGVsdGEpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBt
X2NhY2hlZFRpbWU7CiAgICAgfQpAQCAtMjE3MCw3ICsyMTcwLDcgQEAgZmxvYXQgSFRNTE1lZGlh
RWxlbWVudDo6Y3VycmVudFRpbWUoKSBjb25zdAogI2lmIExPR19DQUNIRURfVElNRV9XQVJOSU5H
UwogICAgICAgICAgICAgZmxvYXQgZGVsdGEgPSBhZGp1c3RlZENhY2hlVGltZSAtIG1fcGxheWVy
LT5jdXJyZW50VGltZSgpOwogICAgICAgICAgICAgaWYgKGRlbHRhID4gbWluQ2FjaGVkRGVsdGFG
b3JXYXJuaW5nKQotICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OmN1cnJlbnRUaW1lIC0gV0FSTklORywgY2FjaGVkIHRpbWUgaXMgJWYgc2Vjb25kcyBvZmYgb2Yg
bWVkaWEgdGltZSB3aGVuIHBsYXlpbmciLCBkZWx0YSk7CisgICAgICAgICAgICAgICAgTE9HX0lO
Rk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpjdXJyZW50VGltZSAtIFdBUk5JTkcsIGNhY2hl
ZCB0aW1lIGlzICVmIHNlY29uZHMgb2ZmIG9mIG1lZGlhIHRpbWUgd2hlbiBwbGF5aW5nIiwgZGVs
dGEpOwogI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWRDYWNoZVRpbWU7CiAgICAg
ICAgIH0KQEAgLTIxODAsNyArMjE4MCw3IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6OmN1cnJl
bnRUaW1lKCkgY29uc3QKICAgICBpZiAobWF4aW11bUR1cmF0aW9uVG9DYWNoZU1lZGlhVGltZSAm
JiBub3cgPiBtX21pbmltdW1XYWxsQ2xvY2tUaW1lVG9DYWNoZU1lZGlhVGltZSAmJiBtX2NhY2hl
ZFRpbWUgIT0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCkpIHsKICAgICAgICAgZG91YmxlIHdh
bGxDbG9ja0RlbHRhID0gbm93IC0gbV9jYWNoZWRUaW1lV2FsbENsb2NrVXBkYXRlVGltZTsKICAg
ICAgICAgZmxvYXQgZGVsdGEgPSBtX2NhY2hlZFRpbWUgKyAobV9wbGF5YmFja1JhdGUgKiB3YWxs
Q2xvY2tEZWx0YSkgLSBtX3BsYXllci0+Y3VycmVudFRpbWUoKTsKLSAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUgLSBjYWNoZWQgdGltZSB3YXMgJWYgc2Vj
b25kcyBvZmYgb2YgbWVkaWEgdGltZSB3aGVuIGl0IGV4cGlyZWQiLCBkZWx0YSk7CisgICAgICAg
IExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y3VycmVudFRpbWUgLSBjYWNoZWQg
dGltZSB3YXMgJWYgc2Vjb25kcyBvZmYgb2YgbWVkaWEgdGltZSB3aGVuIGl0IGV4cGlyZWQiLCBk
ZWx0YSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTIyNDksNyArMjI0OSw3IEBAIGZsb2F0IEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUmF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0UGxheWJhY2tSYXRlKGZsb2F0IHJhdGUpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJhdGUpOworICAgIExPR19JTkZPKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxheWJhY2tSYXRlKCVmKSIsIHJhdGUpOwogICAg
IAogICAgIGlmIChtX3BsYXliYWNrUmF0ZSAhPSByYXRlKSB7CiAgICAgICAgIG1fcGxheWJhY2tS
YXRlID0gcmF0ZTsKQEAgLTIyNzUsNyArMjI3NSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
d2Via2l0UHJlc2VydmVzUGl0Y2goKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFdlYmtpdFByZXNlcnZlc1BpdGNoKGJvb2wgcHJlc2VydmVzUGl0Y2gpCiB7Ci0gICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2V0V2Via2l0UHJlc2VydmVzUGl0Y2goJXMpIiwgYm9v
bFN0cmluZyhwcmVzZXJ2ZXNQaXRjaCkpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6c2V0V2Via2l0UHJlc2VydmVzUGl0Y2goJXMpIiwgYm9vbFN0cmluZyhwcmVzZXJ2
ZXNQaXRjaCkpOwogCiAgICAgbV93ZWJraXRQcmVzZXJ2ZXNQaXRjaCA9IHByZXNlcnZlc1BpdGNo
OwogICAgIApAQCAtMjMwMCw3ICsyMzAwLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphdXRv
cGxheSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0QXV0b3BsYXkoYm9vbCBi
KQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldEF1dG9wbGF5KCVzKSIs
IGJvb2xTdHJpbmcoYikpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
c2V0QXV0b3BsYXkoJXMpIiwgYm9vbFN0cmluZyhiKSk7CiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0
ZShhdXRvcGxheUF0dHIsIGIpOwogfQogCkBAIC0yMzI0LDEzICsyMzI0LDEzIEBAIFN0cmluZyBI
VE1MTWVkaWFFbGVtZW50OjpwcmVsb2FkKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYgcHJlbG9hZCkKIHsKLSAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKCVzKSIsIHByZWxvYWQudXRmOCgpLmRhdGEoKSk7
CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRQcmVsb2FkKCVzKSIs
IHByZWxvYWQudXRmOCgpLmRhdGEoKSk7CiAgICAgc2V0QXR0cmlidXRlKHByZWxvYWRBdHRyLCBw
cmVsb2FkKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCkKIHsKLSAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5KCkiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXkoKSIpOwogCiAgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWly
ZWRGb3JSYXRlQ2hhbmdlKCkgJiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSgpKQogICAgICAgICByZXR1cm47CkBAIC0yMzUyLDcgKzIzNTIsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXkoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5h
bCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsIik7
CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwiKTsK
IAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQogICAgIGlmICgh
bV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKQEAgLTIzODQsNyAr
MjM4NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwYXVzZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6cGF1c2UoKSIpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
cGF1c2UoKSIpOwogCiAgICAgaWYgKHVzZXJHZXN0dXJlUmVxdWlyZWRGb3JSYXRlQ2hhbmdlKCkg
JiYgIVNjcmlwdENvbnRyb2xsZXI6OnByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzk1LDcgKzIzOTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNl
KCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIHsKLSAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsIik7CisgICAgTE9HX0lORk8o
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsIik7CiAKICAgICAvLyA0Ljgu
MTAuOS4gUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKICAgICBpZiAoIW1fcGxheWVyIHx8IG1f
bmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCkBAIC0yNTE2LDcgKzI1MTYsNyBAQCBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6Omxvb3AoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldExvb3AoYm9vbCBiKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dExvb3AoJXMpIiwgYm9vbFN0cmluZyhiKSk7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpzZXRMb29wKCVzKSIsIGJvb2xTdHJpbmcoYikpOwogICAgIHNldEJvb2xlYW5B
dHRyaWJ1dGUobG9vcEF0dHIsIGIpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB1cGRhdGVEaXNh
YmxlU2xlZXAoKTsKQEAgLTI1NDQsNyArMjU0NCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
Y29udHJvbHMoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldENvbnRyb2xzKGJv
b2wgYikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRDb250cm9scygl
cykiLCBib29sU3RyaW5nKGIpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OnNldENvbnRyb2xzKCVzKSIsIGJvb2xTdHJpbmcoYikpOwogICAgIHNldEJvb2xlYW5BdHRy
aWJ1dGUoY29udHJvbHNBdHRyLCBiKTsKIH0KIApAQCAtMjU1NSw3ICsyNTU1LDcgQEAgZmxvYXQg
SFRNTE1lZGlhRWxlbWVudDo6dm9sdW1lKCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzZXRWb2x1bWUoZmxvYXQgdm9sLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRWb2x1bWUoJWYpIiwgdm9sKTsKKyAgICBMT0dfSU5G
TyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFZvbHVtZSglZikiLCB2b2wpOwogCiAgICAg
aWYgKHZvbCA8IDAuMGYgfHwgdm9sID4gMS4wZikgewogICAgICAgICBlYyA9IElOREVYX1NJWkVf
RVJSOwpAQCAtMjU3Niw3ICsyNTc2LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptdXRlZCgp
IGNvbnN0CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIHsK
LSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRNdXRlZCglcykiLCBib29sU3Ry
aW5nKG11dGVkKSk7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZXRN
dXRlZCglcykiLCBib29sU3RyaW5nKG11dGVkKSk7CiAKICAgICBpZiAobV9tdXRlZCAhPSBtdXRl
ZCkgewogICAgICAgICBtX211dGVkID0gbXV0ZWQ7CkBAIC0yNTk0LDcgKzI1OTQsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dG9nZ2xlUGxheVN0YXRlKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojp0b2dnbGVQbGF5U3RhdGUgLSBjYW5QbGF5KCkgaXMgJXMiLCBib29sU3RyaW5nKGNh
blBsYXkoKSkpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dG9nZ2xl
UGxheVN0YXRlIC0gY2FuUGxheSgpIGlzICVzIiwgYm9vbFN0cmluZyhjYW5QbGF5KCkpKTsKIAog
ICAgIC8vIFdlIGNhbiBzYWZlbHkgY2FsbCB0aGUgaW50ZXJuYWwgcGxheS9wYXVzZSBtZXRob2Rz
LCB3aGljaCBkb24ndCBjaGVjayByZXN0cmljdGlvbnMsIGJlY2F1c2UKICAgICAvLyB0aGlzIG1l
dGhvZCBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBidWlsdC1pbiBtZWRpYSBjb250cm9sbGVyCkBA
IC0yNjA3LDcgKzI2MDcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRvZ2dsZVBsYXlTdGF0
ZSgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YmVnaW5TY3J1YmJpbmcoKQogewotICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmJlZ2luU2NydWJiaW5nIC0gcGF1c2VkKCkgaXMg
JXMiLCBib29sU3RyaW5nKHBhdXNlZCgpKSk7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVk
aWFFbGVtZW50OjpiZWdpblNjcnViYmluZyAtIHBhdXNlZCgpIGlzICVzIiwgYm9vbFN0cmluZyhw
YXVzZWQoKSkpOwogCiAgICAgaWYgKCFwYXVzZWQoKSkgewogICAgICAgICBpZiAoZW5kZWQoKSkg
ewpAQCAtMjYyNiw3ICsyNjI2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpiZWdpblNjcnVi
YmluZygpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5kU2NydWJiaW5nKCkKIHsKLSAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcgLSBtX3BhdXNlZEludGVy
bmFsIGlzICVzIiwgYm9vbFN0cmluZyhtX3BhdXNlZEludGVybmFsKSk7CisgICAgTE9HX0lORk8o
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjplbmRTY3J1YmJpbmcgLSBtX3BhdXNlZEludGVybmFs
IGlzICVzIiwgYm9vbFN0cmluZyhtX3BhdXNlZEludGVybmFsKSk7CiAKICAgICBpZiAobV9wYXVz
ZWRJbnRlcm5hbCkKICAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwoZmFsc2UpOwpAQCAtMjgxMyw3
ICsyODEzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp3aWxsUmVtb3ZlVHJhY2soSFRNTFRy
YWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAodHJh
Y2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewogICAgICAgICBLVVJMIHVybCA9IHRy
YWNrRWxlbWVudC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7Ci0gICAgICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxSZW1vdmVUcmFjayAtICdzcmMnIGlzICVz
IiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0dfSU5GTyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OndpbGxSZW1vdmVUcmFjayAtICdzcmMnIGlzICVzIiwg
dXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgogCkBAIC0z
MDQ2LDEzICszMDQ2LDEzIEBAIEtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJj
ZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrCiAgICAgLy8gRG9uJ3Qg
bG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkg
dmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCiAgICAgYm9vbCBzaG91bGRMb2cgPSBhY3Rpb25JZklu
dmFsaWQgIT0gRG9Ob3RoaW5nOwogICAgIGlmIChzaG91bGRMb2cpCi0gICAgICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCIpOworICAgICAgICBM
T0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCIp
OwogI2VuZGlmCiAKICAgICBpZiAoIW1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIpIHsKICNpZiAh
TE9HX0RJU0FCTEVECiAgICAgICAgIGlmIChzaG91bGRMb2cpCi0gICAgICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLT4gMHgwMDAwLCBc
IlwiIik7CisgICAgICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNl
bGVjdE5leHRTb3VyY2VDaGlsZCAtPiAweDAwMDAsIFwiXCIiKTsKICNlbmRpZgogICAgICAgICBy
ZXR1cm4gS1VSTCgpOwogICAgIH0KQEAgLTMwODYsNyArMzA4Niw3IEBAIEtVUkwgSFRNTE1lZGlh
RWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwg
U3RyaW5nKiBrCiAgICAgICAgIG1lZGlhVVJMID0gc291cmNlLT5nZXROb25FbXB0eVVSTEF0dHJp
YnV0ZShzcmNBdHRyKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgIGlmIChzaG91bGRMb2cp
Ci0gICAgICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291
cmNlQ2hpbGQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcobWVkaWFVUkwpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
ZWxlY3ROZXh0U291cmNlQ2hpbGQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcobWVkaWFV
UkwpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChtZWRpYVVSTC5pc0VtcHR5
KCkpCiAgICAgICAgICAgICBnb3RvIGNoZWNrX2FnYWluOwpAQCAtMzA5Niw3ICszMDk2LDcgQEAg
S1VSTCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUq
IGNvbnRlbnRUeXBlLCBTdHJpbmcqIGsKICAgICAgICAgICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0
PiBtZWRpYSA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZUFsbG93aW5nRGVzY3JpcHRpb25TeW50YXgo
c291cmNlLT5tZWRpYSgpKTsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAoc2hv
dWxkTG9nKQotICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNl
bGVjdE5leHRTb3VyY2VDaGlsZCAtICdtZWRpYScgaXMgJXMiLCBzb3VyY2UtPm1lZGlhKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLSAnbWVkaWEnIGlzICVzIiwgc291cmNlLT5t
ZWRpYSgpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoIXNjcmVlbkV2
YWwuZXZhbChtZWRpYS5nZXQoKSkpIAogICAgICAgICAgICAgICAgIGdvdG8gY2hlY2tfYWdhaW47
CkBAIC0zMTA5LDcgKzMxMDksNyBAQCBLVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRT
b3VyY2VDaGlsZChDb250ZW50VHlwZSogY29udGVudFR5cGUsIFN0cmluZyogawogICAgICAgICBp
ZiAoIXR5cGUuaXNFbXB0eSgpIHx8ICFzeXN0ZW0uaXNFbXB0eSgpKSB7CiAjaWYgIUxPR19ESVNB
QkxFRAogICAgICAgICAgICAgaWYgKHNob3VsZExvZykKLSAgICAgICAgICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQgLSAndHlwZScgaXMg
JyVzJyAtIGtleSBzeXN0ZW0gaXMgJyVzJyIsIHR5cGUudXRmOCgpLmRhdGEoKSwgc3lzdGVtLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkIC0gJ3R5cGUnIGlzICclcycgLSBrZXkgc3lz
dGVtIGlzICclcyciLCB0eXBlLnV0ZjgoKS5kYXRhKCksIHN5c3RlbS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgogICAgICAgICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKENvbnRl
bnRUeXBlKHR5cGUpLCBzeXN0ZW0sIG1lZGlhVVJMLCB0aGlzKSkKICAgICAgICAgICAgICAgICBn
b3RvIGNoZWNrX2FnYWluOwpAQCAtMzEyMCw3ICszMTIwLDcgQEAgS1VSTCBIVE1MTWVkaWFFbGVt
ZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNvbnRlbnRUeXBlLCBTdHJp
bmcqIGsKIAogICAgICAgICAvLyBBICdiZWZvcmVsb2FkJyBldmVudCBoYW5kbGVyIGNhbiBtdXRh
dGUgdGhlIERPTSwgc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBzb3VyY2UgZWxlbWVudCBpcyBzdGls
bCBhIGNoaWxkIG5vZGUuCiAgICAgICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCkgIT0gdGhpcykg
ewotICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNv
dXJjZUNoaWxkIDogJ2JlZm9yZWxvYWQnIHJlbW92ZWQgY3VycmVudCBlbGVtZW50Iik7CisgICAg
ICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3Vy
Y2VDaGlsZCA6ICdiZWZvcmVsb2FkJyByZW1vdmVkIGN1cnJlbnQgZWxlbWVudCIpOwogICAgICAg
ICAgICAgc291cmNlID0gMDsKICAgICAgICAgICAgIGdvdG8gY2hlY2tfYWdhaW47CiAgICAgICAg
IH0KQEAgLTMxNTAsMTkgKzMxNTAsMTkgQEAgY2hlY2tfYWdhaW46CiAKICNpZiAhTE9HX0RJU0FC
TEVECiAgICAgaWYgKHNob3VsZExvZykKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkIC0+ICVwLCAlcyIsIG1fY3VycmVudFNvdXJjZU5v
ZGUuZ2V0KCksIGNhblVzZVNvdXJjZUVsZW1lbnQgPyB1cmxGb3JMb2dnaW5nKG1lZGlhVVJMKS51
dGY4KCkuZGF0YSgpIDogIiIpOworICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCAtPiAlcCwgJXMiLCBtX2N1cnJlbnRTb3VyY2VO
b2RlLmdldCgpLCBjYW5Vc2VTb3VyY2VFbGVtZW50ID8gdXJsRm9yTG9nZ2luZyhtZWRpYVVSTCku
dXRmOCgpLmRhdGEoKSA6ICIiKTsKICNlbmRpZgogICAgIHJldHVybiBjYW5Vc2VTb3VyY2VFbGVt
ZW50ID8gbWVkaWFVUkwgOiBLVVJMKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c291
cmNlV2FzQWRkZWQoSFRNTFNvdXJjZUVsZW1lbnQqIHNvdXJjZSkKIHsKLSAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZCglcCkiLCBzb3VyY2UpOworICAgIExP
R19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQoJXApIiwgc291
cmNlKTsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAoc291cmNlLT5oYXNUYWdOYW1lKHNv
dXJjZVRhZykpIHsKICAgICAgICAgS1VSTCB1cmwgPSBzb3VyY2UtPmdldE5vbkVtcHR5VVJMQXR0
cmlidXRlKHNyY0F0dHIpOwotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpz
b3VyY2VXYXNBZGRlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJj
ZVdhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgfQogI2VuZGlmCiAgICAgCkBAIC0zMTgwLDcgKzMxODAsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUTUxTb3VyY2VFbGVtZW50KiBzb3VyY2UpCiAg
ICAgfQogCiAgICAgaWYgKG1fY3VycmVudFNvdXJjZU5vZGUgJiYgc291cmNlID09IG1fY3VycmVu
dFNvdXJjZU5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQgLSA8c291cmNlPiBpbnNlcnRlZCBpbW1lZGlhdGVs
eSBhZnRlciBjdXJyZW50IHNvdXJjZSIpOworICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkIC0gPHNvdXJjZT4gaW5zZXJ0ZWQgaW1tZWRpYXRl
bHkgYWZ0ZXIgY3VycmVudCBzb3VyY2UiKTsKICAgICAgICAgbV9uZXh0Q2hpbGROb2RlVG9Db25z
aWRlciA9IHNvdXJjZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMyMDUsMTIgKzMyMDUs
MTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZChIVE1MU291cmNlRWxl
bWVudCogc291cmNlKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc1JlbW92ZWQo
SFRNTFNvdXJjZUVsZW1lbnQqIHNvdXJjZSkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkKCVwKSIsIHNvdXJjZSk7CisgICAgTE9HX0lORk8oTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNSZW1vdmVkKCVwKSIsIHNvdXJjZSk7CiAK
ICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHNvdXJjZS0+aGFzVGFnTmFtZShzb3VyY2VUYWcp
KSB7CiAgICAgICAgIEtVUkwgdXJsID0gc291cmNlLT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShz
cmNBdHRyKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2Fz
UmVtb3ZlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc1Jl
bW92ZWQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsK
ICAgICB9CiAjZW5kaWYKIApAQCAtMzIyMCwxOSArMzIyMCwxOSBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnNvdXJjZVdhc1JlbW92ZWQoSFRNTFNvdXJjZUVsZW1lbnQqIHNvdXJjZSkKICAgICBp
ZiAoc291cmNlID09IG1fbmV4dENoaWxkTm9kZVRvQ29uc2lkZXIpIHsKICAgICAgICAgaWYgKG1f
Y3VycmVudFNvdXJjZU5vZGUpCiAgICAgICAgICAgICBtX25leHRDaGlsZE5vZGVUb0NvbnNpZGVy
ID0gbV9jdXJyZW50U291cmNlTm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlUmVtb3ZlZCAtIG1fbmV4dENoaWxkTm9kZVRvQ29u
c2lkZXIgc2V0IHRvICVwIiwgbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlci5nZXQoKSk7CisgICAg
ICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c291cmNlUmVtb3ZlZCAtIG1f
bmV4dENoaWxkTm9kZVRvQ29uc2lkZXIgc2V0IHRvICVwIiwgbV9uZXh0Q2hpbGROb2RlVG9Db25z
aWRlci5nZXQoKSk7CiAgICAgfSBlbHNlIGlmIChzb3VyY2UgPT0gbV9jdXJyZW50U291cmNlTm9k
ZSkgewogICAgICAgICAvLyBDbGVhciB0aGUgY3VycmVudCBzb3VyY2Ugbm9kZSBwb2ludGVyLCBi
dXQgZG9uJ3QgY2hhbmdlIHRoZSBtb3ZpZSBhcyB0aGUgc3BlYyBzYXlzOgogICAgICAgICAvLyA0
LjguOCAtIER5bmFtaWNhbGx5IG1vZGlmeWluZyBhIHNvdXJjZSBlbGVtZW50IGFuZCBpdHMgYXR0
cmlidXRlIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSAKICAgICAgICAgLy8gaW5zZXJ0ZWQg
aW4gYSB2aWRlbyBvciBhdWRpbyBlbGVtZW50IHdpbGwgaGF2ZSBubyBlZmZlY3QuCiAgICAgICAg
IG1fY3VycmVudFNvdXJjZU5vZGUgPSAwOwotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VSZW1vdmVkIC0gbV9jdXJyZW50U291cmNlTm9kZSBzZXQgdG8gMCIpOwor
ICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVJlbW92ZWQg
LSBtX2N1cnJlbnRTb3VyY2VOb2RlIHNldCB0byAwIik7CiAgICAgfQogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogewotICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQiKTsK
KyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNo
YW5nZWQiKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKQEAgLTMyOTIsNyArMzI5Miw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBs
YXllciopCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2Vk
KE1lZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllclZvbHVtZUNoYW5nZWQiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZCIpOwogCiAgICAgYmVnaW5Qcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIGlmIChtX3BsYXllcikgewpAQCAtMzMwOCw3ICsz
MzA4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclZvbHVtZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTXV0ZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyTXV0ZUNoYW5nZWQiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyTXV0ZUNoYW5nZWQiKTsKIAogICAgIGJlZ2luUHJvY2Vzc2lu
Z01lZGlhUGxheWVyQ2FsbGJhY2soKTsKICAgICBpZiAobV9wbGF5ZXIpCkBAIC0zMzE4LDcgKzMz
MTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTXV0ZUNoYW5nZWQoTWVk
aWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25D
aGFuZ2VkKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQiKTsKKyAgICBMT0dfSU5GTyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkIik7CiAKICAg
ICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAKQEAgLTMzMzYsNyArMzMz
Niw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEdXJhdGlvbkNoYW5nZWQo
TWVkaWFQbGF5ZXIqIHBsYXllcikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clJhdGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclJhdGVDaGFuZ2VkIik7CisgICAgTE9HX0lORk8oTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJhdGVDaGFuZ2VkIik7CiAKICAgICBiZWdpblBy
b2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAKQEAgLTMzNTUsNyArMzM1NSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSYXRlQ2hhbmdlZChNZWRpYVBsYXllciop
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdl
ZChNZWRpYVBsYXllciopCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZCIpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJQbGF5YmFja1N0YXRlQ2hhbmdlZCIpOwogCiAgICAg
aWYgKCFtX3BsYXllciB8fCBtX3BhdXNlZEludGVybmFsKQogICAgICAgICByZXR1cm47CkBAIC0z
MzcwLDcgKzMzNzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyUGxheWJh
Y2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIqKQogewotICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3Mi
KTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2F3
VW5zdXBwb3J0ZWRUcmFja3MiKTsKIAogICAgIC8vIFRoZSBNZWRpYVBsYXllciBjYW1lIGFjcm9z
cyBjb250ZW50IGl0IGNhbm5vdCBjb21wbGV0ZWx5IGhhbmRsZS4KICAgICAvLyBUaGlzIGlzIG5v
cm1hbGx5IGFjY2VwdGFibGUgZXhjZXB0IHdoZW4gd2UgYXJlIGluIGEgc3RhbmRhbG9uZQpAQCAt
MzM4Myw3ICszMzgzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNhd1Vu
c3VwcG9ydGVkVHJhY2tzKE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVkKE1lZGlhUGxheWVyKikKIHsKLSAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlc291cmNlTm90U3VwcG9ydGVk
Iik7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJl
c291cmNlTm90U3VwcG9ydGVkIik7CiAKICAgICAvLyBUaGUgTWVkaWFQbGF5ZXIgY2FtZSBhY3Jv
c3MgY29udGVudCB3aGljaCBubyBpbnN0YWxsZWQgZW5naW5lIHN1cHBvcnRzLgogICAgIG1lZGlh
TG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6Rm9ybWF0RXJyb3IpOwpAQCAtMzQwMSw3ICszNDAx
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlcGFpbnQoTWVkaWFQbGF5
ZXIqKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQoTWVk
aWFQbGF5ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyU2l6ZUNoYW5nZWQiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyU2l6ZUNoYW5nZWQiKTsKIAogICAgIGJlZ2luUHJvY2Vzc2luZ01lZGlhUGxh
eWVyQ2FsbGJhY2soKTsKICAgICBpZiAocmVuZGVyZXIoKSkKQEAgLTM0MjEsNyArMzQyMSw3IEBA
IGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJh
dGVkKE1lZGlhUGxheWVyKikKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJl
bmRlcmluZ01vZGVDaGFuZ2VkKE1lZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkIik7CisgICAgTE9H
X0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclJlbmRlcmluZ01vZGVD
aGFuZ2VkIik7CiAKICAgICAvLyBLaWNrIG9mZiBhIGZha2UgcmVjYWxjU3R5bGUgdGhhdCB3aWxs
IHVwZGF0ZSB0aGUgY29tcG9zaXRpbmcgdHJlZS4KICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFN5
bnRoZXRpY1N0eWxlQ2hhbmdlKTsKQEAgLTM0NDAsNyArMzQ0MCw3IEBAIEdyYXBoaWNzRGV2aWNl
QWRhcHRlciogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0
ZXIoY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0
ZWQoTWVkaWFQbGF5ZXIqKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhUGxheWVyRW5naW5lVXBkYXRlZCIpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkIik7CiAgICAgYmVnaW5Qcm9jZXNzaW5n
TWVkaWFQbGF5ZXJDYWxsYmFjaygpOwogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5k
ZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwpAQCAtMzQ0OSw3ICszNDQ5LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVuZ2luZVVwZGF0ZWQoTWVkaWFQbGF5ZXIqKQog
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1lQXZhaWxh
YmxlKE1lZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllckZpcnN0VmlkZW9GcmFtZUF2YWlsYWJsZSIpOworICAgIExPR19JTkZPKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUi
KTsKICAgICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAgICAgaWYgKGRp
c3BsYXlNb2RlKCkgPT0gUG9zdGVyV2FpdGluZ0ZvclZpZGVvKSB7CiAgICAgICAgIHNldERpc3Bs
YXlNb2RlKFZpZGVvKTsKQEAgLTM0NjIsNyArMzQ2Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoTWVkaWFQbGF5ZXIqKQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyQ2hhcmFjdGVyaXN0aWNDaGFuZ2VkKE1l
ZGlhUGxheWVyKikKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllckNoYXJhY3RlcmlzdGljQ2hhbmdlZCIpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQiKTsKICAgICAKICAg
ICBiZWdpblByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiAgICAgaWYgKGhhc01lZGlh
Q29udHJvbHMoKSkKQEAgLTM2MDksNyArMzYwOSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXBkYXRlUGxheVN0YXRlKCkKICAgICBib29sIHNob3VsZEJlUGxheWluZyA9IHBvdGVudGlhbGx5
UGxheWluZygpOwogICAgIGJvb2wgcGxheWVyUGF1c2VkID0gbV9wbGF5ZXItPnBhdXNlZCgpOwog
Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlIC0gc2hv
dWxkQmVQbGF5aW5nID0gJXMsIHBsYXllclBhdXNlZCA9ICVzIiwgCisgICAgTE9HX0lORk8oTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVQbGF5U3RhdGUgLSBzaG91bGRCZVBsYXlpbmcg
PSAlcywgcGxheWVyUGF1c2VkID0gJXMiLCAKICAgICAgICAgYm9vbFN0cmluZyhzaG91bGRCZVBs
YXlpbmcpLCBib29sU3RyaW5nKHBsYXllclBhdXNlZCkpOwogCiAgICAgaWYgKHNob3VsZEJlUGxh
eWluZykgewpAQCAtMzY3MSw3ICszNjcxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9w
UGVyaW9kaWNUaW1lcnMoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRM
b2FkKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVk
TG9hZCIpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNl
bGxlZExvYWQiKTsKIAogICAgIGlmIChtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZIHx8
IG1fY29tcGxldGVseUxvYWRlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzczNiw3ICszNzM2LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjYW5TdXNwZW5kKCkgY29uc3QKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzdG9wKCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
OjpzdG9wIik7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdG9wIik7
CiAgICAgaWYgKG1faXNGdWxsc2NyZWVuKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogICAg
IApAQCAtMzc1Niw3ICszNzU2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wKCkKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQog
ewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQiKTsKKyAgICBMT0df
SU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQiKTsKIAogICAgIHN3aXRjaCAo
d2h5KQogICAgIHsKQEAgLTM3NzMsNyArMzc3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZXN1bWUoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlc3VtZSIp
OworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lIik7CiAKICAg
ICBtX2luQWN0aXZlRG9jdW1lbnQgPSB0cnVlOwogICAgIHNldFBhdXNlZEludGVybmFsKGZhbHNl
KTsKQEAgLTM3OTgsNyArMzc5OCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFzUGVuZGlu
Z0FjdGl2aXR5KCkgY29uc3QKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVZvbHVtZURp
ZENoYW5nZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFWb2x1
bWVEaWRDaGFuZ2UiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1l
ZGlhVm9sdW1lRGlkQ2hhbmdlIik7CiAgICAgdXBkYXRlVm9sdW1lKCk7CiB9CiAKQEAgLTM4OTIs
NyArMzg5Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94
eSgpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eSIpOworICAgIExPR19JTkZP
KE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXJQcm94eSIpOwogCiAg
ICAgS1VSTCB1cmw7CiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1OYW1lczsKQEAgLTM5MzksNyAr
MzkzOSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNGdWxsc2NyZWVuKCkgY29uc3QKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogewotICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbiIpOworICAgIExPR19JTkZPKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuIik7CiAKICNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+c2V0dGlu
Z3MoKSAmJiBkb2N1bWVudCgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKSB7CkBA
IC0zOTU5LDcgKzM5NTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVl
bigpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuIik7CisgICAgTE9HX0lO
Rk8oTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbiIpOwogCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnNl
dHRpbmdzKCkgJiYgZG9jdW1lbnQoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkg
ewpAQCAtNDAyNyw3ICs0MDI3LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZWRDYXB0
aW9uc1Zpc2libGUoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENh
cHRpb25zVmlzaWJsZShib29sIGNsb3NlZENhcHRpb25WaXNpYmxlKQogewotICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSglcykiLCBib29s
U3RyaW5nKGNsb3NlZENhcHRpb25WaXNpYmxlKSk7CisgICAgTE9HX0lORk8oTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoJXMpIiwgYm9vbFN0cmluZyhj
bG9zZWRDYXB0aW9uVmlzaWJsZSkpOwogCiAgICAgaWYgKCFtX3BsYXllciB8fCAhaGFzQ2xvc2Vk
Q2FwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDA4MSw3ICs0MDgxLDcgQEAgdW5zaWdu
ZWQgSFRNTE1lZGlhRWxlbWVudDo6d2Via2l0VmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhblN0YXJ0KCkKIHsKLSAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhblN0YXJ0Iik7CisgICAgTE9HX0lORk8oTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhblN0YXJ0Iik7CiAKICAgICBBU1NFUlQobV9p
c1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQpOwogICAgIG1faXNXYWl0aW5nVW50aWxNZWRpYUNh
blN0YXJ0ID0gZmFsc2U7CkBAIC00MDk4LDcgKzQwOTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wgc2hvdWxkRGVsYXkpCiAgICAgaWYgKG1f
c2hvdWxkRGVsYXlMb2FkRXZlbnQgPT0gc2hvdWxkRGVsYXkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZERlbGF5TG9hZEV2ZW50
KCVzKSIsIGJvb2xTdHJpbmcoc2hvdWxkRGVsYXkpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KCVzKSIsIGJvb2xTdHJpbmco
c2hvdWxkRGVsYXkpKTsKIAogICAgIG1fc2hvdWxkRGVsYXlMb2FkRXZlbnQgPSBzaG91bGREZWxh
eTsKICAgICBpZiAoc2hvdWxkRGVsYXkpCkBAIC00MTMwLDcgKzQxMzAsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkKIAogICAgIFNldHRp
bmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50KCktPnNldHRpbmdzKCk7CiAgICAgYm9vbCBwcml2YXRl
TW9kZSA9ICFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwot
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlk
Q2hhbmdlKCVzKSIsIGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKKyAgICBMT0dfSU5GTyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCVzKSIs
IGJvb2xTdHJpbmcocHJpdmF0ZU1vZGUpKTsKICAgICBtX3BsYXllci0+c2V0UHJpdmF0ZUJyb3dz
aW5nTW9kZShwcml2YXRlTW9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNvdXJjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNl
RWxlbWVudC5jcHAKaW5kZXggNGFjNTM3YmQyZDUxOGUxYTRiOTFiMjE5NTdhMzRhZTMxMjU0MGUw
Zi4uMDEzMTUwMzUyMjRiYTZhOWQ0NTIzNWU4ZDY2YmJhM2ZiOWJiMGI1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgaW5saW5l
IEhUTUxTb3VyY2VFbGVtZW50OjpIVE1MU291cmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWUKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQog
ICAgICwgbV9lcnJvckV2ZW50VGltZXIodGhpcywgJkhUTUxTb3VyY2VFbGVtZW50OjplcnJvckV2
ZW50VGltZXJGaXJlZCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MU291cmNlRWxlbWVudDo6SFRN
TFNvdXJjZUVsZW1lbnQgLSAlcCIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTFNv
dXJjZUVsZW1lbnQ6OkhUTUxTb3VyY2VFbGVtZW50IC0gJXAiLCB0aGlzKTsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShzb3VyY2VUYWcpKTsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgSFRN
TFNvdXJjZUVsZW1lbnQ6OnNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiB2b2lkIEhUTUxT
b3VyY2VFbGVtZW50OjpzY2hlZHVsZUVycm9yRXZlbnQoKQogewotICAgIExPRyhNZWRpYSwgIkhU
TUxTb3VyY2VFbGVtZW50OjpzY2hlZHVsZUVycm9yRXZlbnQgLSAlcCIsIHRoaXMpOworICAgIExP
R19JTkZPKE1lZGlhLCAiSFRNTFNvdXJjZUVsZW1lbnQ6OnNjaGVkdWxlRXJyb3JFdmVudCAtICVw
IiwgdGhpcyk7CiAgICAgaWYgKG1fZXJyb3JFdmVudFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTA5LDEzICsxMDksMTMgQEAgdm9pZCBIVE1MU291cmNlRWxlbWVudDo6
c2NoZWR1bGVFcnJvckV2ZW50KCkKIAogdm9pZCBIVE1MU291cmNlRWxlbWVudDo6Y2FuY2VsUGVu
ZGluZ0Vycm9yRXZlbnQoKQogewotICAgIExPRyhNZWRpYSwgIkhUTUxTb3VyY2VFbGVtZW50Ojpj
YW5jZWxQZW5kaW5nRXJyb3JFdmVudCAtICVwIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJIVE1MU291cmNlRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0Vycm9yRXZlbnQgLSAlcCIsIHRoaXMp
OwogICAgIG1fZXJyb3JFdmVudFRpbWVyLnN0b3AoKTsKIH0KIAogdm9pZCBIVE1MU291cmNlRWxl
bWVudDo6ZXJyb3JFdmVudFRpbWVyRmlyZWQoVGltZXI8SFRNTFNvdXJjZUVsZW1lbnQ+KikKIHsK
LSAgICBMT0coTWVkaWEsICJIVE1MU291cmNlRWxlbWVudDo6ZXJyb3JFdmVudFRpbWVyRmlyZWQg
LSAlcCIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTFNvdXJjZUVsZW1lbnQ6OmVy
cm9yRXZlbnRUaW1lckZpcmVkIC0gJXAiLCB0aGlzKTsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IDZjNmM5ZTQwYmIzMTBm
OThkNjg4ZjdmZmIzODFmN2EwYzZkMGFiMzYuLjViOWIxMWQxNTU4MDg3YThkYTk0MGQyMWQ1NjBi
YmE2NGUxODQ4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApA
QCAtNTgsNyArNTgsNyBAQCBpbmxpbmUgSFRNTFRyYWNrRWxlbWVudDo6SFRNTFRyYWNrRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudAogICAgIDogSFRNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2hhc0JlZW5Db25maWd1cmVkKGZhbHNlKQog
ewotICAgIExPRyhNZWRpYSwgIkhUTUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFja0VsZW1lbnQgLSAl
cCIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTFRyYWNrRWxlbWVudDo6SFRNTFRy
YWNrRWxlbWVudCAtICVwIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJhY2tUYWcp
KTsKIH0KIApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9h
ZFVybChjb25zdCBLVVJMJiB1cmwpCiAgICAgaWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJp
dHlQb2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkgewogICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3NhZ2UsIChBU0NJSUxpdGVyYWwoIlRleHQg
dHJhY2sgbG9hZCBkZW5pZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuIikpKTsKICAgICAg
ICAgZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKLSAgICAgICAgTE9H
KE1lZGlhLCAiSFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVybCglcykgLT4gcmVqZWN0ZWQgYnkg
Q29udGVudCBTZWN1cml0eSBQb2xpY3kiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgIExPR19JTkZPKE1lZGlhLCAiSFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVy
bCglcykgLT4gcmVqZWN0ZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kiLCB1cmxGb3JMb2dn
aW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBjYzU2OTZjZGNjNzZm
NjE3YTJhYTE5YjIyNmJmNTA2M2JjMzUyOTA1Li43MDFjMjdkZTc1NTY5MjNkMTlhMDA4ZmIyNWZj
MWQ4MzcwZTEzMjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTE2
NzIsNyArMTY3Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgp
CiAgICAgUmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UgPSBtX2xvYWRpbmdGcm9tQ2FjaGVk
UGFnZSA/IHBhZ2VDYWNoZSgpLT5nZXQoaGlzdG9yeSgpLT5wcm92aXNpb25hbEl0ZW0oKSkgOiAw
OwogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcGRsID0gbV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyOwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVMb2FkaW5nICVzOiBBYm91dCB0
byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBV
UkwgJyVzJyIsIG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksCisgICAgTE9HX0lORk8oUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEFib3V0
IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJMICclcycgdG8gbmV3
IFVSTCAnJXMnIiwgbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwKICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiIiwgCiAgICAgICAgIHBkbCA/IHBk
bC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICI8bm8gcHJvdmlzaW9uYWwgRG9jdW1l
bnRMb2FkZXI+Iik7CiAKQEAgLTE3MjQsNyArMTcyNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGRpZE9wZW5VUkwoKTsKICAgICB9CiAKLSAg
ICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBGaW5pc2hlZCBjb21taXR0aW5nIHBy
b3Zpc2lvbmFsIGxvYWQgdG8gVVJMICVzIiwgbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKKyAgICBMT0dfSU5GTyhMb2FkaW5nLCAiV2ViQ29yZUxv
YWRpbmcgJXM6IEZpbmlzaGVkIGNvbW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMi
LCBtX2ZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAog
ICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIGlmIChtX2xvYWRUeXBlID09IEZy
YW1lTG9hZFR5cGVTdGFuZGFyZCAmJiBtX2RvY3VtZW50TG9hZGVyLT5pc0NsaWVudFJlZGlyZWN0
KCkpCkBAIC0yOTIzLDcgKzI5MjMsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1
cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbgogdm9pZCBG
cmFtZUxvYWRlcjo6bG9hZFByb3Zpc2lvbmFsSXRlbUZyb21DYWNoZWRQYWdlKCkKIHsKICAgICBE
b2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxMb2FkZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9h
ZGVyKCk7Ci0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQYWdlQ2FjaGU6IExvYWRpbmcgcHJv
dmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgJXAgd2l0aCBVUkwgJyVzJyBmcm9tIENhY2hlZFBhZ2Ui
LCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCksIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIo
KS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oUGFnZUNhY2hl
LCAiV2ViQ29yZVBhZ2VDYWNoZTogTG9hZGluZyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlciAl
cCB3aXRoIFVSTCAnJXMnIGZyb20gQ2FjaGVkUGFnZSIsIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2Fk
ZXIoKSwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIAogICAgIHByZXBhcmVGb3JMb2FkU3RhcnQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggZmI2ZDBlMzVjZThiNTIwMDJlN2Zj
NjRjODY0YTA1MmIyNTY1MmU3Ni4uNWVlYzM5OGRjNjc2YjVkMDcyZDYzZDZhOWJmZWM3ZGQwMzYy
YjhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBA
IC0xNzUsNyArMTc1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50U3Rh
dGUoKQogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCiAgICAgaWYgKGl0ZW0tPmlzQ3VycmVu
dERvY3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC0+YXR0YWNoZWQoKSkgewotICAgICAgICBM
T0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBzYXZpbmcgZm9ybSBzdGF0ZSB0byAlcCIs
IG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGl0
ZW0pOworICAgICAgICBMT0dfSU5GTyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHNhdmlu
ZyBmb3JtIHN0YXRlIHRvICVwIiwgbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgaXRlbSk7CiAgICAgICAgIGl0ZW0tPnNldERvY3VtZW50U3RhdGUo
ZG9jdW1lbnQtPmZvcm1FbGVtZW50c1N0YXRlKCkpOwogICAgIH0KIH0KQEAgLTIyOSw3ICsyMjks
NyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCiAgICAg
aWYgKCFpdGVtVG9SZXN0b3JlKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGlzQXNzb2NpYXRl
ZFRvUmVxdWVzdGVkSGlzdG9yeUl0ZW0oaXRlbVRvUmVzdG9yZSwgbV9mcmFtZSwgbV9mcmFtZS0+
bG9hZGVyKCktPnJlcXVlc3RlZEhpc3RvcnlJdGVtKCkpICYmICFtX2ZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKS0+aXNDbGllbnRSZWRpcmVjdCgpKSB7Ci0gICAgICAgIExPRyhMb2Fk
aW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHJlc3RvcmluZyBmb3JtIHN0YXRlIGZyb20gJXAiLCBt
X2ZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBpdGVt
VG9SZXN0b3JlKTsKKyAgICAgICAgTE9HX0lORk8oTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVz
OiByZXN0b3JpbmcgZm9ybSBzdGF0ZSBmcm9tICVwIiwgbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVO
YW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaXRlbVRvUmVzdG9yZSk7CiAgICAgICAgIGRv
Yy0+c2V0U3RhdGVGb3JOZXdGb3JtRWxlbWVudHMoaXRlbVRvUmVzdG9yZS0+ZG9jdW1lbnRTdGF0
ZSgpKTsKICAgICB9CiB9CkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6dXBkYXRlRm9yQmFja0ZvcndhcmROYXZpZ2F0aW9uKCkKIHsKICNpZiAhTE9HX0RJU0FCTEVE
CiAgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpKQotICAgICAgICBM
T0coSGlzdG9yeSwgIldlYkNvcmVIaXN0b3J5OiBVcGRhdGluZyBIaXN0b3J5IGZvciBiYWNrL2Zv
cndhcmQgbmF2aWdhdGlvbiBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0df
SU5GTyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIGJhY2sv
Zm9yd2FyZCBuYXZpZ2F0aW9uIGluIGZyYW1lICVzIiwgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3Vt
ZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKIAog
ICAgIC8vIE11c3QgZ3JhYiB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gYmVmb3JlIGRpc3R1
cmJpbmcgaXQKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRh
dGVGb3JSZWxvYWQoKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhp
c3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIHJlbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBMT0dfSU5GTyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5n
IEhpc3RvcnkgZm9yIHJlbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1
bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCiAK
ICAgICBpZiAobV9jdXJyZW50SXRlbSkgewpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgSGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlbG9hZCgpCiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvclN0YW5kYXJkTG9hZChIaXN0b3J5VXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogewot
ICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3RvcnkgZm9yIFN0
YW5kYXJkIExvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOworICAgIExPR19JTkZPKEhpc3Rv
cnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgU3RhbmRhcmQgTG9hZCBp
biBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT51cmwoKS5z
dHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXIg
PSBtX2ZyYW1lLT5sb2FkZXIoKTsKIApAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiB7
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSkKLSAgICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcg
SGlzdG9yeSBmb3IgcmVkaXJlY3QgbG9hZCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICBMT0dfSU5GTyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5nIEhpc3Rvcnkg
Zm9yIHJlZGlyZWN0IGxvYWQgaW4gZnJhbWUgJXMiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKS0+dGl0bGUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAg
IAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CkBAIC00MzUs
NyArNDM1LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yQ2xpZW50UmVkaXJl
Y3QoKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCkpCi0gICAgICAgIExPRyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVw
ZGF0aW5nIEhpc3RvcnkgZm9yIGNsaWVudCByZWRpcmVjdCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBMT0dfSU5GTyhIaXN0b3J5LCAiV2ViQ29yZUhpc3Rvcnk6IFVwZGF0aW5n
IEhpc3RvcnkgZm9yIGNsaWVudCByZWRpcmVjdCBpbiBmcmFtZSAlcyIsIG1fZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT50aXRsZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
I2VuZGlmCiAKICAgICAvLyBDbGVhciBvdXQgZm9ybSBkYXRhIHNvIHdlIGRvbid0IHRyeSB0byBy
ZXN0b3JlIGl0IGludG8gdGhlIGluY29taW5nIHBhZ2UuICBNdXN0IGhhcHBlbiBhZnRlcgpAQCAt
NDYwLDcgKzQ2MCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckNvbW1pdCgp
CiAgICAgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCk7CiAjaWYg
IUxPR19ESVNBQkxFRAogICAgIGlmIChmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKSkKLSAg
ICAgICAgTE9HKEhpc3RvcnksICJXZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3Ig
Y29tbWl0IGluIGZyYW1lICVzIiwgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxl
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKEhpc3RvcnksICJX
ZWJDb3JlSGlzdG9yeTogVXBkYXRpbmcgSGlzdG9yeSBmb3IgY29tbWl0IGluIGZyYW1lICVzIiwg
ZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnRpdGxlKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAjZW5kaWYKICAgICBGcmFtZUxvYWRUeXBlIHR5cGUgPSBmcmFtZUxvYWRlci0+bG9h
ZFR5cGUoKTsKICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKHR5cGUpCkBAIC04MTksNyAr
ODE5LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlQmFja0ZvcndhcmRMaXN0Q2xp
cHBlZEF0VGFyZ2V0KGJvb2wgZG9DbGlwKQogICAgIGZyYW1lTG9hZGVyLT5jaGVja0RpZFBlcmZv
cm1GaXJzdE5hdmlnYXRpb24oKTsKIAogICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gdG9wSXRlbSA9
IGZyYW1lTG9hZGVyLT5oaXN0b3J5KCktPmNyZWF0ZUl0ZW1UcmVlKG1fZnJhbWUsIGRvQ2xpcCk7
Ci0gICAgTE9HKEJhY2tGb3J3YXJkLCAiV2ViQ29yZUJhY2tGb3J3YXJkIC0gQWRkaW5nIGJhY2tm
b3J3YXJkIGl0ZW0gJXAgZm9yIGZyYW1lICVzIiwgdG9wSXRlbS5nZXQoKSwgbV9mcmFtZS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsK
KyAgICBMT0dfSU5GTyhCYWNrRm9yd2FyZCwgIldlYkNvcmVCYWNrRm9yd2FyZCAtIEFkZGluZyBi
YWNrZm9yd2FyZCBpdGVtICVwIGZvciBmcmFtZSAlcyIsIHRvcEl0ZW0uZ2V0KCksIG1fZnJhbWUt
PmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEo
KSk7CiAgICAgcGFnZS0+YmFja0ZvcndhcmQoKS0+YWRkSXRlbSh0b3BJdGVtLnJlbGVhc2UoKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcm9ncmVzc1RyYWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAKaW5kZXggNGYy
YjdlY2QzN2UyNmRmYWRjYmI1YjZiNWZkOTVmMjZlMWRmNWIyYy4uY2MzM2UwNWI5ZmQ5Y2NmZmZh
OWIxNTdlMTU0MzRlNWMzN2M0OWM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Byb2dyZXNzVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cmVz
ZXQoKQogCiB2b2lkIFByb2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICBMT0coUHJvZ3Jlc3MsICJQcm9ncmVzcyBzdGFydGVkICglcCkgLSBmcmFtZSAl
cChcIiVzXCIpLCB2YWx1ZSAlZiwgdHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1l
ICVwIiwgdGhpcywgZnJhbWUsIGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVz
LCBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7CisgICAgTE9HX0lORk8oUHJvZ3Jl
c3MsICJQcm9ncmVzcyBzdGFydGVkICglcCkgLSBmcmFtZSAlcChcIiVzXCIpLCB2YWx1ZSAlZiwg
dHJhY2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhpcywgZnJhbWUsIGZy
YW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3Byb2dy
ZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29yaWdpbmF0aW5nUHJvZ3Jl
c3NGcmFtZS5nZXQoKSk7CiAKICAgICBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKTsKICAgICAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFBy
b2dyZXNzVHJhY2tlcjo6cHJvZ3Jlc3NTdGFydGVkKEZyYW1lKiBmcmFtZSkKIAogdm9pZCBQcm9n
cmVzc1RyYWNrZXI6OnByb2dyZXNzQ29tcGxldGVkKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBMT0co
UHJvZ3Jlc3MsICJQcm9ncmVzcyBjb21wbGV0ZWQgKCVwKSAtIGZyYW1lICVwKFwiJXNcIiksIHZh
bHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAiLCB0aGlzLCBm
cmFtZSwgZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IG1fcHJvZ3Jlc3NWYWx1ZSwgbV9udW1Qcm9ncmVzc1RyYWNrZWRGcmFtZXMsIG1fb3JpZ2luYXRp
bmdQcm9ncmVzc0ZyYW1lLmdldCgpKTsKKyAgICBMT0dfSU5GTyhQcm9ncmVzcywgIlByb2dyZXNz
IGNvbXBsZXRlZCAoJXApIC0gZnJhbWUgJXAoXCIlc1wiKSwgdmFsdWUgJWYsIHRyYWNrZWQgZnJh
bWVzICVkLCBvcmlnaW5hdGluZyBmcmFtZSAlcCIsIHRoaXMsIGZyYW1lLCBmcmFtZS0+dHJlZSgp
LT51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgbV9wcm9ncmVzc1ZhbHVlLCBt
X251bVByb2dyZXNzVHJhY2tlZEZyYW1lcywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUuZ2V0
KCkpOwogICAgIAogICAgIGlmIChtX251bVByb2dyZXNzVHJhY2tlZEZyYW1lcyA8PSAwKQogICAg
ICAgICByZXR1cm47CkBAIC0xNDAsNyArMTQwLDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OnBy
b2dyZXNzQ29tcGxldGVkKEZyYW1lKiBmcmFtZSkKIAogdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZp
bmFsUHJvZ3Jlc3NDb21wbGV0ZSgpCiB7Ci0gICAgTE9HKFByb2dyZXNzLCAiRmluYWwgcHJvZ3Jl
c3MgY29tcGxldGUgKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKFByb2dyZXNzLCAiRmluYWwg
cHJvZ3Jlc3MgY29tcGxldGUgKCVwKSIsIHRoaXMpOwogICAgIAogICAgIFJlZlB0cjxGcmFtZT4g
ZnJhbWUgPSBtX29yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5yZWxlYXNlKCk7CiAgICAgCkBAIC0x
NTksNyArMTU5LDcgQEAgdm9pZCBQcm9ncmVzc1RyYWNrZXI6OmZpbmFsUHJvZ3Jlc3NDb21wbGV0
ZSgpCiAKIHZvaWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAg
IExPRyhQcm9ncmVzcywgIlByb2dyZXNzIGluY3JlbWVudGVkICglcCkgLSB2YWx1ZSAlZiwgdHJh
Y2tlZCBmcmFtZXMgJWQsIG9yaWdpbmF0aW5nIGZyYW1lICVwIiwgdGhpcywgbV9wcm9ncmVzc1Zh
bHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1lcywgbV9vcmlnaW5hdGluZ1Byb2dyZXNzRnJh
bWUuZ2V0KCkpOworICAgIExPR19JTkZPKFByb2dyZXNzLCAiUHJvZ3Jlc3MgaW5jcmVtZW50ZWQg
KCVwKSAtIHZhbHVlICVmLCB0cmFja2VkIGZyYW1lcyAlZCwgb3JpZ2luYXRpbmcgZnJhbWUgJXAi
LCB0aGlzLCBtX3Byb2dyZXNzVmFsdWUsIG1fbnVtUHJvZ3Jlc3NUcmFja2VkRnJhbWVzLCBtX29y
aWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZS5nZXQoKSk7CiAKICAgICBpZiAobV9udW1Qcm9ncmVzc1Ry
YWNrZWRGcmFtZXMgPD0gMCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjIyLDcgKzIyMiw3IEBAIHZv
aWQgUHJvZ3Jlc3NUcmFja2VyOjppbmNyZW1lbnRQcm9ncmVzcyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqLCBpCiAgICAgZG91YmxlIG5vdyA9IGN1cnJlbnRUaW1lKCk7CiAg
ICAgZG91YmxlIG5vdGlmaWVkUHJvZ3Jlc3NUaW1lRGVsdGEgPSBub3cgLSBtX2xhc3ROb3RpZmll
ZFByb2dyZXNzVGltZTsKICAgICAKLSAgICBMT0coUHJvZ3Jlc3MsICJQcm9ncmVzcyBpbmNyZW1l
bnRlZCAoJXApIC0gdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVzICVkIiwgdGhpcywgbV9wcm9ncmVz
c1ZhbHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1lcyk7CisgICAgTE9HX0lORk8oUHJvZ3Jl
c3MsICJQcm9ncmVzcyBpbmNyZW1lbnRlZCAoJXApIC0gdmFsdWUgJWYsIHRyYWNrZWQgZnJhbWVz
ICVkIiwgdGhpcywgbV9wcm9ncmVzc1ZhbHVlLCBtX251bVByb2dyZXNzVHJhY2tlZEZyYW1lcyk7
CiAgICAgZG91YmxlIG5vdGlmaWNhdGlvblByb2dyZXNzRGVsdGEgPSBtX3Byb2dyZXNzVmFsdWUg
LSBtX2xhc3ROb3RpZmllZFByb2dyZXNzVmFsdWU7CiAgICAgaWYgKChub3RpZmljYXRpb25Qcm9n
cmVzc0RlbHRhID49IG1fcHJvZ3Jlc3NOb3RpZmljYXRpb25JbnRlcnZhbCB8fAogICAgICAgICAg
bm90aWZpZWRQcm9ncmVzc1RpbWVEZWx0YSA+PSBtX3Byb2dyZXNzTm90aWZpY2F0aW9uVGltZUlu
dGVydmFsKSAmJgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAppbmRleCBmMThkOTEzNTJkY2NiYThmMzNmZWM4NmYzMDQ5NzgyNDVjNjk0YWU5Li4z
MTZiMTQ5NTk5ZTNkYWFhOGE0NDMwNjdlZDNkNjU1N2ZiZjE2MjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMTQ1LDcgKzE0NSw3
IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXIqIHJlc291cmNlTG9hZGVyLCBSZXNvdXJjCiAgICAgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQ
cmlvcml0eUhpZ2hlc3Q7CiAjZW5kaWYKIAotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmxvYWQgcmVzb3VyY2UgJXAgJyVzJyIsIHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBM
T0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWQgcmVz
b3VyY2UgJXAgJyVzJyIsIHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIC8vIElmIHRoZXJlJ3MgYSB3ZWIgYXJjaGl2
ZSByZXNvdXJjZSBmb3IgdGhpcyBVUkwsIHdlIGRvbid0IG5lZWQgdG8gc2NoZWR1bGUgdGhlIGxv
YWQgc2luY2UgaXQgd2lsbCBuZXZlciB0b3VjaCB0aGUgbmV0d29yay4KICAgICBpZiAocmVzb3Vy
Y2VMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFyY2hpdmVSZXNvdXJjZUZvclVSTChyZXNvdXJj
ZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKSkgewpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VM
b2FkZXIqIHJlc291cmNlCiAKIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRp
bmdSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCiB7Ci0gICAg
TE9HKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5n
UmVxdWVzdHMuIG1fc3VzcGVuZFBlbmRpbmdSZXF1ZXN0c0NvdW50PSVkIiwgbV9zdXNwZW5kUGVu
ZGluZ1JlcXVlc3RzQ291bnQpOyAKKyAgICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzLiBtX3N1c3BlbmRQZW5kaW5n
UmVxdWVzdHNDb3VudD0lZCIsIG1fc3VzcGVuZFBlbmRpbmdSZXF1ZXN0c0NvdW50KTsgCiAgICAg
aWYgKGlzU3VzcGVuZGluZ1BlbmRpbmdSZXF1ZXN0cygpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTIyNiw3ICsyMjYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5n
UmVxdWVzdHMoUmVzb3VyY2VMb2FkUHJpb3JpdHkgbWluaW11bVByaQogCiB2b2lkIFJlc291cmNl
TG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoSG9zdEluZm9ybWF0aW9uKiBob3N0
LCBSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCiB7Ci0gICAgTE9HKFJlc291
cmNlTG9hZGluZywgIlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMg
SG9zdEluZm9ybWF0aW9uLm1fbmFtZT0nJXMnIiwgaG9zdC0+bmFtZSgpLmxhdGluMSgpLmRhdGEo
KSk7CisgICAgTE9HX0lORk8oUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2VMb2FkU2NoZWR1bGVy
OjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyBIb3N0SW5mb3JtYXRpb24ubV9uYW1lPSclcyciLCBob3N0
LT5uYW1lKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIGZvciAoaW50IHByaW9yaXR5ID0gUmVz
b3VyY2VMb2FkUHJpb3JpdHlIaWdoZXN0OyBwcmlvcml0eSA+PSBtaW5pbXVtUHJpb3JpdHk7IC0t
cHJpb3JpdHkpIHsKICAgICAgICAgSG9zdEluZm9ybWF0aW9uOjpSZXF1ZXN0UXVldWUmIHJlcXVl
c3RzUGVuZGluZyA9IGhvc3QtPnJlcXVlc3RzUGVuZGluZyhSZXNvdXJjZUxvYWRQcmlvcml0eShw
cmlvcml0eSkpOwpAQCAtMjY2LDE0ICsyNjYsMTQgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OnJlc3VtZVBlbmRpbmdSZXF1ZXN0cygpCiAgICAgCiB2b2lkIFJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpCiB7Ci0gICAgTE9HKFJlc291cmNl
TG9hZGluZywgIlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1
ZXN0cywgbV9yZXF1ZXN0VGltZXIuaXNBY3RpdmUoKT0ldSIsIG1fcmVxdWVzdFRpbWVyLmlzQWN0
aXZlKCkpOworICAgIExPR19JTkZPKFJlc291cmNlTG9hZGluZywgIlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVTZXJ2ZVBlbmRpbmdSZXF1ZXN0cywgbV9yZXF1ZXN0VGltZXIuaXNBY3Rp
dmUoKT0ldSIsIG1fcmVxdWVzdFRpbWVyLmlzQWN0aXZlKCkpOwogICAgIGlmICghbV9yZXF1ZXN0
VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9yZXF1ZXN0VGltZXIuc3RhcnRPbmVTaG90KDAp
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVxdWVzdFRpbWVyRmlyZWQoVGlt
ZXI8UmVzb3VyY2VMb2FkU2NoZWR1bGVyPiopIAogewotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcs
ICJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlcXVlc3RUaW1lckZpcmVkXG4iKTsKKyAgICBMT0df
SU5GTyhSZXNvdXJjZUxvYWRpbmcsICJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlcXVlc3RUaW1l
ckZpcmVkXG4iKTsKICAgICBzZXJ2ZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvbjo6c2No
ZWR1bGUoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG8KICAgICAKIHZvaWQgUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpb246OmFkZExvYWRJblByb2dyZXNzKFJlc291cmNlTG9h
ZGVyKiByZXNvdXJjZUxvYWRlcikKIHsKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiSG9zdElu
Zm9ybWF0aW9uICclcycgbG9hZGluZyAnJXMnLiBDdXJyZW50IGNvdW50ICVkIiwgbV9uYW1lLmxh
dGluMSgpLmRhdGEoKSwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSwgbV9yZXF1ZXN0c0xvYWRpbmcuc2l6ZSgpKTsKKyAgICBMT0dfSU5GTyhSZXNvdXJjZUxv
YWRpbmcsICJIb3N0SW5mb3JtYXRpb24gJyVzJyBsb2FkaW5nICclcycuIEN1cnJlbnQgY291bnQg
JWQiLCBtX25hbWUubGF0aW4xKCkuZGF0YSgpLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpLCBtX3JlcXVlc3RzTG9hZGluZy5zaXplKCkpOwogICAgIG1fcmVx
dWVzdHNMb2FkaW5nLmFkZChyZXNvdXJjZUxvYWRlcik7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBlNjdmMTAyN2E5NjFhNGNhNjIy
YmUwYzQ5YWY5MmE5ODMxMzU2NjhkLi4xNDY1MzI2YzFjNjJkYTA2ODExNmM2YjFmMGNjMjI2Njk4
MDhjNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIEFTU0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUo
KSk7CiAgICAgQVNTRVJUKCFtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxpZGF0ZSgpKTsKICAg
ICBBU1NFUlQoIW1fcmVzb3VyY2UtPmVycm9yT2NjdXJyZWQoKSk7Ci0gICAgTE9HKFJlc291cmNl
TG9hZGluZywgIlJlY2VpdmVkICclcycuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJSZWNlaXZlZCAn
JXMnLiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAKICAg
ICBSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3RSZXNvdXJjZShtX3Jlc291cmNlKTsK
QEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKCFyZWFj
aGVkVGVybWluYWxTdGF0ZSgpKTsKICAgICBBU1NFUlQoIW1fcmVzb3VyY2UtPnJlc291cmNlVG9S
ZXZhbGlkYXRlKCkpOwotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJGYWlsZWQgdG8gbG9hZCAn
JXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAg
ICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJGYWlsZWQgdG8gbG9hZCAnJXMnLlxuIiwgbV9y
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIFJlZlB0cjxT
dWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gcHJvdGVjdFJlc291cmNlKG1fcmVzb3VyY2UpOwpAQCAtMzAwLDcg
KzMwMCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpCiAgICAgICAg
IHJldHVybjsKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwotICAgIExPRyhS
ZXNvdXJjZUxvYWRpbmcsICJDYW5jZWxsZWQgbG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhSZXNvdXJjZUxv
YWRpbmcsICJDYW5jZWxsZWQgbG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCh0aGlzKTsKICAgICBtX3N0YXRlID0gRmluaXNoaW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAppbmRleCA3ZTE0YjQzMzQ5Yzg1MGExOTViNjZjMjU5
MDYxMzZkOGI4MGY2ZjQwLi5lYTRlNTAwYjQ2MzIyZDU2NWI1NjhiODM2NWQzOTBlNmE1ZmUwZWNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcApAQCAtMTg5LDcg
KzE4OSw3IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpuZXdDdWVzUGFyc2VkKCkKIAogdm9pZCBU
ZXh0VHJhY2tMb2FkZXI6OmZpbGVGYWlsZWRUb1BhcnNlKCkKIHsKLSAgICBMT0coTWVkaWEsICJU
ZXh0VHJhY2tMb2FkZXI6OmZpbGVGYWlsZWRUb1BhcnNlIik7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJUZXh0VHJhY2tMb2FkZXI6OmZpbGVGYWlsZWRUb1BhcnNlIik7CiAKICAgICBtX3N0YXRlID0g
RmFpbGVkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xl
Z2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4IGQ3N2Y4NzRiMDlkYzIwMDliYmVkMDM1MjQxODM1YmZl
ODZmODhlM2EuLjZkNmQ3YmM4MDA5OTBmMzkxNzJhNmUzYWY0Njg2ZTdlOTZjMTcwNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCkBAIC05NCw3ICs5NCw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgaWYg
KFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCku
Y3JlYXRlQ0ZTdHJpbmcoKSkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VVUkxLZXksIGNmVVJMLmdldCgpKTsK
ICAgICBlbHNlIHsKLSAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5V
TEwgcmVzb3VyY2UgVVJMIGlzIGludmFsaWQgLSByZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0
Iik7CisgICAgICAgIExPR19JTkZPKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5VTEwg
cmVzb3VyY2UgVVJMIGlzIGludmFsaWQgLSByZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0Iik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTM5LDcgKzEzOSw3IEBAIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJl
cHJlc2VudGF0aW9uKEFyCiAgICAgICAgIGlmIChzdWJyZXNvdXJjZSkKICAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShzdWJyZXNvdXJjZXNBcnJheS5nZXQoKSwgc3VicmVzb3VyY2UuZ2V0
KCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gRmFpbGVkIHRvIGNyZWF0ZSBwcm9wZXJ0eSBsaXN0IGZvciBzdWJyZXNvdXJjZSIp
OworICAgICAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gRmFp
bGVkIHRvIGNyZWF0ZSBwcm9wZXJ0eSBsaXN0IGZvciBzdWJyZXNvdXJjZSIpOwogICAgIH0KICAg
ICBpZiAoQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNlc0FycmF5LmdldCgpKSkKICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZl
U3VicmVzb3VyY2VzS2V5LCBzdWJyZXNvdXJjZXNBcnJheS5nZXQoKSk7CkBAIC0xNTEsNyArMTUx
LDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
UHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICAgICAgaWYgKHN1YmZyYW1lQXJjaGl2
ZSkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShzdWJmcmFtZXNBcnJheS5nZXQoKSwg
c3ViZnJhbWVBcmNoaXZlLmdldCgpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEZhaWxlZCB0byBjcmVhdGUgcHJvcGVydHkgbGlz
dCBmb3Igc3ViZnJhbWUgYXJjaGl2ZSIpOworICAgICAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMs
ICJMZWdhY3lXZWJBcmNoaXZlIC0gRmFpbGVkIHRvIGNyZWF0ZSBwcm9wZXJ0eSBsaXN0IGZvciBz
dWJmcmFtZSBhcmNoaXZlIik7CiAgICAgfQogICAgIGlmIChDRkFycmF5R2V0Q291bnQoc3ViZnJh
bWVzQXJyYXkuZ2V0KCkpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVTdWJmcmFtZUFyY2hpdmVzS2V5LCBzdWJmcmFtZXNB
cnJheS5nZXQoKSk7CkBAIC0xODMsMzEgKzE4MywzMSBAQCBQYXNzUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUmVzb3VyY2UoQ0ZEaWN0aW9uYXJ5UmVmIGRp
YwogICAgICAgICAKICAgICBDRkRhdGFSZWYgcmVzb3VyY2VEYXRhID0gc3RhdGljX2Nhc3Q8Q0ZE
YXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VEYXRhS2V5KSk7CiAgICAgaWYgKHJlc291cmNlRGF0YSAmJiBDRkdldFR5cGVJRChy
ZXNvdXJjZURhdGEpICE9IENGRGF0YUdldFR5cGVJRCgpKSB7Ci0gICAgICAgIExPRyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0
YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CisgICAgICAgIExPR19JTkZPKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIGRhdGEgaXMgbm90IG9mIHR5cGUg
Q0ZEYXRhLCBjYW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogICAgIAogICAgIENGU3RyaW5nUmVmIGZyYW1lTmFtZSA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShkaWN0aW9uYXJ5LCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VGcmFtZU5hbWVLZXkpKTsKICAgICBpZiAoZnJhbWVOYW1lICYmIENGR2V0
VHlwZUlEKGZyYW1lTmFtZSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewotICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gRnJhbWUgbmFtZSBpcyBub3Qgb2YgdHlwZSBD
RlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CisgICAgICAgIExPR19J
TkZPKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEZyYW1lIG5hbWUgaXMgbm90IG9mIHR5
cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxpZCByZXNvdXJjZSIpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAgICAgCiAgICAgQ0ZTdHJpbmdSZWYgbWltZVR5cGUgPSBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXkpKTsKICAgICBpZiAobWltZVR5cGUgJiYgQ0ZH
ZXRUeXBlSUQobWltZVR5cGUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgTE9H
KEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE1JTUUgdHlwZSBpcyBub3Qgb2YgdHlwZSBD
RlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CisgICAgICAgIExPR19J
TkZPKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE1JTUUgdHlwZSBpcyBub3Qgb2YgdHlw
ZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICAKICAgICBDRlN0cmluZ1JlZiB1cmwgPSBzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlVVJMS2V5KSk7CiAgICAgaWYgKHVybCAmJiBDRkdldFR5cGVJRCh1cmwpICE9
IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2Vi
QXJjaGl2ZSAtIFVSTCBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZh
bGlkIHJlc291cmNlIik7CisgICAgICAgIExPR19JTkZPKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIFVSTCBpcyBub3Qgb2YgdHlwZSBDRlN0cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlk
IHJlc291cmNlIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKICAgICBDRlN0cmlu
Z1JlZiB0ZXh0RW5jb2RpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5n
TmFtZUtleSkpOwogICAgIGlmICh0ZXh0RW5jb2RpbmcgJiYgQ0ZHZXRUeXBlSUQodGV4dEVuY29k
aW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgIExPRyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBUZXh0IGVuY29kaW5nIGlzIG5vdCBvZiB0eXBlIENGU3RyaW5nLCBj
YW5ub3QgY3JlYXRlIGludmFsaWQgcmVzb3VyY2UiKTsKKyAgICAgICAgTE9HX0lORk8oQXJjaGl2
ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gVGV4dCBlbmNvZGluZyBpcyBub3Qgb2YgdHlwZSBDRlN0
cmluZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIApAQCAtMjE2LDEzICsyMTYsMTMgQEAgUGFzc1JlZlB0cjxBcmNoaXZlUmVzb3Vy
Y2U+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVJlc291cmNlKENGRGljdGlvbmFyeVJlZiBkaWMK
ICAgICBDRkRhdGFSZWYgcmVzb3VyY2VSZXNwb25zZURhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFS
ZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZVJlc3BvbnNlS2V5KSk7CiAgICAgaWYgKHJlc291cmNlUmVzcG9uc2VEYXRhKSB7CiAgICAg
ICAgIGlmIChDRkdldFR5cGVJRChyZXNvdXJjZVJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlw
ZUlEKCkpIHsKLSAgICAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBS
ZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENGRGF0YSwgY2Fubm90IGNyZWF0
ZSBpbnZhbGlkIHJlc291cmNlIik7CisgICAgICAgICAgICBMT0dfSU5GTyhBcmNoaXZlcywgIkxl
Z2FjeVdlYkFyY2hpdmUgLSBSZXNvdXJjZSByZXNwb25zZSBkYXRhIGlzIG5vdCBvZiB0eXBlIENG
RGF0YSwgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgQ0ZTdHJpbmdSZWYgcmVzb3VyY2VS
ZXNwb25zZVZlcnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlUmVzcG9uc2VWZXJzaW9u
S2V5KSk7CiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbiAmJiBDRkdldFR5cGVJ
RChyZXNvdXJjZVJlc3BvbnNlVmVyc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewotICAg
ICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFJlc291cmNlIHJlc3Bv
bnNlIHZlcnNpb24gaXMgbm90IG9mIHR5cGUgQ0ZTdHJpbmcsIGNhbm5vdCBjcmVhdGUgaW52YWxp
ZCByZXNvdXJjZSIpOworICAgICAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdhY3lXZWJB
cmNoaXZlIC0gUmVzb3VyY2UgcmVzcG9uc2UgdmVyc2lvbiBpcyBub3Qgb2YgdHlwZSBDRlN0cmlu
ZywgY2Fubm90IGNyZWF0ZSBpbnZhbGlkIHJlc291cmNlIik7CiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI2Miw3ICsyNjIsNyBAQCBQYXNzUmVmUHRyPExl
Z2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShTaGFyZWRCdWZmZXIqIGRh
dGEpCiAKIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3Jl
YXRlKGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIqIGRhdGEpCiB7Ci0gICAgTE9HKEFyY2hpdmVz
LCAiTGVnYWN5V2ViQXJjaGl2ZSAtIENyZWF0aW5nIGZyb20gcmF3IGRhdGEiKTsKKyAgICBMT0df
SU5GTyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBDcmVhdGluZyBmcm9tIHJhdyBkYXRh
Iik7CiAgICAgCiAgICAgUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IGFyY2hpdmUgPSBjcmVhdGUo
KTsKICAgICAgICAgCkBAIC0yODAsNyArMjgwLDcgQEAgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNo
aXZlPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGUoY29uc3QgS1VSTCYsIFNoYXJlZEJ1ZmZlcioK
ICAgICBpZiAoIXBsaXN0KSB7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBjb25zdCBjaGFyKiBj
RXJyb3IgPSBlcnJvclN0cmluZyA/IENGU3RyaW5nR2V0Q1N0cmluZ1B0cihlcnJvclN0cmluZywg
a0NGU3RyaW5nRW5jb2RpbmdVVEY4KSA6ICJ1bmtub3duIGVycm9yIjsKLSAgICAgICAgTE9HKEFy
Y2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEVycm9yIHBhcnNpbmcgUHJvcGVydHlMaXN0IGZy
b20gYXJjaGl2ZSBkYXRhIC0gJXMiLCBjRXJyb3IpOworICAgICAgICBMT0dfSU5GTyhBcmNoaXZl
cywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBFcnJvciBwYXJzaW5nIFByb3BlcnR5TGlzdCBmcm9tIGFy
Y2hpdmUgZGF0YSAtICVzIiwgY0Vycm9yKTsKICNlbmRpZgogICAgICAgICBpZiAoZXJyb3JTdHJp
bmcpCiAgICAgICAgICAgICBDRlJlbGVhc2UoZXJyb3JTdHJpbmcpOwpAQCAtMjg4LDcgKzI4OCw3
IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
KGNvbnN0IEtVUkwmLCBTaGFyZWRCdWZmZXIqCiAgICAgfQogICAgIAogICAgIGlmIChDRkdldFR5
cGVJRChwbGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKLSAgICAgICAg
TE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFyY2hpdmUgcHJvcGVydHkgbGlzdCBp
cyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNo
aXZlIik7CisgICAgICAgIExPR19JTkZPKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIEFy
Y2hpdmUgcHJvcGVydHkgbGlzdCBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJv
cnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAg
ICAKQEAgLTMwMiwzNCArMzAyLDM0IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChD
RkRpY3Rpb25hcnlSZWYgZGljdGlvbmFyeSkKIHsKICAgICBBU1NFUlQoZGljdGlvbmFyeSk7CiAg
ICAgaWYgKCFkaWN0aW9uYXJ5KSB7Ci0gICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBOdWxsIHJvb3QgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKKyAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTnVs
bCByb290IENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1haW5S
ZXNvdXJjZURpY3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGRpY3Rpb25hcnksIExlZ2FjeVdlYkFyY2hpdmVNYWluUmVzb3VyY2VLZXkpKTsKICAg
ICBpZiAoIW1haW5SZXNvdXJjZURpY3QpIHsKLSAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CisgICAgICAgIExPR19JTkZPKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJj
aGl2ZSAtIE5vIG1haW4gcmVzb3VyY2UgaW4gYXJjaGl2ZSwgYWJvcnRpbmcgaW52YWxpZCBXZWJB
cmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKENGR2V0VHlw
ZUlEKG1haW5SZXNvdXJjZURpY3QpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKSB7Ci0gICAg
ICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBNYWluIHJlc291cmNlIGlzIG5v
dCB0aGUgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKKyAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTWFpbiBy
ZXNvdXJjZSBpcyBub3QgdGhlIGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxp
ZCBXZWJBcmNoaXZlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAg
c2V0TWFpblJlc291cmNlKGNyZWF0ZVJlc291cmNlKG1haW5SZXNvdXJjZURpY3QpKTsKICAgICBp
ZiAoIW1haW5SZXNvdXJjZSgpKSB7Ci0gICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBGYWlsZWQgdG8gcGFyc2UgbWFpbiByZXNvdXJjZSBmcm9tIENGRGljdGlvbmFyeSBv
ciBtYWluIHJlc291cmNlIGRvZXMgbm90IGV4aXN0LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hp
dmUiKTsKKyAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gRmFp
bGVkIHRvIHBhcnNlIG1haW4gcmVzb3VyY2UgZnJvbSBDRkRpY3Rpb25hcnkgb3IgbWFpbiByZXNv
dXJjZSBkb2VzIG5vdCBleGlzdCwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKG1haW5SZXNvdXJjZSgpLT5t
aW1lVHlwZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBNYWluIHJlc291cmNlIE1JTUUgdHlwZSBpcyByZXF1aXJlZCwgYnV0IHdhcyBudWxs
LiIpOworICAgICAgICBMT0dfSU5GTyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBNYWlu
IHJlc291cmNlIE1JTUUgdHlwZSBpcyByZXF1aXJlZCwgYnV0IHdhcyBudWxsLiIpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIENGQXJyYXlSZWYgc3VicmVzb3VyY2VB
cnJheSA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGRpY3Rp
b25hcnksIExlZ2FjeVdlYkFyY2hpdmVTdWJyZXNvdXJjZXNLZXkpKTsKICAgICBpZiAoc3VicmVz
b3VyY2VBcnJheSAmJiBDRkdldFR5cGVJRChzdWJyZXNvdXJjZUFycmF5KSAhPSBDRkFycmF5R2V0
VHlwZUlEKCkpIHsKLSAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1
YnJlc291cmNlcyBpcyBub3QgdGhlIGV4cGVjdGVkIEFycmF5LCBhYm9ydGluZyBpbnZhbGlkIFdl
YkFyY2hpdmUiKTsKKyAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZl
IC0gU3VicmVzb3VyY2VzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgQXJyYXksIGFib3J0aW5nIGludmFs
aWQgV2ViQXJjaGl2ZSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAt
MzM4LDcgKzMzOCw3IEBAIGJvb2wgTGVnYWN5V2ViQXJjaGl2ZTo6ZXh0cmFjdChDRkRpY3Rpb25h
cnlSZWYgZGljdGlvbmFyeSkKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHN1YnJlc291cmNlRGljdCA9IHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdWJyZXNv
dXJjZUFycmF5LCBpKSk7CiAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoc3VicmVzb3VyY2VE
aWN0KSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgICAgIExPRyhB
cmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBpcyBub3QgZXhwZWN0ZWQg
Q0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKKyAgICAgICAgICAg
ICAgICBMT0dfSU5GTyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBTdWJyZXNvdXJjZSBp
cyBub3QgZXhwZWN0ZWQgQ0ZEaWN0aW9uYXJ5LCBhYm9ydGluZyBpbnZhbGlkIFdlYkFyY2hpdmUi
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKQEAgLTM0OSw3ICszNDksNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgCiAgICAgQ0ZBcnJheVJlZiBzdWJmcmFt
ZUFycmF5ID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGlj
dGlvbmFyeSwgTGVnYWN5V2ViQXJjaGl2ZVN1YmZyYW1lQXJjaGl2ZXNLZXkpKTsKICAgICBpZiAo
c3ViZnJhbWVBcnJheSAmJiBDRkdldFR5cGVJRChzdWJmcmFtZUFycmF5KSAhPSBDRkFycmF5R2V0
VHlwZUlEKCkpIHsKLSAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIFN1
YmZyYW1lIGFyY2hpdmVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgQXJyYXksIGFib3J0aW5nIGludmFs
aWQgV2ViQXJjaGl2ZSIpOworICAgICAgICBMT0dfSU5GTyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFy
Y2hpdmUgLSBTdWJmcmFtZSBhcmNoaXZlcyBpcyBub3QgdGhlIGV4cGVjdGVkIEFycmF5LCBhYm9y
dGluZyBpbnZhbGlkIFdlYkFyY2hpdmUiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAKQEAgLTM1OCw3ICszNTgsNyBAQCBib29sIExlZ2FjeVdlYkFyY2hpdmU6OmV4dHJhY3Qo
Q0ZEaWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnkpCiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVJlZiBzdWJmcmFtZURp
Y3QgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
c3ViZnJhbWVBcnJheSwgaSkpOwogICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHN1YmZyYW1l
RGljdCkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgICAgICBMT0co
QXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUgYXJyYXkgaXMgbm90IGV4cGVj
dGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJBcmNoaXZlIik7CisgICAgICAg
ICAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gU3ViZnJhbWUg
YXJyYXkgaXMgbm90IGV4cGVjdGVkIENGRGljdGlvbmFyeSwgYWJvcnRpbmcgaW52YWxpZCBXZWJB
cmNoaXZlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0zNjYsNyArMzY2LDcgQEAgYm9vbCBMZWdhY3lXZWJBcmNoaXZlOjpl
eHRyYWN0KENGRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5KQogICAgICAgICAgICAgaWYgKHN1YmZy
YW1lQXJjaGl2ZS0+ZXh0cmFjdChzdWJmcmFtZURpY3QpKQogICAgICAgICAgICAgICAgIGFkZFN1
YmZyYW1lQXJjaGl2ZShzdWJmcmFtZUFyY2hpdmUucmVsZWFzZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gSW52
YWxpZCBzdWJmcmFtZSBhcmNoaXZlIHNraXBwZWQiKTsKKyAgICAgICAgICAgICAgICBMT0dfSU5G
TyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBJbnZhbGlkIHN1YmZyYW1lIGFyY2hpdmUg
c2tpcHBlZCIpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMzgzLDcgKzM4Myw3IEBAIFJl
dGFpblB0cjxDRkRhdGFSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OnJhd0RhdGFSZXByZXNlbnRhdGlv
bigpCiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcHJvcGVydHlMaXN0ID0gY3JlYXRl
UHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24odGhpcyk7CiAgICAgQVNTRVJUKHByb3BlcnR5TGlz
dCk7CiAgICAgaWYgKCFwcm9wZXJ0eUxpc3QpIHsKLSAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIEZhaWxlZCB0byBjcmVhdGUgcHJvcGVydHkgbGlzdCBmb3IgYXJjaGl2
ZSwgcmV0dXJuaW5nIG5vIGRhdGEiKTsKKyAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gRmFpbGVkIHRvIGNyZWF0ZSBwcm9wZXJ0eSBsaXN0IGZvciBhcmNoaXZl
LCByZXR1cm5pbmcgbm8gZGF0YSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTM5
OCw3ICszOTgsNyBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpyYXdE
YXRhUmVwcmVzZW50YXRpb24oKQogICAgIENGV3JpdGVTdHJlYW1DbG9zZShzdHJlYW0uZ2V0KCkp
OwogCiAgICAgaWYgKCFwbGlzdERhdGEpIHsKLSAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5
V2ViQXJjaGl2ZSAtIEZhaWxlZCB0byBjb252ZXJ0IHByb3BlcnR5IGxpc3QgaW50byByYXcgZGF0
YSwgcmV0dXJuaW5nIG5vIGRhdGEiKTsKKyAgICAgICAgTE9HX0lORk8oQXJjaGl2ZXMsICJMZWdh
Y3lXZWJBcmNoaXZlIC0gRmFpbGVkIHRvIGNvbnZlcnQgcHJvcGVydHkgbGlzdCBpbnRvIHJhdyBk
YXRhLCByZXR1cm5pbmcgbm8gZGF0YSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IDEw
OWI3NmJjYzZkZDBjYmZjOWYzMmU1ZjE4OTA3MDQwYTU1MWVlNDkuLjQzMTdmNWMzNWU3Yzk4MTM4
YTlkZDA4ZWFlMjFkM2QwZTFkYzk2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIENhY2hlZFJlc291cmNl
Ojp+Q2FjaGVkUmVzb3VyY2UoKQogdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmFpbEJlZm9yZVN0YXJ0
aW5nKCkKIHsKICAgICAvLyBGSVhNRTogV2hhdCBpZiByZXNvdXJjZXMgaW4gb3RoZXIgZnJhbWVz
IHdlcmUgd2FpdGluZyBmb3IgdGhpcyByZXZhbGlkYXRpb24/Ci0gICAgTE9HKFJlc291cmNlTG9h
ZGluZywgIkNhbm5vdCBzdGFydCBsb2FkaW5nICclcyciLCB1cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCkpOworICAgIExPR19JTkZPKFJlc291cmNlTG9hZGluZywgIkNhbm5vdCBzdGFydCBs
b2FkaW5nICclcyciLCB1cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIGlmICht
X3Jlc291cmNlVG9SZXZhbGlkYXRlKSAKICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+cmV2YWxpZGF0
aW9uRmFpbGVkKHRoaXMpOyAKICAgICBlcnJvcihDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yKTsK
QEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXRSZXNvdXJjZVRvUmV2
YWxpZGF0ZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgQVNTRVJUKG1faGFuZGxlc1Rv
UmV2YWxpZGF0ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChyZXNvdXJjZS0+dHlwZSgpID09IHR5
cGUoKSk7CiAKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2UgJXAgc2V0
UmVzb3VyY2VUb1JldmFsaWRhdGUgJXAiLCB0aGlzLCByZXNvdXJjZSk7CisgICAgTE9HX0lORk8o
UmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2UgJXAgc2V0UmVzb3VyY2VUb1JldmFsaWRh
dGUgJXAiLCB0aGlzLCByZXNvdXJjZSk7CiAKICAgICAvLyBUaGUgZm9sbG93aW5nIGFzc2VydCBz
aG91bGQgYmUgaW52ZXN0aWdhdGVkIHdoZW5ldmVyIGl0IG9jY3Vycy4gQWx0aG91Z2ggaXQgc2hv
dWxkIG5ldmVyIGZpcmUsIGl0IGN1cnJlbnRseSBkb2VzIGluIHJhcmUgY2lyY3Vtc3RhbmNlcy4K
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg2MDQuCkBA
IC02NjYsNyArNjY2LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c3dpdGNoQ2xpZW50c1RvUmV2
YWxpZGF0ZWRSZXNvdXJjZSgpCiAgICAgQVNTRVJUKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUtPmlu
Q2FjaGUoKSk7CiAgICAgQVNTRVJUKCFpbkNhY2hlKCkpOwogCi0gICAgTE9HKFJlc291cmNlTG9h
ZGluZywgIkNhY2hlZFJlc291cmNlICVwIHN3aXRjaENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3Vy
Y2UgJXAiLCB0aGlzLCBtX3Jlc291cmNlVG9SZXZhbGlkYXRlKTsKKyAgICBMT0dfSU5GTyhSZXNv
dXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZSAlcCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRl
ZFJlc291cmNlICVwIiwgdGhpcywgbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSk7CiAKICAgICBtX3N3
aXRjaGluZ0NsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UgPSB0cnVlOwogICAgIEhhc2hTZXQ8
Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlKj46Oml0ZXJhdG9yIGVuZCA9IG1faGFuZGxlc1RvUmV2
YWxpZGF0ZS5lbmQoKTsKQEAgLTc2MCwxMyArNzYwLDEzIEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6
Om11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhlYWRlcnMoQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3kp
IGNvCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fcmVzcG9uc2UuY2FjaGVDb250
cm9sQ29udGFpbnNOb0NhY2hlKCkgfHwgbV9yZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05v
U3RvcmUoKSkgewotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2Ug
JXAgbXVzdFJldmFsaWRhdGUgYmVjYXVzZSBvZiBtX3Jlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRh
aW5zTm9DYWNoZSgpIHx8IG1fcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKClc
biIsIHRoaXMpOworICAgICAgICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNv
dXJjZSAlcCBtdXN0UmV2YWxpZGF0ZSBiZWNhdXNlIG9mIG1fcmVzcG9uc2UuY2FjaGVDb250cm9s
Q29udGFpbnNOb0NhY2hlKCkgfHwgbV9yZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vU3Rv
cmUoKVxuIiwgdGhpcyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChj
YWNoZVBvbGljeSA9PSBDYWNoZVBvbGljeUNhY2hlKSB7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNl
LmNhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSAmJiBpc0V4cGlyZWQoKSkgewot
ICAgICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlICVwIG11c3RS
ZXZhbGlkYXRlIGJlY2F1c2Ugb2YgY2FjaGVQb2xpY3kgPT0gQ2FjaGVQb2xpY3lDYWNoZSBhbmQg
bV9yZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlKCkgJiYgaXNFeHBp
cmVkKClcbiIsIHRoaXMpOworICAgICAgICAgICAgTE9HX0lORk8oUmVzb3VyY2VMb2FkaW5nLCAi
Q2FjaGVkUmVzb3VyY2UgJXAgbXVzdFJldmFsaWRhdGUgYmVjYXVzZSBvZiBjYWNoZVBvbGljeSA9
PSBDYWNoZVBvbGljeUNhY2hlIGFuZCBtX3Jlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTXVz
dFJldmFsaWRhdGUoKSAmJiBpc0V4cGlyZWQoKVxuIiwgdGhpcyk7CiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC03NzQsNyArNzc0
LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6bXVzdFJldmFsaWRhdGVEdWVUb0NhY2hlSGVhZGVy
cyhDYWNoZVBvbGljeSBjYWNoZVBvbGljeSkgY28KIAogICAgIC8vIENhY2hlUG9saWN5VmVyaWZ5
CiAgICAgaWYgKGlzRXhwaXJlZCgpKSB7Ci0gICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJD
YWNoZWRSZXNvdXJjZSAlcCBtdXN0UmV2YWxpZGF0ZSBiZWNhdXNlIG9mIGlzRXhwaXJlZCgpXG4i
LCB0aGlzKTsKKyAgICAgICAgTE9HX0lORk8oUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2UgJXAgbXVzdFJldmFsaWRhdGUgYmVjYXVzZSBvZiBpc0V4cGlyZWQoKVxuIiwgdGhpcyk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZDRjYmEwNTkxMzE5MDBl
MTkwY2NmNThlNmZlMGQxNmQ4ZDA3NTU1Ni4uN2UxZjY4MWZkMWVkMGYwYzNjMTU1YjAyN2RlZDli
M2JjMzhlYzMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBL
VVJMJiB1cmwKICAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKICAgICAg
ICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUoKSwgdXJsLnN0
cmluZygpKTsKLSAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdp
bjo6Y2FuRGlzcGxheSIpOworICAgICAgICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlIFVSTCB3YXMgbm90IGFsbG93ZWQgYnkg
U2VjdXJpdHlPcmlnaW46OmNhbkRpc3BsYXkiKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CkBAIC00MTIsNyArNDEyLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKIHsKICAgICBLVVJM
IHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAgICAgCi0gICAgTE9HKFJl
c291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgJyVz
JywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgZm9yUHJlbG9hZD0ldSIsIHVybC5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3QuY2hhcnNldCgpLmxhdGluMSgpLmRhdGEoKSwgcmVx
dWVzdC5wcmlvcml0eSgpLCByZXF1ZXN0LmZvclByZWxvYWQoKSk7CisgICAgTE9HX0lORk8oUmVz
b3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSAnJXMn
LCBjaGFyc2V0ICclcycsIHByaW9yaXR5PSVkLCBmb3JQcmVsb2FkPSV1IiwgdXJsLnN0cmluZygp
LmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5jaGFyc2V0KCkubGF0aW4xKCkuZGF0YSgpLCByZXF1
ZXN0LnByaW9yaXR5KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpKTsKICAgICAKICAgICAvLyBJZiBv
bmx5IHRoZSBmcmFnbWVudCBpZGVudGlmaWVycyBkaWZmZXIsIGl0IGlzIHRoZSBzYW1lIHJlc291
cmNlLgogICAgIHVybCA9IE1lbW9yeUNhY2hlOjpyZW1vdmVGcmFnbWVudElkZW50aWZpZXJJZk5l
ZWRlZCh1cmwpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKENhCiAg
ICAgU3RyaW5nIHVybCA9IHJlc291cmNlLT51cmwoKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gbmV3UmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZShyZXNvdXJjZS0+
dHlwZSgpLCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJlc291cmNlLT5lbmNvZGluZygp
KTsKICAgICAKLSAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVzb3VyY2UgJXAgY3JlYXRlZCB0
byByZXZhbGlkYXRlICVwIiwgbmV3UmVzb3VyY2UuZ2V0KCksIHJlc291cmNlKTsKKyAgICBMT0df
SU5GTyhSZXNvdXJjZUxvYWRpbmcsICJSZXNvdXJjZSAlcCBjcmVhdGVkIHRvIHJldmFsaWRhdGUg
JXAiLCBuZXdSZXNvdXJjZS5nZXQoKSwgcmVzb3VyY2UpOwogICAgIG5ld1Jlc291cmNlLT5zZXRS
ZXNvdXJjZVRvUmV2YWxpZGF0ZShyZXNvdXJjZSk7CiAgICAgCiAgICAgbWVtb3J5Q2FjaGUoKS0+
cmVtb3ZlKHJlc291cmNlKTsKQEAgLTUwMSw3ICs1MDEsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNo
ZWRSZQogewogICAgIEFTU0VSVCghbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JVUkwocmVxdWVz
dC51cmwoKSkpOwogICAgIAotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJMb2FkaW5nIENhY2hl
ZFJlc291cmNlIGZvciAnJXMnLiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKKyAgICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJMb2FkaW5nIENhY2hlZFJlc291
cmNlIGZvciAnJXMnLiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsK
ICAgICAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2Ug
PSBjcmVhdGVSZXNvdXJjZSh0eXBlLCByZXF1ZXN0LCBjaGFyc2V0KTsKICAgICAKQEAgLTUyMSw3
ICs1MjEsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYQogCiAgICAgLy8gSWYgdGhlIHNhbWUg
VVJMIGhhcyBiZWVuIGxvYWRlZCBhcyBhIGRpZmZlcmVudCB0eXBlLCB3ZSBuZWVkIHRvIHJlbG9h
ZC4KICAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpICE9IHR5cGUpIHsKLSAgICAgICAg
TE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZh
bGlkYXRpb25Qb2xpY3kgcmVsb2FkaW5nIGR1ZSB0byB0eXBlIG1pc21hdGNoLiIpOworICAgICAg
ICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJt
aW5lUmV2YWxpZGF0aW9uUG9saWN5IHJlbG9hZGluZyBkdWUgdG8gdHlwZSBtaXNtYXRjaC4iKTsK
ICAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAgICB9CiAKQEAgLTU1Niw3ICs1NTYsNyBAQCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVy
OjpkZXRlcm1pbmVSZXZhbGlkYQogCiAgICAgLy8gRG9uJ3QgcmV1c2UgcmVzb3VyY2VzIHdpdGgg
Q2FjaGUtY29udHJvbDogbm8tc3RvcmUuCiAgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2UtPnJlc3Bv
bnNlKCkuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkpIHsKLSAgICAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Q
b2xpY3kgcmVsb2FkaW5nIGR1ZSB0byBDYWNoZS1jb250cm9sOiBuby1zdG9yZS4iKTsKKyAgICAg
ICAgTE9HX0lORk8oUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVy
bWluZVJldmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcgZHVlIHRvIENhY2hlLWNvbnRyb2w6IG5v
LXN0b3JlLiIpOwogICAgICAgICByZXR1cm4gUmVsb2FkOwogICAgIH0KIApAQCAtNTY3LDcgKzU2
Nyw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgLy8gIkFjY2Vzcy1Db250cm9sLUFs
bG93LU9yaWdpbjogKiIgYWxsIHRoZSB0aW1lLCBidXQgc29tZSBvZiB0aGUKICAgICAvLyBjbGll
bnQncyByZXF1ZXN0cyBhcmUgbWFkZSB3aXRob3V0IENPUlMgYW5kIHNvbWUgd2l0aC4KICAgICBp
ZiAoZXhpc3RpbmdSZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCkuYWxsb3dDb29raWVzKCkgIT0g
cmVxdWVzdC5hbGxvd0Nvb2tpZXMoKSkgewotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSByZWxvYWRp
bmcgZHVlIHRvIGRpZmZlcmVuY2UgaW4gY3JlZGVudGlhbHMgc2V0dGluZ3MuIik7CisgICAgICAg
IExPR19JTkZPKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1p
bmVSZXZhbGlkYXRpb25Qb2xpY3kgcmVsb2FkaW5nIGR1ZSB0byBkaWZmZXJlbmNlIGluIGNyZWRl
bnRpYWxzIHNldHRpbmdzLiIpOwogICAgICAgICByZXR1cm4gUmVsb2FkOwogICAgIH0KIApAQCAt
NTc3LDEzICs1NzcsMTMgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGlj
eSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGEKIAogICAgIC8vIENhY2hl
UG9saWN5UmVsb2FkIGFsd2F5cyByZWxvYWRzCiAgICAgaWYgKGNhY2hlUG9saWN5KCkgPT0gQ2Fj
aGVQb2xpY3lSZWxvYWQpIHsKLSAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJl
c291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgcmVsb2FkaW5nIGR1ZSB0
byBDYWNoZVBvbGljeVJlbG9hZC4iKTsKKyAgICAgICAgTE9HX0lORk8oUmVzb3VyY2VMb2FkaW5n
LCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSByZWxv
YWRpbmcgZHVlIHRvIENhY2hlUG9saWN5UmVsb2FkLiIpOwogICAgICAgICByZXR1cm4gUmVsb2Fk
OwogICAgIH0KICAgICAKICAgICAvLyBXZSdsbCB0cnkgdG8gcmVsb2FkIHRoZSByZXNvdXJjZSBp
ZiBpdCBmYWlsZWQgbGFzdCB0aW1lLgogICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT5lcnJvck9j
Y3VycmVkKCkpIHsKLSAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNl
TG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3llIHJlbG9hZGluZyBkdWUgdG8gcmVz
b3VyY2UgYmVpbmcgaW4gdGhlIGVycm9yIHN0YXRlIik7CisgICAgICAgIExPR19JTkZPKFJlc291
cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Q
b2xpY3llIHJlbG9hZGluZyBkdWUgdG8gcmVzb3VyY2UgYmVpbmcgaW4gdGhlIGVycm9yIHN0YXRl
Iik7CiAgICAgICAgIHJldHVybiBSZWxvYWQ7CiAgICAgfQogICAgIApAQCAtNTk4LDcgKzU5OCw3
IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgICAgICAgICByZXR1cm4gUmV2YWxpZGF0
ZTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vLCBtdXN0IHJlbG9hZC4KLSAgICAgICAgTE9HKFJl
c291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRp
b25Qb2xpY3kgcmVsb2FkaW5nIGR1ZSB0byBtaXNzaW5nIGNhY2hlIHZhbGlkYXRvcnMuIik7ICAg
ICAgICAgICAgCisgICAgICAgIExPR19JTkZPKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291
cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgcmVsb2FkaW5nIGR1ZSB0byBt
aXNzaW5nIGNhY2hlIHZhbGlkYXRvcnMuIik7ICAgICAgICAgICAgCiAgICAgICAgIHJldHVybiBS
ZWxvYWQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
TWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAppbmRleCBhZTNjMDM3NWUyMGVlZGE5ZTNmOTUwZGQ4N2U1ZjFkNDRlMjM1ZWI3Li4yMmE4
NWMzZWM4YzllMjczNjU2ZDkzMWM2NmUzM2UyNjZkMmM1ZGMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBib29sIE1l
bW9yeUNhY2hlOjphZGQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogICAgIAogICAgIHJlc291
cmNlQWNjZXNzZWQocmVzb3VyY2UpOwogICAgIAotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJN
ZW1vcnlDYWNoZTo6YWRkIEFkZGVkICclcycsIHJlc291cmNlICVwXG4iLCByZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNvdXJjZSk7CisgICAgTE9HX0lORk8oUmVz
b3VyY2VMb2FkaW5nLCAiTWVtb3J5Q2FjaGU6OmFkZCBBZGRlZCAnJXMnLCByZXNvdXJjZSAlcFxu
IiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVzb3VyY2UpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBNZW1vcnlDYWNo
ZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlKiByZXZhbGlkYXRpbmdSZXNv
dXJjZSwgY28KIHZvaWQgTWVtb3J5Q2FjaGU6OnJldmFsaWRhdGlvbkZhaWxlZChDYWNoZWRSZXNv
dXJjZSogcmV2YWxpZGF0aW5nUmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOwotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZXZhbGlkYXRpb24gZmFpbGVkIGZv
ciAlcCIsIHJldmFsaWRhdGluZ1Jlc291cmNlKTsKKyAgICBMT0dfSU5GTyhSZXNvdXJjZUxvYWRp
bmcsICJSZXZhbGlkYXRpb24gZmFpbGVkIGZvciAlcCIsIHJldmFsaWRhdGluZ1Jlc291cmNlKTsK
ICAgICBBU1NFUlQocmV2YWxpZGF0aW5nUmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkp
OwogICAgIHJldmFsaWRhdGluZ1Jlc291cmNlLT5jbGVhclJlc291cmNlVG9SZXZhbGlkYXRlKCk7
CiB9CkBAIC0zODgsNyArMzg4LDcgQEAgYm9vbCBNZW1vcnlDYWNoZTo6bWFrZVJlc291cmNlUHVy
Z2VhYmxlKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHZvaWQgTWVtb3J5Q2FjaGU6OmV2aWN0
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJl
YWQoKSk7Ci0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIkV2aWN0aW5nIHJlc291cmNlICVwIGZv
ciAnJXMnIGZyb20gY2FjaGUiLCByZXNvdXJjZSwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oUmVzb3VyY2VMb2FkaW5nLCAiRXZpY3Rpbmcg
cmVzb3VyY2UgJXAgZm9yICclcycgZnJvbSBjYWNoZSIsIHJlc291cmNlLCByZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICAvLyBUaGUgcmVzb3VyY2UgbWF5IGhh
dmUgYWxyZWFkeSBiZWVuIHJlbW92ZWQgYnkgc29tZW9uZSBvdGhlciB0aGFuIG91ciBjYWxsZXIs
CiAgICAgLy8gd2hvIG5lZWRlZCBhIGZyZXNoIGNvcHkgZm9yIGEgcmVsb2FkLiBTZWUgPGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDc5I2M2Pi4KICAgICBpZiAocmVz
b3VyY2UtPmluQ2FjaGUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IDc0ZmFhOTU5Y2FiZTM0NDgxYTBmNTc5ZjdlNTI0MDgyMmUwMTM4
MDQuLjBkMjc0NDI0ZWMzYTk1NmRiYjdiODg3NjVhNmRmOThkNWY4MmI5MWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKQEAgLTEyNSw3ICsxMjUs
NyBAQCBJY29uVVJMcyBJY29uQ29udHJvbGxlcjo6dXJsc0ZvclR5cGVzKGludCBpY29uVHlwZXMp
CiAKIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbW1pdFRvRGF0YWJhc2UoY29uc3QgS1VSTCYgaWNv
bikKIHsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRh
dGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29uLnN0cmluZygpLmFzY2lpKCkuZGF0
YSgpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwg
bV9mcmFtZS0+bG9hZGVyKCktPmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOworICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVS
TCAlcyB0byBkYXRhYmFzZSBmb3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCksIG1fZnJhbWUtPmxvYWRlcigpLT5pbml0aWFsUmVxdWVzdCgpLnVybCgpLnN0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICBpY29uRGF0YWJhc2UoKS5zZXRJY29uVVJMRm9yUGFn
ZVVSTChpY29uLnN0cmluZygpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7
CiAgICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwg
bV9mcmFtZS0+bG9hZGVyKCktPmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkpOwogfQpA
QCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKCkKICAg
ICAgICAgLy8ganVzdCBpbiBjYXNlIHdlIGRvbid0IGVuZCB1cCBsb2FkaW5nIGxhdGVyIC0gaWYg
d2UgY29tbWl0IHRoZSBtYXBwaW5nIGEgc2Vjb25kIHRpbWUgYWZ0ZXIgdGhlIGxvYWQsIHRoYXQn
cyBubyBiaWcgZGVhbAogICAgICAgICAvLyBXZSBhbHNvIHRlbGwgdGhlIGNsaWVudCB0byByZWdp
c3RlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiB0aGF0IHRoZSBpY29uIGlzIHJlY2VpdmVkIG5vdyBz
byBpdCBpc24ndCBtaXNzZWQgaW4gY2FzZSB0aGUgCiAgICAgICAgIC8vIGljb24gaXMgbGF0ZXIg
cmVhZCBpbiBmcm9tIGRpc2sKLSAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkljb25Db250cm9s
bGVyICVwIG1pZ2h0IGxvYWQgaWNvbiAlcyBsYXRlciIsIHRoaXMsIHVybFN0cmluZy5hc2NpaSgp
LmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkljb25Db250cm9sbGVy
ICVwIG1pZ2h0IGxvYWQgaWNvbiAlcyBsYXRlciIsIHRoaXMsIHVybFN0cmluZy5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgIG1fd2FpdGluZ0ZvckxvYWREZWNpc2lvbiA9IHRydWU7ICAgIAogICAg
ICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNh
dGlvbigpOwogICAgICAgICBjb21taXRUb0RhdGFiYXNlKGljb25VUkwpOwpAQCAtMTk3LDcgKzE5
Nyw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmxvYWREZWNpc2lvblJlY2VpdmVkKEljb25Mb2Fk
RGVjaXNpb24gaWNvbkxvYWREZWNpc2lvbikKIHsKICAgICBpZiAoIW1fd2FpdGluZ0ZvckxvYWRE
ZWNpc2lvbikKICAgICAgICAgcmV0dXJuOwotICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uQ29u
dHJvbGxlciAlcCB3YXMgdG9sZCBhIGxvYWQgZGVjaXNpb24gaXMgYXZhaWxhYmxlIGZvciBpdHMg
aWNvbiIsIHRoaXMpOworICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkljb25Db250cm9sbGVy
ICVwIHdhcyB0b2xkIGEgbG9hZCBkZWNpc2lvbiBpcyBhdmFpbGFibGUgZm9yIGl0cyBpY29uIiwg
dGhpcyk7CiAgICAgY29udGludWVMb2FkV2l0aERlY2lzaW9uKGljb25Mb2FkRGVjaXNpb24pOwog
ICAgIG1fd2FpdGluZ0ZvckxvYWREZWNpc2lvbiA9IGZhbHNlOwogfQpAQCAtMjE2LDcgKzIxNiw3
IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNpc2lvbihJY29uTG9h
ZERlY2lzaW9uIGljb25Mb2FkRGVjaXNpb24pCiAgICAgICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJJ
Y29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIoKSAtIFRvbGQgbm90IHRvIGxvYWQgdGhpcyBpY29u
LCBjb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UgZm9yIHBhZ2VVUkwgbWFwcGluZyIs
IHVybFN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFz
ZSwgIkljb25Db250cm9sbGVyOjpzdGFydExvYWRlcigpIC0gVG9sZCBub3QgdG8gbG9hZCB0aGlz
IGljb24sIGNvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBmb3IgcGFnZVVSTCBtYXBw
aW5nIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgY29tbWl0VG9EYXRhYmFz
ZShpY29uVVJMKTsKIAogICAgICAgICBpZiAoaWNvbkRhdGFiYXNlKCkuc3VwcG9ydHNBc3luY2hy
b25vdXNNb2RlKCkpIHsKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIEljb25Db250cm9sbGVyOjpj
b250aW51ZUxvYWRXaXRoRGVjaXNpb24oSWNvbkxvYWREZWNpc2lvbiBpY29uTG9hZERlY2lzaW9u
KQogICAgICAgICAvLyBoYXMgZG9uZSBpdC4gVGhpcyBpcyBhZnRlciByZWdpc3RlcmluZyBmb3Ig
dGhlIG5vdGlmaWNhdGlvbiBzbyB0aGUgV2ViVmlldyBjYW4gY2FsbCB0aGUgYXBwcm9wcmlhdGUg
ZGVsZWdhdGUgbWV0aG9kLgogICAgICAgICAvLyBPdGhlcndpc2UgaWYgdGhlIGljb24gZGF0YSAq
aXMqIGF2YWlsYWJsZSwgbm90aWZ5IHRoZSBkZWxlZ2F0ZQogICAgICAgICBpZiAoIWljb25EYXRh
YmFzZSgpLnN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwodXJsU3RyaW5nKSkgewot
ICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIlRvbGQgbm90IHRvIGxvYWQgaWNvbiAlcyBi
dXQgaWNvbiBkYXRhIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIC0gcmVnaXN0ZXJpbmcgZm9yIG5vdGlm
aWNhdGlvbiBhbmQgcmVxdWVzdGluZyBsb2FkIGZyb20gZGlzayIsIHVybFN0cmluZy5hc2NpaSgp
LmRhdGEoKSk7CisgICAgICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJUb2xkIG5vdCB0
byBsb2FkIGljb24gJXMgYnV0IGljb24gZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZSAtIHJlZ2lz
dGVyaW5nIGZvciBub3RpZmljYXRpb24gYW5kIHJlcXVlc3RpbmcgbG9hZCBmcm9tIGRpc2siLCB1
cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpLT5yZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oKTsKICAgICAgICAgICAgIGlj
b25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwobV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCksIEludFNpemUoMCwgMCkpOwogICAgICAgICAgICAgaWNvbkRhdGFi
YXNlKCkuc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChtX2ZyYW1lLT5sb2FkZXIoKS0+aW5pdGlh
bFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCBiM2I2N2JmZWI1MTBhNWQ4NGQ3
ZjhjOGIwZmUwZmU2N2I0NTFkYzk2Li41YjA4M2IwNzNjYmUzZGExYjBhYjBhNDAyN2EwOTAyOWVi
NmYzZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAK
QEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cmVtb3ZlQWxsSWNvbnMoKQog
ICAgIGlmICghaXNPcGVuKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhJY29uRGF0YWJh
c2UsICJSZXF1ZXN0aW5nIGJhY2tncm91bmQgdGhyZWFkIHRvIHJlbW92ZSBhbGwgaWNvbnMiKTsK
KyAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJSZXF1ZXN0aW5nIGJhY2tncm91bmQgdGhyZWFk
IHRvIHJlbW92ZSBhbGwgaWNvbnMiKTsKICAgICAKICAgICAvLyBDbGVhciB0aGUgaW4tbWVtb3J5
IHJlY29yZCBvZiBldmVyeSBJY29uUmVjb3JkLCBhbnl0aGluZyB3YWl0aW5nIHRvIGJlIHJlYWQg
ZnJvbSBkaXNrLCBhbmQgYW55dGhpbmcgd2FpdGluZyB0byBiZSB3cml0dGVuIHRvIGRpc2sKICAg
ICB7CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1SZXRhaW5J
Y29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgaW4KICAgICAgICAg
Ly8gSWYgdGhpcyBwYWdlVVJMIHdhaXRpbmcgdG8gYmUgc3luYydlZCwgdXBkYXRlIHRoZSBzeW5j
IHJlY29yZAogICAgICAgICAvLyBUaGlzIHNhdmVzIHVzIGluIHRoZSBjYXNlIHdoZXJlIGEgcGFn
ZSB3YXMgcmVhZHkgdG8gYmUgZGVsZXRlZCBmcm9tIHRoZSBkYXRhYmFzZSBidXQgd2FzIGp1c3Qg
cmV0YWluZWQgLSBzbyB0aGVyZXMgbm8gbmVlZCB0byBkZWxldGUgaXQhCiAgICAgICAgIGlmICgh
bV9wcml2YXRlQnJvd3NpbmdFbmFibGVkICYmIG1fcGFnZVVSTHNQZW5kaW5nU3luYy5jb250YWlu
cyhwYWdlVVJMKSkgewotICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkJyaW5naW5nICVz
IGJhY2sgZnJvbSB0aGUgYnJpbmsiLCBwYWdlVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkJyaW5naW5nICVzIGJhY2sgZnJvbSB0aGUgYnJp
bmsiLCBwYWdlVVJMLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIG1fcGFnZVVSTHNQZW5k
aW5nU3luYy5zZXQocGFnZVVSTCwgcmVjb3JkLT5zbmFwc2hvdCgpKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6cGVyZm9ybVJlbGVhc2VJ
Y29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwgaQogICAgIC8vIEdl
dCBpdHMgcmV0YWluIGNvdW50IC0gaWYgaXQncyByZXRhaW5lZCwgd2UnZCBiZXR0ZXIgaGF2ZSBh
IFBhZ2VVUkxSZWNvcmQgZm9yIGl0CiAgICAgUGFnZVVSTFJlY29yZCogcGFnZVJlY29yZCA9IG1f
cGFnZVVSTFRvUmVjb3JkTWFwLmdldChwYWdlVVJMT3JpZ2luYWwpOwogICAgIEFTU0VSVChwYWdl
UmVjb3JkKTsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiUmVsZWFzaW5nIHBhZ2VVUkwgJXMgdG8g
YSByZXRhaW4gY291bnQgb2YgJWkiLCB1cmxGb3JMb2dnaW5nKHBhZ2VVUkxPcmlnaW5hbCkuYXNj
aWkoKS5kYXRhKCksIHBhZ2VSZWNvcmQtPnJldGFpbkNvdW50KCkgLSAxKTsKKyAgICBMT0dfSU5G
TyhJY29uRGF0YWJhc2UsICJSZWxlYXNpbmcgcGFnZVVSTCAlcyB0byBhIHJldGFpbiBjb3VudCBv
ZiAlaSIsIHVybEZvckxvZ2dpbmcocGFnZVVSTE9yaWdpbmFsKS5hc2NpaSgpLmRhdGEoKSwgcGFn
ZVJlY29yZC0+cmV0YWluQ291bnQoKSAtIDEpOwogICAgIEFTU0VSVChwYWdlUmVjb3JkLT5yZXRh
aW5Db3VudCgpID4gMCk7CiAgICAgICAgIAogICAgIC8vIElmIGl0IHN0aWxsIGhhcyBhIHBvc2l0
aXZlIHJldGFpbiBjb3VudCwgc3RvcmUgdGhlIG5ldyBjb3VudCBhbmQgYmFpbApAQCAtNDk1LDcg
KzQ5NSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtUmVsZWFzZUljb25Gb3JQYWdlVVJM
KGNvbnN0IFN0cmluZyYgcGFnZVVSTE9yaWdpbmFsLCBpCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgLy8gVGhpcyBwYWdlUmVjb3JkIGhhcyBub3cgYmVlbiBmdWxseSByZWxlYXNlZC4g
IERvIHRoZSBhcHByb3ByaWF0ZSBjbGVhbnVwCi0gICAgTE9HKEljb25EYXRhYmFzZSwgIk5vIG1v
cmUgcmV0YWluZXJzIGZvciBQYWdlVVJMICVzIiwgdXJsRm9yTG9nZ2luZyhwYWdlVVJMT3JpZ2lu
YWwpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJObyBtb3Jl
IHJldGFpbmVycyBmb3IgUGFnZVVSTCAlcyIsIHVybEZvckxvZ2dpbmcocGFnZVVSTE9yaWdpbmFs
KS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9wYWdlVVJMVG9SZWNvcmRNYXAucmVtb3ZlKHBhZ2VV
UkxPcmlnaW5hbCk7CiAgICAgbV9yZXRhaW5lZFBhZ2VVUkxzLnJlbW92ZShwYWdlVVJMT3JpZ2lu
YWwpOyAgICAgICAKICAgICAKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6
c2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhT3JpZ2lu
YWwsCiAKICAgICAgICAgaWYgKGljb24tPmhhc09uZVJlZigpKSB7CiAgICAgICAgICAgICBBU1NF
UlQoaWNvbi0+cmV0YWluaW5nUGFnZVVSTHMoKS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgTE9H
KEljb25EYXRhYmFzZSwgIkljb24gZm9yIGljb24gdXJsICVzIGlzIGFib3V0IHRvIGJlIGRlc3Ry
b3llZCAtIHJlbW92aW5nIG1hcHBpbmcgZm9yIGl0IiwgdXJsRm9yTG9nZ2luZyhpY29uLT5pY29u
VVJMKCkpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFz
ZSwgIkljb24gZm9yIGljb24gdXJsICVzIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZCAtIHJlbW92
aW5nIG1hcHBpbmcgZm9yIGl0IiwgdXJsRm9yTG9nZ2luZyhpY29uLT5pY29uVVJMKCkpLmFzY2lp
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnJlbW92ZShpY29u
LT5pY29uVVJMKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNTkxLDcgKzU5MSw3IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpzZXRJY29uRGF0YUZvckljb25VUkwoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGRhdGFPcmlnaW5hbCwKICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2woMjUpOwogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWdlVVJMcy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkRpc3BhdGNoaW5nIG5vdGlmaWNhdGlvbiB0
aGF0IHJldGFpbmluZyBwYWdlVVJMICVzIGhhcyBhIG5ldyBpY29uIiwgdXJsRm9yTG9nZ2luZyhw
YWdlVVJMc1tpXSkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HX0lORk8oSWNvbkRh
dGFiYXNlLCAiRGlzcGF0Y2hpbmcgbm90aWZpY2F0aW9uIHRoYXQgcmV0YWluaW5nIHBhZ2VVUkwg
JXMgaGFzIGEgbmV3IGljb24iLCB1cmxGb3JMb2dnaW5nKHBhZ2VVUkxzW2ldKS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwocGFn
ZVVSTHNbaV0pOwogCiAgICAgICAgICAgICBwb29sLmN5Y2xlKCk7CkBAIC02MzksNyArNjM5LDcg
QEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYg
aWNvblVSTE9yaWdpbmFsLCBjb25zdCBTdHIKICAgICAgICAgLy8gUmVtb3ZlIGl0IGZyb20gdGhl
IGluLW1lbW9yeSByZWNvcmRzIGFuZCBkb24ndCBib3RoZXIgcmVhZGluZyBpdCBpbiBmcm9tIGRp
c2sgYW55bW9yZQogICAgICAgICBpZiAoaWNvblJlY29yZCAmJiBpY29uUmVjb3JkLT5oYXNPbmVS
ZWYoKSkgewogICAgICAgICAgICAgQVNTRVJUKGljb25SZWNvcmQtPnJldGFpbmluZ1BhZ2VVUkxz
KCkuc2l6ZSgpID09IDApOwotICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkljb24gZm9y
IGljb24gdXJsICVzIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZCAtIHJlbW92aW5nIG1hcHBpbmcg
Zm9yIGl0IiwgdXJsRm9yTG9nZ2luZyhpY29uUmVjb3JkLT5pY29uVVJMKCkpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkljb24gZm9yIGljb24g
dXJsICVzIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZCAtIHJlbW92aW5nIG1hcHBpbmcgZm9yIGl0
IiwgdXJsRm9yTG9nZ2luZyhpY29uUmVjb3JkLT5pY29uVVJMKCkpLmFzY2lpKCkuZGF0YSgpKTsK
ICAgICAgICAgICAgIG1faWNvblVSTFRvUmVjb3JkTWFwLnJlbW92ZShpY29uUmVjb3JkLT5pY29u
VVJMKCkpOwogICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fcGVuZGluZ1JlYWRpbmdM
b2NrKTsKICAgICAgICAgICAgIG1faWNvbnNQZW5kaW5nUmVhZGluZy5yZW1vdmUoaWNvblJlY29y
ZC5nZXQoKSk7CkBAIC02NjIsNyArNjYyLDcgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnNldEljb25V
UkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTE9yaWdpbmFsLCBjb25zdCBTdHIKICAg
ICAgICAgLy8gU3RhcnQgdGhlIHRpbWVyIHRvIGNvbW1pdCB0aGlzIGNoYW5nZSAtIG9yIGZ1cnRo
ZXIgZGVsYXkgdGhlIHRpbWVyIGlmIGl0IHdhcyBhbHJlYWR5IHN0YXJ0ZWQKICAgICAgICAgc2No
ZWR1bGVPckRlZmVyU3luY1RpbWVyKCk7CiAgICAgICAgIAotICAgICAgICBMT0coSWNvbkRhdGFi
YXNlLCAiRGlzcGF0Y2hpbmcgbm90aWZpY2F0aW9uIHRoYXQgd2UgY2hhbmdlZCBhbiBpY29uIG1h
cHBpbmcgZm9yIHVybCAlcyIsIHVybEZvckxvZ2dpbmcocGFnZVVSTCkuYXNjaWkoKS5kYXRhKCkp
OworICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJEaXNwYXRjaGluZyBub3RpZmljYXRp
b24gdGhhdCB3ZSBjaGFuZ2VkIGFuIGljb24gbWFwcGluZyBmb3IgdXJsICVzIiwgdXJsRm9yTG9n
Z2luZyhwYWdlVVJMKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIEF1dG9kcmFpbmVkUG9vbCBw
b29sOwogICAgICAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7
CiAgICAgfQpAQCAtNjgxLDcgKzY4MSw3IEBAIEljb25Mb2FkRGVjaXNpb24gSWNvbkRhdGFiYXNl
OjpzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiBpCiAgICAg
ewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV91cmxBbmRJY29uTG9jayk7CiAgICAgICAg
IGlmIChJY29uUmVjb3JkKiBpY29uID0gbV9pY29uVVJMVG9SZWNvcmRNYXAuZ2V0KGljb25VUkwp
KSB7Ci0gICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiRm91bmQgZXhwaXJhdGlvbiB0aW1l
IG9uIGEgcHJlc2VudCBpY29uIGJhc2VkIG9uIGV4aXN0aW5nIEljb25SZWNvcmQiKTsKKyAgICAg
ICAgICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkZvdW5kIGV4cGlyYXRpb24gdGltZSBvbiBh
IHByZXNlbnQgaWNvbiBiYXNlZCBvbiBleGlzdGluZyBJY29uUmVjb3JkIik7CiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50VGltZSgpKSAtIHN0YXRpY19jYXN0PGlu
dD4oaWNvbi0+Z2V0VGltZXN0YW1wKCkpID4gaWNvbkV4cGlyYXRpb25UaW1lID8gSWNvbkxvYWRZ
ZXMgOiBJY29uTG9hZE5vOwogICAgICAgICB9CiAgICAgfQpAQCAtNjkzLDcgKzY5Myw3IEBAIElj
b25Mb2FkRGVjaXNpb24gSWNvbkRhdGFiYXNlOjpzeW5jaHJvbm91c0xvYWREZWNpc2lvbkZvcklj
b25VUkwoY29uc3QgU3RyaW5nJiBpCiAgICAgICAgIAogICAgIC8vIE90aGVyd2lzZSAtIHNpbmNl
IHdlIHJlZnVzZSB0byBwZXJmb3JtIEkvTyBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gZmluZCBvdXQg
Zm9yIHN1cmUgLSB3ZSByZXR1cm4gdGhlIGFuc3dlciB0aGF0IHNheXMKICAgICAvLyAiWW91IG1p
Z2h0IGJlIGFza2VkIHRvIGxvYWQgdGhpcyBsYXRlciwgc28gZmxhZyB0aGF0IgotICAgIExPRyhJ
Y29uRGF0YWJhc2UsICJEb24ndCBrbm93IGlmIHdlIHNob3VsZCBsb2FkICVzIG9yIG5vdCAtIGFk
ZGluZyAlcCB0byB0aGUgc2V0IG9mIGRvY3VtZW50IGxvYWRlcnMgd2FpdGluZyBvbiBhIGRlY2lz
aW9uIiwgaWNvblVSTC5hc2NpaSgpLmRhdGEoKSwgbm90aWZpY2F0aW9uRG9jdW1lbnRMb2FkZXIp
OworICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkRvbid0IGtub3cgaWYgd2Ugc2hvdWxkIGxv
YWQgJXMgb3Igbm90IC0gYWRkaW5nICVwIHRvIHRoZSBzZXQgb2YgZG9jdW1lbnQgbG9hZGVycyB3
YWl0aW5nIG9uIGEgZGVjaXNpb24iLCBpY29uVVJMLmFzY2lpKCkuZGF0YSgpLCBub3RpZmljYXRp
b25Eb2N1bWVudExvYWRlcik7CiAgICAgaWYgKG5vdGlmaWNhdGlvbkRvY3VtZW50TG9hZGVyKQog
ICAgICAgICBtX2xvYWRlcnNQZW5kaW5nRGVjaXNpb24uYWRkKG5vdGlmaWNhdGlvbkRvY3VtZW50
TG9hZGVyKTsgICAgCiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6ZGVs
YXlEYXRhYmFzZUNsZWFudXAoKQogewogICAgICsrZGF0YWJhc2VDbGVhbnVwQ291bnRlcjsKICAg
ICBpZiAoZGF0YWJhc2VDbGVhbnVwQ291bnRlciA9PSAxKQotICAgICAgICBMT0coSWNvbkRhdGFi
YXNlLCAiRGF0YWJhc2UgY2xlYW51cCBpcyBub3cgRElTQUJMRUQiKTsKKyAgICAgICAgTE9HX0lO
Rk8oSWNvbkRhdGFiYXNlLCAiRGF0YWJhc2UgY2xlYW51cCBpcyBub3cgRElTQUJMRUQiKTsKIH0K
IAogdm9pZCBJY29uRGF0YWJhc2U6OmFsbG93RGF0YWJhc2VDbGVhbnVwKCkKQEAgLTc0OSw3ICs3
NDksNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6YWxsb3dEYXRhYmFzZUNsZWFudXAoKQogICAgIGlm
ICgtLWRhdGFiYXNlQ2xlYW51cENvdW50ZXIgPCAwKQogICAgICAgICBkYXRhYmFzZUNsZWFudXBD
b3VudGVyID0gMDsKICAgICBpZiAoZGF0YWJhc2VDbGVhbnVwQ291bnRlciA9PSAwKQotICAgICAg
ICBMT0coSWNvbkRhdGFiYXNlLCAiRGF0YWJhc2UgY2xlYW51cCBpcyBub3cgRU5BQkxFRCIpOwor
ICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJEYXRhYmFzZSBjbGVhbnVwIGlzIG5vdyBF
TkFCTEVEIik7CiB9CiAKIHZvaWQgSWNvbkRhdGFiYXNlOjpjaGVja0ludGVncml0eUJlZm9yZU9w
ZW5pbmcoKQpAQCAtODA1LDcgKzgwNSw3IEBAIEljb25EYXRhYmFzZTo6SWNvbkRhdGFiYXNlKCkK
ICAgICAsIG1faW5pdGlhbFBydW5pbmdDb21wbGV0ZShmYWxzZSkKICAgICAsIG1fY2xpZW50KGRl
ZmF1bHRDbGllbnQoKSkKIHsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ3JlYXRpbmcgSWNvbkRh
dGFiYXNlICVwIiwgdGhpcyk7CisgICAgTE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiQ3JlYXRpbmcg
SWNvbkRhdGFiYXNlICVwIiwgdGhpcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0K
IApAQCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpub3RpZnlQZW5kaW5nTG9h
ZERlY2lzaW9ucygpCiAgICAgCiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2Fs
bGVkIHVwb24gY29tcGxldGlvbiBvZiB0aGUgaW5pdGlhbCB1cmwgaW1wb3J0IGZyb20gdGhlIGRh
dGFiYXNlCiAgICAgQVNTRVJUKG1faWNvblVSTEltcG9ydENvbXBsZXRlKTsKLSAgICBMT0coSWNv
bkRhdGFiYXNlLCAiTm90aWZ5aW5nIGFsbCBEb2N1bWVudExvYWRlcnMgdGhhdCB3ZXJlIHdhaXRp
bmcgb24gYSBsb2FkIGRlY2lzaW9uIGZvciB0aGVpciBpY29ucyIpOworICAgIExPR19JTkZPKElj
b25EYXRhYmFzZSwgIk5vdGlmeWluZyBhbGwgRG9jdW1lbnRMb2FkZXJzIHRoYXQgd2VyZSB3YWl0
aW5nIG9uIGEgbG9hZCBkZWNpc2lvbiBmb3IgdGhlaXIgaWNvbnMiKTsKICAgICAKICAgICBIYXNo
U2V0PFJlZlB0cjxEb2N1bWVudExvYWRlcj4gPjo6aXRlcmF0b3IgaSA9IG1fbG9hZGVyc1BlbmRp
bmdEZWNpc2lvbi5iZWdpbigpOwogICAgIEhhc2hTZXQ8UmVmUHRyPERvY3VtZW50TG9hZGVyPiA+
OjppdGVyYXRvciBlbmQgPSBtX2xvYWRlcnNQZW5kaW5nRGVjaXNpb24uZW5kKCk7CkBAIC05NDMs
NyArOTQzLDcgQEAgUGFnZVVSTFJlY29yZCogSWNvbkRhdGFiYXNlOjpnZXRPckNyZWF0ZVBhZ2VV
UkxSZWNvcmQoY29uc3QgU3RyaW5nJiBwYWdlVVJMKQogICAgIGlmICghbV9pY29uVVJMSW1wb3J0
Q29tcGxldGUpIHsKICAgICAgICAgLy8gSWYgdGhlIGluaXRpYWwgaW1wb3J0IG9mIGFsbCBVUkxz
IGhhc24ndCBjb21wbGV0ZWQgYW5kIHdlIGhhdmUgbm8gcGFnZSByZWNvcmQsIHdlIGFzc3VtZSB3
ZSAqbWlnaHQqIGtub3cgYWJvdXQgdGhpcyBsYXRlciBhbmQgY3JlYXRlIGEgcmVjb3JkIGZvciBp
dAogICAgICAgICBpZiAoIXBhZ2VSZWNvcmQpIHsKLSAgICAgICAgICAgIExPRyhJY29uRGF0YWJh
c2UsICJDcmVhdGluZyBuZXcgUGFnZVVSTFJlY29yZCBmb3IgcGFnZVVSTCAlcyIsIHVybEZvckxv
Z2dpbmcocGFnZVVSTCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HX0lORk8oSWNv
bkRhdGFiYXNlLCAiQ3JlYXRpbmcgbmV3IFBhZ2VVUkxSZWNvcmQgZm9yIHBhZ2VVUkwgJXMiLCB1
cmxGb3JMb2dnaW5nKHBhZ2VVUkwpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgIHBhZ2VS
ZWNvcmQgPSBuZXcgUGFnZVVSTFJlY29yZChwYWdlVVJMKTsKICAgICAgICAgICAgIG1fcGFnZVVS
TFRvUmVjb3JkTWFwLnNldChwYWdlVVJMLCBwYWdlUmVjb3JkKTsKICAgICAgICAgfQpAQCAtOTkw
LDcgKzk5MCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkK
IAogICAgIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFEKCk7CiAgICAgCi0gICAgTE9HKEljb25EYXRh
YmFzZSwgIihUSFJFQUQpIEljb25EYXRhYmFzZSBzeW5jIHRocmVhZCBzdGFydGVkIik7CisgICAg
TE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgSWNvbkRhdGFiYXNlIHN5bmMgdGhyZWFk
IHN0YXJ0ZWQiKTsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBkb3VibGUgc3RhcnRUaW1lID0g
Y3VycmVudFRpbWUoKTsKQEAgLTEwMjIsNyArMTAyMiw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpp
Y29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICAgICAgICAgCiAjaWYgIUxPR19ESVNBQkxFRAogICAg
IGRvdWJsZSB0aW1lU3RhbXAgPSBjdXJyZW50VGltZSgpOwotICAgIExPRyhJY29uRGF0YWJhc2Us
ICIoVEhSRUFEKSBPcGVuIHRvb2sgJS40ZiBzZWNvbmRzIiwgdGltZVN0YW1wIC0gc3RhcnRUaW1l
KTsKKyAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICIoVEhSRUFEKSBPcGVuIHRvb2sgJS40ZiBz
ZWNvbmRzIiwgdGltZVN0YW1wIC0gc3RhcnRUaW1lKTsKICNlbmRpZiAgICAKIAogICAgIHBlcmZv
cm1PcGVuSW5pdGlhbGl6YXRpb24oKTsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIHZvaWQgSWNvbkRh
dGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKICAgICAgICAgCiAjaWYgIUxPR19ESVNB
QkxFRAogICAgIGRvdWJsZSBuZXdTdGFtcCA9IGN1cnJlbnRUaW1lKCk7Ci0gICAgTE9HKEljb25E
YXRhYmFzZSwgIihUSFJFQUQpIHBlcmZvcm1PcGVuSW5pdGlhbGl6YXRpb24oKSB0b29rICUuNGYg
c2Vjb25kcywgbm93ICUuNGYgc2Vjb25kcyBmcm9tIHRocmVhZCBzdGFydCIsIG5ld1N0YW1wIC0g
dGltZVN0YW1wLCBuZXdTdGFtcCAtIHN0YXJ0VGltZSk7CisgICAgTE9HX0lORk8oSWNvbkRhdGFi
YXNlLCAiKFRIUkVBRCkgcGVyZm9ybU9wZW5Jbml0aWFsaXphdGlvbigpIHRvb2sgJS40ZiBzZWNv
bmRzLCBub3cgJS40ZiBzZWNvbmRzIGZyb20gdGhyZWFkIHN0YXJ0IiwgbmV3U3RhbXAgLSB0aW1l
U3RhbXAsIG5ld1N0YW1wIC0gc3RhcnRUaW1lKTsKICAgICB0aW1lU3RhbXAgPSBuZXdTdGFtcDsK
ICNlbmRpZiAKICAgICAgICAgCkBAIC0xMDQxLDcgKzEwNDEsNyBAQCB2b2lkIEljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiAgICAgLy8gd2hpbGUgKGN1cnJlbnRUaW1lKCkg
LSB0aW1lU3RhbXAgPCAxMCk7CiAKICAgICAvLyBSZWFkIGluIFVSTCBtYXBwaW5ncyBmcm9tIHRo
ZSBkYXRhYmFzZSAgICAgICAgICAKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgU3Rh
cnRpbmcgaWNvblVSTCBpbXBvcnQiKTsKKyAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICIoVEhS
RUFEKSBTdGFydGluZyBpY29uVVJMIGltcG9ydCIpOwogICAgIHBlcmZvcm1VUkxJbXBvcnQoKTsK
ICAgICAKICAgICBpZiAoc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkpIHsKQEAgLTEwNTEsMTAg
KzEwNTEsMTAgQEAgdm9pZCBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWQoKQog
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIG5ld1N0YW1wID0gY3VycmVudFRpbWUoKTsKLSAgICBM
T0coSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgcGVyZm9ybVVSTEltcG9ydCgpIHRvb2sgJS40ZiBz
ZWNvbmRzLiAgRW50ZXJpbmcgbWFpbiBsb29wICUuNGYgc2Vjb25kcyBmcm9tIHRocmVhZCBzdGFy
dCIsIG5ld1N0YW1wIC0gdGltZVN0YW1wLCBuZXdTdGFtcCAtIHN0YXJ0VGltZSk7CisgICAgTE9H
X0lORk8oSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgcGVyZm9ybVVSTEltcG9ydCgpIHRvb2sgJS40
ZiBzZWNvbmRzLiAgRW50ZXJpbmcgbWFpbiBsb29wICUuNGYgc2Vjb25kcyBmcm9tIHRocmVhZCBz
dGFydCIsIG5ld1N0YW1wIC0gdGltZVN0YW1wLCBuZXdTdGFtcCAtIHN0YXJ0VGltZSk7CiAjZW5k
aWYgCiAKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgQmVnaW5uaW5nIHN5bmMiKTsK
KyAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICIoVEhSRUFEKSBCZWdpbm5pbmcgc3luYyIpOwog
ICAgIHN5bmNUaHJlYWRNYWluTG9vcCgpOwogfQogCkBAIC0xMDcwLDcgKzEwNzAsNyBAQCBzdGF0
aWMgYm9vbCBpc1ZhbGlkRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRiKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgCiAgICAgaWYgKGRhdGFiYXNlVmVyc2lvbk51bWJlcihkYikgPCBjdXJy
ZW50RGF0YWJhc2VWZXJzaW9uKSB7Ci0gICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJEQiB2ZXJz
aW9uIGlzIG5vdCBmb3VuZCBvciBiZWxvdyBleHBlY3RlZCB2YWxpZCB2ZXJzaW9uIik7CisgICAg
ICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkRCIHZlcnNpb24gaXMgbm90IGZvdW5kIG9yIGJl
bG93IGV4cGVjdGVkIHZhbGlkIHZlcnNpb24iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAKQEAgLTExMzEsNyArMTEzMSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3Jt
T3BlbkluaXRpYWxpemF0aW9uKCkKICAgICBpZiAoY2hlY2tJbnRlZ3JpdHlPbk9wZW4pIHsKICAg
ICAgICAgY2hlY2tJbnRlZ3JpdHlPbk9wZW4gPSBmYWxzZTsKICAgICAgICAgaWYgKCFjaGVja0lu
dGVncml0eSgpKSB7Ci0gICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSW50ZWdyaXR5IGNo
ZWNrIHdhcyBiYWQgLSBkdW1waW5nIEljb25EYXRhYmFzZSIpOworICAgICAgICAgICAgTE9HX0lO
Rk8oSWNvbkRhdGFiYXNlLCAiSW50ZWdyaXR5IGNoZWNrIHdhcyBiYWQgLSBkdW1waW5nIEljb25E
YXRhYmFzZSIpOwogCiAgICAgICAgICAgICBtX3N5bmNEQi5jbG9zZSgpOwogICAgICAgICAgICAg
CkBAIC0xMTUzLDE0ICsxMTUzLDE0IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtT3Blbklu
aXRpYWxpemF0aW9uKCkKICAgICBpbnQgdmVyc2lvbiA9IGRhdGFiYXNlVmVyc2lvbk51bWJlciht
X3N5bmNEQik7CiAgICAgCiAgICAgaWYgKHZlcnNpb24gPiBjdXJyZW50RGF0YWJhc2VWZXJzaW9u
KSB7Ci0gICAgICAgIExPRyhJY29uRGF0YWJhc2UsICJEYXRhYmFzZSB2ZXJzaW9uIG51bWJlciAl
aSBpcyBncmVhdGVyIHRoYW4gb3VyIGN1cnJlbnQgdmVyc2lvbiBudW1iZXIgJWkgLSBjbG9zaW5n
IHRoZSBkYXRhYmFzZSB0byBwcmV2ZW50IG92ZXJ3cml0aW5nIG5ld2VyIHZlcnNpb25zIiwgdmVy
c2lvbiwgY3VycmVudERhdGFiYXNlVmVyc2lvbik7CisgICAgICAgIExPR19JTkZPKEljb25EYXRh
YmFzZSwgIkRhdGFiYXNlIHZlcnNpb24gbnVtYmVyICVpIGlzIGdyZWF0ZXIgdGhhbiBvdXIgY3Vy
cmVudCB2ZXJzaW9uIG51bWJlciAlaSAtIGNsb3NpbmcgdGhlIGRhdGFiYXNlIHRvIHByZXZlbnQg
b3ZlcndyaXRpbmcgbmV3ZXIgdmVyc2lvbnMiLCB2ZXJzaW9uLCBjdXJyZW50RGF0YWJhc2VWZXJz
aW9uKTsKICAgICAgICAgbV9zeW5jREIuY2xvc2UoKTsKICAgICAgICAgbV90aHJlYWRUZXJtaW5h
dGlvblJlcXVlc3RlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
aWYgKCFpc1ZhbGlkRGF0YWJhc2UobV9zeW5jREIpKSB7Ci0gICAgICAgIExPRyhJY29uRGF0YWJh
c2UsICIlcyBpcyBtaXNzaW5nIG9yIGluIGFuIGludmFsaWQgc3RhdGUgLSByZWNvbnN0cnVjdGlu
ZyIsIG1fY29tcGxldGVEYXRhYmFzZVBhdGguYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0df
SU5GTyhJY29uRGF0YWJhc2UsICIlcyBpcyBtaXNzaW5nIG9yIGluIGFuIGludmFsaWQgc3RhdGUg
LSByZWNvbnN0cnVjdGluZyIsIG1fY29tcGxldGVEYXRhYmFzZVBhdGguYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICBtX3N5bmNEQi5jbGVhckFsbFRhYmxlcygpOwogICAgICAgICBjcmVhdGVEYXRh
YmFzZVRhYmxlcyhtX3N5bmNEQik7CiAgICAgfQpAQCAtMTI4NSw3ICsxMjg1LDcgQEAgdm9pZCBJ
Y29uRGF0YWJhc2U6OnBlcmZvcm1VUkxJbXBvcnQoKQogICAgICAgICAKICAgICAgICAgLy8gU3Rv
cCB0aGUgaW1wb3J0IGF0IGFueSB0aW1lIG9mIHRoZSB0aHJlYWQgaGFzIGJlZW4gYXNrZWQgdG8g
c2h1dGRvd24KICAgICAgICAgaWYgKHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpKSB7Ci0gICAg
ICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkRhdGFiYXNlIGFza2VkIHRvIHRlcm1pbmF0
ZSBkdXJpbmcgcGVyZm9ybVVSTEltcG9ydCgpIik7CisgICAgICAgICAgICBMT0dfSU5GTyhJY29u
RGF0YWJhc2UsICJJY29uRGF0YWJhc2UgYXNrZWQgdG8gdGVybWluYXRlIGR1cmluZyBwZXJmb3Jt
VVJMSW1wb3J0KCkiKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAK
QEAgLTEyOTMsNyArMTI5Myw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpwZXJmb3JtVVJMSW1wb3J0
KCkKICAgICB9CiAgICAgCiAgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKQotICAgICAg
ICBMT0coSWNvbkRhdGFiYXNlLCAiRXJyb3IgcmVhZGluZyBwYWdlLT5pY29uIHVybCBtYXBwaW5n
cyBmcm9tIGRhdGFiYXNlIik7CisgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkVycm9y
IHJlYWRpbmcgcGFnZS0+aWNvbiB1cmwgbWFwcGluZ3MgZnJvbSBkYXRhYmFzZSIpOwogCiAgICAg
Ly8gQ2xlYXIgdGhlIG1fcGFnZVVSTHNQZW5kaW5nSW1wb3J0IHNldCAtIGVpdGhlciB0aGUgcGFn
ZSBVUkxzIGVuZGVkIHVwIHdpdGggYW4gaWNvblVSTCAodGhhdCB3ZSdsbCBub3RpZnkgYWJvdXQp
IG9yIG5vdCwgCiAgICAgLy8gYnV0IGFmdGVyIG1faWNvblVSTEltcG9ydENvbXBsZXRlIGlzIHNl
dCB0byB0cnVlLCB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgc2V0IGFueW1vcmUKQEAgLTEzNDcs
MTAgKzEzNDcsMTAgQEAgdm9pZCBJY29uRGF0YWJhc2U6OnBlcmZvcm1VUkxJbXBvcnQoKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgTE9HKEljb25EYXRhYmFzZSwgIk5vdGlmeWluZyAlbHUgaW50
ZXJlc3RlZCBwYWdlIFVSTHMgdGhhdCB0aGVpciBpY29uIFVSTCBpcyBrbm93biBkdWUgdG8gdGhl
IGltcG9ydCIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHVybHNUb05vdGlmeS5zaXplKCkp
KTsKKyAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJOb3RpZnlpbmcgJWx1IGludGVyZXN0ZWQg
cGFnZSBVUkxzIHRoYXQgdGhlaXIgaWNvbiBVUkwgaXMga25vd24gZHVlIHRvIHRoZSBpbXBvcnQi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPih1cmxzVG9Ob3RpZnkuc2l6ZSgpKSk7CiAgICAg
Ly8gTm93IHRoYXQgd2UgZG9uJ3QgaG9sZCBhbnkgbG9ja3MsIHBlcmZvcm0gdGhlIGFjdHVhbCBu
b3RpZmljYXRpb25zCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVybHNUb05vdGlmeS5z
aXplKCk7ICsraSkgewotICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiTm90aWZ5aW5nIGljb24g
aW5mbyBrbm93biBmb3IgcGFnZVVSTCAlcyIsIHVybHNUb05vdGlmeVtpXS5hc2NpaSgpLmRhdGEo
KSk7CisgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIk5vdGlmeWluZyBpY29uIGluZm8g
a25vd24gZm9yIHBhZ2VVUkwgJXMiLCB1cmxzVG9Ob3RpZnlbaV0uYXNjaWkoKS5kYXRhKCkpOwog
ICAgICAgICBkaXNwYXRjaERpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMT25NYWluVGhyZWFkKHVy
bHNUb05vdGlmeVtpXSk7CiAgICAgICAgIGlmIChzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzODUsNyArMTM4NSw3IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpzeW5jVGhyZWFkTWFpbkxvb3AoKQogI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgZG91
YmxlIHRpbWVTdGFtcCA9IGN1cnJlbnRUaW1lKCk7CiAjZW5kaWYKLSAgICAgICAgTE9HKEljb25E
YXRhYmFzZSwgIihUSFJFQUQpIE1haW4gd29yayBsb29wIHN0YXJ0aW5nIik7CisgICAgICAgIExP
R19JTkZPKEljb25EYXRhYmFzZSwgIihUSFJFQUQpIE1haW4gd29yayBsb29wIHN0YXJ0aW5nIik7
CiAKICAgICAgICAgLy8gSWYgd2Ugc2hvdWxkIHJlbW92ZSBhbGwgaWNvbnMsIGRvIGl0IG5vdy4g
IFRoaXMgaXMgYW4gdW5pbnRlcnVwdGlibGUgcHJvY2VkdXJlIHRoYXQgd2Ugd2lsbCBhbHdheXMg
ZG8gYmVmb3JlIHF1aXR0aW5nIGlmIGl0IGlzIHJlcXVlc3RlZAogICAgICAgICBpZiAobV9yZW1v
dmVJY29uc1JlcXVlc3RlZCkgewpAQCAtMTQyMywxMSArMTQyMywxMSBAQCB2b2lkIEljb25EYXRh
YmFzZTo6c3luY1RocmVhZE1haW5Mb29wKCkKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgICAg
ICAgICAgZG91YmxlIHRpbWUgPSBjdXJyZW50VGltZSgpOwogI2VuZGlmCi0gICAgICAgICAgICAg
ICAgTE9HKEljb25EYXRhYmFzZSwgIihUSFJFQUQpIFN0YXJ0aW5nIHBydW5lVW5yZXRhaW5lZElj
b25zKCkiKTsKKyAgICAgICAgICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICIoVEhSRUFE
KSBTdGFydGluZyBwcnVuZVVucmV0YWluZWRJY29ucygpIik7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgcHJ1bmVVbnJldGFpbmVkSWNvbnMoKTsKICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiKFRIUkVBRCkgcHJ1bmVVbnJldGFp
bmVkSWNvbnMoKSB0b29rICUuNGYgc2Vjb25kcyIsIGN1cnJlbnRUaW1lKCkgLSB0aW1lKTsKKyAg
ICAgICAgICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICIoVEhSRUFEKSBwcnVuZVVucmV0
YWluZWRJY29ucygpIHRvb2sgJS40ZiBzZWNvbmRzIiwgY3VycmVudFRpbWUoKSAtIHRpbWUpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIElmIHBydW5lVW5yZXRhaW5lZElj
b25zKCkgcmV0dXJuZWQgZWFybHkgZHVlIHRvIHJlcXVlc3RlZCB0aHJlYWQgdGVybWluYXRpb24s
IGl0cyBzdGlsbCBva2F5CiAgICAgICAgICAgICAgICAgLy8gdG8gbWFyayBwcnVuZWRVbnJldGFp
bmVkSWNvbnMgdHJ1ZSBiZWNhdXNlIHdlJ3JlIGFib3V0IHRvIHRlcm1pbmF0ZSBhbnl3YXkKQEAg
LTE0NDEsNyArMTQ0MSw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpzeW5jVGhyZWFkTWFpbkxvb3Ao
KQogICAgICAgICAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgICAgIGRvdWJsZSBuZXdzdGFtcCA9
IGN1cnJlbnRUaW1lKCk7Ci0gICAgICAgIExPRyhJY29uRGF0YWJhc2UsICIoVEhSRUFEKSBNYWlu
IHdvcmsgbG9vcCByYW4gZm9yICUuNGYgc2Vjb25kcywgJXMgcmVxdWVzdGVkIHRvIHRlcm1pbmF0
ZSIsIG5ld3N0YW1wIC0gdGltZVN0YW1wLCBzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSA/ICJ3
YXMiIDogIndhcyBub3QiKTsKKyAgICAgICAgTE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiKFRIUkVB
RCkgTWFpbiB3b3JrIGxvb3AgcmFuIGZvciAlLjRmIHNlY29uZHMsICVzIHJlcXVlc3RlZCB0byB0
ZXJtaW5hdGUiLCBuZXdzdGFtcCAtIHRpbWVTdGFtcCwgc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5
KCkgPyAid2FzIiA6ICJ3YXMgbm90Iik7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgIG1fc3luY0xvY2subG9jaygpOwpAQCAtMTU3NCw3ICsxNTc0LDcgQEAgYm9vbCBJY29u
RGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2UoKQogICAgICAgICAgICAgICAgICAgICBIYXNoU2V0
PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG91dGVySGFzaC0+ZW5kKCk7CiAgICAgICAg
ICAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5uZXJIYXNoLT5jb250YWlucygqaXRlcikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiJXMgaXMgaW50ZXJlc3RlZCBpbiB0
aGUgaWNvbiB3ZSBqdXN0IHJlYWQuIEFkZGluZyBpdCB0byB0aGUgbm90aWZpY2F0aW9uIGxpc3Qg
YW5kIHJlbW92aW5nIGl0IGZyb20gdGhlIGludGVyZXN0ZWQgc2V0IiwgdXJsRm9yTG9nZ2luZygq
aXRlcikuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPR19J
TkZPKEljb25EYXRhYmFzZSwgIiVzIGlzIGludGVyZXN0ZWQgaW4gdGhlIGljb24gd2UganVzdCBy
ZWFkLiBBZGRpbmcgaXQgdG8gdGhlIG5vdGlmaWNhdGlvbiBsaXN0IGFuZCByZW1vdmluZyBpdCBm
cm9tIHRoZSBpbnRlcmVzdGVkIHNldCIsIHVybEZvckxvZ2dpbmcoKml0ZXIpLmFzY2lpKCkuZGF0
YSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzVG9Ob3RpZnkuYWRkKCppdGVy
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIApA
QCAtMTYwNyw3ICsxNjA3LDcgQEAgYm9vbCBJY29uRGF0YWJhc2U6OnJlYWRGcm9tRGF0YWJhc2Uo
KQogICAgICAgICBIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9yIGl0ZXIgPSB1cmxzVG9Ob3RpZnku
YmVnaW4oKTsKICAgICAgICAgSGFzaFNldDxTdHJpbmc+OjppdGVyYXRvciBlbmQgPSB1cmxzVG9O
b3RpZnkuZW5kKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaXRlcmF0aW9uID0gMDsgaXRlciAh
PSBlbmQ7ICsraXRlciwgKytpdGVyYXRpb24pIHsKLSAgICAgICAgICAgIExPRyhJY29uRGF0YWJh
c2UsICJOb3RpZnlpbmcgaWNvbiByZWNlaXZlZCBmb3IgcGFnZVVSTCAlcyIsIHVybEZvckxvZ2dp
bmcoKml0ZXIpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPR19JTkZPKEljb25EYXRh
YmFzZSwgIk5vdGlmeWluZyBpY29uIHJlY2VpdmVkIGZvciBwYWdlVVJMICVzIiwgdXJsRm9yTG9n
Z2luZygqaXRlcikuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgZGlzcGF0Y2hEaWRJbXBv
cnRJY29uRGF0YUZvclBhZ2VVUkxPbk1haW5UaHJlYWQoKml0ZXIpOwogICAgICAgICAgICAgaWYg
KHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBkaWRB
bnlXb3JrOwpAQCAtMTYxNSwxNCArMTYxNSwxNCBAQCBib29sIEljb25EYXRhYmFzZTo6cmVhZEZy
b21EYXRhYmFzZSgpCiAgICAgICAgICAgICBwb29sLmN5Y2xlKCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBMT0coSWNvbkRhdGFiYXNlLCAiRG9uZSBub3RpZnlpbmcgJWkgcGFnZVVSTHMgd2hvIGp1
c3QgcmVjZWl2ZWQgdGhlaXIgaWNvbnMiLCB1cmxzVG9Ob3RpZnkuc2l6ZSgpKTsKKyAgICAgICAg
TE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiRG9uZSBub3RpZnlpbmcgJWkgcGFnZVVSTHMgd2hvIGp1
c3QgcmVjZWl2ZWQgdGhlaXIgaWNvbnMiLCB1cmxzVG9Ob3RpZnkuc2l6ZSgpKTsKICAgICAgICAg
dXJsc1RvTm90aWZ5LmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkU3RvcFRo
cmVhZEFjdGl2aXR5KCkpCiAgICAgICAgICAgICByZXR1cm4gZGlkQW55V29yazsKICAgICB9CiAK
LSAgICBMT0coSWNvbkRhdGFiYXNlLCAiUmVhZGluZyBmcm9tIGRhdGFiYXNlIHRvb2sgJS40ZiBz
ZWNvbmRzIiwgY3VycmVudFRpbWUoKSAtIHRpbWVTdGFtcCk7CisgICAgTE9HX0lORk8oSWNvbkRh
dGFiYXNlLCAiUmVhZGluZyBmcm9tIGRhdGFiYXNlIHRvb2sgJS40ZiBzZWNvbmRzIiwgY3VycmVu
dFRpbWUoKSAtIHRpbWVTdGFtcCk7CiAKICAgICByZXR1cm4gZGlkQW55V29yazsKIH0KQEAgLTE2
NjIsNyArMTY2Miw3IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjp3cml0ZVRvRGF0YWJhc2UoKQogCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpY29uU25hcHNob3RzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgICAgICB3cml0ZUljb25TbmFwc2hvdFRvU1FMRGF0YWJhc2UoaWNvblNuYXBz
aG90c1tpXSk7Ci0gICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiV3JvdGUgSWNvblJlY29y
ZCBmb3IgSWNvblVSTCAlcyB3aXRoIHRpbWVTdGFtcCBvZiAlaSB0byB0aGUgREIiLCB1cmxGb3JM
b2dnaW5nKGljb25TbmFwc2hvdHNbaV0uaWNvblVSTCgpKS5hc2NpaSgpLmRhdGEoKSwgaWNvblNu
YXBzaG90c1tpXS50aW1lc3RhbXAoKSk7CisgICAgICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJh
c2UsICJXcm90ZSBJY29uUmVjb3JkIGZvciBJY29uVVJMICVzIHdpdGggdGltZVN0YW1wIG9mICVp
IHRvIHRoZSBEQiIsIHVybEZvckxvZ2dpbmcoaWNvblNuYXBzaG90c1tpXS5pY29uVVJMKCkpLmFz
Y2lpKCkuZGF0YSgpLCBpY29uU25hcHNob3RzW2ldLnRpbWVzdGFtcCgpKTsKICAgICAgICAgfQog
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWdlU25hcHNob3RzLnNpemUoKTsg
KytpKSB7CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBib29sIEljb25EYXRhYmFzZTo6d3JpdGVUb0Rh
dGFiYXNlKCkKICAgICAgICAgICAgICAgICByZW1vdmVQYWdlVVJMRnJvbVNRTERhdGFiYXNlKHBh
Z2VTbmFwc2hvdHNbaV0ucGFnZVVSTCgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBzZXRJY29uVVJMRm9yUGFnZVVSTEluU1FMRGF0YWJhc2UocGFnZVNuYXBzaG90c1tpXS5p
Y29uVVJMKCksIHBhZ2VTbmFwc2hvdHNbaV0ucGFnZVVSTCgpKTsKLSAgICAgICAgICAgIExPRyhJ
Y29uRGF0YWJhc2UsICJDb21taXR0ZWQgSWNvblVSTCBmb3IgUGFnZVVSTCAlcyB0byBkYXRhYmFz
ZSIsIHVybEZvckxvZ2dpbmcocGFnZVNuYXBzaG90c1tpXS5wYWdlVVJMKCkpLmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIkNvbW1pdHRlZCBJY29u
VVJMIGZvciBQYWdlVVJMICVzIHRvIGRhdGFiYXNlIiwgdXJsRm9yTG9nZ2luZyhwYWdlU25hcHNo
b3RzW2ldLnBhZ2VVUkwoKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICB9CiAKICAgICAgICAg
c3luY1RyYW5zYWN0aW9uLmNvbW1pdCgpOwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgYm9vbCBJY29u
RGF0YWJhc2U6OndyaXRlVG9EYXRhYmFzZSgpCiAgICAgaWYgKGRpZEFueVdvcmspCiAgICAgICAg
IGNoZWNrRm9yRGFuZ2xpbmdQYWdlVVJMcyhmYWxzZSk7CiAKLSAgICBMT0coSWNvbkRhdGFiYXNl
LCAiVXBkYXRpbmcgdGhlIGRhdGFiYXNlIHRvb2sgJS40ZiBzZWNvbmRzIiwgY3VycmVudFRpbWUo
KSAtIHRpbWVTdGFtcCk7CisgICAgTE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiVXBkYXRpbmcgdGhl
IGRhdGFiYXNlIHRvb2sgJS40ZiBzZWNvbmRzIiwgY3VycmVudFRpbWUoKSAtIHRpbWVTdGFtcCk7
CiAKICAgICByZXR1cm4gZGlkQW55V29yazsKIH0KQEAgLTE3MjcsOSArMTcyNyw5IEBAIHZvaWQg
SWNvbkRhdGFiYXNlOjpwcnVuZVVucmV0YWluZWRJY29ucygpCiAgICAgICAgIHBhZ2VEZWxldGVT
UUwucHJlcGFyZSgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVRvRGVsZXRl
OyArK2kpIHsKICNpZiBPUyhXSU5ET1dTKQotICAgICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwg
IlBydW5pbmcgcGFnZSB3aXRoIHJvd2lkICVJNjRpIGZyb20gZGlzayIsIHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4ocGFnZUlEc1RvRGVsZXRlW2ldKSk7CisgICAgICAgICAgICBMT0dfSU5GTyhJY29u
RGF0YWJhc2UsICJQcnVuaW5nIHBhZ2Ugd2l0aCByb3dpZCAlSTY0aSBmcm9tIGRpc2siLCBzdGF0
aWNfY2FzdDxsb25nIGxvbmc+KHBhZ2VJRHNUb0RlbGV0ZVtpXSkpOwogI2Vsc2UKLSAgICAgICAg
ICAgIExPRyhJY29uRGF0YWJhc2UsICJQcnVuaW5nIHBhZ2Ugd2l0aCByb3dpZCAlbGxpIGZyb20g
ZGlzayIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocGFnZUlEc1RvRGVsZXRlW2ldKSk7CisgICAg
ICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJQcnVuaW5nIHBhZ2Ugd2l0aCByb3dpZCAl
bGxpIGZyb20gZGlzayIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4ocGFnZUlEc1RvRGVsZXRlW2ld
KSk7CiAjZW5kaWYKICAgICAgICAgICAgIHBhZ2VEZWxldGVTUUwuYmluZEludDY0KDEsIHBhZ2VJ
RHNUb0RlbGV0ZVtpXSk7CiAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gcGFnZURlbGV0ZVNRTC5z
dGVwKCk7CkBAIC0xNzg3LDkgKzE3ODcsOSBAQCB2b2lkIEljb25EYXRhYmFzZTo6Y2hlY2tGb3JE
YW5nbGluZ1BhZ2VVUkxzKGJvb2wgcHJ1bmVJZkZvdW5kKQogCiAgICAgaWYgKChwcnVuZUlmRm91
bmQgfHwgIWRhbmdsZXJzRm91bmQpICYmIFNRTGl0ZVN0YXRlbWVudChtX3N5bmNEQiwgIlNFTEVD
VCB1cmwgRlJPTSBQYWdlVVJMIFdIRVJFIFBhZ2VVUkwuaWNvbklEIE5PVCBJTiAoU0VMRUNUIGlj
b25JRCBGUk9NIEljb25JbmZvKSBMSU1JVCAxOyIpLnJldHVybnNBdExlYXN0T25lUmVzdWx0KCkp
IHsKICAgICAgICAgZGFuZ2xlcnNGb3VuZCA9IHRydWU7Ci0gICAgICAgIExPRyhJY29uRGF0YWJh
c2UsICJEYW5nbGluZyBQYWdlVVJMIGVudHJpZXMgZm91bmQiKTsKKyAgICAgICAgTE9HX0lORk8o
SWNvbkRhdGFiYXNlLCAiRGFuZ2xpbmcgUGFnZVVSTCBlbnRyaWVzIGZvdW5kIik7CiAgICAgICAg
IGlmIChwcnVuZUlmRm91bmQgJiYgIW1fc3luY0RCLmV4ZWN1dGVDb21tYW5kKCJERUxFVEUgRlJP
TSBQYWdlVVJMIFdIRVJFIGljb25JRCBOT1QgSU4gKFNFTEVDVCBpY29uSUQgRlJPTSBJY29uSW5m
byk7IikpCi0gICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiVW5hYmxlIHRvIHBydW5lIGRh
bmdsaW5nIFBhZ2VVUkxzIik7CisgICAgICAgICAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJV
bmFibGUgdG8gcHJ1bmUgZGFuZ2xpbmcgUGFnZVVSTHMiKTsKICAgICB9CiB9CiAKQEAgLTE3OTcs
NyArMTc5Nyw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29uc09uVGhyZWFkKCkK
IHsKICAgICBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpOwogCi0gICAgTE9HKEljb25EYXRhYmFz
ZSwgIlJlbW92aW5nIGFsbCBpY29ucyBvbiB0aGUgc3luYyB0aHJlYWQiKTsKKyAgICBMT0dfSU5G
TyhJY29uRGF0YWJhc2UsICJSZW1vdmluZyBhbGwgaWNvbnMgb24gdGhlIHN5bmMgdGhyZWFkIik7
CiAgICAgICAgIAogICAgIC8vIERlbGV0ZSBhbGwgdGhlIHByZXBhcmVkIHN0YXRlbWVudHMgc28g
dGhleSBjYW4gc3RhcnQgb3ZlcgogICAgIGRlbGV0ZUFsbFByZXBhcmVkU3RhdGVtZW50cygpOyAg
ICAKQEAgLTE4MDgsNyArMTgwOCw3IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpyZW1vdmVBbGxJY29u
c09uVGhyZWFkKCkKICAgICBtX3N5bmNEQi5ydW5WYWN1dW1Db21tYW5kKCk7CiAgICAgY3JlYXRl
RGF0YWJhc2VUYWJsZXMobV9zeW5jREIpOwogICAgIAotICAgIExPRyhJY29uRGF0YWJhc2UsICJE
aXNwYXRjaGluZyBub3RpZmljYXRpb24gdGhhdCB3ZSByZW1vdmVkIGFsbCBpY29ucyIpOworICAg
IExPR19JTkZPKEljb25EYXRhYmFzZSwgIkRpc3BhdGNoaW5nIG5vdGlmaWNhdGlvbiB0aGF0IHdl
IHJlbW92ZWQgYWxsIGljb25zIik7CiAgICAgZGlzcGF0Y2hEaWRSZW1vdmVBbGxJY29uc09uTWFp
blRocmVhZCgpOyAgICAKIH0KIApAQCAtMTg0NSw3ICsxODQ1LDcgQEAgdm9pZCogSWNvbkRhdGFi
YXNlOjpjbGVhbnVwU3luY1RocmVhZCgpCiAgICAgICAgIHJlbW92ZUFsbEljb25zT25UaHJlYWQo
KTsKIAogICAgIC8vIFN5bmMgcmVtYWluaW5nIGljb25zIG91dAotICAgIExPRyhJY29uRGF0YWJh
c2UsICIoVEhSRUFEKSBEb2luZyBmaW5hbCB3cml0ZW91dCBhbmQgY2xvc3VyZSBvZiBzeW5jIHRo
cmVhZCIpOworICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIihUSFJFQUQpIERvaW5nIGZpbmFs
IHdyaXRlb3V0IGFuZCBjbG9zdXJlIG9mIHN5bmMgdGhyZWFkIik7CiAgICAgd3JpdGVUb0RhdGFi
YXNlKCk7CiAgICAgCiAgICAgLy8gQ2xvc2UgdGhlIGRhdGFiYXNlCkBAIC0xODU3LDcgKzE4NTcs
NyBAQCB2b2lkKiBJY29uRGF0YWJhc2U6OmNsZWFudXBTeW5jVGhyZWFkKCkKICAgICBtX3N5bmNE
Qi5jbG9zZSgpOwogICAgIAogI2lmICFMT0dfRElTQUJMRUQKLSAgICBMT0coSWNvbkRhdGFiYXNl
LCAiKFRIUkVBRCkgRmluYWwgY2xvc3VyZSB0b29rICUuNGYgc2Vjb25kcyIsIGN1cnJlbnRUaW1l
KCkgLSB0aW1lU3RhbXApOworICAgIExPR19JTkZPKEljb25EYXRhYmFzZSwgIihUSFJFQUQpIEZp
bmFsIGNsb3N1cmUgdG9vayAlLjRmIHNlY29uZHMiLCBjdXJyZW50VGltZSgpIC0gdGltZVN0YW1w
KTsKICNlbmRpZgogICAgIAogICAgIG1fc3luY1RocmVhZFJ1bm5pbmcgPSBmYWxzZTsKQEAgLTE4
NzIsNyArMTg3Miw3IEBAIGlubGluZSB2b2lkIHJlYWR5U1FMaXRlU3RhdGVtZW50KE93blB0cjxT
UUxpdGVTdGF0ZW1lbnQ+JiBzdGF0ZW1lbnQsIFNRTGl0ZURhdGFiCiB7CiAgICAgaWYgKHN0YXRl
bWVudCAmJiAoc3RhdGVtZW50LT5kYXRhYmFzZSgpICE9ICZkYiB8fCBzdGF0ZW1lbnQtPmlzRXhw
aXJlZCgpKSkgewogICAgICAgICBpZiAoc3RhdGVtZW50LT5pc0V4cGlyZWQoKSkKLSAgICAgICAg
ICAgIExPRyhJY29uRGF0YWJhc2UsICJTUUxpdGVTdGF0ZW1lbnQgYXNzb2NpYXRlZCB3aXRoICVz
IGlzIGV4cGlyZWQiLCBzdHIuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HX0lORk8o
SWNvbkRhdGFiYXNlLCAiU1FMaXRlU3RhdGVtZW50IGFzc29jaWF0ZWQgd2l0aCAlcyBpcyBleHBp
cmVkIiwgc3RyLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgc3RhdGVtZW50LmNsZWFyKCk7CiAg
ICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7CkBAIC0yMDUzLDcgKzIwNTMsNyBAQCB2b2lkIElj
b25EYXRhYmFzZTo6d3JpdGVJY29uU25hcHNob3RUb1NRTERhdGFiYXNlKGNvbnN0IEljb25TbmFw
c2hvdCYgc25hcHNob3QpCiAgICAgICAgIAogICAgIC8vIEEgbnVsbGVkIG91dCB0aW1lc3RhbXAg
YW5kIGRhdGEgbWVhbnMgdGhpcyBpY29uIGlzIGRlc3RpbmVkIHRvIGJlIGRlbGV0ZWQgLSBkbyB0
aGF0IGluc3RlYWQgb2Ygd3JpdGluZyBpdCBvdXQKICAgICBpZiAoIXNuYXBzaG90LnRpbWVzdGFt
cCgpICYmICFzbmFwc2hvdC5kYXRhKCkpIHsKLSAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIlJl
bW92aW5nICVzIGZyb20gb24tZGlzayBkYXRhYmFzZSIsIHVybEZvckxvZ2dpbmcoc25hcHNob3Qu
aWNvblVSTCgpKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKEljb25EYXRhYmFz
ZSwgIlJlbW92aW5nICVzIGZyb20gb24tZGlzayBkYXRhYmFzZSIsIHVybEZvckxvZ2dpbmcoc25h
cHNob3QuaWNvblVSTCgpKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJlbW92ZUljb25Gcm9t
U1FMRGF0YWJhc2Uoc25hcHNob3QuaWNvblVSTCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5kZXggOGM5ZDBjZWNi
ZmNkMTJiN2VhYTFjNGE4Yzg3MGYxNjQyNTU3Zjc0NS4uOGEyZjBlNDgyZmFkNzc4NjYxNzQ4ZWVj
Mjg3M2UxODBjMGU1ZmE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRl
ci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiAgICAgaWYgKHN0YXR1cyAmJiAoc3RhdHVzIDwgMjAw
IHx8IHN0YXR1cyA+IDI5OSkpCiAgICAgICAgIGRhdGEgPSAwOwogCi0gICAgTE9HKEljb25EYXRh
YmFzZSwgIkljb25Mb2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIENvbW1pdHRpbmcgaWNvblVSTCAl
cyB0byBkYXRhYmFzZSIsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgTE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygp
IC0gQ29tbWl0dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIiwgcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+aWNvbigpLT5j
b21taXRUb0RhdGFiYXNlKHJlc291cmNlLT51cmwoKSk7CiAgICAgLy8gU2V0dGluZyB0aGUgaWNv
biBkYXRhIG9ubHkgYWZ0ZXIgY29tbWl0dGluZyB0byB0aGUgZGF0YWJhc2UgZW5zdXJlcyB0aGF0
IHRoZSBkYXRhIGlzCiAgICAgLy8ga2VwdCBpbiBtZW1vcnkgKHNvIGl0IGRvZXMgbm90IGhhdmUg
dG8gYmUgcmVhZCBmcm9tIHRoZSBkYXRhYmFzZSBhc3luY2hyb25vdXNseSksIHNpbmNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uUmVjb3JkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQuY3BwCmluZGV4IDdlOTBkOGU4Y2I4MGEw
ZGRiZDc4ZWRkMGZjNzdmZmRjNjdmMDNjMTUuLjkyOTI2YTNjMThhOGQ0NDA0ZWFhMTRkZWJjNDFm
ODlmNDY5Yjk2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25S
ZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25SZWNvcmQuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIEljb25SZWNvcmQ6Okljb25SZWNvcmQoY29uc3QgU3RyaW5nJiB1
cmwpCiAKIEljb25SZWNvcmQ6On5JY29uUmVjb3JkKCkKIHsKLSAgICBMT0coSWNvbkRhdGFiYXNl
LCAiRGVzdHJveWluZyBJY29uUmVjb3JkIGZvciBpY29uIHVybCAlcyIsIG1faWNvblVSTC5hc2Np
aSgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiRGVzdHJveWluZyBJY29u
UmVjb3JkIGZvciBpY29uIHVybCAlcyIsIG1faWNvblVSTC5hc2NpaSgpLmRhdGEoKSk7CiB9CiAK
IEltYWdlKiBJY29uUmVjb3JkOjppbWFnZShjb25zdCBJbnRTaXplJikKQEAgLTcwLDcgKzcwLDcg
QEAgdm9pZCBJY29uUmVjb3JkOjpzZXRJbWFnZURhdGEoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEpCiAKICAgICAvLyBDb3B5IHRoZSBwcm92aWRlZCBkYXRhIGludG8gdGhlIGJ1ZmZlciBv
ZiB0aGUgbmV3IEltYWdlIG9iamVjdC4KICAgICBpZiAoIW1faW1hZ2UtPnNldERhdGEoZGF0YSwg
dHJ1ZSkpIHsKLSAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIk1hbnVhbCBpbWFnZSBkYXRhIGZv
ciBpY29uVVJMICclcycgRkFJTEVEIC0gaXQgd2FzIHByb2JhYmx5IGludmFsaWQgaW1hZ2UgZGF0
YSIsIG1faWNvblVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKEljb25EYXRh
YmFzZSwgIk1hbnVhbCBpbWFnZSBkYXRhIGZvciBpY29uVVJMICclcycgRkFJTEVEIC0gaXQgd2Fz
IHByb2JhYmx5IGludmFsaWQgaW1hZ2UgZGF0YSIsIG1faWNvblVSTC5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgICAgIG1faW1hZ2UuY2xlYXIoKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5jcHAKaW5kZXggYTFhMGE1MGRhY2ViY2I2ZDkwMzY0NGM2
MDJkMTQ0OGM4MDI5YjIyYi4uOWI3Mjk0ZWY1YzQwMWQxNGY5MjM4NDJkNzBjZjVhZDNmYTBjYjlj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0ZGVEZyYW1lLmNwcApAQCAtMjU0
LDggKzI1NCw4IEBAIHZvaWQgRkZURnJhbWU6OnByaW50KCkKICAgICBGRlRGcmFtZSYgZnJhbWUg
PSAqdGhpczsKICAgICBmbG9hdCogcmVhbFAgPSBmcmFtZS5yZWFsRGF0YSgpOwogICAgIGZsb2F0
KiBpbWFnUCA9IGZyYW1lLmltYWdEYXRhKCk7Ci0gICAgTE9HKFdlYkF1ZGlvLCAiKioqKiBcbiIp
OwotICAgIExPRyhXZWJBdWRpbywgIkRDID0gJWYgOiBueXF1aXN0ID0gJWZcbiIsIHJlYWxQWzBd
LCBpbWFnUFswXSk7CisgICAgTE9HX0lORk8oV2ViQXVkaW8sICIqKioqIFxuIik7CisgICAgTE9H
X0lORk8oV2ViQXVkaW8sICJEQyA9ICVmIDogbnlxdWlzdCA9ICVmXG4iLCByZWFsUFswXSwgaW1h
Z1BbMF0pOwogCiAgICAgaW50IG4gPSBtX0ZGVFNpemUgLyAyOwogCkBAIC0yNjMsOSArMjYzLDkg
QEAgdm9pZCBGRlRGcmFtZTo6cHJpbnQoKQogICAgICAgICBkb3VibGUgbWFnID0gc3FydChyZWFs
UFtpXSAqIHJlYWxQW2ldICsgaW1hZ1BbaV0gKiBpbWFnUFtpXSk7CiAgICAgICAgIGRvdWJsZSBw
aGFzZSA9IGF0YW4yKHJlYWxQW2ldLCBpbWFnUFtpXSk7CiAKLSAgICAgICAgTE9HKFdlYkF1ZGlv
LCAiWyVkXSAoJWYgJWYpXG4iLCBpLCBtYWcsIHBoYXNlKTsKKyAgICAgICAgTE9HX0lORk8oV2Vi
QXVkaW8sICJbJWRdICglZiAlZilcbiIsIGksIG1hZywgcGhhc2UpOwogICAgIH0KLSAgICBMT0co
V2ViQXVkaW8sICIqKioqXG4iKTsKKyAgICBMT0dfSU5GTyhXZWJBdWRpbywgIioqKipcbiIpOwog
fQogI2VuZGlmIC8vIE5ERUJVRwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9i
bGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5jcHAKaW5kZXggZGMzNTgwZjJiY2VkM2UzM2ZlYzNkODlh
N2M4MGI3NzUwNjIxNTIzYy4uNGIxNTk3YjlmODJhNmM2ZDhhZWQ1NTIyN2JjOGZlZWZkNDEwZTY3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
UGFyc2VyLmNwcApAQCAtMzMyLDcgKzMzMiw3IEBAIFBhcnNlZENvb2tpZSogQ29va2llUGFyc2Vy
OjpwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZSwgdW5zaWduZWQgc3RhcnQsCiAg
ICAgICAgIGNhc2UgJ2MnIDogewogICAgICAgICAgICAgaWYgKGxlbmd0aCA+PSA3ICYmIGNvb2tp
ZS5maW5kKCJvbW1lbnQiLCB0b2tlblN0YXJ0U3ZnICsgMSwgZmFsc2UpKQogICAgICAgICAgICAg
ICAgIC8vIFdlIGRvIG5vdCBoYXZlIHJvb20gZm9yIHRoZSBjb21tZW50IHBhcnQgKGFuZCBzbyBk
byBNb3ppbGxhKSBzbyBqdXN0IGxvZyB0aGUgY29tbWVudC4KLSAgICAgICAgICAgICAgICBMT0co
TmV0d29yaywgIkNvbW1lbnQgJXMgZm9yIFBhcnNlZENvb2tpZSA6ICVzXG4iLCBwYXJzZWRWYWx1
ZS5hc2NpaSgpLmRhdGEoKSwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAg
ICBMT0dfSU5GTyhOZXR3b3JrLCAiQ29tbWVudCAlcyBmb3IgUGFyc2VkQ29va2llIDogJXNcbiIs
IHBhcnNlZFZhbHVlLmFzY2lpKCkuZGF0YSgpLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIExPR19BTkRfREVMRVRFKCJJbnZhbGlkIGNv
b2tpZSAlcyAoY29tbWVudCkiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvR2FtZXBhZHNF
ZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL0dhbWVwYWRzRWZsLmNwcAppbmRl
eCA2M2I2YzQxMmZjMWI2N2JiMzZjNTI1Y2JmMjZhOGIxOGY1NThlNDRjLi45ODAzZWYxNWJkYzI1
OTBjMWI2MmE0YTMzY2U4MDIyNDhkNTVhOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvR2FtZXBhZHNFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9HYW1lcGFkc0VmbC5jcHAKQEAgLTE4MywxMyArMTgzLDEzIEBAIHZvaWQgR2FtZXBhZHNF
Zmw6OnJlZ2lzdGVyRGV2aWNlKGNvbnN0IFN0cmluZyYgc3lzcGF0aCkKICAgICBpZiAoIWRldmlj
ZUZpbGUgfHwgIWVpbmFfc3RyX2hhc19wcmVmaXgoZGV2aWNlRmlsZSwgam95c3RpY2tQcmVmaXgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coR2FtZXBhZCwgIlJlZ2lzdGVyaW5nIGdhbWVw
YWQgYXQgJXMiLCBkZXZpY2VGaWxlKTsKKyAgICBMT0dfSU5GTyhHYW1lcGFkLCAiUmVnaXN0ZXJp
bmcgZ2FtZXBhZCBhdCAlcyIsIGRldmljZUZpbGUpOwogCiAgICAgY29uc3Qgc2l6ZV90IHNsb3RD
b3VudCA9IG1fc2xvdHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBzbG90Q291bnQ7ICsraW5kZXgpIHsKICAgICAgICAgaWYgKCFtX3Nsb3RzW2luZGV4XSkgewog
ICAgICAgICAgICAgbV9zbG90c1tpbmRleF0gPSBHYW1lcGFkRGV2aWNlRWZsOjpjcmVhdGUoU3Ry
aW5nOjpmcm9tVVRGOChkZXZpY2VGaWxlKSk7Ci0gICAgICAgICAgICBMT0coR2FtZXBhZCwgIkdh
bWVwYWQgZGV2aWNlIG5hbWUgaXMgJXMiLCBtX3Nsb3RzW2luZGV4XS0+aWQoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIExPR19JTkZPKEdhbWVwYWQsICJHYW1lcGFkIGRldmljZSBuYW1l
IGlzICVzIiwgbV9zbG90c1tpbmRleF0tPmlkKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBtX2RldmljZU1hcC5hZGQoc3lzcGF0aCwgbV9zbG90c1tpbmRleF0uZ2V0KCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEdhbWVwYWRz
RWZsOjp1bnJlZ2lzdGVyRGV2aWNlKGNvbnN0IFN0cmluZyYgc3lzcGF0aCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgR2FtZXBhZERldmljZUVmbCogZ2FtZXBhZERldmljZSA9IG1fZGV2aWNlTWFw
LnRha2Uoc3lzcGF0aCk7Ci0gICAgTE9HKEdhbWVwYWQsICJVbnJlZ2lzdGVyaW5nIGdhbWVwYWQg
YXQgJXMiLCBnYW1lcGFkRGV2aWNlLT5kZXZpY2VGaWxlKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
TE9HX0lORk8oR2FtZXBhZCwgIlVucmVnaXN0ZXJpbmcgZ2FtZXBhZCBhdCAlcyIsIGdhbWVwYWRE
ZXZpY2UtPmRldmljZUZpbGUoKS51dGY4KCkuZGF0YSgpKTsKICAgICBjb25zdCBzaXplX3QgaW5k
ZXggPSBtX3Nsb3RzLmZpbmQoZ2FtZXBhZERldmljZSk7CiAgICAgQVNTRVJUKGluZGV4ICE9IG5v
dEZvdW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCmluZGV4IGRhOTM1NzBhMGI3YjE3OGNhZTkyM2E5NWVlZjI1NDc2ZTQzYzFhMjMu
LmMwYjI5ZjBmMWI1N2YxZjllOGNlMjU2Yjc5OTg0MzU2MTVhZWEyZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTM5Myw3ICsz
OTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShNZWRpYVBs
YXllckZhY3RvcnkqIGN1cnJlbnQpCiAKICAgICAvLyBEb24ndCBkZWxldGUgYW5kIHJlY3JlYXRl
IHRoZSBwbGF5ZXIgdW5sZXNzIGl0IGNvbWVzIGZyb20gYSBkaWZmZXJlbnQgZW5naW5lLgogICAg
IGlmICghZW5naW5lKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyOjpsb2FkV2l0
aE5leHRNZWRpYUVuZ2luZSAtIG5vIG1lZGlhIGVuZ2luZSBmb3VuZCBmb3IgdHlwZSBcIiVzXCIi
LCBtX2NvbnRlbnRNSU1FVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0lORk8oTWVk
aWEsICJNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUgLSBubyBtZWRpYSBlbmdp
bmUgZm91bmQgZm9yIHR5cGUgXCIlc1wiIiwgbV9jb250ZW50TUlNRVR5cGUudXRmOCgpLmRhdGEo
KSk7CiAgICAgICAgIG1fY3VycmVudE1lZGlhRW5naW5lID0gZW5naW5lOwogICAgICAgICBtX3By
aXZhdGUgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50TWVkaWFFbmdpbmUgIT0g
ZW5naW5lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwCmluZGV4IDhlZTViYWY1OTcyNGQ3NmM4MTQ4MzJjMTM0ODIyMWMwYjNk
ODczNjIuLjE4ZTdkYjc4NGQ1MmE2ZjBhODQ2MjE0YjM1NjFmZWQyZWNlM2E5YjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3Bw
CkBAIC03MywxMiArNzMsMTIgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24oTWVkaWFQbGF5ZXIqIHBsYXkKICAgICAsIG1faGF2
ZVJlcG9ydGVkRmlyc3RWaWRlb0ZyYW1lKGZhbHNlKQogICAgICwgbV9wbGF5V2hlbkZyYW1lc0F2
YWlsYWJsZShmYWxzZSkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbiglcCkiLCB0aGlzKTsKKyAg
ICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKCVwKSIsIHRoaXMpOwogfQogCiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24oKQogewot
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6fk1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbiglcCkiLCB0aGlzKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbiglcCkiLCB0aGlzKTsKICAgICBzZXRJZ25vcmVMb2FkU3RhdGVDaGFuZ2VzKHRydWUp
OwogICAgIGNhbmNlbENhbGxPbk1haW5UaHJlYWQobWFpblRocmVhZENhbGxiYWNrLCB0aGlzKTsK
IH0KQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6c2V0VXBWaWRlb1JlbmRlcmluZygpCiAgICAgaWYgKGN1cnJlbnRNb2RlID09IHByZWZlcnJl
ZE1vZGUgJiYgY3VycmVudE1vZGUgIT0gTWVkaWFSZW5kZXJpbmdOb25lKQogICAgICAgICByZXR1
cm47CiAKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNl
dFVwVmlkZW9SZW5kZXJpbmcoJXApIC0gY3VycmVudCBtb2RlID0gJWQsIHByZWZlcnJlZCBtb2Rl
ID0gJWQiLCAKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6c2V0VXBWaWRlb1JlbmRlcmluZyglcCkgLSBjdXJyZW50IG1vZGUgPSAlZCwgcHJlZmVy
cmVkIG1vZGUgPSAlZCIsIAogICAgICAgICB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KGN1cnJlbnRN
b2RlKSwgc3RhdGljX2Nhc3Q8aW50PihwcmVmZXJyZWRNb2RlKSk7CiAKICAgICBpZiAoY3VycmVu
dE1vZGUgIT0gTWVkaWFSZW5kZXJpbmdOb25lKSAgCkBAIC0xNDUsNyArMTQ1LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldFVwVmlkZW9SZW5kZXJpbmcoKQogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAvLyBJZiB1c2luZyBhIG1vdmllIGxh
eWVyLCBpbmZvcm0gdGhlIGNsaWVudCBzbyB0aGUgY29tcG9zaXRpbmcgdHJlZSBpcyB1cGRhdGVk
LgogICAgIGlmIChjdXJyZW50TW9kZSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIgfHwgcHJlZmVy
cmVkTW9kZSA9PSBNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRVcFZpZGVvUmVuZGVyaW5nKCVwKSAt
IGNhbGxpbmcgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpIiwgdGhpcyk7CisgICAg
ICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRV
cFZpZGVvUmVuZGVyaW5nKCVwKSAtIGNhbGxpbmcgbWVkaWFQbGF5ZXJSZW5kZXJpbmdNb2RlQ2hh
bmdlZCgpIiwgdGhpcyk7CiAgICAgICAgIG1fcGxheWVyLT5tZWRpYVBsYXllckNsaWVudCgpLT5t
ZWRpYVBsYXllclJlbmRlcmluZ01vZGVDaGFuZ2VkKG1fcGxheWVyKTsKICAgICB9CiAjZW5kaWYK
QEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
c2V0VXBWaWRlb1JlbmRlcmluZygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjp0ZWFyRG93blZpZGVvUmVuZGVyaW5nKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OnRlYXJEb3duVmlkZW9SZW5kZXJpbmcoJXApIiwgdGhp
cyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnRlYXJEb3duVmlkZW9SZW5kZXJpbmcoJXApIiwgdGhpcyk7CiAKICAgICBkZXN0cm95Q29udGV4
dFZpZGVvUmVuZGVyZXIoKTsKIApAQCAtMTcwLDcgKzE3MCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uOjpoYXNTZXRVcFZpZGVvUmVuZGVyaW5nKCkgY29uc3QKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwp
CiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2Fk
KCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpsb2FkKCVwKSIsIHRoaXMpOwogCiAgICAgaWYgKG1fbmV0d29ya1N0YXRlICE9
IE1lZGlhUGxheWVyOjpMb2FkaW5nKSB7CiAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQ
bGF5ZXI6OkxvYWRpbmc7CkBAIC0xOTIsMTQgKzE5MiwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbjo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OnBsYXlhYmlsaXR5S25vd24oKQogewotICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cGxheWFiaWxpdHlLbm93bigl
cCkiLCB0aGlzKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6cGxheWFiaWxpdHlLbm93biglcCkiLCB0aGlzKTsKIAogICAgIGlmIChtX2Fzc2V0
SXNQbGF5YWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm90aGluZyBtb3JlIHRvIGRv
IGlmIHdlIGFscmVhZHkgaGF2ZSBhbGwgb2YgdGhlIGl0ZW0ncyBtZXRhZGF0YS4KICAgICBpZiAo
YXNzZXRTdGF0dXMoKSA+IE1lZGlhUGxheWVyQVZBc3NldFN0YXR1c0xvYWRpbmcpIHsKLSAgICAg
ICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpwbGF5YWJpbGl0
eUtub3duKCVwKSAtIGFsbCBtZXRhZGF0YSBsb2FkZWQiLCB0aGlzKTsKKyAgICAgICAgTE9HX0lO
Rk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnBsYXlhYmlsaXR5S25v
d24oJXApIC0gYWxsIG1ldGFkYXRhIGxvYWRlZCIsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMTIsMTQgKzIxMiwxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6cGxheWFiaWxpdHlLbm93bigpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpwcmVwYXJlVG9QbGF5KCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OnByZXBhcmVUb1BsYXkoJXApIiwgdGhpcyk7CisgICAgTE9H
X0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnByZXBhcmVUb1Bs
YXkoJXApIiwgdGhpcyk7CiAKICAgICBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpBdXRvKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnBsYXkoKQogewotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cGxheSglcCkiLCB0aGlz
KTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
cGxheSglcCkiLCB0aGlzKTsKIAogICAgIC8vIElmIHRoZSBmaWxlIGhhcyB2aWRlbywgZG9uJ3Qg
cmVxdWVzdCBwbGF5YmFjayB1bnRpbCB0aGUgZmlyc3QgZnJhbWUgb2YgdmlkZW8gaXMgcmVhZHkg
dG8gZGlzcGxheQogICAgIC8vIG9yIHRoZSBhdWRpbyBtYXkgc3RhcnQgcGxheWluZyBiZWZvcmUg
d2UgY2FuIHJlbmRlciB2aWRlby4KQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6cGxheSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uOjpwYXVzZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpwYXVzZSglcCkiLCB0aGlzKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cGF1c2UoJXApIiwgdGhpcyk7CiAgICAgbV9w
bGF5V2hlbkZyYW1lc0F2YWlsYWJsZSA9IGZhbHNlOwogICAgIHBsYXRmb3JtUGF1c2UoKTsKIH0K
QEAgLTI0Niw3ICsyNDYsNyBAQCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OmR1cmF0aW9uKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2NhY2hlZER1cmF0
aW9uID0gZHVyYXRpb247Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpkdXJhdGlvbiglcCkgLSBjYWNoaW5nICVmIiwgdGhpcywgbV9jYWNoZWREdXJhdGlv
bik7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OmR1cmF0aW9uKCVwKSAtIGNhY2hpbmcgJWYiLCB0aGlzLCBtX2NhY2hlZER1cmF0aW9uKTsKICAg
ICByZXR1cm4gbV9jYWNoZWREdXJhdGlvbjsKIH0KIApAQCAtMjYxLDcgKzI2MSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrKGZsb2F0IHRpbWUpCiAgICAgaWYg
KGN1cnJlbnRUaW1lKCkgPT0gdGltZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlh
LCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrKCVwKSAtIHNlZWtpbmcgdG8g
JWYiLCB0aGlzLCB0aW1lKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6c2VlayglcCkgLSBzZWVraW5nIHRvICVmIiwgdGhpcywgdGltZSk7CiAg
ICAgbV9zZWVrVG8gPSB0aW1lOwogCiAgICAgc2Vla1RvVGltZSh0aW1lKTsKQEAgLTI2OSw3ICsy
NjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2VlayhmbG9hdCB0
aW1lKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0UmF0ZShmbG9h
dCByYXRlKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6c2V0UmF0ZSglcCkgLSBzZXRpbmcgdG8gJWYiLCB0aGlzLCByYXRlKTsKKyAgICBMT0dfSU5G
TyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0UmF0ZSglcCkgLSBz
ZXRpbmcgdG8gJWYiLCB0aGlzLCByYXRlKTsKICAgICBtX3JlcXVlc3RlZFJhdGUgPSByYXRlOwog
CiAgICAgdXBkYXRlUmF0ZSgpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIEludFNpemUgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpuYXR1cmFsU2l6ZSgpIGNvbnN0CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXROYXR1cmFsU2l6ZShJbnRTaXplIHNpemUpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOnNldE5hdHVy
YWxTaXplKCVwKSAtIHNpemUgPSAlZCB4ICVkIiwgdGhpcywgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjpzZXROYXR1cmFsU2l6ZSglcCkgLSBzaXplID0gJWQgeCAlZCIsIHRoaXMsIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAKICAgICBJbnRTaXplIG9sZFNpemUgPSBtX2NhY2hlZE5h
dHVyYWxTaXplOwogICAgIG1fY2FjaGVkTmF0dXJhbFNpemUgPSBzaXplOwpAQCAtMzU2LDcgKzM1
Niw3IEBAIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWF4VGltZVNlZWth
YmxlKCkgY29uc3QKICAgICBpZiAoIW1fY2FjaGVkTWF4VGltZVNlZWthYmxlKQogICAgICAgICBt
X2NhY2hlZE1heFRpbWVTZWVrYWJsZSA9IHBsYXRmb3JtTWF4VGltZVNlZWthYmxlKCk7CiAKLSAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Om1heFRpbWVTZWVr
YWJsZSglcCkgLSByZXR1cm5pbmcgJWYiLCB0aGlzLCBtX2NhY2hlZE1heFRpbWVTZWVrYWJsZSk7
CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Om1h
eFRpbWVTZWVrYWJsZSglcCkgLSByZXR1cm5pbmcgJWYiLCB0aGlzLCBtX2NhY2hlZE1heFRpbWVT
ZWVrYWJsZSk7CiAgICAgcmV0dXJuIG1fY2FjaGVkTWF4VGltZVNlZWthYmxlOyAgIAogfQogCkBA
IC0zNzgsNyArMzc4LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRp
ZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0CiAgICAgZmxvYXQgY3VycmVudE1heFRpbWVMb2FkZWQg
PSBtYXhUaW1lTG9hZGVkKCk7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MgPSBjdXJyZW50
TWF4VGltZUxvYWRlZCAhPSBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3M7
CiAgICAgbV9tYXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzID0gY3VycmVudE1h
eFRpbWVMb2FkZWQ7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uOjpkaWRMb2FkaW5nUHJvZ3Jlc3MoJXApIC0gcmV0dXJuaW5nICVkIiwgdGhpcywgZGlkTG9h
ZGluZ1Byb2dyZXNzKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbjo6ZGlkTG9hZGluZ1Byb2dyZXNzKCVwKSAtIHJldHVybmluZyAlZCIsIHRoaXMs
IGRpZExvYWRpbmdQcm9ncmVzcyk7CiAgICAgcmV0dXJuIGRpZExvYWRpbmdQcm9ncmVzczsKIH0K
IApAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Ojp1cGRhdGVTdGF0ZXMoKQogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgb2xkTmV0d29y
a1N0YXRlID0gbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgb2xk
UmVhZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6dXBkYXRlU3RhdGVzKCVwKSAtIGVudGVyaW5nIHdpdGggbmV0
d29ya1N0YXRlID0gJWksIHJlYWR5U3RhdGUgPSAlaSIsIAorICAgIExPR19JTkZPKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjp1cGRhdGVTdGF0ZXMoJXApIC0gZW50ZXJp
bmcgd2l0aCBuZXR3b3JrU3RhdGUgPSAlaSwgcmVhZHlTdGF0ZSA9ICVpIiwgCiAgICAgICAgIHRo
aXMsIHN0YXRpY19jYXN0PGludD4obV9uZXR3b3JrU3RhdGUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1f
cmVhZHlTdGF0ZSkpOwogCiAgICAgaWYgKG1fbG9hZGluZ01ldGFkYXRhKQpAQCAtNTA5LDcgKzUw
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjp1cGRhdGVTdGF0ZXMo
KQogICAgICAgICBwbGF0Zm9ybVBsYXkoKTsKICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyglcCkgLSBleGl0aW5nIHdp
dGggbmV0d29ya1N0YXRlID0gJWksIHJlYWR5U3RhdGUgPSAlaSIsIAorICAgIExPR19JTkZPKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjp1cGRhdGVTdGF0ZXMoJXApIC0g
ZXhpdGluZyB3aXRoIG5ldHdvcmtTdGF0ZSA9ICVpLCByZWFkeVN0YXRlID0gJWkiLCAKICAgICAg
ICAgdGhpcywgc3RhdGljX2Nhc3Q8aW50PihtX25ldHdvcmtTdGF0ZSksIHN0YXRpY19jYXN0PGlu
dD4obV9yZWFkeVN0YXRlKSk7CiB9CiAKQEAgLTU2MCwxMyArNTYwLDEzIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZWVrYWJsZVRpbWVSYW5nZXNDaGFuZ2VkKCkKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnRpbWVDaGFuZ2VkKGRvdWJsZSB0
aW1lKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
dGltZUNoYW5nZWQoJXApIC0gdGltZSA9ICVmIiwgdGhpcywgdGltZSk7CisgICAgTE9HX0lORk8o
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnRpbWVDaGFuZ2VkKCVwKSAt
IHRpbWUgPSAlZiIsIHRoaXMsIHRpbWUpOwogICAgIFVOVVNFRF9QQVJBTSh0aW1lKTsKIH0KIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNlZWtDb21wbGV0ZWQoYm9vbCBm
aW5pc2hlZCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OnNlZWtDb21wbGV0ZWQoJXApIC0gZmluaXNoZWQgPSAlZCIsIHRoaXMsIGZpbmlzaGVkKTsK
KyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2Vl
a0NvbXBsZXRlZCglcCkgLSBmaW5pc2hlZCA9ICVkIiwgdGhpcywgZmluaXNoZWQpOwogICAgIFVO
VVNFRF9QQVJBTShmaW5pc2hlZCk7CiAgICAgCiAgICAgbV9zZWVrVG8gPSBNZWRpYVBsYXllcjo6
aW52YWxpZFRpbWUoKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbjo6ZGlkRW5kKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246OmludmFsaWRhdGVDYWNoZWREdXJhdGlvbigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjppbnZhbGlkYXRlQ2FjaGVkRHVyYXRpb24oJXAp
IiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246OmludmFsaWRhdGVDYWNoZWREdXJhdGlvbiglcCkiLCB0aGlzKTsKICAgICAKICAgICBt
X2NhY2hlZER1cmF0aW9uID0gTWVkaWFQbGF5ZXI6OmludmFsaWRUaW1lKCk7CiAKQEAgLTY1NSw3
ICs2NTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0RGVsYXlD
YWxsYmFja3MoYm9vbCBkZWxheSkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb246Om1haW5UaHJlYWRDYWxsYmFjayh2b2lkKiBjb250ZXh0KQogewotICAgIExPRyhN
ZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6bWFpblRocmVhZENhbGxiYWNr
KCVwKSIsIGNvbnRleHQpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjptYWluVGhyZWFkQ2FsbGJhY2soJXApIiwgY29udGV4dCk7CiAgICAgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uKiBwbGF5ZXIgPSBzdGF0aWNfY2FzdDxNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24qPihjb250ZXh0KTsKICAgICBwbGF5ZXItPmNsZWFyTWFp
blRocmVhZFBlbmRpbmdGbGFnKCk7CiAgICAgcGxheWVyLT5kaXNwYXRjaE5vdGlmaWNhdGlvbigp
OwpAQCAtNjc5LDcgKzY3OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
OjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uCiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzY2hlZHVsZU1haW5UaHJlYWROb3RpZmljYXRp
b24oTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OnNjaGVkdWxlTWFpblRocmVhZE5vdGlmaWNhdGlvbigl
cCkgLSBub3RpZmljYXRpb24gJWQiLCB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KG5vdGlmaWNhdGlv
bi50eXBlKCkpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKCVwKSAtIG5vdGlmaWNhdGlv
biAlZCIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4obm90aWZpY2F0aW9uLnR5cGUoKSkpOwogICAg
IG1fcXVldWVNdXRleC5sb2NrKCk7CiAKICAgICAvLyBJdCBpcyBpbXBvcnRhbnQgdG8gYWx3YXlz
IHByb2Nlc3MgdGhlIHByb3BlcnRpZXMgaW4gdGhlIG9yZGVyIHRoYXQgd2UgYXJlIG5vdGlmaWVk
LCAKQEAgLTY5NSw3ICs2OTUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bjo6c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbgogICAgIG1fcXVl
dWVNdXRleC51bmxvY2soKTsKIAogICAgIGlmIChkZWxheURpc3BhdGNoKSB7Ci0gICAgICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWluVGhy
ZWFkTm90aWZpY2F0aW9uKCVwKSAtIGVhcmx5IHJldHVybiIsIHRoaXMpOworICAgICAgICBMT0df
SU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2NoZWR1bGVNYWlu
VGhyZWFkTm90aWZpY2F0aW9uKCVwKSAtIGVhcmx5IHJldHVybiIsIHRoaXMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCVwKSAtIGRpc3BhdGNoaW5nICVkIiwgdGhpcywgc3Rh
dGljX2Nhc3Q8aW50Pihub3RpZmljYXRpb24udHlwZSgpKSk7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpc3BhdGNoTm90aWZpY2F0aW9uKCVw
KSAtIGRpc3BhdGNoaW5nICVkIiwgdGhpcywgc3RhdGljX2Nhc3Q8aW50Pihub3RpZmljYXRpb24u
dHlwZSgpKSk7CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbi50eXBlKCkpIHsKICAgICBjYXNl
IE5vdGlmaWNhdGlvbjo6SXRlbURpZFBsYXlUb0VuZFRpbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAppbmRl
eCA3NWZhYTBjYWEyNmU2MWYxYzc1ZmFhMTcwNGQyYzI3NDFkMTNhMzEyLi5iMmRhNjcwNDY0NWU1
OGRhNzliMjY0Mjc4MTY1ODMzMjlhM2ExNjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTI1OSwx
OCArMjU5LDE4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25DRihNZWRpYVBsYXllcioKICAgICAsIG1fYXZmV3JhcHBlcigw
KQogICAgICwgbV92aWRlb0ZyYW1lSGFzRHJhd24oZmFsc2UpCiB7Ci0gICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbkNGKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKCVw
KSIsIHRoaXMpOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6fk1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRiglcCkiLCB0
aGlzKTsKICAgICBjYW5jZWxMb2FkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0Y6OmNhbmNlbExvYWQoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpjYW5jZWxMb2FkKCVwKSIsIHRoaXMpOworICAgIExPR19J
TkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNhbmNlbExvYWQo
JXApIiwgdGhpcyk7CiAKICAgICAvLyBEbyBub3RoaW5nIHdoZW4gb3VyIGNhbmNlbGxhdGlvbiBv
ZiBwZW5kaW5nIGxvYWRpbmcgY2FsbHMgaXRzIGNvbXBsZXRpb24gaGFuZGxlcgogICAgIHNldERl
bGF5Q2FsbGJhY2tzKHRydWUpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omhhc0NvbnRleHRSZW5kZXJlcigpIGNvbnN0CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZUNvbnRleHRWaWRlb1JlbmRl
cmVyKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Rjo6Y3JlYXRlQ29udGV4dFZpZGVvUmVuZGVyZXIoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8o
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Y3JlYXRlQ29udGV4dFZp
ZGVvUmVuZGVyZXIoJXApIiwgdGhpcyk7CiAKICAgICBpZiAoaW1hZ2VHZW5lcmF0b3IobV9hdmZX
cmFwcGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzI2LDcgKzMyNiw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmNyZWF0ZVZpZGVvTGF5ZXIoKQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpkZXN0cm95VmlkZW9MYXllcigpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OmRlc3Ryb3lW
aWRlb0xheWVyKCVwKSAtIGRlc3Ryb3lpbmcgJXAiLCB0aGlzLCB2aWRlb0xheWVyKG1fYXZmV3Jh
cHBlcikpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OmRlc3Ryb3lWaWRlb0xheWVyKCVwKSAtIGRlc3Ryb3lpbmcgJXAiLCB0aGlzLCB2aWRl
b0xheWVyKG1fYXZmV3JhcHBlcikpOwogICAgIGlmIChtX2F2ZldyYXBwZXIpCiAgICAgICAgIG1f
YXZmV3JhcHBlci0+ZGVzdHJveVZpZGVvTGF5ZXIoKTsKIH0KQEAgLTM5OCw3ICszOTgsNyBAQCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Okl0ZW1TdGF0dXMgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYQogCiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKIHsKLSAgICBMT0coTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1NZWRpYSglcCkiLCB0
aGlzKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGOjpwbGF0Zm9ybU1lZGlhKCVwKSIsIHRoaXMpOwogICAgIFBsYXRmb3JtTWVkaWEgcG07CiAg
ICAgcG0udHlwZSA9IFBsYXRmb3JtTWVkaWE6OkFWRm91bmRhdGlvbkNGTWVkaWFQbGF5ZXJUeXBl
OwogICAgIHBtLm1lZGlhLmF2Y2ZNZWRpYVBsYXllciA9IChBVkNGUGxheWVyKilhdlBsYXllciht
X2F2ZldyYXBwZXIpOwpAQCAtNDI3LDcgKzQyNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtU2V0VmlzaWJsZShib29sIGlzVmlzaWJsZSkKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1QbGF5KCkKIHsKLSAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxheSglcCki
LCB0aGlzKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjpwbGF5KCVwKSIsIHRoaXMpOwogICAgIGlmICghbWV0YURhdGFBdmFpbGFibGUoKSB8
fCAhYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MzgsNyAr
NDM4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1Q
bGF5KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1Q
YXVzZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
Q0Y6OnBhdXNlKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBhdXNlKCVwKSIsIHRoaXMpOwogICAgIGlmICghbWV0YURh
dGFBdmFpbGFibGUoKSB8fCAhYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25DRjo6cGxhdGZvcm1QYXVzZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnVwZGF0ZVJhdGUoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbkNGOjp1cGRhdGVSYXRlKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnVwZGF0ZVJhdGUoJXApIiwg
dGhpcyk7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpIHx8ICFhdlBsYXllcihtX2F2Zldy
YXBwZXIpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBmbG9hdCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1EdXJhdGlvbigpIGNvbnN0CiAg
ICAgZWxzZSBpZiAoQ01USU1FX0lTX0lOREVGSU5JVEUoY21EdXJhdGlvbikpCiAgICAgICAgIGR1
cmF0aW9uID0gbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwogICAgIGVsc2Ugewot
ICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZNYWM6OmR1cmF0aW9uKCVw
KSAtIGludmFsaWQgZHVyYXRpb24sIHJldHVybmluZyAwIiwgdGhpcyk7CisgICAgICAgIExPR19J
TkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGTWFjOjpkdXJhdGlvbiglcCkgLSBpbnZh
bGlkIGR1cmF0aW9uLCByZXR1cm5pbmcgMCIsIHRoaXMpOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKQEAgLTUxMyw3ICs1MTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBjbG9zZWRDYXB0aQogICAgIGlm
ICghbWV0YURhdGFBdmFpbGFibGUoKSB8fCAhYXZQbGF5ZXIobV9hdmZXcmFwcGVyKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSglcCkgLSBzZXR0aW5nIHRvICVzIiwgdGhp
cywgYm9vbFN0cmluZyhjbG9zZWRDYXB0aW9uc1Zpc2libGUpKTsKKyAgICBMT0dfSU5GTyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpzZXRDbG9zZWRDYXB0aW9uc1Zp
c2libGUoJXApIC0gc2V0dGluZyB0byAlcyIsIHRoaXMsIGJvb2xTdHJpbmcoY2xvc2VkQ2FwdGlv
bnNWaXNpYmxlKSk7CiAgICAgQVZDRlBsYXllclNldENsb3NlZENhcHRpb25EaXNwbGF5RW5hYmxl
ZChhdlBsYXllcihtX2F2ZldyYXBwZXIpLCBjbG9zZWRDYXB0aW9uc1Zpc2libGUpOwogfQogCkBA
IC02ODIsNyArNjgyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnQKICAgICBpZiAoY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZUdlbmVyYXRvcihtX2F2ZldyYXBwZXIpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25DRjo6cGFpbnQoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGFpbnQoJXApIiwgdGhpcyk7CiAKICAgICBz
ZXREZWxheUNhbGxiYWNrcyh0cnVlKTsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2Ug
PSBtX2F2ZldyYXBwZXItPmNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChjdXJyZW50VGltZSgpLCBy
ZWN0KTsKQEAgLTgwMiw3ICs4MDIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGOjp0cmFja3NDaGFuZ2VkKCkKICAgICAgICAgc2V0SGFzQ2xvc2VkQ2FwdGlvbnMoaGFz
Q2FwdGlvbnMpOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbkNGOnRyYWNrc0NoYW5nZWQoJXApIC0gaGFzVmlkZW8gPSAlcywgaGFzQXVkaW8g
PSAlcywgaGFzQ2FwdGlvbnMgPSAlcyIsIAorICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6dHJhY2tzQ2hhbmdlZCglcCkgLSBoYXNWaWRlbyA9ICVz
LCBoYXNBdWRpbyA9ICVzLCBoYXNDYXB0aW9ucyA9ICVzIiwgCiAgICAgICAgIHRoaXMsIGJvb2xT
dHJpbmcoaGFzVmlkZW8oKSksIGJvb2xTdHJpbmcoaGFzQXVkaW8oKSksIGJvb2xTdHJpbmcoaGFz
Q2xvc2VkQ2FwdGlvbnMoKSkpOwogCiAgICAgc2l6ZUNoYW5nZWQoKTsKQEAgLTg0OCw3ICs4NDgs
NyBAQCBBVkZXcmFwcGVyOjpBVkZXcmFwcGVyKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGKiBvd25lcikKICAgICA6IG1fb3duZXIob3duZXIpCiAgICAgLCBtX29iamVjdElEKHNfbmV4
dEFWRldyYXBwZXJPYmplY3RJRCsrKQogewotICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OkFW
RldyYXBwZXIoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJBVkZXcmFwcGVyOjpB
VkZXcmFwcGVyKCVwKSIsIHRoaXMpOwogCiAgICAgbV9ub3RpZmljYXRpb25RdWV1ZSA9IGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yubm90aWZp
Y2F0aW9uUXVldWUiLCAwKTsKICAgICBhZGRUb01hcCgpOwpAQCAtODU2LDcgKzg1Niw3IEBAIEFW
RldyYXBwZXI6OkFWRldyYXBwZXIoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIG93
bmVyKQogCiBBVkZXcmFwcGVyOjp+QVZGV3JhcHBlcigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiQVZG
V3JhcHBlcjo6fkFWRldyYXBwZXIoJXAgJWQpIiwgdGhpcywgbV9vYmplY3RJRCk7CisgICAgTE9H
X0lORk8oTWVkaWEsICJBVkZXcmFwcGVyOjp+QVZGV3JhcHBlciglcCAlZCkiLCB0aGlzLCBtX29i
amVjdElEKTsKIAogICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CiAgICAgZGVzdHJveUltYWdlR2Vu
ZXJhdG9yKCk7CkBAIC04OTUsMTQgKzg5NSwxNCBAQCB2b2lkIEFWRldyYXBwZXI6OmFkZFRvTWFw
KCkKICAgICB3aGlsZSAoIW1fb2JqZWN0SUQgfHwgKG1hcCgpLmZpbmQobV9vYmplY3RJRCkgIT0g
bWFwKCkuZW5kKCkpKQogICAgICAgICBtX29iamVjdElEID0gc19uZXh0QVZGV3JhcHBlck9iamVj
dElEKys7CiAgICAgICAgCi0gICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6YWRkVG9NYXAoJXAg
JWQpIiwgdGhpcywgbV9vYmplY3RJRCk7CisgICAgTE9HX0lORk8oTWVkaWEsICJBVkZXcmFwcGVy
OjphZGRUb01hcCglcCAlZCkiLCB0aGlzLCBtX29iamVjdElEKTsKIAogICAgIG1hcCgpLmFkZCht
X29iamVjdElELCB0aGlzKTsKIH0KIAogdm9pZCBBVkZXcmFwcGVyOjpyZW1vdmVGcm9tTWFwKCkg
Y29uc3QKIHsKLSAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpyZW1vdmVGcm9tTWFwKCVwICVk
KSIsIHRoaXMsIG1fb2JqZWN0SUQpOworICAgIExPR19JTkZPKE1lZGlhLCAiQVZGV3JhcHBlcjo6
cmVtb3ZlRnJvbU1hcCglcCAlZCkiLCB0aGlzLCBtX29iamVjdElEKTsKIAogICAgIE11dGV4TG9j
a2VyIGxvY2tlcihtYXBMb2NrKCkpOwogICAgIG1hcCgpLnJlbW92ZShtX29iamVjdElEKTsKQEAg
LTkzMCw3ICs5MzAsNyBAQCB2b2lkIEFWRldyYXBwZXI6OmRpc2Nvbm5lY3RBbmREZWxldGVBVkZX
cmFwcGVyKHZvaWQqIGNvbnRleHQpCiB7CiAgICAgQVZGV3JhcHBlciogYXZmV3JhcHBlciA9IHN0
YXRpY19jYXN0PEFWRldyYXBwZXIqPihjb250ZXh0KTsKIAotICAgIExPRyhNZWRpYSwgIkFWRldy
YXBwZXI6OmRpc2Nvbm5lY3RBbmREZWxldGVBVkZXcmFwcGVyKCVwKSIsIGF2ZldyYXBwZXIpOwor
ICAgIExPR19JTkZPKE1lZGlhLCAiQVZGV3JhcHBlcjo6ZGlzY29ubmVjdEFuZERlbGV0ZUFWRldy
YXBwZXIoJXApIiwgYXZmV3JhcHBlcik7CiAKICAgICBpZiAoYXZmV3JhcHBlci0+YXZQbGF5ZXJJ
dGVtKCkpIHsKICAgICAgICAgQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYgY2VudGVyID0gQ0ZOb3Rp
ZmljYXRpb25DZW50ZXJHZXRMb2NhbENlbnRlcigpOwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgdm9p
ZCBBVkZXcmFwcGVyOjpwZXJpb2RpY1RpbWVPYnNlcnZlckNhbGxiYWNrKEFWQ0ZQbGF5ZXJSZWYs
IENNVGltZSBjbVRpbWUsIHZvaWQKICAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsK
ICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250
ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6
cGVyaW9kaWNUaW1lT2JzZXJ2ZXJDYWxsYmFjayBpbnZva2VkIGZvciBkZWxldGVkIEFWRldyYXBw
ZXIgJWQiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29udGV4dCkpOworICAgICAgICBM
T0dfSU5GTyhNZWRpYSwgIkFWRldyYXBwZXI6OnBlcmlvZGljVGltZU9ic2VydmVyQ2FsbGJhY2sg
aW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
cHRyX3Q+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA0MSwxNCAr
MTA0MSwxNCBAQCB2b2lkIEFWRldyYXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVmLCB2b2lkKiBvYnNlcnZlciwgQwogICAgIEFWRldyYXBwZXIqIHNlbGYg
PSBhdmZXcmFwcGVyRm9yQ2FsbGJhY2tDb250ZXh0KG9ic2VydmVyKTsKICAgICAKICAgICBpZiAo
IXNlbGYpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6bm90aWZpY2F0aW9uQ2Fs
bGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KG9ic2VydmVyKSk7CisgICAgICAgIExPR19JTkZPKE1lZGlhLCAiQVZGV3Jh
cHBlcjo6bm90aWZpY2F0aW9uQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVy
ICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG9ic2VydmVyKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgY2hhciBub3RpZmljYXRpb25O
YW1lWzI1Nl07CiAgICAgQ0ZTdHJpbmdHZXRDU3RyaW5nKHByb3BlcnR5TmFtZSwgbm90aWZpY2F0
aW9uTmFtZSwgc2l6ZW9mKG5vdGlmaWNhdGlvbk5hbWUpLCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJ
KTsKLSAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpub3RpZmljYXRpb25DYWxsYmFjayglcCkg
JXMiLCBzZWxmLCBub3RpZmljYXRpb25OYW1lKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIkFWRldy
YXBwZXI6Om5vdGlmaWNhdGlvbkNhbGxiYWNrKCVwKSAlcyIsIHNlbGYsIG5vdGlmaWNhdGlvbk5h
bWUpOwogI2VuZGlmCiAKICAgICBpZiAoQ0ZFcXVhbChwcm9wZXJ0eU5hbWUsIEFWQ0ZQbGF5ZXJJ
dGVtRGlkUGxheVRvRW5kVGltZU5vdGlmaWNhdGlvbikpCkBAIC0xMDg1LDE3ICsxMDg1LDE3IEBA
IHZvaWQgQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrKEFWQ0ZBc3Nl
dFJlZiwgdm9pZCogY29udGV4dCkKICAgICBNdXRleExvY2tlciBsb2NrZXIobWFwTG9jaygpKTsK
ICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNrQ29udGV4dChjb250
ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6
bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3Jh
cHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CisgICAgICAg
IExPR19JTkZPKE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZFBsYXlhYmxlQ29tcGxldGlvbkNhbGxi
YWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pihjb250ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkUGxheWFibGVDb21wbGV0aW9uQ2FsbGJhY2soJXApIiwg
c2VsZik7CisgICAgTE9HX0lORk8oTWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkUGxheWFibGVDb21w
bGV0aW9uQ2FsbGJhY2soJXApIiwgc2VsZik7CiAgICAgc2VsZi0+bV9vd25lci0+c2NoZWR1bGVN
YWluVGhyZWFkTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90
aWZpY2F0aW9uOjpBc3NldFBsYXlhYmlsaXR5S25vd24pOwogfQogCiB2b2lkIEFWRldyYXBwZXI6
OmNoZWNrUGxheWFiaWxpdHkoKQogewotICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmNoZWNr
UGxheWFiaWxpdHkoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJBVkZXcmFwcGVy
OjpjaGVja1BsYXlhYmlsaXR5KCVwKSIsIHRoaXMpOwogCiAgICAgc3RhdGljIENGQXJyYXlSZWYg
cHJvcGVydHlLZXlOYW1lOwogICAgIGlmICghcHJvcGVydHlLZXlOYW1lKSB7CkBAIC0xMTEzLDE4
ICsxMTEzLDE4IEBAIHZvaWQgQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxi
YWNrKEFWQ0ZBc3NldFJlZiwgdm9pZCogY29udGV4dCkKICAgICBNdXRleExvY2tlciBsb2NrZXIo
bWFwTG9jaygpKTsKICAgICBBVkZXcmFwcGVyKiBzZWxmID0gYXZmV3JhcHBlckZvckNhbGxiYWNr
Q29udGV4dChjb250ZXh0KTsKICAgICBpZiAoIXNlbGYpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAi
QVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29tcGxldGlvbkNhbGxiYWNrIGludm9rZWQgZm9yIGRl
bGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0
KSk7CisgICAgICAgIExPR19JTkZPKE1lZGlhLCAiQVZGV3JhcHBlcjo6bG9hZE1ldGFkYXRhQ29t
cGxldGlvbkNhbGxiYWNrIGludm9rZWQgZm9yIGRlbGV0ZWQgQVZGV3JhcHBlciAlZCIsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb250ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBMT0coTWVkaWEsICJBVkZXcmFwcGVyOjpsb2FkTWV0YWRhdGFDb21wbGV0aW9uQ2Fs
bGJhY2soJXApIiwgc2VsZik7CisgICAgTE9HX0lORk8oTWVkaWEsICJBVkZXcmFwcGVyOjpsb2Fk
TWV0YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2soJXApIiwgc2VsZik7CiAgICAgc2VsZi0+bV9vd25l
ci0+c2NoZWR1bGVNYWluVGhyZWFkTm90aWZpY2F0aW9uKE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6Tm90aWZpY2F0aW9uOjpBc3NldE1ldGFkYXRhTG9hZGVkKTsKIH0KIAogdm9pZCBB
VkZXcmFwcGVyOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSgpCiB7CiAgICAgQVNTRVJUKGF2QXNzZXQo
KSk7Ci0gICAgTE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoJXAp
IC0gcmVxdWVzdGluZyBtZXRhZGF0YSBsb2FkaW5nIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVk
aWEsICJBVkZXcmFwcGVyOjpiZWdpbkxvYWRpbmdNZXRhZGF0YSglcCkgLSByZXF1ZXN0aW5nIG1l
dGFkYXRhIGxvYWRpbmciLCB0aGlzKTsKICAgICBBVkNGQXNzZXRMb2FkVmFsdWVzQXN5bmNocm9u
b3VzbHlGb3JQcm9wZXJ0aWVzKGF2QXNzZXQoKSwgbWV0YWRhdGFLZXlOYW1lcygpLCBsb2FkTWV0
YWRhdGFDb21wbGV0aW9uQ2FsbGJhY2ssIGNhbGxiYWNrQ29udGV4dCgpKTsKIH0KIApAQCAtMTEz
MywxMSArMTEzMywxMSBAQCB2b2lkIEFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayhB
VkNGUGxheWVySXRlbVJlZiwgQm9vbGVhbiBmaW5pc2hlZCwgdm9pZAogICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtYXBMb2NrKCkpOwogICAgIEFWRldyYXBwZXIqIHNlbGYgPSBhdmZXcmFwcGVyRm9y
Q2FsbGJhY2tDb250ZXh0KGNvbnRleHQpOwogICAgIGlmICghc2VsZikgewotICAgICAgICBMT0co
TWVkaWEsICJBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2FsbGJhY2sgaW52b2tlZCBmb3IgZGVs
ZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvbnRleHQp
KTsKKyAgICAgICAgTE9HX0lORk8oTWVkaWEsICJBVkZXcmFwcGVyOjpzZWVrQ29tcGxldGVkQ2Fs
bGJhY2sgaW52b2tlZCBmb3IgZGVsZXRlZCBBVkZXcmFwcGVyICVkIiwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExP
RyhNZWRpYSwgIkFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjayglcCkiLCBzZWxmKTsK
KyAgICBMT0dfSU5GTyhNZWRpYSwgIkFWRldyYXBwZXI6OnNlZWtDb21wbGV0ZWRDYWxsYmFjaygl
cCkiLCBzZWxmKTsKICAgICBzZWxmLT5tX293bmVyLT5zY2hlZHVsZU1haW5UaHJlYWROb3RpZmlj
YXRpb24oTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpOb3RpZmljYXRpb246OlNlZWtD
b21wbGV0ZWQsIHN0YXRpY19jYXN0PGJvb2w+KGZpbmlzaGVkKSk7CiB9CiAKQEAgLTExOTEsMTIg
KzExOTEsMTIgQEAgdm9pZCBBVkZXcmFwcGVyOjpjcmVhdGVBVkNGVmlkZW9MYXllcigpCiAKICAg
ICAvLyBUaGUgbGF5ZXIgd2lsbCBnZXQgaG9va2VkIHVwIHZpYSBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKCkuCiAgICAgbV9hdkNGVmlkZW9MYXll
ci5hZG9wdENGKEFWQ0ZQbGF5ZXJMYXllckNyZWF0ZVdpdGhBVkNGUGxheWVyKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGF2UGxheWVyKCksIG1fbm90aWZpY2F0aW9uUXVldWUpKTsKLSAgICBMT0coTWVk
aWEsICJBVkZXcmFwcGVyOjpjcmVhdGVBVkNGVmlkZW9MYXllciglcCkgLSByZXR1cm5pbmcgJXAi
LCB0aGlzLCB2aWRlb0xheWVyKCkpOworICAgIExPR19JTkZPKE1lZGlhLCAiQVZGV3JhcHBlcjo6
Y3JlYXRlQVZDRlZpZGVvTGF5ZXIoJXApIC0gcmV0dXJuaW5nICVwIiwgdGhpcywgdmlkZW9MYXll
cigpKTsKIH0KIAogdm9pZCBBVkZXcmFwcGVyOjpkZXN0cm95VmlkZW9MYXllcigpCiB7Ci0gICAg
TE9HKE1lZGlhLCAiQVZGV3JhcHBlcjo6ZGVzdHJveVZpZGVvTGF5ZXIoJXApIiwgdGhpcyk7Cisg
ICAgTE9HX0lORk8oTWVkaWEsICJBVkZXcmFwcGVyOjpkZXN0cm95VmlkZW9MYXllciglcCkiLCB0
aGlzKTsKICAgICBtX2xheWVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX2NhVmlkZW9MYXllciA9
IDA7CiAgICAgbV92aWRlb0xheWVyV3JhcHBlciA9IDA7CkBAIC0xMjMxLDEyICsxMjMxLDEyIEBA
IHZvaWQgQVZGV3JhcHBlcjo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoKQogICAgIEFWQ0ZBc3NldElt
YWdlR2VuZXJhdG9yU2V0UmVxdWVzdGVkVGltZVRvbGVyYW5jZUFmdGVyKG1faW1hZ2VHZW5lcmF0
b3IuZ2V0KCksIGtDTVRpbWVaZXJvKTsKICAgICBBVkNGQXNzZXRJbWFnZUdlbmVyYXRvclNldEFw
cGxpZXNQcmVmZXJyZWRUcmFja1RyYW5zZm9ybShtX2ltYWdlR2VuZXJhdG9yLmdldCgpLCB0cnVl
KTsKIAotICAgIExPRyhNZWRpYSwgIkFWRldyYXBwZXI6OmNyZWF0ZUltYWdlR2VuZXJhdG9yKCVw
KSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1faW1hZ2VHZW5lcmF0b3IuZ2V0KCkpOworICAgIExP
R19JTkZPKE1lZGlhLCAiQVZGV3JhcHBlcjo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoJXApIC0gcmV0
dXJuaW5nICVwIiwgdGhpcywgbV9pbWFnZUdlbmVyYXRvci5nZXQoKSk7CiB9CiAKIHZvaWQgQVZG
V3JhcHBlcjo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKCkKIHsKLSAgICBMT0coTWVkaWEsICJBVkZX
cmFwcGVyOjpkZXN0cm95SW1hZ2VHZW5lcmF0b3IoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8o
TWVkaWEsICJBVkZXcmFwcGVyOjpkZXN0cm95SW1hZ2VHZW5lcmF0b3IoJXApIiwgdGhpcyk7CiAg
ICAgbV9pbWFnZUdlbmVyYXRvciA9IDA7CiB9CiAKQEAgLTEyNTQsNyArMTI1NCw3IEBAIFJldGFp
blB0cjxDR0ltYWdlUmVmPiBBVkZXcmFwcGVyOjpjcmVhdGVJbWFnZUZvclRpbWVJblJlY3QoZmxv
YXQgdGltZSwgY29uc3QgSW50CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgZG91YmxlIGR1cmF0
aW9uID0gV1RGOjpjdXJyZW50VGltZSgpIC0gc3RhcnQ7Ci0gICAgTE9HKE1lZGlhLCAiQVZGV3Jh
cHBlcjo6Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KCVwKSAtIGNyZWF0aW5nIGltYWdlIHRvb2sg
JS40ZiIsIHRoaXMsIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZHVyYXRpb24pKTsKKyAgICBMT0df
SU5GTyhNZWRpYSwgIkFWRldyYXBwZXI6OmNyZWF0ZUltYWdlRm9yVGltZUluUmVjdCglcCkgLSBj
cmVhdGluZyBpbWFnZSB0b29rICUuNGYiLCB0aGlzLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGR1
cmF0aW9uKSk7CiAjZW5kaWYKIAogICAgIHJldHVybiBpbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tCmluZGV4IGMxNmU4ZDA2MmFlZjQ0ODliYTc0OWUyZjFhNjQ5NWFkZTk0MmZiOTkuLjk3NjVk
NmFhZGRmMDRkNDhmYzZkMzk1NTE5Nzg0NmU2NTg3OGRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbQpAQCAtMTgyLDcgKzE4Miw3IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKCkKIHsKLSAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjYW5jZWxMb2FkKCVwKSIs
IHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y2FuY2VsTG9hZCglcCkiLCB0aGlzKTsKICAgICB0ZWFyRG93blZpZGVvUmVuZGVy
aW5nKCk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92
ZU9ic2VydmVyOm1fb2JqY09ic2VydmVyLmdldCgpXTsKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUNvbnRleHRWaWRlb1Jl
bmRlcmVyKCkKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTA4MAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUdlbmVyYXRv
cigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUdlbmVyYXRv
ciglcCkiLCB0aGlzKTsKIAogICAgIGlmICghbV9hdkFzc2V0IHx8IG1faW1hZ2VHZW5lcmF0b3Ip
CiAgICAgICAgIHJldHVybjsKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUltYWdlR2VuZXJhdG9yKCkKICAgICBbbV9pbWFn
ZUdlbmVyYXRvci5nZXQoKSBzZXRSZXF1ZXN0ZWRUaW1lVG9sZXJhbmNlQmVmb3JlOmtDTVRpbWVa
ZXJvXTsKICAgICBbbV9pbWFnZUdlbmVyYXRvci5nZXQoKSBzZXRSZXF1ZXN0ZWRUaW1lVG9sZXJh
bmNlQWZ0ZXI6a0NNVGltZVplcm9dOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VHZW5lcmF0b3IoJXApIC0gcmV0dXJuaW5n
ICVwIiwgdGhpcywgbV9pbWFnZUdlbmVyYXRvci5nZXQoKSk7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUdlbmVyYXRv
ciglcCkgLSByZXR1cm5pbmcgJXAiLCB0aGlzLCBtX2ltYWdlR2VuZXJhdG9yLmdldCgpKTsKIH0K
ICNlbmRpZgogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpkZXN0cm95SW1hZ2VHZW5lcmF0b3IoKQogICAgIGlmICghbV9pbWFnZUdl
bmVyYXRvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveUltYWdlR2VuZXJhdG9yKCVwKSAtIGRlc3Ry
b3lpbmcgICVwIiwgdGhpcywgbV9pbWFnZUdlbmVyYXRvci5nZXQoKSk7CisgICAgTE9HX0lORk8o
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95SW1hZ2VH
ZW5lcmF0b3IoJXApIC0gZGVzdHJveWluZyAgJXAiLCB0aGlzLCBtX2ltYWdlR2VuZXJhdG9yLmdl
dCgpKTsKIAogICAgIG1faW1hZ2VHZW5lcmF0b3IgPSAwOwogfQpAQCAtMjgzLDcgKzI4Myw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9MYXll
cigpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBbbV92aWRlb0xheWVyLmdldCgpIHNldE5hbWU6
QCJWaWRlbyBsYXllciJdOwogI2VuZGlmCi0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvTGF5ZXIoJXApIC0gcmV0dXJuaW5n
ICVwIiwgdGhpcywgbV92aWRlb0xheWVyLmdldCgpKTsKKyAgICAgICAgTE9HX0lORk8oTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0xheWVyKCVw
KSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1fdmlkZW9MYXllci5nZXQoKSk7CiAgICAgfQogfQog
CkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpkZXN0cm95VmlkZW9MYXllcigpCiAgICAgaWYgKCFtX3ZpZGVvTGF5ZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmRlc3Ryb3lWaWRlb0xheWVyKCVwKSAtIGRlc3Ryb3lpbmciLCB0aGlzLCBtX3ZpZGVv
TGF5ZXIuZ2V0KCkpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvTGF5ZXIoJXApIC0gZGVzdHJveWluZyIsIHRoaXMs
IG1fdmlkZW9MYXllci5nZXQoKSk7CiAKICAgICBbbV92aWRlb0xheWVyLmdldCgpIHNldFBsYXll
cjpuaWxdOwogCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQogICAg
IGlmIChtX2F2QXNzZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoJXApIiwg
dGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKCVwKSIsIHRoaXMpOwogCiAgICAgc2V0RGVsYXlD
YWxsYmFja3ModHJ1ZSk7CiAKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWUGxheWVyKCkKICAgICBpZiAobV9hdlBsYXll
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXIoJXApIiwgdGhpcyk7CisgICAgTE9HX0lO
Rk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVlBs
YXllciglcCkiLCB0aGlzKTsKIAogICAgIHNldERlbGF5Q2FsbGJhY2tzKHRydWUpOwogCkBAIC0z
NjcsNyArMzY3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
cmVhdGVBVlBsYXllckl0ZW0oKQogICAgIGlmIChtX2F2UGxheWVySXRlbSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZQbGF5ZXJJdGVtKCVw
KSIsIHRoaXMpOwogCiAgICAgc2V0RGVsYXlDYWxsYmFja3ModHJ1ZSk7CiAKQEAgLTM5MSw3ICsz
OTEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNoZWNrUGxh
eWFiaWxpdHkoKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXZlQ2hlY2tlZFBsYXlhYmlsaXR5
ID0gdHJ1ZTsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNoZWNrUGxheWFiaWxpdHkoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja1BsYXlhYmlsaXR5KCVw
KSIsIHRoaXMpOwogCiAgICAgW21fYXZBc3NldC5nZXQoKSBsb2FkVmFsdWVzQXN5bmNocm9ub3Vz
bHlGb3JLZXlzOltOU0FycmF5IGFycmF5V2l0aE9iamVjdDpAInBsYXlhYmxlIl0gY29tcGxldGlv
bkhhbmRsZXI6XnsKICAgICAgICAgW21fb2JqY09ic2VydmVyLmdldCgpIHBsYXlhYmxlS25vd25d
OwpAQCAtNDAwLDcgKzQwMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y2hlY2tQbGF5YWJpbGl0eSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0YWRhdGEoKQogewotICAgIExPRyhNZWRpYSwgIk1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmJlZ2luTG9hZGluZ01ldGFkYXRhKCVw
KSAtIHJlcXVlc3RpbmcgbWV0YWRhdGEgbG9hZGluZyIsIHRoaXMpOworICAgIExPR19JTkZPKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YmVnaW5Mb2FkaW5nTWV0
YWRhdGEoJXApIC0gcmVxdWVzdGluZyBtZXRhZGF0YSBsb2FkaW5nIiwgdGhpcyk7CiAgICAgW21f
YXZBc3NldC5nZXQoKSBsb2FkVmFsdWVzQXN5bmNocm9ub3VzbHlGb3JLZXlzOlthc3NldE1ldGFk
YXRhS2V5TmFtZXMoKSByZXRhaW5dIGNvbXBsZXRpb25IYW5kbGVyOl57CiAgICAgICAgIFttX29i
amNPYnNlcnZlci5nZXQoKSBtZXRhZGF0YUxvYWRlZF07CiAgICAgfV07CkBAIC00MjgsNyArNDI4
LDcgQEAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpJdGVtU3RhdHVzIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnAKIAogUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QKIHsKLSAgICBM
T0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybU1l
ZGlhKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NZWRpYSglcCkiLCB0aGlzKTsKICAgICBQbGF0Zm9y
bU1lZGlhIHBtOwogICAgIHBtLnR5cGUgPSBQbGF0Zm9ybU1lZGlhOjpBVkZvdW5kYXRpb25NZWRp
YVBsYXllclR5cGU7CiAgICAgcG0ubWVkaWEuYXZmTWVkaWFQbGF5ZXIgPSBtX2F2UGxheWVyLmdl
dCgpOwpAQCAtNDM3LDcgKzQzNyw3IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiAKIFBsYXRmb3JtTGF5ZXIq
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25z
dAogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBsYXRmb3JtTGF5ZXIoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKCVwKSIsIHRoaXMpOwog
ICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIuZ2V0KCk7CiB9CiAKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtU2V0VmlzaWJs
ZShib29sIGlzVmlzaWJsZSkKICAgICAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGxhdGZvcm1QbGF5KCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybVBsYXkoJXApIiwgdGhpcyk7CisgICAgTE9H
X0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9y
bVBsYXkoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGxheSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZSglcCkiLCB0aGlz
KTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnBsYXRmb3JtUGF1c2UoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtZXRhRGF0YUF2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBmbG9hdCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUR1cmF0aW9uKCkgY29uc3QKICAg
ICAgICAgICAgIHJldHVybiBudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CiAgICAg
fQogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cGxhdGZvcm1EdXJhdGlvbiglcCkgLSBpbnZhbGlkIGR1cmF0aW9uLCByZXR1cm5pbmcgJS4wZiIs
IHRoaXMsIE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtRHVyYXRpb24oJXAp
IC0gaW52YWxpZCBkdXJhdGlvbiwgcmV0dXJuaW5nICUuMGYiLCB0aGlzLCBNZWRpYVBsYXllcjo6
aW52YWxpZFRpbWUoKSk7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppbnZhbGlkVGltZSgpOwog
fQogCkBAIC01NDAsNyArNTQwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCBjbG9zZWRDYXAKICAgICBpZiAo
IW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldENsb3NlZENhcHRpb25zVmlz
aWJsZSglcCkgLSBzZXR0aW5nIHRvICVzIiwgdGhpcywgYm9vbFN0cmluZyhjbG9zZWRDYXB0aW9u
c1Zpc2libGUpKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSglcCkgLSBzZXR0aW5nIHRvICVz
IiwgdGhpcywgYm9vbFN0cmluZyhjbG9zZWRDYXB0aW9uc1Zpc2libGUpKTsKICAgICBbbV9hdlBs
YXllci5nZXQoKSBzZXRDbG9zZWRDYXB0aW9uRGlzcGxheUVuYWJsZWQ6Y2xvc2VkQ2FwdGlvbnNW
aXNpYmxlXTsKIH0KIApAQCAtNzM0LDcgKzczNCw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVJbWFnZUZvclRpbWVJblJl
CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgZG91YmxlIGR1cmF0aW9uID0gV1RGOjpjdXJyZW50
VGltZSgpIC0gc3RhcnQ7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KCVwKSAtIGNyZWF0aW5nIGltYWdl
IHRvb2sgJS40ZiIsIHRoaXMsIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZHVyYXRpb24pKTsKKyAg
ICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNy
ZWF0ZUltYWdlRm9yVGltZUluUmVjdCglcCkgLSBjcmVhdGluZyBpbWFnZSB0b29rICUuNGYiLCB0
aGlzLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGR1cmF0aW9uKSk7CiAjZW5kaWYKIAogICAgIHJl
dHVybiBpbWFnZTsKQEAgLTg2MSw3ICs4NjEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnRyYWNrc0NoYW5nZWQoKQogICAgICAgICBzZXRIYXNDbG9zZWRDYXB0
aW9ucyhoYXNDYXB0aW9ucyk7CiAgICAgfQogCi0gICAgTE9HKE1lZGlhLCAiV2ViQ29yZUFWRk1v
dmllT2JzZXJ2ZXI6dHJhY2tzQ2hhbmdlZCglcCkgLSBoYXNWaWRlbyA9ICVzLCBoYXNBdWRpbyA9
ICVzLCBoYXNDYXB0aW9ucyA9ICVzIiwgCisgICAgTE9HX0lORk8oTWVkaWEsICJXZWJDb3JlQVZG
TW92aWVPYnNlcnZlcjp0cmFja3NDaGFuZ2VkKCVwKSAtIGhhc1ZpZGVvID0gJXMsIGhhc0F1ZGlv
ID0gJXMsIGhhc0NhcHRpb25zID0gJXMiLCAKICAgICAgICAgdGhpcywgYm9vbFN0cmluZyhoYXNW
aWRlbygpKSwgYm9vbFN0cmluZyhoYXNBdWRpbygpKSwgYm9vbFN0cmluZyhoYXNDbG9zZWRDYXB0
aW9ucygpKSk7CiAKICAgICBzaXplQ2hhbmdlZCgpOwpAQCAtOTEzLDcgKzkxMyw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzU2luZ2xlU2VjdXJpdHlPcmln
aW4oKSBjb25zdAogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA4MAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1
dCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y3JlYXRlVmlkZW9PdXRwdXQoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCglcCki
LCB0aGlzKTsKIAogICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92aWRlb091dHB1dCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtOTI1LDcgKzkyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQogCiAgICAgW21fYXZQbGF5ZXJJ
dGVtLmdldCgpIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKIAotICAgIExPRyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvT3V0cHV0
KCVwKSAtIHJldHVybmluZyAlcCIsIHRoaXMsIG1fdmlkZW9PdXRwdXQuZ2V0KCkpOworICAgIExP
R19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
VmlkZW9PdXRwdXQoJXApIC0gcmV0dXJuaW5nICVwIiwgdGhpcywgbV92aWRlb091dHB1dC5nZXQo
KSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJv
eVZpZGVvT3V0cHV0KCkKQEAgLTkzNSw3ICs5MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCgpCiAKICAgICBpZiAobV9hdlBs
YXllckl0ZW0pCiAgICAgICAgIFttX2F2UGxheWVySXRlbS5nZXQoKSByZW1vdmVPdXRwdXQ6bV92
aWRlb091dHB1dC5nZXQoKV07Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvT3V0cHV0KCVwKSAtIGRlc3Ryb3lpbmcgICVwIiwg
dGhpcywgbV92aWRlb091dHB1dC5nZXQoKSk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoJXApIC0gZGVz
dHJveWluZyAgJXAiLCB0aGlzLCBtX3ZpZGVvT3V0cHV0LmdldCgpKTsKIAogICAgIG1fdmlkZW9P
dXRwdXQgPSAwOwogfQpAQCAtOTU0LDcgKzk1NCw3IEBAIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVQaXhlbEJ1ZmZl
CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgZG91YmxlIGR1cmF0aW9uID0gV1RGOjpjdXJyZW50
VGltZSgpIC0gc3RhcnQ7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlUGl4ZWxCdWZmZXIoKSAtIGNyZWF0aW5nIGJ1ZmZlciB0b29rICUu
NGYiLCB0aGlzLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGR1cmF0aW9uKSk7CisgICAgTE9HX0lO
Rk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVQaXhl
bEJ1ZmZlcigpIC0gY3JlYXRpbmcgYnVmZmVyIHRvb2sgJS40ZiIsIHRoaXMsIG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoZHVyYXRpb24pKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKQEAg
LTEyMDIsNyArMTIwMiw3IEBAIC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRo
IG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkKIHsKICAgICBVTlVTRURf
UEFSQU0oY2hhbmdlKTsKIAotICAgIExPRyhNZWRpYSwgIldlYkNvcmVBVkZNb3ZpZU9ic2VydmVy
Om9ic2VydmVWYWx1ZUZvcktleVBhdGgoJXApIC0ga2V5UGF0aCA9ICVzIiwgc2VsZiwgW2tleVBh
dGggVVRGOFN0cmluZ10pOworICAgIExPR19JTkZPKE1lZGlhLCAiV2ViQ29yZUFWRk1vdmllT2Jz
ZXJ2ZXI6b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aCglcCkgLSBrZXlQYXRoID0gJXMiLCBzZWxmLCBb
a2V5UGF0aCBVVEY4U3RyaW5nXSk7CiAKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnku
Y3BwCmluZGV4IGNkZjYwMDZkNzY5NzI4MTFhMTYwZmE4MzY1MmQ0YTA0OWUwNGI5ZjcuLjU1YTVh
NDZlZWFkOTAzYmNlZDZmNjRmYjBiMGVlNjA3MWE3YTc0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxh
Y2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtNzksMTYgKzc5LDE2IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFdURjo6
U3RyaW5nPiYgdHlwZXMpCiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJp
dmF0ZTo6c3VwcG9ydHNUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiB0eXBlLCBjb25zdCBXVEY6OlN0
cmluZyYgY29kZWNzLCBjb25zdCBLVVJMJikKIHsKICAgICBpZiAodHlwZS5pc051bGwoKSB8fCB0
eXBlLmlzRW1wdHkoKSkgewotICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllciBkb2VzIG5v
dCBzdXBwb3J0IHR5cGU7IHR5cGUgaXMgbnVsbCBvciBlbXB0eS4iKTsKKyAgICAgICAgTE9HX0lO
Rk8oTWVkaWEsICJNZWRpYVBsYXllciBkb2VzIG5vdCBzdXBwb3J0IHR5cGU7IHR5cGUgaXMgbnVs
bCBvciBlbXB0eS4iKTsKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRl
ZDsKICAgICB9CiAKICAgICAvLyBzcGVjIHNheXMgd2Ugc2hvdWxkIG5vdCByZXR1cm4gInByb2Jh
Ymx5IiBpZiB0aGUgY29kZWNzIHN0cmluZyBpcyBlbXB0eQogICAgIGlmIChQbGF0Zm9ybVBsYXll
cjo6bWltZVR5cGVTdXBwb3J0ZWQodHlwZS5hc2NpaSgpLmRhdGEoKSkpIHsKLSAgICAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXIgc3VwcG9ydHMgdHlwZTsgY2FjaGUgY29udGFpbnMgdHlwZSAn
JXMnLiIsIHR5cGUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfSU5GTyhNZWRpYSwgIk1l
ZGlhUGxheWVyIHN1cHBvcnRzIHR5cGU7IGNhY2hlIGNvbnRhaW5zIHR5cGUgJyVzJy4iLCB0eXBl
LmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGNvZGVjcy5pc0VtcHR5KCkgPyBNZWRp
YVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CiAgICAg
fQotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyIGRvZXMgbm90IHN1cHBvcnQgdHlwZTsgY2Fj
aGUgZG9lc24ndCBjb250YWluIHR5cGUgJyVzJy4iLCB0eXBlLmFzY2lpKCkuZGF0YSgpKTsKKyAg
ICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyIGRvZXMgbm90IHN1cHBvcnQgdHlwZTsgY2Fj
aGUgZG9lc24ndCBjb250YWluIHR5cGUgJyVzJy4iLCB0eXBlLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogfQogCkBAIC03OTcsNyArNzk3
LDcgQEAgaW50IE1lZGlhUGxheWVyUHJpdmF0ZTo6c2hvd0Vycm9yRGlhbG9nKFBsYXRmb3JtUGxh
eWVyOjpFcnJvciB0eXBlKQogICAgICAgICBhdHlwZSA9IFdlYlBhZ2VDbGllbnQ6Ok1lZGlhSW52
YWxpZEVycm9yOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBMT0coTWVk
aWEsICJBbGVydCB0eXBlIGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICBMT0dfSU5GTyhNZWRp
YSwgIkFsZXJ0IHR5cGUgZG9lcyBub3QgZXhpc3QuIik7CiAgICAgICAgIHJldHVybiAtMTsKICAg
ICB9CiAgICAgcmV0dXJuIG1fd2ViQ29yZVBsYXllci0+bWVkaWFQbGF5ZXJDbGllbnQoKS0+bWVk
aWFQbGF5ZXJIb3N0V2luZG93KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5zaG93QWxlcnREaWFs
b2coYXR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGMwM2VkYTllNGM5
Njg3ODYyMWNjYzg5MGM5ZjNmYThiYjhkZDk2YjguLjVmNDU2YTVhMmY1NzQzZjFlNzg0Y2ZmMzU1
NDFlMThiZGFkMmExMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTIzMCw3
ICsyMzAsNyBAQCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQoTWVkaWFQbGF5ZXIqIHBsYXllcikKIAogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6On5NZWRp
YVBsYXllclByaXZhdGVRVEtpdCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6On5NZWRpYVBsYXllclByaXZhdGVRVEtpdCglcCkiLCB0aGlzKTsKKyAgICBMT0df
SU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp+TWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQoJXApIiwgdGhpcyk7CiAgICAgdGVhckRvd25WaWRlb1JlbmRlcmluZygpOwogCiAgICAg
W1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX29i
amNPYnNlcnZlci5nZXQoKV07CkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIHZvaWQgZGlzYWJs
ZUNvbXBvbmVudHNPbmNlKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRl
UVRNb3ZpZShOU1VSTCAqdXJsLCBOU0RpY3Rpb25hcnkgKm1vdmllQXR0cmlidXRlcykKIHsKLSAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRlUVRNb3ZpZSglcCkg
IiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZSglcCkgIiwgdGhpcyk7CiAgICAgZGlzYWJsZUNvbXBvbmVudHNPbmNlKCk7
CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2Vy
dmVyOm1fb2JqY09ic2VydmVyLmdldCgpXTsKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgQ2xh
c3MgUVRWaWRlb1JlbmRlcmVyQ2xhc3MoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpjcmVhdGVRVE1vdmllVmlldygpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWVWaWV3KCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWVWaWV3KCVwKSIsIHRo
aXMpOwogICAgIGRldGFjaFFUTW92aWVWaWV3KCk7CiAKICAgICBzdGF0aWMgYm9vbCBhZGRlZEN1
c3RvbU1ldGhvZHMgPSBmYWxzZTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllVmlldygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmRldGFjaFFUTW92aWVWaWV3KCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6ZGV0YWNoUVRNb3ZpZVZpZXcoJXApIiwgdGhpcyk7CisgICAgTE9H
X0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGV0YWNoUVRNb3ZpZVZpZXco
JXApIiwgdGhpcyk7CiAgICAgaWYgKG1fcXRNb3ZpZVZpZXcpIHsKICAgICAgICAgW21fb2JqY09i
c2VydmVyLmdldCgpIHNldFZpZXc6bmlsXTsKICAgICAgICAgW21fcXRNb3ZpZVZpZXcuZ2V0KCkg
c2V0RGVsZWdhdGU6bmlsXTsKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpkZXRhY2hRVE1vdmllVmlldygpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OmNyZWF0ZVFUVmlkZW9SZW5kZXJlcihRVFZpZGVvUmVuZGVyZXJNb2RlIHJlbmRlcmVy
TW9kZSkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y3JlYXRl
UVRWaWRlb1JlbmRlcmVyKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUVmlkZW9SZW5kZXJlciglcCkiLCB0aGlzKTsKICAg
ICBkZXN0cm95UVRWaWRlb1JlbmRlcmVyKCk7CiAKICAgICBtX3F0VmlkZW9SZW5kZXJlci5hZG9w
dE5TKFtbUVRWaWRlb1JlbmRlcmVyQ2xhc3MoKSBhbGxvY10gaW5pdF0pOwpAQCAtNTA0LDcgKzUw
NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUVmlkZW9SZW5kZXJl
cihRVFZpZGVvUmVuZGVyZXJNb2RlIHJlbmRlcmVyCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OmRlc3Ryb3lRVFZpZGVvUmVuZGVyZXIoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpkZXN0cm95UVRWaWRlb1JlbmRlcmVyKCVwKSIsIHRoaXMpOwor
ICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmRlc3Ryb3lRVFZp
ZGVvUmVuZGVyZXIoJXApIiwgdGhpcyk7CiAgICAgaWYgKCFtX3F0VmlkZW9SZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6ZGVzdHJveVFUVmlkZW9SZW5kZXJlcigpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWVMYXllcigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNyZWF0ZVFUTW92aWVMYXllciglcCkiLCB0aGlzKTsKKyAgICBM
T0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjcmVhdGVRVE1vdmllTGF5
ZXIoJXApIiwgdGhpcyk7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiAhKFBM
QVRGT1JNKFFUKSAmJiBVU0UoUVRLSVQpKQogICAgIGlmICghbV9xdE1vdmllKQogICAgICAgICBy
ZXR1cm47CkBAIC01NDQsNyArNTQ0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y3JlYXRlUVRNb3ZpZUxheWVyKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGVz
dHJveVFUTW92aWVMYXllcigpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OmRlc3Ryb3lRVE1vdmllTGF5ZXIoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGVzdHJveVFUTW92aWVMYXllciglcCkiLCB0
aGlzKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKCFtX3F0Vmlk
ZW9MYXllcikKICAgICAgICAgcmV0dXJuOwpAQCAtNTg3LDcgKzU4Nyw3IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpNZWRpYVJlbmRlcmluZ01vZGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OnByZWZlcnJlZFJlCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFVwVmlkZW9S
ZW5kZXJpbmcoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpz
ZXRVcFZpZGVvUmVuZGVyaW5nKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFVwVmlkZW9SZW5kZXJpbmcoJXApIiwgdGhpcyk7CiAg
ICAgaWYgKCFpc1JlYWR5Rm9yVmlkZW9TZXR1cCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTYx
OSw3ICs2MTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRVcFZpZGVvUmVu
ZGVyaW5nKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6dGVhckRvd25WaWRlb1Jl
bmRlcmluZygpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnRl
YXJEb3duVmlkZW9SZW5kZXJpbmcoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6dGVhckRvd25WaWRlb1JlbmRlcmluZyglcCkiLCB0aGlz
KTsKICAgICBpZiAobV9xdE1vdmllVmlldykKICAgICAgICAgZGV0YWNoUVRNb3ZpZVZpZXcoKTsK
ICAgICBpZiAobV9xdFZpZGVvUmVuZGVyZXIpCkBAIC02NTEsNyArNjUxLDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6cmVzdW1lTG9hZCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWQoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bG9hZCglcCkiLCB0aGlzKTsKICAgICBtX21v
dmllVVJMID0gdXJsOwogCiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgbm90IHN1cHBvc2VkIHRv
IGxvYWQgYW55IGRhdGEgcmV0dXJuIGltbWVkaWF0ZWx5LgpAQCAtNjg0LDcgKzY4NCw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWRJbnRlcm5hbChjb25zdCBTdHJpbmcmIHVy
bCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cHJlcGFyZVRvUGxheSgpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVUb1BsYXkoJXAp
IiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
cHJlcGFyZVRvUGxheSglcCkiLCB0aGlzKTsKICAgICBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpB
dXRvKTsKIH0KIApAQCAtNzA1LDcgKzcwNSw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6cGxheSgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQ6OnBsYXkoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6cGxheSglcCkiLCB0aGlzKTsKICAgICBpZiAoIW1ldGFEYXRhQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXJ0ZWRQbGF5aW5nID0gdHJ1ZTsKQEAg
LTcxOSw3ICs3MTksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwbGF5KCkKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGF1c2UoKQogewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYXVzZSglcCkiLCB0aGlzKTsKKyAgICBMT0dfSU5G
TyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpwYXVzZSglcCkiLCB0aGlzKTsKICAg
ICBpZiAoIW1ldGFEYXRhQXZhaWxhYmxlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX3N0YXJ0
ZWRQbGF5aW5nID0gZmFsc2U7CkBAIC03NTUsNyArNzU1LDcgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmN1cnJlbnRUaW1lKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6c2VlayhmbG9hdCB0aW1lKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpzZWVrKCVwKSAtIHRpbWUgJWYiLCB0aGlzLCB0aW1lKTsKKyAgICBMT0df
SU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZWVrKCVwKSAtIHRpbWUgJWYi
LCB0aGlzLCB0aW1lKTsKICAgICAvLyBOb3RoaW5nIHRvIGRvIGlmIHdlIGFyZSBhbHJlYWR5IGlu
IHRoZSBtaWRkbGUgb2YgYSBzZWVrIHRvIHRoZSBzYW1lIHRpbWUuCiAgICAgaWYgKHRpbWUgPT0g
bV9zZWVrVG8pCiAgICAgICAgIHJldHVybjsKQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Ojpkb1NlZWsoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjYW5jZWxTZWVrKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2FuY2VsU2VlayglcCkiLCB0aGlzKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpjYW5jZWxTZWVrKCVwKSIsIHRoaXMpOwogICAgIG1fc2Vla1Rv
ID0gLTE7CiAgICAgbV9zZWVrVGltZXIuc3RvcCgpOwogfQpAQCAtODkwLDcgKzg5MCw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFZvbHVtZSglcCkg
LSB2b2x1bWUgJWYiLCB0aGlzLCB2b2x1bWUpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OnNldFZvbHVtZSglcCkgLSB2b2x1bWUgJWYiLCB0aGlzLCB2b2x1
bWUpOwogICAgIGlmIChtX3F0TW92aWUpCiAgICAgICAgIFttX3F0TW92aWUuZ2V0KCkgc2V0Vm9s
dW1lOnZvbHVtZV07ICAKIH0KQEAgLTkxOCwxNCArOTE4LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZShib29sIGNsb3NlZENhcHRpb25z
VmlzaWJsCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFJhdGUoZmxvYXQgcmF0
ZSkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6c2V0UmF0ZSgl
cCkgLSByYXRlICVmIiwgdGhpcywgcmF0ZSk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6c2V0UmF0ZSglcCkgLSByYXRlICVmIiwgdGhpcywgcmF0ZSk7CiAg
ICAgaWYgKG1fcXRNb3ZpZSkKICAgICAgICAgW21fcXRNb3ZpZS5nZXQoKSBzZXRSYXRlOnJhdGVd
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRQcmVzZXJ2ZXNQaXRjaChi
b29sIHByZXNlcnZlc1BpdGNoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpzZXRQcmVzZXJ2ZXNQaXRjaCglcCkgLSBwcmVzZXJ2ZXNQaXRjaCAlZCIsIHRoaXMs
IChpbnQpcHJlc2VydmVzUGl0Y2gpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OnNldFByZXNlcnZlc1BpdGNoKCVwKSAtIHByZXNlcnZlc1BpdGNoICVkIiwg
dGhpcywgKGludClwcmVzZXJ2ZXNQaXRjaCk7CiAgICAgaWYgKCFtX3F0TW92aWUpCiAgICAgICAg
IHJldHVybjsKIApAQCAtOTg5LDcgKzk4OSw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Ojp0b3RhbEJ5dGVzKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6Y2FuY2VsTG9hZCgpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmNhbmNlbExvYWQoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y2FuY2VsTG9hZCglcCkiLCB0aGlzKTsKICAgICAvLyBGSVhNRTog
SXMgdGhlcmUgYSBiZXR0ZXIgd2F5IHRvIGNoZWNrIGZvciB0aGlzPwogICAgIGlmIChtX25ldHdv
cmtTdGF0ZSA8IE1lZGlhUGxheWVyOjpMb2FkaW5nIHx8IG1fbmV0d29ya1N0YXRlID09IE1lZGlh
UGxheWVyOjpMb2FkZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMzIsNyArMTAzMiw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzUmVhZHlGb3JWaWRlb1NldHVwKCkgY29uc3QK
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cHJlcGFyZUZvclJlbmRlcmluZygpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnByZXBhcmVGb3JSZW5k
ZXJpbmcoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZh
dGVRVEtpdDo6cHJlcGFyZUZvclJlbmRlcmluZyglcCkiLCB0aGlzKTsKICAgICBpZiAobV9pc0Fs
bG93ZWRUb1JlbmRlcikKICAgICAgICAgcmV0dXJuOwogICAgIG1faXNBbGxvd2VkVG9SZW5kZXIg
PSB0cnVlOwpAQCAtMTA1MSw3ICsxMDUxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6dXBkYXRlU3RhdGVzKCkKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG9sZE5ldHdv
cmtTdGF0ZSA9IG1fbmV0d29ya1N0YXRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG9s
ZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CiAKLSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6dXBkYXRlU3RhdGVzKCVwKSAtIGVudGVyaW5nIHdpdGggbmV0d29ya1N0
YXRlID0gJWksIHJlYWR5U3RhdGUgPSAlaSIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4obV9uZXR3
b3JrU3RhdGUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVhZHlTdGF0ZSkpOworICAgIExPR19JTkZP
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0ZVN0YXRlcyglcCkgLSBlbnRl
cmluZyB3aXRoIG5ldHdvcmtTdGF0ZSA9ICVpLCByZWFkeVN0YXRlID0gJWkiLCB0aGlzLCBzdGF0
aWNfY2FzdDxpbnQ+KG1fbmV0d29ya1N0YXRlKSwgc3RhdGljX2Nhc3Q8aW50PihtX3JlYWR5U3Rh
dGUpKTsKIAogICAgIAogICAgIGxvbmcgbG9hZFN0YXRlID0gbV9xdE1vdmllID8gW1ttX3F0TW92
aWUuZ2V0KCkgYXR0cmlidXRlRm9yS2V5OlFUTW92aWVMb2FkU3RhdGVBdHRyaWJ1dGVdIGxvbmdW
YWx1ZV0gOiBzdGF0aWNfY2FzdDxsb25nPihRVE1vdmllTG9hZFN0YXRlRXJyb3IpOwpAQCAtMTE2
MywxMiArMTE2MywxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojp1cGRhdGVTdGF0
ZXMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OnVwZGF0ZVN0YXRlcyglcCkgLSBleGl0aW5nIHdpdGggbmV0d29ya1N0YXRlID0g
JWksIHJlYWR5U3RhdGUgPSAlaSIsIHRoaXMsIHN0YXRpY19jYXN0PGludD4obV9uZXR3b3JrU3Rh
dGUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVhZHlTdGF0ZSkpOworICAgIExPR19JTkZPKE1lZGlh
LCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnVwZGF0ZVN0YXRlcyglcCkgLSBleGl0aW5nIHdp
dGggbmV0d29ya1N0YXRlID0gJWksIHJlYWR5U3RhdGUgPSAlaSIsIHRoaXMsIHN0YXRpY19jYXN0
PGludD4obV9uZXR3b3JrU3RhdGUpLCBzdGF0aWNfY2FzdDxpbnQ+KG1fcmVhZHlTdGF0ZSkpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpsb2FkU3RhdGVDaGFuZ2VkKCkKIHsK
LSAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bG9hZFN0YXRlQ2hhbmdl
ZCglcCkgLSBsb2FkU3RhdGUgPSAlbGkiLCB0aGlzLCBbW21fcXRNb3ZpZS5nZXQoKSBhdHRyaWJ1
dGVGb3JLZXk6UVRNb3ZpZUxvYWRTdGF0ZUF0dHJpYnV0ZV0gbG9uZ1ZhbHVlXSk7CisgICAgTE9H
X0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bG9hZFN0YXRlQ2hhbmdlZCgl
cCkgLSBsb2FkU3RhdGUgPSAlbGkiLCB0aGlzLCBbW21fcXRNb3ZpZS5nZXQoKSBhdHRyaWJ1dGVG
b3JLZXk6UVRNb3ZpZUxvYWRTdGF0ZUF0dHJpYnV0ZV0gbG9uZ1ZhbHVlXSk7CiAKICAgICBpZiAo
IW1faGFzVW5zdXBwb3J0ZWRUcmFja3MpCiAgICAgICAgIHVwZGF0ZVN0YXRlcygpOwpAQCAtMTE3
Niw3ICsxMTc2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bG9hZFN0YXRlQ2hh
bmdlZCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmxvYWRlZFJhbmdlc0NoYW5n
ZWQoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpsb2FkZWRS
YW5nZXNDaGFuZ2VkKCVwKSAtIGxvYWRTdGF0ZSA9ICVsaSIsIHRoaXMsIFtbbV9xdE1vdmllLmdl
dCgpIGF0dHJpYnV0ZUZvcktleTpRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlXSBsb25nVmFsdWVd
KTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpsb2FkZWRS
YW5nZXNDaGFuZ2VkKCVwKSAtIGxvYWRTdGF0ZSA9ICVsaSIsIHRoaXMsIFtbbV9xdE1vdmllLmdl
dCgpIGF0dHJpYnV0ZUZvcktleTpRVE1vdmllTG9hZFN0YXRlQXR0cmlidXRlXSBsb25nVmFsdWVd
KTsKIAogICAgIGlmICghbV9oYXNVbnN1cHBvcnRlZFRyYWNrcykKICAgICAgICAgdXBkYXRlU3Rh
dGVzKCk7CkBAIC0xMTg0LDcgKzExODQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
Ojpsb2FkZWRSYW5nZXNDaGFuZ2VkKCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
cmF0ZUNoYW5nZWQoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpyYXRlQ2hhbmdlZCglcCkgLSByYXRlID0gJWxpIiwgdGhpcywgW21fcXRNb3ZpZS5nZXQoKSBy
YXRlXSk7CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cmF0
ZUNoYW5nZWQoJXApIC0gcmF0ZSA9ICVsaSIsIHRoaXMsIFttX3F0TW92aWUuZ2V0KCkgcmF0ZV0p
OwogICAgIGlmIChtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQogICAgICAgICByZXR1cm47CiAKQEAg
LTExOTQsMTQgKzExOTQsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cmF0ZUNo
YW5nZWQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzaXplQ2hhbmdlZCgpCiB7
Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNpemVDaGFuZ2VkKCVw
KSIsIHRoaXMpOworICAgIExPR19JTkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OnNpemVDaGFuZ2VkKCVwKSIsIHRoaXMpOwogICAgIGlmICghbV9oYXNVbnN1cHBvcnRlZFRyYWNr
cykKICAgICAgICAgbV9wbGF5ZXItPnNpemVDaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OnRpbWVDaGFuZ2VkKCkKIHsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6dGltZUNoYW5nZWQoJXApIiwgdGhpcyk7CisgICAgTE9HX0lORk8o
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6dGltZUNoYW5nZWQoJXApIiwgdGhpcyk7
CiAgICAgaWYgKG1faGFzVW5zdXBwb3J0ZWRUcmFja3MpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6dGltZUNoYW5n
ZWQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkaWRFbmQoKQogewotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkaWRFbmQoJXApIiwgdGhpcyk7Cisg
ICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlkRW5kKCVwKSIs
IHRoaXMpOwogICAgIGlmIChtX2hhc1Vuc3VwcG9ydGVkVHJhY2tzKQogICAgICAgICByZXR1cm47
CiAKQEAgLTE1NDgsMTkgKzE1NDgsMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNpdGVzKQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKQogewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOworICAgIExPR19J
TkZPKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSgpIik7
CiAgICAgd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKCk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJiBzaXRl
KQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlh
Q2FjaGVGb3JTaXRlKCkiKTsKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKCkiKTsKICAgICB3a1FUQ2xlYXJNZWRpYURv
d25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFja3MoJXApIiwgdGhpcyk7
CisgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlzYWJsZVVu
c3VwcG9ydGVkVHJhY2tzKCVwKSIsIHRoaXMpOwogCiAgICAgaWYgKCFtX3F0TW92aWUpIHsKICAg
ICAgICAgbV9lbmFibGVkVHJhY2tDb3VudCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9NZWRpYVBsYXllclByaXZhdGVRdC5jcHAKaW5k
ZXggZTA4M2UyOTczMmJiYjc4ZjBmZTUyMzkxMzJhZTU0Yjc0MzRjMDAzYS4uOTRjMmM2ODBkOWZj
NzY5NzEzOWE3MmE0YWI1MTViYzQzNDFmY2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvTWVkaWFQbGF5ZXJQcml2YXRlUXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L01lZGlhUGxheWVyUHJpdmF0ZVF0LmNwcApA
QCAtNDM2LDcgKzQzNiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnN0YXRlQ2hhbmdl
ZChRTWVkaWFQbGF5ZXI6OlN0YXRlKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRdDo6c3VyZmFj
ZUZvcm1hdENoYW5nZWQoY29uc3QgUVZpZGVvU3VyZmFjZUZvcm1hdCYgZm9ybWF0KQogewogICAg
IFFTaXplIHNpemUgPSBmb3JtYXQuc2l6ZUhpbnQoKTsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVRdDo6bmF0dXJhbFNpemVDaGFuZ2VkKCVkeCVkKSIsCisgICAgTE9HX0lORk8o
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRdDo6bmF0dXJhbFNpemVDaGFuZ2VkKCVkeCVkKSIs
CiAgICAgICAgICAgICBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogCiAgICAgaWYgKCFz
aXplLmlzVmFsaWQoKSkKQEAgLTUzMiw3ICs1MzIsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVF0Ojp1cGRhdGVTdGF0ZXMoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVF0OjpzZXRTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlUXQ6OnNldFNpemUoJWR4JWQpIiwKKyAgICBMT0dfSU5GTyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZVF0OjpzZXRTaXplKCVkeCVkKSIsCiAgICAgICAgICAgICBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOwogCiAgICAgaWYgKHNpemUgPT0gbV9jdXJyZW50U2l6ZSkKQEAgLTU0NCwx
MSArNTQ0LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6OnNldFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKIEludFNpemUgTWVkaWFQbGF5ZXJQcml2YXRlUXQ6Om5hdHVyYWxTaXplKCkg
Y29uc3QKIHsKICAgICBpZiAoIWhhc1ZpZGVvKCkgfHwgIG1fcmVhZHlTdGF0ZSA8IE1lZGlhUGxh
eWVyOjpIYXZlTWV0YWRhdGEpIHsKLSAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2
YXRlUXQ6Om5hdHVyYWxTaXplKCkgLT4gMHgwICghaGFzVmlkZW8gfHwgIWhhdmVNZXRhRGF0YSki
KTsKKyAgICAgICAgTE9HX0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRdDo6bmF0dXJh
bFNpemUoKSAtPiAweDAgKCFoYXNWaWRlbyB8fCAhaGF2ZU1ldGFEYXRhKSIpOwogICAgICAgICBy
ZXR1cm4gSW50U2l6ZSgpOwogICAgIH0KIAotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJp
dmF0ZVF0OjpuYXR1cmFsU2l6ZSgpIC0+ICVkeCVkIChtX25hdHVyYWxTaXplKSIsCisgICAgTE9H
X0lORk8oTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRdDo6bmF0dXJhbFNpemUoKSAtPiAlZHgl
ZCAobV9uYXR1cmFsU2l6ZSkiLAogICAgICAgICAgICAgbV9uYXR1cmFsU2l6ZS53aWR0aCgpLCBt
X25hdHVyYWxTaXplLmhlaWdodCgpKTsKIAogICAgIHJldHVybiBtX25hdHVyYWxTaXplOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKaW5kZXggYzhlMWFlNDYxYTJk
M2MyYWMwMGMxNTAyN2FjMDVmZTQ0Y2RlZjM3Zi4uMTBhYzEyNjEwNTRhNzBkMTA1Y2JiOTk5Yzdk
YzA4Y2RmZmI2YTUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIu
Y3BwCkBAIC02MywxMSArNjMsMTEgQEAgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW06OlRleHR1
cmVNYXBwZXJTaGFkZXJQcm9ncmFtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXgKICAgICAgICAg
cmV0dXJuOwogCiAgICAgU3RyaW5nIGxvZyA9IG1fY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyht
X3ZlcnRleFNoYWRlcik7Ci0gICAgTE9HKENvbXBvc2l0aW5nLCAiVmVydGV4IHNoYWRlciBsb2c6
ICVzXG4iLCBsb2cudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oQ29tcG9zaXRpbmcsICJW
ZXJ0ZXggc2hhZGVyIGxvZzogJXNcbiIsIGxvZy51dGY4KCkuZGF0YSgpKTsKICAgICBsb2cgPSBt
X2NvbnRleHQtPmdldFNoYWRlckluZm9Mb2cobV9mcmFnbWVudFNoYWRlcik7Ci0gICAgTE9HKENv
bXBvc2l0aW5nLCAiRnJhZ21lbnQgc2hhZGVyIGxvZzogJXNcbiIsIGxvZy51dGY4KCkuZGF0YSgp
KTsKKyAgICBMT0dfSU5GTyhDb21wb3NpdGluZywgIkZyYWdtZW50IHNoYWRlciBsb2c6ICVzXG4i
LCBsb2cudXRmOCgpLmRhdGEoKSk7CiAgICAgbG9nID0gbV9jb250ZXh0LT5nZXRQcm9ncmFtSW5m
b0xvZyhtX2lkKTsKLSAgICBMT0coQ29tcG9zaXRpbmcsICJQcm9ncmFtIGxvZzogJXNcbiIsIGxv
Zy51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhDb21wb3NpdGluZywgIlByb2dyYW0gbG9n
OiAlc1xuIiwgbG9nLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHQzNEdWludCBUZXh0dXJlTWFwcGVy
U2hhZGVyUHJvZ3JhbTo6Z2V0TG9jYXRpb24oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWYXJp
YWJsZVR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9H
YW1lcGFkc0d0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR2FtZXBhZHNHdGsu
Y3BwCmluZGV4IGFmOTYwOWRkMDg3MTJkMTI4NTIzNjRiZjIwZTZkYmMzZjRhZmZhZjMuLjA3OTEz
YWQyNmMwNGI0Y2RlNTZhYjNkNGMwNGI3N2U5MTBhZTQyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9HYW1lcGFkc0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0dhbWVwYWRzR3RrLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIEdhbWVwYWRz
R3RrOjp+R2FtZXBhZHNHdGsoKQogCiB2b2lkIEdhbWVwYWRzR3RrOjpyZWdpc3RlckRldmljZShT
dHJpbmcgZGV2aWNlRmlsZSkKIHsKLSAgICBMT0coR2FtZXBhZCwgIkdhbWVwYWRzR3RrOjpyZWdp
c3RlckRldmljZSAlcyIsIGRldmljZUZpbGUuYXNjaWkoKS5kYXRhKCkpOworICAgIExPR19JTkZP
KEdhbWVwYWQsICJHYW1lcGFkc0d0azo6cmVnaXN0ZXJEZXZpY2UgJXMiLCBkZXZpY2VGaWxlLmFz
Y2lpKCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1fZGV2aWNlTWFwLmNvbnRhaW5zKGRldmljZUZp
bGUpKTsKIAogICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG1fc2xvdHMuc2l6
ZSgpOyBpbmRleCsrKSB7CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBHYW1lcGFkc0d0azo6cmVn
aXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpCiAKIHZvaWQgR2FtZXBhZHNHdGs6OnVucmVn
aXN0ZXJEZXZpY2UoU3RyaW5nIGRldmljZUZpbGUpCiB7Ci0gICAgTE9HKEdhbWVwYWQsICJHYW1l
cGFkc0d0azo6dW5yZWdpc3RlckRldmljZSAlcyIsIGRldmljZUZpbGUuYXNjaWkoKS5kYXRhKCkp
OworICAgIExPR19JTkZPKEdhbWVwYWQsICJHYW1lcGFkc0d0azo6dW5yZWdpc3RlckRldmljZSAl
cyIsIGRldmljZUZpbGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIEFTU0VSVChtX2RldmljZU1hcC5j
b250YWlucyhkZXZpY2VGaWxlKSk7CiAKICAgICBHYW1lcGFkRGV2aWNlR3RrKiBnYW1lcGFkRGV2
aWNlID0gbV9kZXZpY2VNYXAudGFrZShkZXZpY2VGaWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9LZXlFdmVudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9LZXlFdmVudElPUy5tbQppbmRleCA4MjRhYjdmMWJjYjA0NjAwYTk0NjBiZjBlMzky
MDExNjVjNDVhNWY0Li45MWIxMDllODJjYjkxYjRlNjg4OTZmNDA3MTU3MDNhZmRlZTliY2FhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvS2V5RXZlbnRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0tleUV2ZW50SU9TLm1tCkBAIC00MSw3ICs0
MSw3IEBAIHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcktleUV2ZW50KFdlYkV2ZW50ICpl
dmVudCkKIHsKICAgICBOU1N0cmluZyAqcyA9IGV2ZW50LmNoYXJhY3RlcnNJZ25vcmluZ01vZGlm
aWVyczsKICAgICBpZiAoW3MgbGVuZ3RoXSAhPSAxKSB7Ci0gICAgICAgIExPRyhFdmVudHMsICJy
ZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDog
JXUiLCBbcyBsZW5ndGhdKTsKKyAgICAgICAgTE9HX0lORk8oRXZlbnRzLCAicmVjZWl2ZWQgYW4g
dW5leHBlY3RlZCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiBrZXkgZXZlbnQ6ICV1IiwgW3MgbGVu
Z3RoXSk7CiAgICAgICAgIHJldHVybiAiVW5pZGVudGlmaWVkIjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5t
bQppbmRleCBmMTE2NDI0YmY0N2E1ZDk2YTg2NjRkZWM3ODc3NjUwODkxYjcwM2ZjLi4yMDM2ODkx
MGFjOWU2YmI4MTkyZjdhZDY0MjU5M2ZkODkwNDYxNWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCkBAIC0yNzIs
NyArMjcyLDcgQEAgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JLZXlFdmVudChOU0V2ZW50KiBldmVu
dCkKICAgICAKICAgICBOU1N0cmluZyAqcyA9IFtldmVudCBjaGFyYWN0ZXJzSWdub3JpbmdNb2Rp
ZmllcnNdOwogICAgIGlmIChbcyBsZW5ndGhdICE9IDEpIHsKLSAgICAgICAgTE9HKEV2ZW50cywg
InJlY2VpdmVkIGFuIHVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4ga2V5IGV2ZW50
OiAldSIsIFtzIGxlbmd0aF0pOworICAgICAgICBMT0dfSU5GTyhFdmVudHMsICJyZWNlaXZlZCBh
biB1bmV4cGVjdGVkIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGtleSBldmVudDogJXUiLCBbcyBs
ZW5ndGhdKTsKICAgICAgICAgcmV0dXJuICJVbmlkZW50aWZpZWQiOwogICAgIH0KICAgICByZXR1
cm4ga2V5SWRlbnRpZmllckZvckNoYXJDb2RlKFtzIGNoYXJhY3RlckF0SW5kZXg6MF0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQppbmRleCAxZTlmZTNm
YThiMmYyMDMwZjVkODAxNjllZjQ2YmI2NmE3NWU4ZmYzLi5hNTdkMWUzNjFhNmY1ZGU5OGFhNzJk
MjZhNjY5ODA4OTdlODA4MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsVmlld01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsVmlld01hYy5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZv
cm1TZXRDb250ZW50c1NpemUoKQogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAg
ICBpbnQgdyA9IG1fY29udGVudHNTaXplLndpZHRoKCk7CiAgICAgaW50IGggPSBtX2NvbnRlbnRz
U2l6ZS5oZWlnaHQoKTsKLSAgICBMT0coRnJhbWVzLCAiJXAgJUAgYXQgdyAlZCBoICVkXG4iLCBk
b2N1bWVudFZpZXcoKSwgWyhpZClbZG9jdW1lbnRWaWV3KCkgY2xhc3NdIGNsYXNzTmFtZV0sIHcs
IGgpOyAgICAgICAgICAgIAorICAgIExPR19JTkZPKEZyYW1lcywgIiVwICVAIGF0IHcgJWQgaCAl
ZFxuIiwgZG9jdW1lbnRWaWV3KCksIFsoaWQpW2RvY3VtZW50VmlldygpIGNsYXNzXSBjbGFzc05h
bWVdLCB3LCBoKTsgICAgICAgICAgICAKICAgICBbZG9jdW1lbnRWaWV3KCkgc2V0RnJhbWVTaXpl
Ok5TTWFrZVNpemUobWF4KDAsIHcpLCBtYXgoMCwgaCkpXTsKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jl
c291cmNlSGFuZGxlLmNwcAppbmRleCA2ZDEyZjlkODliMDI0Nzc0NmE1N2UxYmJjYWZiMmMyMTdk
NTkxMDM1Li42NTg2ZWY1MTA1NGZlMWMxNzE3YzgwYjQ5YzhiZjg1OWJhZGIxMjQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcApA
QCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmZvcmNlQ29udGVudFNuaWZm
aW5nKCkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0RGVmZXJzTG9hZGluZyhib29sIGRlZmVy
cykKIHsKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBzZXREZWZlcnNMb2FkaW5nKCVzKSIs
IHRoaXMsIGRlZmVycyA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIExPR19JTkZPKE5ldHdvcmss
ICJIYW5kbGUgJXAgc2V0RGVmZXJzTG9hZGluZyglcykiLCB0aGlzLCBkZWZlcnMgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKIAogICAgIEFTU0VSVChkLT5tX2RlZmVyc0xvYWRpbmcgIT0gZGVmZXJzKTsg
Ly8gRGVmZXJyaW5nIGlzIG5vdCBjb3VudGVkLCBzbyBjYWxsaW5nIHNldERlZmVyc0xvYWRpbmco
KSByZXBlYXRlZGx5IGlzIGxpa2VseSB0byBiZSBpbiBlcnJvci4KICAgICBkLT5tX2RlZmVyc0xv
YWRpbmcgPSBkZWZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvU29ja2V0U3RyZWFtSGFuZGxlQmxh
Y2tCZXJyeS5jcHAKaW5kZXggYjdkY2UzZmJkZThhYmE4NTg4ZmJiNDcwYjFlMWJmZDdmM2Q0MmIz
ZC4uMjczZWVmNmExMmRhOTFjMTY0YTY0ODc4NmY3NTFhMzVlMjZiNDZlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L1NvY2tldFN0cmVhbUhh
bmRsZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9Tb2NrZXRTdHJlYW1IYW5kbGVCbGFja0JlcnJ5LmNwcApAQCAtNTAsNyArNTAs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVh
bUhhbmRsZShjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2Uo
dXJsLCBjbGllbnQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAg
bmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAi
U29ja2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CiAK
ICAgICAvLyBGaW5kIGEgcGxheWVySWQgdG8gcGFzcyB0byB0aGUgcGxhdGZvcm0gY2xpZW50LiBJ
dCBjYW4gYmUgZnJvbSBhbnkgcGFnZQogICAgIC8vIGluIHRoZSBQYWdlR3JvdXAsIHNpbmNlIHRo
ZXkgYWxsIHNoYXJlIHRoZSBzYW1lIG5ldHdvcmsgcHJvZmlsZSBhbmQKQEAgLTc3LDIwICs3Nywy
MCBAQCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShjb25zdCBTdHJpbmcm
IGdyb3VwTmFtZSwgY29uc3QgS1VSTCYgdXJsLAogCiBTb2NrZXRTdHJlYW1IYW5kbGU6On5Tb2Nr
ZXRTdHJlYW1IYW5kbGUoKQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxl
ICVwIGRlbGV0ZSIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGUgJXAgZGVsZXRlIiwgdGhpcyk7CiAgICAgc2V0Q2xpZW50KDApOwogfQogCiBpbnQgU29j
a2V0U3RyZWFtSGFuZGxlOjpwbGF0Zm9ybVNlbmQoY29uc3QgY2hhciogYnVmLCBpbnQgbGVuZ3Ro
KQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtU2Vu
ZCIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAg
cGxhdGZvcm1TZW5kIiwgdGhpcyk7CiAgICAgQVNTRVJUKG1fc29ja2V0U3RyZWFtKTsKICAgICBy
ZXR1cm4gbV9zb2NrZXRTdHJlYW0tPnN0cmVhbVNlbmREYXRhKGJ1ZiwgbGVuZ3RoKTsKIH0KIAog
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQogewotICAgIExPRyhOZXR3
b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsKKyAgICBM
T0dfSU5GTyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0
aGlzKTsKICAgICBBU1NFUlQobV9zb2NrZXRTdHJlYW0pOwogICAgIG1fc29ja2V0U3RyZWFtLT5z
dHJlYW1DbG9zZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKaW5kZXggNzRkYjllZTZiNWU4MjQxMDkwNjUw
NDk4YmRhY2QwYWYyZjEzY2VkMS4uZWZlN2M2NDM4ZmY3ODY2ODljNmFiNDdmZjg2ZjNkZGE0YWFj
ZTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94
eVNlcnZlckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Byb3h5U2VydmVyQ0ZOZXQuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHByb3h5
QXV0b0NvbmZpZ3VyYXRpb25SZXN1bHRDYWxsYmFjayh2b2lkICpjb250ZXh0LCBDRkFycmF5UmVm
IHByb3hpCiAgICAgICAgIEFTU0VSVChlcnJvcik7CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZXJyb3JEZXNjcmlwdGlvbkNGKEFkb3B0Q0YsIENGRXJyb3JDb3B5RGVzY3JpcHRpb24o
ZXJyb3IpKTsKICAgICAgICAgU3RyaW5nIGVycm9yRGVzY3JpcHRpb24oZXJyb3JEZXNjcmlwdGlv
bkNGLmdldCgpKTsKLSAgICAgICAgTE9HKE5ldHdvcmssICJGYWlsZWQgdG8gcHJvY2VzcyBwcm94
eSBhdXRvLWNvbmZpZ3VyYXRpb24gZmlsZSB3aXRoIGVycm9yOiAlcyIsIGVycm9yRGVzY3JpcHRp
b24udXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKE5ldHdvcmssICJGYWlsZWQgdG8g
cHJvY2VzcyBwcm94eSBhdXRvLWNvbmZpZ3VyYXRpb24gZmlsZSB3aXRoIGVycm9yOiAlcyIsIGVy
cm9yRGVzY3JpcHRpb24udXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDkyYzdkNzNiMWYxYjZmYjI4MTA2MjM1NjZkYjRlYjM4
YmY2NDc5NzcuLmNjNDg3ZjViZTMyNDU3YmFmYjAxMDIwMzUyM2U1MmY2ZDQ5NjBjNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RS
ZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RS
ZWYKICAgICAgICAgcmV0dXJuIGNmUmVxdWVzdDsKICAgICB9CiAKLSAgICBMT0coTmV0d29yaywg
IkNGTmV0IC0gd2lsbFNlbmRSZXF1ZXN0KGNvbm49JXAsIGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4s
IGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiQ0ZOZXQgLSB3aWxsU2VuZFJlcXVlc3QoY29u
bj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVz
dCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3Q7CiAgICAgaWYgKGNmUmVkaXJlY3RSZXNwb25zZSkgewpAQCAtMjA1LDcgKzIwNSw3
IEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYgY29u
biwgQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvCiAjZW5kaWYKICAgICBSZXNvdXJjZUhhbmRsZSog
aGFuZGxlID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VIYW5kbGUqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSk7CiAKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbm49JXAsIGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJz
dFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhO
ZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlUmVzcG9uc2UoY29ubj0lcCwgaGFuZGxlPSVwKSAo
JXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKCFoYW5kbGUtPmNsaWVudCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNDEsNyArMjQxLDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJh
eShDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZBcnJheVJlZiBkYXRhQXJyYXksIGMKICAgICBp
ZiAoIWhhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhOZXR3b3Jr
LCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YUFycmF5KGNvbm49JXAsIGhhbmRsZT0lcCwgYXJyYXlM
ZW5ndGg9JWxkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBDRkFycmF5R2V0Q291bnQoZGF0YUFycmF5
KSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlRGF0YUFycmF5KGNvbm49
JXAsIGhhbmRsZT0lcCwgYXJyYXlMZW5ndGg9JWxkKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBDRkFy
cmF5R2V0Q291bnQoZGF0YUFycmF5KSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGhhbmRsZS0+aGFuZGxlRGF0YUFycmF5KGRhdGFB
cnJheSk7CiB9CkBAIC0yNTYsNyArMjU2LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEo
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGRGF0YVJlZiBkYXRhLCBDRkluZGV4IG9yaWcKICAg
ICBjb25zdCBVSW50OCogYnl0ZXMgPSBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpOwogICAgIENGSW5k
ZXggbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwogCi0gICAgTE9HKE5ldHdvcmssICJD
Rk5ldCAtIGRpZFJlY2VpdmVEYXRhKGNvbm49JXAsIGhhbmRsZT0lcCwgYnl0ZXM9JWxkKSAoJXMp
IiwgY29ubiwgaGFuZGxlLCBsZW5ndGgsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIkNGTmV0IC0gZGlk
UmVjZWl2ZURhdGEoY29ubj0lcCwgaGFuZGxlPSVwLCBieXRlcz0lbGQpICglcykiLCBjb25uLCBo
YW5kbGUsIGxlbmd0aCwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIGlmIChoYW5kbGUtPmNsaWVudCgpKQogICAgICAgICBoYW5kbGUt
PmNsaWVudCgpLT5kaWRSZWNlaXZlRGF0YShoYW5kbGUsIChjb25zdCBjaGFyKilieXRlcywgbGVu
Z3RoLCBvcmlnaW5hbExlbmd0aCk7CkBAIC0yNzcsNyArMjc3LDcgQEAgc3RhdGljIEJvb2xlYW4g
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VDYWxsYmFjayhDRlVSTENvbm5lY3Rpb25SZWYgY29u
biwgY29uc3QKICNlbmRpZgogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBjb25zdF9jYXN0
PFJlc291cmNlSGFuZGxlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VIYW5kbGUqPihjbGll
bnRJbmZvKSk7CiAKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoY29ubj0lcCwgaGFuZGxlPSVwKSAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19J
TkZPKE5ldHdvcmssICJDRk5ldCAtIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGNvbm49JXAs
IGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaGFuZGxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
ICNlbmRpZgogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKIAotICAgIExPRyhOZXR3
b3JrLCAiQ0ZOZXQgLSBkaWRGaW5pc2hMb2FkaW5nKGNvbm49JXAsIGhhbmRsZT0lcCkgKCVzKSIs
IGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRGaW5pc2hMb2Fk
aW5nKGNvbm49JXAsIGhhbmRsZT0lcCkgKCVzKSIsIGNvbm4sIGhhbmRsZSwgaGFuZGxlLT5maXJz
dFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChoYW5k
bGUtPmNsaWVudCgpKQogICAgICAgICBoYW5kbGUtPmNsaWVudCgpLT5kaWRGaW5pc2hMb2FkaW5n
KGhhbmRsZSwgMCk7CkBAIC0zMDUsNyArMzA1LDcgQEAgc3RhdGljIHZvaWQgZGlkRmFpbChDRlVS
TENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW4K
ICNlbmRpZgogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKIAotICAgIExPRyhOZXR3
b3JrLCAiQ0ZOZXQgLSBkaWRGYWlsKGNvbm49JXAsIGhhbmRsZT0lcCwgZXJyb3IgPSAlcCkgKCVz
KSIsIGNvbm4sIGhhbmRsZSwgZXJyb3IsIGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIkNGTmV0IC0gZGlk
RmFpbChjb25uPSVwLCBoYW5kbGU9JXAsIGVycm9yID0gJXApICglcykiLCBjb25uLCBoYW5kbGUs
IGVycm9yLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgaWYgKGhhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIGhhbmRsZS0+Y2xpZW50
KCktPmRpZEZhaWwoaGFuZGxlLCBSZXNvdXJjZUVycm9yKGVycm9yKSk7CkBAIC0zNTksNyArMzU5
LDcgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShDRlVSTENvbm5lY3Rpb25SZWYg
Y29ubiwgQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmIGMKICNlbmRpZgogICAgIFJlc291cmNlSGFuZGxl
KiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKTsKICAgICBBU1NFUlQoaGFuZGxlKTsKLSAgICBMT0coTmV0d29yaywgIkNG
TmV0IC0gZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25uPSVwLCBoYW5kbGU9JXAgKCVzKSIsIGNvbm4s
IGhhbmRsZSwgaGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiQ0ZOZXQgLSBkaWRSZWNlaXZlQ2hhbGxlbmdl
KGNvbm49JXAsIGhhbmRsZT0lcCAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVx
dWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaGFuZGxlLT5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hh
bGxlbmdlLCBoYW5kbGUpKTsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgQm9vbGVhbiBj
YW5SZXNwb25kVG9Qcm90ZWN0aW9uU3BhY2UoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJM
UHJvdGVjdAogICAgIFJlc291cmNlSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZUhhbmRsZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKICAgICBBU1NFUlQoaGFu
ZGxlKTsKIAotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBjYW5SZXNwb25kVG9Qcm90ZWN0aW9u
U3BhY2UoY29ubj0lcCwgaGFuZGxlPSVwICglcykiLCBjb25uLCBoYW5kbGUsIGhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8o
TmV0d29yaywgIkNGTmV0IC0gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKGNvbm49JXAsIGhh
bmRsZT0lcCAoJXMpIiwgY29ubiwgaGFuZGxlLCBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIGhhbmRsZS0+Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb3JlKHByb3RlY3Rpb25TcGFjZSkpOwogfQpA
QCAtMzgyLDE0ICszODIsMTQgQEAgc3RhdGljIEJvb2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlv
blNwYWNlKENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFByb3RlY3QKIFJlc291cmNlSGFu
ZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKCkKIHsKICAgICBpZiAobV9jb25u
ZWN0aW9uKSB7Ci0gICAgICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBDYW5jZWxsaW5nIGNvbm5l
Y3Rpb24gJXAgKCVzKSIsIG1fY29ubmVjdGlvbi5nZXQoKSwgbV9maXJzdFJlcXVlc3QudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKE5ldHdvcmssICJDRk5l
dCAtIENhbmNlbGxpbmcgY29ubmVjdGlvbiAlcCAoJXMpIiwgbV9jb25uZWN0aW9uLmdldCgpLCBt
X2ZpcnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgQ0ZV
UkxDb25uZWN0aW9uQ2FuY2VsKG1fY29ubmVjdGlvbi5nZXQoKSk7CiAgICAgfQogfQogCiBSZXNv
dXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKIHsKLSAgICBMT0coTmV0d29yaywgIkNGTmV0
IC0gRGVzdHJveWluZyBqb2IgJXAgKCVzKSIsIHRoaXMsIGQtPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE5ldHdvcmssICJDRk5ldCAt
IERlc3Ryb3lpbmcgam9iICVwICglcykiLCB0aGlzLCBkLT5tX2ZpcnN0UmVxdWVzdC51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogc3RhdGljIENGVVJMUmVxdWVzdFJlZiBtYWtl
RmluYWxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBzaG91bGRD
b250ZW50U25pZmYpCkBAIC01MjcsNyArNTI3LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3Rh
cnQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgQ0ZVUkxDb25uZWN0aW9uU2NoZWR1
bGVEb3dubG9hZFdpdGhSdW5Mb29wKGQtPm1fY29ubmVjdGlvbi5nZXQoKSwgbG9hZGVyUnVuTG9v
cCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIENGVVJMQ29ubmVjdGlvblN0YXJ0KGQt
Pm1fY29ubmVjdGlvbi5nZXQoKSk7CiAKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gU3RhcnRp
bmcgVVJMICVzIChoYW5kbGU9JXAsIGNvbm49JXApIiwgZmlyc3RSZXF1ZXN0KCkudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICBM
T0dfSU5GTyhOZXR3b3JrLCAiQ0ZOZXQgLSBTdGFydGluZyBVUkwgJXMgKGhhbmRsZT0lcCwgY29u
bj0lcCkiLCBmaXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlz
LCBkLT5tX2Nvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC01NzMs
NyArNTczLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKIAogYm9vbCBSZXNvdXJjZUhhbmRs
ZTo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogewotICAgIExPRyhOZXR3b3JrLCAiQ0ZO
ZXQgLSBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIik7CisgICAgTE9HX0lORk8oTmV0d29y
aywgIkNGTmV0IC0gc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSIpOwogICAgIGlmIChjbGll
bnQoKSkKICAgICAgICAgcmV0dXJuIGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSh0aGlzKTsKIApAQCAtNTgyLDcgKzU4Miw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkKIAogdm9pZCBSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBj
aGFsbGVuZ2UpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJDRk5ldCAtIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpIik7CisgICAgTE9HX0lORk8oTmV0d29yaywgIkNGTmV0IC0gZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkiKTsKICAgICBBU1NFUlQoZC0+bV9jdXJy
ZW50V2ViQ2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICAvLyBTaW5jZSBDRlVSTENvbm5lY3Rpb24g
bmV0d29ya2luZyByZWxpZXMgb24ga2VlcGluZyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwg
Q0ZVUkxBdXRoQ2hhbGxlbmdlUmVmLAogICAgIC8vIHdlIG1ha2Ugc3VyZSB0aGF0IGlzIGFjdHVh
bGx5IHByZXNlbnQKQEAgLTY1NSw3ICs2NTUsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpjYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZQog
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkK
IHsKLSAgICBMT0coTmV0d29yaywgIkNGTmV0IC0gcmVjZWl2ZWRDcmVkZW50aWFsKCkiKTsKKyAg
ICBMT0dfSU5GTyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZENyZWRlbnRpYWwoKSIpOwogICAg
IEFTU0VSVCghY2hhbGxlbmdlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJM
QXV0aENoYWxsZW5nZVJlZigpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdl
YkNoYWxsZW5nZSkKQEAgLTY4OSw3ICs2ODksNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNl
aXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZQog
CiB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENy
ZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkKIHsKLSAg
ICBMT0coTmV0d29yaywgIkNGTmV0IC0gcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhvdXRD
cmVkZW50aWFsKCkiKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZFJl
cXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoKSIpOwogICAgIEFTU0VSVCghY2hhbGxl
bmdlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoY2hhbGxlbmdlLmNmVVJMQXV0aENoYWxsZW5nZVJl
ZigpKTsKICAgICBpZiAoY2hhbGxlbmdlICE9IGQtPm1fY3VycmVudFdlYkNoYWxsZW5nZSkKQEAg
LTcwMiw3ICs3MDIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpyZWNlaXZlZFJlcXVlc3RUb0Nv
bnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYQogCiB2b2lkIFJlc291cmNl
SGFuZGxlOjpyZWNlaXZlZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQogewotICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSByZWNlaXZlZENhbmNl
bGxhdGlvbigpIik7CisgICAgTE9HX0lORk8oTmV0d29yaywgIkNGTmV0IC0gcmVjZWl2ZWRDYW5j
ZWxsYXRpb24oKSIpOwogICAgIGlmIChjaGFsbGVuZ2UgIT0gZC0+bV9jdXJyZW50V2ViQ2hhbGxl
bmdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTcxNyw3ICs3MTcsNyBAQCBDRlVSTENvbm5lY3Rp
b25SZWYgUmVzb3VyY2VIYW5kbGU6OmNvbm5lY3Rpb24oKSBjb25zdAogCiBDRlVSTENvbm5lY3Rp
b25SZWYgUmVzb3VyY2VIYW5kbGU6OnJlbGVhc2VDb25uZWN0aW9uRm9yRG93bmxvYWQoKQogewot
ICAgIExPRyhOZXR3b3JrLCAiQ0ZOZXQgLSBKb2IgJXAgcmVsZWFzaW5nIGNvbm5lY3Rpb24gJXAg
Zm9yIGRvd25sb2FkIiwgdGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICBMT0dfSU5G
TyhOZXR3b3JrLCAiQ0ZOZXQgLSBKb2IgJXAgcmVsZWFzaW5nIGNvbm5lY3Rpb24gJXAgZm9yIGRv
d25sb2FkIiwgdGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKICAgICByZXR1cm4gZC0+bV9j
b25uZWN0aW9uLmxlYWtSZWYoKTsKIH0KIApAQCAtNzI4LDcgKzcyOCw3IEBAIENGU3RyaW5nUmVm
IFJlc291cmNlSGFuZGxlOjpzeW5jaHJvbm91c0xvYWRSdW5Mb29wTW9kZSgpCiAKIHZvaWQgUmVz
b3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoTmV0d29ya2luZ0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlh
bHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiB2ZWN0b3IpCiB7Ci0gICAgTE9HKE5ldHdvcmss
ICJSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseTolcyBhbGxvd1N0b3Jl
ZENyZWRlbnRpYWxzOiV1IiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBz
dG9yZWRDcmVkZW50aWFscyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIlJlc291cmNlSGFuZGxl
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiVzIGFsbG93U3RvcmVkQ3JlZGVudGlhbHM6JXUi
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHN0b3JlZENyZWRlbnRpYWxz
KTsKIAogICAgIEFTU0VSVCghcmVxdWVzdC5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
Q0ZOZXQuY3BwCmluZGV4IDRhN2NkOTAyYWU5ZjAyODdkODk4ZDkyYmQ5ODVkZDc2NmQ0MmExNzEu
LjFmOGQ3ZGQzZmJhYTFjOTQ5NTlhYjU3MWZiZTI4ODU4MzZjMjZhNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIFNvY2tldFN0cmVhbUhhbmRsZTo6U29j
a2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50
CiAgICAgLCBtX2Nvbm5lY3Rpb25UeXBlKFVua25vd24pCiAgICAgLCBtX3NlbnRTdG9yZWRDcmVk
ZW50aWFscyhmYWxzZSkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAl
cCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOworICAgIExPR19JTkZPKE5ldHdvcmss
ICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsK
IAogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3MiKSB8fCB1cmwucHJvdG9jb2xJcygid3Nz
IikpOwogCkBAIC01ODEsNyArNTgxLDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OnJlcG9y
dEVycm9yVG9DbGllbnQoQ0ZFcnJvclJlZiBlcnJvcikKIAogU29ja2V0U3RyZWFtSGFuZGxlOjp+
U29ja2V0U3RyZWFtSGFuZGxlKCkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhh
bmRsZSAlcCBkdG9yIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIlNvY2tldFN0cmVh
bUhhbmRsZSAlcCBkdG9yIiwgdGhpcyk7CiAKICAgICBBU1NFUlQoIW1fcGFjUnVuTG9vcFNvdXJj
ZSk7CiB9CkBAIC01OTYsNyArNTk2LDcgQEAgaW50IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZv
cm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAKIHZvaWQgU29ja2V0U3RyZWFt
SGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVh
bUhhbmRsZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywg
IlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7CiAKICAgICBpZiAo
bV9wYWNSdW5Mb29wU291cmNlKSAKICAgICAgICAgcmVtb3ZlUEFDUnVuTG9vcFNvdXJjZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0
cmVhbUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1NvY2tldFN0cmVhbUhhbmRsZUN1cmwuY3BwCmluZGV4IDg5MWU5NmU1MDZmMTUwMjQ2YTJmYjIw
ODBmOWQxOTk1MjQ1MDc1MmEuLjliZmE3ZGM2YTVjZjI1MDVlN2ExMmVhNmI3Y2Y4NmZmMGMzYTk4
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlQ3VybC5jcHAKQEAgLTQyLDI3ICs0MiwyNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRs
ZShjb25zdCBLVVJMJiB1cmwsIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCogY2xpZW50KQogICAg
IDogU29ja2V0U3RyZWFtSGFuZGxlQmFzZSh1cmwsIGNsaWVudCkKIHsKLSAgICBMT0coTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQp
OworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVu
dCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiBTb2Nr
ZXRTdHJlYW1IYW5kbGU6On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQogewotICAgIExPRyhOZXR3b3Jr
LCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMpOworICAgIExPR19JTkZPKE5l
dHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgZGVsZXRlIiwgdGhpcyk7CiAgICAgc2V0Q2xp
ZW50KDApOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIGludCBTb2NrZXRTdHJlYW1IYW5k
bGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiwgaW50KQogewotICAgIExPRyhOZXR3b3JrLCAi
U29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtU2VuZCIsIHRoaXMpOworICAgIExPR19JTkZP
KE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OnBsYXRmb3JtQ2xvc2UoKQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3Ry
ZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsKKyAgICBMT0dfSU5GTyhOZXR3b3Jr
LCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtQ2xvc2UiLCB0aGlzKTsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2VmbC9OZXR3b3JrU3RhdGVOb3RpZmllckVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2VmbC9OZXR3b3JrU3RhdGVOb3RpZmllckVmbC5jcHAKaW5kZXggYTA4
NDg5MDA3YzNmYTkxMzJlZDNhNmJjOTY4Y2I4NGI3ZWZlNDdhYS4uNDhkZDFjMzk3N2M1NzYzM2Jk
MTk4ZmFiY2IxZWExNGY1NDcxNjU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9lZmwvTmV0d29ya1N0YXRlTm90aWZpZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvZWZsL05ldHdvcmtTdGF0ZU5vdGlmaWVyRWZsLmNwcApA
QCAtNTEsNyArNTEsNyBAQCB2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZSgp
CiAgICAgLy8gQXNzdW1lIHRoYXQgd2UncmUgb2ZmbGluZSB1bnRpbCBwcm92ZW4gb3RoZXJ3aXNl
LgogICAgIG1faXNPbkxpbmUgPSBmYWxzZTsKIAotICAgIExPRyhOZXR3b3JrLCAiQ2hlY2tpbmcg
b25saW5lIHN0YXRlLi4uIik7CisgICAgTE9HX0lORk8oTmV0d29yaywgIkNoZWNraW5nIG9ubGlu
ZSBzdGF0ZS4uLiIpOwogCiAgICAgRWluYV9MaXN0KiBuZXR3b3JrSW50ZXJmYWNlcyA9IGVlemVf
bmV0X2xpc3QoKTsKIApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIE5ldHdvcmtTdGF0ZU5vdGlmaWVy
Ojp1cGRhdGVTdGF0ZSgpCiAKICAgICAgICAgLy8gU2tpcCBpbnRlcmZhY2VzIHRoYXQgYXJlIG5v
dCB1cC4KICAgICAgICAgY29uc3QgY2hhciogc3RhdGUgPSBlZXplX25ldF9hdHRyaWJ1dGVfZ2V0
KG5ldHdvcmtJbnRlcmZhY2UsIHVkZXZPcGVyc3RhdGVBdHRyaWJ1dGUpOwotICAgICAgICBMT0co
TmV0d29yaywgIkZvdW5kIG5ldHdvcmsgaW50ZXJmYWNlIFwiJXNcIiB3aXRoIHN0YXRlOiBcIiVz
XCIiLCBzeXNwYXRoLCBzdGF0ZSk7CisgICAgICAgIExPR19JTkZPKE5ldHdvcmssICJGb3VuZCBu
ZXR3b3JrIGludGVyZmFjZSBcIiVzXCIgd2l0aCBzdGF0ZTogXCIlc1wiIiwgc3lzcGF0aCwgc3Rh
dGUpOwogICAgICAgICBpZiAoIXN0YXRlIHx8IHN0cmNtcChzdGF0ZSwgdWRldk9wZXJzdGF0ZVVw
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC03OCwxNCArNzgsMTQgQEAgdm9pZCBOZXR3
b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRlU3RhdGUoKQogICAgICAgICAgICAgY29uc3QgY2hhciog
aXBBZGRyZXNzID0gZWV6ZV9uZXRfYWRkcl9nZXQobmV0d29ya0ludGVyZmFjZSwgRUVaRV9ORVRf
QUREUl9UWVBFX0lQKTsKICAgICAgICAgICAgIGlmICghaXBBZGRyZXNzKQogICAgICAgICAgICAg
ICAgIGlwQWRkcmVzcyA9IGVlemVfbmV0X2FkZHJfZ2V0KG5ldHdvcmtJbnRlcmZhY2UsIEVFWkVf
TkVUX0FERFJfVFlQRV9JUDYpOwotICAgICAgICAgICAgTE9HKE5ldHdvcmssICJOZXR3b3JrIGlu
dGVyZmFjZSBhdCAlcyBoYXMgdGhlIGZvbGxvd2luZyBJUCBhZGRyZXNzOiAlcyIsIHN5c3BhdGgs
IGlwQWRkcmVzcyk7CisgICAgICAgICAgICBMT0dfSU5GTyhOZXR3b3JrLCAiTmV0d29yayBpbnRl
cmZhY2UgYXQgJXMgaGFzIHRoZSBmb2xsb3dpbmcgSVAgYWRkcmVzczogJXMiLCBzeXNwYXRoLCBp
cEFkZHJlc3MpOwogI2VuZGlmCiAgICAgICAgICAgICBtX2lzT25MaW5lID0gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgTE9HKE5ldHdvcmssICJEZXRl
Y3RlZCBvbmxpbmUgc3RhdGUgaXMgXCIlc1wiIiwgbV9pc09uTGluZSA/ICJvbmxpbmUiIDogIm9m
ZmxpbmUiKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiRGV0ZWN0ZWQgb25saW5lIHN0YXRlIGlz
IFwiJXNcIiIsIG1faXNPbkxpbmUgPyAib25saW5lIiA6ICJvZmZsaW5lIik7CiAKICAgICBFSU5B
X0xJU1RfRlJFRShuZXR3b3JrSW50ZXJmYWNlcywgZGF0YSkKICAgICAgICAgZWV6ZV9uZXRfZnJl
ZShzdGF0aWNfY2FzdDxFZXplX05ldCo+KGRhdGEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggNjhi
MTRjMWQ1YmIxMzkyY2NmZGI1MTk0MzA4ZDk5MjMwZWM1YzhjYS4uODVkNTUzNzNiZDI4NTRiNWQx
MDg2ZGU5MzhmNmMyMWMyZjhjOWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTE0MCw3ICsxNDAs
NyBAQCBSZXNvdXJjZUhhbmRsZTo6flJlc291cmNlSGFuZGxlKCkKICAgICByZWxlYXNlRGVsZWdh
dGUoKTsKICAgICBkLT5tX2N1cnJlbnRXZWJDaGFsbGVuZ2Uuc2V0QXV0aGVudGljYXRpb25DbGll
bnQoMCk7CiAKLSAgICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZXN0cm95ZWQiLCB0aGlzKTsK
KyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlc3Ryb3llZCIsIHRoaXMpOwogfQog
CiBzdGF0aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVQb2xpY3koY29uc3QgS1VS
TCYgdXJsKQpAQCAtMjc3LDcgKzI3Nyw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQogICAgIGVsc2UKICAgICAgICAgZC0+bV9zdGFydFdo
ZW5TY2hlZHVsZWQgPSB0cnVlOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgc3RhcnRp
bmcgY29ubmVjdGlvbiAlcCBmb3IgJUAiLCB0aGlzLCBjb25uZWN0aW9uKCksIGZpcnN0UmVxdWVz
dCgpLm5zVVJMUmVxdWVzdCgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiSGFuZGxlICVwIHN0
YXJ0aW5nIGNvbm5lY3Rpb24gJXAgZm9yICVAIiwgdGhpcywgY29ubmVjdGlvbigpLCBmaXJzdFJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoKSk7CiAgICAgCiAgICAgaWYgKGQtPm1fY29ubmVjdGlvbikg
ewogICAgICAgICBpZiAoZC0+bV9kZWZlcnNMb2FkaW5nKQpAQCAtMjkzLDcgKzI5Myw3IEBAIGJv
b2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQogCiB2
b2lkIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKQogewotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxl
ICVwIGNhbmNlbCBjb25uZWN0aW9uICVwIiwgdGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsK
KyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiSGFuZGxlICVwIGNhbmNlbCBjb25uZWN0aW9uICVwIiwg
dGhpcywgZC0+bV9jb25uZWN0aW9uLmdldCgpKTsKIAogICAgIC8vIExlYWtzIHdlcmUgc2VlbiBv
biBIVFRQIHRlc3RzIHdpdGhvdXQgdGhpczsgY2FuIGJlIHJlbW92ZWQgb25jZSA8cmRhcjovL3By
b2JsZW0vNjg4NjkzNz4gaXMgZml4ZWQuCiAgICAgaWYgKGQtPm1fY3VycmVudE1hY0NoYWxsZW5n
ZSkKQEAgLTM4NCw3ICszODQsNyBAQCBDRlN0cmluZ1JlZiBSZXNvdXJjZUhhbmRsZTo6c3luY2hy
b25vdXNMb2FkUnVuTG9vcE1vZGUoKQogCiB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3Rvcjxj
aGFyPiYgZGF0YSkKIHsKLSAgICBMT0coTmV0d29yaywgIlJlc291cmNlSGFuZGxlOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5OiVAIGFsbG93U3RvcmVkQ3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0
Lm5zVVJMUmVxdWVzdCgpLCBzdG9yZWRDcmVkZW50aWFscyk7CisgICAgTE9HX0lORk8oTmV0d29y
aywgIlJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiVAIGFsbG93U3Rv
cmVkQ3JlZGVudGlhbHM6JXUiLCByZXF1ZXN0Lm5zVVJMUmVxdWVzdCgpLCBzdG9yZWRDcmVkZW50
aWFscyk7CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2Nv
bElzKCJibG9iIikpCkBAIC02NjIsOSArNjYyLDkgQEAgLSAoTlNVUkxSZXF1ZXN0ICopY29ubmVj
dGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiB3aWxsU2VuZFJlcXVlc3Q6KE5TVVIK
IAogI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAoW3JlZGlyZWN0UmVzcG9uc2UgaXNLaW5kT2ZD
bGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKLSAgICAgICAgTE9HKE5ldHdvcmssICJI
YW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJl
Y3RSZXNwb25zZTolZCwgTG9jYXRpb246PCVAPiIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3
UmVxdWVzdCBkZXNjcmlwdGlvbl0sIHN0YXRpY19jYXN0PGludD4oWyhpZClyZWRpcmVjdFJlc3Bv
bnNlIHN0YXR1c0NvZGVdKSwgW1soaWQpcmVkaXJlY3RSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNd
IG9iamVjdEZvcktleTpAIkxvY2F0aW9uIl0pOworICAgICAgICBMT0dfSU5GTyhOZXR3b3JrLCAi
SGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVAIHJlZGly
ZWN0UmVzcG9uc2U6JWQsIExvY2F0aW9uOjwlQD4iLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25l
d1JlcXVlc3QgZGVzY3JpcHRpb25dLCBzdGF0aWNfY2FzdDxpbnQ+KFsoaWQpcmVkaXJlY3RSZXNw
b25zZSBzdGF0dXNDb2RlXSksIFtbKGlkKXJlZGlyZWN0UmVzcG9uc2UgYWxsSGVhZGVyRmllbGRz
XSBvYmplY3RGb3JLZXk6QCJMb2NhdGlvbiJdKTsKICAgICBlbHNlCi0gICAgICAgIExPRyhOZXR3
b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFNlbmRSZXF1ZXN0OiVA
IHJlZGlyZWN0UmVzcG9uc2U6bm9uLUhUVFAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgW25ld1Jl
cXVlc3QgZGVzY3JpcHRpb25dKTsgCisgICAgICAgIExPR19JTkZPKE5ldHdvcmssICJIYW5kbGUg
JXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU2VuZFJlcXVlc3Q6JUAgcmVkaXJlY3RSZXNw
b25zZTpub24tSFRUUCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBbbmV3UmVxdWVzdCBkZXNjcmlw
dGlvbl0pOyAKICNlbmRpZgogCiAgICAgaWYgKFtyZWRpcmVjdFJlc3BvbnNlIGlzS2luZE9mQ2xh
c3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0gJiYgWyhOU0hUVFBVUkxSZXNwb25zZSAqKXJl
ZGlyZWN0UmVzcG9uc2Ugc3RhdHVzQ29kZV0gPT0gMzA3KSB7CkBAIC03MDAsNyArNzAwLDcgQEAg
LSAoQk9PTCljb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U6KE5TVVJMQ29ubmVj
dGlvbiAqKWNvbm5lY3Rpb24KIHsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKLSAg
ICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uU2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbik7CisgICAgTE9HX0lORk8o
TmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uU2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbik7CiAKICAgICBpZiAoIW1faGFuZGxl
KQogICAgICAgICByZXR1cm4gTk87CkBAIC03MTIsNyArNzEyLDcgQEAgLSAodm9pZCljb25uZWN0
aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW4KIHsKICAgICBVTlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKLSAgICBMT0coTmV0
d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjaGFsbGVuZ2UpOwor
ICAgIExPR19JTkZPKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlv
biwgY2hhbGxlbmdlKTsKIAogICAgIGlmICghbV9oYW5kbGUpIHsKICAgICAgICAgW1tjaGFsbGVu
Z2Ugc2VuZGVyXSBjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjaGFsbGVuZ2VdOwpAQCAt
NzI1LDcgKzcyNSw3IEBAIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29u
bmVjdGlvbiBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nCiB7CiAgICAgVU5VU0VEX1BB
UkFNKGNvbm5lY3Rpb24pOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUg
Y29ubmVjdGlvbjolcCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTolcCIsIG1faGFu
ZGxlLCBjb25uZWN0aW9uLCBjaGFsbGVuZ2UpOworICAgIExPR19JTkZPKE5ldHdvcmssICJIYW5k
bGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjaGFsbGVuZ2UpOwogCiAgICAgaWYgKCFt
X2hhbmRsZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzM5LDcgKzczOSw3IEBAIC0gKEJPT0wpY29u
bmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvCiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogI2VuZGlmCiAKLSAg
ICBMT0coTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwg
cHJvdGVjdGlvblNwYWNlKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVn
YXRlIGNvbm5lY3Rpb246JXAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTol
cCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBwcm90ZWN0aW9uU3BhY2UpOwogCiAgICAgaWYgKCFt
X2hhbmRsZSkKICAgICAgICAgcmV0dXJuIE5POwpAQCAtNzUyLDcgKzc1Miw3IEBAIC0gKHZvaWQp
Y29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICopY29ubmVjdGlvbiBkaWRSZWNlaXZlUmVzcG9u
c2U6KE5TVVJMUmVzcG9uCiB7CiAgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwogCi0gICAg
TE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCBkaWRSZWNlaXZl
UmVzcG9uc2U6JXAgKEhUVFAgc3RhdHVzICVkLCByZXBvcnRlZCBNSU1FVHlwZSAnJXMnKSIsIG1f
aGFuZGxlLCBjb25uZWN0aW9uLCByLCBbciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHN0
YXR1c0NvZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDAsIFtbciBNSU1FVHlwZV0gVVRGOFN0
cmluZ10pOworICAgIExPR19JTkZPKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVj
dGlvbjolcCBkaWRSZWNlaXZlUmVzcG9uc2U6JXAgKEhUVFAgc3RhdHVzICVkLCByZXBvcnRlZCBN
SU1FVHlwZSAnJXMnKSIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCByLCBbciByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHN0YXR1c0NvZGUpXSA/IFsoaWQpciBzdGF0dXNDb2RlXSA6IDAsIFtb
ciBNSU1FVHlwZV0gVVRGOFN0cmluZ10pOwogCiAgICAgaWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5k
bGUtPmNsaWVudCgpKQogICAgICAgICByZXR1cm47CkBAIC03NzIsNyArNzcyLDcgQEAgLSAodm9p
ZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRpZFJlY2VpdmVSZXNw
b25zZTooTlNVUkxSZXNwb24KIC0gKHZvaWQpY29ubmVjdGlvbjooTlNVUkxDb25uZWN0aW9uICop
Y29ubmVjdGlvbiBkaWRSZWNlaXZlRGF0YUFycmF5OihOU0FycmF5ICopZGF0YUFycmF5CiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rpb24pOwotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVw
IGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZURhdGFBcnJheTolcCBhcnJheVNpemU6
JWQiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZGF0YUFycmF5LCBbZGF0YUFycmF5IGNvdW50XSk7
CisgICAgTE9HX0lORk8oTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVw
IGRpZFJlY2VpdmVEYXRhQXJyYXk6JXAgYXJyYXlTaXplOiVkIiwgbV9oYW5kbGUsIGNvbm5lY3Rp
b24sIGRhdGFBcnJheSwgW2RhdGFBcnJheSBjb3VudF0pOwogCiAgICAgaWYgKCFkYXRhQXJyYXkp
CiAgICAgICAgIHJldHVybjsKQEAgLTc5MCw3ICs3OTAsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246
KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRh
dGEgbAogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAgICBVTlVTRURfUEFSQU0obGVu
Z3RoUmVjZWl2ZWQpOwogCi0gICAgTE9HKE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29u
bmVjdGlvbjolcCBkaWRSZWNlaXZlRGF0YTolcCBsZW5ndGhSZWNlaXZlZDolbGxkIiwgbV9oYW5k
bGUsIGNvbm5lY3Rpb24sIGRhdGEsIGxlbmd0aFJlY2VpdmVkKTsKKyAgICBMT0dfSU5GTyhOZXR3
b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkUmVjZWl2ZURhdGE6JXAg
bGVuZ3RoUmVjZWl2ZWQ6JWxsZCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBkYXRhLCBsZW5ndGhS
ZWNlaXZlZCk7CiAKICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTgwOCw3ICs4MDgsNyBAQCAtICh2b2lkKWNvbm5lY3Rpb246KE5T
VVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbFN0b3BCdWZmZXJpbmdEYXRhOihOU0RhdGEg
KgogewogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAotICAgIExPRyhOZXR3b3JrLCAi
SGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbFN0b3BCdWZmZXJpbmdEYXRhOiVw
IiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGRhdGEpOworICAgIExPR19JTkZPKE5ldHdvcmssICJI
YW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsU3RvcEJ1ZmZlcmluZ0RhdGE6JXAi
LCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZGF0YSk7CiAKICAgICBpZiAoIW1faGFuZGxlIHx8ICFt
X2hhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTgyMyw3ICs4MjMsNyBAQCAt
ICh2b2lkKWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkU2VuZEJv
ZHlEYXRhOihOU0ludGVnZXIpYnl0ZQogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKICAg
ICBVTlVTRURfUEFSQU0oYnl0ZXNXcml0dGVuKTsKIAotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxl
ICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkU2VuZEJvZHlEYXRhOiVkIHRvdGFsQnl0ZXNX
cml0dGVuOiVkIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6JWQiLCBtX2hhbmRsZSwgY29ubmVj
dGlvbiwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25u
ZWN0aW9uOiVwIGRpZFNlbmRCb2R5RGF0YTolZCB0b3RhbEJ5dGVzV3JpdHRlbjolZCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlOiVkIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24sIGJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogCiAgICAg
aWYgKCFtX2hhbmRsZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAgICByZXR1cm47CkBA
IC04MzQsNyArODM0LDcgQEAgLSAodm9pZCljb25uZWN0aW9uRGlkRmluaXNoTG9hZGluZzooTlNV
UkxDb25uZWN0aW9uICopY29ubmVjdGlvbgogewogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9u
KTsKIAotICAgIExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb25EaWRG
aW5pc2hMb2FkaW5nOiVwIiwgbV9oYW5kbGUsIGNvbm5lY3Rpb24pOworICAgIExPR19JTkZPKE5l
dHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbkRpZEZpbmlzaExvYWRpbmc6JXAi
LCBtX2hhbmRsZSwgY29ubmVjdGlvbik7CiAKICAgICBpZiAoIW1faGFuZGxlIHx8ICFtX2hhbmRs
ZS0+Y2xpZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg0Niw3ICs4NDYsNyBAQCAtICh2b2lk
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gZGlkRmFpbFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycgogewogICAgIFVOVVNFRF9QQVJBTShjb25uZWN0aW9uKTsKIAotICAg
IExPRyhOZXR3b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgZGlkRmFpbFdp
dGhFcnJvcjolQCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBlcnJvcik7CisgICAgTE9HX0lORk8o
TmV0d29yaywgIkhhbmRsZSAlcCBkZWxlZ2F0ZSBjb25uZWN0aW9uOiVwIGRpZEZhaWxXaXRoRXJy
b3I6JUAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgZXJyb3IpOwogCiAgICAgaWYgKCFtX2hhbmRs
ZSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NTcsNyArODU3
LDcgQEAgLSAodm9pZCljb25uZWN0aW9uOihOU1VSTENvbm5lY3Rpb24gKiljb25uZWN0aW9uIGRp
ZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnIKIAogLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAq
KWNvbm5lY3Rpb246KE5TVVJMQ29ubmVjdGlvbiAqKWNvbm5lY3Rpb24gd2lsbENhY2hlUmVzcG9u
c2U6KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKiljYWNoZWRSZXNwb25zZQogewotICAgIExPRyhOZXR3
b3JrLCAiSGFuZGxlICVwIGRlbGVnYXRlIGNvbm5lY3Rpb246JXAgd2lsbENhY2hlUmVzcG9uc2U6
JXAiLCBtX2hhbmRsZSwgY29ubmVjdGlvbiwgY2FjaGVkUmVzcG9uc2UpOworICAgIExPR19JTkZP
KE5ldHdvcmssICJIYW5kbGUgJXAgZGVsZWdhdGUgY29ubmVjdGlvbjolcCB3aWxsQ2FjaGVSZXNw
b25zZTolcCIsIG1faGFuZGxlLCBjb25uZWN0aW9uLCBjYWNoZWRSZXNwb25zZSk7CiAKICAgICBV
TlVTRURfUEFSQU0oY29ubmVjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAKaW5kZXggMjcx
ZWRkODBkODE5MWY0NDU4NDI1ZDJiOTY0ZDM4ODA5YzFjOTRjMS4uNmQ5NmJiZmI4ZWQzMzhiODkw
Mzc5ZjFhMmJlNzYwY2Q2ZjE3MDNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVRdC5jcHAKQEAgLTE4Miwx
NCArMTgyLDE0IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZTo6c29ja2V0U3NsRXJy
b3JzKGNvbnN0IFFMaXN0PFFTc2xFcnJvcj4mIGVycm9yKQogU29ja2V0U3RyZWFtSGFuZGxlOjpT
b2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1IYW5kbGVDbGll
bnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBjbGllbnQpCiB7
Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIs
IHRoaXMsIG1fY2xpZW50KTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFu
ZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CiAgICAgbV9wID0gbmV3IFNv
Y2tldFN0cmVhbUhhbmRsZVByaXZhdGUodGhpcywgdXJsKTsKIH0KIAogU29ja2V0U3RyZWFtSGFu
ZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoUVRjcFNvY2tldCogc29ja2V0LCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQqIGNsaWVudCkKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UoS1VSTCgp
LCBjbGllbnQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3
IGNsaWVudCAlcCIsIHRoaXMsIG1fY2xpZW50KTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiU29j
a2V0U3RyZWFtSGFuZGxlICVwIG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CiAgICAg
bV9wID0gbmV3IFNvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUodGhpcywgc29ja2V0KTsKICAgICBp
ZiAoc29ja2V0LT5pc09wZW4oKSkKICAgICAgICAgbV9zdGF0ZSA9IE9wZW47CkBAIC0xOTcsMjAg
KzE5NywyMCBAQCBTb2NrZXRTdHJlYW1IYW5kbGU6OlNvY2tldFN0cmVhbUhhbmRsZShRVGNwU29j
a2V0KiBzb2NrZXQsIFNvY2tldFN0cmVhbUhhbmRsZUNsaQogCiBTb2NrZXRTdHJlYW1IYW5kbGU6
On5Tb2NrZXRTdHJlYW1IYW5kbGUoKQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFt
SGFuZGxlICVwIGRlbGV0ZSIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRT
dHJlYW1IYW5kbGUgJXAgZGVsZXRlIiwgdGhpcyk7CiAgICAgc2V0Q2xpZW50KDApOwogICAgIGRl
bGV0ZSBtX3A7CiB9CiAKIGludCBTb2NrZXRTdHJlYW1IYW5kbGU6OnBsYXRmb3JtU2VuZChjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFt
SGFuZGxlICVwIHBsYXRmb3JtU2VuZCIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJT
b2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1TZW5kIiwgdGhpcyk7CiAgICAgcmV0dXJuIG1f
cC0+c2VuZChkYXRhLCBsZW4pOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZv
cm1DbG9zZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxh
dGZvcm1DbG9zZSIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1I
YW5kbGUgJXAgcGxhdGZvcm1DbG9zZSIsIHRoaXMpOwogICAgIG1fcC0+Y2xvc2UoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCmluZGV4IGM1MzY1ODMxMzRjMGE0ZjRkYTllNzJi
Nzk2ZmJkMDEwY2U5ZWY1NDIuLjU1ZjMzYzNhNzk5OTNjNDFiYTRiMzg3NGIwMGM4MDVlNGRmMzc0
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2Nr
ZXRTdHJlYW1IYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgU29j
a2V0U3RyZWFtSGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQKICAgICA6IFNvY2tldFN0cmVhbUhhbmRsZUJhc2UodXJsLCBj
bGllbnQpCiAgICAgLCBtX3JlYWRCdWZmZXIoMCkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tl
dFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOworICAgIExP
R19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgbmV3IGNsaWVudCAlcCIsIHRo
aXMsIG1fY2xpZW50KTsKICAgICB1bnNpZ25lZCBpbnQgcG9ydCA9IHVybC5oYXNQb3J0KCkgPyB1
cmwucG9ydCgpIDogKHVybC5wcm90b2NvbElzKCJ3c3MiKSA/IDQ0MyA6IDgwKTsKIAogICAgIG1f
aWQgPSBhY3RpdmF0ZUhhbmRsZSh0aGlzKTsKQEAgLTk3LDcgKzk3LDcgQEAgU29ja2V0U3RyZWFt
SGFuZGxlOjpTb2NrZXRTdHJlYW1IYW5kbGUoY29uc3QgS1VSTCYgdXJsLCBTb2NrZXRTdHJlYW1I
YW5kbGVDbGllbnQKIAogU29ja2V0U3RyZWFtSGFuZGxlOjp+U29ja2V0U3RyZWFtSGFuZGxlKCkK
IHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBkZWxldGUiLCB0aGlz
KTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIGRlbGV0ZSIs
IHRoaXMpOwogICAgIC8vIElmIGZvciBzb21lIHJlYXNvbiB3ZSB3ZXJlIGRlc3Ryb3llZCB3aXRo
b3V0IGNsb3NpbmcsIGVuc3VyZSB0aGF0IHdlIGFyZSBkZWFjdGl2YXRlZC4KICAgICBkZWFjdGl2
YXRlSGFuZGxlKHRoaXMpOwogICAgIHNldENsaWVudCgwKTsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2
b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6d3JpdGVSZWFkeSgpCiAKIGludCBTb2NrZXRTdHJlYW1I
YW5kbGU6OnBsYXRmb3JtU2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewotICAg
IExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVwIHBsYXRmb3JtU2VuZCIsIHRoaXMp
OworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1T
ZW5kIiwgdGhpcyk7CiAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOwogICAgIGdzc2l6ZSB3cml0
dGVuID0gZ19wb2xsYWJsZV9vdXRwdXRfc3RyZWFtX3dyaXRlX25vbmJsb2NraW5nKG1fb3V0cHV0
U3RyZWFtLmdldCgpLCBkYXRhLCBsZW5ndGgsIDAsICZlcnJvci5vdXRQdHIoKSk7CiAgICAgaWYg
KGVycm9yKSB7CkBAIC0xNzYsNyArMTc2LDcgQEAgaW50IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxh
dGZvcm1TZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiAKIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpwbGF0Zm9ybUNsb3NlKCkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tldFN0
cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZSAlcCBwbGF0Zm9ybUNsb3NlIiwgdGhpcyk7CiAgICAgLy8g
V2UgcmVtb3ZlIHRoaXMgaGFuZGxlIGZyb20gdGhlIGFjdGl2ZSBoYW5kbGVzIGxpc3QgZmlyc3Qs
IHRvIGRpc2FibGUgYWxsIGNhbGxiYWNrcy4KICAgICBkZWFjdGl2YXRlSGFuZGxlKHRoaXMpOwog
ICAgIHN0b3BXYWl0aW5nRm9yU29ja2V0V3JpdGFiaWxpdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Tb2NrZXRTdHJlYW1IYW5kbGVX
aW4uY3BwCmluZGV4IGIyYjU0MGZiMjRjMmZhZDc2YTI4NTA5ZGVmYjZlY2FhNmRjNzA4ZmIuLjEz
YjAzM2M3OWViNDNmMTU3NzQyNTE2NDAyNzgzYjY3ZjkyNmZlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1NvY2tldFN0cmVhbUhhbmRsZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vU29ja2V0U3RyZWFtSGFu
ZGxlV2luLmNwcApAQCAtNDIsMjcgKzQyLDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNvY2tl
dFN0cmVhbUhhbmRsZTo6U29ja2V0U3RyZWFtSGFuZGxlKGNvbnN0IEtVUkwmIHVybCwgU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50KiBjbGllbnQpCiAgICAgOiBTb2NrZXRTdHJlYW1IYW5kbGVCYXNl
KHVybCwgY2xpZW50KQogewotICAgIExPRyhOZXR3b3JrLCAiU29ja2V0U3RyZWFtSGFuZGxlICVw
IG5ldyBjbGllbnQgJXAiLCB0aGlzLCBtX2NsaWVudCk7CisgICAgTE9HX0lORk8oTmV0d29yaywg
IlNvY2tldFN0cmVhbUhhbmRsZSAlcCBuZXcgY2xpZW50ICVwIiwgdGhpcywgbV9jbGllbnQpOwog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIFNvY2tldFN0cmVhbUhhbmRsZTo6flNvY2tldFN0
cmVhbUhhbmRsZSgpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAg
ZGVsZXRlIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIlNvY2tldFN0cmVhbUhhbmRs
ZSAlcCBkZWxldGUiLCB0aGlzKTsKICAgICBzZXRDbGllbnQoMCk7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAogaW50IFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1TZW5kKGNvbnN0IGNo
YXIqLCBpbnQpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxh
dGZvcm1TZW5kIiwgdGhpcyk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIlNvY2tldFN0cmVhbUhh
bmRsZSAlcCBwbGF0Zm9ybVNlbmQiLCB0aGlzKTsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAg
IHJldHVybiAwOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6cGxhdGZvcm1DbG9zZSgp
CiB7Ci0gICAgTE9HKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAgcGxhdGZvcm1DbG9z
ZSIsIHRoaXMpOworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGUgJXAg
cGxhdGZvcm1DbG9zZSIsIHRoaXMpOwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IDI0MThm
YzEyYzQ1ODU0NGE3OWVhNTg4OGUyZTAwZjBhNmQzYzAzM2MuLjgxMTU2MTZkMGRlMzA2NDkzMWM1
NDRhY2ZhOTBlMjQyZDg0ZDliYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgU1FMaXRlRGF0YWJh
c2U6OnNldEJ1c3lUaW1lb3V0KGludCBtcykKICAgICBpZiAobV9kYikKICAgICAgICAgc3FsaXRl
M19idXN5X3RpbWVvdXQobV9kYiwgbXMpOwogICAgIGVsc2UKLSAgICAgICAgTE9HKFNRTERhdGFi
YXNlLCAiQnVzeVRpbWVvdXQgc2V0IG9uIG5vbi1vcGVuIGRhdGFiYXNlIik7CisgICAgICAgIExP
R19JTkZPKFNRTERhdGFiYXNlLCAiQnVzeVRpbWVvdXQgc2V0IG9uIG5vbi1vcGVuIGRhdGFiYXNl
Iik7CiB9CiAKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OnNldEJ1c3lIYW5kbGVyKGludCgqaGFuZGxl
cikodm9pZCosIGludCkpCkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBTUUxpdGVEYXRhYmFzZTo6
c2V0QnVzeUhhbmRsZXIoaW50KCpoYW5kbGVyKSh2b2lkKiwgaW50KSkKICAgICBpZiAobV9kYikK
ICAgICAgICAgc3FsaXRlM19idXN5X2hhbmRsZXIobV9kYiwgaGFuZGxlciwgTlVMTCk7CiAgICAg
ZWxzZQotICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJCdXN5IGhhbmRsZXIgc2V0IG9uIG5vbi1v
cGVuIGRhdGFiYXNlIik7CisgICAgICAgIExPR19JTkZPKFNRTERhdGFiYXNlLCAiQnVzeSBoYW5k
bGVyIHNldCBvbiBub24tb3BlbiBkYXRhYmFzZSIpOwogfQogCiBib29sIFNRTGl0ZURhdGFiYXNl
OjpleGVjdXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIHNxbCkKQEAgLTI4NCw3ICsyODQsNyBAQCB2
b2lkIFNRTGl0ZURhdGFiYXNlOjpjbGVhckFsbFRhYmxlcygpCiAgICAgU3RyaW5nIHF1ZXJ5ID0g
QVNDSUlMaXRlcmFsKCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0n
dGFibGUnOyIpOwogICAgIFZlY3RvcjxTdHJpbmc+IHRhYmxlczsKICAgICBpZiAoIVNRTGl0ZVN0
YXRlbWVudCgqdGhpcywgcXVlcnkpLnJldHVyblRleHRSZXN1bHRzKDAsIHRhYmxlcykpIHsKLSAg
ICAgICAgTE9HKFNRTERhdGFiYXNlLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxpc3Qgb2YgdGFibGVz
IGZyb20gZGF0YWJhc2UiKTsKKyAgICAgICAgTE9HX0lORk8oU1FMRGF0YWJhc2UsICJVbmFibGUg
dG8gcmV0cmlldmUgbGlzdCBvZiB0YWJsZXMgZnJvbSBkYXRhYmFzZSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIApAQCAtMjkyLDE0ICsyOTIsMTQgQEAgdm9pZCBTUUxpdGVEYXRhYmFz
ZTo6Y2xlYXJBbGxUYWJsZXMoKQogICAgICAgICBpZiAoKnRhYmxlID09ICJzcWxpdGVfc2VxdWVu
Y2UiKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICghZXhlY3V0ZUNvbW1hbmQo
IkRST1AgVEFCTEUgIiArICp0YWJsZSkpCi0gICAgICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJV
bmFibGUgdG8gZHJvcCB0YWJsZSAlcyIsICgqdGFibGUpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIExPR19JTkZPKFNRTERhdGFiYXNlLCAiVW5hYmxlIHRvIGRyb3AgdGFibGUgJXMiLCAo
KnRhYmxlKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQogfQogCiBpbnQgU1FMaXRlRGF0YWJhc2U6
OnJ1blZhY3V1bUNvbW1hbmQoKQogewogICAgIGlmICghZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRl
cmFsKCJWQUNVVU07IikpKQotICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJVbmFibGUgdG8gdmFj
dXVtIGRhdGFiYXNlIC0gJXMiLCBsYXN0RXJyb3JNc2coKSk7CisgICAgICAgIExPR19JTkZPKFNR
TERhdGFiYXNlLCAiVW5hYmxlIHRvIHZhY3V1bSBkYXRhYmFzZSAtICVzIiwgbGFzdEVycm9yTXNn
KCkpOwogICAgIHJldHVybiBsYXN0RXJyb3IoKTsKIH0KIApAQCAtMzA5LDcgKzMwOSw3IEBAIGlu
dCBTUUxpdGVEYXRhYmFzZTo6cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCkKICAgICBlbmFi
bGVBdXRob3JpemVyKGZhbHNlKTsKIAogICAgIGlmICghZXhlY3V0ZUNvbW1hbmQoQVNDSUlMaXRl
cmFsKCJQUkFHTUEgaW5jcmVtZW50YWxfdmFjdXVtIikpKQotICAgICAgICBMT0coU1FMRGF0YWJh
c2UsICJVbmFibGUgdG8gcnVuIGluY3JlbWVudGFsIHZhY3V1bSAtICVzIiwgbGFzdEVycm9yTXNn
KCkpOworICAgICAgICBMT0dfSU5GTyhTUUxEYXRhYmFzZSwgIlVuYWJsZSB0byBydW4gaW5jcmVt
ZW50YWwgdmFjdXVtIC0gJXMiLCBsYXN0RXJyb3JNc2coKSk7CiAKICAgICBlbmFibGVBdXRob3Jp
emVyKHRydWUpOwogICAgIHJldHVybiBsYXN0RXJyb3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggM2M3ZTk0OWI4NmRhYTRlZWJh
ZDBlZWI4ZTkyNWM1MmJkMjQzYzYyNi4uZTU4ZmRjNjE3NWUyODIwNDVjOGY5MTI3ZDA3OGY1NGQ0
YTUzZjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0
YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6cHJlcGFyZSgp
CiAgICAgICAgIHJldHVybiBTUUxJVEVfSU5URVJSVVBUOwogCiAgICAgY29uc3Qgdm9pZCogdGFp
bCA9IDA7Ci0gICAgTE9HKFNRTERhdGFiYXNlLCAiU1FMIC0gcHJlcGFyZSAtICVzIiwgbV9xdWVy
eS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oU1FMRGF0YWJhc2UsICJTUUwgLSBwcmVw
YXJlIC0gJXMiLCBtX3F1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKICAgICBTdHJpbmcgc3RyaXBwZWRR
dWVyeSA9IG1fcXVlcnkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgY29uc3QgVUNoYXIqIG51bGxU
ZXJtZWQgPSBzdHJpcHBlZFF1ZXJ5LmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7CiAg
ICAgaW50IGVycm9yID0gc3FsaXRlM19wcmVwYXJlMTZfdjIobV9kYXRhYmFzZS5zcWxpdGUzSGFu
ZGxlKCksIG51bGxUZXJtZWQsIC0xLCAmbV9zdGF0ZW1lbnQsICZ0YWlsKTsKQEAgLTgyLDcgKzgy
LDcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6cHJlcGFyZSgpCiAgICAgfQogCiAgICAgaWYgKGVy
cm9yICE9IFNRTElURV9PSykKLSAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19wcmVw
YXJlMTYgZmFpbGVkICglaSlcbiVzXG4lcyIsIGVycm9yLCBtX3F1ZXJ5LmFzY2lpKCkuZGF0YSgp
LCBzcWxpdGUzX2Vycm1zZyhtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSkpOworICAgICAgICBM
T0dfSU5GTyhTUUxEYXRhYmFzZSwgInNxbGl0ZTNfcHJlcGFyZTE2IGZhaWxlZCAoJWkpXG4lc1xu
JXMiLCBlcnJvciwgbV9xdWVyeS5hc2NpaSgpLmRhdGEoKSwgc3FsaXRlM19lcnJtc2cobV9kYXRh
YmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKICAgICBjb25zdCBVQ2hhciogY2ggPSBzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KHRhaWwpOwogICAgIGlmIChjaCAmJiAqY2gpCiAgICAgICAgIGVycm9y
ID0gU1FMSVRFX0VSUk9SOwpAQCAtMTA2LDEwICsxMDYsMTAgQEAgaW50IFNRTGl0ZVN0YXRlbWVu
dDo6c3RlcCgpCiAgICAgLy8gaW4gb3JkZXIgdG8gY29tcHV0ZSBwcm9wZXJseSB0aGUgbGFzdENo
YW5nZXMoKSByZXR1cm4gdmFsdWUuCiAgICAgbV9kYXRhYmFzZS51cGRhdGVMYXN0Q2hhbmdlc0Nv
dW50KCk7CiAKLSAgICBMT0coU1FMRGF0YWJhc2UsICJTUUwgLSBzdGVwIC0gJXMiLCBtX3F1ZXJ5
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhTUUxEYXRhYmFzZSwgIlNRTCAtIHN0ZXAg
LSAlcyIsIG1fcXVlcnkuYXNjaWkoKS5kYXRhKCkpOwogICAgIGludCBlcnJvciA9IHNxbGl0ZTNf
c3RlcChtX3N0YXRlbWVudCk7CiAgICAgaWYgKGVycm9yICE9IFNRTElURV9ET05FICYmIGVycm9y
ICE9IFNRTElURV9ST1cpIHsKLSAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVw
IGZhaWxlZCAoJWkpXG5RdWVyeSAtICVzXG5FcnJvciAtICVzIiwgCisgICAgICAgIExPR19JTkZP
KFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxlZCAoJWkpXG5RdWVyeSAtICVzXG5FcnJv
ciAtICVzIiwgCiAgICAgICAgICAgICBlcnJvciwgbV9xdWVyeS5hc2NpaSgpLmRhdGEoKSwgc3Fs
aXRlM19lcnJtc2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKICAgICB9CiAKQEAgLTEy
Myw3ICsxMjMsNyBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpmaW5hbGl6ZSgpCiAjZW5kaWYKICAg
ICBpZiAoIW1fc3RhdGVtZW50KQogICAgICAgICByZXR1cm4gU1FMSVRFX09LOwotICAgIExPRyhT
UUxEYXRhYmFzZSwgIlNRTCAtIGZpbmFsaXplIC0gJXMiLCBtX3F1ZXJ5LmFzY2lpKCkuZGF0YSgp
KTsKKyAgICBMT0dfSU5GTyhTUUxEYXRhYmFzZSwgIlNRTCAtIGZpbmFsaXplIC0gJXMiLCBtX3F1
ZXJ5LmFzY2lpKCkuZGF0YSgpKTsKICAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM19maW5hbGl6ZSht
X3N0YXRlbWVudCk7CiAgICAgbV9zdGF0ZW1lbnQgPSAwOwogICAgIHJldHVybiByZXN1bHQ7CkBA
IC0xMzQsNyArMTM0LDcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6cmVzZXQoKQogICAgIEFTU0VS
VChtX2lzUHJlcGFyZWQpOwogICAgIGlmICghbV9zdGF0ZW1lbnQpCiAgICAgICAgIHJldHVybiBT
UUxJVEVfT0s7Ci0gICAgTE9HKFNRTERhdGFiYXNlLCAiU1FMIC0gcmVzZXQgLSAlcyIsIG1fcXVl
cnkuYXNjaWkoKS5kYXRhKCkpOworICAgIExPR19JTkZPKFNRTERhdGFiYXNlLCAiU1FMIC0gcmVz
ZXQgLSAlcyIsIG1fcXVlcnkuYXNjaWkoKS5kYXRhKCkpOwogICAgIHJldHVybiBzcWxpdGUzX3Jl
c2V0KG1fc3RhdGVtZW50KTsKIH0KIApAQCAtNDM5LDEzICs0MzksMTMgQEAgY29uc3Qgdm9pZCog
U1FMaXRlU3RhdGVtZW50OjpnZXRDb2x1bW5CbG9iKGludCBjb2wsIGludCYgc2l6ZSkKICAgICBz
aXplID0gMDsKIAogICAgIGlmIChmaW5hbGl6ZSgpICE9IFNRTElURV9PSykKLSAgICAgICAgTE9H
KFNRTERhdGFiYXNlLCAiRmluYWxpemUgZmFpbGVkIik7CisgICAgICAgIExPR19JTkZPKFNRTERh
dGFiYXNlLCAiRmluYWxpemUgZmFpbGVkIik7CiAgICAgaWYgKHByZXBhcmUoKSAhPSBTUUxJVEVf
T0spIHsKLSAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAiUHJlcGFyZSBmYWlsZWQiKTsKKyAgICAg
ICAgTE9HX0lORk8oU1FMRGF0YWJhc2UsICJQcmVwYXJlIGZhaWxlZCIpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgaWYgKHN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIExP
RyhTUUxEYXRhYmFzZSwgIlN0ZXAgd2Fzbid0IGEgcm93Iik7CisgICAgICAgIExPR19JTkZPKFNR
TERhdGFiYXNlLCAiU3RlcCB3YXNuJ3QgYSByb3ciKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCkBAIC00NzYsNyArNDc2LDcgQEAgYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6OnJldHVyblRleHRS
ZXN1bHRzKGludCBjb2wsIFZlY3RvcjxTdHJpbmc+JiB2KQogICAgIGJvb2wgcmVzdWx0ID0gdHJ1
ZTsKICAgICBpZiAobV9kYXRhYmFzZS5sYXN0RXJyb3IoKSAhPSBTUUxJVEVfRE9ORSkgewogICAg
ICAgICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAiRXJyb3IgcmVh
ZGluZyByZXN1bHRzIGZyb20gZGF0YWJhc2UgcXVlcnkgJXMiLCBtX3F1ZXJ5LmFzY2lpKCkuZGF0
YSgpKTsKKyAgICAgICAgTE9HX0lORk8oU1FMRGF0YWJhc2UsICJFcnJvciByZWFkaW5nIHJlc3Vs
dHMgZnJvbSBkYXRhYmFzZSBxdWVyeSAlcyIsIG1fcXVlcnkuYXNjaWkoKS5kYXRhKCkpOwogICAg
IH0KICAgICBmaW5hbGl6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC00OTYsNyArNDk2LDcg
QEAgYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6OnJldHVybkludFJlc3VsdHMoaW50IGNvbCwgVmVjdG9y
PGludD4mIHYpCiAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwogICAgIGlmIChtX2RhdGFiYXNlLmxh
c3RFcnJvcigpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIHJlc3VsdCA9IGZhbHNlOwotICAg
ICAgICBMT0coU1FMRGF0YWJhc2UsICJFcnJvciByZWFkaW5nIHJlc3VsdHMgZnJvbSBkYXRhYmFz
ZSBxdWVyeSAlcyIsIG1fcXVlcnkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICBMT0dfSU5GTyhT
UUxEYXRhYmFzZSwgIkVycm9yIHJlYWRpbmcgcmVzdWx0cyBmcm9tIGRhdGFiYXNlIHF1ZXJ5ICVz
IiwgbV9xdWVyeS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgfQogICAgIGZpbmFsaXplKCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKQEAgLTUxNiw3ICs1MTYsNyBAQCBib29sIFNRTGl0ZVN0YXRlbWVudDo6
cmV0dXJuSW50NjRSZXN1bHRzKGludCBjb2wsIFZlY3RvcjxpbnQ2NF90PiYgdikKICAgICBib29s
IHJlc3VsdCA9IHRydWU7CiAgICAgaWYgKG1fZGF0YWJhc2UubGFzdEVycm9yKCkgIT0gU1FMSVRF
X0RPTkUpIHsKICAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIExPRyhTUUxEYXRhYmFz
ZSwgIkVycm9yIHJlYWRpbmcgcmVzdWx0cyBmcm9tIGRhdGFiYXNlIHF1ZXJ5ICVzIiwgbV9xdWVy
eS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKFNRTERhdGFiYXNlLCAiRXJyb3Ig
cmVhZGluZyByZXN1bHRzIGZyb20gZGF0YWJhc2UgcXVlcnkgJXMiLCBtX3F1ZXJ5LmFzY2lpKCku
ZGF0YSgpKTsKICAgICB9CiAgICAgZmluYWxpemUoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NTM2LDcgKzUzNiw3IEBAIGJvb2wgU1FMaXRlU3RhdGVtZW50OjpyZXR1cm5Eb3VibGVSZXN1bHRz
KGludCBjb2wsIFZlY3Rvcjxkb3VibGU+JiB2KQogICAgIGJvb2wgcmVzdWx0ID0gdHJ1ZTsKICAg
ICBpZiAobV9kYXRhYmFzZS5sYXN0RXJyb3IoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBy
ZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAiRXJyb3IgcmVhZGluZyBy
ZXN1bHRzIGZyb20gZGF0YWJhc2UgcXVlcnkgJXMiLCBtX3F1ZXJ5LmFzY2lpKCkuZGF0YSgpKTsK
KyAgICAgICAgTE9HX0lORk8oU1FMRGF0YWJhc2UsICJFcnJvciByZWFkaW5nIHJlc3VsdHMgZnJv
bSBkYXRhYmFzZSBxdWVyeSAlcyIsIG1fcXVlcnkuYXNjaWkoKS5kYXRhKCkpOwogICAgIH0KICAg
ICBmaW5hbGl6ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vR0RJT2JqZWN0Q291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vR0RJT2JqZWN0Q291bnRlci5jcHAKaW5kZXggOWE1YWRjNzk2ZDlhM2I1NGVk
OWRlYjQyMTMxOWZlMDQyMDQ4YTY1My4uY2I0MmQyNDVlMjFhYzRmZWY0ZTBlNWRjZjE1ZjZhZDE5
ODY4NWIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0dESU9iamVj
dENvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9HRElPYmplY3RD
b3VudGVyLmNwcApAQCAtNjEsNyArNjEsNyBAQCBHRElPYmplY3RDb3VudGVyOjp+R0RJT2JqZWN0
Q291bnRlcigpCiAgICAgbV9lbmRDb3VudCA9IGN1cnJlbnRHRElPYmplY3RzSW5Vc2UoKTsKICAg
ICBpbnQgbGVha2VkID0gbV9lbmRDb3VudCAtIG1fc3RhcnRDb3VudDsKICAgICBpZiAobGVha2Vk
ICE9IDApCi0gICAgICAgIExPRyhQbGF0Zm9ybUxlYWtzLCAiJXM6IGxlYWtlZCAlZCBHREkgb2Jq
ZWN0JXMhIiwgbV9pZGVudGlmaWVyLmxhdGluMSgpLmRhdGEoKSwgbGVha2VkLCBsZWFrZWQgPT0g
MSA/ICIiIDogInMiKTsKKyAgICAgICAgTE9HX0lORk8oUGxhdGZvcm1MZWFrcywgIiVzOiBsZWFr
ZWQgJWQgR0RJIG9iamVjdCVzISIsIG1faWRlbnRpZmllci5sYXRpbjEoKS5kYXRhKCksIGxlYWtl
ZCwgbGVha2VkID09IDEgPyAiIiA6ICJzIik7CiB9CiAKIHVuc2lnbmVkIEdESU9iamVjdENvdW50
ZXI6OmN1cnJlbnRHRElPYmplY3RzSW5Vc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggMDQ2Njg0NmQ0MzE5MDIzZmQ0ZmVmOWQyMDJmY2JmYmEyN2I3ZmRlZC4uYWQ5
ZjcwMDg0ZDVmMmNlMjMxNDEyNTNiZTk1N2YwZjliOWQwZjc3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpp
bml0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2lu
Vmlldzo6aW5pdCgpOiBJbml0aWFsaXppbmcgcGx1Zy1pbiAnJXMnIiwgbV9wbHVnaW4tPm5hbWUo
KS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6aW5p
dCgpOiBJbml0aWFsaXppbmcgcGx1Zy1pbiAnJXMnIiwgbV9wbHVnaW4tPm5hbWUoKS51dGY4KCku
ZGF0YSgpKTsKIAogICAgIGlmICghbV9wbHVnaW4tPmxvYWQoKSkgewogICAgICAgICBtX3BsdWdp
biA9IDA7CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptZWRpYUNhblN0YXJ0
KCkKIAogUGx1Z2luVmlldzo6flBsdWdpblZpZXcoKQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1
Z2luVmlldzo6flBsdWdpblZpZXcoKSIpOworICAgIExPR19JTkZPKFBsdWdpbnMsICJQbHVnaW5W
aWV3Ojp+UGx1Z2luVmlldygpIik7CiAKICAgICBBU1NFUlQoIW1fbGlmZVN1cHBvcnRUaW1lci5p
c0FjdGl2ZSgpKTsKIApAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c3RvcCgp
CiAgICAgaWYgKCFtX2lzU3RhcnRlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKFBsdWdp
bnMsICJQbHVnaW5WaWV3OjpzdG9wKCk6IFN0b3BwaW5nIHBsdWctaW4gJyVzJyIsIG1fcGx1Z2lu
LT5uYW1lKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oUGx1Z2lucywgIlBsdWdpblZp
ZXc6OnN0b3AoKTogU3RvcHBpbmcgcGx1Zy1pbiAnJXMnIiwgbV9wbHVnaW4tPm5hbWUoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVhbT4gPiBzdHJlYW1z
ID0gbV9zdHJlYW1zOwogICAgIEhhc2hTZXQ8UmVmUHRyPFBsdWdpblN0cmVhbT4gPjo6aXRlcmF0
b3IgZW5kID0gc3RyZWFtcy5lbmQoKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCB2b2lkIFBsdWdpblZp
ZXc6OnN0YXR1cyhjb25zdCBjaGFyKiBtZXNzYWdlKQogCiBOUEVycm9yIFBsdWdpblZpZXc6OnNl
dFZhbHVlKE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKIHsKLSAgICBMT0coUGx1
Z2lucywgIlBsdWdpblZpZXc6OnNldFZhbHVlKCVzKTogIiwgcHJldHR5TmFtZUZvck5QUFZhcmlh
YmxlKHZhcmlhYmxlLCB2YWx1ZSkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1
Z2luVmlldzo6c2V0VmFsdWUoJXMpOiAiLCBwcmV0dHlOYW1lRm9yTlBQVmFyaWFibGUodmFyaWFi
bGUsIHZhbHVlKS5kYXRhKCkpOwogCiAgICAgc3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2Ug
TlBQVnBsdWdpbldpbmRvd0Jvb2w6CkBAIC02NDUsNyArNjQ1LDcgQEAgTlBFcnJvciBQbHVnaW5W
aWV3OjpzZXRWYWx1ZShOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCiAjZW5kaWYK
ICAgICAgICAgY2FzZSBOUERyYXdpbmdNb2RlbENvcmVBbmltYXRpb246CiAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBMT0coUGx1Z2lucywgIlBsdWdpbiBhc2tlZCBmb3IgdW5zdXBwb3J0
ZWQgZHJhd2luZyBtb2RlbDogJXMiLAorICAgICAgICAgICAgTE9HX0lORk8oUGx1Z2lucywgIlBs
dWdpbiBhc2tlZCBmb3IgdW5zdXBwb3J0ZWQgZHJhd2luZyBtb2RlbDogJXMiLAogICAgICAgICAg
ICAgICAgICAgICBwcmV0dHlOYW1lRm9yRHJhd2luZ01vZGVsKG5ld0RyYXdpbmdNb2RlbCkpOwog
ICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAgICAgICAgIH0KQEAgLTY2
Niw3ICs2NjYsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OnNldFZhbHVlKE5QUFZhcmlhYmxlIHZh
cmlhYmxlLCB2b2lkKiB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
IAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgTE9HKFBsdWdpbnMsICJQbHVnaW4gYXNr
ZWQgZm9yIHVuc3VwcG9ydGVkIGV2ZW50IG1vZGVsOiAlcyIsCisgICAgICAgICAgICBMT0dfSU5G
TyhQbHVnaW5zLCAiUGx1Z2luIGFza2VkIGZvciB1bnN1cHBvcnRlZCBldmVudCBtb2RlbDogJXMi
LAogICAgICAgICAgICAgICAgICAgICBwcmV0dHlOYW1lRm9yRXZlbnRNb2RlbChuZXdFdmVudE1v
ZGVsKSk7CiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKICAgICAgICAg
fQpAQCAtMTI5Nyw3ICsxMjk3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjprZWVwQWxpdmUoTlBQIGlu
c3RhbmNlKQogCiBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlU3RhdGljKE5QTlZhcmlhYmxl
IHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSkKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6
OmdldFZhbHVlU3RhdGljKCVzKSIsIHByZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSku
ZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVTdGF0
aWMoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwogCiAg
ICAgTlBFcnJvciByZXN1bHQ7CiAgICAgaWYgKHBsYXRmb3JtR2V0VmFsdWVTdGF0aWModmFyaWFi
bGUsIHZhbHVlLCAmcmVzdWx0KSkKQEAgLTEzMDgsNyArMTMwOCw3IEBAIE5QRXJyb3IgUGx1Z2lu
Vmlldzo6Z2V0VmFsdWVTdGF0aWMoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQog
CiBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlKE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
KiB2YWx1ZSkKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlKCVzKSIs
IHByZXR0eU5hbWVGb3JOUE5WYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKKyAgICBMT0dfSU5G
TyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWUoJXMpIiwgcHJldHR5TmFtZUZvck5QTlZh
cmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwogCiAgICAgTlBFcnJvciByZXN1bHQ7CiAgICAgaWYg
KHBsYXRmb3JtR2V0VmFsdWUodmFyaWFibGUsIHZhbHVlLCAmcmVzdWx0KSkKQEAgLTEzODIsNyAr
MTM4Miw3IEBAIHN0YXRpYyBGcmFtZSogZ2V0RnJhbWUoRnJhbWUqIHBhcmVudEZyYW1lLCBFbGVt
ZW50KiBlbGVtZW50KQogCiBOUEVycm9yIFBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKE5QTlVS
TFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBjaGFyKiB1cmwsIGNoYXIqKiB2YWx1ZSwgdWludDMy
X3QqIGxlbikKIHsKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6OmdldFZhbHVlRm9yVVJM
KCVzKSIsIHByZXR0eU5hbWVGb3JOUE5VUkxWYXJpYWJsZSh2YXJpYWJsZSkuZGF0YSgpKTsKKyAg
ICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6Z2V0VmFsdWVGb3JVUkwoJXMpIiwgcHJl
dHR5TmFtZUZvck5QTlVSTFZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwogCiAgICAgTlBFcnJv
ciByZXN1bHQgPSBOUEVSUl9OT19FUlJPUjsKIApAQCAtMTQzMyw3ICsxNDMzLDcgQEAgTlBFcnJv
ciBQbHVnaW5WaWV3OjpnZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29u
c3QgY2hhciogdXJsLCBjaGEKICAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmVzdWx0ID0g
TlBFUlJfR0VORVJJQ19FUlJPUjsKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3Ojpn
ZXRWYWx1ZUZvclVSTDogJXMiLCBwcmV0dHlOYW1lRm9yTlBOVVJMVmFyaWFibGUodmFyaWFibGUp
LmRhdGEoKSk7CisgICAgICAgIExPR19JTkZPKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpnZXRWYWx1
ZUZvclVSTDogJXMiLCBwcmV0dHlOYW1lRm9yTlBOVVJMVmFyaWFibGUodmFyaWFibGUpLmRhdGEo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTQ0Myw3ICsxNDQzLDcgQEAgTlBFcnJv
ciBQbHVnaW5WaWV3OjpnZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29u
c3QgY2hhciogdXJsLCBjaGEKIAogTlBFcnJvciBQbHVnaW5WaWV3OjpzZXRWYWx1ZUZvclVSTChO
UE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB2YWx1
ZSwgdWludDMyX3QgbGVuKQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c2V0VmFs
dWVGb3JVUkwoJXMpIiwgcHJldHR5TmFtZUZvck5QTlVSTFZhcmlhYmxlKHZhcmlhYmxlKS5kYXRh
KCkpOworICAgIExPR19JTkZPKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpzZXRWYWx1ZUZvclVSTCgl
cykiLCBwcmV0dHlOYW1lRm9yTlBOVVJMVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7CiAKICAg
ICBOUEVycm9yIHJlc3VsdCA9IE5QRVJSX05PX0VSUk9SOwogCkBAIC0xNDYwLDExICsxNDYwLDEx
IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6c2V0VmFsdWVGb3JVUkwoTlBOVVJMVmFyaWFibGUgdmFy
aWFibGUsIGNvbnN0IGNoYXIqIHVybCwgY29uCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIE5QTlVSTFZQcm94eToKLSAgICAgICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpzZXRW
YWx1ZUZvclVSTCglcyk6IFBsdWdpbnMgYXJlIE5PVCBhbGxvd2VkIHRvIHNldCBwcm94eSBpbmZv
cm1hdGlvbi4iLCBwcmV0dHlOYW1lRm9yTlBOVVJMVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7
CisgICAgICAgIExPR19JTkZPKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpzZXRWYWx1ZUZvclVSTCgl
cyk6IFBsdWdpbnMgYXJlIE5PVCBhbGxvd2VkIHRvIHNldCBwcm94eSBpbmZvcm1hdGlvbi4iLCBw
cmV0dHlOYW1lRm9yTlBOVVJMVmFyaWFibGUodmFyaWFibGUpLmRhdGEoKSk7CiAgICAgICAgIHJl
c3VsdCA9IE5QRVJSX0dFTkVSSUNfRVJST1I7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c2V0VmFsdWVGb3JVUkw6ICVzIiwg
cHJldHR5TmFtZUZvck5QTlVSTFZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOworICAgICAgICBM
T0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c2V0VmFsdWVGb3JVUkw6ICVzIiwgcHJldHR5
TmFtZUZvck5QTlVSTFZhcmlhYmxlKHZhcmlhYmxlKS5kYXRhKCkpOwogICAgICAgICByZXN1bHQg
PSBOUEVSUl9HRU5FUklDX0VSUk9SOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNDc5LDcg
KzE0NzksNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmdldEF1dGhlbnRpY2F0aW9uSW5mbyhjb25z
dCBjaGFyKiBwcm90b2NvbCwgY29uc3QgY2hhciogaG9zdAogICAgIFVOVVNFRF9QQVJBTShob3N0
KTsKICAgICBVTlVTRURfUEFSQU0ocG9ydCk7CiAjZW5kaWYKLSAgICBMT0coUGx1Z2lucywgIlBs
dWdpblZpZXc6OmdldEF1dGhlbnRpY2F0aW9uSW5mbzogcHJvdG9jb2w9JXMsIGhvc3Q9JXMsIHBv
cnQ9JWQiLCBwcm90b2NvbCwgaG9zdCwgcG9ydCk7CisgICAgTE9HX0lORk8oUGx1Z2lucywgIlBs
dWdpblZpZXc6OmdldEF1dGhlbnRpY2F0aW9uSW5mbzogcHJvdG9jb2w9JXMsIGhvc3Q9JXMsIHBv
cnQ9JWQiLCBwcm90b2NvbCwgaG9zdCwgcG9ydCk7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAg
ICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5QYWNrYWdlQmxhY2tCZXJyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2JsYWNrYmVycnkvUGx1Z2luUGFja2FnZUJsYWNrQmVycnkuY3Bw
CmluZGV4IDNmOTI3MzVjZTk4Y2JkNDJlNTEyZmNmNmZkYzlmMDIwMzZmN2E5ZWEuLjRkMDJiZWFm
MjA3NjhmNDA3YzNjZmY2OTgxNTZkZTZkYTZiYzU3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5QYWNrYWdlQmxhY2tCZXJyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5L1BsdWdpblBhY2thZ2VCbGFja0JlcnJ5
LmNwcApAQCAtMjE1LDcgKzIxNSw3IEBAIGJvb2wgUGx1Z2luUGFja2FnZTo6bG9hZCgpCiAgICAg
fQogCiAgICAgaWYgKCFtX21vZHVsZSkgewotICAgICAgICBMT0coUGx1Z2lucywgIiVzIG5vdCBs
b2FkZWQgKCVzKSIsIG1fcGF0aC51dGY4KCkuZGF0YSgpLCBzdHJlcnJvcihlcnJubykpOworICAg
ICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiJXMgbm90IGxvYWRlZCAoJXMpIiwgbV9wYXRoLnV0Zjgo
KS5kYXRhKCksIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHByaW50ZigiUGx1Z2luUGFja2Fn
ZTo6bG9hZCgpIC0gJXMgbm90IGxvYWRlZCAoJXMpIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCksIHN0
cmVycm9yKGVycm5vKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1BsdWdpblBhY2thZ2VHdGsuY3BwCmluZGV4IDkyNmE3ZDky
ZDc1YWZmODk0ZmM4ZGEyNzRhNTEyYzlmYmViMDgzOGEuLmIwMDM0OWM3ODJlZjFjMDk0NjE3YTAz
MjZmNjk3YTQzYWVmMzY1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3Rr
L1BsdWdpblBhY2thZ2VHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvZ3RrL1Bs
dWdpblBhY2thZ2VHdGsuY3BwCkBAIC0xNDksMTIgKzE0OSwxMiBAQCBib29sIFBsdWdpblBhY2th
Z2U6OmxvYWQoKQogICAgIG1fbW9kdWxlID0gZ19tb2R1bGVfb3BlbihmaW5hbFBhdGguZ2V0KCks
IEdfTU9EVUxFX0JJTkRfTE9DQUwpOwogCiAgICAgaWYgKCFtX21vZHVsZSkgewotICAgICAgICBM
T0coUGx1Z2lucywiTW9kdWxlIExvYWQgRmFpbGVkIDolcywgRXJyb3I6JXNcbiIsIChtX3BhdGgu
dXRmOCgpKS5kYXRhKCksIGdfbW9kdWxlX2Vycm9yKCkpOworICAgICAgICBMT0dfSU5GTyhQbHVn
aW5zLCAiTW9kdWxlIExvYWQgRmFpbGVkIDolcywgRXJyb3I6JXNcbiIsIChtX3BhdGgudXRmOCgp
KS5kYXRhKCksIGdfbW9kdWxlX2Vycm9yKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgaWYgKG1vZHVsZU1peGVzR3RrU3ltYm9scyhtX21vZHVsZSkpIHsKLSAgICAgICAg
TE9HKFBsdWdpbnMsICJJZ25vcmluZyBtb2R1bGUgJyVzJyB0byBhdm9pZCBtaXhpbmcgR1RLKyAy
IGFuZCBHVEsrIDMgc3ltYm9scy5cbiIsIG1fcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
TE9HX0lORk8oUGx1Z2lucywgIklnbm9yaW5nIG1vZHVsZSAnJXMnIHRvIGF2b2lkIG1peGluZyBH
VEsrIDIgYW5kIEdUSysgMyBzeW1ib2xzLlxuIiwgbV9wYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL21hYy9QbHVnaW5QYWNrYWdlTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
bWFjL1BsdWdpblBhY2thZ2VNYWMuY3BwCmluZGV4IDEwMzMyMjczMTNmZWJjNmU4YzMyZDk5MTVk
ZjcxZmFmOGQzNzNmMDEuLjYxNDdjZWZmNjFkY2JjYjZlODNiODQ2MDgzYjliNWQyYjU0Yzk1MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblBhY2thZ2VNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblBhY2thZ2VNYWMuY3Bw
CkBAIC0yMzQsOSArMjM0LDkgQEAgYm9vbCBQbHVnaW5QYWNrYWdlOjpmZXRjaEluZm8oKQogICAg
ICAgICBDRkJ1bmRsZUNsb3NlQnVuZGxlUmVzb3VyY2VNYXAobV9tb2R1bGUsIHJlc0ZpbGUpOwog
ICAgIH0KIAotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCk6IEZv
dW5kIHBsdWctaW4gJyVzJyIsIG1fbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhQ
bHVnaW5zLCAiUGx1Z2luUGFja2FnZTo6ZmV0Y2hJbmZvKCk6IEZvdW5kIHBsdWctaW4gJyVzJyIs
IG1fbmFtZS51dGY4KCkuZGF0YSgpKTsKICAgICBpZiAoaXNQbHVnaW5CbGFja2xpc3RlZCgpKSB7
Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiXHRQbHVnLWluIGlzIGJsYWNrbGlzdGVkISIpOworICAg
ICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiXHRQbHVnLWluIGlzIGJsYWNrbGlzdGVkISIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBQbHVn
aW5QYWNrYWdlOjpsb2FkKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBm
YWxzZSkpOwogICAgIG1fbW9kdWxlID0gQ0ZCdW5kbGVDcmVhdGUoTlVMTCwgdXJsLmdldCgpKTsK
ICAgICBpZiAoIW1fbW9kdWxlIHx8ICFDRkJ1bmRsZUxvYWRFeGVjdXRhYmxlKG1fbW9kdWxlKSkg
ewotICAgICAgICBMT0coUGx1Z2lucywgIiVzIG5vdCBsb2FkZWQiLCBtX3BhdGgudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPR19JTkZPKFBsdWdpbnMsICIlcyBub3QgbG9hZGVkIiwgbV9wYXRo
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQppbmRleCA0MmJhNmE2NDVhY2Fi
YjBlYTlhYzFjZDM0YTE1MWU4MzU2YTJmYTdiLi5iZGZiYzg2MTQ4YmFmY2E3ZGNhYmNkNzdmNGI2
Y2VlNjg0MGFiZTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVn
aW5WaWV3TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdN
YWMubW0KQEAgLTE4MSw3ICsxODEsNyBAQCBib29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQo
KQogICAgICAgICAgICAgfHwgIWV2ZW50TW9kZWxTdXBwb3J0ZWQpIHsKICNlbmRpZgogICAgICAg
ICBtX3N0YXR1cyA9IFBsdWdpblN0YXR1c0Nhbk5vdExvYWRQbHVnaW47Ci0gICAgICAgIExPRyhQ
bHVnaW5zLCAiUGx1Zy1pbiAnJXMnIHVzZXMgdW5zdXBwb3J0ZWQgZXZlbnQgbW9kZWwgJXMiLAor
ICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Zy1pbiAnJXMnIHVzZXMgdW5zdXBwb3J0ZWQg
ZXZlbnQgbW9kZWwgJXMiLAogICAgICAgICAgICAgICAgIG1fcGx1Z2luLT5uYW1lKCkudXRmOCgp
LmRhdGEoKSwgcHJldHR5TmFtZUZvckV2ZW50TW9kZWwobV9ldmVudE1vZGVsKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICNpZm5kZWYgTlBfTk9fQ0FSQk9OCkBAIC0xOTQsNyArMTk0LDcgQEAg
Ym9vbCBQbHVnaW5WaWV3OjpwbGF0Zm9ybVN0YXJ0KCkKICAgICAgICAgICAgIHx8ICFkcmF3aW5n
TW9kZWxTdXBwb3J0ZWQpIHsKICNlbmRpZgogICAgICAgICBtX3N0YXR1cyA9IFBsdWdpblN0YXR1
c0Nhbk5vdExvYWRQbHVnaW47Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiUGx1Zy1pbiAnJXMnIHVz
ZXMgdW5zdXBwb3J0ZWQgZHJhd2luZyBtb2RlbCAlcyIsCisgICAgICAgIExPR19JTkZPKFBsdWdp
bnMsICJQbHVnLWluICclcycgdXNlcyB1bnN1cHBvcnRlZCBkcmF3aW5nIG1vZGVsICVzIiwKICAg
ICAgICAgICAgICAgICBtX3BsdWdpbi0+bmFtZSgpLnV0ZjgoKS5kYXRhKCksIHByZXR0eU5hbWVG
b3JEcmF3aW5nTW9kZWwobV9kcmF3aW5nTW9kZWwpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2lmbmRlZiBOUF9OT19RVUlDS0RSQVcKQEAgLTMwOSw3ICszMDksNyBAQCBib29sIFBsdWdpblZp
ZXc6OnBsYXRmb3JtR2V0VmFsdWUoTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlLCBO
UEVycm9yKiBlcgogCiB2b2lkIFBsdWdpblZpZXc6OnNldFBhcmVudChTY3JvbGxWaWV3KiBwYXJl
bnQpCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW5WaWV3OjpzZXRQYXJlbnQoJXApIiwgcGFy
ZW50KTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c2V0UGFyZW50KCVwKSIs
IHBhcmVudCk7CiAKICAgICBXaWRnZXQ6OnNldFBhcmVudChwYXJlbnQpOwogCkBAIC0zMjEsNyAr
MzIxLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50KQog
CiB2b2lkIFBsdWdpblZpZXc6OnNob3coKQogewotICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luVmll
dzo6c2hvdygpIik7CisgICAgTE9HX0lORk8oUGx1Z2lucywgIlBsdWdpblZpZXc6OnNob3coKSIp
OwogCiAgICAgc2V0U2VsZlZpc2libGUodHJ1ZSk7CiAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OnNob3coKQogCiB2b2lkIFBsdWdpblZpZXc6OmhpZGUoKQogewotICAgIExP
RyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6aGlkZSgpIik7CisgICAgTE9HX0lORk8oUGx1Z2lucywg
IlBsdWdpblZpZXc6OmhpZGUoKSIpOwogCiAgICAgc2V0U2VsZlZpc2libGUoZmFsc2UpOwogCkBA
IC0zMzksNyArMzM5LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoaWRlKCkKIAogdm9pZCBQbHVnaW5W
aWV3OjpzZXRGb2N1cyhib29sIGZvY3VzZWQpCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW5W
aWV3OjpzZXRGb2N1cyglZCkiLCBmb2N1c2VkKTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1
Z2luVmlldzo6c2V0Rm9jdXMoJWQpIiwgZm9jdXNlZCk7CiAgICAgaWYgKCFmb2N1c2VkKSB7CiAg
ICAgICAgIFdpZGdldDo6c2V0Rm9jdXMoZm9jdXNlZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM2
NSw3ICszNjUsNyBAQCB2b2lkIFBsdWdpblZpZXc6OnNldEZvY3VzKGJvb2wgZm9jdXNlZCkKICAg
ICByZWNvcmQubW9kaWZpZXJzID0gR2V0Q3VycmVudEtleU1vZGlmaWVycygpOwogCiAgICAgaWYg
KCFkaXNwYXRjaE5QRXZlbnQocmVjb3JkKSkKLSAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZp
ZXc6OnNldEZvY3VzKCVkKTogRm9jdXMgZXZlbnQgbm90IGFjY2VwdGVkIiwgZm9jdXNlZCk7Cisg
ICAgICAgIExPR19JTkZPKEV2ZW50cywgIlBsdWdpblZpZXc6OnNldEZvY3VzKCVkKTogRm9jdXMg
ZXZlbnQgbm90IGFjY2VwdGVkIiwgZm9jdXNlZCk7CiAjZW5kaWYKIH0KIApAQCAtNDE5LDcgKzQx
OSw3IEBAIHZvaWQgUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpCiAgICAgbV9ucFdp
bmRvdy5jbGlwUmVjdC5yaWdodCA9IG1fd2luZG93UmVjdC54KCkgKyBtX3dpbmRvd1JlY3Qud2lk
dGgoKTsKICAgICBtX25wV2luZG93LmNsaXBSZWN0LmJvdHRvbSA9IG1fd2luZG93UmVjdC55KCkg
KyBtX3dpbmRvd1JlY3QuaGVpZ2h0KCk7CiAKLSAgICBMT0coUGx1Z2lucywgIlBsdWdpblZpZXc6
OnNldE5QV2luZG93SWZOZWVkZWQoKTogd2luZG93PSVwLCBjb250ZXh0PSVwLCIKKyAgICBMT0df
SU5GTyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6c2V0TlBXaW5kb3dJZk5lZWRlZCgpOiB3aW5kb3c9
JXAsIGNvbnRleHQ9JXAsIgogICAgICAgICAgICAgIiB3aW5kb3cueDolZCB3aW5kb3cueTolZCB3
aW5kb3cud2lkdGg6JWQgd2luZG93LmhlaWdodDolZCB3aW5kb3cuY2xpcFJlY3Qgc2l6ZTolZHgl
ZCIsCiAgICAgICAgICAgICBuZXdXaW5kb3dSZWYsIG5ld0NvbnRleHRSZWYsIG1fbnBXaW5kb3cu
eCwgbV9ucFdpbmRvdy55LCBtX25wV2luZG93LndpZHRoLCBtX25wV2luZG93LmhlaWdodCwKICAg
ICAgICAgICAgIG1fbnBXaW5kb3cuY2xpcFJlY3QucmlnaHQgLSBtX25wV2luZG93LmNsaXBSZWN0
LmxlZnQsIG1fbnBXaW5kb3cuY2xpcFJlY3QuYm90dG9tIC0gbV9ucFdpbmRvdy5jbGlwUmVjdC50
b3ApOwpAQCAtNTE2LDcgKzUxNiw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGV2ZW50Lm1vZGlmaWVy
cyA9IEdldEN1cnJlbnRLZXlNb2RpZmllcnMoKTsKIAogICAgIGlmICghZGlzcGF0Y2hOUEV2ZW50
KGV2ZW50KSkKLSAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OnBhaW50KCk6IFBhaW50
IGV2ZW50IG5vdCBhY2NlcHRlZCIpOworICAgICAgICBMT0dfSU5GTyhFdmVudHMsICJQbHVnaW5W
aWV3OjpwYWludCgpOiBQYWludCBldmVudCBub3QgYWNjZXB0ZWQiKTsKICNlbmRpZgogCiAgICAg
Q0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjZ0NvbnRleHQpOwpAQCAtNjAyLDcgKzYwMiw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6aGFuZGxlTW91c2VFdmVudChNb3VzZUV2ZW50KiBldmVudCkKICAgICAg
ICAgaWYgKHJlY29yZC53aGF0ID09IE5QRXZlbnRUeXBlX0FkanVzdEN1cnNvckV2ZW50KQogICAg
ICAgICAgICAgcmV0dXJuOyAvLyBTaWduYWxzIHRoYXQgdGhlIHBsdWdpbiB3YW50cyBhIG5vcm1h
bCBjdXJzb3IKIAotICAgICAgICBMT0coRXZlbnRzLCAiUGx1Z2luVmlldzo6aGFuZGxlTW91c2VF
dmVudCgpOiBNb3VzZSBldmVudCB0eXBlICVkIGF0ICVkLCVkIG5vdCBhY2NlcHRlZCIsCisgICAg
ICAgIExPR19JTkZPKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoKTogTW91
c2UgZXZlbnQgdHlwZSAlZCBhdCAlZCwlZCBub3QgYWNjZXB0ZWQiLAogICAgICAgICAgICAgICAg
IHJlY29yZC53aGF0LCByZWNvcmQud2hlcmUuaCwgcmVjb3JkLndoZXJlLnYpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwpAQCAtNjE1LDkgKzYxNSw5
IEBAIHZvaWQgUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBl
dmVudCkKICAgICBpZiAoIW1faXNTdGFydGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0co
UGx1Z2lucywgIlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQoKSAtLS0tLS0tLS0tLS0t
LS0tLSAiKTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luVmlldzo6aGFuZGxlS2V5Ym9h
cmRFdmVudCgpIC0tLS0tLS0tLS0tLS0tLS0tICIpOwogCi0gICAgTE9HKFBsdWdpbnMsICJQVjo6
aEtFKCk6IEtFLmtleUNvZGU6IDB4JTAyWCwgS0UuY2hhckNvZGU6ICVkIiwKKyAgICBMT0dfSU5G
TyhQbHVnaW5zLCAiUFY6OmhLRSgpOiBLRS5rZXlDb2RlOiAweCUwMlgsIEtFLmNoYXJDb2RlOiAl
ZCIsCiAgICAgICAgICAgICBldmVudC0+a2V5Q29kZSgpLCBldmVudC0+Y2hhckNvZGUoKSk7CiAK
ICNpZm5kZWYgTlBfTk9fQ0FSQk9OCkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogCiAgICAgV1RGOjpS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVGV4dChXVEY6OkFkb3B0Q0YsIHRleHQuY3JlYXRlQ0ZT
dHJpbmcoKSk7CiAKLSAgICBMT0coUGx1Z2lucywgIlBWOjpoS0UoKTogUEtFLnRleHQ6ICVzLCBQ
S0UudW5tb2RpZmllZFRleHQ6ICVzLCBQS0Uua2V5SWRlbnRpZmllcjogJXMiLAorICAgIExPR19J
TkZPKFBsdWdpbnMsICJQVjo6aEtFKCk6IFBLRS50ZXh0OiAlcywgUEtFLnVubW9kaWZpZWRUZXh0
OiAlcywgUEtFLmtleUlkZW50aWZpZXI6ICVzIiwKICAgICAgICAgICAgIHRleHQuYXNjaWkoKS5k
YXRhKCksIHBsYXRmb3JtRXZlbnQtPnVubW9kaWZpZWRUZXh0KCkuYXNjaWkoKS5kYXRhKCksCiAg
ICAgICAgICAgICBwbGF0Zm9ybUV2ZW50LT5rZXlJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCkp
OwogCkBAIC02NzAsMTUgKzY3MCwxNSBAQCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJk
RXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgcmVjb3JkLm1lc3NhZ2UgPSAoKGtleUNv
ZGUgJiAweEZGKSA8PCA4KSB8IChjaGFyQ29kZXNbMF0gJiAweEZGKTsKICAgICByZWNvcmQud2hl
biA9IFRpY2tDb3VudCgpOwogCi0gICAgTE9HKFBsdWdpbnMsICJQVjo6aEtFKCk6IHJlY29yZC5t
b2RpZmllcnM6ICVkIiwgcmVjb3JkLm1vZGlmaWVycyk7CisgICAgTE9HX0lORk8oUGx1Z2lucywg
IlBWOjpoS0UoKTogcmVjb3JkLm1vZGlmaWVyczogJWQiLCByZWNvcmQubW9kaWZpZXJzKTsKIAog
I2lmIFBMQVRGT1JNKFFUKQotICAgIExPRyhQbHVnaW5zLCAiUFY6OmhLRSgpOiBQS0UucXRFdmVu
dCgpLT5uYXRpdmVWaXJ0dWFsS2V5OiAweCUwMlgsIGNoYXJDb2RlOiAlZCIsCisgICAgTE9HX0lO
Rk8oUGx1Z2lucywgIlBWOjpoS0UoKTogUEtFLnF0RXZlbnQoKS0+bmF0aXZlVmlydHVhbEtleTog
MHglMDJYLCBjaGFyQ29kZTogJWQiLAogICAgICAgICAgICAgICAga2V5Q29kZSwgaW50KHVjaGFy
KGNoYXJDb2Rlc1swXSkpKTsKICNlbmRpZgogCiAgICAgaWYgKCFkaXNwYXRjaE5QRXZlbnQocmVj
b3JkKSkKLSAgICAgICAgTE9HKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZl
bnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCByZWNvcmQud2hhdCk7
CisgICAgICAgIExPR19JTkZPKEV2ZW50cywgIlBsdWdpblZpZXc6OmhhbmRsZUtleWJvYXJkRXZl
bnQoKTogS2V5Ym9hcmQgZXZlbnQgdHlwZSAlZCBub3QgYWNjZXB0ZWQiLCByZWNvcmQud2hhdCk7
CiAgICAgZWxzZQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICNlbmRpZgpA
QCAtNjk4LDcgKzY5OCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bnVsbEV2ZW50VGltZXJGaXJlZChU
aW1lcjxQbHVnaW5WaWV3PiopCiAgICAgICAgIHJlY29yZC5tb2RpZmllcnMgfD0gYnRuU3RhdGU7
CiAKICAgICBpZiAoIWRpc3BhdGNoTlBFdmVudChyZWNvcmQpKQotICAgICAgICBMT0coRXZlbnRz
LCAiUGx1Z2luVmlldzo6bnVsbEV2ZW50VGltZXJGaXJlZCgpOiBOdWxsIGV2ZW50IG5vdCBhY2Nl
cHRlZCIpOworICAgICAgICBMT0dfSU5GTyhFdmVudHMsICJQbHVnaW5WaWV3OjpudWxsRXZlbnRU
aW1lckZpcmVkKCk6IE51bGwgZXZlbnQgbm90IGFjY2VwdGVkIik7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9xdC9QbHVnaW5QYWNrYWdlUXQuY3BwCmluZGV4IDk4YzU3
NTg5Njg4YjVmYWNjNzMzMjY1ZjQ3ZDVlMWJlODRiMzk1ZDguLmVlYTkwNzJhZTkxZTFhMDIzODVj
MmM2Mjc3MmZjMzM0MWRjM2RkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
cXQvUGx1Z2luUGFja2FnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3F0L1Bs
dWdpblBhY2thZ2VRdC5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBib29sIFBsdWdpblBhY2thZ2U6
OmxvYWQoKQogICAgIG1fbW9kdWxlID0gbmV3IFFMaWJyYXJ5KChRU3RyaW5nKW1fcGF0aCk7CiAg
ICAgbV9tb2R1bGUtPnNldExvYWRIaW50cyhRTGlicmFyeTo6UmVzb2x2ZUFsbFN5bWJvbHNIaW50
KTsKICAgICBpZiAoIW1fbW9kdWxlLT5sb2FkKCkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIl
cyBub3QgbG9hZGVkICglcykiLCBtX3BhdGgudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgTE9HX0lO
Rk8oUGx1Z2lucywgIiVzIG5vdCBsb2FkZWQgKCVzKSIsIG1fcGF0aC51dGY4KCkuZGF0YSgpLAog
ICAgICAgICAgICAgICAgIG1fbW9kdWxlLT5lcnJvclN0cmluZygpLnRvTGF0aW4xKCkuY29uc3RE
YXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBiNWI0NTZiM2Ey
NGFjNWFiZjFkYjJhYTllNjI2ZmRkMDQ2YTQxM2YyLi42MThmYmIwMDg2MWQyNjdhNmU5NzA4ZWMw
NTU2OTBhZjFlOTZmNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNDU2LDcgKzQ1Niw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5
cGUgdXBkYXRlCiAKICAgICAgICAgRnJhbWUqIGZyYW1lID0gbV9yZW5kZXJWaWV3LT5mcmFtZVZp
ZXcoKS0+ZnJhbWUoKTsKICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9ICFtX3JlbmRlclZpZXct
PmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpOwotICAgICAgICBMT0coQ29tcG9zaXRpbmcsICJc
blVwZGF0ZSAlZCBvZiAlcy4gT3ZlcmxhcCB0ZXN0aW5nIGlzICVzXG4iLCBtX3Jvb3RMYXllclVw
ZGF0ZUNvdW50LCBpc01haW5GcmFtZSA/ICJtYWluIGZyYW1lIiA6IGZyYW1lLT50cmVlKCktPnVu
aXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICBMT0dfSU5GTyhDb21w
b3NpdGluZywgIlxuVXBkYXRlICVkIG9mICVzLiBPdmVybGFwIHRlc3RpbmcgaXMgJXNcbiIsIG1f
cm9vdExheWVyVXBkYXRlQ291bnQsIGlzTWFpbkZyYW1lID8gIm1haW4gZnJhbWUiIDogZnJhbWUt
PnRyZWUoKS0+dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCiAgICAgICAgICAg
ICBtX2NvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFwID8gIm9uIiA6ICJvZmYiKTsKICAgICB9CiAj
ZW5kaWYKQEAgLTQ4NCw5ICs0ODQsOSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogI2lmICFM
T0dfRElTQUJMRUQKICAgICBpZiAoY29tcG9zaXRpbmdMb2dFbmFibGVkKCkgJiYgaXNGdWxsVXBk
YXRlICYmIChuZWVkSGllcmFyY2h5VXBkYXRlIHx8IG5lZWRHZW9tZXRyeVVwZGF0ZSkpIHsKICAg
ICAgICAgZG91YmxlIGVuZFRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgICAgICBMT0coQ29tcG9z
aXRpbmcsICJUb3RhbCBsYXllcnMgICBwcmltYXJ5ICAgc2Vjb25kYXJ5ICAgb2JsaWdhdG9yeSBi
YWNraW5nIChLQikgICBzZWNvbmRhcnkgYmFja2luZyhLQikgICB0b3RhbCBiYWNraW5nIChLQikg
IHVwZGF0ZSB0aW1lIChtcylcbiIpOworICAgICAgICBMT0dfSU5GTyhDb21wb3NpdGluZywgIlRv
dGFsIGxheWVycyAgIHByaW1hcnkgICBzZWNvbmRhcnkgICBvYmxpZ2F0b3J5IGJhY2tpbmcgKEtC
KSAgIHNlY29uZGFyeSBiYWNraW5nKEtCKSAgIHRvdGFsIGJhY2tpbmcgKEtCKSAgdXBkYXRlIHRp
bWUgKG1zKVxuIik7CiAKLSAgICAgICAgTE9HKENvbXBvc2l0aW5nLCAiJThkICUxMWQgJTlkICUy
MC4yZiAlMjIuMmYgJTIyLjJmICUxOC4yZlxuIiwKKyAgICAgICAgTE9HX0lORk8oQ29tcG9zaXRp
bmcsICIlOGQgJTExZCAlOWQgJTIwLjJmICUyMi4yZiAlMjIuMmYgJTE4LjJmXG4iLAogICAgICAg
ICAgICAgbV9vYmxpZ2F0ZUNvbXBvc2l0ZWRMYXllckNvdW50ICsgbV9zZWNvbmRhcnlDb21wb3Np
dGVkTGF5ZXJDb3VudCwgbV9vYmxpZ2F0ZUNvbXBvc2l0ZWRMYXllckNvdW50LAogICAgICAgICAg
ICAgbV9zZWNvbmRhcnlDb21wb3NpdGVkTGF5ZXJDb3VudCwgbV9vYmxpZ2F0b3J5QmFja2luZ1N0
b3JlQnl0ZXMgLyAxMDI0LCBtX3NlY29uZGFyeUJhY2tpbmdTdG9yZUJ5dGVzIC8gMTAyNCwgKG1f
b2JsaWdhdG9yeUJhY2tpbmdTdG9yZUJ5dGVzICsgbV9zZWNvbmRhcnlCYWNraW5nU3RvcmVCeXRl
cykgLyAxMDI0LCAxMDAwLjAgKiAoZW5kVGltZSAtIHN0YXJ0VGltZSkpOwogICAgIH0KQEAgLTUx
Miw3ICs1MTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKGNv
bnN0IFJlbmRlckxheWVyKiBsYXllciwgaW50IGRlcHRoKQogICAgICAgICBtX3NlY29uZGFyeUJh
Y2tpbmdTdG9yZUJ5dGVzICs9IGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCk7
CiAgICAgfQogCi0gICAgTE9HKENvbXBvc2l0aW5nLCAiJSpwICVkeCVkICUuMmZLQiAoJXMpICVz
XG4iLCAxMiArIGRlcHRoICogMiwgbGF5ZXIsIGJhY2tpbmctPmNvbXBvc2l0ZWRCb3VuZHMoKS53
aWR0aCgpLCBiYWNraW5nLT5jb21wb3NpdGVkQm91bmRzKCkuaGVpZ2h0KCksCisgICAgTE9HX0lO
Rk8oQ29tcG9zaXRpbmcsICIlKnAgJWR4JWQgJS4yZktCICglcykgJXNcbiIsIDEyICsgZGVwdGgg
KiAyLCBsYXllciwgYmFja2luZy0+Y29tcG9zaXRlZEJvdW5kcygpLndpZHRoKCksIGJhY2tpbmct
PmNvbXBvc2l0ZWRCb3VuZHMoKS5oZWlnaHQoKSwKICAgICAgICAgYmFja2luZy0+YmFja2luZ1N0
b3JlTWVtb3J5RXN0aW1hdGUoKSAvIDEwMjQsCiAgICAgICAgIHJlYXNvbkZvckNvbXBvc2l0aW5n
KGxheWVyKSwgbGF5ZXItPmJhY2tpbmcoKS0+bmFtZUZvckxheWVyKCkudXRmOCgpLmRhdGEoKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Tb2NrZXRTdHJlYW1I
YW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvU29ja2V0U3RyZWFtSGFuZGxl
LmNwcAppbmRleCAzZjk4YTc3ZGI0OTcwMzNlN2M3Y2MyODRkMzZkNTAzNjBlYzFkNzhlLi5hYjY2
NTZmYzNhOTJlZTZkODM2NDE0NDJjYjRjZjBmNGQwMDIzYWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Tb2NrZXRTdHJlYW1IYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1NvY2tldFN0cmVhbUhhbmRsZS5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6On5Tb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bCgpCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpjb25uZWN0KGNvbnN0IEtVUkwm
IHVybCkKIHsKICAgICBtX3NvY2tldCA9IGFkb3B0UHRyKFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+Y3JlYXRlU29ja2V0U3RyZWFtSGFuZGxlKCkpOwotICAgIExPRyhOZXR3b3JrLCAiY29u
bmVjdCIpOworICAgIExPR19JTkZPKE5ldHdvcmssICJjb25uZWN0Iik7CiAgICAgQVNTRVJUKG1f
c29ja2V0KTsKICAgICBBU1NFUlQobV9oYW5kbGUpOwogICAgIGlmIChtX2hhbmRsZS0+bV9jbGll
bnQpCkBAIC03MSwxMiArNzEsMTIgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6
Y29ubmVjdChjb25zdCBLVVJMJiB1cmwpCiAKIGludCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5h
bDo6c2VuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewotICAgIExPRyhOZXR3b3JrLCAi
c2VuZCBsZW49JWQiLCBsZW4pOworICAgIExPR19JTkZPKE5ldHdvcmssICJzZW5kIGxlbj0lZCIs
IGxlbik7CiAgICAgLy8gRklYTUU6IHxtX3NvY2tldHwgc2hvdWxkIG5vdCBiZSBudWxsIGhlcmUs
IGJ1dCBpdCBzZWVtcyB0aGF0IHRoZXJlIGlzIHRoZQogICAgIC8vIGNhc2UuIFdlIHNob3VsZCBm
aWd1cmUgb3V0IHN1Y2ggYSBwYXRoIGFuZCBmaXggaXQgcmF0aGVyIHRoYW4gY2hlY2tpbmcKICAg
ICAvLyBudWxsIGhlcmUuCiAgICAgaWYgKCFtX3NvY2tldCkgewotICAgICAgICBMT0coTmV0d29y
aywgIm1fc29ja2V0IGlzIG51bGwgd2hlbiBzZW5kaW5nLiBJdCBzaG91bGQgbm90IGJlLiIpOwor
ICAgICAgICBMT0dfSU5GTyhOZXR3b3JrLCAibV9zb2NrZXQgaXMgbnVsbCB3aGVuIHNlbmRpbmcu
IEl0IHNob3VsZCBub3QgYmUuIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAo
bV9wZW5kaW5nQW1vdW50U2VudCArIGxlbiA+PSBtX21heFBlbmRpbmdTZW5kQWxsb3dlZCkKQEAg
LTg3LDIzICs4NywyMyBAQCBpbnQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OnNlbmQoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbikKICAgICBXZWJEYXRhIHdlYmRhdGEoZGF0YSwgbGVuKTsK
ICAgICBpZiAobV9zb2NrZXQtPnNlbmQod2ViZGF0YSkpIHsKICAgICAgICAgbV9wZW5kaW5nQW1v
dW50U2VudCArPSBsZW47Ci0gICAgICAgIExPRyhOZXR3b3JrLCAic2VudCIpOworICAgICAgICBM
T0dfSU5GTyhOZXR3b3JrLCAic2VudCIpOwogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KLSAg
ICBMT0coTmV0d29yaywgImJ1c3kuIGJ1ZmZlcmluZyIpOworICAgIExPR19JTkZPKE5ldHdvcmss
ICJidXN5LiBidWZmZXJpbmciKTsKICAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGVJbnRlcm5hbDo6Y2xvc2UoKQogewotICAgIExPRyhOZXR3b3JrLCAiY2xvc2UiKTsK
KyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiY2xvc2UiKTsKICAgICBpZiAobV9zb2NrZXQpCiAgICAg
ICAgIG1fc29ja2V0LT5jbG9zZSgpOwogfQogICAgIAogdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJ
bnRlcm5hbDo6ZGlkT3BlblN0cmVhbShXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRs
ZSwgaW50IG1heFBlbmRpbmdTZW5kQWxsb3dlZCkKIHsKLSAgICBMT0coTmV0d29yaywgIlNvY2tl
dFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRPcGVuICVkIiwKKyAgICBMT0dfSU5GTyhOZXR3b3Jr
LCAiU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZE9wZW4gJWQiLAogICAgICAgICBtYXhQ
ZW5kaW5nU2VuZEFsbG93ZWQpOwogICAgIEFTU0VSVChtYXhQZW5kaW5nU2VuZEFsbG93ZWQgPiAw
KTsKICAgICBpZiAobV9oYW5kbGUgJiYgbV9zb2NrZXQpIHsKQEAgLTExNSwxMiArMTE1LDEyIEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZE9wZW5TdHJlYW0oV2ViU29ja2V0
U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJubyBtX2hhbmRsZSBvciBtX3NvY2tldD8iKTsKKyAg
ICBMT0dfSU5GTyhOZXR3b3JrLCAibm8gbV9oYW5kbGUgb3IgbV9zb2NrZXQ/Iik7CiB9CiAKIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFNlbmREYXRhKFdlYlNvY2tldFN0cmVh
bUhhbmRsZSogc29ja2V0SGFuZGxlLCBpbnQgYW1vdW50U2VudCkKIHsKLSAgICBMT0coTmV0d29y
aywgIlNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YSAlZCIsIGFtb3VudFNl
bnQpOworICAgIExPR19JTkZPKE5ldHdvcmssICJTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6
ZGlkU2VuZERhdGEgJWQiLCBhbW91bnRTZW50KTsKICAgICBBU1NFUlQoYW1vdW50U2VudCA+IDAp
OwogICAgIGlmIChtX2hhbmRsZSAmJiBtX3NvY2tldCkgewogICAgICAgICBBU1NFUlQoc29ja2V0
SGFuZGxlID09IG1fc29ja2V0LmdldCgpKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRTZW5kRGF0YShXZWJTb2NrZXRTdHJlYW1IYW5kbGUq
IHNvY2tldEhhbmRsZQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUludGVybmFsOjpkaWRSZWNl
aXZlRGF0YShXZWJTb2NrZXRTdHJlYW1IYW5kbGUqIHNvY2tldEhhbmRsZSwgY29uc3QgV2ViRGF0
YSYgZGF0YSkKIHsKLSAgICBMT0coTmV0d29yaywgImRpZFJlY2VpdmVEYXRhIik7CisgICAgTE9H
X0lORk8oTmV0d29yaywgImRpZFJlY2VpdmVEYXRhIik7CiAgICAgaWYgKG1faGFuZGxlICYmIG1f
c29ja2V0KSB7CiAgICAgICAgIEFTU0VSVChzb2NrZXRIYW5kbGUgPT0gbV9zb2NrZXQuZ2V0KCkp
OwogICAgICAgICBpZiAobV9oYW5kbGUtPm1fY2xpZW50KQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6OmRpZFJlY2VpdmVEYXRhKFdlYlNvY2tldFN0
cmVhbUhhbmRsZSogc29ja2V0SGFuCiAKIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW50ZXJuYWw6
OmRpZENsb3NlKFdlYlNvY2tldFN0cmVhbUhhbmRsZSogc29ja2V0SGFuZGxlKQogewotICAgIExP
RyhOZXR3b3JrLCAiZGlkQ2xvc2UiKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrLCAiZGlkQ2xvc2Ui
KTsKICAgICBpZiAobV9oYW5kbGUgJiYgbV9zb2NrZXQpIHsKICAgICAgICAgQVNTRVJUKHNvY2tl
dEhhbmRsZSA9PSBtX3NvY2tldC5nZXQoKSk7CiAgICAgICAgIG1fc29ja2V0LmNsZWFyKCk7CkBA
IC0xNTUsNyArMTU1LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbnRlcm5hbDo6ZGlkQ2xv
c2UoV2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRIYW5kbGUpCiAKIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW50ZXJuYWw6OmRpZEZhaWwoV2ViU29ja2V0U3RyZWFtSGFuZGxlKiBzb2NrZXRI
YW5kbGUsIGNvbnN0IFdlYlNvY2tldFN0cmVhbUVycm9yJiBlcnIpCiB7Ci0gICAgTE9HKE5ldHdv
cmssICJkaWRGYWlsIik7CisgICAgTE9HX0lORk8oTmV0d29yaywgImRpZEZhaWwiKTsKICAgICBp
ZiAobV9oYW5kbGUgJiYgbV9zb2NrZXQpIHsKICAgICAgICAgQVNTRVJUKHNvY2tldEhhbmRsZSA9
PSBtX3NvY2tldC5nZXQoKSk7CiAgICAgICAgIG1fc29ja2V0LmNsZWFyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9IaXN0b3J5L1dlYkhpc3RvcnkubW0KaW5kZXggNTkxY2MwNGIwYTVkMTQ2YzBhNWM3YjJh
NDViMmQ1YWNkZDAxOTNiOC4uMTNiNmI5ZGU3ZTExMzgyM2UzOTM4MGJlYTFmMzkwMmNjNGRiMzky
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJIaXN0b3J5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViSGlzdG9yeS5tbQpAQCAtMzAxLDcgKzMw
MSw3IEBAIC0gKFdlYkhpc3RvcnlJdGVtICopdmlzaXRlZFVSTDooTlNVUkwgKil1cmwgd2l0aFRp
dGxlOihOU1N0cmluZyAqKXRpdGxlIGluY3JlYXNlCiAgICAgV2ViSGlzdG9yeUl0ZW0gKmVudHJ5
ID0gW19lbnRyaWVzQnlVUkwgb2JqZWN0Rm9yS2V5OlVSTFN0cmluZ107CiAKICAgICBpZiAoZW50
cnkpIHsKLSAgICAgICAgTE9HKEhpc3RvcnksICJVcGRhdGluZyBnbG9iYWwgaGlzdG9yeSBlbnRy
eSAlQCIsIGVudHJ5KTsKKyAgICAgICAgTE9HX0lORk8oSGlzdG9yeSwgIlVwZGF0aW5nIGdsb2Jh
bCBoaXN0b3J5IGVudHJ5ICVAIiwgZW50cnkpOwogICAgICAgICAvLyBSZW1vdmUgdGhlIGl0ZW0g
ZnJvbSBkYXRlIGNhY2hlcyBiZWZvcmUgY2hhbmdpbmcgaXRzIGxhc3QgdmlzaXRlZCBkYXRlLiAg
T3RoZXJ3aXNlIHdlIG1pZ2h0IGdldCBkdXBsaWNhdGUgZW50cmllcwogICAgICAgICAvLyBhcyBz
ZWVuIGluIDxyZGFyOi8vcHJvYmxlbS82NTcwNTczPi4KICAgICAgICAgQk9PTCBpdGVtV2FzSW5E
YXRlQ2FjaGVzID0gW3NlbGYgcmVtb3ZlSXRlbUZyb21EYXRlQ2FjaGVzOmVudHJ5XTsKQEAgLTMw
OSw3ICszMDksNyBAQCAtIChXZWJIaXN0b3J5SXRlbSAqKXZpc2l0ZWRVUkw6KE5TVVJMICopdXJs
IHdpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBpbmNyZWFzZQogCiAgICAgICAgIFtlbnRyeSBf
dmlzaXRlZFdpdGhUaXRsZTp0aXRsZSBpbmNyZWFzZVZpc2l0Q291bnQ6aW5jcmVhc2VWaXNpdENv
dW50XTsKICAgICB9IGVsc2UgewotICAgICAgICBMT0coSGlzdG9yeSwgIkFkZGluZyBuZXcgZ2xv
YmFsIGhpc3RvcnkgZW50cnkgZm9yICVAIiwgdXJsKTsKKyAgICAgICAgTE9HX0lORk8oSGlzdG9y
eSwgIkFkZGluZyBuZXcgZ2xvYmFsIGhpc3RvcnkgZW50cnkgZm9yICVAIiwgdXJsKTsKICAgICAg
ICAgZW50cnkgPSBbW1dlYkhpc3RvcnlJdGVtIGFsbG9jXSBpbml0V2l0aFVSTFN0cmluZzpVUkxT
dHJpbmcgdGl0bGU6dGl0bGUgbGFzdFZpc2l0ZWRUaW1lSW50ZXJ2YWw6W05TRGF0ZSB0aW1lSW50
ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdXTsKICAgICAgICAgW2VudHJ5IF9yZWNvcmRJbml0aWFs
VmlzaXRdOwogICAgICAgICBbX2VudHJpZXNCeVVSTCBzZXRPYmplY3Q6ZW50cnkgZm9yS2V5OlVS
TFN0cmluZ107CkBAIC02MjIsNyArNjIyLDcgQEAgLSAoQk9PTClsb2FkRnJvbVVSTDooTlNVUkwg
KilVUkwgY29sbGVjdERpc2NhcmRlZEl0ZW1zSW50bzooTlNNdXRhYmxlQXJyYXkgKilkaXMKIAog
I2lmICFMT0dfRElTQUJMRUQKICAgICBkb3VibGUgZHVyYXRpb24gPSBDRkFic29sdXRlVGltZUdl
dEN1cnJlbnQoKSAtIHN0YXJ0OwotICAgIExPRyhUaW1pbmcsICJsb2FkaW5nICVkIGhpc3Rvcnkg
ZW50cmllcyBmcm9tICVAIHRvb2sgJWYgc2Vjb25kcyIsIG51bWJlck9mSXRlbXMsIFVSTCwgZHVy
YXRpb24pOworICAgIExPR19JTkZPKFRpbWluZywgImxvYWRpbmcgJWQgaGlzdG9yeSBlbnRyaWVz
IGZyb20gJUAgdG9vayAlZiBzZWNvbmRzIiwgbnVtYmVyT2ZJdGVtcywgVVJMLCBkdXJhdGlvbik7
CiAjZW5kaWYKIAogICAgIHJldHVybiBZRVM7CkBAIC02NTIsNyArNjUyLDcgQEAgLSAoQk9PTClz
YXZlVG9VUkw6KE5TVVJMICopVVJMIGVycm9yOihOU0Vycm9yICoqKWVycm9yCiAKICNpZiAhTE9H
X0RJU0FCTEVECiAgICAgZG91YmxlIGR1cmF0aW9uID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50
KCkgLSBzdGFydDsKLSAgICBMT0coVGltaW5nLCAic2F2aW5nIGhpc3RvcnkgdG8gJUAgdG9vayAl
ZiBzZWNvbmRzIiwgVVJMLCBkdXJhdGlvbik7CisgICAgTE9HX0lORk8oVGltaW5nLCAic2F2aW5n
IGhpc3RvcnkgdG8gJUAgdG9vayAlZiBzZWNvbmRzIiwgVVJMLCBkdXJhdGlvbik7CiAjZW5kaWYK
IAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNj
L1dlYkljb25EYXRhYmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViSWNvbkRhdGFi
YXNlLm1tCmluZGV4IGJiZjZlYzNkMGEyMmI2MjIzMmM2OGZhYzk1MWI1MDA0ZDc4ZjM1YzguLmQ5
YjljNzkwZGQ1YTE4Njg0YjZjZWI5MTdlOTBmMmM1YjAyYzM0MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViSWNvbkRhdGFiYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL01pc2MvV2ViSWNvbkRhdGFiYXNlLm1tCkBAIC00NDksNyArNDQ5LDcgQEAgLSAodm9pZClf
c2NhbGVJY29uOihOU0ltYWdlICopaWNvbiB0b1NpemU6KE5TU2l6ZSlzaXplCiAgICAgCiAjaWYg
IUxPR19ESVNBQkxFRAogICAgIGRvdWJsZSBkdXJhdGlvbiA9IENGQWJzb2x1dGVUaW1lR2V0Q3Vy
cmVudCgpIC0gc3RhcnQ7Ci0gICAgTE9HKFRpbWluZywgInNjYWxpbmcgaWNvbiB0b29rICVmIHNl
Y29uZHMuIiwgZHVyYXRpb24pOworICAgIExPR19JTkZPKFRpbWluZywgInNjYWxpbmcgaWNvbiB0
b29rICVmIHNlY29uZHMuIiwgZHVyYXRpb24pOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJi
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyQ2FyYm9uLm1tCmluZGV4IGI1N2RkM2JjMGE1MzhhZjIzNTE1MDM5ZTQ4YjdlYmQ2OTgy
YTc4YzcuLjMzMDk3MjlmMzIzMTY0ZDNjNDM1YTczMzAxODdmYWVjNWQyODUyYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRs
ZXJDYXJib24ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpbkV2ZW50SGFuZGxlckNhcmJvbi5tbQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJib246OmRyYXdSZWN0KENHQ29udGV4dFJlZiwgY29u
c3QgTlNSZWN0JikKICAgICBCT09MIGFjY2VwdGVkRXZlbnQ7CiAgICAgYWNjZXB0ZWRFdmVudCA9
IHNlbmRFdmVudCgmZXZlbnQpOwogICAgIAotICAgIExPRyhQbHVnaW5FdmVudHMsICJOUFBfSGFu
ZGxlRXZlbnQodXBkYXRlRXZ0KTogJWQiLCBhY2NlcHRlZEV2ZW50KTsKKyAgICBMT0dfSU5GTyhQ
bHVnaW5FdmVudHMsICJOUFBfSGFuZGxlRXZlbnQodXBkYXRlRXZ0KTogJWQiLCBhY2NlcHRlZEV2
ZW50KTsKIH0KIAogdm9pZCBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNhcmJvbjo6bW91
c2VEb3duKE5TRXZlbnQqIHRoZUV2ZW50KQpAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgV2ViTmV0
c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJib246Om1vdXNlRG93bihOU0V2ZW50KiB0aGVFdmVu
dCkKICAgICBCT09MIGFjY2VwdGVkRXZlbnQ7CiAgICAgYWNjZXB0ZWRFdmVudCA9IHNlbmRFdmVu
dCgmZXZlbnQpOwogICAgIAotICAgIExPRyhQbHVnaW5FdmVudHMsICJOUFBfSGFuZGxlRXZlbnQo
bW91c2VEb3duKTogJWQgcHQudj0lZCwgcHQuaD0lZCIsIGFjY2VwdGVkRXZlbnQsIGV2ZW50Lndo
ZXJlLnYsIGV2ZW50LndoZXJlLmgpOyAgICAKKyAgICBMT0dfSU5GTyhQbHVnaW5FdmVudHMsICJO
UFBfSGFuZGxlRXZlbnQobW91c2VEb3duKTogJWQgcHQudj0lZCwgcHQuaD0lZCIsIGFjY2VwdGVk
RXZlbnQsIGV2ZW50LndoZXJlLnYsIGV2ZW50LndoZXJlLmgpOyAgICAKIH0KIAogdm9pZCBXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNhcmJvbjo6bW91c2VVcChOU0V2ZW50KiB0aGVFdmVu
dCkKQEAgLTE1Niw3ICsxNTYsNyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Q2FyYm9uOjptb3VzZVVwKE5TRXZlbnQqIHRoZUV2ZW50KQogICAgIEJPT0wgYWNjZXB0ZWRFdmVu
dDsKICAgICBhY2NlcHRlZEV2ZW50ID0gc2VuZEV2ZW50KCZldmVudCk7CiAgICAgCi0gICAgTE9H
KFBsdWdpbkV2ZW50cywgIk5QUF9IYW5kbGVFdmVudChtb3VzZVVwKTogJWQgcHQudj0lZCwgcHQu
aD0lZCIsIGFjY2VwdGVkRXZlbnQsIGV2ZW50LndoZXJlLnYsIGV2ZW50LndoZXJlLmgpOyAgICAK
KyAgICBMT0dfSU5GTyhQbHVnaW5FdmVudHMsICJOUFBfSGFuZGxlRXZlbnQobW91c2VVcCk6ICVk
IHB0LnY9JWQsIHB0Lmg9JWQiLCBhY2NlcHRlZEV2ZW50LCBldmVudC53aGVyZS52LCBldmVudC53
aGVyZS5oKTsgICAgCiB9CiAKIGJvb2wgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJi
b246OnNjcm9sbFdoZWVsKE5TRXZlbnQqIHRoZUV2ZW50KQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZv
aWQgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJib246Om1vdXNlRW50ZXJlZChOU0V2
ZW50KiB0aGVFdmVudCkKICAgICBCT09MIGFjY2VwdGVkRXZlbnQ7CiAgICAgYWNjZXB0ZWRFdmVu
dCA9IHNlbmRFdmVudCgmZXZlbnQpOwogICAgIAotICAgIExPRyhQbHVnaW5FdmVudHMsICJOUFBf
SGFuZGxlRXZlbnQobW91c2VFbnRlcmVkKTogJWQiLCBhY2NlcHRlZEV2ZW50KTsgICAgCisgICAg
TE9HX0lORk8oUGx1Z2luRXZlbnRzLCAiTlBQX0hhbmRsZUV2ZW50KG1vdXNlRW50ZXJlZCk6ICVk
IiwgYWNjZXB0ZWRFdmVudCk7ICAgIAogfQogCiB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRI
YW5kbGVyQ2FyYm9uOjptb3VzZUV4aXRlZChOU0V2ZW50KiB0aGVFdmVudCkKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uOjptb3VzZUV4
aXRlZChOU0V2ZW50KiB0aGVFdmVudCkKICAgICBCT09MIGFjY2VwdGVkRXZlbnQ7CiAgICAgYWNj
ZXB0ZWRFdmVudCA9IHNlbmRFdmVudCgmZXZlbnQpOwogICAgIAotICAgIExPRyhQbHVnaW5FdmVu
dHMsICJOUFBfSGFuZGxlRXZlbnQobW91c2VFeGl0ZWQpOiAlZCIsIGFjY2VwdGVkRXZlbnQpOyAg
ICAKKyAgICBMT0dfSU5GTyhQbHVnaW5FdmVudHMsICJOUFBfSGFuZGxlRXZlbnQobW91c2VFeGl0
ZWQpOiAlZCIsIGFjY2VwdGVkRXZlbnQpOyAgICAKIH0KIAogdm9pZCBXZWJOZXRzY2FwZVBsdWdp
bkV2ZW50SGFuZGxlckNhcmJvbjo6bW91c2VEcmFnZ2VkKE5TRXZlbnQqKQpAQCAtMjA0LDcgKzIw
NCw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJib246Om1vdXNlTW92
ZWQoTlNFdmVudCogdGhlRXZlbnQpCiAgICAgQk9PTCBhY2NlcHRlZEV2ZW50OwogICAgIGFjY2Vw
dGVkRXZlbnQgPSBzZW5kRXZlbnQoJmV2ZW50KTsKICAgICAKLSAgICBMT0coUGx1Z2luRXZlbnRz
LCAiTlBQX0hhbmRsZUV2ZW50KG1vdXNlTW92ZWQpOiAlZCIsIGFjY2VwdGVkRXZlbnQpOworICAg
IExPR19JTkZPKFBsdWdpbkV2ZW50cywgIk5QUF9IYW5kbGVFdmVudChtb3VzZU1vdmVkKTogJWQi
LCBhY2NlcHRlZEV2ZW50KTsKIH0KIAogdm9pZCBXZWJOZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxl
ckNhcmJvbjo6a2V5RG93bihOU0V2ZW50ICp0aGVFdmVudCkKQEAgLTI2OCwxMiArMjY4LDEyIEBA
IHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5FdmVudEhhbmRsZXJDYXJib246OmZvY3VzQ2hhbmdlZChi
b29sIGhhc0ZvY3VzKQogICAgIGlmIChoYXNGb2N1cykgewogICAgICAgICBldmVudC53aGF0ID0g
TlBFdmVudFR5cGVfR2V0Rm9jdXNFdmVudDsKICAgICAgICAgYWNjZXB0ZWRFdmVudCA9IHNlbmRF
dmVudCgmZXZlbnQpOwotICAgICAgICBMT0coUGx1Z2luRXZlbnRzLCAiTlBQX0hhbmRsZUV2ZW50
KE5QRXZlbnRUeXBlX0dldEZvY3VzRXZlbnQpOiAlZCIsIGFjY2VwdGVkRXZlbnQpOworICAgICAg
ICBMT0dfSU5GTyhQbHVnaW5FdmVudHMsICJOUFBfSGFuZGxlRXZlbnQoTlBFdmVudFR5cGVfR2V0
Rm9jdXNFdmVudCk6ICVkIiwgYWNjZXB0ZWRFdmVudCk7CiAgICAgICAgIGluc3RhbGxLZXlFdmVu
dEhhbmRsZXIoKTsKICAgICB9IGVsc2UgewogICAgICAgICBldmVudC53aGF0ID0gTlBFdmVudFR5
cGVfTG9zZUZvY3VzRXZlbnQ7CiAgICAgICAgIGFjY2VwdGVkRXZlbnQgPSBzZW5kRXZlbnQoJmV2
ZW50KTsKLSAgICAgICAgTE9HKFBsdWdpbkV2ZW50cywgIk5QUF9IYW5kbGVFdmVudChOUEV2ZW50
VHlwZV9Mb3NlRm9jdXNFdmVudCk6ICVkIiwgYWNjZXB0ZWRFdmVudCk7CisgICAgICAgIExPR19J
TkZPKFBsdWdpbkV2ZW50cywgIk5QUF9IYW5kbGVFdmVudChOUEV2ZW50VHlwZV9Mb3NlRm9jdXNF
dmVudCk6ICVkIiwgYWNjZXB0ZWRFdmVudCk7CiAgICAgICAgIHJlbW92ZUtleUV2ZW50SGFuZGxl
cigpOwogICAgIH0KIH0KQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2lu
RXZlbnRIYW5kbGVyQ2FyYm9uOjp3aW5kb3dGb2N1c0NoYW5nZWQoYm9vbCBoYXNGb2N1cykKICAg
ICBCT09MIGFjY2VwdGVkRXZlbnQ7CiAgICAgYWNjZXB0ZWRFdmVudCA9IHNlbmRFdmVudCgmZXZl
bnQpOwogICAgIAotICAgIExPRyhQbHVnaW5FdmVudHMsICJOUFBfSGFuZGxlRXZlbnQoYWN0aXZh
dGVFdmVudCk6ICVkICBpc0FjdGl2ZTogJWQiLCBhY2NlcHRlZEV2ZW50LCBoYXNGb2N1cyk7ICAg
IAorICAgIExPR19JTkZPKFBsdWdpbkV2ZW50cywgIk5QUF9IYW5kbGVFdmVudChhY3RpdmF0ZUV2
ZW50KTogJWQgIGlzQWN0aXZlOiAlZCIsIGFjY2VwdGVkRXZlbnQsIGhhc0ZvY3VzKTsgICAgCiB9
CiAKIE9TU3RhdHVzIFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVyQ2FyYm9uOjpUU01FdmVu
dEhhbmRsZXIoRXZlbnRIYW5kbGVyQ2FsbFJlZiBpbkhhbmRsZXJSZWYsIEV2ZW50UmVmIGluRXZl
bnQsIHZvaWQgKmV2ZW50SGFuZGxlcikKQEAgLTMzNyw3ICszMzcsNyBAQCBPU1N0YXR1cyBXZWJO
ZXRzY2FwZVBsdWdpbkV2ZW50SGFuZGxlckNhcmJvbjo6VFNNRXZlbnRIYW5kbGVyKEV2ZW50SGFu
ZGxlckNhbGxSZQogICAgICAgICAgICAgQk9PTCBhY2NlcHRlZEV2ZW50OwogICAgICAgICAgICAg
YWNjZXB0ZWRFdmVudCA9IHN0YXRpY19jYXN0PFdlYk5ldHNjYXBlUGx1Z2luRXZlbnRIYW5kbGVy
Q2FyYm9uKj4oZXZlbnRIYW5kbGVyKS0+c2VuZEV2ZW50KCZldmVudFJlYyk7CiAgICAgICAgICAg
ICAKLSAgICAgICAgICAgIExPRyhQbHVnaW5FdmVudHMsICJOUFBfSGFuZGxlRXZlbnQoa2V5RG93
bik6ICVkIGNoYXJDb2RlOiVjIGtleUNvZGU6JWx1IiwKKyAgICAgICAgICAgIExPR19JTkZPKFBs
dWdpbkV2ZW50cywgIk5QUF9IYW5kbGVFdmVudChrZXlEb3duKTogJWQgY2hhckNvZGU6JWMga2V5
Q29kZTolbHUiLAogICAgICAgICAgICAgICAgIGFjY2VwdGVkRXZlbnQsIChjaGFyKSAoZXZlbnRS
ZWMubWVzc2FnZSAmIGNoYXJDb2RlTWFzayksIChldmVudFJlYy5tZXNzYWdlICYga2V5Q29kZU1h
c2spKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gV2Ugb3JpZ2luYWxseSB0aG91Z2h0
IHRoYXQgaWYgdGhlIHBsdWctaW4gZGlkbid0IGFjY2VwdCB0aGlzIGV2ZW50LApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblBhY2thZ2UubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tbQpp
bmRleCAxNzg1MTU2OGZmNzBmN2YzMTQ1ZmI5ZjNjOGIwNTQzZWQ4NTc0NzMxLi44OTg5Njc2OWNk
OTBmZWI3OTA3YWExMDhjNTgzZjM3MzI0ZjZiY2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luUGFja2FnZS5tbQpAQCAtMjQwLDcgKzI0
MCw3IEBAIC0gKEJPT0wpX3RyeUxvYWQKICAgICBDRkFic29sdXRlVGltZSBjdXJyZW50VGltZTsK
ICAgICBDRkFic29sdXRlVGltZSBkdXJhdGlvbjsKICNlbmRpZgotICAgIExPRyhQbHVnaW5zLCAi
JWYgTG9hZCB0aW1pbmcgc3RhcnRlZCBmb3I6ICVAIiwgc3RhcnQsIChOU1N0cmluZyAqKVtzZWxm
IHBsdWdpbkluZm9dLm5hbWUpOworICAgIExPR19JTkZPKFBsdWdpbnMsICIlZiBMb2FkIHRpbWlu
ZyBzdGFydGVkIGZvcjogJUAiLCBzdGFydCwgKE5TU3RyaW5nICopW3NlbGYgcGx1Z2luSW5mb10u
bmFtZSk7CiAKICAgICBpZiAoaXNMb2FkZWQpCiAgICAgICAgIHJldHVybiBZRVM7CkBAIC0yNTEs
NyArMjUxLDcgQEAgLSAoQk9PTClfdHJ5TG9hZAogICAgIGN1cnJlbnRUaW1lID0gQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCk7CiAgICAgZHVyYXRpb24gPSBjdXJyZW50VGltZSAtIHN0YXJ0Owog
I2VuZGlmCi0gICAgTE9HKFBsdWdpbnMsICIlZiBDRkJ1bmRsZUxvYWRFeGVjdXRhYmxlIHRvb2sg
JWYgc2Vjb25kcyIsIGN1cnJlbnRUaW1lLCBkdXJhdGlvbik7CisgICAgTE9HX0lORk8oUGx1Z2lu
cywgIiVmIENGQnVuZGxlTG9hZEV4ZWN1dGFibGUgdG9vayAlZiBzZWNvbmRzIiwgY3VycmVudFRp
bWUsIGR1cmF0aW9uKTsKICAgICBpc0xvYWRlZCA9IFlFUzsKIAogICAgIE5QX0luaXRpYWxpemUg
PSAoTlBfSW5pdGlhbGl6ZUZ1bmNQdHIpQ0ZCdW5kbGVHZXRGdW5jdGlvblBvaW50ZXJGb3JOYW1l
KGNmQnVuZGxlLmdldCgpLCBDRlNUUigiTlBfSW5pdGlhbGl6ZSIpKTsKQEAgLTMzMiw3ICszMzIs
NyBAQCAtIChCT09MKV90cnlMb2FkCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIENGQWJzb2x1dGVU
aW1lIGluaXRpYWxpemVTdGFydCA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwogI2VuZGlm
Ci0gICAgTE9HKFBsdWdpbnMsICIlZiBOUF9Jbml0aWFsaXplIHRpbWluZyBzdGFydGVkIiwgaW5p
dGlhbGl6ZVN0YXJ0KTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiJWYgTlBfSW5pdGlhbGl6ZSB0
aW1pbmcgc3RhcnRlZCIsIGluaXRpYWxpemVTdGFydCk7CiAgICAgbnBFcnIgPSBOUF9Jbml0aWFs
aXplKCZicm93c2VyRnVuY3MpOwogICAgIGlmIChucEVyciAhPSBOUEVSUl9OT19FUlJPUikKICAg
ICAgICAgcmV0dXJuIE5POwpAQCAtMzQwLDcgKzM0MCw3IEBAIC0gKEJPT0wpX3RyeUxvYWQKICAg
ICBjdXJyZW50VGltZSA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwogICAgIGR1cmF0aW9u
ID0gY3VycmVudFRpbWUgLSBpbml0aWFsaXplU3RhcnQ7CiAjZW5kaWYKLSAgICBMT0coUGx1Z2lu
cywgIiVmIE5QX0luaXRpYWxpemUgdG9vayAlZiBzZWNvbmRzIiwgY3VycmVudFRpbWUsIGR1cmF0
aW9uKTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiJWYgTlBfSW5pdGlhbGl6ZSB0b29rICVmIHNl
Y29uZHMiLCBjdXJyZW50VGltZSwgZHVyYXRpb24pOwogCiAgICAgcGx1Z2luRnVuY3Muc2l6ZSA9
IHNpemVvZihOUFBsdWdpbkZ1bmNzKTsKIApAQCAtMzUyLDE1ICszNTIsMTUgQEAgLSAoQk9PTClf
dHJ5TG9hZAogICAgIHBsdWdpblZlcnNpb24gPSBwbHVnaW5GdW5jcy52ZXJzaW9uOwogCiAgICAg
aWYgKHBsdWdpbkZ1bmNzLmphdmFDbGFzcykKLSAgICAgICAgTE9HKExpdmVDb25uZWN0LCAiJUA6
ICBtYWNoLW8gZW50cnkgcG9pbnQgZm9yIE5QUF9HZXRKYXZhQ2xhc3MgPSAlcCIsIChOU1N0cmlu
ZyAqKVtzZWxmIHBsdWdpbkluZm9dLm5hbWUsIHBsdWdpbkZ1bmNzLmphdmFDbGFzcyk7CisgICAg
ICAgIExPR19JTkZPKExpdmVDb25uZWN0LCAiJUA6ICBtYWNoLW8gZW50cnkgcG9pbnQgZm9yIE5Q
UF9HZXRKYXZhQ2xhc3MgPSAlcCIsIChOU1N0cmluZyAqKVtzZWxmIHBsdWdpbkluZm9dLm5hbWUs
IHBsdWdpbkZ1bmNzLmphdmFDbGFzcyk7CiAgICAgZWxzZQotICAgICAgICBMT0coTGl2ZUNvbm5l
Y3QsICIlQDogIG5vIGVudHJ5IHBvaW50IGZvciBOUFBfR2V0SmF2YUNsYXNzIiwgKE5TU3RyaW5n
ICopW3NlbGYgcGx1Z2luSW5mb10ubmFtZSk7CisgICAgICAgIExPR19JTkZPKExpdmVDb25uZWN0
LCAiJUA6ICBubyBlbnRyeSBwb2ludCBmb3IgTlBQX0dldEphdmFDbGFzcyIsIChOU1N0cmluZyAq
KVtzZWxmIHBsdWdpbkluZm9dLm5hbWUpOwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGN1cnJl
bnRUaW1lID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCk7CiAgICAgZHVyYXRpb24gPSBjdXJy
ZW50VGltZSAtIHN0YXJ0OwogI2VuZGlmCi0gICAgTE9HKFBsdWdpbnMsICIlZiBUb3RhbCBsb2Fk
IHRpbWU6ICVmIHNlY29uZHMiLCBjdXJyZW50VGltZSwgZHVyYXRpb24pOworICAgIExPR19JTkZP
KFBsdWdpbnMsICIlZiBUb3RhbCBsb2FkIHRpbWU6ICVmIHNlY29uZHMiLCBjdXJyZW50VGltZSwg
ZHVyYXRpb24pOwogCiAgICAgcmV0dXJuIFlFUzsKIH0KQEAgLTQ0Miw3ICs0NDIsNyBAQCAtICh2
b2lkKV91bmxvYWRXaXRoU2h1dGRvd246KEJPT0wpc2h1dGRvd24KICAgICBpZiAoIWlzTG9hZGVk
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgTE9HKFBsdWdpbnMsICJVbmxvYWRpbmcgJUAu
Li4iLCAoTlNTdHJpbmcgKilwbHVnaW5JbmZvLm5hbWUpOworICAgIExPR19JTkZPKFBsdWdpbnMs
ICJVbmxvYWRpbmcgJUAuLi4iLCAoTlNTdHJpbmcgKilwbHVnaW5JbmZvLm5hbWUpOwogCiAgICAg
Ly8gQ2Fubm90IHVubG9hZCBhIHBsdWctaW4gcGFja2FnZSB3aGlsZSBhbiBpbnN0YW5jZSBpcyBz
dGlsbCB1c2luZyBpdAogICAgIGlmIChpbnN0YW5jZUNvdW50ID4gMCkgewpAQCAtNDU2LDcgKzQ1
Niw3IEBAIC0gKHZvaWQpX3VubG9hZFdpdGhTaHV0ZG93bjooQk9PTClzaHV0ZG93bgogICAgIGlm
IChyZXNvdXJjZVJlZiAhPSAtMSkKICAgICAgICAgW3NlbGYgY2xvc2VSZXNvdXJjZUZpbGU6cmVz
b3VyY2VSZWZdOwogCi0gICAgTE9HKFBsdWdpbnMsICJQbHVnaW4gVW5sb2FkZWQiKTsKKyAgICBM
T0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luIFVubG9hZGVkIik7CiAgICAgaXNMb2FkZWQgPSBOTzsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBs
dWdpblN0cmVhbS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0KaW5kZXggN2JiYTU2NjFiYTc1OWJlNmY0YjM4YWI1Nzc5ZTlkYWM5OThhMGM4
MS4uYTg4ZDA0ZGQ0NTRmMjAwODQ1OGYyOTQxYjJlYTc3YWZiYjgyMmRkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBA
IC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6c3RhcnRTdHJl
YW0oTlNVUkwgKnVybCwgbG9uZyBsb25nIGV4cGVjdGVkQ29udGVudEwKICAgICAgICAgbnBFcnIg
PSBtX3BsdWdpbkZ1bmNzLT5uZXdzdHJlYW0obV9wbHVnaW4sIG1fbWltZVR5cGUubXV0YWJsZURh
dGEoKSwgJm1fc3RyZWFtLCBOTywgJm1fdHJhbnNmZXJNb2RlKTsKICAgICB9CiAKLSAgICBMT0co
UGx1Z2lucywgIk5QUF9OZXdTdHJlYW0gVVJMPSVAIE1JTUU9JXMgZXJyb3I9JWQiLCBtX3Jlc3Bv
bnNlVVJMLmdldCgpLCBtX21pbWVUeXBlLmRhdGEoKSwgbnBFcnIpOworICAgIExPR19JTkZPKFBs
dWdpbnMsICJOUFBfTmV3U3RyZWFtIFVSTD0lQCBNSU1FPSVzIGVycm9yPSVkIiwgbV9yZXNwb25z
ZVVSTC5nZXQoKSwgbV9taW1lVHlwZS5kYXRhKCksIG5wRXJyKTsKIAogICAgIGlmIChucEVyciAh
PSBOUEVSUl9OT19FUlJPUikgewogICAgICAgICBMT0dfRVJST1IoIk5QUF9OZXdTdHJlYW0gZmFp
bGVkIHdpdGggZXJyb3I6ICVkIHJlc3BvbnNlVVJMOiAlQCIsIG5wRXJyLCBtX3Jlc3BvbnNlVVJM
LmdldCgpKTsKQEAgLTI2MiwxMyArMjYyLDEzIEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW06OnN0YXJ0U3RyZWFtKE5TVVJMICp1cmwsIGxvbmcgbG9uZyBleHBlY3RlZENvbnRlbnRMCiAK
ICAgICBzd2l0Y2ggKG1fdHJhbnNmZXJNb2RlKSB7CiAgICAgICAgIGNhc2UgTlBfTk9STUFMOgot
ICAgICAgICAgICAgTE9HKFBsdWdpbnMsICJTdHJlYW0gdHlwZTogTlBfTk9STUFMIik7CisgICAg
ICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiU3RyZWFtIHR5cGU6IE5QX05PUk1BTCIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTlBfQVNGSUxFT05MWToKLSAgICAgICAgICAg
IExPRyhQbHVnaW5zLCAiU3RyZWFtIHR5cGU6IE5QX0FTRklMRU9OTFkiKTsKKyAgICAgICAgICAg
IExPR19JTkZPKFBsdWdpbnMsICJTdHJlYW0gdHlwZTogTlBfQVNGSUxFT05MWSIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTlBfQVNGSUxFOgotICAgICAgICAgICAgTE9HKFBs
dWdpbnMsICJTdHJlYW0gdHlwZTogTlBfQVNGSUxFIik7CisgICAgICAgICAgICBMT0dfSU5GTyhQ
bHVnaW5zLCAiU3RyZWFtIHR5cGU6IE5QX0FTRklMRSIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgTlBfU0VFSzoKICAgICAgICAgICAgIExPR19FUlJPUigiU3RyZWFtIHR5cGU6
IE5QX1NFRUsgbm90IHlldCBzdXBwb3J0ZWQiKTsKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFdl
Yk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZXN0cm95U3RyZWFtKCkKIAogICAgICAgICAgICAgUGx1
Z2luU3RvcERlZmVycmVyIGRlZmVycmVyKG1fcGx1Z2luVmlldy5nZXQoKSk7CiAgICAgICAgICAg
ICBtX3BsdWdpbkZ1bmNzLT5hc2ZpbGUobV9wbHVnaW4sICZtX3N0cmVhbSwgW21fcGF0aC5nZXQo
KSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dKTsKLSAgICAgICAgICAgIExPRyhQbHVnaW5zLCAi
TlBQX1N0cmVhbUFzRmlsZSByZXNwb25zZVVSTD0lQCBwYXRoPSVzIiwgbV9yZXNwb25zZVVSTC5n
ZXQoKSwgbV9wYXRoLmdldCgpKTsKKyAgICAgICAgICAgIExPR19JTkZPKFBsdWdpbnMsICJOUFBf
U3RyZWFtQXNGaWxlIHJlc3BvbnNlVVJMPSVAIHBhdGg9JXMiLCBtX3Jlc3BvbnNlVVJMLmdldCgp
LCBtX3BhdGguZ2V0KCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1fcGF0aCkgewpAQCAt
NDIxLDcgKzQyMSw3IEBAIHZvaWQgV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OmRlc3Ryb3lTdHJl
YW0oKQogICAgICAgICAgICAgTlBFcnJvciBucEVyciA9IAogI2VuZGlmCiAgICAgICAgICAgICBt
X3BsdWdpbkZ1bmNzLT5kZXN0cm95c3RyZWFtKG1fcGx1Z2luLCAmbV9zdHJlYW0sIG1fcmVhc29u
KTsKLSAgICAgICAgICAgIExPRyhQbHVnaW5zLCAiTlBQX0Rlc3Ryb3lTdHJlYW0gcmVzcG9uc2VV
Ukw9JUAgZXJyb3I9JWQiLCBtX3Jlc3BvbnNlVVJMLmdldCgpLCBucEVycik7CisgICAgICAgICAg
ICBMT0dfSU5GTyhQbHVnaW5zLCAiTlBQX0Rlc3Ryb3lTdHJlYW0gcmVzcG9uc2VVUkw9JUAgZXJy
b3I9JWQiLCBtX3Jlc3BvbnNlVVJMLmdldCgpLCBucEVycik7CiAgICAgICAgIH0KIAogICAgICAg
ICBmcmVlKG1faGVhZGVycyk7CkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBXZWJOZXRzY2FwZVBs
dWdpblN0cmVhbTo6ZGVzdHJveVN0cmVhbSgpCiAgICAgICAgIC8vIE5QUF9VUkxOb3RpZnkgZXhw
ZWN0cyB0aGUgcmVxdWVzdCBVUkwsIG5vdCB0aGUgcmVzcG9uc2UgVVJMLgogICAgICAgICBQbHVn
aW5TdG9wRGVmZXJyZXIgZGVmZXJyZXIobV9wbHVnaW5WaWV3LmdldCgpKTsKICAgICAgICAgbV9w
bHVnaW5GdW5jcy0+dXJsbm90aWZ5KG1fcGx1Z2luLCBtX3JlcXVlc3RVUkwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgbV9yZWFzb24sIG1fbm90aWZ5RGF0YSk7Ci0gICAgICAgIExPRyhQbHVnaW5z
LCAiTlBQX1VSTE5vdGlmeSByZXF1ZXN0VVJMPSVAIHJlYXNvbj0lZCIsIChOU1VSTCAqKW1fcmVx
dWVzdFVSTCwgbV9yZWFzb24pOworICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiTlBQX1VSTE5v
dGlmeSByZXF1ZXN0VVJMPSVAIHJlYXNvbj0lZCIsIChOU1VSTCAqKW1fcmVxdWVzdFVSTCwgbV9y
ZWFzb24pOwogICAgIH0KIAogICAgIG1faXNUZXJtaW5hdGVkID0gdHJ1ZTsKQEAgLTUxMCw3ICs1
MTAsNyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSgpCiAgICAg
d2hpbGUgKHRvdGFsQnl0ZXNEZWxpdmVyZWQgPCB0b3RhbEJ5dGVzKSB7CiAgICAgICAgIFBsdWdp
blN0b3BEZWZlcnJlciBkZWZlcnJlcihtX3BsdWdpblZpZXcuZ2V0KCkpOwogICAgICAgICBpbnQz
Ml90IGRlbGl2ZXJ5Qnl0ZXMgPSBtX3BsdWdpbkZ1bmNzLT53cml0ZXJlYWR5KG1fcGx1Z2luLCAm
bV9zdHJlYW0pOwotICAgICAgICBMT0coUGx1Z2lucywgIk5QUF9Xcml0ZVJlYWR5IHJlc3BvbnNl
VVJMPSVAIGJ5dGVzPSVkIiwgbV9yZXNwb25zZVVSTC5nZXQoKSwgZGVsaXZlcnlCeXRlcyk7Cisg
ICAgICAgIExPR19JTkZPKFBsdWdpbnMsICJOUFBfV3JpdGVSZWFkeSByZXNwb25zZVVSTD0lQCBi
eXRlcz0lZCIsIG1fcmVzcG9uc2VVUkwuZ2V0KCksIGRlbGl2ZXJ5Qnl0ZXMpOwogCiAgICAgICAg
IGlmIChtX2lzVGVybWluYXRlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUzMyw3ICs1MzMs
NyBAQCB2b2lkIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpkZWxpdmVyRGF0YSgpCiAgICAgICAg
ICAgICBkZWxpdmVyeUJ5dGVzID0gbWluPGludDMyX3Q+KGRlbGl2ZXJ5Qnl0ZXMsIFtzdWJkYXRh
IGxlbmd0aF0pOwogICAgICAgICAgICAgbV9vZmZzZXQgKz0gZGVsaXZlcnlCeXRlczsKICAgICAg
ICAgICAgIHRvdGFsQnl0ZXNEZWxpdmVyZWQgKz0gZGVsaXZlcnlCeXRlczsKLSAgICAgICAgICAg
IExPRyhQbHVnaW5zLCAiTlBQX1dyaXRlIHJlc3BvbnNlVVJMPSVAIGJ5dGVzPSVkIHRvdGFsLWRl
bGl2ZXJlZD0lZC8lZCIsIG1fcmVzcG9uc2VVUkwuZ2V0KCksIGRlbGl2ZXJ5Qnl0ZXMsIG1fb2Zm
c2V0LCBtX3N0cmVhbS5lbmQpOworICAgICAgICAgICAgTE9HX0lORk8oUGx1Z2lucywgIk5QUF9X
cml0ZSByZXNwb25zZVVSTD0lQCBieXRlcz0lZCB0b3RhbC1kZWxpdmVyZWQ9JWQvJWQiLCBtX3Jl
c3BvbnNlVVJMLmdldCgpLCBkZWxpdmVyeUJ5dGVzLCBtX29mZnNldCwgbV9zdHJlYW0uZW5kKTsK
ICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dl
Yk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCA2YTFlYjY0MGEwZGFjZjBjY2UwMWVlZDM4MTky
MzUwYjVkYzg1MmYzLi5lNmJkZGQxZWFhYTlmM2E5MWZhZWU4OTAwZmNjZTJmZTZhMzUxM2UyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmll
dy5tbQpAQCAtMTAwMSwxOSArMTAwMSwxOSBAQCAtICh2b2lkKXNldFdpbmRvd0lmTmVjZXNzYXJ5
CiAgICAgICAgIHN3aXRjaCAoZHJhd2luZ01vZGVsKSB7CiAjaWZuZGVmIE5QX05PX1FVSUNLRFJB
VwogICAgICAgICAgICAgY2FzZSBOUERyYXdpbmdNb2RlbFF1aWNrRHJhdzoKLSAgICAgICAgICAg
ICAgICBMT0coUGx1Z2lucywgIk5QUF9TZXRXaW5kb3cgKFF1aWNrRHJhdyk6ICVkLCBwb3J0PTB4
JTA4eCwgd2luZG93Lng6JWQgd2luZG93Lnk6JWQgd2luZG93LndpZHRoOiVkIHdpbmRvdy5oZWln
aHQ6JWQiLAorICAgICAgICAgICAgICAgIExPR19JTkZPKFBsdWdpbnMsICJOUFBfU2V0V2luZG93
IChRdWlja0RyYXcpOiAlZCwgcG9ydD0weCUwOHgsIHdpbmRvdy54OiVkIHdpbmRvdy55OiVkIHdp
bmRvdy53aWR0aDolZCB3aW5kb3cuaGVpZ2h0OiVkIiwKICAgICAgICAgICAgICAgICBucEVyciwg
KGludCluUG9ydC5xZFBvcnQucG9ydCwgKGludCl3aW5kb3cueCwgKGludCl3aW5kb3cueSwgKGlu
dCl3aW5kb3cud2lkdGgsIChpbnQpd2luZG93LmhlaWdodCk7CiAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZiAvKiBOUF9OT19RVUlDS0RSQVcgKi8KICAgICAgICAgICAgIAogICAgICAgICAgICAg
Y2FzZSBOUERyYXdpbmdNb2RlbENvcmVHcmFwaGljczoKLSAgICAgICAgICAgICAgICBMT0coUGx1
Z2lucywgIk5QUF9TZXRXaW5kb3cgKENvcmVHcmFwaGljcyk6ICVkLCB3aW5kb3c9JXAsIGNvbnRl
eHQ9JXAsIHdpbmRvdy54OiVkIHdpbmRvdy55OiVkIHdpbmRvdy53aWR0aDolZCB3aW5kb3cuaGVp
Z2h0OiVkIHdpbmRvdy5jbGlwUmVjdCBzaXplOiVkeCVkIiwKKyAgICAgICAgICAgICAgICBMT0df
SU5GTyhQbHVnaW5zLCAiTlBQX1NldFdpbmRvdyAoQ29yZUdyYXBoaWNzKTogJWQsIHdpbmRvdz0l
cCwgY29udGV4dD0lcCwgd2luZG93Lng6JWQgd2luZG93Lnk6JWQgd2luZG93LndpZHRoOiVkIHdp
bmRvdy5oZWlnaHQ6JWQgd2luZG93LmNsaXBSZWN0IHNpemU6JWR4JWQiLAogICAgICAgICAgICAg
ICAgIG5wRXJyLCBuUG9ydC5jZ1BvcnQud2luZG93LCBuUG9ydC5jZ1BvcnQuY29udGV4dCwgKGlu
dCl3aW5kb3cueCwgKGludCl3aW5kb3cueSwgKGludCl3aW5kb3cud2lkdGgsIChpbnQpd2luZG93
LmhlaWdodCwgCiAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGlwUmVjdC5yaWdodCAtIHdp
bmRvdy5jbGlwUmVjdC5sZWZ0LCB3aW5kb3cuY2xpcFJlY3QuYm90dG9tIC0gd2luZG93LmNsaXBS
ZWN0LnRvcCk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBOUERyYXdp
bmdNb2RlbENvcmVBbmltYXRpb246Ci0gICAgICAgICAgICAgICAgTE9HKFBsdWdpbnMsICJOUFBf
U2V0V2luZG93IChDb3JlQW5pbWF0aW9uKTogJWQsIHdpbmRvdz0lcCB3aW5kb3cueDolZCB3aW5k
b3cueTolZCB3aW5kb3cud2lkdGg6JWQgd2luZG93LmhlaWdodDolZCIsCisgICAgICAgICAgICAg
ICAgTE9HX0lORk8oUGx1Z2lucywgIk5QUF9TZXRXaW5kb3cgKENvcmVBbmltYXRpb24pOiAlZCwg
d2luZG93PSVwIHdpbmRvdy54OiVkIHdpbmRvdy55OiVkIHdpbmRvdy53aWR0aDolZCB3aW5kb3cu
aGVpZ2h0OiVkIiwKICAgICAgICAgICAgICAgICBucEVyciwgd2luZG93LndpbmRvdywgblBvcnQu
Y2dQb3J0LmNvbnRleHQsIChpbnQpd2luZG93LngsIChpbnQpd2luZG93LnksIChpbnQpd2luZG93
LndpZHRoLCAoaW50KXdpbmRvdy5oZWlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTEw
NzgsNyArMTA3OCw3IEBAIC0gKEJPT0wpY3JlYXRlUGx1Z2luCiAKICNpZm5kZWYgTlBfTk9fQ0FS
Qk9OCiAgICAgaWYgKGV2ZW50TW9kZWwgPT0gTlBFdmVudE1vZGVsQ29jb2EgJiYgaXNEcmF3aW5n
TW9kZWxRdWlja0RyYXcoZHJhd2luZ01vZGVsKSkgewotICAgICAgICBMT0coUGx1Z2lucywgIlBs
dWdpbiBjYW4ndCB1c2UgdXNlIENvY29hIGV2ZW50IG1vZGVsIHdpdGggUXVpY2tEcmF3IGRyYXdp
bmcgbW9kZWw6ICVAIiwgX3BsdWdpblBhY2thZ2UuZ2V0KCkpOworICAgICAgICBMT0dfSU5GTyhQ
bHVnaW5zLCAiUGx1Z2luIGNhbid0IHVzZSB1c2UgQ29jb2EgZXZlbnQgbW9kZWwgd2l0aCBRdWlj
a0RyYXcgZHJhd2luZyBtb2RlbDogJUAiLCBfcGx1Z2luUGFja2FnZS5nZXQoKSk7CiAgICAgICAg
IFtzZWxmIF9kZXN0cm95UGx1Z2luXTsKICAgICAgICAgW19wbHVnaW5QYWNrYWdlLmdldCgpIGNs
b3NlXTsKICAgICAgICAgCkBAIC0xMTE4LDcgKzExMTgsNyBAQCAtIChCT09MKWNyZWF0ZVBsdWdp
bgogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgW3NlbGYgc2V0V2FudHNMYXll
cjpZRVNdOwogCi0gICAgICAgICAgICBMT0coUGx1Z2lucywgIiVAIGlzIHVzaW5nIENvcmUgQW5p
bWF0aW9uIGRyYXdpbmcgbW9kZWwgd2l0aCBsYXllciAlQCIsIF9wbHVnaW5QYWNrYWdlLmdldCgp
LCBfcGx1Z2luTGF5ZXIuZ2V0KCkpOworICAgICAgICAgICAgTE9HX0lORk8oUGx1Z2lucywgIiVA
IGlzIHVzaW5nIENvcmUgQW5pbWF0aW9uIGRyYXdpbmcgbW9kZWwgd2l0aCBsYXllciAlQCIsIF9w
bHVnaW5QYWNrYWdlLmdldCgpLCBfcGx1Z2luTGF5ZXIuZ2V0KCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgQVNTRVJUKF9wbHVnaW5MYXllcik7CkBAIC0xMjUyLDcgKzEyNTIsNyBAQCAtICh2b2lk
KXNldEF0dHJpYnV0ZUtleXM6KE5TQXJyYXkgKilrZXlzIGFuZFZhbHVlczooTlNBcnJheSAqKXZh
bHVlcwogICAgICAgICB9CiAgICAgICAgIGNBdHRyaWJ1dGVzW2FyZ3NDb3VudF0gPSBzdHJkdXAo
W2tleSBVVEY4U3RyaW5nXSk7CiAgICAgICAgIGNWYWx1ZXNbYXJnc0NvdW50XSA9IHN0cmR1cChb
dmFsdWUgVVRGOFN0cmluZ10pOwotICAgICAgICBMT0coUGx1Z2lucywgIiVAID0gJUAiLCBrZXks
IHZhbHVlKTsKKyAgICAgICAgTE9HX0lORk8oUGx1Z2lucywgIiVAID0gJUAiLCBrZXksIHZhbHVl
KTsKICAgICAgICAgYXJnc0NvdW50Kys7CiAgICAgfQogfQpAQCAtMTc3Niw3ICsxNzc2LDcgQEAg
LSAoTlBFcnJvcilsb2FkUmVxdWVzdDooTlNNdXRhYmxlVVJMUmVxdWVzdCAqKXJlcXVlc3QgaW5U
YXJnZXQ6KGNvbnN0IGNoYXIgKiljVGEKIAogLShOUEVycm9yKWdldFVSTE5vdGlmeTooY29uc3Qg
Y2hhciAqKVVSTENTdHJpbmcgdGFyZ2V0Oihjb25zdCBjaGFyICopY1RhcmdldCBub3RpZnlEYXRh
Oih2b2lkICopbm90aWZ5RGF0YQogewotICAgIExPRyhQbHVnaW5zLCAiTlBOX0dldFVSTE5vdGlm
eTogJXMgdGFyZ2V0OiAlcyIsIFVSTENTdHJpbmcsIGNUYXJnZXQpOworICAgIExPR19JTkZPKFBs
dWdpbnMsICJOUE5fR2V0VVJMTm90aWZ5OiAlcyB0YXJnZXQ6ICVzIiwgVVJMQ1N0cmluZywgY1Rh
cmdldCk7CiAKICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW3NlbGYgcmVxdWVz
dFdpdGhVUkxDU3RyaW5nOlVSTENTdHJpbmddOwogICAgIHJldHVybiBbc2VsZiBsb2FkUmVxdWVz
dDpyZXF1ZXN0IGluVGFyZ2V0OmNUYXJnZXQgd2l0aE5vdGlmeURhdGE6bm90aWZ5RGF0YSBzZW5k
Tm90aWZpY2F0aW9uOllFU107CkBAIC0xNzg0LDcgKzE3ODQsNyBAQCAtKE5QRXJyb3IpZ2V0VVJM
Tm90aWZ5Oihjb25zdCBjaGFyICopVVJMQ1N0cmluZyB0YXJnZXQ6KGNvbnN0IGNoYXIgKiljVGFy
Z2V0IG5vdAogCiAtKE5QRXJyb3IpZ2V0VVJMOihjb25zdCBjaGFyICopVVJMQ1N0cmluZyB0YXJn
ZXQ6KGNvbnN0IGNoYXIgKiljVGFyZ2V0CiB7Ci0gICAgTE9HKFBsdWdpbnMsICJOUE5fR2V0VVJM
OiAlcyB0YXJnZXQ6ICVzIiwgVVJMQ1N0cmluZywgY1RhcmdldCk7CisgICAgTE9HX0lORk8oUGx1
Z2lucywgIk5QTl9HZXRVUkw6ICVzIHRhcmdldDogJXMiLCBVUkxDU3RyaW5nLCBjVGFyZ2V0KTsK
IAogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbc2VsZiByZXF1ZXN0V2l0aFVS
TENTdHJpbmc6VVJMQ1N0cmluZ107CiAgICAgcmV0dXJuIFtzZWxmIGxvYWRSZXF1ZXN0OnJlcXVl
c3QgaW5UYXJnZXQ6Y1RhcmdldCB3aXRoTm90aWZ5RGF0YTpOVUxMIHNlbmROb3RpZmljYXRpb246
Tk9dOwpAQCAtMTg4MSw3ICsxODgxLDcgQEAgLSAoTlBFcnJvcilwb3N0VVJMTm90aWZ5Oihjb25z
dCBjaGFyICopVVJMQ1N0cmluZwogICAgICAgICAgICAgICAgICAgICBmaWxlOihOUEJvb2wpZmls
ZQogICAgICAgICAgICAgICBub3RpZnlEYXRhOih2b2lkICopbm90aWZ5RGF0YQogewotICAgIExP
RyhQbHVnaW5zLCAiTlBOX1Bvc3RVUkxOb3RpZnk6ICVzIiwgVVJMQ1N0cmluZyk7CisgICAgTE9H
X0lORk8oUGx1Z2lucywgIk5QTl9Qb3N0VVJMTm90aWZ5OiAlcyIsIFVSTENTdHJpbmcpOwogICAg
IHJldHVybiBbc2VsZiBfcG9zdFVSTDpVUkxDU3RyaW5nIHRhcmdldDp0YXJnZXQgbGVuOmxlbiBi
dWY6YnVmIGZpbGU6ZmlsZSBub3RpZnlEYXRhOm5vdGlmeURhdGEgc2VuZE5vdGlmaWNhdGlvbjpZ
RVMgYWxsb3dIZWFkZXJzOllFU107CiB9CiAKQEAgLTE4OTEsMzEgKzE4OTEsMzEgQEAgLShOUEVy
cm9yKXBvc3RVUkw6KGNvbnN0IGNoYXIgKilVUkxDU3RyaW5nCiAgICAgICAgICAgICAgIGJ1Zjoo
Y29uc3QgY2hhciAqKWJ1ZgogICAgICAgICAgICAgIGZpbGU6KE5QQm9vbClmaWxlCiB7Ci0gICAg
TE9HKFBsdWdpbnMsICJOUE5fUG9zdFVSTDogJXMiLCBVUkxDU3RyaW5nKTsgICAgICAgIAorICAg
IExPR19JTkZPKFBsdWdpbnMsICJOUE5fUG9zdFVSTDogJXMiLCBVUkxDU3RyaW5nKTsgICAgICAg
IAogICAgIC8vIEFzIGRvY3VtZW50ZWQsIG9ubHkgYWxsb3cgaGVhZGVycyB0byBiZSBzcGVjaWZp
ZWQgdmlhIE5QUF9Qb3N0VVJMIHdoZW4gdXNpbmcgYSBmaWxlLgogICAgIHJldHVybiBbc2VsZiBf
cG9zdFVSTDpVUkxDU3RyaW5nIHRhcmdldDp0YXJnZXQgbGVuOmxlbiBidWY6YnVmIGZpbGU6Zmls
ZSBub3RpZnlEYXRhOk5VTEwgc2VuZE5vdGlmaWNhdGlvbjpOTyBhbGxvd0hlYWRlcnM6ZmlsZV07
CiB9CiAKIC0oTlBFcnJvciluZXdTdHJlYW06KE5QTUlNRVR5cGUpdHlwZSB0YXJnZXQ6KGNvbnN0
IGNoYXIgKil0YXJnZXQgc3RyZWFtOihOUFN0cmVhbSoqKXN0cmVhbQogewotICAgIExPRyhQbHVn
aW5zLCAiTlBOX05ld1N0cmVhbSIpOworICAgIExPR19JTkZPKFBsdWdpbnMsICJOUE5fTmV3U3Ry
ZWFtIik7CiAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiB9CiAKIC0oTlBFcnJvcil3
cml0ZTooTlBTdHJlYW0qKXN0cmVhbSBsZW46KFNJbnQzMilsZW4gYnVmZmVyOih2b2lkICopYnVm
ZmVyCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJOUE5fV3JpdGUiKTsKKyAgICBMT0dfSU5GTyhQbHVn
aW5zLCAiTlBOX1dyaXRlIik7CiAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiB9CiAK
IC0oTlBFcnJvcilkZXN0cm95U3RyZWFtOihOUFN0cmVhbSopc3RyZWFtIHJlYXNvbjooTlBSZWFz
b24pcmVhc29uCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJOUE5fRGVzdHJveVN0cmVhbSIpOworICAg
IExPR19JTkZPKFBsdWdpbnMsICJOUE5fRGVzdHJveVN0cmVhbSIpOwogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gZG9lcyBhIHNhbml0eSBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgTlBTdHJlYW0gcHJv
dmlkZWQgYWN0dWFsbHkKICAgICAvLyBiZWxvbmdzIHRvIHRoZSBwbHVnLWluIHRoYXQgcHJvdmlk
ZWQgaXQsIHdoaWNoIGZpeGVzIGEgY3Jhc2ggaW4gdGhlIERpdlggCiAgICAgLy8gcGx1Zy1pbjog
PHJkYXI6Ly9wcm9ibGVtLzUwOTM4NjI+IHwgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMyMDMKICAgICBpZiAoIXN0cmVhbSB8fCBXZWJOZXRzY2FwZVBsdWdpblN0cmVh
bTo6b3duZXJGb3JTdHJlYW0oc3RyZWFtKSAhPSBwbHVnaW4pIHsKLSAgICAgICAgTE9HKFBsdWdp
bnMsICJJbnZhbGlkIE5QU3RyZWFtIHBhc3NlZCB0byBOUE5fRGVzdHJveVN0cmVhbTogJXAiLCBz
dHJlYW0pOworICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiSW52YWxpZCBOUFN0cmVhbSBwYXNz
ZWQgdG8gTlBOX0Rlc3Ryb3lTdHJlYW06ICVwIiwgc3RyZWFtKTsKICAgICAgICAgcmV0dXJuIE5Q
RVJSX0lOVkFMSURfSU5TVEFOQ0VfRVJST1I7CiAgICAgfQogICAgIApAQCAtMTk0Nyw3ICsxOTQ3
LDcgQEAgLSh2b2lkKXN0YXR1czooY29uc3QgY2hhciAqKW1lc3NhZ2UKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKLSAgICBMT0coUGx1Z2lucywgIk5QTl9TdGF0dXM6ICVAIiwgc3RhdHVz
KTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiTlBOX1N0YXR1czogJUAiLCBzdGF0dXMpOwogICAg
IFdlYlZpZXcgKnd2ID0gW3NlbGYgd2ViVmlld107CiAgICAgW1t3diBfVUlEZWxlZ2F0ZUZvcndh
cmRlcl0gd2ViVmlldzp3diBzZXRTdGF0dXNUZXh0OihOU1N0cmluZyAqKXN0YXR1c107CiAgICAg
Q0ZSZWxlYXNlKHN0YXR1cyk7CkBAIC0xOTU1LDE0ICsxOTU1LDE0IEBAIC0odm9pZClzdGF0dXM6
KGNvbnN0IGNoYXIgKiltZXNzYWdlCiAKIC0odm9pZClpbnZhbGlkYXRlUmVjdDooTlBSZWN0ICop
aW52YWxpZFJlY3QKIHsKLSAgICBMT0coUGx1Z2lucywgIk5QTl9JbnZhbGlkYXRlUmVjdCIpOwor
ICAgIExPR19JTkZPKFBsdWdpbnMsICJOUE5fSW52YWxpZGF0ZVJlY3QiKTsKICAgICBbc2VsZiBp
bnZhbGlkYXRlUGx1Z2luQ29udGVudFJlY3Q6TlNNYWtlUmVjdChpbnZhbGlkUmVjdC0+bGVmdCwg
aW52YWxpZFJlY3QtPnRvcCwKICAgICAgICAgKGZsb2F0KWludmFsaWRSZWN0LT5yaWdodCAtIGlu
dmFsaWRSZWN0LT5sZWZ0LCAoZmxvYXQpaW52YWxpZFJlY3QtPmJvdHRvbSAtIGludmFsaWRSZWN0
LT50b3ApXTsKIH0KIAogLSAodm9pZClpbnZhbGlkYXRlUmVnaW9uOihOUFJlZ2lvbilpbnZhbGlk
UmVnaW9uCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJOUE5fSW52YWxpZGF0ZVJlZ2lvbiIpOworICAg
IExPR19JTkZPKFBsdWdpbnMsICJOUE5fSW52YWxpZGF0ZVJlZ2lvbiIpOwogICAgIE5TUmVjdCBp
bnZhbGlkUmVjdCA9IE5TWmVyb1JlY3Q7CiAgICAgc3dpdGNoIChkcmF3aW5nTW9kZWwpIHsKICNp
Zm5kZWYgTlBfTk9fUVVJQ0tEUkFXCkBAIC0xOTkxLDcgKzE5OTEsNyBAQCAtICh2b2lkKWludmFs
aWRhdGVSZWdpb246KE5QUmVnaW9uKWludmFsaWRSZWdpb24KIAogLSh2b2lkKWZvcmNlUmVkcmF3
CiB7Ci0gICAgTE9HKFBsdWdpbnMsICJmb3JjZVJlZHJhdyIpOworICAgIExPR19JTkZPKFBsdWdp
bnMsICJmb3JjZVJlZHJhdyIpOwogICAgIFtzZWxmIGludmFsaWRhdGVQbHVnaW5Db250ZW50UmVj
dDpbc2VsZiBib3VuZHNdXTsKICAgICBbW3NlbGYgd2luZG93XSBkaXNwbGF5SWZOZWVkZWRdOwog
fQpAQCAtMjEyNiw3ICsyMTI2LDcgQEAgLSAoTlBFcnJvcilzZXRWYXJpYWJsZTooTlBQVmFyaWFi
bGUpdmFyaWFibGUgdmFsdWU6KHZvaWQgKil2YWx1ZQogCiAgICAgICAgICAgICAgICAgLy8gVW5z
dXBwb3J0ZWQgKG9yIHVua25vd24pIGRyYXdpbmcgbW9kZWxzOgogICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIExPRyhQbHVnaW5zLCAiUGx1Z2luICVAIHVzZXMg
dW5zdXBwb3J0ZWQgZHJhd2luZyBtb2RlbDogJWQiLCBfZXZlbnRIYW5kbGVyLmdldCgpLCBkcmF3
aW5nTW9kZWwpOworICAgICAgICAgICAgICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2lu
ICVAIHVzZXMgdW5zdXBwb3J0ZWQgZHJhd2luZyBtb2RlbDogJWQiLCBfZXZlbnRIYW5kbGVyLmdl
dCgpLCBkcmF3aW5nTW9kZWwpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjE1MCw3ICsyMTUwLDcg
QEAgLSAoTlBFcnJvcilzZXRWYXJpYWJsZTooTlBQVmFyaWFibGUpdmFyaWFibGUgdmFsdWU6KHZv
aWQgKil2YWx1ZQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8g
VW5zdXBwb3J0ZWQgKG9yIHVua25vd24pIGV2ZW50IG1vZGVsczoKICAgICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBMT0coUGx1Z2lucywgIlBsdWdpbiAlQCB1c2Vz
IHVuc3VwcG9ydGVkIGV2ZW50IG1vZGVsOiAlZCIsIF9ldmVudEhhbmRsZXIuZ2V0KCksIGV2ZW50
TW9kZWwpOworICAgICAgICAgICAgICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiUGx1Z2luICVA
IHVzZXMgdW5zdXBwb3J0ZWQgZXZlbnQgbW9kZWw6ICVkIiwgX2V2ZW50SGFuZGxlci5nZXQoKSwg
ZXZlbnRNb2RlbCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMzg3LDcgKzIzODcsNyBAQCAtIChO
UEVycm9yKV9jcmVhdGVQbHVnaW4KICAgICBbW3NlbGYgY2xhc3NdIHNldEN1cnJlbnRQbHVnaW5W
aWV3Om5pbF07CiAgICAgaWYgKF9pc1NpbHZlcmxpZ2h0KQogICAgICAgICBbc2VsZiBfd29ya2Fy
b3VuZFNpbHZlcmxpZ2h0RnVsbHNjcmVlbkJ1ZzpZRVNdOwotICAgIExPRyhQbHVnaW5zLCAiTlBQ
X05ldzogJWQiLCBucEVycik7CisgICAgTE9HX0lORk8oUGx1Z2lucywgIk5QUF9OZXc6ICVkIiwg
bnBFcnIpOwogICAgIHJldHVybiBucEVycjsKIH0KIApAQCAtMjQwMCw3ICsyNDAwLDcgQEAgLSAo
dm9pZClfZGVzdHJveVBsdWdpbgogICAgIAogICAgIE5QRXJyb3IgbnBFcnI7CiAgICAgbnBFcnIg
PSAhW19wbHVnaW5QYWNrYWdlLmdldCgpIHBsdWdpbkZ1bmNzXS0+ZGVzdHJveShwbHVnaW4sIE5V
TEwpOwotICAgIExPRyhQbHVnaW5zLCAiTlBQX0Rlc3Ryb3k6ICVkIiwgbnBFcnIpOworICAgIExP
R19JTkZPKFBsdWdpbnMsICJOUFBfRGVzdHJveTogJWQiLCBucEVycik7CiAgICAgCiAgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IGNvcmUoW3NlbGYgd2ViRnJhbWVdKSkKICAgICAgICAgZnJhbWUtPnNj
cmlwdCgpLT5jbGVhbnVwU2NyaXB0T2JqZWN0c0ZvclBsdWdpbihzZWxmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udHJvbGxlci5tbQppbmRleCAzZmYxMDkw
ODY4MWQxYWU3MmE2MDhmNGM1YzhiOWE0ZDViMjBjMTY4Li41ZDAzYzY4NDhmM2Q3ZjZmOTFkMGQ4
ZDYxMTlkYzJlZWI5N2EwZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYlBsdWdpbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9X
ZWJQbHVnaW5Db250cm9sbGVyLm1tCkBAIC0xNzQsNyArMTc0LDcgQEAgLSAodm9pZClzdGFydEFs
bFBsdWdpbnMKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGlmIChbX3ZpZXdzIGNvdW50XSA+
IDApCi0gICAgICAgIExPRyhQbHVnaW5zLCAic3RhcnRpbmcgV2ViS2l0IHBsdWdpbnMgOiAlQCIs
IFtfdmlld3MgZGVzY3JpcHRpb25dKTsKKyAgICAgICAgTE9HX0lORk8oUGx1Z2lucywgInN0YXJ0
aW5nIFdlYktpdCBwbHVnaW5zIDogJUAiLCBbX3ZpZXdzIGRlc2NyaXB0aW9uXSk7CiAgICAgCiAg
ICAgaW50IGNvdW50ID0gW192aWV3cyBjb3VudF07CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7CkBAIC0xOTYsNyArMTk2LDcgQEAgLSAodm9pZClzdG9wQWxsUGx1Z2lucwog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW192aWV3cyBjb3VudF0gPiAwKSB7Ci0gICAgICAg
IExPRyhQbHVnaW5zLCAic3RvcHBpbmcgV2ViS2l0IHBsdWdpbnM6ICVAIiwgW192aWV3cyBkZXNj
cmlwdGlvbl0pOworICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAic3RvcHBpbmcgV2ViS2l0IHBs
dWdpbnM6ICVAIiwgW192aWV3cyBkZXNjcmlwdGlvbl0pOwogICAgIH0KICAgICAKICAgICBpbnQg
dmlld3NDb3VudCA9IFtfdmlld3MgY291bnRdOwpAQCAtMjUwLDcgKzI1MCw3IEBAIC0gKHZvaWQp
YWRkUGx1Z2luOihOU1ZpZXcgKil2aWV3CiAgICAgICAgIGlmIChpc0tpbmRPZkNsYXNzKHZpZXcs
IEAiV212UGx1Z2luIikpCiAgICAgICAgICAgICBpbnN0YWxsRmxpcDRNYWNQbHVnSW5Xb3JrYXJv
dW5kSWZOZWNlc3NhcnkoKTsKIAotICAgICAgICBMT0coUGx1Z2lucywgImluaXRpYWxpemluZyBw
bHVnLWluICVAIiwgdmlldyk7CisgICAgICAgIExPR19JTkZPKFBsdWdpbnMsICJpbml0aWFsaXpp
bmcgcGx1Zy1pbiAlQCIsIHZpZXcpOwogICAgICAgICBpZiAoW3ZpZXcgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcih3ZWJQbHVnSW5Jbml0aWFsaXplKV0pIHsKICAgICAgICAgICAgIEpTQzo6
SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKEpTRE9NV2luZG93QmFzZTo6Y29tbW9u
SlNHbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgW3ZpZXcgd2ViUGx1Z0luSW5pdGlhbGl6ZV07
CkBAIC0yNjMsNyArMjYzLDcgQEAgLSAodm9pZClhZGRQbHVnaW46KE5TVmlldyAqKXZpZXcKICAg
ICAgICAgICAgIFtbc2VsZiB3ZWJWaWV3XSBzZXREZWZlcnNDYWxsYmFja3M6Tk9dOwogICAgICAg
ICAKICAgICAgICAgaWYgKF9zdGFydGVkKSB7Ci0gICAgICAgICAgICBMT0coUGx1Z2lucywgInN0
YXJ0aW5nIHBsdWctaW4gJUAiLCB2aWV3KTsKKyAgICAgICAgICAgIExPR19JTkZPKFBsdWdpbnMs
ICJzdGFydGluZyBwbHVnLWluICVAIiwgdmlldyk7CiAgICAgICAgICAgICBpZiAoW3ZpZXcgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJQbHVnSW5TdGFydCldKSB7CiAgICAgICAgICAg
ICAgICAgSlNDOjpKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoSlNET01XaW5kb3dC
YXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CiAgICAgICAgICAgICAgICAgW3ZpZXcgd2ViUGx1
Z0luU3RhcnRdOwpAQCAtMzMwLDcgKzMzMCw3IEBAIC0gKHZvaWQpZGVzdHJveUFsbFBsdWdpbnMK
ICAgICBbc2VsZiBzdG9wQWxsUGx1Z2luc107CiAKICAgICBpZiAoW192aWV3cyBjb3VudF0gPiAw
KSB7Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiZGVzdHJveWluZyBXZWJLaXQgcGx1Z2luczogJUAi
LCBbX3ZpZXdzIGRlc2NyaXB0aW9uXSk7CisgICAgICAgIExPR19JTkZPKFBsdWdpbnMsICJkZXN0
cm95aW5nIFdlYktpdCBwbHVnaW5zOiAlQCIsIFtfdmlld3MgZGVzY3JpcHRpb25dKTsKICAgICB9
CiAKICAgICBbc2VsZiBfY2FuY2VsT3V0c3RhbmRpbmdDaGVja3NdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5EYXRhYmFzZS5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luRGF0YWJhc2UubW0KaW5kZXggMDI5ZGNiOGZiZGIyMDE5
ZGZmMGFmZmJmODU2ZTFmZTEzMzgzYmM1ZC4uZTU0YWI5ZDQwM2ZjMjNjYTM5NTQ3OTA4OTg3MDA3
MDU2ZTJhY2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVn
aW5EYXRhYmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkRh
dGFiYXNlLm1tCkBAIC0yNjUsOSArMjY1LDkgQEAgLSAodm9pZClyZWZyZXNoCiAKICNpZiAhTE9H
X0RJU0FCTEVECiAgICAgaWYgKFtuZXdQbHVnaW5zIGNvdW50XSA+IDApCi0gICAgICAgIExPRyhQ
bHVnaW5zLCAiTmV3IHBsdWdpbnM6XG4lQCIsIG5ld1BsdWdpbnMpOworICAgICAgICBMT0dfSU5G
TyhQbHVnaW5zLCAiTmV3IHBsdWdpbnM6XG4lQCIsIG5ld1BsdWdpbnMpOwogICAgIGlmIChbcGx1
Z2luc1RvUmVtb3ZlIGNvdW50XSA+IDApCi0gICAgICAgIExPRyhQbHVnaW5zLCAiUmVtb3ZlZCBw
bHVnaW5zOlxuJUAiLCBwbHVnaW5zVG9SZW1vdmUpOworICAgICAgICBMT0dfSU5GTyhQbHVnaW5z
LCAiUmVtb3ZlZCBwbHVnaW5zOlxuJUAiLCBwbHVnaW5zVG9SZW1vdmUpOwogI2VuZGlmCiAKICAg
ICAvLyBSZW1vdmUgcGx1Z2lucyBmcm9tIGRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpblBhY2thZ2UubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYlBsdWdpblBhY2thZ2UubW0KaW5kZXggYTYwODA2ODg3ZDYzODMyMjc4N2ExOWQ3
YjVlNjgxZWRmMzY5MGQ1OC4uZjBlMDgyY2MwMDA4ZjZhYTlhZWU1N2Y4Yjg5ODZlNGRlMDNjOTQ4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5QYWNrYWdl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luUGFja2FnZS5tbQpA
QCAtMTAzLDcgKzEwMyw3IEBAIC0gKEJPT0wpbG9hZAogICAgIAogI2lmICFMT0dfRElTQUJMRUQK
ICAgICBDRkFic29sdXRlVGltZSBkdXJhdGlvbiA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
IC0gc3RhcnQ7Ci0gICAgTE9HKFBsdWdpbnMsICJwcmluY2lwYWxDbGFzcyB0b29rICVmIHNlY29u
ZHMgZm9yOiAlQCIsIGR1cmF0aW9uLCAoTlNTdHJpbmcgKilbc2VsZiBwbHVnaW5JbmZvXS5uYW1l
KTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAicHJpbmNpcGFsQ2xhc3MgdG9vayAlZiBzZWNvbmRz
IGZvcjogJUAiLCBkdXJhdGlvbiwgKE5TU3RyaW5nICopW3NlbGYgcGx1Z2luSW5mb10ubmFtZSk7
CiAjZW5kaWYKICAgICByZXR1cm4gW3N1cGVyIGxvYWRdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9ucGFwaS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
bnBhcGkubW0KaW5kZXggOGIxY2ZkNjVjMzZhYjdkYTYxNDk5OGY3ODk4OGVlYTM4MjcyZWY5OS4u
NGE2MDBlNDZjMzQzMjYwZTBlM2FkOWM1Y2IwY2U0MjBmMDQxZjZjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9ucGFwaS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL25wYXBpLm1tCkBAIC01MSwxOCArNTEsMTggQEAgdm9pZCBOUE5fTWVtRnJlZSh2b2lk
KiBwdHIpCiAKIHVpbnQzMl90IE5QTl9NZW1GbHVzaCh1aW50MzJfdCBzaXplKQogewotICAgIExP
RyhQbHVnaW5zLCAiTlBOX01lbUZsdXNoIik7CisgICAgTE9HX0lORk8oUGx1Z2lucywgIk5QTl9N
ZW1GbHVzaCIpOwogICAgIHJldHVybiBzaXplOwogfQogCiB2b2lkIE5QTl9SZWxvYWRQbHVnaW5z
KE5QQm9vbCByZWxvYWRQYWdlcykKIHsKLSAgICBMT0coUGx1Z2lucywgIk5QTl9SZWxvYWRQbHVn
aW5zIik7CisgICAgTE9HX0lORk8oUGx1Z2lucywgIk5QTl9SZWxvYWRQbHVnaW5zIik7CiB9CiAK
IE5QRXJyb3IgTlBOX1JlcXVlc3RSZWFkKE5QU3RyZWFtKiBzdHJlYW0sIE5QQnl0ZVJhbmdlKiBy
YW5nZUxpc3QpCiB7Ci0gICAgTE9HKFBsdWdpbnMsICJOUE5fUmVxdWVzdFJlYWQiKTsKKyAgICBM
T0dfSU5GTyhQbHVnaW5zLCAiTlBOX1JlcXVlc3RSZWFkIik7CiAgICAgcmV0dXJuIE5QRVJSX0dF
TkVSSUNfRVJST1I7CiB9CiAKQEAgLTE1MywxMyArMTUzLDEzIEBAIE5QRXJyb3IgTlBOX1NldFZh
bHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogCiB2
b2lkKiBOUE5fR2V0SmF2YUVudih2b2lkKQogewotICAgIExPRyhQbHVnaW5zLCAiTlBOX0dldEph
dmFFbnYiKTsKKyAgICBMT0dfSU5GTyhQbHVnaW5zLCAiTlBOX0dldEphdmFFbnYiKTsKICAgICBy
ZXR1cm4gTlVMTDsKIH0KIAogdm9pZCogTlBOX0dldEphdmFQZWVyKE5QUCBpbnN0YW5jZSkKIHsK
LSAgICBMT0coUGx1Z2lucywgIk5QTl9HZXRKYXZhUGVlciIpOworICAgIExPR19JTkZPKFBsdWdp
bnMsICJOUE5fR2V0SmF2YVBlZXIiKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCmluZGV4
IDYxNWViNTFhOTk2Zjg5YTVlYTEyODk5MjhhNDk1NjI4ZDA0MjNmMTQuLjRhMzBiNjYzZGZmODQw
MTRkYmJkMTBhMWQ1M2I2NDcxYjJlOGU4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KQEAgLTYwNCw3ICs2MDQsNyBAQCB2
b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KIAotI2Rl
ZmluZSBGb3JtRGVsZWdhdGVMb2coY3RybCkgIExPRyhGb3JtRGVsZWdhdGUsICJjb250cm9sPSVA
IiwgY3RybCkKKyNkZWZpbmUgRm9ybURlbGVnYXRlTG9nKGN0cmwpICBMT0dfSU5GTyhGb3JtRGVs
ZWdhdGUsICJjb250cm9sPSVAIiwgY3RybCkKIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHRG
aWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50KiBlbGVtZW50KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpp
bmRleCA2MmQ1NjVmYjVhZDhmOTI2ODljNjVkMmE2OTIwMmU2ZjRhYmMyMGY0Li5iMjJiYzFmZTg5
ODc3Y2NlYWM0ZDQ1OTRiZTQ1NDlhNTBkMzA3Nzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMTQ5
Miw3ICsxNDkyLDcgQEAgc3RhdGljIE5TVmlldyAqcGx1Z2luVmlldyhXZWJGcmFtZSAqZnJhbWUs
IFdlYlBsdWdpblBhY2thZ2UgKnBsdWdpblBhY2thZ2UsCiAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6IWxvYWRNYW51YWxseV0sIFdlYlBsdWdJblNob3VsZExvYWRNYWluUmVz
b3VyY2VLZXksCiAgICAgICAgICAgICBlbGVtZW50LCBXZWJQbHVnSW5Db250YWluaW5nRWxlbWVu
dEtleSwKICAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIExPRyhQbHVnaW5zLCAiYXJndW1lbnRz
OlxuJUAiLCBhcmd1bWVudHMpOworICAgICAgICBMT0dfSU5GTyhQbHVnaW5zLCAiYXJndW1lbnRz
OlxuJUAiLCBhcmd1bWVudHMpOwogICAgIH0gZWxzZSBpZiAoW3ZpZXdGYWN0b3J5IHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IocGx1Z2luVmlld1dpdGhBcmd1bWVudHM6KV0pIHsKICAgICAg
ICAgYXJndW1lbnRzID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlz
OgogICAgICAgICAgICAgYmFzZVVSTCwgV2ViUGx1Z2luQmFzZVVSTEtleSwKQEAgLTE1MDAsNyAr
MTUwMCw3IEBAIHN0YXRpYyBOU1ZpZXcgKnBsdWdpblZpZXcoV2ViRnJhbWUgKmZyYW1lLCBXZWJQ
bHVnaW5QYWNrYWdlICpwbHVnaW5QYWNrYWdlLAogICAgICAgICAgICAgcGx1Z2luQ29udHJvbGxl
ciwgV2ViUGx1Z2luQ29udGFpbmVyS2V5LAogICAgICAgICAgICAgZWxlbWVudCwgV2ViUGx1Z0lu
Q29udGFpbmluZ0VsZW1lbnRLZXksCiAgICAgICAgICAgICBuaWxdOwotICAgICAgICBMT0coUGx1
Z2lucywgImFyZ3VtZW50czpcbiVAIiwgYXJndW1lbnRzKTsKKyAgICAgICAgTE9HX0lORk8oUGx1
Z2lucywgImFyZ3VtZW50czpcbiVAIiwgYXJndW1lbnRzKTsKICAgICB9CiAKICAgICB2aWV3ID0g
W1dlYlBsdWdpbkNvbnRyb2xsZXIgcGx1Z0luVmlld1dpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZy
b21QbHVnaW5QYWNrYWdlOnBsdWdpblBhY2thZ2VdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJBcmNoaXZlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJBcmNoaXZlLm1tCmluZGV4IGFlZWJkOTcyY2M1ODdlNTFlMzY0ODFkNjEyZTJjZDViMjYxM2Mz
OTUuLjQ5NTIzNGI1MDNlZTgxNjZlMzVkN2M4MWQ2OTI2ZTMzYjJlOTQ2YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViQXJjaGl2ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkFyY2hpdmUubW0KQEAgLTIyNyw3ICsyMjcsNyBAQCAtIChpZClp
bml0V2l0aERhdGE6KE5TRGF0YSAqKWRhdGEKICAgICBDRkFic29sdXRlVGltZSBlbmQgPSBDRkFi
c29sdXRlVGltZUdldEN1cnJlbnQoKTsKICAgICBDRkFic29sdXRlVGltZSBkdXJhdGlvbiA9IGVu
ZCAtIHN0YXJ0OwogI2VuZGlmCi0gICAgTE9HKFRpbWluZywgIlBhcnNpbmcgd2ViIGFyY2hpdmUg
d2l0aCBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdEZyb21EYXRhOjo6
Ol0gdG9vayAlZiBzZWNvbmRzIiwgZHVyYXRpb24pOworICAgIExPR19JTkZPKFRpbWluZywgIlBh
cnNpbmcgd2ViIGFyY2hpdmUgd2l0aCBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3Bl
cnR5TGlzdEZyb21EYXRhOjo6Ol0gdG9vayAlZiBzZWNvbmRzIiwgZHVyYXRpb24pOwogICAgIAog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzcxLDcgKzM3MSw3IEBAIC0gKE5TRGF0YSAqKWRhdGEK
ICAgICBDRkFic29sdXRlVGltZSBlbmQgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKTsKICAg
ICBDRkFic29sdXRlVGltZSBkdXJhdGlvbiA9IGVuZCAtIHN0YXJ0OwogI2VuZGlmCi0gICAgTE9H
KFRpbWluZywgIlNlcmlhbGl6aW5nIHdlYiBhcmNoaXZlIHRvIHJhdyBDRlByb3BlcnR5TGlzdCBk
YXRhIHRvb2sgJWYgc2Vjb25kcyIsIGR1cmF0aW9uKTsKKyAgICBMT0dfSU5GTyhUaW1pbmcsICJT
ZXJpYWxpemluZyB3ZWIgYXJjaGl2ZSB0byByYXcgQ0ZQcm9wZXJ0eUxpc3QgZGF0YSB0b29rICVm
IHNlY29uZHMiLCBkdXJhdGlvbik7CiAgICAgICAgIAogICAgIHJldHVybiBbWyhOU0RhdGEgKilk
YXRhLmdldCgpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDk1NDk0ZTk3ZTM4NjE4ZGJiYWQ2MmNmZGZmYjMw
YTlkNzE3ZGZhNjQuLjM4OWMxOTIwYjA2YWNhMmYxM2NhMTZhZWZjNGRiMTNkNDdjMDNhNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTM1OCw3ICsz
NTgsNyBAQCAtIChpZClfaW5pdFdpdGhEb2N1bWVudExvYWRlcjooUGFzc1JlZlB0cjxXZWJEb2N1
bWVudExvYWRlck1hYz4pbG9hZGVyCiAgICAgQVNTRVJUKGxvYWRlcik7CiAgICAgX3ByaXZhdGUg
PSBzdGF0aWNfY2FzdDx2b2lkKj4obmV3IFdlYkRhdGFTb3VyY2VQcml2YXRlKGxvYWRlcikpOwog
ICAgICAgICAKLSAgICBMT0coTG9hZGluZywgImNyZWF0aW5nIGRhdGFzb3VyY2UgZm9yICVAIiwg
c3RhdGljX2Nhc3Q8TlNVUkwgKj4odG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5yZXF1ZXN0
KCkudXJsKCkpKTsKKyAgICBMT0dfSU5GTyhMb2FkaW5nLCAiY3JlYXRpbmcgZGF0YXNvdXJjZSBm
b3IgJUAiLCBzdGF0aWNfY2FzdDxOU1VSTCAqPih0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXIt
PnJlcXVlc3QoKS51cmwoKSkpOwogCiAgICAgaWYgKCh0b1ByaXZhdGUoX3ByaXZhdGUpLT5pbmNs
dWRlZEluV2ViS2l0U3RhdGlzdGljcyA9IFtbc2VsZiB3ZWJGcmFtZV0gX2lzSW5jbHVkZWRJbldl
YktpdFN0YXRpc3RpY3NdKSkKICAgICAgICAgKytXZWJEYXRhU291cmNlQ291bnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQppbmRleCA4ZjEyZTViZjA3ODQ2ZmNiNzgz
NzA0YWJmZWQ2YWYwZTY0Y2UxMzkzLi42N2I1MWUxZDZmYmJiYTlmNDAyZTZmOWJhY2QzMGFlMmQ4
MGFmMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTEy
ODIsNyArMTI4Miw3IEBAIC0gKHZvaWQpX3NldEFzaWRlU3Vidmlld3MKIC0gKHZvaWQpZGlkQWRk
U3VidmlldzooTlNWaWV3ICopc3VidmlldwogewogICAgIGlmIChfcHJpdmF0ZS0+ZW51bWVyYXRp
bmdTdWJ2aWV3cykKLSAgICAgICAgTE9HKFZpZXcsICJBIHZpZXcgb2YgY2xhc3MgJXMgd2FzIGFk
ZGVkIGR1cmluZyBzdWJ2aWV3IGVudW1lcmF0aW9uIGZvciBsYXlvdXQgb3IgcHJpbnRpbmcgbW9k
ZSBjaGFuZ2UuIFRoaXMgdmlldyBtaWdodCBwYWludCB3aXRob3V0IGZpcnN0IHJlY2VpdmluZyBs
YXlvdXQuIiwgb2JqZWN0X2dldENsYXNzTmFtZShbc3VidmlldyBjbGFzc10pKTsKKyAgICAgICAg
TE9HX0lORk8oVmlldywgIkEgdmlldyBvZiBjbGFzcyAlcyB3YXMgYWRkZWQgZHVyaW5nIHN1YnZp
ZXcgZW51bWVyYXRpb24gZm9yIGxheW91dCBvciBwcmludGluZyBtb2RlIGNoYW5nZS4gVGhpcyB2
aWV3IG1pZ2h0IHBhaW50IHdpdGhvdXQgZmlyc3QgcmVjZWl2aW5nIGxheW91dC4iLCBvYmplY3Rf
Z2V0Q2xhc3NOYW1lKFtzdWJ2aWV3IGNsYXNzXSkpOwogfQogI2VuZGlmCiAKQEAgLTMwMTEsNyAr
MzAxMSw3IEBAIC0gKHZvaWQpd2lsbFJlbW92ZVN1YnZpZXc6KE5TVmlldyAqKXN1YnZpZXcKICAg
ICAvLyBIYXZlIHRvIG51bGwtY2hlY2sgX3ByaXZhdGUsIHNpbmNlIHRoaXMgY2FuIGJlIGNhbGxl
ZCB2aWEgLWRlYWxsb2Mgd2hlbgogICAgIC8vIGNsZWFuaW5nIHVwIHRoZSB0aGUgbGF5ZXJIb3N0
aW5nVmlldy4KICAgICBpZiAoX3ByaXZhdGUgJiYgX3ByaXZhdGUtPmVudW1lcmF0aW5nU3Vidmll
d3MpCi0gICAgICAgIExPRyhWaWV3LCAiQSB2aWV3IG9mIGNsYXNzICVzIHdhcyByZW1vdmVkIGR1
cmluZyBzdWJ2aWV3IGVudW1lcmF0aW9uIGZvciBsYXlvdXQgb3IgcHJpbnRpbmcgbW9kZSBjaGFu
Z2UuIFdlIHdpbGwgc3RpbGwgZG8gbGF5b3V0IG9yIHRoZSBwcmludGluZyBtb2RlIGNoYW5nZSBl
dmVuIHRob3VnaCB0aGlzIHZpZXcgaXMgbm8gbG9uZ2VyIGluIHRoZSB2aWV3IGhpZXJhcmNoeS4i
LCBvYmplY3RfZ2V0Q2xhc3NOYW1lKFtzdWJ2aWV3IGNsYXNzXSkpOworICAgICAgICBMT0dfSU5G
TyhWaWV3LCAiQSB2aWV3IG9mIGNsYXNzICVzIHdhcyByZW1vdmVkIGR1cmluZyBzdWJ2aWV3IGVu
dW1lcmF0aW9uIGZvciBsYXlvdXQgb3IgcHJpbnRpbmcgbW9kZSBjaGFuZ2UuIFdlIHdpbGwgc3Rp
bGwgZG8gbGF5b3V0IG9yIHRoZSBwcmludGluZyBtb2RlIGNoYW5nZSBldmVuIHRob3VnaCB0aGlz
IHZpZXcgaXMgbm8gbG9uZ2VyIGluIHRoZSB2aWV3IGhpZXJhcmNoeS4iLCBvYmplY3RfZ2V0Q2xh
c3NOYW1lKFtzdWJ2aWV3IGNsYXNzXSkpOwogI2VuZGlmCiAKICAgICBpZiAoW1dlYlBsdWdpbkNv
bnRyb2xsZXIgaXNQbHVnSW5WaWV3OnN1YnZpZXddKQpAQCAtMzAzMSw3ICszMDMxLDcgQEAgLSAo
dm9pZClyZWFwcGx5U3R5bGVzCiAgICAgCiAjaWZkZWYgTE9HX1RJTUVTICAgICAgICAKICAgICBk
b3VibGUgdGhpc1RpbWUgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSAtIHN0YXJ0OwotICAg
IExPRyhUaW1pbmcsICIlcyBhcHBseSBzdHlsZSBzZWNvbmRzID0gJWYiLCBbc2VsZiBVUkxdLCB0
aGlzVGltZSk7CisgICAgTE9HX0lORk8oVGltaW5nLCAiJXMgYXBwbHkgc3R5bGUgc2Vjb25kcyA9
ICVmIiwgW3NlbGYgVVJMXSwgdGhpc1RpbWUpOwogI2VuZGlmCiB9CiAKQEAgLTMwNDYsNyArMzA0
Niw3IEBAIC0gKHZvaWQpbGF5b3V0VG9NaW5pbXVtUGFnZVdpZHRoOihmbG9hdCltaW5QYWdlTG9n
aWNhbFdpZHRoIGhlaWdodDooZmxvYXQpbWluUGFnCiAgICAgZG91YmxlIHN0YXJ0ID0gQ0ZBYnNv
bHV0ZVRpbWVHZXRDdXJyZW50KCk7CiAjZW5kaWYKIAotICAgIExPRyhWaWV3LCAiJUAgZG9pbmcg
bGF5b3V0Iiwgc2VsZik7CisgICAgTE9HX0lORk8oVmlldywgIiVAIGRvaW5nIGxheW91dCIsIHNl
bGYpOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAg
aWYgKCFjb3JlRnJhbWUpCkBAIC0zMDcwLDcgKzMwNzAsNyBAQCAtICh2b2lkKWxheW91dFRvTWlu
aW11bVBhZ2VXaWR0aDooZmxvYXQpbWluUGFnZUxvZ2ljYWxXaWR0aCBoZWlnaHQ6KGZsb2F0KW1p
blBhZwogICAgIAogI2lmZGVmIExPR19USU1FUyAgICAgICAgCiAgICAgZG91YmxlIHRoaXNUaW1l
ID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgLSBzdGFydDsKLSAgICBMT0coVGltaW5nLCAi
JXMgbGF5b3V0IHNlY29uZHMgPSAlZiIsIFtzZWxmIFVSTF0sIHRoaXNUaW1lKTsKKyAgICBMT0df
SU5GTyhUaW1pbmcsICIlcyBsYXlvdXQgc2Vjb25kcyA9ICVmIiwgW3NlbGYgVVJMXSwgdGhpc1Rp
bWUpOwogI2VuZGlmCiB9CiAKQEAgLTMxOTQsNyArMzE5NCw3IEBAIC0gKEJPT0wpaXNPcGFxdWUK
ICNpZiAhTE9HX0RJU0FCTEVECiAtICh2b2lkKXNldE5lZWRzRGlzcGxheTooQk9PTClmbGFnCiB7
Ci0gICAgTE9HKFZpZXcsICIlQCBzZXROZWVkc0Rpc3BsYXk6JUAiLCBzZWxmLCBmbGFnID8gQCJZ
RVMiIDogQCJOTyIpOworICAgIExPR19JTkZPKFZpZXcsICIlQCBzZXROZWVkc0Rpc3BsYXk6JUAi
LCBzZWxmLCBmbGFnID8gQCJZRVMiIDogQCJOTyIpOwogICAgIFtzdXBlciBzZXROZWVkc0Rpc3Bs
YXk6ZmxhZ107CiB9CiAjZW5kaWYKQEAgLTMyMTUsNyArMzIxNSw3IEBAIC0gKHZvaWQpc2V0TmVl
ZHNEaXNwbGF5SW5SZWN0OihOU1JlY3QpaW52YWxpZFJlY3QKIAogLSAodm9pZClzZXROZWVkc0xh
eW91dDogKEJPT0wpZmxhZwogewotICAgIExPRyhWaWV3LCAiJUAgc2V0TmVlZHNMYXlvdXQ6JUAi
LCBzZWxmLCBmbGFnID8gQCJZRVMiIDogQCJOTyIpOworICAgIExPR19JTkZPKFZpZXcsICIlQCBz
ZXROZWVkc0xheW91dDolQCIsIHNlbGYsIGZsYWcgPyBAIllFUyIgOiBAIk5PIik7CiAgICAgaWYg
KCFmbGFnKQogICAgICAgICByZXR1cm47IC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIHNheSB5b3UgZG9u
J3QgbmVlZCBhIGxheW91dC4KICAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29yZShbc2VsZiBfZnJh
bWVdKSkgewpAQCAtMzIyOCw3ICszMjI4LDcgQEAgLSAodm9pZClzZXROZWVkc0xheW91dDogKEJP
T0wpZmxhZwogCiAtICh2b2lkKXNldE5lZWRzVG9BcHBseVN0eWxlczogKEJPT0wpZmxhZwogewot
ICAgIExPRyhWaWV3LCAiJUAgc2V0TmVlZHNUb0FwcGx5U3R5bGVzOiVAIiwgc2VsZiwgZmxhZyA/
IEAiWUVTIiA6IEAiTk8iKTsKKyAgICBMT0dfSU5GTyhWaWV3LCAiJUAgc2V0TmVlZHNUb0FwcGx5
U3R5bGVzOiVAIiwgc2VsZiwgZmxhZyA/IEAiWUVTIiA6IEAiTk8iKTsKICAgICBpZiAoIWZsYWcp
CiAgICAgICAgIHJldHVybjsgLy8gVGhlcmUncyBubyB3YXkgdG8gc2F5IHlvdSBkb24ndCBuZWVk
IGEgc3R5bGUgcmVjYWxjLgogICAgIGlmIChGcmFtZSogZnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFt
ZV0pKSB7CkBAIC0zMjgxLDcgKzMyODEsNyBAQCAtICh2b2lkKWRyYXdTaW5nbGVSZWN0OihOU1Jl
Y3QpcmVjdAogLSAodm9pZClkcmF3UmVjdDooTlNSZWN0KXJlY3QKIHsKICAgICBBU1NFUlRfTUFJ
Tl9USFJFQUQoKTsKLSAgICBMT0coVmlldywgIiVAIGRyYXdpbmciLCBzZWxmKTsKKyAgICBMT0df
SU5GTyhWaWV3LCAiJUAgZHJhd2luZyIsIHNlbGYpOwogCiAgICAgY29uc3QgTlNSZWN0ICpyZWN0
czsKICAgICBOU0ludGVnZXIgY291bnQ7CkBAIC0zMzI0LDcgKzMzMjQsNyBAQCAtICh2b2lkKWRy
YXdSZWN0OihOU1JlY3QpcmVjdAogCiAjaWZkZWYgTE9HX1RJTUVTCiAgICAgZG91YmxlIHRoaXNU
aW1lID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgLSBzdGFydDsKLSAgICBMT0coVGltaW5n
LCAiJXMgZHJhdyBzZWNvbmRzID0gJWYiLCB3aWRnZXQtPnBhcnQoKS0+YmFzZVVSTCgpLlVSTCgp
LmxhdGluMSgpLCB0aGlzVGltZSk7CisgICAgTE9HX0lORk8oVGltaW5nLCAiJXMgZHJhdyBzZWNv
bmRzID0gJWYiLCB3aWRnZXQtPnBhcnQoKS0+YmFzZVVSTCgpLlVSTCgpLmxhdGluMSgpLCB0aGlz
VGltZSk7CiAjZW5kaWYKIAogICAgIGlmIChzdWJ2aWV3c1dlcmVTZXRBc2lkZSkKQEAgLTU2MTgs
NyArNTYxOCw3IEBAIC0gKE5TQXJyYXkgKil2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0CiAg
ICAgICAgIC8vICAgICBOU0JhY2tncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUsIE5TTGFuZ3VhZ2VB
dHRyaWJ1dGVOYW1lLgogICAgICAgICBDRlJldGFpbih2YWxpZEF0dHJpYnV0ZXMpOwogICAgIH0K
LSAgICBMT0coVGV4dElucHV0LCAidmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCAtPiAoLi4u
KSIpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgInZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRl
eHQgLT4gKC4uLikiKTsKICAgICByZXR1cm4gdmFsaWRBdHRyaWJ1dGVzOwogfQogCkBAIC01NjMw
LDEyICs1NjMwLDEyIEBAIC0gKE5TVGV4dElucHV0Q29udGV4dCAqKWlucHV0Q29udGV4dAogLSAo
TlNBdHRyaWJ1dGVkU3RyaW5nICopdGV4dFN0b3JhZ2UKIHsKICAgICBpZiAoIV9wcml2YXRlLT5l
eHBvc2VJbnB1dENvbnRleHQpIHsKLSAgICAgICAgTE9HKFRleHRJbnB1dCwgInRleHRTdG9yYWdl
IC0+IG5pbCIpOworICAgICAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICJ0ZXh0U3RvcmFnZSAtPiBu
aWwiKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAgICAgTlNBdHRyaWJ1dGVkU3RyaW5n
ICpyZXN1bHQgPSBbc2VsZiBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOk5TTWFrZVJhbmdl
KDAsIFVJTlRfTUFYKV07CiAgICAgCi0gICAgTE9HKFRleHRJbnB1dCwgInRleHRTdG9yYWdlIC0+
IFwiJUBcIiIsIHJlc3VsdCA/IFtyZXN1bHQgc3RyaW5nXSA6IEAiIik7CisgICAgTE9HX0lORk8o
VGV4dElucHV0LCAidGV4dFN0b3JhZ2UgLT4gXCIlQFwiIiwgcmVzdWx0ID8gW3Jlc3VsdCBzdHJp
bmddIDogQCIiKTsKICAgICAKICAgICAvLyBXZSBoYXZlIHRvIHJldHVybiBhbiBlbXB0eSBzdHJp
bmcgcmF0aGVyIHRoYW4gbnVsbCB0byBwcmV2ZW50IFRTTSBmcm9tIGNhbGxpbmcgLXN0cmluZwog
ICAgIHJldHVybiByZXN1bHQgPyByZXN1bHQgOiBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAiIl0gYXV0b3JlbGVhc2VdOwpAQCAtNTY1NCwxMiArNTY1NCwxMiBA
QCAtIChOU1VJbnRlZ2VyKWNoYXJhY3RlckluZGV4Rm9yUG9pbnQ6KE5TUG9pbnQpdGhlUG9pbnQK
IAogICAgIERPTVJhbmdlICpyYW5nZSA9IFtmcmFtZSBfY2hhcmFjdGVyUmFuZ2VBdFBvaW50OnRo
ZVBvaW50XTsKICAgICBpZiAoIXJhbmdlKSB7Ci0gICAgICAgIExPRyhUZXh0SW5wdXQsICJjaGFy
YWN0ZXJJbmRleEZvclBvaW50OiglZiwgJWYpIC0+IE5TTm90Rm91bmQiLCB0aGVQb2ludC54LCB0
aGVQb2ludC55KTsKKyAgICAgICAgTE9HX0lORk8oVGV4dElucHV0LCAiY2hhcmFjdGVySW5kZXhG
b3JQb2ludDooJWYsICVmKSAtPiBOU05vdEZvdW5kIiwgdGhlUG9pbnQueCwgdGhlUG9pbnQueSk7
CiAgICAgICAgIHJldHVybiBOU05vdEZvdW5kOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBbZnJhbWUgX2NvbnZlcnRET01SYW5nZVRvTlNSYW5nZTpyYW5nZV0ubG9jYXRpb247
Ci0gICAgTE9HKFRleHRJbnB1dCwgImNoYXJhY3RlckluZGV4Rm9yUG9pbnQ6KCVmLCAlZikgLT4g
JXUiLCB0aGVQb2ludC54LCB0aGVQb2ludC55LCByZXN1bHQpOworICAgIExPR19JTkZPKFRleHRJ
bnB1dCwgImNoYXJhY3RlckluZGV4Rm9yUG9pbnQ6KCVmLCAlZikgLT4gJXUiLCB0aGVQb2ludC54
LCB0aGVQb2ludC55LCByZXN1bHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU2Nzcs
NyArNTY3Nyw3IEBAIC0gKE5TUmVjdClmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTooTlNSYW5n
ZSl0aGVSYW5nZQogICAgIAogICAgIERPTVJhbmdlICpyYW5nZSA9IFtmcmFtZSBfY29udmVydE5T
UmFuZ2VUb0RPTVJhbmdlOnRoZVJhbmdlXTsKICAgICBpZiAoIXJhbmdlKSB7Ci0gICAgICAgIExP
RyhUZXh0SW5wdXQsICJmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTooJXUsICV1KSAtPiAoMCwg
MCwgMCwgMCkiLCB0aGVSYW5nZS5sb2NhdGlvbiwgdGhlUmFuZ2UubGVuZ3RoKTsKKyAgICAgICAg
TE9HX0lORk8oVGV4dElucHV0LCAiZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6KCV1LCAldSkg
LT4gKDAsIDAsIDAsIDApIiwgdGhlUmFuZ2UubG9jYXRpb24sIHRoZVJhbmdlLmxlbmd0aCk7CiAg
ICAgICAgIHJldHVybiBOU01ha2VSZWN0KDAsIDAsIDAsIDApOwogICAgIH0KICAgICAKQEAgLTU2
OTEsNyArNTY5MSw3IEBAIC0gKE5TUmVjdClmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTooTlNS
YW5nZSl0aGVSYW5nZQogICAgIGlmICh3aW5kb3cpCiAgICAgICAgIHJlc3VsdFJlY3Qub3JpZ2lu
ID0gW3dpbmRvdyBjb252ZXJ0QmFzZVRvU2NyZWVuOnJlc3VsdFJlY3Qub3JpZ2luXTsKICAgICAK
LSAgICBMT0coVGV4dElucHV0LCAiZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6KCV1LCAldSkg
LT4gKCVmLCAlZiwgJWYsICVmKSIsIHRoZVJhbmdlLmxvY2F0aW9uLCB0aGVSYW5nZS5sZW5ndGgs
IHJlc3VsdFJlY3Qub3JpZ2luLngsIHJlc3VsdFJlY3Qub3JpZ2luLnksIHJlc3VsdFJlY3Quc2l6
ZS53aWR0aCwgcmVzdWx0UmVjdC5zaXplLmhlaWdodCk7CisgICAgTE9HX0lORk8oVGV4dElucHV0
LCAiZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6KCV1LCAldSkgLT4gKCVmLCAlZiwgJWYsICVm
KSIsIHRoZVJhbmdlLmxvY2F0aW9uLCB0aGVSYW5nZS5sZW5ndGgsIHJlc3VsdFJlY3Qub3JpZ2lu
LngsIHJlc3VsdFJlY3Qub3JpZ2luLnksIHJlc3VsdFJlY3Quc2l6ZS53aWR0aCwgcmVzdWx0UmVj
dC5zaXplLmhlaWdodCk7CiAgICAgcmV0dXJuIHJlc3VsdFJlY3Q7CiB9CiAKQEAgLTU3MDAsMTIg
KzU3MDAsMTIgQEAgLSAoTlNSYW5nZSlzZWxlY3RlZFJhbmdlCiAgICAgW3NlbGYgX2V4ZWN1dGVT
YXZlZEtleXByZXNzQ29tbWFuZHNdOwogCiAgICAgaWYgKCFpc1RleHRJbnB1dChjb3JlKFtzZWxm
IF9mcmFtZV0pKSkgewotICAgICAgICBMT0coVGV4dElucHV0LCAic2VsZWN0ZWRSYW5nZSAtPiAo
TlNOb3RGb3VuZCwgMCkiKTsKKyAgICAgICAgTE9HX0lORk8oVGV4dElucHV0LCAic2VsZWN0ZWRS
YW5nZSAtPiAoTlNOb3RGb3VuZCwgMCkiKTsKICAgICAgICAgcmV0dXJuIE5TTWFrZVJhbmdlKE5T
Tm90Rm91bmQsIDApOwogICAgIH0KICAgICBOU1JhbmdlIHJlc3VsdCA9IFtbc2VsZiBfZnJhbWVd
IF9zZWxlY3RlZE5TUmFuZ2VdOwogCi0gICAgTE9HKFRleHRJbnB1dCwgInNlbGVjdGVkUmFuZ2Ug
LT4gKCV1LCAldSkiLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOworICAgIExPR19J
TkZPKFRleHRJbnB1dCwgInNlbGVjdGVkUmFuZ2UgLT4gKCV1LCAldSkiLCByZXN1bHQubG9jYXRp
b24sIHJlc3VsdC5sZW5ndGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU3MTksNyAr
NTcxOSw3IEBAIC0gKE5TUmFuZ2UpbWFya2VkUmFuZ2UKICAgICAgICAgcmV0dXJuIE5TTWFrZVJh
bmdlKDAsIDApOwogICAgIE5TUmFuZ2UgcmVzdWx0ID0gW3dlYkZyYW1lIF9jb252ZXJ0VG9OU1Jh
bmdlOmNvcmVGcmFtZS0+ZWRpdG9yKCktPmNvbXBvc2l0aW9uUmFuZ2UoKS5nZXQoKV07CiAKLSAg
ICBMT0coVGV4dElucHV0LCAibWFya2VkUmFuZ2UgLT4gKCV1LCAldSkiLCByZXN1bHQubG9jYXRp
b24sIHJlc3VsdC5sZW5ndGgpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgIm1hcmtlZFJhbmdl
IC0+ICgldSwgJXUpIiwgcmVzdWx0LmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC01NzMwLDEyICs1NzMwLDEyIEBAIC0gKE5TQXR0cmlidXRlZFN0
cmluZyAqKWF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6KE5TUmFuZ2UpbnNSYW5nZQogICAg
IFdlYkZyYW1lICpmcmFtZSA9IFtzZWxmIF9mcmFtZV07CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGNvcmUoZnJhbWUpOwogICAgIGlmICghaXNUZXh0SW5wdXQoY29yZUZyYW1lKSB8fCBpc0luUGFz
c3dvcmRGaWVsZChjb3JlRnJhbWUpKSB7Ci0gICAgICAgIExPRyhUZXh0SW5wdXQsICJhdHRyaWJ1
dGVkU3Vic3RyaW5nRnJvbVJhbmdlOigldSwgJXUpIC0+IG5pbCIsIG5zUmFuZ2UubG9jYXRpb24s
IG5zUmFuZ2UubGVuZ3RoKTsKKyAgICAgICAgTE9HX0lORk8oVGV4dElucHV0LCAiYXR0cmlidXRl
ZFN1YnN0cmluZ0Zyb21SYW5nZTooJXUsICV1KSAtPiBuaWwiLCBuc1JhbmdlLmxvY2F0aW9uLCBu
c1JhbmdlLmxlbmd0aCk7CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBbZnJhbWUgX2NvbnZlcnRUb0RPTVJhbmdlOm5zUmFuZ2VdOwogICAgIGlm
ICghcmFuZ2UpIHsKLSAgICAgICAgTE9HKFRleHRJbnB1dCwgImF0dHJpYnV0ZWRTdWJzdHJpbmdG
cm9tUmFuZ2U6KCV1LCAldSkgLT4gbmlsIiwgbnNSYW5nZS5sb2NhdGlvbiwgbnNSYW5nZS5sZW5n
dGgpOworICAgICAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICJhdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bVJhbmdlOigldSwgJXUpIC0+IG5pbCIsIG5zUmFuZ2UubG9jYXRpb24sIG5zUmFuZ2UubGVuZ3Ro
KTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKQEAgLTU3NDksNyArNTc0OSw3IEBAIC0g
KE5TQXR0cmlidXRlZFN0cmluZyAqKWF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6KE5TUmFu
Z2UpbnNSYW5nZQogICAgICAgICBBU1NFUlQoW1tyZXN1bHQgc3RyaW5nXSBjaGFyYWN0ZXJBdElu
ZGV4Om5zUmFuZ2UubGVuZ3RoXSA9PSAnXG4nIHx8IFtbcmVzdWx0IHN0cmluZ10gY2hhcmFjdGVy
QXRJbmRleDpuc1JhbmdlLmxlbmd0aF0gPT0gJyAnKTsKICAgICAgICAgcmVzdWx0ID0gW3Jlc3Vs
dCBhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIG5zUmFuZ2UubGVu
Z3RoKV07CiAgICAgfQotICAgIExPRyhUZXh0SW5wdXQsICJhdHRyaWJ1dGVkU3Vic3RyaW5nRnJv
bVJhbmdlOigldSwgJXUpIC0+IFwiJUBcIiIsIG5zUmFuZ2UubG9jYXRpb24sIG5zUmFuZ2UubGVu
Z3RoLCBbcmVzdWx0IHN0cmluZ10pOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgImF0dHJpYnV0
ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6KCV1LCAldSkgLT4gXCIlQFwiIiwgbnNSYW5nZS5sb2NhdGlv
biwgbnNSYW5nZS5sZW5ndGgsIFtyZXN1bHQgc3RyaW5nXSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtNTc2OSw3ICs1NzY5LDcgQEAgLSAoQk9PTCloYXNNYXJrZWRUZXh0CiAgICAgICAg
IHJlc3VsdCA9IGNvcmVGcmFtZS0+ZWRpdG9yKCktPmhhc0NvbXBvc2l0aW9uKCk7CiAgICAgfQog
Ci0gICAgTE9HKFRleHRJbnB1dCwgImhhc01hcmtlZFRleHQgLT4gJXUiLCByZXN1bHQpOworICAg
IExPR19JTkZPKFRleHRJbnB1dCwgImhhc01hcmtlZFRleHQgLT4gJXUiLCByZXN1bHQpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTU3NzcsNyArNTc3Nyw3IEBAIC0gKHZvaWQpdW5tYXJr
VGV4dAogewogICAgIFtzZWxmIF9leGVjdXRlU2F2ZWRLZXlwcmVzc0NvbW1hbmRzXTsKIAotICAg
IExPRyhUZXh0SW5wdXQsICJ1bm1hcmtUZXh0Iik7CisgICAgTE9HX0lORk8oVGV4dElucHV0LCAi
dW5tYXJrVGV4dCIpOwogCiAgICAgLy8gVXNlIHBvaW50ZXIgdG8gZ2V0IHBhcmFtZXRlcnMgcGFz
c2VkIHRvIHVzIGJ5IHRoZSBjYWxsZXIgb2YgaW50ZXJwcmV0S2V5RXZlbnRzLgogICAgIFdlYkhU
TUxWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyogcGFyYW1ldGVycyA9IF9wcml2YXRl
LT5pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzOwpAQCAtNTgxOCw3ICs1ODE4LDcgQEAgLSAo
dm9pZClzZXRNYXJrZWRUZXh0OihpZClzdHJpbmcgc2VsZWN0ZWRSYW5nZTooTlNSYW5nZSluZXdT
ZWxSYW5nZQogICAgIEJPT0wgaXNBdHRyaWJ1dGVkU3RyaW5nID0gW3N0cmluZyBpc0tpbmRPZkNs
YXNzOltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXTsKICAgICBBU1NFUlQoaXNBdHRyaWJ1dGVk
U3RyaW5nIHx8IFtzdHJpbmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAKLSAg
ICBMT0coVGV4dElucHV0LCAic2V0TWFya2VkVGV4dDpcIiVAXCIgc2VsZWN0ZWRSYW5nZTooJXUs
ICV1KSIsIGlzQXR0cmlidXRlZFN0cmluZyA/IFtzdHJpbmcgc3RyaW5nXSA6IHN0cmluZywgbmV3
U2VsUmFuZ2UubG9jYXRpb24sIG5ld1NlbFJhbmdlLmxlbmd0aCk7CisgICAgTE9HX0lORk8oVGV4
dElucHV0LCAic2V0TWFya2VkVGV4dDpcIiVAXCIgc2VsZWN0ZWRSYW5nZTooJXUsICV1KSIsIGlz
QXR0cmlidXRlZFN0cmluZyA/IFtzdHJpbmcgc3RyaW5nXSA6IHN0cmluZywgbmV3U2VsUmFuZ2Uu
bG9jYXRpb24sIG5ld1NlbFJhbmdlLmxlbmd0aCk7CiAKICAgICAvLyBVc2UgcG9pbnRlciB0byBn
ZXQgcGFyYW1ldGVycyBwYXNzZWQgdG8gdXMgYnkgdGhlIGNhbGxlciBvZiBpbnRlcnByZXRLZXlF
dmVudHMuCiAgICAgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzKiBwYXJh
bWV0ZXJzID0gX3ByaXZhdGUtPmludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnM7CkBAIC01ODQz
LDcgKzU4NDMsNyBAQCAtICh2b2lkKXNldE1hcmtlZFRleHQ6KGlkKXN0cmluZyBzZWxlY3RlZFJh
bmdlOihOU1JhbmdlKW5ld1NlbFJhbmdlCiAgICAgICAgIC8vIEZJWE1FOiBXZSBpZ25vcmUgbW9z
dCBhdHRyaWJ1dGVzIGZyb20gdGhlIHN0cmluZywgc28gYW4gaW5wdXQgbWV0aG9kIGNhbm5vdCBz
cGVjaWZ5IGUuZy4gYSBmb250IG9yIGEgZ2x5cGggdmFyaWF0aW9uLgogICAgICAgICB0ZXh0ID0g
W3N0cmluZyBzdHJpbmddOwogICAgICAgICBOU1N0cmluZyAqcmFuZ2VTdHJpbmcgPSBbc3RyaW5n
IGF0dHJpYnV0ZTpOU1RleHRJbnB1dFJlcGxhY2VtZW50UmFuZ2VBdHRyaWJ1dGVOYW1lIGF0SW5k
ZXg6MCBsb25nZXN0RWZmZWN0aXZlUmFuZ2U6MCBpblJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0
IGxlbmd0aF0pXTsKLSAgICAgICAgTE9HKFRleHRJbnB1dCwgIiAgICBSZXBsYWNlbWVudFJhbmdl
OiAlQCIsIHJhbmdlU3RyaW5nKTsKKyAgICAgICAgTE9HX0lORk8oVGV4dElucHV0LCAiICAgIFJl
cGxhY2VtZW50UmFuZ2U6ICVAIiwgcmFuZ2VTdHJpbmcpOwogICAgICAgICAvLyBUaGUgQXBwS2l0
IGFkZHMgYSAnc2VjcmV0JyBwcm9wZXJ0eSB0byB0aGUgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhl
IHJlcGxhY2VtZW50IHJhbmdlLgogICAgICAgICAvLyBUaGUgcmVwbGFjZW1lbnQgcmFuZ2UgaXMg
dGhlIHJhbmdlIG9mIHRoZSB0aGUgdGV4dCB0aGF0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHRo
ZSBuZXcgc3RyaW5nLgogICAgICAgICBpZiAocmFuZ2VTdHJpbmcpCkBAIC01ODYxLDcgKzU4NjEs
NyBAQCAtICh2b2lkKXNldE1hcmtlZFRleHQ6KGlkKXN0cmluZyBzZWxlY3RlZFJhbmdlOihOU1Jh
bmdlKW5ld1NlbFJhbmdlCiAKIC0gKHZvaWQpZG9Db21tYW5kQnlTZWxlY3RvcjooU0VMKXNlbGVj
dG9yCiB7Ci0gICAgTE9HKFRleHRJbnB1dCwgImRvQ29tbWFuZEJ5U2VsZWN0b3I6XCIlc1wiIiwg
c2VsX2dldE5hbWUoc2VsZWN0b3IpKTsKKyAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICJkb0NvbW1h
bmRCeVNlbGVjdG9yOlwiJXNcIiIsIHNlbF9nZXROYW1lKHNlbGVjdG9yKSk7CiAKICAgICAvLyBV
c2UgcG9pbnRlciB0byBnZXQgcGFyYW1ldGVycyBwYXNzZWQgdG8gdXMgYnkgdGhlIGNhbGxlciBv
ZiBpbnRlcnByZXRLZXlFdmVudHMuCiAgICAgLy8gVGhlIHNhbWUgY2FsbCB0byBpbnRlcnByZXRL
ZXlFdmVudHMgY2FuIGRvIG1vcmUgdGhhbiBvbmUgY29tbWFuZC4KQEAgLTU5MTksNyArNTkxOSw3
IEBAIC0gKHZvaWQpaW5zZXJ0VGV4dDooaWQpc3RyaW5nCiAgICAgQk9PTCBpc0F0dHJpYnV0ZWRT
dHJpbmcgPSBbc3RyaW5nIGlzS2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11d
OwogICAgIEFTU0VSVChpc0F0dHJpYnV0ZWRTdHJpbmcgfHwgW3N0cmluZyBpc0tpbmRPZkNsYXNz
OltOU1N0cmluZyBjbGFzc11dKTsKIAotICAgIExPRyhUZXh0SW5wdXQsICJpbnNlcnRUZXh0Olwi
JUBcIiIsIGlzQXR0cmlidXRlZFN0cmluZyA/IFtzdHJpbmcgc3RyaW5nXSA6IHN0cmluZyk7Cisg
ICAgTE9HX0lORk8oVGV4dElucHV0LCAiaW5zZXJ0VGV4dDpcIiVAXCIiLCBpc0F0dHJpYnV0ZWRT
dHJpbmcgPyBbc3RyaW5nIHN0cmluZ10gOiBzdHJpbmcpOwogCiAgICAgV2ViSFRNTFZpZXdJbnRl
cnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzID0gX3ByaXZhdGUtPmludGVycHJl
dEtleUV2ZW50c1BhcmFtZXRlcnM7CiAgICAgaWYgKHBhcmFtZXRlcnMpCkBAIC01OTQyLDcgKzU5
NDIsNyBAQCAtICh2b2lkKWluc2VydFRleHQ6KGlkKXN0cmluZwogICAgICAgICAvLyBJdCBkb2Vz
IG5vdCBsb29rIGxpa2UgYW55IGlucHV0IG1ldGhvZHMgZXZlciB1c2UgaW5zZXJ0VGV4dDogd2l0
aCBhdHRyaWJ1dGVzIG90aGVyIHRoYW4gTlNUZXh0SW5wdXRSZXBsYWNlbWVudFJhbmdlQXR0cmli
dXRlTmFtZS4KICAgICAgICAgdGV4dCA9IFtzdHJpbmcgc3RyaW5nXTsKICAgICAgICAgTlNTdHJp
bmcgKnJhbmdlU3RyaW5nID0gW3N0cmluZyBhdHRyaWJ1dGU6TlNUZXh0SW5wdXRSZXBsYWNlbWVu
dFJhbmdlQXR0cmlidXRlTmFtZSBhdEluZGV4OjAgbG9uZ2VzdEVmZmVjdGl2ZVJhbmdlOjAgaW5S
YW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dCBsZW5ndGhdKV07Ci0gICAgICAgIExPRyhUZXh0SW5w
dXQsICIgICAgUmVwbGFjZW1lbnRSYW5nZTogJUAiLCByYW5nZVN0cmluZyk7CisgICAgICAgIExP
R19JTkZPKFRleHRJbnB1dCwgIiAgICBSZXBsYWNlbWVudFJhbmdlOiAlQCIsIHJhbmdlU3RyaW5n
KTsKICAgICAgICAgaWYgKHJhbmdlU3RyaW5nKSB7CiAgICAgICAgICAgICByZXBsYWNlbWVudFJh
bmdlID0gTlNSYW5nZUZyb21TdHJpbmcocmFuZ2VTdHJpbmcpOwogICAgICAgICAgICAgaXNGcm9t
SW5wdXRNZXRob2QgPSB0cnVlOwpAQCAtNjE0OCw3ICs2MTQ4LDcgQEAgLSAoTlNBdHRyaWJ1dGVk
U3RyaW5nICopX2F0dHJpYnV0ZVN0cmluZ0Zyb21ET01SYW5nZTooRE9NUmFuZ2UgKilyYW5nZQog
ICAgIGF0dHJpYnV0ZWRTdHJpbmcgPSBbW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIF9pbml0
V2l0aERPTVJhbmdlOnJhbmdlXSBhdXRvcmVsZWFzZV07CiAjaWYgIUxPR19ESVNBQkxFRAogICAg
IGRvdWJsZSBkdXJhdGlvbiA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpIC0gc3RhcnQ7Ci0g
ICAgTE9HKFRpbWluZywgImNyZWF0aW5nIGF0dHJpYnV0ZWQgc3RyaW5nIGZyb20gc2VsZWN0aW9u
IHRvb2sgJWYgc2Vjb25kcy4iLCBkdXJhdGlvbik7CisgICAgTE9HX0lORk8oVGltaW5nLCAiY3Jl
YXRpbmcgYXR0cmlidXRlZCBzdHJpbmcgZnJvbSBzZWxlY3Rpb24gdG9vayAlZiBzZWNvbmRzLiIs
IGR1cmF0aW9uKTsKICNlbmRpZgogICAgIHJldHVybiBhdHRyaWJ1dGVkU3RyaW5nOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5kZXggOWZiMzA1YjZi
MzJmNDE5OTIwOGMxMmEyMzkyNWI5YmE1ODE1Y2ZmMC4uNWJhM2EzOGU4ZmU3MGJhNjlmZmRhYTEw
Zjg3MmE0MjY3YmEwMWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tCkBAIC0yNTUsNyArMjU1LDcgQEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2Rl
ciAqKWRlY29kZXIKICAgICAgICAgaWYgKFt2YWx1ZXMgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9u
YXJ5IGNsYXNzXV0pCiAgICAgICAgICAgICBfcHJpdmF0ZS0+dmFsdWVzLmFkb3B0TlMoW3ZhbHVl
cyBtdXRhYmxlQ29weV0pOyAvLyBlbnN1cmUgZGljdGlvbmFyeSBpcyBtdXRhYmxlCiAKLSAgICAg
ICAgTE9HKEVuY29kaW5nLCAiSWRlbnRpZmllciA9ICVALCBWYWx1ZXMgPSAlQFxuIiwgX3ByaXZh
dGUtPmlkZW50aWZpZXIuZ2V0KCksIF9wcml2YXRlLT52YWx1ZXMuZ2V0KCkpOworICAgICAgICBM
T0dfSU5GTyhFbmNvZGluZywgIklkZW50aWZpZXIgPSAlQCwgVmFsdWVzID0gJUBcbiIsIF9wcml2
YXRlLT5pZGVudGlmaWVyLmdldCgpLCBfcHJpdmF0ZS0+dmFsdWVzLmdldCgpKTsKICAgICB9IEBj
YXRjaChpZCkgewogICAgICAgICBbc2VsZiByZWxlYXNlXTsKICAgICAgICAgcmV0dXJuIG5pbDsK
QEAgLTExOTksNyArMTE5OSw3IEBAIC0gKHZvaWQpc2V0RXhwZXJpbWVudGFsTm90aWZpY2F0aW9u
c0VuYWJsZWQ6KEJPT0wpZXhwZXJpbWVudGFsTm90aWZpY2F0aW9uc0VuYWJsCiAKICsgKFdlYlBy
ZWZlcmVuY2VzICopX2dldEluc3RhbmNlRm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudAog
ewotICAgIExPRyhFbmNvZGluZywgInJlcXVlc3RpbmcgZm9yICVAXG4iLCBpZGVudCk7CisgICAg
TE9HX0lORk8oRW5jb2RpbmcsICJyZXF1ZXN0aW5nIGZvciAlQFxuIiwgaWRlbnQpOwogCiAgICAg
aWYgKCFpZGVudCkKICAgICAgICAgcmV0dXJuIF9zdGFuZGFyZFByZWZlcmVuY2VzOwpAQCAtMTIx
NSw3ICsxMjE1LDcgQEAgKyAodm9pZClfc2V0SW5zdGFuY2U6KFdlYlByZWZlcmVuY2VzICopaW5z
dGFuY2UgZm9ySWRlbnRpZmllcjooTlNTdHJpbmcgKilpZGVudAogICAgICAgICB3ZWJQcmVmZXJl
bmNlc0luc3RhbmNlcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CiAgICAg
aWYgKGlkZW50KSB7CiAgICAgICAgIFt3ZWJQcmVmZXJlbmNlc0luc3RhbmNlcyBzZXRPYmplY3Q6
aW5zdGFuY2UgZm9yS2V5OltzZWxmIF9jb25jYXRlbmF0ZUtleVdpdGhJQkNyZWF0b3JJRDppZGVu
dF1dOwotICAgICAgICBMT0coRW5jb2RpbmcsICJyZWNvcmRpbmcgJXAgZm9yICVAXG4iLCBpbnN0
YW5jZSwgW3NlbGYgX2NvbmNhdGVuYXRlS2V5V2l0aElCQ3JlYXRvcklEOmlkZW50XSk7CisgICAg
ICAgIExPR19JTkZPKEVuY29kaW5nLCAicmVjb3JkaW5nICVwIGZvciAlQFxuIiwgaW5zdGFuY2Us
IFtzZWxmIF9jb25jYXRlbmF0ZUtleVdpdGhJQkNyZWF0b3JJRDppZGVudF0pOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDNmZjcyNzVjMTY5OTE4NGJm
ZDczMGM4OGFhMzM3NTQzNzVkOTQwMTkuLjMwMzQwNDM0NTE2NmM4ZDEzZmRkODdhMTFjZTc1NmY5
OGFhZjYyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTM0MjQsNyAr
MzQyNCw3IEBAIC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilkZWNvZGVyCiAgICAgICAg
IGlmICghW3ByZWZlcmVuY2VzIGlzS2luZE9mQ2xhc3M6W1dlYlByZWZlcmVuY2VzIGNsYXNzXV0p
CiAgICAgICAgICAgICBwcmVmZXJlbmNlcyA9IG5pbDsKIAotICAgICAgICBMT0coRW5jb2Rpbmcs
ICJGcmFtZU5hbWUgPSAlQCwgR3JvdXBOYW1lID0gJUAsIHVzZUJhY2tGb3J3YXJkTGlzdCA9ICVk
XG4iLCBmcmFtZU5hbWUsIGdyb3VwTmFtZSwgKGludCl1c2VCYWNrRm9yd2FyZExpc3QpOworICAg
ICAgICBMT0dfSU5GTyhFbmNvZGluZywgIkZyYW1lTmFtZSA9ICVALCBHcm91cE5hbWUgPSAlQCwg
dXNlQmFja0ZvcndhcmRMaXN0ID0gJWRcbiIsIGZyYW1lTmFtZSwgZ3JvdXBOYW1lLCAoaW50KXVz
ZUJhY2tGb3J3YXJkTGlzdCk7CiAgICAgICAgIFtyZXN1bHQgX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aEZyYW1lTmFtZTpmcmFtZU5hbWUgZ3JvdXBOYW1lOmdyb3VwTmFtZV07CiAgICAgICAgIHN0
YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlzdEltcGwqPihbcmVzdWx0IHBhZ2VdLT5iYWNrRm9yd2Fy
ZExpc3QoKSktPnNldEVuYWJsZWQodXNlQmFja0ZvcndhcmRMaXN0KTsKICAgICAgICAgcmVzdWx0
LT5fcHJpdmF0ZS0+YWxsb3dzVW5kbyA9IGFsbG93c1VuZG87CkBAIC0zNDY3LDcgKzM0NjcsNyBA
QCAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWVuY29kZXIKICAgICAgICAgLy8g
RE8gTk9UIGVuY29kZSBhbnkgbmV3IGZpZWxkcyBoZXJlLCBkb2luZyBzbyB3aWxsIGJyZWFrIG9s
ZGVyIFdlYktpdCByZWxlYXNlcy4KICAgICB9CiAKLSAgICBMT0coRW5jb2RpbmcsICJGcmFtZU5h
bWUgPSAlQCwgR3JvdXBOYW1lID0gJUAsIHVzZUJhY2tGb3J3YXJkTGlzdCA9ICVkXG4iLCBbW3Nl
bGYgbWFpbkZyYW1lXSBuYW1lXSwgW3NlbGYgZ3JvdXBOYW1lXSwgKGludCl1c2VCYWNrRm9yd2Fy
ZExpc3QpOworICAgIExPR19JTkZPKEVuY29kaW5nLCAiRnJhbWVOYW1lID0gJUAsIEdyb3VwTmFt
ZSA9ICVALCB1c2VCYWNrRm9yd2FyZExpc3QgPSAlZFxuIiwgW1tzZWxmIG1haW5GcmFtZV0gbmFt
ZV0sIFtzZWxmIGdyb3VwTmFtZV0sIChpbnQpdXNlQmFja0ZvcndhcmRMaXN0KTsKIH0KIAogLSAo
dm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZS5jcHAKaW5kZXggZDljYzcxY2YzYjFlZjkzZTIxNDBmNzhjYjFjNTU4MTEwNDI2M2RjNS4uOTNm
NjJkOTI2ZGM4YWFlZWEzODY5YjczZDQ3NzY0NWY2OTA5MDM3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFVM
T05HIFNURE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpSZWxlYXNlKCkK
IAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoSVdlYkRvd25sb2FkICpkb3dubG9h
ZCwgQlNUUiBmaWxlbmFtZSkKIHsKLSAgICBMT0coRG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZSAlcCAtIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lICVzIiwg
ZG93bmxvYWQsIFN0cmluZyhmaWxlbmFtZSwgU3lzU3RyaW5nTGVuKGZpbGVuYW1lKSkuYXNjaWko
KS5kYXRhKCkpOworICAgIExPR19JTkZPKERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdh
dGUgJXAgLSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSAlcyIsIGRvd25s
b2FkLCBTdHJpbmcoZmlsZW5hbWUsIFN5c1N0cmluZ0xlbihmaWxlbmFtZSkpLmFzY2lpKCkuZGF0
YSgpKTsKIAogICAgIFdDSEFSIHBhdGhDaGFyc1tNQVhfUEFUSF07CiAgICAgaWYgKEZBSUxFRChT
SEdldEZvbGRlclBhdGgoMCwgQ1NJRExfREVTS1RPUERJUkVDVE9SWSAgfCBDU0lETF9GTEFHX0NS
RUFURSwgMCwgMCwgcGF0aENoYXJzKSkpIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZQogCiAjaWZuZGVmIE5ERUJVRwogICAgIFN0cmluZyBkZWJ1ZygoQlNUUilm
dWxsUGF0aCwgU3lzU3RyaW5nTGVuKEJTVFIoZnVsbFBhdGgpKSk7Ci0gICAgTE9HKERvd25sb2Fk
LCAiU2V0dGluZyBwYXRoIHRvICVzIiwgZGVidWcuYXNjaWkoKS5kYXRhKCkpOworICAgIExPR19J
TkZPKERvd25sb2FkLCAiU2V0dGluZyBwYXRoIHRvICVzIiwgZGVidWcuYXNjaWkoKS5kYXRhKCkp
OwogI2VuZGlmCiAKICAgICBpZiAoRkFJTEVEKGRvd25sb2FkLT5zZXREZXN0aW5hdGlvbihmdWxs
UGF0aCwgdHJ1ZSkpKSB7CkBAIC0xNDEsMTQgKzE0MSwxNCBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZQogfQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVdlYkRvd25sb2FkKiBkb3dubG9h
ZCwgSVdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBjaGFsbGVuZ2UpCiB7Ci0gICAgTE9H
KERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkaWRDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAlcCIsIGRvd25sb2FkLCBjaGFsbGVuZ2UpOworICAgIExPR19JTkZP
KERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkaWRDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAlcCIsIGRvd25sb2FkLCBjaGFsbGVuZ2UpOwogICAgIGRvd25sb2Fk
ID0gMDsKICAgICBjaGFsbGVuZ2UgPSAwOwogICAgIHJldHVybiBTX09LOwogfQogSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6ZGlkQ3JlYXRlRGVzdGlu
YXRpb24oSVdlYkRvd25sb2FkKiBkb3dubG9hZCwgQlNUUiBkZXN0aW5hdGlvbikKIHsKLSAgICBM
T0coRG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIGRpZENyZWF0ZURlc3Rp
bmF0aW9uICVzIiwgZG93bmxvYWQsIFN0cmluZyhkZXN0aW5hdGlvbiwgU3lzU3RyaW5nTGVuKGRl
c3RpbmF0aW9uKSkuYXNjaWkoKS5kYXRhKCkpOworICAgIExPR19JTkZPKERvd25sb2FkLCAiRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkaWRDcmVhdGVEZXN0aW5hdGlvbiAlcyIsIGRvd25s
b2FkLCBTdHJpbmcoZGVzdGluYXRpb24sIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvbikpLmFzY2lp
KCkuZGF0YSgpKTsKICAgICBkb3dubG9hZCA9IDA7CiAgICAgZGVzdGluYXRpb24gPSAwOwogICAg
IHJldHVybiBTX09LOwpAQCAtMTU2LDcgKzE1Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZENyZWF0ZURlc3RpbmF0aW9uKElXZWJEb3du
CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBJ
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIGNoYWxsZW5nZSkKIHsKLSAgICBMT0coRG93
bmxvYWQsICJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAlcCIsIGRvd25sb2FkLCBjaGFsbGVuZ2UpOworICAgIExPR19JTkZPKERv
d25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgJXAiLCBkb3dubG9hZCwgY2hhbGxlbmdlKTsKICAgICBkb3dubG9hZCA9
IDA7CiAgICAgY2hhbGxlbmdlID0gMDsKICAgICByZXR1cm4gU19PSzsKQEAgLTE2NCw3ICsxNjQs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbAogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKElXZWJEb3du
bG9hZCogZG93bmxvYWQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICBMT0coRG93bmxvYWQsICJE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIGRpZFJlY2VpdmVEYXRhT2ZMZW5ndGggJWkiLCBk
b3dubG9hZCwgbGVuZ3RoKTsKKyAgICBMT0dfSU5GTyhEb3dubG9hZCwgIkRlZmF1bHREb3dubG9h
ZERlbGVnYXRlICVwIC0gZGlkUmVjZWl2ZURhdGFPZkxlbmd0aCAlaSIsIGRvd25sb2FkLCBsZW5n
dGgpOwogICAgIGRvd25sb2FkID0gMDsKICAgICBsZW5ndGggPSAwOwogICAgIHJldHVybiBTX09L
OwpAQCAtMTcyLDcgKzE3Miw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERv
d25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVEYXRhT2ZMZW5ndGgoSVdlYkRvCiAKIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNw
b25zZShJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlKQog
ewotICAgIExPRyhEb3dubG9hZCwgIkRlZmF1bHREb3dubG9hZERlbGVnYXRlICVwIC0gZGlkUmVj
ZWl2ZVJlc3BvbnNlICVwIiwgZG93bmxvYWQsIHJlc3BvbnNlKTsKKyAgICBMT0dfSU5GTyhEb3du
bG9hZCwgIkRlZmF1bHREb3dubG9hZERlbGVnYXRlICVwIC0gZGlkUmVjZWl2ZVJlc3BvbnNlICVw
IiwgZG93bmxvYWQsIHJlc3BvbnNlKTsKICAgICBkb3dubG9hZCA9IDA7CiAgICAgcmVzcG9uc2Ug
PSAwOwogICAgIHJldHVybiBTX09LOwpAQCAtMTgwLDcgKzE4MCw3IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVSZXNwb25zZShJ
V2ViRG93bmxvCiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGU6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKElXZWJEb3dubG9hZCogZG93
bmxvYWQsIEJTVFIgZW5jb2RpbmdUeXBlLCBCT09MKiBzaG91bGREZWNvZGUpCiB7Ci0gICAgTE9H
KERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBzaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZSAlcyIsIGRvd25sb2FkLCBTdHJpbmcoZW5jb2RpbmdUeXBlLCBTeXNT
dHJpbmdMZW4oZW5jb2RpbmdUeXBlKSkuYXNjaWkoKS5kYXRhKCkpOworICAgIExPR19JTkZPKERv
d25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBzaG91bGREZWNvZGVTb3VyY2VE
YXRhT2ZNSU1FVHlwZSAlcyIsIGRvd25sb2FkLCBTdHJpbmcoZW5jb2RpbmdUeXBlLCBTeXNTdHJp
bmdMZW4oZW5jb2RpbmdUeXBlKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgIGRvd25sb2FkID0gMDsK
ICAgICBlbmNvZGluZ1R5cGUgPSAwOwogICAgICpzaG91bGREZWNvZGUgPSBmYWxzZTsKQEAgLTE4
OSw3ICsxODksNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERl
bGVnYXRlOjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVAogCiBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp3aWxsUmVzdW1lV2l0aFJlc3BvbnNl
KElXZWJEb3dubG9hZCogZG93bmxvYWQsIElXZWJVUkxSZXNwb25zZSogcmVzcG9uc2UsIGxvbmcg
bG9uZyBmcm9tQnl0ZSkKIHsKLSAgICBMT0coRG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSAlcCAtIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2UgJXAsICVxIiwgZG93bmxvYWQsIHJlc3Bv
bnNlLCBmcm9tQnl0ZSk7CisgICAgTE9HX0lORk8oRG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZSAlcCAtIHdpbGxSZXN1bWVXaXRoUmVzcG9uc2UgJXAsICVxIiwgZG93bmxvYWQsIHJl
c3BvbnNlLCBmcm9tQnl0ZSk7CiAgICAgZG93bmxvYWQgPSAwOwogICAgIHJlc3BvbnNlID0gMDsK
ICAgICBmcm9tQnl0ZSA9IDA7CkBAIC0xOTksNyArMTk5LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6d2lsbFJlc3VtZVdpdGhSZXNwb25zZShJ
V2ViRG8KIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6
OndpbGxTZW5kUmVxdWVzdChJV2ViRG93bmxvYWQqIGRvd25sb2FkLCBJV2ViTXV0YWJsZVVSTFJl
cXVlc3QqIHJlcXVlc3QsICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSVdlYlVSTFJlc3BvbnNlKiByZWRpcmVjdFJlc3Bv
bnNlLCBJV2ViTXV0YWJsZVVSTFJlcXVlc3QqKiBmaW5hbFJlcXVlc3QpCiB7Ci0gICAgTE9HKERv
d25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSB3aWxsU2VuZFJlcXVlc3QgJXAg
JXAiLCBkb3dubG9hZCwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgTE9HX0lORk8o
RG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIHdpbGxTZW5kUmVxdWVzdCAl
cCAlcCIsIGRvd25sb2FkLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICBkb3dubG9h
ZCA9IDA7CiAgICAgcmVkaXJlY3RSZXNwb25zZSA9IDA7CiAgICAgKmZpbmFsUmVxdWVzdCA9IHJl
cXVlc3Q7CkBAIC0yMDksMjEgKzIwOSwyMSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERl
ZmF1bHREb3dubG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoSVdlYkRvd25sb2FkKgogCiBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpkaWRCZWdp
bihJV2ViRG93bmxvYWQqIGRvd25sb2FkKQogewotICAgIExPRyhEb3dubG9hZCwgIkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlICVwIC0gZGlkQmVnaW4iLCBkb3dubG9hZCk7CisgICAgTE9HX0lORk8o
RG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIGRpZEJlZ2luIiwgZG93bmxv
YWQpOwogICAgIHJlZ2lzdGVyRG93bmxvYWQoZG93bmxvYWQpOwogICAgIHJldHVybiBTX09LOwog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpk
aWRGaW5pc2goSVdlYkRvd25sb2FkKiBkb3dubG9hZCkKIHsKLSAgICBMT0coRG93bmxvYWQsICJE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSAlcCAtIGRpZEZpbmlzaCIsIGRvd25sb2FkKTsKKyAgICBM
T0dfSU5GTyhEb3dubG9hZCwgIkRlZmF1bHREb3dubG9hZERlbGVnYXRlICVwIC0gZGlkRmluaXNo
IiwgZG93bmxvYWQpOwogICAgIHVucmVnaXN0ZXJEb3dubG9hZChkb3dubG9hZCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRGVmYXVsdERvd25sb2Fk
RGVsZWdhdGU6OmRpZEZhaWxXaXRoRXJyb3IoSVdlYkRvd25sb2FkKiBkb3dubG9hZCwgSVdlYkVy
cm9yKiBlcnJvcikKIHsKLSAgICBMT0coRG93bmxvYWQsICJEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZSAlcCAtIGRpZEZhaWxXaXRoRXJyb3IgJXAiLCBkb3dubG9hZCwgZXJyb3IpOworICAgIExPR19J
TkZPKERvd25sb2FkLCAiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUgJXAgLSBkaWRGYWlsV2l0aEVy
cm9yICVwIiwgZG93bmxvYWQsIGVycm9yKTsKICAgICB1bnJlZ2lzdGVyRG93bmxvYWQoZG93bmxv
YWQpOwogICAgIGVycm9yID0gMDsKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRvd25s
b2FkLmNwcAppbmRleCBiOGZhYmUyOGJhNjhhZTgzNTUzNDA4YzA3MmIwMWY0OTNlN2Y5NWQ0Li5j
ZGY2MjQwNDU3MDdhODQ1OGQ3ZWQzNTA4ZGNjNWQ0M2I4MzJlNTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
RG93bmxvYWQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgp
CiAKIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogewotICAgIExPRyhEb3dubG9hZCwgIldl
YkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CisgICAgTE9HX0lO
Rk8oRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ryb3lpbmcgZG93bmxvYWQgKCVwKSIsIHRo
aXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0NvdW50LS07CiAgICAgZ0NsYXNzTmFtZUNv
dW50LnJlbW92ZSgiV2ViRG93bmxvYWQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5l
dC5jcHAKaW5kZXggZjIzZjI4MDY0MzYxNTdkZDcxNjEyZTYzYjcwMWVjNWZmNzBkNzE5ZS4uN2M2
OWNhODU4ZTVkN2NkYjhmYWYxMTVmNDkxYjgwY2JiNWIyYzcyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJEb3dubG9hZDo6
aW5pdChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGMKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIExPR19FUlJPUigi
V2ViRG93bmxvYWQgLSBGYWlsZWQgdG8gY3JlYXRlIFdlYkRvd25sb2FkIGZyb20gZXhpc3Rpbmcg
Y29ubmVjdGlvbiAoJXMpIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICB9IGVsc2UKLSAgICAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBDcmVhdGVk
IFdlYkRvd25sb2FkICVwIGZyb20gZXhpc3RpbmcgY29ubmVjdGlvbiAoJXMpIiwgdGhpcywgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0lORk8oRG93
bmxvYWQsICJXZWJEb3dubG9hZCAtIENyZWF0ZWQgV2ViRG93bmxvYWQgJXAgZnJvbSBleGlzdGlu
ZyBjb25uZWN0aW9uICglcykiLCB0aGlzLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCiAgICAgLy8gVGhlIENGVVJMRG93bmxvYWQgZWl0aGVyIHN0YXJ0cyBzdWNjZXNz
ZnVsbHkgYW5kIHJldGFpbnMgdGhlIENGVVJMQ29ubmVjdGlvbiwgCiAgICAgLy8gb3IgaXQgZmFp
bHMgdG8gY3JlYXRpbmcgYW5kIHdlIGhhdmUgYSBub3ctdXNlbGVzcyBjb25uZWN0aW9uIHdpdGgg
YSBkYW5nbGluZyByZWYuIApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgV2ViRG93bmxvYWQ6Omlu
aXQoY29uc3QgS1VSTCYgdXJsLCBJV2ViRG93bmxvYWREZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAg
Q0ZVUkxEb3dubG9hZFNjaGVkdWxlV2l0aEN1cnJlbnRNZXNzYWdlUXVldWUobV9kb3dubG9hZC5n
ZXQoKSk7CiAgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9vcChtX2Rv
d25sb2FkLmdldCgpLCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAK
LSAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIEluaXRpYWxpemVkIGRvd25sb2FkIG9m
IHVybCAlcyBpbiBXZWJEb3dubG9hZCAlcCIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0
aGlzKTsKKyAgICBMT0dfSU5GTyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gSW5pdGlhbGl6ZWQg
ZG93bmxvYWQgb2YgdXJsICVzIGluIFdlYkRvd25sb2FkICVwIiwgdXJsLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksIHRoaXMpOwogfQogCiAvLyBJV2ViRG93bmxvYWQgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI5
LDE0ICsxMjksMTQgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9hZDo6aW5p
dFdpdGhSZXF1ZXN0KAogewogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gd2ViUmVx
dWVzdDsKICAgICBpZiAoIXJlcXVlc3QgfHwgRkFJTEVEKHJlcXVlc3QtPlF1ZXJ5SW50ZXJmYWNl
KCZ3ZWJSZXF1ZXN0KSkpIHsKLSAgICAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBp
bml0V2l0aFJlcXVlc3QgZmFpbGVkIC0gbm90IGEgV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsgICAg
CisgICAgICAgIExPR19JTkZPKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBpbml0V2l0aFJlcXVl
c3QgZmFpbGVkIC0gbm90IGEgV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsgICAgCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAgICAgfQogCiAgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKICAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgTE9HKERvd25sb2FkLCAi
RGVsZWdhdGUgaXMgJXAiLCBtX2RlbGVnYXRlLmdldCgpKTsKKyAgICBMT0dfSU5GTyhEb3dubG9h
ZCwgIkRlbGVnYXRlIGlzICVwIiwgbV9kZWxlZ2F0ZS5nZXQoKSk7CiAKICAgICBSZXRhaW5QdHI8
Q0ZVUkxSZXF1ZXN0UmVmPiBjZlJlcXVlc3QgPSB3ZWJSZXF1ZXN0LT5yZXNvdXJjZVJlcXVlc3Qo
KS5jZlVSTFJlcXVlc3QoKTsKIApAQCAtMTU2LDcgKzE1Niw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViRG93bmxvYWQ6OmluaXRXaXRoUmVxdWVzdCgKICAgICBDRlVSTERvd25sb2Fk
U2NoZWR1bGVXaXRoQ3VycmVudE1lc3NhZ2VRdWV1ZShtX2Rvd25sb2FkLmdldCgpKTsKICAgICBD
RlVSTERvd25sb2FkU2NoZWR1bGVEb3dubG9hZFdpdGhSdW5Mb29wKG1fZG93bmxvYWQuZ2V0KCks
IGxvYWRlclJ1bkxvb3AoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKIAotICAgIExPRyhEb3du
bG9hZCwgIldlYkRvd25sb2FkIC0gaW5pdFdpdGhSZXF1ZXN0IGNvbXBsZXRlLCBzdGFydGVkIGRv
d25sb2FkIG9mIHVybCAlcyIsIHdlYlJlcXVlc3QtPnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBpbml0V2l0aFJlcXVlc3QgY29tcGxldGUsIHN0YXJ0ZWQgZG93bmxvYWQgb2YgdXJsICVz
Iiwgd2ViUmVxdWVzdC0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTE2NCw3ICsxNjQsNyBAQCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxlKAog
ICAgICAgICAvKiBbaW5dICovIEJTVFIgYnVuZGxlUGF0aCwgCiAgICAgICAgIC8qIFtpbl0gKi8g
SVdlYkRvd25sb2FkRGVsZWdhdGUqIGRlbGVnYXRlKQogewotICAgIExPRyhEb3dubG9hZCwgIkF0
dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0cmluZyhidW5kbGVQYXRo
LCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBMT0dfSU5G
TyhEb3dubG9hZCwgIkF0dGVtcHRpbmcgcmVzdW1lIG9mIGRvd25sb2FkIGJ1bmRsZSAlcyIsIFN0
cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdMZW4oYnVuZGxlUGF0aCkpLmFzY2lpKCkuZGF0YSgp
KTsKIAogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHJlc3VtZURhdGEoQWRvcHRDRiwgRG93bmxv
YWRCdW5kbGU6OmV4dHJhY3RSZXN1bWVEYXRhKFN0cmluZyhidW5kbGVQYXRoLCBTeXNTdHJpbmdM
ZW4oYnVuZGxlUGF0aCkpKSk7CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxlKAogICAgIGlmICgh
ZGVsZWdhdGUpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgbV9kZWxlZ2F0ZSA9IGRlbGVn
YXRlOwotICAgIExPRyhEb3dubG9hZCwgIkRlbGVnYXRlIGlzICVwIiwgbV9kZWxlZ2F0ZS5nZXQo
KSk7CisgICAgTE9HX0lORk8oRG93bmxvYWQsICJEZWxlZ2F0ZSBpcyAlcCIsIG1fZGVsZWdhdGUu
Z2V0KCkpOwogCiAgICAgQ0ZVUkxEb3dubG9hZENsaWVudCBjbGllbnQgPSB7MCwgdGhpcywgMCwg
MCwgMCwgZGlkU3RhcnRDYWxsYmFjaywgd2lsbFNlbmRSZXF1ZXN0Q2FsbGJhY2ssIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrLCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjaywgd2lsbFJlc3VtZVdpdGhS
ZXNwb25zZUNhbGxiYWNrLCBkaWRSZWNlaXZlRGF0YUNhbGxiYWNrLCBzaG91bGREZWNvZGVEYXRh
T2ZNSU1FVHlwZUNhbGxiYWNrLCAKQEAgLTE4Niw3ICsxODYsNyBAQCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIFdlYkRvd25sb2FkOjppbml0VG9SZXN1bWVXaXRoQnVuZGxlKAogICAgIG1fZG93
bmxvYWQuYWRvcHRDRihDRlVSTERvd25sb2FkQ3JlYXRlV2l0aFJlc3VtZURhdGEoMCwgcmVzdW1l
RGF0YS5nZXQoKSwgcGF0aFVSTC5nZXQoKSwgJmNsaWVudCkpOwogCiAgICAgaWYgKCFtX2Rvd25s
b2FkKSB7Ci0gICAgICAgIExPRyhEb3dubG9hZCwgIkZhaWxlZCB0byBjcmVhdGUgQ0ZVUkxEb3du
bG9hZFJlZiBmb3IgcmVzdW1lIik7ICAgIAorICAgICAgICBMT0dfSU5GTyhEb3dubG9hZCwgIkZh
aWxlZCB0byBjcmVhdGUgQ0ZVUkxEb3dubG9hZFJlZiBmb3IgcmVzdW1lIik7ICAgIAogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogICAgIH0KICAgICAKQEAgLTIwMiwxMyArMjAyLDEzIEBAIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OmluaXRUb1Jlc3VtZVdpdGhCdW5kbGUo
CiAgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlV2l0aEN1cnJlbnRNZXNzYWdlUXVldWUobV9kb3du
bG9hZC5nZXQoKSk7CiAgICAgQ0ZVUkxEb3dubG9hZFNjaGVkdWxlRG93bmxvYWRXaXRoUnVuTG9v
cChtX2Rvd25sb2FkLmdldCgpLCBsb2FkZXJSdW5Mb29wKCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9k
ZSk7CiAKLSAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIGluaXRXaXRoUmVxdWVzdCBj
b21wbGV0ZSwgcmVzdW1lZCBkb3dubG9hZCBvZiBidW5kbGUgJXMiLCBTdHJpbmcoYnVuZGxlUGF0
aCwgU3lzU3RyaW5nTGVuKGJ1bmRsZVBhdGgpKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HX0lO
Rk8oRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIGluaXRXaXRoUmVxdWVzdCBjb21wbGV0ZSwgcmVz
dW1lZCBkb3dubG9hZCBvZiBidW5kbGUgJXMiLCBTdHJpbmcoYnVuZGxlUGF0aCwgU3lzU3RyaW5n
TGVuKGJ1bmRsZVBhdGgpKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRG93bmxvYWQ6OnN0YXJ0KCkKIHsKLSAgICBM
T0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFN0YXJ0aW5nIGRvd25sb2FkICglcCkiLCB0aGlz
KTsKKyAgICBMT0dfSU5GTyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gU3RhcnRpbmcgZG93bmxv
YWQgKCVwKSIsIHRoaXMpOwogICAgIGlmICghbV9kb3dubG9hZCkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIApAQCAtMjIyLDcgKzIyMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
RG93bmxvYWQ6OnN0YXJ0KCkKIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJEb3dubG9h
ZDo6Y2FuY2VsKCkKIHsKLSAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIENhbmNlbGxp
bmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOworICAgIExPR19JTkZPKERvd25sb2FkLCAiV2ViRG93
bmxvYWQgLSBDYW5jZWxsaW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBpZiAoIW1fZG93
bmxvYWQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWwoKQogCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYkRvd25sb2FkOjpjYW5jZWxGb3JSZXN1bWUoKQogewotICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gQ2FuY2VsbGluZyBkb3dubG9hZCAoJXApLCB3cml0
aW5nIHJlc3VtZSBpbmZvcm1hdGlvbiB0byBmaWxlIGlmIHBvc3NpYmxlIiwgdGhpcyk7CisgICAg
TE9HX0lORk8oRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIENhbmNlbGxpbmcgZG93bmxvYWQgKCVw
KSwgd3JpdGluZyByZXN1bWUgaW5mb3JtYXRpb24gdG8gZmlsZSBpZiBwb3NzaWJsZSIsIHRoaXMp
OwogICAgIEFTU0VSVChtX2Rvd25sb2FkKTsKICAgICBpZiAoIW1fZG93bmxvYWQpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CkBAIC0yNTAsNyArMjUwLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJEb3dubG9hZDo6Y2FuY2VsRm9yUmVzdW1lKCkKIAogICAgIHJlc3VtZURhdGEuYWRv
cHRDRihDRlVSTERvd25sb2FkQ29weVJlc3VtZURhdGEobV9kb3dubG9hZC5nZXQoKSkpOwogICAg
IGlmICghcmVzdW1lRGF0YSkgewotICAgICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAt
IFVuYWJsZSB0byBjcmVhdGUgcmVzdW1lIGRhdGEgZm9yIGRvd25sb2FkICglcCkiLCB0aGlzKTsK
KyAgICAgICAgTE9HX0lORk8oRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFVuYWJsZSB0byBjcmVh
dGUgcmVzdW1lIGRhdGEgZm9yIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICAgICAgZ290byBl
eGl0OwogICAgIH0KIApAQCAtMjkzLDcgKzI5Myw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgV2ViRG93bmxvYWQ6OnNldERlc3RpbmF0aW9uKAogICAgIENGVVJMRG93bmxvYWRTZXREZXN0
aW5hdGlvbihtX2Rvd25sb2FkLmdldCgpLCBwYXRoVVJMLCAhIWFsbG93T3ZlcndyaXRlKTsKICAg
ICBDRlJlbGVhc2UocGF0aFVSTCk7CiAKLSAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAt
IFNldCBkZXN0aW5hdGlvbiB0byAlcyIsIG1fYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7Cisg
ICAgTE9HX0lORk8oRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIFNldCBkZXN0aW5hdGlvbiB0byAl
cyIsIG1fYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gU19PSzsKIH0K
QEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIFdlYkRvd25sb2FkOjpkaWRTdGFydCgpCiAjaWZuZGVm
IE5ERUJVRwogICAgIG1fc3RhcnRUaW1lID0gbV9kYXRhVGltZSA9IGN1cnJlbnRUaW1lKCk7CiAg
ICAgbV9yZWNlaXZlZCA9IDA7Ci0gICAgTE9HKERvd25sb2FkLCAiRE9XTkxPQUQgLSBTdGFydGVk
ICVwIGF0ICUuM2Ygc2Vjb25kcyIsIHRoaXMsIG1fc3RhcnRUaW1lKTsKKyAgICBMT0dfSU5GTyhE
b3dubG9hZCwgIkRPV05MT0FEIC0gU3RhcnRlZCAlcCBhdCAlLjNmIHNlY29uZHMiLCB0aGlzLCBt
X3N0YXJ0VGltZSk7CiAjZW5kaWYKICAgICBpZiAoRkFJTEVEKG1fZGVsZWdhdGUtPmRpZEJlZ2lu
KHRoaXMpKSkKICAgICAgICAgTE9HX0VSUk9SKCJEb3dubG9hZERlbGVnYXRlLT5kaWRCZWdpbiBm
YWlsZWQiKTsKQEAgLTQxOSw3ICs0MTksNyBAQCB2b2lkIFdlYkRvd25sb2FkOjpkaWRSZWNlaXZl
RGF0YShDRkluZGV4IGxlbmd0aCkKICAgICBtX3JlY2VpdmVkICs9IGxlbmd0aDsKICAgICBkb3Vi
bGUgY3VycmVudCA9IGN1cnJlbnRUaW1lKCk7CiAgICAgaWYgKGN1cnJlbnQgLSBtX2RhdGFUaW1l
ID4gMi4wKQotICAgICAgICBMT0coRG93bmxvYWQsICJET1dOTE9BRCAtICVwIGhhbmdlZCBmb3Ig
JS4zZiBzZWNvbmRzIC0gUmVjZWl2ZWQgJWkgYnl0ZXMgZm9yIGEgdG90YWwgb2YgJWkiLCB0aGlz
LCBjdXJyZW50IC0gbV9kYXRhVGltZSwgbGVuZ3RoLCBtX3JlY2VpdmVkKTsKKyAgICAgICAgTE9H
X0lORk8oRG93bmxvYWQsICJET1dOTE9BRCAtICVwIGhhbmdlZCBmb3IgJS4zZiBzZWNvbmRzIC0g
UmVjZWl2ZWQgJWkgYnl0ZXMgZm9yIGEgdG90YWwgb2YgJWkiLCB0aGlzLCBjdXJyZW50IC0gbV9k
YXRhVGltZSwgbGVuZ3RoLCBtX3JlY2VpdmVkKTsKICAgICBtX2RhdGFUaW1lID0gY3VycmVudDsK
ICNlbmRpZgogICAgIGlmIChGQUlMRUQobV9kZWxlZ2F0ZS0+ZGlkUmVjZWl2ZURhdGFPZkxlbmd0
aCh0aGlzLCBsZW5ndGgpKSkKQEAgLTQ2NCwxMSArNDY0LDExIEBAIHZvaWQgV2ViRG93bmxvYWQ6
OmRpZENyZWF0ZURlc3RpbmF0aW9uKENGVVJMUmVmIGRlc3RpbmF0aW9uKQogdm9pZCBXZWJEb3du
bG9hZDo6ZGlkRmluaXNoKCkKIHsKICNpZm5kZWYgTkRFQlVHCi0gICAgTE9HKERvd25sb2FkLCAi
RE9XTkxPQUQgLSBGaW5pc2hlZCAlcCBhZnRlciAlaSBieXRlcyBhbmQgJS4zZiBzZWNvbmRzIiwg
dGhpcywgbV9yZWNlaXZlZCwgY3VycmVudFRpbWUoKSAtIG1fc3RhcnRUaW1lKTsKKyAgICBMT0df
SU5GTyhEb3dubG9hZCwgIkRPV05MT0FEIC0gRmluaXNoZWQgJXAgYWZ0ZXIgJWkgYnl0ZXMgYW5k
ICUuM2Ygc2Vjb25kcyIsIHRoaXMsIG1fcmVjZWl2ZWQsIGN1cnJlbnRUaW1lKCkgLSBtX3N0YXJ0
VGltZSk7CiAjZW5kaWYKIAogICAgIEFTU0VSVCghbV9idW5kbGVQYXRoLmlzRW1wdHkoKSAmJiAh
bV9kZXN0aW5hdGlvbi5pc0VtcHR5KCkpOwotICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2Fk
IC0gTW92aW5nIGZpbGUgZnJvbSBidW5kbGUgJXMgdG8gZGVzdGluYXRpb24gJXMiLCBtX2J1bmRs
ZVBhdGguYXNjaWkoKS5kYXRhKCksIG1fZGVzdGluYXRpb24uYXNjaWkoKS5kYXRhKCkpOworICAg
IExPR19JTkZPKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBNb3ZpbmcgZmlsZSBmcm9tIGJ1bmRs
ZSAlcyB0byBkZXN0aW5hdGlvbiAlcyIsIG1fYnVuZGxlUGF0aC5hc2NpaSgpLmRhdGEoKSwgbV9k
ZXN0aW5hdGlvbi5hc2NpaSgpLmRhdGEoKSk7CiAKICAgICAvLyBXZSB0cnkgdG8gcmVuYW1lIHRo
ZSBidW5kbGUgdG8gdGhlIGZpbmFsIGZpbGUgbmFtZS4gIElmIHRoYXQgZmFpbHMsIHdlIGdpdmUg
dGhlIGRlbGVnYXRlIG9uZSBtb3JlIGNoYW5jZSB0byBjaG9zZQogICAgIC8vIHRoZSBmaW5hbCBm
aWxlIG5hbWUsIHRoZW4gd2UganVzdCBsZWF2ZSBpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBk
ZDcwMDhlYjNhNGE3ZGM2ODBkZDJmMGYyNmY4NzE4MDBhZGMyMWVmLi5kMjk1ZWQyNGQwNDcwNzMx
ZWExYzNhMzRkNmEzYjdmM2JlZmYyZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNTQ5NSw3
ICs1NDk1LDcgQEAgdm9pZCBXZWJWaWV3OjpzZWxlY3Rpb25DaGFuZ2VkKCkKIAogYm9vbCBXZWJW
aWV3OjpvbklNRVN0YXJ0Q29tcG9zaXRpb24oKQogewotICAgIExPRyhUZXh0SW5wdXQsICJvbklN
RVN0YXJ0Q29tcG9zaXRpb24iKTsKKyAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICJvbklNRVN0YXJ0
Q29tcG9zaXRpb24iKTsKICAgICBtX2luSU1FQ29tcG9zaXRpb24rKzsKICAgICBGcmFtZSogdGFy
Z2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBpZiAoIXRhcmdldEZyYW1lKQpAQCAtNTYyOSw3ICs1NjI5LDcgQEAgc3RhdGljIFN0
cmluZyBpbWVSZXF1ZXN0TmFtZShXUEFSQU0gd3BhcmFtKQogCiBib29sIFdlYlZpZXc6Om9uSU1F
Q29tcG9zaXRpb24oTFBBUkFNIGxwYXJhbSkKIHsKLSAgICBMT0coVGV4dElucHV0LCAib25JTUVD
b21wb3NpdGlvbiAlcyIsIGltZUNvbXBvc2l0aW9uQXJndW1lbnROYW1lcyhscGFyYW0pLmxhdGlu
MSgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oVGV4dElucHV0LCAib25JTUVDb21wb3NpdGlvbiAl
cyIsIGltZUNvbXBvc2l0aW9uQXJndW1lbnROYW1lcyhscGFyYW0pLmxhdGluMSgpLmRhdGEoKSk7
CiAgICAgSElNQyBoSW5wdXRDb250ZXh0ID0gZ2V0SU1NQ29udGV4dCgpOwogICAgIGlmICghaElu
cHV0Q29udGV4dCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01Njc0LDcgKzU2NzQsNyBAQCBi
b29sIFdlYlZpZXc6Om9uSU1FQ29tcG9zaXRpb24oTFBBUkFNIGxwYXJhbSkKIAogYm9vbCBXZWJW
aWV3OjpvbklNRUVuZENvbXBvc2l0aW9uKCkKIHsKLSAgICBMT0coVGV4dElucHV0LCAib25JTUVF
bmRDb21wb3NpdGlvbiIpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgIm9uSU1FRW5kQ29tcG9z
aXRpb24iKTsKICAgICAvLyBJZiB0aGUgY29tcG9zaXRpb24gaGFzbid0IGJlZW4gY29uZmlybWVk
IHlldCwgaXQgbmVlZHMgdG8gYmUgY2FuY2VsbGVkLgogICAgIC8vIFRoaXMgaGFwcGVucyBhZnRl
ciBkZWxldGluZyB0aGUgbGFzdCBjaGFyYWN0ZXIgZnJvbSBpbmxpbmUgaW5wdXQgaG9sZS4KICAg
ICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKQEAgLTU2OTEsMTQgKzU2OTEsMTQgQEAgYm9vbCBXZWJWaWV3OjpvbklN
RUNoYXIoV1BBUkFNIHdwYXJhbSwgTFBBUkFNIGxwYXJhbSkKIHsKICAgICBVTlVTRURfUEFSQU0o
d3BhcmFtKTsKICAgICBVTlVTRURfUEFSQU0obHBhcmFtKTsKLSAgICBMT0coVGV4dElucHV0LCAi
b25JTUVDaGFyIFUrJTA0WCAlMDhYIiwgd3BhcmFtLCBscGFyYW0pOworICAgIExPR19JTkZPKFRl
eHRJbnB1dCwgIm9uSU1FQ2hhciBVKyUwNFggJTA4WCIsIHdwYXJhbSwgbHBhcmFtKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBXZWJWaWV3OjpvbklNRU5vdGlmeShXUEFSQU0gd3BhcmFt
LCBMUEFSQU0sIExSRVNVTFQqKQogewogICAgIFVOVVNFRF9QQVJBTSh3cGFyYW0pOwotICAgIExP
RyhUZXh0SW5wdXQsICJvbklNRU5vdGlmeSAlcyIsIGltZU5vdGlmaWNhdGlvbk5hbWUod3BhcmFt
KS5sYXRpbjEoKS5kYXRhKCkpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgIm9uSU1FTm90aWZ5
ICVzIiwgaW1lTm90aWZpY2F0aW9uTmFtZSh3cGFyYW0pLmxhdGluMSgpLmRhdGEoKSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCkBAIC01NzQyLDcgKzU3NDIsNyBAQCBMUkVTVUxUIFdlYlZpZXc6
Om9uSU1FUmVxdWVzdFJlY29udmVydFN0cmluZyhGcmFtZSogdGFyZ2V0RnJhbWUsIFJFQ09OVkVS
VFNUUklORwogCiBMUkVTVUxUIFdlYlZpZXc6Om9uSU1FUmVxdWVzdChXUEFSQU0gcmVxdWVzdCwg
TFBBUkFNIGRhdGEpCiB7Ci0gICAgTE9HKFRleHRJbnB1dCwgIm9uSU1FUmVxdWVzdCAlcyIsIGlt
ZVJlcXVlc3ROYW1lKHJlcXVlc3QpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oVGV4
dElucHV0LCAib25JTUVSZXF1ZXN0ICVzIiwgaW1lUmVxdWVzdE5hbWUocmVxdWVzdCkubGF0aW4x
KCkuZGF0YSgpKTsKICAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAoIXRhcmdldEZyYW1lIHx8ICF0
YXJnZXRGcmFtZS0+ZWRpdG9yKCktPmNhbkVkaXQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01
NzYxLDEzICs1NzYxLDEzIEBAIGJvb2wgV2ViVmlldzo6b25JTUVTZWxlY3QoV1BBUkFNIHdwYXJh
bSwgTFBBUkFNIGxwYXJhbSkKIHsKICAgICBVTlVTRURfUEFSQU0od3BhcmFtKTsKICAgICBVTlVT
RURfUEFSQU0obHBhcmFtKTsKLSAgICBMT0coVGV4dElucHV0LCAib25JTUVTZWxlY3QgbG9jYWxl
ICVsZCAlcyIsIGxwYXJhbSwgd3BhcmFtID8gInNlbGVjdCIgOiAiZGVzZWxlY3QiKTsKKyAgICBM
T0dfSU5GTyhUZXh0SW5wdXQsICJvbklNRVNlbGVjdCBsb2NhbGUgJWxkICVzIiwgbHBhcmFtLCB3
cGFyYW0gPyAic2VsZWN0IiA6ICJkZXNlbGVjdCIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAog
Ym9vbCBXZWJWaWV3OjpvbklNRVNldENvbnRleHQoV1BBUkFNIHdwYXJhbSwgTFBBUkFNKQogewot
ICAgIExPRyhUZXh0SW5wdXQsICJvbklNRVNldENvbnRleHQgJXMiLCB3cGFyYW0gPyAiYWN0aXZl
IiA6ICJpbmFjdGl2ZSIpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgIm9uSU1FU2V0Q29udGV4
dCAlcyIsIHdwYXJhbSA/ICJhY3RpdmUiIDogImluYWN0aXZlIik7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IGJjYzVlNDQzNTg0ZDQ0ZmQ1
ZTc4MTliNzA4NmEyZjI0MDIxOTlkN2IuLjdjNDA4YzBhN2IzY2QyZjAxNDBkNjkxOTg4NzY2ZDg0
NDA0YzRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBA
IFJlc291cmNlTG9hZElkZW50aWZpZXIgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2No
ZWR1bGVOZXR3b3JrUmVxdWVzdChjb25zCiB7ICAgIAogICAgIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgaWRlbnRpZmllciA9ICsrc19jdXJyZW50UmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAotICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihOZXR3b3JrUHJvY2VzcykgTmV0d29ya1Jlc291cmNl
TG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVOZXR3b3JrUmVxdWVzdCByZXNvdXJjZSAlbGx1ICclcyci
LCBpZGVudGlmaWVyLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IExPR19JTkZPKE5ldHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZU5ldHdvcmtSZXF1ZXN0IHJlc291cmNlICVsbHUg
JyVzJyIsIGlkZW50aWZpZXIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBIb3N0UmVjb3JkKiBob3N0ID0gaG9zdEZvclVSTChyZXF1ZXN0LnVybCgpLCBDcmVh
dGVJZk5vdEZvdW5kKTsKICAgICBib29sIGhhZFJlcXVlc3RzID0gaG9zdC0+aGFzUmVxdWVzdHMo
KTsKQEAgLTY0LDcgKzY0LDcgQEAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBOZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjphZGRMb2FkSW5Qcm9ncmVzcyhjb25zdCBXZWIKIHsKICAgICBSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIgPSArK3NfY3VycmVudFJlc291cmNlTG9hZElk
ZW50aWZpZXI7CiAKLSAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoTmV0d29ya1Byb2Nlc3Mp
IE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmFkZExvYWRJblByb2dyZXNzIHJlc291cmNl
ICVsbHUgd2l0aCB1cmwgJyVzJyIsIGlkZW50aWZpZXIsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrU2NoZWR1bGluZywgIihOZXR3b3JrUHJvY2Vzcykg
TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6YWRkTG9hZEluUHJvZ3Jlc3MgcmVzb3VyY2Ug
JWxsdSB3aXRoIHVybCAnJXMnIiwgaWRlbnRpZmllciwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgSG9zdFJlY29yZCogaG9zdCA9IGhvc3RGb3JVUkwodXJsLCBDcmVhdGVJZk5v
dEZvdW5kKTsKICAgICBob3N0LT5hZGRMb2FkSW5Qcm9ncmVzcyhpZGVudGlmaWVyKTsKQEAgLTk0
LDcgKzk0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmVMb2Fk
SWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGkKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChpZGVudGlmaWVyKTsKIAotICAgIExPRyhOZXR3b3JrU2NoZWR1
bGluZywgIihOZXR3b3JrUHJvY2VzcykgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVt
b3ZlTG9hZElkZW50aWZpZXIgcmVtb3ZpbmcgbG9hZCBpZGVudGlmaWVyICVsbHUiLCBpZGVudGlm
aWVyKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrU2NoZWR1bGluZywgIihOZXR3b3JrUHJvY2Vzcykg
TmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlTG9hZElkZW50aWZpZXIgcmVtb3Zp
bmcgbG9hZCBpZGVudGlmaWVyICVsbHUiLCBpZGVudGlmaWVyKTsKIAogICAgIEhvc3RSZWNvcmQq
IGhvc3QgPSBtX2lkZW50aWZpZXJzLnRha2UoaWRlbnRpZmllcik7CiAgICAgCkBAIC0xMTAsNyAr
MTEwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1vdmVMb2FkSWRl
bnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGkKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZFNjaGVkdWxlcjo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50
aWZpZXIgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcmVkaXJlY3RVUkwpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIo
TmV0d29ya1Byb2Nlc3MpIE5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3JpZ2lu
UmVkaXJlY3RSZWNlaXZlZCByZXNvdXJjZSAlbGx1IHJlZGlyZWN0ZWQgdG8gJyVzJyIsIGlkZW50
aWZpZXIsIHJlZGlyZWN0VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZP
KE5ldHdvcmtTY2hlZHVsaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOZXR3b3JrUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQgcmVzb3VyY2UgJWxsdSByZWRp
cmVjdGVkIHRvICclcyciLCBpZGVudGlmaWVyLCByZWRpcmVjdFVSTC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIAogICAgIEhvc3RSZWNvcmQqIG9sZEhvc3QgPSBtX2lkZW50aWZpZXJzLmdldChp
ZGVudGlmaWVyKTsKICAgICBIb3N0UmVjb3JkKiBuZXdIb3N0ID0gaG9zdEZvclVSTChyZWRpcmVj
dFVSTCwgQ3JlYXRlSWZOb3RGb3VuZCk7CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQ
cmlvcml0eSBtaW4KICAgICBpZiAobV9zdXNwZW5kUGVuZGluZ1JlcXVlc3RzQ291bnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihOZXR3b3JrUHJvY2Vz
cykgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMgU2Vy
dmluZyByZXF1ZXN0cyBmb3IgdXAgdG8gJWkgaG9zdHMiLCBtX2hvc3RzLnNpemUoKSk7CisgICAg
TE9HX0lORk8oTmV0d29ya1NjaGVkdWxpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5ldHdvcmtSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzIFNlcnZpbmcgcmVxdWVzdHMg
Zm9yIHVwIHRvICVpIGhvc3RzIiwgbV9ob3N0cy5zaXplKCkpOwogCiAgICAgbV9yZXF1ZXN0VGlt
ZXIuc3RvcCgpOwogICAgIApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoUmVzb3VyY2VMb2FkUHJpb3JpdHkg
bWluCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVx
dWVzdHNGb3JIb3N0KEhvc3RSZWNvcmQqIGhvc3QsIFJlc291cmNlTG9hZFByaW9yaXR5IG1pbmlt
dW1Qcmlvcml0eSkKIHsKLSAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICJOZXR3b3JrUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyBIb3N0IG5hbWU9JyVzJyIsIGhv
c3QtPm5hbWUoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrU2NoZWR1bGlu
ZywgIk5ldHdvcmtSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1JlcXVlc3RzIEhv
c3QgbmFtZT0nJXMnIiwgaG9zdC0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZm9yIChp
bnQgcHJpb3JpdHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eUhpZ2hlc3Q7IHByaW9yaXR5ID49IG1p
bmltdW1Qcmlvcml0eTsgLS1wcmlvcml0eSkgewogICAgICAgICBIb3N0UmVjb3JkOjpSZXF1ZXN0
UXVldWUmIHJlcXVlc3RzUGVuZGluZyA9IGhvc3QtPnJlcXVlc3RzUGVuZGluZyhSZXNvdXJjZUxv
YWRQcmlvcml0eShwcmlvcml0eSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy91bml4L1BsdWdpblByb2Nlc3NNYWluVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcAppbmRleCBlMjVmMDY3
NGU4YWQ2M2ZiZDY0NDMzODMyOThhODI0YmVhMTYzNjQxLi5jYzFhYzA5NmVjYTVjMjU5ZTM4ZTIw
NGJhMjEzOGZmMDA1YzIzZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL3VuaXgvUGx1Z2luUHJvY2Vzc01haW5Vbml4LmNwcApAQCAtNjIsNyArNjIs
NyBAQCBzdGF0aWMgaW50IHdlYmtpdFhFcnJvcihEaXNwbGF5KiB4ZGlzcGxheSwgWEVycm9yRXZl
bnQqIGVycm9yKQogICAgIGNoYXIgZXJyb3JNZXNzYWdlWzY0XTsKICAgICBYR2V0RXJyb3JUZXh0
KHhkaXNwbGF5LCBlcnJvci0+ZXJyb3JfY29kZSwgZXJyb3JNZXNzYWdlLCA2Myk7CiAKLSAgICBM
T0coUGx1Z2lucywgeEVycm9yU3RyaW5nLAorICAgIExPR19JTkZPKFBsdWdpbnMsIHhFcnJvclN0
cmluZywKICAgICAgICAgcHJvZ3JhbU5hbWUsIGVycm9yTWVzc2FnZSwKICAgICAgICAgZXJyb3It
PnNlcmlhbCwgZXJyb3ItPmVycm9yX2NvZGUsCiAgICAgICAgIGVycm9yLT5yZXF1ZXN0X2NvZGUs
IGVycm9yLT5taW5vcl9jb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9tYWMvV0tQcmludGluZ1ZpZXcubW0KaW5kZXggMGY1M2Y5OWU5YzBmMjNmYTMwNjY2ZjhjYTZm
NDliMGI0NTNjNzIyNi4uNmU1NjEyYWIwNTYxNWI3Y2Y4OTNjMDhiNWY4NDFiMWZkNjc4Y2U0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1Zp
ZXcubW0KQEAgLTI3Niw3ICsyNzYsNyBAQCAtICh2b2lkKV9wcmVwYXJlUERGRGF0YUZvclByaW50
aW5nT25TZWNvbmRhcnlUaHJlYWQKIAogICAgIEFTU0VSVChmaXJzdFBhZ2UgPiAwKTsKICAgICBB
U1NFUlQoZmlyc3RQYWdlIDw9IGxhc3RQYWdlKTsKLSAgICBMT0coVmlldywgIldLUHJpbnRpbmdW
aWV3IHJlcXVlc3RpbmcgUERGIGRhdGEgZm9yIHBhZ2VzICV1Li4uJXUiLCBmaXJzdFBhZ2UsIGxh
c3RQYWdlKTsKKyAgICBMT0dfSU5GTyhWaWV3LCAiV0tQcmludGluZ1ZpZXcgcmVxdWVzdGluZyBQ
REYgZGF0YSBmb3IgcGFnZXMgJXUuLi4ldSIsIGZpcnN0UGFnZSwgbGFzdFBhZ2UpOwogCiAgICAg
UHJpbnRJbmZvIHByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50SW5mb10pOwogICAgIC8v
IFJldHVybiB0byBwcmludGluZyBtb2RlIGlmIHdlJ3JlIGFscmVhZHkgYmFjayB0byBzY3JlZW4g
KGUuZy4gZHVlIHRvIHdpbmRvdyByZXNpemluZykuCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGlj
IHZvaWQgcGFnZURpZENvbXB1dGVQYWdlUmVjdHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+JiBwYWdlUmVjdHMsIGQKICAgICAgICAgTlNSZWN0IG5ld0ZyYW1lU2l6ZSA9IE5TTWFrZVJl
Y3QoMCwgMCwgCiAgICAgICAgICAgICBjZWlsKGxhc3RQcmludGluZ1BhZ2VSZWN0Lm1heFgoKSAq
IHZpZXctPl90b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcpLCAKICAgICAgICAgICAgIGNlaWwo
bGFzdFByaW50aW5nUGFnZVJlY3QubWF4WSgpICogdmlldy0+X3RvdGFsU2NhbGVGYWN0b3JGb3JQ
cmludGluZykpOwotICAgICAgICBMT0coVmlldywgIldLUHJpbnRpbmdWaWV3IHNldHRpbmcgZnJh
bWUgc2l6ZSB0byB4OiVnIHk6JWcgd2lkdGg6JWcgaGVpZ2h0OiVnIiwgbmV3RnJhbWVTaXplLm9y
aWdpbi54LCBuZXdGcmFtZVNpemUub3JpZ2luLnksIG5ld0ZyYW1lU2l6ZS5zaXplLndpZHRoLCBu
ZXdGcmFtZVNpemUuc2l6ZS5oZWlnaHQpOworICAgICAgICBMT0dfSU5GTyhWaWV3LCAiV0tQcmlu
dGluZ1ZpZXcgc2V0dGluZyBmcmFtZSBzaXplIHRvIHg6JWcgeTolZyB3aWR0aDolZyBoZWlnaHQ6
JWciLCBuZXdGcmFtZVNpemUub3JpZ2luLngsIG5ld0ZyYW1lU2l6ZS5vcmlnaW4ueSwgbmV3RnJh
bWVTaXplLnNpemUud2lkdGgsIG5ld0ZyYW1lU2l6ZS5zaXplLmhlaWdodCk7CiAgICAgICAgIFt2
aWV3IHNldEZyYW1lOm5ld0ZyYW1lU2l6ZV07CiAKICAgICAgICAgaWYgKFt2aWV3IF9pc1ByaW50
aW5nUHJldmlld10pIHsKQEAgLTM3NSw3ICszNzUsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlRGF0
YUZvclByaW50aW5nT25TZWNvbmRhcnlUaHJlYWQodm9pZCogdW50eXBlZENvbnRleHQpCiAKIC0g
KEJPT0wpa25vd3NQYWdlUmFuZ2U6KE5TUmFuZ2VQb2ludGVyKXJhbmdlCiB7Ci0gICAgTE9HKFZp
ZXcsICItW1dLUHJpbnRpbmdWaWV3ICVwIGtub3dzUGFnZVJhbmdlOl0sICVzLCAlcyIsIHNlbGYs
IFtzZWxmIF9oYXNQYWdlUmVjdHNdID8gInByaW50IGRhdGEgaXMgYXZhaWxhYmxlIiA6ICJwcmlu
dCBkYXRhIGlzIG5vdCBhdmFpbGFibGUgeWV0IiwgaXNNYWluVGhyZWFkKCkgPyAib24gbWFpbiB0
aHJlYWQiIDogIm9uIHNlY29uZGFyeSB0aHJlYWQiKTsKKyAgICBMT0dfSU5GTyhWaWV3LCAiLVtX
S1ByaW50aW5nVmlldyAlcCBrbm93c1BhZ2VSYW5nZTpdLCAlcywgJXMiLCBzZWxmLCBbc2VsZiBf
aGFzUGFnZVJlY3RzXSA/ICJwcmludCBkYXRhIGlzIGF2YWlsYWJsZSIgOiAicHJpbnQgZGF0YSBp
cyBub3QgYXZhaWxhYmxlIHlldCIsIGlzTWFpblRocmVhZCgpID8gIm9uIG1haW4gdGhyZWFkIiA6
ICJvbiBzZWNvbmRhcnkgdGhyZWFkIik7CiAgICAgQVNTRVJUKF9wcmludE9wZXJhdGlvbiA9PSBb
TlNQcmludE9wZXJhdGlvbiBjdXJyZW50T3BlcmF0aW9uXSk7CiAKICAgICAvLyBBc3N1bWluZyB0
aGF0IG9uY2Ugd2Ugc3dpdGNoIHRvIHByaW50aW5nIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLCB3
ZSBkb24ndCBnbyBiYWNrLgpAQCAtNTI1LDcgKzUyNSw3IEBAIC0gKHZvaWQpX2RyYXdQcmV2aWV3
OihOU1JlY3QpbnNSZWN0CiAKIC0gKHZvaWQpZHJhd1JlY3Q6KE5TUmVjdCluc1JlY3QKIHsKLSAg
ICBMT0coVmlldywgIldLUHJpbnRpbmdWaWV3ICVwIHByaW50aW5nIHJlY3QgeDolZywgeTolZywg
d2lkdGg6JWcsIGhlaWdodDolZyVzIiwgc2VsZiwgbnNSZWN0Lm9yaWdpbi54LCBuc1JlY3Qub3Jp
Z2luLnksIG5zUmVjdC5zaXplLndpZHRoLCBuc1JlY3Quc2l6ZS5oZWlnaHQsIFtzZWxmIF9pc1By
aW50aW5nUHJldmlld10gPyAiIGZvciBwcmV2aWV3IiA6ICIiKTsKKyAgICBMT0dfSU5GTyhWaWV3
LCAiV0tQcmludGluZ1ZpZXcgJXAgcHJpbnRpbmcgcmVjdCB4OiVnLCB5OiVnLCB3aWR0aDolZywg
aGVpZ2h0OiVnJXMiLCBzZWxmLCBuc1JlY3Qub3JpZ2luLngsIG5zUmVjdC5vcmlnaW4ueSwgbnNS
ZWN0LnNpemUud2lkdGgsIG5zUmVjdC5zaXplLmhlaWdodCwgW3NlbGYgX2lzUHJpbnRpbmdQcmV2
aWV3XSA/ICIgZm9yIHByZXZpZXciIDogIiIpOwogCiAgICAgQVNTRVJUKF9wcmludE9wZXJhdGlv
biA9PSBbTlNQcmludE9wZXJhdGlvbiBjdXJyZW50T3BlcmF0aW9uXSk7CiAKQEAgLTYwOSw3ICs2
MDksNyBAQCAtIChOU1JlY3QpcmVjdEZvclBhZ2U6KE5TSW50ZWdlcilwYWdlCiB7CiAgICAgQVNT
RVJUKF9wcmludE9wZXJhdGlvbiA9PSBbTlNQcmludE9wZXJhdGlvbiBjdXJyZW50T3BlcmF0aW9u
XSk7CiAgICAgaWYgKCFbc2VsZiBfaGFzUGFnZVJlY3RzXSkgewotICAgICAgICBMT0coVmlldywg
Ii1bV0tQcmludGluZ1ZpZXcgJXAgcmVjdEZvclBhZ2U6JWRdIC0gZGF0YSBpcyBub3QgeWV0IGF2
YWlsYWJsZSIsIHNlbGYsIChpbnQpcGFnZSk7CisgICAgICAgIExPR19JTkZPKFZpZXcsICItW1dL
UHJpbnRpbmdWaWV3ICVwIHJlY3RGb3JQYWdlOiVkXSAtIGRhdGEgaXMgbm90IHlldCBhdmFpbGFi
bGUiLCBzZWxmLCAoaW50KXBhZ2UpOwogICAgICAgICBpZiAoIV93ZWJGcmFtZS0+cGFnZSgpKSB7
CiAgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSBub3QgdG9sZCBBcHBLaXQgaG93IG1hbnkgcGFn
ZXMgdGhlcmUgYXJlLCBzbyBpdCB3aWxsIHRyeSB0byBwcmludCB1bnRpbCBhIG51bGwgcmVjdCBp
cyByZXR1cm5lZC4KICAgICAgICAgICAgIHJldHVybiBOU01ha2VSZWN0KDAsIDAsIDAsIDApOwpA
QCAtNjI4LDcgKzYyOCw3IEBAIC0gKE5TUmVjdClyZWN0Rm9yUGFnZTooTlNJbnRlZ2VyKXBhZ2UK
IAogICAgIEludFJlY3QgcmVjdCA9IF9wcmludGluZ1BhZ2VSZWN0c1twYWdlIC0gMV07CiAgICAg
cmVjdC5zY2FsZShfdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nKTsKLSAgICBMT0coVmlldywg
Ii1bV0tQcmludGluZ1ZpZXcgJXAgcmVjdEZvclBhZ2U6JWRdIC0+IHggJWQsIHkgJWQsIHdpZHRo
ICVkLCBoZWlnaHQgJWQiLCBzZWxmLCAoaW50KXBhZ2UsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVj
dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyAgICBMT0dfSU5GTyhWaWV3LCAiLVtXS1ByaW50
aW5nVmlldyAlcCByZWN0Rm9yUGFnZTolZF0gLT4geCAlZCwgeSAlZCwgd2lkdGggJWQsIGhlaWdo
dCAlZCIsIHNlbGYsIChpbnQpcGFnZSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCks
IHJlY3QuaGVpZ2h0KCkpOwogICAgIHJldHVybiByZWN0OwogfQogCkBAIC02NDcsNyArNjQ3LDcg
QEAgLSAodm9pZCliZWdpbkRvY3VtZW50CiAgICAgaWYgKGlzRm9yY2luZ1ByZXZpZXdVcGRhdGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhWaWV3LCAiLVtXS1ByaW50aW5nVmlldyAlcCBi
ZWdpbkRvY3VtZW50XSIsIHNlbGYpOworICAgIExPR19JTkZPKFZpZXcsICItW1dLUHJpbnRpbmdW
aWV3ICVwIGJlZ2luRG9jdW1lbnRdIiwgc2VsZik7CiAKICAgICBbc3VwZXIgYmVnaW5Eb2N1bWVu
dF07CiAKQEAgLTY2Miw3ICs2NjIsNyBAQCAtICh2b2lkKWVuZERvY3VtZW50CiAgICAgaWYgKGlz
Rm9yY2luZ1ByZXZpZXdVcGRhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhWaWV3LCAi
LVtXS1ByaW50aW5nVmlldyAlcCBlbmREb2N1bWVudF0gLSBjbGVhcmluZyBjYWNoZWQgZGF0YSIs
IHNlbGYpOworICAgIExPR19JTkZPKFZpZXcsICItW1dLUHJpbnRpbmdWaWV3ICVwIGVuZERvY3Vt
ZW50XSAtIGNsZWFyaW5nIGNhY2hlZCBkYXRhIiwgc2VsZik7CiAKICAgICAvLyBCb3RoIGV4aXN0
aW5nIGRhdGEgYW5kIHBlbmRpbmcgcmVzcG9uc2VzIGFyZSBub3cgb2Jzb2xldGUuCiAgICAgX3By
aW50aW5nUGFnZVJlY3RzLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0KaW5kZXggNWZkMTY5Yzg0YzgzODU1ZDAwYjYzMTY4ZTg3YzVhNTQyYWE3MzEy
OS4uYTcwOWE4YjYwZmQ3MzUzZDgyOWVjMzUwMzUxYzNlMjM3YWUzODM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtMTAwOCw3ICsxMDA4LDcgQEAg
LSAodm9pZClfc2V0TW91c2VEb3duRXZlbnQ6KE5TRXZlbnQgKilldmVudAogICAgIC0gKHZvaWQp
U2VsZWN0b3I6KE5TRXZlbnQgKil0aGVFdmVudCBcCiAgICAgeyBcCiAgICAgICAgIGlmIChbW3Nl
bGYgaW5wdXRDb250ZXh0XSBoYW5kbGVFdmVudDp0aGVFdmVudF0pIHsgXAotICAgICAgICAgICAg
TE9HKFRleHRJbnB1dCwgIiVzIHdhcyBoYW5kbGVkIGJ5IHRleHQgaW5wdXQgY29udGV4dCIsIFN0
cmluZygjU2VsZWN0b3IpLnN1YnN0cmluZygwLCBTdHJpbmcoI1NlbGVjdG9yKS5maW5kKCJJbnRl
cm5hbCIpKS5hc2NpaSgpLmRhdGEoKSk7IFwKKyAgICAgICAgICAgIExPR19JTkZPKFRleHRJbnB1
dCwgIiVzIHdhcyBoYW5kbGVkIGJ5IHRleHQgaW5wdXQgY29udGV4dCIsIFN0cmluZygjU2VsZWN0
b3IpLnN1YnN0cmluZygwLCBTdHJpbmcoI1NlbGVjdG9yKS5maW5kKCJJbnRlcm5hbCIpKS5hc2Np
aSgpLmRhdGEoKSk7IFwKICAgICAgICAgICAgIHJldHVybjsgXAogICAgICAgICB9IFwKICAgICAg
ICAgTmF0aXZlV2ViTW91c2VFdmVudCB3ZWJFdmVudCh0aGVFdmVudCwgc2VsZik7IFwKQEAgLTEx
NDUsNyArMTE0NSw3IEBAIC0gKHZvaWQpYmVnaW5HZXN0dXJlV2l0aEV2ZW50OihOU0V2ZW50ICop
ZXZlbnQKIAogLSAodm9pZClkb0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpc2VsZWN0b3IKIHsKLSAg
ICBMT0coVGV4dElucHV0LCAiZG9Db21tYW5kQnlTZWxlY3RvcjpcIiVzXCIiLCBzZWxfZ2V0TmFt
ZShzZWxlY3RvcikpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgImRvQ29tbWFuZEJ5U2VsZWN0
b3I6XCIlc1wiIiwgc2VsX2dldE5hbWUoc2VsZWN0b3IpKTsKIAogICAgIFdLVmlld0ludGVycHJl
dEtleUV2ZW50c1BhcmFtZXRlcnMqIHBhcmFtZXRlcnMgPSBfZGF0YS0+X2ludGVycHJldEtleUV2
ZW50c1BhcmFtZXRlcnM7CiAgICAgaWYgKHBhcmFtZXRlcnMpCkBAIC0xMTc5LDkgKzExNzksOSBA
QCAtICh2b2lkKWluc2VydFRleHQ6KGlkKXN0cmluZyByZXBsYWNlbWVudFJhbmdlOihOU1Jhbmdl
KXJlcGxhY2VtZW50UmFuZ2UKICAgICBBU1NFUlQoaXNBdHRyaWJ1dGVkU3RyaW5nIHx8IFtzdHJp
bmcgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAKICAgICBpZiAocmVwbGFjZW1l
bnRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kKQotICAgICAgICBMT0coVGV4dElucHV0LCAi
aW5zZXJ0VGV4dDpcIiVAXCIgcmVwbGFjZW1lbnRSYW5nZTooJXUsICV1KSIsIGlzQXR0cmlidXRl
ZFN0cmluZyA/IFtzdHJpbmcgc3RyaW5nXSA6IHN0cmluZywgcmVwbGFjZW1lbnRSYW5nZS5sb2Nh
dGlvbiwgcmVwbGFjZW1lbnRSYW5nZS5sZW5ndGgpOworICAgICAgICBMT0dfSU5GTyhUZXh0SW5w
dXQsICJpbnNlcnRUZXh0OlwiJUBcIiByZXBsYWNlbWVudFJhbmdlOigldSwgJXUpIiwgaXNBdHRy
aWJ1dGVkU3RyaW5nID8gW3N0cmluZyBzdHJpbmddIDogc3RyaW5nLCByZXBsYWNlbWVudFJhbmdl
LmxvY2F0aW9uLCByZXBsYWNlbWVudFJhbmdlLmxlbmd0aCk7CiAgICAgZWxzZQotICAgICAgICBM
T0coVGV4dElucHV0LCAiaW5zZXJ0VGV4dDpcIiVAXCIiLCBpc0F0dHJpYnV0ZWRTdHJpbmcgPyBb
c3RyaW5nIHN0cmluZ10gOiBzdHJpbmcpOworICAgICAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICJp
bnNlcnRUZXh0OlwiJUBcIiIsIGlzQXR0cmlidXRlZFN0cmluZyA/IFtzdHJpbmcgc3RyaW5nXSA6
IHN0cmluZyk7CiAgICAgV0tWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyogcGFyYW1l
dGVycyA9IF9kYXRhLT5faW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVyczsKICAgICBpZiAocGFy
YW1ldGVycykKICAgICAgICAgcGFyYW1ldGVycy0+Y29uc3VtZWRCeUlNID0gZmFsc2U7CkBAIC0x
Mjc5LDcgKzEyNzksNyBAQCAtIChCT09MKXBlcmZvcm1LZXlFcXVpdmFsZW50OihOU0V2ZW50ICop
ZXZlbnQKIAogLSAodm9pZClrZXlVcDooTlNFdmVudCAqKXRoZUV2ZW50CiB7Ci0gICAgTE9HKFRl
eHRJbnB1dCwgImtleVVwOiVwICVAIiwgdGhlRXZlbnQsIHRoZUV2ZW50KTsKKyAgICBMT0dfSU5G
TyhUZXh0SW5wdXQsICJrZXlVcDolcCAlQCIsIHRoZUV2ZW50LCB0aGVFdmVudCk7CiAgICAgX2Rh
dGEtPl9wYWdlLT5oYW5kbGVLZXlib2FyZEV2ZW50KE5hdGl2ZVdlYktleWJvYXJkRXZlbnQodGhl
RXZlbnQsIHNlbGYpKTsKIH0KIApAQCAtMTMzNCw3ICsxMzM0LDcgQEAgLSAoQk9PTClfdHJ5SGFu
ZGxlUGx1Z2luQ29tcGxleFRleHRJbnB1dEtleURvd246KE5TRXZlbnQgKilldmVudAogCiAtICh2
b2lkKWtleURvd246KE5TRXZlbnQgKil0aGVFdmVudAogewotICAgIExPRyhUZXh0SW5wdXQsICJr
ZXlEb3duOiVwICVAJXMiLCB0aGVFdmVudCwgdGhlRXZlbnQsICh0aGVFdmVudCA9PSBfZGF0YS0+
X2tleURvd25FdmVudEJlaW5nUmVzZW50KSA/ICIgKHJlLXNlbnQpIiA6ICIiKTsKKyAgICBMT0df
SU5GTyhUZXh0SW5wdXQsICJrZXlEb3duOiVwICVAJXMiLCB0aGVFdmVudCwgdGhlRXZlbnQsICh0
aGVFdmVudCA9PSBfZGF0YS0+X2tleURvd25FdmVudEJlaW5nUmVzZW50KSA/ICIgKHJlLXNlbnQp
IiA6ICIiKTsKIAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCByZXNwb25kaW5nIHRvIHRo
aXMgZXZlbnQgd2lsbCBydW4gYSBuZXN0ZWQgZXZlbnQgbG9vcCwgYW5kCiAgICAgLy8gZmV0Y2hp
bmcgYSBuZXcgZXZlbnQgbWlnaHQgcmVsZWFzZSB0aGUgb2xkIG9uZS4gUmV0YWluaW5nIGFuZCB0
aGVuIGF1dG9yZWxlYXNpbmcKQEAgLTEzNDIsNyArMTM0Miw3IEBAIC0gKHZvaWQpa2V5RG93bjoo
TlNFdmVudCAqKXRoZUV2ZW50CiAgICAgW1t0aGVFdmVudCByZXRhaW5dIGF1dG9yZWxlYXNlXTsK
IAogICAgIGlmIChbc2VsZiBfdHJ5SGFuZGxlUGx1Z2luQ29tcGxleFRleHRJbnB1dEtleURvd246
dGhlRXZlbnRdKSB7Ci0gICAgICAgIExPRyhUZXh0SW5wdXQsICIuLi5oYW5kbGVkIGJ5IHBsdWct
aW4iKTsKKyAgICAgICAgTE9HX0lORk8oVGV4dElucHV0LCAiLi4uaGFuZGxlZCBieSBwbHVnLWlu
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNTksNyArMTM1OSw3IEBAIC0gKHZv
aWQpa2V5RG93bjooTlNFdmVudCAqKXRoZUV2ZW50CiAKIC0gKHZvaWQpZmxhZ3NDaGFuZ2VkOihO
U0V2ZW50ICopdGhlRXZlbnQKIHsKLSAgICBMT0coVGV4dElucHV0LCAiZmxhZ3NDaGFuZ2VkOiVw
ICVAIiwgdGhlRXZlbnQsIHRoZUV2ZW50KTsKKyAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICJmbGFn
c0NoYW5nZWQ6JXAgJUAiLCB0aGVFdmVudCwgdGhlRXZlbnQpOwogCiAgICAgLy8gVGhlcmUncyBh
IGNoYW5jZSB0aGF0IHJlc3BvbmRpbmcgdG8gdGhpcyBldmVudCB3aWxsIHJ1biBhIG5lc3RlZCBl
dmVudCBsb29wLCBhbmQKICAgICAvLyBmZXRjaGluZyBhIG5ldyBldmVudCBtaWdodCByZWxlYXNl
IHRoZSBvbGQgb25lLiBSZXRhaW5pbmcgYW5kIHRoZW4gYXV0b3JlbGVhc2luZwpAQCAtMTM4Niwx
NCArMTM4NiwxNCBAQCAtICh2b2lkKV9leGVjdXRlU2F2ZWRLZXlwcmVzc0NvbW1hbmRzCiAgICAg
aWYgKHBhcmFtZXRlcnMtPmV4ZWN1dGluZ1NhdmVkS2V5cHJlc3NDb21tYW5kcykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgTE9HKFRleHRJbnB1dCwgIkV4ZWN1dGluZyAldSBzYXZlZCBrZXlwcmVz
cyBjb21tYW5kcy4uLiIsIHBhcmFtZXRlcnMtPmNvbW1hbmRzLT5zaXplKCkpOworICAgIExPR19J
TkZPKFRleHRJbnB1dCwgIkV4ZWN1dGluZyAldSBzYXZlZCBrZXlwcmVzcyBjb21tYW5kcy4uLiIs
IHBhcmFtZXRlcnMtPmNvbW1hbmRzLT5zaXplKCkpOwogCiAgICAgcGFyYW1ldGVycy0+ZXhlY3V0
aW5nU2F2ZWRLZXlwcmVzc0NvbW1hbmRzID0gdHJ1ZTsKICAgICBwYXJhbWV0ZXJzLT5ldmVudElu
dGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHMgfD0gX2RhdGEtPl9wYWdlLT5leGVjdXRlS2V5cHJl
c3NDb21tYW5kcygqcGFyYW1ldGVycy0+Y29tbWFuZHMpOwogICAgIHBhcmFtZXRlcnMtPmNvbW1h
bmRzLT5jbGVhcigpOwogICAgIHBhcmFtZXRlcnMtPmV4ZWN1dGluZ1NhdmVkS2V5cHJlc3NDb21t
YW5kcyA9IGZhbHNlOwogCi0gICAgTE9HKFRleHRJbnB1dCwgIi4uLmRvbmUgZXhlY3V0aW5nIHNh
dmVkIGtleXByZXNzIGNvbW1hbmRzLiIpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgIi4uLmRv
bmUgZXhlY3V0aW5nIHNhdmVkIGtleXByZXNzIGNvbW1hbmRzLiIpOwogfQogCiAtICh2b2lkKV9u
b3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uCkBAIC0xNDA0LDcgKzE0
MDQsNyBAQCAtICh2b2lkKV9ub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0
aW9uCiAgICAgaWYgKCFbW3NlbGYgd2luZG93XSBpc0tleVdpbmRvd10gfHwgc2VsZiAhPSBbW3Nl
bGYgd2luZG93XSBmaXJzdFJlc3BvbmRlcl0pCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhU
ZXh0SW5wdXQsICItPiBkaXNjYXJkTWFya2VkVGV4dCIpOworICAgIExPR19JTkZPKFRleHRJbnB1
dCwgIi0+IGRpc2NhcmRNYXJrZWRUZXh0Iik7CiAgICAgW1tzdXBlciBpbnB1dENvbnRleHRdIGRp
c2NhcmRNYXJrZWRUZXh0XTsgLy8gSW5mb3JtIHRoZSBpbnB1dCBtZXRob2QgdGhhdCB3ZSB3b24n
dCBoYXZlIGFuIGlubGluZSBpbnB1dCBhcmVhIGRlc3BpdGUgaGF2aW5nIGJlZW4gYXNrZWQgdG8u
CiB9CiAKQEAgLTE0MzIsOSArMTQzMiw5IEBAIC0gKE5TUmFuZ2Upc2VsZWN0ZWRSYW5nZQogCiAg
ICAgTlNSYW5nZSByZXN1bHQgPSBOU01ha2VSYW5nZShzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9u
TGVuZ3RoKTsKICAgICBpZiAocmVzdWx0LmxvY2F0aW9uID09IE5TTm90Rm91bmQpCi0gICAgICAg
IExPRyhUZXh0SW5wdXQsICJzZWxlY3RlZFJhbmdlIC0+IChOU05vdEZvdW5kLCAldSkiLCByZXN1
bHQubGVuZ3RoKTsKKyAgICAgICAgTE9HX0lORk8oVGV4dElucHV0LCAic2VsZWN0ZWRSYW5nZSAt
PiAoTlNOb3RGb3VuZCwgJXUpIiwgcmVzdWx0Lmxlbmd0aCk7CiAgICAgZWxzZQotICAgICAgICBM
T0coVGV4dElucHV0LCAic2VsZWN0ZWRSYW5nZSAtPiAoJXUsICV1KSIsIHJlc3VsdC5sb2NhdGlv
biwgcmVzdWx0Lmxlbmd0aCk7CisgICAgICAgIExPR19JTkZPKFRleHRJbnB1dCwgInNlbGVjdGVk
UmFuZ2UgLT4gKCV1LCAldSkiLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE0NTgsNyArMTQ1OCw3IEBAIC0gKEJPT0wpaGFzTWFy
a2VkVGV4dAogICAgICAgICByZXN1bHQgPSBsb2NhdGlvbiAhPSBOU05vdEZvdW5kOwogICAgIH0K
IAotICAgIExPRyhUZXh0SW5wdXQsICJoYXNNYXJrZWRUZXh0IC0+ICV1IiwgcmVzdWx0KTsKKyAg
ICBMT0dfSU5GTyhUZXh0SW5wdXQsICJoYXNNYXJrZWRUZXh0IC0+ICV1IiwgcmVzdWx0KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNDY2LDcgKzE0NjYsNyBAQCAtICh2b2lkKXVubWFy
a1RleHQKIHsKICAgICBbc2VsZiBfZXhlY3V0ZVNhdmVkS2V5cHJlc3NDb21tYW5kc107CiAKLSAg
ICBMT0coVGV4dElucHV0LCAidW5tYXJrVGV4dCIpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwg
InVubWFya1RleHQiKTsKIAogICAgIC8vIFVzZSBwb2ludGVyIHRvIGdldCBwYXJhbWV0ZXJzIHBh
c3NlZCB0byB1cyBieSB0aGUgY2FsbGVyIG9mIGludGVycHJldEtleUV2ZW50cy4KICAgICBXS1Zp
ZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzID0gX2RhdGEtPl9pbnRl
cnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzOwpAQCAtMTQ5Nyw3ICsxNDk3LDcgQEAgLSAoTlNBcnJh
eSAqKXZhbGlkQXR0cmlidXRlc0Zvck1hcmtlZFRleHQKICAgICAgICAgLy8gICAgIE5TQmFja2dy
b3VuZENvbG9yQXR0cmlidXRlTmFtZSwgTlNMYW5ndWFnZUF0dHJpYnV0ZU5hbWUuCiAgICAgICAg
IENGUmV0YWluKHZhbGlkQXR0cmlidXRlcyk7CiAgICAgfQotICAgIExPRyhUZXh0SW5wdXQsICJ2
YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0IC0+ICguLi4pIik7CisgICAgTE9HX0lORk8oVGV4
dElucHV0LCAidmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCAtPiAoLi4uKSIpOwogICAgIHJl
dHVybiB2YWxpZEF0dHJpYnV0ZXM7CiB9CiAKQEAgLTE1MjgsNyArMTUyOCw3IEBAIC0gKHZvaWQp
c2V0TWFya2VkVGV4dDooaWQpc3RyaW5nIHNlbGVjdGVkUmFuZ2U6KE5TUmFuZ2UpbmV3U2VsUmFu
Z2UgcmVwbGFjZW1lbnRSCiAgICAgQk9PTCBpc0F0dHJpYnV0ZWRTdHJpbmcgPSBbc3RyaW5nIGlz
S2luZE9mQ2xhc3M6W05TQXR0cmlidXRlZFN0cmluZyBjbGFzc11dOwogICAgIEFTU0VSVChpc0F0
dHJpYnV0ZWRTdHJpbmcgfHwgW3N0cmluZyBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KTsKIAotICAgIExPRyhUZXh0SW5wdXQsICJzZXRNYXJrZWRUZXh0OlwiJUBcIiBzZWxlY3RlZFJh
bmdlOigldSwgJXUpIiwgaXNBdHRyaWJ1dGVkU3RyaW5nID8gW3N0cmluZyBzdHJpbmddIDogc3Ry
aW5nLCBuZXdTZWxSYW5nZS5sb2NhdGlvbiwgbmV3U2VsUmFuZ2UubGVuZ3RoKTsKKyAgICBMT0df
SU5GTyhUZXh0SW5wdXQsICJzZXRNYXJrZWRUZXh0OlwiJUBcIiBzZWxlY3RlZFJhbmdlOigldSwg
JXUpIiwgaXNBdHRyaWJ1dGVkU3RyaW5nID8gW3N0cmluZyBzdHJpbmddIDogc3RyaW5nLCBuZXdT
ZWxSYW5nZS5sb2NhdGlvbiwgbmV3U2VsUmFuZ2UubGVuZ3RoKTsKIAogICAgIC8vIFVzZSBwb2lu
dGVyIHRvIGdldCBwYXJhbWV0ZXJzIHBhc3NlZCB0byB1cyBieSB0aGUgY2FsbGVyIG9mIGludGVy
cHJldEtleUV2ZW50cy4KICAgICBXS1ZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzID0gX2RhdGEtPl9pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzOwpAQCAtMTU3
MSw3ICsxNTcxLDcgQEAgLSAoTlNSYW5nZSltYXJrZWRSYW5nZQogICAgIHVpbnQ2NF90IGxlbmd0
aDsKICAgICBfZGF0YS0+X3BhZ2UtPmdldE1hcmtlZFJhbmdlKGxvY2F0aW9uLCBsZW5ndGgpOwog
Ci0gICAgTE9HKFRleHRJbnB1dCwgIm1hcmtlZFJhbmdlIC0+ICgldSwgJXUpIiwgbG9jYXRpb24s
IGxlbmd0aCk7CisgICAgTE9HX0lORk8oVGV4dElucHV0LCAibWFya2VkUmFuZ2UgLT4gKCV1LCAl
dSkiLCBsb2NhdGlvbiwgbGVuZ3RoKTsKICAgICByZXR1cm4gTlNNYWtlUmFuZ2UobG9jYXRpb24s
IGxlbmd0aCk7CiB9CiAKQEAgLTE1ODAsNyArMTU4MCw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmlu
ZyAqKWF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlOihOU1JhbmdlKW5zUmFuZ2Ug
YWN0CiAgICAgW3NlbGYgX2V4ZWN1dGVTYXZlZEtleXByZXNzQ29tbWFuZHNdOwogCiAgICAgaWYg
KCFfZGF0YS0+X3BhZ2UtPmVkaXRvclN0YXRlKCkuaXNDb250ZW50RWRpdGFibGUpIHsKLSAgICAg
ICAgTE9HKFRleHRJbnB1dCwgImF0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2U6KCV1LCAldSkg
LT4gbmlsIiwgbnNSYW5nZS5sb2NhdGlvbiwgbnNSYW5nZS5sZW5ndGgpOworICAgICAgICBMT0df
SU5GTyhUZXh0SW5wdXQsICJhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOigldSwgJXUpIC0+
IG5pbCIsIG5zUmFuZ2UubG9jYXRpb24sIG5zUmFuZ2UubGVuZ3RoKTsKICAgICAgICAgcmV0dXJu
IG5pbDsKICAgICB9CiAKQEAgLTE1OTUsNyArMTU5NSw3IEBAIC0gKE5TQXR0cmlidXRlZFN0cmlu
ZyAqKWF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlOihOU1JhbmdlKW5zUmFuZ2Ug
YWN0CiAgICAgICAgIGFjdHVhbFJhbmdlLT5sZW5ndGggPSBbcmVzdWx0LnN0cmluZy5nZXQoKSBs
ZW5ndGhdOwogICAgIH0KIAotICAgIExPRyhUZXh0SW5wdXQsICJhdHRyaWJ1dGVkU3Vic3RyaW5n
RnJvbVJhbmdlOigldSwgJXUpIC0+IFwiJUBcIiIsIG5zUmFuZ2UubG9jYXRpb24sIG5zUmFuZ2Uu
bGVuZ3RoLCBbcmVzdWx0LnN0cmluZy5nZXQoKSBzdHJpbmddKTsKKyAgICBMT0dfSU5GTyhUZXh0
SW5wdXQsICJhdHRyaWJ1dGVkU3Vic3RyaW5nRnJvbVJhbmdlOigldSwgJXUpIC0+IFwiJUBcIiIs
IG5zUmFuZ2UubG9jYXRpb24sIG5zUmFuZ2UubGVuZ3RoLCBbcmVzdWx0LnN0cmluZy5nZXQoKSBz
dHJpbmddKTsKICAgICByZXR1cm4gW1tyZXN1bHQuc3RyaW5nLmdldCgpIHJldGFpbl0gYXV0b3Jl
bGVhc2VdOwogfQogCkBAIC0xNjEwLDcgKzE2MTAsNyBAQCAtIChOU1VJbnRlZ2VyKWNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnQ6KE5TUG9pbnQpdGhlUG9pbnQKICAgICB0aGVQb2ludCA9IFtzZWxmIGNv
bnZlcnRQb2ludDp0aGVQb2ludCBmcm9tVmlldzpuaWxdOyAgLy8gdGhlIHBvaW50IGlzIHJlbGF0
aXZlIHRvIHRoZSBtYWluIGZyYW1lIAogICAgIAogICAgIHVpbnQ2NF90IHJlc3VsdCA9IF9kYXRh
LT5fcGFnZS0+Y2hhcmFjdGVySW5kZXhGb3JQb2ludChJbnRQb2ludCh0aGVQb2ludCkpOwotICAg
IExPRyhUZXh0SW5wdXQsICJjaGFyYWN0ZXJJbmRleEZvclBvaW50OiglZiwgJWYpIC0+ICV1Iiwg
dGhlUG9pbnQueCwgdGhlUG9pbnQueSwgcmVzdWx0KTsKKyAgICBMT0dfSU5GTyhUZXh0SW5wdXQs
ICJjaGFyYWN0ZXJJbmRleEZvclBvaW50OiglZiwgJWYpIC0+ICV1IiwgdGhlUG9pbnQueCwgdGhl
UG9pbnQueSwgcmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNjM2LDcgKzE2
MzYsNyBAQCAtIChOU1JlY3QpZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6KE5TUmFuZ2UpdGhl
UmFuZ2UgYWN0dWFsUmFuZ2U6KE5TUmFuZ2VQb2ludAogICAgICAgICAqYWN0dWFsUmFuZ2UgPSB0
aGVSYW5nZTsKICAgICB9CiAKLSAgICBMT0coVGV4dElucHV0LCAiZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2U6KCV1LCAldSkgLT4gKCVmLCAlZiwgJWYsICVmKSIsIHRoZVJhbmdlLmxvY2F0aW9u
LCB0aGVSYW5nZS5sZW5ndGgsIHJlc3VsdFJlY3Qub3JpZ2luLngsIHJlc3VsdFJlY3Qub3JpZ2lu
LnksIHJlc3VsdFJlY3Quc2l6ZS53aWR0aCwgcmVzdWx0UmVjdC5zaXplLmhlaWdodCk7CisgICAg
TE9HX0lORk8oVGV4dElucHV0LCAiZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2U6KCV1LCAldSkg
LT4gKCVmLCAlZiwgJWYsICVmKSIsIHRoZVJhbmdlLmxvY2F0aW9uLCB0aGVSYW5nZS5sZW5ndGgs
IHJlc3VsdFJlY3Qub3JpZ2luLngsIHJlc3VsdFJlY3Qub3JpZ2luLnksIHJlc3VsdFJlY3Quc2l6
ZS53aWR0aCwgcmVzdWx0UmVjdC5zaXplLmhlaWdodCk7CiAgICAgcmV0dXJuIHJlc3VsdFJlY3Q7
CiB9CiAKQEAgLTIwNzIsNyArMjA3Miw3IEBAIHN0YXRpYyB2b2lkIGRyYXdQYWdlQmFja2dyb3Vu
ZChDR0NvbnRleHRSZWYgY29udGV4dCwgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBJCiAKIC0g
KHZvaWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0CiB7Ci0gICAgTE9HKFZpZXcsICJkcmF3UmVjdDog
eDolZywgeTolZywgd2lkdGg6JWcsIGhlaWdodDolZyIsIHJlY3Qub3JpZ2luLngsIHJlY3Qub3Jp
Z2luLnksIHJlY3Quc2l6ZS53aWR0aCwgcmVjdC5zaXplLmhlaWdodCk7CisgICAgTE9HX0lORk8o
VmlldywgImRyYXdSZWN0OiB4OiVnLCB5OiVnLCB3aWR0aDolZywgaGVpZ2h0OiVnIiwgcmVjdC5v
cmlnaW4ueCwgcmVjdC5vcmlnaW4ueSwgcmVjdC5zaXplLndpZHRoLCByZWN0LnNpemUuaGVpZ2h0
KTsKICAgICBfZGF0YS0+X3BhZ2UtPmVuZFByaW50aW5nKCk7CiAKICAgICBpZiAoW3NlbGYgX3No
b3VsZFVzZVRpbGVkRHJhd2luZ0FyZWFdKSB7CkBAIC0yNDA0LDcgKzI0MDQsNyBAQCAtIChCT09M
KV9pbnRlcnByZXRLZXlFdmVudDooTlNFdmVudCAqKWV2ZW50IHNhdmluZ0NvbW1hbmRzVG86KFZl
Y3RvcjxXZWJDb3JlOjpLZQogICAgIHBhcmFtZXRlcnMuY29tbWFuZHMgPSAmY29tbWFuZHM7CiAg
ICAgX2RhdGEtPl9pbnRlcnByZXRLZXlFdmVudHNQYXJhbWV0ZXJzID0gJnBhcmFtZXRlcnM7CiAK
LSAgICBMT0coVGV4dElucHV0LCAiLT4gaW50ZXJwcmV0S2V5RXZlbnRzOiVwICVAIiwgZXZlbnQs
IGV2ZW50KTsKKyAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICItPiBpbnRlcnByZXRLZXlFdmVudHM6
JXAgJUAiLCBldmVudCwgZXZlbnQpOwogICAgIFtzZWxmIGludGVycHJldEtleUV2ZW50czpbTlNB
cnJheSBhcnJheVdpdGhPYmplY3Q6ZXZlbnRdXTsKIAogICAgIF9kYXRhLT5faW50ZXJwcmV0S2V5
RXZlbnRzUGFyYW1ldGVycyA9IDA7CkBAIC0yNDEyLDExICsyNDEyLDExIEBAIC0gKEJPT0wpX2lu
dGVycHJldEtleUV2ZW50OihOU0V2ZW50ICopZXZlbnQgc2F2aW5nQ29tbWFuZHNUbzooVmVjdG9y
PFdlYkNvcmU6OktlCiAgICAgLy8gQW4gaW5wdXQgbWV0aG9kIG1heSBjb25zdW1lIGFuIGV2ZW50
IGFuZCBub3QgdGVsbCB1cyAoZS5nLiB3aGVuIGRpc3BsYXlpbmcgYSBjYW5kaWRhdGUgd2luZG93
KSwKICAgICAvLyBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBub3QgYnViYmxlIHRoZSBldmVudCB1
cCB0aGUgRE9NLgogICAgIGlmIChwYXJhbWV0ZXJzLmNvbnN1bWVkQnlJTSkgewotICAgICAgICBM
T0coVGV4dElucHV0LCAiLi4uZXZlbnQgJXAgd2FzIGNvbnN1bWVkIGJ5IGFuIGlucHV0IG1ldGhv
ZCIsIGV2ZW50KTsKKyAgICAgICAgTE9HX0lORk8oVGV4dElucHV0LCAiLi4uZXZlbnQgJXAgd2Fz
IGNvbnN1bWVkIGJ5IGFuIGlucHV0IG1ldGhvZCIsIGV2ZW50KTsKICAgICAgICAgcmV0dXJuIFlF
UzsKICAgICB9CiAKLSAgICBMT0coVGV4dElucHV0LCAiLi4uaW50ZXJwcmV0S2V5RXZlbnRzIGZv
ciBldmVudCAlcCBkb25lLCByZXR1cm5zICVkIiwgZXZlbnQsIHBhcmFtZXRlcnMuZXZlbnRJbnRl
cnByZXRhdGlvbkhhZFNpZGVFZmZlY3RzKTsKKyAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICIuLi5p
bnRlcnByZXRLZXlFdmVudHMgZm9yIGV2ZW50ICVwIGRvbmUsIHJldHVybnMgJWQiLCBldmVudCwg
cGFyYW1ldGVycy5ldmVudEludGVycHJldGF0aW9uSGFkU2lkZUVmZmVjdHMpOwogCiAgICAgLy8g
SWYgd2UgaGF2ZSBhbHJlYWR5IGV4ZWN1dGVkIGFsbCBvciBzb21lIG9mIHRoZSBjb21tYW5kcywg
dGhlIGV2ZW50IGlzICJoYW5kbGVkIi4gTm90ZSB0aGF0IHRoZXJlIGFyZSBhZGRpdGlvbmFsIGNo
ZWNrcyBvbiB3ZWIgcHJvY2VzcyBzaWRlLgogICAgIHJldHVybiBwYXJhbWV0ZXJzLmV2ZW50SW50
ZXJwcmV0YXRpb25IYWRTaWRlRWZmZWN0czsKQEAgLTI4NjUsMTIgKzI4NjUsMTIgQEAgLSAodm9p
ZClfdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZQogICAgICAgICBpZiAoIV9kYXRhLT5faW5TZWN1cmVJ
bnB1dFN0YXRlKQogICAgICAgICAgICAgRW5hYmxlU2VjdXJlRXZlbnRJbnB1dCgpOwogICAgICAg
ICBzdGF0aWMgTlNBcnJheSAqcm9tYW5JbnB1dFNvdXJjZXMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czomTlNBbGxSb21hbklucHV0U291cmNlc0xvY2FsZUlkZW50aWZpZXIgY291
bnQ6MV07Ci0gICAgICAgIExPRyhUZXh0SW5wdXQsICItPiBzZXRBbGxvd2VkSW5wdXRTb3VyY2VM
b2NhbGVzOnJvbWFuSW5wdXRTb3VyY2VzIik7CisgICAgICAgIExPR19JTkZPKFRleHRJbnB1dCwg
Ii0+IHNldEFsbG93ZWRJbnB1dFNvdXJjZUxvY2FsZXM6cm9tYW5JbnB1dFNvdXJjZXMiKTsKICAg
ICAgICAgW2NvbnRleHQgc2V0QWxsb3dlZElucHV0U291cmNlTG9jYWxlczpyb21hbklucHV0U291
cmNlc107CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKF9kYXRhLT5faW5TZWN1cmVJbnB1dFN0
YXRlKQogICAgICAgICAgICAgRGlzYWJsZVNlY3VyZUV2ZW50SW5wdXQoKTsKLSAgICAgICAgTE9H
KFRleHRJbnB1dCwgIi0+IHNldEFsbG93ZWRJbnB1dFNvdXJjZUxvY2FsZXM6bmlsIik7CisgICAg
ICAgIExPR19JTkZPKFRleHRJbnB1dCwgIi0+IHNldEFsbG93ZWRJbnB1dFNvdXJjZUxvY2FsZXM6
bmlsIik7CiAgICAgICAgIFtjb250ZXh0IHNldEFsbG93ZWRJbnB1dFNvdXJjZUxvY2FsZXM6bmls
XTsKICAgICB9CiAgICAgX2RhdGEtPl9pblNlY3VyZUlucHV0U3RhdGUgPSBpc0luUGFzc3dvcmRG
aWVsZDsKQEAgLTMwODIsNyArMzA4Miw3IEBAIC0gKEJPT0wpY2FuQ2hhbmdlRnJhbWVMYXlvdXQ6
KFdLRnJhbWVSZWYpZnJhbWVSZWYKIAogLSAoTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0
aW9uV2l0aFByaW50SW5mbzooTlNQcmludEluZm8gKilwcmludEluZm8gZm9yRnJhbWU6KFdLRnJh
bWVSZWYpZnJhbWVSZWYKIHsKLSAgICBMT0coVmlldywgIkNyZWF0aW5nIGFuIE5TUHJpbnRPcGVy
YXRpb24gZm9yIGZyYW1lICclcyciLCB0b0ltcGwoZnJhbWVSZWYpLT51cmwoKS51dGY4KCkuZGF0
YSgpKTsKKyAgICBMT0dfSU5GTyhWaWV3LCAiQ3JlYXRpbmcgYW4gTlNQcmludE9wZXJhdGlvbiBm
b3IgZnJhbWUgJyVzJyIsIHRvSW1wbChmcmFtZVJlZiktPnVybCgpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgLy8gT25seSB0aGUgdG9wIGZyYW1lIGNhbiBjdXJyZW50bHkgY29udGFpbiBhIFBERiB2
aWV3LgogICAgIGlmIChfZGF0YS0+X3BkZlZpZXdDb250cm9sbGVyKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuY3BwCmluZGV4IDY1NTkyMTA4NDVlYmFhMmRi
N2RiMzhlODU3ODAzZDliZjg4YmY2ZjEuLjhhOGEzYWQ2NjE2YWIxMzNmMDJmMDJkYzY4MGNkY2Ni
YmEwYzE5NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0
YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2Uu
Y3BwCkBAIC0xMTYsMTQgKzExNiwxNCBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6cmVsZWFzZUlj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKIAogdm9pZCBXZWJJY29uRGF0YWJh
c2U6OnNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3Ry
aW5nJiBwYWdlVVJMKQogewotICAgIExPRyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIHNl
dHRpbmcgaWNvbiBVUkwgJXMgZm9yIHBhZ2UgVVJMICVzIiwgaWNvblVSTC5hc2NpaSgpLmRhdGEo
KSwgcGFnZVVSTC5hc2NpaSgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oSWNvbkRhdGFiYXNlLCAi
V0syIFVJUHJvY2VzcyBzZXR0aW5nIGljb24gVVJMICVzIGZvciBwYWdlIFVSTCAlcyIsIGljb25V
UkwuYXNjaWkoKS5kYXRhKCksIHBhZ2VVUkwuYXNjaWkoKS5kYXRhKCkpOwogICAgIGlmIChtX2lj
b25EYXRhYmFzZUltcGwpCiAgICAgICAgIG1faWNvbkRhdGFiYXNlSW1wbC0+c2V0SWNvblVSTEZv
clBhZ2VVUkwoaWNvblVSTCwgcGFnZVVSTCk7CiB9CiAKIHZvaWQgV2ViSWNvbkRhdGFiYXNlOjpz
ZXRJY29uRGF0YUZvckljb25VUkwoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgaWNvbkRh
dGEsIGNvbnN0IFN0cmluZyYgaWNvblVSTCkKIHsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0sy
IFVJUHJvY2VzcyBzZXR0aW5nIGljb24gZGF0YSAoJWkgYnl0ZXMpIGZvciBwYWdlIFVSTCAlcyIs
IChpbnQpaWNvbkRhdGEuc2l6ZSgpLCBpY29uVVJMLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBMT0df
SU5GTyhJY29uRGF0YWJhc2UsICJXSzIgVUlQcm9jZXNzIHNldHRpbmcgaWNvbiBkYXRhICglaSBi
eXRlcykgZm9yIHBhZ2UgVVJMICVzIiwgKGludClpY29uRGF0YS5zaXplKCksIGljb25VUkwuYXNj
aWkoKS5kYXRhKCkpOwogICAgIGlmICghbV9pY29uRGF0YWJhc2VJbXBsKQogICAgICAgICByZXR1
cm47CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFdlYkljb25EYXRhYmFzZTo6c3luY2hyb25v
dXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGNvbnN0IFN0cmluZyYsIGludCYgbG9hZAogCiB2b2lk
IFdlYkljb25EYXRhYmFzZTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcm
IGljb25VUkwsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgTE9HKEljb25EYXRhYmFzZSwg
IldLMiBVSVByb2Nlc3MgZ2V0dGluZyBsb2FkIGRlY2lzaW9uIGZvciBpY29uIFVSTCAlcyB3aXRo
IGNhbGxiYWNrIElEICVsbGkiLCBpY29uVVJMLmFzY2lpKCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxs
b25nIGxvbmc+KGNhbGxiYWNrSUQpKTsKKyAgICBMT0dfSU5GTyhJY29uRGF0YWJhc2UsICJXSzIg
VUlQcm9jZXNzIGdldHRpbmcgbG9hZCBkZWNpc2lvbiBmb3IgaWNvbiBVUkwgJXMgd2l0aCBjYWxs
YmFjayBJRCAlbGxpIiwgaWNvblVSTC5hc2NpaSgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihjYWxsYmFja0lEKSk7CiAKICAgICBpZiAoIW1fd2ViQ29udGV4dCkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjY1LDEzICsyNjUsMTMgQEAgdm9pZCBXZWJJY29uRGF0YWJhc2U6OmRpZEZpbmlz
aFVSTEltcG9ydCgpCiAgICAgCiAgICAgQVNTRVJUKCFtX3VybEltcG9ydENvbXBsZXRlZCk7CiAK
LSAgICBMT0coSWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBVUkwgaW1wb3J0IGNvbXBsZXRl
LCBub3RpZnlpbmcgYWxsICVpIHBlbmRpbmcgcGFnZSBVUkwgbG9hZCBkZWNpc2lvbnMiLCBtX3Bl
bmRpbmdMb2FkRGVjaXNpb25VUkxNYXAuc2l6ZSgpKTsKKyAgICBMT0dfSU5GTyhJY29uRGF0YWJh
c2UsICJXSzIgVUlQcm9jZXNzIFVSTCBpbXBvcnQgY29tcGxldGUsIG5vdGlmeWluZyBhbGwgJWkg
cGVuZGluZyBwYWdlIFVSTCBsb2FkIGRlY2lzaW9ucyIsIG1fcGVuZGluZ0xvYWREZWNpc2lvblVS
TE1hcC5zaXplKCkpOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPjo6aXRlcmF0b3Ig
aSA9IG1fcGVuZGluZ0xvYWREZWNpc2lvblVSTE1hcC5iZWdpbigpOwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFN0cmluZz46Oml0ZXJhdG9yIGVuZCA9IG1fcGVuZGluZ0xvYWREZWNpc2lvblVSTE1h
cC5lbmQoKTsKICAgICAKICAgICBmb3IgKDsgaSAhPSBlbmQ7ICsraSkgewotICAgICAgICBMT0co
SWNvbkRhdGFiYXNlLCAiV0syIFVJUHJvY2VzcyBwZXJmb3JtaW5nIGRlbGF5ZWQgY2FsbGJhY2sg
b24gY2FsbGJhY2sgSUQgJWkgZm9yIHBhZ2UgdXJsICVzIiwgKGludClpLT5rZXksIGktPnZhbHVl
LmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0lORk8oSWNvbkRhdGFiYXNlLCAiV0syIFVJ
UHJvY2VzcyBwZXJmb3JtaW5nIGRlbGF5ZWQgY2FsbGJhY2sgb24gY2FsbGJhY2sgSUQgJWkgZm9y
IHBhZ2UgdXJsICVzIiwgKGludClpLT5rZXksIGktPnZhbHVlLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgSWNvbkxvYWREZWNpc2lvbiBkZWNpc2lvbiA9IG1faWNvbkRhdGFiYXNlSW1wbC0+c3lu
Y2hyb25vdXNMb2FkRGVjaXNpb25Gb3JJY29uVVJMKGktPnZhbHVlLCAwKTsKIAogICAgICAgICAv
LyBEZWNpc2lvbnMgc2hvdWxkIG5ldmVyIGJlIHVua25vd24gYWZ0ZXIgdGhlIGluaXRhbCBpbXBv
cnQgaXMgY29tcGxldGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VDb250ZXh0TWVudUNsaWVudC5jcHAKaW5kZXggOGExMWViYjg5ZDQ4MWQyNmI5MzViZDcxNjJm
ZTVmYTFmMDU0ZGJhOS4uYjU5NGVjOWNhZDk3YjJlOGQzZGNhODJkYzZkODBlN2ZjYmZmZGQ3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVudUNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VDb250ZXh0TWVu
dUNsaWVudC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgYm9vbCBXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQ6OmdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXZWJQYWdlUHJveHkqIHBhZ2UKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1NpemU7ICsraSkgewogICAgICAgICBXZWJDb250
ZXh0TWVudUl0ZW0qIGl0ZW0gPSBhcnJheS0+YXQ8V2ViQ29udGV4dE1lbnVJdGVtPihpKTsKICAg
ICAgICAgaWYgKCFpdGVtKSB7Ci0gICAgICAgICAgICBMT0coQ29udGV4dE1lbnUsICJOZXcgbWVu
dSBlbnRyeSBhdCBpbmRleCAlaSBpcyBub3QgYSBXZWJDb250ZXh0TWVudUl0ZW0iLCAoaW50KWkp
OworICAgICAgICAgICAgTE9HX0lORk8oQ29udGV4dE1lbnUsICJOZXcgbWVudSBlbnRyeSBhdCBp
bmRleCAlaSBpcyBub3QgYSBXZWJDb250ZXh0TWVudUl0ZW0iLCAoaW50KWkpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDA3MDQwNTUzYjk3Mzk1OGU1Y2NjZTVkZTJiNjY2OWY0
NWU5OWUwZjUuLjc0YTY1ZmVkMWYwMzM0NGFmZTgxZDA2NDg3NGJlODY3MmQ3Mzg5M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMjAyLDcgKzEyMDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVX
ZWJLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIExPRyhLZXlIYW5kbGluZywgIldlYlBhZ2VQcm94eTo6aGFuZGxlS2V5
Ym9hcmRFdmVudDogJXMiLCB3ZWJLZXlib2FyZEV2ZW50VHlwZVN0cmluZyhldmVudC50eXBlKCkp
KTsKKyAgICBMT0dfSU5GTyhLZXlIYW5kbGluZywgIldlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9h
cmRFdmVudDogJXMiLCB3ZWJLZXlib2FyZEV2ZW50VHlwZVN0cmluZyhldmVudC50eXBlKCkpKTsK
IAogICAgIG1fa2V5RXZlbnRRdWV1ZS5hcHBlbmQoZXZlbnQpOwogCkBAIC0zNDA3LDcgKzM0MDcs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5
cGUsIGJvb2wgaGFuZGxlZCkKICAgICBjYXNlIFdlYkV2ZW50OjpLZXlVcDoKICAgICBjYXNlIFdl
YkV2ZW50OjpSYXdLZXlEb3duOgogICAgIGNhc2UgV2ViRXZlbnQ6OkNoYXI6IHsKLSAgICAgICAg
TE9HKEtleUhhbmRsaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQ6ICVzIiwgd2Vi
S2V5Ym9hcmRFdmVudFR5cGVTdHJpbmcodHlwZSkpOworICAgICAgICBMT0dfSU5GTyhLZXlIYW5k
bGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50OiAlcyIsIHdlYktleWJvYXJkRXZl
bnRUeXBlU3RyaW5nKHR5cGUpKTsKIAogICAgICAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50IGV2
ZW50ID0gbV9rZXlFdmVudFF1ZXVlLmZpcnN0KCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0sodHlw
ZSA9PSBldmVudC50eXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1
NGM1OGFiM2E0OGEyYjRiYy4uMjE0NjJhZDY3ZmQ5YjMzNDhhZjkzNjk1OWEzNWJkZDc1ODg5ZTJl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0Zvcndh
cmRMaXN0Q0YuY3BwCkBAIC04NCw3ICs4NCw3IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9y
d2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94CiAg
ICAgICAgIC8vIElmIHdlIHNvbWVob3cgZW5kZWQgdXAgd2l0aCBhIG51bGwgZW50cnkgdGhlbiB3
ZSBzaG91bGQgY29uc2lkZXIgdGhlIGRhdGEgaW52YWxpZCBhbmQgbm90IHNhdmUgc2Vzc2lvbiBo
aXN0b3J5IGF0IGFsbC4KICAgICAgICAgQVNTRVJUKG1fZW50cmllc1tpXSk7CiAgICAgICAgIGlm
ICghbV9lbnRyaWVzW2ldKSB7Ci0gICAgICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFj
a0ZvcndhcmRMaXN0IGNvbnRhaW5lZCBhIG51bGwgZW50cnkgYXQgaW5kZXggJWx1IiwgaSk7Cisg
ICAgICAgICAgICBMT0dfSU5GTyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgY29u
dGFpbmVkIGEgbnVsbCBlbnRyeSBhdCBpbmRleCAlbHUiLCBpKTsKICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICB9CiAKQEAgLTExMSw3ICsxMTEsNyBAQCBDRkRpY3Rpb25hcnlSZWYgV2Vi
QmFja0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihXZWJQYWdl
UHJveAogICAgICAgICAKICAgICBBU1NFUlQoY3VycmVudEluZGV4ID09IC0xIHx8IChjdXJyZW50
SW5kZXggPiAtMSAmJiBjdXJyZW50SW5kZXggPCBDRkFycmF5R2V0Q291bnQoZW50cmllcy5nZXQo
KSkpKTsKICAgICBpZiAoY3VycmVudEluZGV4IDwgLTEgfHwgY3VycmVudEluZGV4ID49IENGQXJy
YXlHZXRDb3VudChlbnRyaWVzLmdldCgpKSkgewotICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAi
RmlsdGVyaW5nIGVudHJpZXMgdG8gYmUgc2F2ZWQgcmVzdWx0ZWQgaW4gYW4gaW5jb25zaXN0ZW50
IHN0YXRlIHRoYXQgd2UgY2Fubm90IHJlcHJlc2VudCIpOworICAgICAgICBMT0dfSU5GTyhTZXNz
aW9uU3RhdGUsICJGaWx0ZXJpbmcgZW50cmllcyB0byBiZSBzYXZlZCByZXN1bHRlZCBpbiBhbiBp
bmNvbnNpc3RlbnQgc3RhdGUgdGhhdCB3ZSBjYW5ub3QgcmVwcmVzZW50Iik7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KIApAQCAtMTQ2LDIwICsxNDYsMjAgQEAgYm9vbCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OnJlc3RvcmVGcm9tQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oQ0ZEaWN0aW9uYXJ5
UmVmIGQKICAgICB9CiAgICAgCiAgICAgaWYgKENGR2V0VHlwZUlEKGNmVmVyc2lvbikgIT0gQ0ZO
dW1iZXJHZXRUeXBlSUQoKSkgewotICAgICAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2ViQmFja0Zv
cndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gY29udGFpbnMgYSB2ZXJzaW9uIHRo
YXQgaXMgbm90IGEgbnVtYmVyIik7CisgICAgICAgIExPR19JTkZPKFNlc3Npb25TdGF0ZSwgIldl
YkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGNvbnRhaW5zIGEgdmVy
c2lvbiB0aGF0IGlzIG5vdCBhIG51bWJlciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgQ0ZJbmRleCB2ZXJzaW9uOwogICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShjZlZl
cnNpb24sIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmdmVyc2lvbikpIHsKLSAgICAgICAgTE9HKFNl
c3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9u
IGRvZXMgbm90IGhhdmUgYSBjb3JyZWN0bHkgdHlwZWQgY3VycmVudCB2ZXJzaW9uIik7CisgICAg
ICAgIExPR19JTkZPKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5
IHJlcHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUgYSBjb3JyZWN0bHkgdHlwZWQgY3VycmVudCB2
ZXJzaW9uIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCiAgICAgaWYgKHZl
cnNpb24gPT0gMSkKICAgICAgICAgcmV0dXJuIHJlc3RvcmVGcm9tVjFDRkRpY3Rpb25hcnlSZXBy
ZXNlbnRhdGlvbihkaWN0aW9uYXJ5KTsKICAgICAKLSAgICBMT0coU2Vzc2lvblN0YXRlLCAiV2Vi
QmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gaGFzIGFuIGludmFsaWQg
Y3VycmVudCB2ZXJzaW9uICglbGQpIiwgdmVyc2lvbik7CisgICAgTE9HX0lORk8oU2Vzc2lvblN0
YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gaGFzIGFu
IGludmFsaWQgY3VycmVudCB2ZXJzaW9uICglbGQpIiwgdmVyc2lvbik7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCkBAIC0xNjcsMzAgKzE2NywzMCBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6
cmVzdG9yZUZyb21WMENGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZgog
ewogICAgIENGTnVtYmVyUmVmIGNmSW5kZXggPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlDdXJyZW50SW5kZXhLZXkoKSk7CiAgICAg
aWYgKCFjZkluZGV4IHx8IENGR2V0VHlwZUlEKGNmSW5kZXgpICE9IENGTnVtYmVyR2V0VHlwZUlE
KCkpIHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0
aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjdXJyZW50IGluZGV4
Iik7CisgICAgICAgIExPR19JTkZPKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBk
aWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjdXJyZW50IGlu
ZGV4Iik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBDRkluZGV4IGN1cnJl
bnRDRkluZGV4OwogICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShjZkluZGV4LCBrQ0ZOdW1iZXJD
RkluZGV4VHlwZSwgJmN1cnJlbnRDRkluZGV4KSkgewotICAgICAgICBMT0coU2Vzc2lvblN0YXRl
LCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gZG9lcyBub3Qg
aGF2ZSBhIGNvcnJlY3RseSB0eXBlZCBjdXJyZW50IGluZGV4Iik7CisgICAgICAgIExPR19JTkZP
KFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0
aW9uIGRvZXMgbm90IGhhdmUgYSBjb3JyZWN0bHkgdHlwZWQgY3VycmVudCBpbmRleCIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmIChjdXJyZW50Q0ZJbmRleCA8
IC0xKSB7Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGlj
dGlvbmFyeSByZXByZXNlbnRhdGlvbiBjb250YWlucyBhbiB1bmV4cGVjdGVkIG5lZ2F0aXZlIGN1
cnJlbnQgaW5kZXggKCVsZCkiLCBjdXJyZW50Q0ZJbmRleCk7CisgICAgICAgIExPR19JTkZPKFNl
c3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9u
IGNvbnRhaW5zIGFuIHVuZXhwZWN0ZWQgbmVnYXRpdmUgY3VycmVudCBpbmRleCAoJWxkKSIsIGN1
cnJlbnRDRkluZGV4KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIENGQXJy
YXlSZWYgY2ZFbnRyaWVzID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlv
bmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyaWVzS2V5KCkpOwogICAgIGlmICghY2ZFbnRyaWVzIHx8
IENGR2V0VHlwZUlEKGNmRW50cmllcykgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKSB7Ci0gICAgICAg
IExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeSByZXByZXNl
bnRhdGlvbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgbGlzdCBvZiBlbnRyaWVzIik7CisgICAgICAg
IExPR19JTkZPKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJl
cHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBsaXN0IG9mIGVudHJpZXMiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlH
ZXRDb3VudChjZkVudHJpZXMpOwogICAgIGlmIChzaXplIDwgMCB8fCBjdXJyZW50Q0ZJbmRleCA+
PSBzaXplKSB7Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3Qg
ZGljdGlvbmFyeSByZXByZXNlbnRhdGlvbiBjb250YWlucyBhbiBpbnZhbGlkIGN1cnJlbnQgaW5k
ZXggKCVsZCkgZm9yIHRoZSBudW1iZXIgb2YgZW50cmllcyAoJWxkKSIsIGN1cnJlbnRDRkluZGV4
LCBzaXplKTsKKyAgICAgICAgTE9HX0lORk8oU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRM
aXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50YXRpb24gY29udGFpbnMgYW4gaW52YWxpZCBjdXJyZW50
IGluZGV4ICglbGQpIGZvciB0aGUgbnVtYmVyIG9mIGVudHJpZXMgKCVsZCkiLCBjdXJyZW50Q0ZJ
bmRleCwgc2l6ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTE5OCw3ICsx
OTgsNyBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9yZUZyb21WMENGRGljdGlvbmFy
eVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZgogICAgIGJvb2wgaGFzQ3VycmVudEluZGV4
ID0gY3VycmVudENGSW5kZXggIT0gLTE7CiAKICAgICBpZiAoIWhhc0N1cnJlbnRJbmRleCAmJiBz
aXplKSB7Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGlj
dGlvbmFyeSByZXByZXNlbnRhdGlvbiBzYXlzIHRoZXJlIGlzIG5vIGN1cnJlbnQgaW5kZXgsIGJ1
dCB0aGVyZSBpcyBhIGxpc3Qgb2YgJWxkIGVudHJpZXMiLCBzaXplKTsKKyAgICAgICAgTE9HX0lO
Rk8oU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVwcmVzZW50
YXRpb24gc2F5cyB0aGVyZSBpcyBubyBjdXJyZW50IGluZGV4LCBidXQgdGhlcmUgaXMgYSBsaXN0
IG9mICVsZCBlbnRyaWVzIiwgc2l6ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgCkBAIC0yMzAsMzAgKzIzMCwzMCBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlzdDo6cmVzdG9y
ZUZyb21WMUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKENGRGljdGlvbmFyeVJlZgogICAgIH0K
IAogICAgIGlmIChDRkdldFR5cGVJRChjZkluZGV4KSAhPSBDRk51bWJlckdldFR5cGVJRCgpKSB7
Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFy
eSByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY3VycmVudCBpbmRleCIpOwor
ICAgICAgICBMT0dfSU5GTyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlv
bmFyeSByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY3VycmVudCBpbmRleCIp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgQ0ZJbmRleCBjdXJyZW50Q0ZJ
bmRleDsKICAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUoY2ZJbmRleCwga0NGTnVtYmVyQ0ZJbmRl
eFR5cGUsICZjdXJyZW50Q0ZJbmRleCkpIHsKLSAgICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIldl
YkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGRvZXMgbm90IGhhdmUg
YSBjb3JyZWN0bHkgdHlwZWQgY3VycmVudCBpbmRleCIpOworICAgICAgICBMT0dfSU5GTyhTZXNz
aW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeSByZXByZXNlbnRhdGlvbiBk
b2VzIG5vdCBoYXZlIGEgY29ycmVjdGx5IHR5cGVkIGN1cnJlbnQgaW5kZXgiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKICAgICBpZiAoY3VycmVudENGSW5kZXggPCAwKSB7
Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFy
eSByZXByZXNlbnRhdGlvbiBjb250YWlucyBhbiB1bmV4cGVjdGVkIG5lZ2F0aXZlIGN1cnJlbnQg
aW5kZXggKCVsZCkiLCBjdXJyZW50Q0ZJbmRleCk7CisgICAgICAgIExPR19JTkZPKFNlc3Npb25T
dGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2VudGF0aW9uIGNvbnRh
aW5zIGFuIHVuZXhwZWN0ZWQgbmVnYXRpdmUgY3VycmVudCBpbmRleCAoJWxkKSIsIGN1cnJlbnRD
RkluZGV4KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIENGQXJyYXlSZWYg
Y2ZFbnRyaWVzID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGljdGlvbmFyeSwg
U2Vzc2lvbkhpc3RvcnlFbnRyaWVzS2V5KCkpOwogICAgIGlmICghY2ZFbnRyaWVzIHx8IENGR2V0
VHlwZUlEKGNmRW50cmllcykgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKSB7Ci0gICAgICAgIExPRyhT
ZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeSByZXByZXNlbnRhdGlv
biBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgbGlzdCBvZiBlbnRyaWVzIik7CisgICAgICAgIExPR19J
TkZPKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBkaWN0aW9uYXJ5IHJlcHJlc2Vu
dGF0aW9uIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBsaXN0IG9mIGVudHJpZXMiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIENGSW5kZXggc2l6ZSA9IENGQXJyYXlHZXRDb3Vu
dChjZkVudHJpZXMpOwogICAgIGlmIChjdXJyZW50Q0ZJbmRleCA+PSBzaXplKSB7Ci0gICAgICAg
IExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZGljdGlvbmFyeSByZXByZXNl
bnRhdGlvbiBjb250YWlucyBhbiBpbnZhbGlkIGN1cnJlbnQgaW5kZXggKCVsZCkgZm9yIHRoZSBu
dW1iZXIgb2YgZW50cmllcyAoJWxkKSIsIGN1cnJlbnRDRkluZGV4LCBzaXplKTsKKyAgICAgICAg
TE9HX0lORk8oU2Vzc2lvblN0YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGRpY3Rpb25hcnkgcmVw
cmVzZW50YXRpb24gY29udGFpbnMgYW4gaW52YWxpZCBjdXJyZW50IGluZGV4ICglbGQpIGZvciB0
aGUgbnVtYmVyIG9mIGVudHJpZXMgKCVsZCkiLCBjdXJyZW50Q0ZJbmRleCwgc2l6ZSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC0yODAsMzEgKzI4MCwzMSBAQCBzdGF0
aWMgYm9vbCBleHRyYWN0QmFja0ZvcndhcmRMaXN0RW50cmllc0Zyb21BcnJheShDRkFycmF5UmVm
IGNmRW50cmllcywgQmFja0ZvcgogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewogICAgICAgICBDRkRpY3Rpb25hcnlSZWYgZW50cnlEaWN0aW9uYXJ5ID0gKENGRGljdGlv
bmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNmRW50cmllcywgaSk7CiAgICAgICAgIGlm
ICghZW50cnlEaWN0aW9uYXJ5IHx8IENGR2V0VHlwZUlEKGVudHJ5RGljdGlvbmFyeSkgIT0gQ0ZE
aWN0aW9uYXJ5R2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJX
ZWJCYWNrRm9yd2FyZExpc3QgZW50cnkgYXJyYXkgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGVudHJ5
IGF0IGluZGV4ICVpIiwgKGludClpKTsKKyAgICAgICAgICAgIExPR19JTkZPKFNlc3Npb25TdGF0
ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhcnJheSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQg
ZW50cnkgYXQgaW5kZXggJWkiLCAoaW50KWkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBDRlN0cmluZ1JlZiBlbnRyeVVSTCA9IChDRlN0
cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIFNlc3Npb25IaXN0
b3J5RW50cnlVUkxLZXkoKSk7CiAgICAgICAgIGlmICghZW50cnlVUkwgfHwgQ0ZHZXRUeXBlSUQo
ZW50cnlVUkwpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIExPRyhTZXNz
aW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3Qg
aGF2ZSBhIHZhbGlkIFVSTCIsIChpbnQpaSk7CisgICAgICAgICAgICBMT0dfSU5GTyhTZXNzaW9u
U3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3QgZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3QgaGF2
ZSBhIHZhbGlkIFVSTCIsIChpbnQpaSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KIAogICAgICAgICBDRlN0cmluZ1JlZiBlbnRyeVRpdGxlID0gKENGU3RyaW5nUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKGVudHJ5RGljdGlvbmFyeSwgU2Vzc2lvbkhpc3RvcnlFbnRyeVRp
dGxlS2V5KCkpOwogICAgICAgICBpZiAoIWVudHJ5VGl0bGUgfHwgQ0ZHZXRUeXBlSUQoZW50cnlU
aXRsZSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgTE9HKFNlc3Npb25T
dGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2VzIG5vdCBoYXZl
IGEgdmFsaWQgdGl0bGUiLCAoaW50KWkpOworICAgICAgICAgICAgTE9HX0lORk8oU2Vzc2lvblN0
YXRlLCAiV2ViQmFja0ZvcndhcmRMaXN0IGVudHJ5IGF0IGluZGV4ICVpIGRvZXMgbm90IGhhdmUg
YSB2YWxpZCB0aXRsZSIsIChpbnQpaSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KIAogICAgICAgICBDRlN0cmluZ1JlZiBvcmlnaW5hbFVSTCA9IChDRlN0cmluZ1JlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShlbnRyeURpY3Rpb25hcnksIFNlc3Npb25IaXN0b3J5RW50cnlP
cmlnaW5hbFVSTEtleSgpKTsKICAgICAgICAgaWYgKCFvcmlnaW5hbFVSTCB8fCBDRkdldFR5cGVJ
RChvcmlnaW5hbFVSTCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgTE9H
KFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAlaSBkb2Vz
IG5vdCBoYXZlIGEgdmFsaWQgb3JpZ2luYWwgVVJMIiwgKGludClpKTsKKyAgICAgICAgICAgIExP
R19JTkZPKFNlc3Npb25TdGF0ZSwgIldlYkJhY2tGb3J3YXJkTGlzdCBlbnRyeSBhdCBpbmRleCAl
aSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgb3JpZ2luYWwgVVJMIiwgKGludClpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIENGRGF0YVJlZiBiYWNrRm9y
d2FyZERhdGEgPSAoQ0ZEYXRhUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGVudHJ5RGljdGlvbmFy
eSwgU2Vzc2lvbkhpc3RvcnlFbnRyeURhdGFLZXkoKSk7CiAgICAgICAgIGlmICghYmFja0Zvcndh
cmREYXRhIHx8IENGR2V0VHlwZUlEKGJhY2tGb3J3YXJkRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlE
KCkpIHsKLSAgICAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExpc3Qg
ZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3QgaGF2ZSBiYWNrL2ZvcndhcmQgZGF0YSIsIChpbnQp
aSk7CisgICAgICAgICAgICBMT0dfSU5GTyhTZXNzaW9uU3RhdGUsICJXZWJCYWNrRm9yd2FyZExp
c3QgZW50cnkgYXQgaW5kZXggJWkgZG9lcyBub3QgaGF2ZSBiYWNrL2ZvcndhcmQgZGF0YSIsIChp
bnQpaSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAppbmRleCBm
YWMwMmMxYjQ2OTBmMTIzNmU5YWE3OGRhY2E0OTJiMWM0MjYzYTEzLi45ZmMzN2U2YTNiYmFkNTcw
MGJjYTRkMTcyMTQwNTlhYjA3OGVhNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKFdlYkRhdGEqIHdlYkRhdGEpCiAgICAg
VUludDMyIHZlcnNpb25IZWFkZXIgPSAoYnVmZmVyWzBdIDw8IDI0KSArIChidWZmZXJbMV0gPDwg
MTYpICsgKGJ1ZmZlclsyXSA8PCA4KSArIGJ1ZmZlclszXTsKICAgICAKICAgICBpZiAodmVyc2lv
bkhlYWRlciAhPSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24pIHsKLSAgICAgICAgTE9H
KFNlc3Npb25TdGF0ZSwgIlVucmVjb2duaXplZCB2ZXJzaW9uIGhlYWRlciBmb3Igc2Vzc2lvbiBz
dGF0ZSBkYXRhIC0gY2Fubm90IHJlc3RvcmUiKTsKKyAgICAgICAgTE9HX0lORk8oU2Vzc2lvblN0
YXRlLCAiVW5yZWNvZ25pemVkIHZlcnNpb24gaGVhZGVyIGZvciBzZXNzaW9uIHN0YXRlIGRhdGEg
LSBjYW5ub3QgcmVzdG9yZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApAQCAtMTIz
LDcgKzEyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURh
dGEoV2ViRGF0YSogd2ViRGF0YSkKICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHBy
b3BlcnR5TGlzdChBZG9wdENGLCBDRlByb3BlcnR5TGlzdENyZWF0ZUZyb21YTUxEYXRhKDAsIGRh
dGEuZ2V0KCksIGtDRlByb3BlcnR5TGlzdEltbXV0YWJsZSwgJnByb3BlcnR5TGlzdEVycm9yKSk7
CiAgICAgaWYgKHByb3BlcnR5TGlzdEVycm9yKSB7CiAgICAgICAgIENGUmVsZWFzZShwcm9wZXJ0
eUxpc3RFcnJvcik7Ci0gICAgICAgIExPRyhTZXNzaW9uU3RhdGUsICJDb3VsZCBub3QgcmVhZCBz
ZXNzaW9uIHN0YXRlIHByb3BlcnR5IGxpc3QiKTsKKyAgICAgICAgTE9HX0lORk8oU2Vzc2lvblN0
YXRlLCAiQ291bGQgbm90IHJlYWQgc2Vzc2lvbiBzdGF0ZSBwcm9wZXJ0eSBsaXN0Iik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMSwxNCArMTMxLDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkKICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAKICAgICBpZiAoQ0ZHZXRUeXBlSUQocHJvcGVydHlMaXN0Lmdl
dCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkgewotICAgICAgICBMT0coU2Vzc2lvblN0
YXRlLCAiU2Vzc2lvblN0YXRlIHByb3BlcnR5IGxpc3QgaXMgbm90IGEgQ0ZEaWN0aW9uYXJ5UmVm
ICglaSkgLSBpdHMgQ0ZUeXBlSUQgaXMgJWkiLCAoaW50KUNGRGljdGlvbmFyeUdldFR5cGVJRCgp
LCAoaW50KUNGR2V0VHlwZUlEKHByb3BlcnR5TGlzdC5nZXQoKSkpOworICAgICAgICBMT0dfSU5G
TyhTZXNzaW9uU3RhdGUsICJTZXNzaW9uU3RhdGUgcHJvcGVydHkgbGlzdCBpcyBub3QgYSBDRkRp
Y3Rpb25hcnlSZWYgKCVpKSAtIGl0cyBDRlR5cGVJRCBpcyAlaSIsIChpbnQpQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCksIChpbnQpQ0ZHZXRUeXBlSUQocHJvcGVydHlMaXN0LmdldCgpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBDRkRpY3Rpb25hcnlSZWYgYmFja0ZvcndhcmRMaXN0
RGljdGlvbmFyeSA9IDA7CiAgICAgaWYgKENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdl
dFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4ocHJvcGVydHlMaXN0LmdldCgpKSwg
U2Vzc2lvbkhpc3RvcnlLZXkoKSkpIHsKICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAh
PSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIExPRyhTZXNzaW9uU3RhdGUs
ICJTZXNzaW9uU3RhdGUgZGljdGlvbmFyeSBoYXMgYSBTZXNzaW9uSGlzdG9yeSBrZXksIGJ1dCB0
aGUgdmFsdWUgaXMgbm90IGEgZGljdGlvbmFyeSIpOworICAgICAgICAgICAgTE9HX0lORk8oU2Vz
c2lvblN0YXRlLCAiU2Vzc2lvblN0YXRlIGRpY3Rpb25hcnkgaGFzIGEgU2Vzc2lvbkhpc3Rvcnkg
a2V5LCBidXQgdGhlIHZhbHVlIGlzIG5vdCBhIGRpY3Rpb25hcnkiKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgYmFja0ZvcndhcmRMaXN0RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PENGRGlj
dGlvbmFyeVJlZj4odmFsdWUpOwogICAgIH0KQEAgLTE0NiwxNCArMTQ2LDE0IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkK
ICAgICBDRlN0cmluZ1JlZiBwcm92aXNpb25hbFVSTCA9IDA7CiAgICAgaWYgKENGVHlwZVJlZiB2
YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4o
cHJvcGVydHlMaXN0LmdldCgpKSwgUHJvdmlzaW9uYWxVUkxLZXkoKSkpIHsKICAgICAgICAgaWYg
KENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAg
TE9HKFNlc3Npb25TdGF0ZSwgIlNlc3Npb25TdGF0ZSBkaWN0aW9uYXJ5IGhhcyBhIFByb3Zpc2lv
bmFsVmFsdWUga2V5LCBidXQgdGhlIHZhbHVlIGlzIG5vdCBhIHN0cmluZyIpOworICAgICAgICAg
ICAgTE9HX0lORk8oU2Vzc2lvblN0YXRlLCAiU2Vzc2lvblN0YXRlIGRpY3Rpb25hcnkgaGFzIGEg
UHJvdmlzaW9uYWxWYWx1ZSBrZXksIGJ1dCB0aGUgdmFsdWUgaXMgbm90IGEgc3RyaW5nIik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJMID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KHZhbHVlKTsKICAgICB9CiAKICAgICBpZiAoYmFja0ZvcndhcmRMaXN0RGljdGlv
bmFyeSkgewogICAgICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5yZXN0b3JlRnJvbUNGRGlj
dGlvbmFyeVJlcHJlc2VudGF0aW9uKGJhY2tGb3J3YXJkTGlzdERpY3Rpb25hcnkpKQotICAgICAg
ICAgICAgTE9HKFNlc3Npb25TdGF0ZSwgIkZhaWxlZCB0byByZXN0b3JlIGJhY2svZm9yd2FyZCBs
aXN0IGZyb20gU2Vzc2lvbkhpc3RvcnkgZGljdGlvbmFyeSIpOworICAgICAgICAgICAgTE9HX0lO
Rk8oU2Vzc2lvblN0YXRlLCAiRmFpbGVkIHRvIHJlc3RvcmUgYmFjay9mb3J3YXJkIGxpc3QgZnJv
bSBTZXNzaW9uSGlzdG9yeSBkaWN0aW9uYXJ5Iik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVZlY3RvciYgZW50cmllcyA9IG1fYmFja0Zvcndh
cmRMaXN0LT5lbnRyaWVzKCk7CiAgICAgICAgICAgICBpZiAoc2l6ZV90IHNpemUgPSBlbnRyaWVz
LnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXgg
NzBiODc1YmI2YjQ1NDJlMTQ1OTlmNDRmMGE5YmVmMjEyNmVmYTU1Ny4uNThmZmU0ODcyNDc5ZWE4
YjEwZTg4ZDlmNjViNjQ3YTAwZWI2MzBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCkBAIC0xMTk3LDcgKzExOTcsNyBAQCB2b2lkIFdlYlZpZXc6OmNvbXBvc2l0
aW9uU2VsZWN0aW9uQ2hhbmdlZChib29sIGhhc0NoYW5nZWQpCiAKIGJvb2wgV2ViVmlldzo6b25J
TUVTdGFydENvbXBvc2l0aW9uKCkKIHsKLSAgICBMT0coVGV4dElucHV0LCAib25JTUVTdGFydENv
bXBvc2l0aW9uIik7CisgICAgTE9HX0lORk8oVGV4dElucHV0LCAib25JTUVTdGFydENvbXBvc2l0
aW9uIik7CiAgICAgbV9pbklNRUNvbXBvc2l0aW9uKys7CiAKICAgICBISU1DIGhJbnB1dENvbnRl
eHQgPSBnZXRJTU1Db250ZXh0KCk7CkBAIC0xMjk0LDcgKzEyOTQsNyBAQCBzdGF0aWMgU3RyaW5n
IGltZVJlcXVlc3ROYW1lKFdQQVJBTSB3cGFyYW0pCiAKIGJvb2wgV2ViVmlldzo6b25JTUVDb21w
b3NpdGlvbihMUEFSQU0gbHBhcmFtKQogewotICAgIExPRyhUZXh0SW5wdXQsICJvbklNRUNvbXBv
c2l0aW9uICVzIiwgaW1lQ29tcG9zaXRpb25Bcmd1bWVudE5hbWVzKGxwYXJhbSkubGF0aW4xKCku
ZGF0YSgpKTsKKyAgICBMT0dfSU5GTyhUZXh0SW5wdXQsICJvbklNRUNvbXBvc2l0aW9uICVzIiwg
aW1lQ29tcG9zaXRpb25Bcmd1bWVudE5hbWVzKGxwYXJhbSkubGF0aW4xKCkuZGF0YSgpKTsKICAg
ICBISU1DIGhJbnB1dENvbnRleHQgPSBnZXRJTU1Db250ZXh0KCk7CiAgICAgaWYgKCFoSW5wdXRD
b250ZXh0KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzMzksNyArMTMzOSw3IEBAIGJvb2wg
V2ViVmlldzo6b25JTUVDb21wb3NpdGlvbihMUEFSQU0gbHBhcmFtKQogCiBib29sIFdlYlZpZXc6
Om9uSU1FRW5kQ29tcG9zaXRpb24oKQogewotICAgIExPRyhUZXh0SW5wdXQsICJvbklNRUVuZENv
bXBvc2l0aW9uIik7CisgICAgTE9HX0lORk8oVGV4dElucHV0LCAib25JTUVFbmRDb21wb3NpdGlv
biIpOwogICAgIC8vIElmIHRoZSBjb21wb3NpdGlvbiBoYXNuJ3QgYmVlbiBjb25maXJtZWQgeWV0
LCBpdCBuZWVkcyB0byBiZSBjYW5jZWxsZWQuCiAgICAgLy8gVGhpcyBoYXBwZW5zIGFmdGVyIGRl
bGV0aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBmcm9tIGlubGluZSBpbnB1dCBob2xlLgogICAgIGlm
IChtX3BhZ2UtPmVkaXRvclN0YXRlKCkuaGFzQ29tcG9zaXRpb24pCkBAIC0xMzg0LDcgKzEzODQs
NyBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uSU1FUmVxdWVzdFJlY29udmVydFN0cmluZyhSRUNPTlZF
UlRTVFJJTkcqIHJlY29udmVydFN0cmluZykKIAogTFJFU1VMVCBXZWJWaWV3OjpvbklNRVJlcXVl
c3QoV1BBUkFNIHJlcXVlc3QsIExQQVJBTSBkYXRhKQogewotICAgIExPRyhUZXh0SW5wdXQsICJv
bklNRVJlcXVlc3QgJXMiLCBpbWVSZXF1ZXN0TmFtZShyZXF1ZXN0KS5sYXRpbjEoKS5kYXRhKCkp
OworICAgIExPR19JTkZPKFRleHRJbnB1dCwgIm9uSU1FUmVxdWVzdCAlcyIsIGltZVJlcXVlc3RO
YW1lKHJlcXVlc3QpLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgaWYgKCFtX3BhZ2UtPmVkaXRvclN0
YXRlKCkuaXNDb250ZW50RWRpdGFibGUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNDAyLDEz
ICsxNDAyLDEzIEBAIGJvb2wgV2ViVmlldzo6b25JTUVTZWxlY3QoV1BBUkFNIHdwYXJhbSwgTFBB
UkFNIGxwYXJhbSkKIHsKICAgICBVTlVTRURfUEFSQU0od3BhcmFtKTsKICAgICBVTlVTRURfUEFS
QU0obHBhcmFtKTsKLSAgICBMT0coVGV4dElucHV0LCAib25JTUVTZWxlY3QgbG9jYWxlICVsZCAl
cyIsIGxwYXJhbSwgd3BhcmFtID8gInNlbGVjdCIgOiAiZGVzZWxlY3QiKTsKKyAgICBMT0dfSU5G
TyhUZXh0SW5wdXQsICJvbklNRVNlbGVjdCBsb2NhbGUgJWxkICVzIiwgbHBhcmFtLCB3cGFyYW0g
PyAic2VsZWN0IiA6ICJkZXNlbGVjdCIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBX
ZWJWaWV3OjpvbklNRVNldENvbnRleHQoV1BBUkFNIHdwYXJhbSwgTFBBUkFNKQogewotICAgIExP
RyhUZXh0SW5wdXQsICJvbklNRVNldENvbnRleHQgJXMiLCB3cGFyYW0gPyAiYWN0aXZlIiA6ICJp
bmFjdGl2ZSIpOworICAgIExPR19JTkZPKFRleHRJbnB1dCwgIm9uSU1FU2V0Q29udGV4dCAlcyIs
IHdwYXJhbSA/ICJhY3RpdmUiIDogImluYWN0aXZlIik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGll
bnQuY3BwCmluZGV4IDNjZDhkZmFlY2ExNzJhMTU0MTg5MjdiZTEyZTUwNDU4ZDQwNjIxMjIuLjQ4
NTEwMDAwNWEwMjNjYjgyMDEzZDZkNTk0NzVhZDJmMmIyOGVkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29u
dGV4dE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIGJvb2wgSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQ6OmdldEN1
c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYlBhZ2UqCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgV2ViQ29udGV4dE1lbnVJdGVtKiBpdGVtID0gYXJy
YXktPmF0PFdlYkNvbnRleHRNZW51SXRlbT4oaSk7CiAgICAgICAgIGlmICghaXRlbSkgewotICAg
ICAgICAgICAgTE9HKENvbnRleHRNZW51LCAiTmV3IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMg
bm90IGEgV2ViQ29udGV4dE1lbnVJdGVtIiwgKGludClpKTsKKyAgICAgICAgICAgIExPR19JTkZP
KENvbnRleHRNZW51LCAiTmV3IG1lbnUgZW50cnkgYXQgaW5kZXggJWkgaXMgbm90IGEgV2ViQ29u
dGV4dE1lbnVJdGVtIiwgKGludClpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA3YWZjY2ViMjFiNTIy
ODcyYzQ5NTE5NmFiMzU1MzZlZjdkZjVkNjA3Li5jNGU2NTI1ZDNlNGQzZjczMGNjODliYjdjZmQx
YTM0OTgxNTc1ODI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnNjaGVkdWxlUGx1Z2luUwogCiB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVk
dWxlcjo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgUmVzb3Vy
Y2VMb2FkUHJpb3JpdHkgcHJpb3JpdHkpCiB7Ci0gICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2NoZWR1bGVMb2FkLCB1cmwg
JyVzJyBwcmlvcml0eSAlaSIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCBwcmlvcml0eSk7CisgICAgTE9HX0lORk8oTmV0d29ya1NjaGVkdWxpbmcsICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQsIHVybCAnJXMn
IHByaW9yaXR5ICVpIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCksIHByaW9yaXR5KTsKIAogICAgIEFTU0VSVChyZXNvdXJjZUxvYWRlcik7CiAgICAgQVNTRVJU
KHByaW9yaXR5ICE9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCk7CkBAIC0xMDgsNyAr
MTA4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlTG9hZChSZXNv
dXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIFJlc28KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OmFkZE1haW5SZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9h
ZGVyKQogewotICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXI6OmFkZE1haW5SZXNvdXJjZUxvYWQsIHVybCAnJXMnIiwgcmVzb3Vy
Y2VMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6
YWRkTWFpblJlc291cmNlTG9hZCwgdXJsICclcyciLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50
aWZpZXI7CiAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6YWRkTWFpblJlc291cmNlTG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZQogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3Vy
Y2VMb2FkZXIpCiB7CiAgICAgQVNTRVJUKHJlc291cmNlTG9hZGVyKTsKLSAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpyZW1v
dmUsIHVybCAnJXMnIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIExPR19JTkZPKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZFNjaGVkdWxlcjo6cmVtb3ZlLCB1cmwgJyVzJyIsIHJlc291cmNlTG9hZGVyLT51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IEl0J3MgcG9zc2libGUgZm9yIGEgcmVzb3VyY2VMb2FkZXIgdG8gYmUgcmVtb3ZlZCBi
ZWZvcmUgaXQgZXZlciBzdGFydGVkLAogICAgIC8vIG1lYW5pbmcgYmVmb3JlIGl0IGV2ZW4gaGFz
IGFuIGlkZW50aWZpZXIuCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiAKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVz
b3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBjb25zdCBLVVJMJiByZWRpcmVjdFVSTCkKIHsK
LSAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQuIEZyb20gJyVzJyB0byAnJXMn
IiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlZGlyZWN0
VVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE5ldHdvcmtTY2hlZHVs
aW5nLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6Y3Jvc3NPcmlnaW5S
ZWRpcmVjdFJlY2VpdmVkLiBGcm9tICclcycgdG8gJyVzJyIsIHJlc291cmNlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZWRpcmVjdFVSTC5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIEFTU0VSVChyZXNvdXJjZUxvYWRlcik7CiAgICAgQVNTRVJUKHJlc291cmNl
TG9hZGVyLT5pZGVudGlmaWVyKCkpOwpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2Fk
ZXIqIHJlc291CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdS
ZXF1ZXN0cyhSZXNvdXJjZUxvYWRQcmlvcml0eSBtaW5pbXVtUHJpb3JpdHkpCiB7Ci0gICAgTE9H
KE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2VydmVQZW5kaW5nUmVxdWVzdHMiKTsKKyAgICBMT0dfSU5GTyhOZXR3b3JrU2NoZWR1bGlu
ZywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGluZ1Jl
cXVlc3RzIik7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBXZWJQcm9jZXNzIGhhcyBpdHMgb3duIHJl
cXVlc3Qgc3VzcGVuc2lvbiBjb3VudCB0aGVuIHdlIGRvbid0IGV2ZW4KICAgICAvLyBoYXZlIHRv
IGJvdGhlciBtZXNzYWdpbmcgdGhlIE5ldHdvcmtQcm9jZXNzLgpAQCAtMTk3LDcgKzE5Nyw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VM
b2FkSWRlbnRpZmllciBpZGVudGlmaWVyCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2Fk
ZXIgPSBtX3BlbmRpbmdSZXNvdXJjZUxvYWRlcnMuZ2V0KGlkZW50aWZpZXIpOwogICAgIEFTU0VS
VChsb2FkZXIpOwogCi0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HX0lORk8oTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnIiwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICBsb2FkZXItPndpbGxTZW5k
UmVxdWVzdChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIH0KIApAQCAtMjA2LDcgKzIwNiw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVz
b3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBs
b2FkZXIgPSBtX3BlbmRpbmdSZXNvdXJjZUxvYWRlcnMuZ2V0KGlkZW50aWZpZXIpOwogICAgIEFT
U0VSVChsb2FkZXIpOwogCi0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICclcyciLCBsb2FkZXItPnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9y
ICclcyciLCBsb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGxvYWRl
ci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKIH0KIApAQCAtMjE1LDcgKzIxNSw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciBpZGVudGlmCiAgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2Fk
ZXIgPSBtX3BlbmRpbmdSZXNvdXJjZUxvYWRlcnMuZ2V0KGlkZW50aWZpZXIpOwogICAgIEFTU0VS
VChsb2FkZXIpOwogCi0gICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBsb2FkZXItPnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE5ldHdvcmssICIoV2ViUHJv
Y2VzcykgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICcl
cyciLCBsb2FkZXItPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIAogICAgIC8v
IE9ubHkgc2VuZCBkYXRhIHRvIHRoZSBkaWRSZWNlaXZlRGF0YSBjYWxsYmFjayBpZiBpdCBleGlz
dHMuCiAgICAgaWYgKCFidWZmZXIuaXNFbXB0eSgpKSB7CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoUmVzb3VyY2VM
b2FkSWRlbnRpZmllciBpZGVudGkKICAgICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlciA9
IG1fcGVuZGluZ1Jlc291cmNlTG9hZGVycy5nZXQoaWRlbnRpZmllcik7CiAgICAgQVNTRVJUKGxv
YWRlcik7CiAKLSAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBsb2FkZXItPnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPR19JTkZPKE5ldHdvcmssICIoV2ViUHJvY2Vz
cykgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkIGZvciAnJXMn
IiwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAKICAgICBsb2Fk
ZXItPmRpZEZhaWwoZXJyb3IpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDA5NGFiZTU5YWY3MmQ4OGZjZTY5ZTNlMTljODgzNDg3NGExOTEz
NDYuLjQxODgzOGY2YTdlZGYzMTM0YzU2Y2NjY2NiMjhiYTkwNDQ0NWRiN2UgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAor
MjAxMi0xMS0wOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZW5hbWUgdGhlIExPRygpIG1hY3JvIHRvIExPR19JTkZPKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTgyNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0FwcERlbGVn
YXRlLm06CisgICAgICAgIChkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6Cisg
ICAgICAgIChkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgIChkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QpOgorICAgICAgICAoZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KToK
KyAgICAgICAgKGRpZFVwZGF0ZUhpc3RvcnlUaXRsZSk6CisgICAgICAgIChwb3B1bGF0ZVZpc2l0
ZWRMaW5rcyk6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdpbmRvd1No
b3VsZENsb3NlOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkdW1w
U291cmNlVG9Db25zb2xlOl0pOgorICAgICAgICAoZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKGRpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUpOgorICAgICAgICAoZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUpOgorICAgICAgICAoZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KToKKyAgICAg
ICAgKGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChkaWRSdW5J
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChkaWREZXRlY3RYU1NGb3JGcmFtZSk6
CisgICAgICAgIChkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOgorICAgICAgICAoZGlkQmVjb21lUmVz
cG9uc2l2ZSk6CisgICAgICAgIChwcm9jZXNzRGlkRXhpdCk6CisgICAgICAgIChkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbik6CisgICAgICAgIChjcmVhdGVOZXdQYWdlKToKKyAgICAgICAgKHNob3dQYWdlKToK
KyAgICAgICAgKGNsb3NlUGFnZSk6CisgICAgICAgIChzZXRTdGF0dXNUZXh0KToKKyAgICAgICAg
KG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV2Vi
QnVuZGxlL1dlYkJ1bmRsZU1haW4ubToKKyAgICAgICAgKGRpZENsZWFyV2luZG93T2JqZWN0Rm9y
RnJhbWUpOgorICAgICAgICAoZGlkQ3JlYXRlUGFnZSk6CisgICAgICAgICh3aWxsRGVzdHJveVBh
Z2UpOgorICAgICAgICAoZGlkUmVjZWl2ZU1lc3NhZ2UpOgorCiAyMDEyLTExLTA5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBlb3BsZSB3aXRoIGRpY2hyb21h
Y3kgY2FuJ3QgdGVsbCBjcmFzaGVzIGFuZCBwYXNzZXMgb24gZmxha2luZXNzIGRhc2hib2FyZApk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0gYi9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQppbmRleCAzYmRlM2QxZjUyNzgzYTU1NWVkOGM1
YTgxYzMxY2JmYWNkM2NhYzUyLi5jNjAzM2NlNGMxZDJlNTc4ZTBkMGQyNDkyZWRjMzUxMDQ5MmJj
YmI0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQorKysg
Yi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQpAQCAtNDgsMTAgKzQ4LDEwIEBA
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhCiAgICAgV0tUeXBlSUQgdHlwZUlEID0gV0tHZXRUeXBl
SUQobWVzc2FnZUJvZHkpOwogICAgIGlmICh0eXBlSUQgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSkg
ewogICAgICAgICBDRlN0cmluZ1JlZiBjZk1lc3NhZ2VCb2R5ID0gV0tTdHJpbmdDb3B5Q0ZTdHJp
bmcoMCwgKFdLU3RyaW5nUmVmKW1lc3NhZ2VCb2R5KTsKLSAgICAgICAgTE9HKEAiQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50IC0gZGlkUmVjZWl2ZU1lc3NhZ2UgLSBNZXNzYWdlTmFtZTogJUAg
TWVzc2FnZUJvZHkgJUAiLCBjZk1lc3NhZ2VOYW1lLCBjZk1lc3NhZ2VCb2R5KTsKKyAgICAgICAg
TE9HX0lORk8oQCJDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQgLSBkaWRSZWNlaXZlTWVzc2Fn
ZSAtIE1lc3NhZ2VOYW1lOiAlQCBNZXNzYWdlQm9keSAlQCIsIGNmTWVzc2FnZU5hbWUsIGNmTWVz
c2FnZUJvZHkpOwogICAgICAgICBDRlJlbGVhc2UoY2ZNZXNzYWdlQm9keSk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgTE9HKEAiQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50IC0gZGlkUmVjZWl2
ZU1lc3NhZ2UgLSBNZXNzYWdlTmFtZTogJUAgKE1lc3NhZ2VCb2R5IFVuaGFuZGxlZClcbiIsIGNm
TWVzc2FnZU5hbWUpOworICAgICAgICBMT0dfSU5GTyhAIkNvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudCAtIGRpZFJlY2VpdmVNZXNzYWdlIC0gTWVzc2FnZU5hbWU6ICVAIChNZXNzYWdlQm9keSBV
bmhhbmRsZWQpXG4iLCBjZk1lc3NhZ2VOYW1lKTsKICAgICB9CiAgICAgCiAgICAgQ0ZSZWxlYXNl
KGNmTWVzc2FnZU5hbWUpOwpAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9pZCBkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlUmVmIHBhZ2Us
CiAgICAgQ0ZVUkxSZWYgdXJsID0gV0tVUkxDb3B5Q0ZVUkwoMCwgd2tVUkwpOwogICAgIFdLUmVs
ZWFzZSh3a1VSTCk7CiAKLSAgICBMT0coQCJIaXN0b3J5Q2xpZW50IC0gZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEgLSB0aXRsZTogJUAgLSB1cmw6ICVAIiwgdGl0bGUsIHVybCk7CisgICAg
TE9HX0lORk8oQCJIaXN0b3J5Q2xpZW50IC0gZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEg
LSB0aXRsZTogJUAgLSB1cmw6ICVAIiwgdGl0bGUsIHVybCk7CiAgICAgQ0ZSZWxlYXNlKHRpdGxl
KTsKICAgICBDRlJlbGVhc2UodXJsKTsKIH0KQEAgLTg2LDcgKzg2LDcgQEAgc3RhdGljIHZvaWQg
ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VSZWYg
cGFnZSwgV0tVUkwKIHsKICAgICBDRlVSTFJlZiBjZlNvdXJjZVVSTCA9IFdLVVJMQ29weUNGVVJM
KDAsIHNvdXJjZVVSTCk7CiAgICAgQ0ZVUkxSZWYgY2ZEZXN0aW5hdGlvblVSTCA9IFdLVVJMQ29w
eUNGVVJMKDAsIGRlc3RpbmF0aW9uVVJMKTsKLSAgICBMT0coQCJIaXN0b3J5Q2xpZW50IC0gZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0IC0gc291cmNlVVJMOiAlQCAtIGRlc3RpbmF0aW9uVVJMOiAl
QCIsIGNmU291cmNlVVJMLCBjZkRlc3RpbmF0aW9uVVJMKTsKKyAgICBMT0dfSU5GTyhAIkhpc3Rv
cnlDbGllbnQgLSBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QgLSBzb3VyY2VVUkw6ICVAIC0gZGVz
dGluYXRpb25VUkw6ICVAIiwgY2ZTb3VyY2VVUkwsIGNmRGVzdGluYXRpb25VUkwpOwogICAgIENG
UmVsZWFzZShjZlNvdXJjZVVSTCk7CiAgICAgQ0ZSZWxlYXNlKGNmRGVzdGluYXRpb25VUkwpOwog
fQpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Qo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLUGFnZVJlZiBwYWdlLCBXS1VSTAogewogICAgIENGVVJM
UmVmIGNmU291cmNlVVJMID0gV0tVUkxDb3B5Q0ZVUkwoMCwgc291cmNlVVJMKTsKICAgICBDRlVS
TFJlZiBjZkRlc3RpbmF0aW9uVVJMID0gV0tVUkxDb3B5Q0ZVUkwoMCwgZGVzdGluYXRpb25VUkwp
OwotICAgIExPRyhAIkhpc3RvcnlDbGllbnQgLSBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QgLSBz
b3VyY2VVUkw6ICVAIC0gZGVzdGluYXRpb25VUkw6ICVAIiwgY2ZTb3VyY2VVUkwsIGNmRGVzdGlu
YXRpb25VUkwpOworICAgIExPR19JTkZPKEAiSGlzdG9yeUNsaWVudCAtIGRpZFBlcmZvcm1TZXJ2
ZXJSZWRpcmVjdCAtIHNvdXJjZVVSTDogJUAgLSBkZXN0aW5hdGlvblVSTDogJUAiLCBjZlNvdXJj
ZVVSTCwgY2ZEZXN0aW5hdGlvblVSTCk7CiAgICAgQ0ZSZWxlYXNlKGNmU291cmNlVVJMKTsKICAg
ICBDRlJlbGVhc2UoY2ZEZXN0aW5hdGlvblVSTCk7CiB9CkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBz
dGF0aWMgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
UGFnZVJlZiBwYWdlLCBXS1N0cmluZwogewogICAgIENGU3RyaW5nUmVmIGNmVGl0bGUgPSBXS1N0
cmluZ0NvcHlDRlN0cmluZygwLCB0aXRsZSk7CiAgICAgQ0ZVUkxSZWYgY2ZVUkwgPSBXS1VSTENv
cHlDRlVSTCgwLCBVUkwpOwotICAgIExPRyhAIkhpc3RvcnlDbGllbnQgLSBkaWRVcGRhdGVIaXN0
b3J5VGl0bGUgLSB0aXRsZTogJUAgLSBVUkw6ICVAIiwgY2ZUaXRsZSwgY2ZVUkwpOworICAgIExP
R19JTkZPKEAiSGlzdG9yeUNsaWVudCAtIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZSAtIHRpdGxlOiAl
QCAtIFVSTDogJUAiLCBjZlRpdGxlLCBjZlVSTCk7CiAgICAgQ0ZSZWxlYXNlKGNmVGl0bGUpOwog
ICAgIENGUmVsZWFzZShjZlVSTCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlVmlzaXRlZExp
bmtzKFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAg
IExPRyhAIkhpc3RvcnlDbGllbnQgLSBwb3B1bGF0ZVZpc2l0ZWRMaW5rcyIpOworICAgIExPR19J
TkZPKEAiSGlzdG9yeUNsaWVudCAtIHBvcHVsYXRlVmlzaXRlZExpbmtzIik7CiB9CiAKIC0gKGlk
KWluaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KaW5kZXggMTczMWViNjUwODUxOWMyZmI1Mjk1MDJhNDQ0NTljOTk1NjYyNDQwZS4u
NDRlMzkxNTc2MmE1ZmY1NmY5NzJlNDg1NzQ3ODMzZTAxNjc5NTZiNiAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTE2Miw3
ICsxNjIsNyBAQCAtICh2b2lkKXZhbGlkYXRlVG9vbGJhcgogCiAtIChCT09MKXdpbmRvd1Nob3Vs
ZENsb3NlOihpZClzZW5kZXIKIHsKLSAgICBMT0coQCJ3aW5kb3dTaG91bGRDbG9zZSIpOworICAg
IExPR19JTkZPKEAid2luZG93U2hvdWxkQ2xvc2UiKTsKICAgICBCT09MIGNhbkNsb3NlSW1tZWRp
YXRlbHkgPSBXS1BhZ2VUcnlDbG9zZShfd2ViVmlldy5wYWdlUmVmKTsKICAgICByZXR1cm4gY2Fu
Q2xvc2VJbW1lZGlhdGVseTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCAtIChJQkFjdGlvbilkdW1w
U291cmNlVG9Db25zb2xlOihpZClzZW5kZXIKIHsKICAgICBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFt
ZV9iKF93ZWJWaWV3LnBhZ2VSZWYsIFdLUGFnZUdldE1haW5GcmFtZShfd2ViVmlldy5wYWdlUmVm
KSwgXihXS1N0cmluZ1JlZiByZXN1bHQsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgQ0ZT
dHJpbmdSZWYgY2ZSZXN1bHQgPSBXS1N0cmluZ0NvcHlDRlN0cmluZygwLCByZXN1bHQpOwotICAg
ICAgICBMT0coQCJNYWluIGZyYW1lIHNvdXJjZVxuIFwiJUBcIiIsIChOU1N0cmluZyAqKWNmUmVz
dWx0KTsKKyAgICAgICAgTE9HX0lORk8oQCJNYWluIGZyYW1lIHNvdXJjZVxuIFwiJUBcIiIsIChO
U1N0cmluZyAqKWNmUmVzdWx0KTsKICAgICAgICAgQ0ZSZWxlYXNlKGNmUmVzdWx0KTsKICAgICB9
KTsKIH0KQEAgLTI5OSwxMiArMjk5LDEyIEBAIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzCiAKIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudElu
Zm8pCiB7Ci0gICAgTE9HKEAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUiKTsKKyAgICBM
T0dfSU5GTyhAImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lIik7CiB9CiAKIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIExP
RyhAImRpZEZpbmlzaExvYWRGb3JGcmFtZSIpOworICAgIExPR19JTkZPKEAiZGlkRmluaXNoTG9h
ZEZvckZyYW1lIik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKQEAgLTMzMCwzMiArMzMw
LDMyIEBAIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdLUGFnZVJlZiBwYWdl
LCBXS1N0cmluZ1JlZiB0aXRsZSwgV0tGcmFtZVJlCiAKIHN0YXRpYyB2b2lkIGRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1
c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBMT0coQCJkaWRGaXJzdExh
eW91dEZvckZyYW1lIik7CisgICAgTE9HX0lORk8oQCJkaWRGaXJzdExheW91dEZvckZyYW1lIik7
CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgTE9HKEAiZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yRnJhbWUiKTsKKyAgICBMT0dfSU5GTyhAImRpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZvckZyYW1lIik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIExPRyhAImRpZFJlbW92ZUZy
YW1lRnJvbUhpZXJhcmNoeSIpOworICAgIExPR19JTkZPKEAiZGlkUmVtb3ZlRnJhbWVGcm9tSGll
cmFyY2h5Iik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIExPRyhAImRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZSIpOworICAgIExPR19JTkZPKEAiZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudEZvckZyYW1lIik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZv
ckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgTE9HKEAiZGlkUnVuSW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUiKTsKKyAgICBMT0dfSU5GTyhAImRpZFJ1bkluc2VjdXJlQ29udGVudEZv
ckZyYW1lIik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQg
KmNsaWVudEluZm8pIAogeyAKLSAgICBMT0coQCJkaWREZXRlY3RYU1NGb3JGcmFtZSIpOyAKKyAg
ICBMT0dfSU5GTyhAImRpZERldGVjdFhTU0ZvckZyYW1lIik7IAogfQogIAogc3RhdGljIHZvaWQg
ZGlkU3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykK
QEAgLTM3NSwxNyArMzc1LDE3IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdLUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQogCiBzdGF0aWMgdm9pZCBkaWRCZWNv
bWVVbnJlc3BvbnNpdmUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7
Ci0gICAgTE9HKEAiZGlkQmVjb21lVW5yZXNwb25zaXZlIik7CisgICAgTE9HX0lORk8oQCJkaWRC
ZWNvbWVVbnJlc3BvbnNpdmUiKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkQmVjb21lUmVzcG9uc2l2
ZShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBMT0coQCJk
aWRCZWNvbWVSZXNwb25zaXZlIik7CisgICAgTE9HX0lORk8oQCJkaWRCZWNvbWVSZXNwb25zaXZl
Iik7CiB9CiAKIHN0YXRpYyB2b2lkIHByb2Nlc3NEaWRFeGl0KFdLUGFnZVJlZiBwYWdlLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKQogewotICAgIExPRyhAInByb2Nlc3NEaWRFeGl0Iik7CisgICAg
TE9HX0lORk8oQCJwcm9jZXNzRGlkRXhpdCIpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VC
YWNrRm9yd2FyZExpc3QoV0tQYWdlUmVmIHBhZ2UsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBh
ZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVtb3ZlZEl0ZW1zLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KQpAQCAtMzk3LDEzICszOTcsMTMgQEAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWQKIAogc3RhdGlj
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2
ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBX
S1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVy
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgTE9H
KEAiZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiIpOworICAgIExPR19JTkZPKEAiZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiIpOwogICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
clVzZShsaXN0ZW5lcik7CiB9CiAKIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5hdmlnYXRp
b25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tFdmVu
dE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgV0tTdHJp
bmdSZWYgZnJhbWVOYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBMT0coQCJkZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24iKTsKKyAgICBMT0dfSU5GTyhAImRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbiIpOwogICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShsaXN0
ZW5lcik7CiB9CiAKQEAgLTQxNiw3ICs0MTYsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tVUkxSZXNwbwog
CiBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0LCBXS0RpY3Rpb25hcnlSZWYgZmVhdHVyZXMsIFdLRXZlbnRNb2RpZmll
cnMgbW9kaWZpZXJzLCBXS0V2ZW50TW91c2VCdXR0b24gYnV0dG9uLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewotICAgIExPRyhAImNyZWF0ZU5ld1BhZ2UiKTsKKyAgICBMT0dfSU5GTyhAImNy
ZWF0ZU5ld1BhZ2UiKTsKICAgICBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAqY29udHJvbGxl
ciA9IFtbV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29udGV4dDpX
S1BhZ2VHZXRDb250ZXh0KHBhZ2UpIHBhZ2VHcm91cDpXS1BhZ2VHZXRQYWdlR3JvdXAocGFnZSld
OwogICAgIFtjb250cm9sbGVyIGxvYWRXaW5kb3ddOwogCkBAIC00MjUsMTMgKzQyNSwxMyBAQCBz
dGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVz
dFJlZiByZXF1ZXN0LCBXS0RpY3RpbwogCiBzdGF0aWMgdm9pZCBzaG93UGFnZShXS1BhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAgICBMT0coQCJzaG93UGFnZSIpOwor
ICAgIExPR19JTkZPKEAic2hvd1BhZ2UiKTsKICAgICBbWyhCcm93c2VyV2luZG93Q29udHJvbGxl
ciAqKWNsaWVudEluZm8gd2luZG93XSBvcmRlckZyb250Om5pbF07CiB9CiAKIHN0YXRpYyB2b2lk
IGNsb3NlUGFnZShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKIHsKLSAg
ICBMT0coQCJjbG9zZVBhZ2UiKTsKKyAgICBMT0dfSU5GTyhAImNsb3NlUGFnZSIpOwogICAgIFdL
UGFnZUNsb3NlKHBhZ2UpOwogICAgIFtbKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50
SW5mbyB3aW5kb3ddIGNsb3NlXTsKIH0KQEAgLTUyMywxMiArNTIzLDEyIEBAIHN0YXRpYyBXS1N0
cmluZ1JlZiBydW5KYXZhU2NyaXB0UHJvbXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBt
ZXNzYWdlLCBXS1N0CiAKIHN0YXRpYyB2b2lkIHNldFN0YXR1c1RleHQoV0tQYWdlUmVmIHBhZ2Us
IFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgTE9HKEAi
c2V0U3RhdHVzVGV4dCIpOworICAgIExPR19JTkZPKEAic2V0U3RhdHVzVGV4dCIpOwogfQogCiBz
dGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXS1BhZ2VSZWYgcGFnZSwgV0tIaXRU
ZXN0UmVzdWx0UmVmIGhpdFRlc3RSZXN1bHQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7Ci0gICAgTE9HKEAi
bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQiKTsKKyAgICBMT0dfSU5GTyhAIm1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50Iik7CiB9CiAKIHN0YXRpYyBXS1JlY3QgZ2V0V2luZG93RnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV2ViQnVuZGxlL1dlYkJ1bmRsZU1haW4ubSBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFpbi5tCmluZGV4IDE2ZTg2YjQwNDhjOTFiYjY1ZDcxYjBl
ZTAwMTc4MDc4OWU1ODM2OGUuLjVhZTEyOGJlN2Q4YjkyNDQyMTdlMTgwZWU5YmM1ZTg5MjFhYzc4
OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxl
TWFpbi5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XZWJCdW5kbGUvV2ViQnVuZGxlTWFp
bi5tCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwKICAgICBDRlVSTFJl
ZiBjZlVSTCA9IFdLVVJMQ29weUNGVVJMKDAsIHdrVVJMKTsKICAgICBXS1JlbGVhc2Uod2tVUkwp
OwogCi0gICAgTE9HKEAiV0tCdW5kbGVQYWdlQ2xpZW50IC0gZGlkQ2xlYXJXaW5kb3dGb3JGcmFt
ZSAlQCIsIFsoTlNVUkwgKiljZlVSTCBhYnNvbHV0ZVN0cmluZ10pOworICAgIExPR19JTkZPKEAi
V0tCdW5kbGVQYWdlQ2xpZW50IC0gZGlkQ2xlYXJXaW5kb3dGb3JGcmFtZSAlQCIsIFsoTlNVUkwg
KiljZlVSTCBhYnNvbHV0ZVN0cmluZ10pOwogICAgIGlmIChjZlVSTCkKICAgICAgICAgQ0ZSZWxl
YXNlKGNmVVJMKTsKIApAQCAtNTksNyArNTksNyBAQCB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0
Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsCiAK
IHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIExPRyhAIldLQnVuZGxlQ2xpZW50
IC0gZGlkQ3JlYXRlUGFnZVxuIik7CisgICAgTE9HX0lORk8oQCJXS0J1bmRsZUNsaWVudCAtIGRp
ZENyZWF0ZVBhZ2VcbiIpOwogCiAgICAgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IGNsaWVudDsK
ICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwpAQCAtNzAsNyArNzAsNyBA
QCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SQogCiB2b2lkIHdpbGxEZXN0cm95UGFnZShXS0J1bmRs
ZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewotICAgIExPRyhAIldLQnVuZGxlQ2xpZW50IC0gd2lsbERlc3Ryb3lQYWdlXG4iKTsKKyAg
ICBMT0dfSU5GTyhAIldLQnVuZGxlQ2xpZW50IC0gd2lsbERlc3Ryb3lQYWdlXG4iKTsKIH0KIAog
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
CkBAIC04MCwxMCArODAsMTAgQEAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJlZiBi
dW5kbGUsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWUKICAgICBXS1R5cGVJ
RCB0eXBlSUQgPSBXS0dldFR5cGVJRChtZXNzYWdlQm9keSk7CiAgICAgaWYgKHR5cGVJRCA9PSBX
S1N0cmluZ0dldFR5cGVJRCgpKSB7CiAgICAgICAgIENGU3RyaW5nUmVmIGNmTWVzc2FnZUJvZHkg
PSBXS1N0cmluZ0NvcHlDRlN0cmluZygwLCAoV0tTdHJpbmdSZWYpbWVzc2FnZUJvZHkpOwotICAg
ICAgICBMT0coQCJXS0J1bmRsZUNsaWVudCAtIGRpZFJlY2VpdmVNZXNzYWdlIC0gTWVzc2FnZU5h
bWU6ICVAIE1lc3NhZ2VCb2R5ICVAIiwgY2ZNZXNzYWdlTmFtZSwgY2ZNZXNzYWdlQm9keSk7Cisg
ICAgICAgIExPR19JTkZPKEAiV0tCdW5kbGVDbGllbnQgLSBkaWRSZWNlaXZlTWVzc2FnZSAtIE1l
c3NhZ2VOYW1lOiAlQCBNZXNzYWdlQm9keSAlQCIsIGNmTWVzc2FnZU5hbWUsIGNmTWVzc2FnZUJv
ZHkpOwogICAgICAgICBDRlJlbGVhc2UoY2ZNZXNzYWdlQm9keSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgTE9HKEAiV0tCdW5kbGVDbGllbnQgLSBkaWRSZWNlaXZlTWVzc2FnZSAtIE1lc3NhZ2VO
YW1lOiAlQCAoTWVzc2FnZUJvZHkgVW5oYW5kbGVkKVxuIiwgY2ZNZXNzYWdlTmFtZSk7CisgICAg
ICAgIExPR19JTkZPKEAiV0tCdW5kbGVDbGllbnQgLSBkaWRSZWNlaXZlTWVzc2FnZSAtIE1lc3Nh
Z2VOYW1lOiAlQCAoTWVzc2FnZUJvZHkgVW5oYW5kbGVkKVxuIiwgY2ZNZXNzYWdlTmFtZSk7CiAg
ICAgfQogCiAgICAgQ0ZSZWxlYXNlKGNmTWVzc2FnZU5hbWUpOwo=
</data>
<flag name="review"
          id="188105"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>