<?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>68702</bug_id>
          
          <creation_ts>2011-09-23 10:11:11 -0700</creation_ts>
          <short_desc>Add OVERRIDE to overrides of virtual member functions in client classes</short_desc>
          <delta_ts>2011-09-23 11:06:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>472299</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-23 10:11:11 -0700</bug_when>
    <thetext>Add OVERRIDE to overrides of virtual member functions in client classes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472300</commentid>
    <comment_count>1</comment_count>
      <attachid>108487</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-23 10:13:39 -0700</bug_when>
    <thetext>Created attachment 108487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472314</commentid>
    <comment_count>2</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-23 10:35:19 -0700</bug_when>
    <thetext>Looks like we need to disable the nonstandard warning on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472321</commentid>
    <comment_count>3</comment_count>
      <attachid>108487</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-23 10:41:55 -0700</bug_when>
    <thetext>Comment on attachment 108487
Patch

Attachment 108487 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9813311

New failing tests:
svg/custom/svg-fonts-word-spacing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472322</commentid>
    <comment_count>4</comment_count>
      <attachid>108491</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-23 10:42:07 -0700</bug_when>
    <thetext>Created attachment 108491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472325</commentid>
    <comment_count>5</comment_count>
      <attachid>108491</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-23 10:49:23 -0700</bug_when>
    <thetext>Comment on attachment 108491
Patch

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

&gt; Source/WebKit2/win/WebKit2Common.vsprops:13
&gt; +		DisableSpecificWarnings=&quot;4481;4819&quot;

Should explain in change log the relevance of disabling this warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472344</commentid>
    <comment_count>6</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-23 11:06:30 -0700</bug_when>
    <thetext>Committed r95834: &lt;http://trac.webkit.org/changeset/95834&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108487</attachid>
            <date>2011-09-23 10:13:39 -0700</date>
            <delta_ts>2011-09-23 10:42:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68702-20110923101339.patch</filename>
            <type>text/plain</type>
            <size>67001</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1ODMwKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTEtMDktMjMgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgT1ZFUlJJREUgdG8g
