<?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>214344</bug_id>
          
          <creation_ts>2020-07-15 01:43:52 -0700</creation_ts>
          <short_desc>[GTK4] Enable API tests</short_desc>
          <delta_ts>2020-07-30 01:54:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>214251</dependson>
          <blocked>210100</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1671688</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-15 01:43:52 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671689</commentid>
    <comment_count>1</comment_count>
      <attachid>404327</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-15 01:48:03 -0700</bug_when>
    <thetext>Created attachment 404327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1675189</commentid>
    <comment_count>2</comment_count>
      <attachid>404327</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-27 02:35:29 -0700</bug_when>
    <thetext>Comment on attachment 404327
Patch

Looks fine, I have written a few comments below which you may want to
check before landing :)


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

&gt; Tools/TestWebKitAPI/Tests/WebKitGtk/AccessibilityTestServer.cpp:97
&gt; +    GMainLoop* loop = g_main_loop_new(nullptr, TRUE);

This never gets freed, I would use “GRefPtr&lt;GMainLoop&gt;” here here to avoid a
false positive when using Valgrind (or any other tools) to find leaks. Or use
“g_autoptr(GMainLoop)”, or a plain “g_clear_pointer(&amp;loop, g_main_loop_unref)”.

&gt; Tools/TestWebKitAPI/Tests/WebKitGtk/InspectorTestServer.cpp:48
&gt; +    GMainLoop *loop = g_main_loop_new(nullptr, TRUE);

Same here.

&gt; Tools/TestWebKitAPI/Tests/WebKitGtk/TestContextMenu.cpp:667
&gt;  #if USE(GTK4)

Why not remove the “#if” block completely? If the idea is to keep the comment
below for when the tests disabled for GTK4 are brought back then I think it is
okay to leave it around.

&gt; Tools/TestWebKitAPI/Tests/WebKitGtk/TestInspector.cpp:278
&gt; +            m_inspectorWindow = nullptr;

Probably I would move the “m_inspectorWindow = nullptr;” line out of the
#if-#endif block, because it&apos;s repeated in both cases; but I do not have
a strong opinion on this—feel free to leave it as-is if you think it&apos;s more
legible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676334</commentid>
    <comment_count>3</comment_count>
      <attachid>405556</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-30 01:10:29 -0700</bug_when>
    <thetext>Created attachment 405556
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676335</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-07-30 01:11:08 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676336</commentid>
    <comment_count>5</comment_count>
      <attachid>405557</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-30 01:27:52 -0700</bug_when>
    <thetext>Created attachment 405557
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676340</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-30 01:53:36 -0700</bug_when>
    <thetext>Committed r265080: &lt;https://trac.webkit.org/changeset/265080&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676341</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-30 01:54:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/66317614&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404327</attachid>
            <date>2020-07-15 01:48:03 -0700</date>
            <delta_ts>2020-07-30 01:10:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wkgtk4-api-tests.diff</filename>
            <type>text/plain</type>
            <size>53000</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxY2EyZGY2MWE3YjguLjg5
