<?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>219554</bug_id>
          
          <creation_ts>2020-12-04 13:56:14 -0800</creation_ts>
          <short_desc>REGRESSION(r270422): Deleted an SPI that is still in use.</short_desc>
          <delta_ts>2020-12-04 14:01:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217747</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1712153</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-12-04 13:56:14 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/270422 broke the build:
Deleted an SPI that is still in use.

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712155</commentid>
    <comment_count>1</comment_count>
      <attachid>415457</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-12-04 13:56:27 -0800</bug_when>
    <thetext>Created attachment 415457
REVERT of r270422

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712156</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-04 14:00:06 -0800</bug_when>
    <thetext>Committed r270454: &lt;https://trac.webkit.org/changeset/270454&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415457.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712158</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-04 14:01:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/71992520&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415457</attachid>
            <date>2020-12-04 13:56:27 -0800</date>
            <delta_ts>2020-12-04 14:00:07 -0800</delta_ts>
            <desc>REVERT of r270422</desc>
            <filename>bug-219554-20201204215627.patch</filename>
            <type>text/plain</type>
            <size>314269</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDljMTYyNmE1NzJmZDAzM2E1
ZGY1MWMzOTU1YjI0OThiZGJiOTFkNmIuLmM5NzQwNDdiNTAyYTg4ZjBhZTgyYjhiNDcxODljZGNi
NDg4NmNlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTItMDQgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJl
dmVydGluZyByMjcwNDIyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE5NTU0CisKKyAgICAgICAgRGVsZXRlZCBhbiBTUEkgdGhhdCBpcyBzdGlsbCBp
biB1c2UuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJJbnRyb2R1
Y2UgbmV3IGRvd25sb2FkIEFQSSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzc0NworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjcwNDIyCisKIDIwMjAtMTItMDQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVy
IHNob3VsZCBub3QgaWdub3JlIGFsbCBleGNlcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKaW5kZXggOThl
YTA3ZGFiMTNkNjg5NjRmYTZhM2VmMWJhZWMyYjdlMWEwNDQ2OC4uM2U3ZTU5NTg0ZmYyODAwMGUx
MGQ5OWFlNDRhYmVjM2ZmYTIxMzlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQpAQCAtNDAsMTQgKzQwLDE0
IEBAIHNldChXZWJLaXRfUFVCTElDX0ZSQU1FV09SS19IRUFERVJTCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRp
b25SZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHRIaXN0b3J5Q2xpZW50LmgKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHRQcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmgKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tD
cmVkZW50aWFsVHlwZXMuaAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgK
LSAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCisgICAgVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVu
ZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmgKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tGcmFtZUhhbmRsZVJlZi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAyYzEzN2Y2N2YyYjQw
ZDc0YjE2YTM4YmYwYjQwNzliMzUyZmZkMmY3Li4zMzIxNjM0MGYyN2MxNjA1YzNjZDc0YmM2OTA3
YjdkOTFiNDdiNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgUmVmPE5ldHcKICAgICBtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRpb25EZWNp
ZGVkLnNldChkb3dubG9hZElELCBXVEZNb3ZlKG5ldHdvcmtEYXRhVGFzaykpOwogfQogCi12b2lk
IERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRT
dGFydCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xMDUsMTEgKzEwNSw2IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvCiAgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KCp0aGlz
LCBkb3dubG9hZElELCBudWxscHRyLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgZG93bmxvYWQt
PnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
KTsKLQotICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGxlZ2FjeSBkb3dubG9hZCBB
UEksIG9ubHkgc2VuZCBEaWRTdGFydCBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IEFQSS4KLSAgICBp
ZiAoY2FsbERvd25sb2FkRGlkU3RhcnQgPT0gQ2FsbERvd25sb2FkRGlkU3RhcnQ6OlllcykKLSAg
ICAgICAgZG93bmxvYWQtPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KHsg
fSwgeyB9KSk7Ci0KICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQp
KTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IGM0ODFlYjVmNmQ0MjljYjA5YmJjNTI1OTZmZjU5
YTdiZTU3MzI1ZjAuLjJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3MjY3OGZhNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5oCkBAIC02MCw4ICs2MCw2IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBQZW5kaW5nRG93bmxvYWQ7
CiAKLWVudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sIHsgTm8sIFllcyB9Owot
CiBjbGFzcyBEb3dubG9hZE1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25s
b2FkTWFuYWdlcik7CiAKQEAgLTg4LDcgKzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29udmVy
dE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29y
a0xvYWQ+JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiwgIFZlY3RvcjxSZWZQdHI8V2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZG93
bmxvYWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCwgUmVmPE5ldHdvcmtEYXRhVGFzaz4m
Jik7CiAKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKKyAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogCiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9h
ZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
KTsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCmluZGV4IDVm
Nzk5ZDVjMDViNmIxODQ4ZWM1MDMyZDg0MzA1MGJhNWIxZDZjNjIuLjk1ZjhkZWMzMDI1MWI4MGJh
YTI5Y2U1OTA4NzNhN2FiYWVmZGE5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQpAQCAt
NzEsOCArNzEsNiBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgTlNEYXRhICp1cGRhdGVk
RGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6
ZGljdGlvbmFyeSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCBvcHRpb25zOjAg
ZXJyb3I6bnVsbHB0cl07CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBVc2UgbnNEYXRhIGluc3Rl
YWQgb2YgdXBkYXRlZERhdGEgb25jZSB3ZSd2ZSBtaWdyYXRlZCBmcm9tIF9XS0Rvd25sb2FkIHRv
IFdLRG93bmxvYWQKLSAgICAvLyBiZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNldCB0aGUg
bG9jYWwgcGF0aCB3ZSBnb3QgZnJvbSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEuCiAgICAg
bV9kb3dubG9hZFRhc2sgPSBbY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRz
KCkuc2Vzc2lvbiBkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CiAgICAg
YXV0byB0YXNrSWRlbnRpZmllciA9IFttX2Rvd25sb2FkVGFzayB0YXNrSWRlbnRpZmllcl07CiAg
ICAgQVNTRVJUKCFjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5kb3du
bG9hZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOwpAQCAtODUsMjIgKzgzLDcgQEAgdm9p
ZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3Jr
TG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2Rvd25sb2FkVGFzayk7Ci0gICAg
W21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxvY2tQdHIo
W3BhdGggPSByZXRhaW5QdHIobV9kb3dubG9hZFRhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2FkVGFz
a0ZpbGUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
TlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKLSNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19E
T1dOTE9BRFMpCi0gICAgICAgIGlmIChyZXN1bWVEYXRhKSB7Ci0gICAgICAgICAgICAvLyBNb2ph
dmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJlc3VtZSBk
YXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFzay4KLSAgICAgICAgICAgIGF1
dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZv
clJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOwotICAgICAgICAgICAgW3Vu
YXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5
UmFpc2VFeGNlcHRpb25dOwotICAgICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyhz
dGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBb
TlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0Rh
dGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JL
ZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKLSAgICAg
ICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICAgICAgICAgIFtkaWN0aW9u
YXJ5IHNldE9iamVjdDpwYXRoLmdldCgpIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9M
b2NhbFBhdGgiXTsKLSAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVk
QXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7Ci0gICAgICAg
ICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJOU0tl
eWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKLSAgICAgICAgICAgIHJlc3VtZURhdGEgPSBbZW5j
b2RlciBlbmNvZGVkRGF0YV07Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJB
TShwYXRoKTsKLSNlbmRpZgorICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVByb2R1Y2luZ1Jl
c3VtZURhdGE6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byByZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0YSA/IElQQzo6RGF0YVJlZmVyZW5jZSB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVEYXRhLmJ5dGVzKSwgcmVzdW1lRGF0
YS5sZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7IH07CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0pLmdldCgpXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4
IGI5MjA2ODJjOWU0NzNiZjM1ZTAzZmYzYTYyZjcwNWQzZTFhYzIxNjYuLjhkODk3YTQyMzBhZmUy
ZTk4ZGRkYTljNGE5ZDIxMDE3NDc0YjM3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDQ2LDcgKzQ0NiwxMCBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbgogCiBTdHJpbmcgTmV0d29ya0RhdGFUYXNrQmxvYjo6
c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewotICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVu
YW1lOworICAgIGlmICghbV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOworCisgICAgcmV0dXJuICJ1bmtub3duIl9zOwogfQog
CiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNWZlNDU5MTMxNTRiYTc1
MWZjZDk2Y2E0ZGE5NWY2MmYxNTExZmVmZC4uZjZhMjM5YTFmNjhmODliZTRlN2RjODVlODBmMTMx
NGM2OTBiN2ViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKQEAgLTIwNTMsOSArMjA1Myw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRv
d25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxv
CiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2Fk
SUQsIHJlcXVlc3QsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN1Z2dlc3RlZEZpbGVu
YW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERp
ZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpLCBjYWxsRG93bmxvYWREaWRTdGFydCk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1l
RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3Zl
KHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2Fu
Y2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjA3
OSw3ICsyMDc5LDEwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRM
b2NhdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzCiB7CiAgICAgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCA9IG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJRCgpLnRvVUlu
dDY0KCk7CiAKLSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBuZXR3b3JrRGF0YVRhc2su
c3VnZ2VzdGVkRmlsZW5hbWUoKTsKKyAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy8jYXMtYS1kb3dubG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENv
bnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyCisgICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdn
ZXN0ZWQgZmlsZW5hbWUgZnJvbSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgorICAgIFN0cmluZyBz
dWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpID8g
cmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRG
aWxlbmFtZSgpOworICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBw
ZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5t
aW1lVHlwZSgpKTsKIAogICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUocmVzcG9uc2UsIHN1Z2dlc3RlZEZpbGVuYW1lKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbmV0d29ya0RhdGFUYXNrID0gbWFrZVJlZihuZXR3b3JrRGF0YVRh
c2spXSAoU3RyaW5nJiYgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlKSBtdXRh
YmxlIHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLT5wZW5kaW5n
RG93bmxvYWRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDA1MzU3MTIyYzZlOTY2NmI0NGU4OTJjZDVmYTU3MjRiMTQ1ZWU4NDEuLjYw
ZDM2YmI1NzU2N2YzMjhlN2ZhY2NkMmU4MGEyZTEwYTQzOTgxMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwNiw3ICsxMDYsNiBAQCBj
bGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdG9yYWdlTWFuYWdlclNldDsKIGNs
YXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjsKLWVudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51bSBj
bGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9y
YWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbiA6IHVpbnQ4X3Q7CkBAIC00MjQsNyArNDIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNs
ZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93
bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsK
LSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKKyAgICB2b2lk
IHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9h
ZElELCBjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCA1OGIzZTRjODY4YzcwMTJjZGIzNTY1NmVhYWJmMmI2MTgxZjJiYzdlLi42MDFlMjRj
YjI1NjM2ZTE3YmQ1NTRkNjhmMGU4YmZhZjUyZGFiMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ4
LDcgKzQ4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBV
Ukwgb2xkRG9tYWluLCBVUkwgbmV3RG9tYWluLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0
YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+ICgpIEFzeW5jCiAKICAgICBEb3dubG9hZFJlcXVl
c3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25hbDxX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCi0gICAgUmVzdW1lRG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBD
OjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVtOmJvb2wgV2ViS2l0
OjpDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKKyAgICBSZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiAgICAg
Q2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpIC0+IChJUEM6OkRh
dGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBQ
dWJsaXNoRG93bmxvYWRQcm9ncmVzcyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgVVJM
IHVybCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCAwZDBhYWQ0ZmY3ZDJmM2YyN2NmZTJiNmI4MTFi
NjBlYmM1NTk2NDc2Li5kNWE0NjVhYjBiOGIyZWY4MDFmZjBmYWZlZDIyZTNmMzBjMDMwMTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC03NjgsMjAgKzc2OCw2IEBAIC0gKHZvaWQpVVJMU2Vzc2lv
bjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiB0YXNrOihOU1VSTFNlc3Npb25UYXNrICopdGFzayBk
aWRDb21wCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotI2lmIFVTRShMRUdBQ1lfQ0ZORVRX
T1JLX0RPV05MT0FEUykKLSAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKLSAgICAgICAgICAgIC8v
IE1vamF2ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0aGUgcmVz
dW1lIGRhdGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgotICAgICAgICAg
ICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBp
bml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7Ci0gICAgICAgICAg
ICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQ
b2xpY3lSYWlzZUV4Y2VwdGlvbl07Ci0gICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9w
dE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVyIGRlY29k
ZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFz
c10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwg
W05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxd
IGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOwot
ICAgICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwotICAgICAgICAgICAgW2Rp
Y3Rpb25hcnkgc2V0T2JqZWN0OnRhc2suX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgZm9yS2V5OkAi
TlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOwotICAgICAgICAgICAgYXV0byBlbmNv
ZGVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3Vy
ZUNvZGluZzpZRVNdKTsKLSAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkaWN0aW9u
YXJ5LmdldCgpIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOwotICAgICAg
ICAgICAgcmVzdW1lRGF0YSA9IFtlbmNvZGVyIGVuY29kZWREYXRhXTsKLSAgICAgICAgfQotI2Vu
ZGlmCi0KICAgICAgICAgYXV0byByZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0YSA/IElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVEYXRh
LmJ5dGVzKSwgcmVzdW1lRGF0YS5sZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7IH07CiAg
ICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhUmVmZXJlbmNlKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCBjM2Y1Nzk4
M2NmMTIwYmE2ODc1MjEwNjY4MWM2MTQwZjY4YTg3OTQxLi5jYTBhZTI4NDExYTgzZGU0YmYzZmUw
OGIwMTJlNDA1NTQ4ZDhiNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKQEAgLTY3Miw3ICs2NzIsNiBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAg
ICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZv
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJRC5o
IiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNz
aW9uU3RhdGUuaCInXSwKLSAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBb
JyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRl
bnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLAogICAgICAgICAnV2ViS2l0OjpE
b2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5o
IiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCmluZGV4IDQxNWQ5MTY0
NjU5NmNlZjI3Zjg3MTgzZjUyY2RlMTkyMGZiNTA0YzkuLjFmN2EzZGQzYzY5NzNlMTA5OTRmNWRj
MTM3ZmFmNDA2YTI1ZWEyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0
LmgKQEAgLTMwLDggKzMwLDYgQEAKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxlTGlzdFN0
b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktp
dC9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaD4KLSNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2Fk
Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tFcnJvci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZENvbmZpZ3VyYXRpb24uaD4KICNp
bXBvcnQgPFdlYktpdC9XS0ZpbmRSZXN1bHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggNGExMTM2NDYxMWNmYmM3MGY5NjQ3NmFiMzFmOWUx
NTFjNTkyOWFiOS4uN2Y4MGJhMTQ4YzBlOWU3YzFlNzA2NzNjNTJhYzExZWIyMjIwYWNmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEyNywx
MiArMTI3LDYgQEAgYXV0byB0b0FQSShUKiB0KSAtPiBBUElUeXBlCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAodCkpOwogfQogCi10ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBUElUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVJbmZvPFQ+
OjpBUElUeXBlPgotYXV0byB0b0FQSShUJiB0KSAtPiBBUElUeXBlCi17Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAoJnQpKTsKLX0KLQogdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW1wbFR5cGUgPSB0eXBlbmFtZSBBUElUeXBlSW5m
bzxUPjo6SW1wbFR5cGU+CiBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDdmMDU4NDU2ZGVlNzY0ODk4MWZk
NDZmMWYwMDU3Zjc1M2ZkNmUxY2IuLmY4YTAyOGIwNmI1MTA2MTA4ZGRjM2NiYjY4YTQwMWJmYTM1
ZjdkYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM1LDcg
KzM1LDYgQEAKICNpbXBvcnQgIldLQ29udGVudFJ1bGVMaXN0U3RvcmVJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVs
ZW1lbnRJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCkBAIC03NCw2ICs3Myw3IEBACiAjaW1w
b3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50
UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRz
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9X
S0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0yMjgs
NyArMjI4LDcgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlw
ZSkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAgICAgICB3
cmFwcGVyID0gW1dLRG93bmxvYWQgYWxsb2NdOworICAgICAgICB3cmFwcGVyID0gW19XS0Rvd25s
b2FkIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkV4cGVyaW1lbnRh
bEZlYXR1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA0ZWE0YWZiZDY5ZjE4MGQ3OGU1OWJmYWUzMjVjNGVm
NjRmNDQ5MjA2Li4wOTE3ZjAxYmUxYzlmOGNhYTJhYmY3ZjBmODkwZjg5NWEzZjJlZjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTM3NCw3ICszNzQsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlh
bC5jcHAKLVVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcAorVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVy
LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFt
ZUhhbmRsZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1MDg3MzhiYzIxYWY4NjYz
NzZjZmVlYjU5ZmY4NGNlNDZjZTI2MTZiLi40ZWE4Yjc4MWQyMGE4MWEwOGU0NGI0NGRiYTBiNThm
MjFiZDZmOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMDAsNyArMzAwLDYgQEAgVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVu
dFdvcmxkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5t
bQotVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRXJyb3IubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggZGZmNzNmYTY1YmY2ZmIwYWQx
N2FmYTk5ZjU4MmY5NDJmYWY3YTBhMy4uZDM3ZjYyODY4YjYxMjk3YTExYWZmZjM4MDJhODBiYTYx
MmE0ZGNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25s
b2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2Fk
Q2xpZW50LmgKQEAgLTQ5LDIwICs0OSwxOCBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRlIDog
Ym9vbDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKLWNsYXNzIERhdGE7Ci0KIGNsYXNzIERvd25sb2Fk
Q2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RG93bmxvYWRDbGllbnQ+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgp
IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxlZ2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQ
cm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxl
bmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkm
LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGlu
YXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktp
dDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVx
dWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDBjNTY0ZDQ0
NTRjODJkODk1N2FmZWFlNzQ3YzBiNmYxNzBmNmJhZjUuLmJiYTg1OWFmMmU0MzVlOWYwOTI0ZjRh
MzJlMTE3ZDk2Mzk1ZGJmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBjYW5IYW5kbGVSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0
YS5jYW5IYW5kbGVSZXF1ZXN0OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVz
KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZEFsbG93IHx8IG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRB
bGxvd0V4dGVybmFsU2NoZW1lc0J1dE5vdEFwcExpbmtzOyB9CiAgICAgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5BcHBMaW5rcyAmJiBtX25hdmln
YXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3c7IH0KLSAgICBjb25zdCBX
VEY6OlN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRp
b25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlOyB9CisgICAgYm9vbCBzaG91bGRQZXJmb3Jt
RG93bmxvYWQoKSBjb25zdCB7IHJldHVybiAhbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5kb3dubG9h
ZEF0dHJpYnV0ZS5pc051bGwoKTsgfQogICAgIGJvb2wgaXNSZWRpcmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRpcmVjdDsgfQogICAgIFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgp
IGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeTsgfQogCkBAIC03MSw4ICs3MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc2V0
U2hvdWxkUGVyZm9ybVNPQXV0aG9yaXphdGlvbigpIHsgbV9zaG91bGRQZXJmb3JtU09BdXRob3Jp
emF0aW9uID0gZmFsc2U7IH0KICNlbmRpZgogCi0gICAgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGE7
IH0KLSAgICAKIHByaXZhdGU6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3Vy
Y2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBPcHRpb25hbDxXVEY6OlN0cmlu
Zz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzLCBSZWZQ
dHI8VXNlckluaXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6Ok5hdmln
YXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIDogbV9zb3VyY2VGcmFtZShzb3Vy
Y2VGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oCmluZGV4IGQ4MzY2NGUwODIwNmM3ZmViZjI4MWU5MmNlZTQ5MjVmZjZhZGRmOWMu
LjA2MWUxODZkYmU4ODZhMDc0MjJiZjgzYjdhZmNmY2JjNmFjOWU2YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNTQsNyAr
NTQsNiBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7Ci1jbGFzcyBEb3dubG9hZFByb3h5
OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC0xMDAsMTAgKzk5LDYgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNv
bWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb25BY3Rpb24mLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEaWRD
cmVhdGVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6RG93bmxvYWRQcm94
eSYpIHsgfQotCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxl
bmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURl
ZmF1bHRIYW5kbGluZyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dMZWdhY3lUTFMo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE5lZ290aWF0
ZU1vZGVyblRMUyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4IDI2
MTAxODhhOTc1NjlkYjNlM2M3OGFlYjA0YTg1ODI1MTkzMmQxNWQuLjdkMmU5MzQ0NjJjZjNiZGMx
OWExOWI3ZGQzMWEwYzJhOWNlYmVkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJUG9saWN5Q2xpZW50LmgKQEAgLTUwLDExICs1MCwxMSBAQCBjbGFzcyBQb2xpY3lDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
PiYmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB2aXJ0
dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGEmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKICAg
ICB7CiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisg
ICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBX
VEY6OlN0cmluZyYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBs
aXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4
IGZmZDA3ZThjY2Q4YjA0MDY3MTRlZTg3MTBlYzIxMzA4MDlmZWM0ZTAuLjNhMDgzY2E0ODY0NDNi
ZDg4MDYzM2E1YzI2MDc0ZTI2MmQxMTM0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNTUsNiArNTUsOSBAQAogI2luY2x1ZGUgIldlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3BhY2UgQVBJIHsKK3RlbXBsYXRlPD4gc3Ry
dWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBl
ZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCwgV0tDb250ZXh0RG93bmxv
YWRDbGllbnRWMT4gVmVyc2lvbnM7Cit9OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRz
PFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdL
Q29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7CiB9OwpAQCAtMTY1LDYgKzE2OCw5MCBA
QCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYs
IGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAgIH0KIH0KIAordm9pZCBXS0NvbnRleHRTZXRE
b3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxv
YWRDbGllbnRCYXNlKiB3a0NsaWVudCkKK3sKKyAgICBjbGFzcyBMZWdhY3lEb3dubG9hZENsaWVu
dCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+
LCBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBleHBs
aWNpdCBMZWdhY3lEb3dubG9hZENsaWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJh
c2UqIGNsaWVudCwgV0tDb250ZXh0UmVmIGNvbnRleHQpCisgICAgICAgICAgICA6IG1fY29udGV4
dChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7Cisg
ICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRTdGFydCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBtX2NsaWVudC5kaWRTdGFydChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSBmaW5hbAorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5
KSwgV2ViS2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6
Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QsIHVpbnQ2NF90KSBmaW5h
bAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWRQcm94eSwgcmVz
cG9uc2UpOworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICBib29sIGFs
bG93T3ZlcndyaXRlID0gZmFsc2U7CisgICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9uID0gYWRv
cHRXSyhtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShtX2Nv
bnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGZpbGVu
YW1lLmltcGwoKSksICZhbGxvd092ZXJ3cml0ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IFdlYktpdDo6
QWxsb3dPdmVyd3JpdGU6OlllcyA6IFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBXZWJLaXQ6
OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgdm9p
ZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2NvbnRleHQsIFdl
YktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICB9CisgICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbChtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGxlZ2FjeURpZENhbmNl
bChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZENhbmNlbChtX2NvbnRleHQsIFdlYktpdDo6
dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICB9CisgICAgICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkgZmluYWwKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5wcm9jZXNzRGlkQ3Jhc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
bV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKyAgICAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QpCisgICAgICAgICAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KG1fY29udGV4dCwgV2ViS2l0Ojp0
b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJp
bmcoKS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgIH0KKyAgICAgICAgV0tD
b250ZXh0UmVmIG1fY29udGV4dDsKKyAgICB9OworICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHQp
LT5zZXRMZWdhY3lEb3dubG9hZENsaWVudChhZG9wdFJlZigqbmV3IExlZ2FjeURvd25sb2FkQ2xp
ZW50KHdrQ2xpZW50LCBjb250ZXh0KSkpOworfQorCiB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rp
b25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVm
KS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQod2tDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCA0MzE1NjBkNjA3MzQ1YjU1NjdiMjc2MTNi
OTdkNTAxMmY2YjAyMGRkLi5kYzJlMGQxOTIzMTVlZTU3MmQxZDFmNjc4YWJhNjFkNmMyNGQxMzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dERv
d25sb2FkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dEhpc3RvcnlDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CkBAIC0xMzcsNiArMTM4LDcgQEAgV0tfRVhQ
T1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmUKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0Nv
bnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KTsKIFdL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIGNsaWVu
dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogY2xpZW50KTsKK1dL
X0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBP
UlQgdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0
LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAogV0tfRVhQ
T1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25s
b2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHREb3du
bG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjZjk2YWJlZjExNDU4NDZiMjExNjExODU1ZmI3N2Iz
MmQxZDg3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdLQ29udGV4dERvd25sb2FkQ2xpZW50X2gKKyNkZWZpbmUgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCit0eXBlZGVmIHZv
aWQgKCpXS0NvbnRleHREb3dubG9hZERpZFN0YXJ0Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5
cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25s
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2
ZURhdGFDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIGJv
b2wgKCpXS0NvbnRleHREb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2Fs
bGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0
cmluZ1JlZiBtaW1lVHlwZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3Ry
aW5nUmVmICgqV0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ3Jl
YXRlRGVzdGluYXRpb25DYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwor
dHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjaykoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2sp
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVm
IGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLQ29udGV4
dERvd25sb2FkRGlkQ2FuY2VsKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0NvbnRl
eHREb3dubG9hZFByb2Nlc3NEaWRDcmFzaENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50QmFzZSB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50SW5mbzsKK30gV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlOworCit0eXBlZGVmIHN0cnVj
dCBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIHsKKyAgICBXS0NvbnRleHREb3dubG9hZENsaWVu
dEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAg
ICAvLyBWZXJzaW9uIDAuCisgICAgV0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRTdGFydDsKKyAgICBXS0NvbnRleHRE
b3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrICAgICAgICAg
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBXS0NvbnRleHREb3dubG9h
ZERpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVSZXNwb25zZTsKKyAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVEYXRhQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhOworICAgIFdLQ29u
dGV4dERvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayAgICAg
ICAgICAgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU7CisgICAgV0tDb250ZXh0RG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrICAgICBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0NvbnRleHREb3du
bG9hZERpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRp
ZENyZWF0ZURlc3RpbmF0aW9uOworICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoOworICAgIFdLQ29u
dGV4dERvd25sb2FkRGlkRmFpbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkRmFpbDsKKyAgICBXS0NvbnRleHREb3dubG9hZERpZENhbmNlbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENhbmNlbDsKKyAgICBXS0NvbnRleHRE
b3dubG9hZFByb2Nlc3NEaWRDcmFzaENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3NEaWRDcmFzaDsKK30gV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMDsKKwordHlwZWRl
ZiBzdHJ1Y3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMSB7CisgICAgV0tDb250ZXh0RG93bmxv
YWRDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
OworCisgICAgLy8gVmVyc2lvbiAwLgorICAgIFdLQ29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnQ7CisgICAgV0tD
b250ZXh0RG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjayAg
ICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgV0tDb250ZXh0
RG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRSZWNlaXZlUmVzcG9uc2U7CisgICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0
YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YTsKKyAg
ICBXS0NvbnRleHREb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJh
Y2sgICAgICAgICAgIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOworICAgIFdLQ29u
dGV4dERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFj
ayAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tDb250
ZXh0RG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICBkaWRDcmVhdGVEZXN0aW5hdGlvbjsKKyAgICBXS0NvbnRleHREb3dubG9hZERpZEZpbmlz
aENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKKyAg
ICBXS0NvbnRleHREb3dubG9hZERpZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZEZhaWw7CisgICAgV0tDb250ZXh0RG93bmxvYWREaWRDYW5jZWwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWw7CisgICAgV0tD
b250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzRGlkQ3Jhc2g7CisKKyAgICAvLyBWZXJzaW9uIDEuCisgICAgV0tDb250
ZXh0RG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3Q7Cit9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
VjE7CisKKyNlbmRpZiAvLyBXS0NvbnRleHREb3dubG9hZENsaWVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYzI4N2JiMzQ3
MDQ3M2FkNWJjNjRmY2ZkNTM4ODRjNzUyZWJlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcApAQCAtMCwwICsxLDg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLRG93bmxvYWQuaCIK
KworI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUg
IkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgorI2luY2x1
ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tE
b3dubG9hZEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKERvd25sb2FkUHJveHk6OkFQ
SVR5cGUpOworfQorCit1aW50NjRfdCBXS0Rvd25sb2FkR2V0SUQoV0tEb3dubG9hZFJlZikKK3sK
KyAgICByZXR1cm4gMDsKK30KKworV0tVUkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVz
dChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQoreworICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkxS
ZXF1ZXN0OjpjcmVhdGUodG9JbXBsKGRvd25sb2FkKS0+cmVxdWVzdCgpKS5sZWFrUmVmKCkpOwor
fQorCitXS0RhdGFSZWYgV0tEb3dubG9hZEdldFJlc3VtZURhdGEoV0tEb3dubG9hZFJlZiBkb3du
bG9hZCkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+bGVnYWN5UmVzdW1l
RGF0YSgpKTsKK30KKwordm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93bmxv
YWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPmNhbmNlbChbZG93bmxvYWQgPSBt
YWtlUmVmKCp0b0ltcGwoZG93bmxvYWQpKV0gKGF1dG8qKSB7CisgICAgICAgIGRvd25sb2FkLT5j
bGllbnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxvYWQuZ2V0KCkpOworICAgIH0pOworfQorCitX
S1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25s
b2FkKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5vcmlnaW5hdGluZ1Bh
Z2UoKSk7Cit9CisKK1dLQXJyYXlSZWYgV0tEb3dubG9hZENvcHlSZWRpcmVjdENoYWluKFdLRG93
bmxvYWRSZWYgZG93bmxvYWQpCit7CisgICAgYXV0byYgcmVkaXJlY3RDaGFpbiA9ICB0b0ltcGwo
ZG93bmxvYWQpLT5yZWRpcmVjdENoYWluKCk7CisgICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVj
dD4+IHVybHM7CisgICAgdXJscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlZGlyZWN0Q2hhaW4u
c2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJlZGlyZWN0VVJMIDogcmVkaXJlY3RDaGFpbikKKyAg
ICAgICAgdXJscy51bmNoZWNrZWRBcHBlbmQoQVBJOjpVUkw6OmNyZWF0ZShyZWRpcmVjdFVSTC5z
dHJpbmcoKSkpOworICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUo
dXJscykpLmxlYWtSZWYoKSk7Cit9CisKK2Jvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0
ZWQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKGRvd25sb2Fk
KS0+d2FzVXNlckluaXRpYXRlZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzZjcyMDI3OTNkNTRmNTQyYTM5MDkyMDRhM2M4MGRh
Y2E5YWQyMWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0Rvd25sb2FkLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tE
b3dubG9hZF9oCisjZGVmaW5lIFdLRG93bmxvYWRfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFz
ZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KKworI2lmbmRlZiBfX2NwbHVz
cGx1cworI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMK
K2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS0Rvd25sb2FkR2V0
VHlwZUlEKCk7CisKK1dLX0VYUE9SVCB1aW50NjRfdCBXS0Rvd25sb2FkR2V0SUQoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCkgV0tfQ19BUElfREVQUkVDQVRFRDsKK1dLX0VYUE9SVCBXS1VSTFJlcXVl
c3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tf
RVhQT1JUIFdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0YShXS0Rvd25sb2FkUmVmIGRv
d25sb2FkKTsKK1dLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCk7CitXS19FWFBPUlQgV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1Bh
Z2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CitXS19FWFBPUlQgV0tBcnJheVJlZiBXS0Rvd25s
b2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CitXS19FWFBPUlQg
Ym9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIFdLRG93bmxv
YWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9h
ZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZENsaWVu
dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTY4YWI2YTAxMzNmNTc4ZWM1ODkz
NzY2YTAwZjBmN2Q0NWE2OTA1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGllbnQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdL
RG93bmxvYWRDbGllbnRfaAotI2RlZmluZSBXS0Rvd25sb2FkQ2xpZW50X2gKLQotI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KLQotdHlwZWRlZiBib29sICgqV0tEb3dubG9hZFdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlLCBXS1VSTFJlcXVlc3RSZWYgbmV3UmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0Rvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUmVmIGNoYWxsZW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3Ry
aW5nUmVmICgqV0tEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBXS1N0cmluZ1JlZiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQg
KCpXS0Rvd25sb2FkRGlkV3JpdGVEYXRhKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBsb25nIGxv
bmcgYnl0ZXNXcml0dGVuLCBsb25nIGxvbmcgdG90YWxCeXRlc1dyaXR0ZW4sIGxvbmcgbG9uZyB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLXR5cGVk
ZWYgdm9pZCAoKldLRG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZEZhaWxX
aXRoRXJyb3IpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIFdLRGF0
YVJlZiByZXN1bWVEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1
Y3QgV0tEb3dubG9hZENsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lk
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudElu
Zm87Ci19IFdLRG93bmxvYWRDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS0Rvd25sb2Fk
Q2xpZW50VjAgewotICAgIFdLRG93bmxvYWRDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24gMC4KLSAgICBXS0Rvd25s
b2FkV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uOwotICAgIFdLRG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOwotICAgIFdLRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSAgICAg
ICAgICAgICAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U7Ci0gICAgV0tEb3du
bG9hZERpZFdyaXRlRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRX
cml0ZURhdGE7Ci0gICAgV0tEb3dubG9hZERpZEZpbmlzaCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRGaW5pc2g7Ci0gICAgV0tEb3dubG9hZERpZEZhaWxXaXRoRXJy
b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsV2l0aEVycm9yOwotfSBX
S0Rvd25sb2FkQ2xpZW50VjA7Ci0KLSNlbmRpZiAvKiBXS0Rvd25sb2FkQ2xpZW50X2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYmNjOTJkNzk5YTU1YmFkMTcxMTVjYjg2YTdjOGJj
ODcwNDYzMzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldLRG93bmxvYWRSZWYuaCIKLQotI2luY2x1ZGUgIkFQSUFycmF5Lmgi
Ci0jaW5jbHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCi0j
aW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKLSNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXS0Rvd25sb2FkQ2xpZW50LmgiCi0jaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCi0KLW5hbWVzcGFjZSBBUEkgewotdGVtcGxhdGU8PiBzdHJ1
Y3QgQ2xpZW50VHJhaXRzPFdLRG93bmxvYWRDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6
OnR1cGxlPFdLRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Ci19OwotfQotCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKLXsKLSAgICBy
ZXR1cm4gdG9BUEkoRG93bmxvYWRQcm94eTo6QVBJVHlwZSk7Ci19Ci0KLVdLVVJMUmVxdWVzdFJl
ZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICBy
ZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbChkb3dubG9hZCktPnJl
cXVlc3QoKSkubGVha1JlZigpKTsKLX0KLQotdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENh
bmNlbENhbGxiYWNrIGNhbGxiYWNrKQotewotICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5j
YW5jZWwoW2Z1bmN0aW9uQ29udGV4dCwgY2FsbGJhY2tdKGF1dG8qIHJlc3VtZURhdGEpIHsKLSAg
ICAgICAgaWYgKGNhbGxiYWNrKQotICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdW1lRGF0
YSksIGZ1bmN0aW9uQ29udGV4dCk7Ci0gICAgfSk7Ci19Ci0KLVdLUGFnZVJlZiBXS0Rvd25sb2Fk
R2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChkb3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKLX0KLQotYm9vbCBX
S0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewot
ICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7Ci19Ci0KLXZv
aWQgV0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2Fk
Q2xpZW50QmFzZSogY2xpZW50KQotewotICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVibGlj
IEFQSTo6Q2xpZW50PFdLRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RG93bmxvYWRD
bGllbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoY29u
c3QgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKLSAgICAgICAgewotICAgICAgICAgICAg
aW5pdGlhbGl6ZShjbGllbnQpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICAK
LSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiBjaGFsbGVuZ2UpIG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSB7Ci0gICAgICAgICAgICAg
ICAgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRvQVBJKGRvd25s
b2FkKSwgdG9BUEkoY2hhbGxlbmdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5
JiBkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgb3ZlcnJpZGUKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRXcml0ZURhdGEpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkV3JpdGVEYXRhKHRvQVBJKGRv
d25sb2FkKSwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLQotICAgICAgICB9Ci0KLSAg
ICAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6
OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkgewotICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFQSTo6U3Ry
aW5nKiBkZXN0aW5hdGlvbiA9IHRvSW1wbChtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSh0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkoc3VnZ2VzdGVk
RmlsZW5hbWUuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0gICAgICAgICAg
ICBpZiAoIWRlc3RpbmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLT5zdHJpbmcoKSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBv
dmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2go
dG9BUEkoZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEp
IG92ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbFdp
dGhFcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5k
aWRGYWlsV2l0aEVycm9yKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkoZXJyb3IpLCB0b0FQSShyZXN1
bWVEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92
ZXJyaWRlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBk
b3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcg
ZG93bmxvYWQiIH0sIG51bGxwdHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbih0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9B
UEkocmVxdWVzdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpIHsKLSAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRvSW1wbChkb3dubG9hZCktPnNldENsaWVudChh
ZG9wdFJlZigqbmV3IERvd25sb2FkQ2xpZW50KGNsaWVudCkpKTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzA1OGQ2N2VmZmNmNGZhZGMwZmYwYTk0ZTYwY2I2ZTIxNTJmY2YwYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLRG93bmxvYWRSZWZfaAotI2RlZmluZSBX
S0Rvd25sb2FkUmVmX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLSNpbmNsdWRlIDxX
ZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVk
ZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKTsKLQot
V0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCk7Ci0KLXR5cGVkZWYgdm9pZCAoKldLRG93bmxvYWRDYW5jZWxDYWxsYmFj
aykoV0tEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7Ci1X
S19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENhbmNlbENhbGxiYWNrIGNhbGxi
YWNrKTsKLVdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShX
S0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBib29sIFdLRG93bmxvYWRHZXRXYXNV
c2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tfRVhQT1JUIHZvaWQgV0tE
b3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlm
IC8qIFdLRG93bmxvYWRSZWZfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKaW5kZXggZTEzNzA2ZGU1MDNjOTdh
NTM2Mjg3NWI1YTc2YjQ5MDQxMGZiMzFlYi4uOGZmMzdlNWM4N2JlODQ3MjFjYjFhODA4M2YzYTIw
ZjE1NTlhNTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uQWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCkBAIC0zNiwxMCArMzYsNyBAQCBXS1R5cGVJRCBX
S05hdmlnYXRpb25BY3Rpb25HZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQSShBUEk6Ok5hdmln
YXRpb25BY3Rpb246OkFQSVR5cGUpOwogfQogCi1XS1N0cmluZ1JlZiBXS05hdmlnYXRpb25BY3Rp
b25HZXREb3dubG9hZEF0dHJpYnV0ZShXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKQorYm9v
bCBXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQoV0tOYXZpZ2F0aW9uQWN0
aW9uUmVmIGFjdGlvbikKIHsKLSAgICBhdXRvJiBhdHRyaWJ1dGUgPSB0b0ltcGwoYWN0aW9uKS0+
ZG93bmxvYWRBdHRyaWJ1dGUoKTsKLSAgICBpZiAoYXR0cmlidXRlLmlzTnVsbCgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdG9BUEkoYXR0cmlidXRlLmltcGwoKSk7Cisg
ICAgcmV0dXJuIHRvSW1wbChhY3Rpb24pLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlv
blJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9u
UmVmLmgKaW5kZXggNGMxM2Q2MzliZDdhZjI2OTEwYzNkNzAyMzczZDY1NDYxNTNiOTUzMi4uOWQ4
ZmNmMWUxOTk3MTNiMWYwOWIzMjYyMGQyMTU3OTI0NTQ4NmU5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKQEAgLTM0
LDcgKzM0LDcgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS05hdmlnYXRp
b25BY3Rpb25HZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTmF2aWdhdGlv
bkFjdGlvbkdldERvd25sb2FkQXR0cmlidXRlKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBhY3Rpb24p
OworV0tfRVhQT1JUIGJvb2wgV0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2Fk
KFdLTmF2aWdhdGlvbkFjdGlvblJlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMjI0ZGMxODExNTQxYTJkMjEy
ZjQ0ZWI4NzQ1YWJiMjFjN2ExMTU0MC4uZWU1MTE5ZmQwY2MyNmNiOGUxNTAzNzE5NTAwZDkyN2U0
MWFiNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC01
NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgog
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkNv
bnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKLSNpbmNsdWRlICJEb3dubG9hZFBy
b3h5LmgiCiAjaW5jbHVkZSAiTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTEyNDEs
NyArMTI0MCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFn
ZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFJlZjxBUEk6Ok5hdmlnYXRpb25B
Y3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFt
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlc291cmNlUmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFJlZjxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViRnJhbWVQcm94eSogb3Jp
Z2luYXRpbmdGcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
c291cmNlUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJl
cXVlc3QsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVj
YXRlZEZvclVzZVdpdGhWMSAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAgLTEyNTIsMTQgKzEy
NTEsMTQgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICAgICAgUmVmPEFQSTo6VVJM
UmVxdWVzdD4gcmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVz
dCk7CiAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICAgICAgbV9jbGllbnQu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRv
QVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCku
bmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJz
KSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVx
dWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSSgmcGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5
cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShs
aXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAgICAgICAgICBtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEo
dG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEo
KS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb2RpZmll
cnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0b0FQSShv
cmlnaW5hdGluZ0ZyYW1lKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0
cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVj
YXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRv
QVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVu
ZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlv
bi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb3Vz
ZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShvcmlnaW5hbFJlcXVlc3Qu
cHRyKCkpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAg
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0
b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShvcmln
aW5hbFJlcXVlc3QucHRyKCkpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIu
cHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWY8QVBJOjpOYXZpZ2F0aW9u
QWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBv
dmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZy
YW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2Uo
KTsKQEAgLTEyNjgsNyArMTI2Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKIAogICAgICAg
ICAgICAgUmVmPEFQSTo6VVJMUmVxdWVzdD4gcmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3Jl
YXRlKHJlc291cmNlUmVxdWVzdCk7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKG5h
dmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25B
Y3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCku
bW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZnJhbWVOYW1lLmltcGwo
KSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2Rp
ZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJl
cXVlc3QucHRyKCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlzdGVuZXIucHRy
KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAg
IH0KIAogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc291cmNlUmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQpA
QCAtMjI2MCwyNyArMjI1OSw2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAg
ICByZXR1cm4gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmctPnN0cmluZygpLCB1
cmwpKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29t
ZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25BY3Rp
b24mIGFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVj
b21lRG93bmxvYWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKHRvQVBJKCZwYWdlKSwgdG9BUEko
JmFjdGlvbiksIHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYg
cmVzcG9uc2UsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQodG9BUEkoJnBhZ2UpLCB0b0FQ
SSgmcmVzcG9uc2UpLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2Fk
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmNvbnRl
eHRNZW51RGlkQ3JlYXRlRG93bmxvYWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCh0b0FQSSgmcGFnZSks
IHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0K
LQogICAgICAgICB2b2lkIGRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUoV2ViUGFnZVByb3h5JiBw
YWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEJl
Z2luTmF2aWdhdGlvbkdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggYTRhYWZlNGE5MzViMzEwYTIy
MDFiZjdiNGY3NDU2NWU1NTJiODRhNC4uMzgwNmQxODZhYTlmYjk3NzQ3YTczZDk3MzYwNmE1OGVi
NDE4OGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
TmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzEsMTMgKzcxLDcgQEAgdHlwZWRlZiB2b2lkICgq
V0tQYWdlTmF2aWdhdGlvbldlYlByb2Nlc3NEaWRUZXJtaW5hdGVDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFcKIHR5cGVkZWYgV0tEYXRhUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlXZWJDcnlw
dG9NYXN0ZXJLZXlDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogCiB0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmdDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uQWN0
aW9uRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlv
bkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKLQotdHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdh
dGlvblJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0KLXR5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmln
YXRpb25Db250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQorICAg
IAogdHlwZWRlZiBXS1BsdWdpbkxvYWRQb2xpY3kgKCpXS1BhZ2VOYXZpZ2F0aW9uRGVjaWRlUG9s
aWN5Rm9yUGx1Z2luTG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQbHVnaW5Mb2FkUG9s
aWN5IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCBXS0RpY3Rpb25hcnlSZWYgcGx1Z2luSW5mb0Rp
Y3Rpb25hcnksIFdLU3RyaW5nUmVmKiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvbkRpZEJl
Z2luTmF2aWdhdGlvbkdlc3R1cmUpKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKQEAgLTIxOSw5ICsyMTMsNiBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VOYXZpZ2F0aW9u
Q2xpZW50VjMgewogCiAgICAgLy8gVmVyc2lvbiAzLgogICAgIFdLUGFnZU5hdmlnYXRpb25Db3B5
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nQ2FsbGJhY2sgY29weVNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZzsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQWN0aW9uRGlkQmVj
b21lRG93bmxvYWRDYWxsYmFjayBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQ7Ci0g
ICAgV0tQYWdlTmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjayBuYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZDsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ29u
dGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZENhbGxiYWNrIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93
bmxvYWQ7CiB9IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMzsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9h
ZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMyMGM4OWZjYWE4MzEzMzE1MjE4MDAwZDIyYWFl
YTc2YmY5ZDk3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgotCi1AY2xhc3Mg
V0tGcmFtZUluZm87Ci1AY2xhc3MgV0tXZWJWaWV3OwotQHByb3RvY29sIFdLRG93bmxvYWREZWxl
Z2F0ZTsKLQotTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLQotV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCi1AaW50ZXJmYWNlIFdLRG93bmxvYWQg
OiBOU09iamVjdAotCi0vKiBAYWJzdHJhY3QgVGhlIHJlcXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0
aGlzIGRvd25sb2FkLgotICBAZGlzY3Vzc2lvbiBJZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRp
cmVjdGVkIHRvIGEgZGlmZmVyZW50IFVSTCwgb3JpZ2luYWxSZXF1ZXN0Ci0gIHdpbGwgYmUgdW5j
aGFuZ2VkIGFmdGVyIHRoZSBkb3dubG9hZCBmb2xsb3dzIHRoZSByZWRpcmVjdC4KLSAqLwotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNVUkxSZXF1ZXN0ICpvcmln
aW5hbFJlcXVlc3Q7Ci0KLS8qIEBhYnN0cmFjdCBUaGUgd2ViIHZpZXcgdGhhdCBvcmlnaW5hdGVk
IHRoaXMgZG93bmxvYWQuICovCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHdlYWsp
IFdLV2ViVmlldyAqd2ViVmlldzsKLQotLyogQGFic3RyYWN0IFRoZSBsb2NhdGlvbiB0byB3aGlj
aCB0aGUgZG93bmxvYWRlZCBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4uCi0gQGRpc2N1c3Npb24gVGhp
cyBpcyB0aGUgZmlsZSBVUkwgZnJvbSBXS0Rvd25sb2FkRGVsZWdhdGUncyBkb3dubG9hZDpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjoKLSAqLwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5LCBudWxsYWJs
ZSkgTlNVUkwgKmRlc3RpbmF0aW9uOwotCi0vKiBAYWJzdHJhY3QgVGhlIGRlbGVnYXRlIHRoYXQg
cmVjZWl2ZXMgcHJvZ3Jlc3MgdXBkYXRlcyBmb3IgdGhpcyBkb3dubG9hZC4gKi8KLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZTsKLQot
LyogQGFic3RyYWN0IENhbmNlbCB0aGUgZG93bmxvYWQuCi0gQHBhcmFtIGNvbXBsZXRpb25IYW5k
bGVyIEEgYmxvY2sgdG8gaW52b2tlIHdoZW4gY2FuY2VsbGF0aW9uIGlzIGZpbmlzaGVkLgotIEBk
aXNjdXNzaW9uIFRvIGF0dGVtcHQgdG8gcmVzdW1lIHRoZSBkb3dubG9hZCwgY2FsbCBXS1dlYlZp
ZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTogd2l0aCB0aGUgZGF0YSBnaXZlbiB0byB0aGUgY29t
cGxldGlvbkhhbmRsZXIuCi0gSWYgbm8gcmVzdW1lIGF0dGVtcHQgaXMgcG9zc2libGUgd2l0aCB0
aGlzIHNlcnZlciwgY29tcGxldGlvbkhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCBuaWwuCi0g
Ki8KLS0gKHZvaWQpY2FuY2VsOih2b2lkKF4gX051bGxhYmxlKShOU0RhdGEgKiBfTnVsbGFibGUg
cmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXI7Ci0KLUBlbmQKLQotTlNfQVNTVU1FX05PTk5V
TExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2Fk
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTE3MDRlYmFmMzZkOTc3NjBjOGJk
YzlmNmU5MmYzZDNkYmUyMTMyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJj
b25maWcuaCIKLSNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgotCi0jaW1wb3J0ICJBUElE
b3dubG9hZENsaWVudC5oIgotI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5o
IgotI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAiV0tEb3dubG9hZERlbGVnYXRl
LmgiCi0jaW1wb3J0ICJXS05TRGF0YS5oIgotI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCi0jaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgotI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KLQotY2xh
c3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7Ci1w
dWJsaWM6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoaWQgPFdLRG93bmxvYWREZWxlZ2F0
ZT4gZGVsZWdhdGUpCi0gICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKLSAgICAgICAgLCBt
X3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpu
ZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopXSkKLSAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNv
bXBsZXRpb25IYW5kbGVyOildKQotICAgICAgICAsIG1fcmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRv
d25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOildKQotICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YShb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRXcml0ZURh
dGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTopXSkKLSAgICAg
ICAgLCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2goW21fZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihkb3dubG9hZERpZEZpbmlzaDopXSkKLSAgICAgICAgLCBtX3Jlc3BvbmRzVG9E
aWRGYWlsV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRv
d25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTopXSkKLSAgICB7Ci0gICAgfQotCi1w
cml2YXRlOgotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKLSAg
ICB7Ci0gICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXF1ZXN0KSk7Ci0KLSAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNSZXF1
ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6
OkRvTm90VXBkYXRlSFRUUEJvZHkpOwotICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkKSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpzdGF0aWNfY2FzdDxOU0hU
VFBVUkxSZXNwb25zZSAqPihyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkpIG5ld1JlcXVlc3Q6bnNS
ZXF1ZXN0LmdldCgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOikpXShXS0Rvd25sb2Fk
UmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlmIChjaGVja2Vy
LT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRS
ZWRpcmVjdFBvbGljeUNhbmNlbDoKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKLSAgICAgICAgICAgIGNhc2UgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxs
b3c6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBXS0Rv
d25sb2FkUmVkaXJlY3RQb2xpY3kgKCVsZCkiLCAobG9uZylwb2xpY3ldOwotICAgICAgICAgICAg
fQotICAgICAgICB9KS5nZXQoKV07Ci0gICAgfQotCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIGZpbmFsCi0gICAgewot
ICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgIHJldHVybiBjaGFsbGVuZ2UubGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKLQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6d3JhcHBlcihjaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY2hhbGxlbmdlID0gbWFrZVJlZihjaGFsbGVuZ2UpLCBjaGVja2VyID0gV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQo
KSwgQHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
b21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKLSAg
ICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWw6Ci0g
ICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwg
Y3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpD
cmVkZW50aWFsKCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzoKLSAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgotICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQ
cm90ZWN0aW9uU3BhY2U6Ci0gICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNv
bXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pLmdldCgpXTsKLSAgICB9Ci0KLSAgICB2b2lkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbAotICAgIHsKLSAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRz
VG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkKLSAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKLQotICAgICAg
ICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtkb3dubG9h
ZCA9IG1ha2VSZWYoZG93bmxvYWQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25I
YW5kbGVyOikpXSAoTlNVUkwgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIoKTsKLQotICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNGaWxlVVJMKSB7
Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0
ZTo6Tm8sIHsgfSk7Ci0gICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAImRlc3RpbmF0aW9uIG11c3QgYmUgYSBmaWxlIFVS
TCJdOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl07Ci0gICAgICAgICAgICBpZiAoIVtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOltk
ZXN0aW5hdGlvbiBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdLnBhdGhdKSB7Ci0gICAg
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb3dubG9hZF0gewotICAgICAg
ICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJvciBlcnJvcldpdGhEb21haW46
TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZv
Om5pbF0sIHsgfSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFtmaWxlTWFuYWdl
ciBmaWxlRXhpc3RzQXRQYXRoOmRlc3RpbmF0aW9uLnBhdGhdKSB7Ci0gICAgICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb3dubG9hZF0gewotICAgICAgICAgICAgICAgICAg
ICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRv
bWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7
Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24ucGF0aCk7Ci0gICAgICAgIH0pLmdldCgp
XTsKLSAgICB9Ci0KLSAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dy
aXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIGZpbmFsCi0gICAgewot
ICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkKSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRv
dGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZV07Ci0gICAgfQotCi0gICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiBkb3dubG9hZCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8
fCAhbV9yZXNwb25kc1RvRGlkRmluaXNoKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IFttX2RlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93bmxvYWQpXTsKLSAgICB9
Ci0KLSAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkg
ZmluYWwKLSAgICB7Ci0gICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlk
RmFpbFdpdGhFcnJvcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBbbV9kZWxlZ2F0
ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJy
b3IoKSByZXN1bWVEYXRhOndyYXBwZXIocmVzdW1lRGF0YSldOwotICAgIH0KLQotICAgIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCi0g
ICAgewotICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRo
RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgW21fZGVsZWdhdGUgZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhE
b21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxv
c3QgdXNlckluZm86bmlsXSByZXN1bWVEYXRhOm5pbF07Ci0gICAgfQotCi0gICAgV2Vha09iakNQ
dHI8aWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwotCi0gICAgYm9vbCBtX3Jl
c3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA6IDE7Ci0gICAgYm9vbCBtX3Jlc3Bv
bmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiAxOwotICAgIGJvb2wgbV9y
ZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgOiAxOwotICAgIGJvb2wgbV9y
ZXNwb25kc1RvRGlkV3JpdGVEYXRhIDogMTsKLSAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZpbmlz
aCA6IDE7Ci0gICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yIDogMTsKLX07Ci0K
LUBpbXBsZW1lbnRhdGlvbiBXS0Rvd25sb2FkCi0KLS0gKHZvaWQpY2FuY2VsOih2b2lkICheKShO
U0RhdGEgKnJlc3VtZURhdGEpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgX2Rvd25sb2FkLT5j
YW5jZWwoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGF1dG8qIGRhdGEpIHsKLSAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7Ci0gICAgfSk7Ci19Ci0KLS0g
KE5TVVJMUmVxdWVzdCAqKW9yaWdpbmFsUmVxdWVzdAotewotICAgIHJldHVybiBfZG93bmxvYWQt
PnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRv
Tm90VXBkYXRlSFRUUEJvZHkpOwotfQotCi0tIChOU1VSTCAqKWRlc3RpbmF0aW9uCi17Ci0gICAg
YXV0byYgZGVzdGluYXRpb25QYXRoID0gX2Rvd25sb2FkLT5kZXN0aW5hdGlvbkZpbGVuYW1lKCk7
Ci0gICAgaWYgKGRlc3RpbmF0aW9uUGF0aC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICByZXR1cm4gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZXN0aW5hdGlvblBhdGhdOwotfQot
Ci0tIChXS1dlYlZpZXcgKil3ZWJWaWV3Ci17Ci0gICAgYXV0byogcGFnZSA9IF9kb3dubG9hZC0+
b3JpZ2luYXRpbmdQYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBmcm9tV2ViUGFnZVByb3h5KCpwYWdlKTsKLX0KLQotLSAoaWQgPFdLRG93bmxv
YWREZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgp
OwotfQotCi0tICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxl
Z2F0ZQotewotICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIF9kb3dubG9hZC0+c2V0Q2xp
ZW50KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRDbGllbnQoZGVsZWdhdGUpKSk7Ci19Ci0KLS0gKHZv
aWQpZGVhbGxvYwotewotICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKLSAgICBbc3Vw
ZXIgZGVhbGxvY107Ci19Ci0KLSNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1l
bnRhdGlvbgotCi0tIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAotewotICAgIHJldHVybiAqX2Rv
d25sb2FkOwotfQotCi1AZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhlMjEzZGRjZmUyZmQ2NWEwYjdlY2I2NDYyYTk2N2M0MTk4OTRmMzEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRG93bmxvYWREZWxlZ2F0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
LSNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KLQotQGNsYXNzIFdLRG93bmxvYWQ7Ci0K
LS8qIEBlbnVtIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeQotIEBhYnN0cmFjdCBUaGUgcG9saWN5
IHRvIHBhc3MgYmFjayB0byB0aGUgZGVjaXNpb24gaGFuZGxlciBmcm9tIHRoZSBkb3dubG9hZDp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjogbWV0
aG9kLgotIEBjb25zdGFudCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwgICBDYW5jZWwg
dGhlIHJlZGlyZWN0LgotIEBjb25zdGFudCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdyAg
ICBBbGxvdyB0aGUgcmVkaXJlY3QuCi0gKi8KLXR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeSkgewotICAgIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNh
bmNlbCwKLSAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdywKLX0gV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQotTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KLQotQHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+Ci1A
b3B0aW9uYWwKLQotLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIHJl
Y2VpdmVkIGFuIEhUVFAgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCi0gQHBhcmFtIGRvd25sb2FkIFRo
ZSBkb3dubG9hZCB0aGF0IHJlY2VpdmVkIHRoZSByZWRpcmVjdC4KLSBAcGFyYW0gcmVzcG9uc2Ug
VGhlIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgotIEBwYXJhbSBuZXdSZXF1ZXN0IFRoZSBuZXcgcmVx
dWVzdCB0aGF0IHdpbGwgYmUgc2VudC4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNv
bXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gaW5kaWNhdGUgd2hldGhlciBvciBu
b3QKLSB0byBwcm9jZWVkIHdpdGggdGhlIHJlZGlyZWN0aW9uLgotIEBkaXNjdXNzaW9uIElmIHlv
dSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCBhbGwgc2VydmVyIHN1Z2dlc3RlZCByZWRp
cmVjdHMgd2lsbCBiZSB0YWtlbi4KLSAqLwotLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAq
KWRvd25sb2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAq
KXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsK
LQotLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9u
ZCB0byBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCi0gQHBhcmFtIGRvd25sb2FkIFRoZSBk
b3dubG9hZCB0aGF0IHJlY2VpdmVkIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCi0gQHBh
cmFtIGNoYWxsZW5nZSBUaGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgotIEBwYXJhbSBjb21w
bGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byBy
ZXNwb25kIHRvIHRoZSBjaGFsbGVuZ2UuIFRoZQotIGRpc3Bvc2l0aW9uIGFyZ3VtZW50IGlzIG9u
ZSBvZiB0aGUgY29uc3RhbnRzIG9mIHRoZSBlbnVtZXJhdGVkIHR5cGUKLSBOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24uIFdoZW4gZGlzcG9zaXRpb24gaXMgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsCi0gdGhlIGNyZWRlbnRpYWwgYXJndW1lbnQgaXMg
dGhlIGNyZWRlbnRpYWwgdG8gdXNlLCBvciBuaWwgdG8gaW5kaWNhdGUgY29udGludWluZyB3aXRo
b3V0IGEKLSBjcmVkZW50aWFsLgotIEBkaXNjdXNzaW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50
IHRoaXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCByZXNwb25kIHRvIHRoZSBhdXRoZW50aWNh
dGlvbiBjaGFsbGVuZ2Ugd2l0aCB0aGUgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFBy
b3RlY3Rpb25TcGFjZSBkaXNwb3NpdGlvbi4KLSAqLwotLSAodm9pZClkb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOwotCi0vKiBAYWJzdHJhY3QgSW52b2tl
ZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9u
IGNoYWxsZW5nZS4KLSBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIGZvciB3aGljaCB3ZSBu
ZWVkIGEgZmlsZSB0byB3aGljaCB0byB3cml0ZS4KLSBAcGFyYW0gcmVzcG9uc2UgVGhlIHNlcnZl
ciByZXNwb25zZSBpZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIGFuIEhUVFAgcmVx
dWVzdCwKLSBvciBhIHN5bnRoZXNpemVkIHJlc3BvbnNlIGZvciBibG9iIGRvd25sb2Fkcy4KLSBA
cGFyYW0gc3VnZ2VzdGVkRmlsZW5hbWUgVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZS4KLSBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2Ug
d2l0aAotIGVpdGhlciBhIGZpbGUgVVJMIHRvIGJlZ2luIHRoZSBkb3dubG9hZCBvciBuaWwgdG8g
Y2FuY2VsIHRoZSBkb3dubG9hZC4KLSBAZGlzY3Vzc2lvbiBJZiB0aGlzIGlzIGEgZG93bmxvYWQg
b2YgYSBibG9iIFVSTCwgcmVzcG9uc2Ugd2lsbCBiZSBudWxsLiAgc3VnZ2VzdGVkRmlsZW5hbWUK
LSB3aWxsIG9mdGVuIGJlIHRoZSBzYW1lIGFzIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCBi
dXQgd2ViIGNvbnRlbnQgY2FuIHNwZWNpZnkgdGhlCi0gc3VnZ2VzdGVkIGRvd25sb2FkIGZpbGVu
YW1lLiAgSWYgdGhlIGRlc3RpbmF0aW9uIGZpbGUgVVJMIGlzIG5vbi1udWxsLCBpdCBtdXN0IGJl
IGEgZmlsZQotIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGV4
aXN0IGFuZCBjYW4gYmUgd3JpdHRlbiB0by4KLSAqLwotLSAodm9pZClkb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmls
ZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICogX051bGxhYmxlIGRlc3Rp
bmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcjsKLQotLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0
aGUgZG93bmxvYWQgaGFzIHJlY2VpdmVkIGFuZCB3cml0dGVuIGRhdGEgdG8gdGhlIGRlc3RpbmF0
aW9uLgotIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCBoYXMgd3JpdHRlbiBkYXRh
LgotIEBwYXJhbSBieXRlc1dyaXR0ZW4gVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgotIEBw
YXJhbSB0b3RhbEJ5dGVzV3JpdHRlbiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4u
Ci0gQHBhcmFtIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgVGhlIHRvdGFsIG51bWJlciBvZiBi
eXRlcyBleHBlY3RlZCB0byBiZSB3cml0dGVuLgotIEBkaXNjdXNzaW9uIElmIHRoaXMgZG93bmxv
YWQgd2FzIHRoZSByZXN1bHQgb2YgcmVzdW1pbmcgYSBwcmV2aW91cyBkb3dubG9hZCwgdGhlbgot
IHRvdGFsQnl0ZXNXcml0dGVuIHdpbGwgYmUgYnl0ZXNXcml0dGVuIHBsdXMgdGhlIG51bWJlciBv
ZiBieXRlcyB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gZG93bmxvYWRlZC4KLSBJZiB0aGUgdG90YWwg
bnVtYmVyIG9mIGJ5dGVzIGlzIHVua25vd24sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgd2ls
bCBiZSAtMS4KLSAqLwotLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0
X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOwotCi0vKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRo
ZSBkb3dubG9hZCBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgotIEBwYXJhbSBkb3dubG9hZCBU
aGUgZG93bmxvYWQgdGhhdCBmaW5pc2hlZC4KLSAqLwotLSAodm9pZClkb3dubG9hZERpZEZpbmlz
aDooV0tEb3dubG9hZCAqKWRvd25sb2FkOwotCi0vKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRo
ZSBkb3dubG9hZCBoYXMgZmFpbGVkLgotIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhh
dCBoYXMgZmFpbGVkLgotIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgaW5kaWNhdGluZyB0aGUgZmFp
bHVyZSByZWFzb24uCi0gQHBhcmFtIHJlc3VtZURhdGEgVGhpcyBkYXRhIGNhbiBiZSBwYXNzZWQg
dG8gV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6IHRvIGF0dGVtcHQgdG8gcmVzdW1l
IHRoaXMgZG93bmxvYWQuCi0gKi8KLS0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3du
bG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YToobnVsbGFi
bGUgTlNEYXRhICopcmVzdW1lRGF0YTsKLQotQGVuZAotCi1OU19BU1NVTUVfTk9OTlVMTF9FTkQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2Fk
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2Fk
SW50ZXJuYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZjODk0MjBlNmUyN2Ix
NDNkYjAyNTQwNWNiMzNiN2E5ZDdjNGFmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZEludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAiV0tEb3dubG9hZC5oIgotI2lt
cG9ydCAiV0tPYmplY3QuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94eT4gewotICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IFdLRG93bmxvYWQ7Ci19OwotCi19Ci0KLUBpbnRlcmZhY2UgV0tEb3dubG9hZCAoKSA8V0tP
YmplY3Q+IHsKLUBwYWNrYWdlCi0gICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6RG93bmxv
YWRQcm94eT4gX2Rvd25sb2FkOwotICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdh
dGU+ID4gX2RlbGVnYXRlOwotfQotQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDkyZWYwZmY0ZTgxNjhm
ODU3MmQ3Mzg4OGNiNmEwOTc4NDdiMjJkYzkuLjkzNDA3MGUzZGU0NDk4MmY1NzJiZDVhMTg4ZDEw
Y2I0OWNmNzIxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTc2LDEwICs3Niw2IEBAIFdLX0NMQVNTX0FW
QUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKIAotLyohIEBhYnN0cmFj
dCBUaGUgZG93bmxvYWQgYXR0cmlidXRlIG9mIHRoZSBlbGVtZW50IHRoYXQgY2F1c2VkIHRoaXMg
bmF2aWdhdGlvbi4KLSovCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxl
LCBjb3B5KSBOU1N0cmluZyAqZG93bmxvYWRBdHRyaWJ1dGUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQogI2lmICFUQVJHRVRfT1NfSVBIT05F
CiAKIC8qISBAYWJzdHJhY3QgVGhlIG1vZGlmaWVyIGtleXMgdGhhdCB3ZXJlIGluIGVmZmVjdCB3
aGVuIHRoZSBuYXZpZ2F0aW9uIHdhcyByZXF1ZXN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCBiYmVl
OGZlNmJmZWVhOTA4NzM3NjFlYjllZWRjNjE5YTM2NmVlMzg1Li40ZDIwYzgwY2VjMjZhN2MyODY5
MmFhODZkMzRiNDBhNmI3NTBmMGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTExNiwxNCArMTE2LDYg
QEAgLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogICAgIHJldHVybiBfbmF2aWdhdGlvbkFjdGlv
bi0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6
VXBkYXRlSFRUUEJvZHkpOwogfQogCi0tIChOU1N0cmluZyAqKWRvd25sb2FkQXR0cmlidXRlCi17
Ci0gICAgYXV0byYgYXR0cmlidXRlID0gX25hdmlnYXRpb25BY3Rpb24tPmRvd25sb2FkQXR0cmli
dXRlKCk7Ci0gICAgaWYgKGF0dHJpYnV0ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICByZXR1cm4gYXR0cmlidXRlOwotfQotCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0g
KFdLU3ludGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlja1R5cGUKIHsKQEAgLTE5NSw3ICsx
ODcsNyBAQCAtIChCT09MKV9zaG91bGRPcGVuQXBwTGlua3MKIAogLSAoQk9PTClfc2hvdWxkUGVy
Zm9ybURvd25sb2FkCiB7Ci0gICAgcmV0dXJuICFfbmF2aWdhdGlvbkFjdGlvbi0+ZG93bmxvYWRB
dHRyaWJ1dGUoKS5pc051bGwoKTsKKyAgICByZXR1cm4gX25hdmlnYXRpb25BY3Rpb24tPnNob3Vs
ZFBlcmZvcm1Eb3dubG9hZCgpOwogfQogCiAtIChCT09MKV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAppbmRleCA1M2NjNWE5N2M3ZWE5MjU0YTMyNTA0YTRk
ZTY0ZjZjM2ZmM2U1YTZlLi44NWZkOTZlNGRkMGZlZmU2YmNmN2ZlZTlkNzhjNWU5OTJmNWJjMzcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tTeW50aGV0aWNDbGlja1R5cGUpIHsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQk9PTCBfY2FuSGFuZGxlUmVxdWVzdDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBCT09MIF9zaG91bGRPcGVuQXBwTGlua3MgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMSksIGlvcyg5LjApKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBfc2hvdWxkUGVyZm9ybURvd25sb2FkIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoImRvd25sb2FkQXR0cmlidXRlIiwgbWFjb3MoMTAuMTUsIFdLX01BQ19UQkEpLCBpb3MoMTMu
MCwgV0tfSU9TX1RCQSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9z
aG91bGRQZXJmb3JtRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3Bl
bkV4dGVybmFsVVJMcyBXS19BUElfREVQUkVDQVRFRCgidXNlIF9zaG91bGRPcGVuRXh0ZXJuYWxT
Y2hlbWVzIGFuZCBfc2hvdWxkT3BlbkFwcExpbmtzIiwgbWFjb3MoMTAuMTEsIDEwLjExKSwgaW9z
KDkuMCwgOS4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKaW5kZXggMTY4Yjc5ZWNlMDY4ZjhiY2NmYTZj
YWIwYzAxZmU4MWUzZTZiMjU4NS4uY2YyMTBhZTkxYjYyOWYyZmFjZTc3ZTFiZTM1MTBlYjg4NGEw
NTg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAotQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwog
QGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25SZXNwb25zZTsK
QEAgLTQxLDI0ICs0MCwyMCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogIHdlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6IG1ldGhvZC4KICBA
Y29uc3RhbnQgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRoZSBuYXZp
Z2F0aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyAgICBBbGxv
dyB0aGUgbmF2aWdhdGlvbiB0byBjb250aW51ZS4KLSBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QmVjb21lRG93bmxvYWQgICAgVHVybiB0aGUgbmF2aWdhdGlvbiBpbnRvIGEgZG93
bmxvYWQuCiAgKi8KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSkgewogICAgIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUNhbmNlbCwKICAgICBXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywKLSAgICBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lC
ZWNvbWVEb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwog
CiAvKiEgQGVudW0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kKICBAYWJzdHJhY3QgVGhlIHBv
bGljeSB0byBwYXNzIGJhY2sgdG8gdGhlIGRlY2lzaW9uIGhhbmRsZXIgZnJvbSB0aGUgd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOiBtZXRo
b2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsICAgQ2FuY2Vs
IHRoZSBuYXZpZ2F0aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFs
bG93ICAgIEFsbG93IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgotIEBjb25zdGFudCBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkICAgIFR1cm4gdGhlIG5hdmlnYXRp
b24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkgewogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
Q2FuY2VsLAogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3csCi0gICAgV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBXS05h
dmlnYXRpb25EZWxlZ2F0ZSBwcm90b2NvbCBjYW4gcHJvdmlkZQpAQCAtMTY5LDIyICsxNjQsNiBA
QCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkg
ewogICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hv
dWxkQWxsb3dEZXByZWNhdGVkVExTOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAotLyoK
LSBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJl
Y29tZURvd25sb2FkLgotIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IGNyZWF0ZWQg
dGhlIGRvd25sb2FkLgotIEBwYXJhbSBuYXZpZ2F0aW9uQWN0aW9uIFRoZSBhY3Rpb24gdGhhdCBp
cyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgotIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93
bmxvYWQuCi0qLwotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRp
b25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGlkQmVjb21l
RG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCi0vKgotIEBhYnN0cmFjdCBDYWxsZWQgYWZ0
ZXIgdXNpbmcgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZC4KLSBAcGFy
YW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KLSBAcGFy
YW0gbmF2aWdhdGlvblJlc3BvbnNlIFRoZSByZXNwb25zZSB0aGF0IGlzIGJlaW5nIHR1cm5lZCBp
bnRvIGEgZG93bmxvYWQuCi0gQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZC4KLSovCi0tICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05h
dmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDoo
V0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7Ci0KIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggOTkxM2QxNmMwYTk3NjA0OTk0NjRjYzQzZWJh
M2U0ZjE5ZTdkMGQxNy4uZjA5YzJhOGU2YTViNzg1NWJmZjllYTVmYzMyMTMyYTE1M2ViMTViNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaApAQCAtNTgsMTEgKzU4LDExIEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kpIHsKICAg
ICBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlLAogfSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJF
Q0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93
bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9
IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
ICsgMSk7Ci1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDIpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgPSAoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDEpOwor
c3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhv
dXRUcnlpbmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkICsgMSk7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkgX1dL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93SW5OZXdQcm9jZXNzID0gKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0Fw
cExpbmsgKyAxKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQSV9ERVBSRUNBVEVE
X1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9IChX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxv
dyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkID0gKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CiAKIEBwcm90b2Nv
bCBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogCkBA
IC04OCw4ICs4OCw2IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBf
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hCiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93TGVnYWN5VExTOih2b2lk
ICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWROZWdvdGlhdGVNb2Rlcm5UTFM6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250
ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQogLSAodm9pZClf
d2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAv
LyBJdGVtIGlzIG5pbCBpZiB0aGUgZ2VzdHVyZSBlbmRlZCB3aXRob3V0IG5hdmlnYXRpb24uCiAt
ICh2b2lkKV93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0
SXRlbSAqKWl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tCmluZGV4IGZhZTMxZjMxYjc5OTEyMWQwZTE3MzdjZDA3MjEwODU0OTgw
MjIwM2QuLjRmMzZlMjMyNjQzNzEwMjNkMzhmMjgzODEwNzUxYmNiYTk5ODU5ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBA
IC0yOCwxMyArMjgsMTEgQEAKIAogI2ltcG9ydCAiQXV0b21hdGlvbkNsaWVudC5oIgogI2ltcG9y
dCAiQ2FjaGVNb2RlbC5oIgotI2ltcG9ydCAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW1wb3J0ICJM
ZWdhY3lEb3dubG9hZENsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1
Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCi0jaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKQEAgLTQ4MywxMiArNDgxLDEyIEBA
IC0gKHZvaWQpX3NldENvcmVMb2NhdGlvblByb3ZpZGVyOihpZDxfV0tHZW9sb2NhdGlvbkNvcmVM
b2NhdGlvblByb3ZpZGVyPiljb3JlTG9jCiAKIC0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJM
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNp
dGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3
cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3Rv
cmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpXTsKKyAgICByZXR1cm4gd3JhcHBlcihfcHJv
Y2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmll
dyBfcGFnZV0sIHJlcXVlc3QpKTsKIH0KIAogLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxv
YWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNp
dGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gW19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9h
ZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRh
dGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRoLCBXZWJLaXQ6
OkNhbGxEb3dubG9hZERpZFN0YXJ0OjpObykpXTsKKyAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vz
c1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2Vi
VmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSku
Z2V0KCksIHBhdGgpKTsKIH0KIAogLSAodm9pZClfZ2V0QWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQ
cm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5k
ZXggZjI0OTgwYzljZmY2N2VjZDNiZWRlNzNmZTI0MDA4MThhYTUwYzA0OC4uN2M0ZmU0Y2Q4ZmI5
YWZmYThjYTAzMTliOTQ4OTNjMWY0ZTY4OTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTYyLDcg
KzYyLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9u
YXJ5ICpfcGx1Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMpKTsKICNlbmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRE
b3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVn
YXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQuZG93bmxv
YWREZWxlZ2F0ZSIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RC
QSkpOworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxl
Z2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlk
IDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBA
IC04Myw5ICs4Myw4IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5
T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNCksIGlvcygxMi4wKSk7CiAKLQotLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0
ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3IF9kb3du
bG9hZFJlcXVlc3QiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19U
QkEpKTsKLS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAq
KXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0
b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldy5f
cmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwg
V0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX2Rv
d25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3Jl
OihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihO
U0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGls
ZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90ZXJtaW5h
dGVTZXJ2aWNlV29ya2VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjAp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRl
eCA4ZGZiOTJiNzdjOTM5M2JjNWNlZWZjZDNjYjc1MmEyNjM5MDUwNzE2Li43NjFhMWRhMGY2NWIz
Njk5N2JhYjQ5ZTY2YzJjMjhlOWZmMGIwYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0zOCw3ICszOCw2IEBAIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3Q7CiBAY2xhc3MgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtOwogQGNsYXNzIFdLQ29udGVudFdvcmxkOwotQGNsYXNzIFdLRG93bmxvYWQ7CiBA
Y2xhc3MgV0tGaW5kQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS0ZpbmRSZXN1bHQ7CiBAY2xhc3Mg
V0tGcmFtZUluZm87CkBAIC00NTEsMTggKzQ1MCw2IEBAIFRoZSB1bmlmb3JtIHR5cGUgaWRlbnRp
ZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQgdGhlIHJlbGF0ZWQgcGFzdGVi
CiAgKi8KICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAKLS8qIEBhYnN0cmFjdCBC
ZWdpbnMgYSBkb3dubG9hZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudGx5IGRpc3BsYXll
ZCB3ZWJwYWdlIGFzIGlmIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSB0dXJuZWQgYSBuYXZpZ2F0
aW9uIGludG8gYSBkb3dubG9hZCBpbnN0ZWFkCi0gQHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3Qg
c3BlY2lmeWluZyB0aGUgVVJMIHRvIGRvd25sb2FkLgotIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxl
ciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgc3RhcnRlZC4KLSAqLwotLSAo
dm9pZClzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCi0v
KiBAYWJzdHJhY3QgUmVzdW1lcyBhIGRvd25sb2FkIHRoYXQgZmFpbGVkIG9yIHdhcyBjYW5jZWxl
ZC4KLSBAcGFyYW0gcmVzdW1lRGF0YSBEYXRhIGZyb20gYSBXS0Rvd25sb2FkRGVsZWdhdGUncyBk
aWRGYWlsV2l0aEVycm9yIG9yIGEgV0tEb3dubG9hZCdzIGNhbmNlbCBjb21wbGV0aW9uSGFuZGxl
ci4KLSBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0aGUgZG93
bmxvYWQgaGFzIHJlc3VtZWQuCi0gKi8KLS0gKHZvaWQpcmVzdW1lRG93bmxvYWRXaXRoRGF0YToo
TlNEYXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2Fk
ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7Ci0KIC8qIEBhYnN0cmFjdCBUaGUgbWVkaWEgdHlwZSBmb3IgdGhl
IFdLV2ViVmlldwogIEBkaXNjdXNzaW9uIFRoZSB2YWx1ZSBvZiBtZWRpYVR5cGUgd2lsbCBvdmVy
cmlkZSB0aGUgbm9ybWFsIHZhbHVlIG9mIHRoZSBDU1MgbWVkaWEgcHJvcGVydHkuCiAgU2V0dGlu
ZyB0aGUgdmFsdWUgdG8gbmlsIHdpbGwgcmVzdG9yZSB0aGUgbm9ybWFsIHZhbHVlLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMWI0NDQ0
YTU2MjI3YTgyMzdmNGFhZDkwMjJmNTNjMmEyYWEyM2NmNC4uMmRkN2VhNWVhOWMxMTM5N2I3Mjc0
ODE4Mjc2YTc0OGUzMGQ5YzY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01OCwxMSArNTgsOSBAQAogI2ltcG9ydCAiV0tCYWNrRm9y
d2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKLSNpbXBvcnQg
IldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCiAjaW1w
b3J0ICJXS0ZpbmRDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0ZpbmRSZXN1bHRJbnRlcm5h
bC5oIgotI2ltcG9ydCAiV0tGcmFtZUluZm9Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlE
ZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTGF5b3V0TW9kZS5oIgogI2ltcG9ydCAiV0tN
ZWRpYVBsYXliYWNrU3RhdGUuaCIKQEAgLTcxMCw0MiArNzA4LDYgQEAgLSAoV0tOYXZpZ2F0aW9u
ICopbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
Y2hhcmFjdGUKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBj
aGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpKTsKIH0KIAotLSAo
dm9pZClzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgot
ewotICAgIF9wYWdlLT5kb3dubG9hZFJlcXVlc3QocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7Ci0g
ICAgICAgIGlmIChkb3dubG9hZCkKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBw
ZXIoZG93bmxvYWQpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpcmVzdW1lRG93bmxvYWRXaXRoRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICop
KWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEg
ZXJyb3I6bmlsXSk7Ci0gICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5T
RGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOwotICAgIE5TRGljdGlvbmFyeSAq
ZGljdGlvbmFyeSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0
V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3Ry
aW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFz
c10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9v
dE9iamVjdEtleSJdOwotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLSAgICBOU1N0
cmluZyAqcGF0aCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3Vt
ZUluZm9Mb2NhbFBhdGgiXTsKLQotICAgIGlmICghcGF0aCkKLSAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgcmVzdW1l
IGRhdGEiXTsKLQotI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKLSAgICAvLyBN
b2phdmUgQ0ZOZXR3b3JrIGZhaWxzIHRvIHJlc3VtZSBhIGRvd25sb2FkIGlmIHRoZSBkZXN0aW5h
dGlvbiBkb2VzIG5vdCBleGlzdC4KLSAgICAvLyBJZiBzb21lb25lIGhhcyByZW1vdmVkIHRoZSBk
ZXN0aW5hdGlvbiBmaWxlLCBtYWtlIGFuIGVtcHR5IGZpbGUgYXQgdGhhdCBsb2NhdGlvbi4KLSAg
ICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpw
YXRoXSkKLSAgICAgICAgW1tOU0RhdGEgZGF0YV0gd3JpdGVUb0ZpbGU6cGF0aCBhdG9taWNhbGx5
OllFU107Ci0jZW5kaWYKLQotICAgIF9wYWdlLT5yZXN1bWVEb3dubG9hZChBUEk6OkRhdGE6OmNy
ZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLCBwYXRoLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKLSAg
ICAgICAgaWYgKGRvd25sb2FkKQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBl
cihkb3dubG9hZCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICB9KTsKLX0KLQogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKICAgICByZXR1cm4gd3JhcHBl
cihfcGFnZS0+Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA1
MGE2MmI1NzMyNDA5ZWVkYWVkNzgwYWJlZjdhMzg3OWY3NDhiOGZmLi44NTRiMjMzMTAxMzJlN2Rh
ZGVlNjQ5M2VmNzYzYTE2MTgwNzVkMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEwOSw3ICsxMDksNiBAQCB0
eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKICNlbmRpZgogCiBA
Y2xhc3MgV0tCcm93c2luZ0NvbnRleHRIYW5kbGU7Ci1AY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFz
cyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBjbGFzcyBfV0tB
cHBsaWNhdGlvbk1hbmlmZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWQuaAppbmRleCBlYTgyMDMyYTFjZGFjYTZiNDZlOWJjMWZjYTA1ZDhkZTkw
MDQ1ZjE5Li5iNGQ4MjZiOWE3MjQ3OGZkMGMwM2U2YjRiMDE4OWYwNzI5OWNlYzczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaApAQCAtMjgs
MTQgKzI4LDEyIEBACiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7Ci1A
Y2xhc3MgV0tEb3dubG9hZDsKIAotV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5U
KCJXS0Rvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1Nf
VEJBKSkKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogQGludGVy
ZmFjZSBfV0tEb3dubG9hZCA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CiAKLSsgKGluc3RhbmNldHlw
ZSlkb3dubG9hZFdpdGhEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0KIC0gKHZvaWQpY2Fu
Y2VsOworCiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQppbmRleCBkNWUxMWFkNjk0NTRl
ZDhkZWFiMzU1NmIwOTI3ZjUwZDhiMzJlMDg0Li5kZmVmZTBmMTY2YTU0OWRkZTY1YmUxMDIyZWI1
YzFmZmRlY2MyZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLm1tCkBAIC0yOCw4NyArMjgsNjYgQEAKIAogI2ltcG9ydCAiQVBJRG93bmxv
YWRDbGllbnQuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKLSNpbXBvcnQgIldLRG93bmxv
YWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tOU0RhdGEuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDx3dGYv
V2Vha09iakNQdHIuaD4KIAotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLXN0
YXRpYyBOU01hcFRhYmxlPFdLRG93bmxvYWQgKiwgX1dLRG93bmxvYWQgKj4gKmRvd25sb2FkV3Jh
cHBlck1hcCgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU01hcFRh
YmxlPj4gdGFibGU7Ci0gICAgaWYgKCF0YWJsZS5nZXQoKSkKLSAgICAgICAgdGFibGUuZ2V0KCkg
PSBbTlNNYXBUYWJsZSB3ZWFrVG9XZWFrT2JqZWN0c01hcFRhYmxlXTsKLSAgICByZXR1cm4gdGFi
bGUuZ2V0KCkuZ2V0KCk7CitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQgeworICAgIEFQSTo6
T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKIH0KLUFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotCi1JR05PUkVfV0FSTklOR1NfQkVHSU4oImRl
cHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKLUBpbXBsZW1lbnRhdGlvbiBfV0tEb3dubG9hZAot
SUdOT1JFX1dBUk5JTkdTX0VORAogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9hZDI6
KFdLRG93bmxvYWQgKilkb3dubG9hZAorLSAodm9pZClkZWFsbG9jCiB7Ci0gICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgX2Rvd25sb2FkID0g
ZG93bmxvYWQ7Ci0gICAgcmV0dXJuIHNlbGY7Ci19CisgICAgX2Rvd25sb2FkLT5+RG93bmxvYWRQ
cm94eSgpOwogCi0rIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxv
YWQgKilkb3dubG9hZAotewotICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3dubG9h
ZFdyYXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQotICAgICAgICByZXR1cm4gd3Jh
cHBlcjsKLSAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9jXSBp
bml0V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOwotICAgIFtkb3dubG9hZFdy
YXBwZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOwotICAgIHJldHVy
biB3cmFwcGVyOworICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIAogLSAodm9pZCljYW5jZWwKIHsK
LSAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKl9k
b3dubG9hZC0+X2Rvd25sb2FkKV0gKGF1dG8qKSB7CisgICAgX2Rvd25sb2FkLT5jYW5jZWwoW2Rv
d25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkKV0gKGF1dG8qKSB7CiAgICAgICAgIGRvd25sb2Fk
LT5jbGllbnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxvYWQuZ2V0KCkpOwogICAgIH0pOwogfQog
CiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTAogewotICAgIF9kb3du
bG9hZC0+X2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKKyAgICBfZG93bmxvYWQtPnB1
Ymxpc2hQcm9ncmVzcyhVUkwpOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0g
ICAgcmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdl
YkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICBy
ZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5
VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoV0tXZWJWaWV3ICop
b3JpZ2luYXRpbmdXZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9k
b3dubG9hZC0+X2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKKyAgICBpZiAoYXV0byogb3Jp
Z2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKICAgICAgICAgcmV0
dXJuIFtbZnJvbVdlYlBhZ2VQcm94eSgqb3JpZ2luYXRpbmdQYWdlKSByZXRhaW5dIGF1dG9yZWxl
YXNlXTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtKE5TQXJyYXk8TlNVUkwgKj4gKilyZWRpcmVj
dENoYWluCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5fZG93bmxvYWQt
PnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CisgICAgcmV0dXJu
IGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5yZWRpcmVjdENoYWluKCksIFtdIChhdXRvJiB1cmwp
IC0+IE5TVVJMICogewogICAgICAgICByZXR1cm4gdXJsOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKEJPT0wpd2FzVXNlckluaXRpYXRlZAogewotICAgIHJldHVybiBfZG93bmxvYWQt
Pl9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOworICAgIHJldHVybiBfZG93bmxvYWQtPndh
c1VzZXJJbml0aWF0ZWQoKTsKIH0KIAogLSAoTlNEYXRhICopcmVzdW1lRGF0YQogewotICAgIHJl
dHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5fZG93bmxvYWQtPmxlZ2FjeVJlc3VtZURh
dGEoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQtPmxlZ2FjeVJlc3Vt
ZURhdGEoKSk7CiB9CiAKIC0gKFdLRnJhbWVJbmZvICopb3JpZ2luYXRpbmdGcmFtZQogewotICAg
IHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+X2Rvd25sb2FkLT5mcmFtZUluZm8o
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7
CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAtMTIwLDcgKzk5LDcg
QEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAKIC0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfZG93bmxvYWQtPl9kb3dubG9hZDsKKyAgICByZXR1
cm4gKl9kb3dubG9hZDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXggNjVlYWNjYWNiNWY3
MGUxNGFlM2I5NzM4N2Y0NjhhODNhN2JiN2M4MS4uYTgzZjkwMjliNWM3M2VjNWY5ZGI3NGYxNDA3
YzI4NjRlMjUxMTM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0zMSw4ICszMSw2IEBACiAKIEBwcm90
b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dL
RG93bmxvYWQgKilkb3dubG9hZDsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfZG93bmxvYWQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNl
ICopcmVzcG9uc2U7CkBAIC00OCw1ICs0Niw0IEBACiAtIChCT09MKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJp
bmcgKilNSU1FVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykp
OwogCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBh
bGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJ
VEhfUkVQTEFDRU1FTlQoIl9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgMTAuMTMuNCksIGlvcyg4
LjAsIDExLjMpKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5h
bC5oCmluZGV4IGNhOTRjMjE3Mzc1N2E1NGEwYzc1NWNiZjMwZjhlMDVhMGI3NWM5Y2IuLmUxMjkw
YjNlNTUzYWVjZWQyMmQ0ZmM2ZDkwODYzNDM3MDkyZDQwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaApAQCAt
MjUsMTIgKzI1LDE2IEBACiAKICNpbXBvcnQgIl9XS0Rvd25sb2FkLmgiCiAKLSNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLT2Jq
ZWN0LmgiCiAKLUBjbGFzcyBXS0Rvd25sb2FkOworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94eT4geworICAgIHVzaW5nIFdy
YXBwZXJDbGFzcyA9IF9XS0Rvd25sb2FkOworfTsKIAotQGludGVyZmFjZSBfV0tEb3dubG9hZCAo
KSA8V0tPYmplY3Q+IHsKLUBwYWNrYWdlCi0gICAgUmV0YWluUHRyPFdLRG93bmxvYWQ+IF9kb3du
bG9hZDsKIH0KKworQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+CiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9h
ZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3du
bG9hZENsaWVudC5jcHAKaW5kZXggZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4NmMyNzAxYjE0
NjRhYS4uZTJmYTVjNWM1ZDljOWU1ZDk2NTU2ZTRhMWZjOGNkYWZlOTIxMTNmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3Zl
cnJpZGUKKyAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9
IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAg
ICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25sb2FkLmdldCgpKTsKQEAgLTEwMSw3ICsx
MDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3dubG9hZERlc3RpbmF0aW9uQ3JlYXRl
ZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRGYWlsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
OkRhdGEqKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93
bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCmluZGV4IGI3ZjY0OTMx
MGE0ODg0ZjkyZjUxNjVkMGNiZjc1NjUzOGUxNDA2ZTAuLjc1ZDUxMjIxZDJjMzUxODJmODk0ZGE5
ODYxM2QxY2M0MGQwZjAxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoK
ICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50Ci0gICAgdm9p
ZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBkaWRTdGFy
dChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoRG93
bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2
NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBbGxv
d092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goRG93bmxv
YWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0YSopIGZpbmFsOworICAgIHZvaWQgZGlk
RmFpbChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFs
OwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYsIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXggNjA3NTYyYWVlODhl
NzY2OWY4ZDkxODZmZGQ4MjRiNjM1OTU1YzZiNi4uM2QzMWJkYmY0M2EzNmVlYmNkMjM2OTg1ZmE2
OGI0OWQxNjFlNGRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkRv
d25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlN5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tOU1VSTEV4dHJh
cy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgpAQCAtNDgsOCArNDcsNiBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLQog
TGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9h
ZERlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CkBAIC03
OSw3ICs3Niw3IEBAIHN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciogc3lzdGVtUHJldmll
d0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQCiB9CiAjZW5kaWYKIAotdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChk
b3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTkzLDcgKzkwLDcg
QEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkU3RhcnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Oltf
V0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07
CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIoZG93bmxvYWRQ
cm94eSldOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDcsNyArMTA0LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnMKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVj
ZWl2ZVJlc3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVS
ZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9u
c2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgYnl0ZXNX
cml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZSkKQEAgLTEyMSw5ICsxMTgsOSBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xp
ZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRf
dAogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURh
dGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCi0gICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVz
V3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGVdOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNX
cml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZV07CiAgICAgZWxzZSBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93
bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRS
ZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5dOwogfQog
CiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0xMzQsNyArMTMxLDcgQEAgdm9p
ZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KERvd25sb2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBw
ZXIoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKSwgY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2Rl
bGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50
aWFsKSB7CisgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgp
LCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
b21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CiAgICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBA
IC0xNzAsNyArMTY3LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVz
dGluYXRpb24oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY28KICNlbmRpZgogCiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRp
b25dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KQpAQCAtMTg1LDcgKzE4Miw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NE
aWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAo
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOworICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKIHZv
aWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtMjA3LDExICsyMDQsMTEgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYKICAgICBpZiAo
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBO
TzsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9h
ZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxs
b3dPdmVyd3JpdGVdOworICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVd
OwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxs
b3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTpmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwg
QHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlv
bikgbXV0YWJsZSB7CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1l
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5k
bGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3Io
X2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRp
b25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRD
YWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzNiwxMCArMjMzLDEwIEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQog
I2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCi0g
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOworICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZv
aWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSopCit2
b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIFVTRShT
WVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3du
bG9hZCgpKSB7CkBAIC0yNTEsNyArMjQ4LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjoKICNl
bmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmFpbCkKLSAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3Io
KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
CkBAIC0yNjYsMTMgKzI2MywxMyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lE
aWRDYW5jZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSldXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlk
Q2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5k
b3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VS
TFdpdGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOworICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3Ry
aW5nKCldXTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogfQpA
QCAtMzA0LDYgKzMwMSw0IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rp
dml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93bmxvCiB9CiAjZW5kaWYKIAot
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0KIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApp
bmRleCA5Njc4MzdhZmUxNGJkODM1NGM1NmQ2YmVmZTVkMjkxMzc2YWI4N2E3Li4wNDJlNzg4NTQx
MWQ0MTc3ZmNlOWM2NzVlZDhkNDhmMTJiYjNkNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTI2LDEwICsxMjYsNiBAQCBwcml2
YXRlOgogCiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3Qg
UmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlk
ZTsKIAotICAgICAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJQ
YWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mLCBEb3dubG9hZFByb3h5JikgZmluYWw7
Ci0gICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFn
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBEb3dubG9hZFByb3h5JikgZmluYWw7
Ci0gICAgICAgIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXZWJQYWdlUHJveHkm
LCBEb3dubG9hZFByb3h5JikgZmluYWw7Ci0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAg
dm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdU
Rjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CiAg
ICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUo
Y29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBAIC0yMzksOSArMjM1LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3Bv
bnNpdmUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNw
b25zaXZlIDogMTsKICAgICAgICAgYm9vbCB3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3IDog
MTsKLSAgICAgICAgYm9vbCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgOiAxOwot
ICAgICAgICBib29sIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkIDogMTsKLSAg
ICAgICAgYm9vbCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogICAgICAgICBib29sIHdl
YlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3
V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhO
YXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBlNDVhOWIwMjFkYWM5Nzhh
N2Q2NmZjNDEwYmFlYTNkYzM3Mjk2OTBhLi43NzM5ZWQxNmIwMmFkOWNlNTE2N2IzNzRkMmVlNmEx
MjYzODIzODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCkBAIC00Myw3ICs0Myw2IEBACiAjaW1wb3J0ICJTT0F1dGhvcml6YXRpb25D
b29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLRG93bmxv
YWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGljdGlvbmFyeS5oIgpA
QCAtMTg4LDkgKzE4Nyw2IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVs
ZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNz
RGlkQmVjb21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0b01hc3Rl
cktleUZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKLSAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZpZ2F0aW9uQWN0aW9uOmRpZEJl
Y29tZURvd25sb2FkOildOwotICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNlOmRpZEJlY29tZURvd25sb2Fk
OildOwotICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5jb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdl
c3R1cmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5k
TmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmln
YXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAg
IG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1
cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0
aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CkBAIC00NzYsMTAgKzQ3MiwxMSBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBO
U1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVh
dGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05TVVJM
Q29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0KLSAgICAgICAgICAgICAg
ICB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVlc3QgVVJM
XS5zY2hlbWUpCi0gICAgICAgICAgICAgICAgfHwgW25zVVJMUmVxdWVzdC5VUkwuc2NoZW1lIGlz
RXF1YWxUb1N0cmluZzpAImJsb2IiXSkgewotICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2Uo
ZGVmYXVsdFdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CisgICAgICAgICAgICBpZiAoW05TVVJMQ29u
bmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJsU2No
ZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgeworICAgICAg
ICAgICAgICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkK
KyAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRvd25sb2FkKCk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRl
UG9saWNpZXMuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IApAQCAtNTU4LDEyICs1NTUsOSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAg
ICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkOgotICAgICAgICAgICAg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3Rl
bmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBfV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAg
ICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdl
UHJveHksIFtsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBv
bGljaWVzID0gV1RGTW92ZShhcGlXZWJzaXRlUG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2Fk
KSB7CiAgICAgICAgICAgICAgICAgaWYgKG9wdGltaXplZExvYWQpIHsKQEAgLTY3Nyw3ICs2NzEs
NyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZwogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+
aWdub3JlKCk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQ6CisgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQ6CiAgICAgICAgICAgICBsb2NhbExpc3RlbmVy
LT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwOTIsNDIg
KzEwODYsNiBAQCBSZWZQdHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlT
aXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogfQogCi12b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29t
ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlv
bkFjdGlvbiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCi17Ci0gICAgaWYgKCFtX25hdmlnYXRp
b25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIG5hdmlnYXRpb25EZWxl
Z2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwotICAg
IGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBbbmF2aWdh
dGlvbkRlbGVnYXRlLmdldCgpIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5h
dmlnYXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9uKSBkaWRCZWNvbWVEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkKV07Ci19Ci0KLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgbmF2aWdhdGlvblJlc3BvbnNlLCBEb3dubG9h
ZFByb3h5JiBkb3dubG9hZCkKLXsKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmln
YXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIW5hdmlnYXRp
b25EZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgW25hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uUmVzcG9u
c2U6d3JhcHBlcihuYXZpZ2F0aW9uUmVzcG9uc2UpIGRpZEJlY29tZURvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWQpXTsKLX0KLQotdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWQpCi17Ci0gICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpICBfd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkKV07Ci19Ci0KICNpZiBVU0UoUVVJQ0tfTE9PSykKIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbQppbmRleCBhNGIzOTdjNmVkZWFkNTQ3NjkyMDlmMmFkYjAwZGNmZWI0MmFmNTJiLi5k
MTFkM2EwMmFhZjYzY2UzMjlhZTgxY2I5NWEyZjBjMDE3MmEwYWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAt
MjYsNyArMjYsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJv
eHkuaCIKIAotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKICNpbXBvcnQgIkhp
Z2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
Ik9iakNPYmplY3RHcmFwaC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IGM2MWJiM2ZkMmVlMDQ2ZjM4MjRjNDBhYjk5
MTgxYzBmY2VlMmExOTcuLjI5YzE3YmViMzNlZDY3NmM5YzQ0NGE0ZDcyYTYwMWY0Y2QwNzdmMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5jcHAKQEAgLTU5LDExICs1OSw3IEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHko
RG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yCiB7CiB9
CiAKLURvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkKLXsKLSAgICBpZiAobV9kaWRTdGFy
dENhbGxiYWNrKQotICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sobnVsbHB0cik7Ci19CitEb3du
bG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpID0gZGVmYXVsdDsKIAogc3RhdGljIFJlZlB0cjxB
UEk6OkRhdGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewpA
QCAtMTIxLDkgKzExNyw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1fcmVk
aXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0
LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwog
Ci0gICAgaWYgKG1fZGlkU3RhcnRDYWxsYmFjaykKLSAgICAgICAgbV9kaWRTdGFydENhbGxiYWNr
KHRoaXMpOwotICAgIG1fY2xpZW50LT5sZWdhY3lEaWRTdGFydCgqdGhpcyk7CisgICAgbV9jbGll
bnQtPmRpZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNTEsMjIgKzE0NSwx
MyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGJ5dGVzV3Jp
dHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaQogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YSgqdGhpcywgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgLy8gQXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvI2FzLWEtZG93bmxvYWQgKHN0ZXAgMiksIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBD
b250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcgotICAgIC8vIHNob3VsZCBvdmVycmlkZSB0aGUgc3Vn
Z2VzdGVkIGZpbGVuYW1lIGZyb20gdGhlIGRvd25sb2FkIGF0dHJpYnV0ZS4KLSAgICBpZiAocmVz
cG9uc2UuaXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgfHwgKHN1Z2dlc3RlZEZpbGVuYW1lLmlz
RW1wdHkoKSAmJiBtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkpCi0gICAgICAgIHN1Z2dl
c3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAgICBlbHNlIGlm
ICghbV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHN1Z2dlc3RlZEZpbGVu
YW1lID0gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVU
eXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxl
bmFtZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7Ci0KLSAgICBtX2NsaWVudC0+ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKnRoaXMsIHJlc3BvbnNlLCBSZXNvdXJjZVJlc3Bv
bnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0
ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICBtX2NsaWVudC0+ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKnRoaXMsIHJlc3BvbnNlLCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSks
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQWxsb3dP
dmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwog
ICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQogICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgICAgIHNldERlc3Rp
bmF0aW9uRmlsZW5hbWUoZGVzdGluYXRpb24pOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihk
ZXN0aW5hdGlvbiwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgYWxsb3dPdmVyd3Jp
dGUpOwogICAgIH0pOwogfQpAQCAtMTg4LDE2ICsxNzMsMTEgQEAgdm9pZCBEb3dubG9hZFByb3h5
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UKIHsKICAgICBtX2xlZ2FjeVJlc3VtZURhdGEgPSBjcmVhdGVEYXRhKHJlc3VtZURhdGEp
OwogCi0gICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yLCBtX2xlZ2FjeVJlc3VtZURh
dGEuZ2V0KCkpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvcik7CiAKICAgICAv
LyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4K
ICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CiB9CiAKLXZv
aWQgRG93bmxvYWRQcm94eTo6c2V0Q2xpZW50KFJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGNs
aWVudCkKLXsKLSAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCmluZGV4IDhjYzc4NmViYTYzYTg4ZjJlZDZjMjFjNTFhZGUyZjI2YTQ5
YjFiYjEuLjA3MThlODkzYWIyNTViYjNhMzVkZjdlZGE5YzMyOTJjMWY3MThhNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXYXNVc2VySW5pdGlhdGVkKGJvb2wg
dmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0KICAgICBib29sIHdhc1VzZXJJ
bml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0aWF0ZWQ7IH0KIAotICAgIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25GaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGlu
YXRpb25GaWxlbmFtZTsgfQorICAgIFN0cmluZyBkZXN0aW5hdGlvbkZpbGVuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9kZXN0aW5hdGlvbkZpbGVuYW1lOyB9CiAgICAgdm9pZCBzZXREZXN0aW5hdGlv
bkZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZCkgeyBtX2Rlc3RpbmF0aW9uRmlsZW5hbWUgPSBkOyB9
CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCkBAIC0xMDIsOSArMTAyLDEyIEBAIHB1YmxpYzoK
ICAgICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0
KCk7IH0KIAogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50LmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+
JiYpOwotICAgIHZvaWQgc2V0RGlkU3RhcnRDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERvd25sb2FkUHJveHkqKT4mJiBjYWxsYmFjaykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKTsgfQotICAgIHZvaWQgc2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkgeyBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVk
RmlsZW5hbWU7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25s
b2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQ
YWdlUHJveHkqKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRTdGFydChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsK
QEAgLTExNSwxMyArMTE4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAg
dm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJik7Ci0KLXBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vi
c2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7Ci0KLSAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUp
PiYmKTsKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBS
ZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7CkBAIC0xMzcsNyArMTM0LDYgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dh
c1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgUmVmPEFQSTo6RnJhbWVJbmZvPiBtX2ZyYW1l
SW5mbzsKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4gbV9kaWRT
dGFydENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAwNDZhNmI1MDJmMGY2YTQ3Nzg5ZGQ5MTRhZjE0ZmY2MWVlMTZjMWIzLi4zNDg3ZDRlMzQ0
ZTE4YTIwMjNkMjliZWM0NjBjYWNhZTA1NTI1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCi0j
aW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RP
Q09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA5MDc3NDhm
ZjJiNGE4YzA1MDJmNTk1ZTIxNmFlYjBhYTkwYjAwZmUzLi45NzdlNGVhZjY4ZDczZTA0ZDNmZGEw
NThiNTQzMTQzOThlMmFlNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTU5LDcgKzU5LDYgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIu
aCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZl
cmVuY2UuaCIKLSNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9h
ZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRy
YXdpbmdBcmVhUHJveHkuaCIKQEAgLTMxNDAsNyArMzEzOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0
aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+
JiYgcG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdl
YlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJv
eHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgcG9saWNpZXMsIFJlZjxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246IGZyYW1lSUQ6
ICVsbHUsIG5hdmlnYXRpb25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSIsIGZyYW1lLmZyYW1l
SUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkg
OiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uKTsKIApAQCAtMzE4MCw3ICszMTc5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9u
OjpEb3dubG9hZDsKIAogICAgIGlmIChwb2xpY3lBY3Rpb24gIT0gUG9saWN5QWN0aW9uOjpVc2Ug
fHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgIW5hdmlnYXRpb24pIHsKLSAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24sIFdURk1vdmUocG9saWNp
ZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92
ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTMxOTMsMTEgKzMxOTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAg
fQogICAgIH0KIAotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0
aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVS
TCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3Jl
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcG9saWN5QWN0aW9uLCBu
YXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5
UmVmKCksCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24o
KnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nl
c3MuY29weVJlZigpLAogICAgICAgICBwb2xpY2llcyA9IFdURk1vdmUocG9saWNpZXMpLCBzZW5k
ZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnRdIChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQYWdlUHJv
eHkqIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFi
bGUgewogICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95ZWQsIHRo
ZW4gbm8gbmVlZCB0byBwcm9jZWVkLgogICAgICAgICBpZiAoaXNDbG9zZWQoKSB8fCAhbmF2aWdh
dGlvblN0YXRlKCkuaGFzTmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSkpIHsK
LSAgICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0
aW9uLnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwg
V1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShz
ZW5kZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zMjMzLDExICsz
MjMyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBudWxscHRyIDogV1RGTW92ZShwb2xpY2ll
cyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSwgV1RGTW92ZShv
cHRpb25hbEhhbmRsZSksIHNob3VsZFByb2Nlc3NTd2FwID8gV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2Vzczo6WWVzIDogV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwg
c2hvdWxkUHJvY2Vzc1N3YXAgPyBudWxscHRyIDogV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUo
c2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSksIHNob3VsZFByb2Nlc3NTd2FwID8gV2ls
bENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDogV2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2Vzczo6Tm8pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIFZhcmlh
bnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlv
bj4+JiYgbmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRl
cj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVM
b2FkSW5OZXdQcm9jZXNzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQ
dHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVj
aXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2ls
bENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpIHsKICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVu
dGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJ
Z25vcmUsIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOwpAQCAtMzI1MywxOSArMzI1
Miw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFj
dGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFj
dGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAg
ICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURv
d25sb2FkUHJveHkobV93ZWJzaXRlRGF0YVN0b3JlLCBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNl
UmVxdWVzdCwgdGhpcywgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm9yaWdpbmF0aW5nRnJhbWVJ
bmZvKCkgOiBGcmFtZUluZm9EYXRhIHsgfSk7Ci0gICAgICAgIGRvd25sb2FkLnNldERpZFN0YXJ0
Q2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBuYXZpZ2F0aW9u
QWN0aW9uT3JSZXNwb25zZSA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UpXSAo
YXV0byogZG93bmxvYWRQcm94eSkgewotICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93
bmxvYWRQcm94eSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBXVEY6OnN3
aXRjaE9uKG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlLAotICAgICAgICAgICAgICAgIFsmXSAo
Y29uc3QgUmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFyZXNwb25zZS0+ZG93bmxvYWRBdHRyaWJ1dGUoKS5pc051bGwoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkUHJveHktPnNldFN1Z2dlc3RlZEZpbGVu
YW1lKHJlc3BvbnNlLT5kb3dubG9hZEF0dHJpYnV0ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCgq
dGhpcywgcmVzcG9uc2UuZ2V0KCksICpkb3dubG9hZFByb3h5KTsKLSAgICAgICAgICAgICAgICB9
LCBbJl0gKGNvbnN0IFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiBhY3Rpb24pIHsKLSAgICAg
ICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVj
b21lRG93bmxvYWQoKnRoaXMsIGFjdGlvbi5nZXQoKSwgKmRvd25sb2FkUHJveHkpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0pOwogICAgICAgICBpZiAobmF2
aWdhdGlvbikgewogICAgICAgICAgICAgZG93bmxvYWQuc2V0V2FzVXNlckluaXRpYXRlZChuYXZp
Z2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCkpOwogICAgICAgICAgICAgZG93bmxvYWQuc2V0UmVk
aXJlY3RDaGFpbihuYXZpZ2F0aW9uLT50YWtlUmVkaXJlY3RDaGFpbigpKTsKQEAgLTUxMTgsMjkg
KzUxMDQsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBuYXZpZ2F0aW9uLT5zZXRP
cmlnaW5hdGluZ0ZyYW1lSW5mbyhvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpOwogICAgIG5hdmln
YXRpb24tPnNldERlc3RpbmF0aW9uRnJhbWVTZWN1cml0eU9yaWdpbihmcmFtZUluZm8uc2VjdXJp
dHlPcmlnaW4pOwogCi0gICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uID0g
ZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwotICAgIFdl
YkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEu
ZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJh
bWVJRCkgOiBudWxscHRyOwotICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8gPSBBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKEZyYW1lSW5mb0RhdGEgeyBmcmFtZUluZm8gfSwgdGhpcyk7Ci0gICAg
UmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87Ci0gICAgaWYgKCFmcm9tQVBJ
ICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQotICAgICAgICBzb3VyY2VGcmFtZUluZm8g
PSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7Ci0gICAgZWxzZSBpZiAoIWZyb21BUEkp
IHsKLSAgICAgICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0gb3JpZ2luYXRpbmdQYWdlSUQgPyBw
cm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyOwotICAgICAgICBz
b3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlKTsKLSAgICB9Ci0KLSAgICBib29sIHNo
b3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24KLSAgICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFp
bkZyYW1lKCkKLSAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5o
b3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCi0gICAgICAgICYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9y
d2FyZDsKLQotICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcHJvY2Vzcy0+dXNlcklu
aXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVu
dGlmaWVyKTsKLSAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rp
b246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZv
LmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBSZXNvdXJj
ZVJlcXVlc3QocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExp
bmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24p
OwotCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS5kaWRIYW5k
bGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpIHsKICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBs
b2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVkIGJ5IGNvbnRlbnQg
ZmlsdGVyIik7Ci0gICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFj
dGlvbjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQp
LCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwor
ICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwg
V1RGTW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNTE1MiwxMSArNTExOSwxMSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykK
ICAgICBzaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCA9IFNob3VsZEV4cGVjdEFwcEJv
dW5kRG9tYWluUmVzdWx0OjpZZXM7CiAjZW5kaWYKLQotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtl
UmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3Zl
KHNlbmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRh
dGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJv
d3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBC
b3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgCisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYo
ZnJhbWUuc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2Vu
ZGVyKSwgbmF2aWdhdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJl
ZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFs
PE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlEOiAlbGx1LCBuYXZpZ2F0
aW9uSUQ6ICVsbHUsIHBvbGljeUFjdGlvbjogJXUsIHNhZmVCcm93c2luZ1dhcm5pbmc6ICVkLCBp
c0FwcEJvdW5kRG9tYWluOiAlZCIsIGZyYW1lLT5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdh
dGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFj
dGlvbiwgISFzYWZlQnJvd3NpbmdXYXJuaW5nLCAhIWlzQXBwQm91bmREb21haW4pOwogCi0gICAg
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUs
IHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiA9
IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQs
IHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBw
cm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9u
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIocG9s
aWNpZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBvbGlj
aWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkZWZhdWx0UG9saWNpZXMgPSBt
X2NvbmZpZ3VyYXRpb24tPmRlZmF1bHRXZWJzaXRlUG9saWNpZXMoKSkKQEAgLTUxNjUsNyArNTEz
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgICAgICAgICAgaWYgKHBvbGlj
aWVzKQogICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRFZmZlY3RpdmVDb250ZW50
TW9kZShlZmZlY3RpdmVDb250ZW50TW9kZUFmdGVyQWRqdXN0aW5nUG9saWNpZXMoKnBvbGljaWVz
LCBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24uZ2V0KCksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIGZyYW1lLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsK
KyAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlv
biwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUs
IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICB9OwogCiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTIzMiw3ICs1MTk5LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzCiAgICAgYXV0byBwcm90b2NvbCA9IHNob3VsZFNlbmRTZWN1cml0eU9y
aWdpbkRhdGEgPyBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wgOiByZXF1ZXN0LnVy
bCgpLnByb3RvY29sKCk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5iZWdpbkFwcEJvdW5kRG9t
YWluQ2hlY2soaG9zdC50b1N0cmluZygpLCBwcm90b2NvbC50b1N0cmluZygpLCBsaXN0ZW5lcik7
CiAjZW5kaWYKKyAgICBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFt
ZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7CisgICAgV2ViRnJh
bWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFt
ZUlEID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlE
KSA6IG51bGxwdHI7CiAKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3Mt
PnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRv
a2VuSWRlbnRpZmllcik7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBhdXRvIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyID0gbmF2aWdhdGlvbi0+aXNMb2Fk
ZWRXaXRoTmF2aWdhdGlvblNoYXJlZCgpIHx8IHVzZXJJbml0aWF0ZWRBY3Rpdml0eTsKICAgICBp
ZiAoIXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCkBAIC01MjQwLDggKzUyMTAsMjQgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKICNlbmRpZgogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQot
ICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigq
dGhpcywgJmZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBvcmlnaW5hdGluZ0ZyYW1l
LCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVuZXIpLCBw
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7CisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5h
dGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlz
dGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7CiAgICAgZWxzZSB7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUlu
Zm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7Cisg
ICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOworICAgICAgICBp
ZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCisgICAgICAgICAgICBz
b3VyY2VGcmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7CisgICAgICAg
IGVsc2UgaWYgKCFmcm9tQVBJKSB7CisgICAgICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2Ug
PSBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlE
KSA6IG51bGxwdHI7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQ
YWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1f
c2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgorICAg
ICAgICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZyYW1lKCkKKyAgICAgICAg
ICAgICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVl
c3QudXJsKCkuaG9zdCgpKQorICAgICAgICAgICAgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2
aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOworCisg
ICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCks
IGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVz
dCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOworCiAjaWYgSEFWRShB
UFBfU1NPKQogICAgICAgICBpZiAobV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4
dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB8fCBtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0
aW9uSW5BbGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9u
QWN0aW9uLT51bnNldFNob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24oKTsKQEAgLTUzNDMsMTUg
KzUzMjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgIE1FU1NBR0VfQ0hFQ0sobV9w
cm9jZXNzLCBmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwobV9wcm9jZXNzLCByZXF1ZXN0
LnVybCgpKTsKIAotICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwot
ICAgIGlmIChmcmFtZSkKLSAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwotCi0gICAgYXV0byB1c2VySW5pdGlh
dGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgYm9vbCBzaG91bGRP
cGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9
IHJlcXVlc3QudXJsKCkuaG9zdCgpOwotICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6
TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBz
b3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0
KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSkpOwotICAgIAotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBv
bGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
aWRlbnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2Fm
ZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJs
ZSB7CisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVu
ZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVy
LCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpX
ZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93
c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2Vy
dCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMg
b2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93
c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTUzNjAsMTMgKzUzMzgsMjQg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xp
Y3lEZWNpc2lvbikpOwogICAgICAgICB9KTsKIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihw
b2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwg
U2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmRE
b21haW5SZXN1bHQ6Ok5vKSk7CiAKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCi0gICAgICAgIG1f
cG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMsICpmcmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBXVEZNb3ZlKGxp
c3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87Cisg
ICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsKKworICAgICAgICBhdXRv
IHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5
KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKKyAgICAg
ICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+
dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOworICAgICAgICBhdXRvIG5hdmln
YXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5h
bWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92
ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKwogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
PmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRpb25BY3Rpb24u
Z2V0KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKworICAgIH0KKyAgICAgICAgCiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsCkBAIC01Mzg3LDEwICs1Mzc2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXF1ZXN0LnVybCgpKTsKICAg
ICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXNwb25zZS51cmwoKSk7CiAgICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlv
blN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOwotICAgIGF1dG8gbmF2
aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3Qs
IHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKLQogICAgIGF1
dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBp
ZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwK
LSAgICAgICAgcHJvY2VzcywgbmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJu
aW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKyAgICAgICAg
cHJvY2Vzc10gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vi
c2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VS
VChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAh
c2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC01Mzk5LDEyICs1Mzg2LDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsCiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVj
aXNpb24pLCB3ZWJQYWdlSUQpOwogICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIHJlY2Vp
dmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRy
LCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBu
dWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2lu
Z1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogICAg
IGlmIChtX3BvbGljeUNsaWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlN
RVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZQorICAgIGVsc2UgeworICAg
ICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpj
cmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdl
dCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0
ZSk7CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUobGlz
dGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7CisgICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBs
ZW1lbnRQb2xpY3koRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC02MDQzLDE5ICs2MDMyLDYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JiBk
b3dubG9hZCkKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2Fk
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0
YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERvd25sb2FkUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkb3du
bG9hZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlc3VtZURvd25sb2FkKHdlYnNpdGVEYXRh
U3RvcmUoKSwgdGhpcywgcmVzdW1lRGF0YSwgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQ6Olll
cyk7Ci0gICAgZG93bmxvYWQuc2V0RGVzdGluYXRpb25GaWxlbmFtZShwYXRoKTsKLSAgICBkb3du
bG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBhdXRvJiBkb3dubG9hZCA9IHByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLmRvd25sb2FkKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVxdWVzdCwg
eyB9KTsKLSAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgcGFnZUNsaWVudCgpLmRpZENoYW5nZUNvbnRl
bnRTaXplKHNpemUpOwpAQCAtNjYyNSwyNiArNjYwMSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRl
bSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgotICAgIHN0cnVjdCBEb3dubG9hZElu
Zm8gewotICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWU7Ci0gICAgfTsKLSAgICBPcHRpb25hbDxEb3dubG9hZEluZm8+IGRvd25sb2FkSW5mbzsKLSAg
ICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9E
aXNrKQotICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4
dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUltYWdlVVJMLCB7IH0gfX07Cisg
ICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRv
RGlzaykgeworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJz
aXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0
RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKKyAgICAgICAg
cmV0dXJuOyAgICAKKyAgICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJ
dGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7CiAgICAgICAgIGF1dG8mIGhpdFRlc3RSZXN1bHQg
PSBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKTsK
LSAgICAgICAgZG93bmxvYWRJbmZvID0ge3sgaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkws
IGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3RlZEZpbGVuYW1lIH19OwotICAgIH0KLSAgICBpZiAo
aXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKQot
ICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEu
d2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMLCB7IH0gfX07Ci0gICAgaWYg
KGRvd25sb2FkSW5mbykgewotICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwg
ZG93bmxvYWRJbmZvLT51cmwpLCBkb3dubG9hZEluZm8tPnN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAg
ICAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldIChhdXRvKiBkb3dubG9hZCkgewotICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcyB8fCAhZG93bmxvYWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKCp0aGlzLCAq
ZG93bmxvYWQpOwotICAgICAgICB9KTsKKyAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LmRvd25sb2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBoaXRUZXN0UmVz
dWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3RlZEZpbGVuYW1l
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250
ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKSB7CisgICAgICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwo
KSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCku
YWJzb2x1dGVNZWRpYVVSTCkpOworICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChpdGVt
LmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZykg
ewogICAgICAgICBUZXh0Q2hlY2tlcjo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCFUZXh0Q2hlY2tlcjo6c3RhdGUoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk4ZTg2MzZlOGViNjBj
ZDRhMDRiYjA4YThmOWYxMGJmNzk5YjJiN2UuLjIzMmVkMzdiZDFiZjkzMGFhZjhmOTk4NDM2ZDYz
MDU0MmVhOTMwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
MTY2LDggKzExNjYsOCBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRl
cjsKICAgICBlbnVtIGNsYXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4m
JiwgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPj4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
ID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOwotICAgIHZvaWQgcmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmln
YXRpb24qLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5O
ZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgIHZvaWQg
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVBy
b3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKIApAQCAtMTI4MSw4ICsxMjgxLDYgQEAg
cHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJz
KFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmKTsKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0
YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERvd25sb2FkUHJveHkqKT4mJik7Ci0gICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSop
PiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5n
JiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCAxMGM1NzU1ZmJkMDVjYzAxNjBkZTU0YmZkZDQ5ZmZjYzI0YWU3NmYyLi41Yjc0YWNiNGIwMDU2
ZTcxMTc3MGJiYzE0MGRhYzdmNTNjMjc0NmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCBEb3dubG9hZFByb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQ
YWdlUHJveAogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2Fk
RGlkU3RhcnQpCitEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQo
V2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdl
LCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAg
ICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJl
c291cmNlUmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSwgeyB9KTsKIApAQCAtMTE1Niw3ICsxMTU2
LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNp
dGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGEKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIGRh
dGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxv
YWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgY2FsbERvd25sb2FkRGlkU3RhcnQpLCAwKTsKKyAgICBkYXRhU3RvcmUubmV0d29y
a1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkb3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwgcmVzdW1l
RGF0YS5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCAwKTsK
ICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKaW5kZXggYWNlNTdmZThjYjAxYzY0NDYzNWRiZDRlYzhjYzQ2OTVhZTUz
NTgyMC4uOWQ3NjU0OWEyMmZkN2VkMjQxNmFhNjYzMjAzODk0MjFhY2FmOGYxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTksNyArMTE5LDYgQEAgaW50
IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsK
ICNlbmRpZgogCi1lbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0g
Y2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiAKIGNsYXNzIFdlYlBy
b2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6UHJvY2Vzc1Bvb2w+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1Bvb2w+LCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTIwOCw3ICsyMDcsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUm
LCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKLSAgICBEb3du
bG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5
KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKKyAgICBEb3dubG9hZFByb3h5JiByZXN1
bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFn
ZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCiAg
ICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRyPEFQ
STo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOGUwZGJjYjg4NTliMjY0YzU2MjNiOTQx
Mjc2YjI4M2NlZDFjZjM1YS4uODAzNzA0MDRlNDlhNzhkOGFiZTczMjJhNzhlYzkyZmMxYzBiYTBh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMTgsNiArMjE4LDcgQEAKIAkJMUE0M0U4MkExODhGM0NEQzAwOUU0RDMwIC8qIF9XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBNDQ1QjlGMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0NDVCOUUxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUE0NDVCQTExODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEwMTg0RDVG
QzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0
IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0
RG93bmxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQTQ0NUJBNTE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE0NDVCQTQxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ4MzJD
QzFBOUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0ODMyQ0ExQTlCQzQ2NTAwOEI0REZF
IC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCTFBNDgzMkNFMUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVE
YXRhUmVjb3JkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNDgzMkNEMUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3Jk
SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTMzMCw3ICszMzEsNyBAQAogCQkxQUI3RDRDQTEyODhBQUE3
MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q0QzgxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJv
eHkuaCAqLzsgfTsKIAkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQUI3RDYxQTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUI3RDYxODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmggKi87IH07Ci0JCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDc4QjEy
ODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBX
S0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjhBMUVDMTg0MDA4MDkwMEU5
QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2Fk
ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxQUI4QTFFRTE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRDE4NDAw
QUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8q
IFdLUGFnZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQjhBMUVGMTg0MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMjAs
NyArMTIyMSw2IEBACiAJCTVDMjBDQkEwMUJCMUVDRDgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENC
OUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggKi87IH07CiAJCTVDMjY5NTg1
MjAwNDMyMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI2OTU4NDIwMDQyRjEy
MDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMjk4REEwMUMzREYwMjEwMDQ3
MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMjk4RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxv
YWQuaCAqLzsgfTsKLQkJNUMyRUJERkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkVC
REY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMzNTlDMEQyMTU0NzM5RjAwOUU3
OTQ4IC8qIFdLRGVwcmVjYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMzNTlDMEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU3
MjI0MzE3QjQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDYwOUUyMjI0MzBFNEMwMDk5
NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyog
X1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDYwOUU0MjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tD
b250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oICovOyB9OwpAQCAtMTg2Myw5ICsxODYzLDYg
QEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0QUUyQTFBNURDRjQzMDAwMkY0
OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlE
M0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0NTExRkY0QjY1MDAw
MzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi87IH07Ci0JCURGMEM1RjI4MjUyRUNCOEUw
MEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJREYwQzVGMkEy
NTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8q
IFdLRG93bmxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKLQkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYw
QzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovOyB9OwogCQlE
RjQ2MkUwRjIzRjIyRjU1MDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUwRTIzRjIy
RjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY0NjJFMTIyM0YzMzhCRTAwRUZG
MzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVu
dFdvcmxkUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCURGODRDRUU0MjQ5QUEyNEQwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjg0Q0VFMjI0OUFB
MjFGMDA5MDk2RjYgLyogV0tQREZIVURWaWV3Lm1tICovOyB9OwpAQCAtMjQ5Niw2ICsyNDkzLDcg
QEAKIAkJMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCOUUxODRE
NUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAv
KiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUE0NDVCQTIxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDQ1QkE0MTg0RDVGREEwMDRCMzQx
NCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUE0ODMyQzExQTk2NUEzQzAwOEI0REZFIC8qIFdlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0ODMyQzkx
QTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhUmVjb3JkLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY5MSw4ICsyNjg5LDggQEAKIAkJMUFCN0Q1RTkxMjg4
QjhDMDAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFCN0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRG93bmxv
YWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L0Rvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQkxQUI3RDYxODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkUHJv
eHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUFCN0Q3
OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rvd25sb2FkUmVmLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93
bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyog
V0tEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rv
d25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUIxODQwMDgw
OTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1BhZ2VMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFCOEExRUQxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VQb2xpY3lDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdL
UGFnZUZvcm1DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdl
Rm9ybUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIxMyw3ICs0MjEx
LDYgQEAKIAkJNUMyQjFBRjMyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcg
LyogRG93bmxvYWRNb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
d25sb2FkTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIy
M0MxRkQyMDBCOTFDRjcgLyogRG93bmxvYWRQcm94eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tE
b3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25s
b2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDcz
MjEwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tEZXByZWNhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDM0FF
QThFMUZFMUYxREYwMDIzMThEMyAvKiBXZWJzaXRlUG9saWNpZXNEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzQ2MDlFMjIyNDMwRTRDMDA5OTQzQzIgLyogX1dL
Q29udGVudFJ1bGVMaXN0QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTQ4MywxMCArNTQ4MCw2IEBACiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQ
b3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdL
RG93bmxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Rv
d25sb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlERjBDNUYyNDI1MkVDQjhE
MDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCURGMEM1RjI1MjUy
RUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCURGMEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZERlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAv
KiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURGNDYyRTExMjNGMzM4QUQwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZW50V29ybGRQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3
QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZVdlYldoZWVsRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc2ODIsMTAgKzc2NzUsNiBAQAogCQkJCTVDRTBDMzY4MjI5RjJENEEwMDM2OTVGMCAvKiBXS0Nv
bnRleHRNZW51RWxlbWVudEluZm8ubW0gKi8sCiAJCQkJNUNFMEMzNkIyMjlGMkQ0QjAwMzY5NUYw
IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mb0ludGVybmFsLmggKi8sCiAJCQkJNUNFMEMzNkEy
MjlGMkQ0QTAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCAqLywK
LQkJCQlERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovLAotCQkJCURG
MEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLm1tICovLAotCQkJCURGMEM1RjI2
MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQlERjBDNUYy
NTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggKi8sCiAJCQkJMUFGNDU5
MkQxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IuaCAqLywKIAkJCQkxQUY0NTkyQzE5NDY0QjIw
MDBGOUQ0QTIgLyogV0tFcnJvci5tbSAqLywKIAkJCQkxQTJEMjUyQTE5NDY4OEZEMDA0NTM3QjAg
LyogV0tFcnJvckludGVybmFsLmggKi8sCkBAIC05NjU1LDYgKzk2NDQsNyBAQAogCQkJCTFBRTUy
RjkzMTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcCAqLywK
IAkJCQkxQUU1MkY5NDE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
Zi5oICovLAogCQkJCTFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmggKi8sCisJCQkJMUE0NDVCQTIxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMUE0NDVCQTAxODRENUZDMTAwNEIzNDE0IC8qIFdL
Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQg
LyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKIAkJCQlBMUVBMDIzNTFEQUJG
RjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcCAqLywKQEAgLTk2NjUsOSAr
OTY1NSw4IEBACiAJCQkJNTEyRjU4RjExMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5j
cHAgKi8sCiAJCQkJNTEyRjU4RjIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oICov
LAogCQkJCTUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICov
LAotCQkJCTVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi8s
Ci0JCQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuY3BwICovLAot
CQkJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggKi8sCisJCQkJ
MUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuY3BwICovLAorCQkJCTFBQjdE
NzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi8sCiAJCQkJQkNFNDY5NTcxMjE0
RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkNF
NDY5NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oICovLAog
CQkJCUJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCAqLywKQEAgLTEyMDI1
LDYgKzEyMDE0LDcgQEAKIAkJCQlCQ0I5RTI0QjExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU1MkY5ODE5MjAyNjcyMDBBMUZBMzcgLyogV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCQTUxODRENUZE
QTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFBNDQ1QkEzMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCQTExODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4
dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QjlGMTg0RDVGQjUwMDRC
MzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM3OTVENzAyMjlGMzczRjAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMjA1NywxMiArMTIwNDcsOCBAQAogCQkJCUJDNUQyNEM1MTZD
RDcwODgwMDdENTQ2MSAvKiBXS0RPTVJhbmdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjkzRUJFQUIxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMwMTdEMjExNjI2MzMwODAwNzA1NEY1IC8qIFdLRE9NVGV4dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNUMyRUJERkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxvYWRD
bGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBX
S0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCURGMEM1RjJCMjUyRUQ0NDAw
MEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQjdE
NzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVy
cyAqLywKLQkJCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdFMDA5RTVD
M0YgLyogV0tFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2NEIy
MDAwRjlENEEyIC8qIFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRjNmMzZDk5Y2Y5ODk1Y2Q1MmQ0ZGNj
MmYwNDI2YjZlNjk3Y2Y4NWEuLjc1YTZlZTYzYmJkYTE5ODE2NWJiOTUyZmY1MGUwODFmNjExN2Jj
MjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAyMC0xMi0wNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA0MjIuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk1NTQKKworICAg
ICAgICBEZWxldGVkIGFuIFNQSSB0aGF0IGlzIHN0aWxsIGluIHVzZS4KKworICAgICAgICBSZXZl
cnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkludHJvZHVjZSBuZXcgZG93bmxvYWQgQVBJIgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3Cisg
ICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yNzA0MjIKKwogMjAyMC0x
Mi0wNCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dp
dC13ZWJraXRdIFVzZSBjb250cmlidXRvcnMuanNvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IGY1YTlkMjE3NjVmNjhhZjIyZmZiOTRlMzg1MjNkN2Q2NDllNDUxZmMuLmQ5
N2YyNjZlNDA1ZWNmYWE0MTQxOTQ1OTkwODhhZDU0MGJkNGQwOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI3LDcgKzI3LDYgQEAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
bkV4dHJhcy5tbQogY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQogY29jb2EvVGVzdENv
Y29hLm1tCiBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQotY29jb2EvVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUubW0KIGNvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KIGNvY29h
L1Rlc3RQcm90b2NvbC5tbQogY29jb2EvVGVzdFVJRGVsZWdhdGUubW0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZmQ4MThlOWI3NjM4MjBhYTYyNTE5NWQ2YTQwNDFkNzU1MWU0YWYzOS4uODA2
N2Q0NTgzMWIyZDMwZTM1NWQ0MDI3NTExNWJkZjcwMWIxOTM4ZiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIyMjUsOCArMjIyNSw4IEBACiAJCTVDNjlCREQ0MUY4MkE3RUIwMDBGNEY0QiAv
KiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzZFMjdBNjIyNEVFQkVBMDAxMjg3MzYgLyogVVJMQ2Fub25p
Y2FsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVS
TENhbm9uaWNhbGl6YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzE0
ODk0MjEyM0E0MDcwMEZERTNDNSAvKiBXS1dlYnNpdGVEYXRhc3RvcmUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhc3RvcmUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0Uy
NDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdh
dGUubW07IHBhdGggPSBjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3RE
b3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RE
b3dubG9hZERlbGVnYXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyog
VGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9h
ZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzczQTgxQTIzMjMw
NTk4MDBERUE4NUEgLyogVExTRGVwcmVjYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBUTFNEZXByZWNhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUM3NTcxNUYyMjEyNDlCRDAwQjlFNUFDIC8qIEJ1bmRsZVJldGFpblBhZ2VQbHVn
SW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdW5kbGVSZXRh
aW5QYWdlUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc5NjQwRjFF
QjAyNjlCMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRNb2RpZmllcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjgxMSw4ICsyODExLDYgQEAKIAkJRDNCRTVFMzQxRTRDRTg1RTAwRkQ1NjNB
IC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tXZWJWaWV3R2V0Q29udGVudHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURDNjlBQTYyMUNGNzdDNjUwMEM2MjcyRiAvKiBTY29wZWRMYW1iZGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkTGFtYmRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0QjI3MzgyMUE0NzcyNzAwOUJEMUNBIC8qIFdL
TlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlERjZCQzQ2RjI1MzRFMTIwMDA4RjYzQ0Mg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0RG93
bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlERjZCQzQ3MDI1MzRFMTIwMDA4RjYzQ0MgLyog
VGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdh
dGUuaDsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCURGQjhGRjMxMjQ5MkY1MUEwMEYwMEIwRCAvKiBQcmVjb25uZWN0Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlY29ubmVjdC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8q
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
MjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5Q2Fj
aGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTMxMzQsMTAgKzMxMzIsOCBAQAogCQkJCUNFNjQwQ0E2MjM3MEE0RjMw
MEM1Q0FBNCAvKiBUZXN0Q29jb2EubW0gKi8sCiAJCQkJNUNFNzU5NDgyMkE4ODNBNTAwQzEyNDA5
IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5oICovLAogCQkJCTVDRTc1OTQ3MjJBODgzQTUwMEMx
MjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIubW0gKi8sCi0JCQkJREY2QkM0NzAyNTM0RTEy
MDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCi0JCQkJREY2QkM0NkYyNTM0
RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAotCQkJCTVDNzJFOENE
MjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAotCQkJ
CTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5t
bSAqLywKKwkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdh
dGUuaCAqLywKKwkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVs
ZWdhdGUubW0gKi8sCiAJCQkJMkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUuaCAqLywKIAkJCQkyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCQk1MTYyODEyMzIzMjVDMTdBMDBCQjdFNDIgLyog
VGVzdFBERkRvY3VtZW50LmggKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNw
cAppbmRleCBjNDU3NTg2NTA1ZGIzZTRkYmFiZGIwNzEyYTBlNjYzYmRiMjljNzdkLi5jYTY5N2Fj
MzVhOWFhNTIwYTViMTlmNWM3Yjc0M2MxN2M4NDRjNTM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25DcmFzaC5jcHAKQEAgLTI5LDQxICsyOSw0MiBAQAogCiAjaW5jbHVkZSAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRlIDxX
ZWJLaXQvV0tEb3dubG9hZFJlZi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkLmg+CiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIGJvb2wgZGlkRGVjaWRlRGVzdGlu
YXRpb247CiAKLXN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShX
S1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJS
ZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVm
LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCopCiB7CiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQobGlzdGVuZXIpOwogfQog
Ci1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYs
IGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tT
dHJpbmdSZWYsIGJvb2wqLCBjb25zdCB2b2lkKikKIHsKICAgICBkaWREZWNpZGVEZXN0aW5hdGlv
biA9IHRydWU7Ci0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0
cik7CisgICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7CiAgICAgcmV0dXJuIFV0aWw6OnRv
V0soIi90bXAvV2ViS2l0QVBJVGVzdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2giKS5s
ZWFrUmVmKCk7CiB9CiAKLXN0YXRpYyB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiBuYXZpZ2F0aW9u
UmVzcG9uc2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CitzdGF0aWMgdm9pZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHQpCiB7Ci0gICAgV0tEb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0NvbnRleHREb3du
bG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVu
dCkpOworCiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50LmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU7Ci0gICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsK
KyAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKworICAgIFdLQ29udGV4dFNldERv
d25sb2FkQ2xpZW50KGNvbnRleHQsICZjbGllbnQuYmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNl
dFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgV0tQYWdlTmF2aWdhdGlv
bkNsaWVudFYzIG5hdmlnYXRpb25DbGllbnQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYw
IG5hdmlnYXRpb25DbGllbnQ7CiAgICAgbWVtc2V0KCZuYXZpZ2F0aW9uQ2xpZW50LCAwLCBzaXpl
b2YobmF2aWdhdGlvbkNsaWVudCkpOwogCi0gICAgbmF2aWdhdGlvbkNsaWVudC5iYXNlLnZlcnNp
b24gPSAzOwotICAgIG5hdmlnYXRpb25DbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOwotICAgIG5hdmlnYXRp
b25DbGllbnQubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBuYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZDsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVy
c2lvbiA9IDA7CisgICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKIAogICAgIFdLUGFnZVNl
dFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHBhZ2UsICZuYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwogfQpA
QCAtNzEsNiArNzIsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJl
ZiBwYWdlKQogVEVTVChXZWJLaXQsIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCkKIHsK
ICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4
dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKKyAgICBzZXRDb250ZXh0RG93bmxv
YWRDbGllbnQoY29udGV4dC5nZXQoKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhj
b250ZXh0LmdldCgpKTsKICAgICBzZXRQYWdlUG9saWN5Q2xpZW50KHdlYlZpZXcucGFnZSgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0
TWVudURvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0Nv
bnRleHRNZW51RG93bmxvYWQubW0KaW5kZXggNzU1NmY2MTJkNWUzYjliYTRmNGNkNmY1MjZjOTU4
YzE3ZjNmMWYyNi4uMTU5MzBlNTQ2ZGJhYTNkYTlkNWVkMjE1YjZjOGI5Y2M2MTA5YWYwZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51
RG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0Nv
bnRleHRNZW51RG93bmxvYWQubW0KQEAgLTI4LDggKzI4LDcgQEAKICNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktp
dC9XS0NvbnRleHRNZW51SXRlbS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWRDbGllbnQu
aD4KLSNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkUmVmLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tE
b3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUGFnZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
UGFnZUNvbnRleHRNZW51Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaD4KQEAgLTYzLDEyICs2MiwxMiBAQCBzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVudUZy
b21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmIHBhZ2UsIFdLQXJyYXlSZWYgcHJvcG9zZWRNZQogICAg
IH0KIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3Ry
aW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1Jl
ZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29s
KiwgY29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmlsZW5h
bWUgaXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBhdHRy
aWJ1dGUgaW4gdGhlIEhUTUwuCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJkb3dubG9hZEF0dHJpYnV0
ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAotICAgIFdLRG93bmxvYWRDYW5jZWwo
ZG93bmxvYWQsIG51bGxwdHIsIG51bGxwdHIpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxv
YWQpOwogICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24gPSB0cnVlOwogCiAgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkT3JpZ2luYXRpbmdQYWdlLCBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQ
YWdlKGRvd25sb2FkKSk7CkBAIC03NywyOSArNzYsMjUgQEAgc3RhdGljIFdLU3RyaW5nUmVmIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxv
YWQKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0L0NvbnRleHRNZW51
RG93bmxvYWQiKS5sZWFrUmVmKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnRleHRNZW51RGlkQ3Jl
YXRlRG93bmxvYWQoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgV0tEb3dubG9hZENsaWVudFYwIGNsaWVudDsKLSAg
ICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotICAgIGNsaWVudC5iYXNlLnZl
cnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLRG93bmxvYWRTZXRD
bGllbnQoZG93bmxvYWQsICZjbGllbnQuYmFzZSk7Ci19Ci0KIC8vIENoZWNrcyB0aGF0IHRoZSBI
VE1MIGRvd25sb2FkIGF0dHJpYnV0ZSBpcyB1c2VkIGFzIHN1Z2dlc3RlZCBmaWxlbmFtZSB3aGVu
IHNlbGVjdGluZwogLy8gdGhlICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgaXRlbSBpbiB0aGUgY29u
dGV4dCBtZW51LgogVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRB
dHRyaWJ1dGUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRv
cHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkpOwogCisgICAgV0tD
b250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNp
emVvZihjbGllbnQpKTsKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBjbGllbnQu
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChj
b250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOworCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3Jv
dXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmll
cihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
Vmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCi0gICAgV0tQYWdlTmF2aWdh
dGlvbkNsaWVudFYzIGxvYWRlckNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAg
bG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVy
Q2xpZW50KSk7Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDM7CisgICAgbG9hZGVy
Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaE5hdmln
YXRpb24gPSBkaWRGaW5pc2hOYXZpZ2F0aW9uOwotICAgIGxvYWRlckNsaWVudC5jb250ZXh0TWVu
dURpZENyZWF0ZURvd25sb2FkID0gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDsKICAgICBX
S1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNsaWVu
dC5iYXNlKTsKIAogICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMgY29udGV4dE1lbnVDbGll
bnQ7CkBAIC0xMTksMzggKzExNCwzNCBAQCBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9h
ZEhUTUxEb3dubG9hZEF0dHJpYnV0ZSkKICAgICBVdGlsOjpydW4oJmRpZERlY2lkZURvd25sb2Fk
RGVzdGluYXRpb24pOwogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29sKiwgY29uc3Qgdm9p
ZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgaXMgcHJvdmlk
ZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgaW4gdGhl
IEhUTUwsIGFmdGVyIHNhbml0aXphdGlvbi4KICAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3QxX3Rl
c3QyX2Rvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogCi0g
ICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgV0tE
b3dubG9hZENhbmNlbChkb3dubG9hZCk7CiAgICAgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlv
biA9IHRydWU7CiAKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0L0Nv
bnRleHRNZW51RG93bmxvYWQiKS5sZWFrUmVmKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnRleHRN
ZW51RGlkQ3JlYXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hl
cyhXS1BhZ2VSZWYgcGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50OwotICAgIG1lbXNldCgm
Y2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0gICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
Ci0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKLSAgICBXS0Rvd25s
b2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOwotfQotCiBURVNUKFdlYktpdCwg
Q29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZVdpdGhTbGFzaGVzKQogewog
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3Jl
YXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAorICAgIFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50VjAgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKKyAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOworCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdl
R3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRp
ZmllcihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCi0gICAgV0tQYWdlTmF2
aWdhdGlvbkNsaWVudFYzIGxvYWRlckNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50
VjAgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDM7CisgICAgbG9h
ZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaE5h
dmlnYXRpb24gPSBkaWRGaW5pc2hOYXZpZ2F0aW9uOwotICAgIGxvYWRlckNsaWVudC5jb250ZXh0
TWVudURpZENyZWF0ZURvd25sb2FkID0gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZFdpdGhT
dWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzOwogICAgIFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwogCiAgICAg
V0tQYWdlQ29udGV4dE1lbnVDbGllbnRWMyBjb250ZXh0TWVudUNsaWVudDsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmlu
Zy5tbQppbmRleCBkMTk2YzJjOTNjOTJjYWFiZDczMjM5M2IzNGNhZWVlMGFlN2IzMzkyLi40MzM5
MTMxMTAxZjJjZGQ5NTA5ODY3ZWZlOTQ0ZjZlNzdlZjM5ZWRiIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1t
CkBAIC0xNTEsNyArMTUxLDcgQEAgQGltcGxlbWVudGF0aW9uIEJlY29tZURvd25sb2FkRGVsZWdh
dGUKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiB9CiAKIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05h
dmlnYXRpb24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCA3
ZjQ0MGMyMWVjYzc5MGMwYWJjYTI0MjJlNjFkNGFhMzRlMWZmMDU0Li4zYWVmZWI4ZWMzMzVlMTAy
MzJmZjhlNWM4MGM2Zjc5YmQzNWVmYzA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTMzLDE1ICszMywxMSBAQAogI2ltcG9y
dCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5oIgotI2ltcG9ydCAiVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCIKICNpbXBv
cnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgog
I2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlc3Bv
bnNlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
RXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CkBAIC0x
NzgsNyArMTc0LDcgQEAgQGVuZAogQGltcGxlbWVudGF0aW9uIENvbnZlcnRSZXNwb25zZVRvRG93
bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3Bv
bnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFu
ZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICBkZWNp
c2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwog
fQogQGVuZAogCkBAIC05ODEsNyArOTc3LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbgogICAg
IEVYUEVDVF9GQUxTRShfZGlkRmluaXNoTmF2aWdhdGlvbik7CiAgICAgRVhQRUNUX1dLX1NUUkVR
KF9XS0xlZ2FjeUVycm9yRG9tYWluLCBlcnJvci5kb21haW4pOwogICAgIF9kaWRGYWlsUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uID0gWUVTOwotICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkK
KyAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQogICAgICAgICBpc0RvbmUgPSB0cnVl
OwogfQogCkBAIC05ODksNyArOTg1LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXQKIHsKICAg
ICBFWFBFQ1RfRkFMU0UoX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24pOwogICAgIF9kaWRG
aW5pc2hOYXZpZ2F0aW9uID0gWUVTOwotICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkK
KyAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQogICAgICAgICBpc0RvbmUgPSB0cnVl
OwogfQogCkBAIC0xMDI4LDcgKzEwMjQsNyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0
aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0VVJM
LmFic29sdXRlU3RyaW5nLCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAogICAgIE5T
VVJMICpzZWNvbmRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5kbGUtZmls
ZS9zaW1wbGUyLmh0bWwiXTsKLSAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRlIHNldFJl
c3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNl
Y29uZFVSTF1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKQEAgLTEwNTUsNyArMTA1MSw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9h
ZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfVFJVRShbZGVs
ZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShmaXJzdFVS
TC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAKLSAgICBb
ZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNlY29uZFVSTF1dOwogICAgIGlzRG9uZSA9
IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTExOTMs
MzAgKzExODksMjQgQEAgU3RyaW5nIGxvbmdTdHJpbmcoTENoYXIgYykKICAgICByZXR1cm4gU3Ry
aW5nKHZlY3Rvci5kYXRhKCksIGxlbmd0aCk7CiB9CiAKLWVudW0gY2xhc3MgSW5jbHVkZUVUYWcg
OiBib29sIHsgTm8sIFllcyB9OwotZW51bSBjbGFzcyBUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkg
OiBib29sIHsgTm8sIFllcyB9OwotCi1zdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBk
b3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWcgaW5jbHVkZUVUYWcgPSBJbmNsdWRlRVRhZzo6
WWVzLCBGdW5jdGlvbjx2b2lkKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24pPiYmIHRlcm1pbmF0
b3IgPSBudWxscHRyKQorVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogewotICAgIHJldHVybiB7
IFtpbmNsdWRlRVRhZywgdGVybWluYXRvciA9IFdURk1vdmUodGVybWluYXRvciksIGNvbm5lY3Rp
b25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJs
ZSB7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJs
ZSB7CiAgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKICAgICAgICAgY2FzZSAx
OgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2luY2x1ZGVFVGFn
LCBjb25uZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKFZlY3Rvcjxj
aGFyPiYmKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0
cmluZygKLSAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iLAotICAgICAg
ICAgICAgICAgICAgICBpbmNsdWRlRVRhZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8gIkVUYWc6IHRl
c3RcclxuIiA6ICIiLAorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
W2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlv
bi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tc
clxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCiAgICAgICAgICAgICAg
ICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAi
Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwi
XHJcbiIKICAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykK
LSAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZN
b3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0
b3IpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3IpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdG9yKGNvbm5lY3Rpb24pOwotICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgICkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNl
aXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4m
JiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0
LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOwogICAg
ICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAg
ICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjMwLDY0ICsxMjIw
LDE2IEBAIHN0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIGRvd25sb2FkVGVzdFNlcnZl
cihJbmNsdWRlRVRhZyBpbmNsdWRlRVRhZyA9IEluCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgIH19OwotfQotCi1zdGF0
aWMgdm9pZCBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKE5TVVJMICpmaWxlKQotewotICAg
IE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6Zmls
ZV07Ci0gICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIDEwMDAwdSk7Ci0gICAgRVhQ
RUNUX1RSVUUoZmlsZUNvbnRlbnRzLmJ5dGVzKTsKLSAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVz
ICYmIGZpbGVDb250ZW50cy5sZW5ndGggPT0gMTAwMDB1KSB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYScpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCi0gICAgICAgICAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdiJyk7Ci0g
ICAgfQotfQotCi1zdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzaW1wbGVEb3dubG9h
ZFRlc3RTZXJ2ZXIoKQotewotICAgIHJldHVybiB7IFtdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rp
b24gY29ubmVjdGlvbikgewotICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChb
Y29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24uc2Vu
ZChtYWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgotICAg
ICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKLSAgICAgICAgICAgICAgICAiQ29udGVudC1M
ZW5ndGg6IDUwMDBcclxuIgotICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBh
dHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgotICAgICAgICAgICAgICAg
ICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpCi0gICAgICAgICAgICApKTsKLSAgICAgICAg
fSk7Ci0gICAgfX07Ci19Ci0KLXN0YXRpYyB2b2lkIGNoZWNrRmlsZUNvbnRlbnRzKE5TVVJMICpm
aWxlLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ29udGVudHMpCi17Ci0gICAgTlNEYXRhICpmaWxl
Q29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKLSAgICBFWFBF
Q1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250ZW50cy5sZW5ndGgoKSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlQ29udGVudHMubGVuZ3RoOyBpKyspCi0gICAg
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVz
KVtpXSwgZXhwZWN0ZWRDb250ZW50c1tpXSk7Ci19CisgICAgfSk7CiAKLXN0YXRpYyBOU1VSTCAq
dGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCkKLXsKLSAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBO
U1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0
b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0
Il0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVz
OllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIE5TVVJMICpmaWxlID0gW3RlbXBE
aXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKLSAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpmaWxlIGVycm9yOm5p
bF07Ci0gICAgcmV0dXJuIGZpbGU7Ci19Ci0KLVRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKLXsK
LSAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBhdXRvIHNlcnZlciA9IGRv
d25sb2FkVGVzdFNlcnZlcigpOwotCi0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0g
dGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRG
aWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQi
XTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpl
eHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjpuaWxdOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIG5hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBe
KFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAg
fTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90IHsgU3RhcnQsIFdyaXRlRGF0
YSwgRGVjaWRlRGVzdGluYXRpb24sIENyZWF0ZURlc3RpbmF0aW9uLCBDYW5jZWwsIEZpbmlzaCB9
OwpAQCAtMTI5OCwxMSArMTI0MCwxMCBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAg
X19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+IGRvd25sb2FkOwogICAgIF9fYmxvY2sgUmV0
YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YTsKIAotICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gZG93
bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwogICAg
IGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUgPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MLCBOU1N0cmluZyAqKSkgewogICAgICAgICBjYWxs
YmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7Ci0gICAgICAgIEVYUEVD
VF9XS19TVFJFUSgiZXhhbXBsZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFlFUywgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdh
dGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQsIHVpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFj
azo6V3JpdGVEYXRhKTsKQEAgLTEzMTcsNyArMTI1OCw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJl
c3VtZSkKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkQ3JlYXRlRGVzdGlu
YXRpb24gPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgewogICAgICAg
ICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDcmVhdGVEZXN0aW5hdGlvbik7Ci0gICAgICAg
IEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgW3RlbXBEaXIgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXS5wYXRoKTsKICAgICB9OwogICAgIGRv
d25sb2FkRGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRDYW5jZWwgPSBeKF9XS0Rvd25sb2FkICpk
b3dubG9hZCkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDYW5jZWwpOwpA
QCAtMTM1NSw3ICsxMjk2LDE1IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBVdGls
OjpzcGluUnVuTG9vcCgxMCk7CiAgICAgdXNsZWVwKDEwMDAwKTsKIAotICAgIGNoZWNrUmVzdW1l
ZERvd25sb2FkQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIE5TRGF0YSAqZmls
ZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZXhwZWN0ZWREb3dubG9h
ZEZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAwMHUpOworICAg
IEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7CisgICAgaWYgKGZpbGVDb250ZW50cy5i
eXRlcykgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDUwMDA7IGkrKykKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5
dGVzKVtpXSwgJ2EnKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsg
aSsrKQorICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxl
Q29udGVudHMuYnl0ZXMpW2ldLCAnYicpOworICAgIH0KIH0KIAogQGludGVyZmFjZSBEb3dubG9h
ZFRlc3RTY2hlbWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KQEAg
LTEzNjUsNyArMTMxNCw3IEBAIEBpbXBsZW1lbnRhdGlvbiBEb3dubG9hZFRlc3RTY2hlbWVEZWxl
Z2F0ZQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgaWYgKFtuYXZpZ2F0aW9uUmVzcG9uc2UucmVzcG9u
c2UuVVJMLmFic29sdXRlU3RyaW5nIGhhc1N1ZmZpeDpAIi9kb3dubG9hZCJdKQotICAgICAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7
CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCk7CiAgICAgZWxzZQogICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CkBAIC0xNDI0LDExOTkgKzEzNzMsNCBAQCBURVNU
KF9XS0Rvd25sb2FkLCBTdWJmcmFtZVNlY3VyaXR5T3JpZ2luKQogICAgIFt3ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGJvZHk+PGlmcmFtZSBzcmM9
J2h0dHA6Ly8xMjcuMC4wLjE6JWQvcGFnZSc+PC9pZnJhbWU+PC9ib2R5PiIsIHNlcnZlci5wb3J0
KCldIGJhc2VVUkw6bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiB9Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotc3RhdGljIHZvaWQgY2hlY2tDYWxs
YmFja1JlY29yZChUZXN0RG93bmxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUsIFZlY3RvcjxEb3dubG9h
ZENhbGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcykKLXsKLSAgICBhdXRvIGFjdHVhbENhbGxiYWNr
cyA9IGRlbGVnYXRlLnRha2VDYWxsYmFja1JlY29yZDsKLSAgICBFWFBFQ1RfRVEoYWN0dWFsQ2Fs
bGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHN0ZDo6bWluKGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2Fs
bGJhY2tzLnNpemUoKSk7IGkrKykKLSAgICAgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrc1tp
XSwgZXhwZWN0ZWRDYWxsYmFja3NbaV0pOwotfQotCi1URVNUKFdLRG93bmxvYWQsIEZpbmlzaFN1
Y2Nlc3NmdWxseSkKLXsKLSAgICBhdXRvIHNlcnZlciA9IHNpbXBsZURvd25sb2FkVGVzdFNlcnZl
cigpOwotICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0K
LSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRl
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
ewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwot
ICAgICAgICB9OwotICAgIH07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07Ci0gICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07Ci0KLSAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPign
YScpKTsKLQotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
LSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCi0gICAgfSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwg
KmRlc3RpbmF0aW9uKQotewotICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFp
bmVkRG93bmxvYWQ7Ci0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGRlc3RpbmF0aW9uLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwotCi0gICAgICAgIGF1
dG8gKmRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwotCi0gICAg
ICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmVzdW1lRGF0YSBjb21wbGV0aW9u
SGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgICAgICByZXRhaW5lZERv
d25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxl
Z2F0ZSk7Ci0gICAgICAgIH1dOwotICAgICAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCi0g
ICAgICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwotICAgICAgICAKLSAgICAgICAgX19ibG9j
ayBib29sIGRvd25sb2FkZWRTZWNvbmQ1ayA9IGZhbHNlOwotICAgICAgICBFWFBFQ1RfTlVMTChy
ZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlKTsKLSAgICAgICAgcmV0YWluZWREb3dubG9h
ZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5k
aWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBpbnQ2NF90IGJ5dGVzV3JpdHRl
biwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIHJldGFpbmVkRG93bmxv
YWQuZ2V0KCkpOwotICAgICAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiArIDUwMDAsIHRv
dGFsQnl0ZXNXcml0dGVuKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlLCAxMDAwMCk7Ci0gICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDAp
Ci0gICAgICAgICAgICAgICAgZG93bmxvYWRlZFNlY29uZDVrID0gdHJ1ZTsKLSAgICAgICAgfTsK
LSAgICAgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOwotICAgICAgICBkZWxlZ2F0
ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAg
ICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7Ci0gICAgICAg
ICAgICBFWFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOwotICAgICAgICAgICAgZGlkRmlu
aXNoID0gdHJ1ZTsKLSAgICAgICAgfTsKLQotICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7
Ci0KLSAgICAgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7Ci0g
ICAgICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKLSAgICAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZpbmlzaAotICAgICAgICB9KTsKLSAgICAgICAgRVhQRUNUX0VRKHJldGFpbmVkRG93bmxv
YWQuZ2V0KCkud2ViVmlldywgd2ViVmlldy5nZXQoKSk7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVM
TChyZXRhaW5lZERvd25sb2FkLmdldCgpLndlYlZpZXcpOwotICAgIH0KLSAgICBFWFBFQ1RfTk9U
X05VTEwocmV0YWluZWREb3dubG9hZC5nZXQoKSk7Ci0gICAgRVhQRUNUX05VTEwocmV0YWluZWRE
b3dubG9hZC5nZXQoKS53ZWJWaWV3KTsKLX0KLQotc3RhdGljIHZvaWQgd2FpdEZvckZpcnN0NWso
VGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlKQotewotICAgIF9fYmxvY2sgYm9vbCBkb3du
bG9hZGVkRmlyc3Q1ayA9IGZhbHNlOwotICAgIEFTU0VSVCghZGVsZWdhdGUuZGlkV3JpdGVEYXRh
KTsKLSAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKiwgaW50NjRfdCBi
eXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSkgewotICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCB0b3Rh
bEJ5dGVzV3JpdHRlbik7Ci0gICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlLCAxMDAwMCk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKLSAgICAgICAg
ICAgIGRvd25sb2FkZWRGaXJzdDVrID0gdHJ1ZTsKLSAgICB9OwotICAgIFV0aWw6OnJ1bigmZG93
bmxvYWRlZEZpcnN0NWspOwotfQotCi1URVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkK
LXsKLSAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOwotICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwot
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0KLSAgICBfX2Jsb2NrIFJldGFp
blB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgcmV0YWluZWREb3du
bG9hZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwot
ICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3du
bG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVk
RG93bmxvYWRGaWxlKTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Ci0gICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOwot
Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7Ci0gICAg
W3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7Ci0gICAgICAg
IHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7Ci0gICAgfV07Ci0KLSAgICB3aGlsZSAo
IXJldGFpbmVkUmVzdW1lRGF0YSkKLSAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKLSAgICBy
ZXN1bWVBbmRGaW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVk
RG93bmxvYWRGaWxlKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Ci0gICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCi0gICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0
ZURhdGEKLSAgICB9KTsKLX0KLQotVEVTVChXS0Rvd25sb2FkLCBGYWlsQW5kUmVzdW1lKQotewot
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOwotICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpZ
ZXMsIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7Ci0gICAgICAg
IHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKLSAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUo
KTsKLSAgICB9KTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwot
Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKLSAg
ICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKLSAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAg
IHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRl
LmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQs
IHJldGFpbmVkRG93bmxvYWQuZ2V0KCkpOwotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7Ci0gICAgICAgICAgICBy
ZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOwotICAgICAgICB9OwotICAgIH07Ci0KLSAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLQotICAgIHdoaWxlICgh
cmV0YWluZWRSZXN1bWVEYXRhKQotICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwotICAgIHJl
c3VtZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRl
RGF0YSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKLSAgICB9
KTsKLX0KLQotVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURhdGEpCi17Ci0gICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vKTsKLSAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0gICAgX19ibG9jayBS
ZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKLSAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIHJldGFpbmVk
RG93bmxvYWQgPSBkb3dubG9hZDsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBl
Y3RlZERvd25sb2FkRmlsZSk7Ci0gICAgICAgIH07Ci0gICAgfTsKLSAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7
Ci0KLSAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFtyZXRhaW5lZERvd25sb2Fk
IGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgewotICAgICAgICBFWFBFQ1RfTlVMTChyZXN1
bWVEYXRhKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfV07Ci0gICAgVXRpbDo6cnVuKCZk
b25lKTsKLSAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0
cmluZzw1MDAwPignYScpKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Ci0g
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCi0gICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRX
cml0ZURhdGEKLSAgICB9KTsKLX0KLQotVEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRh
KQotewotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOwotICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVF
VGFnOjpObywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKLSAg
ICAgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOwotICAgICAgICBjb25uZWN0aW9uLnRlcm1p
bmF0ZSgpOwotICAgIH0pOwotICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBG
aWxlVGhhdERvZXNOb3RFeGlzdCgpOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdh
dGU7Ci0KLSAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgICAgIH07Ci0gICAgICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJy
b3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7Ci0gICAgICAgICAgICBF
WFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKLSAgICAgICAgICAgIGRvbmUgPSB0cnVlOwotICAgICAg
ICB9OwotICAgIH07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
Ci0gICAgVXRpbDo6cnVuKCZkb25lKTsKLSAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERv
d25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKLSAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7Ci0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rp
b24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKLSAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCi0g
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZhaWxXaXRoRXJyb3IKLSAgICB9KTsKLX0KLQotLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGlu
IENGTmV0d29yay4KLSNpZiBIQVZFKENGTkVUX1JFU1BPTlNFX0NBTExCQUNLX1dJVEhfTk9fQ09O
VEVOVCkKLQotVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQot
ewotICAgIE9wdGlvbmFsPFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24+IHNlcnZlckNvbm5lY3Rp
b247Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsICZzZXJ2ZXJD
b25uZWN0aW9uXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUg
ewotICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7Ci0gICAgICAgIGNhc2UgMToK
LSAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOwotICAgICAgICAgICAg
Y29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7Ci0gICAg
ICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKAotICAgICAgICAgICAgICAgICAgICAiSFRUUC8x
LjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgotICAg
ICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5h
bWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIlxyXG4iCi0gICAg
ICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9
XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUo
c3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0
LnNpemUoKSkpOwotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAot
ICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgIkVUYWc6IHRlc3RcclxuIgotICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5n
dGg6IDEwMFxyXG4iCi0gICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzwxMDA+
KCd4JykKLSAgICAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxl
ID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKLQotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKLSAgICB9OwotICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0g
WyZdKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKLSAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+dGVybWluYXRl
KCk7Ci0gICAgfTsKLSAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1l
RGF0YTsKLSAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgIEVYUEVDVF9FUShl
cnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKLSAgICAgICAgcmV0
YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKLSAgICB9OwotICAgIF9fYmxvY2sgYm9vbCBk
b3dubG9hZEZpbmlzaGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2gg
PSBeKFdLRG93bmxvYWQgKikgewotICAgICAgICBkb3dubG9hZEZpbmlzaGVkID0gdHJ1ZTsKLSAg
ICB9OwotCi0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Ci0gICAg
d2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCi0gICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7
Ci0gICAgCi0gICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0g
ZmlsZUV4aXN0c0F0UGF0aDpleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoXSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGRvd25sb2FkRmluaXNoZWQpOwotICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0
aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
LSAgICB9XTsKLSAgICBVdGlsOjpydW4oJmRvd25sb2FkRmluaXNoZWQpOwotICAgIGNoZWNrRmls
ZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEwMD4oJ3gnKSk7Ci0K
LSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Ci0gICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3Rp
bmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAotICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCi0gICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAotICAgIH0pOwotfQotCi0jZW5kaWYKLQotdm9pZCB0ZXN0UmVzdW1l
QWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUsIHZvaWQoXm11dGF0ZUZpbGUpKHZvaWQpKQotewotICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0KLSAgICBfX2Jsb2NrIFJldGFpblB0
cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgcmV0YWluZWREb3dubG9h
ZCA9IGRvd25sb2FkOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAg
ICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgewotICAgICAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQu
ZGVzdGluYXRpb24pOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3du
bG9hZEZpbGUpOwotICAgICAgICAgICAgRVhQRUNUX05PVF9OVUxMKGRvd25sb2FkLmRlc3RpbmF0
aW9uKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5kZXN0aW5hdGlvbi5h
YnNvbHV0ZVN0cmluZywgZXhwZWN0ZWREb3dubG9hZEZpbGUuYWJzb2x1dGVTdHJpbmcpOwotICAg
ICAgICB9OwotICAgIH07Ci0KLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0
XTsKLSAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7Ci0gICAgZGVsZWdhdGUuZGlkV3JpdGVE
YXRhID0gbmlsOwotCi0gICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3Vt
ZURhdGE7Ci0gICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRh
KSB7Ci0gICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7Ci0gICAgfV07Ci0K
LSAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKLSAgICAgICAgVXRpbDo6c3BpblJ1bkxv
b3AoKTsKLQotICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25n
U3RyaW5nPDUwMDA+KCdhJykpOwotCi0gICAgbXV0YXRlRmlsZSgpOwotCi0gICAgX19ibG9jayBi
b29sIGRpZEZpbmlzaCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERh
dGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLmRlc3RpbmF0
aW9uLmFic29sdXRlU3RyaW5nLCBleHBlY3RlZERvd25sb2FkRmlsZS5hYnNvbHV0ZVN0cmluZyk7
Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRl
LmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKLSAgICAgICAgICAgIGRpZEZp
bmlzaCA9IHRydWU7Ci0gICAgICAgIH07Ci0gICAgfV07Ci0gICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2gpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvblJlc3BvbnNlLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKLSAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCi0gICAgfSk7Ci19Ci0KLVRFU1QoV0tE
b3dubG9hZCwgUmVzdW1lV2l0aG91dEluaXRpYWxEYXRhT25EaXNrKQotewotICAgIEhUVFBTZXJ2
ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIG11dGFibGUgewotICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50
KSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBS
ZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
c2VuZChtYWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJc
biIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgotICAgICAgICAgICAgICAg
ICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkNv
bnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxy
XG4iCi0gICAgICAgICAgICAgICAgICAgICJcclxuIiwKLSAgICAgICAgICAgICAgICAgICAgbG9u
Z1N0cmluZzw1MDAwPignYScpCi0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBjb25uZWN0
aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewotI2lm
ICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCi0gICAgICAgICAgICAgICAgLy8gTW9q
YXZlIENGTmV0d29yayBzZW5kcyBhIHJhbmdlIHJlcXVlc3Qgd2hlbiByZXN1bWluZyBhIGRvd25s
b2FkIGFmdGVyIHJlbW92aW5nIGFscmVhZHktZG93bmxvYWRlZCBkYXRhLgotICAgICAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2UiLCByZXF1ZXN0
LnNpemUoKSkpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VT
dHJpbmcoCi0gICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgotICAgICAg
ICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCi0gICAgICAgICAgICAgICAgICAgICJDb250
ZW50LUxlbmd0aDogMTAwMDBcclxuIgotICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCi0gICAg
ICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8MTAwMDA+KCd4JykKLSAgICAgICAgICAgICAgICAp
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0pOwot
ICAgIAotICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOwotICAgIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVz
dCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSwgXnsKLSAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBu
aWw7Ci0gICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0
VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOiZlcnJvcl07Ci0gICAgICAgIEVYUEVDVF9O
VUxMKGVycm9yKTsKLSAgICB9KTsKLQotICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93
bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEwMDAwPigneCcpKTsKLX0KLQotVEVTVChXS0Rvd25sb2Fk
LCBSZXN1bWVXaXRoRXh0cmFJbml0aWFsRGF0YU9uRGlzaykKLXsKLSAgICBIVFRQU2VydmVyIHNl
cnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25u
ZWN0aW9uKSBtdXRhYmxlIHsKLSAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewot
ICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVz
dChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQo
bWFrZVN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0g
ICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKLSAgICAgICAgICAgICAgICAgICAg
IkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCi0gICAgICAgICAgICAgICAgICAgICJDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgot
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCi0gICAgICAgICAgICAgICAgICAgIGxvbmdTdHJp
bmc8NTAwMD4oJ2EnKQotICAgICAgICAgICAgICAgICkpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKLSAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVz
PTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlv
bi5zZW5kKG1ha2VTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFy
dGlhbCBDb250ZW50XHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgot
ICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1SYW5nZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAw
XHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiA1MDAwXHJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iLAotICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5n
PDEwMDAwPignZCcpCi0gICAgICAgICAgICAgICAgKSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAgICAKLSAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICB0ZXN0UmVzdW1l
QWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3QoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUs
IF57Ci0gICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwotICAgICAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBl
cnJvcjomZXJyb3JdOwotICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKFtbKE5TU3RyaW5nICopbWFrZVN0cmluZyhsb25nU3RyaW5nPDMwMDA+KCdiJyksIGxv
bmdTdHJpbmc8MzAwMD4oJ2MnKSkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKLSAg
ICB9KTsKLQotICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBtYWtl
U3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4oJ2InKSwgbG9uZ1N0cmluZzwzMDAwPignYycpLCBsb25n
U3RyaW5nPDUwMDA+KCdkJykpKTsKLX0KLQotVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVXaXRoSW52
YWxpZFJlc3VtZURhdGEpCi17Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgRVhQRUNUX1RSVUUoW1tAImluaXRpYWwgZGF0
YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVU
b1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOwotICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGJvb2wgY2F1Z2h0RXhj
ZXB0aW9uID0gZmFsc2U7Ci0gICAgQHRyeSB7Ci0gICAgICAgIFt3ZWJWaWV3IHJlc3VtZURvd25s
b2FkV2l0aERhdGE6W0AiaW52YWxpZCByZXN1bWUgZGF0YSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9XTsKLSAg
ICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUu
bmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pOwotICAgICAgICBjYXVnaHRFeGNlcHRp
b24gPSB0cnVlOwotICAgIH0KLSAgICBFWFBFQ1RfVFJVRShjYXVnaHRFeGNlcHRpb24pOwotfQot
Ci1URVNUKFdLRG93bmxvYWQsIFJlc3VtZUNhbnRSZWNvbm5lY3QpCi17Ci0gICAgYXV0byBzZXJ2
ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0gICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4g
cmV0YWluZWREb3dubG9hZDsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsK
LSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0g
ICAgICAgIH07Ci0gICAgfTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpXTsKLSAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7Ci0KLSAgICBjaGVja0ZpbGVDb250
ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKLQotICAg
IF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOwotICAgIFtyZXRh
aW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgewotICAgICAgICByZXRh
aW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOwotICAgIH1dOwotICAgIHdoaWxlICghcmV0YWlu
ZWRSZXN1bWVEYXRhKQotICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwotCi0gICAgc2VydmVy
LmNhbmNlbCgpOwotICAgIAotICAgIHJldGFpbmVkRG93bmxvYWQgPSBuaWw7Ci0gICAgW3dlYlZp
ZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICByZXRhaW5lZERv
d25sb2FkID0gZG93bmxvYWQ7Ci0gICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRl
KTsKLSAgICB9XTsKLSAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCi0gICAgICAgIFV0aWw6
OnNwaW5SdW5Mb29wKCk7Ci0KLSAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0gICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBkZWxlZ2F0ZS5k
aWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEg
KnJlc3VtZURhdGEpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNV
UkxFcnJvckRvbWFpbik7Ci0gICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9y
Q2Fubm90Q29ubmVjdFRvSG9zdCk7Ci0gICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bWVEYXRh
KTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBVdGlsOjpydW4oJmRvbmUpOwot
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2VCZWNhbWVEb3dubG9hZCwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGlu
YXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKLSAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgotICAgIH0pOwotfQotCi1URVNUKFdL
RG93bmxvYWQsIFVua25vd25Db250ZW50TGVuZ3RoKQotewotICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KFtdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgewotICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVI
VFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKLSAgICAgICAgICAgIGNvbm5lY3Rpb24u
c2VuZChtYWtlU3RyaW5nKCJIVFRQLzEuMSAyMDAgT0tcclxuXHJcbiIsIGxvbmdTdHJpbmc8NTAw
MD4oJ2EnKSkpOwotICAgICAgICB9KTsKLSAgICB9KTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0gICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4o
V0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUp
OwotICAgICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxv
YWQgKiwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgewotICAgICAgICAgICAgaWYgKGJ5dGVz
V3JpdHRlbiAhPSA1MDAwKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIEVY
UEVDVF9FUSh0b3RhbEJ5dGVzV3JpdHRlbiwgNTAwMCk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEo
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgLTEpOwotICAgICAgICAgICAgZG9uZSA9IHRydWU7
Ci0gICAgICAgIH07Ci0gICAgfTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKLSAgICBVdGlsOjpydW4oJmRvbmUpOwotICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4
cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwotCi0gICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKLSAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCi0gICAgfSk7Ci19Ci0KLVRFU1Qo
V0tEb3dubG9hZCwgSW52YWxpZEFyZ3VtZW50cykKLXsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0
aW9uID0gZmFsc2U7Ci0gICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKLSAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNT
dHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewotICAgICAgICAg
ICAgQHRyeSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0pOwotICAgICAgICAgICAgfSBAY2F0Y2gg
KE5TRXhjZXB0aW9uICplKSB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFt
ZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pOwotICAgICAgICAgICAgICAgIGNhdWdodEV4
Y2VwdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgfV07Ci0gICAg
VXRpbDo6cnVuKCZjYXVnaHRFeGNlcHRpb24pOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0g
ICAgfSk7Ci19Ci0KLXN0YXRpYyBIVFRQU2VydmVyIHJlZGlyZWN0U2VydmVyKCkKLXsKLSAgICBy
ZXR1cm4ge3sKLSAgICAgICAgeyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0
VGFyZ2V0IiB9LCB7ICJDdXN0b20tTmFtZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKLSAgICAg
ICAgeyAiL3JlZGlyZWN0VGFyZ2V0IiwgeyAiaGkiIH0gfSwKLSAgICB9fTsKLX0KLQotVEVTVChX
S0Rvd25sb2FkLCBSZWRpcmVjdEFsbG93KQotewotICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RT
ZXJ2ZXIoKTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXRE
b2VzTm90RXhpc3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OwotCi0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJl
cXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOwotICAgIHNlcnZlclJlcXVlc3QuSFRU
UEJvZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107
Ci0gICAgCi0gICAgX19ibG9jayBib29sIGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKLSAgICBb
d2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9u
SGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVn
YXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRp
cmVjdFBvbGljeSkpIHsKLSAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkp
OyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCi0gICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2
ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEocmVz
cG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNw
b25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7Ci0g
ICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtz
ZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRh
cmdldCJdLmFic29sdXRlU3RyaW5nKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93KTsKLSAgICAgICAgfTsKLSAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
LCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKLSAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdl
dCIpOwotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVz
dC5VUkwucGF0aCwgIi8iKTsKLSAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5v
cmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZyk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7Ci0gICAgICAgIH07Ci0gICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNo
ID0gXihXS0Rvd25sb2FkICopIHsKLSAgICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVl
OwotICAgICAgICB9OwotICAgIH1dOwotICAgIFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7
Ci0KLSAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7Ci0g
ICAgCi0gICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKLQotICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
V2lsbFJlZGlyZWN0LAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
biwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAotICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKLSAgICB9KTsKLX0KLQotVEVTVChXS0Rvd25sb2FkLCBS
ZWRpcmVjdENhbmNlbCkKLXsKLSAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7Ci0g
ICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKLSAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
LSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0gICAgX19ibG9jayBib29s
IGNhbmNlbGxlZCA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVs
ZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQ
VVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkgewotICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcpOwotICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0
YXR1c0NvZGUsIDMwMSk7Ci0gICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxs
SGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOwotICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVx
dWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5h
YnNvbHV0ZVN0cmluZyk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2Fk
UmVkaXJlY3RQb2xpY3lDYW5jZWwpOwotICAgICAgICB9OwotICAgICAgICBkZWxlZ2F0ZS5kaWRG
YWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJl
c3VtZURhdGEpIHsKLSAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOwotICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0g
ICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7Ci0g
ICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOwotICAgICAgICB9OwotICAgIH1dOwotICAgIFV0
aWw6OnJ1bigmY2FuY2VsbGVkKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7
Ci0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKLSAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgotICAgIH0pOwotICAgIEVYUEVDVF9FUShzZXJ2
ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7Ci19Ci0KLVRFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRS
ZXF1ZXN0RmFpbHVyZSkKLXsKLSAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0pOwotICAgIE5TVVJM
UmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7Ci0gICAgc2VydmVyLmNh
bmNlbCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10g
YXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0KLSAg
ICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgc3RhcnREb3dubG9h
ZFdpdGhSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAg
ICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwg
TlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewotICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOwotICAg
ICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKLSAgICAgICAgfTsKLSAgICB9XTsKLSAgICBVdGlsOjpy
dW4oJmZhaWxlZCk7Ci0KLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Ci0gICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCi0gICAgfSk7Ci19Ci0KLVRF
U1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQotewotICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiLyIsIHsgNDA0LCB7IH0sICJodHRwIGJvZHkiIH0gfQotICAgIH0p
OwotICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10g
YXV0b3JlbGVhc2VdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOwotICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7Ci0KLSAg
ICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgc3RhcnREb3du
bG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OwotICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKLSAgICAgICAgfTsKLSAgICAgICAgZGVsZWdhdGUuZG93bmxvYWRE
aWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgICAgICBkaWRGaW5p
c2ggPSB0cnVlOwotICAgICAgICB9OwotICAgIH1dOwotICAgIFV0aWw6OnJ1bigmZGlkRmluaXNo
KTsKLQotICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0cCBi
b2R5Iik7Ci0KLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Ci0gICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRXcml0ZURhdGEsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCwK
LSAgICB9KTsKLX0KLQotVEVTVChXS0Rvd25sb2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNoKQotewot
ICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7Ci0gICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Ci0gICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLQotICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgICAgIH07Ci0gICAgfTsKLSAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAgICB3YWl0Rm9yRmly
c3Q1ayhkZWxlZ2F0ZSk7Ci0gICAgCi0gICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxz
ZTsKLSAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJy
b3IgKmVycm9yLCBOU0RhdGEgKikgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9t
YWluLCBOU1VSTEVycm9yRG9tYWluKTsKLSAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOwotICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1
ZTsKLSAgICB9OwotICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBf
dGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOwotICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7Ci0g
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewotICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2UsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZUJlY2FtZURvd25sb2FkLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAotICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCi0gICAgfSk7Ci19Ci0KLVRFU1QoV0tE
b3dubG9hZCwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9zdCkKLXsKLSAgICBIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9IH0KLSAgICB9KTsK
LSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0gICAg
ZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2Vz
dGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7Ci0gICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgICAgIH07
Ci0gICAgfTsKLSAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAg
ICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsKLQotICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOwotICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24s
Ci0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKLSAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmluaXNoCi0gICAgfSk7Ci19Ci0KLVRFU1QoV0tEb3dubG9hZCwgUmVx
dWVzdEhUVFBCb2R5KQotewotICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7
Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW1tzZXJ2ZXIucmVxdWVzdCgpIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07Ci0gICAg
cmVxdWVzdC5IVFRQQm9keSA9IFtAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXTsKLSAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6cmVxdWVz
dCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIEVY
UEVDVF9OVUxMKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5IVFRQQm9keSk7IC8vIEZJWE1FOiBX
ZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4KLSAgICAgICAgZG9uZSA9IHRy
dWU7Ci0gICAgfV07Ci0gICAgVXRpbDo6cnVuKCZkb25lKTsKLX0KLQotVEVTVChXS0Rvd25sb2Fk
LCBQYXRoTXVzdEV4aXN0KQotewotICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOwotICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6bmlsXTsK
LSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSBbdGVtcERpciBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOwotCi0gICAgYXV0byBzZXJ2ZXIgPSBkb3du
bG9hZFRlc3RTZXJ2ZXIoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOwotCi0gICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOwotICAgIGRlbGVnYXRlLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgZG93bmxv
YWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgICAgIH07Ci0gICAg
ICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAq
ZXJyb3IsIE5TRGF0YSAqKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9t
YWluLCBOU1VSTEVycm9yRG9tYWluKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2Rl
LCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSk7Ci0gICAgICAgICAgICBmYWlsZWQgPSB0cnVl
OwotICAgICAgICB9OwotICAgIH07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07Ci0gICAgVXRpbDo6cnVuKCZmYWlsZWQpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlv
biwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAotICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKLSAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKLSAgICB9KTsKLX0KLQotVEVTVChXS0Rvd25s
b2FkLCBGaWxlTXVzdE5vdEV4aXN0KQotewotICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0
U2VydmVyKCk7Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7Ci0gICAgX19ibG9jayBhdXRvIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlh
bCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3
cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7Ci0KLSAgICBf
X2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0gICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKLSAgICAgICAgcmV0YWluZWRE
ZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgewotCi0gICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlID0g
YWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7Ci0gICAgICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7Ci0KLSAgICAgICAgICAgIHJldGFp
bmVkRGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vy
cm9yICplcnJvciwgTlNEYXRhICopIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKLSAgICAgICAgICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOwotICAgICAgICAgICAg
ICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgICAgIH07Ci0gICAgfTsKLSAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKLSAgICBVdGlsOjpydW4o
JmZhaWxlZCk7Ci0KLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKHJldGFpbmVkRGVsZWdhdGUuZ2V0
KCksIHsKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKLSAgICB9
KTsKLX0KLQotVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCi17Ci0gICAg
YXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKLSAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0gICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNl
OwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKLSAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwotICAgICAgICB9OwotICAg
ICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKikgewotICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRv
bWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29k
ZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7Ci0gICAgICAgICAgICBmYWlsZWQgPSB0cnVlOwotICAg
ICAgICB9OwotICAgIH07Ci0gICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07Ci0gICAgVXRpbDo6cnVuKCZmYWlsZWQpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKLSAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAotICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKLSAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKLSAgICB9KTsKLX0KLQotLy8gTW9qYXZlIGRvd25sb2Fk
IHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2
YWx1YXRpb24uCi0jaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKLVRFU1QoV0tE
b3dubG9hZCwgQ2hhbGxlbmdlU3VjY2VzcykKLXsKLSAgICBIVFRQU2VydmVyIHNlcnZlcih7eyAi
LyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH19fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90
RXhpc3QoKTsKLSAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLSAgICBkZWxlZ2F0
ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAg
ZmluaXNoZWQgPSB0cnVlOwotICAgIH07Ci0gICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxl
bmdlID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gXihXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewotICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxB
dXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRp
YWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1
c3RdKTsKLSAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOwotICAgIH07Ci0gICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsK
LSAgICB9OwotICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB9XTsKLSAgICBVdGlsOjpydW4o
JmZpbmlzaGVkKTsKLSAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENoYWxsZW5nZSk7Ci0gICAgY2hl
Y2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7
Ci0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewotICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRl
RGF0YSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCi0gICAgfSk7Ci19Ci0j
ZW5kaWYKLQotVEVTVChXS0Rvd25sb2FkLCBDaGFsbGVuZ2VGYWlsdXJlKQotewotICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyKHsgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKLSAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBfX2Js
b2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9
IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURh
dGEpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRv
bWFpbik7Ci0jaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQotICAgICAgICAvLyBN
b2phdmUgZG93bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBz
ZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KLSAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JTZWN1cmVDb25uZWN0aW9uRmFpbGVkKTsKLSNlbHNlCi0gICAgICAgIEVYUEVDVF9F
UShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKLSNlbmRpZgotICAgICAgICBmYWls
ZWQgPSB0cnVlOwotICAgIH07Ci0gICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0g
ZmFsc2U7Ci0gICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
XihXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50
aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwp
OwotICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7Ci0gICAgfTsKLSAgICBbd2ViVmll
dyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Ci0gICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7Ci0gICAgfV07Ci0gICAgVXRpbDo6cnVuKCZmYWlsZWQpOwotI2lmICFVU0Uo
TEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCi0gICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFs
bGVuZ2UpOwotI2VuZGlmCi0gICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewotI2lm
ICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCi0gICAgICAgIC8vIE1vamF2ZSBkb3du
bG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVz
dCBldmFsdWF0aW9uLgotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwKLSNlbmRpZgotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVy
cm9yCi0gICAgfSk7Ci19Ci0KLXZvaWQgYmxvYlRlc3QoYm9vbCBkb3dubG9hZEZyb21OYXZpZ2F0
aW9uQWN0aW9uLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0
ZWRDYWxsYmFja3MpCi17Ci0gICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+IgotICAgICJm
dW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7IgotICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdhJyk7IgotICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCi0g
ICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKLSAgICAiICAgIGEuZG93
bmxvYWQgPSAnZG93bmxvYWRGaWxlbmFtZSc7IgotICAgICIgICAgYS5jbGljaygpOyIKLSAgICAi
fSIKLSAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7
Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
Ci0gICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOm5pbF07Ci0gICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0g
ICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBkZWxlZ2F0ZS5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFj
dGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
KSB7Ci0gICAgICAgIGlmIChbYWN0aW9uLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1
YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pCi0gICAgICAgICAgICBFWFBFQ1RfTlVMTChhY3Rp
b24uZG93bmxvYWRBdHRyaWJ1dGUpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShhY3Rpb24ucmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOwotICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSwgImRvd25sb2FkRmls
ZW5hbWUiKTsKLSAgICAgICAgICAgIGlmIChkb3dubG9hZEZyb21OYXZpZ2F0aW9uQWN0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5QmVjb21lRG93bmxvYWQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdyk7Ci0gICAgfTsKLSAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uQWN0aW9uRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlv
biwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlv
bi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShk
b3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKLSAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB9OwotICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKLSAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAi
YmxvYiIpOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAgIH07Ci0g
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewotICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKLSAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiZG93bmxvYWRGaWxlbmFtZSIpOwotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Ci0gICAgfTsKLSAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBVdGlsOjpy
dW4oJmRvbmUpOwotCi0gICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUs
ICIxMjMiKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCBleHBlY3RlZENhbGxi
YWNrcyk7Ci19Ci0KLVRFU1QoV0tEb3dubG9hZCwgQmxvYlJlc3BvbnNlKQotewotICAgIGJsb2JU
ZXN0KGZhbHNlLCB7Ci0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24s
Ci0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKLSAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCi0gICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAotICAgIH0p
OwotCi0gICAgYmxvYlRlc3QodHJ1ZSwgewotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9u
LAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uQmVjYW1lRG93bmxv
YWQsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAotICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCi0gICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZEZpbmlzaAotICAgIH0pOwotfQotCi1URVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25z
ZU5vRmlsZW5hbWUpCi17Ci0gICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+IgotICAgICJm
dW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7IgotICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdhJyk7IgotICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCi0g
ICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKLSAgICAiICAgIGEuY2xp
Y2soKTsiCi0gICAgIn0iCi0gICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9i
KCknPjwvYm9keT4iOwotICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOwotICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07Ci0gICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7Ci0gICAg
ICAgIEVYUEVDVF9OVUxMKGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSk7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKLSAgICB9OwotICAg
IGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgewotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVt
ZSwgImJsb2IiKTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1
cml0eU9yaWdpbi5ob3N0LCAid2Via2l0Lm9yZyIpOwotICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwotICAgIH07Ci0gICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKLSAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Ci0gICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOwotICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJVbmtub3duIik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG5pbCk7Ci0gICAgICAgIGRvbmUgPSB0cnVlOwotICAgIH07Ci0gICAgVXRpbDo6cnVuKCZk
b25lKTsKLSAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Ci0gICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
Ci0gICAgfSk7Ci19Ci0KLVRFU1QoV0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQotewot
ICAgIGNvbnN0IGNoYXIqIGdyYW5kY2hpbGRGcmFtZUhUTUwgPSAiPHNjcmlwdD4iCi0gICAgImZ1
bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCi0gICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKTsiCi0gICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKLSAg
ICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgotICAgICIgICAgYS5jbGlj
aygpOyIKLSAgICAifSIKLSAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2Io
KSc+PC9ib2R5PiI7Ci0gICAgSFRUUFNlcnZlciBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIoewotICAg
ICAgICB7ICIvIiwgeyBncmFuZGNoaWxkRnJhbWVIVE1MIH0gfQotICAgIH0pOwotICAgIEhUVFBT
ZXJ2ZXIgY2hpbGRGcmFtZVNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFt
ZT4iLCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXSB9IH0KLSAgICB9KTsKLSAgICBOU1VS
TFJlcXVlc3QgKmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBncmFuZGNoaWxkRnJhbWVT
ZXJ2ZXIucmVxdWVzdCgpOwotICAgIE5TVVJMUmVxdWVzdCAqY2hpbGRGcmFtZVNlcnZlclJlcXVl
c3QgPSBjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsKLSAgICB1aW50MTZfdCBncmFuZGNoaWxk
RnJhbWVTZXJ2ZXJQb3J0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKTsKLQotICAgIE5T
U3RyaW5nICptYWluSFRNTCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBz
cmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBv
cnQoKV07Ci0KLSAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKLSAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl1dOwotCi0gICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25z
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkp
IHsKLSAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl0KLSAgICAgICAgICAgIHx8IFtyZXNw
b25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJh
bWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10KLSAgICAgICAgICAgIHx8IFtyZXNw
b25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hp
bGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nXSkKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkKTsKLSAgICB9OwotICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewotICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKLSAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3
LjAuMC4xIik7Ci0gICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmln
aW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9ydCk7Ci0gICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgfTsKLSAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OwotICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKLSAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7Ci0gICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgIlVua25vd24iKTsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobmlsKTsKLSAgICAgICAgZG9uZSA9IHRydWU7Ci0gICAgfTsKLSAgICBVdGlsOjpy
dW4oJmRvbmUpOwotICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKLSAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9u
LAotICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCi0gICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCi0gICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKLSAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCi0gICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uCi0gICAgfSk7Ci19Ci0KLX0KLQogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCmluZGV4IGIxYjE0NGZlYWM5
YzdhYWQyYzJhMmJhMTZkMjY4MGUyNmM5OTQ2MDAuLmYwMDNhYzI4Y2UxZTg5NjdmNWRhYjBkODg4
Y2M3ODY4NzUxMTY1NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KQEAgLTMyNiw3ICszMjYsNyBAQCAt
ICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KE5TU3RyaW5nICopa2V5UGF0aCBvZk9iamVj
dDooaWQpb2JqZWN0IGNoYW5nZTooTgogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgaWYgKG1fc3RhcnRU
eXBlID09IERvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQpCi0gICAgICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
KTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkKTsKICAgICBlbHNlCiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRl
eCAyY2ZmYzlhNzA5ZjU1MGRmYTFkZDVjMzFkYjIyOTgyYjRhZTBkMWM2Li45NzU4N2Q2NTA3MjNk
MDJlM2VhZWNmYmI1MTQzOGE5OWU0NzkyMzgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBA
IC0xMzcyLDggKzEzNzIsNiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0QmxhbmtT
dWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogICAgICAgICBbd2ViVmlldyBjYWxsQXN5
bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVudHM6bmlsIGluRnJh
bWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSk7CiAgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7Ci0gICAg
ICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUiAl
QCIsIGVycm9yKTsKICAgICAgICAgICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImluLWFwcC1icm93c2VyOi8v
YXBwbGUuY29tL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFt
ZSJdKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmlu
ZGV4IDRlZTE5MjY3YjMwMDBmODk1YTk4ZDMwOTUxNzg5ZTlmOTZjZDZhYjUuLmE3ZDRlNTNhMzUx
NzkyNDVkMWU5MDQwYzNlYTU2ZTNhMDgyMjNmY2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQpAQCAtMTY2LDcgKzE2Niw3IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpCiAKIC0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lz
aW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRDb252ZXJ0VG9Eb3dubG9h
ZCA/IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29udmVy
dFRvRG93bmxvYWQgPyBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCA6
IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4IGRmZTFkMzhj
NjZjNDhmZmNjODg1ZjgzMWZjMzAyZmI5NDk3YjUzNzMuLmFlMmJjN2ZlNjY1MzRkNjc5YTQ4ZmI0
MWY2MTNmM2UwOGEwODAxYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVChRdWlja0xv
b2ssIENhbmNlbFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ss
IERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVk
RmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0Rv
Y3VtZW50VVJMIHJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkXSk7CiAgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0
KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAg
IEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2Us
IFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVs
ZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpAQCAtMzc5LDcgKzM3OSw3IEBAIFRFU1QoUXVp
Y2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiAjaWYgUExBVEZP
Uk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEzMDQwMAogVEVT
VChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2Vz
RG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
UXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9j
dW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVz
cG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsK
ICAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKICAgICBFWFBFQ1RfRVEoV2Vi
S2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2
aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlz
aE5hdmlnYXRpb25dKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25s
b2FkRGVsZWdhdGUuaAppbmRleCAzMDkzNzUwMzk3MzNlY2I5NjA3YTViMDI4MjQwNTk1Yzg4ZjU1
NGU3Li43YWFkMjNjM2VjNWI0MjE3NTFlZGM4NDAwYzBhMGVhNjBiOGM0ODViIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0yNCwz
NSArMjQsMTcgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxX
ZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogCi1lbnVtIGNsYXNzIERvd25sb2FkQ2FsbGJh
Y2sgOiB1aW50OF90IHsKLSAgICBXaWxsUmVkaXJlY3QsCi0gICAgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsCi0gICAgRGVjaWRlRGVzdGluYXRpb24sCi0gICAgRGlkV3JpdGVEYXRhLAotICAgIERp
ZEZpbmlzaCwKLSAgICBEaWRGYWlsV2l0aEVycm9yLAotICAgIE5hdmlnYXRpb25BY3Rpb25CZWNh
bWVEb3dubG9hZCwKLSAgICBOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKLSAgICBO
YXZpZ2F0aW9uQWN0aW9uLAotICAgIE5hdmlnYXRpb25SZXNwb25zZSwKLX07Ci0KLUBpbnRlcmZh
Y2UgVGVzdERvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxXS0Rvd25sb2FkRGVsZWdhdGUsIFdL
TmF2aWdhdGlvbkRlbGVnYXRlPgotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKShXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3Bv
bnNlICosIE5TVVJMUmVxdWVzdCAqLCB2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kp
KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKShXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKShXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXikoTlNVUkwgKikpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKFdLRG93bmxvYWQgKiwgaW50NjRfdCwgaW50NjRfdCwg
aW50NjRfdCk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlk
RmluaXNoKShXS0Rvd25sb2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kaWRGYWlsV2l0aEVycm9yKShXS0Rvd25sb2FkICosIE5TRXJyb3IgKiwgTlNEYXRhICopOwot
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXm5hdmlnYXRpb25BY3Rpb25EaWRC
ZWNvbWVEb3dubG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS0Rvd25s
b2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIFdLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCB2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKShXS05hdmlnYXRp
b25SZXNwb25zZSAqLCB2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpOwotCi0t
ICh2b2lkKXdhaXRGb3JEb3dubG9hZERpZEZpbmlzaDsKLS0gKFZlY3RvcjxEb3dubG9hZENhbGxi
YWNrPil0YWtlQ2FsbGJhY2tSZWNvcmQ7Ci0KK0BpbnRlcmZhY2UgVGVzdERvd25sb2FkRGVsZWdh
dGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgorQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwp
KF9XS0Rvd25sb2FkICosIE5TVVJMICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93
bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShf
V0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFp
bFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwg
dm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRl
bnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURl
c3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKIEBlbmQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCmluZGV4IDA1MzA5
MzczNTE2MDM0MTJkZWFiNDJjNjhmZGM3MWNhZjBlZGI5NGMuLjFkYjVjZDgxMWFiNmY1ZDk5YjQx
M2U2ZDIxYWFhMzAyYTgwMWZkZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQpAQCAtMjYsMTEzICsyNiw2OCBAQAogI2ltcG9ydCAi
Y29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgogCi0jaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CitAaW1wbGVtZW50YXRpb24gVGVz
dERvd25sb2FkRGVsZWdhdGUKIAotQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERlbGVnYXRl
IHsKLSAgICBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4gX2NhbGxiYWNrUmVjb3JkOworLSAodm9p
ZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChf
ZG93bmxvYWREaWRTdGFydCkKKyAgICAgICAgX2Rvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOwog
fQogCi0tICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyCistICh2b2lkKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwg
Kil1cmwKIHsKLSAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Oldp
bGxSZWRpcmVjdCk7Ci0KLSAgICBBU1NFUlQoX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTsK
LSAgICBfd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oZG93bmxvYWQsIHJlc3BvbnNlLCByZXF1
ZXN0LCBkZWNpc2lvbkhhbmRsZXIpOworICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwpCisgICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwg
dXJsKTsKIH0KIAotLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2Ugc3VnZ2Vz
dGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TVVJMICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZToo
TlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCiB7Ci0gICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7Ci0KLSAgICBBU1NFUlQoX2RlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKTsKLSAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSwgY29tcGxldGlvbkhh
bmRsZXIpOworICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAgICBfZGlkUmVjZWl2
ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7CiB9CiAKLS0gKHZvaWQpZG93bmxvYWQ6KFdL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRv
dGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQorLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOih1aW50NjRfdCli
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUKIHsKLSAgICAvLyBkaWRXcml0ZURhdGEgaXMgY2FsbGVkIGEgbm9uZGV0ZXJtaW5pc3Rp
YyBudW1iZXIgb2YgdGltZXMsIHNvIG9ubHkgcmVjb3JkIG9uY2UgaW4gYSBzZXJpZXMuCi0gICAg
aWYgKF9jYWxsYmFja1JlY29yZC5pc0VtcHR5KCkgfHwgX2NhbGxiYWNrUmVjb3JkLmxhc3QoKSAh
PSBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEpCi0gICAgICAgIF9jYWxsYmFja1JlY29y
ZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKTsKLQogICAgIGlmIChfZGlk
V3JpdGVEYXRhKQogICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4s
IHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAotLSAo
dm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClfZG93
bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlv
bkhhbmRsZXIKIHsKLSAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKLQotICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQotICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBlbHNlCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nLCBuaWwpOworICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotLSAo
dm9pZClkb3dubG9hZERpZEZpbmlzaDooV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKV9k
b3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIF9jYWxsYmFj
a1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoKTsKLQogICAgIGlmIChf
ZG93bmxvYWREaWRGaW5pc2gpCiAgICAgICAgIF9kb3dubG9hZERpZEZpbmlzaChkb3dubG9hZCk7
CiB9CiAKLS0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YQor
LSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yCiB7Ci0gICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9h
ZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yKTsKLQogICAgIGlmIChfZGlkRmFpbFdpdGhFcnJv
cikKLSAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yLCByZXN1bWVEYXRh
KTsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGlkQmVjb21lRG93
bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZAotewotICAgIF9jYWxsYmFja1JlY29yZC5hcHBl
bmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2FkKTsKLQot
ICAgIGlmIChfbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKQotICAgICAgICBfbmF2
aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKHdlYlZpZXcsIG5hdmlnYXRpb25BY3Rpb24s
IGRvd25sb2FkKTsKKyAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yKTsK
IH0KIAotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNw
b25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21l
RG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZAorLSAodm9pZClfZG93bmxvYWREaWRDYW5j
ZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5k
KERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkKTsKLQot
ICAgIGlmIChfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCi0gICAgICAgIF9u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBuYXZpZ2F0aW9uUmVz
cG9uc2UsIGRvd25sb2FkKTsKLX0KLQotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCi17Ci0gICAgX2NhbGxiYWNrUmVj
b3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UpOwotCi0gICAg
aWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpCi0gICAgICAgIF9kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UobmF2aWdhdGlvblJlc3BvbnNlLCBkZWNpc2lvbkhh
bmRsZXIpOwotICAgIGVsc2UKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIGlmIChfZG93bmxvYWREaWRDYW5jZWwp
CisgICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKKy0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIF9jYWxs
YmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbik7Ci0K
LSAgICBpZiAoX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pCi0gICAgICAgIF9kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24sIGRlY2lzaW9uSGFu
ZGxlcik7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAg
ICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5n
ZSwgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGVsc2UKLSAgICAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKLX0KLQotLSAodm9pZCl3YWl0Rm9yRG93
bmxvYWREaWRGaW5pc2gKLXsKLSAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKLSAg
ICBBU1NFUlQoIV9kb3dubG9hZERpZEZpbmlzaCk7Ci0gICAgX2Rvd25sb2FkRGlkRmluaXNoID0g
XihXS0Rvd25sb2FkICopIHsKLSAgICAgICAgZmluaXNoZWQgPSB0cnVlOwotICAgIH07Ci0gICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBu
aWwpOwogfQogCi0tIChWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVjb3Jk
CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0
aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgogewotICAgIHJldHVybiBzdGQ6OmV4Y2hh
bmdlKF9jYWxsYmFja1JlY29yZCwgeyB9KTsKKyAgICBpZiAoX2RpZENyZWF0ZURlc3RpbmF0aW9u
KQorICAgICAgICBfZGlkQ3JlYXRlRGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsK
IH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTEy
NDYxZWExMmM5Y2FkYTYxNWQxZTJjNGE1NzMxZjFkMTVkMTNkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+Ci0jaW1wb3J0IDxXZWJLaXQv
X1dLRG93bmxvYWREZWxlZ2F0ZS5oPgotCi1AaW50ZXJmYWNlIFRlc3RMZWdhY3lEb3dubG9hZERl
bGVnYXRlIDogTlNPYmplY3Q8X1dLRG93bmxvYWREZWxlZ2F0ZT4KLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRTdGFydCkoX1dLRG93bmxvYWQgKik7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKShfV0tEb3dubG9hZCAqLCBOU1VSTCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNlKShfV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKF9X
S0Rvd25sb2FkICosIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOwotQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSkoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJpbmcg
KikpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlz
aCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZEZhaWxXaXRoRXJyb3IpKF9XS0Rvd25sb2FkICosIE5TRXJyb3IgKik7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkQ2FuY2VsKShfV0tEb3dubG9hZCAqKTsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKShfV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsKikpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDcmVh
dGVEZXN0aW5hdGlvbikoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKik7Ci1AZW5kCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc3YTkyNGJkZmU2OTVlMGI3OTE1
Yjk1ZWZlOWYwNWRiZjFjYTA4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERl
bGVnYXRlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCIK
LQotQGltcGxlbWVudGF0aW9uIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlCi0KLS0gKHZvaWQp
X2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICBpZiAoX2Rv
d25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsKLX0K
LQotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCi17Ci0gICAgaWYgKF9kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KGRvd25sb2FkLCB1cmwpOwotfQotCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQotewot
ICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNl
KGRvd25sb2FkLCByZXNwb25zZSk7Ci19Ci0KLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0
ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCi17Ci0gICAgaWYgKF9k
aWRXcml0ZURhdGEpCi0gICAgICAgIF9kaWRXcml0ZURhdGEoZG93bmxvYWQsIGJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwotfQotCi0t
ICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9u
KSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKLX0KLQotLSAo
dm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICBp
ZiAoX2Rvd25sb2FkRGlkRmluaXNoKQotICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxv
YWQpOwotfQotCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRG
YWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBpZiAoX2RpZEZhaWxXaXRoRXJy
b3IpCi0gICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7Ci19Ci0KLS0g
KHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCi17Ci0gICAg
aWYgKF9kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgX2Rvd25sb2FkRGlkQ2FuY2VsKGRvd25s
b2FkKTsKLX0KLQotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5k
bGVyCi17Ci0gICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAg
ICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5n
ZSwgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7
Ci19Ci0KLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0
ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uCi17Ci0gICAgaWYgKF9kaWRDcmVh
dGVEZXN0aW5hdGlvbikKLSAgICAgICAgX2RpZENyZWF0ZURlc3RpbmF0aW9uKGRvd25sb2FkLCBk
ZXN0aW5hdGlvbik7Ci19Ci0KLUBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKaW5kZXggODliYTMzYTFhNjdmNTdiMWQwOWFiOGM1OTNmNTMwMWVhMTk1NjhlYi4u
MGM2YzY1MTQxN2MyMTZiZjc3MzBhZGE3N2I3MTA2ZDkwZmJhMjYzMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQwLDggKzQwLDYgQEAKICNpbmNsdWRl
IDxXZWJLaXQvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ3JlZGVudGlhbC5oPgotI2lu
Y2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLRG93
bmxvYWRSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFtZUhhbmRsZVJlZi5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS0ZyYW1lSW5mb1JlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0hUVFBDb29r
aWVTdG9yZVJlZi5oPgpAQCAtODIsNyArODAsNiBAQAogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5l
ZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KLSNpbmNsdWRlIDx3dGYvRmlsZVN5
c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nl
c3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTM1LDMzICsx
MzIsNiBAQCBzdGF0aWMgV0tTdHJpbmdSZWYgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiTUlIRk1IRXdYREFOQmdrcWhraUc5dzBCQVFFRkFBTkxBREJJQWtF
QW5YMFRJTEpyT01VdWUlMkJQdHdCUkU2WGZWJTBBV3RLUWJzc2h4azVaaGNVd2N3eXZjbklxOWI4
MlFoSmRvQUNkRDM0cnFmQ0FJTkQ0NmZYS1FVbmIwbXZLelFJRCUwQUFRQUJGaEZOYjNwcGJHeGhT
WE5OZVVaeWFXVnVaREFOQmdrcWhraUc5dzBCQVFRRkFBTkJBQUt2MkVleDJuJTJGUyUwQXIlMkY3
aUpOcm9XbFN6U010VGlRVEVCJTJCQURXSEdqOXUxeHJVck9pbHElMkZvMmN1UXhJZlpjTlprWUFr
V1A0RHVicVclMEFpMCUyRiUyRnJnQnZtY28lM0QiKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6bmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkU3RhcnQo
ZG93bmxvYWQpOwotCi0gICAgV0tEb3dubG9hZENsaWVudFYwIGNsaWVudCB7Ci0gICAgICAgIHsg
MCwgY2xpZW50SW5mbyB9LAotICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RUb1VSTCwKLSAgICAgICAgbnVsbHB0ciwgLy8gZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCi0gICAgICAgIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKLSAgICAgICAgbnVsbHB0ciwgLy8gZGlkV3Jp
dGVEYXRhCi0gICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaCwKLSAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbAotICAgIH07Ci0KLSAgICBXS0Rvd25s
b2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOwotfQotCi12b2lkIFRlc3RDb250
cm9sbGVyOjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05h
dmlnYXRpb25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKGRvd25s
b2FkLCBjbGllbnRJbmZvKTsKLX0KLQotdm9pZCBUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJl
ZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAg
ICBuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQoZG93bmxvYWQsIGNsaWVudEluZm8p
OwotfQotCiBBc3luY1Rhc2sqIEFzeW5jVGFzazo6bV9jdXJyZW50VGFzazsKIAogYm9vbCBBc3lu
Y1Rhc2s6OnJ1bigpCkBAIC0zNjYsNzIgKzMzNiw3MiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNv
bgogCiAgICAgV0tQYWdlVUlDbGllbnRWOCBvdGhlclBhZ2VVSUNsaWVudCA9IHsKICAgICAgICAg
eyA4LCB2aWV3IH0sCi0gICAgICAgIG51bGxwdHIsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMAotICAgICAgICBudWxscHRyLCAvLyBzaG93UGFnZQorICAgICAgICAwLCAv
LyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgMCwgLy8gc2hv
d1BhZ2UKICAgICAgICAgY2xvc2VPdGhlclBhZ2UsCi0gICAgICAgIG51bGxwdHIsIC8vIHRha2VG
b2N1cworICAgICAgICAwLCAvLyB0YWtlRm9jdXMKICAgICAgICAgZm9jdXMsCiAgICAgICAgIHVu
Zm9jdXMsCi0gICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwCi0gICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVy
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIG51bGxwdHIsIC8vIHNldFN0YXR1c1Rl
eHQKLSAgICAgICAgbnVsbHB0ciwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMAotICAgICAgICBudWxscHRyLCAvLyBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xp
Y2tlZAotICAgICAgICBudWxscHRyLCAvLyBkaWROb3RIYW5kbGVLZXlFdmVudAotICAgICAgICBu
dWxscHRyLCAvLyBkaWROb3RIYW5kbGVXaGVlbEV2ZW50Ci0gICAgICAgIG51bGxwdHIsIC8vIHRv
b2xiYXJzQXJlVmlzaWJsZQotICAgICAgICBudWxscHRyLCAvLyBzZXRUb29sYmFyc0FyZVZpc2li
bGUKLSAgICAgICAgbnVsbHB0ciwgLy8gbWVudUJhcklzVmlzaWJsZQotICAgICAgICBudWxscHRy
LCAvLyBzZXRNZW51QmFySXNWaXNpYmxlCi0gICAgICAgIG51bGxwdHIsIC8vIHN0YXR1c0Jhcklz
VmlzaWJsZQotICAgICAgICBudWxscHRyLCAvLyBzZXRTdGF0dXNCYXJJc1Zpc2libGUKLSAgICAg
ICAgbnVsbHB0ciwgLy8gaXNSZXNpemFibGUKLSAgICAgICAgbnVsbHB0ciwgLy8gc2V0SXNSZXNp
emFibGUKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAKKyAgICAgICAgMCwgLy8gc2V0U3RhdHVzVGV4dAorICAgICAgICAwLCAvLyBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIDAsIC8vIG1p
c3NpbmdQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZUtleUV2
ZW50CisgICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQKKyAgICAgICAgMCwgLy8g
dG9vbGJhcnNBcmVWaXNpYmxlCisgICAgICAgIDAsIC8vIHNldFRvb2xiYXJzQXJlVmlzaWJsZQor
ICAgICAgICAwLCAvLyBtZW51QmFySXNWaXNpYmxlCisgICAgICAgIDAsIC8vIHNldE1lbnVCYXJJ
c1Zpc2libGUKKyAgICAgICAgMCwgLy8gc3RhdHVzQmFySXNWaXNpYmxlCisgICAgICAgIDAsIC8v
IHNldFN0YXR1c0JhcklzVmlzaWJsZQorICAgICAgICAwLCAvLyBpc1Jlc2l6YWJsZQorICAgICAg
ICAwLCAvLyBzZXRJc1Jlc2l6YWJsZQogICAgICAgICBnZXRXaW5kb3dGcmFtZSwKICAgICAgICAg
c2V0V2luZG93RnJhbWUsCiAgICAgICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCwKLSAg
ICAgICAgbnVsbHB0ciwgLy8gZGlkRHJhdwotICAgICAgICBudWxscHRyLCAvLyBwYWdlRGlkU2Ny
b2xsCi0gICAgICAgIG51bGxwdHIsIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICAw
LCAvLyBkaWREcmF3CisgICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwKKyAgICAgICAgMCwgLy8g
ZXhjZWVkZWREYXRhYmFzZVF1b3RhCiAgICAgICAgIHJ1bk9wZW5QYW5lbCwKICAgICAgICAgZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKLSAgICAgICAgbnVsbHB0
ciwgLy8gaGVhZGVySGVpZ2h0Ci0gICAgICAgIG51bGxwdHIsIC8vIGZvb3RlckhlaWdodAotICAg
ICAgICBudWxscHRyLCAvLyBkcmF3SGVhZGVyCi0gICAgICAgIG51bGxwdHIsIC8vIGRyYXdGb290
ZXIKKyAgICAgICAgMCwgLy8gaGVhZGVySGVpZ2h0CisgICAgICAgIDAsIC8vIGZvb3RlckhlaWdo
dAorICAgICAgICAwLCAvLyBkcmF3SGVhZGVyCisgICAgICAgIDAsIC8vIGRyYXdGb290ZXIKICAg
ICAgICAgcHJpbnRGcmFtZSwKICAgICAgICAgcnVuTW9kYWwsCi0gICAgICAgIG51bGxwdHIsIC8v
IGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQotICAgICAgICBudWxscHRyLCAvLyBz
YXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCi0gICAgICAgIG51bGxwdHIsIC8vIHNob3Vs
ZEludGVycnVwdEphdmFTY3JpcHQKLSAgICAgICAgbnVsbHB0ciwgLy8gY3JlYXRlTmV3UGFnZV9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYxCi0gICAgICAgIG51bGxwdHIsIC8vIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50Ci0gICAgICAgIG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0Ci0gICAgICAgIG51bGxwdHIsIC8vIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCi0gICAgICAgIG51bGxwdHIsIC8v
IHNob3dDb2xvclBpY2tlcgotICAgICAgICBudWxscHRyLCAvLyBoaWRlQ29sb3JQaWNrZXIKLSAg
ICAgICAgbnVsbHB0ciwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCi0gICAgICAg
IG51bGxwdHIsIC8vIHBpbm5lZFN0YXRlRGlkQ2hhbmdlCi0gICAgICAgIG51bGxwdHIsIC8vIGRp
ZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcwotICAgICAgICBudWxscHRyLCAv
LyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcwotICAgICAgICBudWxscHRyLCAvLyBkaWRDYW5j
ZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCi0gICAgICAgIG51bGxwdHIsIC8vIGlz
UGxheWluZ0F1ZGlvRGlkQ2hhbmdlCisgICAgICAgIDAsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFu
ZEZvck1haW5GcmFtZQorICAgICAgICAwLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyCisgICAgICAgIDAsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKKyAgICAgICAgMCwg
Ly8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAgIDAsIC8vIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50CisgICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvck5vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAgIDAsIC8vIHNob3dD
b2xvclBpY2tlcgorICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKKyAgICAgICAgMCwgLy8g
dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIDAsIC8vIHBpbm5lZFN0YXRl
RGlkQ2hhbmdlCisgICAgICAgIDAsIC8vIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91
c2VQcmVzcworICAgICAgICAwLCAvLyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcworICAgICAg
ICAwLCAvLyBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCisgICAgICAg
IDAsIC8vIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlCiAgICAgICAgIGRlY2lkZVBvbGljeUZvclVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LAotICAgICAgICBudWxscHRyLCAvLyBkaWRDbGlja0F1
dG9maWxsQnV0dG9uCi0gICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAotICAg
ICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICBudWxscHRyLCAv
LyBydW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAgICAgIG51bGxwdHIsIC8vIHVudXNlZDUKKyAgICAg
ICAgMCwgLy8gZGlkQ2xpY2tBdXRvZmlsbEJ1dHRvbgorICAgICAgICAwLCAvLyBydW5KYXZhU2Ny
aXB0QWxlcnQKKyAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KKyAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICAwLCAvLyB1bnVzZWQ1CiAgICAgICAgIGNy
ZWF0ZU90aGVyUGFnZSwKICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0LAotICAgICAgICBudWxs
cHRyLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICBudWxscHRyLCAvLyBydW5KYXZh
U2NyaXB0UHJvbXB0CisgICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCisgICAgICAg
IDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNz
aW9uRm9yT3JpZ2luLAotICAgICAgICBudWxscHRyLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwKLSAgICAgICAgbnVsbHB0ciwgLy8gZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lCisg
ICAgICAgIDAsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAorICAgICAgICAwLCAvLyBm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUKICAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2NrLAot
ICAgICAgICBudWxscHRyLCAvLyBkaWRMb3NlUG9pbnRlckxvY2sKKyAgICAgICAgMCwKICAgICB9
OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQYWdlVUlDbGllbnQu
YmFzZSk7CiAgICAgCkBAIC00NDAsMTYgKzQxMCwxNiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNv
bgogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIGRlY2lkZVBvbGljeUZvclBs
dWdpbkxvYWQsCi0gICAgICAgIG51bGxwdHIsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0
aW9uCisgICAgICAgIDAsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiAgICAgICAg
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiwKLSAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgotICAgICAgICBudWxs
cHRyLCAvLyBkaWRDb21taXROYXZpZ2F0aW9uCi0gICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlz
aE5hdmlnYXRpb24KLSAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbE5hdmlnYXRpb24KLSAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKLSAgICAgICAg
bnVsbHB0ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCi0gICAgICAgIG51bGxwdHIsIC8vIGRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KLSAgICAgICAgbnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJv
Z3Jlc3NEaWRDaGFuZ2UKKyAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bgorICAgICAgICAwLCAvLyBkaWRDb21taXROYXZpZ2F0aW9uCisgICAgICAgIDAsIC8vIGRpZEZp
bmlzaE5hdmlnYXRpb24KKyAgICAgICAgMCwgLy8gZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAg
MCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKKyAgICAgICAgMCwgLy8gZGlk
RmluaXNoRG9jdW1lbnRMb2FkCisgICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b24KKyAgICAgICAgMCwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKICAgICAgICAgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9jZXNzRGlkQ3Jhc2gsCkBAIC00NTgs
MTIgKzQyOCw5IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBs
YXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAgICAgICAgIHdpbGxFbmROYXZp
Z2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAgICAgICAg
IGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QsCi0gICAgICAgIG51bGxwdHIsIC8v
IHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKLSAgICAgICAgbnVsbHB0ciwgLy8gY29udGVudFJ1bGVM
aXN0Tm90aWZpY2F0aW9uCi0gICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcsCi0gICAgICAgIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCwKLSAgICAg
ICAgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQsCi0gICAgICAgIG51bGxwdHIg
Ly8gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZAorICAgICAgICAwLCAvLyB3ZWJQcm9jZXNz
RGlkVGVybWluYXRlCisgICAgICAgIDAsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgor
ICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nCiAgICAgfTsKICAg
ICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChuZXdQYWdlLCAmcGFnZU5hdmlnYXRpb25D
bGllbnQuYmFzZSk7CiAKQEAgLTc4MywxNiArNzUwLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JQbHVnaW5M
b2FkLAotICAgICAgICBudWxscHRyLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgor
ICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24sCi0gICAgICAgIG51
bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgMCwgLy8gZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBkaWRDb21taXROYXZpZ2F0aW9uLAog
ICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uLAotICAgICAgICBudWxscHRyLCAvLyBkaWRGYWls
TmF2aWdhdGlvbgotICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5T
dWJmcmFtZQotICAgICAgICBudWxscHRyLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKLSAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbgotICAgICAgICBudWxscHRy
LCAvLyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZQorICAgICAgICAwLCAvLyBkaWRGYWlsTmF2
aWdhdGlvbgorICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQor
ICAgICAgICAwLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKKyAgICAgICAgMCwgLy8gZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbgorICAgICAgICAwLCAvLyByZW5kZXJpbmdQcm9ncmVzc0RpZENo
YW5nZQogICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlLAogICAg
ICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCiAgICAgICAgIHByb2Nlc3NE
aWRDcmFzaCwKQEAgLTgwMSwxNCArNzY4LDI4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0
ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAg
d2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRFbmROYXZpZ2F0aW9uR2VzdHVy
ZSwKICAgICAgICAgZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCwKLSAgICAgICAg
bnVsbHB0ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQotICAgICAgICBudWxscHRyLCAvLyBj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KLSAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZywKLSAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25s
b2FkLAotICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCwKLSAgICAg
ICAgbnVsbHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkCisgICAgICAgIDAsIC8v
IHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKKyAgICAgICAgMCwgLy8gY29udGVudFJ1bGVMaXN0Tm90
aWZpY2F0aW9uCisgICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcK
ICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KG1fbWFpbldlYlZpZXct
PnBhZ2UoKSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOworCisgICAgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRWMSBkb3dubG9hZENsaWVudCA9IHsKKyAgICAgICAgeyAxLCB0aGlzIH0sCisg
ICAgICAgIGRvd25sb2FkRGlkU3RhcnQsCisgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZQorICAgICAgICAwLCAvLyBkaWRSZWNlaXZlUmVzcG9uc2UKKyAgICAg
ICAgMCwgLy8gZGlkUmVjZWl2ZURhdGEKKyAgICAgICAgMCwgLy8gc2hvdWxkRGVjb2RlU291cmNl
RGF0YU9mTUlNRVR5cGUKKyAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUsCisgICAgICAgIDAsIC8vIGRpZENyZWF0ZURlc3RpbmF0aW9uCisgICAgICAgIGRvd25s
b2FkRGlkRmluaXNoLAorICAgICAgICBkb3dubG9hZERpZEZhaWwsCisgICAgICAgIGRvd25sb2Fk
RGlkQ2FuY2VsLAorICAgICAgICAwLCAvLyBwcm9jZXNzRGlkQ3Jhc2g7CisgICAgICAgIGRvd25s
b2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwKKyAgICB9OworICAgIFdLQ29udGV4dFNl
dERvd25sb2FkQ2xpZW50KGNvbnRleHQoKSwgJmRvd25sb2FkQ2xpZW50LmJhc2UpOwogICAgIAog
ICAgIC8vIHRoaXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8KICAgICBXS1BhZ2VJ
bmplY3RlZEJ1bmRsZUNsaWVudFYxIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewpAQCAtMjA5OCwz
NSArMjA3OSw0NSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVudAogfQogCiAKLS8vIFdLRG93bmxv
YWRDbGllbnQKKy8vIFdLQ29udGV4dERvd25sb2FkQ2xpZW50CisKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVz
dENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlk
U3RhcnQoY29udGV4dCwgZG93bmxvYWQpOworfQogICAgIAotV0tTdHJpbmdSZWYgVGVzdENvbnRy
b2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENv
bnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFt
ZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb250ZXh0
LCBkb3dubG9hZCwgZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgc3VnZ2Vz
dGVkRmlsZW5hbWUpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlzaChjb250ZXh0LCBkb3dubG9h
ZCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0g
ICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSktPmRvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRG
YWlsKGNvbnRleHQsIGRvd25sb2FkLCBlcnJvcik7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OmRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9y
LCBXS0RhdGFSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRG
YWlsKGRvd25sb2FkLCBlcnJvcik7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkQ2FuY2VsKGNvbnRleHQs
IGRvd25sb2FkKTsKIH0KIAotYm9vbCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNl
UmVmLCBXS1VSTFJlcXVlc3RSZWYgbmV3UmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVm
IHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2Fk
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQsIG5ld1JlcXVlc3QpOworICAg
IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGNvbnRleHQsIGRvd25s
b2FkLCB1cmwpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdL
RG93bmxvYWRSZWYgZG93bmxvYWQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0
YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQogewogICAg
IGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVkLlxuIik7CiB9CiAKLVdLU3RyaW5n
UmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSkKK1dLU3RyaW5n
UmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29s
KiYgYWxsb3dPdmVyd3JpdGUpCiB7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gdG9X
VEZTdHJpbmcoZmlsZW5hbWUpOwogCkBAIC0yMTQyLDMzICsyMTMzLDI4IEBAIFdLU3RyaW5nUmVm
IFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
S0Rvd25sb2FkUmVmCiAgICAgaWYgKCFkdW1wUmVuZGVyVHJlZVRlbXApCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCisgICAgKmFsbG93T3ZlcndyaXRlID0gdHJ1ZTsKICAgICBTdHJpbmcgdGVt
cG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwogICAg
IGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHN1Z2dlc3RlZEZpbGVu
YW1lID0gIlVua25vd24iOwotICAgIAotICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHRlbXBvcmFy
eUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIGlmIChGaWxlU3lzdGVtOjpm
aWxlRXhpc3RzKGRlc3RpbmF0aW9uKSkKLSAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShk
ZXN0aW5hdGlvbik7CiAKLSAgICByZXR1cm4gdG9XSyhkZXN0aW5hdGlvbikubGVha1JlZigpOwor
ICAgIHJldHVybiB0b1dLKHRlbXBvcmFyeUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1l
KS5sZWFrUmVmKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNo
KFdLRG93bmxvYWRSZWYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCiB7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxv
YWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIkRv
d25sb2FkIGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlmeURv
d25sb2FkRG9uZSgpOwogfQogCi1ib29sIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVxdWVzdFJlZiByZXF1
ZXN0KQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVybCkKIHsKLSAg
ICBhdXRvIHVybCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weVVSTChyZXF1ZXN0KSk7CiAgICAg
aWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCi0gICAgICAgIG1fY3VycmVudEludm9j
YXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxvYWQgd2FzIHJlZGlyZWN0ZWQgdG8g
XCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKSksICJc
Ii5cbiIpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+
b3V0cHV0VGV4dChtYWtlU3RyaW5nKCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRv
V1RGU3RyaW5nKGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybCkpKSwgIlwiLlxuIikpOwogfQog
Ci12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tEb3dubG9hZFJlZiwgV0tF
cnJvclJlZiBlcnJvcikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJyb3IpCiB7CiAgICAgaWYgKG1f
c2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpIHsKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlv
bi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgZmFpbGVkLlxuIl9zKTsKQEAgLTIxODIsNiArMjE2OCwx
MyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tEb3dubG9hZFJlZiwg
V0tFcnJvclJlZiBlcnJvcikKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9h
ZERvbmUoKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tD
b250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQoreworICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2Fk
Q2FsbGJhY2tzKQorICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3du
bG9hZCBjYW5jZWxsZWQuXG4iKTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3du
bG9hZERvbmUoKTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6cHJvY2Vzc0RpZENyYXNoKCkK
IHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2hl
biBjcmFzaCBsb2dzIGFyZSBiZWluZyBzYXZlZCBvbiBXaW5kb3dzLCBzbwpAQCAtMjUxMSw3ICsy
NTA0LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWcKICAgICBhdXRvIGRlY2lzaW9uRnVuY3Rp
b24gPSBbc2hvdWxkSWdub3JlLCByZXRhaW5lZExpc3RlbmVyLCByZXRhaW5lZE5hdmlnYXRpb25B
Y3Rpb24sIHNob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9z
aG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiwgc2hvdWxkU3dhcFRv
RGVmYXVsdFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91bGRTd2FwVG9EZWZhdWx0U2Vz
c2lvbk9uTmV4dE5hdmlnYXRpb25dKCkgewogICAgICAgICBpZiAoc2hvdWxkSWdub3JlKQogICAg
ICAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKHJldGFpbmVkTGlzdGVuZXIuZ2V0
KCkpOwotICAgICAgICBlbHNlIGlmIChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJp
YnV0ZShyZXRhaW5lZE5hdmlnYXRpb25BY3Rpb24uZ2V0KCkpKQorICAgICAgICBlbHNlIGlmIChX
S05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQocmV0YWluZWROYXZpZ2F0aW9u
QWN0aW9uLmdldCgpKSkKICAgICAgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2Fk
KHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlm
IChzaG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiB8fCBzaG91bGRT
d2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24pIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiYjc1ZDUwNzAyYzNhNTNmMzlkZTE1ODFkY2M0ZDNi
MzM3Mzk2NGNiLi5kZGVjYTA4ODJhMzA5NmUzN2JmZDNlNzBmZWQ0ZTIyNzNkZDk2ZDI5IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC00NDQsMTkgKzQ0NCwxOSBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdlUmVm
LCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopOwogICAg
IHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZik7CiAK
LSAgICAvLyBXS0Rvd25sb2FkQ2xpZW50Ci0gICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvbkFjdGlv
bkRpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0Rv
d25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwg
V0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHN0YXRpYyB2b2lkIG5hdmlnYXRpb25E
aWRCZWNvbWVEb3dubG9hZFNoYXJlZChXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAg
dm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyBXS1N0cmlu
Z1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVm
LCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7Ci0gICAgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUpOwot
ICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZv
aWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYpOwotICAgIHN0
YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBXS0Rh
dGFSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2Fk
UmVmLCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0aWMgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLVVJMUmVx
dWVzdFJlZiwgY29uc3Qgdm9pZCopOwotICAgIGJvb2wgZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlcXVlc3RSZWYpOworICAgIC8vIFdL
Q29udGV4dERvd25sb2FkQ2xpZW50CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRTdGFydChX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25s
b2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKKyAgICBzdGF0aWMgV0tT
dHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0
UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVy
d3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSk7CisgICAgc3Rh
dGljIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBj
b25zdCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRS
ZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRv
d25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOwor
ICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0
UmVmLCBXS0Rvd25sb2FkUmVmKTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYs
IGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZik7CiAgICAgCiAgICAg
c3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyMDhmYmJlZGJjYTU3
MTI5NThmY2FmOTVmNWNkODA0NWU2MjZjZTgyLi40NjZiZmVmZjI0ZWMzMDllMGEzMmZjMzk0ZDBm
ODlkMGJjMWZlNTllIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMTItMDQgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJl
dmVydGluZyByMjcwNDIyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE5NTU0CisKKyAgICAgICAgRGVsZXRlZCBhbiBTUEkgdGhhdCBpcyBzdGlsbCBp
biB1c2UuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJJbnRyb2R1
Y2UgbmV3IGRvd25sb2FkIEFQSSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzc0NworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMjcwNDIyCisKIDIwMjAtMTItMDQgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5l
eUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3JlYXRlIEFQSSB0byBlbmFibGUvZGlzYWJsZSB0ZXh0
IGludGVyYWN0aW9uIGdlc3R1cmVzIGluIFdLV2ViVmlldwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9h
ZC1leHBlY3RlZC50eHQKaW5kZXggMzc1YzE5MTI5YWU2MWJhMDZlN2Q1NDhhODNhM2I4NmE3Njkw
YjY3ZC4uMDJhZjJkZTliMWM0YmNhYzU4NjJjMWRhNTZmYmI0YmU2YTE2ZDJhOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2Fk
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogRG93bmxvYWQg
c3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93
bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3du
Lmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJp
Z2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhl
dGljLWNsaWNrLWV4cGVjdGVkLnR4dAppbmRleCBjNTExNzc5NWE1OGMwOGZiZWUwNmNiMzk0MzFj
ZGMzMWQwZGI1OWE1Li5iZWRjOGRkYTAxYzhjMTIzN2UxMDZjNjg1MzM0MGYzNzk2ZjdjZWU3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3It
ZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQt
dXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUg
QEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmls
ZW5hbWUgIlVua25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxl
bmFtZSAidW5rbm93bi5odG1sIgogRG93bmxvYWQgY29tcGxldGVkLgogVGVzdCB0aGF0IHVzZXIg
dHJpZ2dlcmVkIHN5bnRoZXRpYyBjbGlja3Mgb24gYW4gYW5jaG9yIHdpdGggYSBkb3dubG9hZCBh
dHRyaWJ1dGUgYXJlIG5vdCBpZ25vcmVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxv
YWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5j
LWRlbGVnYXRlLWV4cGVjdGVkLnR4dAppbmRleCAxMjAyN2MzZTEwYWQ4YjBjMDFiZmE3YTYxMTI4
NmU4NTYyOGJlOTMxLi4xMTE0MGZkMjE4ODdiODUxMjBkYWIxODNmOWZkOWIzZDBmNDdhYzVlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3It
ZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxl
LWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKQEAg
LTEsNSArMSw1IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3Vn
Z2VzdGVkIGZpbGVuYW1lICJVbmtub3duIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVk
IGZpbGVuYW1lICJ1bmtub3duIgogRG93bmxvYWQgY29tcGxldGVkLgogVGhlIGRvd25sb2FkIHNo
b3VsZCBzdWNjZWVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUt
YmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dAppbmRleCAxMjAyN2MzZTEwYWQ4
YjBjMDFiZmE3YTYxMTI4NmU4NTYyOGJlOTMxLi4xMTE0MGZkMjE4ODdiODUxMjBkYWIxODNmOWZk
OWIzZDBmNDdhYzVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9y
RWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxl
LWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBE
b3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1l
ICJVbmtub3duIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtu
b3duIgogRG93bmxvYWQgY29tcGxldGVkLgogVGhlIGRvd25sb2FkIHNob3VsZCBzdWNjZWVkLgog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNo
b3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAppbmRleCAz
NzVjMTkxMjlhZTYxYmEwNmU3ZDU0OGE4M2EzYjg2YTc2OTBiNjdkLi4wMmFmMmRlOWIxYzRiY2Fj
NTg2MmMxZGE1NmZiYjRiZTZhMTZkMmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25s
b2FkLXNldC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiBEb3dubG9hZCBzdGFydGVkLgot
RG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCitE
b3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24uaHRtbCIKIERv
d25sb2FkIGNvbXBsZXRlZC4KIEJsb2IgVVJMCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>