b3ZlcnJpZGVzIG9mIHZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucyBpbiBjbGllbnQgY2xhc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNhYmxlIHRo
ZSB3YXJuaW5nIGZvciB1c2luZyBvdmVycmlkZSBhbmQgZmluYWwgd2hlbiBjb21waWxpbmcgYXMg
QysrOTgsCisgICAgICAgIGFuZCByZW1vdmUgV2ViRWRpdG9yQ2xpZW50Ojppc0VkaXRhYmxlLCBX
ZWJDaHJvbWVDbGllbnQ6OmZvcm1EaWRGb2N1cywKKyAgICAgICAgV2ViQ2hyb21lQ2xpZW50Ojpm
b3JtRGlkQmx1ciBhbmQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTG9hZFJlc291
cmNlQnlYTUxIdHRwUmVxdWVzdCBzaW5jZQorICAgICAgICB0aGV5IGhhdmUgYmVlbiByZW1vdmVk
IGZyb20gdGhlaXIgcmVzcGVjdGl2ZSBiYXNlIGNsYXNzZXMuCisgICAgICAgIAorICAgICAgICAq
IENvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1l
bnUuaDoKKwogMjAxMS0wOS0yMyAgSmVzdXMgU2FuY2hlei1QYWxlbmNpYSAgPGplc3VzLnBhbGVu
Y2lhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFF0RmlsZURvd25sb2FkZXIg
Y3RvciBzaG91bGRuJ3QgY2FsbCBRdEZpbGVEb3dubG9hZGVyOjpvblJlYWR5UmVhZCgpCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcJKHJldmlzaW9u
IDk1ODIxKQorKysgU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwko
d29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQ29tcGlsZXJWZXJz
aW9uLnhjY29uZmlnIgogCitDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKIERFQlVH
X0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOwogR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKIEdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGRlZmF1bHQ7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCShyZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjY2LDE2ICs2NjYsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9ybVN0YXRlRGlkQ2hhbmdl
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvcm1E
aWRGb2N1cyhjb25zdCBOb2RlKikKLXsgCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OmZvcm1EaWRCbHVyKGNvbnN0IE5vZGUqKQotewotICAgIG5vdElt
cGxlbWVudGVkKCk7Ci19Ci0KIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpzZWxlY3RJdGVtV3JpdGlu
Z0RpcmVjdGlvbklzTmF0dXJhbCgpCiB7CiAjaWYgUExBVEZPUk0oV0lOKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCShyZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDE4NCArNTAsMTgwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQqIHdlYlZpZXcoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ry
b3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSBPVkVSUklERTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dSZWN0KCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93UmVjdCgpIE9WRVJS
SURFOwogICAgIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHBhZ2VSZWN0KCk7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgcGFnZVJlY3QoKSBPVkVSUklERTsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpOwor
ICAgIHZpcnR1YWwgdm9pZCBmb2N1cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmZv
Y3VzKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhblRha2VGb2N1cyhXZWJD
b3JlOjpGb2N1c0RpcmVjdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhXZWJDb3Jl
OjpGb2N1c0RpcmVjdGlvbik7CisgICAgdmlydHVhbCBib29sIGNhblRha2VGb2N1cyhXZWJDb3Jl
OjpGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRha2VGb2N1cyhX
ZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNl
ZEZyYW1lQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSopOworICAgIHZpcnR1YWwgdm9pZCBmb2N1c2Vk
Tm9kZUNoYW5nZWQoV2ViQ29yZTo6Tm9kZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBm
b2N1c2VkRnJhbWVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CiAKICAgICAvLyBU
aGUgRnJhbWUgcG9pbnRlciBwcm92aWRlcyB0aGUgQ2hyb21lQ2xpZW50IHdpdGggY29udGV4dCBh
Ym91dCB3aGljaAogICAgIC8vIEZyYW1lIHdhbnRzIHRvIGNyZWF0ZSB0aGUgbmV3IFBhZ2UuICBB
bHNvLCB0aGUgbmV3bHkgY3JlYXRlZCB3aW5kb3cKICAgICAvLyBzaG91bGQgbm90IGJlIHNob3du
IHRvIHRoZSB1c2VyIHVudGlsIHRoZSBDaHJvbWVDbGllbnQgb2YgdGhlIG5ld2x5CiAgICAgLy8g
Y3JlYXRlZCBQYWdlIGhhcyBpdHMgc2hvdyBtZXRob2QgY2FsbGVkLgotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6
RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiwgY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBzaG93KCk7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBj
b25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNob3coKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
UnVuTW9kYWwoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuUnVuTW9kYWwoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwoKSBP
VkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wp
OwotICAgIHZpcnR1YWwgYm9vbCB0b29sYmFyc1Zpc2libGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0b29s
YmFyc1Zpc2libGUoKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVz
YmFyVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpOwotICAgIHZpcnR1YWwgYm9vbCBz
Y3JvbGxiYXJzVmlzaWJsZSgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJzVmlzaWJs
ZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUoKSBP
VkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVudWJhclZpc2libGUoYm9vbCk7
Ci0gICAgdmlydHVhbCBib29sIG1lbnViYXJWaXNpYmxlKCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dE1lbnViYXJWaXNpYmxlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBtZW51YmFy
VmlzaWJsZSgpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXNpemFibGUo
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldFJlc2l6YWJsZShib29sKSBPVkVSUklERTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXZWJDb3JlOjpNZXNzYWdl
U291cmNlLCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwgV2ViQ29yZTo6TWVzc2FnZUxldmVsLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZUlEKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShXZWJDb3Jl
OjpNZXNzYWdlU291cmNlLCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwgV2ViQ29yZTo6TWVzc2FnZUxl
dmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUlEKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
UnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCk7Ci0gICAgdmlydHVhbCBib29sIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkNvcmU6OkZyYW1l
KiBmcmFtZSk7CisgICAgdmlydHVhbCBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvd1Nvb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VXaW5kb3dTb29uKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHJ1bkph
dmFTY3JpcHRBbGVydChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1
YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1l
KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgU3Ry
aW5nJiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0
cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmly
bShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCkgT1ZF
UlJJREU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlN
b2RlKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9k
ZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1Jlc2l6
ZXJSZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1Jlc2l6
ZXJSZWN0KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAgLy8gTWV0aG9kcyB1c2VkIGJ5IEhv
c3RXaW5kb3cuCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVXaW5kb3coY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIGJvb2wpOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNB
bmRXaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wpOwotICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
LCBib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IHNjcm9sbE9mZnNldCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOworICAgIC8vIEhvc3RXaW5kb3cgbWVtYmVyIGZ1
bmN0aW9uIG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVdpbmRvdyhjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgYm9vbCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3Jv
bGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlw
UmVjdCkgT1ZFUlJJREU7CiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgdmly
dHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYgc2Nyb2xsT2Zmc2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVz
dGVkKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3JvbGxPZmZzZXQpIE9WRVJSSURFOwogI2Vu
ZGlmCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3
aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVh
bCBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmll
dyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Q7IC8vIEN1cnJlbnRseSBvbmx5IE1hYyBo
YXMgYSBub24gZW1wdHkgaW1wbGVtZW50YXRpb24uCi0gICAgLy8gRW5kIG1ldGhvZHMgdXNlZCBi
eSBIb3N0V2luZG93LgorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9XaW5k
b3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6OkludFJlY3Qgd2luZG93VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3Jt
UGFnZUNsaWVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1Np
emVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOyAvLyBDdXJyZW50bHkgb25seSBNYWMgaGFz
IGEgbm9uIGVtcHR5IGltcGxlbWVudGF0aW9uLgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZE1p
c3NpbmdQbHVnaW5NZXNzYWdlQmVCdXR0b24oKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgbWlz
c2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViQ29yZTo6RWxlbWVudCopIGNvbnN0OworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRNaXNzaW5nUGx1Z2luTWVzc2FnZUJlQnV0dG9uKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkKFdlYkNv
cmU6OkVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxi
YXJzTW9kZURpZENoYW5nZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudChjb25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZp
ZXJGbGFncyk7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNv
bnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKSBPVkVS
UklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRpcChjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uKSBPVkVSUklERTsKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgcHJpbnQoV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJp
bnQoV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsKICAgICAKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQotICAgIHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJh
bWUqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VO
YW1lKSBPVkVSUklERTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUykKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNw
YWNlTmVlZGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpOwor
ICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVk
ZWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCkg
T1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICB2
aXJ0dWFsIHZvaWQgZGFzaGJvYXJkUmVnaW9uc0NoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGFzaGJvYXJkUmVnaW9uc0NoYW5nZWQoKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdmlydHVh
bCB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
VmlzaXRlZExpbmtzKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9h
dFJlY3QgY3VzdG9tSGlnaGxpZ2h0UmVjdChXZWJDb3JlOjpOb2RlKiwgY29uc3QgV1RGOjpBdG9t
aWNTdHJpbmcmIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbGluZVJlY3QpOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludEN1c3RvbUhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKiwgY29uc3Qg
V1RGOjpBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm94UmVj
dCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBsaW5lUmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBiZWhpbmRUZXh0LCBib29sIGVudGlyZUxpbmUpOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGN1c3RvbUhpZ2hsaWdodFJlY3QoV2ViQ29y
ZTo6Tm9kZSosIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGxpbmVSZWN0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXN0
b21IaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSosIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3hSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGxpbmVSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGJl
aGluZFRleHQsIGJvb2wgZW50aXJlTGluZSkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcm
IHBhdGgsIFN0cmluZyYgZ2VuZXJhdGVkRmlsZW5hbWUpOwotICAgIHZpcnR1YWwgU3RyaW5nIGdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcm
IHBhdGgsIFN0cmluZyYgZ2VuZXJhdGVkRmlsZW5hbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
U3RyaW5nIGdlbmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgT1ZFUlJJ
REU7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHBhaW50Q3VzdG9tU2Nyb2xsYmFyKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIFdlYkNvcmU6OlNj
cm9sbGJhckNvbnRyb2xTaXplLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViQ29yZTo6U2Nyb2xsYmFyQ29udHJvbFN0YXRlLCBXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0
IHByZXNzZWRQYXJ0LCBib29sIHZlcnRpY2FsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbG9hdCB2YWx1ZSwgZmxvYXQgcHJvcG9ydGlvbiwgV2ViQ29yZTo6U2Nyb2xs
YmFyQ29udHJvbFBhcnRNYXNrKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21TY3JvbGxD
b3JuZXIoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
Jik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZhbHVlLCBm
bG9hdCBwcm9wb3J0aW9uLCBXZWJDb3JlOjpTY3JvbGxiYXJDb250cm9sUGFydE1hc2spIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBwYWludEN1c3RvbVNjcm9sbENvcm5lcihXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBwYWludEN1c3RvbU92ZXJoYW5nQXJlYShXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0
b21PdmVyaGFuZ0FyZWEoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JikgT1ZFUlJJREU7CiAKICAgICAvLyBUaGlzIGlzIGFuIGFzeW5jaHJvbm91cyBjYWxsLiBUaGUg
Q2hyb21lQ2xpZW50IGNhbiBkaXNwbGF5IFVJIGFza2luZyB0aGUgdXNlciBmb3IgcGVybWlzc2lv
bgogICAgIC8vIHRvIHVzZSBHZW9sb2NvY2F0aW9uLiBUaGUgQ2hyb21lQ2xpZW50IG11c3QgY2Fs
bCBHZW9sb2NhdGlvbjo6c2V0U2hvdWxkQ2xlYXJDYWNoZSgpIGFwcHJvcHJpYXRlbHkuCi0gICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNl
bEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdl
YkNvcmU6Okdlb2xvY2F0aW9uKik7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RHZW9sb2NhdGlv
blBlcm1pc3Npb25Gb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9u
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbEdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6Okdlb2xvY2F0aW9uKikg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1l
KiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pOwotICAgIHZpcnR1YWwgdm9pZCBs
b2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUljb25M
b2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBsb2FkSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgV2ViQ29yZTo6Rmls
ZUljb25Mb2FkZXIqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVu
dGlsTW91c2VNb3Zlcyhib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdl
YkNvcmU6OkN1cnNvciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRk
ZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgT1ZFUlJJREU7CiAKICAgICAvLyBOb3RpZmljYXRpb24g
dGhhdCB0aGUgZ2l2ZW4gZm9ybSBlbGVtZW50IGhhcyBjaGFuZ2VkLiBUaGlzIGZ1bmN0aW9uCiAg
ICAgLy8gd2lsbCBiZSBjYWxsZWQgZnJlcXVlbnRseSwgc28gaGFuZGxpbmcgc2hvdWxkIGJlIHZl
cnkgZmFzdC4KLSAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6Ok5vZGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9ybVN0YXRlRGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6Ok5vZGUqKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkRm9jdXMo
Y29uc3QgV2ViQ29yZTo6Tm9kZSopOwotICAgIHZpcnR1YWwgdm9pZCBmb3JtRGlkQmx1cihjb25z
dCBXZWJDb3JlOjpOb2RlKik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbVdyaXRpbmdE
aXJlY3Rpb25Jc05hdHVyYWwoKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVu
dEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBN
ZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29u
c3Q7CisgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFs
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dz
TWVudVdyaXRpbmdEaXJlY3Rpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNl
YXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNs
aWVudCopIGNvbnN0IE9WRVJSSURFOwogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
dmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudSgpOworICAgIHZpcnR1YWwgdm9pZCBzaG93Q29u
dGV4dE1lbnUoKSBPVkVSUklERTsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwotICAgIHZpcnR1YWwgdm9pZCBz
Y2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaFJv
b3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hy
b25pemF0aW9uKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRp
bmdMYXllclN5bmMoKSBPVkVSUklERTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi0gICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNh
dGlvblByZXNlbnRlcigpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdCBPVkVSUklERTsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNo
RXZlbnRzKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMoYm9vbCkgT1ZF
UlJJREU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TGFzdFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpOworICAgIHZpcnR1YWwgdm9pZCBzZXRMYXN0
U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9y
RWxlbWVudChjb25zdCBXZWJDb3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQpOwotICAg
IHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdEZ1bGxTY3JlZW5MYXllcihXZWJDb3Jl
OjpHcmFwaGljc0xheWVyKik7CisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZv
ckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCosIGJvb2wgd2l0aEtleWJvYXJkKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3Jl
OjpFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChXZWJDb3JlOjpFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIE9WRVJSSURFOwog
I2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpOworICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBPVkVSUklE
RTsKICNlbmRpZgogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFZpZXdwb3J0RGF0YURp
ZENoYW5nZShjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFZpZXdwb3J0RGF0YURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFN0YXJ0UnViYmVyQmFuZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0ZVJ1YmJlckJhbmRG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRBbmltYXRlZFNjcm9sbCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBkaWRDb21wbGV0ZUFuaW1hdGVkU2Nyb2xsKCkgY29uc3Q7CisgICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0UnViYmVyQmFuZEZvckZyYW1lKFdlYkNvcmU6OkZyYW1lKiwgY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21wbGV0ZVJ1YmJlckJhbmRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRBbmlt
YXRlZFNjcm9sbCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb21wbGV0
ZUFuaW1hdGVkU2Nyb2xsKCkgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb24pIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTY3JvbGxlclRo
dW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbikgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIG51bVdo
ZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQodW5zaWduZWQpOworICAgIHZpcnR1YWwgdm9pZCBudW1X
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSBPVkVSUklERTsKIAogICAgIFN0cmlu
ZyBtX2NhY2hlZFRvb2xUaXA7CiAgICAgbXV0YWJsZSBSZWZQdHI8V2ViRnJhbWU+IG1fY2FjaGVk
RnJhbWVTZXRMYXJnZXN0RnJhbWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5o
CShyZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjEgKzQz
LDIxIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCk7
CiAgICAgCiAjaWYgVVNFKENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCi0gICAgdmlydHVh
bCBQYXNzT3duUHRyPFdlYkNvcmU6OkNvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25Q
dHI8V2ViQ29yZTo6Q29udGV4dE1lbnU+KTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViQ29y
ZTo6Q29udGV4dE1lbnU+IGN1c3RvbWl6ZU1lbnUoUGFzc093blB0cjxXZWJDb3JlOjpDb250ZXh0
TWVudT4pIE9WRVJSSURFOwogI2Vsc2UKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uIGdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKFdlYkNvcmU6OkNvbnRl
eHRNZW51Kik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBn
ZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJS
SURFOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdl
YkNvcmU6OkNvbnRleHRNZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51Kik7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYkNvcmU6OkNvbnRleHRN
ZW51SXRlbSosIGNvbnN0IFdlYkNvcmU6OkNvbnRleHRNZW51KikgT1ZFUlJJREU7CiAgICAgCi0g
ICAgdmlydHVhbCB2b2lkIGRvd25sb2FkVVJMKGNvbnN0IFdlYkNvcmU6OktVUkwmIHVybCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKik7Ci0g
ICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29u
c3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BTcGVha2luZygpOworICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1l
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHN0b3BTcGVha2luZygpIE9WRVJSSURFOwogICAgIAogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpOworICAgIHZpcnR1YWwgdm9p
ZCBzZWFyY2hXaXRoU3BvdGxpZ2h0KCkgT1ZFUlJJREU7CiAjZW5kaWYKICAgICAKICAgICBXZWJQ
YWdlKiBtX3BhZ2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgJKHJldmlzaW9uIDk1
ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRh
YmFzZU1hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllcikgY29uc3Q7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXJDbGllbnQK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVy
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2Rp
ZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZGVudGlmaWVyKSBPVkVSUklERTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEcmFnQ2xpZW50LmgJKHJldmlzaW9uIDk1ODIxKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDIwICs1MCwyMCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGlu
YXRpb25BY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKik7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQ
ZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNsaXBib2FyZCopOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRy
YWdEYXRhKik7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3Vy
Y2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2Vi
Q29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDbGlw
Ym9hcmQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFj
dGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSopIE9WRVJSSURFOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0Zv
clBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgT1ZFUlJJREU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZVJlZiBkcmFnSW1h
Z2UsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBldmVudFBvcywgV2ViQ29yZTo6Q2xpcGJvYXJkKiwgV2ViQ29yZTo6RnJh
bWUqLCBib29sIGxpbmtEcmFnID0gZmFsc2UpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWco
V2ViQ29yZTo6RHJhZ0ltYWdlUmVmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0ltYWdl
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIFdlYkNvcmU6OkNsaXBi
b2FyZCosIFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBsaW5rRHJhZyA9IGZhbHNlKSBPVkVSUklERTsK
IAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJh
Z0ltYWdlKE5TUGFzdGVib2FyZCosIERPTUVsZW1lbnQqLCBOU1VSTCosIE5TU3RyaW5nKiwgV2Vi
Q29yZTo6RnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KE5TUGFzdGVib2FyZCosIERPTUVsZW1lbnQqLCBOU1VSTCosIE5TU3RyaW5nKiwgV2ViQ29yZTo6
RnJhbWUqKSBPVkVSUklERTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRyYWdFbmRlZCgp
OworICAgIHZpcnR1YWwgdm9pZCBkcmFnRW5kZWQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29u
dHJvbGxlckRlc3Ryb3llZCgpIE9WRVJSSURFOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwogICAg
IApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMSwxNCArMTExLDYgQEAgaW50IFdlYkVkaXRvckNsaWVudDo6
c3BlbGxDaGVja2VyRG9jdW1lbgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotICAgIAotYm9vbCBX
ZWJFZGl0b3JDbGllbnQ6OmlzRWRpdGFibGUoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi0KIGJvb2wgV2ViRWRpdG9yQ2xpZW50OjpzaG91bGRCZWdp
bkVkaXRpbmcoUmFuZ2UqIHJhbmdlKQogewogICAgIGJvb2wgcmVzdWx0ID0gbV9wYWdlLT5pbmpl
Y3RlZEJ1bmRsZUVkaXRvckNsaWVudCgpLnNob3VsZEJlZ2luRWRpdGluZyhtX3BhZ2UsIHJhbmdl
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSwxMTMgKzQxLDExMSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIHBh
Z2VEZXN0cm95ZWQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWxldGVS
YW5nZShXZWJDb3JlOjpSYW5nZSopOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93RGVsZXRl
SW50ZXJmYWNlKFdlYkNvcmU6OkhUTUxFbGVtZW50Kik7Ci0gICAgdmlydHVhbCBib29sIHNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5n
V2hpdGVzcGFjZUVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51b3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxs
Q2hlY2tpbmcoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpOwotICAgIHZpcnR1YWwg
aW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZERl
bGV0ZVJhbmdlKFdlYkNvcmU6OlJhbmdlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZFNob3dEZWxldGVJbnRlcmZhY2UoV2ViQ29yZTo6SFRNTEVsZW1lbnQqKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2lu
ZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBpbnQgc3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSBPVkVSUklE
RTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFZGl0YWJsZSgpOwotCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdlKik7Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6
RWRpdG9ySW5zZXJ0QWN0aW9uKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlv
bik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6
UmFuZ2UqIGZyb21SYW5nZSwgV2ViQ29yZTo6UmFuZ2UqIHRvUmFuZ2UsIFdlYkNvcmU6OkVBZmZp
bml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZyk7CisgICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2lu
RWRpdGluZyhXZWJDb3JlOjpSYW5nZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJhbmdlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHNob3VsZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29y
ZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRv
ckluc2VydEFjdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNl
bGVjdGVkUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqIGZyb21SYW5nZSwgV2ViQ29yZTo6UmFuZ2UqIHRv
UmFuZ2UsIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgT1ZFUlJJREU7
CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoV2ViQ29yZTo6Q1NTU3R5
bGVEZWNsYXJhdGlvbiosIFdlYkNvcmU6OlJhbmdlKik7Ci0gICAgdmlydHVhbCBib29sIHNob3Vs
ZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2UqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShXZWJDb3JlOjpDU1NTdHlsZURlY2xh
cmF0aW9uKiwgV2ViQ29yZTo6UmFuZ2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpSYW5nZSop
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpOwotICAgIHZp
cnR1YWwgdm9pZCByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbigpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0
aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNldFNlbGVjdGlvblR5cGVzRm9yUGFzdGVib2FyZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRW5kRWRpdGluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNl
bGVjdGlvblRvUGFzdGVib2FyZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRT
ZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNvcmU6OkVkaXRDb21t
YW5kPik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclJlZG8oUGFzc1JlZlB0
cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRv
T3BlcmF0aW9ucygpOwotCi0gICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJh
bWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNhblBhc3Rl
KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBjYW5VbmRvKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJDb21tYW5kRm9yVW5kbyhQYXNzUmVmUHRyPFdlYkNv
cmU6OkVkaXRDb21tYW5kPikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29t
bWFuZEZvclJlZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29tbWFuZD4pIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpIE9WRVJSSURFOworCisg
ICAgdmlydHVhbCBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRW
YWx1ZSkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhblBhc3RlKFdlYkNvcmU6
OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBjYW5VbmRvKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhblJlZG8o
KSBjb25zdCBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgdW5kbygpOwotICAgIHZp
cnR1YWwgdm9pZCByZWRvKCk7CisgICAgdmlydHVhbCB2b2lkIHVuZG8oKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVkbygpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUtleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopOwotICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKFdl
YkNvcmU6OktleWJvYXJkRXZlbnQqKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhXZWJDb3JlOjpFbGVtZW50Kik7Ci0gICAgdmly
dHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50Kik7Ci0g
ICAgdmlydHVhbCBib29sIGRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChXZWJDb3JlOjpFbGVt
ZW50KiwgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2ls
bEJlRGVsZXRlZEluVGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2ViQ29yZTo6RWxlbWVudCopOworICAgIHZpcnR1
YWwgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5nKFdlYkNvcmU6OkVs
ZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZp
ZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZG9UZXh0
RmllbGRDb21tYW5kRnJvbUV2ZW50KFdlYkNvcmU6OkVsZW1lbnQqLCBXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5U
ZXh0RmllbGQoV2ViQ29yZTo6RWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0
ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50KikgT1ZFUlJJREU7CiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmco
TlNVUkwgKik7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVu
dEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICosIFZlY3Rv
cjwgUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4gPiYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKE5TUGFzdGVib2FyZCAqKTsKLSAgICB2aXJ0dWFsIE5T
VVJMKiBjYW5vbmljYWxpemVVUkwoTlNVUkwqKTsKLSAgICB2aXJ0dWFsIE5TVVJMKiBjYW5vbmlj
YWxpemVVUkxTdHJpbmcoTlNTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIE5TU3RyaW5nICp1c2VyVmlz
aWJsZVN0cmluZyhOU1VSTCAqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkRvY3Vt
ZW50RnJhZ21lbnQqIGRvY3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJp
YnV0ZWRTdHJpbmcgKiwgVmVjdG9yPCBSZWZQdHI8V2ViQ29yZTo6QXJjaGl2ZVJlc291cmNlPiA+
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoTlNQ
YXN0ZWJvYXJkICopIE9WRVJSSURFOworICAgIHZpcnR1YWwgTlNVUkwqIGNhbm9uaWNhbGl6ZVVS
TChOU1VSTCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgTlNVUkwqIGNhbm9uaWNhbGl6ZVVSTFN0
cmluZyhOU1N0cmluZyopIE9WRVJSSURFOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIHVwcGVyY2Fz
ZVdvcmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgbG93ZXJjYXNlV29yZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBjYXBpdGFsaXplV29yZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzaG93U3Vic3RpdHV0aW9u
c1BhbmVsKGJvb2wgc2hvdyk7Ci0gICAgdmlydHVhbCBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElz
U2hvd2luZygpOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpOwot
ICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwot
ICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpOwotICAg
IHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpOwotICAgIHZpcnR1YWwgdm9p
ZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCk7Ci0gICAgdmlydHVhbCBib29sIGlz
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpOwotICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0
aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1
dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOworICAgIHZpcnR1YWwgdm9pZCB1cHBlcmNhc2VX
b3JkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxvd2VyY2FzZVdvcmQoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FwaXRhbGl6ZVdvcmQoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sIHNob3cpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxl
ZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGlj
RGFzaFN1YnN0aXR1dGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9n
Z2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKSBPVkVSUklERTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIGJvb2wgZXhlY3V0ZVBlbmRpbmdFZGl0
b3JDb21tYW5kcyhXZWJDb3JlOjpGcmFtZSosIFZlY3RvcjxXVEY6OlN0cmluZz4sIGJvb2wpOwot
ICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25zdCBXZWJDb3JlOjpLZXli
b2FyZEV2ZW50KiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpOworICAgIGJvb2wgZXhlY3V0ZVBlbmRp
bmdFZGl0b3JDb21tYW5kcyhXZWJDb3JlOjpGcmFtZSosIFZlY3RvcjxXVEY6OlN0cmluZz4sIGJv
b2wpIE9WRVJSSURFOworICAgIHZvaWQgZ2V0RWRpdG9yQ29tbWFuZHNGb3JLZXlFdmVudChjb25z
dCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50KiwgVmVjdG9yPFdURjo6U3RyaW5nPiYpIE9WRVJSSURF
OwogI2VuZGlmCiAKLSAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSB7IHJldHVy
biB0aGlzOyB9CisgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgIE9WRVJSSURF
IHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERv
Y3VtZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3Qg
U3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVs
bGluZ0xlbmd0aCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9u
Rm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCk7Ci0gICAgdmly
dHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwg
VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24s
IGludCogYmFkR3JhbW1hckxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIGlnbm9yZVdvcmRJblNw
ZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxl
YXJuV29yZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tT
cGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGlu
Z0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBT
dHJpbmcmIG1pc3NwZWxsZWRXb3JkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tH
cmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8V2ViQ29yZTo6
R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFy
TGVuZ3RoKSBPVkVSUklERTsKICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5H
X09OX0xFT1BBUkQpCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0
IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBj
aGVja2luZ1R5cGVzLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cyk7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0
ZXh0LCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5
cGVzLCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykgT1ZFUlJJ
REU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmIGRldGFp
bCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dTcGVsbGluZ1VJKGJvb2wgc2hv
dyk7Ci0gICAgdmlydHVhbCBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZ2V0R3Vlc3Nlc0ZvcldvcmQoY29uc3QgU3RyaW5nJiB3b3JkLCBjb25zdCBTdHJpbmcm
IGNvbnRleHQsIFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNldElucHV0TWV0aG9kU3RhdGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RT
dGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5
cGVNYXNrLCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVs
bGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3Jh
bW1hckRldGFpbCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJ
V2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBzcGVsbGluZ1VJSXNTaG93aW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdldEd1
ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBjb250ZXh0LCBW
ZWN0b3I8U3RyaW5nPiYgZ3Vlc3NlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZXRJbnB1dE1ldGhvZFN0YXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElucHV0
TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdUeXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKSBPVkVSUklERTsKICNp
ZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1NOT1dfTEVPUEFSRCkKLSAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29ycmVjdGlvblBh
bmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAgIHZp
cnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZv
ckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpDb3JyZWN0aW9uUGFu
ZWxJbmZvOjpQYW5lbFR5cGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hP
ZlJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYWx0ZXJuYXRpdmVS
ZXBsYWNlbWVudFN0cmluZ3MpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNtaXNzQ29y
cmVjdGlvblBhbmVsKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGRpc21pc3NDb3JyZWN0aW9uUGFuZWxTb29u
KFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdDb3JyZWN0aW9uUGFuZWwpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKEF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKSBPVkVSUklERTsKICNlbmRpZgogICAgIFdlYlBhZ2UqIG1f
cGFnZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNp
b24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU4LDExICsyNTgsNiBA
QCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZExvYWRSZXNv
dXJjZUJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCkKIHsKICAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE4
MSArNDMsMTgwIEBAIHB1YmxpYzoKICAgICBib29sIGZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSGFzQ3VzdG9tUmVwcmVzZW50YXRpb247IH0KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3
KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0hUTUxWaWV3KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBPVkVSUklERTsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGZv
cmNlTGF5b3V0Rm9yTm9uSFRNTCgpOworICAgIHZpcnR1YWwgdm9pZCBtYWtlUmVwcmVzZW50YXRp
b24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Zm9yY2VMYXlvdXQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yY2VMYXlvdXRGb3JO
b25IVE1MKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Ny
b2xsKCk7CisgICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgT1ZFUlJJREU7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDIoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MygpOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZy
b21QYXJlbnQyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVu
dDMoKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYXNzaWduSWRlbnRpZmllclRv
SW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZpcnR1YWwg
dm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsgICAgICAgIAorICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJikgT1ZFUlJJREU7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7CisgICAgdmlydHVhbCBib29s
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rp
b25TcGFjZSYpIE9WRVJSSURFOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZpcnR1YWwg
Ym9vbCBkaXNwYXRjaERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBpbnQgbGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGRv
dWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFBv
cFN0YXRlV2l0aGluUGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVj
dGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6
Okljb25UeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEZpbmlzaExvYWQoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0
KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KCk7Ci0KLSAgICB2aXJ0
dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKTsKLSAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3Jl
OjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVu
Y3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdl
YkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pOwotICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxQb2xpY3lDaGVjaygpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFdlYkNvcmU6OkhUTUxG
b3JtRWxlbWVudCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0
YXRlPik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJj
ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwotICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1By
b3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBkYXRhTGVuZ3RoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBp
bnQgbGVuZ3RoKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRI
YW5kbGVPbmxvYWRFdmVudHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVEYXRlKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBh
Z2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRo
aW5QYWdlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0
YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFBv
cFN0YXRlV2l0aGluUGFnZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdp
bGxDbG9zZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKFdlYkNvcmU6Okljb25UeXBlKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBPVkVSUklERTsK
KworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0TGF5b3V0KCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KCkgT1ZFUlJJREU7
CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFNob3coKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNv
cmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24sIGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxQb2xpY3lDaGVjaygpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBP
VkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2
ZW50KFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCopIE9WRVJSSURFIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24s
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgT1ZFUlJJREU7CisgICAgCisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkTG9hZE1haW5SZXNvdXJjZShXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3Rh
dGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJikgT1ZFUlJJREU7CiAgICAgCiAgICAgLy8gTWF5YmUgdGhlc2Ug
c2hvdWxkIGdvIGludG8gYSBQcm9ncmVzc1RyYWNrZXJDbGllbnQgc29tZSBkYXkKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RQcm9n
cmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNz
RXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RQcm9n
cmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHNldE1h
aW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0
RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKLSAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgp
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpOwot
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlz
dG9yeUl0ZW0qKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JI
aXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0OwotCi0gICAgdmlydHVhbCB2
b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwotCi0gICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxlRG9l
c05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZp
cnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIAotICAg
IHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZUFz
SFRNTChjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcmVw
cmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUpIGNv
bnN0OwotICAgIHZpcnR1YWwgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNv
bnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdDsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZnJh
bWVMb2FkQ29tcGxldGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0o
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVZpZXdTdGF0
ZSgpOwotICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dyZXNzU3Rh
cnRlZE5vdGlmaWNhdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKSBPVkVSUklERTsKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKSBPVkVSUklERTsK
KyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkgT1ZF
UlJJREU7CisgICAgCisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpE
b2N1bWVudExvYWRlciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRs
ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwg
dm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhcios
IGludCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVHbG9iYWxIaXN0b3J5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCBib29s
IHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdl
YkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVE
b2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVM
b2FkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFOworICAg
IAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlQXNIVE1MKGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByZXBy
ZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIFVSTFNjaGVtZSkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgZ2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxT
Y2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0IE9WRVJSSURFOworICAgIAorICAg
IHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
Rm9yRGF0YVNvdXJjZVJlcGxhY2VtZW50KCkgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdX
aXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBs
YXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNh
Y2hlZEZyYW1lKik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5l
d1BhZ2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJhbWUo
V2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Uo
KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
c3RvcmVGcm9tUGFnZUNhY2hlKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRC
ZWNvbWVGcmFtZXNldChib29sKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNo
ZVBhZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Cisg
ICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkb3dubG9hZChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKICAgICAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OktV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqIG93bmVyRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFy
Z2luV2lkdGgsIGludCBtYXJnaW5IZWlnaHQpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2Zl
ckNoaWxkRnJhbWVUb05ld0RvY3VtZW50KFdlYkNvcmU6OlBhZ2UqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBhZ2UqKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBtYXJnaW5I
ZWlnaHQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRUcmFuc2ZlckNoaWxkRnJhbWVU
b05ld0RvY3VtZW50KFdlYkNvcmU6OlBhZ2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJMb2FkaW5nUmVzb3VyY2VGcm9tUGFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlBhZ2UqKSBPVkVSUklE
RTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQ
bHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSk7Ci0gICAgdmly
dHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lk
Z2V0KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVn
aW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sIGxvYWRNYW51YWxseSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1
Z2luV2lkZ2V0KSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUm
LCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VV
UkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+
IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxBcHBsZXRFbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcykgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50
VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBzaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0Zvcklt
YWdlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBj
b25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93
T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBl
cldvcmxkKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZh
aWxhYmxlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBj
b25zdDsgLy8gIk5hdmlnYXRpb24iIGhlcmUgbWVhbnMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHBh
Z2UgdG8gYW5vdGhlciB0aGF0IGVuZHMgdXAgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgorICAg
IHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0IE9WRVJSSURFOyAv
LyAiTmF2aWdhdGlvbiIgaGVyZSBtZWFucyBhIHRyYW5zaXRpb24gZnJvbSBvbmUgcGFnZSB0byBh
bm90aGVyIHRoYXQgZW5kcyB1cCBpbiB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3RlbiA9IHRy
dWUpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBs
aXN0ZW4gPSB0cnVlKSBPVkVSUklERTsKICAgICAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmly
dHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7CisgICAg
dmlydHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgT1ZF
UlJJREU7CiAgICAgCiAjaWYgRU5BQkxFKE1BQ19KQVZBX0JSSURHRSkKLSAgICB2aXJ0dWFsIGpv
YmplY3QgamF2YUFwcGxldChOU1ZpZXcqKTsKKyAgICB2aXJ0dWFsIGpvYmplY3QgamF2YUFwcGxl
dChOU1ZpZXcqKSBPVkVSUklERTsKICNlbmRpZgotICAgIHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25zdDsKKyAgICB2aXJ0
dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNl
KikgY29uc3QgT1ZFUlJJREU7CiAjZW5kaWYKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5F
VFdPUkspCiAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxkIHVzZSB3aWxsQ2FjaGVSZXNwb25z
ZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTcyNTc+LgotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbG9uZyBsb25nIGxlbmd0
aCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsb25nIGxv
bmcgbGVuZ3RoKSBPVkVSUklERTsKICNlbmRpZgogICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBTdHJpbmcmIC8qbWltZVR5cGUqLykgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHNob3VsZFVzZVBsdWdpbkRvY3VtZW50KGNvbnN0IFN0cmluZyYgLypt
aW1lVHlwZSovKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VT
Y3JvbGxPZmZzZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCkg
T1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3Jr
aW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKSBPVkVSUklERTsKIAogICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgIFJlZlB0cjxQ
bHVnaW5WaWV3PiBtX3BsdWdpblZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVu
dC5oCShyZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTkg
KzQxLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB+V2ViR2VvbG9j
YXRpb25DbGllbnQoKTsKKyAgICB2aXJ0dWFsIH5XZWJHZW9sb2NhdGlvbkNsaWVudCgpIE9WRVJS
SURFOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgp
OworICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0g
ICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFVw
ZGF0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzdG9wVXBkYXRpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpHZW9s
b2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okdl
b2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIE9WRVJSSURFOwogCi0gICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7Ci0gICAgdmly
dHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6Okdlb2xvY2F0aW9uKik7
CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9u
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdl
YkNvcmU6Okdlb2xvY2F0aW9uKikgT1ZFUlJJREU7CiAKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCwyMSArNTAsMjEgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CisgICAgdmlydHVh
bCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxp
Z2h0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSBPVkVSUklE
RTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
KSBPVkVSUklERTsKIAogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKLSAgICB2aXJ0dWFsIHZv
aWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKik7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKik7Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBh
Z2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWdl
T3ZlcmxheURlc3Ryb3llZChQYWdlT3ZlcmxheSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvV2ViUGFnZShQYWdlT3ZlcmxheSosIFdlYlBhZ2UqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoUGFnZU92ZXJsYXkqLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkqLCBjb25zdCBXZWJNb3VzZUV2
ZW50JikgT1ZFUlJJREU7CiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiAgICAgUGFnZU92ZXJsYXkq
IG1faGlnaGxpZ2h0T3ZlcmxheTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50LmgJKHJldmlzaW9uIDk1ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSwyMCArMzksMjAgQEAgcHVibGljOgogICAgIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpOwogCiBwcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZExvYWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBm
cm9udGVuZExvYWRlZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBTdHJpbmcgbG9jYWxpemVk
U3RyaW5nc1VSTCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGhpZGRlblBhbmVscygpOworICAgIHZp
cnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBoaWRkZW5QYW5lbHMoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBicmlu
Z1RvRnJvbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzY29ubmVjdEZyb21CYWNrZW5kKCk7CisgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9G
cm9udCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0RnJvbUJhY2tlbmQoKSBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
V2luZG93KCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2ln
bmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIGRldGFjaFdpbmRvdygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIFdlYlBh
Z2UqIG1fcGFnZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJl
dmlzaW9uIDk1ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMjEgKzQzLDIx
IEBAIHByaXZhdGU6CiAgICAgV2ViUGxhdGZvcm1TdHJhdGVnaWVzKCk7CiAgICAgCiAgICAgLy8g
V2ViQ29yZTo6UGxhdGZvcm1TdHJhdGVnaWVzCi0gICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVz
U3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdpblN0cmF0ZWd5KCk7Ci0gICAgdmlydHVhbCBXZWJD
b3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCk7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVn
eSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0
ZVBsdWdpblN0cmF0ZWd5KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpWaXNpdGVk
TGlua1N0cmF0ZWd5KiBjcmVhdGVWaXNpdGVkTGlua1N0cmF0ZWd5KCkgT1ZFUlJJREU7CiAKICAg
ICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29v
a2llc0NoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSBP
VkVSUklERTsKIAogICAgIC8vIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5Ci0gICAgdmlydHVhbCB2
b2lkIHJlZnJlc2hQbHVnaW5zKCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29u
c3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpOworICAgIHZp
cnR1YWwgdm9pZCByZWZyZXNoUGx1Z2lucygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4mKSBPVkVSUklERTsKICAgICB2b2lkIHBvcHVsYXRlUGx1Z2luQ2FjaGUoKTsKIAogICAg
IC8vIFdlYkNvcmU6OlZpc2l0ZWRMaW5rU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaW5r
VmlzaXRlZChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGJhc2VVUkwsIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpOwot
ICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6
TGlua0hhc2gpOworICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2Uq
LCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgYmFzZVVSTCwgY29uc3Qg
V1RGOjpBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpMaW5rSGFzaCkgT1ZF
UlJJREU7CiAKICAgICBib29sIG1fcGx1Z2luQ2FjaGVJc1BvcHVsYXRlZDsKICAgICBib29sIG1f
c2hvdWxkUmVmcmVzaFBsdWdpbnM7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgJKHJldmlzaW9uIDk1ODIx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1l
bnUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZENoYW5nZVNlbGVjdGVkSW5kZXgoaW50IG5ld0luZGV4KTsKICAgICB2b2lkIHNldFRleHRG
b3JJbmRleChpbnQgbmV3SW5kZXgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkZyYW1lVmlldyosIGludCBpbmRleCk7Ci0gICAgdmly
dHVhbCB2b2lkIGhpZGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpOworICAgIHZpcnR1YWwgdm9pZCBz
aG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpGcmFtZVZpZXcqLCBpbnQgaW5k
ZXgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoaWRlKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpc2Nvbm5lY3RDbGllbnQoKSBPVkVSUklERTsKIAogcHJpdmF0ZToKICAgICBXZWJQb3B1cE1l
bnUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNl
YXJjaFBvcHVwTWVudS5oCShyZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDEwICszMCwxMCBAQCBjbGFzcyBXZWJTZWFyY2hQb3B1cE1lbnUgOiBwdWJsaWMgV2Vi
Q29yCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU2VhcmNoUG9wdXBNZW51PiBj
cmVhdGUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwogCi0gICAgdmlydHVh
bCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZl
UmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzZWFyY2hJdGVtcyk7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZWNlbnRTZWFy
Y2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFN0cmluZz4mIHNlYXJj
aEl0ZW1zKTsKLSAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpOworICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBsb2Fk
UmVjZW50U2VhcmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJp
bmc+JiBzZWFyY2hJdGVtcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBP
VkVSUklERTsKIAogcHJpdmF0ZToKICAgICBXZWJTZWFyY2hQb3B1cE1lbnUoV2ViUGFnZSosIFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108491</attachid>
            <date>2011-09-23 10:42:07 -0700</date>
            <delta_ts>2011-09-23 10:49:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68702-20110923104207.patch</filename>
            <type>text/plain</type>
            <size>67618</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1ODMxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDktMjMgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgT1ZFUlJJREUgdG8g