ZWE5MTdkYTM4MSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA3LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gRW5hYmxlIEFQSSB0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MzQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVpbGQgQVBJIHRlc3RzIGZvciBH
VEs0IHRvby4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOgorCiAy
MDIwLTA3LTExICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAg
ICAgICAgIFtXaW5DYWlyb10gQ29uaWMgZ3JhZGllbnRzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzUz
YjYwY2Q5NDZiLi44ZjNjYWNlNDdiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjAt
MDctMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFtHVEs0XSBFbmFibGUgQVBJIHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTQzNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2UgYSBjdXN0b20gS2V5RXZlbnQgc3RydWN0IHRvIHBhc3Mg
dG8gdGhlIElNIGZpbHRlciBhcyBhIGZha2UgR2RrRXZlbnQgdG8gYmUgYWJsZSB0byB0ZXN0IGlu
cHV0IG1ldGhvZHMgd2l0aAorICAgICAgICBHVEs0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsv
SW5wdXRNZXRob2RGaWx0ZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZp
bHRlcjo6cGxhdGZvcm1FdmVudEtleUlzS2V5UHJlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpJbnB1dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBo
aWNzOjpEcmF3aW5nTW9uaXRvcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJl
YVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I6OnN0b3ApOgorCiAyMDIw
LTA3LTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBGbHVzaCB0aGUgY2Fpcm8gc3VyZmFjZSBhZnRlciBwYWludGluZyB3aGVuIHVz
aW5nIHNvZnR3YXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9JbnB1dE1ldGhvZEZpbHRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SW5wdXRNZXRob2RGaWx0ZXIuaAppbmRleCA3MGE3ZDBjMDZiZWMuLjMzYTQ1YmNiZmYwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZp
bHRlci5oCkBAIC0xMTIsNiArMTEyLDkgQEAgcHJpdmF0ZToKICAgICBzdHJ1Y3QgewogICAgICAg
ICBib29sIGlzQWN0aXZlIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBwcmVlZGl0Q2hhbmdlZCB7
IGZhbHNlIH07CisjaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoR1RLNCkKKyAgICAgICAgYm9vbCBp
c0Zha2VLZXlFdmVudEZvclRlc3RpbmcgeyBmYWxzZSB9OworI2VuZGlmCiAgICAgfSBtX2ZpbHRl
cmluZ0NvbnRleHQ7CiAKICAgICBTdHJpbmcgbV9jb21wb3NpdGlvblJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9JbnB1dE1ldGhvZEZpbHRlckd0
ay5jcHAKaW5kZXggNGNlNjY2M2JhNzRiLi43YWI0YmI2OTNiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsuY3Bw
CkBAIC0yMCwxMCArMjAsMTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnB1
dE1ldGhvZEZpbHRlci5oIgogCisjaW5jbHVkZSAiV2ViS2l0SW5wdXRNZXRob2RDb250ZXh0SW1w
bEd0ay5oIgogI2luY2x1ZGUgIldlYktpdElucHV0TWV0aG9kQ29udGV4dFByaXZhdGUuaCIKKyNp
bmNsdWRlICJXZWJLaXRXZWJWaWV3QmFzZUludGVybmFsLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9H
VW5pcXVlUHRyR3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8
Z2RrL2dkay5oPgorI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzksNiArNDIsMTAgQEAgSW50UmVj
dCBJbnB1dE1ldGhvZEZpbHRlcjo6cGxhdGZvcm1UcmFuc2Zvcm1DdXJzb3JSZWN0VG9WaWV3Q29v
cmRpbmF0ZXMoY29uc3QgSW4KIAogYm9vbCBJbnB1dE1ldGhvZEZpbHRlcjo6cGxhdGZvcm1FdmVu
dEtleUlzS2V5UHJlc3MoUGxhdGZvcm1FdmVudEtleSogZXZlbnQpIGNvbnN0CiB7CisjaWYgVVNF
KEdUSzQpCisgICAgaWYgKFVOTElLRUxZKG1fZmlsdGVyaW5nQ29udGV4dC5pc0Zha2VLZXlFdmVu
dEZvclRlc3RpbmcpKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxLZXlFdmVudCo+
KGV2ZW50KS0+dHlwZSA9PSBHREtfS0VZX1BSRVNTOworI2VuZGlmCiAgICAgcmV0dXJuIGdka19l
dmVudF9nZXRfZXZlbnRfdHlwZShldmVudCkgPT0gR0RLX0tFWV9QUkVTUzsKIH0KIApAQCAtNDcs
NyArNTQsMTcgQEAgSW5wdXRNZXRob2RGaWx0ZXI6OkZpbHRlclJlc3VsdCBJbnB1dE1ldGhvZEZp
bHRlcjo6ZmlsdGVyS2V5RXZlbnQodW5zaWduZWQgdHlwZSwKICAgICBpZiAoIWlzRW5hYmxlZCgp
IHx8ICFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSNpZiAhVVNFKEdUSzQpCisj
aWYgVVNFKEdUSzQpCisgICAgaWYgKFdFQktJVF9JU19JTlBVVF9NRVRIT0RfQ09OVEVYVF9JTVBM
X0dUSyhtX2NvbnRleHQuZ2V0KCkpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gSW4g
R1RLNCB3ZSBjYW4ndCBjcmVhdGUgR2RrRXZlbnRzLCBzbyBoZXJlIHdlIGNyZWF0ZSBhIGN1c3Rv
bSBLZXlFdmVudCBzdHJ1Y3QgdGhhdCBpcyBwYXNzZWQKKyAgICAvLyBhcyBhIEdka0V2ZW50IHRv
IHRoZSBmaWx0ZXIuIFRoaXMgaXMgb25seSBjYWxsZWQgZnJvbSB0ZXN0cywgYW5kIHRlc3RzIGtu
b3cgdGhleSBhcmUgcmVjZWl2aW5nCisgICAgLy8gYSBLZXlFdmVudCBzdHJ1Y3QgaW5zdGVhZCBv
ZiBhbiBhY3R1YWwgR2RrRXZlbnQuCisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNGYWtlS2V5RXZl
bnRGb3JUZXN0aW5nKG1fZmlsdGVyaW5nQ29udGV4dC5pc0Zha2VLZXlFdmVudEZvclRlc3Rpbmcs
IHRydWUpOworICAgIEtleUV2ZW50IGV2ZW50IHsgdHlwZSwga2V5dmFsLCBtb2RpZmllcnMgfTsK
KyAgICByZXR1cm4gZmlsdGVyS2V5RXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KCZl
dmVudCkpOworI2Vsc2UKICAgICBhdXRvKiB3ZWJWaWV3ID0gd2Via2l0SW5wdXRNZXRob2RDb250
ZXh0R2V0V2ViVmlldyhtX2NvbnRleHQuZ2V0KCkpOwogICAgIEFTU0VSVCh3ZWJWaWV3KTsKIApA
QCAtNjAsOCArNzcsNiBAQCBJbnB1dE1ldGhvZEZpbHRlcjo6RmlsdGVyUmVzdWx0IElucHV0TWV0
aG9kRmlsdGVyOjpmaWx0ZXJLZXlFdmVudCh1bnNpZ25lZCB0eXBlLAogICAgIGV2ZW50LT5rZXku
c3RhdGUgPSBtb2RpZmllcnM7CiAgICAgZ2RrX2V2ZW50X3NldF9kZXZpY2UoZXZlbnQuZ2V0KCks
IGdka19zZWF0X2dldF9rZXlib2FyZChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0KGd0a193
aWRnZXRfZ2V0X2Rpc3BsYXkoR1RLX1dJREdFVCh3ZWJWaWV3KSkpKSk7CiAgICAgcmV0dXJuIGZp
bHRlcktleUV2ZW50KGV2ZW50LmdldCgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIHsgfTsKICNlbmRp
ZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oCmluZGV4IGVkNDlkNTgyYzcyYi4uYjY2OTUxODYy
ODFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdl
YlZpZXdCYXNlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaApAQCAtMjcsNiArMjcsMTIgQEAKIAogdHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlIFdlYktpdFdlYlZpZXdCYXNlOwogCitzdHJ1Y3Qg
S2V5RXZlbnQgeworICAgIHVuc2lnbmVkIHR5cGUgeyAwIH07CisgICAgdW5zaWduZWQga2V5dmFs
IHsgMCB9OworICAgIHVuc2lnbmVkIG1vZGlmaWVycyB7IDAgfTsKK307CisKIGVudW0gY2xhc3Mg
TW91c2VFdmVudFR5cGUgeyBQcmVzcywgUmVsZWFzZSwgTW90aW9uIH07CiB2b2lkIHdlYmtpdFdl
YlZpZXdCYXNlU3ludGhlc2l6ZU1vdXNlRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqLCBNb3VzZUV2
ZW50VHlwZSB0eXBlLCB1bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIHNob3J0IGJ1dHRvbnMsIGlu
dCB4LCBpbnQgeSwgdW5zaWduZWQgbW9kaWZpZXJzLCBpbnQgY2xpY2tDb3VudCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHAKaW5kZXggNmJiZDFjYWJkMjdhLi42MWUzZjYwNTBkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBA
IC00MTEsOCArNDExLDEyIEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhp
Y3M6OkRyYXdpbmdNb25pdG9yOjpzdGFydChXVEY6OkZ1bmN0aW9uPHZvCiAgICAgbV9jYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBndGtfd2lkZ2V0
X3F1ZXVlX2RyYXcobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSk7CisjaWYgVVNFKEdUSzQpCisgICAg
bV90aW1lci5zdGFydE9uZVNob3QoMTZfbXMpOworI2Vsc2UKICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSwgImRyYXciLCByZWludGVycHJldF9jYXN0
PEdDYWxsYmFjaz4od2ViVmlld0RyYXdDYWxsYmFjayksIHRoaXMpOwogICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KDEwMF9tcyk7CisjZW5kaWYKICNlbHNlCiAgICAgbV90aW1lci5zdGFydE9uZVNo
b3QoMF9zKTsKICNlbmRpZgpAQCAtNDIxLDcgKzQyNSw3IEBAIHZvaWQgRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3M6OkRyYXdpbmdNb25pdG9yOjpzdGFydChXVEY6OkZ1bmN0aW9u
PHZvCiB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9u
aXRvcjo6c3RvcCgpCiB7CiAgICAgbV90aW1lci5zdG9wKCk7Ci0jaWYgUExBVEZPUk0oR1RLKQor
I2lmIFBMQVRGT1JNKEdUSykgJiYgIVVTRShHVEs0KQogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rp
c2Nvbm5lY3RfYnlfZnVuYyhtX3dlYlBhZ2Uudmlld1dpZGdldCgpLCByZWludGVycHJldF9jYXN0
PGdwb2ludGVyPih3ZWJWaWV3RHJhd0NhbGxiYWNrKSwgdGhpcyk7CiAjZW5kaWYKICAgICBtX3N0
YXJ0VGltZSA9IE1vbm90b25pY1RpbWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggMTc1NGRk
M2JhOThkLi5hZTQ0YzIwYWU4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0xMjAsMTEgKzEy
MCw3IEBAIFdFQktJVF9PUFRJT05fREVQRU5EKFVTRV9XUEVfUkVOREVSRVIgRU5BQkxFX1dBWUxB
TkRfVEFSR0VUKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoRU5BQkxFX0RFVkVMT1BFUl9NT0RF
ICR7REVWRUxPUEVSX01PREV9KQogaWYgKERFVkVMT1BFUl9NT0RFKQogICAgIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9NSU5JQlJPV1NFUiBQVUJMSUMgT04pCi0gICAg
aWYgKFVTRV9HVEs0KQotICAgICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfQVBJX1RFU1RTIFBSSVZBVEUgT0ZGKQotICAgIGVsc2UgKCkKLSAgICAgICAgV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0FQSV9URVNUUyBQUklWQVRFIE9OKQot
ICAgIGVuZGlmICgpCisgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxF
X0FQSV9URVNUUyBQUklWQVRFIE9OKQogZWxzZSAoKQogICAgIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9NSU5JQlJPV1NFUiBQVUJMSUMgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BUElfVEVTVFMgUFJJVkFURSBPRkYpCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGI4ZWFm
ZWI4ZWNmLi41Nzc4MjIzMjU4NGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAyMC0wNy0xNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUSzRdIEVuYWJsZSBB
UEkgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNDM0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFBvcnQgQVBJIHRlc3RzIHRvIEdUSzQuIENvbnRleHQgbWVudSBhbmQgb3B0aW9uIG1lbnUgdGVz
dHMgYXJlIHN0aWxsIGRpc2FibGVkIGZvciBHVEs0IGJlY2F1c2Ugd2UgcGxhbiB0byBjaGFuZ2UK
KyAgICAgICAgdGhlIEFQSSBmb3IgR1RLNCBpbiB0aG9zZSBjYXNlcy4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcDoKKyAgICAgICAg
KGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RJbnB1dE1ldGhvZENvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0SW5wdXRNZXRob2RDb250
ZXh0TW9ja0ZpbHRlcktleUV2ZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RPcHRpb25NZW51LmNwcDoKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5j
cHA6CisgICAgICAgIChjaGVja01pbWVUeXBlRm9yRmlsdGVyKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAo
dGVzdFdlYkV4dGVuc2lvbklucHV0RWxlbWVudElzVXNlckVkaXRlZCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHA6CisgICAg
ICAgICh0ZXN0V2ViS2l0U2V0dGluZ3MpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0luc3BlY3RvclRlc3RTZXJ2ZXIuY3BwOgor
ICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVu
dSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwOgorICAgICAgICAoQ2xpcGJvYXJk
OjpDbGlwYm9hcmQpOgorICAgICAgICAoQ2xpcGJvYXJkOjpjbGVhcik6CisgICAgICAgIChDbGlw
Ym9hcmQ6OmNvbnRhaW5zVGV4dCBjb25zdCk6CisgICAgICAgIChDbGlwYm9hcmQ6OndhaXRGb3JU
ZXh0KToKKyAgICAgICAgKENsaXBib2FyZDo6cmVhZFRleHQpOgorICAgICAgICAodGVzdFdlYlZp
ZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0Vk
aXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yU2Vs
ZWN0QWxsTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxF
ZGl0YWJsZSk6CisgICAgICAgIChsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlvbik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaDoKKyAgICAg
ICAgKFRlc3Q6OlRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L2d0ay9XZWJWaWV3VGVzdEd0ay5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6cGxhdGZvcm1E
ZXN0cm95KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3cpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRpbGl0aWVzR3RrLmNwcDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlV0aWw6OmlzS2V5RG93bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9n
dGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRm
b3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
bGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUpOgorCiAyMDIwLTA3LTE0ICBDYXJsb3MgR2FyY2lh
IENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBUEkgdGVzdCAv
d2Via2l0L1dlYktpdFdlYkluc3BlY3RvclNlcnZlci90ZXN0LXBhZ2UtbGlzdCBpcyBmbGFreQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3REb3du
bG9hZHMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3REb3du
bG9hZHMuY3BwCmluZGV4IGIwZjFiODUwMjhhYS4uYTIxNzI5YmQyZDA1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3Bw
CkBAIC04MDcsNyArODA3LDEwIEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBEb3dubG9hZFRlc3Q6
OmFkZCgiRG93bmxvYWRzIiwgIm1pbWUtdHlwZSIsIHRlc3REb3dubG9hZE1JTUVUeXBlKTsKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IGtleVN0cm9rZSBpbiBXUEUuCiAjaWYgUExBVEZPUk0oR1RL
KQorI2lmICFVU0UoR1RLNCkKKyAgICAvLyBGSVhNRTogUmV3b3JrIGNvbnRleHQgbWVudSBBUEkg
aW4gR1RLNCB0byBub3QgZXhwb3NlIEdka0V2ZW50LgogICAgIFdlYlZpZXdEb3dubG9hZFRlc3Q6
OmFkZCgiRG93bmxvYWRzIiwgImNvbnRleC1tZW51LWRvd25sb2FkLWFjdGlvbnMiLCB0ZXN0Q29u
dGV4dE1lbnVEb3dubG9hZEFjdGlvbnMpOworI2VuZGlmCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBtb3VzZSBjbGljayBpbiBXUEUuCiAgICAgV2ViVmlld0Rvd25sb2FkVGVzdDo6YWRkKCJEb3du
bG9hZHMiLCAiYmxvYi1kb3dubG9hZCIsIHRlc3RCbG9iRG93bmxvYWQpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdElucHV0TWV0
aG9kQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dElucHV0TWV0aG9kQ29udGV4dC5jcHAKaW5kZXggM2QxYjU4MmI2NDk4Li4zYjEwYmQ3ZDNhY2Ig
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5w
dXRNZXRob2RDb250ZXh0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdElucHV0TWV0aG9kQ29udGV4dC5jcHAKQEAgLTI0LDcgKzI0LDEzIEBACiAjaW5j
bHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQorI2luY2x1
ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmluZy5oPgorI2lmIFVTRShHVEs0KQorI2luY2x1ZGUgIldl
YktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaCIKK3VzaW5nIFBsYXRmb3JtRXZlbnRLZXkgPSBHZGtF
dmVudDsKKyNlbHNlCiB1c2luZyBQbGF0Zm9ybUV2ZW50S2V5ID0gR2RrRXZlbnRLZXk7CisjZW5k
aWYKICNkZWZpbmUgS0VZKHgpIEdES19LRVlfIyN4CiAjZGVmaW5lIENPTlRST0xfTUFTSyBHREtf
Q09OVFJPTF9NQVNLCiAjZGVmaW5lIFNISUZUX01BU0sgR0RLX1NISUZUX01BU0sKQEAgLTkyLDEx
ICs5OCwxOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0SW5wdXRNZXRob2RDb250ZXh0TW9ja0Zp
bHRlcktleUV2ZW50KFdlYktpdElucHV0TWV0aG9kQ29udAogICAgICAgICByZXR1cm4gRkFMU0U7
CiAKICNpZiBQTEFURk9STShHVEspCisjaWYgVVNFKEdUSzQpCisgICAgYXV0byogZXZlbnQgPSBy
ZWludGVycHJldF9jYXN0PEtleUV2ZW50Kj4oa2V5RXZlbnQpOworICAgIHVuc2lnbmVkIGtleXZh
bCA9IGV2ZW50LT5rZXl2YWw7CisgICAgYXV0byBzdGF0ZSA9IHN0YXRpY19jYXN0PEdka01vZGlm
aWVyVHlwZT4oZXZlbnQtPm1vZGlmaWVycyk7CisgICAgYm9vbCBpc0tleVByZXNzID0gZXZlbnQt
PnR5cGUgPT0gR0RLX0tFWV9QUkVTUzsKKyNlbHNlCiAgICAgR2RrTW9kaWZpZXJUeXBlIHN0YXRl
OwogICAgIGd1aW50IGtleXZhbDsKICAgICBpZiAoIWdka19ldmVudF9nZXRfc3RhdGUocmVpbnRl
cnByZXRfY2FzdDxHZGtFdmVudCo+KGtleUV2ZW50KSwgJnN0YXRlKSB8fCAhZ2RrX2V2ZW50X2dl
dF9rZXl2YWwocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGtleUV2ZW50KSwgJmtleXZhbCkp
CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICBib29sIGlzS2V5UHJlc3MgPSBnZGtfZXZlbnRf
Z2V0X2V2ZW50X3R5cGUocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGtleUV2ZW50KSkgPT0g
R0RLX0tFWV9QUkVTUzsKKyNlbmRpZgogICAgIGd1bmljaGFyIGNoYXJhY3RlciA9IGdka19rZXl2
YWxfdG9fdW5pY29kZShrZXl2YWwpOwogI2VsaWYgUExBVEZPUk0oV1BFKQogICAgIHVpbnQzMl90
IHN0YXRlID0ga2V5RXZlbnQtPm1vZGlmaWVyczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcAppbmRleCA1NTJl
MzkyZWY5MjAuLjNhYTEyZWY1NDRkZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcApAQCAtOTksNyArOTks
MTEgQEAgcHVibGljOgogICAgICAgICBhdXRvKiBjb25uZWN0aW9uID0gc19kYnVzQ29ubmVjdGlv
blBhZ2VNYXAuZ2V0KHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZChtX3dlYlZpZXdzW2luZGV4
XS5nZXQoKSkpOwogICAgICAgICBnX2Fzc2VydF9ub25udWxsKGNvbm5lY3Rpb24pOwogICAgICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoY29ubmVjdGlvbiwgImNsb3NlZCIsIEdfQ0FMTEJB
Q0soZ19tYWluX2xvb3BfcXVpdCksIG1fbWFpbkxvb3ApOworI2lmIFVTRShHVEs0KQorICAgICAg
ICBnX29iamVjdF9ydW5fZGlzcG9zZShHX09CSkVDVChtX3dlYlZpZXdzW2luZGV4XS5nZXQoKSkp
OworI2Vsc2UKICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQobV93ZWJWaWV3
c1tpbmRleF0uZ2V0KCkpKTsKKyNlbmRpZgogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcCk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdE9wdGlvbk1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RPcHRpb25NZW51LmNwcAppbmRleCA3YmNjODk0NTM2OTYuLjdk
M2RiYjhlYTk1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RPcHRpb25NZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdE9wdGlvbk1lbnUuY3BwCkBAIC0zMDQsMTAgKzMwNCwxMyBAQCBzdGF0aWMg
dm9pZCB0ZXN0T3B0aW9uTWVudVNlbGVjdChPcHRpb25NZW51VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIAogdm9pZCBiZWZvcmVBbGwoKQogeworI2lmICFQTEFURk9STShHVEspIHx8ICFVU0Uo
R1RLNCkKKyAgICAvLyBGSVhNRTogUmV3b3JrIG9wdGlvbiBtZW51IEFQSSBpbiBHVEs0IHRvIG5v
dCBleHBvc2UgR2RrRXZlbnQuCiAgICAgT3B0aW9uTWVudVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJvcHRpb24tbWVudS1zaW1wbGUiLCB0ZXN0T3B0aW9uTWVudVNpbXBsZSk7CiAgICAgT3B0
aW9uTWVudVRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJvcHRpb24tbWVudS1ncm91cHMiLCB0
ZXN0T3B0aW9uTWVudUdyb3Vwcyk7CiAgICAgT3B0aW9uTWVudVRlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJvcHRpb24tbWVudS1hY3RpdmF0ZSIsIHRlc3RPcHRpb25NZW51QWN0aXZhdGUpOwog
ICAgIE9wdGlvbk1lbnVUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAib3B0aW9uLW1lbnUtc2Vs
ZWN0IiwgdGVzdE9wdGlvbk1lbnVTZWxlY3QpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RV
SUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJ
Q2xpZW50LmNwcAppbmRleCA2NjZiZWE1NzBjMDguLmMyYmY3ZWFlNGJiNCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAK
QEAgLTMxNyw4ICszMTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDcmVhdGVOZXdXZWJWaWV3
c0luV2luZG93c1dpdGhEZWZhdWx0U2l6ZShpbnQgd2lkdGggPSA4MDAsIGludCBoZWlnaHQgPSA2
MDApCiAgICAgewogICAgICAgICBtX3Nob3VsZENyZWF0ZVdlYlZpZXdzSW5OZXdXaW5kb3dzQXV0
b21hdGljYWxseSA9IHRydWU7Ci0gICAgICAgIG1fRGVmYXVsdEdlb21ldHJ5TmV3V2luZG93cy53
aWR0aCA9IHdpZHRoOwotICAgICAgICBtX0RlZmF1bHRHZW9tZXRyeU5ld1dpbmRvd3MuaGVpZ2h0
ID0gaGVpZ2h0OworICAgICAgICBtX2RlZmF1bHRHZW9tZXRyeU5ld1dpbmRvd3Mud2lkdGggPSB3
aWR0aDsKKyAgICAgICAgbV9kZWZhdWx0R2VvbWV0cnlOZXdXaW5kb3dzLmhlaWdodCA9IGhlaWdo
dDsKICAgICB9CiAjZW5kaWYKIApAQCAtMzM4LDggKzMzOCw4IEBAIHB1YmxpYzoKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgICAgIGtleVN0cm9rZShHREtfS0VZX2EpOwogICAgICAgICBrZXlTdHJv
a2UoR0RLX0tFWV9iKTsKLSAgICAgICAgd2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKQotICAg
ICAgICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7CisgICAgICAgIHdoaWxlIChnX21haW5fY29u
dGV4dF9wZW5kaW5nKG51bGxwdHIpKQorICAgICAgICAgICAgZ19tYWluX2NvbnRleHRfaXRlcmF0
aW9uKG51bGxwdHIsIFRSVUUpOwogI2VuZGlmCiAgICAgfQogCkBAIC0zNjcsMTAgKzM2NywxNSBA
QCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBpZiAobV9zaG91bGRDcmVhdGVX
ZWJWaWV3c0luTmV3V2luZG93c0F1dG9tYXRpY2FsbHkpIHsKICAgICAgICAgICAgIGdfYXNzZXJ0
X251bGwobV9wYXJlbnRXaW5kb3cpOworI2lmIFVTRShHVEs0KQorICAgICAgICAgICAgbV9wYXJl
bnRXaW5kb3cgPSBndGtfd2luZG93X25ldygpOworICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRf
Y2hpbGQoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdyksIEdUS19XSURHRVQobmV3V2ViVmlldykp
OworI2Vsc2UKICAgICAgICAgICAgIG1fcGFyZW50V2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RL
X1dJTkRPV19UT1BMRVZFTCk7Ci0gICAgICAgICAgICBndGtfd2luZG93X3NldF9kZWZhdWx0X3Np
emUoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdyksIG1fRGVmYXVsdEdlb21ldHJ5TmV3V2luZG93
cy53aWR0aCwgbV9EZWZhdWx0R2VvbWV0cnlOZXdXaW5kb3dzLmhlaWdodCk7CiAgICAgICAgICAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJ
REdFVChuZXdXZWJWaWV3KSk7CiAgICAgICAgICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdF
VChuZXdXZWJWaWV3KSk7CisjZW5kaWYKKyAgICAgICAgICAgIGd0a193aW5kb3dfc2V0X2RlZmF1
bHRfc2l6ZShHVEtfV0lORE9XKG1fcGFyZW50V2luZG93KSwgbV9kZWZhdWx0R2VvbWV0cnlOZXdX
aW5kb3dzLndpZHRoLCBtX2RlZmF1bHRHZW9tZXRyeU5ld1dpbmRvd3MuaGVpZ2h0KTsKICAgICAg
ICAgICAgIGd0a193aWRnZXRfc2hvdyhtX3BhcmVudFdpbmRvdyk7CiAgICAgICAgIH0KICNlbmRp
ZgpAQCAtNDE2LDcgKzQyMSw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBi
b29sIG1fc2hvdWxkQ3JlYXRlV2ViVmlld3NJbk5ld1dpbmRvd3NBdXRvbWF0aWNhbGx5IHsgZmFs
c2UgfTsKLSAgICBjYWlyb19yZWN0YW5nbGVfaW50X3QgbV9EZWZhdWx0R2VvbWV0cnlOZXdXaW5k
b3dzOworICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCBtX2RlZmF1bHRHZW9tZXRyeU5ld1dpbmRv
d3M7CiAjZW5kaWYKIH07CiAKQEAgLTUyMSwxMCArNTI2LDE2IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3Q3JlYXRlTmF2aWdhdGlvbkRhdGEoQ3JlYXRlTmF2aWdhdGlvbkRhdGFUZXN0KiB0ZXN0
LCBnY29uCiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGdib29sZWFuIGNoZWNrTWltZVR5cGVG
b3JGaWx0ZXIoR3RrRmlsZUZpbHRlciogZmlsdGVyLCBjb25zdCBnY2hhciogbWltZVR5cGUpCiB7
CisjaWYgVVNFKEdUSzQpCisgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbHRlckluZm8gPSBhZG9w
dEdSZWYoZ19maWxlX2luZm9fbmV3KCkpOworICAgIGdfZmlsZV9pbmZvX3NldF9jb250ZW50X3R5
cGUoZmlsdGVySW5mby5nZXQoKSwgbWltZVR5cGUpOworICAgIHJldHVybiBndGtfZmlsdGVyX21h
dGNoKEdUS19GSUxURVIoZmlsdGVyKSwgZmlsdGVySW5mby5nZXQoKSk7CisjZWxzZQogICAgIEd0
a0ZpbGVGaWx0ZXJJbmZvIGZpbHRlckluZm87CiAgICAgZmlsdGVySW5mby5jb250YWlucyA9IEdU
S19GSUxFX0ZJTFRFUl9NSU1FX1RZUEU7CiAgICAgZmlsdGVySW5mby5taW1lX3R5cGUgPSBtaW1l
VHlwZTsKICAgICByZXR1cm4gZ3RrX2ZpbGVfZmlsdGVyX2ZpbHRlcihmaWx0ZXIsICZmaWx0ZXJJ
bmZvKTsKKyNlbmRpZgogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDVmN2Nm
ZDhiMjNmNC4uNzk3NGZiMTFhYWUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTgzLDggKzgz
LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbklucHV0RWxlbWVudElzVXNlckVkaXRl
ZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG8KICAgICBnX2Fzc2VydF9mYWxzZShpbnB1dEVs
ZW1lbnRJc1VzZXJFZGl0ZWQocHJveHkuZ2V0KCksIHBhZ2VJRCwgImlucHV0IikpOwogICAgIHRl
c3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2lucHV0JykuZm9jdXMoKSIsIG51bGxwdHIpOwogICAgIHRlc3QtPmtleVN0cm9rZShH
REtfS0VZX2EpOwotICAgIHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSkKLSAgICAgICAgZ3Rr
X21haW5faXRlcmF0aW9uKCk7CisgICAgd2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcobnVs
bHB0cikpCisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihudWxscHRyLCBUUlVFKTsK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZzsKICAgICBkbyB7CiAgICAgICAgIGF1
dG8qIHJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0JykudmFsdWUiLCBudWxscHRyKTsKQEAgLTk1LDgg
Kzk1LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbklucHV0RWxlbWVudElzVXNlckVk
aXRlZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG8KICAgICBnX2Fzc2VydF9mYWxzZShpbnB1
dEVsZW1lbnRJc1VzZXJFZGl0ZWQocHJveHkuZ2V0KCksIHBhZ2VJRCwgInRleHRhcmVhIikpOwog
ICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3RleHRhcmVhJykuZm9jdXMoKSIsIG51bGxwdHIpOwogICAgIHRlc3QtPmtl
eVN0cm9rZShHREtfS0VZX2IpOwotICAgIHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSkKLSAg
ICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7CisgICAgd2hpbGUgKGdfbWFpbl9jb250ZXh0X3Bl
bmRpbmcobnVsbHB0cikpCisgICAgICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihudWxscHRy
LCBUUlVFKTsKICAgICBkbyB7CiAgICAgICAgIGF1dG8qIHJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RleHRh
cmVhJykudmFsdWUiLCBudWxscHRyKTsKICAgICAgICAgcmVzdWx0U3RyaW5nLnJlc2V0KFdlYlZp
ZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKHJlc3VsdCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRp
bmdzLmNwcAppbmRleCBkYTA0NzI1Y2RiODMuLjMxMjcwYjI2MjVhYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0
aW5ncy5jcHAKQEAgLTM0OSw2ICszNDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGlu
Z3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKG51bGxwdHIsID09
LCB3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX2NvbnRlbnRfdHlwZXNfcmVxdWlyaW5nX2hhcmR3
YXJlX3N1cHBvcnQoc2V0dGluZ3MpKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKKyNpZiAhVVNFKEdU
SzQpCiAgICAgLy8gT25kZW1hbmQgaXMgdGhlIGRlZmF1bHQgaGFyZHdhcmUgYWNjZWxlcmF0aW9u
IHBvbGljeS4KICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfaGFyZHdh
cmVfYWNjZWxlcmF0aW9uX3BvbGljeShzZXR0aW5ncyksID09LCBXRUJLSVRfSEFSRFdBUkVfQUND
RUxFUkFUSU9OX1BPTElDWV9PTl9ERU1BTkQpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfaGFy
ZHdhcmVfYWNjZWxlcmF0aW9uX3BvbGljeShzZXR0aW5ncywgV0VCS0lUX0hBUkRXQVJFX0FDQ0VM
RVJBVElPTl9QT0xJQ1lfTkVWRVIpOwpAQCAtMzU3LDYgKzM1OCw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfaGFyZHdhcmVfYWNjZWxlcmF0aW9uX3BvbGljeShzZXR0
aW5ncyksID09LCBXRUJLSVRfSEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BPTElDWV9BTFdBWVMpOwog
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfaGFyZHdhcmVfYWNjZWxlcmF0aW9uX3BvbGljeShzZXR0
aW5ncywgV0VCS0lUX0hBUkRXQVJFX0FDQ0VMRVJBVElPTl9QT0xJQ1lfT05fREVNQU5EKTsKICAg
ICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9zZXR0aW5nc19nZXRfaGFyZHdhcmVfYWNjZWxlcmF0
aW9uX3BvbGljeShzZXR0aW5ncyksID09LCBXRUJLSVRfSEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BP
TElDWV9PTl9ERU1BTkQpOworI2VuZGlmCiAKICAgICAvLyBCYWNrLWZvcndhcmQgbmF2aWdhdGlv
biBnZXN0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9iYWNrX2ZvcndhcmRfbmF2aWdhdGlvbl9nZXN0dXJlcyhz
ZXR0aW5ncykpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggYWM3MDg0ODljOWYzLi4wMzZkYzA1
NmY5NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNDQ0LDEwICs0NDQsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gbGVhdmVGdWxsU2NyZWVuSWRsZShGdWxsU2NyZWVuQ2xp
ZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQga2V5IHN0
cm9rZXMgaW4gV1BFCi0jaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB0ZXN0LT5rZXlTdHJva2Uo
R0RLX0tFWV9Fc2NhcGUpOwotI2VuZGlmCiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0FjY2Vzc2li
aWxpdHlUZXN0U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L0FjY2Vzc2liaWxpdHlUZXN0U2VydmVyLmNwcAppbmRleCAwYjBiYThiMWI0YmYuLmY5M2ViODRh
ZDQ4MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQWNj
ZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0FjY2Vzc2liaWxpdHlUZXN0U2VydmVyLmNwcApAQCAtNzAsMTEgKzcwLDE2IEBA
IGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBndGtfaW5pdCgmYXJnYywgJmFy
Z3YpOwogCiAgICAgR3RrV2lkZ2V0KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X25ldygpOwot
CisjaWYgVVNFKEdUSzQpCisgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2luZG93X25ldygp
OworICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJREdF
VCh3ZWJWaWV3KSk7CisjZWxzZQogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpbmRvd19u
ZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3csICJk
ZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a19tYWluX3F1aXQpLCBudWxscHRyKTsKICAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIEdUS19XSURHRVQod2ViVmll
dykpOwotICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKKyAgICBndGtfd2lkZ2V0X3No
b3coR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisjZW5kaWYKKyAgICBndGtfd2lkZ2V0X3Nob3cod2lu
ZG93KTsKIAogICAgIGdfZGJ1c19jb25uZWN0aW9uX25ld19mb3JfYWRkcmVzcyhhcmd2WzFdLCBH
X0RCVVNfQ09OTkVDVElPTl9GTEFHU19BVVRIRU5USUNBVElPTl9DTElFTlQsIG51bGxwdHIsIG51
bGxwdHIsCiAgICAgICAgIFtdKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50
ZXIgdXNlckRhdGEpIHsKQEAgLTg4LDUgKzkzLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKICAgICAgICAgICAgICAgICAmaW50ZXJmYWNlVmlydHVhbFRhYmxlLCB1c2VyRGF0
YSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIH0sIHdlYlZpZXcpOwogCisjaWYgVVNFKEdU
SzQpCisgICAgR01haW5Mb29wKiBsb29wID0gZ19tYWluX2xvb3BfbmV3KG51bGxwdHIsIFRSVUUp
OworICAgIGdfbWFpbl9sb29wX3J1bihsb29wKTsKKyNlbHNlCiAgICAgZ3RrX21haW4oKTsKKyNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
SW5zcGVjdG9yVGVzdFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9JbnNwZWN0b3JUZXN0U2VydmVyLmNwcAppbmRleCBiY2NjMjljNGZmMmQuLjdhYzM0NDcz
YzMyNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvSW5z
cGVjdG9yVGVzdFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvSW5zcGVjdG9yVGVzdFNlcnZlci5jcHAKQEAgLTQwLDYgKzQwLDE0IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgIjxodG1sPjxib2R5PjxwPldlYktpdEdU
SyBJbnNwZWN0b3IgVGVzdCBTZXJ2ZXI8L3A+PC9ib2R5PjwvaHRtbD4iLAogICAgICAgICAiaHR0
cDovLzEyNy4wLjAuMToyOTk5LyIpOwogCisjaWYgVVNFKEdUSzQpCisgICAgR3RrV2lkZ2V0KiB3
aW5kb3cgPSBndGtfd2luZG93X25ldygpOworICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19X
SU5ET1cod2luZG93KSwgR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisgICAgZ3RrX3dpZGdldF9zaG93
KHdpbmRvdyk7CisKKyAgICBHTWFpbkxvb3AgKmxvb3AgPSBnX21haW5fbG9vcF9uZXcobnVsbHB0
ciwgVFJVRSk7CisgICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOworI2Vsc2UKICAgICBHdGtXaWRn
ZXQqIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogICAgIGd0
a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgR1RLX1dJREdFVCh3ZWJWaWV3
KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh3aW5kb3cpOwpAQCAtNDcsNCArNTUsNSBAQCBp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgZ19zaWduYWxfY29ubmVjdCh3aW5k
b3csICJkZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a19tYWluX3F1aXQpLCAwKTsKIAogICAg
IGd0a19tYWluKCk7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCmluZGV4IDdiZDlkZGJkN2I0ZC4u
ZWUyMDdmOTAxZDQwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKQEAgLTI2LDMwICsyNiw2IEBACiAKIHN0YXRp
YyBXZWJLaXRUZXN0U2VydmVyKiBrU2VydmVyOwogCi0jaWYgVVNFKEdUSzQpCi1zdHJ1Y3QgTG9v
a3VwV2lkZ2V0c0RhdGEgewotICAgIHZvaWQgKCp3YWxrQ2hpbGRyZW4pKEd0a0NvbnRhaW5lcios
IEd0a0NhbGxiYWNrLCB2b2lkKik7Ci0gICAgRnVuY3Rpb248Ym9vbChHdGtXaWRnZXQqKT4gcHJl
ZGljYXRlOwotICAgIFZlY3RvcjxHdGtXaWRnZXQqPiByZXN1bHQ7Ci19OwotCi1zdGF0aWMgdm9p
ZCBsb29rdXBXaWRnZXRzV2Fsa0NoaWxkKEd0a1dpZGdldCogY2hpbGQsIHZvaWQqIHVzZXJkYXRh
KQotewotICAgIGF1dG8mIGRhdGEgPSAqcmVpbnRlcnByZXRfY2FzdDxMb29rdXBXaWRnZXRzRGF0
YSo+KHVzZXJkYXRhKTsKLSAgICBpZiAoZGF0YS5wcmVkaWNhdGUoY2hpbGQpKQotICAgICAgICBk
YXRhLnJlc3VsdC5hcHBlbmQoY2hpbGQpOwotICAgIGVsc2UgaWYgKEdUS19JU19DT05UQUlORVIo
Y2hpbGQpKQotICAgICAgICBkYXRhLndhbGtDaGlsZHJlbihHVEtfQ09OVEFJTkVSKGNoaWxkKSwg
bG9va3VwV2lkZ2V0c1dhbGtDaGlsZCwgdXNlcmRhdGEpOwotfQotCi1zdGF0aWMgVmVjdG9yPEd0
a1dpZGdldCo+IGxvb2t1cFdpZGdldHMoR3RrV2lkZ2V0KiB3aWRnZXQsIEZ1bmN0aW9uPGJvb2wo
R3RrV2lkZ2V0Kik+JiYgcHJlZGljYXRlLCBib29sIGludGVybmFsID0gZmFsc2UpCi17Ci0gICAg
TG9va3VwV2lkZ2V0c0RhdGEgZGF0YSA9IHtpbnRlcm5hbCA/IGd0a19jb250YWluZXJfZm9yYWxs
IDogZ3RrX2NvbnRhaW5lcl9mb3JlYWNoLCBXVEZNb3ZlKHByZWRpY2F0ZSl9OwotICAgIGxvb2t1
cFdpZGdldHNXYWxrQ2hpbGQod2lkZ2V0LCAmZGF0YSk7Ci0gICAgcmV0dXJuIFdURk1vdmUoZGF0
YS5yZXN1bHQpOwotfQotI2VuZGlmIC8vIFVTRShHVEs0KQotCiBjbGFzcyBDb250ZXh0TWVudVRl
c3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgZW51bSBDb250ZXh0TWVudUl0
ZW1TdGF0ZUZsYWdzIHsKQEAgLTYxLDYgKzM3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tD
b250ZXh0TWVudUV2ZW50KEdka0V2ZW50KiBldmVudCkKICAgICB7CiAgICAgICAgIGdfYXNzZXJ0
X25vbm51bGwoZXZlbnQpOworI2lmICFVU0UoR1RLNCkKICAgICAgICAgZ19hc3NlcnRfY21waW50
KGV2ZW50LT50eXBlLCA9PSwgbV9leHBlY3RlZEV2ZW50VHlwZSk7CiAKICAgICAgICAgc3dpdGNo
IChtX2V4cGVjdGVkRXZlbnRUeXBlKSB7CkBAIC03OSw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CiAgICAgICAg
IH0KKyNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyBnYm9vbGVhbiBjb250ZXh0TWVudUNhbGxi
YWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbnRleHRNZW51KiBjb250ZXh0TWVu
dSwgR2RrRXZlbnQqIGV2ZW50LCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0LCBD
b250ZXh0TWVudVRlc3QqIHRlc3QpCkBAIC0xMjYsMTggKzEwNCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogI2lmIFVTRShHVEs0KQotICAgICAgICAgICAgLy8gUG9w
b3ZlcnMgYXJlIGludGVybmFsIHRvIHRoZSBHdGtDb250YWluZXIgd2hlcmUgdGhlIHdlYnZpZXcg
cmVzaWRlcywKLSAgICAgICAgICAgIC8vIGd0a19jb250YWluZXJfZm9yYWxsKCkgaXMgdGhlIG9u
bHkgd2F5IHRvIGVudW1lcmF0ZSBpbnRlcm5hbCBjaGlsZHJlbi4KLSAgICAgICAgICAgIEd0a1Bv
cG92ZXIgKnBvcG92ZXIgPSBudWxscHRyOwotICAgICAgICAgICAgZ3RrX2NvbnRhaW5lcl9mb3Jh
bGwoR1RLX0NPTlRBSU5FUihpdGVyLT5kYXRhKSwKLSAgICAgICAgICAgICAgICBbXShHdGtXaWRn
ZXQqIGNoaWxkLCB2b2lkKiBkYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8qKiBwb3Bv
dmVyID0gcmVpbnRlcnByZXRfY2FzdDxHdGtQb3BvdmVyKio+KGRhdGEpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoR1RLX0lTX1BPUE9WRVJfTUVOVShjaGlsZCkgJiYgISpwb3BvdmVyKQotICAg
ICAgICAgICAgICAgICAgICAgICAgKnBvcG92ZXIgPSBHVEtfUE9QT1ZFUihjaGlsZCk7Ci0gICAg
ICAgICAgICAgICAgfSwgJnBvcG92ZXIpOwotCi0gICAgICAgICAgICBpZiAocG9wb3ZlciAmJiBn
dGtfcG9wb3Zlcl9nZXRfcmVsYXRpdmVfdG8ocG9wb3ZlcikgPT0gR1RLX1dJREdFVChtX3dlYlZp
ZXcpKQotICAgICAgICAgICAgICAgIHJldHVybiBwb3BvdmVyOworICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAjZWxzZQogICAgICAgICAgICAgR3RrV2lkZ2V0KiBjaGlsZCA9IGd0a19iaW5f
Z2V0X2NoaWxkKEdUS19CSU4oaXRlci0+ZGF0YSkpOwogICAgICAgICAgICAgaWYgKCFHVEtfSVNf
TUVOVShjaGlsZCkpCkBAIC0xNzYsMTAgKzE0MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIFdlYktp
dENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShpdGVtcy0+
ZGF0YSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1QoaXRlbSkpOwogCisjaWYgIVVTRShHVEs0KQogICAgICAgICBHX0dOVUNfQkVHSU5fSUdO
T1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgR3RrQWN0aW9uKiBhY3Rpb24gPSB3ZWJraXRfY29u
dGV4dF9tZW51X2l0ZW1fZ2V0X2FjdGlvbihpdGVtKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShH
VEtfSVNfQUNUSU9OKGFjdGlvbikpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNB
VElPTlM7CisjZW5kaWYKIAogICAgICAgICBHQWN0aW9uKiBnQWN0aW9uID0gd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX2dldF9nYWN0aW9uKGl0ZW0pOwogICAgICAgICBnX2Fzc2VydF90cnVlKEdf
SVNfQUNUSU9OKGdBY3Rpb24pKTsKQEAgLTE5OSwxMiArMTY4LDE1IEBAIHB1YmxpYzoKICAgICAg
ICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVN
KGl0ZW1zLT5kYXRhKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChpdGVtKSk7CiAKKyNpZiAhVVNFKEdUSzQpCiAgICAgICAgIEdfR05VQ19C
RUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0pOwogICAgICAgICBnX2Fzc2Vy
dF90cnVlKEdUS19JU19BQ1RJT04oYWN0aW9uKSk7CisjZW5kaWYKIAogICAgICAgICBHQWN0aW9u
KiBnQWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9nYWN0aW9uKGl0ZW0pOwog
ICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfQUNUSU9OKGdBY3Rpb24pKTsKKyNpZiAhVVNFKEdU
SzQpCiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihndGtfYWN0aW9uX2dldF9uYW1lKGFjdGlvbiks
ID09LCBnX2FjdGlvbl9nZXRfbmFtZShnQWN0aW9uKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcGlu
dChndGtfYWN0aW9uX2dldF9zZW5zaXRpdmUoYWN0aW9uKSwgPT0sIGdfYWN0aW9uX2dldF9lbmFi
bGVkKGdBY3Rpb24pKTsKICAgICAgICAgaWYgKEdUS19JU19UT0dHTEVfQUNUSU9OKGFjdGlvbikp
IHsKQEAgLTIxNyw2ICsxODksNyBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbihpdGVtKSwgPT0sIFdFQktJ
VF9DT05URVhUX01FTlVfQUNUSU9OX0NVU1RPTSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihn
dGtfYWN0aW9uX2dldF9sYWJlbChhY3Rpb24pLCA9PSwgbGFiZWwpOwogICAgICAgICBHX0dOVUNf
RU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CisjZW5kaWYKIAogICAgICAgICBjaGVja0FjdGlvblN0
YXRlKGdBY3Rpb24sIHN0YXRlKTsKIApAQCAtMjMxLDExICsyMDQsMTMgQEAgcHVibGljOgogICAg
ICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lU
RU0oaXRlbXMtPmRhdGEpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZp
bmlzaGVzKEdfT0JKRUNUKGl0ZW0pKTsKIAorI2lmICFVU0UoR1RLNCkKICAgICAgICAgR19HTlVD
X0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIEd0a0FjdGlvbiogYWN0aW9uID0g
d2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24oaXRlbSk7CiAgICAgICAgIGdfYXNz
ZXJ0X3RydWUoR1RLX0lTX0FDVElPTihhY3Rpb24pKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KGd0a19hY3Rpb25fZ2V0X2xhYmVsKGFjdGlvbiksID09LCBsYWJlbCk7CiAgICAgICAgIEdfR05V
Q19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKKyNlbmRpZgogCiAgICAgICAgIEdBY3Rpb24qIGdB
Y3Rpb24gPSB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2dhY3Rpb24oaXRlbSk7CiAgICAg
ICAgIGdfYXNzZXJ0X3RydWUoR19JU19BQ1RJT04oZ0FjdGlvbikpOwpAQCAtMzAxLDcgKzI3Niw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2hvd0NvbnRleHRNZW51VHJpZ2dlcmVkQnlQb3B1cEV2
ZW50QW5kV2FpdFVudGlsRmluaXNoZWQoKQogICAgIHsKKyNpZiAhVVNFKEdUSzQpCiAgICAgICAg
IG1fZXhwZWN0ZWRFdmVudFR5cGUgPSBHREtfTk9USElORzsKKyNlbmRpZgogICAgICAgICBnX2lk
bGVfYWRkKHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGVtaXRQb3B1cE1lbnVTaWduYWxJ
ZGxlQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OwogICAgIH0KQEAgLTYwMCwxMiArNTc3LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRleHRN
ZW51KFdlYktpdENvbnRleHRNZW51KiBjb250ZXh0TWVudSwgR2RrRXZlbnQqLCBXZWJLaXRIaXRU
ZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0KQogICAgIHsKICAgICAgICAgLy8gQXBwZW5kIG91ciBj
dXN0b20gaXRlbSB0byB0aGUgZGVmYXVsdCBtZW51LgorI2lmICFVU0UoR1RLNCkKICAgICAgICAg
R19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIGlmIChtX2FjdGlvbikK
ICAgICAgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfYXBwZW5kKGNvbnRleHRNZW51LCB3ZWJr
aXRfY29udGV4dF9tZW51X2l0ZW1fbmV3KG1fYWN0aW9uLmdldCgpKSk7CiAgICAgICAgIGVsc2Ug
aWYgKG1fZ0FjdGlvbikKICAgICAgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfYXBwZW5kKGNv
bnRleHRNZW51LCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X2Zyb21fZ2FjdGlvbihtX2dB
Y3Rpb24uZ2V0KCksIG1fZ0FjdGlvblRpdGxlLmRhdGEoKSwgbV9leHBlY3RlZFRhcmdldC5nZXQo
KSkpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CisjZW5kaWYKICAg
ICAgICAgcXVpdE1haW5Mb29wKCk7CiAKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjE0LDIy
ICs1OTMsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKEdUSzQpCiAgICAgR3RrQnV0dG9uKiBnZXRNZW51
SXRlbShHdGtXaWRnZXQqIHBvcG92ZXIsIGNvbnN0IGdjaGFyKiBpdGVtTGFiZWwpCiAgICAgewot
ICAgICAgICBhdXRvIGl0ZW1zID0gbG9va3VwV2lkZ2V0cyhwb3BvdmVyLAotICAgICAgICAgICAg
W2l0ZW1MYWJlbF0oR3RrV2lkZ2V0KiB3aWRnZXQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIUdU
S19JU19CVVRUT04od2lkZ2V0KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGxhYmVsID0gZ3RrX2J1dHRvbl9nZXRfbGFiZWwo
R1RLX0JVVFRPTih3aWRnZXQpKTsKLSAgICAgICAgICAgICAgICBpZiAoIWxhYmVsKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gbGFiZWxzID0gbG9va3VwV2lkZ2V0cyhHVEtfV0lE
R0VUKHdpZGdldCksCi0gICAgICAgICAgICAgICAgICAgICAgICBbXShHdGtXaWRnZXQqIGNoaWxk
KSB7IHJldHVybiBHVEtfSVNfTEFCRUwoY2hpbGQpOyB9KTsKLSAgICAgICAgICAgICAgICAgICAg
Z19hc3NlcnRfY21wdWludCgxLCA9PSwgbGFiZWxzLnNpemUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGxhYmVsID0gZ3RrX2xhYmVsX2dldF9sYWJlbChHVEtfTEFCRUwobGFiZWxzWzBdKSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBHVEtfSVNfQlVUVE9OKHdp
ZGdldCkgJiYgZ19zdHJjbXAwKGxhYmVsLCBpdGVtTGFiZWwpID09IDA7Ci0gICAgICAgICAgICB9
LCB0cnVlKTsKLQotICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGl0ZW1zLnNpemUoKSwgPiwgMCk7
Ci0gICAgICAgIHJldHVybiBpdGVtcy5zaXplKCkgPyBHVEtfQlVUVE9OKGl0ZW1zWzBdKSA6IG51
bGxwdHI7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICNlbHNlCiAgICAgR3RrTWVu
dUl0ZW0qIGdldE1lbnVJdGVtKEd0a1dpZGdldCogbWVudSwgY29uc3QgZ2NoYXIqIGl0ZW1MYWJl
bCkKQEAgLTY1MSw4ICs2MTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGF1dG8qIG1lbnUgPSBnZXRD
b250ZXh0TWVudVdpZGdldCgpOwogICAgICAgICBhdXRvKiBpdGVtID0gZ2V0TWVudUl0ZW0obWVu
dSwgbV9pdGVtVG9BY3RpdmF0ZUxhYmVsKTsKICNpZiBVU0UoR1RLNCkKLSAgICAgICAgLy8gR1RL
NCB1c2VzIGEgcG9wb3Zlciwgd2hpY2ggY29udGFpbnMgYnV0dG9ucy4KLSAgICAgICAgZ3RrX2J1
dHRvbl9jbGlja2VkKGl0ZW0pOworCiAjZWxzZQogICAgICAgICAvLyBHVEszIHVzZXMgYSBtZW51
LCB3aGljaCBjb250YWlucyBtZW51IGl0ZW1zLgogICAgICAgICBndGtfbWVudV9zaGVsbF9hY3Rp
dmF0ZV9pdGVtKEdUS19NRU5VX1NIRUxMKG1lbnUpLCBHVEtfV0lER0VUKGl0ZW0pLCBUUlVFKTsK
QEAgLTcwNCw3ICs2NjcsNyBAQCBwdWJsaWM6CiAjaWYgVVNFKEdUSzQpCiAgICAgICAgIC8vIEZv
ciB0b2dnbGUgYWN0aW9ucyB0aGUgcG9wb3ZlciBtZW51IGlzIE5PVCBkaXNtaXNzZWQgYXV0b21h
dGljYWxseSwgYXMgdG8gc2hvdyB2aXN1YWwgZmVlZGJhY2sgdG8gdGhlIHVzZXIKICAgICAgICAg
Ly8gKGkuZS4gdGhlIGNoZWNrIG1hcmtlcikuIERpc21pc3MgaXQgaGVyZSB0byB0cmlnZ2VyIGNv
bnRleHRNZW51RGlzbWlzc2VkQ2FsbGJhY2soKSBhbmQgY29udGludWUgdGhlIHRlc3QuCi0gICAg
ICAgIGd0a19wb3BvdmVyX3BvcGRvd24odGVzdC0+Z2V0UG9wb3Zlck1lbnUoKSk7CisKICNlbmRp
ZiAvLyBVU0UoR1RLNCkKICAgICB9CiAKQEAgLTcxMywxMiArNjc2LDE0IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hY3Rpb24gPSBhY3Rpb247CiAgICAgICAgIG1fZ0FjdGlvbiA9IG51bGxwdHI7CiAg
ICAgICAgIG1fZXhwZWN0ZWRUYXJnZXQgPSBudWxscHRyOworI2lmICFVU0UoR1RLNCkKICAgICAg
ICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIGlmIChHVEtfSVNf
VE9HR0xFX0FDVElPTihhY3Rpb24pKQogICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKGFjdGlvbiwgInRvZ2dsZWQiLCBHX0NBTExCQUNLKGFjdGlvblRvZ2dsZWRDYWxsYmFjayks
IHRoaXMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQoYWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGFjdGlvbkFjdGl2YXRlZENhbGxiYWNr
KSwgdGhpcyk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKKyNlbmRp
ZgogICAgIH0KIAogICAgIHZvaWQgc2V0QWN0aW9uKEdBY3Rpb24qIGFjdGlvbiwgY29uc3QgY2hh
ciogdGl0bGUsIEdWYXJpYW50KiB0YXJnZXQgPSBudWxscHRyKQpAQCAtNzQ3LDYgKzcxMiw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3Rv
bVRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5
PldlYktpdEdUSyBDb250ZXh0IG1lbnUgdGVzdHM8L2JvZHk+PC9odG1sPiIsICJmaWxlOi8vLyIp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCisjaWYgIVVTRShHVEs0KQog
ICAgIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgIC8vIENyZWF0ZSBhIGN1
c3RvbSBtZW51IGl0ZW0uCiAgICAgR1JlZlB0cjxHdGtBY3Rpb24+IGFjdGlvbiA9IGFkb3B0R1Jl
ZihndGtfYWN0aW9uX25ldygiV2ViS2l0R1RLQ3VzdG9tQWN0aW9uIiwgIkN1c3RvbSBfQWN0aW9u
IiwgbnVsbHB0ciwgbnVsbHB0cikpOwpAQCAtNzY0LDYgKzczMCw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RDb250ZXh0TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRlc3QsIGdj
b25zdHBvaW50CiAgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9hY3RpdmF0ZWQpOwogICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+bV90b2dnbGVkKTsKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBS
RUNBVElPTlM7CisjZW5kaWYKIAogICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZW51IGl0ZW0gdXNp
bmcgR0FjdGlvbi4KICAgICBHUmVmUHRyPEdBY3Rpb24+IGdBY3Rpb24gPSBhZG9wdEdSZWYoR19B
Q1RJT04oZ19zaW1wbGVfYWN0aW9uX25ldygiV2ViS2l0R1RLQ3VzdG9tR0FjdGlvbiIsIG51bGxw
dHIpKSk7CkBAIC04MDUsNiArNzcyLDcgQEAgcHVibGljOgogICAgICAgICB3ZWJraXRfY29udGV4
dF9tZW51X2luc2VydChjb250ZXh0TWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19z
ZXBhcmF0b3IoKSwgMik7CiAKICAgICAgICAgLy8gQWRkIGN1c3RvbSBhY3Rpb25zLgorI2lmICFV
U0UoR1RLNCkKICAgICAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAg
ICAgIEdSZWZQdHI8R3RrQWN0aW9uPiBhY3Rpb24gPSBhZG9wdEdSZWYoZ3RrX2FjdGlvbl9uZXco
IldlYktpdEdUS0N1c3RvbUFjdGlvbiIsICJDdXN0b20gX0FjdGlvbiIsIG51bGxwdHIsIG51bGxw
dHIpKTsKICAgICAgICAgZ3RrX2FjdGlvbl9zZXRfc2Vuc2l0aXZlKGFjdGlvbi5nZXQoKSwgRkFM
U0UpOwpAQCAtODEzLDYgKzc4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgZ3RrX3RvZ2dsZV9hY3Rp
b25fc2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTih0b2dnbGVBY3Rpb24uZ2V0KCkpLCBUUlVF
KTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29udGV4dE1lbnUsIHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9uZXcodG9nZ2xlQWN0aW9uLmdldCgpKSk7CiAgICAgICAgIHdl
YmtpdF9jb250ZXh0X21lbnVfYXBwZW5kKGNvbnRleHRNZW51LCB3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fbmV3X3NlcGFyYXRvcigpKTsKKyNlbmRpZgogICAgICAgICBHUmVmUHRyPEdBY3Rpb24+
IGdBY3Rpb24gPSBhZG9wdEdSZWYoR19BQ1RJT04oZ19zaW1wbGVfYWN0aW9uX25ldygiV2ViS2l0
R1RLQ3VzdG9tR0FjdGlvbiIsIG51bGxwdHIpKSk7CiAgICAgICAgIGdfc2ltcGxlX2FjdGlvbl9z
ZXRfZW5hYmxlZChHX1NJTVBMRV9BQ1RJT04oZ0FjdGlvbi5nZXQoKSksIEZBTFNFKTsKICAgICAg
ICAgd2Via2l0X2NvbnRleHRfbWVudV9pbnNlcnQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXdfZnJvbV9nYWN0aW9uKGdBY3Rpb24uZ2V0KCksICJDdXN0b20gX0dBY3Rp
b24iLCBudWxscHRyKSwgLTEpOwpAQCAtMTE3NSw2ICsxMTQ0LDggQEAgdm9pZCBiZWZvcmVBbGwo
KQogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2ZXItPnJ1
bihzZXJ2ZXJDYWxsYmFjayk7CiAKKyNpZiAhVVNFKEdUSzQpCisgICAgLy8gRklYTUU6IFJld29y
ayBjb250ZXh0IG1lbnUgQVBJIGluIEdUSzQgdG8gbm90IGV4cG9zZSBHZGtFdmVudC4KICAgICBD
b250ZXh0TWVudURlZmF1bHRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZGVmYXVsdC1tZW51
IiwgdGVzdENvbnRleHRNZW51RGVmYXVsdE1lbnUpOwogICAgIENvbnRleHRNZW51RGVmYXVsdFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjb250ZXh0LW1lbnUta2V5IiwgdGVzdENvbnRleHRN
ZW51S2V5KTsKICAgICBDb250ZXh0TWVudURlZmF1bHRUZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAicG9wdXAtZXZlbnQtc2lnbmFsIiwgdGVzdFBvcHVwRXZlbnRTaWduYWwpOwpAQCAtMTE4NSw2
ICsxMTU2LDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIENvbnRleHRNZW51RGlzbWlzc2VkVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm1lbnUtZGlzbWlzc2VkIiwgdGVzdENvbnRleHRNZW51
RGlzbWlzc2VkKTsKICAgICBDb250ZXh0TWVudVdlYkV4dGVuc2lvblRlc3Q6OmFkZCgiV2ViS2l0
V2ViUGFnZSIsICJjb250ZXh0LW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25NZW51
KTsKICAgICBDb250ZXh0TWVudVdlYkV4dGVuc2lvbk5vZGVUZXN0OjphZGQoIldlYktpdFdlYlBh
Z2UiLCAiY29udGV4dC1tZW51LW5vZGUiLCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2Rl
KTsKKyNlbmRpZgogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3Rvci5jcHAKaW5kZXggZTRjZThkMzVi
NzQ0Li42OWI4MzRkOGJmNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwCkBAIC0yMjYsMjggKzIyNiw0MCBAQCBwdWJs
aWM6CiAKICAgICB+Q3VzdG9tSW5zcGVjdG9yVGVzdCgpCiAgICAgeworI2lmIFVTRShHVEs0KQor
ICAgICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpCisgICAgICAgICAgICBndGtfd2luZG93X2Rl
c3Ryb3koR1RLX1dJTkRPVyhtX2luc3BlY3RvcldpbmRvdykpOworI2Vsc2UKICAgICAgICAgaWYg
KG1faW5zcGVjdG9yV2luZG93KQogICAgICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faW5z
cGVjdG9yV2luZG93KTsKKyNlbmRpZgogICAgIH0KIAogICAgIGJvb2wgb3BlbldpbmRvdygpCiAg
ICAgewogICAgICAgICBnX2Fzc2VydF9udWxsKG1faW5zcGVjdG9yV2luZG93KTsKLSAgICAgICAg
bV9pbnNwZWN0b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsK
ICAgICAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIGluc3BlY3RvclZpZXcgPSB3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9nZXRfd2ViX3ZpZXcobV9pbnNwZWN0b3IpOwogICAgICAgICBnX2Fzc2VydF9ub25u
dWxsKGluc3BlY3RvclZpZXcpOworI2lmIFVTRShHVEs0KQorICAgICAgICBtX2luc3BlY3Rvcldp
bmRvdyA9IGd0a193aW5kb3dfbmV3KCk7CisgICAgICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdU
S19XSU5ET1cobV9pbnNwZWN0b3JXaW5kb3cpLCBHVEtfV0lER0VUKGluc3BlY3RvclZpZXcpKTsK
KyNlbHNlCisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJ
TkRPV19UT1BMRVZFTCk7CiAgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIo
bV9pbnNwZWN0b3JXaW5kb3cpLCBHVEtfV0lER0VUKGluc3BlY3RvclZpZXcpKTsKLSAgICAgICAg
Z3RrX3dpZGdldF9zaG93X2FsbChtX2luc3BlY3RvcldpbmRvdyk7CisgICAgICAgIGd0a193aWRn
ZXRfc2hvdyhHVEtfV0lER0VUKGluc3BlY3RvclZpZXcpKTsKKyNlbmRpZgorICAgICAgICBndGtf
d2lkZ2V0X3Nob3cobV9pbnNwZWN0b3JXaW5kb3cpOwogCiAgICAgICAgIHJldHVybiBJbnNwZWN0
b3JUZXN0OjpvcGVuV2luZG93KCk7CiAgICAgfQogCiAgICAgdm9pZCBjbG9zZWQoKQogICAgIHsK
LSAgICAgICAgaWYgKG1faW5zcGVjdG9yV2luZG93KSB7Ci0gICAgICAgICAgICBndGtfd2lkZ2V0
X2Rlc3Ryb3kobV9pbnNwZWN0b3JXaW5kb3cpOwotICAgICAgICAgICAgbV9pbnNwZWN0b3JXaW5k
b3cgPSAwOwotICAgICAgICB9CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGdfY2xlYXJfcG9pbnRl
cigmbV9pbnNwZWN0b3JXaW5kb3csIGd0a193aW5kb3dfZGVzdHJveSk7CisjZWxzZQorICAgICAg
ICBnX2NsZWFyX3BvaW50ZXIoJm1faW5zcGVjdG9yV2luZG93LCBndGtfd2lkZ2V0X2Rlc3Ryb3kp
OworI2VuZGlmCiAKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3Q6OmNsb3NlZCgpOwogICAg
IH0KQEAgLTI1NiwxMiArMjY4LDMwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEdSZWZQdHI8
V2ViS2l0V2ViVmlld0Jhc2U+IGluc3BlY3RvclZpZXcgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9n
ZXRfd2ViX3ZpZXcobV9pbnNwZWN0b3IpOwogICAgICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cp
IHsKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19X
SU5ET1cobV9pbnNwZWN0b3JXaW5kb3cpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGd0a193aW5k
b3dfZGVzdHJveShHVEtfV0lORE9XKG1faW5zcGVjdG9yV2luZG93KSk7CisgICAgICAgICAgICBt
X2luc3BlY3RvcldpbmRvdyA9IG51bGxwdHI7CisjZWxzZQogICAgICAgICAgICAgZ3RrX2NvbnRh
aW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX2luc3BlY3RvcldpbmRvdyksIEdUS19XSURHRVQo
aW5zcGVjdG9yVmlldy5nZXQoKSkpOwogICAgICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1f
aW5zcGVjdG9yV2luZG93KTsKLSAgICAgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyAg
ICAgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gbnVsbHB0cjsKKyNlbmRpZgogICAgICAgICB9
CiAKICAgICAgICAgR3RrV2lkZ2V0KiBwYW5lOworI2lmIFVTRShHVEs0KQorICAgICAgICBpZiAo
Z3RrX3dpbmRvd19nZXRfY2hpbGQoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdykpID09IEdUS19X
SURHRVQobV93ZWJWaWV3KSkgeworICAgICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiBp
bnNwZWN0ZWRWaWV3ID0gbV93ZWJWaWV3OworICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfY2hp
bGQoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdyksIG51bGxwdHIpOworICAgICAgICAgICAgcGFu
ZSA9IGd0a19wYW5lZF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKyAgICAgICAgICAg
IGd0a19wYW5lZF9zZXRfc3RhcnRfY2hpbGQoR1RLX1BBTkVEKHBhbmUpLCBHVEtfV0lER0VUKG1f
d2ViVmlldykpOworICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyht
X3BhcmVudFdpbmRvdyksIHBhbmUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBhbmUg
PSBndGtfd2luZG93X2dldF9jaGlsZChHVEtfV0lORE9XKG1fcGFyZW50V2luZG93KSk7CisgICAg
ICAgIGd0a19wYW5lZF9zZXRfcG9zaXRpb24oR1RLX1BBTkVEKHBhbmUpLCB3ZWJraXRfd2ViX2lu
c3BlY3Rvcl9nZXRfYXR0YWNoZWRfaGVpZ2h0KG1faW5zcGVjdG9yKSk7CisgICAgICAgIGd0a19w
YW5lZF9zZXRfZW5kX2NoaWxkKEdUS19QQU5FRChwYW5lKSwgR1RLX1dJREdFVChpbnNwZWN0b3JW
aWV3LmdldCgpKSk7CisjZWxzZQogICAgICAgICBpZiAoZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJ
TihtX3BhcmVudFdpbmRvdykpID09IEdUS19XSURHRVQobV93ZWJWaWV3KSkgewogICAgICAgICAg
ICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiBpbnNwZWN0ZWRWaWV3ID0gbV93ZWJWaWV3OwogICAg
ICAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX3BhcmVudFdpbmRv
dyksIEdUS19XSURHRVQobV93ZWJWaWV3KSk7CkBAIC0yNzMsNiArMzAzLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgcGFuZSA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4obV9wYXJlbnRXaW5k
b3cpKTsKICAgICAgICAgZ3RrX3BhbmVkX3NldF9wb3NpdGlvbihHVEtfUEFORUQocGFuZSksIHdl
YmtpdF93ZWJfaW5zcGVjdG9yX2dldF9hdHRhY2hlZF9oZWlnaHQobV9pbnNwZWN0b3IpKTsKICAg
ICAgICAgZ3RrX3BhbmVkX2FkZDIoR1RLX1BBTkVEKHBhbmUpLCBHVEtfV0lER0VUKGluc3BlY3Rv
clZpZXcuZ2V0KCkpKTsKKyNlbmRpZgogCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0Ojph
dHRhY2goKTsKICAgICB9CkBAIC0yODAsMTcgKzMxMSwyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBk
ZXRhY2goKQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3QmFzZT4gaW5zcGVj
dG9yVmlldyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyhtX2luc3BlY3Rvcik7
CisjaWYgVVNFKEdUSzQpCisgICAgICAgIEd0a1dpZGdldCogcGFuZSA9IGd0a193aW5kb3dfZ2V0
X2NoaWxkKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShHVEtfSVNfUEFORUQocGFuZSkpOworICAgICAgICBndGtfcGFuZWRfc2V0X2VuZF9jaGlsZChH
VEtfUEFORUQocGFuZSksIG51bGxwdHIpOworI2Vsc2UKICAgICAgICAgR3RrV2lkZ2V0KiBwYW5l
ID0gZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihtX3BhcmVudFdpbmRvdykpOwogICAgICAgICBn
X2Fzc2VydF90cnVlKEdUS19JU19QQU5FRChwYW5lKSk7CiAgICAgICAgIGd0a19jb250YWluZXJf
cmVtb3ZlKEdUS19DT05UQUlORVIocGFuZSksIEdUS19XSURHRVQoaW5zcGVjdG9yVmlldy5nZXQo
KSkpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0OjpkZXRhY2goKTsKICAg
ICB9CiAKICAgICB2b2lkIGRlc3Ryb3lXaW5kb3coKQogICAgIHsKICAgICAgICAgZ19hc3NlcnRf
bm9ubnVsbChtX2luc3BlY3RvcldpbmRvdyk7Ci0gICAgICAgIGd0a193aWRnZXRfZGVzdHJveSht
X2luc3BlY3RvcldpbmRvdyk7Ci0gICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKKyNpZiBV
U0UoR1RLNCkKKyAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZtX2luc3BlY3RvcldpbmRvdywgZ3Rr
X3dpbmRvd19kZXN0cm95KTsKKyNlbHNlCisgICAgICAgIGdfY2xlYXJfcG9pbnRlcigmbV9pbnNw
ZWN0b3JXaW5kb3csIGd0a193aWRnZXRfZGVzdHJveSk7CisjZW5kaWYKICAgICB9CiAKICAgICBH
dGtXaWRnZXQqIG1faW5zcGVjdG9yV2luZG93OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFByaW50aW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHAKaW5kZXggN2Q5M2M3OWM5MTE5Li41
MzNkMDA0NzlkMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL1Rlc3RQcmludGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdFByaW50aW5nLmNwcApAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1Zl
cnNpb25pbmcuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDc1MmU4MDRjNzA2Ni4uNTc4ZjQ4
MTIzMzllIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9U
ZXN0V2ViVmlld0VkaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCkBAIC0yMSwyMyArMjEsMTAyIEBACiAjaW5jbHVk
ZSAiV2ViVmlld1Rlc3QuaCIKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKK2NsYXNz
IENsaXBib2FyZCB7CitwdWJsaWM6CisgICAgQ2xpcGJvYXJkKEdNYWluTG9vcCogbG9vcCkKKyAg
ICAgICAgOiBtX21haW5Mb29wKGxvb3ApCisjaWYgVVNFKEdUSzQpCisgICAgICAgICwgbV9jbGlw
Ym9hcmQoZ2RrX2Rpc3BsYXlfZ2V0X2NsaXBib2FyZChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgp
KSkKKyNlbHNlCisgICAgICAgICwgbV9jbGlwYm9hcmQoZ3RrX2NsaXBib2FyZF9nZXRfZm9yX2Rp
c3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQQk9BUkQp
KQorI2VuZGlmCisgICAgeworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyNpZiBV
U0UoR1RLNCkKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnZGtfY2xpcGJvYXJkX3NldF9jb250ZW50
KG1fY2xpcGJvYXJkLCBudWxscHRyKSk7CisjZWxzZQorICAgICAgICBndGtfY2xpcGJvYXJkX2Ns
ZWFyKG1fY2xpcGJvYXJkKTsKKyNlbmRpZgorICAgICAgICBtX3RleHQgPSBudWxscHRyOworICAg
IH0KKworICAgIGJvb2wgY29udGFpbnNUZXh0KCkgY29uc3QKKyAgICB7CisjaWYgVVNFKEdUSzQp
CisgICAgICAgIHJldHVybiBnZGtfY29udGVudF9mb3JtYXRzX2NvbnRhaW5fZ3R5cGUoZ2RrX2Ns
aXBib2FyZF9nZXRfZm9ybWF0cyhtX2NsaXBib2FyZCksIEdfVFlQRV9TVFJJTkcpOworI2Vsc2UK
KyAgICAgICAgcmV0dXJuIGd0a19jbGlwYm9hcmRfd2FpdF9pc190ZXh0X2F2YWlsYWJsZShtX2Ns
aXBib2FyZCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBib29sIHdhaXRGb3JUZXh0KCkKKyAgICB7
CisgICAgICAgIC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgd2hlbiB0aGUgc2VsZWN0aW9uIGhh
cyBiZWVuIHdyaXR0ZW4gdG8KKyAgICAgICAgLy8gdGhlIGNsaXBib2FyZCwgc28gdXNlIGEgdGlt
ZW91dCBzb3VyY2UgdG8gcXVlcnkgdGhlIGNsaXBib2FyZC4KKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGtDbGlwYm9hcmRXYWl0VGltZW91dCA9IDUwOworICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQga0NsaXBib2FyZFdhaXRNYXhUcmllcyA9IDI7CisgICAgICAgIG1fdHJpZXND
b3VudCA9IDA7CisgICAgICAgIGdfdGltZW91dF9hZGQoa0NsaXBib2FyZFdhaXRUaW1lb3V0LCBb
XShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICAgICAgYXV0byogY2xp
cGJvYXJkID0gc3RhdGljX2Nhc3Q8Q2xpcGJvYXJkKj4odXNlckRhdGEpOworICAgICAgICAgICAg
Y2xpcGJvYXJkLT5tX3RyaWVzQ291bnQrKzsKKyAgICAgICAgICAgIGlmIChjbGlwYm9hcmQtPmNv
bnRhaW5zVGV4dCgpIHx8IGNsaXBib2FyZC0+bV90cmllc0NvdW50ID4ga0NsaXBib2FyZFdhaXRN
YXhUcmllcykgeworICAgICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQoY2xpcGJvYXJkLT5t
X21haW5Mb29wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfSwgdGhpcyk7CisgICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5zVGV4dCgp
OworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIHJlYWRUZXh0KCkKKyAgICB7CisgICAgICAgIG1f
dGV4dCA9IG51bGxwdHI7CisgICAgICAgIGlmICh3YWl0Rm9yVGV4dCgpKSB7CisjaWYgVVNFKEdU
SzQpCisgICAgICAgICAgICBnZGtfY2xpcGJvYXJkX3JlYWRfdGV4dF9hc3luYyhtX2NsaXBib2Fy
ZCwgbnVsbHB0ciwgW10oR09iamVjdCogZ2RrQ2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBjbGlwYm9hcmQg
PSBzdGF0aWNfY2FzdDxDbGlwYm9hcmQqPih1c2VyRGF0YSk7CisgICAgICAgICAgICAgICAgY2xp
cGJvYXJkLT5tX3RleHQucmVzZXQoZ2RrX2NsaXBib2FyZF9yZWFkX3RleHRfZmluaXNoKEdES19D
TElQQk9BUkQoZ2RrQ2xpcGJvYXJkKSwgcmVzdWx0LCBudWxscHRyKSk7CisgICAgICAgICAgICAg
ICAgZ19tYWluX2xvb3BfcXVpdChjbGlwYm9hcmQtPm1fbWFpbkxvb3ApOworICAgICAgICAgICAg
fSwgdGhpcyk7CisgICAgICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisjZWxz
ZQorICAgICAgICAgICAgbV90ZXh0LnJlc2V0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCht
X2NsaXBib2FyZCkpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fdGV4dC5n
ZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR01haW5Mb29wKiBtX21haW5Mb29wIHsgbnVs
bHB0ciB9OworI2lmIFVTRShHVEs0KQorICAgIEdka0NsaXBib2FyZCogbV9jbGlwYm9hcmQgeyBu
dWxscHRyIH07CisjZWxzZQorICAgIEd0a0NsaXBib2FyZCogbV9jbGlwYm9hcmQgeyBudWxscHRy
IH07CisjZW5kaWYKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1fdGV4dDsKKyAgICB1bnNpZ25lZCBt
X3RyaWVzQ291bnQgeyAwIH07Cit9OworCiBjbGFzcyBFZGl0b3JUZXN0OiBwdWJsaWMgV2ViVmll
d1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoRWRpdG9yVGVzdCk7
CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NsaXBib2FyZFdhaXRUaW1lb3V0ID0gNTA7
Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtDbGlwYm9hcmRXYWl0TWF4VHJpZXMgPSAyOwot
CiAgICAgRWRpdG9yVGVzdCgpCi0gICAgICAgIDogbV9jbGlwYm9hcmQoZ3RrX2NsaXBib2FyZF9n
ZXQoR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpKQotICAgICAgICAsIG1fY2FuRXhlY3V0ZUVkaXRp
bmdDb21tYW5kKGZhbHNlKQotICAgICAgICAsIG1fdHJpZXNDb3VudCgwKQotICAgICAgICAsIG1f
ZWRpdG9yU3RhdGUobnVsbHB0cikKKyAgICAgICAgOiBtX2NsaXBib2FyZChtX21haW5Mb29wKQog
ICAgIHsKICAgICAgICAgc2hvd0luV2luZG93KCk7CisgICAgICAgIG1fY2xpcGJvYXJkLmNsZWFy
KCk7CiAgICAgICAgIGxvYWRVUkkoImFib3V0OmJsYW5rIik7CiAgICAgICAgIHdhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwotICAgICAgICBndGtfY2xpcGJvYXJkX2NsZWFyKG1fY2xpcGJvYXJkKTsK
KyAgICB9CisKKyAgICB+RWRpdG9yVGVzdCgpCisgICAgeworICAgICAgICBtX2NsaXBib2FyZC5j
bGVhcigpOwogICAgIH0KIAogICAgIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RHJhd0NhbGxiYWNr
KEdNYWluTG9vcCogbWFpbkxvb3ApCkBAIC00OCwxMCArMTI3LDIwIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgZmx1c2hFZGl0b3JTdGF0ZSgpCiAgICAgeworI2lmIFVTRShHVEs0KQorICAgICAgICBh
dXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtfd2lkZ2V0X2dldF9uYXRp
dmUoR1RLX1dJREdFVChtX3dlYlZpZXcpKSk7CisgICAgICAgIGF1dG8qIGNsb2NrID0gZ2RrX3N1
cmZhY2VfZ2V0X2ZyYW1lX2Nsb2NrKHN1cmZhY2UpOworICAgICAgICBhdXRvIHNpZ25hbElEID0g
Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGNsb2NrLCAicGFpbnQiLCBHX0NBTExCQUNLKHdlYlZp
ZXdEcmF3Q2FsbGJhY2spLCBtX21haW5Mb29wKTsKKyNlbHNlCiAgICAgICAgIGF1dG8gc2lnbmFs
SUQgPSBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJWaWV3LCAiZHJhdyIsIEdfQ0FMTEJB
Q0sod2ViVmlld0RyYXdDYWxsYmFjayksIG1fbWFpbkxvb3ApOworI2VuZGlmCiAgICAgICAgIGd0
a193aWRnZXRfcXVldWVfZHJhdyhHVEtfV0lER0VUKG1fd2ViVmlldykpOwogICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGdfc2lnbmFs
X2hhbmRsZXJfZGlzY29ubmVjdChjbG9jaywgc2lnbmFsSUQpOworI2Vsc2UKICAgICAgICAgZ19z
aWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2ViVmlldywgc2lnbmFsSUQpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgc3RhdGljIHZvaWQgY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kUmVhZHlDYWxs
YmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEVkaXRvclRlc3QqIHRlc3QpCkBA
IC04NCw0MSArMTczLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2FuRXhlY3V0ZUVk
aXRpbmdDb21tYW5kOwogICAgIH0KIAotICAgIHN0YXRpYyBnYm9vbGVhbiB3YWl0Rm9yQ2xpcGJv
YXJkVGV4dChFZGl0b3JUZXN0KiB0ZXN0KQotICAgIHsKLSAgICAgICAgdGVzdC0+bV90cmllc0Nv
dW50Kys7Ci0gICAgICAgIGlmIChndGtfY2xpcGJvYXJkX3dhaXRfaXNfdGV4dF9hdmFpbGFibGUo
dGVzdC0+bV9jbGlwYm9hcmQpIHx8IHRlc3QtPm1fdHJpZXNDb3VudCA+IGtDbGlwYm9hcmRXYWl0
TWF4VHJpZXMpIHsKLSAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9v
cCk7Ci0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gVFJVRTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlDbGlwYm9hcmQoKQorICAgIGNvbnN0IGNo
YXIqIGNvcHlDbGlwYm9hcmQoKQogICAgIHsKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1
dGVfZWRpdGluZ19jb21tYW5kKG1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZ
KTsKLSAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxlY3Rpb24g
aGFzIGJlZW4gY29waWVkIHRvCi0gICAgICAgIC8vIHRoZSBjbGlwYm9hcmQsIHNvIHVzZSBhIHRp
bWVvdXQgc291cmNlIHRvIHF1ZXJ5IHRoZSBjbGlwYm9hcmQuCi0gICAgICAgIG1fdHJpZXNDb3Vu
dCA9IDA7Ci0gICAgICAgIGdfdGltZW91dF9hZGQoa0NsaXBib2FyZFdhaXRUaW1lb3V0LCByZWlu
dGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih3YWl0Rm9yQ2xpcGJvYXJkVGV4dCksIHRoaXMpOwot
ICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIHJldHVybiBtX2Ns
aXBib2FyZC5yZWFkVGV4dCgpOwogICAgIH0KIAotICAgIGdjaGFyKiBjdXRTZWxlY3Rpb24oKQor
ICAgIGNvbnN0IGNoYXIqIGN1dFNlbGVjdGlvbigpCiAgICAgewogICAgICAgICBnX2Fzc2VydF90
cnVlKGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkp
OwogICAgICAgICBnX2Fzc2VydF90cnVlKGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRf
RURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUoY2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEVfQVNfUExBSU5fVEVY
VCkpOwogCiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCht
X3dlYlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKTsKLSAgICAgICAgLy8gVGhlcmUn
cyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxlY3Rpb24gaGFzIGJlZW4gY3V0IHRvCi0gICAg
ICAgIC8vIHRoZSBjbGlwYm9hcmQsIHNvIHVzZSBhIHRpbWVvdXQgc291cmNlIHRvIHF1ZXJ5IHRo
ZSBjbGlwYm9hcmQuCi0gICAgICAgIG1fdHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIGdfdGltZW91
dF9hZGQoa0NsaXBib2FyZFdhaXRUaW1lb3V0LCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5j
Pih3YWl0Rm9yQ2xpcGJvYXJkVGV4dCksIHRoaXMpOwotICAgICAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7Ci0KLSAgICAgICAgcmV0dXJuIGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4
dChtX2NsaXBib2FyZCk7CisgICAgICAgIHJldHVybiBtX2NsaXBib2FyZC5yZWFkVGV4dCgpOwog
ICAgIH0KIAogICAgIFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSgpCkBAIC0xNDksMTAg
KzIxNyw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGluZ0F0dHJpYnV0ZXMoKTsKICAg
ICB9CiAKLSAgICBHdGtDbGlwYm9hcmQqIG1fY2xpcGJvYXJkOwotICAgIGJvb2wgbV9jYW5FeGVj
dXRlRWRpdGluZ0NvbW1hbmQ7Ci0gICAgc2l6ZV90IG1fdHJpZXNDb3VudDsKLSAgICBXZWJLaXRF
ZGl0b3JTdGF0ZSogbV9lZGl0b3JTdGF0ZTsKKyAgICBDbGlwYm9hcmQgbV9jbGlwYm9hcmQ7Cisg
ICAgYm9vbCBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCB7IGZhbHNlIH07CisgICAgV2ViS2l0
RWRpdG9yU3RhdGUqIG1fZWRpdG9yU3RhdGUgeyBudWxscHRyIH07CiB9OwogCiBzdGF0aWMgY29u
c3QgY2hhciogc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCA9CkBAIC0xODIsOSArMjQ5LDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZShFZGl0b3JU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5FeGVjdXRl
RWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwogICAgIGdfYXNz
ZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19D
T01NQU5EX1BBU1RFX0FTX1BMQUlOX1RFWFQpKTsKIAotICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQo
KTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0
X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKGNsaXBi
b2FyZFRleHQuZ2V0KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXN0LT5jb3B5Q2xpcGJvYXJkKCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogfQog
CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKEVkaXRv
clRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0yMTAsOSArMjc1LDcgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVFZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGUKICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5n
Q29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAgICAgZ19hc3NlcnRfdHJ1
ZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9Q
QVNURV9BU19QTEFJTl9URVhUKSk7CiAKLSAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7Ci0gICAg
R1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4
dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9hcmRUZXh0
LmdldCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVz
dC0+Y29weUNsaXBib2FyZCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKIH0KIAogc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjI2LDE4ICsyODksMTIgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGUKIAogICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21t
YW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCi0gICAgdGVzdC0+Y29w
eUNsaXBib2FyZCgpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChndGtfY2xp
cGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKLQogICAgIC8vIEluaXRp
YWxseSBvbmx5IHRoZSBzdWJzcGFuIGlzIHNlbGVjdGVkLgotICAgIGdfYXNzZXJ0X2NtcHN0cihj
bGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKKyAgICBnX2Fzc2Vy
dF9jbXBzdHIodGVzdC0+Y29weUNsaXBib2FyZCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsK
IAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dl
YlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCk7Ci0gICAgdGVzdC0+Y29w
eUNsaXBib2FyZCgpOwotICAgIGNsaXBib2FyZFRleHQucmVzZXQoZ3RrX2NsaXBib2FyZF93YWl0
X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7Ci0KICAgICAvLyBUaGUgbWFpbnNwYW4gc2hv
dWxkIGJlIHNlbGVjdGVkIGFmdGVyIGNhbGxpbmcgU0VMRUNUX0FMTC4KLSAgICBnX2Fzc2VydF9j
bXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJBbGwgd29yayBhbmQgbm8gcGxheSBtYWtl
IEphY2sgYSBkdWxsIGJveS4iKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+Y29weUNsaXBi
b2FyZCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwgYm95LiIp
OwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRhYmxlKEVk
aXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0yNTUsMTggKzMxMiwxMiBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRhYmxlKEVkaXRvclRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVF
ZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsKIAotICAg
IHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRl
eHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7Ci0KICAg
ICAvLyBJbml0aWFsbHkgb25seSB0aGUgc3Vic3BhbiBpcyBzZWxlY3RlZC4KLSAgICBnX2Fzc2Vy
dF9jbXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxsIik7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPmNvcHlDbGlwYm9hcmQoKSwgPT0sICJtYWtlIEphY2sg
YSBkdWxsIik7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQo
dGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpOwotICAg
IHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBjbGlwYm9hcmRUZXh0LnJlc2V0KGd0a19jbGlw
Ym9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwotCiAgICAgLy8gVGhlIG1h
aW5zcGFuIHNob3VsZCBiZSBzZWxlY3RlZCBhZnRlciBjYWxsaW5nIFNFTEVDVF9BTEwuCi0gICAg
Z19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0KCksID09LCAiQWxsIHdvcmsgYW5kIG5v
IHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3kuIik7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3Qt
PmNvcHlDbGlwYm9hcmQoKSwgPT0sICJBbGwgd29yayBhbmQgbm8gcGxheSBtYWtlIEphY2sgYSBk
dWxsIGJveS4iKTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxl
Y3Rpb24oRWRpdG9yVGVzdCogdGVzdCwgYm9vbCBjb250ZW50RWRpdGFibGUpCkBAIC0yODYsOCAr
MzM3LDcgQEAgc3RhdGljIHZvaWQgbG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxlY3Rpb24oRWRp
dG9yVGVzdCogdGVzdCwgYm9vbCBjb250ZW50RWRpdGEKICAgICB0ZXN0LT5mbHVzaEVkaXRvclN0
YXRlKCk7CiAKICAgICAvLyBDdXQgdGhlIHNlbGVjdGlvbiB0byB0aGUgY2xpcGJvYXJkIHRvIHNl
ZSBpZiB0aGUgdmlldyBpcyBpbmRlZWQgZWRpdGFibGUuCi0gICAgR1VuaXF1ZVB0cjxjaGFyPiBj
bGlwYm9hcmRUZXh0KHRlc3QtPmN1dFNlbGVjdGlvbigpKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIo
Y2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxsIik7CisgICAgZ19hc3Nl
cnRfY21wc3RyKHRlc3QtPmN1dFNlbGVjdGlvbigpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsK
IAogICAgIC8vIFJlc2V0IHRoZSBlZGl0YWJsZSBmb3IgbmV4dCB0ZXN0LgogICAgIHRlc3QtPnNl
dEVkaXRhYmxlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9UZXN0TWFpbi5oCmluZGV4IGUwZjZjZWE5NjEzNC4uMTQ0NTMxMWY2Zjg2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKQEAgLTEzOCw3ICsx
MzgsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAid2Vic2l0ZS1kYXRhLW1hbmFnZXIiLCB3ZWJz
aXRlRGF0YU1hbmFnZXIuZ2V0KCksCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAgInBy
b2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIFRSVUUsCisjaWYg
IVVTRShHVEs0KQogICAgICAgICAgICAgInVzZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3Itc2Nyb2xs
YmFycyIsIEZBTFNFLAorI2VuZGlmCiAjZW5kaWYKICAgICAgICAgICAgIG51bGxwdHIpKSk7CiAg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV93
ZWJDb250ZXh0LmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAppbmRleCAwM2NmOTA0ODFiNTcu
LmM0ODE3Njc0MjU0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwCkBAIC0yOCw4ICsyOCwxMyBAQAog
CiB2b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9ybURlc3Ryb3koKQogeworI2lmIFVTRShHVEs0KQor
ICAgIGlmIChtX3BhcmVudFdpbmRvdykKKyAgICAgICAgZ3RrX3dpbmRvd19kZXN0cm95KEdUS19X
SU5ET1cobV9wYXJlbnRXaW5kb3cpKTsKKyNlbHNlCiAgICAgaWYgKG1fcGFyZW50V2luZG93KQog
ICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9wYXJlbnRXaW5kb3cpOworI2VuZGlmCiB9CiAK
IHZvaWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlZpZXcoKQpAQCAtNjUsMTEg
KzcwLDE4IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmhpZGVWaWV3KCkKIHZvaWQgV2ViVmlld1Rlc3Q6
OnNob3dJbldpbmRvdyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgZ19hc3NlcnRfbnVs
bChtX3BhcmVudFdpbmRvdyk7Ci0gICAgbV9wYXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyhH
VEtfV0lORE9XX1RPUExFVkVMKTsKLSAgICBpZiAod2lkdGggJiYgaGVpZ2h0KQotICAgICAgICBn
dGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdyksIHdp
ZHRoLCBoZWlnaHQpOworI2lmIFVTRShHVEs0KQorICAgIG1fcGFyZW50V2luZG93ID0gZ3RrX3dp
bmRvd19uZXcoKTsKKyAgICBndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKG1fcGFyZW50
V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyNlbHNlCisgICAgbV9wYXJlbnRXaW5k
b3cgPSBndGtfd2luZG93X25ldyh3aW5kb3dUeXBlKTsKICAgICBndGtfY29udGFpbmVyX2FkZChH
VEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKICAg
ICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyNlbmRpZgorCisgICAg
aWYgKHdpZHRoICYmIGhlaWdodCkKKyAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXpl
KEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKKwogICAgIGd0a193
aWRnZXRfc2hvdyhtX3BhcmVudFdpbmRvdyk7CiAKICAgICB3aGlsZSAoZ19tYWluX2NvbnRleHRf
cGVuZGluZyhudWxscHRyKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1Bs
YXRmb3JtVXRpbGl0aWVzR3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3Jt
VXRpbGl0aWVzR3RrLmNwcAppbmRleCAzZmFjOWQ3ZDdmZTIuLjM3NzNlZTJiMDdlZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1VdGlsaXRpZXNHdGsuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRpbGl0aWVzR3RrLmNwcApAQCAt
NjgsNyArNjgsNyBAQCBXS1VSTFJlZiBVUkxGb3JOb25FeGlzdGVudFJlc291cmNlKCkKIAogYm9v
bCBpc0tleURvd24oV0tOYXRpdmVFdmVudFB0ciBldmVudCkKIHsKLSAgICByZXR1cm4gZXZlbnQt
PnR5cGUgPT0gR0RLX0tFWV9QUkVTUzsKKyAgICByZXR1cm4gZ2RrX2V2ZW50X2dldF9ldmVudF90
eXBlKGNvbnN0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkpID09IEdES19LRVlfUFJFU1M7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFV0aWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3Rr
L1BsYXRmb3JtV2ViVmlld0d0ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9y
bVdlYlZpZXdHdGsuY3BwCmluZGV4IDUyOTMyOTZkYzc0OC4uNWIzZWM2ZmUzYTI5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKQEAgLTYyLDE1
ICs2MiwyNCBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVs
YXRlZFBhZ2UpCiAKIFBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCiB7CisjaWYg
VVNFKEdUSzQpCisgICAgZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1cobV93aW5kb3cpKTsK
KyNlbHNlCiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fd2luZG93KTsKKyNlbmRpZgogfQogCiB2
b2lkIFBsYXRmb3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNv
bmZpZ3VyYXRpb24pCiB7Ci0gICAgbV93aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9X
X1RPUExFVkVMKTsKICAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUoY29uZmlndXJhdGlvbik7Cisj
aWYgVVNFKEdUSzQpCisgICAgbV93aW5kb3cgPSBndGtfd2luZG93X25ldygpOworICAgIGd0a193
aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cobV93aW5kb3cpLCBHVEtfV0lER0VUKG1fdmlldykp
OworI2Vsc2UKKyAgICBtX3dpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVW
RUwpOwogICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV93aW5kb3cpLCBHVEtf
V0lER0VUKG1fdmlldykpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG1fdmlldykp
OworI2VuZGlmCiAgICAgZ3RrX3dpZGdldF9zaG93KG1fd2luZG93KTsKIH0KIAo=
</data>
<flag name="review"
          id="419710"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405556</attachid>
            <date>2020-07-30 01:10:29 -0700</date>
            <delta_ts>2020-07-30 01:27:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wkgtk4-api-tests.diff</filename>
            <type>text/plain</type>
            <size>53469</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4ZjI1ZGRhYjBkNDMuLjk4
