<?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>252572</bug_id>
          
          <creation_ts>2023-02-20 08:55:04 -0800</creation_ts>
          <short_desc>REGRESSION(260457@main): WKView is still needed</short_desc>
          <delta_ts>2023-02-20 09:33:32 -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>252419</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>achristensen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1935097</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-02-20 08:55:04 -0800</bug_when>
    <thetext>https://commits.webkit.org/260457@main introduced a regression:
WKView is still needed

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>1935099</commentid>
    <comment_count>1</comment_count>
      <attachid>465086</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-02-20 08:55:10 -0800</bug_when>
    <thetext>Created attachment 465086
REVERT of 260457@main

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>1935109</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2023-02-20 09:07:03 -0800</bug_when>
    <thetext>Alex will revert manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1935111</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2023-02-20 09:11:12 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/10369</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1935117</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-02-20 09:32:48 -0800</bug_when>
    <thetext>Committed 260541@main (ae2abefb80e6): &lt;https://commits.webkit.org/260541@main&gt;

Reviewed commits have been landed. Closing PR #10369 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1935118</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-02-20 09:33:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/105682796&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>465086</attachid>
            <date>2023-02-20 08:55:10 -0800</date>
            <delta_ts>2023-02-20 09:03:28 -0800</delta_ts>
            <desc>REVERT of 260457@main</desc>
            <filename>bug-252572-20230220085509.patch</filename>
            <type>text/plain</type>
            <size>161870</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSA2ZmQ3YzU3MWU1OWU1NTM2MjI3NGU1MTdkOTViMzA3NjAxYjc4YmU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBNb24sIDIwIEZlYiAyMDIzIDA4OjU1OjA3IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjA0NTdAbWFpbi4KIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yNTI1NzIKCldLVmlldyBpcyBzdGlsbCBuZWVkZWQKClJldmVy