b3ZlcnJpZGVzIG9mIHZpcnR1YWwgbWVtYmVyIGZ1bmN0aW9ucyBpbiBjbGllbnQgY2xhc3Nlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg3MDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNhYmxlIHRo
ZSB3YXJuaW5nIGluIFhjb2RlIGFuZCBWUzIwMDUgZm9yIHVzaW5nIG92ZXJyaWRlIGFuZCBmaW5h
bCB3aGVuIGNvbXBpbGluZyBhcyBDKys5OCwKKyAgICAgICAgYW5kIHJlbW92ZSBXZWJFZGl0b3JD
bGllbnQ6OmlzRWRpdGFibGUsIFdlYkNocm9tZUNsaWVudDo6Zm9ybURpZEZvY3VzLAorICAgICAg
ICBXZWJDaHJvbWVDbGllbnQ6OmZvcm1EaWRCbHVyIGFuZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VCeVhNTEh0dHBSZXF1ZXN0IHNpbmNlCisgICAgICAgIHRo
ZXkgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGVpciByZXNwZWN0aXZlIGJhc2UgY2xhc3Nlcy4K
KyAgICAgICAgCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlv
bkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oOgorICAgICAgICAqIHdpbi9XZWJLaXQyQ29tbW9uLnZz
cHJvcHM6CisKIDIwMTEtMDktMjMgIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxl
bmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBRdEZpbGVEb3dubG9hZGVy
IGN0b3Igc2hvdWxkbid0IGNhbGwgUXRGaWxlRG93bmxvYWRlcjo6b25SZWFkeVJlYWQoKQpJbmRl
eDogU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCShyZXZpc2lv
biA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNvbXBpbGVyVmVy
c2lvbi54Y2NvbmZpZyIKIAorQ0xBTkdfV0FSTl9DWFgwWF9FWFRFTlNJT05TID0gTk87CiBERUJV
R19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKIEdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251OTk7CiBHQ0NfREVCVUdHSU5HX1NZTUJPTFMgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2NiwxNiArNjY2LDYgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvcm1TdGF0ZURpZENoYW5n
ZQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3Jt
RGlkRm9jdXMoY29uc3QgTm9kZSopCi17IAotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgV2ViQ2hyb21lQ2xpZW50Ojpmb3JtRGlkQmx1cihjb25zdCBOb2RlKikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQotCiBib29sIFdlYkNocm9tZUNsaWVudDo6c2VsZWN0SXRlbVdyaXRp
bmdEaXJlY3Rpb25Jc05hdHVyYWwoKQogewogI2lmIFBMQVRGT1JNKFdJTikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCwxODQgKzUwLDE4MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkKiB3ZWJWaWV3KCkgY29u
c3QgeyByZXR1cm4gMDsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0
cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hyb21lRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0Jik7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93UmVjdCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBPVkVS
UklERTsKICAgICAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBwYWdlUmVjdCgpOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHBhZ2VSZWN0KCkgT1ZFUlJJREU7CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5m
b2N1cygpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5UYWtlRm9jdXMoV2Vi
Q29yZTo6Rm9jdXNEaXJlY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29y
ZTo6Rm9jdXNEaXJlY3Rpb24pOworICAgIHZpcnR1YWwgYm9vbCBjYW5UYWtlRm9jdXMoV2ViQ29y
ZTo6Rm9jdXNEaXJlY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMo
V2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGZv
Y3VzZWROb2RlQ2hhbmdlZChXZWJDb3JlOjpOb2RlKik7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3Vz
ZWRGcmFtZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNl
ZE5vZGVDaGFuZ2VkKFdlYkNvcmU6Ok5vZGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXNlZEZyYW1lQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSopIE9WRVJSSURFOwogCiAgICAgLy8g
VGhlIEZyYW1lIHBvaW50ZXIgcHJvdmlkZXMgdGhlIENocm9tZUNsaWVudCB3aXRoIGNvbnRleHQg
YWJvdXQgd2hpY2gKICAgICAvLyBGcmFtZSB3YW50cyB0byBjcmVhdGUgdGhlIG5ldyBQYWdlLiAg
QWxzbywgdGhlIG5ld2x5IGNyZWF0ZWQgd2luZG93CiAgICAgLy8gc2hvdWxkIG5vdCBiZSBzaG93
biB0byB0aGUgdXNlciB1bnRpbCB0aGUgQ2hyb21lQ2xpZW50IG9mIHRoZSBuZXdseQogICAgIC8v
IGNyZWF0ZWQgUGFnZSBoYXMgaXRzIHNob3cgbWV0aG9kIGNhbGxlZC4KLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6
OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdygpOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFnZSogY3JlYXRlV2luZG93KFdlYkNvcmU6OkZyYW1lKiwg
Y29uc3QgV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiwgY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzaG93KCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNh
blJ1bk1vZGFsKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKCk7CisgICAgdmlydHVhbCBi
b29sIGNhblJ1bk1vZGFsKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKCkg
T1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29s
KTsKLSAgICB2aXJ0dWFsIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCk7CisgICAgdmlydHVhbCB2b2lk
IHNldFRvb2xiYXJzVmlzaWJsZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9v
bGJhcnNWaXNpYmxlKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldFN0YXR1
c2JhclZpc2libGUoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIHN0YXR1c2JhclZpc2libGUoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29sKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIE9WRVJSSURFOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2Nyb2xsYmFyc1Zpc2libGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyc1Zpc2li
bGUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkg
T1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJvb2wp
OwotICAgIHZpcnR1YWwgYm9vbCBtZW51YmFyVmlzaWJsZSgpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRNZW51YmFyVmlzaWJsZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWVudWJh
clZpc2libGUoKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzaXphYmxl
KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRSZXNpemFibGUoYm9vbCkgT1ZFUlJJREU7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV2ViQ29yZTo6TWVzc2Fn
ZVNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZVR5cGUsIFdlYkNvcmU6Ok1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VJRCk7CisgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoV2ViQ29y
ZTo6TWVzc2FnZVNvdXJjZSwgV2ViQ29yZTo6TWVzc2FnZVR5cGUsIFdlYkNvcmU6Ok1lc3NhZ2VM
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNh
blJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpOwotICAgIHZpcnR1YWwgYm9vbCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJDb3JlOjpGcmFt
ZSogZnJhbWUpOworICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3dTb29uKCk7CisgICAgdmlydHVhbCB2b2lk
IGNsb3NlV2luZG93U29vbigpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBydW5K
YXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0
dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJp
bmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3JlOjpGcmFt
ZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0
cmluZyYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBT
dHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViQ29yZTo6RnJhbWUqLCBjb25z
dCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZp
cm0oV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJ
TW9kZSgpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6S2V5Ym9hcmRVSU1vZGUga2V5Ym9hcmRVSU1v
ZGUoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dSZXNp
emVyUmVjdCgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dSZXNp
emVyUmVjdCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAotICAgIC8vIE1ldGhvZHMgdXNlZCBieSBI
b3N0V2luZG93LgotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlV2luZG93KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmLCBib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRz
QW5kV2luZG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBib29sKTsKLSAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiwgYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzY3JvbGxPZmZzZXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KTsKKyAgICAvLyBIb3N0V2luZG93IG1lbWJlciBm
dW5jdGlvbiBvdmVycmlkZXMuCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVXaW5kb3coY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlQ29udGVudHNBbmRXaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGJvb2wp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QpIE9WRVJSSURFOwogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQotICAgIHZp
cnR1YWwgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHNjcm9sbE9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVl
c3RlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsT2Zmc2V0KSBPVkVSUklERTsKICNl
bmRpZgotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9XaW5kb3coY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qg
d2luZG93VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0OwotICAgIHZpcnR1
YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBjb250ZW50c1NpemVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1Zp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0OyAvLyBDdXJyZW50bHkgb25seSBNYWMg
aGFzIGEgbm9uIGVtcHR5IGltcGxlbWVudGF0aW9uLgotICAgIC8vIEVuZCBtZXRob2RzIHVzZWQg
YnkgSG9zdFdpbmRvdy4KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2lu
ZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtUGFnZUNsaWVudCBwbGF0Zm9y
bVBhZ2VDbGllbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNT
aXplQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKSBjb25zdCBPVkVSUklERTsgLy8gQ3VycmVudGx5IG9ubHkgTWFjIGhh
cyBhIG5vbiBlbXB0eSBpbXBsZW1lbnRhdGlvbi4KIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRN
aXNzaW5nUGx1Z2luTWVzc2FnZUJlQnV0dG9uKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIG1p
c3NpbmdQbHVnaW5CdXR0b25DbGlja2VkKFdlYkNvcmU6OkVsZW1lbnQqKSBjb25zdDsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkTWlzc2luZ1BsdWdpbk1lc3NhZ2VCZUJ1dHRvbigpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJD
b3JlOjpFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
YmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlm
aWVyRmxhZ3MpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChj
b25zdCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykgT1ZF
UlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6VGV4dERpcmVjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHNldFRvb2xUaXAoY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbikgT1ZFUlJJREU7CiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIHByaW50KFdlYkNvcmU6OkZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIHBy
aW50KFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CiAgICAgCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZy
YW1lKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOworICAgIHZpcnR1YWwgdm9pZCBleGNl
ZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
TmFtZSkgT1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpCi0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRNYXhBcHBDYWNoZVNpemUoaW50NjRfdCBz
cGFjZU5lZWRlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHNwYWNlTmVlZGVkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVl
ZGVkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVP
cmlnaW5RdW90YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQp
IE9WRVJSSURFOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAg
dmlydHVhbCB2b2lkIGRhc2hib2FyZFJlZ2lvbnNDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lk
IGRhc2hib2FyZFJlZ2lvbnNDaGFuZ2VkKCkgT1ZFUlJJREU7CiAjZW5kaWYKIAotICAgIHZpcnR1
YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcygpOworICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0
ZVZpc2l0ZWRMaW5rcygpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IGN1c3RvbUhpZ2hsaWdodFJlY3QoV2ViQ29yZTo6Tm9kZSosIGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxpbmVSZWN0KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXN0b21IaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSosIGNvbnN0
IFdURjo6QXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJveFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbGluZVJlY3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmVoaW5kVGV4dCwgYm9vbCBlbnRpcmVMaW5lKTsK
KyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjdXN0b21IaWdobGlnaHRSZWN0KFdlYkNv
cmU6Ok5vZGUqLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBsaW5lUmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q3Vz
dG9tSGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm94UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBsaW5lUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBi
ZWhpbmRUZXh0LCBib29sIGVudGlyZUxpbmUpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5n
JiBwYXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBn
ZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5n
JiBwYXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBnZW5lcmF0ZVJlcGxhY2VtZW50RmlsZShjb25zdCBTdHJpbmcmIHBhdGgpIE9WRVJS
SURFOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBwYWludEN1c3RvbVNjcm9sbGJhcihXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpT
Y3JvbGxiYXJDb250cm9sU2l6ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OlNjcm9sbGJhckNvbnRyb2xTdGF0ZSwgV2ViQ29yZTo6U2Nyb2xsYmFyUGFy
dCBwcmVzc2VkUGFydCwgYm9vbCB2ZXJ0aWNhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgdmFsdWUsIGZsb2F0IHByb3BvcnRpb24sIFdlYkNvcmU6OlNjcm9s
bGJhckNvbnRyb2xQYXJ0TWFzayk7Ci0gICAgdmlydHVhbCBib29sIHBhaW50Q3VzdG9tU2Nyb2xs
Q29ybmVyKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB2YWx1ZSwg
ZmxvYXQgcHJvcG9ydGlvbiwgV2ViQ29yZTo6U2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21TY3JvbGxDb3JuZXIoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgT1ZFUlJJREU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDdXN0b21PdmVyaGFuZ0FyZWEoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50Q3Vz
dG9tT3ZlcmhhbmdBcmVhKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIE9WRVJSSURFOwogCiAgICAgLy8gVGhpcyBpcyBhbiBhc3luY2hyb25vdXMgY2FsbC4gVGhl
IENocm9tZUNsaWVudCBjYW4gZGlzcGxheSBVSSBhc2tpbmcgdGhlIHVzZXIgZm9yIHBlcm1pc3Np
b24KICAgICAvLyB0byB1c2UgR2VvbG9jb2NhdGlvbi4gVGhlIENocm9tZUNsaWVudCBtdXN0IGNh
bGwgR2VvbG9jYXRpb246OnNldFNob3VsZENsZWFyQ2FjaGUoKSBhcHByb3ByaWF0ZWx5LgotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29y
ZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwotICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBX
ZWJDb3JlOjpHZW9sb2NhdGlvbiopOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRp
b25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlv
biopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiop
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFt
ZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KTsKLSAgICB2aXJ0dWFsIHZvaWQg
bG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29u
TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZSos
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZp
bGVJY29uTG9hZGVyKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNv
bnN0IFdlYkNvcmU6OkN1cnNvciYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5V
bnRpbE1vdXNlTW92ZXMoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBX
ZWJDb3JlOjpDdXJzb3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlk
ZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIE9WRVJSSURFOwogCiAgICAgLy8gTm90aWZpY2F0aW9u
IHRoYXQgdGhlIGdpdmVuIGZvcm0gZWxlbWVudCBoYXMgY2hhbmdlZC4gVGhpcyBmdW5jdGlvbgog
ICAgIC8vIHdpbGwgYmUgY2FsbGVkIGZyZXF1ZW50bHksIHNvIGhhbmRsaW5nIHNob3VsZCBiZSB2
ZXJ5IGZhc3QuCi0gICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpOb2RlKik7CisgICAgdmlydHVhbCB2b2lkIGZvcm1TdGF0ZURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpOb2RlKikgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEZvY3Vz
KGNvbnN0IFdlYkNvcmU6Ok5vZGUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9ybURpZEJsdXIoY29u
c3QgV2ViQ29yZTo6Tm9kZSopOwotCi0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5n
RGlyZWN0aW9uSXNOYXR1cmFsKCk7Ci0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1l
bnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6UG9wdXBNZW51PiBjcmVhdGVQb3B1cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KikgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJh
bCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93
c01lbnVXcml0aW5nRGlyZWN0aW9uKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNs
aWVudCopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpT
ZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVD
bGllbnQqKSBjb25zdCBPVkVSUklERTsKIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2hvd0Nv
bnRleHRNZW51KCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29y
ZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hS
b290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNo
cm9uaXphdGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0
aW5nTGF5ZXJTeW5jKCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmlj
YXRpb25QcmVzZW50ZXIoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlv
blByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QgT1ZFUlJJREU7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdmlydHVhbCB2b2lkIG5lZWRUb3Vj
aEV2ZW50cyhib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIE9W
RVJSSURFOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShXSU4pCi0gICAgdmlydHVhbCB2b2lkIHNl
dExhc3RTZXRDdXJzb3JUb0N1cnJlbnRDdXJzb3IoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGFz
dFNldEN1cnNvclRvQ3VycmVudEN1cnNvcigpIE9WRVJSSURFOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZv
ckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCosIGJvb2wgd2l0aEtleWJvYXJkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpF
bGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJvb3RGdWxsU2NyZWVuTGF5ZXIoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxTY3JlZW5G
b3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqLCBib29sIHdpdGhLZXlib2FyZCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29y
ZTo6RWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRSb290RnVsbFNjcmVlbkxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBPVkVSUklERTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RS
ZXNwb25kZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgT1ZFUlJJ
REU7CiAjZW5kaWYKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hWaWV3cG9ydERhdGFE
aWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hWaWV3cG9ydERhdGFEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
Vmlld3BvcnRBcmd1bWVudHMmKSBjb25zdCBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRTdGFydFJ1YmJlckJhbmRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVSdWJiZXJCYW5k
Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0QW5pbWF0ZWRTY3JvbGwoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVBbmltYXRlZFNjcm9sbCgpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydFJ1YmJlckJhbmRGb3JGcmFtZShXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVSdWJiZXJCYW5kRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0QW5p
bWF0ZWRTY3JvbGwoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxl
dGVBbmltYXRlZFNjcm9sbCgpIGNvbnN0IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6
U2Nyb2xsRGlyZWN0aW9uKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJU
aHVtYklzVmlzaWJsZUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb24pIGNvbnN0IE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBudW1X
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgbnVt
V2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZCh1bnNpZ25lZCkgT1ZFUlJJREU7CiAKICAgICBTdHJp
bmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdlYkZyYW1lPiBtX2NhY2hl
ZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDIxICs0
MywyMSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgp
OwogICAgIAogI2lmIFVTRShDUk9TU19QTEFURk9STV9DT05URVhUX01FTlVTKQotICAgIHZpcnR1
YWwgUGFzc093blB0cjxXZWJDb3JlOjpDb250ZXh0TWVudT4gY3VzdG9taXplTWVudShQYXNzT3du
UHRyPFdlYkNvcmU6OkNvbnRleHRNZW51Pik7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNv
cmU6OkNvbnRleHRNZW51PiBjdXN0b21pemVNZW51KFBhc3NPd25QdHI8V2ViQ29yZTo6Q29udGV4
dE1lbnU+KSBPVkVSUklERTsKICNlbHNlCi0gICAgdmlydHVhbCBXZWJDb3JlOjpQbGF0Zm9ybU1l
bnVEZXNjcmlwdGlvbiBnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhXZWJDb3JlOjpDb250
ZXh0TWVudSopOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoV2ViQ29yZTo6Q29udGV4dE1lbnUqKSBPVkVS
UklERTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChX
ZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopOwor
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChXZWJDb3JlOjpDb250ZXh0
TWVudUl0ZW0qLCBjb25zdCBXZWJDb3JlOjpDb250ZXh0TWVudSopIE9WRVJSSURFOwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBXZWJDb3JlOjpLVVJMJiB1cmwpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKik7
Ci0gICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNv
bnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNvbnN0IFdlYkNvcmU6OkZyYW1lKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGxvb2tVcEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFt
ZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc1NwZWFraW5nKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSBPVkVSUklERTsKICAgICAKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpIE9WRVJSSURFOwogI2VuZGlmCiAgICAgCiAgICAgV2Vi
UGFnZSogbV9wYWdlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCShyZXZpc2lvbiA5
NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0
YWJhc2VNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDggKzY0LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRlbGV0ZURhdGFiYXNlc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpIGNvbnN0OwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyQ2xpZW50
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmll
cik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9k
aWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlSWRlbnRpZmllcikgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRHJhZ0NsaWVudC5oCShyZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwyMCArNTAsMjAgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSopOwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
UGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDbGlwYm9hcmQqKTsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpE
cmFnRGF0YSopOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291
cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2lu
dCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q2xp
cGJvYXJkKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25B
Y3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoV2ViQ29yZTo6RHJhZ0RhdGEqKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tG
b3JQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIE9WRVJSSURFOwog
Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2VSZWYgZHJhZ0lt
YWdlLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIFdlYkNvcmU6OkNsaXBib2FyZCosIFdlYkNvcmU6OkZy
YW1lKiwgYm9vbCBsaW5rRHJhZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFn
KFdlYkNvcmU6OkRyYWdJbWFnZVJlZiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdJbWFn
ZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGV2ZW50UG9zLCBXZWJDb3JlOjpDbGlw
Ym9hcmQqLCBXZWJDb3JlOjpGcmFtZSosIGJvb2wgbGlua0RyYWcgPSBmYWxzZSkgT1ZFUlJJREU7
CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZURy
YWdJbWFnZShOU1Bhc3RlYm9hcmQqLCBET01FbGVtZW50KiwgTlNVUkwqLCBOU1N0cmluZyosIFdl
YkNvcmU6OkZyYW1lKik7CisgICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFn
ZShOU1Bhc3RlYm9hcmQqLCBET01FbGVtZW50KiwgTlNVUkwqLCBOU1N0cmluZyosIFdlYkNvcmU6
OkZyYW1lKikgT1ZFUlJJREU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBkcmFnRW5kZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ0VuZGVkKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ0Nv
bnRyb2xsZXJEZXN0cm95ZWQoKSBPVkVSUklERTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAJKHJldmlzaW9uIDk1ODIxKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsMTQgKzExMSw2IEBAIGludCBXZWJFZGl0b3JDbGllbnQ6
OnNwZWxsQ2hlY2tlckRvY3VtZW4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLSAgICAKLWJvb2wg
V2ViRWRpdG9yQ2xpZW50Ojppc0VkaXRhYmxlKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIHJldHVybiBmYWxzZTsKLX0KLQotCiBib29sIFdlYkVkaXRvckNsaWVudDo6c2hvdWxkQmVn
aW5FZGl0aW5nKFJhbmdlKiByYW5nZSkKIHsKICAgICBib29sIHJlc3VsdCA9IG1fcGFnZS0+aW5q
ZWN0ZWRCdW5kbGVFZGl0b3JDbGllbnQoKS5zaG91bGRCZWdpbkVkaXRpbmcobV9wYWdlLCByYW5n
ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgJKHJldmlzaW9uIDk1ODIxKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsMTEzICs0MSwxMTEgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgdm9pZCBw
YWdlRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRl
UmFuZ2UoV2ViQ29yZTo6UmFuZ2UqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd0RlbGV0
ZUludGVyZmFjZShXZWJDb3JlOjpIVE1MRWxlbWVudCopOwotICAgIHZpcnR1YWwgYm9vbCBzbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKCk7Ci0gICAgdmlydHVhbCBib29sIGlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVs
bENoZWNraW5nKCk7Ci0gICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgp
OwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKTsKLSAgICB2aXJ0dWFs
IGludCBzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
ZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRTaG93RGVsZXRlSW50ZXJmYWNlKFdlYkNvcmU6OkhUTUxFbGVtZW50KikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tp
bmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgT1ZFUlJJ
REU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzRWRpdGFibGUoKTsKLQotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKTsKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopOwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6
OkVkaXRvckluc2VydEFjdGlvbik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQo
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rp
b24pOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6
OlJhbmdlKiBmcm9tUmFuZ2UsIFdlYkNvcmU6OlJhbmdlKiB0b1JhbmdlLCBXZWJDb3JlOjpFQWZm
aW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCZWdp
bkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUqLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNv
cmU6OkVkaXRvckluc2VydEFjdGlvbikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0
b3JJbnNlcnRBY3Rpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VT
ZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFuZ2UsIFdlYkNvcmU6OlJhbmdlKiB0
b1JhbmdlLCBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIE9WRVJSSURF
OwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBseVN0eWxlKFdlYkNvcmU6OkNTU1N0
eWxlRGVjbGFyYXRpb24qLCBXZWJDb3JlOjpSYW5nZSopOwotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OlJhbmdlKik7
CisgICAgdmlydHVhbCBib29sIHNob3VsZEFwcGx5U3R5bGUoV2ViQ29yZTo6Q1NTU3R5bGVEZWNs
YXJhdGlvbiosIFdlYkNvcmU6OlJhbmdlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2Uq
KSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWdpbkVkaXRpbmcoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRp
dGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRTZWxlY3Rpb25UeXBlc0ZvclBhc3RlYm9hcmQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cygpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIGRpZEVuZEVkaXRpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkV3JpdGVT
ZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0
U2VsZWN0aW9uVHlwZXNGb3JQYXN0ZWJvYXJkKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJDb3JlOjpFZGl0Q29t
bWFuZD4pOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNvbW1hbmRGb3JSZWRvKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVk
b09wZXJhdGlvbnMoKTsKLQotICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KFdlYkNvcmU6OkZy
YW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0
ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgY2FuVW5kbygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQ29tbWFuZEZvclVuZG8oUGFzc1JlZlB0cjxXZWJD
b3JlOjpFZGl0Q29tbWFuZD4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckNv
bW1hbmRGb3JSZWRvKFBhc3NSZWZQdHI8V2ViQ29yZTo6RWRpdENvbW1hbmQ+KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKSBPVkVSUklERTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShXZWJDb3Jl
OjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuVW5kbygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRv
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHVuZG8oKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVkbygpOworICAgIHZpcnR1YWwgdm9pZCB1bmRvKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVLZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2FyZEV2ZW50
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihX
ZWJDb3JlOjpLZXlib2FyZEV2ZW50KikgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
IHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhXZWJDb3JlOjpFbGVtZW50Kik7Ci0gICAgdmlydHVh
bCB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoV2ViQ29yZTo6RWxlbWVudCopOwot
ICAgIHZpcnR1YWwgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoV2ViQ29yZTo6RWxl
bWVudCosIFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFdp
bGxCZURlbGV0ZWRJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2
b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dEZpZWxkRGlkRW5kRWRpdGluZyhXZWJDb3JlOjpF
bGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRG
aWVsZChXZWJDb3JlOjpFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRvVGV4
dEZpZWxkQ29tbWFuZEZyb21FdmVudChXZWJDb3JlOjpFbGVtZW50KiwgV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZElu
VGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2ViQ29yZTo6RWxlbWVudCopIE9WRVJSSURFOwogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIHZpcnR1YWwgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5n
KE5TVVJMICopOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCogZG9jdW1l
bnRGcmFnbWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqLCBWZWN0
b3I8IFJlZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+ID4mKTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0SW5zZXJ0aW9uUGFzdGVib2FyZChOU1Bhc3RlYm9hcmQgKik7Ci0gICAgdmlydHVhbCBO
U1VSTCogY2Fub25pY2FsaXplVVJMKE5TVVJMKik7Ci0gICAgdmlydHVhbCBOU1VSTCogY2Fub25p
Y2FsaXplVVJMU3RyaW5nKE5TU3RyaW5nKik7CisgICAgdmlydHVhbCBOU1N0cmluZyAqdXNlclZp
c2libGVTdHJpbmcoTlNVUkwgKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEb2N1
bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRy
aWJ1dGVkU3RyaW5nICosIFZlY3RvcjwgUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4g
PiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNlcnRpb25QYXN0ZWJvYXJkKE5T
UGFzdGVib2FyZCAqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5TVVJMKiBjYW5vbmljYWxpemVV
UkwoTlNVUkwqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIE5TVVJMKiBjYW5vbmljYWxpemVVUkxT
dHJpbmcoTlNTdHJpbmcqKSBPVkVSUklERTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCB1cHBlcmNh
c2VXb3JkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGxvd2VyY2FzZVdvcmQoKTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2FwaXRhbGl6ZVdvcmQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0aXR1dGlv
bnNQYW5lbChib29sIHNob3cpOwotICAgIHZpcnR1YWwgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJ
c1Nob3dpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpOwotICAgIHZp
cnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uKCk7Ci0gICAgdmlydHVhbCBi
b29sIGlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpOwotICAgIHZpcnR1YWwgYm9vbCBp
c0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9n
Z2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCk7Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVB
dXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBwZXJjYXNl
V29yZCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBsb3dlcmNhc2VXb3JkKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNhcGl0YWxpemVXb3JkKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBzaG93KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJs
ZWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljTGlua0RldGVj
dGlvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0
dXRpb25FbmFibGVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0
aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRv
Z2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgT1ZFUlJJREU7
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBib29sIGV4ZWN1dGVQZW5kaW5nRWRp
dG9yQ29tbWFuZHMoV2ViQ29yZTo6RnJhbWUqLCBWZWN0b3I8V1RGOjpTdHJpbmc+LCBib29sKTsK
LSAgICB2b2lkIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCosIFZlY3RvcjxXVEY6OlN0cmluZz4mKTsKKyAgICBib29sIGV4ZWN1dGVQZW5k
aW5nRWRpdG9yQ29tbWFuZHMoV2ViQ29yZTo6RnJhbWUqLCBWZWN0b3I8V1RGOjpTdHJpbmc+LCBi
b29sKSBPVkVSUklERTsKKyAgICB2b2lkIGdldEVkaXRvckNvbW1hbmRzRm9yS2V5RXZlbnQoY29u
c3QgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCosIFZlY3RvcjxXVEY6OlN0cmluZz4mKSBPVkVSUklE
RTsKICNlbmRpZgogCi0gICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgeyByZXR1
cm4gdGhpczsgfQorICAgIFRleHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpICBPVkVSUklE
RSB7IHJldHVybiB0aGlzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaWdub3JlV29yZEluU3BlbGxE
b2N1bWVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0
IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3Qg
VUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3Bl
bGxpbmdMZW5ndGgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlv
bkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQpOwotICAgIHZp
cnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgs
IFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9u
LCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5T
cGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBs
ZWFybldvcmQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoZWNr
U3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxp
bmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJiBtaXNzcGVsbGVkV29yZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNoZWNr
R3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVjdG9yPFdlYkNvcmU6
OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1h
ckxlbmd0aCkgT1ZFUlJJREU7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKQotICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25z
dCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3Vs
dHMpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciog
dGV4dCwgaW50IGxlbmd0aCwgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcywgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpIE9WRVJS
SURFOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1h
clN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBkZXRh
aWwpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3Jk
KGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNo
b3cpOwotICAgIHZpcnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5nKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5n
JiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcyk7Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9k
U3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdU
eXBlTWFzaywgY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3Bl
bGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdV
SVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgc3BlbGxpbmdVSUlzU2hvd2luZygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRH
dWVzc2VzRm9yV29yZChjb25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwg
VmVjdG9yPFN0cmluZz4mIGd1ZXNzZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2V0SW5wdXRNZXRob2RTdGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1
dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgV2ViQ29y
ZTo6VGV4dENoZWNraW5nVHlwZU1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJikgT1ZFUlJJREU7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xFT1BBUkQpCi0g
ICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBh
bmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29vbihXZWJDb3JlOjpSZWFzb25G
b3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3Ry
aW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZyk7Cisg
ICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6Q29ycmVjdGlvblBh
bmVsSW5mbzo6UGFuZWxUeXBlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94
T2ZSZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZl
UmVwbGFjZW1lbnRTdHJpbmdzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzc0Nv
cnJlY3Rpb25QYW5lbChXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVs
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQ29ycmVjdGlvblBhbmVsU29v
bihXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQ29ycmVjdGlvblBhbmVsKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVj
dGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3Ry
aW5nJiByZXBsYWNlbWVudFN0cmluZykgT1ZFUlJJREU7CiAjZW5kaWYKICAgICBXZWJQYWdlKiBt
X3BhZ2U7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlz
aW9uIDk1ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1OCwxMSArMjU4LDYg
QEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMbwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEhhbmRsZU9ubG9hZEV2ZW50cygpCiB7CiAgICAgV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDk1ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Mywx
ODEgKzQzLDE4MCBAQCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uOyB9CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCk7CisgICAg
dmlydHVhbCB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzSFRNTFZpZXcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmll
dygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNIVE1MVmlldygpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCi0g
ICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopOwotICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBm
b3JjZUxheW91dEZvck5vbkhUTUwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0
aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGZvcmNlTGF5b3V0KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGZvcmNlTGF5b3V0Rm9y
Tm9uSFRNTCgpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb3BpZXNPblNj
cm9sbCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb3BpZXNPblNjcm9sbCgpIE9WRVJSSURFOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQyKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRG
cm9tUGFyZW50MigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJl
bnQzKCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFzc2lnbklkZW50aWZpZXJU
b0luaXRpYWxSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxT
ZW5kUmVxdWVzdChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7ICAgICAgICAKKyAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYpIE9WRVJSSURFOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCi0gICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOworICAgIHZpcnR1YWwgYm9v
bCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2UmKSBPVkVSUklERTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFs
IGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkTG9hZFJlc291cmNlQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFdURjo6U3RyaW5nJik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFdlYkNvcmU6OktVUkwmLCBk
b3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQ
b3BTdGF0ZVdpdGhpblBhZ2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2Uo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJl
Y3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3Jl
OjpJY29uVHlwZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91
dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dCgpOwotCi0gICAgdmly
dHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5h
dmlnYXRpb25BY3Rpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hTaG93KCk7Ci0gICAg
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29y
ZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1
bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUG9saWN5Q2hlY2soKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hVbmFibGVU
b0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Ci0gICAgCi0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChXZWJDb3JlOjpIVE1M
Rm9ybUVsZW1lbnQqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9y
bShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1T
dGF0ZT4pOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRNYWluUmVzb3Vy
Y2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Q
cm92aXNpb25hbFN0YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
aW50IGxlbmd0aCkgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
SGFuZGxlT25sb2FkRXZlbnRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0
aGluUGFnZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VT
dGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQ
b3BTdGF0ZVdpdGhpblBhZ2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hX
aWxsQ2xvc2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgT1ZFUlJJREU7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaXJzdExheW91dCgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dCgpIE9WRVJSSURF
OworCisgICAgdmlydHVhbCBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hTaG93KCkgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJD
b3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsUG9saWN5Q2hlY2soKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikg
T1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRF
dmVudChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQqKSBPVkVSUklERSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9u
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIE9WRVJSSURFOworICAgIAorICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZExvYWRNYWluUmVzb3VyY2UoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0
YXRlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIE9WRVJSSURFOwogICAgIAogICAgIC8vIE1heWJlIHRoZXNl
IHNob3VsZCBnbyBpbnRvIGEgUHJvZ3Jlc3NUcmFja2VyQ2xpZW50IHNvbWUgZGF5Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJv
Z3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVz
c0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0UHJv
Z3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRN
YWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENo
YW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7Ci0gICAgCi0gICAgdmlydHVh
bCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFy
KiwgaW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rvcnko
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsK
LSAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtKikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9y
SGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKLQotICAgIHZpcnR1YWwg
dm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLQotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgCi0gICAgdmlydHVhbCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZmlsZURv
ZXNOb3RFeGlzdEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7Ci0gICAgCi0gICAgdmlydHVhbCBib29s
IHNob3VsZEZhbGxCYWNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKLSAgICAKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGVB
c0hUTUwoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHJl
cHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBj
b25zdDsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShj
b25zdCBTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGZy
YW1lTG9hZENvbXBsZXRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVt
KFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3RvcmVWaWV3U3Rh
dGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JE
YXRhU291cmNlUmVwbGFjZW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGlt
YXRlZFByb2dyZXNzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUVzdGlt
YXRlZFByb2dyZXNzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc1N0
YXJ0ZWROb3RpZmljYXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFByb2dy
ZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCkgT1ZFUlJJREU7CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkgT1ZFUlJJREU7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpIE9W
RVJSSURFOworICAgIAorICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0
bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIq
LCBpbnQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlR2xvYmFsSGlzdG9yeSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShX
ZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxl
RG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxl
TG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBPVkVSUklERTsKKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChjb25z
dCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmVw
cmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBVUkxTY2hlbWUpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJM
U2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdCBPVkVSUklERTsKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkQ29tcGxldGVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNhdmVWaWV3U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVZpZXdTdGF0ZSgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIE9WRVJSSURFOwogICAgIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0
ZURhdGEmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmKSBPVkVSUklERTsKICAgICAKLSAgICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQo
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNhdmVQ
bGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKik7Ci0gICAgdmly
dHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpD
YWNoZWRGcmFtZSopOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JO
ZXdQYWdlKCk7CisgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1l
KFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdl
KCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hlKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVGcm9tUGFnZUNhY2hlKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
QmVjb21lRnJhbWVzZXQoYm9vbCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ2Fj
aGVQYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGRvd25sb2FkKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgT1ZFUlJJREU7CiAgICAgCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBXZWJDb3JlOjpL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1h
cmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNm
ZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChXZWJDb3JlOjpQYWdlKik7Ci0gICAgdmlydHVhbCB2
b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQYWdlKik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHJl
ZmVycmVyLCBib29sIGFsbG93c1Njcm9sbGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2lu
SGVpZ2h0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1l
VG9OZXdEb2N1bWVudChXZWJDb3JlOjpQYWdlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpQYWdlKikgT1ZFUlJJ
REU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRl
UGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVu
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpOwotICAgIHZp
cnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBsdWdpbldp
ZGdldCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlUGx1
Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQqIHBs
dWdpbldpZGdldCkgT1ZFUlJJREU7CiAgICAgCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBiYXNl
VVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhcmFtVmFsdWVzKTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMpIE9WRVJSSURFOwogICAgIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVu
dFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcyk7Ci0gICAgdmly
dHVhbCBTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHNob3VsZFByZWZlclBsdWdJbnNGb3JJ
bWFnZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkg
Y29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkKik7CisgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6OkRPTVdyYXBw
ZXJXb3JsZCopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGRvY3VtZW50RWxlbWVudEF2
YWlsYWJsZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRmlyc3ROYXZpZ2F0aW9uKCkg
Y29uc3Q7IC8vICJOYXZpZ2F0aW9uIiBoZXJlIG1lYW5zIGEgdHJhbnNpdGlvbiBmcm9tIG9uZSBw
YWdlIHRvIGFub3RoZXIgdGhhdCBlbmRzIHVwIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlzdC4KKyAg
ICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZFBlcmZvcm1GaXJzdE5hdmlnYXRpb24oKSBjb25zdCBPVkVSUklERTsg
Ly8gIk5hdmlnYXRpb24iIGhlcmUgbWVhbnMgYSB0cmFuc2l0aW9uIGZyb20gb25lIHBhZ2UgdG8g
YW5vdGhlciB0aGF0IGVuZHMgdXAgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LgogICAgIAotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0
cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wg
bGlzdGVuID0gdHJ1ZSkgT1ZFUlJJREU7CiAgICAgCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZp
cnR1YWwgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpOworICAg
IHZpcnR1YWwgUmVtb3RlQVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIE9W
RVJSSURFOwogICAgIAogI2lmIEVOQUJMRShNQUNfSkFWQV9CUklER0UpCi0gICAgdmlydHVhbCBq
b2JqZWN0IGphdmFBcHBsZXQoTlNWaWV3Kik7CisgICAgdmlydHVhbCBqb2JqZWN0IGphdmFBcHBs
ZXQoTlNWaWV3KikgT1ZFUlJJREU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIE5TQ2FjaGVkVVJMUmVz
cG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgY29uc3Q7CisgICAgdmly
dHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25z
ZSopIGNvbnN0IE9WRVJSSURFOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0ZO
RVRXT1JLKQogICAgIC8vIEZJWE1FOiBXaW5kb3dzIHNob3VsZCB1c2Ugd2lsbENhY2hlUmVzcG9u
c2UgLSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MjU3Pi4KLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5n
dGgpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbG9uZyBs
b25nIGxlbmd0aCkgT1ZFUlJJREU7CiAjZW5kaWYKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkVXNlUGx1Z2luRG9jdW1lbnQoY29uc3QgU3RyaW5nJiAvKm1pbWVUeXBlKi8pIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBTdHJpbmcmIC8q
bWltZVR5cGUqLykgY29uc3QgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
U2Nyb2xsT2Zmc2V0KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgp
IE9WRVJSSURFOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdD
b250ZXh0KCkgT1ZFUlJJREU7CiAKICAgICBXZWJGcmFtZSogbV9mcmFtZTsKICAgICBSZWZQdHI8
UGx1Z2luVmlldz4gbV9wbHVnaW5WaWV3OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGll
bnQuaAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE5
ICs0MSwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgfldlYkdlb2xv
Y2F0aW9uQ2xpZW50KCk7CisgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25DbGllbnQoKSBPVkVS
UklERTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQoKSBPVkVSUklERTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BV
cGRhdGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3RvcFVwZGF0aW5nKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJs
ZUhpZ2hBY2N1cmFjeShib29sKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6R2Vv
bG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpH
ZW9sb2NhdGlvblBvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBPVkVSUklERTsKIAotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwotICAgIHZp
cnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChXZWJDb3JlOjpHZW9sb2NhdGlvbiop
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlv
biopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQZXJtaXNzaW9uUmVxdWVzdChX
ZWJDb3JlOjpHZW9sb2NhdGlvbiopIE9WRVJSSURFOwogCiAKICAgICBXZWJQYWdlKiBtX3BhZ2U7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlzaW9uIDk1ODIxKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjEgKzUwLDIxIEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOworICAgIHZpcnR1
YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOwor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlciopIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CisgICAgdmlydHVhbCB2b2lkIGhpZ2hs
aWdodCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgT1ZFUlJJ
REU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7CiAKICAgICAvLyBQYWdlT3ZlcmxheTo6Q2xpZW50Ci0gICAgdmlydHVhbCB2
b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Kik7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRNb3ZlVG9XZWJQYWdlKFBhZ2VPdmVybGF5KiwgV2ViUGFnZSopOwotICAgIHZpcnR1
YWwgdm9pZCBkcmF3UmVjdChQYWdlT3ZlcmxheSosIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKLSAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChQ
YWdlT3ZlcmxheSosIGNvbnN0IFdlYk1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFn
ZU92ZXJsYXlEZXN0cm95ZWQoUGFnZU92ZXJsYXkqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb1dlYlBhZ2UoUGFnZU92ZXJsYXkqLCBXZWJQYWdlKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVybGF5KiwgV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5KiwgY29uc3QgV2ViTW91c2VF
dmVudCYpIE9WRVJSSURFOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwogICAgIFBhZ2VPdmVybGF5
KiBtX2hpZ2hsaWdodE92ZXJsYXk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oCShyZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksMjAgKzM5LDIwIEBAIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChXZWJQYWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZnJvbnRlbmRMb2FkZWQoKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXpl
ZFN0cmluZ3NVUkwoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBoaWRkZW5QYW5lbHMoKTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBTdHJpbmcgaGlkZGVuUGFuZWxzKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYnJp
bmdUb0Zyb250KCk7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3RGcm9tQmFja2VuZCgpOworICAgIHZpcnR1YWwgdm9pZCBicmluZ1Rv
RnJvbnQoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21CYWNrZW5kKCkgT1ZFUlJJREU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFj
aFdpbmRvdygpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNp
Z25lZCk7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdygpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2
b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lk
IGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICBXZWJQ
YWdlKiBtX3BhZ2U7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShy
ZXZpc2lvbiA5NTgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDIxICs0Mywy
MSBAQCBwcml2YXRlOgogICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llcygpOwogICAgIAogICAgIC8v
IFdlYkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6VmlzaXRlZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpOwor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRl
Z3koKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVh
dGVQbHVnaW5TdHJhdGVneSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6VmlzaXRl
ZExpbmtTdHJhdGVneSogY3JlYXRlVmlzaXRlZExpbmtTdHJhdGVneSgpIE9WRVJSSURFOwogCiAg
ICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUNv
b2tpZXNDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkg
T1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQotICAgIHZpcnR1YWwg
dm9pZCByZWZyZXNoUGx1Z2lucygpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5JbmZvKGNv
bnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdp
bkluZm8+JikgT1ZFUlJJREU7CiAgICAgdm9pZCBwb3B1bGF0ZVBsdWdpbkNhY2hlKCk7CiAKICAg
ICAvLyBXZWJDb3JlOjpWaXNpdGVkTGlua1N0cmF0ZWd5Ci0gICAgdmlydHVhbCBib29sIGlzTGlu
a1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBiYXNlVVJMLCBjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKTsK
LSAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExpbmsoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6
OkxpbmtIYXNoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rVmlzaXRlZChXZWJDb3JlOjpQYWdl
KiwgV2ViQ29yZTo6TGlua0hhc2gsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGJhc2VVUkwsIGNvbnN0
IFdURjo6QXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6TGlua0hhc2gpIE9W
RVJSSURFOwogCiAgICAgYm9vbCBtX3BsdWdpbkNhY2hlSXNQb3B1bGF0ZWQ7CiAgICAgYm9vbCBt
X3Nob3VsZFJlZnJlc2hQbHVnaW5zOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCShyZXZpc2lvbiA5NTgy
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBN
ZW51LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGludCBuZXdJbmRleCk7CiAgICAgdm9pZCBzZXRUZXh0
Rm9ySW5kZXgoaW50IG5ld0luZGV4KTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93KGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpGcmFtZVZpZXcqLCBpbnQgaW5kZXgpOwotICAgIHZp
cnR1YWwgdm9pZCBoaWRlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCk7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RDbGllbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2hvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3KiwgaW50IGlu
ZGV4KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNjb25uZWN0Q2xpZW50KCkgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgV2ViUG9wdXBN
ZW51KFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWFyY2hQb3B1cE1lbnUuaAkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwxMCArMzAsMTAgQEAgY2xhc3MgV2ViU2VhcmNoUG9wdXBNZW51IDogcHVibGljIFdl
YkNvcgogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNlYXJjaFBvcHVwTWVudT4g
Y3JlYXRlKFdlYlBhZ2UqLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKIAotICAgIHZpcnR1
YWwgV2ViQ29yZTo6UG9wdXBNZW51KiBwb3B1cE1lbnUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxTdHJpbmc+JiBzZWFy
Y2hJdGVtcyk7Ci0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNh
dmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8U3Ry
aW5nPiYgc2VhcmNoSXRlbXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkg
T1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgV2ViU2VhcmNoUG9wdXBNZW51KFdlYlBhZ2UqLCBX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyQ29tbW9uLnZzcHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDb21tb24udnNwcm9wcwkocmV2aXNpb24gOTU4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0MkNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBACiAJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1dFQktJVF9FWFBPUlRTO0ZSQU1FV09S
S19OQU1FPVdlYktpdDtCVUlMRElOR19XRUJLSVQiCiAJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIy
IgogCQlQcmVjb21waWxlZEhlYWRlclRocm91Z2g9IldlYktpdDJQcmVmaXguaCIKLQkJRGlzYWJs
ZVNwZWNpZmljV2FybmluZ3M9IjQ4MTkiCisJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0NDgx
OzQ4MTkiCiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iV2ViS2l0MlByZWZpeC5oO0lDVVZlcnNpb24u
aCIKIAkvPgogCTxUb29sCg==
</data>
<flag name="review"
          id="105468"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>