ZTA3ZWFlNTRmZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA3LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gRW5hYmxlIEFQSSB0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MzQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRyaWFuIFBlcmV6IGRlIENhc3Ryby4KKworICAgICAgICBCdWlsZCBBUEkgdGVz
dHMgZm9yIEdUSzQgdG9vLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2U6CisKIDIwMjAtMDctMjkgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc1dQRS5jbWFrZSBhbmQg
TkVXUyBmb3IgdGhlIDIuMjkuMiByZWxlYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxMWEyMDhmNzVlMS4uZTI4
OGM1YzI1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA3LTE1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gRW5h
YmxlIEFQSSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0MzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
by4KKworICAgICAgICBVc2UgYSBjdXN0b20gS2V5RXZlbnQgc3RydWN0IHRvIHBhc3MgdG8gdGhl
IElNIGZpbHRlciBhcyBhIGZha2UgR2RrRXZlbnQgdG8gYmUgYWJsZSB0byB0ZXN0IGlucHV0IG1l
dGhvZHMgd2l0aAorICAgICAgICBHVEs0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L0lucHV0TWV0aG9kRmlsdGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRN
ZXRob2RGaWx0ZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6
cGxhdGZvcm1FdmVudEtleUlzS2V5UHJlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbnB1
dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpE
cmF3aW5nTW9uaXRvcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I6OnN0b3ApOgorCiAyMDIwLTA3LTI5
ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgSGln
aGxpZ2h0IGNvbG9yIGRvZXMgbm90IHN3aXRjaCBhZnRlciBiZWluZyBzZXQgaXQgc3lzdGVtIHBy
ZWZlcmVuY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SW5wdXRNZXRob2RGaWx0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lu
cHV0TWV0aG9kRmlsdGVyLmgKaW5kZXggNzBhN2QwYzA2YmVjLi4zM2E0NWJjYmZmMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0
ZXIuaApAQCAtMTEyLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IHsKICAgICAgICAg
Ym9vbCBpc0FjdGl2ZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgcHJlZWRpdENoYW5nZWQgeyBm
YWxzZSB9OworI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKEdUSzQpCisgICAgICAgIGJvb2wgaXNG
YWtlS2V5RXZlbnRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIH0gbV9maWx0ZXJp
bmdDb250ZXh0OwogCiAgICAgU3RyaW5nIG1fY29tcG9zaXRpb25SZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0lucHV0TWV0aG9kRmlsdGVyR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsu
Y3BwCmluZGV4IDRjZTY2NjNiYTc0Yi4uN2FiNGJiNjkzYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0lucHV0TWV0aG9kRmlsdGVyR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0lucHV0TWV0aG9kRmlsdGVyR3RrLmNwcApA
QCAtMjAsMTAgKzIwLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5wdXRN
ZXRob2RGaWx0ZXIuaCIKIAorI2luY2x1ZGUgIldlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxH
dGsuaCIKICNpbmNsdWRlICJXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR1Vu
aXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPGdk
ay9nZGsuaD4KKyNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM5LDYgKzQyLDEwIEBAIEludFJlY3Qg
SW5wdXRNZXRob2RGaWx0ZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ3Vyc29yUmVjdFRvVmlld0Nvb3Jk
aW5hdGVzKGNvbnN0IEluCiAKIGJvb2wgSW5wdXRNZXRob2RGaWx0ZXI6OnBsYXRmb3JtRXZlbnRL
ZXlJc0tleVByZXNzKFBsYXRmb3JtRXZlbnRLZXkqIGV2ZW50KSBjb25zdAogeworI2lmIFVTRShH
VEs0KQorICAgIGlmIChVTkxJS0VMWShtX2ZpbHRlcmluZ0NvbnRleHQuaXNGYWtlS2V5RXZlbnRG
b3JUZXN0aW5nKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8S2V5RXZlbnQqPihl
dmVudCktPnR5cGUgPT0gR0RLX0tFWV9QUkVTUzsKKyNlbmRpZgogICAgIHJldHVybiBnZGtfZXZl
bnRfZ2V0X2V2ZW50X3R5cGUoZXZlbnQpID09IEdES19LRVlfUFJFU1M7CiB9CiAKQEAgLTQ3LDcg
KzU0LDE3IEBAIElucHV0TWV0aG9kRmlsdGVyOjpGaWx0ZXJSZXN1bHQgSW5wdXRNZXRob2RGaWx0
ZXI6OmZpbHRlcktleUV2ZW50KHVuc2lnbmVkIHR5cGUsCiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8
fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm4geyB9OwogCi0jaWYgIVVTRShHVEs0KQorI2lm
IFVTRShHVEs0KQorICAgIGlmIChXRUJLSVRfSVNfSU5QVVRfTUVUSE9EX0NPTlRFWFRfSU1QTF9H
VEsobV9jb250ZXh0LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIEluIEdU
SzQgd2UgY2FuJ3QgY3JlYXRlIEdka0V2ZW50cywgc28gaGVyZSB3ZSBjcmVhdGUgYSBjdXN0b20g
S2V5RXZlbnQgc3RydWN0IHRoYXQgaXMgcGFzc2VkCisgICAgLy8gYXMgYSBHZGtFdmVudCB0byB0
aGUgZmlsdGVyLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGVzdHMsIGFuZCB0ZXN0cyBrbm93
IHRoZXkgYXJlIHJlY2VpdmluZworICAgIC8vIGEgS2V5RXZlbnQgc3RydWN0IGluc3RlYWQgb2Yg
YW4gYWN0dWFsIEdka0V2ZW50LgorICAgIFNldEZvclNjb3BlPGJvb2w+IGlzRmFrZUtleUV2ZW50
Rm9yVGVzdGluZyhtX2ZpbHRlcmluZ0NvbnRleHQuaXNGYWtlS2V5RXZlbnRGb3JUZXN0aW5nLCB0
cnVlKTsKKyAgICBLZXlFdmVudCBldmVudCB7IHR5cGUsIGtleXZhbCwgbW9kaWZpZXJzIH07Cisg
ICAgcmV0dXJuIGZpbHRlcktleUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPigmZXZl
bnQpKTsKKyNlbHNlCiAgICAgYXV0byogd2ViVmlldyA9IHdlYmtpdElucHV0TWV0aG9kQ29udGV4
dEdldFdlYlZpZXcobV9jb250ZXh0LmdldCgpKTsKICAgICBBU1NFUlQod2ViVmlldyk7CiAKQEAg
LTYwLDggKzc3LDYgQEAgSW5wdXRNZXRob2RGaWx0ZXI6OkZpbHRlclJlc3VsdCBJbnB1dE1ldGhv
ZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQodW5zaWduZWQgdHlwZSwKICAgICBldmVudC0+a2V5LnN0
YXRlID0gbW9kaWZpZXJzOwogICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGV2ZW50LmdldCgpLCBn
ZGtfc2VhdF9nZXRfa2V5Ym9hcmQoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChndGtfd2lk
Z2V0X2dldF9kaXNwbGF5KEdUS19XSURHRVQod2ViVmlldykpKSkpOwogICAgIHJldHVybiBmaWx0
ZXJLZXlFdmVudChldmVudC5nZXQoKSk7Ci0jZWxzZQotICAgIHJldHVybiB7IH07CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaAppbmRleCBlZDQ5ZDU4MmM3MmIuLmI2Njk1MTg2Mjgx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZUludGVybmFsLmgKQEAgLTI3LDYgKzI3LDEyIEBACiAKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZSBXZWJLaXRXZWJWaWV3QmFzZTsKIAorc3RydWN0IEtl
eUV2ZW50IHsKKyAgICB1bnNpZ25lZCB0eXBlIHsgMCB9OworICAgIHVuc2lnbmVkIGtleXZhbCB7
IDAgfTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgeyAwIH07Cit9OworCiBlbnVtIGNsYXNzIE1v
dXNlRXZlbnRUeXBlIHsgUHJlc3MsIFJlbGVhc2UsIE1vdGlvbiB9Owogdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZVN5bnRoZXNpemVNb3VzZUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiwgTW91c2VFdmVu
dFR5cGUgdHlwZSwgdW5zaWduZWQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBpbnQg
eCwgaW50IHksIHVuc2lnbmVkIG1vZGlmaWVycywgaW50IGNsaWNrQ291bnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3Mu
Y3BwCmluZGV4IDZiYmQxY2FiZDI3YS4uNjFlM2Y2MDUwZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAt
NDExLDggKzQxMSwxMiBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
OjpEcmF3aW5nTW9uaXRvcjo6c3RhcnQoV1RGOjpGdW5jdGlvbjx2bwogICAgIG1fY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKTsKICNpZiBQTEFURk9STShHVEspCiAgICAgZ3RrX3dpZGdldF9x
dWV1ZV9kcmF3KG1fd2ViUGFnZS52aWV3V2lkZ2V0KCkpOworI2lmIFVTRShHVEs0KQorICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KDE2X21zKTsKKyNlbHNlCiAgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKG1fd2ViUGFnZS52aWV3V2lkZ2V0KCksICJkcmF3IiwgcmVpbnRlcnByZXRfY2FzdDxH
Q2FsbGJhY2s+KHdlYlZpZXdEcmF3Q2FsbGJhY2spLCB0aGlzKTsKICAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdCgxMDBfbXMpOworI2VuZGlmCiAjZWxzZQogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KDBfcyk7CiAjZW5kaWYKQEAgLTQyMSw3ICs0MjUsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcjo6c3RhcnQoV1RGOjpGdW5jdGlvbjx2
bwogdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0
b3I6OnN0b3AoKQogewogICAgIG1fdGltZXIuc3RvcCgpOwotI2lmIFBMQVRGT1JNKEdUSykKKyNp
ZiBQTEFURk9STShHVEspICYmICFVU0UoR1RLNCkKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNj
b25uZWN0X2J5X2Z1bmMobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxn
cG9pbnRlcj4od2ViVmlld0RyYXdDYWxsYmFjayksIHRoaXMpOwogI2VuZGlmCiAgICAgbV9zdGFy
dFRpbWUgPSBNb25vdG9uaWNUaW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGQ1OGM3ZmMz
ZmZmYi4uMjZjZjU2ZWU0NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTIwLDExICsxMjAs
NyBAQCBXRUJLSVRfT1BUSU9OX0RFUEVORChVU0VfV1BFX1JFTkRFUkVSIEVOQUJMRV9XQVlMQU5E
X1RBUkdFVCkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEVOQUJMRV9ERVZFTE9QRVJfTU9ERSAk
e0RFVkVMT1BFUl9NT0RFfSkKIGlmIChERVZFTE9QRVJfTU9ERSkKICAgICBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUlOSUJST1dTRVIgUFVCTElDIE9OKQotICAgIGlm
IChVU0VfR1RLNCkKLSAgICAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0FQSV9URVNUUyBQUklWQVRFIE9GRikKLSAgICBlbHNlICgpCi0gICAgICAgIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BUElfVEVTVFMgUFJJVkFURSBPTikKLSAg
ICBlbmRpZiAoKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9B
UElfVEVTVFMgUFJJVkFURSBPTikKIGVsc2UgKCkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUlOSUJST1dTRVIgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVBJX1RFU1RTIFBSSVZBVEUgT0ZGKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzOGJkOGJk
MTJhNy4uYjJiNTJjMjRhYjI3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDctMTUgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEs0XSBFbmFibGUgQVBJ
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQzNDQKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvLgorCisg
ICAgICAgIFBvcnQgQVBJIHRlc3RzIHRvIEdUSzQuIENvbnRleHQgbWVudSBhbmQgb3B0aW9uIG1l
bnUgdGVzdHMgYXJlIHN0aWxsIGRpc2FibGVkIGZvciBHVEs0IGJlY2F1c2Ugd2UgcGxhbiB0byBj
aGFuZ2UKKyAgICAgICAgdGhlIEFQSSBmb3IgR1RLNCBpbiB0aG9zZSBjYXNlcy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcDoKKyAg
ICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0SW5wdXRNZXRo
b2RDb250ZXh0TW9ja0ZpbHRlcktleUV2ZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcHRpb25NZW51LmNwcDoKKyAgICAgICAgKGJlZm9y
ZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNs
aWVudC5jcHA6CisgICAgICAgIChjaGVja01pbWVUeXBlRm9yRmlsdGVyKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAodGVzdFdlYkV4dGVuc2lvbklucHV0RWxlbWVudElzVXNlckVkaXRlZCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHA6
CisgICAgICAgICh0ZXN0V2ViS2l0U2V0dGluZ3MpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0luc3BlY3RvclRlc3RTZXJ2ZXIu
Y3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudVBvcHVs
YXRlTWVudSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwOgorICAgICAgICAoQ2xp
cGJvYXJkOjpDbGlwYm9hcmQpOgorICAgICAgICAoQ2xpcGJvYXJkOjpjbGVhcik6CisgICAgICAg
IChDbGlwYm9hcmQ6OmNvbnRhaW5zVGV4dCBjb25zdCk6CisgICAgICAgIChDbGlwYm9hcmQ6Ondh
aXRGb3JUZXh0KToKKyAgICAgICAgKENsaXBib2FyZDo6cmVhZFRleHQpOgorICAgICAgICAodGVz
dFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRp
dG9yU2VsZWN0QWxsTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JTZWxl
Y3RBbGxFZGl0YWJsZSk6CisgICAgICAgIChsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlv
bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaDoK
KyAgICAgICAgKFRlc3Q6OlRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6cGxh
dGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3cpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRpbGl0aWVzR3RrLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmlzS2V5RG93bik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUpOgorCiAyMDIwLTA3LTI5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2NyaXB0IHRvIGhlbHAgdXMg
Y291bnQgdXNlcyBvZiBub24taW5jbHVzaXZlIHRlcm1zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggYjBmMWI4
NTAyOGFhLi5hMjE3MjliZDJkMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKQEAgLTgwNyw3ICs4MDcsMTAgQEAg
dm9pZCBiZWZvcmVBbGwoKQogICAgIERvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAibWlt
ZS10eXBlIiwgdGVzdERvd25sb2FkTUlNRVR5cGUpOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
a2V5U3Ryb2tlIGluIFdQRS4KICNpZiBQTEFURk9STShHVEspCisjaWYgIVVTRShHVEs0KQorICAg
IC8vIEZJWE1FOiBSZXdvcmsgY29udGV4dCBtZW51IEFQSSBpbiBHVEs0IHRvIG5vdCBleHBvc2Ug
R2RrRXZlbnQuCiAgICAgV2ViVmlld0Rvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAiY29u
dGV4LW1lbnUtZG93bmxvYWQtYWN0aW9ucyIsIHRlc3RDb250ZXh0TWVudURvd25sb2FkQWN0aW9u
cyk7CisjZW5kaWYKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vdXNlIGNsaWNrIGluIFdQRS4K
ICAgICBXZWJWaWV3RG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJibG9iLWRvd25sb2Fk
IiwgdGVzdEJsb2JEb3dubG9hZCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNw
cAppbmRleCAzZDFiNTgyYjY0OTguLjNiMTBiZDdkM2FjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RD
b250ZXh0LmNwcApAQCAtMjQsNyArMjQsMTMgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CiAKICNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9u
aW5nLmg+CisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5h
bC5oIgordXNpbmcgUGxhdGZvcm1FdmVudEtleSA9IEdka0V2ZW50OworI2Vsc2UKIHVzaW5nIFBs
YXRmb3JtRXZlbnRLZXkgPSBHZGtFdmVudEtleTsKKyNlbmRpZgogI2RlZmluZSBLRVkoeCkgR0RL
X0tFWV8jI3gKICNkZWZpbmUgQ09OVFJPTF9NQVNLIEdES19DT05UUk9MX01BU0sKICNkZWZpbmUg
U0hJRlRfTUFTSyBHREtfU0hJRlRfTUFTSwpAQCAtOTIsMTEgKzk4LDE4IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRNb2NrRmlsdGVyS2V5RXZlbnQoV2ViS2l0SW5w
dXRNZXRob2RDb250CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogI2lmIFBMQVRGT1JNKEdUSykK
KyNpZiBVU0UoR1RLNCkKKyAgICBhdXRvKiBldmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8S2V5RXZl
bnQqPihrZXlFdmVudCk7CisgICAgdW5zaWduZWQga2V5dmFsID0gZXZlbnQtPmtleXZhbDsKKyAg
ICBhdXRvIHN0YXRlID0gc3RhdGljX2Nhc3Q8R2RrTW9kaWZpZXJUeXBlPihldmVudC0+bW9kaWZp
ZXJzKTsKKyAgICBib29sIGlzS2V5UHJlc3MgPSBldmVudC0+dHlwZSA9PSBHREtfS0VZX1BSRVNT
OworI2Vsc2UKICAgICBHZGtNb2RpZmllclR5cGUgc3RhdGU7CiAgICAgZ3VpbnQga2V5dmFsOwog
ICAgIGlmICghZ2RrX2V2ZW50X2dldF9zdGF0ZShyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4o
a2V5RXZlbnQpLCAmc3RhdGUpIHx8ICFnZGtfZXZlbnRfZ2V0X2tleXZhbChyZWludGVycHJldF9j
YXN0PEdka0V2ZW50Kj4oa2V5RXZlbnQpLCAma2V5dmFsKSkKICAgICAgICAgcmV0dXJuIEZBTFNF
OwogICAgIGJvb2wgaXNLZXlQcmVzcyA9IGdka19ldmVudF9nZXRfZXZlbnRfdHlwZShyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oa2V5RXZlbnQpKSA9PSBHREtfS0VZX1BSRVNTOworI2VuZGlm
CiAgICAgZ3VuaWNoYXIgY2hhcmFjdGVyID0gZ2RrX2tleXZhbF90b191bmljb2RlKGtleXZhbCk7
CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgdWludDMyX3Qgc3RhdGUgPSBrZXlFdmVudC0+bW9k
aWZpZXJzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RNdWx0aXByb2Nlc3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCmluZGV4IDU1MmUzOTJlZjkyMC4uM2FhMTJlZjU0NGRl
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11
bHRpcHJvY2Vzcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RNdWx0aXByb2Nlc3MuY3BwCkBAIC05OSw3ICs5OSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IGF1dG8qIGNvbm5lY3Rpb24gPSBzX2RidXNDb25uZWN0aW9uUGFnZU1hcC5nZXQod2Via2l0X3dl
Yl92aWV3X2dldF9wYWdlX2lkKG1fd2ViVmlld3NbaW5kZXhdLmdldCgpKSk7CiAgICAgICAgIGdf
YXNzZXJ0X25vbm51bGwoY29ubmVjdGlvbik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChjb25uZWN0aW9uLCAiY2xvc2VkIiwgR19DQUxMQkFDSyhnX21haW5fbG9vcF9xdWl0KSwg
bV9tYWluTG9vcCk7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGdfb2JqZWN0X3J1bl9kaXNwb3Nl
KEdfT0JKRUNUKG1fd2ViVmlld3NbaW5kZXhdLmdldCgpKSk7CisjZWxzZQogICAgICAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChtX3dlYlZpZXdzW2luZGV4XS5nZXQoKSkpOworI2Vu
ZGlmCiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKICAgICB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3B0
aW9uTWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9w
dGlvbk1lbnUuY3BwCmluZGV4IDdiY2M4OTQ1MzY5Ni4uN2QzZGJiOGVhOTVkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9wdGlvbk1lbnUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3B0aW9uTWVu
dS5jcHAKQEAgLTMwNCwxMCArMzA0LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25NZW51U2Vs
ZWN0KE9wdGlvbk1lbnVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiB2b2lkIGJlZm9yZUFs
bCgpCiB7CisjaWYgIVBMQVRGT1JNKEdUSykgfHwgIVVTRShHVEs0KQorICAgIC8vIEZJWE1FOiBS
ZXdvcmsgb3B0aW9uIG1lbnUgQVBJIGluIEdUSzQgdG8gbm90IGV4cG9zZSBHZGtFdmVudC4KICAg
ICBPcHRpb25NZW51VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm9wdGlvbi1tZW51LXNpbXBs
ZSIsIHRlc3RPcHRpb25NZW51U2ltcGxlKTsKICAgICBPcHRpb25NZW51VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgIm9wdGlvbi1tZW51LWdyb3VwcyIsIHRlc3RPcHRpb25NZW51R3JvdXBzKTsK
ICAgICBPcHRpb25NZW51VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm9wdGlvbi1tZW51LWFj
dGl2YXRlIiwgdGVzdE9wdGlvbk1lbnVBY3RpdmF0ZSk7CiAgICAgT3B0aW9uTWVudVRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJvcHRpb24tbWVudS1zZWxlY3QiLCB0ZXN0T3B0aW9uTWVudVNl
bGVjdCk7CisjZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IDY2NmJl
YTU3MGMwOC4uYzJiZjdlYWU0YmI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAtMzE3LDggKzMxNyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENyZWF0ZU5ld1dlYlZpZXdzSW5XaW5kb3dzV2l0aERlZmF1bHRT
aXplKGludCB3aWR0aCA9IDgwMCwgaW50IGhlaWdodCA9IDYwMCkKICAgICB7CiAgICAgICAgIG1f
c2hvdWxkQ3JlYXRlV2ViVmlld3NJbk5ld1dpbmRvd3NBdXRvbWF0aWNhbGx5ID0gdHJ1ZTsKLSAg
ICAgICAgbV9EZWZhdWx0R2VvbWV0cnlOZXdXaW5kb3dzLndpZHRoID0gd2lkdGg7Ci0gICAgICAg
IG1fRGVmYXVsdEdlb21ldHJ5TmV3V2luZG93cy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1f
ZGVmYXVsdEdlb21ldHJ5TmV3V2luZG93cy53aWR0aCA9IHdpZHRoOworICAgICAgICBtX2RlZmF1
bHRHZW9tZXRyeU5ld1dpbmRvd3MuaGVpZ2h0ID0gaGVpZ2h0OwogICAgIH0KICNlbmRpZgogCkBA
IC0zMzgsOCArMzM4LDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAga2V5
U3Ryb2tlKEdES19LRVlfYSk7CiAgICAgICAgIGtleVN0cm9rZShHREtfS0VZX2IpOwotICAgICAg
ICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCi0gICAgICAgICAgICBndGtfbWFpbl9pdGVy
YXRpb24oKTsKKyAgICAgICAgd2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcobnVsbHB0cikp
CisgICAgICAgICAgICBnX21haW5fY29udGV4dF9pdGVyYXRpb24obnVsbHB0ciwgVFJVRSk7CiAj
ZW5kaWYKICAgICB9CiAKQEAgLTM2NywxMCArMzY3LDE1IEBAIHB1YmxpYzoKICNpZiBQTEFURk9S
TShHVEspCiAgICAgICAgIGlmIChtX3Nob3VsZENyZWF0ZVdlYlZpZXdzSW5OZXdXaW5kb3dzQXV0
b21hdGljYWxseSkgewogICAgICAgICAgICAgZ19hc3NlcnRfbnVsbChtX3BhcmVudFdpbmRvdyk7
CisjaWYgVVNFKEdUSzQpCisgICAgICAgICAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3df
bmV3KCk7CisgICAgICAgICAgICBndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKG1fcGFy
ZW50V2luZG93KSwgR1RLX1dJREdFVChuZXdXZWJWaWV3KSk7CisjZWxzZQogICAgICAgICAgICAg
bV9wYXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKLSAg
ICAgICAgICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKG1fcGFyZW50
V2luZG93KSwgbV9EZWZhdWx0R2VvbWV0cnlOZXdXaW5kb3dzLndpZHRoLCBtX0RlZmF1bHRHZW9t
ZXRyeU5ld1dpbmRvd3MuaGVpZ2h0KTsKICAgICAgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdU
S19DT05UQUlORVIobV9wYXJlbnRXaW5kb3cpLCBHVEtfV0lER0VUKG5ld1dlYlZpZXcpKTsKICAg
ICAgICAgICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG5ld1dlYlZpZXcpKTsKKyNlbmRp
ZgorICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cobV9w
YXJlbnRXaW5kb3cpLCBtX2RlZmF1bHRHZW9tZXRyeU5ld1dpbmRvd3Mud2lkdGgsIG1fZGVmYXVs
dEdlb21ldHJ5TmV3V2luZG93cy5oZWlnaHQpOwogICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93
KG1fcGFyZW50V2luZG93KTsKICAgICAgICAgfQogI2VuZGlmCkBAIC00MTYsNyArNDIxLDcgQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGJvb2wgbV9zaG91bGRDcmVhdGVXZWJW
aWV3c0luTmV3V2luZG93c0F1dG9tYXRpY2FsbHkgeyBmYWxzZSB9OwotICAgIGNhaXJvX3JlY3Rh
bmdsZV9pbnRfdCBtX0RlZmF1bHRHZW9tZXRyeU5ld1dpbmRvd3M7CisgICAgY2Fpcm9fcmVjdGFu
Z2xlX2ludF90IG1fZGVmYXVsdEdlb21ldHJ5TmV3V2luZG93czsKICNlbmRpZgogfTsKIApAQCAt
NTIxLDEwICs1MjYsMTYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVOYXZpZ2F0aW9u
RGF0YShDcmVhdGVOYXZpZ2F0aW9uRGF0YVRlc3QqIHRlc3QsIGdjb24KICNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgZ2Jvb2xlYW4gY2hlY2tNaW1lVHlwZUZvckZpbHRlcihHdGtGaWxlRmlsdGVy
KiBmaWx0ZXIsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSkKIHsKKyNpZiBVU0UoR1RLNCkKKyAgICBH
UmVmUHRyPEdGaWxlSW5mbz4gZmlsdGVySW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfaW5mb19uZXco
KSk7CisgICAgZ19maWxlX2luZm9fc2V0X2NvbnRlbnRfdHlwZShmaWx0ZXJJbmZvLmdldCgpLCBt
aW1lVHlwZSk7CisgICAgcmV0dXJuIGd0a19maWx0ZXJfbWF0Y2goR1RLX0ZJTFRFUihmaWx0ZXIp
LCBmaWx0ZXJJbmZvLmdldCgpKTsKKyNlbHNlCiAgICAgR3RrRmlsZUZpbHRlckluZm8gZmlsdGVy
SW5mbzsKICAgICBmaWx0ZXJJbmZvLmNvbnRhaW5zID0gR1RLX0ZJTEVfRklMVEVSX01JTUVfVFlQ
RTsKICAgICBmaWx0ZXJJbmZvLm1pbWVfdHlwZSA9IG1pbWVUeXBlOwogICAgIHJldHVybiBndGtf
ZmlsZV9maWx0ZXJfZmlsdGVyKGZpbHRlciwgJmZpbHRlckluZm8pOworI2VuZGlmCiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggNWY3Y2ZkOGIyM2Y0Li43OTc0ZmIxMWFhZTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtODMsOCArODMsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViRXh0ZW5zaW9uSW5wdXRFbGVtZW50SXNVc2VyRWRpdGVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3RwbwogICAgIGdfYXNzZXJ0X2ZhbHNlKGlucHV0RWxlbWVudElzVXNlckVkaXRlZChwcm94
eS5nZXQoKSwgcGFnZUlELCAiaW5wdXQiKSk7CiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5mb2N1cygp
IiwgbnVsbHB0cik7CiAgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfYSk7Ci0gICAgd2hpbGUg
KGd0a19ldmVudHNfcGVuZGluZygpKQotICAgICAgICBndGtfbWFpbl9pdGVyYXRpb24oKTsKKyAg
ICB3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhudWxscHRyKSkKKyAgICAgICAgZ19tYWlu
X2NvbnRleHRfaXRlcmF0aW9uKG51bGxwdHIsIFRSVUUpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
cmVzdWx0U3RyaW5nOwogICAgIGRvIHsKICAgICAgICAgYXV0byogcmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5wdXQnKS52YWx1ZSIsIG51bGxwdHIpOwpAQCAtOTUsOCArOTUsOCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViRXh0ZW5zaW9uSW5wdXRFbGVtZW50SXNVc2VyRWRpdGVkKFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3RwbwogICAgIGdfYXNzZXJ0X2ZhbHNlKGlucHV0RWxlbWVudElzVXNlckVkaXRlZChw
cm94eS5nZXQoKSwgcGFnZUlELCAidGV4dGFyZWEiKSk7CiAgICAgdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGFyZWEn
KS5mb2N1cygpIiwgbnVsbHB0cik7CiAgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfYik7Ci0g
ICAgd2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKQotICAgICAgICBndGtfbWFpbl9pdGVyYXRp
b24oKTsKKyAgICB3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhudWxscHRyKSkKKyAgICAg
ICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKG51bGxwdHIsIFRSVUUpOwogICAgIGRvIHsKICAg
ICAgICAgYXV0byogcmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGFyZWEnKS52YWx1ZSIsIG51bGxwdHIp
OwogICAgICAgICByZXN1bHRTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcocmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGRhMDQ3MjVj
ZGI4My4uMzEyNzBiMjYyNWFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMzQ5LDYgKzM0
OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX2Fzc2VydF9jbXBzdHIobnVsbHB0ciwgPT0sIHdlYmtpdF9zZXR0aW5nc19nZXRf
bWVkaWFfY29udGVudF90eXBlc19yZXF1aXJpbmdfaGFyZHdhcmVfc3VwcG9ydChzZXR0aW5ncykp
OwogCiAjaWYgUExBVEZPUk0oR1RLKQorI2lmICFVU0UoR1RLNCkKICAgICAvLyBPbmRlbWFuZCBp
cyB0aGUgZGVmYXVsdCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gcG9saWN5LgogICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5
KHNldHRpbmdzKSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09OX0RF
TUFORCk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9s
aWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BPTElDWV9ORVZFUik7
CkBAIC0zNTcsNiArMzU4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3Qq
LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dl
dF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzKSwgPT0sIFdFQktJVF9IQVJE
V0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX0FMV0FZUyk7CiAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdBUkVf
QUNDRUxFUkFUSU9OX1BPTElDWV9PTl9ERU1BTkQpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzKSwg
PT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09OX0RFTUFORCk7CisjZW5k
aWYKIAogICAgIC8vIEJhY2stZm9yd2FyZCBuYXZpZ2F0aW9uIGdlc3R1cmUgaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdAogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2JhY2tfZm9yd2FyZF9uYXZpZ2F0aW9uX2dlc3R1cmVzKHNldHRpbmdzKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcAppbmRleCBhYzcwODQ4OWM5ZjMuLjAzNmRjMDU2Zjk3OSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwCkBAIC00NDQsMTAgKzQ0NCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVh
biBsZWF2ZUZ1bGxTY3JlZW5JZGxlKEZ1bGxTY3JlZW5DbGllbnRUZXN0KiB0ZXN0KQogICAgIHsK
LSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBrZXkgc3Ryb2tlcyBpbiBXUEUKLSNpZiBQTEFU
Rk9STShHVEspCiAgICAgICAgIHRlc3QtPmtleVN0cm9rZShHREtfS0VZX0VzY2FwZSk7Ci0jZW5k
aWYKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQWNjZXNzaWJpbGl0eVRlc3RTZXJ2
ZXIuY3BwCmluZGV4IDBiMGJhOGIxYjRiZi4uYzgyYWFiODQ2OTllIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BY2Nlc3NpYmlsaXR5VGVzdFNlcnZlci5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQWNjZXNzaWJpbGl0
eVRlc3RTZXJ2ZXIuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0d0
a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNpbmNsdWRlIDx3
dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxb
XSA9CiAgICAgIjxub2RlPiIKQEAgLTcwLDExICs3MSwxNiBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgZ3RrX2luaXQoJmFyZ2MsICZhcmd2KTsKIAogICAgIEd0a1dpZGdl
dCogd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKLQorI2lmIFVTRShHVEs0KQorICAg
IEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoKTsKKyAgICBndGtfd2luZG93X3Nl
dF9jaGlsZChHVEtfV0lORE9XKHdpbmRvdyksIEdUS19XSURHRVQod2ViVmlldykpOworI2Vsc2UK
ICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVW
RUwpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LCAiZGVsZXRlLWV2ZW50IiwgR19DQUxM
QkFDSyhndGtfbWFpbl9xdWl0KSwgbnVsbHB0cik7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUih3aW5kb3cpLCBHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0
X3Nob3dfYWxsKHdpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQod2ViVmll
dykpOworI2VuZGlmCisgICAgZ3RrX3dpZGdldF9zaG93KHdpbmRvdyk7CiAKICAgICBnX2RidXNf
Y29ubmVjdGlvbl9uZXdfZm9yX2FkZHJlc3MoYXJndlsxXSwgR19EQlVTX0NPTk5FQ1RJT05fRkxB
R1NfQVVUSEVOVElDQVRJT05fQ0xJRU5ULCBudWxscHRyLCBudWxscHRyLAogICAgICAgICBbXShH
T2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CkBAIC04
OCw1ICs5NCwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAg
ICAgICAgJmludGVyZmFjZVZpcnR1YWxUYWJsZSwgdXNlckRhdGEsIG51bGxwdHIsIG51bGxwdHIp
OwogICAgICAgICB9LCB3ZWJWaWV3KTsKIAorI2lmIFVTRShHVEs0KQorICAgIEdSZWZQdHI8R01h
aW5Mb29wPiBsb29wID0gYWRvcHRHUmVmKGdfbWFpbl9sb29wX25ldyhudWxscHRyLCBUUlVFKSk7
CisgICAgZ19tYWluX2xvb3BfcnVuKGxvb3AuZ2V0KCkpOworI2Vsc2UKICAgICBndGtfbWFpbigp
OworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9JbnNwZWN0b3JUZXN0U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0luc3BlY3RvclRlc3RTZXJ2ZXIuY3BwCmluZGV4IGJjY2MyOWM0ZmYyZC4uZmU3
MDExNTFkZjM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9JbnNwZWN0b3JUZXN0U2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9JbnNwZWN0b3JUZXN0U2VydmVyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAj
aW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9uaW5nLmg+CiAjaW5jbHVkZSA8d2Via2l0Mi93ZWJr
aXQyLmg+CisjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogCiBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiB7CkBAIC00MCw2ICs0MSwxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgICI8aHRtbD48Ym9keT48cD5XZWJLaXRHVEsgSW5zcGVjdG9y
IFRlc3QgU2VydmVyPC9wPjwvYm9keT48L2h0bWw+IiwKICAgICAgICAgImh0dHA6Ly8xMjcuMC4w
LjE6Mjk5OS8iKTsKIAorI2lmIFVTRShHVEs0KQorICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3Rr
X3dpbmRvd19uZXcoKTsKKyAgICBndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKHdpbmRv
dyksIEdUS19XSURHRVQod2ViVmlldykpOworICAgIGd0a193aWRnZXRfc2hvdyh3aW5kb3cpOwor
CisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IGxvb3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3
KG51bGxwdHIsIFRSVUUpKTsKKyAgICBnX21haW5fbG9vcF9ydW4obG9vcC5nZXQoKSk7CisjZWxz
ZQogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BM
RVZFTCk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih3aW5kb3cpLCBHVEtf
V0lER0VUKHdlYlZpZXcpKTsKICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7CkBAIC00
Nyw0ICs1Niw1IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICBnX3NpZ25h
bF9jb25uZWN0KHdpbmRvdywgImRlbGV0ZS1ldmVudCIsIEdfQ0FMTEJBQ0soZ3RrX21haW5fcXVp
dCksIDApOwogCiAgICAgZ3RrX21haW4oKTsKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKaW5kZXgg
N2JkOWRkYmQ3YjRkLi41MTViYzAwZDZmNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcApAQCAtMjYsMzAgKzI2
LDYgQEAKIAogc3RhdGljIFdlYktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CiAKLSNpZiBVU0UoR1RL
NCkKLXN0cnVjdCBMb29rdXBXaWRnZXRzRGF0YSB7Ci0gICAgdm9pZCAoKndhbGtDaGlsZHJlbiko
R3RrQ29udGFpbmVyKiwgR3RrQ2FsbGJhY2ssIHZvaWQqKTsKLSAgICBGdW5jdGlvbjxib29sKEd0
a1dpZGdldCopPiBwcmVkaWNhdGU7Ci0gICAgVmVjdG9yPEd0a1dpZGdldCo+IHJlc3VsdDsKLX07
Ci0KLXN0YXRpYyB2b2lkIGxvb2t1cFdpZGdldHNXYWxrQ2hpbGQoR3RrV2lkZ2V0KiBjaGlsZCwg
dm9pZCogdXNlcmRhdGEpCi17Ci0gICAgYXV0byYgZGF0YSA9ICpyZWludGVycHJldF9jYXN0PExv
b2t1cFdpZGdldHNEYXRhKj4odXNlcmRhdGEpOwotICAgIGlmIChkYXRhLnByZWRpY2F0ZShjaGls
ZCkpCi0gICAgICAgIGRhdGEucmVzdWx0LmFwcGVuZChjaGlsZCk7Ci0gICAgZWxzZSBpZiAoR1RL
X0lTX0NPTlRBSU5FUihjaGlsZCkpCi0gICAgICAgIGRhdGEud2Fsa0NoaWxkcmVuKEdUS19DT05U
QUlORVIoY2hpbGQpLCBsb29rdXBXaWRnZXRzV2Fsa0NoaWxkLCB1c2VyZGF0YSk7Ci19Ci0KLXN0
YXRpYyBWZWN0b3I8R3RrV2lkZ2V0Kj4gbG9va3VwV2lkZ2V0cyhHdGtXaWRnZXQqIHdpZGdldCwg
RnVuY3Rpb248Ym9vbChHdGtXaWRnZXQqKT4mJiBwcmVkaWNhdGUsIGJvb2wgaW50ZXJuYWwgPSBm
YWxzZSkKLXsKLSAgICBMb29rdXBXaWRnZXRzRGF0YSBkYXRhID0ge2ludGVybmFsID8gZ3RrX2Nv
bnRhaW5lcl9mb3JhbGwgOiBndGtfY29udGFpbmVyX2ZvcmVhY2gsIFdURk1vdmUocHJlZGljYXRl
KX07Ci0gICAgbG9va3VwV2lkZ2V0c1dhbGtDaGlsZCh3aWRnZXQsICZkYXRhKTsKLSAgICByZXR1
cm4gV1RGTW92ZShkYXRhLnJlc3VsdCk7Ci19Ci0jZW5kaWYgLy8gVVNFKEdUSzQpCi0KIGNsYXNz
IENvbnRleHRNZW51VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKICAgICBlbnVt
IENvbnRleHRNZW51SXRlbVN0YXRlRmxhZ3MgewpAQCAtNjEsNiArMzcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjaGVja0NvbnRleHRNZW51RXZlbnQoR2RrRXZlbnQqIGV2ZW50KQogICAgIHsKICAg
ICAgICAgZ19hc3NlcnRfbm9ubnVsbChldmVudCk7CisjaWYgIVVTRShHVEs0KQogICAgICAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnQtPnR5cGUsID09LCBtX2V4cGVjdGVkRXZlbnRUeXBlKTsKIAog
ICAgICAgICBzd2l0Y2ggKG1fZXhwZWN0ZWRFdmVudFR5cGUpIHsKQEAgLTc5LDYgKzU2LDcgQEAg
cHVibGljOgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNo
ZWQoKTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIGdib29sZWFuIGNv
bnRleHRNZW51Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Q29udGV4dE1l
bnUqIGNvbnRleHRNZW51LCBHZGtFdmVudCogZXZlbnQsIFdlYktpdEhpdFRlc3RSZXN1bHQqIGhp
dFRlc3RSZXN1bHQsIENvbnRleHRNZW51VGVzdCogdGVzdCkKQEAgLTEyNiwxOCArMTA0LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAjaWYgVVNFKEdUSzQpCi0gICAg
ICAgICAgICAvLyBQb3BvdmVycyBhcmUgaW50ZXJuYWwgdG8gdGhlIEd0a0NvbnRhaW5lciB3aGVy
ZSB0aGUgd2VidmlldyByZXNpZGVzLAotICAgICAgICAgICAgLy8gZ3RrX2NvbnRhaW5lcl9mb3Jh
bGwoKSBpcyB0aGUgb25seSB3YXkgdG8gZW51bWVyYXRlIGludGVybmFsIGNoaWxkcmVuLgotICAg
ICAgICAgICAgR3RrUG9wb3ZlciAqcG9wb3ZlciA9IG51bGxwdHI7Ci0gICAgICAgICAgICBndGtf
Y29udGFpbmVyX2ZvcmFsbChHVEtfQ09OVEFJTkVSKGl0ZXItPmRhdGEpLAotICAgICAgICAgICAg
ICAgIFtdKEd0a1dpZGdldCogY2hpbGQsIHZvaWQqIGRhdGEpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byoqIHBvcG92ZXIgPSByZWludGVycHJldF9jYXN0PEd0a1BvcG92ZXIqKj4oZGF0YSk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChHVEtfSVNfUE9QT1ZFUl9NRU5VKGNoaWxkKSAmJiAh
KnBvcG92ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAqcG9wb3ZlciA9IEdUS19QT1BPVkVS
KGNoaWxkKTsKLSAgICAgICAgICAgICAgICB9LCAmcG9wb3Zlcik7Ci0KLSAgICAgICAgICAgIGlm
IChwb3BvdmVyICYmIGd0a19wb3BvdmVyX2dldF9yZWxhdGl2ZV90byhwb3BvdmVyKSA9PSBHVEtf
V0lER0VUKG1fd2ViVmlldykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHBvcG92ZXI7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICNlbHNlCiAgICAgICAgICAgICBHdGtXaWRnZXQqIGNo
aWxkID0gZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihpdGVyLT5kYXRhKSk7CiAgICAgICAgICAg
ICBpZiAoIUdUS19JU19NRU5VKGNoaWxkKSkKQEAgLTE3NiwxMCArMTQzLDEyIEBAIHB1YmxpYzoK
ICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVO
VV9JVEVNKGl0ZW1zLT5kYXRhKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChpdGVtKSk7CiAKKyNpZiAhVVNFKEdUSzQpCiAgICAgICAgIEdf
R05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtBY3Rpb24qIGFjdGlv
biA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0pOwogICAgICAgICBn
X2Fzc2VydF90cnVlKEdUS19JU19BQ1RJT04oYWN0aW9uKSk7CiAgICAgICAgIEdfR05VQ19FTkRf
SUdOT1JFX0RFUFJFQ0FUSU9OUzsKKyNlbmRpZgogCiAgICAgICAgIEdBY3Rpb24qIGdBY3Rpb24g
PSB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2dhY3Rpb24oaXRlbSk7CiAgICAgICAgIGdf
YXNzZXJ0X3RydWUoR19JU19BQ1RJT04oZ0FjdGlvbikpOwpAQCAtMTk5LDEyICsxNjgsMTUgQEAg
cHVibGljOgogICAgICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09O
VEVYVF9NRU5VX0lURU0oaXRlbXMtPmRhdGEpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGl0ZW0pKTsKIAorI2lmICFVU0UoR1RLNCkKICAg
ICAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIEd0a0FjdGlv
biogYWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24oaXRlbSk7CiAg
ICAgICAgIGdfYXNzZXJ0X3RydWUoR1RLX0lTX0FDVElPTihhY3Rpb24pKTsKKyNlbmRpZgogCiAg
ICAgICAgIEdBY3Rpb24qIGdBY3Rpb24gPSB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2dh
Y3Rpb24oaXRlbSk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUoR19JU19BQ1RJT04oZ0FjdGlvbikp
OworI2lmICFVU0UoR1RLNCkKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKGd0a19hY3Rpb25fZ2V0
X25hbWUoYWN0aW9uKSwgPT0sIGdfYWN0aW9uX2dldF9uYW1lKGdBY3Rpb24pKTsKICAgICAgICAg
Z19hc3NlcnRfY21waW50KGd0a19hY3Rpb25fZ2V0X3NlbnNpdGl2ZShhY3Rpb24pLCA9PSwgZ19h
Y3Rpb25fZ2V0X2VuYWJsZWQoZ0FjdGlvbikpOwogICAgICAgICBpZiAoR1RLX0lTX1RPR0dMRV9B
Q1RJT04oYWN0aW9uKSkgewpAQCAtMjE3LDYgKzE4OSw3IEBAIHB1YmxpYzoKICAgICAgICAgZ19h
c3NlcnRfY21waW50KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3RvY2tfYWN0aW9uKGl0
ZW0pLCA9PSwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VTVE9NKTsKICAgICAgICAgZ19h
c3NlcnRfY21wc3RyKGd0a19hY3Rpb25fZ2V0X2xhYmVsKGFjdGlvbiksID09LCBsYWJlbCk7CiAg
ICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKKyNlbmRpZgogCiAgICAgICAg
IGNoZWNrQWN0aW9uU3RhdGUoZ0FjdGlvbiwgc3RhdGUpOwogCkBAIC0yMzEsMTEgKzIwNCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9D
T05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlbSkpOwogCisjaWYgIVVTRShHVEs0KQog
ICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgR3RrQWN0
aW9uKiBhY3Rpb24gPSB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2FjdGlvbihpdGVtKTsK
ICAgICAgICAgZ19hc3NlcnRfdHJ1ZShHVEtfSVNfQUNUSU9OKGFjdGlvbikpOwogICAgICAgICBn
X2Fzc2VydF9jbXBzdHIoZ3RrX2FjdGlvbl9nZXRfbGFiZWwoYWN0aW9uKSwgPT0sIGxhYmVsKTsK
ICAgICAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOworI2VuZGlmCiAKICAgICAg
ICAgR0FjdGlvbiogZ0FjdGlvbiA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfZ2FjdGlv
bihpdGVtKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShHX0lTX0FDVElPTihnQWN0aW9uKSk7CkBA
IC0zMDEsNyArMjc2LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnVUcmln
Z2VyZWRCeVBvcHVwRXZlbnRBbmRXYWl0VW50aWxGaW5pc2hlZCgpCiAgICAgeworI2lmICFVU0Uo
R1RLNCkKICAgICAgICAgbV9leHBlY3RlZEV2ZW50VHlwZSA9IEdES19OT1RISU5HOworI2VuZGlm
CiAgICAgICAgIGdfaWRsZV9hZGQocmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4oZW1pdFBv
cHVwTWVudVNpZ25hbElkbGVDYWxsYmFjayksIHRoaXMpOwogICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcCk7CiAgICAgfQpAQCAtNjAwLDEyICs1NzcsMTQgQEAgcHVibGljOgogICAg
IGJvb2wgY29udGV4dE1lbnUoV2ViS2l0Q29udGV4dE1lbnUqIGNvbnRleHRNZW51LCBHZGtFdmVu
dCosIFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQpCiAgICAgewogICAgICAgICAv
LyBBcHBlbmQgb3VyIGN1c3RvbSBpdGVtIHRvIHRoZSBkZWZhdWx0IG1lbnUuCisjaWYgIVVTRShH
VEs0KQogICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAg
aWYgKG1fYWN0aW9uKQogICAgICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29u
dGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXcobV9hY3Rpb24uZ2V0KCkpKTsK
ICAgICAgICAgZWxzZSBpZiAobV9nQWN0aW9uKQogICAgICAgICAgICAgd2Via2l0X2NvbnRleHRf
bWVudV9hcHBlbmQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfZnJv
bV9nYWN0aW9uKG1fZ0FjdGlvbi5nZXQoKSwgbV9nQWN0aW9uVGl0bGUuZGF0YSgpLCBtX2V4cGVj
dGVkVGFyZ2V0LmdldCgpKSk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9O
UzsKKyNlbmRpZgogICAgICAgICBxdWl0TWFpbkxvb3AoKTsKIAogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC02MTQsMjIgKzU5Myw3IEBAIHB1YmxpYzoKICNpZiBVU0UoR1RLNCkKICAgICBHdGtC
dXR0b24qIGdldE1lbnVJdGVtKEd0a1dpZGdldCogcG9wb3ZlciwgY29uc3QgZ2NoYXIqIGl0ZW1M
YWJlbCkKICAgICB7Ci0gICAgICAgIGF1dG8gaXRlbXMgPSBsb29rdXBXaWRnZXRzKHBvcG92ZXIs
Ci0gICAgICAgICAgICBbaXRlbUxhYmVsXShHdGtXaWRnZXQqIHdpZGdldCkgewotICAgICAgICAg
ICAgICAgIGlmICghR1RLX0lTX0JVVFRPTih3aWRnZXQpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogbGFiZWwgPSBndGtfYnV0
dG9uX2dldF9sYWJlbChHVEtfQlVUVE9OKHdpZGdldCkpOwotICAgICAgICAgICAgICAgIGlmICgh
bGFiZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYXV0byBsYWJlbHMgPSBsb29rdXBX
aWRnZXRzKEdUS19XSURHRVQod2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFtdKEd0
a1dpZGdldCogY2hpbGQpIHsgcmV0dXJuIEdUS19JU19MQUJFTChjaGlsZCk7IH0pOwotICAgICAg
ICAgICAgICAgICAgICBnX2Fzc2VydF9jbXB1aW50KDEsID09LCBsYWJlbHMuc2l6ZSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgbGFiZWwgPSBndGtfbGFiZWxfZ2V0X2xhYmVsKEdUS19MQUJFTChs
YWJlbHNbMF0pKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEdU
S19JU19CVVRUT04od2lkZ2V0KSAmJiBnX3N0cmNtcDAobGFiZWwsIGl0ZW1MYWJlbCkgPT0gMDsK
LSAgICAgICAgICAgIH0sIHRydWUpOwotCi0gICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoaXRlbXMu
c2l6ZSgpLCA+LCAwKTsKLSAgICAgICAgcmV0dXJuIGl0ZW1zLnNpemUoKSA/IEdUS19CVVRUT04o
aXRlbXNbMF0pIDogbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogI2Vs
c2UKICAgICBHdGtNZW51SXRlbSogZ2V0TWVudUl0ZW0oR3RrV2lkZ2V0KiBtZW51LCBjb25zdCBn
Y2hhciogaXRlbUxhYmVsKQpAQCAtNjUxLDggKzYxNSw3IEBAIHB1YmxpYzoKICAgICAgICAgYXV0
byogbWVudSA9IGdldENvbnRleHRNZW51V2lkZ2V0KCk7CiAgICAgICAgIGF1dG8qIGl0ZW0gPSBn
ZXRNZW51SXRlbShtZW51LCBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOwogI2lmIFVTRShHVEs0KQot
ICAgICAgICAvLyBHVEs0IHVzZXMgYSBwb3BvdmVyLCB3aGljaCBjb250YWlucyBidXR0b25zLgot
ICAgICAgICBndGtfYnV0dG9uX2NsaWNrZWQoaXRlbSk7CisKICNlbHNlCiAgICAgICAgIC8vIEdU
SzMgdXNlcyBhIG1lbnUsIHdoaWNoIGNvbnRhaW5zIG1lbnUgaXRlbXMuCiAgICAgICAgIGd0a19t
ZW51X3NoZWxsX2FjdGl2YXRlX2l0ZW0oR1RLX01FTlVfU0hFTEwobWVudSksIEdUS19XSURHRVQo
aXRlbSksIFRSVUUpOwpAQCAtNzAwLDEyICs2NjMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgYWN0aW9uVG9nZ2xlZENhbGxiYWNrKENvbnRleHRNZW51Q3VzdG9tVGVzdCogdGVzdCkKICAg
ICB7CiAgICAgICAgIHRlc3QtPm1fdG9nZ2xlZCA9IHRydWU7Ci0KLSNpZiBVU0UoR1RLNCkKLSAg
ICAgICAgLy8gRm9yIHRvZ2dsZSBhY3Rpb25zIHRoZSBwb3BvdmVyIG1lbnUgaXMgTk9UIGRpc21p
c3NlZCBhdXRvbWF0aWNhbGx5LCBhcyB0byBzaG93IHZpc3VhbCBmZWVkYmFjayB0byB0aGUgdXNl
cgotICAgICAgICAvLyAoaS5lLiB0aGUgY2hlY2sgbWFya2VyKS4gRGlzbWlzcyBpdCBoZXJlIHRv
IHRyaWdnZXIgY29udGV4dE1lbnVEaXNtaXNzZWRDYWxsYmFjaygpIGFuZCBjb250aW51ZSB0aGUg
dGVzdC4KLSAgICAgICAgZ3RrX3BvcG92ZXJfcG9wZG93bih0ZXN0LT5nZXRQb3BvdmVyTWVudSgp
KTsKLSNlbmRpZiAvLyBVU0UoR1RLNCkKICAgICB9CiAKICAgICB2b2lkIHNldEFjdGlvbihHdGtB
Y3Rpb24qIGFjdGlvbikKQEAgLTcxMywxMiArNjcwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
Y3Rpb24gPSBhY3Rpb247CiAgICAgICAgIG1fZ0FjdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIG1f
ZXhwZWN0ZWRUYXJnZXQgPSBudWxscHRyOworI2lmICFVU0UoR1RLNCkKICAgICAgICAgR19HTlVD
X0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIGlmIChHVEtfSVNfVE9HR0xFX0FD
VElPTihhY3Rpb24pKQogICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGFjdGlv
biwgInRvZ2dsZWQiLCBHX0NBTExCQUNLKGFjdGlvblRvZ2dsZWRDYWxsYmFjayksIHRoaXMpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoYWN0aW9u
LCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGFjdGlvbkFjdGl2YXRlZENhbGxiYWNrKSwgdGhpcyk7
CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKKyNlbmRpZgogICAgIH0K
IAogICAgIHZvaWQgc2V0QWN0aW9uKEdBY3Rpb24qIGFjdGlvbiwgY29uc3QgY2hhciogdGl0bGUs
IEdWYXJpYW50KiB0YXJnZXQgPSBudWxscHRyKQpAQCAtNzQ3LDYgKzcwNiw3IEBAIHN0YXRpYyB2
b2lkIHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PldlYktpdEdU
SyBDb250ZXh0IG1lbnUgdGVzdHM8L2JvZHk+PC9odG1sPiIsICJmaWxlOi8vLyIpOwogICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCisjaWYgIVVTRShHVEs0KQogICAgIEdfR05V
Q19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZW51
IGl0ZW0uCiAgICAgR1JlZlB0cjxHdGtBY3Rpb24+IGFjdGlvbiA9IGFkb3B0R1JlZihndGtfYWN0
aW9uX25ldygiV2ViS2l0R1RLQ3VzdG9tQWN0aW9uIiwgIkN1c3RvbSBfQWN0aW9uIiwgbnVsbHB0
ciwgbnVsbHB0cikpOwpAQCAtNzY0LDYgKzcyNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0
TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
CiAgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9hY3RpdmF0ZWQpOwogICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+bV90b2dnbGVkKTsKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7
CisjZW5kaWYKIAogICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZW51IGl0ZW0gdXNpbmcgR0FjdGlv
bi4KICAgICBHUmVmUHRyPEdBY3Rpb24+IGdBY3Rpb24gPSBhZG9wdEdSZWYoR19BQ1RJT04oZ19z
aW1wbGVfYWN0aW9uX25ldygiV2ViS2l0R1RLQ3VzdG9tR0FjdGlvbiIsIG51bGxwdHIpKSk7CkBA
IC04MDUsNiArNzY2LDcgQEAgcHVibGljOgogICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X2lu
c2VydChjb250ZXh0TWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19zZXBhcmF0b3Io
KSwgMik7CiAKICAgICAgICAgLy8gQWRkIGN1c3RvbSBhY3Rpb25zLgorI2lmICFVU0UoR1RLNCkK
ICAgICAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIEdSZWZQ
dHI8R3RrQWN0aW9uPiBhY3Rpb24gPSBhZG9wdEdSZWYoZ3RrX2FjdGlvbl9uZXcoIldlYktpdEdU
S0N1c3RvbUFjdGlvbiIsICJDdXN0b20gX0FjdGlvbiIsIG51bGxwdHIsIG51bGxwdHIpKTsKICAg
ICAgICAgZ3RrX2FjdGlvbl9zZXRfc2Vuc2l0aXZlKGFjdGlvbi5nZXQoKSwgRkFMU0UpOwpAQCAt
ODEzLDYgKzc3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgZ3RrX3RvZ2dsZV9hY3Rpb25fc2V0X2Fj
dGl2ZShHVEtfVE9HR0xFX0FDVElPTih0b2dnbGVBY3Rpb24uZ2V0KCkpLCBUUlVFKTsKICAgICAg
ICAgd2Via2l0X2NvbnRleHRfbWVudV9hcHBlbmQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0
X21lbnVfaXRlbV9uZXcodG9nZ2xlQWN0aW9uLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF9jb250
ZXh0X21lbnVfYXBwZW5kKGNvbnRleHRNZW51LCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3
X3NlcGFyYXRvcigpKTsKKyNlbmRpZgogICAgICAgICBHUmVmUHRyPEdBY3Rpb24+IGdBY3Rpb24g
PSBhZG9wdEdSZWYoR19BQ1RJT04oZ19zaW1wbGVfYWN0aW9uX25ldygiV2ViS2l0R1RLQ3VzdG9t
R0FjdGlvbiIsIG51bGxwdHIpKSk7CiAgICAgICAgIGdfc2ltcGxlX2FjdGlvbl9zZXRfZW5hYmxl
ZChHX1NJTVBMRV9BQ1RJT04oZ0FjdGlvbi5nZXQoKSksIEZBTFNFKTsKICAgICAgICAgd2Via2l0
X2NvbnRleHRfbWVudV9pbnNlcnQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRl
bV9uZXdfZnJvbV9nYWN0aW9uKGdBY3Rpb24uZ2V0KCksICJDdXN0b20gX0dBY3Rpb24iLCBudWxs
cHRyKSwgLTEpOwpAQCAtMTE3NSw2ICsxMTM4LDggQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIGtT
ZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2ZXItPnJ1bihzZXJ2ZXJD
YWxsYmFjayk7CiAKKyNpZiAhVVNFKEdUSzQpCisgICAgLy8gRklYTUU6IFJld29yayBjb250ZXh0
IG1lbnUgQVBJIGluIEdUSzQgdG8gbm90IGV4cG9zZSBHZGtFdmVudC4KICAgICBDb250ZXh0TWVu
dURlZmF1bHRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZGVmYXVsdC1tZW51IiwgdGVzdENv
bnRleHRNZW51RGVmYXVsdE1lbnUpOwogICAgIENvbnRleHRNZW51RGVmYXVsdFRlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJjb250ZXh0LW1lbnUta2V5IiwgdGVzdENvbnRleHRNZW51S2V5KTsK
ICAgICBDb250ZXh0TWVudURlZmF1bHRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicG9wdXAt
ZXZlbnQtc2lnbmFsIiwgdGVzdFBvcHVwRXZlbnRTaWduYWwpOwpAQCAtMTE4NSw2ICsxMTUwLDcg
QEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIENvbnRleHRNZW51RGlzbWlzc2VkVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgIm1lbnUtZGlzbWlzc2VkIiwgdGVzdENvbnRleHRNZW51RGlzbWlzc2Vk
KTsKICAgICBDb250ZXh0TWVudVdlYkV4dGVuc2lvblRlc3Q6OmFkZCgiV2ViS2l0V2ViUGFnZSIs
ICJjb250ZXh0LW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25NZW51KTsKICAgICBD
b250ZXh0TWVudVdlYkV4dGVuc2lvbk5vZGVUZXN0OjphZGQoIldlYktpdFdlYlBhZ2UiLCAiY29u
dGV4dC1tZW51LW5vZGUiLCB0ZXN0Q29udGV4dE1lbnVXZWJFeHRlbnNpb25Ob2RlKTsKKyNlbmRp
ZgogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3Rvci5jcHAKaW5kZXggZTRjZThkMzViNzQ0Li5jZDA0
ZTQ5NDRkMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L1Rlc3RJbnNwZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL1Rlc3RJbnNwZWN0b3IuY3BwCkBAIC0yMjYsMjggKzIyNiw0MCBAQCBwdWJsaWM6CiAKICAg
ICB+Q3VzdG9tSW5zcGVjdG9yVGVzdCgpCiAgICAgeworI2lmIFVTRShHVEs0KQorICAgICAgICBp
ZiAobV9pbnNwZWN0b3JXaW5kb3cpCisgICAgICAgICAgICBndGtfd2luZG93X2Rlc3Ryb3koR1RL
X1dJTkRPVyhtX2luc3BlY3RvcldpbmRvdykpOworI2Vsc2UKICAgICAgICAgaWYgKG1faW5zcGVj
dG9yV2luZG93KQogICAgICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faW5zcGVjdG9yV2lu
ZG93KTsKKyNlbmRpZgogICAgIH0KIAogICAgIGJvb2wgb3BlbldpbmRvdygpCiAgICAgewogICAg
ICAgICBnX2Fzc2VydF9udWxsKG1faW5zcGVjdG9yV2luZG93KTsKLSAgICAgICAgbV9pbnNwZWN0
b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKICAgICAgICAg
V2ViS2l0V2ViVmlld0Jhc2UqIGluc3BlY3RvclZpZXcgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9n
ZXRfd2ViX3ZpZXcobV9pbnNwZWN0b3IpOwogICAgICAgICBnX2Fzc2VydF9ub25udWxsKGluc3Bl
Y3RvclZpZXcpOworI2lmIFVTRShHVEs0KQorICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IGd0
a193aW5kb3dfbmV3KCk7CisgICAgICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1co
bV9pbnNwZWN0b3JXaW5kb3cpLCBHVEtfV0lER0VUKGluc3BlY3RvclZpZXcpKTsKKyNlbHNlCisg
ICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BM
RVZFTCk7CiAgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9pbnNwZWN0
b3JXaW5kb3cpLCBHVEtfV0lER0VUKGluc3BlY3RvclZpZXcpKTsKLSAgICAgICAgZ3RrX3dpZGdl
dF9zaG93X2FsbChtX2luc3BlY3RvcldpbmRvdyk7CisgICAgICAgIGd0a193aWRnZXRfc2hvdyhH
VEtfV0lER0VUKGluc3BlY3RvclZpZXcpKTsKKyNlbmRpZgorICAgICAgICBndGtfd2lkZ2V0X3No
b3cobV9pbnNwZWN0b3JXaW5kb3cpOwogCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0Ojpv
cGVuV2luZG93KCk7CiAgICAgfQogCiAgICAgdm9pZCBjbG9zZWQoKQogICAgIHsKLSAgICAgICAg
aWYgKG1faW5zcGVjdG9yV2luZG93KSB7Ci0gICAgICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3ko
bV9pbnNwZWN0b3JXaW5kb3cpOwotICAgICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOwot
ICAgICAgICB9CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGdfY2xlYXJfcG9pbnRlcigmbV9pbnNw
ZWN0b3JXaW5kb3csIGd0a193aW5kb3dfZGVzdHJveSk7CisjZWxzZQorICAgICAgICBnX2NsZWFy
X3BvaW50ZXIoJm1faW5zcGVjdG9yV2luZG93LCBndGtfd2lkZ2V0X2Rlc3Ryb3kpOworI2VuZGlm
CiAKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3Q6OmNsb3NlZCgpOwogICAgIH0KQEAgLTI1
NiwxMiArMjY4LDI5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Vmlld0Jhc2U+IGluc3BlY3RvclZpZXcgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2ViX3Zp
ZXcobV9pbnNwZWN0b3IpOwogICAgICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cpIHsKKyNpZiBV
U0UoR1RLNCkKKyAgICAgICAgICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cobV9p
bnNwZWN0b3JXaW5kb3cpLCBudWxscHRyKTsKKyAgICAgICAgICAgIGd0a193aW5kb3dfZGVzdHJv
eShHVEtfV0lORE9XKG1faW5zcGVjdG9yV2luZG93KSk7CisjZWxzZQogICAgICAgICAgICAgZ3Rr
X2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX2luc3BlY3RvcldpbmRvdyksIEdUS19X
SURHRVQoaW5zcGVjdG9yVmlldy5nZXQoKSkpOwogICAgICAgICAgICAgZ3RrX3dpZGdldF9kZXN0
cm95KG1faW5zcGVjdG9yV2luZG93KTsKLSAgICAgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0g
MDsKKyNlbmRpZgorICAgICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBudWxscHRyOwogICAg
ICAgICB9CiAKICAgICAgICAgR3RrV2lkZ2V0KiBwYW5lOworI2lmIFVTRShHVEs0KQorICAgICAg
ICBpZiAoZ3RrX3dpbmRvd19nZXRfY2hpbGQoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdykpID09
IEdUS19XSURHRVQobV93ZWJWaWV3KSkgeworICAgICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJW
aWV3PiBpbnNwZWN0ZWRWaWV3ID0gbV93ZWJWaWV3OworICAgICAgICAgICAgZ3RrX3dpbmRvd19z
ZXRfY2hpbGQoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdyksIG51bGxwdHIpOworICAgICAgICAg
ICAgcGFuZSA9IGd0a19wYW5lZF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKyAgICAg
ICAgICAgIGd0a19wYW5lZF9zZXRfc3RhcnRfY2hpbGQoR1RLX1BBTkVEKHBhbmUpLCBHVEtfV0lE
R0VUKG1fd2ViVmlldykpOworICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJ
TkRPVyhtX3BhcmVudFdpbmRvdyksIHBhbmUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHBhbmUgPSBndGtfd2luZG93X2dldF9jaGlsZChHVEtfV0lORE9XKG1fcGFyZW50V2luZG93KSk7
CisgICAgICAgIGd0a19wYW5lZF9zZXRfcG9zaXRpb24oR1RLX1BBTkVEKHBhbmUpLCB3ZWJraXRf
d2ViX2luc3BlY3Rvcl9nZXRfYXR0YWNoZWRfaGVpZ2h0KG1faW5zcGVjdG9yKSk7CisgICAgICAg
IGd0a19wYW5lZF9zZXRfZW5kX2NoaWxkKEdUS19QQU5FRChwYW5lKSwgR1RLX1dJREdFVChpbnNw
ZWN0b3JWaWV3LmdldCgpKSk7CisjZWxzZQogICAgICAgICBpZiAoZ3RrX2Jpbl9nZXRfY2hpbGQo
R1RLX0JJTihtX3BhcmVudFdpbmRvdykpID09IEdUS19XSURHRVQobV93ZWJWaWV3KSkgewogICAg
ICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiBpbnNwZWN0ZWRWaWV3ID0gbV93ZWJWaWV3
OwogICAgICAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihtX3BhcmVu
dFdpbmRvdyksIEdUS19XSURHRVQobV93ZWJWaWV3KSk7CkBAIC0yNzMsNiArMzAyLDcgQEAgcHVi
bGljOgogICAgICAgICAgICAgcGFuZSA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4obV9wYXJl
bnRXaW5kb3cpKTsKICAgICAgICAgZ3RrX3BhbmVkX3NldF9wb3NpdGlvbihHVEtfUEFORUQocGFu
ZSksIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9hdHRhY2hlZF9oZWlnaHQobV9pbnNwZWN0b3Ip
KTsKICAgICAgICAgZ3RrX3BhbmVkX2FkZDIoR1RLX1BBTkVEKHBhbmUpLCBHVEtfV0lER0VUKGlu
c3BlY3RvclZpZXcuZ2V0KCkpKTsKKyNlbmRpZgogCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JU
ZXN0OjphdHRhY2goKTsKICAgICB9CkBAIC0yODAsMTcgKzMxMCwyNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBkZXRhY2goKQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3QmFzZT4g
aW5zcGVjdG9yVmlldyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyhtX2luc3Bl
Y3Rvcik7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIEd0a1dpZGdldCogcGFuZSA9IGd0a193aW5k
b3dfZ2V0X2NoaWxkKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShHVEtfSVNfUEFORUQocGFuZSkpOworICAgICAgICBndGtfcGFuZWRfc2V0X2VuZF9j
aGlsZChHVEtfUEFORUQocGFuZSksIG51bGxwdHIpOworI2Vsc2UKICAgICAgICAgR3RrV2lkZ2V0
KiBwYW5lID0gZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihtX3BhcmVudFdpbmRvdykpOwogICAg
ICAgICBnX2Fzc2VydF90cnVlKEdUS19JU19QQU5FRChwYW5lKSk7CiAgICAgICAgIGd0a19jb250
YWluZXJfcmVtb3ZlKEdUS19DT05UQUlORVIocGFuZSksIEdUS19XSURHRVQoaW5zcGVjdG9yVmll
dy5nZXQoKSkpOworI2VuZGlmCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0OjpkZXRhY2go
KTsKICAgICB9CiAKICAgICB2b2lkIGRlc3Ryb3lXaW5kb3coKQogICAgIHsKICAgICAgICAgZ19h
c3NlcnRfbm9ubnVsbChtX2luc3BlY3RvcldpbmRvdyk7Ci0gICAgICAgIGd0a193aWRnZXRfZGVz
dHJveShtX2luc3BlY3RvcldpbmRvdyk7Ci0gICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsK
KyNpZiBVU0UoR1RLNCkKKyAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZtX2luc3BlY3RvcldpbmRv
dywgZ3RrX3dpbmRvd19kZXN0cm95KTsKKyNlbHNlCisgICAgICAgIGdfY2xlYXJfcG9pbnRlcigm
bV9pbnNwZWN0b3JXaW5kb3csIGd0a193aWRnZXRfZGVzdHJveSk7CisjZW5kaWYKICAgICB9CiAK
ICAgICBHdGtXaWRnZXQqIG1faW5zcGVjdG9yV2luZG93OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFByaW50aW5nLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHAKaW5kZXggN2Q5M2M3OWM5
MTE5Li41MzNkMDA0NzlkMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdFByaW50aW5nLmNwcApAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPHd0
Zi9nbGliL0dSZWZQdHIuaD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCmluZGV4IDc1MmU4MDRjNzA2Ni4u
NTc4ZjQ4MTIzMzllIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwCkBAIC0yMSwyMyArMjEsMTAyIEBACiAj
aW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAK
K2NsYXNzIENsaXBib2FyZCB7CitwdWJsaWM6CisgICAgQ2xpcGJvYXJkKEdNYWluTG9vcCogbG9v
cCkKKyAgICAgICAgOiBtX21haW5Mb29wKGxvb3ApCisjaWYgVVNFKEdUSzQpCisgICAgICAgICwg
bV9jbGlwYm9hcmQoZ2RrX2Rpc3BsYXlfZ2V0X2NsaXBib2FyZChnZGtfZGlzcGxheV9nZXRfZGVm
YXVsdCgpKSkKKyNlbHNlCisgICAgICAgICwgbV9jbGlwYm9hcmQoZ3RrX2NsaXBib2FyZF9nZXRf
Zm9yX2Rpc3BsYXkoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQoKSwgR0RLX1NFTEVDVElPTl9DTElQ
Qk9BUkQpKQorI2VuZGlmCisgICAgeworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsK
KyNpZiBVU0UoR1RLNCkKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnZGtfY2xpcGJvYXJkX3NldF9j
b250ZW50KG1fY2xpcGJvYXJkLCBudWxscHRyKSk7CisjZWxzZQorICAgICAgICBndGtfY2xpcGJv
YXJkX2NsZWFyKG1fY2xpcGJvYXJkKTsKKyNlbmRpZgorICAgICAgICBtX3RleHQgPSBudWxscHRy
OworICAgIH0KKworICAgIGJvb2wgY29udGFpbnNUZXh0KCkgY29uc3QKKyAgICB7CisjaWYgVVNF
KEdUSzQpCisgICAgICAgIHJldHVybiBnZGtfY29udGVudF9mb3JtYXRzX2NvbnRhaW5fZ3R5cGUo
Z2RrX2NsaXBib2FyZF9nZXRfZm9ybWF0cyhtX2NsaXBib2FyZCksIEdfVFlQRV9TVFJJTkcpOwor
I2Vsc2UKKyAgICAgICAgcmV0dXJuIGd0a19jbGlwYm9hcmRfd2FpdF9pc190ZXh0X2F2YWlsYWJs
ZShtX2NsaXBib2FyZCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBib29sIHdhaXRGb3JUZXh0KCkK
KyAgICB7CisgICAgICAgIC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgd2hlbiB0aGUgc2VsZWN0
aW9uIGhhcyBiZWVuIHdyaXR0ZW4gdG8KKyAgICAgICAgLy8gdGhlIGNsaXBib2FyZCwgc28gdXNl
IGEgdGltZW91dCBzb3VyY2UgdG8gcXVlcnkgdGhlIGNsaXBib2FyZC4KKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGtDbGlwYm9hcmRXYWl0VGltZW91dCA9IDUwOworICAgICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQga0NsaXBib2FyZFdhaXRNYXhUcmllcyA9IDI7CisgICAgICAgIG1f
dHJpZXNDb3VudCA9IDA7CisgICAgICAgIGdfdGltZW91dF9hZGQoa0NsaXBib2FyZFdhaXRUaW1l
b3V0LCBbXShncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICAgICAgYXV0
byogY2xpcGJvYXJkID0gc3RhdGljX2Nhc3Q8Q2xpcGJvYXJkKj4odXNlckRhdGEpOworICAgICAg
ICAgICAgY2xpcGJvYXJkLT5tX3RyaWVzQ291bnQrKzsKKyAgICAgICAgICAgIGlmIChjbGlwYm9h
cmQtPmNvbnRhaW5zVGV4dCgpIHx8IGNsaXBib2FyZC0+bV90cmllc0NvdW50ID4ga0NsaXBib2Fy
ZFdhaXRNYXhUcmllcykgeworICAgICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQoY2xpcGJv
YXJkLT5tX21haW5Mb29wKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfSwgdGhpcyk7CisgICAg
ICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5z
VGV4dCgpOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIHJlYWRUZXh0KCkKKyAgICB7CisgICAg
ICAgIG1fdGV4dCA9IG51bGxwdHI7CisgICAgICAgIGlmICh3YWl0Rm9yVGV4dCgpKSB7CisjaWYg
VVNFKEdUSzQpCisgICAgICAgICAgICBnZGtfY2xpcGJvYXJkX3JlYWRfdGV4dF9hc3luYyhtX2Ns
aXBib2FyZCwgbnVsbHB0ciwgW10oR09iamVjdCogZ2RrQ2xpcGJvYXJkLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBjbGlw
Ym9hcmQgPSBzdGF0aWNfY2FzdDxDbGlwYm9hcmQqPih1c2VyRGF0YSk7CisgICAgICAgICAgICAg
ICAgY2xpcGJvYXJkLT5tX3RleHQucmVzZXQoZ2RrX2NsaXBib2FyZF9yZWFkX3RleHRfZmluaXNo
KEdES19DTElQQk9BUkQoZ2RrQ2xpcGJvYXJkKSwgcmVzdWx0LCBudWxscHRyKSk7CisgICAgICAg
ICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChjbGlwYm9hcmQtPm1fbWFpbkxvb3ApOworICAgICAg
ICAgICAgfSwgdGhpcyk7CisgICAgICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7
CisjZWxzZQorICAgICAgICAgICAgbV90ZXh0LnJlc2V0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3Jf
dGV4dChtX2NsaXBib2FyZCkpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1f
dGV4dC5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR01haW5Mb29wKiBtX21haW5Mb29w
IHsgbnVsbHB0ciB9OworI2lmIFVTRShHVEs0KQorICAgIEdka0NsaXBib2FyZCogbV9jbGlwYm9h
cmQgeyBudWxscHRyIH07CisjZWxzZQorICAgIEd0a0NsaXBib2FyZCogbV9jbGlwYm9hcmQgeyBu
dWxscHRyIH07CisjZW5kaWYKKyAgICBHVW5pcXVlUHRyPGNoYXI+IG1fdGV4dDsKKyAgICB1bnNp
Z25lZCBtX3RyaWVzQ291bnQgeyAwIH07Cit9OworCiBjbGFzcyBFZGl0b3JUZXN0OiBwdWJsaWMg
V2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoRWRpdG9y
VGVzdCk7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NsaXBib2FyZFdhaXRUaW1lb3V0
ID0gNTA7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtDbGlwYm9hcmRXYWl0TWF4VHJpZXMg
PSAyOwotCiAgICAgRWRpdG9yVGVzdCgpCi0gICAgICAgIDogbV9jbGlwYm9hcmQoZ3RrX2NsaXBi
b2FyZF9nZXQoR0RLX1NFTEVDVElPTl9DTElQQk9BUkQpKQotICAgICAgICAsIG1fY2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kKGZhbHNlKQotICAgICAgICAsIG1fdHJpZXNDb3VudCgwKQotICAgICAg
ICAsIG1fZWRpdG9yU3RhdGUobnVsbHB0cikKKyAgICAgICAgOiBtX2NsaXBib2FyZChtX21haW5M
b29wKQogICAgIHsKICAgICAgICAgc2hvd0luV2luZG93KCk7CisgICAgICAgIG1fY2xpcGJvYXJk
LmNsZWFyKCk7CiAgICAgICAgIGxvYWRVUkkoImFib3V0OmJsYW5rIik7CiAgICAgICAgIHdhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwotICAgICAgICBndGtfY2xpcGJvYXJkX2NsZWFyKG1fY2xpcGJv
YXJkKTsKKyAgICB9CisKKyAgICB+RWRpdG9yVGVzdCgpCisgICAgeworICAgICAgICBtX2NsaXBi
b2FyZC5jbGVhcigpOwogICAgIH0KIAogICAgIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RHJhd0Nh
bGxiYWNrKEdNYWluTG9vcCogbWFpbkxvb3ApCkBAIC00OCwxMCArMTI3LDIwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZmx1c2hFZGl0b3JTdGF0ZSgpCiAgICAgeworI2lmIFVTRShHVEs0KQorICAg
ICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtfd2lkZ2V0X2dl
dF9uYXRpdmUoR1RLX1dJREdFVChtX3dlYlZpZXcpKSk7CisgICAgICAgIGF1dG8qIGNsb2NrID0g
Z2RrX3N1cmZhY2VfZ2V0X2ZyYW1lX2Nsb2NrKHN1cmZhY2UpOworICAgICAgICBhdXRvIHNpZ25h
bElEID0gZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGNsb2NrLCAicGFpbnQiLCBHX0NBTExCQUNL
KHdlYlZpZXdEcmF3Q2FsbGJhY2spLCBtX21haW5Mb29wKTsKKyNlbHNlCiAgICAgICAgIGF1dG8g
c2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV93ZWJWaWV3LCAiZHJhdyIsIEdf
Q0FMTEJBQ0sod2ViVmlld0RyYXdDYWxsYmFjayksIG1fbWFpbkxvb3ApOworI2VuZGlmCiAgICAg
ICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhHVEtfV0lER0VUKG1fd2ViVmlldykpOwogICAgICAg
ICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChjbG9jaywgc2lnbmFsSUQpOworI2Vsc2UKICAgICAg
ICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2ViVmlldywgc2lnbmFsSUQpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kUmVh
ZHlDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIEVkaXRvclRlc3QqIHRl
c3QpCkBAIC04NCw0MSArMTczLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fY2FuRXhl
Y3V0ZUVkaXRpbmdDb21tYW5kOwogICAgIH0KIAotICAgIHN0YXRpYyBnYm9vbGVhbiB3YWl0Rm9y
Q2xpcGJvYXJkVGV4dChFZGl0b3JUZXN0KiB0ZXN0KQotICAgIHsKLSAgICAgICAgdGVzdC0+bV90
cmllc0NvdW50Kys7Ci0gICAgICAgIGlmIChndGtfY2xpcGJvYXJkX3dhaXRfaXNfdGV4dF9hdmFp
bGFibGUodGVzdC0+bV9jbGlwYm9hcmQpIHx8IHRlc3QtPm1fdHJpZXNDb3VudCA+IGtDbGlwYm9h
cmRXYWl0TWF4VHJpZXMpIHsKLSAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9t
YWluTG9vcCk7Ci0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gVFJVRTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlDbGlwYm9hcmQoKQorICAgIGNv
bnN0IGNoYXIqIGNvcHlDbGlwYm9hcmQoKQogICAgIHsKICAgICAgICAgd2Via2l0X3dlYl92aWV3
X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFO
RF9DT1BZKTsKLSAgICAgICAgLy8gVGhlcmUncyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxl
Y3Rpb24gaGFzIGJlZW4gY29waWVkIHRvCi0gICAgICAgIC8vIHRoZSBjbGlwYm9hcmQsIHNvIHVz
ZSBhIHRpbWVvdXQgc291cmNlIHRvIHF1ZXJ5IHRoZSBjbGlwYm9hcmQuCi0gICAgICAgIG1fdHJp
ZXNDb3VudCA9IDA7Ci0gICAgICAgIGdfdGltZW91dF9hZGQoa0NsaXBib2FyZFdhaXRUaW1lb3V0
LCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPih3YWl0Rm9yQ2xpcGJvYXJkVGV4dCksIHRo
aXMpOwotICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CisgICAgICAgIHJldHVy
biBtX2NsaXBib2FyZC5yZWFkVGV4dCgpOwogICAgIH0KIAotICAgIGdjaGFyKiBjdXRTZWxlY3Rp
b24oKQorICAgIGNvbnN0IGNoYXIqIGN1dFNlbGVjdGlvbigpCiAgICAgewogICAgICAgICBnX2Fz
c2VydF90cnVlKGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5E
X0NVVCkpOwogICAgICAgICBnX2Fzc2VydF90cnVlKGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChX
RUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUoY2Fu
RXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEVfQVNfUExB
SU5fVEVYVCkpOwogCiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29t
bWFuZChtX3dlYlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKTsKLSAgICAgICAgLy8g
VGhlcmUncyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxlY3Rpb24gaGFzIGJlZW4gY3V0IHRv
Ci0gICAgICAgIC8vIHRoZSBjbGlwYm9hcmQsIHNvIHVzZSBhIHRpbWVvdXQgc291cmNlIHRvIHF1
ZXJ5IHRoZSBjbGlwYm9hcmQuCi0gICAgICAgIG1fdHJpZXNDb3VudCA9IDA7Ci0gICAgICAgIGdf
dGltZW91dF9hZGQoa0NsaXBib2FyZFdhaXRUaW1lb3V0LCByZWludGVycHJldF9jYXN0PEdTb3Vy
Y2VGdW5jPih3YWl0Rm9yQ2xpcGJvYXJkVGV4dCksIHRoaXMpOwotICAgICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcCk7Ci0KLSAgICAgICAgcmV0dXJuIGd0a19jbGlwYm9hcmRfd2FpdF9m
b3JfdGV4dChtX2NsaXBib2FyZCk7CisgICAgICAgIHJldHVybiBtX2NsaXBib2FyZC5yZWFkVGV4
dCgpOwogICAgIH0KIAogICAgIFdlYktpdEVkaXRvclN0YXRlKiBlZGl0b3JTdGF0ZSgpCkBAIC0x
NDksMTAgKzIxNyw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHR5cGluZ0F0dHJpYnV0ZXMo
KTsKICAgICB9CiAKLSAgICBHdGtDbGlwYm9hcmQqIG1fY2xpcGJvYXJkOwotICAgIGJvb2wgbV9j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQ7Ci0gICAgc2l6ZV90IG1fdHJpZXNDb3VudDsKLSAgICBX
ZWJLaXRFZGl0b3JTdGF0ZSogbV9lZGl0b3JTdGF0ZTsKKyAgICBDbGlwYm9hcmQgbV9jbGlwYm9h
cmQ7CisgICAgYm9vbCBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCB7IGZhbHNlIH07CisgICAg
V2ViS2l0RWRpdG9yU3RhdGUqIG1fZWRpdG9yU3RhdGUgeyBudWxscHRyIH07CiB9OwogCiBzdGF0
aWMgY29uc3QgY2hhciogc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCA9CkBAIC0xODIsOSArMjQ5LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZShF
ZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5F
eGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwogICAg
IGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJ
VElOR19DT01NQU5EX1BBU1RFX0FTX1BMQUlOX1RFWFQpKTsKIAotICAgIHRlc3QtPmNvcHlDbGlw
Ym9hcmQoKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2Fy
ZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7Ci0gICAgZ19hc3NlcnRfY21wc3Ry
KGNsaXBib2FyZFRleHQuZ2V0KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOworICAgIGdfYXNz
ZXJ0X2NtcHN0cih0ZXN0LT5jb3B5Q2xpcGJvYXJkKCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIp
OwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxl
KEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0yMTAsOSArMjc1LDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVFZGl0YWJsZShFZGl0b3JUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGUKICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVF
ZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAgICAgZ19hc3Nl
cnRfdHJ1ZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9QQVNURV9BU19QTEFJTl9URVhUKSk7CiAKLSAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7
Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9m
b3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlwYm9h
cmRUZXh0LmdldCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIodGVzdC0+Y29weUNsaXBib2FyZCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKIH0KIAog
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjI2LDE4ICsyODksMTIgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGUKIAogICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRp
bmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCi0gICAgdGVz
dC0+Y29weUNsaXBib2FyZCgpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChn
dGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKLQogICAgIC8v
IEluaXRpYWxseSBvbmx5IHRoZSBzdWJzcGFuIGlzIHNlbGVjdGVkLgotICAgIGdfYXNzZXJ0X2Nt
cHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodGVzdC0+Y29weUNsaXBib2FyZCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1
bGwiKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0
LT5tX3dlYlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCk7Ci0gICAgdGVz
dC0+Y29weUNsaXBib2FyZCgpOwotICAgIGNsaXBib2FyZFRleHQucmVzZXQoZ3RrX2NsaXBib2Fy
ZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7Ci0KICAgICAvLyBUaGUgbWFpbnNw
YW4gc2hvdWxkIGJlIHNlbGVjdGVkIGFmdGVyIGNhbGxpbmcgU0VMRUNUX0FMTC4KLSAgICBnX2Fz
c2VydF9jbXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJBbGwgd29yayBhbmQgbm8gcGxh
eSBtYWtlIEphY2sgYSBkdWxsIGJveS4iKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+Y29w
eUNsaXBib2FyZCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwg
Ym95LiIpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRh
YmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0yNTUsMTggKzMxMiwxMiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRhYmxlKEVkaXRvclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4
ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsK
IAotICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBi
b2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7
Ci0KICAgICAvLyBJbml0aWFsbHkgb25seSB0aGUgc3Vic3BhbiBpcyBzZWxlY3RlZC4KLSAgICBn
X2Fzc2VydF9jbXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxs
Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPmNvcHlDbGlwYm9hcmQoKSwgPT0sICJtYWtl
IEphY2sgYSBkdWxsIik7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwp
OwotICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBjbGlwYm9hcmRUZXh0LnJlc2V0KGd0
a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwotCiAgICAgLy8g
VGhlIG1haW5zcGFuIHNob3VsZCBiZSBzZWxlY3RlZCBhZnRlciBjYWxsaW5nIFNFTEVDVF9BTEwu
Ci0gICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0KCksID09LCAiQWxsIHdvcmsg
YW5kIG5vIHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3kuIik7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPmNvcHlDbGlwYm9hcmQoKSwgPT0sICJBbGwgd29yayBhbmQgbm8gcGxheSBtYWtlIEph
Y2sgYSBkdWxsIGJveS4iKTsKIH0KIAogc3RhdGljIHZvaWQgbG9hZENvbnRlbnRzQW5kVHJ5VG9D
dXRTZWxlY3Rpb24oRWRpdG9yVGVzdCogdGVzdCwgYm9vbCBjb250ZW50RWRpdGFibGUpCkBAIC0y
ODYsOCArMzM3LDcgQEAgc3RhdGljIHZvaWQgbG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxlY3Rp
b24oRWRpdG9yVGVzdCogdGVzdCwgYm9vbCBjb250ZW50RWRpdGEKICAgICB0ZXN0LT5mbHVzaEVk
aXRvclN0YXRlKCk7CiAKICAgICAvLyBDdXQgdGhlIHNlbGVjdGlvbiB0byB0aGUgY2xpcGJvYXJk
IHRvIHNlZSBpZiB0aGUgdmlldyBpcyBpbmRlZWQgZWRpdGFibGUuCi0gICAgR1VuaXF1ZVB0cjxj
aGFyPiBjbGlwYm9hcmRUZXh0KHRlc3QtPmN1dFNlbGVjdGlvbigpKTsKLSAgICBnX2Fzc2VydF9j
bXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxsIik7CisgICAg
Z19hc3NlcnRfY21wc3RyKHRlc3QtPmN1dFNlbGVjdGlvbigpLCA9PSwgIm1ha2UgSmFjayBhIGR1
bGwiKTsKIAogICAgIC8vIFJlc2V0IHRoZSBlZGl0YWJsZSBmb3IgbmV4dCB0ZXN0LgogICAgIHRl
c3QtPnNldEVkaXRhYmxlKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9UZXN0TWFpbi5oCmluZGV4IGUwZjZjZWE5NjEzNC4uMTQ0NTMxMWY2Zjg2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKQEAgLTEz
OCw3ICsxMzgsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAid2Vic2l0ZS1kYXRhLW1hbmFnZXIi
LCB3ZWJzaXRlRGF0YU1hbmFnZXIuZ2V0KCksCiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAg
ICAgInByb2Nlc3Mtc3dhcC1vbi1jcm9zcy1zaXRlLW5hdmlnYXRpb24tZW5hYmxlZCIsIFRSVUUs
CisjaWYgIVVTRShHVEs0KQogICAgICAgICAgICAgInVzZS1zeXN0ZW0tYXBwZWFyYW5jZS1mb3It
c2Nyb2xsYmFycyIsIEZBTFNFLAorI2VuZGlmCiAjZW5kaWYKICAgICAgICAgICAgIG51bGxwdHIp
KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QobV93ZWJDb250ZXh0LmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAppbmRleCAwM2NmOTA0
ODFiNTcuLjUxYmYzOGExMWU2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwCkBAIC0yOCw4ICsyOCwx
MyBAQAogCiB2b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9ybURlc3Ryb3koKQogeworI2lmIFVTRShH
VEs0KQorICAgIGlmIChtX3BhcmVudFdpbmRvdykKKyAgICAgICAgZ3RrX3dpbmRvd19kZXN0cm95
KEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpKTsKKyNlbHNlCiAgICAgaWYgKG1fcGFyZW50V2lu
ZG93KQogICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9wYXJlbnRXaW5kb3cpOworI2VuZGlm
CiB9CiAKIHZvaWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlZpZXcoKQpAQCAt
NjUsMTEgKzcwLDE4IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmhpZGVWaWV3KCkKIHZvaWQgV2ViVmll
d1Rlc3Q6OnNob3dJbldpbmRvdyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAgZ19hc3Nl
cnRfbnVsbChtX3BhcmVudFdpbmRvdyk7CisjaWYgVVNFKEdUSzQpCisgICAgbV9wYXJlbnRXaW5k
b3cgPSBndGtfd2luZG93X25ldygpOworICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5E
T1cobV9wYXJlbnRXaW5kb3cpLCBHVEtfV0lER0VUKG1fd2ViVmlldykpOworI2Vsc2UKICAgICBt
X3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwotICAg
IGlmICh3aWR0aCAmJiBoZWlnaHQpCi0gICAgICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6
ZShHVEtfV0lORE9XKG1fcGFyZW50V2luZG93KSwgd2lkdGgsIGhlaWdodCk7CiAgICAgZ3RrX2Nv
bnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BhcmVudFdpbmRvdyksIEdUS19XSURHRVQobV93
ZWJWaWV3KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQobV93ZWJWaWV3KSk7Cisj
ZW5kaWYKKworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIGd0a193aW5kb3dfc2V0
X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKG1fcGFyZW50V2luZG93KSwgd2lkdGgsIGhlaWdodCk7
CisKICAgICBndGtfd2lkZ2V0X3Nob3cobV9wYXJlbnRXaW5kb3cpOwogCiAgICAgd2hpbGUgKGdf
bWFpbl9jb250ZXh0X3BlbmRpbmcobnVsbHB0cikpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2d0ay9QbGF0Zm9ybVV0aWxpdGllc0d0ay5jcHAKaW5kZXggM2ZhYzlkN2Q3ZmUyLi4zNzczZWUy
YjA3ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRpbGl0
aWVzR3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVV0aWxpdGll
c0d0ay5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgV0tVUkxSZWYgVVJMRm9yTm9uRXhpc3RlbnRSZXNv
dXJjZSgpCiAKIGJvb2wgaXNLZXlEb3duKFdLTmF0aXZlRXZlbnRQdHIgZXZlbnQpCiB7Ci0gICAg
cmV0dXJuIGV2ZW50LT50eXBlID09IEdES19LRVlfUFJFU1M7CisgICAgcmV0dXJuIGdka19ldmVu
dF9nZXRfZXZlbnRfdHlwZShjb25zdF9jYXN0PEdka0V2ZW50Kj4oZXZlbnQpKSA9PSBHREtfS0VZ
X1BSRVNTOwogfQogCiB9IC8vIG5hbWVzcGFjZSBVdGlsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcAppbmRleCA1MjkzMjk2ZGM3NDguLjViM2VjNmZl
M2EyOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3
R3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsu
Y3BwCkBAIC02MiwxNSArNjIsMjQgQEAgUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXco
V0tQYWdlUmVmIHJlbGF0ZWRQYWdlKQogCiBQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZp
ZXcoKQogeworI2lmIFVTRShHVEs0KQorICAgIGd0a193aW5kb3dfZGVzdHJveShHVEtfV0lORE9X
KG1fd2luZG93KSk7CisjZWxzZQogICAgIGd0a193aWRnZXRfZGVzdHJveShtX3dpbmRvdyk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUoV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQogewotICAgIG1fd2luZG93ID0gZ3RrX3dpbmRvd19u
ZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiAgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKGNvbmZp
Z3VyYXRpb24pOworI2lmIFVTRShHVEs0KQorICAgIG1fd2luZG93ID0gZ3RrX3dpbmRvd19uZXco
KTsKKyAgICBndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKG1fd2luZG93KSwgR1RLX1dJ
REdFVChtX3ZpZXcpKTsKKyNlbHNlCisgICAgbV93aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtf
V0lORE9XX1RPUExFVkVMKTsKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1f
d2luZG93KSwgR1RLX1dJREdFVChtX3ZpZXcpKTsKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJ
REdFVChtX3ZpZXcpKTsKKyNlbmRpZgogICAgIGd0a193aWRnZXRfc2hvdyhtX3dpbmRvdyk7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405557</attachid>
            <date>2020-07-30 01:27:52 -0700</date>
            <delta_ts>2020-07-30 01:27:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wkgtk4-api-tests.diff</filename>
            <type>text/plain</type>
            <size>53516</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4ZjI1ZGRhYjBkNDMuLjk4