dGVkIGNoYW5nZXNldDoKCiJSZW1vdmUgV0tWaWV3IgpodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjUyNDE5Cmh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnLzI2MDQ1N0Bt
YWluCi0tLQogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0ICAgICAgICAgICAgICAgIHwg
ICAgMSArCiAuLi4vVUlQcm9jZXNzL0FQSS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tICAgfCAg
ICAxICsKIC4uLi9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tICB8ICAg
IDEgKwogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlldy5oICAgIHwgICAy
MSArLQogLi4uL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oICAgICAgIHwgIDE1
NiArKwogLi4uL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSAgIHwgICAg
MSArCiAuLi4vVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3LmggICAgfCAgICA1
ICsKIC4uLi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0gICB8ICAgNDQg
Ky0KIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tICAgICB8IDE3MzIg
KysrKysrKysrKysrKysrKysKIC4uLi9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50
ZXJuYWwuaCB8ICAgMzkgKwogLi4uL0dhbWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVyTWFjLm1t
ICAgICAgIHwgICAgNiArCiAuLi4vSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSVByb3h5TWFj
Lm1tICAgfCAgICAxICsKIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCAgICAg
ICAgICB8ICAgIDMgKwogLi4uL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmggIHwgICAgMSArCiAuLi4vV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0gfCAgICAxICsKIC4uLi9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oICAgICAg
ICB8ICAgIDEgKwogLi4uL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tICAgICAg
IHwgICAgMiArCiAuLi4vVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oICAgICAg
fCAgICAxICsKIC4uLi9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8
ICAgMTAgKwogVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5oICAgICAgICAgIHwg
ICAgNCArLQogVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaCAgICAgICAgIHwg
ICAgNiArLQogLi4uL1Rlc3RzL0N1c3RvbVByb3RvY29sc1N5bmNYSFJUZXN0Lm1tICAgICAgIHwg
ICAyMiArLQogLi4uL1dlYktpdC9EZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlLm1tIHwg
ICAgOCArLQogLi4uL1Rlc3RzL1dlYktpdC9FbnVtZXJhdGVNZWRpYURldmljZXMuY3BwICAgIHwg
ICAgOCArLQogLi4uL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1BhZ2VHcm91cC5jcHAgIHwg
ICAgMyArLQogLi4uL1dlYktpdC9SZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAgIHwg
ICAgNCArLQogLi4uL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZWRpYS5jcHAgIHwg
ICAzMyArLQogLi4uL1Rlc3RzL1dlYktpdC9XS1BhZ2VJc1BsYXlpbmdBdWRpby5jcHAgICAgIHwg
ICAgOCArLQogLi4uL1Rlc3RzL1dlYktpdC9XS1RodW1ibmFpbFZpZXcubW0gICAgICAgICAgIHwg
ICAxMCArLQogLi4uYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tIHwg
ICAgMiArLQogLi4uL1Rlc3RzL1dlYktpdC9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIHwg
ICAxMyArLQogLi4uL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbSAgIHwg
ICAyOCArLQogLi4uL1Rlc3RzL1dlYktpdENvY29hL0Z1bGxzY3JlZW5EZWxlZ2F0ZS5tbSAgIHwg
ICAgMiArCiAuLi4vV2ViS2l0Q29jb2EvUGljdHVyZUluUGljdHVyZURlbGVnYXRlLm1tICAgfCAg
IDExICstCiAuLi4vVGVzdHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0gICAgICAgfCAg
IDE0ICstCiAuLi4vVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbSAgICAgICAgfCAg
ICAyICstCiAuLi4vQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbSAgICAgICAgICAgfCAg
IDIxICstCiAuLi4vVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tICAgfCAg
IDQxICstCiAuLi4vUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcubW0gICAgICAgfCAg
IDEwICstCiAuLi4vVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0gICAgICAgfCAg
IDkzICstCiAuLi4vV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0Lm1tICAgICAgfCAg
IDUxICstCiAuLi4vVGVzdHMvbWFjL0FjY2VwdHNGaXJzdE1vdXNlLm1tICAgICAgICAgICAgfCAg
ICAyICstCiAuLi4vVGVzdHMvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW0gICAgICAgICAgICAgfCAg
ICA2ICstCiAuLi4vVGVzdHMvbWFjL0RldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICAgICAgfCAg
IDEwICstCiAuLi4vVGVzdHMvbWFjL0R5bmFtaWNEZXZpY2VTY2FsZUZhY3Rvci5tbSAgICAgfCAg
ICAyICstCiAuLi4vVGVzdHMvbWFjL0Z1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tICAgfCAg
IDI4ICstCiAuLi4vUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tICAgfCAg
IDE0ICstCiBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9KYXZhU2NyaXB0VGVzdE1hYy5tbSAgfCAg
ICA2ICstCiBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW0gfCAg
IDM2ICstCiAuLi4vbWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCAgICAgfCAg
ICA0ICstCiAuLi4vbWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gICAgfCAg
ICA0ICstCiBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9XZWJLaXRBZ25vc3RpY1Rlc3QuaCAgfCAg
IDE0ICstCiBUb29scy9UZXN0V2ViS2l0QVBJL21hYy9XZWJLaXRBZ25vc3RpY1Rlc3QubW0gfCAg
IDE4ICstCiA1MyBmaWxlcyBjaGFuZ2VkLCAyMjc1IGluc2VydGlvbnMoKyksIDI5MCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tWaWV3UHJpdmF0ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggYWMwNTI5ZmVhMDcyLi5lM2ExYzgzYjkyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTM1NCw2ICszNTQsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMu
bW0KIFVJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld0lPUy5tbQogVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3VGVzdGluZ0lPUy5tbQogCitVSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KIFVJ
UHJvY2Vzcy9BUEkvbWFjL1dLV2ViVmlld01hYy5tbQogVUlQcm9jZXNzL0FQSS9tYWMvV0tXZWJW
aWV3VGVzdGluZ01hYy5tbQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9tYWMvV0tQYWdlUHJpdmF0ZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL21hYy9XS1BhZ2VQcml2YXRlTWFjLm1tCmluZGV4IDJkNWQwZmZmMDFlMS4uZTk4MjIzYjM2
NDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQYWdl
UHJpdmF0ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9tYWMvV0tQ
YWdlUHJpdmF0ZU1hYy5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiV0tBUElDYXN0Lmgi
CiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25JbnRlcm5h
bC5oIgorI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KaW5kZXggMjgwYWM3Y2M5OGJkLi4wYWNj
MzE1MTcyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQpAQCAtNTIsNiArNTIs
NyBAQAogI2ltcG9ydCAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW1wb3J0ICJXS1VSTFJlcXVlc3RO
Uy5oIgogI2ltcG9ydCAiV0tVUkxSZXNwb25zZU5TLmgiCisjaW1wb3J0ICJXS1ZpZXdJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5o
IgogI2ltcG9ydCAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tWaWV3LmgKaW5kZXggYWM4MjliMDNhNTFiLi5mMTEyN2YzNDE1OWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3LmgKQEAgLTM5LDcgKzM5
LDI0IEBACiBAY2xhc3MgV0tQcm9jZXNzR3JvdXA7CiBAY2xhc3MgV0tWaWV3RGF0YTsKIAotLy8g
RklYTUU6IFJlbW92ZSB0aGlzIGZpbGUgb25jZSByZGFyOi8vMTA1NTU5ODY0IGFuZCByZGFyOi8v
MTA1NTYwNDIwIGFuZCByZGFyOi8vMTA1NTYwNDk3IGFyZSBjb21wbGV0ZS4KLS8vIE5vdGU6IHJk
YXI6Ly8xMDUwMTE5NjkgdHJhY2tzIGFkZGl0aW9uYWwgdXNlIG9mIHRoaXMgZmlsZSwgYnV0IHRo
b3NlIGFyZSB1bnVzZWQgdGVzdCB1dGlsaXRpZXMgdGhhdCBhcmUgbmV2ZXIgYnVpbHQuCitXS19D
TEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldyIsIG1hY29zKDEwLjEw
LCAxMC4xNC40KSwgaW9zKDguMCwgMTIuMikpCitAaW50ZXJmYWNlIFdLVmlldyA6IE5TVmlldyA8
TlNUZXh0SW5wdXRDbGllbnQ+IHsKK0Bwcml2YXRlCisgICAgV0tWaWV3RGF0YSAqX2RhdGE7Cisg
ICAgV0tfVU5VU0VEX0lOU1RBTkNFX1ZBUklBQkxFIHVuc2lnbmVkIF91bnVzZWQ7Cit9CisKKy0g
KGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzR3JvdXA6KFdLUHJvY2Vzc0dy
b3VwICopcHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOihXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwICopYnJvd3NpbmdDb250ZXh0R3JvdXA7CistIChpZClpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWUgcHJvY2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXByb2Nlc3NHcm91cCBicm93
c2luZ0NvbnRleHRHcm91cDooV0tCcm93c2luZ0NvbnRleHRHcm91cCAqKWJyb3dzaW5nQ29udGV4
dEdyb3VwIHJlbGF0ZWRUb1ZpZXc6KFdLVmlldyAqKXJlbGF0ZWRWaWV3OworCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
ZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCitAcHJvcGVydHkocmVhZG9ubHkpIFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjsKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKworQHByb3BlcnR5IEJPT0wgZHJhd3NCYWNrZ3JvdW5kOworQHBy
b3BlcnR5IEJPT0wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CisKK0BlbmQKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVmlld1ByaXZhdGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUxODhiYTNiODkyYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Zp
ZXdQcml2YXRlLmgKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgIVRB
UkdFVF9PU19JUEhPTkUKKworI2ltcG9ydCA8V2ViS2l0L1dLQmFzZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLTGF5b3V0TW9kZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVmlldy5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgorCitAY2xhc3MgX1dLTGlua0ljb25Q
YXJhbWV0ZXJzOworCitAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKKworLyogQyBTUEkgc3Vw
cG9ydC4gKi8KKworQHByb3BlcnR5IChyZWFkb25seSkgV0tQYWdlUmVmIHBhZ2VSZWY7CisKKy0g
KGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYp
Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZjsKKy0g
KGlkKWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBjb250ZXh0UmVmOihXS0NvbnRleHRSZWYp
Y29udGV4dFJlZiBwYWdlR3JvdXBSZWY6KFdLUGFnZUdyb3VwUmVmKXBhZ2VHcm91cFJlZiByZWxh
dGVkVG9QYWdlOihXS1BhZ2VSZWYpcmVsYXRlZFBhZ2U7CistIChpZClpbml0V2l0aEZyYW1lOihO
U1JlY3QpZnJhbWUgY29uZmlndXJhdGlvblJlZjooV0tQYWdlQ29uZmlndXJhdGlvblJlZiljb25m
aWd1cmF0aW9uOworCistIChOU1ByaW50T3BlcmF0aW9uICopcHJpbnRPcGVyYXRpb25XaXRoUHJp
bnRJbmZvOihOU1ByaW50SW5mbyAqKXByaW50SW5mbyBmb3JGcmFtZTooV0tGcmFtZVJlZilmcmFt
ZVJlZjsKKy0gKEJPT0wpY2FuQ2hhbmdlRnJhbWVMYXlvdXQ6KFdLRnJhbWVSZWYpZnJhbWVSZWY7
CisKKy0gKHZvaWQpc2V0RnJhbWU6KE5TUmVjdClyZWN0IGFuZFNjcm9sbEJ5OihOU1NpemUpb2Zm
c2V0OworCisvLyBTdG9wcyB1cGRhdGluZyB0aGUgc2l6ZSBvZiB0aGUgcGFnZSBhcyB0aGUgV0tW
aWV3IGZyYW1lIHNpemUgdXBkYXRlcy4KKy8vIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBmb2xsb3dl
ZCBieSBlbmFibGVGcmFtZVNpemVVcGRhdGVzLiBDYWxscyBjYW4gYmUgbmVzdGVkLgorLSAodm9p
ZClkaXNhYmxlRnJhbWVTaXplVXBkYXRlczsKKy8vIEltbWVkaWF0ZWx5IHVwZGF0ZXMgdGhlIHNp
emUgb2YgdGhlIHBhZ2UgdG8gbWF0Y2ggV0tWaWV3J3MgZnJhbWUgc2l6ZQorLy8gYW5kIGFsbG93
cyBzdWJzZXF1ZW50IHVwZGF0ZXMgYXMgdGhlIGZyYW1lIHNpemUgaXMgc2V0LiBDYWxscyBjYW4g
YmUgbmVzdGVkLgorLSAodm9pZCllbmFibGVGcmFtZVNpemVVcGRhdGVzOworLSAoQk9PTClmcmFt
ZVNpemVVcGRhdGVzRGlzYWJsZWQ7CisKKysgKHZvaWQpaGlkZVdvcmREZWZpbml0aW9uV2luZG93
OworCitAcHJvcGVydHkgKHJlYWR3cml0ZSkgTlNTaXplIG1pbmltdW1TaXplRm9yQXV0b0xheW91
dDsKK0Bwcm9wZXJ0eSAocmVhZHdyaXRlKSBOU1NpemUgc2l6ZVRvQ29udGVudEF1dG9TaXplTWF4
aW11bVNpemU7CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBzaG91bGRDbGlwVG9WaXNpYmxl
UmVjdDsKK0Bwcm9wZXJ0eSAocmVhZHdyaXRlKSBCT09MIHNob3VsZEV4cGFuZFRvVmlld0hlaWdo
dEZvckF1dG9MYXlvdXQ7CitAcHJvcGVydHkgKHJlYWRvbmx5LCBnZXR0ZXI9aXNVc2luZ1VJU2lk
ZUNvbXBvc2l0aW5nKSBCT09MIHVzaW5nVUlTaWRlQ29tcG9zaXRpbmc7CitAcHJvcGVydHkgKHJl
YWR3cml0ZSkgQk9PTCBhbGxvd3NNYWduaWZpY2F0aW9uOworQHByb3BlcnR5IChyZWFkd3JpdGUp
IGRvdWJsZSBtYWduaWZpY2F0aW9uOworQHByb3BlcnR5IChyZWFkd3JpdGUsIHNldHRlcj1fc2V0
SWdub3Jlc05vbldoZWVsRXZlbnRzOikgQk9PTCBfaWdub3Jlc05vbldoZWVsRXZlbnRzOworQHBy
b3BlcnR5IChyZWFkd3JpdGUsIHNldHRlcj1fc2V0SWdub3Jlc0FsbEV2ZW50czopIEJPT0wgX2ln
bm9yZXNBbGxFdmVudHM7CitAcHJvcGVydHkgKHJlYWR3cml0ZSkgQk9PTCBhbGxvd3NCYWNrRm9y
d2FyZE5hdmlnYXRpb25HZXN0dXJlczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFRvcENvbnRlbnRJbnNldDopIENHRmxvYXQgX3RvcENvbnRlbnRJbnNldDsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldFRvdGFsSGVpZ2h0T2ZCYW5uZXJzOikgQ0dGbG9hdCBfdG90
YWxIZWlnaHRPZkJhbm5lcnM7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE92
ZXJsYXlTY3JvbGxiYXJTdHlsZTopIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSBfb3ZlcmxheVNj
cm9sbGJhclN0eWxlOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRMYXlvdXRN
b2RlOikgV0tMYXlvdXRNb2RlIF9sYXlvdXRNb2RlOworLy8gRm9yIHVzZSB3aXRoIF9sYXlvdXRN
b2RlID0ga1dLTGF5b3V0TW9kZUZpeGVkU2l6ZToKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0
ZXI9X3NldEZpeGVkTGF5b3V0U2l6ZTopIENHU2l6ZSBfZml4ZWRMYXlvdXRTaXplOworCitAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRWaWV3U2NhbGU6KSBDR0Zsb2F0IF92aWV3U2Nh
bGU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldE92ZXJyaWRlRGV2aWNlU2Nh
bGVGYWN0b3I6KSBDR0Zsb2F0IF9vdmVycmlkZURldmljZVNjYWxlRmFjdG9yIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTEpKTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
QXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5zZXRzOikgQk9PTCBfYXV0b21hdGljYWxseUFk
anVzdHNDb250ZW50SW5zZXRzOworCitAcHJvcGVydHkgKHJlYWRvbmx5KSBOU0NvbG9yICpfcGFn
ZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yOworQHByb3BlcnR5IChjb3B5LCBub25hdG9taWMpIE5T
Q29sb3IgKnVuZGVybGF5Q29sb3I7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dEJhY2tncm91bmRDb2xvcjopIE5TQ29sb3IgKl9iYWNrZ3JvdW5kQ29sb3IgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xNCkpOworCitAcHJvcGVydHkgKHN0cm9uZywgbm9uYXRvbWljLCBzZXR0
ZXI9X3NldEluc3BlY3RvckF0dGFjaG1lbnRWaWV3OikgTlNWaWV3ICpfaW5zcGVjdG9yQXR0YWNo
bWVudFZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSkpOworCistIChOU1ZpZXcqKWZ1
bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc7CistIChOU1dpbmRvdyopY3JlYXRlRnVsbFNjcmVlbldp
bmRvdzsKKworLSAodm9pZCliZWdpbkRlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXM7CistICh2
b2lkKWVuZERlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXM7CistICh2b2lkKWVuZERlZmVycmlu
Z1ZpZXdJbldpbmRvd0NoYW5nZXNTeW5jOworLSAoQk9PTClpc0RlZmVycmluZ1ZpZXdJbldpbmRv
d0NoYW5nZXM7CistICh2b2lkKV9wcmVwYXJlRm9yTW92ZVRvV2luZG93OihOU1dpbmRvdyAqKXRh
cmdldFdpbmRvdyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXI7CisKKy0gKEJPT0wpd2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDsKKy0g
KHZvaWQpc2V0V2luZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDooQk9PTClmbGFnOworCist
ICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJsZSltYWduaWZpY2F0aW9uIGNlbnRlcmVkQXRQ
b2ludDooTlNQb2ludClwb2ludDsKKworLSAodm9pZClzZXRBbGxvd3NMaW5rUHJldmlldzooQk9P
TClhbGxvd3NMaW5rUHJldmlldzsKKy0gKEJPT0wpYWxsb3dzTGlua1ByZXZpZXc7CisKKy0gKHZv
aWQpc2F2ZUJhY2tGb3J3YXJkU25hcHNob3RGb3JDdXJyZW50SXRlbTsKKy0gKHZvaWQpc2F2ZUJh
Y2tGb3J3YXJkU25hcHNob3RGb3JJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYpaXRlbTsK
KworLy8gVmlld3MgbXVzdCBiZSBsYXllci1iYWNrZWQsIGhhdmUgbm8gdHJhbnNmb3JtIGFwcGxp
ZWQsIGJlIGluIGJhY2stdG8tZnJvbnQgei1vcmRlciwgYW5kIHRoZSB3aG9sZSBzZXQgbXVzdCBi
ZSBhIGNvbnRpZ3VvdXMgb3BhcXVlIHJlY3RhbmdsZS4KKy0gKHZvaWQpX3NldEN1c3RvbVN3aXBl
Vmlld3M6KE5TQXJyYXkgKiljdXN0b21Td2lwZVZpZXdzOworLy8gVGhlIHRvcCBjb250ZW50IGlu
c2V0IGlzIGFwcGxpZWQgaW4gdGhlIHdpbmRvdydzIGNvb3JkaW5hdGUgc3BhY2UsIHRvIHRoZSB1
bmlvbiBvZiB0aGUgY3VzdG9tIHN3aXBlIHZpZXcncyBmcmFtZXMuCistICh2b2lkKV9zZXRDdXN0
b21Td2lwZVZpZXdzVG9wQ29udGVudEluc2V0OihmbG9hdCl0b3BDb250ZW50SW5zZXQ7CistIChC
T09MKV90cnlUb1N3aXBlV2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQgaWdub3JpbmdQaW5uZWRT
dGF0ZTooQk9PTClpZ25vcmluZ1Bpbm5lZFN0YXRlOworLy8gVGhlIHJlY3QgcmV0dXJuZWQgaXMg
YWx3YXlzIHRoYXQgb2YgdGhlIHNuYXBzaG90LCBhbmQgb25seSBpZiBpdCBpcyB0aGUgdmlldyBi
ZWluZyBtYW5pcHVsYXRlZCBieSB0aGUgc3dpcGUuIFRoaXMgb25seSB3b3JrcyBmb3IgbGF5ZXIt
YmFja2VkIHdpbmRvd3MuCistICh2b2lkKV9zZXREaWRNb3ZlU3dpcGVTbmFwc2hvdENhbGxiYWNr
Oih2b2lkKF4pKENHUmVjdCBzd2lwZVNuYXBzaG90UmVjdEluV2luZG93Q29vcmRpbmF0ZXMpKWNh
bGxiYWNrOworCisvLyBDbGllbnRzIHRoYXQgd2FudCB0byBtYWludGFpbiBkZWZhdWx0IGJlaGF2
aW9yIGNhbiByZXR1cm4gbmlsLiBUbyBkaXNhYmxlIHRoZSBpbW1lZGlhdGUgYWN0aW9uIGVudGly
ZWx5LCByZXR1cm4gTlNOdWxsLiBBbmQgdG8KKy8vIGRvIHNvbWV0aGluZyBjdXN0b20sIHJldHVy
biBhbiBvYmplY3QgdGhhdCBjb25mb3JtcyB0byB0aGUgTlNJbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyIHByb3RvY29sLgorLSAoaWQpX2ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNv
bnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0OihXS0hpdFRlc3RSZXN1bHRSZWYpaGl0VGVzdFJlc3Vs
dCB3aXRoVHlwZToodWludDMyX3QpdHlwZSB1c2VyRGF0YTooV0tUeXBlUmVmKXVzZXJEYXRhOwor
CistICh2b2lkKV9wcmVwYXJlRm9ySW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uOworLSAodm9pZClf
Y2FuY2VsSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uOworLSAodm9pZClfY29tcGxldGVJbW1lZGlh
dGVBY3Rpb25BbmltYXRpb247CisKKy0gKHZvaWQpX2Rpc21pc3NDb250ZW50UmVsYXRpdmVDaGls
ZFdpbmRvd3M7CistICh2b2lkKV9kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzV2l0
aEFuaW1hdGlvbjooQk9PTCl3aXRoQW5pbWF0aW9uOworCistICh2b2lkKV9kaWRDaGFuZ2VDb250
ZW50U2l6ZTooTlNTaXplKW5ld1NpemU7CisKKy0gKHZvaWQpX2dlc3R1cmVFdmVudFdhc05vdEhh
bmRsZWRCeVdlYkNvcmU6KE5TRXZlbnQgKilldmVudDsKKy0gKHZvaWQpX3NpbXVsYXRlTW91c2VN
b3ZlOihOU0V2ZW50ICopZXZlbnQ7CisKKy0gKHZvaWQpX3NldFNob3VsZFN1cHByZXNzRmlyc3RS
ZXNwb25kZXJDaGFuZ2VzOihCT09MKXNob3VsZFN1cHByZXNzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCkpOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBzZXR0ZXI9
X3NldFdhbnRzTWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzopIEJPT0wgX3dhbnRzTWVkaWFQbGF5
YmFja0NvbnRyb2xzVmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgIGlkIF9t
ZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3OworLSAodm9pZClfYWRkTWVkaWFQbGF5YmFja0NvbnRy
b2xzVmlldzooaWQpbWVkaWFQbGF5YmFja0NvbnRyb2xzVmlldzsKKy0gKHZvaWQpX3JlbW92ZU1l
ZGlhUGxheWJhY2tDb250cm9sc1ZpZXc7CisKKy0gKHZvaWQpX2RvQWZ0ZXJOZXh0UHJlc2VudGF0
aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9jayBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpKTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgc2V0dGVy
PV9zZXRVc2VTeXN0ZW1BcHBlYXJhbmNlOikgQk9PTCBfdXNlU3lzdGVtQXBwZWFyYW5jZSBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CisKK0BlbmQKKworQGludGVyZmFjZSBXS1ZpZXcg
KFByaXZhdGVGb3JTdWJjbGFzc1RvRGVmaW5lKQorCisvLyBUaGlzIGEgbWV0aG9kIHRoYXQgc3Vi
Y2xhc3NlcyBjYW4gZGVmaW5lIGFuZCBXS1ZpZXcgaXRzZWxmIGRvZXMgbm90IGRlZmluZS4gV0tW
aWV3IHdpbGwgY2FsbCB0aGUgbWV0aG9kIGlmIGl0IGlzIHByZXNlbnQuCistICh2b2lkKV9zaG91
bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOihfV0tMaW5rSWNvblBhcmFtZXRlcnMgKilwYXJhbWV0
ZXJzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkICheKShOU0RhdGEgKikpKWNvbXBs
ZXRpb25IYW5kbGVyOworCitAZW5kCisKKyNlbmRpZiAvLyAhVEFSR0VUX09TX0lQSE9ORQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggYWJm
ZmNmMzRjZGNhLi5hZjZhOGVlZDAzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMTg4LDYgKzE4OCw3IEBACiAjaWYgUExBVEZPUk0o
TUFDKQogI2ltcG9ydCAiQXBwS2l0U1BJLmgiCiAjaW1wb3J0ICJXS1RleHRGaW5kZXJDbGllbnQu
aCIKKyNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFj
Lmg+CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1RodW1ibmFpbFZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tUaHVtYm5haWxWaWV3LmgKaW5kZXggZjc2ZjY4MDA5N2MxLi4yOGQ3MDhmNTYwYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFp
bFZpZXcuaApAQCAtMjksMTEgKzI5LDE2IEBACiAKICNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4K
IAorQGNsYXNzIFdLVmlldzsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogQGludGVyZmFjZSBfV0tUaHVtYm5haWxWaWV3IDog
TlNWaWV3CiAKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgZnJvbVdLVmlldzooV0tWaWV3ICopd2tW
aWV3OworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmcm9tV0tXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQ0dGbG9hdCBzY2FsZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RodW1ibmFpbFZpZXcubW0KaW5kZXgg
NDlhMDU4NDMwYjcyLi5iMmY0ZWMxYThlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUaHVtYm5haWxWaWV3Lm1tCkBAIC0zMCw2ICszMCw4IEBA
CiAKICNpbXBvcnQgIkltYWdlT3B0aW9ucy5oIgogI2ltcG9ydCAiV0tBUElDYXN0LmgiCisjaW1w
b3J0IDxXZWJLaXQvV0tWaWV3Lmg+CisjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KQEAgLTQzLDYgKzQ1LDkgQEAKIC8vIEZJ
WE1FOiBXZSBzaG91bGQgc3dpdGNoIHRvIHRoZSBsb3ctcmVzb2x1dGlvbiBzY2FsZSBpZiBhIHZp
ZXcgd2UgaGF2ZSBoaWdoLXJlc29sdXRpb24gdGlsZXMgZm9yIHJlcGFpbnRzLgogCiBAaW1wbGVt
ZW50YXRpb24gX1dLVGh1bWJuYWlsVmlldyB7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICBSZXRhaW5QdHI8V0tWaWV3PiBfd2tWaWV3OworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IF93a1dl
YlZpZXc7CiAgICAgTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF93ZWJQYWdlUHJveHk7
CiAKQEAgLTcwLDYgKzc1LDIxIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1Jl
Y3QpZnJhbWUKICAgICByZXR1cm4gc2VsZjsKIH0KIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUg
ZnJvbVdLVmlldzooV0tWaWV3ICopd2tWaWV3Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGlu
aXRXaXRoRnJhbWU6ZnJhbWVdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF93a1ZpZXcg
PSB3a1ZpZXc7CisgICAgX3dlYlBhZ2VQcm94eSA9IFdlYktpdDo6dG9JbXBsKFtfd2tWaWV3IHBh
Z2VSZWZdKTsKKyAgICBfb3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93ID0gX3dlYlBh
Z2VQcm94eS0+bWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdygpOworICAgIF9vcmlnaW5hbFNvdXJj
ZVZpZXdJc0luV2luZG93ID0gISFbX3drVmlldyB3aW5kb3ddOworCisgICAgcmV0dXJuIHNlbGY7
Cit9CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKwogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBmcm9tV0tXZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWVdKSkK
QEAgLTE0OCw5ICsxNjgsMTQgQEAgLSAoTlNDb2xvciAqKW92ZXJyaWRlQmFja2dyb3VuZENvbG9y
CiAtICh2b2lkKV92aWV3V2FzVW5wYXJlbnRlZAogewogICAgIGlmICghX2V4Y2x1c2l2ZWx5VXNl
c1NuYXBzaG90KSB7Ci0gICAgICAgIEFTU0VSVChfd2tXZWJWaWV3KTsKLSAgICAgICAgW193a1dl
YlZpZXcgX3NldFRodW1ibmFpbFZpZXc6bmlsXTsKLSAgICAgICAgW193a1dlYlZpZXcgX3NldEln
bm9yZXNBbGxFdmVudHM6Tk9dOworICAgICAgICBpZiAoX3drVmlldykgeworICAgICAgICAgICAg
W193a1ZpZXcgX3NldFRodW1ibmFpbFZpZXc6bmlsXTsKKyAgICAgICAgICAgIFtfd2tWaWV3IF9z
ZXRJZ25vcmVzQWxsRXZlbnRzOk5PXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFT
U0VSVChfd2tXZWJWaWV3KTsKKyAgICAgICAgICAgIFtfd2tXZWJWaWV3IF9zZXRUaHVtYm5haWxW
aWV3Om5pbF07CisgICAgICAgICAgICBbX3drV2ViVmlldyBfc2V0SWdub3Jlc0FsbEV2ZW50czpO
T107CisgICAgICAgIH0KICAgICAgICAgX3dlYlBhZ2VQcm94eS0+c2V0TWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyhfb3JpZ2luYWxNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KTsKICAgICB9CiAK
QEAgLTE2Myw2ICsxODgsOCBAQCAtICh2b2lkKV92aWV3V2FzVW5wYXJlbnRlZAogCiAtICh2b2lk
KV92aWV3V2FzUGFyZW50ZWQKIHsKKyAgICBpZiAoX3drVmlldyAmJiBbX3drVmlldyBfdGh1bWJu
YWlsVmlld10pCisgICAgICAgIHJldHVybjsKICAgICBpZiAoX3drV2ViVmlldyAmJiBbX3drV2Vi
VmlldyBfdGh1bWJuYWlsVmlld10pCiAgICAgICAgIHJldHVybjsKIApAQCAtMTcyLDkgKzE5OSwx
NCBAQCAtICh2b2lkKV92aWV3V2FzUGFyZW50ZWQKICAgICBbc2VsZiBfcmVxdWVzdFNuYXBzaG90
SWZOZWVkZWRdOwogCiAgICAgaWYgKCFfZXhjbHVzaXZlbHlVc2VzU25hcHNob3QpIHsKLSAgICAg
ICAgQVNTRVJUKF93a1dlYlZpZXcpOwotICAgICAgICBbX3drV2ViVmlldyBfc2V0VGh1bWJuYWls
VmlldzpzZWxmXTsKLSAgICAgICAgW193a1dlYlZpZXcgX3NldElnbm9yZXNBbGxFdmVudHM6WUVT
XTsKKyAgICAgICAgaWYgKF93a1ZpZXcpIHsKKyAgICAgICAgICAgIFtfd2tWaWV3IF9zZXRUaHVt
Ym5haWxWaWV3OnNlbGZdOworICAgICAgICAgICAgW193a1ZpZXcgX3NldElnbm9yZXNBbGxFdmVu
dHM6WUVTXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVChfd2tXZWJWaWV3
KTsKKyAgICAgICAgICAgIFtfd2tXZWJWaWV3IF9zZXRUaHVtYm5haWxWaWV3OnNlbGZdOworICAg
ICAgICAgICAgW193a1dlYlZpZXcgX3NldElnbm9yZXNBbGxFdmVudHM6WUVTXTsKKyAgICAgICAg
fQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY3MWNkNmRkZmUzYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1t
CkBAIC0wLDAgKzEsMTczMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiV0tWaWV3SW50ZXJuYWwuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKworI2lt
cG9ydCAiQVBJSGl0VGVzdFJlc3VsdC5oIgorI2ltcG9ydCAiQVBJSWNvbkxvYWRpbmdDbGllbnQu
aCIKKyNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJBcHBLaXRTUEku
aCIKKyNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0R3JvdXBQcml2YXRlLmgiCisjaW1wb3J0ICJX
S05TRGF0YS5oIgorI2ltcG9ydCAiV0tQcm9jZXNzR3JvdXBQcml2YXRlLmgiCisjaW1wb3J0ICJX
S1dlYlZpZXdNYWMuaCIKKyNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKKyNpbXBv
cnQgIldlYktpdDJJbml0aWFsaXplLmgiCisjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKKyNpbXBv
cnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKKyNpbXBvcnQg
IldlYlByb2Nlc3NQb29sLmgiCisjaW1wb3J0ICJXZWJWaWV3SW1wbC5oIgorI2ltcG9ydCAiX1dL
TGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9u
T3ZlcmxheS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg+Cisj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL0FWS2l0U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9O
U1ZpZXdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL05ha2Vk
UmVmLmg+CisKK0BpbnRlcmZhY2UgV0tWaWV3RGF0YSA6IE5TT2JqZWN0IHsKK0BwdWJsaWMKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpXZWJWaWV3SW1wbD4gX2ltcGw7Cit9CisKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdLVmlld0RhdGEKK0BlbmQKKworQGludGVyZmFjZSBXS1ZpZXcg
KCkgPFdlYlZpZXdJbXBsRGVsZWdhdGU+CitAZW5kCisKKyNpZiBIQVZFKFRPVUNIX0JBUikKK0Bp
bnRlcmZhY2UgV0tWaWV3ICgpIDxOU1RvdWNoQmFyUHJvdmlkZXI+CitAZW5kCisjZW5kaWYKKwor
I2lmIEhBVkUoTlNTQ1JPTExWSUVXX1NFUEFSQVRPUl9UUkFDS0lOR19BREFQVEVSKQorQGludGVy
ZmFjZSBXS1ZpZXcgKCkgPE5TU2Nyb2xsVmlld1NlcGFyYXRvclRyYWNraW5nQWRhcHRlcj4KK0Bl
bmQKKyNlbmRpZgorCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKworQGludGVyZmFjZSBXS1Zp
ZXcgKCkgPE5TRmlsZVByb21pc2VQcm92aWRlckRlbGVnYXRlLCBOU0RyYWdnaW5nU291cmNlPgor
QGVuZAorCisjZW5kaWYKKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4K
K0BpbXBsZW1lbnRhdGlvbiBXS1ZpZXcKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAorCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJvY2Vzc0dyb3VwOihX
S1Byb2Nlc3NHcm91cCAqKXByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDooV0tCcm93
c2luZ0NvbnRleHRHcm91cCAqKWJyb3dzaW5nQ29udGV4dEdyb3VwCit7CisgICAgcmV0dXJuIFtz
ZWxmIGluaXRXaXRoRnJhbWU6ZnJhbWUgY29udGV4dFJlZjpwcm9jZXNzR3JvdXAuX2NvbnRleHRS
ZWYgcGFnZUdyb3VwUmVmOmJyb3dzaW5nQ29udGV4dEdyb3VwLl9wYWdlR3JvdXBSZWYgcmVsYXRl
ZFRvUGFnZTpuaWxdOworfQorCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgcHJv
Y2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRH
cm91cDooV0tCcm93c2luZ0NvbnRleHRHcm91cCAqKWJyb3dzaW5nQ29udGV4dEdyb3VwIHJlbGF0
ZWRUb1ZpZXc6KFdLVmlldyAqKXJlbGF0ZWRWaWV3Cit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRX
aXRoRnJhbWU6ZnJhbWUgY29udGV4dFJlZjpwcm9jZXNzR3JvdXAuX2NvbnRleHRSZWYgcGFnZUdy
b3VwUmVmOmJyb3dzaW5nQ29udGV4dEdyb3VwLl9wYWdlR3JvdXBSZWYgcmVsYXRlZFRvUGFnZTpy
ZWxhdGVkVmlldyA/IHJlbGF0ZWRWaWV3LnBhZ2VSZWYgOiBuaWxdOworfQorCistICh2b2lkKWRl
YWxsb2MKK3sKKyAgICBpZiAoV2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5SdW5M
b29wKFdLVmlldy5jbGFzcywgc2VsZikpCisgICAgICAgIHJldHVybjsKKworICAgIF9kYXRhLT5f
aW1wbC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG51bGxwdHIpOworICAgIF9kYXRhLT5f
aW1wbCA9IG51bGxwdHI7CisKKyAgICBbX2RhdGEgcmVsZWFzZV07CisgICAgX2RhdGEgPSBuaWw7
CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9p
bXBsLT5icm93c2luZ0NvbnRleHRDb250cm9sbGVyKCk7Cit9CisKKy0gKHZvaWQpc2V0RHJhd3NC
YWNrZ3JvdW5kOihCT09MKWRyYXdzQmFja2dyb3VuZAoreworICAgIF9kYXRhLT5faW1wbC0+c2V0
RHJhd3NCYWNrZ3JvdW5kKGRyYXdzQmFja2dyb3VuZCk7Cit9CisKKy0gKEJPT0wpZHJhd3NCYWNr
Z3JvdW5kCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+ZHJhd3NCYWNrZ3JvdW5kKCk7Cit9
CisKKy0gKE5TQ29sb3IgKilfYmFja2dyb3VuZENvbG9yCit7CisgICAgcmV0dXJuIF9kYXRhLT5f
aW1wbC0+YmFja2dyb3VuZENvbG9yKCk7Cit9CisKKy0gKHZvaWQpX3NldEJhY2tncm91bmRDb2xv
cjooTlNDb2xvciAqKWJhY2tncm91bmRDb2xvcgoreworICAgIF9kYXRhLT5faW1wbC0+c2V0QmFj
a2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7Cit9CisKKy0gKHZvaWQpc2V0RHJhd3NUcmFu
c3BhcmVudEJhY2tncm91bmQ6KEJPT0wpZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQKK3sKKyAg
ICBfZGF0YS0+X2ltcGwtPnNldERyYXdzQmFja2dyb3VuZCghZHJhd3NUcmFuc3BhcmVudEJhY2tn
cm91bmQpOworfQorCistIChCT09MKWRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kCit7CisgICAg
cmV0dXJuICFfZGF0YS0+X2ltcGwtPmRyYXdzQmFja2dyb3VuZCgpOworfQorCistIChCT09MKWFj
Y2VwdHNGaXJzdFJlc3BvbmRlcgoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmFjY2VwdHNG
aXJzdFJlc3BvbmRlcigpOworfQorCistIChCT09MKWJlY29tZUZpcnN0UmVzcG9uZGVyCit7Cisg
ICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+YmVjb21lRmlyc3RSZXNwb25kZXIoKTsKK30KKworLSAo
Qk9PTClyZXNpZ25GaXJzdFJlc3BvbmRlcgoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnJl
c2lnbkZpcnN0UmVzcG9uZGVyKCk7Cit9CisKKy0gKHZvaWQpdmlld1dpbGxTdGFydExpdmVSZXNp
emUKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCk7Cit9CisK
Ky0gKHZvaWQpdmlld0RpZEVuZExpdmVSZXNpemUKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnZpZXdE
aWRFbmRMaXZlUmVzaXplKCk7Cit9CisKKy0gKEJPT0wpaXNGbGlwcGVkCit7CisgICAgcmV0dXJu
IFlFUzsKK30KKworLSAoTlNTaXplKWludHJpbnNpY0NvbnRlbnRTaXplCit7CisgICAgcmV0dXJu
IE5TU2l6ZUZyb21DR1NpemUoX2RhdGEtPl9pbXBsLT5pbnRyaW5zaWNDb250ZW50U2l6ZSgpKTsK
K30KKworLSAodm9pZClwcmVwYXJlQ29udGVudEluUmVjdDooTlNSZWN0KXJlY3QKK3sKKyAgICBf
ZGF0YS0+X2ltcGwtPnByZXBhcmVDb250ZW50SW5SZWN0KE5TUmVjdFRvQ0dSZWN0KHJlY3QpKTsK
K30KKworLSAodm9pZClzZXRGcmFtZVNpemU6KE5TU2l6ZSlzaXplCit7CisgICAgW3N1cGVyIHNl
dEZyYW1lU2l6ZTpzaXplXTsKKyAgICBfZGF0YS0+X2ltcGwtPnNldEZyYW1lU2l6ZShOU1NpemVU
b0NHU2l6ZShzaXplKSk7Cit9CisKKyNpZiBVU0UoTlNWSUVXX1NFTUFOVElDQ09OVEVYVCkKKwor
LSAodm9pZClfc2V0U2VtYW50aWNDb250ZXh0OihOU1ZpZXdTZW1hbnRpY0NvbnRleHQpc2VtYW50
aWNDb250ZXh0Cit7CisgICAgYXV0byB3YXNVc2luZ0Zvcm1TZW1hbnRpY0NvbnRleHQgPSBfZGF0
YS0+X2ltcGwgPyBfZGF0YS0+X2ltcGwtPnVzZUZvcm1TZW1hbnRpY0NvbnRleHQoKSA6IGZhbHNl
OworCisgICAgW3N1cGVyIF9zZXRTZW1hbnRpY0NvbnRleHQ6c2VtYW50aWNDb250ZXh0XTsKKwor
ICAgIGlmICghX2RhdGEtPl9pbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAod2FzVXNp
bmdGb3JtU2VtYW50aWNDb250ZXh0ICE9IF9kYXRhLT5faW1wbC0+dXNlRm9ybVNlbWFudGljQ29u
dGV4dCgpKQorICAgICAgICBfZGF0YS0+X2ltcGwtPnNlbWFudGljQ29udGV4dERpZENoYW5nZSgp
OworfQorCisjZW5kaWYKKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4K
Ky0gKHZvaWQpcmVuZXdHU3RhdGUKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAoreworICAgIF9kYXRhLT5faW1wbC0+cmVuZXdHU3RhdGUoKTsKKyAgICBbc3VwZXIgcmVuZXdH
U3RhdGVdOworfQorCisjZGVmaW5lIFdFQkNPUkVfQ09NTUFORChjb21tYW5kKSAtICh2b2lkKWNv
bW1hbmQ6KGlkKXNlbmRlciB7IF9kYXRhLT5faW1wbC0+ZXhlY3V0ZUVkaXRDb21tYW5kRm9yU2Vs
ZWN0b3IoX2NtZCk7IH0KKworV0VCQ09SRV9DT01NQU5EKGFsaWduQ2VudGVyKQorV0VCQ09SRV9D
T01NQU5EKGFsaWduSnVzdGlmaWVkKQorV0VCQ09SRV9DT01NQU5EKGFsaWduTGVmdCkKK1dFQkNP
UkVfQ09NTUFORChhbGlnblJpZ2h0KQorV0VCQ09SRV9DT01NQU5EKGNvcHkpCitXRUJDT1JFX0NP
TU1BTkQoY29weUZvbnQpCitXRUJDT1JFX0NPTU1BTkQoY3V0KQorV0VCQ09SRV9DT01NQU5EKGRl
bGV0ZSkKK1dFQkNPUkVfQ09NTUFORChkZWxldGVCYWNrd2FyZCkKK1dFQkNPUkVfQ09NTUFORChk
ZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcikKK1dFQkNPUkVfQ09N
TUFORChkZWxldGVGb3J3YXJkKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZVRvQmVnaW5uaW5nT2ZM
aW5lKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpCitXRUJD
T1JFX0NPTU1BTkQoZGVsZXRlVG9FbmRPZkxpbmUpCitXRUJDT1JFX0NPTU1BTkQoZGVsZXRlVG9F
bmRPZlBhcmFncmFwaCkKK1dFQkNPUkVfQ09NTUFORChkZWxldGVUb01hcmspCitXRUJDT1JFX0NP
TU1BTkQoZGVsZXRlV29yZEJhY2t3YXJkKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZVdvcmRGb3J3
YXJkKQorV0VCQ09SRV9DT01NQU5EKGlnbm9yZVNwZWxsaW5nKQorV0VCQ09SRV9DT01NQU5EKGlu
ZGVudCkKK1dFQkNPUkVfQ09NTUFORChpbnNlcnRCYWNrdGFiKQorV0VCQ09SRV9DT01NQU5EKGlu
c2VydExpbmVCcmVhaykKK1dFQkNPUkVfQ09NTUFORChpbnNlcnROZXdsaW5lKQorV0VCQ09SRV9D
T01NQU5EKGluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yKQorV0VCQ09SRV9DT01NQU5E
KGluc2VydFBhcmFncmFwaFNlcGFyYXRvcikKK1dFQkNPUkVfQ09NTUFORChpbnNlcnRUYWIpCitX
RUJDT1JFX0NPTU1BTkQoaW5zZXJ0VGFiSWdub3JpbmdGaWVsZEVkaXRvcikKK1dFQkNPUkVfQ09N
TUFORChtYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCkKK1dFQkNPUkVfQ09NTUFO
RChtYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsKQorV0VCQ09SRV9DT01NQU5EKG1ha2VU
ZXh0V3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0KQorV0VCQ09SRV9DT01NQU5EKG1vdmVCYWNr
d2FyZCkKK1dFQkNPUkVfQ09NTUFORChtb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24pCitX
RUJDT1JFX0NPTU1BTkQobW92ZURvd24pCitXRUJDT1JFX0NPTU1BTkQobW92ZURvd25BbmRNb2Rp
ZnlTZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1BTkQobW92ZUZvcndhcmQpCitXRUJDT1JFX0NPTU1B
TkQobW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1BTkQobW92ZUxl
ZnQpCitXRUJDT1JFX0NPTU1BTkQobW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24pCitXRUJDT1JF
X0NPTU1BTkQobW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKQorV0VCQ09S
RV9DT01NQU5EKG1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uKQorV0VCQ09S
RV9DT01NQU5EKG1vdmVSaWdodCkKK1dFQkNPUkVfQ09NTUFORChtb3ZlUmlnaHRBbmRNb2RpZnlT
ZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1BTkQobW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCkKK1dF
QkNPUkVfQ09NTUFORChtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
KQorV0VCQ09SRV9DT01NQU5EKG1vdmVUb0JlZ2lubmluZ09mTGluZSkKK1dFQkNPUkVfQ09NTUFO
RChtb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1B
TkQobW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpCitXRUJDT1JFX0NPTU1BTkQobW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1BTkQobW92
ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZSkKK1dFQkNPUkVfQ09NTUFORChtb3ZlVG9CZWdpbm5pbmdP
ZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uKQorV0VCQ09SRV9DT01NQU5EKG1vdmVUb0VuZE9m
RG9jdW1lbnQpCitXRUJDT1JFX0NPTU1BTkQobW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNl
bGVjdGlvbikKK1dFQkNPUkVfQ09NTUFORChtb3ZlVG9FbmRPZkxpbmUpCitXRUJDT1JFX0NPTU1B
TkQobW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uKQorV0VCQ09SRV9DT01NQU5EKG1v
dmVUb0VuZE9mUGFyYWdyYXBoKQorV0VCQ09SRV9DT01NQU5EKG1vdmVUb0VuZE9mUGFyYWdyYXBo
QW5kTW9kaWZ5U2VsZWN0aW9uKQorV0VCQ09SRV9DT01NQU5EKG1vdmVUb0VuZE9mU2VudGVuY2Up
CitXRUJDT1JFX0NPTU1BTkQobW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbikK
K1dFQkNPUkVfQ09NTUFORChtb3ZlVG9MZWZ0RW5kT2ZMaW5lKQorV0VCQ09SRV9DT01NQU5EKG1v
dmVUb0xlZnRFbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1BTkQobW92
ZVRvUmlnaHRFbmRPZkxpbmUpCitXRUJDT1JFX0NPTU1BTkQobW92ZVRvUmlnaHRFbmRPZkxpbmVB
bmRNb2RpZnlTZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1BTkQobW92ZVVwKQorV0VCQ09SRV9DT01N
QU5EKG1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbikKK1dFQkNPUkVfQ09NTUFORChtb3ZlV29yZEJh
Y2t3YXJkKQorV0VCQ09SRV9DT01NQU5EKG1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rp
b24pCitXRUJDT1JFX0NPTU1BTkQobW92ZVdvcmRGb3J3YXJkKQorV0VCQ09SRV9DT01NQU5EKG1v
dmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbikKK1dFQkNPUkVfQ09NTUFORChtb3ZlV29y
ZExlZnQpCitXRUJDT1JFX0NPTU1BTkQobW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uKQor
V0VCQ09SRV9DT01NQU5EKG1vdmVXb3JkUmlnaHQpCitXRUJDT1JFX0NPTU1BTkQobW92ZVdvcmRS
aWdodEFuZE1vZGlmeVNlbGVjdGlvbikKK1dFQkNPUkVfQ09NTUFORChvdXRkZW50KQorV0VCQ09S
RV9DT01NQU5EKHBhZ2VEb3duKQorV0VCQ09SRV9DT01NQU5EKHBhZ2VEb3duQW5kTW9kaWZ5U2Vs
ZWN0aW9uKQorV0VCQ09SRV9DT01NQU5EKHBhZ2VVcCkKK1dFQkNPUkVfQ09NTUFORChwYWdlVXBB
bmRNb2RpZnlTZWxlY3Rpb24pCitXRUJDT1JFX0NPTU1BTkQocGFzdGUpCitXRUJDT1JFX0NPTU1B
TkQocGFzdGVBc1BsYWluVGV4dCkKK1dFQkNPUkVfQ09NTUFORChwYXN0ZUZvbnQpCitXRUJDT1JF
X0NPTU1BTkQoc2Nyb2xsUGFnZURvd24pCitXRUJDT1JFX0NPTU1BTkQoc2Nyb2xsUGFnZVVwKQor
V0VCQ09SRV9DT01NQU5EKHNjcm9sbExpbmVEb3duKQorV0VCQ09SRV9DT01NQU5EKHNjcm9sbExp
bmVVcCkKK1dFQkNPUkVfQ09NTUFORChzY3JvbGxUb0JlZ2lubmluZ09mRG9jdW1lbnQpCitXRUJD
T1JFX0NPTU1BTkQoc2Nyb2xsVG9FbmRPZkRvY3VtZW50KQorV0VCQ09SRV9DT01NQU5EKHNlbGVj
dEFsbCkKK1dFQkNPUkVfQ09NTUFORChzZWxlY3RMaW5lKQorV0VCQ09SRV9DT01NQU5EKHNlbGVj
dFBhcmFncmFwaCkKK1dFQkNPUkVfQ09NTUFORChzZWxlY3RTZW50ZW5jZSkKK1dFQkNPUkVfQ09N
TUFORChzZWxlY3RUb01hcmspCitXRUJDT1JFX0NPTU1BTkQoc2VsZWN0V29yZCkKK1dFQkNPUkVf
Q09NTUFORChzZXRNYXJrKQorV0VCQ09SRV9DT01NQU5EKHN1YnNjcmlwdCkKK1dFQkNPUkVfQ09N
TUFORChzdXBlcnNjcmlwdCkKK1dFQkNPUkVfQ09NTUFORChzd2FwV2l0aE1hcmspCitXRUJDT1JF
X0NPTU1BTkQodGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uKQorV0VCQ09SRV9DT01NQU5EKHRy
YW5zcG9zZSkKK1dFQkNPUkVfQ09NTUFORCh1bmRlcmxpbmUpCitXRUJDT1JFX0NPTU1BTkQodW5z
Y3JpcHQpCitXRUJDT1JFX0NPTU1BTkQoeWFuaykKK1dFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2Vs
ZWN0KQorCisjdW5kZWYgV0VCQ09SRV9DT01NQU5ECisKKy0gKEJPT0wpd3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgdHlwZXM6KE5TQXJyYXkgKil0
eXBlcworeworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKHBhc3RlYm9hcmQsIHR5cGVzKTsKK30KKworLSAodm9pZCljZW50ZXJTZWxlY3Rpb25JblZp
c2libGVBcmVhOihpZClzZW5kZXIgCit7IAorICAgIF9kYXRhLT5faW1wbC0+Y2VudGVyU2VsZWN0
aW9uSW5WaXNpYmxlQXJlYSgpOworfQorCistIChpZCl2YWxpZFJlcXVlc3RvckZvclNlbmRUeXBl
OihOU1N0cmluZyAqKXNlbmRUeXBlIHJldHVyblR5cGU6KE5TU3RyaW5nICopcmV0dXJuVHlwZQor
eworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnZhbGlkUmVxdWVzdG9yRm9yU2VuZEFuZFJldHVy
blR5cGVzKHNlbmRUeXBlLCByZXR1cm5UeXBlKTsKK30KKworLSAoQk9PTClyZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgCit7CisgICAgcmV0dXJu
IF9kYXRhLT5faW1wbC0+cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmQpOwor
fQorCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAodm9pZCljaGFu
Z2VGb250OihpZClzZW5kZXIKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAor
eworICAgIF9kYXRhLT5faW1wbC0+Y2hhbmdlRm9udEZyb21Gb250TWFuYWdlcigpOworfQorCisv
KgorCitXaGVuIHBvc3NpYmxlLCBlZGl0aW5nLXJlbGF0ZWQgbWV0aG9kcyBzaG91bGQgYmUgaW1w
bGVtZW50ZWQgaW4gV2ViQ29yZSB3aXRoIHRoZQorRWRpdG9yQ29tbWFuZCBtZWNoYW5pc20gYW5k
IGludm9rZWQgdmlhIFdFQkNPUkVfQ09NTUFORCwgcmF0aGVyIHRoYW4gaW1wbGVtZW50aW5nCitp
bmRpdmlkdWFsIG1ldGhvZHMgaGVyZSB3aXRoIE1hYy1zcGVjaWZpYyBjb2RlLgorCitFZGl0aW5n
LXJlbGF0ZWQgbWV0aG9kcyBzdGlsbCB1bmltcGxlbWVudGVkIHRoYXQgYXJlIGltcGxlbWVudGVk
IGluIFdlYktpdDE6CisKKy0gKHZvaWQpY29tcGxldGU6KGlkKXNlbmRlcjsKKy0gKHZvaWQpbWFr
ZUJhc2VXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQ6KGlkKXNlbmRlcjsKKy0gKHZvaWQpbWFr
ZUJhc2VXcml0aW5nRGlyZWN0aW9uTmF0dXJhbDooaWQpc2VuZGVyOworLSAodm9pZCltYWtlQmFz
ZVdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDooaWQpc2VuZGVyOworLSAodm9pZClzY3JvbGxM
aW5lRG93bjooaWQpc2VuZGVyOworLSAodm9pZClzY3JvbGxMaW5lVXA6KGlkKXNlbmRlcjsKKy0g
KHZvaWQpc2hvd0d1ZXNzUGFuZWw6KGlkKXNlbmRlcjsKKworU29tZSBvdGhlciBlZGl0aW5nLXJl
bGF0ZWQgbWV0aG9kcyBzdGlsbCB1bmltcGxlbWVudGVkOgorCistICh2b2lkKWNoYW5nZUNhc2VP
ZkxldHRlcjooaWQpc2VuZGVyOworLSAodm9pZCljb3B5UnVsZXI6KGlkKXNlbmRlcjsKKy0gKHZv
aWQpaW5zZXJ0Q29udGFpbmVyQnJlYWs6KGlkKXNlbmRlcjsKKy0gKHZvaWQpaW5zZXJ0RG91Ymxl
UXVvdGVJZ25vcmluZ1N1YnN0aXR1dGlvbjooaWQpc2VuZGVyOworLSAodm9pZClpbnNlcnRTaW5n
bGVRdW90ZUlnbm9yaW5nU3Vic3RpdHV0aW9uOihpZClzZW5kZXI7CistICh2b2lkKXBhc3RlUnVs
ZXI6KGlkKXNlbmRlcjsKKy0gKHZvaWQpdG9nZ2xlUnVsZXI6KGlkKXNlbmRlcjsKKy0gKHZvaWQp
dHJhbnNwb3NlV29yZHM6KGlkKXNlbmRlcjsKKworKi8KKworLSAoQk9PTCl2YWxpZGF0ZVVzZXJJ
bnRlcmZhY2VJdGVtOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4paXRlbQorewor
ICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW0oaXRlbSk7
Cit9CisKKy0gKElCQWN0aW9uKXN0YXJ0U3BlYWtpbmc6KGlkKXNlbmRlcgoreworICAgIF9kYXRh
LT5faW1wbC0+c3RhcnRTcGVha2luZygpOworfQorCistIChJQkFjdGlvbilzdG9wU3BlYWtpbmc6
KGlkKXNlbmRlcgoreworICAgIF9kYXRhLT5faW1wbC0+c3RvcFNwZWFraW5nKHNlbmRlcik7Cit9
CisKKy0gKElCQWN0aW9uKXNob3dHdWVzc1BhbmVsOihpZClzZW5kZXIKK3sKKyAgICBfZGF0YS0+
X2ltcGwtPnNob3dHdWVzc1BhbmVsKHNlbmRlcik7Cit9CisKKy0gKElCQWN0aW9uKWNoZWNrU3Bl
bGxpbmc6KGlkKXNlbmRlcgoreworICAgIF9kYXRhLT5faW1wbC0+Y2hlY2tTcGVsbGluZygpOwor
fQorCistICh2b2lkKWNoYW5nZVNwZWxsaW5nOihpZClzZW5kZXIKK3sKKyAgICBfZGF0YS0+X2lt
cGwtPmNoYW5nZVNwZWxsaW5nKHNlbmRlcik7Cit9CisKKy0gKElCQWN0aW9uKXRvZ2dsZUNvbnRp
bnVvdXNTcGVsbENoZWNraW5nOihpZClzZW5kZXIKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnRvZ2ds
ZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCk7Cit9CisKKy0gKEJPT0wpaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+aXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCk7Cit9CisKKy0gKHZvaWQpc2V0R3JhbW1hckNoZWNraW5nRW5hYmxlZDooQk9PTClm
bGFnCit7CisgICAgX2RhdGEtPl9pbXBsLT5zZXRHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKGZsYWcp
OworfQorCistIChJQkFjdGlvbil0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KGlkKXNlbmRlcgorewor
ICAgIF9kYXRhLT5faW1wbC0+dG9nZ2xlR3JhbW1hckNoZWNraW5nKCk7Cit9CisKKy0gKElCQWN0
aW9uKXRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjooaWQpc2VuZGVyCit7CisgICAg
X2RhdGEtPl9pbXBsLT50b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKK30KKwor
LSAodm9pZClvcmRlckZyb250U3Vic3RpdHV0aW9uc1BhbmVsOihpZClzZW5kZXIKK3sKKyAgICBf
ZGF0YS0+X2ltcGwtPm9yZGVyRnJvbnRTdWJzdGl0dXRpb25zUGFuZWwoc2VuZGVyKTsKK30KKwor
LSAoSUJBY3Rpb24pdG9nZ2xlU21hcnRJbnNlcnREZWxldGU6KGlkKXNlbmRlcgoreworICAgIF9k
YXRhLT5faW1wbC0+dG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKTsKK30KKworLSAoQk9PTClpc0F1
dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZAoreworICAgIHJldHVybiBfZGF0YS0+X2lt
cGwtPmlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCk7Cit9CisKKy0gKHZvaWQp
c2V0QXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkOihCT09MKWZsYWcKK3sKKyAgICBf
ZGF0YS0+X2ltcGwtPnNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChmbGFnKTsK
K30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjooaWQpc2VuZGVy
Cit7CisgICAgX2RhdGEtPl9pbXBsLT50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigp
OworfQorCistIChCT09MKWlzQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQKK3sKKyAg
ICByZXR1cm4gX2RhdGEtPl9pbXBsLT5pc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVk
KCk7Cit9CisKKy0gKHZvaWQpc2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQ6KEJP
T0wpZmxhZworeworICAgIF9kYXRhLT5faW1wbC0+c2V0QXV0b21hdGljRGFzaFN1YnN0aXR1dGlv
bkVuYWJsZWQoZmxhZyk7Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbjooaWQpc2VuZGVyCit7CisgICAgX2RhdGEtPl9pbXBsLT50b2dnbGVBdXRvbWF0aWNEYXNo
U3Vic3RpdHV0aW9uKCk7Cit9CisKKy0gKEJPT0wpaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZAoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmlzQXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQoKTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxl
ZDooQk9PTClmbGFnCit7CisgICAgX2RhdGEtPl9pbXBsLT5zZXRBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uRW5hYmxlZChmbGFnKTsKK30KKworLSAodm9pZCl0b2dnbGVBdXRvbWF0aWNMaW5rRGV0ZWN0
aW9uOihpZClzZW5kZXIKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnRvZ2dsZUF1dG9tYXRpY0xpbmtE
ZXRlY3Rpb24oKTsKK30KKworLSAoQk9PTClpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJs
ZWQKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5pc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dEVuYWJsZWQoKTsKK30KKworLSAodm9pZClzZXRBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFi
bGVkOihCT09MKWZsYWcKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNldEF1dG9tYXRpY1RleHRSZXBs
YWNlbWVudEVuYWJsZWQoZmxhZyk7Cit9CisKKy0gKHZvaWQpdG9nZ2xlQXV0b21hdGljVGV4dFJl
cGxhY2VtZW50OihpZClzZW5kZXIKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnRvZ2dsZUF1dG9tYXRp
Y1RleHRSZXBsYWNlbWVudCgpOworfQorCistICh2b2lkKXVwcGVyY2FzZVdvcmQ6KGlkKXNlbmRl
cgoreworICAgIF9kYXRhLT5faW1wbC0+dXBwZXJjYXNlV29yZCgpOworfQorCistICh2b2lkKWxv
d2VyY2FzZVdvcmQ6KGlkKXNlbmRlcgoreworICAgIF9kYXRhLT5faW1wbC0+bG93ZXJjYXNlV29y
ZCgpOworfQorCistICh2b2lkKWNhcGl0YWxpemVXb3JkOihpZClzZW5kZXIKK3sKKyAgICBfZGF0
YS0+X2ltcGwtPmNhcGl0YWxpemVXb3JkKCk7Cit9CisKKy0gKEJPT0wpX3dhbnRzS2V5RG93bkZv
ckV2ZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT53YW50
c0tleURvd25Gb3JFdmVudChldmVudCk7Cit9CisKKy0gKHZvaWQpc2Nyb2xsV2hlZWw6KE5TRXZl
bnQgKilldmVudAoreworICAgIF9kYXRhLT5faW1wbC0+c2Nyb2xsV2hlZWwoZXZlbnQpOworfQor
CistICh2b2lkKXN3aXBlV2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBfZGF0YS0+
X2ltcGwtPnN3aXBlV2l0aEV2ZW50KGV2ZW50KTsKK30KKworLSAodm9pZCltb3VzZURvd246KE5T
RXZlbnQgKilldmVudAoreworICAgIF9kYXRhLT5faW1wbC0+bW91c2VEb3duKGV2ZW50KTsKK30K
KworLSAodm9pZCltb3VzZVVwOihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBfZGF0YS0+X2ltcGwt
Pm1vdXNlVXAoZXZlbnQpOworfQorCistICh2b2lkKW1vdXNlRHJhZ2dlZDooTlNFdmVudCAqKWV2
ZW50Cit7CisgICAgX2RhdGEtPl9pbXBsLT5tb3VzZURyYWdnZWQoZXZlbnQpOworfQorCistICh2
b2lkKW90aGVyTW91c2VEb3duOihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBfZGF0YS0+X2ltcGwt
Pm90aGVyTW91c2VEb3duKGV2ZW50KTsKK30KKworLSAodm9pZClvdGhlck1vdXNlRHJhZ2dlZDoo
TlNFdmVudCAqKWV2ZW50Cit7CisgICAgX2RhdGEtPl9pbXBsLT5vdGhlck1vdXNlRHJhZ2dlZChl
dmVudCk7Cit9CisKKy0gKHZvaWQpb3RoZXJNb3VzZVVwOihOU0V2ZW50ICopZXZlbnQKK3sKKyAg
ICBfZGF0YS0+X2ltcGwtPm90aGVyTW91c2VVcChldmVudCk7Cit9CisKKy0gKHZvaWQpcmlnaHRN
b3VzZURvd246KE5TRXZlbnQgKilldmVudAoreworICAgIF9kYXRhLT5faW1wbC0+cmlnaHRNb3Vz
ZURvd24oZXZlbnQpOworfQorCistICh2b2lkKXJpZ2h0TW91c2VEcmFnZ2VkOihOU0V2ZW50ICop
ZXZlbnQKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnJpZ2h0TW91c2VEcmFnZ2VkKGV2ZW50KTsKK30K
KworLSAodm9pZClyaWdodE1vdXNlVXA6KE5TRXZlbnQgKilldmVudAoreworICAgIF9kYXRhLT5f
aW1wbC0+cmlnaHRNb3VzZVVwKGV2ZW50KTsKK30KKworLSAodm9pZClwcmVzc3VyZUNoYW5nZVdp
dGhFdmVudDooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgX2RhdGEtPl9pbXBsLT5wcmVzc3VyZUNo
YW5nZVdpdGhFdmVudChldmVudCk7Cit9CisKKy0gKEJPT0wpYWNjZXB0c0ZpcnN0TW91c2U6KE5T
RXZlbnQgKilldmVudAoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmFjY2VwdHNGaXJzdE1v
dXNlKGV2ZW50KTsKK30KKworLSAoQk9PTClzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZl
bnQ6KE5TRXZlbnQgKilldmVudAoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnNob3VsZERl
bGF5V2luZG93T3JkZXJpbmdGb3JFdmVudChldmVudCk7Cit9CisKKy0gKHZvaWQpZG9Db21tYW5k
QnlTZWxlY3RvcjooU0VMKXNlbGVjdG9yCit7CisgICAgX2RhdGEtPl9pbXBsLT5kb0NvbW1hbmRC
eVNlbGVjdG9yKHNlbGVjdG9yKTsKK30KKworLSAodm9pZClpbnNlcnRUZXh0OihpZClzdHJpbmcK
K3sKKyAgICBfZGF0YS0+X2ltcGwtPmluc2VydFRleHQoc3RyaW5nKTsKK30KKworLSAodm9pZClp
bnNlcnRUZXh0OihpZClzdHJpbmcgcmVwbGFjZW1lbnRSYW5nZTooTlNSYW5nZSlyZXBsYWNlbWVu
dFJhbmdlCit7CisgICAgX2RhdGEtPl9pbXBsLT5pbnNlcnRUZXh0KHN0cmluZywgcmVwbGFjZW1l
bnRSYW5nZSk7Cit9CisKKy0gKE5TVGV4dElucHV0Q29udGV4dCAqKWlucHV0Q29udGV4dAorewor
ICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmlucHV0Q29udGV4dCgpOworfQorCistIChCT09MKXBl
cmZvcm1LZXlFcXVpdmFsZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICByZXR1cm4gX2RhdGEt
Pl9pbXBsLT5wZXJmb3JtS2V5RXF1aXZhbGVudChldmVudCk7Cit9CisKKy0gKHZvaWQpa2V5VXA6
KE5TRXZlbnQgKil0aGVFdmVudAoreworICAgIF9kYXRhLT5faW1wbC0+a2V5VXAodGhlRXZlbnQp
OworfQorCistICh2b2lkKWtleURvd246KE5TRXZlbnQgKil0aGVFdmVudAoreworICAgIF9kYXRh
LT5faW1wbC0+a2V5RG93bih0aGVFdmVudCk7Cit9CisKKy0gKHZvaWQpZmxhZ3NDaGFuZ2VkOihO
U0V2ZW50ICopdGhlRXZlbnQKK3sKKyAgICBfZGF0YS0+X2ltcGwtPmZsYWdzQ2hhbmdlZCh0aGVF
dmVudCk7Cit9CisKKy0gKHZvaWQpc2V0TWFya2VkVGV4dDooaWQpc3RyaW5nIHNlbGVjdGVkUmFu
Z2U6KE5TUmFuZ2UpbmV3U2VsZWN0ZWRSYW5nZSByZXBsYWNlbWVudFJhbmdlOihOU1JhbmdlKXJl
cGxhY2VtZW50UmFuZ2UKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNldE1hcmtlZFRleHQoc3RyaW5n
LCBuZXdTZWxlY3RlZFJhbmdlLCByZXBsYWNlbWVudFJhbmdlKTsKK30KKworLSAodm9pZCl1bm1h
cmtUZXh0Cit7CisgICAgX2RhdGEtPl9pbXBsLT51bm1hcmtUZXh0KCk7Cit9CisKKy0gKE5TUmFu
Z2Upc2VsZWN0ZWRSYW5nZQoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnNlbGVjdGVkUmFu
Z2UoKTsKK30KKworLSAoQk9PTCloYXNNYXJrZWRUZXh0Cit7CisgICAgcmV0dXJuIF9kYXRhLT5f
aW1wbC0+aGFzTWFya2VkVGV4dCgpOworfQorCistIChOU1JhbmdlKW1hcmtlZFJhbmdlCit7Cisg
ICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+bWFya2VkUmFuZ2UoKTsKK30KKworLSAoTlNBdHRyaWJ1
dGVkU3RyaW5nICopYXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2U6KE5TUmFuZ2Up
bnNSYW5nZSBhY3R1YWxSYW5nZTooTlNSYW5nZVBvaW50ZXIpYWN0dWFsUmFuZ2UKK3sKKyAgICBy
ZXR1cm4gX2RhdGEtPl9pbXBsLT5hdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZShu
c1JhbmdlLCBhY3R1YWxSYW5nZSk7Cit9CisKKy0gKE5TVUludGVnZXIpY2hhcmFjdGVySW5kZXhG
b3JQb2ludDooTlNQb2ludCl0aGVQb2ludAoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmNo
YXJhY3RlckluZGV4Rm9yUG9pbnQodGhlUG9pbnQpOworfQorCistIChOU1JlY3QpZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2U6KE5TUmFuZ2UpdGhlUmFuZ2UgYWN0dWFsUmFuZ2U6KE5TUmFuZ2VQ
b2ludGVyKWFjdHVhbFJhbmdlCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+Zmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UodGhlUmFuZ2UsIGFjdHVhbFJhbmdlKTsKK30KKworLSAodm9pZClz
ZWxlY3RlZFJhbmdlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TUmFuZ2Ugc2VsZWN0
ZWRSYW5nZSkpY29tcGxldGlvbkhhbmRsZXJQdHIKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNlbGVj
dGVkUmFuZ2VXaXRoQ29tcGxldGlvbkhhbmRsZXIoY29tcGxldGlvbkhhbmRsZXJQdHIpOworfQor
CistICh2b2lkKW1hcmtlZFJhbmdlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TUmFu
Z2UgbWFya2VkUmFuZ2UpKWNvbXBsZXRpb25IYW5kbGVyUHRyCit7CisgICAgX2RhdGEtPl9pbXBs
LT5tYXJrZWRSYW5nZVdpdGhDb21wbGV0aW9uSGFuZGxlcihjb21wbGV0aW9uSGFuZGxlclB0cik7
Cit9CisKKy0gKHZvaWQpaGFzTWFya2VkVGV4dFdpdGhDb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShCT09MIGhhc01hcmtlZFRleHQpKWNvbXBsZXRpb25IYW5kbGVyUHRyCit7CisgICAgX2RhdGEt
Pl9pbXBsLT5oYXNNYXJrZWRUZXh0V2l0aENvbXBsZXRpb25IYW5kbGVyKGNvbXBsZXRpb25IYW5k
bGVyUHRyKTsKK30KKworLSAodm9pZClhdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5n
ZTooTlNSYW5nZSluc1JhbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0clN0cmluZywgTlNSYW5nZSBhY3R1YWxSYW5nZSkpY29tcGxldGlvbkhhbmRs
ZXJQdHIKK3sKKyAgICBfZGF0YS0+X2ltcGwtPmF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3Nl
ZFJhbmdlKG5zUmFuZ2UsIGNvbXBsZXRpb25IYW5kbGVyUHRyKTsKK30KKworLSAodm9pZClmaXJz
dFJlY3RGb3JDaGFyYWN0ZXJSYW5nZTooTlNSYW5nZSl0aGVSYW5nZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKShOU1JlY3QgZmlyc3RSZWN0LCBOU1JhbmdlIGFjdHVhbFJhbmdlKSljb21wbGV0
aW9uSGFuZGxlclB0cgoreworICAgIF9kYXRhLT5faW1wbC0+Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UodGhlUmFuZ2UsIGNvbXBsZXRpb25IYW5kbGVyUHRyKTsKK30KKworLSAodm9pZCljaGFy
YWN0ZXJJbmRleEZvclBvaW50OihOU1BvaW50KXRoZVBvaW50IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkKF4pKE5TVUludGVnZXIpKWNvbXBsZXRpb25IYW5kbGVyUHRyCit7CisgICAgX2RhdGEtPl9p
bXBsLT5jaGFyYWN0ZXJJbmRleEZvclBvaW50KHRoZVBvaW50LCBjb21wbGV0aW9uSGFuZGxlclB0
cik7Cit9CisKKy0gKE5TQXJyYXkgKil2YWxpZEF0dHJpYnV0ZXNGb3JNYXJrZWRUZXh0Cit7Cisg
ICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+dmFsaWRBdHRyaWJ1dGVzRm9yTWFya2VkVGV4dCgpOwor
fQorCisjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0JFR0lOCistICh2b2lkKWRyYWdnZWRJbWFnZTooTlNJbWFnZSAqKWltYWdlIGVuZGVk
QXQ6KE5TUG9pbnQpZW5kUG9pbnQgb3BlcmF0aW9uOihOU0RyYWdPcGVyYXRpb24pb3BlcmF0aW9u
CitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKK3sKKyAgICBfZGF0YS0+X2lt
cGwtPmRyYWdnZWRJbWFnZShpbWFnZSwgTlNQb2ludFRvQ0dQb2ludChlbmRQb2ludCksIG9wZXJh
dGlvbik7Cit9CisKKy0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ0VudGVyZWQ6KGlkIDxOU0Ry
YWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+ZHJh
Z2dpbmdFbnRlcmVkKGRyYWdnaW5nSW5mbyk7Cit9CisKKy0gKE5TRHJhZ09wZXJhdGlvbilkcmFn
Z2luZ1VwZGF0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgcmV0
dXJuIF9kYXRhLT5faW1wbC0+ZHJhZ2dpbmdVcGRhdGVkKGRyYWdnaW5nSW5mbyk7Cit9CisKKy0g
KHZvaWQpZHJhZ2dpbmdFeGl0ZWQ6KGlkIDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7
CisgICAgX2RhdGEtPl9pbXBsLT5kcmFnZ2luZ0V4aXRlZChkcmFnZ2luZ0luZm8pOworfQorCist
IChCT09MKXByZXBhcmVGb3JEcmFnT3BlcmF0aW9uOihpZCA8TlNEcmFnZ2luZ0luZm8+KWRyYWdn
aW5nSW5mbworeworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnByZXBhcmVGb3JEcmFnT3BlcmF0
aW9uKGRyYWdnaW5nSW5mbyk7Cit9CisKKy0gKEJPT0wpcGVyZm9ybURyYWdPcGVyYXRpb246KGlk
IDxOU0RyYWdnaW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1w
bC0+cGVyZm9ybURyYWdPcGVyYXRpb24oZHJhZ2dpbmdJbmZvKTsKK30KKworLSAoTlNWaWV3ICop
X2hpdFRlc3Q6KE5TUG9pbnQgKilwb2ludCBkcmFnVHlwZXM6KE5TU2V0ICopdHlwZXMKK3sKKyAg
ICByZXR1cm4gX2RhdGEtPl9pbXBsLT5oaXRUZXN0Rm9yRHJhZ1R5cGVzKE5TUG9pbnRUb0NHUG9p
bnQoKnBvaW50KSwgdHlwZXMpOworfQorI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCisK
Ky0gKEJPT0wpX3dpbmRvd1Jlc2l6ZU1vdXNlTG9jYXRpb25Jc0luVmlzaWJsZVNjcm9sbGVyVGh1
bWI6KE5TUG9pbnQpcG9pbnQKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT53aW5kb3dSZXNp
emVNb3VzZUxvY2F0aW9uSXNJblZpc2libGVTY3JvbGxlclRodW1iKE5TUG9pbnRUb0NHUG9pbnQo
cG9pbnQpKTsKK30KKworLSAodm9pZCl2aWV3V2lsbE1vdmVUb1dpbmRvdzooTlNXaW5kb3cgKil3
aW5kb3cKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnZpZXdXaWxsTW92ZVRvV2luZG93KHdpbmRvdyk7
Cit9CisKKy0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdworeworICAgIF9kYXRhLT5faW1wbC0+
dmlld0RpZE1vdmVUb1dpbmRvdygpOworfQorCistICh2b2lkKWRyYXdSZWN0OihOU1JlY3QpcmVj
dAoreworICAgIF9kYXRhLT5faW1wbC0+ZHJhd1JlY3QoTlNSZWN0VG9DR1JlY3QocmVjdCkpOwor
fQorCistIChCT09MKWlzT3BhcXVlCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+aXNPcGFx
dWUoKTsKK30KKworLSAoQk9PTCltb3VzZURvd25DYW5Nb3ZlV2luZG93Cit7CisgICAgcmV0dXJu
IFdlYktpdDo6V2ViVmlld0ltcGw6Om1vdXNlRG93bkNhbk1vdmVXaW5kb3coKTsKK30KKworLSAo
dm9pZCl2aWV3RGlkSGlkZQoreworICAgIF9kYXRhLT5faW1wbC0+dmlld0RpZEhpZGUoKTsKK30K
KworLSAodm9pZCl2aWV3RGlkVW5oaWRlCit7CisgICAgX2RhdGEtPl9pbXBsLT52aWV3RGlkVW5o
aWRlKCk7Cit9CisKKy0gKHZvaWQpdmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzCit7Cisg
ICAgX2RhdGEtPl9pbXBsLT52aWV3RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXMoKTsKK30KKwor
LSAodm9pZClfYWN0aXZlU3BhY2VEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCit7CisgICAgX2RhdGEtPl9pbXBsLT5hY3RpdmVTcGFjZURpZENoYW5nZSgpOworfQorCist
IChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudAoreworICAgIHJldHVybiBfZGF0YS0+
X2ltcGwtPmFjY2Vzc2liaWxpdHlGb2N1c2VkVUlFbGVtZW50KCk7Cit9CisKK0FMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistIChCT09MKWFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIHJldHVybiBf
ZGF0YS0+X2ltcGwtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKK30KKworLSAoaWQpYWNjZXNz
aWJpbGl0eUhpdFRlc3Q6KE5TUG9pbnQpcG9pbnQKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBs
LT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChOU1BvaW50VG9DR1BvaW50KHBvaW50KSk7Cit9CisKK0FM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistIChpZClhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0cmlidXRlCitBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5hY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWUoYXR0cmlidXRlKTsKK30KKworQUxMT1dfREVQUkVDQVRFRF9JTVBM
RU1FTlRBVElPTlNfQkVHSU4KKy0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNT
dHJpbmcgKilhdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOihpZClwYXJhbWV0ZXIKK0FMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUsIHBhcmFtZXRlcik7Cit9CisKK0FM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistIChOU0FycmF5PE5TU3RyaW5n
ICo+ICopYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcworQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAq
bmFtZXMgPSBbc3VwZXIgYWNjZXNzaWJpbGl0eVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lc107
CisgICAgcmV0dXJuIFtuYW1lcyBhcnJheUJ5QWRkaW5nT2JqZWN0OkAiQVhDb252ZXJ0UmVsYXRp
dmVGcmFtZSJdOworfQorCistIChOU1ZpZXcgKiloaXRUZXN0OihOU1BvaW50KXBvaW50Cit7Cisg
ICAgaWYgKCFfZGF0YSkKKyAgICAgICAgcmV0dXJuIFtzdXBlciBoaXRUZXN0OnBvaW50XTsKKyAg
ICByZXR1cm4gX2RhdGEtPl9pbXBsLT5oaXRUZXN0KE5TUG9pbnRUb0NHUG9pbnQocG9pbnQpKTsK
K30KKworLSAoTlNJbnRlZ2VyKWNvbnZlcnNhdGlvbklkZW50aWZpZXIKK3sKKyAgICByZXR1cm4g
KE5TSW50ZWdlcilzZWxmOworfQorCistICh2b2lkKXF1aWNrTG9va1dpdGhFdmVudDooTlNFdmVu
dCAqKWV2ZW50Cit7CisgICAgX2RhdGEtPl9pbXBsLT5xdWlja0xvb2tXaXRoRXZlbnQoZXZlbnQp
OworfQorCistIChOU1RyYWNraW5nUmVjdFRhZylhZGRUcmFja2luZ1JlY3Q6KE5TUmVjdClyZWN0
IG93bmVyOihpZClvd25lciB1c2VyRGF0YToodm9pZCAqKWRhdGEgYXNzdW1lSW5zaWRlOihCT09M
KWFzc3VtZUluc2lkZQoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmFkZFRyYWNraW5nUmVj
dChOU1JlY3RUb0NHUmVjdChyZWN0KSwgb3duZXIsIGRhdGEsIGFzc3VtZUluc2lkZSk7Cit9CisK
Ky0gKE5TVHJhY2tpbmdSZWN0VGFnKV9hZGRUcmFja2luZ1JlY3Q6KE5TUmVjdClyZWN0IG93bmVy
OihpZClvd25lciB1c2VyRGF0YToodm9pZCAqKWRhdGEgYXNzdW1lSW5zaWRlOihCT09MKWFzc3Vt
ZUluc2lkZSB1c2VUcmFja2luZ051bTooaW50KXRhZworeworICAgIHJldHVybiBfZGF0YS0+X2lt
cGwtPmFkZFRyYWNraW5nUmVjdFdpdGhUcmFja2luZ051bShOU1JlY3RUb0NHUmVjdChyZWN0KSwg
b3duZXIsIGRhdGEsIGFzc3VtZUluc2lkZSwgdGFnKTsKK30KKworLSAodm9pZClfYWRkVHJhY2tp
bmdSZWN0czooTlNSZWN0ICopcmVjdHMgb3duZXI6KGlkKW93bmVyIHVzZXJEYXRhTGlzdDoodm9p
ZCAqKil1c2VyRGF0YUxpc3QgYXNzdW1lSW5zaWRlTGlzdDooQk9PTCAqKWFzc3VtZUluc2lkZUxp
c3QgdHJhY2tpbmdOdW1zOihOU1RyYWNraW5nUmVjdFRhZyAqKXRyYWNraW5nTnVtcyBjb3VudDoo
aW50KWNvdW50Cit7CisgICAgQ0dSZWN0ICpjZ1JlY3RzID0gKENHUmVjdCAqKWNhbGxvYygxLCBz
aXplb2YoQ0dSZWN0KSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAg
ICAgICBjZ1JlY3RzW2ldID0gTlNSZWN0VG9DR1JlY3QocmVjdHNbaV0pOworICAgIF9kYXRhLT5f
aW1wbC0+YWRkVHJhY2tpbmdSZWN0c1dpdGhUcmFja2luZ051bXMoY2dSZWN0cywgb3duZXIsIHVz
ZXJEYXRhTGlzdCwgYXNzdW1lSW5zaWRlTGlzdCwgdHJhY2tpbmdOdW1zLCBjb3VudCk7CisgICAg
ZnJlZShjZ1JlY3RzKTsKK30KKworLSAodm9pZClyZW1vdmVUcmFja2luZ1JlY3Q6KE5TVHJhY2tp
bmdSZWN0VGFnKXRhZworeworICAgIGlmICghX2RhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBf
ZGF0YS0+X2ltcGwtPnJlbW92ZVRyYWNraW5nUmVjdCh0YWcpOworfQorCistICh2b2lkKV9yZW1v
dmVUcmFja2luZ1JlY3RzOihOU1RyYWNraW5nUmVjdFRhZyAqKXRhZ3MgY291bnQ6KGludCljb3Vu
dAoreworICAgIGlmICghX2RhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBfZGF0YS0+X2ltcGwt
PnJlbW92ZVRyYWNraW5nUmVjdHModGFncywgY291bnQpOworfQorCitBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19CRUdJTgorLSAoTlNTdHJpbmcgKil2aWV3OihOU1ZpZXcgKil2aWV3
IHN0cmluZ0ZvclRvb2xUaXA6KE5TVG9vbFRpcFRhZyl0YWcgcG9pbnQ6KE5TUG9pbnQpcG9pbnQg
dXNlckRhdGE6KHZvaWQgKilkYXRhCitBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5zdHJpbmdGb3JUb29sVGlwKHRhZyk7Cit9
CisKK0FMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JFR0lOCistICh2b2lkKXBhc3Rl
Ym9hcmRDaGFuZ2VkT3duZXI6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQKK0FMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIF9kYXRhLT5faW1wbC0+cGFzdGVib2Fy
ZENoYW5nZWRPd25lcihwYXN0ZWJvYXJkKTsKK30KKworQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfQkVHSU4KKy0gKHZvaWQpcGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGFzdGVi
b2FyZCBwcm92aWRlRGF0YUZvclR5cGU6KE5TU3RyaW5nICopdHlwZQorQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECit7CisgICAgX2RhdGEtPl9pbXBsLT5wcm92aWRlRGF0YUZv
clBhc3RlYm9hcmQocGFzdGVib2FyZCwgdHlwZSk7Cit9CisKK0FMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0JFR0lOCistIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9w
cGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRpb24KK0FMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPm5hbWVz
T2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb24oZHJvcERlc3RpbmF0aW9uKTsKK30K
KworLSAodm9pZCltYXliZUluc3RhbGxJY29uTG9hZGluZ0NsaWVudAoreworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQg
OiBwdWJsaWMgQVBJOjpJY29uTG9hZGluZ0NsaWVudCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgSWNvbkxvYWRpbmdDbGll
bnQoV0tWaWV3ICp3a1ZpZXcpCisgICAgICAgICAgICA6IG1fd2tWaWV3KHdrVmlldykKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIFNFTCBkZWxlZ2F0ZVNlbGVjdG9yKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEBzZWxlY3Rvcihfc2hvdWxkTG9hZEljb25X
aXRoUGFyYW1ldGVyczpjb21wbGV0aW9uSGFuZGxlcjopOworICAgICAgICB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICB0eXBlZGVmIHZvaWQgKF5JY29uTG9hZENvbXBsZXRpb25IYW5kbGVyKShO
U0RhdGEqKTsKKworICAgICAgICB2b2lkIGdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2Vi
Q29yZTo6TGlua0ljb24mIGxpbmtJY29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBSZXRhaW5QdHI8X1dLTGlua0ljb25QYXJhbWV0
ZXJzPiBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19XS0xpbmtJY29uUGFyYW1ldGVycyBhbGxvY10g
X2luaXRXaXRoTGlua0ljb246bGlua0ljb25dKTsKKworICAgICAgICAgICAgW21fd2tWaWV3IF9z
aG91bGRMb2FkSWNvbldpdGhQYXJhbWV0ZXJzOnBhcmFtZXRlcnMuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShJY29uTG9hZENvbXBsZXRpb25IYW5kbGVyIGxvYWRDb21wbGV0aW9uSGFuZGxl
cikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KyAgICAgICAgICAgICAgICBpZiAobG9hZENvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtsb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIobG9hZENvbXBsZXRpb25IYW5kbGVyKV0oQVBJOjpEYXRhKiBkYXRhKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBsb2FkQ29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICAgICAgICAgIH0p
LmdldCgpXTsKKyAgICAgICAgfQorCisgICAgICAgIFdLVmlldyAqbV93a1ZpZXc7CisgICAgfTsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKworICAgIGlmIChbc2VsZiBy
ZXNwb25kc1RvU2VsZWN0b3I6SWNvbkxvYWRpbmdDbGllbnQ6OmRlbGVnYXRlU2VsZWN0b3IoKV0p
CisgICAgICAgIF9kYXRhLT5faW1wbC0+cGFnZSgpLnNldEljb25Mb2FkaW5nQ2xpZW50KG1ha2VV
bmlxdWU8SWNvbkxvYWRpbmdDbGllbnQ+KHNlbGYpKTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRnJhbWU6KE5TUmVjdClmcmFtZSBwcm9jZXNzUG9vbDooTmFrZWRSZWY8V2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbD4pcHJvY2Vzc1Bvb2wgY29uZmlndXJhdGlvbjooUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpY29uZmlndXJhdGlvbgoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhGcmFtZTpmcmFtZV07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworCisg
ICAgV2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOworCisgICAgX2RhdGEgPSBbW1dLVmlld0Rh
dGEgYWxsb2NdIGluaXRdOworICAgIF9kYXRhLT5faW1wbCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpX
ZWJWaWV3SW1wbD4oc2VsZiwgbnVsbHB0ciwgcHJvY2Vzc1Bvb2wuZ2V0KCksIFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOworCisgICAgW3NlbGYgbWF5YmVJbnN0YWxsSWNvbkxvYWRpbmdDbGllbnRd
OworICAgIFtXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5IGluc3RhbGxGb3JXZWJW
aWV3SWZOZWVkZWQ6c2VsZiBraW5kOkAiV0tWaWV3IiBkZXByZWNhdGVkOllFU107CisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClfc2V0VGh1bWJuYWlsVmlldzooX1dLVGh1bWJuYWls
VmlldyAqKXRodW1ibmFpbFZpZXcKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNldFRodW1ibmFpbFZp
ZXcodGh1bWJuYWlsVmlldyk7Cit9CisKKy0gKF9XS1RodW1ibmFpbFZpZXcgKilfdGh1bWJuYWls
VmlldworeworICAgIGlmICghX2RhdGEtPl9pbXBsKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IHJldHVybiBfZGF0YS0+X2ltcGwtPnRodW1ibmFpbFZpZXcoKTsKK30KKworLSAoTlNUZXh0SW5w
dXRDb250ZXh0ICopX3dlYl9zdXBlcklucHV0Q29udGV4dAoreworICAgIHJldHVybiBbc3VwZXIg
aW5wdXRDb250ZXh0XTsKK30KKworLSAodm9pZClfd2ViX3N1cGVyUXVpY2tMb29rV2l0aEV2ZW50
OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBbc3VwZXIgcXVpY2tMb29rV2l0aEV2ZW50OmV2ZW50
XTsKK30KKworLSAodm9pZClfd2ViX3N1cGVyU3dpcGVXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVu
dAoreworICAgIFtzdXBlciBzd2lwZVdpdGhFdmVudDpldmVudF07Cit9CisKKy0gKHZvaWQpX3dl
Yl9zdXBlck1hZ25pZnlXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAoreworICAgIFtzdXBlciBt
YWduaWZ5V2l0aEV2ZW50OmV2ZW50XTsKK30KKworLSAodm9pZClfd2ViX3N1cGVyU21hcnRNYWdu
aWZ5V2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBbc3VwZXIgc21hcnRNYWduaWZ5
V2l0aEV2ZW50OmV2ZW50XTsKK30KKworLSAodm9pZClfd2ViX3N1cGVyUmVtb3ZlVHJhY2tpbmdS
ZWN0OihOU1RyYWNraW5nUmVjdFRhZyl0YWcKK3sKKyAgICBbc3VwZXIgcmVtb3ZlVHJhY2tpbmdS
ZWN0OnRhZ107Cit9CisKKy0gKGlkKV93ZWJfc3VwZXJBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTphdHRyaWJ1dGVdOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorfQor
CistICh2b2lkKV93ZWJfc3VwZXJEb0NvbW1hbmRCeVNlbGVjdG9yOihTRUwpc2VsZWN0b3IKK3sK
KyAgICBbc3VwZXIgZG9Db21tYW5kQnlTZWxlY3RvcjpzZWxlY3Rvcl07Cit9CisKKy0gKEJPT0wp
X3dlYl9zdXBlclBlcmZvcm1LZXlFcXVpdmFsZW50OihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBy
ZXR1cm4gW3N1cGVyIHBlcmZvcm1LZXlFcXVpdmFsZW50OmV2ZW50XTsKK30KKworLSAodm9pZClf
d2ViX3N1cGVyS2V5RG93bjooTlNFdmVudCAqKWV2ZW50Cit7CisgICAgW3N1cGVyIGtleURvd246
ZXZlbnRdOworfQorCistIChOU1ZpZXcgKilfd2ViX3N1cGVySGl0VGVzdDooTlNQb2ludClwb2lu
dAoreworICAgIHJldHVybiBbc3VwZXIgaGl0VGVzdDpwb2ludF07Cit9CisKKy0gKGlkKV93ZWJf
aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHRJbnRlcm5h
bDooQVBJOjpIaXRUZXN0UmVzdWx0KiloaXRUZXN0UmVzdWx0IHdpdGhUeXBlOih1aW50MzJfdCl0
eXBlIHVzZXJEYXRhOihBUEk6Ok9iamVjdCopdXNlckRhdGEKK3sKKyAgICByZXR1cm4gW3NlbGYg
X2ltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0OldlYktp
dDo6dG9BUEkoaGl0VGVzdFJlc3VsdCkgd2l0aFR5cGU6dHlwZSB1c2VyRGF0YTpXZWJLaXQ6OnRv
QVBJKHVzZXJEYXRhKV07Cit9CisKKy0gKHZvaWQpX3dlYl9wcmVwYXJlRm9ySW1tZWRpYXRlQWN0
aW9uQW5pbWF0aW9uCit7CisgICAgW3NlbGYgX3ByZXBhcmVGb3JJbW1lZGlhdGVBY3Rpb25Bbmlt
YXRpb25dOworfQorCistICh2b2lkKV93ZWJfY2FuY2VsSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9u
Cit7CisgICAgW3NlbGYgX2NhbmNlbEltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbl07Cit9CisKKy0g
KHZvaWQpX3dlYl9jb21wbGV0ZUltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbgoreworICAgIFtzZWxm
IF9jb21wbGV0ZUltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbl07Cit9CisKKy0gKHZvaWQpX3dlYl9k
aWRDaGFuZ2VDb250ZW50U2l6ZTooTlNTaXplKW5ld1NpemUKK3sKKyAgICBbc2VsZiBfZGlkQ2hh
bmdlQ29udGVudFNpemU6bmV3U2l6ZV07Cit9CisKKyNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQor
CistICh2b2lkKV93ZWJfZGlkUGVyZm9ybURyYWdPcGVyYXRpb246KEJPT0wpaGFuZGxlZAorewor
ICAgIFVOVVNFRF9QQVJBTShoYW5kbGVkKTsKK30KKworLSAoV0tEcmFnRGVzdGluYXRpb25BY3Rp
b24pX3dlYl9kcmFnRGVzdGluYXRpb25BY3Rpb25Gb3JEcmFnZ2luZ0luZm86KGlkIDxOU0RyYWdn
aW5nSW5mbz4pZHJhZ2dpbmdJbmZvCit7CisgICAgcmV0dXJuIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uQW55OworfQorCisjZW5kaWYKKworLSAodm9pZClfd2ViX2Rpc21pc3NDb250ZW50UmVsYXRp
dmVDaGlsZFdpbmRvd3MKK3sKKyAgICBbc2VsZiBfZGlzbWlzc0NvbnRlbnRSZWxhdGl2ZUNoaWxk
V2luZG93c107Cit9CisKKy0gKHZvaWQpX3dlYl9kaXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRX
aW5kb3dzV2l0aEFuaW1hdGlvbjooQk9PTCl3aXRoQW5pbWF0aW9uCit7CisgICAgW3NlbGYgX2Rp
c21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NXaXRoQW5pbWF0aW9uOndpdGhBbmltYXRp
b25dOworfQorCistICh2b2lkKV93ZWJfZWRpdG9yU3RhdGVEaWRDaGFuZ2UKK3sKK30KKworLSAo
dm9pZClfd2ViX2dlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmU6KE5TRXZlbnQgKill
dmVudAoreworICAgIFtzZWxmIF9nZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlOmV2
ZW50XTsKK30KKworLSAodm9pZClfZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUKK3sKK30KKwor
LSAodm9pZClfZGlkVXBkYXRlQ2FuZGlkYXRlTGlzdFZpc2liaWxpdHk6KEJPT0wpdmlzaWJsZQor
eworfQorCisjaWYgSEFWRShUT1VDSF9CQVIpCisKK0BkeW5hbWljIHRvdWNoQmFyOworCistIChO
U1RvdWNoQmFyICopbWFrZVRvdWNoQmFyCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+bWFr
ZVRvdWNoQmFyKCk7Cit9CisKKy0gKE5TQ2FuZGlkYXRlTGlzdFRvdWNoQmFySXRlbSAqKWNhbmRp
ZGF0ZUxpc3RUb3VjaEJhckl0ZW0KK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5jYW5kaWRh
dGVMaXN0VG91Y2hCYXJJdGVtKCk7Cit9CisKKy0gKHZvaWQpX3dlYl9kaWRBZGRNZWRpYUNvbnRy
b2xzTWFuYWdlcjooaWQpY29udHJvbHNNYW5hZ2VyCit7CisgICAgW3NlbGYgX2FkZE1lZGlhUGxh
eWJhY2tDb250cm9sc1ZpZXc6Y29udHJvbHNNYW5hZ2VyXTsKK30KKworLSAodm9pZClfd2ViX2Rp
ZFJlbW92ZU1lZGlhQ29udHJvbHNNYW5hZ2VyCit7CisgICAgW3NlbGYgX3JlbW92ZU1lZGlhUGxh
eWJhY2tDb250cm9sc1ZpZXddOworfQorCisjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpCisKKyNp
ZiBIQVZFKE5TU0NST0xMVklFV19TRVBBUkFUT1JfVFJBQ0tJTkdfQURBUFRFUikKKworLSAoTlNS
ZWN0KXNjcm9sbFZpZXdGcmFtZQoreworICAgIGlmICghX2RhdGEtPl9pbXBsKQorICAgICAgICBy
ZXR1cm4gTlNaZXJvUmVjdDsKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5zY3JvbGxWaWV3RnJh
bWUoKTsKK30KKworLSAoQk9PTCloYXNTY3JvbGxlZENvbnRlbnRzVW5kZXJUaXRsZWJhcgorewor
ICAgIGlmICghX2RhdGEtPl9pbXBsKQorICAgICAgICByZXR1cm4gTk87CisgICAgcmV0dXJuIF9k
YXRhLT5faW1wbC0+aGFzU2Nyb2xsZWRDb250ZW50c1VuZGVyVGl0bGViYXIoKTsKK30KKworI2Vu
ZGlmIC8vIEhBVkUoTlNTQ1JPTExWSUVXX1NFUEFSQVRPUl9UUkFDS0lOR19BREFQVEVSKQorCisj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKKworLSAoTlNTdHJpbmcgKilmaWxlUHJvbWlzZVByb3Zp
ZGVyOihOU0ZpbGVQcm9taXNlUHJvdmlkZXIgKilmaWxlUHJvbWlzZVByb3ZpZGVyIGZpbGVOYW1l
Rm9yVHlwZTooTlNTdHJpbmcgKilmaWxlVHlwZQoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwt
PmZpbGVOYW1lRm9yRmlsZVByb21pc2VQcm92aWRlcihmaWxlUHJvbWlzZVByb3ZpZGVyLCBmaWxl
VHlwZSk7Cit9CisKKy0gKHZvaWQpZmlsZVByb21pc2VQcm92aWRlcjooTlNGaWxlUHJvbWlzZVBy
b3ZpZGVyICopZmlsZVByb21pc2VQcm92aWRlciB3cml0ZVByb21pc2VUb1VSTDooTlNVUkwgKil1
cmwgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9kYXRhLT5faW1wbC0+d3JpdGVUb1VSTEZvckZpbGVQcm9taXNlUHJv
dmlkZXIoZmlsZVByb21pc2VQcm92aWRlciwgdXJsLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisK
Ky0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1Nlc3Npb246KE5TRHJhZ2dpbmdTZXNzaW9uICop
c2Vzc2lvbiBzb3VyY2VPcGVyYXRpb25NYXNrRm9yRHJhZ2dpbmdDb250ZXh0OihOU0RyYWdnaW5n
Q29udGV4dCljb250ZXh0Cit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+ZHJhZ1NvdXJjZU9w
ZXJhdGlvbk1hc2soc2Vzc2lvbiwgY29udGV4dCk7Cit9CisKKy0gKHZvaWQpZHJhZ2dpbmdTZXNz
aW9uOihOU0RyYWdnaW5nU2Vzc2lvbiAqKXNlc3Npb24gZW5kZWRBdFBvaW50OihOU1BvaW50KXNj
cmVlblBvaW50IG9wZXJhdGlvbjooTlNEcmFnT3BlcmF0aW9uKW9wZXJhdGlvbgoreworICAgIF9k
YXRhLT5faW1wbC0+ZHJhZ2dpbmdTZXNzaW9uRW5kZWQoc2Vzc2lvbiwgc2NyZWVuUG9pbnQsIG9w
ZXJhdGlvbik7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQorCitAZW5kCisK
K0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCitBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19CRUdJTgorQGltcGxlbWVudGF0aW9uIFdLVmlldyAoUHJpdmF0ZSkKK0FM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAorCistICh2b2lkKXNhdmVCYWNrRm9y
d2FyZFNuYXBzaG90Rm9yQ3VycmVudEl0ZW0KK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNhdmVCYWNr
Rm9yd2FyZFNuYXBzaG90Rm9yQ3VycmVudEl0ZW0oKTsKK30KKworLSAodm9pZClzYXZlQmFja0Zv
cndhcmRTbmFwc2hvdEZvckl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZilpdGVtCit7Cisg
ICAgX2RhdGEtPl9pbXBsLT5zYXZlQmFja0ZvcndhcmRTbmFwc2hvdEZvckl0ZW0oKldlYktpdDo6
dG9JbXBsKGl0ZW0pKTsKK30KKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIGNv
bnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJlZjooV0tQYWdlR3Jv
dXBSZWYpcGFnZUdyb3VwUmVmCit7CisgICAgcmV0dXJuIFtzZWxmIGluaXRXaXRoRnJhbWU6ZnJh
bWUgY29udGV4dFJlZjpjb250ZXh0UmVmIHBhZ2VHcm91cFJlZjpwYWdlR3JvdXBSZWYgcmVsYXRl
ZFRvUGFnZTpuaWxdOworfQorCisjaWYgUExBVEZPUk0oTUFDKQorc3RhdGljIFdlYkNvcmU6OlVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
KE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgc3dpdGNo
IChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxl
ZnRUb1JpZ2h0OgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjo6TFRSOworICAgIGNhc2UgTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmln
aHRUb0xlZnQ6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOjpSVEw7CisgICAgfQorICAgIHJldHVybiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOjpMVFI7Cit9CisjZW5kaWYKKworLSAoaWQpaW5pdFdpdGhGcmFtZTooTlNS
ZWN0KWZyYW1lIGNvbnRleHRSZWY6KFdLQ29udGV4dFJlZiljb250ZXh0UmVmIHBhZ2VHcm91cFJl
ZjooV0tQYWdlR3JvdXBSZWYpcGFnZUdyb3VwUmVmIHJlbGF0ZWRUb1BhZ2U6KFdLUGFnZVJlZily
ZWxhdGVkUGFnZQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOworICAgIGNvbmZpZ3VyYXRpb24tPnNldFByb2Nlc3NQb29sKFdlYktp
dDo6dG9JbXBsKGNvbnRleHRSZWYpKTsKKyAgICBjb25maWd1cmF0aW9uLT5zZXRQYWdlR3JvdXAo
V2ViS2l0Ojp0b0ltcGwocGFnZUdyb3VwUmVmKSk7CisgICAgY29uZmlndXJhdGlvbi0+c2V0UmVs
YXRlZFBhZ2UoV2ViS2l0Ojp0b0ltcGwocmVsYXRlZFBhZ2UpKTsKKyNpZiBQTEFURk9STShNQUMp
CisgICAgY29uZmlndXJhdGlvbi0+c2V0UHJlZmVyZW5jZXMoJmNvbmZpZ3VyYXRpb24tPnBhZ2VH
cm91cCgpLT5wcmVmZXJlbmNlcygpKTsKKyAgICBjb25maWd1cmF0aW9uLT5wcmVmZXJlbmNlcygp
LT5zZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRvVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbihzZWxmLnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24p
KSk7CisjZW5kaWYKKworICAgIHJldHVybiBbc2VsZiBpbml0V2l0aEZyYW1lOmZyYW1lIHByb2Nl
c3NQb29sOipXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKSBjb25maWd1cmF0aW9uOldURk1vdmUo
Y29uZmlndXJhdGlvbildOworfQorCistIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUg
Y29uZmlndXJhdGlvblJlZjooV0tQYWdlQ29uZmlndXJhdGlvblJlZiljb25maWd1cmF0aW9uUmVm
Cit7CisgICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBXZWJL
aXQ6OnRvSW1wbChjb25maWd1cmF0aW9uUmVmKS0+Y29weSgpOworICAgIGF1dG8mIHByb2Nlc3NQ
b29sID0gKmNvbmZpZ3VyYXRpb24tPnByb2Nlc3NQb29sKCk7CisKKyAgICByZXR1cm4gW3NlbGYg
aW5pdFdpdGhGcmFtZTpmcmFtZSBwcm9jZXNzUG9vbDpwcm9jZXNzUG9vbCBjb25maWd1cmF0aW9u
OldURk1vdmUoY29uZmlndXJhdGlvbildOworfQorCistIChCT09MKXdhbnRzVXBkYXRlTGF5ZXIK
K3sKKyAgICByZXR1cm4gV2ViS2l0OjpXZWJWaWV3SW1wbDo6d2FudHNVcGRhdGVMYXllcigpOwor
fQorCistICh2b2lkKXVwZGF0ZUxheWVyCit7CisgICAgX2RhdGEtPl9pbXBsLT51cGRhdGVMYXll
cigpOworfQorCistIChXS1BhZ2VSZWYpcGFnZVJlZgoreworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKCZfZGF0YS0+X2ltcGwtPnBhZ2UoKSk7Cit9CisKKy0gKEJPT0wpY2FuQ2hhbmdlRnJhbWVM
YXlvdXQ6KFdLRnJhbWVSZWYpZnJhbWVSZWYKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5j
YW5DaGFuZ2VGcmFtZUxheW91dCgqV2ViS2l0Ojp0b0ltcGwoZnJhbWVSZWYpKTsKK30KKworLSAo
TlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbzooTlNQcmludElu
Zm8gKilwcmludEluZm8gZm9yRnJhbWU6KFdLRnJhbWVSZWYpZnJhbWVSZWYKK3sKKyAgICByZXR1
cm4gX2RhdGEtPl9pbXBsLT5wcmludE9wZXJhdGlvbldpdGhQcmludEluZm8ocHJpbnRJbmZvLCAq
V2ViS2l0Ojp0b0ltcGwoZnJhbWVSZWYpKTsKK30KKworLSAodm9pZClzZXRGcmFtZTooTlNSZWN0
KXJlY3QgYW5kU2Nyb2xsQnk6KE5TU2l6ZSlvZmZzZXQKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNl
dEZyYW1lQW5kU2Nyb2xsQnkoTlNSZWN0VG9DR1JlY3QocmVjdCksIE5TU2l6ZVRvQ0dTaXplKG9m
ZnNldCkpOworfQorCistICh2b2lkKWRpc2FibGVGcmFtZVNpemVVcGRhdGVzCit7CisgICAgX2Rh
dGEtPl9pbXBsLT5kaXNhYmxlRnJhbWVTaXplVXBkYXRlcygpOworfQorCistICh2b2lkKWVuYWJs
ZUZyYW1lU2l6ZVVwZGF0ZXMKK3sKKyAgICBfZGF0YS0+X2ltcGwtPmVuYWJsZUZyYW1lU2l6ZVVw
ZGF0ZXMoKTsKK30KKworLSAoQk9PTClmcmFtZVNpemVVcGRhdGVzRGlzYWJsZWQKK3sKKyAgICBy
ZXR1cm4gX2RhdGEtPl9pbXBsLT5mcmFtZVNpemVVcGRhdGVzRGlzYWJsZWQoKTsKK30KKworKyAo
dm9pZCloaWRlV29yZERlZmluaXRpb25XaW5kb3cKK3sKKyAgICBXZWJLaXQ6OldlYlZpZXdJbXBs
OjpoaWRlV29yZERlZmluaXRpb25XaW5kb3coKTsKK30KKworLSAoTlNTaXplKW1pbmltdW1TaXpl
Rm9yQXV0b0xheW91dAoreworICAgIHJldHVybiBOU1NpemVGcm9tQ0dTaXplKF9kYXRhLT5faW1w
bC0+bWluaW11bVNpemVGb3JBdXRvTGF5b3V0KCkpOworfQorCistICh2b2lkKXNldE1pbmltdW1T
aXplRm9yQXV0b0xheW91dDooTlNTaXplKW1pbmltdW1TaXplRm9yQXV0b0xheW91dAoreworICAg
IF9kYXRhLT5faW1wbC0+c2V0TWluaW11bVNpemVGb3JBdXRvTGF5b3V0KE5TU2l6ZVRvQ0dTaXpl
KG1pbmltdW1TaXplRm9yQXV0b0xheW91dCkpOworfQorCistIChOU1NpemUpc2l6ZVRvQ29udGVu
dEF1dG9TaXplTWF4aW11bVNpemUKK3sKKyAgICByZXR1cm4gTlNTaXplRnJvbUNHU2l6ZShfZGF0
YS0+X2ltcGwtPnNpemVUb0NvbnRlbnRBdXRvU2l6ZU1heGltdW1TaXplKCkpOworfQorCistICh2
b2lkKXNldFNpemVUb0NvbnRlbnRBdXRvU2l6ZU1heGltdW1TaXplOihOU1NpemUpc2l6ZVRvQ29u
dGVudEF1dG9TaXplTWF4aW11bVNpemUKK3sKKyAgICBfZGF0YS0+X2ltcGwtPnNldFNpemVUb0Nv
bnRlbnRBdXRvU2l6ZU1heGltdW1TaXplKE5TU2l6ZVRvQ0dTaXplKHNpemVUb0NvbnRlbnRBdXRv
U2l6ZU1heGltdW1TaXplKSk7Cit9CisKKy0gKEJPT0wpc2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0
Rm9yQXV0b0xheW91dAoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPnNob3VsZEV4cGFuZFRv
Vmlld0hlaWdodEZvckF1dG9MYXlvdXQoKTsKK30KKworLSAodm9pZClzZXRTaG91bGRFeHBhbmRU
b1ZpZXdIZWlnaHRGb3JBdXRvTGF5b3V0OihCT09MKXNob3VsZEV4cGFuZAoreworICAgIHJldHVy
biBfZGF0YS0+X2ltcGwtPnNldFNob3VsZEV4cGFuZFRvVmlld0hlaWdodEZvckF1dG9MYXlvdXQo
c2hvdWxkRXhwYW5kKTsKK30KKworLSAoQk9PTClzaG91bGRDbGlwVG9WaXNpYmxlUmVjdAorewor
ICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmNsaXBzVG9WaXNpYmxlUmVjdCgpOworfQorCistICh2
b2lkKXNldFNob3VsZENsaXBUb1Zpc2libGVSZWN0OihCT09MKWNsaXBzVG9WaXNpYmxlUmVjdAor
eworICAgIF9kYXRhLT5faW1wbC0+c2V0Q2xpcHNUb1Zpc2libGVSZWN0KGNsaXBzVG9WaXNpYmxl
UmVjdCk7Cit9CisKKy0gKE5TQ29sb3IgKil1bmRlcmxheUNvbG9yCit7CisgICAgcmV0dXJuIF9k
YXRhLT5faW1wbC0+dW5kZXJsYXlDb2xvcigpLmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQp
c2V0VW5kZXJsYXlDb2xvcjooTlNDb2xvciAqKXVuZGVybGF5Q29sb3IKK3sKKyAgICBfZGF0YS0+
X2ltcGwtPnNldFVuZGVybGF5Q29sb3IodW5kZXJsYXlDb2xvcik7Cit9CisKKy0gKE5TVmlldyAq
KV9pbnNwZWN0b3JBdHRhY2htZW50VmlldworeworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmlu
c3BlY3RvckF0dGFjaG1lbnRWaWV3KCk7Cit9CisKKy0gKHZvaWQpX3NldEluc3BlY3RvckF0dGFj
aG1lbnRWaWV3OihOU1ZpZXcgKiluZXdWaWV3Cit7CisgICAgX2RhdGEtPl9pbXBsLT5zZXRJbnNw
ZWN0b3JBdHRhY2htZW50VmlldyhuZXdWaWV3KTsKK30KKworLSAoTlNWaWV3ICopZnVsbFNjcmVl
blBsYWNlaG9sZGVyVmlldworeworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcoKTsKK30KKworLy8gRklYTUU6IFRoaXMgcmV0dXJucyBhbiBhdXRvcmVs
ZWFzZWQgb2JqZWN0LiBTaG91bGQgaXQgcmVhbGx5IGJlIHByZWZpeGVkICdjcmVhdGUnPworLSAo
TlNXaW5kb3cgKiljcmVhdGVGdWxsU2NyZWVuV2luZG93Cit7CisgICAgcmV0dXJuIF9kYXRhLT5f
aW1wbC0+ZnVsbFNjcmVlbldpbmRvdygpOworfQorCistICh2b2lkKWJlZ2luRGVmZXJyaW5nVmll
d0luV2luZG93Q2hhbmdlcworeworICAgIF9kYXRhLT5faW1wbC0+YmVnaW5EZWZlcnJpbmdWaWV3
SW5XaW5kb3dDaGFuZ2VzKCk7Cit9CisKKy0gKHZvaWQpZW5kRGVmZXJyaW5nVmlld0luV2luZG93
Q2hhbmdlcworeworICAgIF9kYXRhLT5faW1wbC0+ZW5kRGVmZXJyaW5nVmlld0luV2luZG93Q2hh
bmdlcygpOworfQorCistICh2b2lkKWVuZERlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXNTeW5j
Cit7CisgICAgX2RhdGEtPl9pbXBsLT5lbmREZWZlcnJpbmdWaWV3SW5XaW5kb3dDaGFuZ2VzU3lu
YygpOworfQorCistICh2b2lkKV9wcmVwYXJlRm9yTW92ZVRvV2luZG93OihOU1dpbmRvdyAqKXRh
cmdldFdpbmRvdyB3aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX2RhdGEtPl9pbXBsLT5wcmVwYXJlRm9yTW92ZVRv
V2luZG93KHRhcmdldFdpbmRvdywgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0geworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlckNvcHkoKTsKKyAgICB9KTsKK30KKworLSAoQk9PTClpc0RlZmVycmlu
Z1ZpZXdJbldpbmRvd0NoYW5nZXMKK3sKKyAgICByZXR1cm4gX2RhdGEtPl9pbXBsLT5pc0RlZmVy
cmluZ1ZpZXdJbldpbmRvd0NoYW5nZXMoKTsKK30KKworLSAoQk9PTCl3aW5kb3dPY2NsdXNpb25E
ZXRlY3Rpb25FbmFibGVkCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+d2luZG93T2NjbHVz
aW9uRGV0ZWN0aW9uRW5hYmxlZCgpOworfQorCistICh2b2lkKXNldFdpbmRvd09jY2x1c2lvbkRl
dGVjdGlvbkVuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIF9kYXRhLT5faW1wbC0+c2V0V2lu
ZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZChlbmFibGVkKTsKK30KKworLSAodm9pZClzZXRB
bGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczooQk9PTClhbGxvd3NCYWNrRm9yd2Fy
ZE5hdmlnYXRpb25HZXN0dXJlcworeworICAgIF9kYXRhLT5faW1wbC0+c2V0QWxsb3dzQmFja0Zv
cndhcmROYXZpZ2F0aW9uR2VzdHVyZXMoYWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVy
ZXMpOworfQorCistIChCT09MKWFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzCit7
CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+YWxsb3dzQmFja0ZvcndhcmROYXZpZ2F0aW9uR2Vz
dHVyZXMoKTsKK30KKworLSAoQk9PTClhbGxvd3NMaW5rUHJldmlldworeworICAgIHJldHVybiBf
ZGF0YS0+X2ltcGwtPmFsbG93c0xpbmtQcmV2aWV3KCk7Cit9CisKKy0gKHZvaWQpc2V0QWxsb3dz
TGlua1ByZXZpZXc6KEJPT0wpYWxsb3dzTGlua1ByZXZpZXcKK3sKKyAgICBfZGF0YS0+X2ltcGwt
PnNldEFsbG93c0xpbmtQcmV2aWV3KGFsbG93c0xpbmtQcmV2aWV3KTsKK30KKworLSAodm9pZClf
c2V0SWdub3Jlc0FsbEV2ZW50czooQk9PTClpZ25vcmVzQWxsRXZlbnRzCit7CisgICAgX2RhdGEt
Pl9pbXBsLT5zZXRJZ25vcmVzQWxsRXZlbnRzKGlnbm9yZXNBbGxFdmVudHMpOworfQorCisvLyBG
b3J3YXJkIF9zZXRJZ25vcmVzTm9uV2hlZWxNb3VzZUV2ZW50cyB0byBfc2V0SWdub3Jlc05vbldo
ZWVsRXZlbnRzIHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNsaWVudHMuCistICh2b2lkKV9z
ZXRJZ25vcmVzTm9uV2hlZWxNb3VzZUV2ZW50czooQk9PTClpZ25vcmVzTm9uV2hlZWxNb3VzZUV2
ZW50cworeworICAgIF9kYXRhLT5faW1wbC0+c2V0SWdub3Jlc05vbldoZWVsRXZlbnRzKGlnbm9y
ZXNOb25XaGVlbE1vdXNlRXZlbnRzKTsKK30KKworLSAodm9pZClfc2V0SWdub3Jlc05vbldoZWVs
RXZlbnRzOihCT09MKWlnbm9yZXNOb25XaGVlbEV2ZW50cworeworICAgIF9kYXRhLT5faW1wbC0+
c2V0SWdub3Jlc05vbldoZWVsRXZlbnRzKGlnbm9yZXNOb25XaGVlbEV2ZW50cyk7Cit9CisKKy0g
KEJPT0wpX2lnbm9yZXNOb25XaGVlbEV2ZW50cworeworICAgIHJldHVybiBfZGF0YS0+X2ltcGwt
Pmlnbm9yZXNOb25XaGVlbEV2ZW50cygpOworfQorCistIChCT09MKV9pZ25vcmVzQWxsRXZlbnRz
Cit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+aWdub3Jlc0FsbEV2ZW50cygpOworfQorCist
ICh2b2lkKV9zZXRPdmVycmlkZURldmljZVNjYWxlRmFjdG9yOihDR0Zsb2F0KWRldmljZVNjYWxl
RmFjdG9yCit7CisgICAgX2RhdGEtPl9pbXBsLT5wYWdlKCkuc2V0Q3VzdG9tRGV2aWNlU2NhbGVG
YWN0b3IoZGV2aWNlU2NhbGVGYWN0b3IpOworfQorCistIChDR0Zsb2F0KV9vdmVycmlkZURldmlj
ZVNjYWxlRmFjdG9yCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+cGFnZSgpLmN1c3RvbURl
dmljZVNjYWxlRmFjdG9yKCkudmFsdWVfb3IoMCk7Cit9CisKKy0gKFdLTGF5b3V0TW9kZSlfbGF5
b3V0TW9kZQoreworICAgIHJldHVybiBfZGF0YS0+X2ltcGwtPmxheW91dE1vZGUoKTsKK30KKwor
LSAodm9pZClfc2V0TGF5b3V0TW9kZTooV0tMYXlvdXRNb2RlKWxheW91dE1vZGUKK3sKKyAgICBf
ZGF0YS0+X2ltcGwtPnNldExheW91dE1vZGUobGF5b3V0TW9kZSk7Cit9CisKKy0gKENHU2l6ZSlf
Zml4ZWRMYXlvdXRTaXplCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+Zml4ZWRMYXlvdXRT
aXplKCk7Cit9CisKKy0gKHZvaWQpX3NldEZpeGVkTGF5b3V0U2l6ZTooQ0dTaXplKWZpeGVkTGF5
b3V0U2l6ZQoreworICAgIF9kYXRhLT5faW1wbC0+c2V0Rml4ZWRMYXlvdXRTaXplKGZpeGVkTGF5
b3V0U2l6ZSk7Cit9CisKKy0gKENHRmxvYXQpX3ZpZXdTY2FsZQoreworICAgIHJldHVybiBfZGF0
YS0+X2ltcGwtPnZpZXdTY2FsZSgpOworfQorCistICh2b2lkKV9zZXRWaWV3U2NhbGU6KENHRmxv
YXQpdmlld1NjYWxlCit7CisgICAgaWYgKHZpZXdTY2FsZSA8PSAwIHx8IGlzbmFuKHZpZXdTY2Fs
ZSkgfHwgaXNpbmYodmlld1NjYWxlKSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlZpZXcgc2NhbGUgc2hvdWxkIGJlIGEgcG9z
aXRpdmUgbnVtYmVyIl07CisKKyAgICBfZGF0YS0+X2ltcGwtPnNldFZpZXdTY2FsZSh2aWV3U2Nh
bGUpOworfQorCistICh2b2lkKV9zZXRUb3BDb250ZW50SW5zZXQ6KENHRmxvYXQpY29udGVudElu
c2V0Cit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+c2V0VG9wQ29udGVudEluc2V0KGNvbnRl
bnRJbnNldCk7Cit9CisKKy0gKENHRmxvYXQpX3RvcENvbnRlbnRJbnNldAoreworICAgIHJldHVy
biBfZGF0YS0+X2ltcGwtPnRvcENvbnRlbnRJbnNldCgpOworfQorCistICh2b2lkKV9zZXRUb3Rh
bEhlaWdodE9mQmFubmVyczooQ0dGbG9hdCl0b3RhbEhlaWdodE9mQmFubmVycworeworICAgIF9k
YXRhLT5faW1wbC0+c2V0VG90YWxIZWlnaHRPZkJhbm5lcnModG90YWxIZWlnaHRPZkJhbm5lcnMp
OworfQorCistIChDR0Zsb2F0KV90b3RhbEhlaWdodE9mQmFubmVycworeworICAgIHJldHVybiBf
ZGF0YS0+X2ltcGwtPnRvdGFsSGVpZ2h0T2ZCYW5uZXJzKCk7Cit9CisKKy0gKHZvaWQpX3NldE92
ZXJsYXlTY3JvbGxiYXJTdHlsZTooX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKXNjcm9sbGJhclN0
eWxlCit7CisgICAgX2RhdGEtPl9pbXBsLT5zZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUodG9Db3Jl
U2Nyb2xsYmFyU3R5bGUoc2Nyb2xsYmFyU3R5bGUpKTsKK30KKworLSAoX1dLT3ZlcmxheVNjcm9s
bGJhclN0eWxlKV9vdmVybGF5U2Nyb2xsYmFyU3R5bGUKK3sKKyAgICByZXR1cm4gdG9BUElTY3Jv
bGxiYXJTdHlsZShfZGF0YS0+X2ltcGwtPm92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpKTsKK30KKwor
LSAoTlNDb2xvciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKK3sKKyAgICByZXR1cm4g
X2RhdGEtPl9pbXBsLT5wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKS5hdXRvcmVsZWFzZSgp
OworfQorCistIChCT09MKWlzVXNpbmdVSVNpZGVDb21wb3NpdGluZworeworICAgIHJldHVybiBf
ZGF0YS0+X2ltcGwtPmlzVXNpbmdVSVNpZGVDb21wb3NpdGluZygpOworfQorCistICh2b2lkKXNl
dEFsbG93c01hZ25pZmljYXRpb246KEJPT0wpYWxsb3dzTWFnbmlmaWNhdGlvbgoreworICAgIF9k
YXRhLT5faW1wbC0+c2V0QWxsb3dzTWFnbmlmaWNhdGlvbihhbGxvd3NNYWduaWZpY2F0aW9uKTsK
K30KKworLSAoQk9PTClhbGxvd3NNYWduaWZpY2F0aW9uCit7CisgICAgcmV0dXJuIF9kYXRhLT5f
aW1wbC0+YWxsb3dzTWFnbmlmaWNhdGlvbigpOworfQorCistICh2b2lkKW1hZ25pZnlXaXRoRXZl
bnQ6KE5TRXZlbnQgKilldmVudAoreworICAgIF9kYXRhLT5faW1wbC0+bWFnbmlmeVdpdGhFdmVu
dChldmVudCk7Cit9CisKKyNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQorLSAodm9pZCly
b3RhdGVXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAoreworICAgIF9kYXRhLT5faW1wbC0+cm90
YXRlV2l0aEV2ZW50KGV2ZW50KTsKK30KKyNlbmRpZgorCistICh2b2lkKV9nZXN0dXJlRXZlbnRX
YXNOb3RIYW5kbGVkQnlXZWJDb3JlOihOU0V2ZW50ICopZXZlbnQKK3sKKyAgICBfZGF0YS0+X2lt
cGwtPmdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNvcmVGcm9tVmlld09ubHkoZXZlbnQp
OworfQorCistICh2b2lkKV9zaW11bGF0ZU1vdXNlTW92ZTooTlNFdmVudCAqKWV2ZW50Cit7Cisg
ICAgX2RhdGEtPl9pbXBsLT5tb3VzZU1vdmVkKGV2ZW50KTsKK30KKworLSAodm9pZClzbWFydE1h
Z25pZnlXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAoreworICAgIF9kYXRhLT5faW1wbC0+c21h
cnRNYWduaWZ5V2l0aEV2ZW50KGV2ZW50KTsKK30KKworLSAodm9pZClzZXRNYWduaWZpY2F0aW9u
Oihkb3VibGUpbWFnbmlmaWNhdGlvbiBjZW50ZXJlZEF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQKK3sK
KyAgICBfZGF0YS0+X2ltcGwtPnNldE1hZ25pZmljYXRpb24obWFnbmlmaWNhdGlvbiwgTlNQb2lu
dFRvQ0dQb2ludChwb2ludCkpOworfQorCistICh2b2lkKXNldE1hZ25pZmljYXRpb246KGRvdWJs
ZSltYWduaWZpY2F0aW9uCit7CisgICAgX2RhdGEtPl9pbXBsLT5zZXRNYWduaWZpY2F0aW9uKG1h
Z25pZmljYXRpb24pOworfQorCistIChkb3VibGUpbWFnbmlmaWNhdGlvbgoreworICAgIHJldHVy
biBfZGF0YS0+X2ltcGwtPm1hZ25pZmljYXRpb24oKTsKK30KKworLSAodm9pZClfc2V0Q3VzdG9t
U3dpcGVWaWV3czooTlNBcnJheSAqKWN1c3RvbVN3aXBlVmlld3MKK3sKKyAgICBfZGF0YS0+X2lt
cGwtPnNldEN1c3RvbVN3aXBlVmlld3MoY3VzdG9tU3dpcGVWaWV3cyk7Cit9CisKKy0gKHZvaWQp
X3NldEN1c3RvbVN3aXBlVmlld3NUb3BDb250ZW50SW5zZXQ6KGZsb2F0KXRvcENvbnRlbnRJbnNl
dAoreworICAgIF9kYXRhLT5faW1wbC0+c2V0Q3VzdG9tU3dpcGVWaWV3c1RvcENvbnRlbnRJbnNl
dCh0b3BDb250ZW50SW5zZXQpOworfQorCistIChCT09MKV90cnlUb1N3aXBlV2l0aEV2ZW50OihO
U0V2ZW50ICopZXZlbnQgaWdub3JpbmdQaW5uZWRTdGF0ZTooQk9PTClpZ25vcmluZ1Bpbm5lZFN0
YXRlCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+dHJ5VG9Td2lwZVdpdGhFdmVudChldmVu
dCwgaWdub3JpbmdQaW5uZWRTdGF0ZSk7Cit9CisKKy0gKHZvaWQpX3NldERpZE1vdmVTd2lwZVNu
YXBzaG90Q2FsbGJhY2s6KHZvaWQoXikoQ0dSZWN0KSljYWxsYmFjaworeworICAgIF9kYXRhLT5f
aW1wbC0+c2V0RGlkTW92ZVN3aXBlU25hcHNob3RDYWxsYmFjayhjYWxsYmFjayk7Cit9CisKKy0g
KGlkKV9pbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdDoo
V0tIaXRUZXN0UmVzdWx0UmVmKWhpdFRlc3RSZXN1bHQgd2l0aFR5cGU6KHVpbnQzMl90KXR5cGUg
dXNlckRhdGE6KFdLVHlwZVJlZil1c2VyRGF0YQoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0g
KHZvaWQpX3ByZXBhcmVGb3JJbW1lZGlhdGVBY3Rpb25BbmltYXRpb24KK3sKK30KKworLSAodm9p
ZClfY2FuY2VsSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uCit7Cit9CisKKy0gKHZvaWQpX2NvbXBs
ZXRlSW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uCit7Cit9CisKKy0gKHZvaWQpX2RpZENoYW5nZUNv
bnRlbnRTaXplOihOU1NpemUpbmV3U2l6ZQoreworfQorCistICh2b2lkKV9kaXNtaXNzQ29udGVu
dFJlbGF0aXZlQ2hpbGRXaW5kb3dzCit7CisgICAgX2RhdGEtPl9pbXBsLT5kaXNtaXNzQ29udGVu
dFJlbGF0aXZlQ2hpbGRXaW5kb3dzRnJvbVZpZXdPbmx5KCk7Cit9CisKKy0gKHZvaWQpX2Rpc21p
c3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3NXaXRoQW5pbWF0aW9uOihCT09MKXdpdGhBbmlt
YXRpb24KK3sKKyAgICBfZGF0YS0+X2ltcGwtPmRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdp
bmRvd3NXaXRoQW5pbWF0aW9uRnJvbVZpZXdPbmx5KHdpdGhBbmltYXRpb24pOworfQorCistICh2
b2lkKV9zZXRBdXRvbWF0aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHM6KEJPT0wpYXV0b21hdGlj
YWxseUFkanVzdHNDb250ZW50SW5zZXRzCit7CisgICAgX2RhdGEtPl9pbXBsLT5zZXRBdXRvbWF0
aWNhbGx5QWRqdXN0c0NvbnRlbnRJbnNldHMoYXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5z
ZXRzKTsKK30KKworLSAoQk9PTClfYXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5zZXRzCit7
CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+YXV0b21hdGljYWxseUFkanVzdHNDb250ZW50SW5z
ZXRzKCk7Cit9CisKKy0gKHZvaWQpc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjooTlNV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKXVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24K
K3sKKyAgICBbc3VwZXIgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp1c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uXTsKKworICAgIF9kYXRhLT5faW1wbC0+c2V0VXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKK30KKworLSAo
Qk9PTClfd2FudHNNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3Cit7CisjaWYgSEFWRShUT1VDSF9C
QVIpCisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+Y2xpZW50V2FudHNNZWRpYVBsYXliYWNrQ29u
dHJvbHNWaWV3KCk7CisjZWxzZQorICAgIHJldHVybiBOTzsKKyNlbmRpZgorfQorCistICh2b2lk
KV9zZXRXYW50c01lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KEJPT0wpd2FudHNNZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3Cit7CisjaWYgSEFWRShUT1VDSF9CQVIpCisgICAgX2RhdGEtPl9pbXBs
LT5zZXRDbGllbnRXYW50c01lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcod2FudHNNZWRpYVBsYXli
YWNrQ29udHJvbHNWaWV3KTsKKyNlbmRpZgorfQorCistIChpZClfbWVkaWFQbGF5YmFja0NvbnRy
b2xzVmlldworeworI2lmIEhBVkUoVE9VQ0hfQkFSKSAmJiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NP
TlRST0xTX01BTkFHRVIpCisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+Y2xpZW50V2FudHNNZWRp
YVBsYXliYWNrQ29udHJvbHNWaWV3KCkgPyBfZGF0YS0+X2ltcGwtPm1lZGlhUGxheWJhY2tDb250
cm9sc1ZpZXcoKSA6IG5pbDsKKyNlbHNlCisgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorfQorCisv
LyBUaGlzIG1ldGhvZCBpcyBmb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4KKy0gKHZvaWQpX2Fk
ZE1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXc6KGlkKW1lZGlhUGxheWJhY2tDb250cm9sc1ZpZXcK
K3sKK30KKworLy8gVGhpcyBtZXRob2QgaXMgZm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCist
ICh2b2lkKV9yZW1vdmVNZWRpYVBsYXliYWNrQ29udHJvbHNWaWV3Cit7Cit9CisKKy0gKHZvaWQp
X2RvQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlOih2b2lkICheKSh2b2lkKSl1cGRhdGVCbG9j
aworeworICAgIGF1dG8gdXBkYXRlQmxvY2tDb3B5ID0gbWFrZUJsb2NrUHRyKHVwZGF0ZUJsb2Nr
KTsKKyAgICBfZGF0YS0+X2ltcGwtPnBhZ2UoKS5jYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBk
YXRlKFt1cGRhdGVCbG9ja0NvcHldIHsKKyAgICAgICAgaWYgKHVwZGF0ZUJsb2NrQ29weSkKKyAg
ICAgICAgICAgIHVwZGF0ZUJsb2NrQ29weSgpOworICAgIH0pOworfQorCistICh2b2lkKV9zZXRT
aG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlczooQk9PTClzaG91bGRTdXBwcmVzcwor
eworICAgIF9kYXRhLT5faW1wbC0+c2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5n
ZXMoc2hvdWxkU3VwcHJlc3MpOworfQorCistICh2b2lkKXZpZXdEaWRDaGFuZ2VFZmZlY3RpdmVB
cHBlYXJhbmNlCit7CisgICAgLy8gVGhpcyBjYW4gYmUgY2FsbGVkIGR1cmluZyBbc3VwZXIgaW5p
dFdpdGhDb2RlcjpdIGFuZCBbc3VwZXIgaW5pdFdpdGhGcmFtZTpdLgorICAgIC8vIFRoYXQgaXMg
YmVmb3JlIF9kYXRhIG9yIF9pbXBsIGlzIHJlYWR5IHRvIGJlIHVzZWQsIHNvIGNoZWNrLiA8cmRh
cjovL3Byb2JsZW0vMzk2MTEyMzY+CisgICAgaWYgKCFfZGF0YSB8fCAhX2RhdGEtPl9pbXBsKQor
ICAgICAgICByZXR1cm47CisKKyAgICBfZGF0YS0+X2ltcGwtPmVmZmVjdGl2ZUFwcGVhcmFuY2VE
aWRDaGFuZ2UoKTsKK30KKworLSAodm9pZClfc2V0VXNlU3lzdGVtQXBwZWFyYW5jZTooQk9PTCl1
c2VTeXN0ZW1BcHBlYXJhbmNlCit7CisgICAgX2RhdGEtPl9pbXBsLT5zZXRVc2VTeXN0ZW1BcHBl
YXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpOworfQorCistIChCT09MKV91c2VTeXN0ZW1BcHBl
YXJhbmNlCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+dXNlU3lzdGVtQXBwZWFyYW5jZSgp
OworfQorCistIChCT09MKWFjY2VwdHNQcmV2aWV3UGFuZWxDb250cm9sOihRTFByZXZpZXdQYW5l
bCAqKXBhbmVsCit7CisgICAgcmV0dXJuIF9kYXRhLT5faW1wbC0+YWNjZXB0c1ByZXZpZXdQYW5l
bENvbnRyb2wocGFuZWwpOworfQorCistICh2b2lkKWJlZ2luUHJldmlld1BhbmVsQ29udHJvbDoo
UUxQcmV2aWV3UGFuZWwgKilwYW5lbAoreworICAgIF9kYXRhLT5faW1wbC0+YmVnaW5QcmV2aWV3
UGFuZWxDb250cm9sKHBhbmVsKTsKK30KKworLSAodm9pZCllbmRQcmV2aWV3UGFuZWxDb250cm9s
OihRTFByZXZpZXdQYW5lbCAqKXBhbmVsCit7CisgICAgX2RhdGEtPl9pbXBsLT5lbmRQcmV2aWV3
UGFuZWxDb250cm9sKHBhbmVsKTsKK30KKworQGVuZAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECisKKyNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi43ZjE4OWI5MjY2OWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZiAhVEFSR0VUX09TX0lQSE9ORQorCisjaW1wb3J0ICJXS1Zp
ZXdQcml2YXRlLmgiCisKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK0BjbGFzcyBfV0tUaHVtYm5haWxW
aWV3OworCitAaW50ZXJmYWNlIFdLVmlldyAoKQorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0VGh1bWJuYWlsVmlldzopIF9XS1RodW1ibmFpbFZpZXcgKl90aHVtYm5haWxWaWV3Owor
QGVuZAorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFk
L21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dh
bWVwYWQvbWFjL1VJR2FtZXBhZFByb3ZpZGVyTWFjLm1tCmluZGV4IDFiNGMyMzZhNjlmOS4uMDhl
OGM3ZWNhODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HYW1lcGFkL21h
Yy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9H
YW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQpAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldLQVBJQ2FzdC5oIgorI2ltcG9ydCAi
V0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogCkBAIC00Myw2ICs0NCwxMSBAQCBXZWJQYWdlUHJv
eHkqIFVJR2FtZXBhZFByb3ZpZGVyOjpwbGF0Zm9ybVdlYlBhZ2VQcm94eUZvckdhbWVwYWRJbnB1
dCgpCiAgICAgaWYgKFtyZXNwb25kZXIgaXNLaW5kT2ZDbGFzczpbV0tXZWJWaWV3IGNsYXNzXV0p
CiAgICAgICAgIHJldHVybiAoKFdLV2ViVmlldyAqKXJlc3BvbmRlciktPl9wYWdlLmdldCgpOwog
CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBpZiAoW3Jlc3Bv
bmRlciBpc0tpbmRPZkNsYXNzOltXS1ZpZXcgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIHRvSW1w
bCgoKFdLVmlldyAqKXJlc3BvbmRlcikucGFnZVJlZik7CisgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSVByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0
b3JVSVByb3h5TWFjLm1tCmluZGV4IDUyZWY3NmRlMjY0Yi4uODU5NTQ4NTExN2M5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJ
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9X
ZWJJbnNwZWN0b3JVSVByb3h5TWFjLm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0ICJXS0lu
c3BlY3RvclByaXZhdGVNYWMuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
aCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2Fn
ZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCmluZGV4IDdlMGY1MTIzMmIwNS4uMjdlYzViOWYyNWRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGFnZUNsaWVudC5oCkBAIC03OSw2ICs3OSw5IEBAIE9CSkNfQ0xBU1MgVUlTY3JvbGxF
dmVudDsKIE9CSkNfQ0xBU1MgVUlTY3JvbGxWaWV3OwogT0JKQ19DTEFTUyBfV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeTsKIAorI2lmIFVTRShBUFBLSVQpCitPQkpDX0NMQVNTIFdLVmlldzsKKyNlbmRp
ZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBBUEkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAppbmRleCAzNmFlYzMwNTgxOWUuLmExZWNkOTQ0YzI0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBs
TWFjLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFj
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBAY2xhc3Mg
V0tFZGl0b3JVbmRvVGFyZ2V0OworQGNsYXNzIFdLVmlldzsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCmluZGV4IGIwOGU3NTg2OGMxYy4u
YmFjZDc2MDA5MWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VD
bGllbnRJbXBsTWFjLm1tCkBAIC00NSw2ICs0NSw3IEBACiAjaW1wb3J0ICJXS0FQSUNhc3QuaCIK
ICNpbXBvcnQgIldLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3Ry
aW5nQ0YuaCIKKyNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCIKICNpbXBv
cnQgIldlYkNvbG9yUGlja2VyTWFjLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCAwNzg4Mzg0
MjkxYmMuLmJkNTM5ZDIyYzE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oCkBAIC0zOSw2ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CiB9CiAKK0BjbGFzcyBXS1Zp
ZXc7CiBAY2xhc3MgV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZpZXc7CiAKIHR5cGVkZWYg
ZW51bSBGdWxsU2NyZWVuU3RhdGUgOiBOU0ludGVnZXIgRnVsbFNjcmVlblN0YXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tGdWxsU2NyZWVuV2luZG93
Q29udHJvbGxlci5tbQppbmRleCA5YjFjOGYyN2IyYTYuLjNhYzcxZDFhNGRjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xs
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRv
d0NvbnRyb2xsZXIubW0KQEAgLTMzLDYgKzMzLDggQEAKICNpbXBvcnQgIk5hdGl2ZVdlYk1vdXNl
RXZlbnQuaCIKICNpbXBvcnQgIlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2ltcG9y
dCAiV0tBUElDYXN0LmgiCisjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tW
aWV3UHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgogI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94
eU1hYy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFj
LmgKaW5kZXggMjdlZWY1OGQzYjU3Li4wOTBlMTQ5ODI1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBPQkpDX0NMQVNTIE5TUG9wVXBCdXR0
b25DZWxsOworT0JKQ19DTEFTUyBXS1ZpZXc7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZjY1
ZGIzZWM4YmYuLmM5NGUxZDlmMDk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODc4LDYgKzE4NzgsNyBAQAogCQlCQzg1N0ZCNTEy
QjgzMEU2MDBFREVCMkUgLyogQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGQjMxMkI4MzBFNjAwRURFQjJF
IC8qIEFQSU9wZW5QYW5lbFBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJQkM4NTdGRTYxMkI4NDNEODAw
RURFQjJFIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4NTdGRTQxMkI4NDNEODAwRURFQjJFIC8qIFdL
T3BlblBhbmVsUGFyYW1ldGVyc1JlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDODY5OUI1MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODY5OUIyMTE2
QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCQzg2OTlCNzExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
ODY5OUI0MTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXdJbnRlcm5hbC5oICovOyB9OwogCQlCQzhB
NTAxNTExNzY1RjU2MDA3NTc1NzMgLyogV0tSZXRhaW5QdHIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEE1MDE0MTE3NjVGNTYwMDc1NzU3MyAvKiBX
S1JldGFpblB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDOEFDQTEzMTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGguaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEFDQTBGMTY2NzBE
N0EwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGguaCAqLzsgfTsKIAkJQkM4RjJGMkIxNjI3M0Ey
QzAwNUZBQ0I1IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4RjJGMjkx
NjI3M0EyQzAwNUZBQ0I1IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJv
bGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xOTQ4LDYgKzE5NDksNyBAQAogCQlCQ0Y2OUZBMjExNzZEMDE0MDA0NzFBNTIgLyogQVBJTmF2
aWdhdGlvbkRhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0aW9uRGF0YS5oICovOyB9
OwogCQlCQ0Y2OUZBOTExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YVJlZi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGNjlGQTcxMTc2
RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGFSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0ZENTQ4QzEzMkQ4MjY4MDA1NUQ4MTYg
LyogV0tFcnJvckNGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0ZENTQ4QTEzMkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkZBNjE3OUYxMkYwQjk5RDAw
MzNFMENBIC8qIFdLVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJGQTYxNzlFMTJGMEI5OUQwMDMzRTBDQSAvKiBXS1ZpZXdQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzA5
QUU1RTkxMjUyNTdDMjAwMjU4MjVEIC8qIFdLTmF0aXZlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwOUFFNUU4MTI1MjU3QzIwMDI1ODI1RCAv
KiBXS05hdGl2ZUV2ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzBDRTcyQTAxMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzBDRTcyOUUxMjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQlDMENFNzJBMTEyNDdFNzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMENFNzI5RjEyNDdF
NzFEMDBCQzBFQzQgLyogV2ViUGFnZU1lc3NhZ2VzLmggKi87IH07CkBAIC02NDczLDYgKzY0NzUs
OCBAQAogCQlCQzg1N0ZFNDEyQjg0M0Q4MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLT3BlblBhbmVsUGFyYW1l
dGVyc1JlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzg1N0ZFNTEyQjg0M0Q4
MDBFREVCMkUgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLT3BlblBhbmVsUGFyYW1ldGVyc1JlZi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODY5OUIyMTE2QUFEQUEwMDJBOTI1QiAvKiBXS1Zp
ZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tWaWV3Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODY5OUIzMTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1ZpZXcubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDODY5OUI0MTE2QUFEQUEwMDJBOTI1QiAvKiBX
S1ZpZXdJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ZpZXdJ
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzg3REZBOTEwMTgxMDE0
MDA1NjQyMTYgLyogbGliaWN1Y29yZS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGli
aWN1Y29yZS5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmljdWNvcmUuZHlsaWI7IHNvdXJjZVRy
ZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCUJDOEE1MDE0MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1Jl
dGFpblB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1JldGFpblB0ci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzhBQ0EwRjE2NjcwRDdBMDA0QzE5NDEg
LyogT2JqQ09iamVjdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9i
akNPYmplY3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjU5Nyw2ICs2
NjAxLDcgQEAKIAkJQkNGNjlGQTgxMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlvbkRhdGFS
ZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tOYXZpZ2F0aW9u
RGF0YVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRkQ1NDg5MTMyRDgy
NjgwMDU1RDgxNiAvKiBXS0Vycm9yQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tFcnJvckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNG
RDU0OEExMzJEODI2ODAwNTVEODE2IC8qIFdLRXJyb3JDRi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0Vycm9yQ0YuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkZBNjE3OUUxMkYwQjk5RDAwMzNFMENBIC8qIFdLVmlld1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tWaWV3UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDFBMjYwMDEyNjYyRjIxMDBDOUVENTUgLyogU2hhcmVhYmxlQml0bWFwQ0cu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2hhcmVhYmxlQml0bWFw
Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDJCRkYxNTEyNTE0RkQ4MDA5
Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMwMkJGRjFEMTI1MTUwMkUwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2
NTIsNiArNzY1Nyw3IEBACiAJCQkJN0NENUVCQkQxNzQ2QjA0QzAwMEMxQzQ1IC8qIFdLVHlwZVJl
ZldyYXBwZXIuaCAqLywKIAkJCQk3Q0Q1RUJCQzE3NDZCMDRDMDAwQzFDNDUgLyogV0tUeXBlUmVm
V3JhcHBlci5tbSAqLywKIAkJCQlCQzg2OTlCMjExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lmgg
Ki8sCisJCQkJQkZBNjE3OUUxMkYwQjk5RDAwMzNFMENBIC8qIFdLVmlld1ByaXZhdGUuaCAqLywK
IAkJCSk7CiAJCQluYW1lID0gRGVwcmVjYXRlZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xMjQyMiw2ICsxMjQyOCw4IEBACiAJCUJDMTExQjQ3MTEyRjYxNjkwMDMzN0JBQiAvKiBt
YWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJDODY5
OUIzMTE2QUFEQUEwMDJBOTI1QiAvKiBXS1ZpZXcubW0gKi8sCisJCQkJQkM4Njk5QjQxMTZBQURB
QTAwMkE5MjVCIC8qIFdLVmlld0ludGVybmFsLmggKi8sCiAJCQkJMEZGRUQ5OTAyM0EzMjAzODAw
RUVGNDU5IC8qIFdLV2ViVmlld01hYy5oICovLAogCQkJCTBGRkVEOThGMjNBMzIwMzcwMEVFRjQ1
OSAvKiBXS1dlYlZpZXdNYWMubW0gKi8sCiAJCQkJMEY0NUEzMzMyMzlEODlBRjAwMjk0QUJGIC8q
IFdLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nTWFjLmggKi8sCkBAIC0xNTE5MCw3ICsxNTE5OCw5
IEBACiAJCQkJN0M4ODJERkExQzdFOTk3MzAwNkJGNzMxIC8qIFdLVXNlclNjcmlwdFByaXZhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMkE0MUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJT
Y3JpcHRSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODY5OUI1MTE2QUFEQUEwMDJBOTI1QiAv
KiBXS1ZpZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDODY5OUI3MTE2QUFEQUEwMDJBOTI1QiAv
KiBXS1ZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyOEE0OTcxQUY5NjVBMTAw
RjE5MEM5IC8qIFdLVmlld0xheW91dFN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKKwkJCQlCRkE2
MTc5RjEyRjBCOTlEMDAzM0UwQ0EgLyogV0tWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTEzNkU1MTYyMzZBNjIxMTAwNzRGRDVEIC8qIFdLV2ViQXJjaGl2ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEzNkU1MTQyMzZBNjBEQzAwNzRGRDVEIC8qIFdLV2ViQXJjaGl2ZVJlZi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzVFMUFGRUIxNkIyMEI3RTAwNkNDMUYyIC8qIFdLV2ViQXJjaGl2
ZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvSmF2YVNjcmlwdFRlc3QuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2YVNjcmlwdFRlc3Qu
aAppbmRleCAzMDc1NzRjYzU2ZjIuLmNjMzgwYmUwYzQzOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSmF2
YVNjcmlwdFRlc3QuaApAQCAtMjYsOCArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKK09CSkNfQ0xBU1MgV0tWaWV3OwogT0JKQ19DTEFTUyBXZWJWaWV3OwotT0JK
Q19DTEFTUyBXS1dlYlZpZXc7CiAjZW5kaWYKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAK
QEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiA6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBydW5KU1Rlc3QoY29uc3QgY2hh
ciogd2ViVmlld0V4cHIsIGNvbnN0IGNoYXIqIHNjcmlwdEV4cHIsIGNvbnN0IGNoYXIqIGV4cGVj
dGVkUmVzdWx0RXhwciwgV2ViVmlldyAqLCBjb25zdCBjaGFyKiBzY3JpcHQsIGNvbnN0IGNoYXIq
IGV4cGVjdGVkUmVzdWx0KTsKLTo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IHJ1bkpTVGVzdChj
b25zdCBjaGFyKiB2aWV3RXhwciwgY29uc3QgY2hhciogc2NyaXB0RXhwciwgY29uc3QgY2hhciog
ZXhwZWN0ZWRSZXN1bHRFeHByLCBXS1dlYlZpZXcgKiwgY29uc3QgY2hhciogc2NyaXB0LCBjb25z
dCBjaGFyKiBleHBlY3RlZFJlc3VsdCk7Cis6OnRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBydW5K
U1Rlc3QoY29uc3QgY2hhciogdmlld0V4cHIsIGNvbnN0IGNoYXIqIHNjcmlwdEV4cHIsIGNvbnN0
IGNoYXIqIGV4cGVjdGVkUmVzdWx0RXhwciwgV0tWaWV3ICosIGNvbnN0IGNoYXIqIHNjcmlwdCwg
Y29uc3QgY2hhciogZXhwZWN0ZWRSZXN1bHQpOwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJW
aWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IDdhMDQ3
YWMyMjc2Ny4uNWU4NTAyNjg5ZjEzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Bs
YXRmb3JtV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3
LmgKQEAgLTM5LDEzICszOSwxMyBAQAogCiAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFQTEFU
Rk9STShHVEspCiAjaWZkZWYgX19PQkpDX18KLUBjbGFzcyBXS1dlYlZpZXc7CitAY2xhc3MgV0tW
aWV3OwogQGNsYXNzIE5TV2luZG93OwogI2Vsc2UKLWNsYXNzIFdLV2ViVmlldzsKK2NsYXNzIFdL
VmlldzsKIGNsYXNzIE5TV2luZG93OwogI2VuZGlmCi10eXBlZGVmIFdLV2ViVmlldyAqUGxhdGZv
cm1XS1ZpZXc7Cit0eXBlZGVmIFdLVmlldyAqUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIE5TV2lu
ZG93ICpQbGF0Zm9ybVdpbmRvdzsKICNlbGlmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgV0tWaWV3
UmVmIFBsYXRmb3JtV0tWaWV3OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9DdXN0b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvQ3VzdG9tUHJvdG9jb2xzU3luY1hIUlRlc3QubW0KaW5kZXggM2E2NTkzYzliODE2Li5lYjc2
MDg1ZjAyMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvQ3VzdG9tUHJv
dG9jb2xzU3luY1hIUlRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9DdXN0
b21Qcm90b2NvbHNTeW5jWEhSVGVzdC5tbQpAQCAtMzYsNyArMzYsNyBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tSZXRhaW5QdHIu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1N0cmluZy5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwpAQCAt
NDcsMTYgKzQ3LDIyIEBAIFRFU1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIFN5bmNYSFIp
CiB7CiAgICAgW1Rlc3RQcm90b2NvbCByZWdpc3RlcldpdGhTY2hlbWU6QCJodHRwIl07CiAKKyAg
ICBSZXRhaW5QdHI8V0tQcm9jZXNzR3JvdXA+IHByb2Nlc3NHcm91cCA9IGFkb3B0TlMoW1tXS1By
b2Nlc3NHcm91cCBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwPiBicm93c2luZ0NvbnRleHRHcm91cCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJUZXN0SWRlbnRpZmllciJdKTsKKwog
ICAgIC8vIEFsbG93IGZpbGUgVVJMcyB0byBsb2FkIG5vbi1maWxlIHJlc291cmNlcwotICAgIGF1
dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIHdrVmlldy5nZXQoKS5jb25maWd1cmF0aW9u
LnByZWZlcmVuY2VzLl91bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkID0gWUVTOwot
ICAgIFJldGFpblB0cjxUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEJsb2NrVG9SdW5PbkxvYWQ6XihXS1dlYlZpZXcgKnNlbmRlcikgewotICAgICAgICBFWFBFQ1Rf
SlNfRVEod2tWaWV3LmdldCgpLl9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3LCAid2lu
ZG93Ll90ZXN0UmVzdWx0IiwgIlBBU1MiKTsKLSAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsK
KyAgICBXS1JldGFpblB0cjxXS1ByZWZlcmVuY2VzUmVmPiBwcmVmZXJlbmNlcyA9IGFkb3B0V0so
V0tQcmVmZXJlbmNlc0NyZWF0ZSgpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0VW5pdmVyc2FsQWNj
ZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcy5nZXQoKSwgdHJ1ZSk7CisgICAgV0tQ
YWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKS5fcGFnZUdy
b3VwUmVmLCBwcmVmZXJlbmNlcy5nZXQoKSk7CisKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiB3a1Zp
ZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250
ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICAgUmV0YWluUHRyPFRl
c3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+IGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9h
ZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgICBFWFBF
Q1RfSlNfRVEod2tWaWV3LmdldCgpLnBhZ2VSZWYsICJ3aW5kb3cuX3Rlc3RSZXN1bHQiLCAiUEFT
UyIpOworICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKICAgICB9XSk7Ci0gICAgd2tWaWV3
LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIHdrVmlldy5n
ZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOwogCi0gICAgV0tQYWdlTG9hZFVSTCh3a1ZpZXcuZ2V0KCkuX3BhZ2VSZWZGb3JUcmFuc2l0
aW9uVG9XS1dlYlZpZXcsIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJjdXN0b20tcHJvdG9j
b2wtc3luYy14aHIiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdrVmlldy5nZXQoKS5w
YWdlUmVmLCBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiY3VzdG9tLXByb3RvY29sLXN5bmMt
eGhyIiwgImh0bWwiKSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5p
c2hlZCk7CiAgICAgW1Rlc3RQcm90b2NvbCB1bnJlZ2lzdGVyXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0RlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFu
Z2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9EZWZlcnJlZFZpZXdJbldp
bmRvd1N0YXRlQ2hhbmdlLm1tCmluZGV4IDg2NTMzMzUwNzFmYS4uNTY0OGYzMTA2MDhhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9EZWZlcnJlZFZpZXdJbldp
bmRvd1N0YXRlQ2hhbmdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L0RlZmVycmVkVmlld0luV2luZG93U3RhdGVDaGFuZ2UubW0KQEAgLTMwLDcgKzMwLDcgQEAKICNp
bXBvcnQgIkphdmFTY3JpcHRUZXN0LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCkBAIC01Nyw3ICs1Nyw3IEBAIFRFU1QoV2ViS2l0LCBEZWZlcnJlZFZp
ZXdJbldpbmRvd1N0YXRlQ2hhbmdlKQogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgi
TW91c2VNb3ZlQWZ0ZXJDcmFzaFRlc3QiKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dyhjb250ZXh0LmdldCgpKTsKLSAgICBXS1dlYlZpZXcgKndrVmlldyA9IHdlYlZpZXcucGxhdGZv
cm1WaWV3KCk7CisgICAgV0tWaWV3ICp3a1ZpZXcgPSB3ZWJWaWV3LnBsYXRmb3JtVmlldygpOwog
ICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwogCiAgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoImxv
dHMtb2YtdGV4dCIsICJodG1sIikpOwpAQCAtNjcsMTMgKzY3LDEzIEBAIFRFU1QoV2ViS2l0LCBE
ZWZlcnJlZFZpZXdJbldpbmRvd1N0YXRlQ2hhbmdlKQogCiAgICAgRVhQRUNUX0pTX0ZBTFNFKHdl
YlZpZXcucGFnZSgpLCAiZG9jdW1lbnQuaGlkZGVuIik7CiAKLSAgICBbd2tWaWV3IF9iZWdpbkRl
ZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXNdOworICAgIFt3a1ZpZXcgYmVnaW5EZWZlcnJpbmdW
aWV3SW5XaW5kb3dDaGFuZ2VzXTsKICAgICBbd2tWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwog
CiAgICAgLy8gVGhlIGRvY3VtZW50IHNob3VsZCBzdGlsbCBub3QgYmUgaGlkZGVuLCBldmVuIHRo
b3VnaCB3ZSdyZSBub3QgaW4td2luZG93LCBiZWNhdXNlIHdlIGFyZSBkZWZlcnJpbmcgaW4td2lu
ZG93IGNoYW5nZXMuCiAgICAgRVhQRUNUX0pTX0ZBTFNFKHdlYlZpZXcucGFnZSgpLCAiZG9jdW1l
bnQuaGlkZGVuIik7CiAKLSAgICBbd2tWaWV3IF9lbmREZWZlcnJpbmdWaWV3SW5XaW5kb3dDaGFu
Z2VzXTsKKyAgICBbd2tWaWV3IGVuZERlZmVycmluZ1ZpZXdJbldpbmRvd0NoYW5nZXNdOwogCiAg
ICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKICAgICBXS1BhZ2VSZWYgcGFnZSA9IHdlYlZp
ZXcucGFnZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
RW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0VudW1lcmF0ZU1lZGlhRGV2aWNlcy5jcHAKaW5kZXggNWU0NGM4OTY5MWRlLi4zNzMxMTgy
OGYxMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0VudW1l
cmF0ZU1lZGlhRGV2aWNlcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvRW51bWVyYXRlTWVkaWFEZXZpY2VzLmNwcApAQCAtNTIsNiArNTIsOSBAQCBURVNUKFdlYktp
dCwgRW51bWVyYXRlRGV2aWNlcykKICAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4
dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKIAogICAgIFdLUmV0YWluUHRyPFdL
UGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElk
ZW50aWZpZXIoVXRpbDo6dG9XSygiRW51bWVyYXRlRGV2aWNlcyIpLmdldCgpKSk7CisgICAgV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFn
ZUdyb3VwLmdldCgpKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFEZXZpY2VzRW5hYmxlZChw
cmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhQ2FwdHVyZVJlcXVp
cmVzU2VjdXJlQ29ubmVjdGlvbihwcmVmZXJlbmNlcywgZmFsc2UpOwogCiAgICAgV0tQYWdlVUlD
bGllbnRWNiB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGll
bnQpKTsKQEAgLTYxLDExICs2NCw2IEBAIFRFU1QoV2ViS2l0LCBFbnVtZXJhdGVEZXZpY2VzKQog
ICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQo
KSk7CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmdWlDbGllbnQu
YmFzZSk7CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvcHlQYWdl
Q29uZmlndXJhdGlvbih3ZWJWaWV3LnBhZ2UoKSkpOwotICAgIGF1dG8qIHByZWZlcmVuY2VzID0g
V0tQYWdlQ29uZmlndXJhdGlvbkdldFByZWZlcmVuY2VzKGNvbmZpZ3VyYXRpb24uZ2V0KCkpOwot
ICAgIFdLUHJlZmVyZW5jZXNTZXRNZWRpYURldmljZXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVl
KTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0
aW9uKHByZWZlcmVuY2VzLCBmYWxzZSk7Ci0KICAgICBhdXRvIHVybCA9IGFkb3B0V0soVXRpbDo6
Y3JlYXRlVVJMRm9yUmVzb3VyY2UoImVudW1lcmF0ZU1lZGlhRGV2aWNlcyIsICJodG1sIikpOwog
CiAgICAgLy8gTG9hZCBhbmQga2lsbCB0aGUgcGFnZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1BhZ2VHcm91cC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9QYWdlR3JvdXAuY3BwCmluZGV4IDVmZmFmOWI4NjBkYy4uMWVlOTA0MzI3
NTI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9QYWdlR3Jv
dXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1BhZ2VHcm91cC5j
cHAKQEAgLTUyLDggKzUyLDcgQEAgVEVTVChQYWdlR3JvdXAsIERlZmF1bHRVc2VyQ29udGVudENv
bnRyb2xsZXIpCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcocGFnZUNvbmZpZ3VyYXRpb24u
Z2V0KCkpOwogICAgIGF1dG8gY29waWVkUGFnZUNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFn
ZUNvcHlQYWdlQ29uZmlndXJhdGlvbih3ZWJWaWV3LnBhZ2UoKSkpOwogCi0gICAgLy8gVGhpcyB0
ZXN0cyBzZXR0aW5nIHRoZSBVc2VyQ29udGVudENvbnRyb2xsZXIgdGhyb3VnaCB0aGUgV0tQYWdl
R3JvdXAsIHdoaWNoIHdhcyBvbmx5IHN1cHBvcnRlZCBpbiBXS1ZpZXcsIG5vdCBXS1dlYlZpZXcu
Ci0gICAgQVNTRVJUX05FKHBhZ2VHcm91cFVzZXJDb250ZW50Q29udHJvbGxlci5nZXQoKSwgV0tQ
YWdlQ29uZmlndXJhdGlvbkdldFVzZXJDb250ZW50Q29udHJvbGxlcihjb3BpZWRQYWdlQ29uZmln
dXJhdGlvbi5nZXQoKSkpOworICAgIEFTU0VSVF9FUShwYWdlR3JvdXBVc2VyQ29udGVudENvbnRy
b2xsZXIuZ2V0KCksIFdLUGFnZUNvbmZpZ3VyYXRpb25HZXRVc2VyQ29udGVudENvbnRyb2xsZXIo
Y29waWVkUGFnZUNvbmZpZ3VyYXRpb24uZ2V0KCkpKTsKIH0KIAogVEVTVChQYWdlR3JvdXAsIEN1
c3RvbVVzZXJDb250ZW50Q29udHJvbGxlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1Jlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3
LmNwcAppbmRleCAyYTZkODNlZGU3ZjYuLjIwMjQ1MTYzMTc4MSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1Jlc2l6ZVJldmVyc2VQ
YWdpbmF0ZWRXZWJWaWV3LmNwcApAQCAtNzQsOCArNzQsOCBAQCBURVNUKFdlYktpdCwgUmVzaXpl
UmV2ZXJzZVBhZ2luYXRlZFdlYlZpZXcpCiAKICAgICBXS1BhZ2VMaXN0ZW5Gb3JMYXlvdXRNaWxl
c3RvbmVzKHdlYlZpZXcucGFnZSgpLCBrV0tEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZElu
Y3JlbWVudGFsUmVuZGVyaW5nKTsKIAotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0V0so
V0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZpZXcucGFnZSgpKSk7Ci0gICAgYXV0byog
cHJlZmVyZW5jZXMgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0UHJlZmVyZW5jZXMoY29uZmlndXJh
dGlvbi5nZXQoKSk7CisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID0gIFdLUGFnZUdldFBh
Z2VHcm91cCh3ZWJWaWV3LnBhZ2UoKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
cyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKICAgICBXS1ByZWZlcmVu
Y2VzU2V0U3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nKHByZWZlcmVuY2VzLCB0cnVlKTsK
IAogICAgIFdLUGFnZVNldFBhZ2luYXRpb25Nb2RlKHdlYlZpZXcucGFnZSgpLCBrV0tQYWdpbmF0
aW9uTW9kZVJpZ2h0VG9MZWZ0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L1VzZXJNZWRpYS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9Vc2VyTWVkaWEuY3BwCmluZGV4IGYzNjU0MDRiN2E0Ni4uYjIzNGMyOGI4ZDE2IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Vc2VyTWVkaWEuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1VzZXJNZWRpYS5jcHAKQEAgLTcyLDYg
KzcyLDEyIEBAIFRFU1QoV2ViS2l0LCBVc2VyTWVkaWFCYXNpYykKICAgICBhdXRvIGNvbnRleHQg
PSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKIAog
ICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFn
ZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiR2V0VXNlck1lZGlhIikuZ2V0
KCkpKTsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3JvdXBHZXRQ
cmVmZXJlbmNlcyhwYWdlR3JvdXAuZ2V0KCkpOworICAgIFdLUHJlZmVyZW5jZXNTZXRNZWRpYURl
dmljZXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMc0FsbG93ZWQocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJl
ZmVyZW5jZXNTZXRNZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24ocHJlZmVyZW5j
ZXMsIGZhbHNlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxl
ZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEdldFVzZXJNZWRpYVJl
cXVpcmVzRm9jdXMocHJlZmVyZW5jZXMsIGZhbHNlKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50VjYg
dWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7CkBA
IC04MiwxNCArODgsNiBAQCBURVNUKFdlYktpdCwgVXNlck1lZGlhQmFzaWMpCiAgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKICAgICBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQod2ViVmlldy5wYWdlKCksICZ1aUNsaWVudC5iYXNlKTsKIAot
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0
aW9uKHdlYlZpZXcucGFnZSgpKSk7Ci0gICAgYXV0byogcHJlZmVyZW5jZXMgPSBXS1BhZ2VDb25m
aWd1cmF0aW9uR2V0UHJlZmVyZW5jZXMoY29uZmlndXJhdGlvbi5nZXQoKSk7Ci0gICAgV0tQcmVm
ZXJlbmNlc1NldE1lZGlhRGV2aWNlc0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwotICAgIFdL
UHJlZmVyZW5jZXNTZXRGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQWxsb3dlZChwcmVmZXJlbmNlcywg
dHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29u
bmVjdGlvbihwcmVmZXJlbmNlcywgZmFsc2UpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRNb2NrQ2Fw
dHVyZURldmljZXNFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKLSAgICBXS1ByZWZlcmVuY2Vz
U2V0R2V0VXNlck1lZGlhUmVxdWlyZXNGb2N1cyhwcmVmZXJlbmNlcywgZmFsc2UpOwotCiAgICAg
d2FzUHJvbXB0ZWQgPSBmYWxzZTsKICAgICBhdXRvIHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRl
VVJMRm9yUmVzb3VyY2UoImdldFVzZXJNZWRpYSIsICJodG1sIikpOwogICAgIEFTU0VSVCh1cmwu
Z2V0KCkpOwpAQCAtMTA4LDE0ICsxMDYsMTUgQEAgc3RhdGljIHZvaWQgZGlkQ3Jhc2hDYWxsYmFj
ayhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQogCiBURVNUKFdlYktpdCwgT25EZXZpY2VDaGFuZ2VD
cmFzaCkKIHsKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvbmZpZ3Vy
YXRpb25DcmVhdGUoKSk7Ci0gICAgYXV0byBwcmVmZXJlbmNlcyA9IGFkb3B0V0soV0tQcmVmZXJl
bmNlc0NyZWF0ZSgpKTsKLSAgICBXS1ByZWZlcmVuY2VzU2V0TWVkaWFEZXZpY2VzRW5hYmxlZChw
cmVmZXJlbmNlcy5nZXQoKSwgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2VzLmdldCgpLCB0cnVlKTsKLSAgICBXS1ByZWZl
cmVuY2VzU2V0TWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uKHByZWZlcmVuY2Vz
LmdldCgpLCBmYWxzZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQocHJlZmVyZW5jZXMuZ2V0KCksIHRydWUpOwotICAgIFdLUHJlZmVyZW5jZXNTZXRHZXRV
c2VyTWVkaWFSZXF1aXJlc0ZvY3VzKHByZWZlcmVuY2VzLmdldCgpLCBmYWxzZSk7Ci0gICAgV0tQ
YWdlQ29uZmlndXJhdGlvblNldFByZWZlcmVuY2VzKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHByZWZl
cmVuY2VzLmdldCgpKTsKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0
ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKKworICAgIFdLUmV0YWluUHRyPFdLUGFnZUdy
b3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZp
ZXIoVXRpbDo6dG9XSygiR2V0VXNlck1lZGlhIikuZ2V0KCkpKTsKKyAgICBXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXAuZ2V0
KCkpOworICAgIFdLUHJlZmVyZW5jZXNTZXRNZWRpYURldmljZXNFbmFibGVkKHByZWZlcmVuY2Vz
LCB0cnVlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0FsbG93
ZWQocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRNZWRpYUNhcHR1cmVS
ZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24ocHJlZmVyZW5jZXMsIGZhbHNlKTsKKyAgICBXS1ByZWZl
cmVuY2VzU2V0TW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Cisg
ICAgV0tQcmVmZXJlbmNlc1NldEdldFVzZXJNZWRpYVJlcXVpcmVzRm9jdXMocHJlZmVyZW5jZXMs
IGZhbHNlKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50VjYgdWlDbGllbnQ7CiAgICAgbWVtc2V0KCZ1
aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7CkBAIC0xMjMsNyArMTIyLDcgQEAgVEVTVChX
ZWJLaXQsIE9uRGV2aWNlQ2hhbmdlQ3Jhc2gpCiAgICAgdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9y
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QgPSBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdENhbGxCYWNrOwogICAgIHVpQ2xpZW50LmNoZWNrVXNlck1lZGlhUGVybWlz
c2lvbkZvck9yaWdpbiA9IGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkNhbGxiYWNrOwogCi0gICAg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29uZmlndXJhdGlvbi5nZXQoKSk7CisgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKICAgICBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQod2ViVmlldy5wYWdlKCksICZ1aUNsaWVudC5iYXNlKTsKIAog
ICAgIC8vIExvYWQgYSBwYWdlIHJlZ2lzdGVyaW5nIG9uZGV2aWNlY2hhbmdlIGhhbmRsZXIuCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1BhZ2VJc1BsYXlp
bmdBdWRpby5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1BhZ2VJc1Bs
YXlpbmdBdWRpby5jcHAKaW5kZXggNzhiMmE1NGRkNjE4Li5jMWVmMDkxNWMyN2UgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dLUGFnZUlzUGxheWluZ0F1ZGlv
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1BhZ2VJc1BsYXlp
bmdBdWRpby5jcHAKQEAgLTExOCwxNSArMTE4LDEzIEBAIFRFU1QoV2ViS2l0LCBNU0VJc1BsYXlp
bmdBdWRpbykKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdL
KFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKIAogICAgIFdLUmV0
YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3Jl
YXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTVNFSXNQbGF5aW5nQXVkaW9QYWdlR3JvdXAi
KS5nZXQoKSkpOworICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91
cEdldFByZWZlcmVuY2VzKHBhZ2VHcm91cC5nZXQoKSk7CisgICAgV0tQcmVmZXJlbmNlc1NldE1l
ZGlhU291cmNlRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1Nl
dEZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKIAogICAg
IFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7
CiAgICAgc2V0VXBDbGllbnRzKHdlYlZpZXcucGFnZSgpKTsKIAotICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0V0soV0tQYWdlQ29weVBhZ2VDb25maWd1cmF0aW9uKHdlYlZpZXcucGFnZSgp
KSk7Ci0gICAgYXV0byogcHJlZmVyZW5jZXMgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0UHJlZmVy
ZW5jZXMoY29uZmlndXJhdGlvbi5nZXQoKSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldE1lZGlhU291
cmNlRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7Ci0gICAgV0tQcmVmZXJlbmNlc1NldEZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHNBbGxvd2VkKHByZWZlcmVuY2VzLCB0cnVlKTsKLQogICAgIFdLUmV0
YWluUHRyPFdLVVJMUmVmPiB1cmwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNl
KCJmaWxlLXdpdGgtbXNlIiwgImh0bWwiKSk7CiAgICAgZGlkRmluaXNoTG9hZCA9IGZhbHNlOwog
ICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1RodW1ibmFpbFZpZXcubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1RodW1ibmFpbFZpZXcubW0KaW5kZXgg
OTg5OGZjMDNlNWYzLi43MzM2NDNiMTFhZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1dLVGh1bWJuYWlsVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9XS1RodW1ibmFpbFZpZXcubW0KQEAgLTMzLDcgKzMzLDcgQEAKICNp
bXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2lt
cG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgotI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLVGh1bWJuYWlsVmlldy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoV2ViS2l0LCBXS1RodW1ibmFpbFZpZXdLZWVwU25h
cHNob3RXaGVuUmVtb3ZlZEZyb21TdXBlcnZpZXcpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlv
bihudWxscHRyKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
Ci0gICAgV0tXZWJWaWV3ICp3a1ZpZXcgPSB3ZWJWaWV3LnBsYXRmb3JtVmlldygpOworICAgIFdL
VmlldyAqd2tWaWV3ID0gd2ViVmlldy5wbGF0Zm9ybVZpZXcoKTsKICAgICBzZXRQYWdlTG9hZGVy
Q2xpZW50KHdlYlZpZXcucGFnZSgpKTsKICAgICBXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVG
YWN0b3Iod2ViVmlldy5wYWdlKCksIDEpOwogCkBAIC05Niw3ICs5Niw3IEBAIFRFU1QoV2ViS2l0
LCBXS1RodW1ibmFpbFZpZXdLZWVwU25hcHNob3RXaGVuUmVtb3ZlZEZyb21TdXBlcnZpZXcpCiAg
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7
CiAKLSAgICBSZXRhaW5QdHI8X1dLVGh1bWJuYWlsVmlldz4gdGh1bWJuYWlsVmlldyA9IGFkb3B0
TlMoW1tfV0tUaHVtYm5haWxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgMTAwLCAxMDApIGZyb21XS1dlYlZpZXc6d2tWaWV3XSk7CisgICAgUmV0YWluUHRyPF9XS1Ro
dW1ibmFpbFZpZXc+IHRodW1ibmFpbFZpZXcgPSBhZG9wdE5TKFtbX1dLVGh1bWJuYWlsVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBmcm9tV0tWaWV3
OndrVmlld10pOwogCiAgICAgUmV0YWluUHRyPFNuYXBzaG90U2l6ZU9ic2VydmVyPiBvYnNlcnZl
ciA9IGFkb3B0TlMoW1tTbmFwc2hvdFNpemVPYnNlcnZlciBhbGxvY10gaW5pdF0pOwogCkBAIC0x
MzMsNyArMTMzLDcgQEAgVEVTVChXZWJLaXQsIFdLVGh1bWJuYWlsVmlld01heGltdW1TbmFwc2hv
dFNpemUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRX
SyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihudWxscHRyKSk7CiAgICAgUGxhdGZv
cm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7Ci0gICAgV0tXZWJWaWV3ICp3a1ZpZXcg
PSB3ZWJWaWV3LnBsYXRmb3JtVmlldygpOworICAgIFdLVmlldyAqd2tWaWV3ID0gd2ViVmlldy5w
bGF0Zm9ybVZpZXcoKTsKICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsK
ICAgICBXS1BhZ2VTZXRDdXN0b21CYWNraW5nU2NhbGVGYWN0b3Iod2ViVmlldy5wYWdlKCksIDEp
OwogCkBAIC0xNDIsNyArMTQyLDcgQEAgVEVTVChXZWJLaXQsIFdLVGh1bWJuYWlsVmlld01heGlt
dW1TbmFwc2hvdFNpemUpCiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICBkaWRG
aW5pc2hMb2FkID0gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8X1dLVGh1bWJuYWlsVmlldz4gdGh1
bWJuYWlsVmlldyA9IGFkb3B0TlMoW1tfV0tUaHVtYm5haWxWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGZyb21XS1dlYlZpZXc6d2tWaWV3XSk7Cisg
ICAgUmV0YWluUHRyPF9XS1RodW1ibmFpbFZpZXc+IHRodW1ibmFpbFZpZXcgPSBhZG9wdE5TKFtb
X1dLVGh1bWJuYWlsVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBmcm9tV0tWaWV3OndrVmlld10pOwogCiAgICAgUmV0YWluUHRyPFNuYXBzaG90U2l6
ZU9ic2VydmVyPiBvYnNlcnZlciA9IGFkb3B0TlMoW1tTbmFwc2hvdFNpemVPYnNlcnZlciBhbGxv
Y10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvQXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQXR0cmlidXRlZFN1YnN0cmluZ0Zv
clByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW0KaW5kZXggNjIzYThkYTEwMGVkLi5iOTEyM2Y3OTgz
YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9BdHRy
aWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdpdGhJbWFnZS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bv
c2VkUmFuZ2VXaXRoSW1hZ2UubW0KQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgPFdlYktpdC9X
S0NvbnRleHRQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KIAotQGlu
dGVyZmFjZSBXS1dlYlZpZXcgKCkKK0BpbnRlcmZhY2UgV0tWaWV3ICgpCiAtICh2b2lkKWF0dHJp
YnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlOihOU1JhbmdlKW5zUmFuZ2UgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyU3RyaW5nLCBOU1Jhbmdl
IGFjdHVhbFJhbmdlKSljb21wbGV0aW9uSGFuZGxlclB0cjsKIEBlbmQKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0dldEJhY2tpbmdTY2FsZUZhY3Rv
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9HZXRCYWNraW5nU2Nh
bGVGYWN0b3IubW0KaW5kZXggZmU3NmE2ZDNkZjc3Li40MjY4YTI0ZWFjZDIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9HZXRCYWNraW5nU2NhbGVGYWN0
b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0dldEJhY2tp
bmdTY2FsZUZhY3Rvci5tbQpAQCAtMjksNyArMjksNyBAQAogI2ltcG9ydCAiU3ludGhldGljQmFj
a2luZ1NjYWxlRmFjdG9yV2luZG93LmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0IDxXZWJL
aXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtNjgsMTIg
KzY4LDkgQEAgVEVTVChXZWJLaXQsIEdldEJhY2tpbmdTY2FsZUZhY3RvcikKIHsKICAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRl
eHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkdldEJhY2tpbmdTY2FsZUZhY3RvclRlc3QiKSk7CiAg
ICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSk7Ci0KLSAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwotICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRl
eHQuZ2V0KCk7Ci0KLSAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFt2aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXV07Cisg
ICAgYXV0byBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZp
ZXIoVXRpbDo6dG9XSygiR2V0QmFja2luZ1NjYWxlRmFjdG9yUGFnZUdyb3VwIikuZ2V0KCkpKTsK
KyAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbnRleHRSZWY6Y29udGV4dC5nZXQoKSBwYWdlR3Jv
dXBSZWY6cGFnZUdyb3VwLmdldCgpXSk7CisgICAgW1t2aWV3IGJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXJdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXV07CiAKICAgICBSZXRhaW5QdHI8U3ludGhldGlj
QmFja2luZ1NjYWxlRmFjdG9yV2luZG93PiB3aW5kb3cxID0gY3JlYXRlV2luZG93KCk7CiAgICAg
W3dpbmRvdzEuZ2V0KCkgc2V0QmFja2luZ1NjYWxlRmFjdG9yOjFdOwpAQCAtOTMsNyArOTAsNyBA
QCBURVNUKFdlYktpdCwgR2V0QmFja2luZ1NjYWxlRmFjdG9yKQogICAgIG1lc3NhZ2VSZWNlaXZl
ZCA9IGZhbHNlOwogICAgIEVYUEVDVF9FUSgyLCBiYWNraW5nU2NhbGVGYWN0b3IpOwogCi0gICAg
V0tQYWdlU2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yKHZpZXcuZ2V0KCkuX3BhZ2VSZWZGb3JU
cmFuc2l0aW9uVG9XS1dlYlZpZXcsIDMpOworICAgIFdLUGFnZVNldEN1c3RvbUJhY2tpbmdTY2Fs
ZUZhY3Rvcih2aWV3LmdldCgpLnBhZ2VSZWYsIDMpOwogICAgIFdLQ29udGV4dFBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKCJHZXRCYWNraW5nU2Nh
bGVGYWN0b3IiKS5nZXQoKSwgMCk7CiAgICAgVXRpbDo6cnVuKCZtZXNzYWdlUmVjZWl2ZWQpOwog
ICAgIG1lc3NhZ2VSZWNlaXZlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQppbmRleCA5
ZTY1NTAwZTczYzUuLmQ0OTY1MTI1MTBhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0KQEAgLTM0
LDcgKzM0LDcgQEAKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQg
PENhcmJvbi9DYXJib24uaD4gLy8gZm9yIEdldEN1cnJlbnRFdmVudFRpbWUoKQogI2ltcG9ydCA8
V2ViS2l0L1dLUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIAogZW51bSBBcnJvd0RpcmVjdGlvbiB7CkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoK
IAogY2xhc3MgV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3IDogcHVibGljIFdl
YktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdCB7CiBwdWJsaWM6Ci0gICAgUmV0YWluUHRyPFdL
V2ViVmlldz4gd2ViVmlldzsKKyAgICBSZXRhaW5QdHI8V0tWaWV3PiB3ZWJWaWV3OwogICAgIFdL
UmV0YWluUHRyPFdLVVJMUmVmPiBmaWxlMTsKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gZmls
ZTI7CiAKQEAgLTk3LDcgKzk3LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdlYktpdDJf
Q29tbWFuZEJhY2tGb3J3YXJkVGVzdDo6U2V0VXAoKTsKIAotICAgICAgICB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKV0pOworICAgICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBh
ZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFk
b3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsgICAgICAgIAorICAgICAgICBXS1Bh
Z2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0Lmdl
dCgpKTsKKworICAgICAgICB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uUmVmOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9h
ZGVyQ2xpZW50OwogICAgICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRl
ckNsaWVudCkpOwpAQCAtMTA3LDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRpZEZp
bmlzaE5hdmlnYXRpb25Cb29sZWFuID0gdHJ1ZTsKICAgICAgICAgfTsKIAotICAgICAgICBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChbd2ViVmlldyBfcGFnZVJlZkZvclRyYW5zaXRpb25U
b1dLV2ViVmlld10sICZsb2FkZXJDbGllbnQuYmFzZSk7CisgICAgICAgIFdLUGFnZVNldFBhZ2VO
YXZpZ2F0aW9uQ2xpZW50KFt3ZWJWaWV3IHBhZ2VSZWZdLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwog
ICAgICAgICAKICAgICAgICAgZmlsZTEgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNy
ZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUiLCAiaHRtbCIpKTsKICAgICAgICAgZmlsZTIgPSBh
ZG9wdFdLKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJzaW1wbGUy
IiwgImh0bWwiKSk7CkBAIC0xMTYsMTEgKzEyMCwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxv
YWRGaWxlcygpCiAgICAgewotICAgICAgICBXS1BhZ2VMb2FkRmlsZShbd2ViVmlldyBfcGFnZVJl
ZkZvclRyYW5zaXRpb25Ub1dLV2ViVmlld10sIGZpbGUxLmdldCgpLCBudWxscHRyKTsKKyAgICAg
ICAgV0tQYWdlTG9hZEZpbGUoW3dlYlZpZXcgcGFnZVJlZl0sIGZpbGUxLmdldCgpLCBudWxscHRy
KTsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9u
Qm9vbGVhbik7CiAgICAgICAgIGRpZEZpbmlzaE5hdmlnYXRpb25Cb29sZWFuID0gZmFsc2U7CiAK
LSAgICAgICAgV0tQYWdlTG9hZEZpbGUoW3dlYlZpZXcgX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9X
S1dlYlZpZXddLCBmaWxlMi5nZXQoKSwgbnVsbHB0cik7CisgICAgICAgIFdLUGFnZUxvYWRGaWxl
KFt3ZWJWaWV3IHBhZ2VSZWZdLCBmaWxlMi5nZXQoKSwgbnVsbHB0cik7CiAgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbkJvb2xlYW4pOwogICAgICAg
ICBkaWRGaW5pc2hOYXZpZ2F0aW9uQm9vbGVhbiA9IGZhbHNlOwogICAgIH0KQEAgLTE5OSw3ICsy
MDMsNyBAQCBURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3LCBMVFIp
CiAgICAgCiAgICAgbG9hZEZpbGVzKCk7CiAKLSAgICBhdXRvIGN1cnJlbnRVUkwgPSBhZG9wdFdL
KFdLUGFnZUNvcHlBY3RpdmVVUkwoW3dlYlZpZXcgX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dl
YlZpZXddKSk7CisgICAgYXV0byBjdXJyZW50VVJMID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZl
VVJMKFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CiAgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZp
bGUyLmdldCgpLCBjdXJyZW50VVJMLmdldCgpKSk7CiAKICAgICAvLyBBdHRlbXB0IHRvIGdvIGJh
Y2sgKHVzaW5nIGNvbW1hbmQtbGVmdCkuCkBAIC0yMDcsNyArMjExLDcgQEAgVEVTVF9GKFdlYktp
dDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldywgTFRSKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbkJvb2xlYW4pOwogICAgIGRpZEZpbmlzaE5h
dmlnYXRpb25Cb29sZWFuID0gZmFsc2U7CiAKLSAgICBhdXRvIGN1cnJlbnRVUkwyID0gYWRvcHRX
SyhXS1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3IF9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tX
ZWJWaWV3XSkpOworICAgIGF1dG8gY3VycmVudFVSTDIgPSBhZG9wdFdLKFdLUGFnZUNvcHlBY3Rp
dmVVUkwoW3dlYlZpZXcgcGFnZVJlZl0pKTsKICAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwo
ZmlsZTEuZ2V0KCksIGN1cnJlbnRVUkwyLmdldCgpKSk7CiAKICAgICAvLyBBdHRlbXB0IHRvIGdv
IGJhY2sgKHVzaW5nIGNvbW1hbmQtcmlnaHQpLgpAQCAtMjE1LDcgKzIxOSw3IEBAIFRFU1RfRihX
ZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcsIExUUikKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb25Cb29sZWFuKTsKICAgICBkaWRGaW5p
c2hOYXZpZ2F0aW9uQm9vbGVhbiA9IGZhbHNlOwogCi0gICAgYXV0byBjdXJyZW50VVJMMyA9IGFk
b3B0V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBfcGFnZVJlZkZvclRyYW5zaXRpb25U
b1dLV2ViVmlld10pKTsKKyAgICBhdXRvIGN1cnJlbnRVUkwzID0gYWRvcHRXSyhXS1BhZ2VDb3B5
QWN0aXZlVVJMKFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CiAgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0Vx
dWFsKGZpbGUyLmdldCgpLCBjdXJyZW50VVJMMy5nZXQoKSkpOwogfQogCkBAIC0yMjYsNyArMjMw
LDcgQEAgVEVTVF9GKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldywgUlRMKQog
ICAgIAogICAgIGxvYWRGaWxlcygpOwogCi0gICAgYXV0byBjdXJyZW50VVJMID0gYWRvcHRXSyhX
S1BhZ2VDb3B5QWN0aXZlVVJMKFt3ZWJWaWV3IF9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJW
aWV3XSkpOworICAgIGF1dG8gY3VycmVudFVSTCA9IGFkb3B0V0soV0tQYWdlQ29weUFjdGl2ZVVS
TChbd2ViVmlldyBwYWdlUmVmXSkpOwogICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbChmaWxl
Mi5nZXQoKSwgY3VycmVudFVSTC5nZXQoKSkpOwogCiAgICAgLy8gQXR0ZW1wdCB0byBnbyBiYWNr
ICh1c2luZyBjb21tYW5kLXJpZ2h0KQpAQCAtMjM0LDcgKzIzOCw3IEBAIFRFU1RfRihXZWJLaXQy
X0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcsIFJUTCkKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb25Cb29sZWFuKTsKICAgICBkaWRGaW5pc2hOYXZp
Z2F0aW9uQm9vbGVhbiA9IGZhbHNlOwogCi0gICAgYXV0byBjdXJyZW50VVJMMiA9IGFkb3B0V0so
V0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBfcGFnZVJlZkZvclRyYW5zaXRpb25Ub1dLV2Vi
Vmlld10pKTsKKyAgICBhdXRvIGN1cnJlbnRVUkwyID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0aXZl
VVJMKFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CiAgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFsKGZp
bGUxLmdldCgpLCBjdXJyZW50VVJMMi5nZXQoKSkpOwogCiAgICAgLy8gQXR0ZW1wdCB0byBnbyBi
YWNrICh1c2luZyBjb21tYW5kLWxlZnQpLgpAQCAtMjQyLDcgKzI0Niw3IEBAIFRFU1RfRihXZWJL
aXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcsIFJUTCkKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb25Cb29sZWFuKTsKICAgICBkaWRGaW5pc2hO
YXZpZ2F0aW9uQm9vbGVhbiA9IGZhbHNlOwogCi0gICAgYXV0byBjdXJyZW50VVJMMyA9IGFkb3B0
V0soV0tQYWdlQ29weUFjdGl2ZVVSTChbd2ViVmlldyBfcGFnZVJlZkZvclRyYW5zaXRpb25Ub1dL
V2ViVmlld10pKTsKKyAgICBhdXRvIGN1cnJlbnRVUkwzID0gYWRvcHRXSyhXS1BhZ2VDb3B5QWN0
aXZlVVJMKFt3ZWJWaWV3IHBhZ2VSZWZdKSk7CiAgICAgRVhQRUNUX1RSVUUoV0tVUkxJc0VxdWFs
KGZpbGUyLmdldCgpLCBjdXJyZW50VVJMMy5nZXQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Z1bGxzY3JlZW5EZWxlZ2F0ZS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRnVsbHNjcmVlbkRlbGVnYXRl
Lm1tCmluZGV4IDI0OWM1YTMxMmQ1Ny4uOGM3YWM3YjhmZmU4IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Z1bGxzY3JlZW5EZWxlZ2F0ZS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Z1bGxzY3JlZW5EZWxlZ2F0
ZS5tbQpAQCAtMzEsNiArMzEsOCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgPFdlYktpdC9XS1BhZ2VQcml2YXRlTWFjLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ZpZXcuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1ZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLRnVsbHNjcmVlbkRlbGVnYXRlLmg+CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGljdHVyZUluUGljdHVy
ZURlbGVnYXRlLm1tCmluZGV4IGE4MzA4OTg2NzlhMC4uODQyMDIxMGY3NjM1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BpY3R1cmVJblBpY3R1cmVE
ZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bp
Y3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbQpAQCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCA8V2Vi
S2l0L1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVVJMQ0YuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1ZpZXcuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgpAQCAtMjAwLDE0ICsyMDEsMTIgQEAgVEVT
VChQaWN0dXJlSW5QaWN0dXJlLCBXS1BhZ2VVSUNsaWVudCkKIHsKICAgICBXS1JldGFpblB0cjxX
S0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1
cmF0aW9uKG51bGxwdHIpKTsKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdy
b3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6OnRvV0so
IlBpY3R1cmVJblBpY3R1cmUiKS5nZXQoKSkpOwotICAgIAotICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7Ci0KLSAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNvcHlQYWdlQ29uZmlndXJhdGlvbih3ZWJWaWV3LnBh
Z2UoKSkpOwotICAgIGF1dG8qIHByZWZlcmVuY2VzID0gV0tQYWdlQ29uZmlndXJhdGlvbkdldFBy
ZWZlcmVuY2VzKGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJl
ZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBhZ2VHcm91cC5nZXQoKSk7CiAg
ICAgV0tQcmVmZXJlbmNlc1NldEZ1bGxTY3JlZW5FbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsK
ICAgICBXS1ByZWZlcmVuY2VzU2V0QWxsb3dzUGljdHVyZUluUGljdHVyZU1lZGlhUGxheWJhY2so
cHJlZmVyZW5jZXMsIHRydWUpOwotCisgICAgCisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKKyAgICAKICAgICBXS1BhZ2VVSUNsaWVu
dFYxMCB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50LCAwLCBzaXplb2YodWlDbGllbnQp
KTsKICAgICB1aUNsaWVudC5iYXNlLnZlcnNpb24gPSAxMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCmluZGV4IDIy
OWE4ODljZTUwMy4uNzZjNDQyZDJlOGRhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0KQEAgLTg1LDE3ICs4NSwx
NyBAQCBAZW5kCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLUBpbnRlcmZhY2UgV0tDb250ZXh0UmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRlIDog
TlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGludGVyZmFjZSBXS0NvbnRleHRSZWdp
c3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgOiBO
U09iamVjdCA8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+CiBAZW5kCiAKIEBpbXBsZW1l
bnRhdGlvbiBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3RMb2FkRGVsZWdhdGUKIAotLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24g
d2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlcjooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyIGRpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgogewogICAgIGRpZEZpbmlzaExvYWQg
PSB0cnVlOwogfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmlu
aXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgorLSAodm9pZClicm93c2lu
Z0NvbnRleHRDb250cm9sbGVyRGlkRmluaXNoTG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICopc2VuZGVyCiB7CiAgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7CiB9CkBAIC0xODcsOCAr
MTg3LDggQEAgVEVTVChXZWJLaXQsIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNw
bGF5T25seUlmQ2FuUmVxdWVzdF9TYW1lT3JpZ2luTG8KIAogICAgICAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldyB7IGNvbnRleHQuZ2V0KCkgfTsKICAgICAgICAgYXV0byBsb2FkRGVsZWdhdGUg
PSBhZG9wdE5TKFtbV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZD
YW5SZXF1ZXN0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIHdlYlZpZXcucGxh
dGZvcm1WaWV3KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwotICAg
ICAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKSBsb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBo
dG1sPjxib2R5PjxzY3JpcHQgc3JjPSdlY2hvOi8vQS9BXzEnPjwvc2NyaXB0PiIgYmFzZVVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImVjaG86Ly9BIl1dOworICAgICAgICB3ZWJWaWV3LnBsYXRm
b3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERl
bGVnYXRlLmdldCgpOworICAgICAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0Nv
bnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+PGJvZHk+PHNj
cmlwdCBzcmM9J2VjaG86Ly9BL0FfMSc+PC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiZWNobzovL0EiXV07CiAgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7
CiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKIApAQCAtMjExLDggKzIxMSw4IEBAIFRF
U1QoV2ViS2l0LCBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNh
blJlcXVlc3RfQ3Jvc3NPcmlnaW5MCiAKICAgICAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcg
eyBjb250ZXh0LmdldCgpIH07CiAgICAgICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhb
W1dLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgICAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKLSAgICAgICAgW3dlYlZp
ZXcucGxhdGZvcm1WaWV3KCkgbG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48Ym9keT48
c2NyaXB0IHNyYz0nZWNobzovL0EvQV8xJz48L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJlY2hvOi8vQiJdXTsKKyAgICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQo
KTsKKyAgICAgICAgW3dlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciBsb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1sPjxib2R5PjxzY3JpcHQgc3JjPSdl
Y2hvOi8vQS9BXzEnPjwvc2NyaXB0PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImVj
aG86Ly9CIl1dOwogICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwogICAgICAgICBk
aWRGaW5pc2hMb2FkID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQppbmRleCBjN2IzNTVhNWNjYTAuLjEx
MTk5MWQxMzFlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQpAQCAtMzAsNyArMzAsNyBAQAogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdD
b25maWd1cmF0aW9uRXh0cmFzLmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgogI2lt
cG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlk
U2NoZW1lLm1tCmluZGV4IDRlNmIyZjA0MmNiMi4uOWI4NzJlMzc0MTg2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJvdG9jb2xzSW52YWxp
ZFNjaGVtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3Vz
dG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbQpAQCAtMzAsMjcgKzMwLDIwIEBACiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1w
b3J0ICJUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgiCi0jaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMg
Ym9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKIAotQGludGVyZmFjZSBMb2FkSW52YWxpZFNjaGVt
ZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGludGVyZmFjZSBM
b2FkSW52YWxpZFNjaGVtZURlbGVnYXRlIDogTlNPYmplY3QgPFdLQnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlPgogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gTG9hZEludmFsaWRTY2hlbWVEZWxl
Z2F0ZQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zp
c2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcgorLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKIH0KIAot
Ly8gVGhpcyBzZWxlY3RvciBpcyBuZWVkZWQgc28gdGhlIFVSTCAiaHQndHA6Ly93d3cud2Via2l0
Lm9yZyIgaXNuJ3QgZ2l2ZW4gdG8gTFNBcHBMaW5rCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9u
QWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSkpZGVjaXNpb25IYW5kbGVyCi17Ci0gICAgZGVjaXNpb25IYW5k
bGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKLX0KLQogQGVuZAogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CkBAIC02NSwxNSArNTgsMTEgQEAgVEVTVChXZWJLaXQyQ3VzdG9t
UHJvdG9jb2xzVGVzdCwgTG9hZEludmFsaWRTY2hlbWUpCiB7CiAgICAgW1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOkAiY3VzdG9tIl07
CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpj
cmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJDdXN0b21Qcm90b2NvbEludmFsaWRT
Y2hlbWVUZXN0IikpOwotCi0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICBjb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NQ
b29sID0gKFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpOwotICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
Vmlldyhjb250ZXh0LmdldCgpKTsKIAogICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhb
W0xvYWRJbnZhbGlkU2NoZW1lRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3Lmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKLQotICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodCd0cDovL3d3dy53ZWJraXQub3JnIl1dXTsKKyAgICB3ZWJWaWV3LnBsYXRm
b3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERl
bGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0J3RwOi8vd3d3LndlYmtpdC5vcmciXV1dOwogICAgIAogICAg
IFV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL0N1c3RvbVByb3RvY29sc1Rlc3QubW0KaW5kZXgg
YTlhYzMxMGE3OTA1Li5jYmZiNDUyNTViMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tCkBAIC0z
NCwzNSArMzQsMzUgQEAKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCA8V2ViS2l0
L1dLQ29udGV4dFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NHcm91cFByaXZh
dGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCB0ZXN0RmluaXNo
ZWQ7CiAKLUBpbnRlcmZhY2UgQ3VzdG9tUHJvdG9jb2xzTG9hZERlbGVnYXRlIDogTlNPYmplY3Qg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorQGludGVyZmFjZSBDdXN0b21Qcm90b2NvbHNMb2FkRGVs
ZWdhdGUgOiBOU09iamVjdCA8V0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGU+CiBAZW5kCiAK
IEBpbXBsZW1lbnRhdGlvbiBDdXN0b21Qcm90b2NvbHNMb2FkRGVsZWdhdGUKIAotLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9u
OihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICopc2VuZGVyCiB7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnRv
U1REKGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKGFkb3B0V0soV0tQYWdlQ29weVByb3Zpc2lvbmFs
VVJMKHdlYlZpZXcuX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dlYlZpZXcpKS5nZXQoKSkpKS5j
X3N0cigpLCAiaHR0cDovL3JlZGlyZWN0Lz90ZXN0Iik7CisgICAgRVhQRUNUX1RSVUUoW3NlbmRl
ci5wcm92aXNpb25hbFVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJodHRwOi8v
cmVkaXJlY3QvP3Rlc3QiXSk7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KKy0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZDooV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICopc2VuZGVyCiB7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnRvU1REKGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKGFkb3B0V0soV0tQYWdl
Q29weVByb3Zpc2lvbmFsVVJMKHdlYlZpZXcuX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dlYlZp
ZXcpKS5nZXQoKSkpKS5jX3N0cigpLCAiaHR0cDovL3Rlc3QvIik7CisgICAgRVhQRUNUX1RSVUUo
W3NlbmRlci5wcm92aXNpb25hbFVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJo
dHRwOi8vdGVzdC8iXSk7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRDb21taXROYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCistICh2b2lk
KWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRDb21taXRMb2FkOihXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKilzZW5kZXIKIHsKLSAgICBFWFBFQ1RfVFJVRShbd2ViVmlldy5fY29tbWl0
dGVkVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImh0dHA6Ly90ZXN0LyJdKTsK
KyAgICBFWFBFQ1RfVFJVRShbc2VuZGVyLmNvbW1pdHRlZFVSTC5hYnNvbHV0ZVN0cmluZyBpc0Vx
dWFsVG9TdHJpbmc6QCJodHRwOi8vdGVzdC8iXSk7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZp
Z2F0aW9uCistICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRGaW5pc2hMb2FkOihX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIKIHsKLSAgICBFWFBFQ1RfRkFMU0Uo
d2ViVmlldy5pc0xvYWRpbmcpOworICAgIEVYUEVDVF9GQUxTRShzZW5kZXIuaXNMb2FkaW5nKTsK
ICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwogfQogCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBX
S1Byb2Nlc3NHcm91cCAqcHJvY2Vzc0dyb3VwKCkKICAgICByZXR1cm4gcHJvY2Vzc0dyb3VwOwog
fQogCi1zdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlldz4gd2tWaWV3Oworc3RhdGljIFJldGFpblB0
cjxXS1ZpZXc+IHdrVmlldzsKIAogQGludGVyZmFjZSBDbG9zZVdoaWxlU3RhcnRpbmdQcm90b2Nv
bCA6IFRlc3RQcm90b2NvbAogQGVuZApAQCAtOTMsNyArOTMsNyBAQCAtICh2b2lkKXN0YXJ0TG9h
ZGluZwogICAgICAgICB9OwogICAgICAgICBXS0NvbnRleHRTZXRDbGllbnQoW3Byb2Nlc3NHcm91
cCgpIF9jb250ZXh0UmVmXSwgJmNsaWVudC5iYXNlKTsKIAotICAgICAgICBraWxsKFdLV2Vic2l0
ZURhdGFTdG9yZUdldE5ldHdvcmtQcm9jZXNzSWRlbnRpZmllcihXS1BhZ2VHZXRXZWJzaXRlRGF0
YVN0b3JlKFt3a1ZpZXcgX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dlYlZpZXddKSksIFNJR0tJ
TEwpOworICAgICAgICBraWxsKFdLV2Vic2l0ZURhdGFTdG9yZUdldE5ldHdvcmtQcm9jZXNzSWRl
bnRpZmllcihXS1BhZ2VHZXRXZWJzaXRlRGF0YVN0b3JlKFt3a1ZpZXcgcGFnZVJlZl0pKSwgU0lH
S0lMTCk7CiAgICAgICAgIFtzZWxmLmNsaWVudCBVUkxQcm90b2NvbDpzZWxmIGRpZEZhaWxXaXRo
RXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TQ29jb2FFcnJvckRvbWFpbiBjb2RlOjAg
dXNlckluZm86bmlsXV07CiAgICAgfSk7CiB9CkBAIC0xNDQsMTAgKzE0NCwxMSBAQCBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyB2b2lkIHJ1blRlc3QoKQogewotICAgIHdrVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKKyAgICBSZXRhaW5QdHI8V0tCcm93c2luZ0NvbnRleHRHcm91cD4g
YnJvd3NpbmdDb250ZXh0R3JvdXAgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBh
bGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVzdElkZW50aWZpZXIiXSk7CisgICAgd2tWaWV3
ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwKCkgYnJvd3NpbmdDb250ZXh0R3Jv
dXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKICAgICBSZXRhaW5QdHI8Q3VzdG9tUHJv
dG9jb2xzTG9hZERlbGVnYXRlPiBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ3VzdG9tUHJvdG9j
b2xzTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2tWaWV3LmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKLSAgICBbd2tWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDovL3JlZGlyZWN0P3Rlc3QiLCBbVGVzdFByb3RvY29s
IHNjaGVtZV1dXV1dOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0ubG9h
ZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXJdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDovL3Jl
ZGlyZWN0P3Rlc3QiLCBbVGVzdFByb3RvY29sIHNjaGVtZV1dXV1dOwogCiAgICAgVXRpbDo6cnVu
KCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMTcxLDE1ICsxNzIsMTkgQEAgVEVTVChXZWJLaXQyQ3Vz
dG9tUHJvdG9jb2xzVGVzdCwgUHJvY2Vzc1Bvb2xEZXN0cm95ZWREdXJpbmdMb2FkaW5nKQogICAg
IFtQcm9jZXNzUG9vbERlc3Ryb3llZER1cmluZ0xvYWRpbmdQcm90b2NvbCByZWdpc3RlcldpdGhT
Y2hlbWU6QCJjdXN0b20iXTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBhdXRv
IHdrVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLQotICAgICAgICBbd2tWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjdXN0b206
Ly8vdGVzdCJdXV07CisgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0R3JvdXAgPSBhZG9wdE5T
KFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBhbGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiVGVz
dElkZW50aWZpZXIiXSk7CisgICAgICAgIGF1dG8gcHJvY2Vzc0dyb3VwID0gYWRvcHROUyhbW1dL
UHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGF1dG8gd2tWaWV3ID0gYWRvcHRO
UyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJy
b3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAgCisgICAgICAgIFtbd2tWaWV3IGJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjdXN0b206Ly8vdGVzdCJdXV07CiAKICAgICAg
ICAgVXRpbDo6cnVuKCZpc0RvbmUpOwogICAgICAgICBpc0RvbmUgPSBmYWxzZTsKIAogICAgICAg
ICAvLyBJbnN0ZWFkIG9mIHJlbHlpbmcgb24gdGhlIGJsb2NrIGdvaW5nIG91dCBvZiBzY29wZSwg
bWFudWFsbHkgcmVsZWFzZSB0aGVzZSBvYmplY3RzIGluIHRoaXMgb3JkZXIKKyAgICAgICAgcHJv
Y2Vzc0dyb3VwID0gbmlsOwogICAgICAgICB3a1ZpZXcgPSBuaWw7CisgICAgICAgIGJyb3dzaW5n
Q29udGV4dEdyb3VwID0gbmlsOwogICAgIH0KIAogICAgIEFTU0VSVChwcm9jZXNzUG9vbFByb3Rv
Y29sSW5zdGFuY2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5n
Lm1tCmluZGV4IGYwNDg4MWRlZmU0ZC4uNGM0OWQxMzE4NTg2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVz
aXppbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1ByZXZl
bnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaCIKLSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKQEAgLTQzLDEy
ICs0MywxMiBAQCBURVNUKFdlYktpdCwgUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdU
ZXN0KQogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRp
bDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRGVueVdpbGxTZW5kUmVxdWVz
dFRlc3QiKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAK
LSAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKSBfc2V0TWluaW11bUxheW91dFdpZHRoOjQwMF07
Ci0gICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tXZWJWaWV3ICpz
ZW5kZXIpIHsKKyAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLm1pbmltdW1TaXplRm9yQXV0b0xh
eW91dCA9IE5TTWFrZVNpemUoNDAwLCAzMDApOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAg
ICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CiAgICAgfV0pOwotICAgIHdlYlZpZXcucGxhdGZv
cm1WaWV3KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwotICAgIFt3
ZWJWaWV3LnBsYXRmb3JtVmlldygpIGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHkgc3R5bGU9
J2JhY2tncm91bmQtaW1hZ2U6dXJsKGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FB
QUFOU1VoRVVnQUFBQW9BQUFBS0NBWUFBQUNOTXMrOUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpH
OWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBRlpKUkVGVWVGNTl6NEVKQURFSVExRjM2azd1NUU3
WktYZVVRUEFDSjN3SzdVTm9rVnhWazlrSG5RSDdiWTloYkR5RGhOWGdqcFJMcUZsbzRNMkdnZnlK
SGhqcThWNGFnZnJnUFFYM0p0SlFHYm9mbUNIZ0EvbkFLa3MrSkFqRkFBQUFBRWxGVGtTdVFtQ0Mp
Oyc+PC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpi
bGFuayJdXTsKKyAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3LnBs
YXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6QCI8
aHRtbD48Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFz
ZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBb0FBQUFLQ0FZQUFBQ05Ncys5QUFBQUdYUkZX
SFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFGWkpSRUZVZUY1OXo0
RUpBREVJUTFGMzZrN3U1RTdaS1hlVVFQQUNKM3dLN1VOb2tWeFZrOWtIblFIN2JZOWhiRHlEaE5Y
Z2pwUkxxRmxvNE0yR2dmeUpIaGpxOFY0YWdmcmdQUVgzSnRKUUdib2ZtQ0hnQS9uQUtrcytKQWpG
QUFBQUFFbEZUa1N1UW1DQyk7Jz48L2JvZHk+PC9odG1sPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImFib3V0OmJsYW5rIl1dOwogCiAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1Vz
ZXJDb250ZW50VGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9V
c2VyQ29udGVudFRlc3QubW0KaW5kZXggNmM4ZGJhNjFjODk3Li5hMjQyMjZlZjI0YWMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVudFRl
c3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250
ZW50VGVzdC5tbQpAQCAtMzQsOSArMzQsNyBAQAogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNS
ZXRhaW5QdHIuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuaD4KLSNpbXBvcnQgPFdlYktp
dC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KLSNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKIHN0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwpAQCAtMTIwLDIxICsxMTgsMTkg
QEAgc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdLUGFnZVJlZiBwYWdlUmVm
LCBXS1N0cmluZ1JlZiBzY3JpcHRSZWYsIFIKIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0
LCBBZGRVc2VyU3R5bGVTaGVldEJlZm9yZUNyZWF0aW5nVmlldykKIHsKICAgICB0ZXN0RmluaXNo
ZWQgPSBmYWxzZTsKKyAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6
dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmls
IGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBtYWluRnJhbWVPbmx5OllFU107CiAgICAg
Ci0gICAgYXV0byBzaGVldCA9IGFkb3B0TlMoW1tfV0tVc2VyU3R5bGVTaGVldCBhbGxvY10gaW5p
dFdpdGhTb3VyY2U6dXNlclN0eWxlU2hlZXQgZm9yTWFpbkZyYW1lT25seTpZRVNdKTsKLQotICAg
IGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIFt3a1ZpZXcuZ2V0KCkuY29uZmlndXJh
dGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTdHlsZVNoZWV0OnNoZWV0LmdldCgp
XTsKKyAgICBhdXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5n
ZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV0pOwog
ICAgIGF1dG8gYmFja2dyb3VuZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCkpOwotICAgIGF1dG8gbG9hZERlbGVn
YXRlID0gYWRvcHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLV2ViVmlldyAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZShbd2tWaWV3IF9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tX
ZWJWaWV3XSwgYmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAg
YXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3
a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikg
ewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKICAg
ICAgICAgfSk7CiAgICAgfV0pOwotICAgIHdrVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBsb2FkRGVsZWdhdGUuZ2V0KCk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9s
bGVyXS5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCi0gICAgW3drVmll
dyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKyAgICBbW3drVmlldyBi
cm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VV
Ukw6bmlsXTsKICAgICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hl
ZCk7CiB9CkBAIC0xNDMsMjAgKzEzOSwxOSBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVz
dCwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNyZWF0aW5nVmlldykKIHsKICAgICB0ZXN0RmluaXNo
ZWQgPSBmYWxzZTsKICAgICAKLSAgICBhdXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBh
dXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93
c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV0pOwogICAgIGF1dG8g
YmFja2dyb3VuZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCkpOwotICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLV2ViVmlldyAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShbd2tWaWV3IF9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3XSwg
YmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYg
c2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byBsb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFn
ZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewogICAgICAg
ICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGdy
ZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7
CiAgICAgfV0pOwotICAgIHdrVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBsb2FkRGVs
ZWdhdGUuZ2V0KCk7Ci0KLSAgICBhdXRvIHNoZWV0ID0gYWRvcHROUyhbW19XS1VzZXJTdHlsZVNo
ZWV0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU3R5bGVTaGVldCBmb3JNYWluRnJhbWVPbmx5
OllFU10pOwotICAgIFt3a1ZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRy
b2xsZXIgX2FkZFVzZXJTdHlsZVNoZWV0OnNoZWV0LmdldCgpXTsKKyAgICBbd2tWaWV3IGJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsK
IAotICAgIFt3a1ZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07Cisg
ICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OnVzZXJTdHlsZVNoZWV0
IGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQ
YXR0ZXJuU3RyaW5nczpuaWwgbWFpbkZyYW1lT25seTpZRVNdOworICAgIAorICAgIFtbd2tWaWV3
IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFz
ZVVSTDpuaWxdOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQp
OwogfQpAQCAtMTY0LDIyICsxNTksMjEgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3Qs
IEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVhdGluZ1ZpZXcpCiBURVNUX0YoV2ViS2l0MlVzZXJD
b250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogewogICAgIHRlc3RGaW5pc2hl
ZCA9IGZhbHNlOwotICAgIGF1dG8gc2hlZXQgPSBhZG9wdE5TKFtbX1dLVXNlclN0eWxlU2hlZXQg
YWxsb2NdIGluaXRXaXRoU291cmNlOnVzZXJTdHlsZVNoZWV0IGZvck1haW5GcmFtZU9ubHk6WUVT
XSk7CisgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OnVzZXJTdHls
ZVNoZWV0IGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRl
TWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIGF1
dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIFt3a1ZpZXcuZ2V0KCkuY29uZmlndXJhdGlv
bi51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJTdHlsZVNoZWV0OnNoZWV0LmdldCgpXTsK
KyAgICBhdXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQo
KSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV0pOwogICAg
IGF1dG8gYmFja2dyb3VuZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCkpOwotICAgIGF1dG8gbG9hZERlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLV2ViVmlldyAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShbd2tWaWV3IF9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJW
aWV3XSwgYmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0
byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1Zp
ZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewog
ICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIHJlZEluUkdCKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CiAgICAgICAg
IH0pOwogICAgIH1dKTsKLSAgICB3a1ZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gbG9h
ZERlbGVnYXRlLmdldCgpOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0u
bG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAotICAgIFt3a1ZpZXcuZ2V0
KCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX3JlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0c107CisgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIHJlbW92ZUFsbFVzZXJTdHlsZVNo
ZWV0c107CiAgICAgCi0gICAgW3drVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VV
Ukw6bmlsXTsKKyAgICBbW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkSFRN
TFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKICAgICAKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0xODcsMjAgKzE4MSwxOSBAQCBURVNU
X0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogVEVT
VF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTY3JpcHRCZWZvcmVDcmVhdGluZ1Zp
ZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7Ci0gICAgYXV0byBzY3JpcHQgPSBhZG9w
dE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5XSBpbmplY3Rp
b25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFpbkZy
YW1lT25seTpZRVNdKTsKLQotICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwotICAgIFt3
a1ZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgYWRkVXNlclNj
cmlwdDpzY3JpcHQuZ2V0KCldOworICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU2Ny
aXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMgPSB0cnVlOyIsIHVzZXJTY3JpcHRU
ZXN0UHJvcGVydHldIGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBl
eGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgaW5qZWN0aW9uVGltZTprV0tJbmplY3RBdERv
Y3VtZW50U3RhcnQgbWFpbkZyYW1lT25seTpZRVNdOworICAgIAorICAgIGF1dG8gd2tWaWV3ID0g
YWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdy
b3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CiAgICAgYXV0byB1c2VyU2NyaXB0VGVz
dFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1
c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7Ci0gICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1Rv
UnVuT25Mb2FkOl4oV0tXZWJWaWV3ICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKFt3a1ZpZXcgX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dlYlZpZXddLCB1c2Vy
U2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLmdldCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVl
UmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8g
bG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciAqc2VuZGVyKSB7CisgICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShbd2tWaWV3
IHBhZ2VSZWZdLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLmdldCgpLCBeKFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJv
cikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc0Jvb2xlYW4oc2VyaWFsaXplZFNj
cmlwdFZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7CiAgICAg
ICAgIH0pOwogICAgIH1dKTsKLSAgICB3a1ZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0g
bG9hZERlbGVnYXRlLmdldCgpOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
cl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAotICAgIFt3a1ZpZXcg
bG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKKyAgICBbW3drVmlldyBicm93c2luZ0Nv
bnRleHRDb250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOwogICAgIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KQEAgLTIwOSwy
MCArMjAyLDE5IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU2NyaXB0
QWZ0ZXJDcmVhdGluZ1ZpZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgCi0g
ICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5T
KFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJv
d3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKICAgICBhdXRvIHVzZXJTY3JpcHRUZXN0UHJvcGVy
dHlTdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVzZXJTY3Jp
cHRUZXN0UHJvcGVydHkpKTsKLSAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0
QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5Pbkxv
YWQ6XihXS1dlYlZpZXcgKnNlbmRlcikgewotICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoW3drVmlldyBfcGFnZVJlZkZvclRyYW5zaXRpb25Ub1dLV2ViVmlld10sIHVzZXJTY3JpcHRU
ZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byBsb2FkRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpz
ZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFnZVJl
Zl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAg
ICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzQm9vbGVhbihzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIHRydWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgfSk7
CiAgICAgfV0pOwotICAgIHdrVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBsb2FkRGVs
ZWdhdGUuZ2V0KCk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2Fk
RGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCi0gICAgYXV0byBzY3JpcHQgPSBh
ZG9wdE5TKFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5XSBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFp
bkZyYW1lT25seTpZRVNdKTsKLSAgICBbd2tWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24udXNlckNv
bnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6c2NyaXB0LmdldCgpXTsKKyAgICBbYnJvd3Np
bmdDb250ZXh0R3JvdXAgYWRkVXNlclNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5XSBiYXNlVVJMOm5pbCBpbmNsdWRl
TWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGlu
amVjdGlvblRpbWU6a1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0IG1haW5GcmFtZU9ubHk6WUVTXTsK
ICAgICAKLSAgICBbd2tWaWV3IGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CisgICAg
W1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6QCIiIGJh
c2VVUkw6bmlsXTsKICAgICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5p
c2hlZCk7CiB9CkBAIC0yMzAsMjIgKzIyMiwyMSBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50
VGVzdCwgQWRkVXNlclNjcmlwdEFmdGVyQ3JlYXRpbmdWaWV3KQogVEVTVF9GKFdlYktpdDJVc2Vy
Q29udGVudFRlc3QsIFJlbW92ZUFsbFVzZXJTY3JpcHRzKQogewogICAgIHRlc3RGaW5pc2hlZCA9
IGZhbHNlOwotICAgIGF1dG8gc2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10g
aW5pdFdpdGhTb3VyY2U6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7Iiwg
dXNlclNjcmlwdFRlc3RQcm9wZXJ0eV0gaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6WUVTXSk7Ci0KLSAgICBhdXRv
IHdrVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKLSAgICBbd2tWaWV3LmdldCgpLmNvbmZpZ3VyYXRpb24u
dXNlckNvbnRlbnRDb250cm9sbGVyIGFkZFVzZXJTY3JpcHQ6c2NyaXB0LmdldCgpXTsKKyAgICBb
YnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5XSBiYXNlVVJMOm5pbCBp
bmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6
bmlsIGluamVjdGlvblRpbWU6a1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0IG1haW5GcmFtZU9ubHk6
WUVTXTsKKyAgICAKKyAgICBhdXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nl
c3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5n
ZXQoKV0pOwogICAgIGF1dG8gdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9wZXJ0eSkpOwot
ICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLV2ViVmlldyAqc2Vu
ZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShbd2tWaWV3IF9wYWdlUmVm
Rm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3XSwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZy5n
ZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IFdLRXJyb3JSZWYgZXJyb3IpIHsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5P
bkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAgICBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgdXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eVN0cmluZy5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNj
cmlwdFZhbHVlSXNVbmRlZmluZWQoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKICAgICAgICAgICAg
IHRlc3RGaW5pc2hlZCA9IHRydWU7CiAgICAgICAgIH0pOwogICAgIH1dKTsKLSAgICB3a1ZpZXcu
Z2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOworICAgIFt3a1Zp
ZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRl
LmdldCgpOwogICAgIAotICAgIFt3a1ZpZXcuZ2V0KCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVu
dENvbnRyb2xsZXIgcmVtb3ZlQWxsVXNlclNjcmlwdHNdOworICAgIFticm93c2luZ0NvbnRleHRH
cm91cCByZW1vdmVBbGxVc2VyU2NyaXB0c107CiAgICAgCi0gICAgW3drVmlldyBsb2FkSFRNTFN0
cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKyAgICBbW3drVmlldyBicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKICAg
ICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0Nv
bnRleHRMb2FkRGVsZWdhdGVUZXN0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRPYmpDL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdC5tbQppbmRleCAwMjNmM2Uy
MzY0ZmEuLmJmYmFiODRiYWJhYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRPYmpDL1dLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvV0tCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGVUZXN0Lm1tCkBAIC0zMSw3ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NHcm91
cC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tWaWV3Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCkBAIC00MiwyNCArNDIsMzAg
QEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7IAogcHVibGljOgotICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHZpZXc7CisgICAgUmV0YWluUHRyPFdLUHJvY2Vzc0dyb3VwPiBwcm9jZXNzR3JvdXA7
CisgICAgUmV0YWluUHRyPFdLQnJvd3NpbmdDb250ZXh0R3JvdXA+IGJyb3dzaW5nQ29udGV4dEdy
b3VwOworICAgIFJldGFpblB0cjxXS1ZpZXc+IHZpZXc7CiAKICAgICBXS0Jyb3dzaW5nQ29udGV4
dExvYWREZWxlZ2F0ZVRlc3QoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KQogICAgIHsKLSAgICAgICAgdmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICAgICAgcHJvY2Vzc0dy
b3VwID0gYWRvcHROUyhbW1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0XSk7CisgICAgICAgIGJy
b3dzaW5nQ29udGV4dEdyb3VwID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxs
b2NdIGluaXRXaXRoSWRlbnRpZmllcjpAIlRlc3RJZGVudGlmaWVyIl0pOworICAgICAgICB2aWV3
ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4
dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkKICAgICB7CiAgICAgICAgIHZpZXcgPSBudWxscHRyOworICAgICAg
ICBicm93c2luZ0NvbnRleHRHcm91cCA9IG51bGxwdHI7CisgICAgICAgIHByb2Nlc3NHcm91cCA9
IG51bGxwdHI7CiAgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UKIAotQGludGVyZmFjZSBTaW1w
bGVMb2FkRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAaW50ZXJm
YWNlIFNpbXBsZUxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS0Jyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZT4KIHsKICAgICBib29sKiBfc2ltcGxlTG9hZERvbmU7CiB9CkBAIC04MCw3ICs4Niw3
IEBAIC0gKGlkKWluaXRXaXRoRmxhZzooYm9vbCopZmxhZwogICAgIHJldHVybiBzZWxmOwogfQog
Ci0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlv
bjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCistICh2b2lkKWJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRGaW5pc2hMb2FkOihXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKilzZW5kZXIKIHsKICAgICAqX3NpbXBsZUxvYWREb25lID0gdHJ1ZTsKIH0KQEAg
LTk4LDE3ICsxMDQsMTcgQEAgVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVz
dCwgU2ltcGxlTG9hZCkKIAogICAgIC8vIEFkZCB0aGUgbG9hZCBkZWxlZ2F0ZS4KICAgICBhdXRv
IGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRmxhZzomc2ltcGxlTG9hZERvbmVdKTsKLSAgICB2aWV3LmdldCgpLm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgLy8g
TG9hZCB0aGUgZmlsZS4KICAgICBOU1VSTCAqbnNVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKLSAgICBbdmlldy5nZXQoKSBsb2FkRmls
ZVVSTDpuc1VSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpuc1VSTF07CisgICAgW3ZpZXcuZ2V0
KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRmlsZVVSTDpuc1VSTCByZXN0cmljdFRv
RmlsZXNXaXRoaW46bmlsXTsKIAogICAgIC8vIFdhaXQgZm9yIHRoZSBsb2FkIHRvIGZpbmlzaC4K
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnNpbXBsZUxvYWREb25lKTsKIAogICAgIC8v
IFRlYXIgZG93biB0aGUgZGVsZWdhdGUuCi0gICAgdmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBuaWw7CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWRE
ZWxlZ2F0ZSA9IG5pbDsKIH0KIAogVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
VGVzdCwgU2ltcGxlTG9hZE9mSFRNTFN0cmluZykKQEAgLTExNywxNiArMTIzLDE2IEBAIFRFU1Rf
RihXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QsIFNpbXBsZUxvYWRPZkhUTUxTdHJp
bmcpCiAKICAgICAvLyBBZGQgdGhlIGxvYWQgZGVsZWdhdGUuCiAgICAgYXV0byBsb2FkRGVsZWdh
dGUgPSBhZG9wdE5TKFtbU2ltcGxlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEZsYWc6JnNp
bXBsZUxvYWREb25lXSk7Ci0gICAgdmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBsb2Fk
RGVsZWdhdGUuZ2V0KCk7CisgICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVy
LmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAgIC8vIExvYWQgdGhlIEhU
TUwgc3RyaW5nLgotICAgIFt2aWV3LmdldCgpIGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+
U2ltcGxlIEhUTUwgU3RyaW5nPC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJhYm91dDpibGFuayJdXTsKKyAgICBbdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+U2ltcGxlIEhUTUwgU3RyaW5n
PC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFu
ayJdXTsKIAogICAgIC8vIFdhaXQgZm9yIHRoZSBsb2FkIHRvIGZpbmlzaC4KICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnNpbXBsZUxvYWREb25lKTsKIAogICAgIC8vIFRlYXIgZG93biB0
aGUgZGVsZWdhdGUuCi0gICAgdmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBuaWw7Cisg
ICAgdmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IG5p
bDsKIH0KIAogVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxl
TG9hZE9mSFRNTFN0cmluZ19OaWxCYXNlVVJMKQpAQCAtMTM1LDE2ICsxNDEsMTYgQEAgVEVTVF9G
KFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxlTG9hZE9mSFRNTFN0cmlu
Z19OaWxCYXNlVVJMKQogCiAgICAgLy8gQWRkIHRoZSBsb2FkIGRlbGVnYXRlLgogICAgIGF1dG8g
bG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1NpbXBsZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhGbGFnOiZzaW1wbGVMb2FkRG9uZV0pOwotICAgIHZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gbG9hZERlbGVnYXRlLmdldCgpOworICAgIHZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAgICAvLyBM
b2FkIHRoZSBIVE1MIHN0cmluZywgcGFzcyBuaWwgYXMgdGhlIGJhc2VVUkwuCi0gICAgW3ZpZXcu
Z2V0KCkgbG9hZEhUTUxTdHJpbmc6QCI8aHRtbD48Ym9keT5TaW1wbGUgSFRNTCBTdHJpbmc8L2Jv
ZHk+PC9odG1sPiIgYmFzZVVSTDpuaWxdOworICAgIFt2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6QCI8aHRtbD48Ym9keT5TaW1wbGUgSFRNTCBTdHJp
bmc8L2JvZHk+PC9odG1sPiIgYmFzZVVSTDpuaWxdOwogCiAgICAgLy8gV2FpdCBmb3IgdGhlIGxv
YWQgdG8gZmluaXNoLgogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc2ltcGxlTG9hZERv
bmUpOwogCiAgICAgLy8gVGVhciBkb3duIHRoZSBkZWxlZ2F0ZS4KLSAgICB2aWV3LmdldCgpLm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IG5pbDsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwogfQogCiBURVNUX0YoV0tCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1wbGVMb2FkT2ZIVE1MU3RyaW5nX05pbEhUTUxTdHJpbmdB
bmRCYXNlVVJMKQpAQCAtMTUzLDIwICsxNTksMTkgQEAgVEVTVF9GKFdLQnJvd3NpbmdDb250ZXh0
TG9hZERlbGVnYXRlVGVzdCwgU2ltcGxlTG9hZE9mSFRNTFN0cmluZ19OaWxIVE1MU3RyaW5nQW4K
IAogICAgIC8vIEFkZCB0aGUgbG9hZCBkZWxlZ2F0ZS4KICAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tTaW1wbGVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRmxhZzomc2ltcGxl
TG9hZERvbmVdKTsKLSAgICB2aWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGxvYWREZWxl
Z2F0ZS5nZXQoKTsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9h
ZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgLy8gTG9hZCB0aGUgSFRNTCBz
dHJpbmcgKGFzIG5pbCkuCi0gICAgTlNTdHJpbmcgKnN0cmluZyA9IG5pbDsKLSAgICBbdmlldy5n
ZXQoKSBsb2FkSFRNTFN0cmluZzpzdHJpbmcgYmFzZVVSTDpuaWxdOworICAgIFt2aWV3LmdldCgp
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6bmlsIGJhc2VVUkw6bmls
XTsKIAogICAgIC8vIFdhaXQgZm9yIHRoZSBsb2FkIHRvIGZpbmlzaC4KICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnNpbXBsZUxvYWREb25lKTsKIAogICAgIC8vIFRlYXIgZG93biB0aGUg
ZGVsZWdhdGUuCi0gICAgdmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBuaWw7CisgICAg
dmlldy5nZXQoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IG5pbDsK
IH0KIAotQGludGVyZmFjZSBTaW1wbGVMb2FkRmFpbERlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlPgorQGludGVyZmFjZSBTaW1wbGVMb2FkRmFpbERlbGVnYXRlIDogTlNP
YmplY3QgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPgogewogICAgIGJvb2wqIF9zaW1w
bGVMb2FkRmFpbERvbmU7CiB9CkBAIC0xODcsNyArMTkyLDcgQEAgLSAoaWQpaW5pdFdpdGhGbGFn
Oihib29sKilmbGFnCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihudWxsX3Vuc3Bl
Y2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IKKy0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjooV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICopc2VuZGVyIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3I6KE5TRXJy
b3IgKillcnJvcgogewogICAgIEVYUEVDVF9FUSgtMTEwMCwgZXJyb3IuY29kZSk7CiAgICAgRVhQ
RUNUX1dLX1NUUkVRKE5TVVJMRXJyb3JEb21haW4sIGVycm9yLmRvbWFpbik7CkBAIC0yMDMsMTcg
KzIwOCwxNyBAQCBURVNUX0YoV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0LCBTaW1w
bGVMb2FkRmFpbCkKIAogICAgIC8vIEFkZCB0aGUgbG9hZCBkZWxlZ2F0ZS4KICAgICBhdXRvIGxv
YWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tTaW1wbGVMb2FkRmFpbERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEZsYWc6JnNpbXBsZUxvYWRGYWlsRG9uZV0pOwotICAgIHZpZXcuZ2V0KCkubmF2aWdhdGlv
bkRlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOworICAgIHZpZXcuZ2V0KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAKICAg
ICAvLyBMb2FkIGEgbm9uLWV4aXN0ZW50IGZpbGUuCiAgICAgTlNVUkwgKm5zVVJMID0gW05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJmaWxlOi8vL2RvZXMtbm90LWV4aXN0Lmh0bWwiXTsKLSAgICBbdmll
dy5nZXQoKSBsb2FkRmlsZVVSTDpuc1VSTCBhbGxvd2luZ1JlYWRBY2Nlc3NUb1VSTDpuc1VSTF07
CisgICAgW3ZpZXcuZ2V0KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkRmlsZVVSTDpu
c1VSTCByZXN0cmljdFRvRmlsZXNXaXRoaW46bmlsXTsKIAogICAgIC8vIFdhaXQgZm9yIHRoZSBs
b2FkIHRvIGZhaWwuCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzaW1wbGVMb2FkRmFp
bERvbmUpOwogCiAgICAgLy8gVGVhciBkb3duIHRoZSBkZWxlZ2F0ZS4KLSAgICB2aWV3LmdldCgp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IG5pbDsKKyAgICB2aWV3LmdldCgpLmJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbmlsOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQWNjZXB0c0Zp
cnN0TW91c2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9BY2NlcHRzRmlyc3RN
b3VzZS5tbQppbmRleCBiNzkwN2E5MmE2ZjguLjgyNTA2NzY2OWE4MiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQWNjZXB0c0ZpcnN0TW91c2UubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQWNjZXB0c0ZpcnN0TW91c2UubW0KQEAgLTQzLDcg
KzQzLDcgQEAgcHVibGljOgogICAgIC8vIFdlYktpdEFnbm9zdGljVGVzdAogICAgIHZpcnR1YWwg
TlNVUkwgKnVybCgpIGNvbnN0IHsgcmV0dXJuIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJhY2NlcHRzRmlyc3RNb3VzZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTG9hZFVSTChXZWJWaWV3ICp3ZWJWaWV3KSB7IHJ1blRlc3Qod2ViVmlldyk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkTG9hZFVSTChXS1dlYlZpZXcgKndrVmlldykgeyBydW5UZXN0KHdrVmll
dyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFVSTChXS1ZpZXcgKndrVmlldykgeyBydW5U
ZXN0KHdrVmlldyk7IH0KIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3PgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQXR0cmlidXRlZFN0cmluZy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW0KaW5kZXggNzA1
NWI3ODBkNDZmLi4zNmEwOTA2Nzk5N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0F0dHJpYnV0ZWRTdHJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvQXR0cmlidXRlZFN0cmluZy5tbQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gV2ViS2l0QWdub3N0aWNUZXN0CiAgICAgdmlydHVhbCB2b2lkIGRpZExvYWRVUkwoV2Vi
VmlldyAqd2ViVmlldykgeyBydW5TeW5jVGVzdCh3ZWJWaWV3KTsgfQogICAgIC8vIEZJWE1FOiBS
ZWltcGxlbWVudCB0aGUgdGVzdCB1c2luZyBhc3luYyBOU1RleHRJbnB1dENsaWVudCBpbnRlcmZh
Y2UuCi0gICAgdmlydHVhbCB2b2lkIGRpZExvYWRVUkwoV0tXZWJWaWV3ICp3a1ZpZXcpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkVVJMKFdLVmlldyAqd2tWaWV3KSB7IH0KIAogICAgIHZp
cnR1YWwgTlNVUkwgKnVybCgpIGNvbnN0IHsgcmV0dXJuIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJhdHRyaWJ1dGVkU3RyaW5nQ3VzdG9tRm9udCIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07IH0KIH07
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAvLyBXZWJLaXRBZ25vc3RpY1Rlc3QKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFVSTChXZWJWaWV3ICp3ZWJWaWV3KSB7IHJ1blN5bmNUZXN0
KHdlYlZpZXcpOyB9CiAgICAgLy8gRklYTUU6IFJlaW1wbGVtZW50IHRoZSB0ZXN0IHVzaW5nIGFz
eW5jIE5TVGV4dElucHV0Q2xpZW50IGludGVyZmFjZS4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9h
ZFVSTChXS1dlYlZpZXcgKndrVmlldykgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRVUkwo
V0tWaWV3ICp3a1ZpZXcpIHsgfQogCiAgICAgdmlydHVhbCBOU1VSTCAqdXJsKCkgY29uc3QgeyBy
ZXR1cm4gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF0dHJpYnV0ZWRT
dHJpbmdTdHJpa2V0aHJvdWdoIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsgfQogfTsKQEAgLTk3LDcgKzk3LDcgQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3PiB2b2lkIHJ1blN5bmNUZXN0KFZpZXcpOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpZExvYWRVUkwoV2ViVmlldyAqd2ViVmlldykgeyBydW5TeW5j
VGVzdCh3ZWJWaWV3KTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkVVJMKFdLV2ViVmlldyAq
d2tWaWV3KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFVSTChXS1ZpZXcgKndrVmlldykg
eyB9CiAKICAgICB2aXJ0dWFsIE5TVVJMICp1cmwoKSBjb25zdCB7IHJldHVybiBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiYXR0cmlidXRlZFN0cmluZ05ld2xpbmVBdEVu
ZE9mRG9jdW1lbnQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOyB9CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL21hYy9EZXZpY2VTY2FsZUZhY3Rvck9uQmFjay5tbQppbmRleCA0ZWEzZWJlYTEx
NjguLjczNGIzNWVmNDgyNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvRGV2aWNlU2NhbGVGYWN0b3JPbkJhY2subW0KQEAgLTI5LDcgKzI5LDcgQEAKICNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJTeW50aGV0aWNCYWNraW5nU2Nh
bGVGYWN0b3JXaW5kb3cuaCIKICNpbXBvcnQgIldlYktpdEFnbm9zdGljVGVzdC5oIgotI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2
YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKQEAgLTQzLDkgKzQzLDkgQEAgcHVibGljOgogICAgIC8vIFdlYktpdEFnbm9zdGljVGVz
dAogICAgIHZpcnR1YWwgTlNVUkwgKnVybCgpIGNvbnN0IHsgcmV0dXJuIFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJkZXZpY2VQaXhlbFJhdGlvIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRMb2FkVVJMKFdlYlZpZXcgKndlYlZpZXcpIHsgcnVuVGVzdCh3ZWJW
aWV3KTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkVVJMKFdLV2ViVmlldyAqd2tWaWV3KSB7
IHJ1blRlc3Qod2tWaWV3KTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkVVJMKFdLVmlldyAq
d2tWaWV3KSB7IHJ1blRlc3Qod2tWaWV3KTsgfQogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXpl
VmlldyhXZWJWaWV3ICopOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplVmlldyhXS1dlYlZp
ZXcgKik7CisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWaWV3KFdLVmlldyAqKTsKIH07CiAK
IFJldGFpblB0cjxTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3c+IERldmljZVNjYWxl
RmFjdG9yT25CYWNrOjpjcmVhdGVXaW5kb3coKQpAQCAtNjIsMTEgKzYyLDExIEBAIHZvaWQgRGV2
aWNlU2NhbGVGYWN0b3JPbkJhY2s6OmluaXRpYWxpemVWaWV3KFdlYlZpZXcgKnZpZXcpCiAgICAg
W1t2aWV3IHByZWZlcmVuY2VzXSBzZXRDYWNoZU1vZGVsOldlYkNhY2hlTW9kZWxEb2N1bWVudEJy
b3dzZXJdOwogfQogCi12b2lkIERldmljZVNjYWxlRmFjdG9yT25CYWNrOjppbml0aWFsaXplVmll
dyhXS1dlYlZpZXcgKnZpZXcpCit2b2lkIERldmljZVNjYWxlRmFjdG9yT25CYWNrOjppbml0aWFs
aXplVmlldyhXS1ZpZXcgKnZpZXcpCiB7CiAgICAgLy8gVGhlIGRlZmF1bHQgY2FjaGUgbW9kZWwg
aGFzIGEgY2FwYWNpdHkgb2YgMCwgc28gaXQgaXMgbmVjZXNzYXJ5IHRvIHN3aXRjaCB0byBhIGNh
Y2hlCiAgICAgLy8gbW9kZWwgdGhhdCBhY3R1YWxsIGNhY2hlcyB0aGluZ3MuCi0gICAgV0tDb250
ZXh0U2V0Q2FjaGVNb2RlbChXS1BhZ2VHZXRDb250ZXh0KFt2aWV3IF9wYWdlUmVmRm9yVHJhbnNp
dGlvblRvV0tXZWJWaWV3XSksIGtXS0NhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIpOworICAgIFdL
Q29udGV4dFNldENhY2hlTW9kZWwoV0tQYWdlR2V0Q29udGV4dChbdmlldyBwYWdlUmVmXSksIGtX
S0NhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmll
dz4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0R5bmFtaWNEZXZp
Y2VTY2FsZUZhY3Rvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0R5bmFtaWNE
ZXZpY2VTY2FsZUZhY3Rvci5tbQppbmRleCA2YjUxYjJiMjcwMDUuLjU4OWMwZTNjMDU3NCAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHluYW1pY0RldmljZVNjYWxl
RmFjdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0R5bmFtaWNEZXZp
Y2VTY2FsZUZhY3Rvci5tbQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgLy8gV2ViS2l0
QWdub3N0aWNUZXN0CiAgICAgdmlydHVhbCBOU1VSTCAqdXJsKCkgY29uc3QgeyByZXR1cm4gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImRldmljZVBpeGVsUmF0aW8iIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZExvYWRVUkwoV2ViVmlldyAqd2ViVmlldykgeyBy
dW5UZXN0KHdlYlZpZXcpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZExvYWRVUkwoV0tXZWJWaWV3
ICp3a1ZpZXcpIHsgcnVuVGVzdCh3a1ZpZXcpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRV
UkwoV0tWaWV3ICp3a1ZpZXcpIHsgcnVuVGVzdCh3a1ZpZXcpOyB9CiB9OwogCiBSZXRhaW5QdHI8
U3ludGhldGljQmFja2luZ1NjYWxlRmFjdG9yV2luZG93PiBEeW5hbWljRGV2aWNlU2NhbGVGYWN0
b3I6OmNyZWF0ZVdpbmRvdygpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9GdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0Z1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tCmluZGV4IGE0MTVkNDVkMjE3
Mi4uMDA0OGNjNzM5Yjc1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9GdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9GdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbQpAQCAtMjksMTAgKzI5LDEw
IEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJXZWJLaXRBZ25vc3RpY1Rlc3QuaCIKICNp
bXBvcnQgPENhcmJvbi9DYXJib24uaD4KLSNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBA
aW50ZXJmYWNlIE5TV2luZG93Q29udHJvbGxlciAoV2ViS2l0RnVsbFNjcmVlbkFkZGl0aW9ucykK
QEAgLTc1LDE4ICs3NSwxOCBAQCBwdWJsaWM6CiAgICAgLy8gV2ViS2l0QWdub3N0aWNUZXN0CiAg
ICAgTlNVUkwgKnVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZSIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07
IH0KICAgICB2b2lkIGRpZExvYWRVUkwoV2ViVmlldyAqd2ViVmlldykgb3ZlcnJpZGUgeyBydW5U
ZXN0KHdlYlZpZXcpOyB9Ci0gICAgdm9pZCBkaWRMb2FkVVJMKFdLV2ViVmlldyAqd2tWaWV3KSBv
dmVycmlkZSB7IHJ1blRlc3Qod2tWaWV3KTsgfQorICAgIHZvaWQgZGlkTG9hZFVSTChXS1ZpZXcg
KndrVmlldykgb3ZlcnJpZGUgeyBydW5UZXN0KHdrVmlldyk7IH0KIAogICAgIC8vIFNldHVwIGFu
ZCB0ZWFyZG93biB0aGUgVUlEZWxlZ2F0ZSB3aGljaCBnZXRzIGFsZXJ0KCkgc2lnbmFscyBmcm9t
IHRoZSBwYWdlLgogICAgIHZvaWQgaW5pdGlhbGl6ZVZpZXcoV2ViVmlldyAqKSBvdmVycmlkZTsK
LSAgICB2b2lkIGluaXRpYWxpemVWaWV3KFdLV2ViVmlldyAqKSBvdmVycmlkZTsKKyAgICB2b2lk
IGluaXRpYWxpemVWaWV3KFdLVmlldyAqKSBvdmVycmlkZTsKICAgICB2b2lkIHRlYXJkb3duVmll
dyhXZWJWaWV3ICopIG92ZXJyaWRlOwotICAgIHZvaWQgdGVhcmRvd25WaWV3KFdLV2ViVmlldyAq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHRlYXJkb3duVmlldyhXS1ZpZXcgKikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIHNldFBhZ2VTY2FsZShXZWJWaWV3ICosIGRvdWJsZSk7Ci0gICAgdm9pZCBzZXRQ
YWdlU2NhbGUoV0tXZWJWaWV3ICosIGRvdWJsZSk7CisgICAgdm9pZCBzZXRQYWdlU2NhbGUoV0tW
aWV3ICosIGRvdWJsZSk7CiAgICAgdm9pZCBzZW5kTW91c2VEb3duRXZlbnQoV2ViVmlldyAqLCBO
U0V2ZW50ICopOwotICAgIHZvaWQgc2VuZE1vdXNlRG93bkV2ZW50KFdLV2ViVmlldyAqLCBOU0V2
ZW50ICopOworICAgIHZvaWQgc2VuZE1vdXNlRG93bkV2ZW50KFdLVmlldyAqLCBOU0V2ZW50ICop
OwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxpZCA8V2ViVUlEZWxlZ2F0ZT4+IG1fZGVsZWdh
dGU7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZTo6
dGVhcmRvd25WaWV3KFdlYlZpZXcgKndlYlZpZXcpCiAgICAgbV9kZWxlZ2F0ZSA9IG5pbDsKIH0K
IAotdm9pZCBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZTo6aW5pdGlhbGl6ZVZpZXcoV0tXZWJW
aWV3ICp3a1ZpZXcpCit2b2lkIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lOjppbml0aWFsaXpl
VmlldyhXS1ZpZXcgKndrVmlldykKIHsKICAgICBXS1BhZ2VVSUNsaWVudFYwIHVpQ2xpZW50Owog
ICAgIG1lbXNldCgmdWlDbGllbnQsIDAsIHNpemVvZih1aUNsaWVudCkpOwpAQCAtMTE3LDE1ICsx
MTcsMTUgQEAgdm9pZCBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZTo6aW5pdGlhbGl6ZVZpZXco
V0tXZWJWaWV3ICp3a1ZpZXcpCiAgICAgdWlDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKICAgICB1
aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7CiAKLSAgICBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQod2tWaWV3Ll9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJW
aWV3LCAmdWlDbGllbnQuYmFzZSk7CisgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KHdrVmlldy5w
YWdlUmVmLCAmdWlDbGllbnQuYmFzZSk7CiAKICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
aWRlbnRpZmllciA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkZ1bGxz
Y3JlZW5ab29tSW5pdGlhbEZyYW1lUHJlZmVyZW5jZXMiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tQ
cmVmZXJlbmNlc1JlZj4gY3VzdG9tUHJlZmVyZW5jZXMgPSBhZG9wdFdLKFdLUHJlZmVyZW5jZXND
cmVhdGVXaXRoSWRlbnRpZmllcihpZGVudGlmaWVyLmdldCgpKSk7CiAgICAgV0tQcmVmZXJlbmNl
c1NldEZ1bGxTY3JlZW5FbmFibGVkKGN1c3RvbVByZWZlcmVuY2VzLmdldCgpLCB0cnVlKTsKLSAg
ICBXS1BhZ2VHcm91cFNldFByZWZlcmVuY2VzKFdLUGFnZUdldFBhZ2VHcm91cCh3a1ZpZXcuX3Bh
Z2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dlYlZpZXcpLCBjdXN0b21QcmVmZXJlbmNlcy5nZXQoKSk7
CisgICAgV0tQYWdlR3JvdXBTZXRQcmVmZXJlbmNlcyhXS1BhZ2VHZXRQYWdlR3JvdXAod2tWaWV3
LnBhZ2VSZWYpLCBjdXN0b21QcmVmZXJlbmNlcy5nZXQoKSk7CiB9CiAKLXZvaWQgRnVsbHNjcmVl
blpvb21Jbml0aWFsRnJhbWU6OnRlYXJkb3duVmlldyhXS1dlYlZpZXcgKndrVmlldykKK3ZvaWQg
RnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWU6OnRlYXJkb3duVmlldyhXS1ZpZXcgKndrVmlldykK
IHsKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byB0ZWFyZG93biB0aGUgV0tQYWdlVUlDbGllbnQu
CiB9CkBAIC0xMzUsOSArMTM1LDkgQEAgdm9pZCBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZTo6
c2V0UGFnZVNjYWxlKFdlYlZpZXcgKndlYlZpZXcsIGRvdWJsZSBzY2FsZSkKICAgICBbd2ViVmll
dyBfc2NhbGVXZWJWaWV3OnNjYWxlIGF0T3JpZ2luOk5TTWFrZVBvaW50KDAsIDApXTsKIH0KIAot
dm9pZCBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZTo6c2V0UGFnZVNjYWxlKFdLV2ViVmlldyAq
d2tWaWV3LCBkb3VibGUgc2NhbGUpCit2b2lkIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lOjpz
ZXRQYWdlU2NhbGUoV0tWaWV3ICp3a1ZpZXcsIGRvdWJsZSBzY2FsZSkKIHsKLSAgICBXS1BhZ2VT
ZXRTY2FsZUZhY3Rvcih3a1ZpZXcuX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dlYlZpZXcsIHNj
YWxlLCBXS1BvaW50TWFrZSgwLCAwKSk7CisgICAgV0tQYWdlU2V0U2NhbGVGYWN0b3Iod2tWaWV3
LnBhZ2VSZWYsIHNjYWxlLCBXS1BvaW50TWFrZSgwLCAwKSk7CiB9CiAKIHZvaWQgRnVsbHNjcmVl
blpvb21Jbml0aWFsRnJhbWU6OnNlbmRNb3VzZURvd25FdmVudChXZWJWaWV3ICp3ZWJWaWV3LCBO
U0V2ZW50ICpldmVudCkKQEAgLTE0NSw3ICsxNDUsNyBAQCB2b2lkIEZ1bGxzY3JlZW5ab29tSW5p
dGlhbEZyYW1lOjpzZW5kTW91c2VEb3duRXZlbnQoV2ViVmlldyAqd2ViVmlldywgTlNFdmVudCAq
ZQogICAgIFt3ZWJWaWV3Lm1haW5GcmFtZS5mcmFtZVZpZXcuZG9jdW1lbnRWaWV3IG1vdXNlRG93
bjpldmVudF07CiB9CiAKLXZvaWQgRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWU6OnNlbmRNb3Vz
ZURvd25FdmVudChXS1dlYlZpZXcgKndrVmlldywgTlNFdmVudCAqZXZlbnQpCit2b2lkIEZ1bGxz
Y3JlZW5ab29tSW5pdGlhbEZyYW1lOjpzZW5kTW91c2VEb3duRXZlbnQoV0tWaWV3ICp3a1ZpZXcs
IE5TRXZlbnQgKmV2ZW50KQogewogICAgIFt3a1ZpZXcgbW91c2VEb3duOmV2ZW50XTsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1BhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1Bh
Z2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbQppbmRleCAxM2UyZTI4ZGE0NjEu
LmEzODg1YzhmMGU0YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMv
UGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL1BhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5t
bQpAQCAtMjgsOCArMjgsOCBAQAogI2ltcG9ydCAiSmF2YVNjcmlwdFRlc3QuaCIKICNpbXBvcnQg
IlRlc3QuaCIKICNpbXBvcnQgIldlYktpdEFnbm9zdGljVGVzdC5oIgotI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogc3RhdGljIGJvb2wgaXNXYWl0aW5nRm9yUGFnZVNpZ25hbFRvQ29udGludWUgPSBmYWxz
ZTsKQEAgLTcxLDEzICs3MSwxMyBAQCBwdWJsaWM6CiAgICAgLy8gV2ViS2l0QWdub3N0aWNUZXN0
CiAgICAgTlNVUkwgKnVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0No
YW5nZXMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOyB9CiAgICAgdm9pZCBkaWRMb2FkVVJMKFdlYlZpZXcgKndlYlZpZXcpIG92
ZXJyaWRlIHsgcnVuVGVzdCh3ZWJWaWV3KTsgfQotICAgIHZvaWQgZGlkTG9hZFVSTChXS1dlYlZp
ZXcgKndrVmlldykgb3ZlcnJpZGUgeyBydW5UZXN0KHdrVmlldyk7IH0KKyAgICB2b2lkIGRpZExv
YWRVUkwoV0tWaWV3ICp3a1ZpZXcpIG92ZXJyaWRlIHsgcnVuVGVzdCh3a1ZpZXcpOyB9CiAKICAg
ICAvLyBTZXR1cCBhbmQgdGVhcmRvd24gdGhlIFVJRGVsZWdhdGUgd2hpY2ggZ2V0cyBhbGVydCgp
IHNpZ25hbHMgZnJvbSB0aGUgcGFnZS4KICAgICB2b2lkIGluaXRpYWxpemVWaWV3KFdlYlZpZXcg
Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBpbml0aWFsaXplVmlldyhXS1dlYlZpZXcgKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBpbml0aWFsaXplVmlldyhXS1ZpZXcgKikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCB0ZWFyZG93blZpZXcoV2ViVmlldyAqKSBvdmVycmlkZTsKLSAgICB2b2lkIHRlYXJkb3duVmll
dyhXS1dlYlZpZXcgKikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZWFyZG93blZpZXcoV0tWaWV3ICop
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxpZCA8V2ViVUlEZWxlZ2F0ZT4+
IG1fZGVsZWdhdGU7CkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgUGFnZVZpc2liaWxpdHlTdGF0ZVdp
dGhXaW5kb3dDaGFuZ2VzOjp0ZWFyZG93blZpZXcoV2ViVmlldyAqd2ViVmlldykKICAgICBtX2Rl
bGVnYXRlID0gbmlsOwogfQogCi12b2lkIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlczo6aW5pdGlhbGl6ZVZpZXcoV0tXZWJWaWV3ICp3a1ZpZXcpCit2b2lkIFBhZ2VWaXNpYmls
aXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlczo6aW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICp3a1ZpZXcp
CiB7CiAgICAgV0tQYWdlVUlDbGllbnRWMCB1aUNsaWVudDsKICAgICBtZW1zZXQoJnVpQ2xpZW50
LCAwLCBzaXplb2YodWlDbGllbnQpKTsKQEAgLTEwNiwxMCArMTA2LDEwIEBAIHZvaWQgUGFnZVZp
c2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzOjppbml0aWFsaXplVmlldyhXS1dlYlZpZXcg
KndrVmlldykKICAgICB1aUNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwogICAgIHVpQ2xpZW50LnJ1
bkphdmFTY3JpcHRBbGVydCA9IHJ1bkphdmFTY3JpcHRBbGVydDsKIAotICAgIFdLUGFnZVNldFBh
Z2VVSUNsaWVudCh3a1ZpZXcuX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dlYlZpZXcsICZ1aUNs
aWVudC5iYXNlKTsKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQod2tWaWV3LnBhZ2VSZWYsICZ1
aUNsaWVudC5iYXNlKTsKIH0KIAotdm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0No
YW5nZXM6OnRlYXJkb3duVmlldyhXS1dlYlZpZXcgKndrVmlldykKK3ZvaWQgUGFnZVZpc2liaWxp
dHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzOjp0ZWFyZG93blZpZXcoV0tWaWV3ICp3a1ZpZXcpCiB7
CiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gdGVhcmRvd24gdGhlIFdLUGFnZVVJQ2xpZW50Lgog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvSmF2YVNjcmlwdFRlc3RNYWMu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9KYXZhU2NyaXB0VGVzdE1hYy5tbQppbmRleCBi
YzliMTNhNTYyYjAuLmM5NzI0MjE4ZjA3MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvSmF2YVNjcmlwdFRlc3RNYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
SmF2YVNjcmlwdFRlc3RNYWMubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKE1B
QykKIAotI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS1ZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CkBAIC0zOSw5ICszOSw5IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKICAgICByZXR1cm4gY29tcGFyZUpTUmVzdWx0KHNjcmlwdCwgW2FjdHVhbFJlc3VsdCBV
VEY4U3RyaW5nXSwgZXhwZWN0ZWRSZXN1bHQpOwogfQogCi06OnRlc3Rpbmc6OkFzc2VydGlvblJl
c3VsdCBydW5KU1Rlc3QoY29uc3QgY2hhciogdmlld0V4cHIsIGNvbnN0IGNoYXIqIHNjcmlwdEV4
cHIsIGNvbnN0IGNoYXIqIGV4cGVjdGVkUmVzdWx0RXhwciwgV0tXZWJWaWV3ICp2aWV3LCBjb25z
dCBjaGFyKiBzY3JpcHQsIGNvbnN0IGNoYXIqIGV4cGVjdGVkUmVzdWx0KQorOjp0ZXN0aW5nOjpB
c3NlcnRpb25SZXN1bHQgcnVuSlNUZXN0KGNvbnN0IGNoYXIqIHZpZXdFeHByLCBjb25zdCBjaGFy
KiBzY3JpcHRFeHByLCBjb25zdCBjaGFyKiBleHBlY3RlZFJlc3VsdEV4cHIsIFdLVmlldyAqdmll
dywgY29uc3QgY2hhciogc2NyaXB0LCBjb25zdCBjaGFyKiBleHBlY3RlZFJlc3VsdCkKIHsKLSAg
ICByZXR1cm4gcnVuSlNUZXN0KHZpZXdFeHByLCBzY3JpcHRFeHByLCBleHBlY3RlZFJlc3VsdEV4
cHIsIFt2aWV3IF9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3XSwgc2NyaXB0LCBleHBl
Y3RlZFJlc3VsdCk7CisgICAgcmV0dXJuIHJ1bkpTVGVzdCh2aWV3RXhwciwgc2NyaXB0RXhwciwg
ZXhwZWN0ZWRSZXN1bHRFeHByLCBbdmlldyBwYWdlUmVmXSwgc2NyaXB0LCBleHBlY3RlZFJlc3Vs
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQppbmRleCBhNTVmNGVhYmNkODUuLjFlMzBj
ZTY3NDBjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1XZWJW
aWV3TWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRmb3JtV2ViVmlld01h
Yy5tbQpAQCAtMjgsMzIgKzI4LDE2IEBACiAKICNpbXBvcnQgIk9mZnNjcmVlbldpbmRvdy5oIgog
I2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dLUGFnZVByaXZhdGVN
YWMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1JldGFpblB0ci5oPgotI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
Vmlld1ByaXZhdGUuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi12b2lkIFBsYXRm
b3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIHBhZ2VDb25maWd1
cmF0aW9uLCBDbGFzcyB3a1ZpZXdTdWJjbGFzcykKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3Ojppbml0
aWFsaXplKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgQ2xhc3Mgd2tWaWV3
U3ViY2xhc3MpCiB7CiAgICAgTlNSZWN0IHJlY3QgPSBOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KTsKLQotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7Ci0gICAgaWYgKGF1dG8qIGNvbnRleHQgPSBXS1BhZ2VDb25maWd1cmF0aW9u
R2V0Q29udGV4dChwYWdlQ29uZmlndXJhdGlvbikpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkucHJvY2Vzc1Bvb2wgPSAoV0tQcm9jZXNzUG9vbCAqKWNvbnRleHQ7Ci0gICAgaWYgKGF1dG8q
IGNvbnRyb2xsZXIgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0VXNlckNvbnRlbnRDb250cm9sbGVy
KHBhZ2VDb25maWd1cmF0aW9uKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5nZXQoKS51c2VyQ29u
dGVudENvbnRyb2xsZXIgPSAoV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKiljb250cm9sbGVyOwot
ICAgIGlmIChhdXRvKiBkYXRhU3RvcmUgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0V2Vic2l0ZURh
dGFTdG9yZShwYWdlQ29uZmlndXJhdGlvbikpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
d2Vic2l0ZURhdGFTdG9yZSA9IChXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmU7Ci0gICAg
aWYgKGF1dG8qIHJlbGF0ZWRQYWdlID0gV0tQYWdlQ29uZmlndXJhdGlvbkdldFJlbGF0ZWRQYWdl
KHBhZ2VDb25maWd1cmF0aW9uKSkKLSAgICAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fcmVsYXRl
ZFdlYlZpZXcgPSBXS1BhZ2VHZXRXZWJWaWV3KHJlbGF0ZWRQYWdlKTsKLSAgICBpZiAoYXV0byog
cHJlZmVyZW5jZXMgPSBXS1BhZ2VDb25maWd1cmF0aW9uR2V0UHJlZmVyZW5jZXMocGFnZUNvbmZp
Z3VyYXRpb24pKQotICAgICAgICBjb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzID0gKFdL
UHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlczsKLQotICAgIG1fdmlldyA9IFtbd2tWaWV3U3ViY2xh
c3MgYWxsb2NdIGluaXRXaXRoRnJhbWU6cmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldOwotICAgIFttX3ZpZXcgX3NldFdpbmRvd09jY2x1c2lvbkRldGVjdGlvbkVuYWJsZWQ6
Tk9dOworICAgIG1fdmlldyA9IFtbd2tWaWV3U3ViY2xhc3MgYWxsb2NdIGluaXRXaXRoRnJhbWU6
cmVjdCBjb25maWd1cmF0aW9uUmVmOmNvbmZpZ3VyYXRpb25dOworICAgIFttX3ZpZXcgc2V0V2lu
ZG93T2NjbHVzaW9uRGV0ZWN0aW9uRW5hYmxlZDpOT107CiAKICAgICBtX3dpbmRvdyA9IFtbT2Zm
c2NyZWVuV2luZG93IGFsbG9jXSBpbml0V2l0aFNpemU6TlNTaXplVG9DR1NpemUocmVjdC5zaXpl
KV07CiAgICAgW1ttX3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3VidmlldzptX3ZpZXddOwpAQCAt
NjEsNyArNDUsNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIHBhZ2VDb25maWd1cmF0aW9uLCBDbGFzcwogCiBQbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCiB7
Ci0gICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLCBbV0tXZWJWaWV3IGNsYXNzXSk7CisgICAg
aW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLCBbV0tWaWV3IGNsYXNzXSk7CiB9CiAKIFBsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCkBAIC03MSw3ICs1NSw3IEBAIFBsYXRmb3JtV2ViVmlldzo6
UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvCiAgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldENvbnRleHQoY29uZmlndXJhdGlvbi5n
ZXQoKSwgY29udGV4dFJlZik7CiAgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldFBhZ2VHcm91cChj
b25maWd1cmF0aW9uLmdldCgpLCBwYWdlR3JvdXBSZWYpOwogICAgIAotICAgIGluaXRpYWxpemUo
Y29uZmlndXJhdGlvbi5nZXQoKSwgW1dLV2ViVmlldyBjbGFzc10pOworICAgIGluaXRpYWxpemUo
Y29uZmlndXJhdGlvbi5nZXQoKSwgW1dLVmlldyBjbGFzc10pOwogfQogCiBQbGF0Zm9ybVdlYlZp
ZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpCkBAIC04MiwxMSArNjYs
NyBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVsYXRlZFBh
Z2UpCiAgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldFBhZ2VHcm91cChjb25maWd1cmF0aW9uLmdl
dCgpLCBXS1BhZ2VHZXRQYWdlR3JvdXAocmVsYXRlZFBhZ2UpKTsKICAgICBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0UmVsYXRlZFBhZ2UoY29uZmlndXJhdGlvbi5nZXQoKSwgcmVsYXRlZFBhZ2UpOwog
Ci0gICAgYXV0byByZWxhdGVkQ29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29weVBhZ2VD
b25maWd1cmF0aW9uKHJlbGF0ZWRQYWdlKSk7Ci0gICAgaWYgKGF1dG8qIHByZWZlcmVuY2VzID0g
V0tQYWdlQ29uZmlndXJhdGlvbkdldFByZWZlcmVuY2VzKHJlbGF0ZWRDb25maWd1cmF0aW9uLmdl
dCgpKSkKLSAgICAgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldFByZWZlcmVuY2VzKGNvbmZpZ3Vy
YXRpb24uZ2V0KCksIHByZWZlcmVuY2VzKTsKLQotICAgIGluaXRpYWxpemUoY29uZmlndXJhdGlv
bi5nZXQoKSwgW1dLV2ViVmlldyBjbGFzc10pOworICAgIGluaXRpYWxpemUoY29uZmlndXJhdGlv
bi5nZXQoKSwgW1dLVmlldyBjbGFzc10pOwogfQogCiBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3Jt
V2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3Vw
UmVmLCBDbGFzcyB3a1ZpZXdTdWJjbGFzcykKQEAgLTExMyw3ICs5Myw3IEBAIHZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogCiBX
S1BhZ2VSZWYgUGxhdGZvcm1XZWJWaWV3OjpwYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gW21f
dmlldyBfcGFnZVJlZkZvclRyYW5zaXRpb25Ub1dLV2ViVmlld107CisgICAgcmV0dXJuIFttX3Zp
ZXcgcGFnZVJlZl07CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3Ojpmb2N1cygpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERl
bGVnYXRlLmgKaW5kZXggYTViYzIzOTA2Y2NiLi5hZTk4ZDg4YTU0NGIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlLmgKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAotdHlwZWRlZiB2
b2lkICheT25Mb2FkQmxvY2spKFdLV2ViVmlldyAqKTsKK3R5cGVkZWYgdm9pZCAoXk9uTG9hZEJs
b2NrKShXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKik7CiAKLUBpbnRlcmZhY2UgVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZT4geworQGludGVyZmFjZSBUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIDogTlNPYmpl
Y3QgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlPiB7CiBAcHJpdmF0ZQogICAgIE9uTG9h
ZEJsb2NrIF9vbkxvYWRCbG9jazsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9UZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tCmluZGV4IGFlZGE0NTIw
Njk2MC4uMjk0YzBlZTcxMjkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9U
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW0KQEAgLTQxLDEwICs0MSwx
MCBAQCAtIChpZClpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6KE9uTG9hZEJsb2NrKWJsb2NrCiAg
ICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdLTmF2aWdhdGlvbiAqKW5h
dmlnYXRpb24KKy0gKHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckRpZEZpbmlzaExvYWQ6
KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKXNlbmRlcgogewogICAgIGlmIChfb25Mb2Fk
QmxvY2spCi0gICAgICAgIF9vbkxvYWRCbG9jayh3ZWJWaWV3KTsKKyAgICAgICAgX29uTG9hZEJs
b2NrKHNlbmRlcik7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
bWFjL1dlYktpdEFnbm9zdGljVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvV2ViS2l0
QWdub3N0aWNUZXN0LmgKaW5kZXggYWVlODIwNWIwMjJhLi5mNmM5NjNhN2QzMDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGljVGVzdC5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGljVGVzdC5oCkBAIC0zMSw3ICszMSw3
IEBACiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIC8vIFRoaXMgdGVzdCBmaXh0dXJlIGNh
biBiZSB1c2VkIHRvIHdyaXRlIHRlc3QgdGhhdCB3b3JrIHdpdGggYm90aCBXZWJLaXQxIGFuZCBX
ZWJLaXQyLiBDYWxsaW5nCi0vLyBydW5XZWJLaXQxVGVzdCBvciBydW5XZWJLaXQyVGVzdCB3aWxs
IGNyZWF0ZSBhIFdlYlZpZXcgb3IgV0tXZWJWaWV3IChyZXNwZWN0aXZlbHkpLCBsb2FkIHRoZSBV
UkwKKy8vIHJ1bldlYktpdDFUZXN0IG9yIHJ1bldlYktpdDJUZXN0IHdpbGwgY3JlYXRlIGEgV2Vi
VmlldyBvciBXS1ZpZXcgKHJlc3BlY3RpdmVseSksIGxvYWQgdGhlIFVSTAogLy8gc3BlY2lmaWVk
IGJ5IHVybCgpLCBhbmQgdGhlbiBjYWxsIGRpZExvYWRVUkwuIFlvdXIgdGVzdCdzIGxvZ2ljIHNo
b3VsZCBnbyBpbiBkaWRMb2FkVVJMLgogY2xhc3MgV2ViS2l0QWdub3N0aWNUZXN0IDogcHVibGlj
IDo6dGVzdGluZzo6VGVzdCB7CiBwdWJsaWM6CkBAIC00MSwxMyArNDEsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgcnVuV2ViS2l0MlRlc3QoKTsKIAogICAgIHZvaWQgbG9hZFVSTChXZWJWaWV3ICos
IE5TVVJMICopOwotICAgIHZvaWQgbG9hZFVSTChXS1dlYlZpZXcgKiwgTlNVUkwgKik7CisgICAg
dm9pZCBsb2FkVVJMKFdLVmlldyAqLCBOU1VSTCAqKTsKIAogICAgIHZvaWQgZ29CYWNrKFdlYlZp
ZXcgKik7Ci0gICAgdm9pZCBnb0JhY2soV0tXZWJWaWV3ICopOworICAgIHZvaWQgZ29CYWNrKFdL
VmlldyAqKTsKIAogICAgIHZvaWQgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGUoV2ViVmll
dyAqKTsKLSAgICB2b2lkIHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdLV2ViVmlldyAq
KTsKKyAgICB2b2lkIHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdLVmlldyAqKTsKIAog
ICAgIHZvaWQgd2FpdEZvckxvYWRUb0ZpbmlzaCgpOwogCkBAIC01NiwxMyArNTYsMTMgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIE5TVVJMICp1cmwoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGRpZExvYWRVUkwoV2ViVmlldyAqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZExvYWRVUkwoV0tXZWJWaWV3ICopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFVS
TChXS1ZpZXcgKikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWaWV3KFdlYlZp
ZXcgKikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWaWV3KFdLV2ViVmlldyAqKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICopIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIHRlYXJkb3duVmlldyhXZWJWaWV3ICopIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCB0ZWFyZG93blZpZXcoV0tXZWJWaWV3ICopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93
blZpZXcoV0tWaWV3ICopIHsgfQogCiAgICAgYm9vbCBkaWRGaW5pc2hMb2FkOwogfTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGljVGVzdC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktpdEFnbm9zdGljVGVzdC5tbQppbmRleCAwYzBlMzNk
NDYwMDIuLjQwODNjZTM3ZjM4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
V2ViS2l0QWdub3N0aWNUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1dlYktp
dEFnbm9zdGljVGVzdC5tbQpAQCAtMjcsNyArMjcsNyBAQAogI2ltcG9ydCAiV2ViS2l0QWdub3N0
aWNUZXN0LmgiCiAKICNpbXBvcnQgPFdlYktpdC9XS1VSTENGLmg+Ci0jaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogCkBAIC0xMDQsOCArMTA0LDEwIEBAIHZvaWQgV2ViS2l0QWdub3N0aWNUZXN0OjpydW5XZWJL
aXQxVGVzdCgpCiAKIHZvaWQgV2ViS2l0QWdub3N0aWNUZXN0OjpydW5XZWJLaXQyVGVzdCgpCiB7
Ci0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gdmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6dmlld0ZyYW1lXSk7Ci0gICAgc2V0UGFnZUxvYWRlckNsaWVudChb
dmlldy5nZXQoKSBfcGFnZVJlZkZvclRyYW5zaXRpb25Ub1dLV2ViVmlld10sICZkaWRGaW5pc2hM
b2FkKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdL
Q29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKKyAgICBXS1JldGFpblB0
cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdp
dGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIldlYktpdEFnbm9zdGljVGVzdCIpLmdldCgpKSk7Cisg
ICAgUmV0YWluUHRyPFdLVmlldz4gdmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6dmlld0ZyYW1lIGNvbnRleHRSZWY6Y29udGV4dC5nZXQoKSBwYWdlR3JvdXBSZWY6
cGFnZUdyb3VwLmdldCgpXSk7CisgICAgc2V0UGFnZUxvYWRlckNsaWVudChbdmlldy5nZXQoKSBw
YWdlUmVmXSwgJmRpZEZpbmlzaExvYWQpOwogICAgIGluaXRpYWxpemVWaWV3KHZpZXcuZ2V0KCkp
OwogCiAgICAgbG9hZFVSTCh2aWV3LmdldCgpLCB1cmwoKSk7CkBAIC0xMjAsMTAgKzEyMiwxMCBA
QCB2b2lkIFdlYktpdEFnbm9zdGljVGVzdDo6bG9hZFVSTChXZWJWaWV3ICp3ZWJWaWV3LCBOU1VS
TCAqdXJsKQogICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CiB9CiAKLXZvaWQgV2ViS2l0QWdub3N0aWNUZXN0Ojps
b2FkVVJMKFdLV2ViVmlldyAqdmlldywgTlNVUkwgKnVybCkKK3ZvaWQgV2ViS2l0QWdub3N0aWNU
ZXN0Ojpsb2FkVVJMKFdLVmlldyAqdmlldywgTlNVUkwgKnVybCkKIHsKICAgICBFWFBFQ1RfRkFM
U0UoZGlkRmluaXNoTG9hZCk7Ci0gICAgV0tQYWdlTG9hZFVSTChbdmlldyBfcGFnZVJlZkZvclRy
YW5zaXRpb25Ub1dLV2ViVmlld10sIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoQ0ZVUkwoKF9fYnJp
ZGdlIENGVVJMUmVmKXVybCkpLmdldCgpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKFt2aWV3IHBhZ2VS
ZWZdLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aENGVVJMKChfX2JyaWRnZSBDRlVSTFJlZil1cmwp
KS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViS2l0QWdub3N0aWNUZXN0Ojpnb0JhY2soV2ViVmlldyAq
d2ViVmlldykKQEAgLTEzMiwxMCArMTM0LDEwIEBAIHZvaWQgV2ViS2l0QWdub3N0aWNUZXN0Ojpn
b0JhY2soV2ViVmlldyAqd2ViVmlldykKICAgICBbd2ViVmlldyBnb0JhY2tdOwogfQogCi12b2lk
IFdlYktpdEFnbm9zdGljVGVzdDo6Z29CYWNrKFdLV2ViVmlldyAqdmlldykKK3ZvaWQgV2ViS2l0
QWdub3N0aWNUZXN0Ojpnb0JhY2soV0tWaWV3ICp2aWV3KQogewogICAgIEVYUEVDVF9GQUxTRShk
aWRGaW5pc2hMb2FkKTsKLSAgICBXS1BhZ2VHb0JhY2soW3ZpZXcgX3BhZ2VSZWZGb3JUcmFuc2l0
aW9uVG9XS1dlYlZpZXddKTsKKyAgICBXS1BhZ2VHb0JhY2soW3ZpZXcgcGFnZVJlZl0pOwogfQog
CiB2b2lkIFdlYktpdEFnbm9zdGljVGVzdDo6d2FpdEZvckxvYWRUb0ZpbmlzaCgpCkBAIC0xNTQs
NyArMTU2LDcgQEAgdm9pZCBXZWJLaXRBZ25vc3RpY1Rlc3Q6OndhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlKFdlYlZpZXcgKikKICAgICBVdGlsOjpydW4oJmRvbmUpOwogfQogCi12b2lkIFdl
YktpdEFnbm9zdGljVGVzdDo6d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGUoV0tXZWJWaWV3
ICp2aWV3KQordm9pZCBXZWJLaXRBZ25vc3RpY1Rlc3Q6OndhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlKFdLVmlldyAqdmlldykKIHsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwog
ICAgIFt2aWV3IF9kb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZTpeKCkgewo=
</data>
<flag name="commit-queue"
          id="493189"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>