ZTA3ZWFlNTRmZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA3LTE1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gRW5hYmxlIEFQSSB0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MzQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRyaWFuIFBlcmV6IGRlIENhc3Ryby4KKworICAgICAgICBCdWlsZCBBUEkgdGVz
dHMgZm9yIEdUSzQgdG9vLgorCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21h
a2U6CisKIDIwMjAtMDctMjkgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlh
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc1dQRS5jbWFrZSBhbmQg
TkVXUyBmb3IgdGhlIDIuMjkuMiByZWxlYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgxMWEyMDhmNzVlMS4uZTI4
OGM1YzI1YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA3LTE1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gRW5h
YmxlIEFQSSB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0MzQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWFuIFBlcmV6IGRlIENhc3Ry
by4KKworICAgICAgICBVc2UgYSBjdXN0b20gS2V5RXZlbnQgc3RydWN0IHRvIHBhc3MgdG8gdGhl
IElNIGZpbHRlciBhcyBhIGZha2UgR2RrRXZlbnQgdG8gYmUgYWJsZSB0byB0ZXN0IGlucHV0IG1l
dGhvZHMgd2l0aAorICAgICAgICBHVEs0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L0lucHV0TWV0aG9kRmlsdGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRN
ZXRob2RGaWx0ZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnB1dE1ldGhvZEZpbHRlcjo6
cGxhdGZvcm1FdmVudEtleUlzS2V5UHJlc3MgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpJbnB1
dE1ldGhvZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzOjpE
cmF3aW5nTW9uaXRvcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0b3I6OnN0b3ApOgorCiAyMDIwLTA3LTI5
ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgSGln
aGxpZ2h0IGNvbG9yIGRvZXMgbm90IHN3aXRjaCBhZnRlciBiZWluZyBzZXQgaXQgc3lzdGVtIHBy
ZWZlcmVuY2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SW5wdXRNZXRob2RGaWx0ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lu
cHV0TWV0aG9kRmlsdGVyLmgKaW5kZXggNzBhN2QwYzA2YmVjLi4zM2E0NWJjYmZmMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0
ZXIuaApAQCAtMTEyLDYgKzExMiw5IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IHsKICAgICAgICAg
Ym9vbCBpc0FjdGl2ZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgcHJlZWRpdENoYW5nZWQgeyBm
YWxzZSB9OworI2lmIFBMQVRGT1JNKEdUSykgJiYgVVNFKEdUSzQpCisgICAgICAgIGJvb2wgaXNG
YWtlS2V5RXZlbnRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKKyNlbmRpZgogICAgIH0gbV9maWx0ZXJp
bmdDb250ZXh0OwogCiAgICAgU3RyaW5nIG1fY29tcG9zaXRpb25SZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0lucHV0TWV0aG9kRmlsdGVyR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvSW5wdXRNZXRob2RGaWx0ZXJHdGsu
Y3BwCmluZGV4IDRjZTY2NjNiYTc0Yi4uN2FiNGJiNjkzYmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0lucHV0TWV0aG9kRmlsdGVyR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0lucHV0TWV0aG9kRmlsdGVyR3RrLmNwcApA
QCAtMjAsMTAgKzIwLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5wdXRN
ZXRob2RGaWx0ZXIuaCIKIAorI2luY2x1ZGUgIldlYktpdElucHV0TWV0aG9kQ29udGV4dEltcGxH
dGsuaCIKICNpbmNsdWRlICJXZWJLaXRJbnB1dE1ldGhvZENvbnRleHRQcml2YXRlLmgiCisjaW5j
bHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5hbC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR1Vu
aXF1ZVB0ckd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPGdk
ay9nZGsuaD4KKyNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTM5LDYgKzQyLDEwIEBAIEludFJlY3Qg
SW5wdXRNZXRob2RGaWx0ZXI6OnBsYXRmb3JtVHJhbnNmb3JtQ3Vyc29yUmVjdFRvVmlld0Nvb3Jk
aW5hdGVzKGNvbnN0IEluCiAKIGJvb2wgSW5wdXRNZXRob2RGaWx0ZXI6OnBsYXRmb3JtRXZlbnRL
ZXlJc0tleVByZXNzKFBsYXRmb3JtRXZlbnRLZXkqIGV2ZW50KSBjb25zdAogeworI2lmIFVTRShH
VEs0KQorICAgIGlmIChVTkxJS0VMWShtX2ZpbHRlcmluZ0NvbnRleHQuaXNGYWtlS2V5RXZlbnRG
b3JUZXN0aW5nKSkKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8S2V5RXZlbnQqPihl
dmVudCktPnR5cGUgPT0gR0RLX0tFWV9QUkVTUzsKKyNlbmRpZgogICAgIHJldHVybiBnZGtfZXZl
bnRfZ2V0X2V2ZW50X3R5cGUoZXZlbnQpID09IEdES19LRVlfUFJFU1M7CiB9CiAKQEAgLTQ3LDcg
KzU0LDE3IEBAIElucHV0TWV0aG9kRmlsdGVyOjpGaWx0ZXJSZXN1bHQgSW5wdXRNZXRob2RGaWx0
ZXI6OmZpbHRlcktleUV2ZW50KHVuc2lnbmVkIHR5cGUsCiAgICAgaWYgKCFpc0VuYWJsZWQoKSB8
fCAhbV9jb250ZXh0KQogICAgICAgICByZXR1cm4geyB9OwogCi0jaWYgIVVTRShHVEs0KQorI2lm
IFVTRShHVEs0KQorICAgIGlmIChXRUJLSVRfSVNfSU5QVVRfTUVUSE9EX0NPTlRFWFRfSU1QTF9H
VEsobV9jb250ZXh0LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIEluIEdU
SzQgd2UgY2FuJ3QgY3JlYXRlIEdka0V2ZW50cywgc28gaGVyZSB3ZSBjcmVhdGUgYSBjdXN0b20g
S2V5RXZlbnQgc3RydWN0IHRoYXQgaXMgcGFzc2VkCisgICAgLy8gYXMgYSBHZGtFdmVudCB0byB0
aGUgZmlsdGVyLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGVzdHMsIGFuZCB0ZXN0cyBrbm93
IHRoZXkgYXJlIHJlY2VpdmluZworICAgIC8vIGEgS2V5RXZlbnQgc3RydWN0IGluc3RlYWQgb2Yg
YW4gYWN0dWFsIEdka0V2ZW50LgorICAgIFNldEZvclNjb3BlPGJvb2w+IGlzRmFrZUtleUV2ZW50
Rm9yVGVzdGluZyhtX2ZpbHRlcmluZ0NvbnRleHQuaXNGYWtlS2V5RXZlbnRGb3JUZXN0aW5nLCB0
cnVlKTsKKyAgICBLZXlFdmVudCBldmVudCB7IHR5cGUsIGtleXZhbCwgbW9kaWZpZXJzIH07Cisg
ICAgcmV0dXJuIGZpbHRlcktleUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPigmZXZl
bnQpKTsKKyNlbHNlCiAgICAgYXV0byogd2ViVmlldyA9IHdlYmtpdElucHV0TWV0aG9kQ29udGV4
dEdldFdlYlZpZXcobV9jb250ZXh0LmdldCgpKTsKICAgICBBU1NFUlQod2ViVmlldyk7CiAKQEAg
LTYwLDggKzc3LDYgQEAgSW5wdXRNZXRob2RGaWx0ZXI6OkZpbHRlclJlc3VsdCBJbnB1dE1ldGhv
ZEZpbHRlcjo6ZmlsdGVyS2V5RXZlbnQodW5zaWduZWQgdHlwZSwKICAgICBldmVudC0+a2V5LnN0
YXRlID0gbW9kaWZpZXJzOwogICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGV2ZW50LmdldCgpLCBn
ZGtfc2VhdF9nZXRfa2V5Ym9hcmQoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHRfc2VhdChndGtfd2lk
Z2V0X2dldF9kaXNwbGF5KEdUS19XSURHRVQod2ViVmlldykpKSkpOwogICAgIHJldHVybiBmaWx0
ZXJLZXlFdmVudChldmVudC5nZXQoKSk7Ci0jZWxzZQotICAgIHJldHVybiB7IH07CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRX
ZWJWaWV3QmFzZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlSW50ZXJuYWwuaAppbmRleCBlZDQ5ZDU4MmM3MmIuLmI2Njk1MTg2Mjgx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJW
aWV3QmFzZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZUludGVybmFsLmgKQEAgLTI3LDYgKzI3LDEyIEBACiAKIHR5cGVkZWYg
c3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZSBXZWJLaXRXZWJWaWV3QmFzZTsKIAorc3RydWN0IEtl
eUV2ZW50IHsKKyAgICB1bnNpZ25lZCB0eXBlIHsgMCB9OworICAgIHVuc2lnbmVkIGtleXZhbCB7
IDAgfTsKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgeyAwIH07Cit9OworCiBlbnVtIGNsYXNzIE1v
dXNlRXZlbnRUeXBlIHsgUHJlc3MsIFJlbGVhc2UsIE1vdGlvbiB9Owogdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZVN5bnRoZXNpemVNb3VzZUV2ZW50KFdlYktpdFdlYlZpZXdCYXNlKiwgTW91c2VFdmVu
dFR5cGUgdHlwZSwgdW5zaWduZWQgYnV0dG9uLCB1bnNpZ25lZCBzaG9ydCBidXR0b25zLCBpbnQg
eCwgaW50IHksIHVuc2lnbmVkIG1vZGlmaWVycywgaW50IGNsaWNrQ291bnQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvRHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3Mu
Y3BwCmluZGV4IDZiYmQxY2FiZDI3YS4uNjFlM2Y2MDUwZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29y
ZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0RyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAt
NDExLDggKzQxMSwxMiBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNz
OjpEcmF3aW5nTW9uaXRvcjo6c3RhcnQoV1RGOjpGdW5jdGlvbjx2bwogICAgIG1fY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKTsKICNpZiBQTEFURk9STShHVEspCiAgICAgZ3RrX3dpZGdldF9x
dWV1ZV9kcmF3KG1fd2ViUGFnZS52aWV3V2lkZ2V0KCkpOworI2lmIFVTRShHVEs0KQorICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KDE2X21zKTsKKyNlbHNlCiAgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKG1fd2ViUGFnZS52aWV3V2lkZ2V0KCksICJkcmF3IiwgcmVpbnRlcnByZXRfY2FzdDxH
Q2FsbGJhY2s+KHdlYlZpZXdEcmF3Q2FsbGJhY2spLCB0aGlzKTsKICAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdCgxMDBfbXMpOworI2VuZGlmCiAjZWxzZQogICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KDBfcyk7CiAjZW5kaWYKQEAgLTQyMSw3ICs0MjUsNyBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzOjpEcmF3aW5nTW9uaXRvcjo6c3RhcnQoV1RGOjpGdW5jdGlvbjx2
bwogdm9pZCBEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljczo6RHJhd2luZ01vbml0
b3I6OnN0b3AoKQogewogICAgIG1fdGltZXIuc3RvcCgpOwotI2lmIFBMQVRGT1JNKEdUSykKKyNp
ZiBQTEFURk9STShHVEspICYmICFVU0UoR1RLNCkKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNj
b25uZWN0X2J5X2Z1bmMobV93ZWJQYWdlLnZpZXdXaWRnZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxn
cG9pbnRlcj4od2ViVmlld0RyYXdDYWxsYmFjayksIHRoaXMpOwogI2VuZGlmCiAgICAgbV9zdGFy
dFRpbWUgPSBNb25vdG9uaWNUaW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9u
c0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGQ1OGM3ZmMz
ZmZmYi4uMjZjZjU2ZWU0NjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5j
bWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMTIwLDExICsxMjAs
NyBAQCBXRUJLSVRfT1BUSU9OX0RFUEVORChVU0VfV1BFX1JFTkRFUkVSIEVOQUJMRV9XQVlMQU5E
X1RBUkdFVCkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKEVOQUJMRV9ERVZFTE9QRVJfTU9ERSAk
e0RFVkVMT1BFUl9NT0RFfSkKIGlmIChERVZFTE9QRVJfTU9ERSkKICAgICBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfTUlOSUJST1dTRVIgUFVCTElDIE9OKQotICAgIGlm
IChVU0VfR1RLNCkKLSAgICAgICAgV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX0FQSV9URVNUUyBQUklWQVRFIE9GRikKLSAgICBlbHNlICgpCi0gICAgICAgIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9BUElfVEVTVFMgUFJJVkFURSBPTikKLSAg
ICBlbmRpZiAoKQorICAgIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9B
UElfVEVTVFMgUFJJVkFURSBPTikKIGVsc2UgKCkKICAgICBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfTUlOSUJST1dTRVIgUFVCTElDIE9GRikKICAgICBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQVBJX1RFU1RTIFBSSVZBVEUgT0ZGKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGIzOGJkOGJk
MTJhNy4uYjJiNTJjMjRhYjI3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMjAtMDctMTUgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEs0XSBFbmFibGUgQVBJ
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTQzNDQKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvLgorCisg
ICAgICAgIFBvcnQgQVBJIHRlc3RzIHRvIEdUSzQuIENvbnRleHQgbWVudSBhbmQgb3B0aW9uIG1l
bnUgdGVzdHMgYXJlIHN0aWxsIGRpc2FibGVkIGZvciBHVEs0IGJlY2F1c2Ugd2UgcGxhbiB0byBj
aGFuZ2UKKyAgICAgICAgdGhlIEFQSSBmb3IgR1RLNCBpbiB0aG9zZSBjYXNlcy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcDoKKyAg
ICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwOgorICAgICAgICAod2Via2l0SW5wdXRNZXRo
b2RDb250ZXh0TW9ja0ZpbHRlcktleUV2ZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RPcHRpb25NZW51LmNwcDoKKyAgICAgICAgKGJlZm9y
ZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNs
aWVudC5jcHA6CisgICAgICAgIChjaGVja01pbWVUeXBlRm9yRmlsdGVyKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAg
ICAgICAodGVzdFdlYkV4dGVuc2lvbklucHV0RWxlbWVudElzVXNlckVkaXRlZCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHA6
CisgICAgICAgICh0ZXN0V2ViS2l0U2V0dGluZ3MpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQWNjZXNzaWJpbGl0eVRlc3RTZXJ2ZXIuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0luc3BlY3RvclRlc3RTZXJ2ZXIu
Y3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudVBvcHVs
YXRlTWVudSk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHA6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0b3IuY3BwOgorICAgICAgICAoQ2xp
cGJvYXJkOjpDbGlwYm9hcmQpOgorICAgICAgICAoQ2xpcGJvYXJkOjpjbGVhcik6CisgICAgICAg
IChDbGlwYm9hcmQ6OmNvbnRhaW5zVGV4dCBjb25zdCk6CisgICAgICAgIChDbGlwYm9hcmQ6Ondh
aXRGb3JUZXh0KToKKyAgICAgICAgKENsaXBib2FyZDo6cmVhZFRleHQpOgorICAgICAgICAodGVz
dFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRp
dG9yU2VsZWN0QWxsTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JTZWxl
Y3RBbGxFZGl0YWJsZSk6CisgICAgICAgIChsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlv
bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaDoK
KyAgICAgICAgKFRlc3Q6OlRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHA6CisgICAgICAgIChXZWJWaWV3VGVzdDo6cGxh
dGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3cpOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRpbGl0aWVzR3RrLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmlzS2V5RG93bik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUpOgorCiAyMDIwLTA3LTI5ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2NyaXB0IHRvIGhlbHAgdXMg
Y291bnQgdXNlcyBvZiBub24taW5jbHVzaXZlIHRlcm1zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggYjBmMWI4
NTAyOGFhLi5hMjE3MjliZDJkMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKQEAgLTgwNyw3ICs4MDcsMTAgQEAg
dm9pZCBiZWZvcmVBbGwoKQogICAgIERvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAibWlt
ZS10eXBlIiwgdGVzdERvd25sb2FkTUlNRVR5cGUpOwogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
a2V5U3Ryb2tlIGluIFdQRS4KICNpZiBQTEFURk9STShHVEspCisjaWYgIVVTRShHVEs0KQorICAg
IC8vIEZJWE1FOiBSZXdvcmsgY29udGV4dCBtZW51IEFQSSBpbiBHVEs0IHRvIG5vdCBleHBvc2Ug
R2RrRXZlbnQuCiAgICAgV2ViVmlld0Rvd25sb2FkVGVzdDo6YWRkKCJEb3dubG9hZHMiLCAiY29u
dGV4LW1lbnUtZG93bmxvYWQtYWN0aW9ucyIsIHRlc3RDb250ZXh0TWVudURvd25sb2FkQWN0aW9u
cyk7CisjZW5kaWYKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vdXNlIGNsaWNrIGluIFdQRS4K
ICAgICBXZWJWaWV3RG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJibG9iLWRvd25sb2Fk
IiwgdGVzdEJsb2JEb3dubG9hZCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RDb250ZXh0LmNw
cAppbmRleCAzZDFiNTgyYjY0OTguLjNiMTBiZDdkM2FjYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RJbnB1dE1ldGhvZENvbnRleHQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0SW5wdXRNZXRob2RD
b250ZXh0LmNwcApAQCAtMjQsNyArMjQsMTMgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CiAKICNpZiBQTEFURk9STShHVEspCisjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJzaW9u
aW5nLmg+CisjaWYgVVNFKEdUSzQpCisjaW5jbHVkZSAiV2ViS2l0V2ViVmlld0Jhc2VJbnRlcm5h
bC5oIgordXNpbmcgUGxhdGZvcm1FdmVudEtleSA9IEdka0V2ZW50OworI2Vsc2UKIHVzaW5nIFBs
YXRmb3JtRXZlbnRLZXkgPSBHZGtFdmVudEtleTsKKyNlbmRpZgogI2RlZmluZSBLRVkoeCkgR0RL
X0tFWV8jI3gKICNkZWZpbmUgQ09OVFJPTF9NQVNLIEdES19DT05UUk9MX01BU0sKICNkZWZpbmUg
U0hJRlRfTUFTSyBHREtfU0hJRlRfTUFTSwpAQCAtOTIsMTEgKzk4LDE4IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJraXRJbnB1dE1ldGhvZENvbnRleHRNb2NrRmlsdGVyS2V5RXZlbnQoV2ViS2l0SW5w
dXRNZXRob2RDb250CiAgICAgICAgIHJldHVybiBGQUxTRTsKIAogI2lmIFBMQVRGT1JNKEdUSykK
KyNpZiBVU0UoR1RLNCkKKyAgICBhdXRvKiBldmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8S2V5RXZl
bnQqPihrZXlFdmVudCk7CisgICAgdW5zaWduZWQga2V5dmFsID0gZXZlbnQtPmtleXZhbDsKKyAg
ICBhdXRvIHN0YXRlID0gc3RhdGljX2Nhc3Q8R2RrTW9kaWZpZXJUeXBlPihldmVudC0+bW9kaWZp
ZXJzKTsKKyAgICBib29sIGlzS2V5UHJlc3MgPSBldmVudC0+dHlwZSA9PSBHREtfS0VZX1BSRVNT
OworI2Vsc2UKICAgICBHZGtNb2RpZmllclR5cGUgc3RhdGU7CiAgICAgZ3VpbnQga2V5dmFsOwog
ICAgIGlmICghZ2RrX2V2ZW50X2dldF9zdGF0ZShyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4o
a2V5RXZlbnQpLCAmc3RhdGUpIHx8ICFnZGtfZXZlbnRfZ2V0X2tleXZhbChyZWludGVycHJldF9j
YXN0PEdka0V2ZW50Kj4oa2V5RXZlbnQpLCAma2V5dmFsKSkKICAgICAgICAgcmV0dXJuIEZBTFNF
OwogICAgIGJvb2wgaXNLZXlQcmVzcyA9IGdka19ldmVudF9nZXRfZXZlbnRfdHlwZShyZWludGVy
cHJldF9jYXN0PEdka0V2ZW50Kj4oa2V5RXZlbnQpKSA9PSBHREtfS0VZX1BSRVNTOworI2VuZGlm
CiAgICAgZ3VuaWNoYXIgY2hhcmFjdGVyID0gZ2RrX2tleXZhbF90b191bmljb2RlKGtleXZhbCk7
CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAgdWludDMyX3Qgc3RhdGUgPSBrZXlFdmVudC0+bW9k
aWZpZXJzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RNdWx0aXByb2Nlc3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RNdWx0aXByb2Nlc3MuY3BwCmluZGV4IDU1MmUzOTJlZjkyMC4uM2FhMTJlZjU0NGRl
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11
bHRpcHJvY2Vzcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RNdWx0aXByb2Nlc3MuY3BwCkBAIC05OSw3ICs5OSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IGF1dG8qIGNvbm5lY3Rpb24gPSBzX2RidXNDb25uZWN0aW9uUGFnZU1hcC5nZXQod2Via2l0X3dl
Yl92aWV3X2dldF9wYWdlX2lkKG1fd2ViVmlld3NbaW5kZXhdLmdldCgpKSk7CiAgICAgICAgIGdf
YXNzZXJ0X25vbm51bGwoY29ubmVjdGlvbik7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChjb25uZWN0aW9uLCAiY2xvc2VkIiwgR19DQUxMQkFDSyhnX21haW5fbG9vcF9xdWl0KSwg
bV9tYWluTG9vcCk7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGdfb2JqZWN0X3J1bl9kaXNwb3Nl
KEdfT0JKRUNUKG1fd2ViVmlld3NbaW5kZXhdLmdldCgpKSk7CisjZWxzZQogICAgICAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChtX3dlYlZpZXdzW2luZGV4XS5nZXQoKSkpOworI2Vu
ZGlmCiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKICAgICB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3B0
aW9uTWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9w
dGlvbk1lbnUuY3BwCmluZGV4IDdiY2M4OTQ1MzY5Ni4uN2QzZGJiOGVhOTVkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE9wdGlvbk1lbnUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0T3B0aW9uTWVu
dS5jcHAKQEAgLTMwNCwxMCArMzA0LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25NZW51U2Vs
ZWN0KE9wdGlvbk1lbnVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiB2b2lkIGJlZm9yZUFs
bCgpCiB7CisjaWYgIVBMQVRGT1JNKEdUSykgfHwgIVVTRShHVEs0KQorICAgIC8vIEZJWE1FOiBS
ZXdvcmsgb3B0aW9uIG1lbnUgQVBJIGluIEdUSzQgdG8gbm90IGV4cG9zZSBHZGtFdmVudC4KICAg
ICBPcHRpb25NZW51VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm9wdGlvbi1tZW51LXNpbXBs
ZSIsIHRlc3RPcHRpb25NZW51U2ltcGxlKTsKICAgICBPcHRpb25NZW51VGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgIm9wdGlvbi1tZW51LWdyb3VwcyIsIHRlc3RPcHRpb25NZW51R3JvdXBzKTsK
ICAgICBPcHRpb25NZW51VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIm9wdGlvbi1tZW51LWFj
dGl2YXRlIiwgdGVzdE9wdGlvbk1lbnVBY3RpdmF0ZSk7CiAgICAgT3B0aW9uTWVudVRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJvcHRpb24tbWVudS1zZWxlY3QiLCB0ZXN0T3B0aW9uTWVudVNl
bGVjdCk7CisjZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IDY2NmJl
YTU3MGMwOC4uYzJiZjdlYWU0YmI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAtMzE3LDggKzMxNyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENyZWF0ZU5ld1dlYlZpZXdzSW5XaW5kb3dzV2l0aERlZmF1bHRT
aXplKGludCB3aWR0aCA9IDgwMCwgaW50IGhlaWdodCA9IDYwMCkKICAgICB7CiAgICAgICAgIG1f
c2hvdWxkQ3JlYXRlV2ViVmlld3NJbk5ld1dpbmRvd3NBdXRvbWF0aWNhbGx5ID0gdHJ1ZTsKLSAg
ICAgICAgbV9EZWZhdWx0R2VvbWV0cnlOZXdXaW5kb3dzLndpZHRoID0gd2lkdGg7Ci0gICAgICAg
IG1fRGVmYXVsdEdlb21ldHJ5TmV3V2luZG93cy5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIG1f
ZGVmYXVsdEdlb21ldHJ5TmV3V2luZG93cy53aWR0aCA9IHdpZHRoOworICAgICAgICBtX2RlZmF1
bHRHZW9tZXRyeU5ld1dpbmRvd3MuaGVpZ2h0ID0gaGVpZ2h0OwogICAgIH0KICNlbmRpZgogCkBA
IC0zMzgsOCArMzM4LDggQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAga2V5
U3Ryb2tlKEdES19LRVlfYSk7CiAgICAgICAgIGtleVN0cm9rZShHREtfS0VZX2IpOwotICAgICAg
ICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCi0gICAgICAgICAgICBndGtfbWFpbl9pdGVy
YXRpb24oKTsKKyAgICAgICAgd2hpbGUgKGdfbWFpbl9jb250ZXh0X3BlbmRpbmcobnVsbHB0cikp
CisgICAgICAgICAgICBnX21haW5fY29udGV4dF9pdGVyYXRpb24obnVsbHB0ciwgVFJVRSk7CiAj
ZW5kaWYKICAgICB9CiAKQEAgLTM2NywxMCArMzY3LDE1IEBAIHB1YmxpYzoKICNpZiBQTEFURk9S
TShHVEspCiAgICAgICAgIGlmIChtX3Nob3VsZENyZWF0ZVdlYlZpZXdzSW5OZXdXaW5kb3dzQXV0
b21hdGljYWxseSkgewogICAgICAgICAgICAgZ19hc3NlcnRfbnVsbChtX3BhcmVudFdpbmRvdyk7
CisjaWYgVVNFKEdUSzQpCisgICAgICAgICAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3df
bmV3KCk7CisgICAgICAgICAgICBndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKG1fcGFy
ZW50V2luZG93KSwgR1RLX1dJREdFVChuZXdXZWJWaWV3KSk7CisjZWxzZQogICAgICAgICAgICAg
bV9wYXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKLSAg
ICAgICAgICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZShHVEtfV0lORE9XKG1fcGFyZW50
V2luZG93KSwgbV9EZWZhdWx0R2VvbWV0cnlOZXdXaW5kb3dzLndpZHRoLCBtX0RlZmF1bHRHZW9t
ZXRyeU5ld1dpbmRvd3MuaGVpZ2h0KTsKICAgICAgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdU
S19DT05UQUlORVIobV9wYXJlbnRXaW5kb3cpLCBHVEtfV0lER0VUKG5ld1dlYlZpZXcpKTsKICAg
ICAgICAgICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG5ld1dlYlZpZXcpKTsKKyNlbmRp
ZgorICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1cobV9w
YXJlbnRXaW5kb3cpLCBtX2RlZmF1bHRHZW9tZXRyeU5ld1dpbmRvd3Mud2lkdGgsIG1fZGVmYXVs
dEdlb21ldHJ5TmV3V2luZG93cy5oZWlnaHQpOwogICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93
KG1fcGFyZW50V2luZG93KTsKICAgICAgICAgfQogI2VuZGlmCkBAIC00MTYsNyArNDIxLDcgQEAg
cHVibGljOgogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGJvb2wgbV9zaG91bGRDcmVhdGVXZWJW
aWV3c0luTmV3V2luZG93c0F1dG9tYXRpY2FsbHkgeyBmYWxzZSB9OwotICAgIGNhaXJvX3JlY3Rh
bmdsZV9pbnRfdCBtX0RlZmF1bHRHZW9tZXRyeU5ld1dpbmRvd3M7CisgICAgY2Fpcm9fcmVjdGFu
Z2xlX2ludF90IG1fZGVmYXVsdEdlb21ldHJ5TmV3V2luZG93czsKICNlbmRpZgogfTsKIApAQCAt
NTIxLDEwICs1MjYsMTYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVOYXZpZ2F0aW9u
RGF0YShDcmVhdGVOYXZpZ2F0aW9uRGF0YVRlc3QqIHRlc3QsIGdjb24KICNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgZ2Jvb2xlYW4gY2hlY2tNaW1lVHlwZUZvckZpbHRlcihHdGtGaWxlRmlsdGVy
KiBmaWx0ZXIsIGNvbnN0IGdjaGFyKiBtaW1lVHlwZSkKIHsKKyNpZiBVU0UoR1RLNCkKKyAgICBH
UmVmUHRyPEdGaWxlSW5mbz4gZmlsdGVySW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfaW5mb19uZXco
KSk7CisgICAgZ19maWxlX2luZm9fc2V0X2NvbnRlbnRfdHlwZShmaWx0ZXJJbmZvLmdldCgpLCBt
aW1lVHlwZSk7CisgICAgcmV0dXJuIGd0a19maWx0ZXJfbWF0Y2goR1RLX0ZJTFRFUihmaWx0ZXIp
LCBmaWx0ZXJJbmZvLmdldCgpKTsKKyNlbHNlCiAgICAgR3RrRmlsZUZpbHRlckluZm8gZmlsdGVy
SW5mbzsKICAgICBmaWx0ZXJJbmZvLmNvbnRhaW5zID0gR1RLX0ZJTEVfRklMVEVSX01JTUVfVFlQ
RTsKICAgICBmaWx0ZXJJbmZvLm1pbWVfdHlwZSA9IG1pbWVUeXBlOwogICAgIHJldHVybiBndGtf
ZmlsZV9maWx0ZXJfZmlsdGVyKGZpbHRlciwgJmZpbHRlckluZm8pOworI2VuZGlmCiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggNWY3Y2ZkOGIyM2Y0Li43OTc0ZmIxMWFhZTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtODMsOCArODMsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViRXh0ZW5zaW9uSW5wdXRFbGVtZW50SXNVc2VyRWRpdGVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3RwbwogICAgIGdfYXNzZXJ0X2ZhbHNlKGlucHV0RWxlbWVudElzVXNlckVkaXRlZChwcm94
eS5nZXQoKSwgcGFnZUlELCAiaW5wdXQiKSk7CiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdh
aXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQnKS5mb2N1cygp
IiwgbnVsbHB0cik7CiAgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfYSk7Ci0gICAgd2hpbGUg
KGd0a19ldmVudHNfcGVuZGluZygpKQotICAgICAgICBndGtfbWFpbl9pdGVyYXRpb24oKTsKKyAg
ICB3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhudWxscHRyKSkKKyAgICAgICAgZ19tYWlu
X2NvbnRleHRfaXRlcmF0aW9uKG51bGxwdHIsIFRSVUUpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
cmVzdWx0U3RyaW5nOwogICAgIGRvIHsKICAgICAgICAgYXV0byogcmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
aW5wdXQnKS52YWx1ZSIsIG51bGxwdHIpOwpAQCAtOTUsOCArOTUsOCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViRXh0ZW5zaW9uSW5wdXRFbGVtZW50SXNVc2VyRWRpdGVkKFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3RwbwogICAgIGdfYXNzZXJ0X2ZhbHNlKGlucHV0RWxlbWVudElzVXNlckVkaXRlZChw
cm94eS5nZXQoKSwgcGFnZUlELCAidGV4dGFyZWEiKSk7CiAgICAgdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGFyZWEn
KS5mb2N1cygpIiwgbnVsbHB0cik7CiAgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfYik7Ci0g
ICAgd2hpbGUgKGd0a19ldmVudHNfcGVuZGluZygpKQotICAgICAgICBndGtfbWFpbl9pdGVyYXRp
b24oKTsKKyAgICB3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyhudWxscHRyKSkKKyAgICAg
ICAgZ19tYWluX2NvbnRleHRfaXRlcmF0aW9uKG51bGxwdHIsIFRSVUUpOwogICAgIGRvIHsKICAg
ICAgICAgYXV0byogcmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dGFyZWEnKS52YWx1ZSIsIG51bGxwdHIp
OwogICAgICAgICByZXN1bHRTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcocmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGRhMDQ3MjVj
ZGI4My4uMzEyNzBiMjYyNWFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtMzQ5LDYgKzM0
OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX2Fzc2VydF9jbXBzdHIobnVsbHB0ciwgPT0sIHdlYmtpdF9zZXR0aW5nc19nZXRf
bWVkaWFfY29udGVudF90eXBlc19yZXF1aXJpbmdfaGFyZHdhcmVfc3VwcG9ydChzZXR0aW5ncykp
OwogCiAjaWYgUExBVEZPUk0oR1RLKQorI2lmICFVU0UoR1RLNCkKICAgICAvLyBPbmRlbWFuZCBp
cyB0aGUgZGVmYXVsdCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gcG9saWN5LgogICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5
KHNldHRpbmdzKSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09OX0RF
TUFORCk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9s
aWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BPTElDWV9ORVZFUik7
CkBAIC0zNTcsNiArMzU4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3Qq
LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dl
dF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzKSwgPT0sIFdFQktJVF9IQVJE
V0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX0FMV0FZUyk7CiAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdBUkVf
QUNDRUxFUkFUSU9OX1BPTElDWV9PTl9ERU1BTkQpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzKSwg
PT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09OX0RFTUFORCk7CisjZW5k
aWYKIAogICAgIC8vIEJhY2stZm9yd2FyZCBuYXZpZ2F0aW9uIGdlc3R1cmUgaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdAogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2JhY2tfZm9yd2FyZF9uYXZpZ2F0aW9uX2dlc3R1cmVzKHNldHRpbmdzKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcAppbmRleCBhYzcwODQ4OWM5ZjMuLmY1MjI2MTY4NzZhMiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwCkBAIC00NDQsOSArNDQ0LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVh
biBsZWF2ZUZ1bGxTY3JlZW5JZGxlKEZ1bGxTY3JlZW5DbGllbnRUZXN0KiB0ZXN0KQogICAgIHsK
LSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBrZXkgc3Ryb2tlcyBpbiBXUEUKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgICAgIHRlc3QtPmtleVN0cm9rZShHREtfS0VZX0VzY2FwZSk7CisjZWxz
ZQorICAgICAgICB0ZXN0LT5rZXlTdHJva2UoV1BFX0tFWV9Fc2NhcGUpOwogI2VuZGlmCiAgICAg
ICAgIHJldHVybiBGQUxTRTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9BY2Nlc3NpYmlsaXR5VGVzdFNlcnZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BY2Nlc3NpYmlsaXR5VGVzdFNlcnZlci5jcHAKaW5k
ZXggMGIwYmE4YjFiNGJmLi5jODJhYWI4NDY5OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0FjY2Vzc2liaWxpdHlUZXN0U2VydmVyLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BY2Nlc3NpYmlsaXR5VGVzdFNlcnZl
ci5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lvbmlu
Zy5oPgogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dS
ZWZQdHIuaD4KIAogc3RhdGljIGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAi
PG5vZGU+IgpAQCAtNzAsMTEgKzcxLDE2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikKICAgICBndGtfaW5pdCgmYXJnYywgJmFyZ3YpOwogCiAgICAgR3RrV2lkZ2V0KiB3ZWJWaWV3
ID0gd2Via2l0X3dlYl92aWV3X25ldygpOwotCisjaWYgVVNFKEdUSzQpCisgICAgR3RrV2lkZ2V0
KiB3aW5kb3cgPSBndGtfd2luZG93X25ldygpOworICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdU
S19XSU5ET1cod2luZG93KSwgR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisjZWxzZQogICAgIEd0a1dp
ZGdldCogd2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7CiAgICAg
Z19zaWduYWxfY29ubmVjdCh3aW5kb3csICJkZWxldGUtZXZlbnQiLCBHX0NBTExCQUNLKGd0a19t
YWluX3F1aXQpLCBudWxscHRyKTsKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KHdpbmRvdyksIEdUS19XSURHRVQod2ViVmlldykpOwotICAgIGd0a193aWRnZXRfc2hvd19hbGwo
d2luZG93KTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisjZW5k
aWYKKyAgICBndGtfd2lkZ2V0X3Nob3cod2luZG93KTsKIAogICAgIGdfZGJ1c19jb25uZWN0aW9u
X25ld19mb3JfYWRkcmVzcyhhcmd2WzFdLCBHX0RCVVNfQ09OTkVDVElPTl9GTEFHU19BVVRIRU5U
SUNBVElPTl9DTElFTlQsIG51bGxwdHIsIG51bGxwdHIsCiAgICAgICAgIFtdKEdPYmplY3QqLCBH
QXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKQEAgLTg4LDUgKzk0LDEw
IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICAmaW50
ZXJmYWNlVmlydHVhbFRhYmxlLCB1c2VyRGF0YSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAg
IH0sIHdlYlZpZXcpOwogCisjaWYgVVNFKEdUSzQpCisgICAgR1JlZlB0cjxHTWFpbkxvb3A+IGxv
b3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3KG51bGxwdHIsIFRSVUUpKTsKKyAgICBnX21h
aW5fbG9vcF9ydW4obG9vcC5nZXQoKSk7CisjZWxzZQogICAgIGd0a19tYWluKCk7CisjZW5kaWYK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0luc3Bl
Y3RvclRlc3RTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
SW5zcGVjdG9yVGVzdFNlcnZlci5jcHAKaW5kZXggYmNjYzI5YzRmZjJkLi5mZTcwMTE1MWRmMzUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0luc3BlY3Rv
clRlc3RTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L0luc3BlY3RvclRlc3RTZXJ2ZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0d0a1ZlcnNpb25pbmcuaD4KICNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNp
bmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKIHsKQEAgLTQwLDYgKzQxLDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikKICAgICAgICAgIjxodG1sPjxib2R5PjxwPldlYktpdEdUSyBJbnNwZWN0b3IgVGVzdCBTZXJ2
ZXI8L3A+PC9ib2R5PjwvaHRtbD4iLAogICAgICAgICAiaHR0cDovLzEyNy4wLjAuMToyOTk5LyIp
OwogCisjaWYgVVNFKEdUSzQpCisgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2luZG93X25l
dygpOworICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cod2luZG93KSwgR1RLX1dJ
REdFVCh3ZWJWaWV3KSk7CisgICAgZ3RrX3dpZGdldF9zaG93KHdpbmRvdyk7CisKKyAgICBHUmVm
UHRyPEdNYWluTG9vcD4gbG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcobnVsbHB0ciwg
VFJVRSkpOworICAgIGdfbWFpbl9sb29wX3J1bihsb29wLmdldCgpKTsKKyNlbHNlCiAgICAgR3Rr
V2lkZ2V0KiB3aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKICAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIEdUS19XSURHRVQod2Vi
VmlldykpOwogICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKQEAgLTQ3LDQgKzU2LDUg
QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2luZG93LCAiZGVsZXRlLWV2ZW50IiwgR19DQUxMQkFDSyhndGtfbWFpbl9xdWl0KSwgMCk7CiAK
ICAgICBndGtfbWFpbigpOworI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcAppbmRleCA3YmQ5ZGRiZDdi
NGQuLjUxNWJjMDBkNmY3MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCkBAIC0yNiwzMCArMjYsNiBAQAogCiBz
dGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKIAotI2lmIFVTRShHVEs0KQotc3RydWN0
IExvb2t1cFdpZGdldHNEYXRhIHsKLSAgICB2b2lkICgqd2Fsa0NoaWxkcmVuKShHdGtDb250YWlu
ZXIqLCBHdGtDYWxsYmFjaywgdm9pZCopOwotICAgIEZ1bmN0aW9uPGJvb2woR3RrV2lkZ2V0Kik+
IHByZWRpY2F0ZTsKLSAgICBWZWN0b3I8R3RrV2lkZ2V0Kj4gcmVzdWx0OwotfTsKLQotc3RhdGlj
IHZvaWQgbG9va3VwV2lkZ2V0c1dhbGtDaGlsZChHdGtXaWRnZXQqIGNoaWxkLCB2b2lkKiB1c2Vy
ZGF0YSkKLXsKLSAgICBhdXRvJiBkYXRhID0gKnJlaW50ZXJwcmV0X2Nhc3Q8TG9va3VwV2lkZ2V0
c0RhdGEqPih1c2VyZGF0YSk7Ci0gICAgaWYgKGRhdGEucHJlZGljYXRlKGNoaWxkKSkKLSAgICAg
ICAgZGF0YS5yZXN1bHQuYXBwZW5kKGNoaWxkKTsKLSAgICBlbHNlIGlmIChHVEtfSVNfQ09OVEFJ
TkVSKGNoaWxkKSkKLSAgICAgICAgZGF0YS53YWxrQ2hpbGRyZW4oR1RLX0NPTlRBSU5FUihjaGls
ZCksIGxvb2t1cFdpZGdldHNXYWxrQ2hpbGQsIHVzZXJkYXRhKTsKLX0KLQotc3RhdGljIFZlY3Rv
cjxHdGtXaWRnZXQqPiBsb29rdXBXaWRnZXRzKEd0a1dpZGdldCogd2lkZ2V0LCBGdW5jdGlvbjxi
b29sKEd0a1dpZGdldCopPiYmIHByZWRpY2F0ZSwgYm9vbCBpbnRlcm5hbCA9IGZhbHNlKQotewot
ICAgIExvb2t1cFdpZGdldHNEYXRhIGRhdGEgPSB7aW50ZXJuYWwgPyBndGtfY29udGFpbmVyX2Zv
cmFsbCA6IGd0a19jb250YWluZXJfZm9yZWFjaCwgV1RGTW92ZShwcmVkaWNhdGUpfTsKLSAgICBs
b29rdXBXaWRnZXRzV2Fsa0NoaWxkKHdpZGdldCwgJmRhdGEpOwotICAgIHJldHVybiBXVEZNb3Zl
KGRhdGEucmVzdWx0KTsKLX0KLSNlbmRpZiAvLyBVU0UoR1RLNCkKLQogY2xhc3MgQ29udGV4dE1l
bnVUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgogICAgIGVudW0gQ29udGV4dE1l
bnVJdGVtU3RhdGVGbGFncyB7CkBAIC02MSw2ICszNyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNo
ZWNrQ29udGV4dE1lbnVFdmVudChHZGtFdmVudCogZXZlbnQpCiAgICAgewogICAgICAgICBnX2Fz
c2VydF9ub25udWxsKGV2ZW50KTsKKyNpZiAhVVNFKEdUSzQpCiAgICAgICAgIGdfYXNzZXJ0X2Nt
cGludChldmVudC0+dHlwZSwgPT0sIG1fZXhwZWN0ZWRFdmVudFR5cGUpOwogCiAgICAgICAgIHN3
aXRjaCAobV9leHBlY3RlZEV2ZW50VHlwZSkgewpAQCAtNzksNiArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwogICAg
ICAgICB9CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVD
YWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb250ZXh0TWVudSogY29udGV4
dE1lbnUsIEdka0V2ZW50KiBldmVudCwgV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3Vs
dCwgQ29udGV4dE1lbnVUZXN0KiB0ZXN0KQpAQCAtMTI2LDE4ICsxMDQsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAKICNpZiBVU0UoR1RLNCkKLSAgICAgICAgICAgIC8v
IFBvcG92ZXJzIGFyZSBpbnRlcm5hbCB0byB0aGUgR3RrQ29udGFpbmVyIHdoZXJlIHRoZSB3ZWJ2
aWV3IHJlc2lkZXMsCi0gICAgICAgICAgICAvLyBndGtfY29udGFpbmVyX2ZvcmFsbCgpIGlzIHRo
ZSBvbmx5IHdheSB0byBlbnVtZXJhdGUgaW50ZXJuYWwgY2hpbGRyZW4uCi0gICAgICAgICAgICBH
dGtQb3BvdmVyICpwb3BvdmVyID0gbnVsbHB0cjsKLSAgICAgICAgICAgIGd0a19jb250YWluZXJf
Zm9yYWxsKEdUS19DT05UQUlORVIoaXRlci0+ZGF0YSksCi0gICAgICAgICAgICAgICAgW10oR3Rr
V2lkZ2V0KiBjaGlsZCwgdm9pZCogZGF0YSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvKiog
cG9wb3ZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3RrUG9wb3ZlcioqPihkYXRhKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKEdUS19JU19QT1BPVkVSX01FTlUoY2hpbGQpICYmICEqcG9wb3ZlcikK
LSAgICAgICAgICAgICAgICAgICAgICAgICpwb3BvdmVyID0gR1RLX1BPUE9WRVIoY2hpbGQpOwot
ICAgICAgICAgICAgICAgIH0sICZwb3BvdmVyKTsKLQotICAgICAgICAgICAgaWYgKHBvcG92ZXIg
JiYgZ3RrX3BvcG92ZXJfZ2V0X3JlbGF0aXZlX3RvKHBvcG92ZXIpID09IEdUS19XSURHRVQobV93
ZWJWaWV3KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcG9wb3ZlcjsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogI2Vsc2UKICAgICAgICAgICAgIEd0a1dpZGdldCogY2hpbGQgPSBndGtf
YmluX2dldF9jaGlsZChHVEtfQklOKGl0ZXItPmRhdGEpKTsKICAgICAgICAgICAgIGlmICghR1RL
X0lTX01FTlUoY2hpbGQpKQpAQCAtMTc2LDEwICsxNDMsMTIgQEAgcHVibGljOgogICAgICAgICBX
ZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oaXRl
bXMtPmRhdGEpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKGl0ZW0pKTsKIAorI2lmICFVU0UoR1RLNCkKICAgICAgICAgR19HTlVDX0JFR0lO
X0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIEd0a0FjdGlvbiogYWN0aW9uID0gd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24oaXRlbSk7CiAgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoR1RLX0lTX0FDVElPTihhY3Rpb24pKTsKICAgICAgICAgR19HTlVDX0VORF9JR05PUkVfREVQ
UkVDQVRJT05TOworI2VuZGlmCiAKICAgICAgICAgR0FjdGlvbiogZ0FjdGlvbiA9IHdlYmtpdF9j
b250ZXh0X21lbnVfaXRlbV9nZXRfZ2FjdGlvbihpdGVtKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1
ZShHX0lTX0FDVElPTihnQWN0aW9uKSk7CkBAIC0xOTksMTIgKzE2OCwxNSBAQCBwdWJsaWM6CiAg
ICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVf
SVRFTShpdGVtcy0+ZGF0YSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QoaXRlbSkpOwogCisjaWYgIVVTRShHVEs0KQogICAgICAgICBHX0dO
VUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgR3RrQWN0aW9uKiBhY3Rpb24g
PSB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2FjdGlvbihpdGVtKTsKICAgICAgICAgZ19h
c3NlcnRfdHJ1ZShHVEtfSVNfQUNUSU9OKGFjdGlvbikpOworI2VuZGlmCiAKICAgICAgICAgR0Fj
dGlvbiogZ0FjdGlvbiA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfZ2FjdGlvbihpdGVt
KTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShHX0lTX0FDVElPTihnQWN0aW9uKSk7CisjaWYgIVVT
RShHVEs0KQogICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZ3RrX2FjdGlvbl9nZXRfbmFtZShhY3Rp
b24pLCA9PSwgZ19hY3Rpb25fZ2V0X25hbWUoZ0FjdGlvbikpOwogICAgICAgICBnX2Fzc2VydF9j
bXBpbnQoZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0aXZlKGFjdGlvbiksID09LCBnX2FjdGlvbl9nZXRf
ZW5hYmxlZChnQWN0aW9uKSk7CiAgICAgICAgIGlmIChHVEtfSVNfVE9HR0xFX0FDVElPTihhY3Rp
b24pKSB7CkBAIC0yMTcsNiArMTg5LDcgQEAgcHVibGljOgogICAgICAgICBnX2Fzc2VydF9jbXBp
bnQod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9zdG9ja19hY3Rpb24oaXRlbSksID09LCBX
RUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DVVNUT00pOwogICAgICAgICBnX2Fzc2VydF9jbXBz
dHIoZ3RrX2FjdGlvbl9nZXRfbGFiZWwoYWN0aW9uKSwgPT0sIGxhYmVsKTsKICAgICAgICAgR19H
TlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOworI2VuZGlmCiAKICAgICAgICAgY2hlY2tBY3Rp
b25TdGF0ZShnQWN0aW9uLCBzdGF0ZSk7CiAKQEAgLTIzMSwxMSArMjA0LDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRfTUVO
VV9JVEVNKGl0ZW1zLT5kYXRhKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChpdGVtKSk7CiAKKyNpZiAhVVNFKEdUSzQpCiAgICAgICAgIEdf
R05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtBY3Rpb24qIGFjdGlv
biA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0pOwogICAgICAgICBn
X2Fzc2VydF90cnVlKEdUS19JU19BQ1RJT04oYWN0aW9uKSk7CiAgICAgICAgIGdfYXNzZXJ0X2Nt
cHN0cihndGtfYWN0aW9uX2dldF9sYWJlbChhY3Rpb24pLCA9PSwgbGFiZWwpOwogICAgICAgICBH
X0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CisjZW5kaWYKIAogICAgICAgICBHQWN0aW9u
KiBnQWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9nYWN0aW9uKGl0ZW0pOwog
ICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfQUNUSU9OKGdBY3Rpb24pKTsKQEAgLTMwMSw3ICsy
NzYsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNob3dDb250ZXh0TWVudVRyaWdnZXJlZEJ5UG9w
dXBFdmVudEFuZFdhaXRVbnRpbEZpbmlzaGVkKCkKICAgICB7CisjaWYgIVVTRShHVEs0KQogICAg
ICAgICBtX2V4cGVjdGVkRXZlbnRUeXBlID0gR0RLX05PVEhJTkc7CisjZW5kaWYKICAgICAgICAg
Z19pZGxlX2FkZChyZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPihlbWl0UG9wdXBNZW51U2ln
bmFsSWRsZUNhbGxiYWNrKSwgdGhpcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wKTsKICAgICB9CkBAIC02MDAsMTIgKzU3NywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250
ZXh0TWVudShXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0
SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCkKICAgICB7CiAgICAgICAgIC8vIEFwcGVuZCBv
dXIgY3VzdG9tIGl0ZW0gdG8gdGhlIGRlZmF1bHQgbWVudS4KKyNpZiAhVVNFKEdUSzQpCiAgICAg
ICAgIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBpZiAobV9hY3Rp
b24pCiAgICAgICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X2FwcGVuZChjb250ZXh0TWVudSwg
d2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ldyhtX2FjdGlvbi5nZXQoKSkpOwogICAgICAgICBl
bHNlIGlmIChtX2dBY3Rpb24pCiAgICAgICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X2FwcGVu
ZChjb250ZXh0TWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9tX2dhY3Rpb24o
bV9nQWN0aW9uLmdldCgpLCBtX2dBY3Rpb25UaXRsZS5kYXRhKCksIG1fZXhwZWN0ZWRUYXJnZXQu
Z2V0KCkpKTsKICAgICAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOworI2VuZGlm
CiAgICAgICAgIHF1aXRNYWluTG9vcCgpOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYx
NCwyMiArNTkzLDcgQEAgcHVibGljOgogI2lmIFVTRShHVEs0KQogICAgIEd0a0J1dHRvbiogZ2V0
TWVudUl0ZW0oR3RrV2lkZ2V0KiBwb3BvdmVyLCBjb25zdCBnY2hhciogaXRlbUxhYmVsKQogICAg
IHsKLSAgICAgICAgYXV0byBpdGVtcyA9IGxvb2t1cFdpZGdldHMocG9wb3ZlciwKLSAgICAgICAg
ICAgIFtpdGVtTGFiZWxdKEd0a1dpZGdldCogd2lkZ2V0KSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFHVEtfSVNfQlVUVE9OKHdpZGdldCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsYWJlbCA9IGd0a19idXR0b25fZ2V0X2xh
YmVsKEdUS19CVVRUT04od2lkZ2V0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFsYWJlbCkgewot
ICAgICAgICAgICAgICAgICAgICBjb25zdCBhdXRvIGxhYmVscyA9IGxvb2t1cFdpZGdldHMoR1RL
X1dJREdFVCh3aWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgW10oR3RrV2lkZ2V0KiBj
aGlsZCkgeyByZXR1cm4gR1RLX0lTX0xBQkVMKGNoaWxkKTsgfSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoMSwgPT0sIGxhYmVscy5zaXplKCkpOwotICAgICAgICAgICAg
ICAgICAgICBsYWJlbCA9IGd0a19sYWJlbF9nZXRfbGFiZWwoR1RLX0xBQkVMKGxhYmVsc1swXSkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gR1RLX0lTX0JVVFRP
Tih3aWRnZXQpICYmIGdfc3RyY21wMChsYWJlbCwgaXRlbUxhYmVsKSA9PSAwOwotICAgICAgICAg
ICAgfSwgdHJ1ZSk7Ci0KLSAgICAgICAgZ19hc3NlcnRfY21wdWludChpdGVtcy5zaXplKCksID4s
IDApOwotICAgICAgICByZXR1cm4gaXRlbXMuc2l6ZSgpID8gR1RLX0JVVFRPTihpdGVtc1swXSkg
OiBudWxscHRyOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAjZWxzZQogICAgIEd0
a01lbnVJdGVtKiBnZXRNZW51SXRlbShHdGtXaWRnZXQqIG1lbnUsIGNvbnN0IGdjaGFyKiBpdGVt
TGFiZWwpCkBAIC02NTEsOCArNjE1LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvKiBtZW51ID0g
Z2V0Q29udGV4dE1lbnVXaWRnZXQoKTsKICAgICAgICAgYXV0byogaXRlbSA9IGdldE1lbnVJdGVt
KG1lbnUsIG1faXRlbVRvQWN0aXZhdGVMYWJlbCk7CiAjaWYgVVNFKEdUSzQpCi0gICAgICAgIC8v
IEdUSzQgdXNlcyBhIHBvcG92ZXIsIHdoaWNoIGNvbnRhaW5zIGJ1dHRvbnMuCi0gICAgICAgIGd0
a19idXR0b25fY2xpY2tlZChpdGVtKTsKKwogI2Vsc2UKICAgICAgICAgLy8gR1RLMyB1c2VzIGEg
bWVudSwgd2hpY2ggY29udGFpbnMgbWVudSBpdGVtcy4KICAgICAgICAgZ3RrX21lbnVfc2hlbGxf
YWN0aXZhdGVfaXRlbShHVEtfTUVOVV9TSEVMTChtZW51KSwgR1RLX1dJREdFVChpdGVtKSwgVFJV
RSk7CkBAIC03MDAsMTIgKzY2Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhY3Rpb25U
b2dnbGVkQ2FsbGJhY2soQ29udGV4dE1lbnVDdXN0b21UZXN0KiB0ZXN0KQogICAgIHsKICAgICAg
ICAgdGVzdC0+bV90b2dnbGVkID0gdHJ1ZTsKLQotI2lmIFVTRShHVEs0KQotICAgICAgICAvLyBG
b3IgdG9nZ2xlIGFjdGlvbnMgdGhlIHBvcG92ZXIgbWVudSBpcyBOT1QgZGlzbWlzc2VkIGF1dG9t
YXRpY2FsbHksIGFzIHRvIHNob3cgdmlzdWFsIGZlZWRiYWNrIHRvIHRoZSB1c2VyCi0gICAgICAg
IC8vIChpLmUuIHRoZSBjaGVjayBtYXJrZXIpLiBEaXNtaXNzIGl0IGhlcmUgdG8gdHJpZ2dlciBj
b250ZXh0TWVudURpc21pc3NlZENhbGxiYWNrKCkgYW5kIGNvbnRpbnVlIHRoZSB0ZXN0LgotICAg
ICAgICBndGtfcG9wb3Zlcl9wb3Bkb3duKHRlc3QtPmdldFBvcG92ZXJNZW51KCkpOwotI2VuZGlm
IC8vIFVTRShHVEs0KQogICAgIH0KIAogICAgIHZvaWQgc2V0QWN0aW9uKEd0a0FjdGlvbiogYWN0
aW9uKQpAQCAtNzEzLDEyICs2NzAsMTQgQEAgcHVibGljOgogICAgICAgICBtX2FjdGlvbiA9IGFj
dGlvbjsKICAgICAgICAgbV9nQWN0aW9uID0gbnVsbHB0cjsKICAgICAgICAgbV9leHBlY3RlZFRh
cmdldCA9IG51bGxwdHI7CisjaWYgIVVTRShHVEs0KQogICAgICAgICBHX0dOVUNfQkVHSU5fSUdO
T1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgaWYgKEdUS19JU19UT0dHTEVfQUNUSU9OKGFjdGlv
bikpCiAgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoYWN0aW9uLCAidG9nZ2xl
ZCIsIEdfQ0FMTEJBQ0soYWN0aW9uVG9nZ2xlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChhY3Rpb24sICJhY3RpdmF0
ZSIsIEdfQ0FMTEJBQ0soYWN0aW9uQWN0aXZhdGVkQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAg
R19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9p
ZCBzZXRBY3Rpb24oR0FjdGlvbiogYWN0aW9uLCBjb25zdCBjaGFyKiB0aXRsZSwgR1ZhcmlhbnQq
IHRhcmdldCA9IG51bGxwdHIpCkBAIC03NDcsNiArNzA2LDcgQEAgc3RhdGljIHZvaWQgdGVzdENv
bnRleHRNZW51UG9wdWxhdGVNZW51KENvbnRleHRNZW51Q3VzdG9tVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnQKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHk+V2ViS2l0R1RLIENvbnRleHQg
bWVudSB0ZXN0czwvYm9keT48L2h0bWw+IiwgImZpbGU6Ly8vIik7CiAgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CiAKKyNpZiAhVVNFKEdUSzQpCiAgICAgR19HTlVDX0JFR0lOX0lH
Tk9SRV9ERVBSRUNBVElPTlM7CiAgICAgLy8gQ3JlYXRlIGEgY3VzdG9tIG1lbnUgaXRlbS4KICAg
ICBHUmVmUHRyPEd0a0FjdGlvbj4gYWN0aW9uID0gYWRvcHRHUmVmKGd0a19hY3Rpb25fbmV3KCJX
ZWJLaXRHVEtDdXN0b21BY3Rpb24iLCAiQ3VzdG9tIF9BY3Rpb24iLCBudWxscHRyLCBudWxscHRy
KSk7CkBAIC03NjQsNiArNzI0LDcgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51UG9wdWxh
dGVNZW51KENvbnRleHRNZW51Q3VzdG9tVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICBnX2Fz
c2VydF9mYWxzZSh0ZXN0LT5tX2FjdGl2YXRlZCk7CiAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X3RvZ2dsZWQpOwogICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKKyNlbmRpZgog
CiAgICAgLy8gQ3JlYXRlIGEgY3VzdG9tIG1lbnUgaXRlbSB1c2luZyBHQWN0aW9uLgogICAgIEdS
ZWZQdHI8R0FjdGlvbj4gZ0FjdGlvbiA9IGFkb3B0R1JlZihHX0FDVElPTihnX3NpbXBsZV9hY3Rp
b25fbmV3KCJXZWJLaXRHVEtDdXN0b21HQWN0aW9uIiwgbnVsbHB0cikpKTsKQEAgLTgwNSw2ICs3
NjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfaW5zZXJ0KGNvbnRl
eHRNZW51LCB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fbmV3X3NlcGFyYXRvcigpLCAyKTsKIAog
ICAgICAgICAvLyBBZGQgY3VzdG9tIGFjdGlvbnMuCisjaWYgIVVTRShHVEs0KQogICAgICAgICBH
X0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgR1JlZlB0cjxHdGtBY3Rp
b24+IGFjdGlvbiA9IGFkb3B0R1JlZihndGtfYWN0aW9uX25ldygiV2ViS2l0R1RLQ3VzdG9tQWN0
aW9uIiwgIkN1c3RvbSBfQWN0aW9uIiwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgICAgICBndGtf
YWN0aW9uX3NldF9zZW5zaXRpdmUoYWN0aW9uLmdldCgpLCBGQUxTRSk7CkBAIC04MTMsNiArNzc1
LDcgQEAgcHVibGljOgogICAgICAgICBndGtfdG9nZ2xlX2FjdGlvbl9zZXRfYWN0aXZlKEdUS19U
T0dHTEVfQUNUSU9OKHRvZ2dsZUFjdGlvbi5nZXQoKSksIFRSVUUpOwogICAgICAgICB3ZWJraXRf
Y29udGV4dF9tZW51X2FwcGVuZChjb250ZXh0TWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X25ldyh0b2dnbGVBY3Rpb24uZ2V0KCkpKTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9h
cHBlbmQoY29udGV4dE1lbnUsIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdfc2VwYXJhdG9y
KCkpOworI2VuZGlmCiAgICAgICAgIEdSZWZQdHI8R0FjdGlvbj4gZ0FjdGlvbiA9IGFkb3B0R1Jl
ZihHX0FDVElPTihnX3NpbXBsZV9hY3Rpb25fbmV3KCJXZWJLaXRHVEtDdXN0b21HQWN0aW9uIiwg
bnVsbHB0cikpKTsKICAgICAgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9lbmFibGVkKEdfU0lNUExF
X0FDVElPTihnQWN0aW9uLmdldCgpKSwgRkFMU0UpOwogICAgICAgICB3ZWJraXRfY29udGV4dF9t
ZW51X2luc2VydChjb250ZXh0TWVudSwgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25ld19mcm9t
X2dhY3Rpb24oZ0FjdGlvbi5nZXQoKSwgIkN1c3RvbSBfR0FjdGlvbiIsIG51bGxwdHIpLCAtMSk7
CkBAIC0xMTc1LDYgKzExMzgsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAga1NlcnZlciA9IG5l
dyBXZWJLaXRUZXN0U2VydmVyKCk7CiAgICAga1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsK
IAorI2lmICFVU0UoR1RLNCkKKyAgICAvLyBGSVhNRTogUmV3b3JrIGNvbnRleHQgbWVudSBBUEkg
aW4gR1RLNCB0byBub3QgZXhwb3NlIEdka0V2ZW50LgogICAgIENvbnRleHRNZW51RGVmYXVsdFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJkZWZhdWx0LW1lbnUiLCB0ZXN0Q29udGV4dE1lbnVE
ZWZhdWx0TWVudSk7CiAgICAgQ29udGV4dE1lbnVEZWZhdWx0VGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImNvbnRleHQtbWVudS1rZXkiLCB0ZXN0Q29udGV4dE1lbnVLZXkpOwogICAgIENvbnRl
eHRNZW51RGVmYXVsdFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwb3B1cC1ldmVudC1zaWdu
YWwiLCB0ZXN0UG9wdXBFdmVudFNpZ25hbCk7CkBAIC0xMTg1LDYgKzExNTAsNyBAQCB2b2lkIGJl
Zm9yZUFsbCgpCiAgICAgQ29udGV4dE1lbnVEaXNtaXNzZWRUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAibWVudS1kaXNtaXNzZWQiLCB0ZXN0Q29udGV4dE1lbnVEaXNtaXNzZWQpOwogICAgIENv
bnRleHRNZW51V2ViRXh0ZW5zaW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJQYWdlIiwgImNvbnRleHQt
bWVudSIsIHRlc3RDb250ZXh0TWVudVdlYkV4dGVuc2lvbk1lbnUpOwogICAgIENvbnRleHRNZW51
V2ViRXh0ZW5zaW9uTm9kZVRlc3Q6OmFkZCgiV2ViS2l0V2ViUGFnZSIsICJjb250ZXh0LW1lbnUt
bm9kZSIsIHRlc3RDb250ZXh0TWVudVdlYkV4dGVuc2lvbk5vZGUpOworI2VuZGlmCiB9CiAKIHZv
aWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdEluc3BlY3Rvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0SW5zcGVjdG9yLmNwcAppbmRleCBlNGNlOGQzNWI3NDQuLmNkMDRlNDk0NGQyMyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3Bl
Y3Rvci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdElu
c3BlY3Rvci5jcHAKQEAgLTIyNiwyOCArMjI2LDQwIEBAIHB1YmxpYzoKIAogICAgIH5DdXN0b21J
bnNwZWN0b3JUZXN0KCkKICAgICB7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGlmIChtX2luc3Bl
Y3RvcldpbmRvdykKKyAgICAgICAgICAgIGd0a193aW5kb3dfZGVzdHJveShHVEtfV0lORE9XKG1f
aW5zcGVjdG9yV2luZG93KSk7CisjZWxzZQogICAgICAgICBpZiAobV9pbnNwZWN0b3JXaW5kb3cp
CiAgICAgICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9pbnNwZWN0b3JXaW5kb3cpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgYm9vbCBvcGVuV2luZG93KCkKICAgICB7CiAgICAgICAgIGdfYXNz
ZXJ0X251bGwobV9pbnNwZWN0b3JXaW5kb3cpOwotICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9
IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogICAgICAgICBXZWJLaXRXZWJW
aWV3QmFzZSogaW5zcGVjdG9yVmlldyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmll
dyhtX2luc3BlY3Rvcik7CiAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaW5zcGVjdG9yVmlldyk7
CisjaWYgVVNFKEdUSzQpCisgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gZ3RrX3dpbmRvd19u
ZXcoKTsKKyAgICAgICAgZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhtX2luc3BlY3Rv
cldpbmRvdyksIEdUS19XSURHRVQoaW5zcGVjdG9yVmlldykpOworI2Vsc2UKKyAgICAgICAgbV9p
bnNwZWN0b3JXaW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKICAg
ICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX2luc3BlY3RvcldpbmRvdyks
IEdUS19XSURHRVQoaW5zcGVjdG9yVmlldykpOwotICAgICAgICBndGtfd2lkZ2V0X3Nob3dfYWxs
KG1faW5zcGVjdG9yV2luZG93KTsKKyAgICAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQo
aW5zcGVjdG9yVmlldykpOworI2VuZGlmCisgICAgICAgIGd0a193aWRnZXRfc2hvdyhtX2luc3Bl
Y3RvcldpbmRvdyk7CiAKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3Q6Om9wZW5XaW5kb3co
KTsKICAgICB9CiAKICAgICB2b2lkIGNsb3NlZCgpCiAgICAgewotICAgICAgICBpZiAobV9pbnNw
ZWN0b3JXaW5kb3cpIHsKLSAgICAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX2luc3BlY3Rv
cldpbmRvdyk7Ci0gICAgICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7Ci0gICAgICAgIH0K
KyNpZiBVU0UoR1RLNCkKKyAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZtX2luc3BlY3RvcldpbmRv
dywgZ3RrX3dpbmRvd19kZXN0cm95KTsKKyNlbHNlCisgICAgICAgIGdfY2xlYXJfcG9pbnRlcigm
bV9pbnNwZWN0b3JXaW5kb3csIGd0a193aWRnZXRfZGVzdHJveSk7CisjZW5kaWYKIAogICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yVGVzdDo6Y2xvc2VkKCk7CiAgICAgfQpAQCAtMjU2LDEyICsyNjgs
MjkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3QmFzZT4g
aW5zcGVjdG9yVmlldyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyhtX2luc3Bl
Y3Rvcik7CiAgICAgICAgIGlmIChtX2luc3BlY3RvcldpbmRvdykgeworI2lmIFVTRShHVEs0KQor
ICAgICAgICAgICAgZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhtX2luc3BlY3Rvcldp
bmRvdyksIG51bGxwdHIpOworICAgICAgICAgICAgZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5E
T1cobV9pbnNwZWN0b3JXaW5kb3cpKTsKKyNlbHNlCiAgICAgICAgICAgICBndGtfY29udGFpbmVy
X3JlbW92ZShHVEtfQ09OVEFJTkVSKG1faW5zcGVjdG9yV2luZG93KSwgR1RLX1dJREdFVChpbnNw
ZWN0b3JWaWV3LmdldCgpKSk7CiAgICAgICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9pbnNw
ZWN0b3JXaW5kb3cpOwotICAgICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOworI2VuZGlm
CisgICAgICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IG51bGxwdHI7CiAgICAgICAgIH0KIAog
ICAgICAgICBHdGtXaWRnZXQqIHBhbmU7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGlmIChndGtf
d2luZG93X2dldF9jaGlsZChHVEtfV0lORE9XKG1fcGFyZW50V2luZG93KSkgPT0gR1RLX1dJREdF
VChtX3dlYlZpZXcpKSB7CisgICAgICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IGluc3Bl
Y3RlZFZpZXcgPSBtX3dlYlZpZXc7CisgICAgICAgICAgICBndGtfd2luZG93X3NldF9jaGlsZChH
VEtfV0lORE9XKG1fcGFyZW50V2luZG93KSwgbnVsbHB0cik7CisgICAgICAgICAgICBwYW5lID0g
Z3RrX3BhbmVkX25ldyhHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOworICAgICAgICAgICAgZ3Rr
X3BhbmVkX3NldF9zdGFydF9jaGlsZChHVEtfUEFORUQocGFuZSksIEdUS19XSURHRVQobV93ZWJW
aWV3KSk7CisgICAgICAgICAgICBndGtfd2luZG93X3NldF9jaGlsZChHVEtfV0lORE9XKG1fcGFy
ZW50V2luZG93KSwgcGFuZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFuZSA9IGd0
a193aW5kb3dfZ2V0X2NoaWxkKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpKTsKKyAgICAgICAg
Z3RrX3BhbmVkX3NldF9wb3NpdGlvbihHVEtfUEFORUQocGFuZSksIHdlYmtpdF93ZWJfaW5zcGVj
dG9yX2dldF9hdHRhY2hlZF9oZWlnaHQobV9pbnNwZWN0b3IpKTsKKyAgICAgICAgZ3RrX3BhbmVk
X3NldF9lbmRfY2hpbGQoR1RLX1BBTkVEKHBhbmUpLCBHVEtfV0lER0VUKGluc3BlY3RvclZpZXcu
Z2V0KCkpKTsKKyNlbHNlCiAgICAgICAgIGlmIChndGtfYmluX2dldF9jaGlsZChHVEtfQklOKG1f
cGFyZW50V2luZG93KSkgPT0gR1RLX1dJREdFVChtX3dlYlZpZXcpKSB7CiAgICAgICAgICAgICBH
UmVmUHRyPFdlYktpdFdlYlZpZXc+IGluc3BlY3RlZFZpZXcgPSBtX3dlYlZpZXc7CiAgICAgICAg
ICAgICBndGtfY29udGFpbmVyX3JlbW92ZShHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwg
R1RLX1dJREdFVChtX3dlYlZpZXcpKTsKQEAgLTI3Myw2ICszMDIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBwYW5lID0gZ3RrX2Jpbl9nZXRfY2hpbGQoR1RLX0JJTihtX3BhcmVudFdpbmRvdykp
OwogICAgICAgICBndGtfcGFuZWRfc2V0X3Bvc2l0aW9uKEdUS19QQU5FRChwYW5lKSwgd2Via2l0
X3dlYl9pbnNwZWN0b3JfZ2V0X2F0dGFjaGVkX2hlaWdodChtX2luc3BlY3RvcikpOwogICAgICAg
ICBndGtfcGFuZWRfYWRkMihHVEtfUEFORUQocGFuZSksIEdUS19XSURHRVQoaW5zcGVjdG9yVmll
dy5nZXQoKSkpOworI2VuZGlmCiAKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3Q6OmF0dGFj
aCgpOwogICAgIH0KQEAgLTI4MCwxNyArMzEwLDI2IEBAIHB1YmxpYzoKICAgICBib29sIGRldGFj
aCgpCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXdCYXNlPiBpbnNwZWN0b3JW
aWV3ID0gd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3dlYl92aWV3KG1faW5zcGVjdG9yKTsKKyNp
ZiBVU0UoR1RLNCkKKyAgICAgICAgR3RrV2lkZ2V0KiBwYW5lID0gZ3RrX3dpbmRvd19nZXRfY2hp
bGQoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdykpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdU
S19JU19QQU5FRChwYW5lKSk7CisgICAgICAgIGd0a19wYW5lZF9zZXRfZW5kX2NoaWxkKEdUS19Q
QU5FRChwYW5lKSwgbnVsbHB0cik7CisjZWxzZQogICAgICAgICBHdGtXaWRnZXQqIHBhbmUgPSBn
dGtfYmluX2dldF9jaGlsZChHVEtfQklOKG1fcGFyZW50V2luZG93KSk7CiAgICAgICAgIGdfYXNz
ZXJ0X3RydWUoR1RLX0lTX1BBTkVEKHBhbmUpKTsKICAgICAgICAgZ3RrX2NvbnRhaW5lcl9yZW1v
dmUoR1RLX0NPTlRBSU5FUihwYW5lKSwgR1RLX1dJREdFVChpbnNwZWN0b3JWaWV3LmdldCgpKSk7
CisjZW5kaWYKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3Q6OmRldGFjaCgpOwogICAgIH0K
IAogICAgIHZvaWQgZGVzdHJveVdpbmRvdygpCiAgICAgewogICAgICAgICBnX2Fzc2VydF9ub25u
dWxsKG1faW5zcGVjdG9yV2luZG93KTsKLSAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faW5z
cGVjdG9yV2luZG93KTsKLSAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOworI2lmIFVTRShH
VEs0KQorICAgICAgICBnX2NsZWFyX3BvaW50ZXIoJm1faW5zcGVjdG9yV2luZG93LCBndGtfd2lu
ZG93X2Rlc3Ryb3kpOworI2Vsc2UKKyAgICAgICAgZ19jbGVhcl9wb2ludGVyKCZtX2luc3BlY3Rv
cldpbmRvdywgZ3RrX3dpZGdldF9kZXN0cm95KTsKKyNlbmRpZgogICAgIH0KIAogICAgIEd0a1dp
ZGdldCogbV9pbnNwZWN0b3JXaW5kb3c7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0UHJpbnRpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdFByaW50aW5nLmNwcAppbmRleCA3ZDkzYzc5YzkxMTkuLjUzM2Qw
MDQ3OWQzOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdFByaW50aW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0UHJpbnRpbmcuY3BwCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVmVyc2lv
bmluZy5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1Jl
ZlB0ci5oPgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0V2ViVmlld0VkaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKaW5kZXggNzUyZTgwNGM3MDY2Li41NzhmNDgxMjMz
OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RX
ZWJWaWV3RWRpdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKQEAgLTIxLDIzICsyMSwxMDIgQEAKICNpbmNsdWRlICJX
ZWJWaWV3VGVzdC5oIgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KIAorY2xhc3MgQ2xp
cGJvYXJkIHsKK3B1YmxpYzoKKyAgICBDbGlwYm9hcmQoR01haW5Mb29wKiBsb29wKQorICAgICAg
ICA6IG1fbWFpbkxvb3AobG9vcCkKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgLCBtX2NsaXBib2Fy
ZChnZGtfZGlzcGxheV9nZXRfY2xpcGJvYXJkKGdka19kaXNwbGF5X2dldF9kZWZhdWx0KCkpKQor
I2Vsc2UKKyAgICAgICAgLCBtX2NsaXBib2FyZChndGtfY2xpcGJvYXJkX2dldF9mb3JfZGlzcGxh
eShnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCgpLCBHREtfU0VMRUNUSU9OX0NMSVBCT0FSRCkpCisj
ZW5kaWYKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworI2lmIFVTRShH
VEs0KQorICAgICAgICBnX2Fzc2VydF90cnVlKGdka19jbGlwYm9hcmRfc2V0X2NvbnRlbnQobV9j
bGlwYm9hcmQsIG51bGxwdHIpKTsKKyNlbHNlCisgICAgICAgIGd0a19jbGlwYm9hcmRfY2xlYXIo
bV9jbGlwYm9hcmQpOworI2VuZGlmCisgICAgICAgIG1fdGV4dCA9IG51bGxwdHI7CisgICAgfQor
CisgICAgYm9vbCBjb250YWluc1RleHQoKSBjb25zdAorICAgIHsKKyNpZiBVU0UoR1RLNCkKKyAg
ICAgICAgcmV0dXJuIGdka19jb250ZW50X2Zvcm1hdHNfY29udGFpbl9ndHlwZShnZGtfY2xpcGJv
YXJkX2dldF9mb3JtYXRzKG1fY2xpcGJvYXJkKSwgR19UWVBFX1NUUklORyk7CisjZWxzZQorICAg
ICAgICByZXR1cm4gZ3RrX2NsaXBib2FyZF93YWl0X2lzX3RleHRfYXZhaWxhYmxlKG1fY2xpcGJv
YXJkKTsKKyNlbmRpZgorICAgIH0KKworICAgIGJvb2wgd2FpdEZvclRleHQoKQorICAgIHsKKyAg
ICAgICAgLy8gVGhlcmUncyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxlY3Rpb24gaGFzIGJl
ZW4gd3JpdHRlbiB0bworICAgICAgICAvLyB0aGUgY2xpcGJvYXJkLCBzbyB1c2UgYSB0aW1lb3V0
IHNvdXJjZSB0byBxdWVyeSB0aGUgY2xpcGJvYXJkLgorICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQga0NsaXBib2FyZFdhaXRUaW1lb3V0ID0gNTA7CisgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBrQ2xpcGJvYXJkV2FpdE1heFRyaWVzID0gMjsKKyAgICAgICAgbV90cmllc0NvdW50
ID0gMDsKKyAgICAgICAgZ190aW1lb3V0X2FkZChrQ2xpcGJvYXJkV2FpdFRpbWVvdXQsIFtdKGdw
b2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgICAgICBhdXRvKiBjbGlwYm9h
cmQgPSBzdGF0aWNfY2FzdDxDbGlwYm9hcmQqPih1c2VyRGF0YSk7CisgICAgICAgICAgICBjbGlw
Ym9hcmQtPm1fdHJpZXNDb3VudCsrOworICAgICAgICAgICAgaWYgKGNsaXBib2FyZC0+Y29udGFp
bnNUZXh0KCkgfHwgY2xpcGJvYXJkLT5tX3RyaWVzQ291bnQgPiBrQ2xpcGJvYXJkV2FpdE1heFRy
aWVzKSB7CisgICAgICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChjbGlwYm9hcmQtPm1fbWFp
bkxvb3ApOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9LCB0aGlzKTsKKyAgICAgICAgZ19tYWlu
X2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgICAgICByZXR1cm4gY29udGFpbnNUZXh0KCk7Cisg
ICAgfQorCisgICAgY29uc3QgY2hhciogcmVhZFRleHQoKQorICAgIHsKKyAgICAgICAgbV90ZXh0
ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKHdhaXRGb3JUZXh0KCkpIHsKKyNpZiBVU0UoR1RLNCkK
KyAgICAgICAgICAgIGdka19jbGlwYm9hcmRfcmVhZF90ZXh0X2FzeW5jKG1fY2xpcGJvYXJkLCBu
dWxscHRyLCBbXShHT2JqZWN0KiBnZGtDbGlwYm9hcmQsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
cG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgICAgIGF1dG8qIGNsaXBib2FyZCA9IHN0
YXRpY19jYXN0PENsaXBib2FyZCo+KHVzZXJEYXRhKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9h
cmQtPm1fdGV4dC5yZXNldChnZGtfY2xpcGJvYXJkX3JlYWRfdGV4dF9maW5pc2goR0RLX0NMSVBC
T0FSRChnZGtDbGlwYm9hcmQpLCByZXN1bHQsIG51bGxwdHIpKTsKKyAgICAgICAgICAgICAgICBn
X21haW5fbG9vcF9xdWl0KGNsaXBib2FyZC0+bV9tYWluTG9vcCk7CisgICAgICAgICAgICB9LCB0
aGlzKTsKKyAgICAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyNlbHNlCisg
ICAgICAgICAgICBtX3RleHQucmVzZXQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KG1fY2xp
cGJvYXJkKSk7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV90ZXh0LmdldCgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBHTWFpbkxvb3AqIG1fbWFpbkxvb3AgeyBudWxscHRy
IH07CisjaWYgVVNFKEdUSzQpCisgICAgR2RrQ2xpcGJvYXJkKiBtX2NsaXBib2FyZCB7IG51bGxw
dHIgfTsKKyNlbHNlCisgICAgR3RrQ2xpcGJvYXJkKiBtX2NsaXBib2FyZCB7IG51bGxwdHIgfTsK
KyNlbmRpZgorICAgIEdVbmlxdWVQdHI8Y2hhcj4gbV90ZXh0OworICAgIHVuc2lnbmVkIG1fdHJp
ZXNDb3VudCB7IDAgfTsKK307CisKIGNsYXNzIEVkaXRvclRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVz
dCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShFZGl0b3JUZXN0KTsKIAot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ2xpcGJvYXJkV2FpdFRpbWVvdXQgPSA1MDsKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NsaXBib2FyZFdhaXRNYXhUcmllcyA9IDI7Ci0KICAg
ICBFZGl0b3JUZXN0KCkKLSAgICAgICAgOiBtX2NsaXBib2FyZChndGtfY2xpcGJvYXJkX2dldChH
REtfU0VMRUNUSU9OX0NMSVBCT0FSRCkpCi0gICAgICAgICwgbV9jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQoZmFsc2UpCi0gICAgICAgICwgbV90cmllc0NvdW50KDApCi0gICAgICAgICwgbV9lZGl0
b3JTdGF0ZShudWxscHRyKQorICAgICAgICA6IG1fY2xpcGJvYXJkKG1fbWFpbkxvb3ApCiAgICAg
ewogICAgICAgICBzaG93SW5XaW5kb3coKTsKKyAgICAgICAgbV9jbGlwYm9hcmQuY2xlYXIoKTsK
ICAgICAgICAgbG9hZFVSSSgiYWJvdXQ6YmxhbmsiKTsKICAgICAgICAgd2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7Ci0gICAgICAgIGd0a19jbGlwYm9hcmRfY2xlYXIobV9jbGlwYm9hcmQpOworICAg
IH0KKworICAgIH5FZGl0b3JUZXN0KCkKKyAgICB7CisgICAgICAgIG1fY2xpcGJvYXJkLmNsZWFy
KCk7CiAgICAgfQogCiAgICAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdEcmF3Q2FsbGJhY2soR01h
aW5Mb29wKiBtYWluTG9vcCkKQEAgLTQ4LDEwICsxMjcsMjAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBmbHVzaEVkaXRvclN0YXRlKCkKICAgICB7CisjaWYgVVNFKEdUSzQpCisgICAgICAgIGF1dG8q
IHN1cmZhY2UgPSBndGtfbmF0aXZlX2dldF9zdXJmYWNlKGd0a193aWRnZXRfZ2V0X25hdGl2ZShH
VEtfV0lER0VUKG1fd2ViVmlldykpKTsKKyAgICAgICAgYXV0byogY2xvY2sgPSBnZGtfc3VyZmFj
ZV9nZXRfZnJhbWVfY2xvY2soc3VyZmFjZSk7CisgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQoY2xvY2ssICJwYWludCIsIEdfQ0FMTEJBQ0sod2ViVmlld0Ry
YXdDYWxsYmFjayksIG1fbWFpbkxvb3ApOworI2Vsc2UKICAgICAgICAgYXV0byBzaWduYWxJRCA9
IGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX3dlYlZpZXcsICJkcmF3IiwgR19DQUxMQkFDSyh3
ZWJWaWV3RHJhd0NhbGxiYWNrKSwgbV9tYWluTG9vcCk7CisjZW5kaWYKICAgICAgICAgZ3RrX3dp
ZGdldF9xdWV1ZV9kcmF3KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CiAgICAgICAgIGdfbWFpbl9s
b29wX3J1bihtX21haW5Mb29wKTsKKyNpZiBVU0UoR1RLNCkKKyAgICAgICAgZ19zaWduYWxfaGFu
ZGxlcl9kaXNjb25uZWN0KGNsb2NrLCBzaWduYWxJRCk7CisjZWxzZQogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93ZWJWaWV3LCBzaWduYWxJRCk7CisjZW5kaWYKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCBjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmRSZWFkeUNhbGxiYWNr
KEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgRWRpdG9yVGVzdCogdGVzdCkKQEAgLTg0
LDQxICsxNzMsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9jYW5FeGVjdXRlRWRpdGlu
Z0NvbW1hbmQ7CiAgICAgfQogCi0gICAgc3RhdGljIGdib29sZWFuIHdhaXRGb3JDbGlwYm9hcmRU
ZXh0KEVkaXRvclRlc3QqIHRlc3QpCi0gICAgewotICAgICAgICB0ZXN0LT5tX3RyaWVzQ291bnQr
KzsKLSAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190ZXh0X2F2YWlsYWJsZSh0ZXN0
LT5tX2NsaXBib2FyZCkgfHwgdGVzdC0+bV90cmllc0NvdW50ID4ga0NsaXBib2FyZFdhaXRNYXhU
cmllcykgewotICAgICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsK
LSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBU
UlVFOwotICAgIH0KLQotICAgIHZvaWQgY29weUNsaXBib2FyZCgpCisgICAgY29uc3QgY2hhciog
Y29weUNsaXBib2FyZCgpCiAgICAgewogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9l
ZGl0aW5nX2NvbW1hbmQobV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpOwot
ICAgICAgICAvLyBUaGVyZSdzIG5vIHdheSB0byBrbm93IHdoZW4gdGhlIHNlbGVjdGlvbiBoYXMg
YmVlbiBjb3BpZWQgdG8KLSAgICAgICAgLy8gdGhlIGNsaXBib2FyZCwgc28gdXNlIGEgdGltZW91
dCBzb3VyY2UgdG8gcXVlcnkgdGhlIGNsaXBib2FyZC4KLSAgICAgICAgbV90cmllc0NvdW50ID0g
MDsKLSAgICAgICAgZ190aW1lb3V0X2FkZChrQ2xpcGJvYXJkV2FpdFRpbWVvdXQsIHJlaW50ZXJw
cmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHdhaXRGb3JDbGlwYm9hcmRUZXh0KSwgdGhpcyk7Ci0gICAg
ICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKKyAgICAgICAgcmV0dXJuIG1fY2xpcGJv
YXJkLnJlYWRUZXh0KCk7CiAgICAgfQogCi0gICAgZ2NoYXIqIGN1dFNlbGVjdGlvbigpCisgICAg
Y29uc3QgY2hhciogY3V0U2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUo
Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7CiAg
ICAgICAgIGdfYXNzZXJ0X3RydWUoY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElU
SU5HX0NPTU1BTkRfUEFTVEUpKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShjYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURV9BU19QTEFJTl9URVhUKSk7
CiAKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2Vi
VmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpOwotICAgICAgICAvLyBUaGVyZSdzIG5v
IHdheSB0byBrbm93IHdoZW4gdGhlIHNlbGVjdGlvbiBoYXMgYmVlbiBjdXQgdG8KLSAgICAgICAg
Ly8gdGhlIGNsaXBib2FyZCwgc28gdXNlIGEgdGltZW91dCBzb3VyY2UgdG8gcXVlcnkgdGhlIGNs
aXBib2FyZC4KLSAgICAgICAgbV90cmllc0NvdW50ID0gMDsKLSAgICAgICAgZ190aW1lb3V0X2Fk
ZChrQ2xpcGJvYXJkV2FpdFRpbWVvdXQsIHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KHdh
aXRGb3JDbGlwYm9hcmRUZXh0KSwgdGhpcyk7Ci0gICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21h
aW5Mb29wKTsKLQotICAgICAgICByZXR1cm4gZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KG1f
Y2xpcGJvYXJkKTsKKyAgICAgICAgcmV0dXJuIG1fY2xpcGJvYXJkLnJlYWRUZXh0KCk7CiAgICAg
fQogCiAgICAgV2ViS2l0RWRpdG9yU3RhdGUqIGVkaXRvclN0YXRlKCkKQEAgLTE0OSwxMCArMjE3
LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHlwaW5nQXR0cmlidXRlcygpOwogICAgIH0K
IAotICAgIEd0a0NsaXBib2FyZCogbV9jbGlwYm9hcmQ7Ci0gICAgYm9vbCBtX2NhbkV4ZWN1dGVF
ZGl0aW5nQ29tbWFuZDsKLSAgICBzaXplX3QgbV90cmllc0NvdW50OwotICAgIFdlYktpdEVkaXRv
clN0YXRlKiBtX2VkaXRvclN0YXRlOworICAgIENsaXBib2FyZCBtX2NsaXBib2FyZDsKKyAgICBi
b29sIG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kIHsgZmFsc2UgfTsKKyAgICBXZWJLaXRFZGl0
b3JTdGF0ZSogbV9lZGl0b3JTdGF0ZSB7IG51bGxwdHIgfTsKIH07CiAKIHN0YXRpYyBjb25zdCBj
aGFyKiBzZWxlY3RlZFNwYW5IVE1MRm9ybWF0ID0KQEAgLTE4Miw5ICsyNDksNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZU5vbkVkaXRhYmxlKEVkaXRvclRlc3Qq
IHRlc3QsIGdjb25zdHBvaQogICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0
aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAgICAgZ19hc3NlcnRf
ZmFsc2UodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1B
TkRfUEFTVEVfQVNfUExBSU5fVEVYVCkpOwogCi0gICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwot
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChndGtfY2xpcGJvYXJkX3dhaXRfZm9y
X3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKLSAgICBnX2Fzc2VydF9jbXBzdHIoY2xpcGJvYXJk
VGV4dC5nZXQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxsIik7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPmNvcHlDbGlwYm9hcmQoKSwgPT0sICJtYWtlIEphY2sgYSBkdWxsIik7CiB9CiAKIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlRWRpdGFibGUoRWRpdG9yVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTIxMCw5ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZQogICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21t
YW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKICAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RF
X0FTX1BMQUlOX1RFWFQpKTsKIAotICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKLSAgICBHVW5p
cXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRl
c3QtPm1fY2xpcGJvYXJkKSk7Ci0gICAgZ19hc3NlcnRfY21wc3RyKGNsaXBib2FyZFRleHQuZ2V0
KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5j
b3B5Q2xpcGJvYXJkKCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogfQogCiBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCkBAIC0yMjYsMTggKzI4OSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZQogCiAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQo
V0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CiAKLSAgICB0ZXN0LT5jb3B5Q2xp
cGJvYXJkKCk7Ci0gICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9h
cmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwotCiAgICAgLy8gSW5pdGlhbGx5
IG9ubHkgdGhlIHN1YnNwYW4gaXMgc2VsZWN0ZWQuCi0gICAgZ19hc3NlcnRfY21wc3RyKGNsaXBi
b2FyZFRleHQuZ2V0KCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXN0LT5jb3B5Q2xpcGJvYXJkKCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogCiAg
ICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmll
dywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKTsKLSAgICB0ZXN0LT5jb3B5Q2xp
cGJvYXJkKCk7Ci0gICAgY2xpcGJvYXJkVGV4dC5yZXNldChndGtfY2xpcGJvYXJkX3dhaXRfZm9y
X3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKLQogICAgIC8vIFRoZSBtYWluc3BhbiBzaG91bGQg
YmUgc2VsZWN0ZWQgYWZ0ZXIgY2FsbGluZyBTRUxFQ1RfQUxMLgotICAgIGdfYXNzZXJ0X2NtcHN0
cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFj
ayBhIGR1bGwgYm95LiIpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5jb3B5Q2xpcGJvYXJk
KCksID09LCAiQWxsIHdvcmsgYW5kIG5vIHBsYXkgbWFrZSBKYWNrIGEgZHVsbCBib3kuIik7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsRWRpdGFibGUoRWRpdG9y
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTI1NSwxOCArMzEyLDEyIEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIAogICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRp
bmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCi0gICAgdGVz
dC0+Y29weUNsaXBib2FyZCgpOwotICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChn
dGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKLQogICAgIC8v
IEluaXRpYWxseSBvbmx5IHRoZSBzdWJzcGFuIGlzIHNlbGVjdGVkLgotICAgIGdfYXNzZXJ0X2Nt
cHN0cihjbGlwYm9hcmRUZXh0LmdldCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodGVzdC0+Y29weUNsaXBib2FyZCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1
bGwiKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0
LT5tX3dlYlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCk7Ci0gICAgdGVz
dC0+Y29weUNsaXBib2FyZCgpOwotICAgIGNsaXBib2FyZFRleHQucmVzZXQoZ3RrX2NsaXBib2Fy
ZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7Ci0KICAgICAvLyBUaGUgbWFpbnNw
YW4gc2hvdWxkIGJlIHNlbGVjdGVkIGFmdGVyIGNhbGxpbmcgU0VMRUNUX0FMTC4KLSAgICBnX2Fz
c2VydF9jbXBzdHIoY2xpcGJvYXJkVGV4dC5nZXQoKSwgPT0sICJBbGwgd29yayBhbmQgbm8gcGxh
eSBtYWtlIEphY2sgYSBkdWxsIGJveS4iKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+Y29w
eUNsaXBib2FyZCgpLCA9PSwgIkFsbCB3b3JrIGFuZCBubyBwbGF5IG1ha2UgSmFjayBhIGR1bGwg
Ym95LiIpOwogfQogCiBzdGF0aWMgdm9pZCBsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlv
bihFZGl0b3JUZXN0KiB0ZXN0LCBib29sIGNvbnRlbnRFZGl0YWJsZSkKQEAgLTI4Niw4ICszMzcs
NyBAQCBzdGF0aWMgdm9pZCBsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlvbihFZGl0b3JU
ZXN0KiB0ZXN0LCBib29sIGNvbnRlbnRFZGl0YQogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUo
KTsKIAogICAgIC8vIEN1dCB0aGUgc2VsZWN0aW9uIHRvIHRoZSBjbGlwYm9hcmQgdG8gc2VlIGlm
IHRoZSB2aWV3IGlzIGluZGVlZCBlZGl0YWJsZS4KLSAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBi
b2FyZFRleHQodGVzdC0+Y3V0U2VsZWN0aW9uKCkpOwotICAgIGdfYXNzZXJ0X2NtcHN0cihjbGlw
Ym9hcmRUZXh0LmdldCgpLCA9PSwgIm1ha2UgSmFjayBhIGR1bGwiKTsKKyAgICBnX2Fzc2VydF9j
bXBzdHIodGVzdC0+Y3V0U2VsZWN0aW9uKCksID09LCAibWFrZSBKYWNrIGEgZHVsbCIpOwogCiAg
ICAgLy8gUmVzZXQgdGhlIGVkaXRhYmxlIGZvciBuZXh0IHRlc3QuCiAgICAgdGVzdC0+c2V0RWRp
dGFibGUoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RNYWluLmgKaW5kZXggZTBmNmNlYTk2MTM0Li4xNDQ1MzExZjZmODYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAtMTM4LDcgKzEzOCw5
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICJ3ZWJzaXRlLWRhdGEtbWFuYWdlciIsIHdlYnNpdGVE
YXRhTWFuYWdlci5nZXQoKSwKICNpZiBQTEFURk9STShHVEspCiAgICAgICAgICAgICAicHJvY2Vz
cy1zd2FwLW9uLWNyb3NzLXNpdGUtbmF2aWdhdGlvbi1lbmFibGVkIiwgVFJVRSwKKyNpZiAhVVNF
KEdUSzQpCiAgICAgICAgICAgICAidXNlLXN5c3RlbS1hcHBlYXJhbmNlLWZvci1zY3JvbGxiYXJz
IiwgRkFMU0UsCisjZW5kaWYKICNlbmRpZgogICAgICAgICAgICAgbnVsbHB0cikpKTsKICAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3dlYkNv
bnRleHQuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwCmluZGV4IDAzY2Y5MDQ4MWI1Ny4uNTFi
ZjM4YTExZTZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9ndGsvV2ViVmlld1Rlc3RHdGsuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHAKQEAgLTI4LDggKzI4LDEzIEBACiAKIHZv
aWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3JtRGVzdHJveSgpCiB7CisjaWYgVVNFKEdUSzQpCisgICAg
aWYgKG1fcGFyZW50V2luZG93KQorICAgICAgICBndGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRP
VyhtX3BhcmVudFdpbmRvdykpOworI2Vsc2UKICAgICBpZiAobV9wYXJlbnRXaW5kb3cpCiAgICAg
ICAgIGd0a193aWRnZXRfZGVzdHJveShtX3BhcmVudFdpbmRvdyk7CisjZW5kaWYKIH0KIAogdm9p
ZCBXZWJWaWV3VGVzdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpCkBAIC02NSwxMSArNzAs
MTggQEAgdm9pZCBXZWJWaWV3VGVzdDo6aGlkZVZpZXcoKQogdm9pZCBXZWJWaWV3VGVzdDo6c2hv
d0luV2luZG93KGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICBnX2Fzc2VydF9udWxsKG1f
cGFyZW50V2luZG93KTsKKyNpZiBVU0UoR1RLNCkKKyAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193
aW5kb3dfbmV3KCk7CisgICAgZ3RrX3dpbmRvd19zZXRfY2hpbGQoR1RLX1dJTkRPVyhtX3BhcmVu
dFdpbmRvdyksIEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisjZWxzZQogICAgIG1fcGFyZW50V2lu
ZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRPV19UT1BMRVZFTCk7Ci0gICAgaWYgKHdpZHRo
ICYmIGhlaWdodCkKLSAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5E
T1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKICAgICBndGtfY29udGFpbmVyX2Fk
ZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsK
ICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyNlbmRpZgorCisg
ICAgaWYgKHdpZHRoICYmIGhlaWdodCkKKyAgICAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9z
aXplKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKKwogICAgIGd0
a193aWRnZXRfc2hvdyhtX3BhcmVudFdpbmRvdyk7CiAKICAgICB3aGlsZSAoZ19tYWluX2NvbnRl
eHRfcGVuZGluZyhudWxscHRyKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3Rr
L1BsYXRmb3JtVXRpbGl0aWVzR3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRm
b3JtVXRpbGl0aWVzR3RrLmNwcAppbmRleCAzZmFjOWQ3ZDdmZTIuLjM3NzNlZTJiMDdlZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9ndGsvUGxhdGZvcm1VdGlsaXRpZXNHdGsuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtVXRpbGl0aWVzR3RrLmNwcApA
QCAtNjgsNyArNjgsNyBAQCBXS1VSTFJlZiBVUkxGb3JOb25FeGlzdGVudFJlc291cmNlKCkKIAog
Ym9vbCBpc0tleURvd24oV0tOYXRpdmVFdmVudFB0ciBldmVudCkKIHsKLSAgICByZXR1cm4gZXZl
bnQtPnR5cGUgPT0gR0RLX0tFWV9QUkVTUzsKKyAgICByZXR1cm4gZ2RrX2V2ZW50X2dldF9ldmVu
dF90eXBlKGNvbnN0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkpID09IEdES19LRVlfUFJFU1M7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFV0aWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0
Zm9ybVdlYlZpZXdHdGsuY3BwCmluZGV4IDUyOTMyOTZkYzc0OC4uNWIzZWM2ZmUzYTI5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ3RrL1BsYXRmb3JtV2ViVmlld0d0ay5jcHAKQEAgLTYy
LDE1ICs2MiwyNCBAQCBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYg
cmVsYXRlZFBhZ2UpCiAKIFBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCiB7Cisj
aWYgVVNFKEdUSzQpCisgICAgZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1cobV93aW5kb3cp
KTsKKyNlbHNlCiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1fd2luZG93KTsKKyNlbmRpZgogfQog
CiB2b2lkIFBsYXRmb3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgbV93aW5kb3cgPSBndGtfd2luZG93X25ldyhHVEtfV0lO
RE9XX1RPUExFVkVMKTsKICAgICBtX3ZpZXcgPSBXS1ZpZXdDcmVhdGUoY29uZmlndXJhdGlvbik7
CisjaWYgVVNFKEdUSzQpCisgICAgbV93aW5kb3cgPSBndGtfd2luZG93X25ldygpOworICAgIGd0
a193aW5kb3dfc2V0X2NoaWxkKEdUS19XSU5ET1cobV93aW5kb3cpLCBHVEtfV0lER0VUKG1fdmll
dykpOworI2Vsc2UKKyAgICBtX3dpbmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9Q
TEVWRUwpOwogICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV93aW5kb3cpLCBH
VEtfV0lER0VUKG1fdmlldykpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG1fdmll
dykpOworI2VuZGlmCiAgICAgZ3RrX3dpZGdldF9zaG93KG1fd2luZG93KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>