<?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>173702</bug_id>
          
          <creation_ts>2017-06-22 02:05:33 -0700</creation_ts>
          <short_desc>[WPE] Build glib API tests</short_desc>
          <delta_ts>2017-06-22 04:12:51 -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>WPE WebKit</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>173705</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1321801</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 02:05:33 -0700</bug_when>
    <thetext>Many of the tests pass without problems, others need to be investigated, and some others are known issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321806</commentid>
    <comment_count>1</comment_count>
      <attachid>313600</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 02:17:06 -0700</bug_when>
    <thetext>Created attachment 313600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321807</commentid>
    <comment_count>2</comment_count>
      <attachid>313601</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 02:28:11 -0700</bug_when>
    <thetext>Created attachment 313601
Patch

I forgot to git add the wpe makefile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321819</commentid>
    <comment_count>3</comment_count>
      <attachid>313606</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 03:05:02 -0700</bug_when>
    <thetext>Created attachment 313606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321820</commentid>
    <comment_count>4</comment_count>
      <attachid>313606</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-22 03:15:42 -0700</bug_when>
    <thetext>Comment on attachment 313606
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:57
&gt; +#if PLATFORM(GTK)
&gt;              memset(&amp;m_geometry, 0, sizeof(GdkRectangle));
&gt; +#endif

sizeof(GdkRectangle) is wrong, should be cairo_rectangle_int_t.

&gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:97
&gt; +#if PLATFORM(GTK)
&gt;              g_assert_cmpint(m_geometry.x, ==, other.m_geometry.x);
&gt;              g_assert_cmpint(m_geometry.y, ==, other.m_geometry.y);
&gt;              g_assert_cmpint(m_geometry.width, ==, other.m_geometry.width);
&gt;              g_assert_cmpint(m_geometry.height, ==, other.m_geometry.height);
&gt; +#endif

Can&apos;t this work for WPE as well with m_geometry being cairo_rectangle_int_t? Or is webkit_window_properties_get_geometry() not implemented for WPE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321821</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 03:20:18 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #4)
&gt; Comment on attachment 313606 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313606&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:57
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;              memset(&amp;m_geometry, 0, sizeof(GdkRectangle));
&gt; &gt; +#endif
&gt; 
&gt; sizeof(GdkRectangle) is wrong, should be cairo_rectangle_int_t.

There&apos;s no geometry in WPE yet, we need to figure out how to expose it. I used cairo rectangle in the other cases to reduce the amount of ifdefs, but it&apos;s not expected to work until we expose rectangle in WPE API.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitGLib/TestUIClient.cpp:97
&gt; &gt; +#if PLATFORM(GTK)
&gt; &gt;              g_assert_cmpint(m_geometry.x, ==, other.m_geometry.x);
&gt; &gt;              g_assert_cmpint(m_geometry.y, ==, other.m_geometry.y);
&gt; &gt;              g_assert_cmpint(m_geometry.width, ==, other.m_geometry.width);
&gt; &gt;              g_assert_cmpint(m_geometry.height, ==, other.m_geometry.height);
&gt; &gt; +#endif
&gt; 
&gt; Can&apos;t this work for WPE as well with m_geometry being cairo_rectangle_int_t?
&gt; Or is webkit_window_properties_get_geometry() not implemented for WPE?

Exactly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321827</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 04:12:51 -0700</bug_when>
    <thetext>Committed r218686: &lt;http://trac.webkit.org/changeset/218686&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313600</attachid>
            <date>2017-06-22 02:17:06 -0700</date>
            <delta_ts>2017-06-22 02:28:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wpe-unit-tests.diff</filename>
            <type>text/plain</type>
            <size>93764</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQK
aW5kZXggNmM0ZjliZmRhYzYuLjU4OGFmY2JmMjhhIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxp
c3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsOSBAQCBlbHNl
aWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiV1BFIikKICAgICBpZiAoREVWRUxPUEVSX01PREUpCiAg
ICAgICAgIGFkZF9zdWJkaXJlY3RvcnkoSW1hZ2VEaWZmKQogICAgICAgICBhZGRfc3ViZGlyZWN0
b3J5KFdlYktpdFRlc3RSdW5uZXIpCisgICAgICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAg
ICAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJL2dsaWIpCisgICAgICAgIGVu
ZGlmICgpCiAgICAgZW5kaWYgKCkKIGVsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJXaW4iKQog
ICAgIGFkZF9zdWJkaXJlY3RvcnkoRHVtcFJlbmRlclRyZWUpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjI4ZjExNzRhYjUuLmEwM2IzY2VmMDk1
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTI1IEBACiAyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAorICAgICAgICBbV1BFXSBCdWlsZCBnbGliIEFQSSB0ZXN0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFueSBvZiB0aGUgdGVz
dHMgcGFzcyB3aXRob3V0IHByb2JsZW1zLCBvdGhlcnMgbmVlZCB0byBiZSBpbnZlc3RpZ2F0ZWQs
IGFuZCBzb21lIG90aGVycyBhcmUga25vd24gaXNzdWVzLiBUaGUKKyAgICAgICAgbWFpbiBkaWZm
ZXJlbmNlIGJldHdlZW4gdGhlIEdUSysgYW5kIFdQRSBXZWJLaXRXZWJWaWV3IGlzIHRoYXQgaW4g
R1RLKyBpdCdzIGEgR3RrV2lkZ2V0LCBzbyBpbml0aWFsbHkKKyAgICAgICAgdW5vd25lZC4gVGhl
IHRlc3RzIGFzc3VtZSB0aGF0IHdlYmtpdF93ZWJfdmlld19uZXcgbWV0aG9kcyByZXR1cm4gYSBm
bG9hdGluZyByZWZlcmVuY2UuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICBUZXN0OjphZG9wdFZp
ZXcoKSBtZXRob2QgdGhhdCByZXR1cm5zIGEgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3aXRoIGEg
ZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGluIEdUSysgYW5kCisgICAgICAgIFdQRS4gSW4gdGhl
IGNhc2Ugb2YgR1RLKywgaXQgc2lua3MgdGhlIGZsb2F0aW5nIHJlZmVyZW5jZSwgd2hpbGUgaW4g
V1BFIGl0IHNpbXBseSBhZG9wdHMgdGhlIHJlZmVyZW5jZS4gQW5vdGhlcgorICAgICAgICBkaWZm
ZXJlbmNlIGlzIHRoYXQgaW4gR1RLKyB0aGUgd2ViIHZpZXcgaXMgaW5pdGlhbGx5IGhpZGRlbiBh
bmQgbmVlZHMgdG8gYmUgYWRkZWQgdG8gYSB3aW5kb3cgdG8gbWFrZSBpdAorICAgICAgICB2aXNp
YmxlLiBBbHNvLCBzb21lIHRlc3RzIG5lZWQgdGhlIHdlYiB2aWV3IHRvIGJlIHJlYWxpemVkIHRv
IHdvcmssIGFuZCBvdGhlcnMgbmVlZCB0aGF0IHRoZSB2aWV3IGlzIGFkZGVkIHRvIGEKKyAgICAg
ICAgdG9wbGV2ZWwgd2luZG93LCBpbnN0ZWFkIG9mIGEgcG9wdXAgd2luZG93LiBBbGwgdGhvc2Ug
dGhpbmdzIGFyZSBub3QgbmVlZGVkIGF0IGFsbCBpbiBXUEUuIEkndmUgYWRkZWQgc2V2ZXJhbAor
ICAgICAgICAjaWZkZWZzIHdpdGggRklYTUUgY29tbWVudHMgZm9yIHRoZSB0aGluZ3MgdGhhdCB3
ZSBrbm93IGRvbid0IHdvcmsgaW4gV1BFIHlldCwgZm9yIGV4YW1wbGUsIGJlY2F1c2Ugd2UgaGF2
ZW4ndAorICAgICAgICBpbXBsZW1lbnRlZCB0aGUgbWV0aG9kcyB0byBzZW5kIGV2ZW50cyB0byB0
aGUgd2ViIHZpZXcuIFRob3NlIHdpbGwgYmUgcmVtb3ZlZCBldmVudHVhbGx5IHdoZW4gd2UgZml4
IHRoZSBpc3N1ZXMKKyAgICAgICAgYW5kIGltcGxlbWVudCB0aGUgbWlzc2luZyBmZWF0dXJlcy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9FZGl0b3JUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHRlc3RB
dXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgICh0ZXN0
V2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZVdpdGhGb3JtRGF0YSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld05hdmln
YXRpb25BZnRlclNlc3Npb25SZXN0b3JlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyRXBoZW1lcmFsKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHA6CisgICAg
ICAgICh0ZXN0QmxvYkRvd25sb2FkKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNw
cDoKKyAgICAgICAgKHRlc3RQcm9jZXNzUGVyV2ViVmlldyk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwOgorICAgICAgICAodGVzdFdlYlZp
ZXdDcmVhdGVOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgICh0ZXN0V2ViVmlld0phdmFTY3JpcHRE
aWFsb2dzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk6CisgICAgICAg
ICh0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVl
c3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoYmVmb3JlQWxsKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHA6CisgICAgICAgICh0ZXN0UHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZpbmRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlckhpZGUpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGlu
Z3MuY3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdOZXdXaXRoVXNlckNv
bnRlbnRNYW5hZ2VyKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KHRlc3RXZWJDb250ZXh0RXBoZW1lcmFsKToKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0UHJveHlT
ZXR0aW5ncyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
Vmlld1dlYkNvbnRleHQpOgorICAgICAgICAodGVzdFdlYlZpZXdXZWJDb250ZXh0TGlmZXRpbWUp
OgorICAgICAgICAodGVzdFdlYlZpZXdFcGhlbWVyYWwpOgorICAgICAgICAodGVzdFdlYlZpZXdT
ZXR0aW5ncyk6CisgICAgICAgICh0ZXN0V2ViVmlld0NhblNob3dNSU1FVHlwZSk6CisgICAgICAg
ICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKHRlc3RXZWJWaWV3SXNQbGF5
aW5nQXVkaW8pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKHRlc3RXZWJz
aXRlRGF0YUVwaGVtZXJhbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAoZG9jdW1lbnRMb2FkZWRDYWxsYmFj
ayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKyAgICAgICAgKG1ldGhvZENhbGxD
YWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlBy
b2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHA6Cisg
ICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9U
ZXN0TWFpbi5oOgorICAgICAgICAoVGVzdDo6YWRvcHRWaWV3KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcDoKKyAgICAgICAgKFdlYktp
dFRlc3RCdXM6OnJ1bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6On5XZWJWaWV3VGVzdCk6Cisg
ICAgICAgIChXZWJWaWV3VGVzdDo6aW5pdGlhbGl6ZVdlYlZpZXcpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJWaWV3VGVzdDo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpx
dWl0TWFpbkxvb3BBZnRlclByb2Nlc3NpbmdQZW5kaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYlZp
ZXdUZXN0OjpyZXNpemVWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpoaWRlVmlldyk6Cisg
ICAgICAgIChwYXJlbnRXaW5kb3dNYXBwZWQpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnNob3dJ
bldpbmRvdyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93QW5kV2FpdFVudGls
TWFwcGVkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyk6CisgICAgICAgIChX
ZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1dHRvbik6CisgICAgICAgIChXZWJWaWV3VGVzdDo6ZW1p
dFBvcHVwTWVudVNpZ25hbCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKToKKyAg
ICAgICAgKFdlYlZpZXdUZXN0Ojpkb01vdXNlQnV0dG9uRXZlbnQpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL3dwZS9XZWJWaWV3VGVzdFdQRS5jcHA6IENvcGllZCBm
cm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5o
LgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnBsYXRmb3JtRGVzdHJveSk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3VGVz
dDo6cXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cyk6CisgICAgICAgIChX
ZWJWaWV3VGVzdDo6cmVzaXplVmlldyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6aGlkZVZpZXcp
OgorICAgICAgICAoV2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjpjbGlja01vdXNlQnV0dG9uKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2Up
OgorCisyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKwogICAgICAgICBbR1RLXSBNb3ZlIFdlYktpdDIgR0xpYiBBUEkgdGVzdHMgdG8gZ2xpYiBk
aXJlY3RvcmllcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczNjQyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9FZGl0b3JUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9FZGl0b3JUZXN0LmNwcAppbmRleCA4NzMzNDQyNzE4Ni4uYzIyZDhhYjM4OTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9FZGl0b3JUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRWRpdG9yVGVzdC5jcHAK
QEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIldlYlBy
b2Nlc3NUZXN0LmgiCi0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgog
CiAjZGVmaW5lIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQogI2luY2x1ZGUgPHdlYmtpdGRv
bS9XZWJLaXRET01ET01TZWxlY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKaW5kZXggYTMyZDNlNTJmZTUuLmRlODAzMTQz
ZGMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJh
bWVUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJh
bWVUZXN0LmNwcApAQCAtMjEsNyArMjEsNiBAQAogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3Qu
aCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4
dGVuc2lvbi5oPgogCiBjbGFzcyBXZWJLaXRGcmFtZVRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rl
c3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA2Njk3NDNjNzIx
Yy4uMzFjZDY4NmY5NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yNjYsMTIg
KzI2NiwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lv
bihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogICAgIGdfYXNzZXJ0KCF0ZXN0LT5j
cmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChudWxscHRyKSk7CiAKICAgICAvLyBXaWxsIGFs
c28gZmFpbCBpZiB0aGUgd2ViIHZpZXcgaXMgbm90IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4K
LSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7
CisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkp
KTsKICAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQod2Vi
Vmlldy5nZXQoKSkpOwogCiAgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJvcGVyIHdlYiB2
aWV3LgotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksICJp
cy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLCBudWxscHRyKSk7CisgICAgd2ViVmll
dyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJ3
ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgImlzLWNvbnRyb2xsZWQtYnkt
YXV0b21hdGlvbiIsIFRSVUUsIG51bGxwdHIpKTsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3Zp
ZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsKICAgICBnX2Fz
c2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dCh3ZWJWaWV3LmdldCgpKSk7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
QmFja0ZvcndhcmRMaXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBmZDJmYmY1ZjIzNy4uYWYyMjRjMWE1NmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QmFj
a0ZvcndhcmRMaXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTIxLDEwICsyMSw4IEBACiAKICNpbmNsdWRl
ICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAKIC8vIEJhY2sgZm9yd2FyZCBsaXN0
IGxpbWl0IGlzIDEwMCBieSBkZWZhdWx0Lgogc3RhdGljIGNvbnN0IGludCBrQmFja0ZvcndhcmRM
aXN0TGltaXQgPSAxMDA7CkBAIC0yNjgsNyArMjY2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktp
dFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnQKIHsKICAgICBXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKiBzdGF0ZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfc2Vzc2lvbl9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KHN0
YXRlKTsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBhdXRvIHZpZXcgPSBUZXN0OjphZG9wdFZpZXco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGJmTGlz
dCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAg
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChi
Zkxpc3QpLCA9PSwgMCk7CiAgICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0
ZSh2aWV3LmdldCgpLCBzdGF0ZSk7CkBAIC0yNzcsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnQKICAgICBnX2Fzc2VydChkYXRhKTsKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmll
d19zZXNzaW9uX3N0YXRlX25ldyhkYXRhLmdldCgpKTsKICAgICBnX2Fzc2VydChzdGF0ZSk7Ci0g
ICAgdmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3Qg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZM
aXN0KSwgPT0sIDApOwogICAgIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUo
dmlldy5nZXQoKSwgc3RhdGUpOwpAQCAtMzIwLDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50CiAgICAgc3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9uZXcoZGF0
YS5nZXQoKSk7CiAgICAgZ19hc3NlcnQoc3RhdGUpOwogCi0gICAgdmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZpZXcgPSBUZXN0OjphZG9wdFZpZXco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdl
YmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwpA
QCAtMzQ5LDcgKzM0Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0
YXRlV2l0aEZvcm1EYXRhKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsCiAKICAgICBXZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlKiBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9z
dGF0ZSh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KHN0YXRlKTsKLSAgICBHUmVmUHRy
PFdlYktpdFdlYlZpZXc+IHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKKyAgICBhdXRvIHZpZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGJmTGlzdCA9IHdlYmtpdF93ZWJfdmll
d19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChiZkxpc3QpLCA9PSwgMCk7CiAg
ICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZSh2aWV3LmdldCgpLCBzdGF0
ZSk7CkBAIC0zNTgsNyArMzU2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlZpZXdTZXNz
aW9uU3RhdGVXaXRoRm9ybURhdGEoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwKICAgICBnX2Fz
c2VydChkYXRhKTsKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX25l
dyhkYXRhLmdldCgpKTsKICAgICBnX2Fzc2VydChzdGF0ZSk7Ci0gICAgdmlldyA9IFdFQktJVF9X
RUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZpZXcgPSBUZXN0OjphZG9wdFZp
ZXcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAg
IHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUp
OwpAQCAtMzc2LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3TmF2aWdh
dGlvbkFmdGVyU2Vzc2lvblJlc3RvcmUoQmFja0ZvcndhcmRMaXN0VGVzdCoKIHsKICAgICAvLyBU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBub3JtYWwgbG9hZCBhZnRlciBhIHNlc3Npb24gcmVzdG9y
ZSB3aXRoIGEgQmFja0ZvcmFyZCBsaXN0IGhhdmluZwogICAgIC8vIGZvcndhcmQgaXRlbXMgZG9l
c24ndCBwcm9kdWNlIGFueSBydW50aW1lIGNyaXRpY2FsIHdhcm5pbmcuIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMjMzLgotICAgIEdSZWZQdHI8V2ViS2l0
V2ViVmlldz4gdmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwor
ICAgIGF1dG8gdmlldyA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qodmlldy5nZXQoKSwgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJB
Q0sodmlld0xvYWRDaGFuZ2VkKSwgdGVzdC0+bV9tYWluTG9vcCk7CiAKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkodmlldy5nZXQoKSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL1BhZ2Ux
IikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29uc29sZU1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggNzAxOTQ0MGRmOTAuLmE4OWM4
MTkyMjI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdENvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcApAQCAtMjAsOSArMjAsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxndGsv
Z3RrLmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAKKyNpZiBQTEFURk9STShHVEsp
CiBjbGFzcyBDb25zb2xlTWVzc2FnZVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGlj
OgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29uc29sZU1lc3NhZ2VUZXN0KTsKQEAgLTE0
MSwxMyArMTQwLDE3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZVNlY3Vy
aXR5RXJyb3IoQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29uCiAgICAgdGVzdC0+d2FpdFVu
dGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwogICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29s
ZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgLy8gRklYTUU6IFVzZSBKU0MgQVBJIHRvIHNl
bmQgc2NyaXB0IG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdC4KKyNpZiBQTEFURk9STShHVEspCiAg
ICAgQ29uc29sZU1lc3NhZ2VUZXN0OjphZGQoIldlYktpdENvbnNvbGVNZXNzYWdlIiwgImNvbnNv
bGUtYXBpIiwgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlQ29uc29sZUFQSSk7CiAgICAgQ29uc29s
ZU1lc3NhZ2VUZXN0OjphZGQoIldlYktpdENvbnNvbGVNZXNzYWdlIiwgImpzLWV4Y2VwdGlvbiIs
IHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUphdmFTY3JpcHRFeGNlcHRpb24pOwogICAgIENvbnNv
bGVNZXNzYWdlVGVzdDo6YWRkKCJXZWJLaXRDb25zb2xlTWVzc2FnZSIsICJuZXR3b3JrLWVycm9y
IiwgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlTmV0d29ya0Vycm9yKTsKICAgICBDb25zb2xlTWVz
c2FnZVRlc3Q6OmFkZCgiV2ViS2l0Q29uc29sZU1lc3NhZ2UiLCAic2VjdXJpdHktZXJyb3IiLCB0
ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VTZWN1cml0eUVycm9yKTsKKyNlbmRpZgogfQogCiB2b2lk
IGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGRmNWYzZGRlZDkzLi4xYmU4Y2Mw
ZDA2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgc3RhdGljIHZv
aWQgdGVzdENvb2tpZU1hbmFnZXJFcGhlbWVyYWwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50
KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Vmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVy
YWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggNzU2MDQ2MGFi
ZjQuLjgyMDA3NzMxZDcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3BwCkBAIC0yMiwxMCArMjIsOCBAQAogI2luY2x1
ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogI2luY2x1
ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0
Mi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtNjcxLDYgKzY2OSw3IEBA
IHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZE1JTUVUeXBlKERvd25sb2FkVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5kRGVsZXRlRmlsZShkb3du
bG9hZC5nZXQoKSwgZXhwZWN0ZWRGaWxlbmFtZS5nZXQoKSk7CiB9CiAKKyNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0
SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkK
IHsKICAgICBnX2Fzc2VydChXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1bHQp
KTsKQEAgLTcyNiwxMCArNzI1LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURvd25s
b2FkQWN0aW9ucyhXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgZ19h
c3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dldF9zaXplKGRvd25sb2FkRmlsZUluZm8uZ2V0KCkp
LCA+LCAwKTsKICAgICBnX2ZpbGVfZGVsZXRlKGRvd25sb2FkRmlsZS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cik7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMgdm9pZCB0ZXN0
QmxvYkRvd25sb2FkKFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1h
cHBlZCgpOworI2VuZGlmCiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogbGlua0Jsb2JIVE1MID0K
ICAgICAgICAgIjxodG1sPjxib2R5PiIKQEAgLTc3OCw4ICs3ODAsMTQgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJw
b2xpY3ktZGVjaXNpb24tZG93bmxvYWQiLCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZCk7CiAg
ICAgUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3Q6OmFkZCgiRG93bmxvYWRzIiwgInBvbGljeS1k
ZWNpc2lvbi1kb3dubG9hZC1jYW5jZWwiLCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZENhbmNl
bCk7CiAgICAgRG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJtaW1lLXR5cGUiLCB0ZXN0
RG93bmxvYWRNSU1FVHlwZSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBrZXlTdHJva2UgaW4g
V1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3RG93bmxvYWRUZXN0OjphZGQoIkRv
d25sb2FkcyIsICJjb250ZXgtbWVudS1kb3dubG9hZC1hY3Rpb25zIiwgdGVzdENvbnRleHRNZW51
RG93bmxvYWRBY3Rpb25zKTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW91c2Ug
Y2xpY2sgaW4gV1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3RG93bmxvYWRUZXN0
OjphZGQoIkRvd25sb2FkcyIsICJibG9iLWRvd25sb2FkIiwgdGVzdEJsb2JEb3dubG9hZCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZyYW1lLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0RnJhbWUuY3BwCmluZGV4IDkxNDVhYjgxM2NlLi4yNTQ1N2Q3
ZmZjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RGcmFtZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RGcmFtZS5jcHAKQEAgLTIwLDggKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIldlYlZpZXdUZXN0LmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHdl
YmtpdDIvd2Via2l0Mi5oPgogCiBzdGF0aWMgdm9pZCB3ZWJraXRGcmFtZVRlc3RSdW4oV2ViVmll
d1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIHRlc3ROYW1lKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGYzZTI4ZDE2NzQ4Li43OTQ2NzA3MThhNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcApAQCAtMjUs
NyArMjUsNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNpbmNsdWRlICJXZWJLaXRU
ZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcAppbmRleCAwMjBh
ZDM1MjlhMi4uNTViOTk4ODA3ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHAKQEAgLTIyLDcgKzIyLDYg
QEAKICNpbmNsdWRlICJUZXN0TWFpbi5oIgogI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNp
bmNsdWRlICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bVZpZXdzID0g
MjsKQEAgLTU5LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgZ19hc3NlcnRfY21w
dWludChpbmRleCwgPCwgbnVtVmlld3MpOwogCi0gICAgICAgIG1fd2ViVmlld3NbaW5kZXhdID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KG1fd2ViQ29u
dGV4dC5nZXQoKSkpOworICAgICAgICBtX3dlYlZpZXdzW2luZGV4XSA9IFRlc3Q6OmFkb3B0Vmll
dyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChtX3dlYkNvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCht
X3dlYlZpZXdzW2luZGV4XS5nZXQoKSkpOwogCiAgICAgICAgIG1fd2ViVmlld0J1c05hbWVzW2lu
ZGV4XSA9IEdVbmlxdWVQdHI8Y2hhcj4oZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0JXUiLCBUZXN0OjpzX3dlYkV4dGVuc2lvbklEKSk7CkBAIC04OSw2ICs4
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAgICAgfQogCisjaWYg
UExBVEZPUk0oR1RLKQogICAgIHN0YXRpYyB2b2lkIG5hbWVWYW5pc2hlZENhbGxiYWNrKEdEQnVz
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgZ2NoYXIqIG5hbWUsIGdwb2ludGVyIHVzZXJE
YXRhKQogICAgIHsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxv
b3AqPih1c2VyRGF0YSkpOwpAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgICAgICBnX2J1c191bndhdGNoX25hbWUod2F0
Y2hlcklEKTsKICAgICB9CisjZW5kaWYKIAogICAgIEdNYWluTG9vcCogbV9tYWluTG9vcDsKICAg
ICB1bnNpZ25lZCBtX2luaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQ7CkBAIC0xMjks
MTIgKzEzMCwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJvY2Vzc1BlcldlYlZpZXcoTXVsdGlwcm9j
ZXNzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+
bV93ZWJWaWV3QnVzTmFtZXNbMF0uZ2V0KCksICE9LCB0ZXN0LT5tX3dlYlZpZXdCdXNOYW1lc1sx
XS5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT53ZWJQcm9jZXNzUGlkKDApLCAh
PSwgdGVzdC0+d2ViUHJvY2Vzc1BpZCgxKSk7CiAKKyNpZiBQTEFURk9STShHVEspCiAgICAgLy8g
Q2hlY2sgdGhhdCB3ZWIgcHJvY2Vzc2VzIGZpbmlzaCB3aGVuIHRoZSB3ZWIgdmlldyBpcyBkZXN0
cm95ZWQgZXZlbiB3aGVuIGl0J3Mgbm90IGZpbmFsaXplZC4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTc4My4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtVmlld3M7IGkrKykgewogICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlZp
ZXc+IHdlYlZpZXcgPSB0ZXN0LT5tX3dlYlZpZXdzW2ldOwogICAgICAgICB0ZXN0LT5kZXN0cm95
V2ViVmlld0FuZFdhaXRVbnRpbFdlYlByb2Nlc3NGaW5pc2hlcyhpKTsKICAgICB9CisjZW5kaWYK
IH0KIAogY2xhc3MgVUlDbGllbnRNdWx0aXByb2Nlc3NUZXN0OiBwdWJsaWMgVGVzdCB7CkBAIC0x
NDcsNyArMTUwLDcgQEAgcHVibGljOgogICAgICAgICBDbG9zZQogICAgIH07CiAKLSAgICBzdGF0
aWMgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0TmF2aWdhdGlvbkFjdGlvbiosIFVJQ2xpZW50TXVsdGlwcm9jZXNzVGVzdCogdGVzdCkK
KyAgICBzdGF0aWMgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZUNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qLCBVSUNsaWVudE11bHRpcHJvY2Vz
c1Rlc3QqIHRlc3QpCiAgICAgewogICAgICAgICByZXR1cm4gdGVzdC0+dmlld0NyZWF0ZSh3ZWJW
aWV3KTsKICAgICB9CkBAIC0xNjcsNyArMTcwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2lu
aXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQoMCkKICAgICB7CiAgICAgICAgIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbChtX3dlYkNvbnRleHQuZ2V0KCksIFdFQktJ
VF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMpOwotICAgICAgICBt
X3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2Via2l0X3dlYl92
aWV3X25ld193aXRoX2NvbnRleHQobV93ZWJDb250ZXh0LmdldCgpKSkpOworICAgICAgICBtX3dl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQo
bV93ZWJDb250ZXh0LmdldCgpKSk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBnX29iamVj
dF9yZWZfc2luayhtX3dlYlZpZXcpOworI2VuZGlmCiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKIAogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sodmlld0NyZWF0ZUNhbGxiYWNr
KSwgdGhpcyk7CkBAIC0xNzYsNyArMTgyLDcgQEAgcHVibGljOgogICAgIH5VSUNsaWVudE11bHRp
cHJvY2Vzc1Rlc3QoKQogICAgIHsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhp
cyk7Ci0gICAgICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKG1fd2ViVmlldykpOwor
ICAgICAgICBnX29iamVjdF91bnJlZihtX3dlYlZpZXcpOwogICAgIH0KIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVdlYkV4dGVuc2lvbnMoKSBvdmVycmlkZQpAQCAtMTg1LDE5ICsxOTEsMjEgQEAgcHVi
bGljOgogICAgICAgICBtX2luaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQrKzsKICAg
ICB9CiAKLSAgICBHdGtXaWRnZXQqIHZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
KyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7CiAKLSAgICAgICAg
R3RrV2lkZ2V0KiBuZXdXZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRf
dmlldyh3ZWJWaWV3KTsKKyAgICAgICAgYXV0byogbmV3V2ViVmlldyA9IHdlYmtpdF93ZWJfdmll
d19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcod2ViVmlldyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAg
ICAgICBnX29iamVjdF9yZWZfc2luayhuZXdXZWJWaWV3KTsKKyNlbmRpZgogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5ld1dlYlZpZXcpKTsK
ICAgICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVuZChDcmVhdGUpOwogCiAgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdS
ZWFkeVRvU2hvd0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3
V2ViVmlldywgImNsb3NlIiwgR19DQUxMQkFDSyh2aWV3Q2xvc2VDYWxsYmFjayksIHRoaXMpOwog
Ci0gICAgICAgIHJldHVybiBuZXdXZWJWaWV3OworICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9W
SUVXKG5ld1dlYlZpZXcpOwogICAgIH0KIAogICAgIHZvaWQgdmlld1JlYWR5VG9TaG93KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFNTTC5jcHAKaW5kZXggMTBjNWU3M2I2Y2EuLjk2ZjVmNjNhNjExIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCkBAIC0y
MSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGVzdFNlcnZlci5oIgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogc3RhdGljIFdlYktp
dFRlc3RTZXJ2ZXIqIGtIdHRwc1NlcnZlcjsKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrSHR0
cFNlcnZlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RVSUNsaWVudC5jcHAKaW5kZXggMmI5NTQyZjNkZGIuLjg5OTVjOGYyZjI0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50
LmNwcApAQCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIG1fcmVzaXphYmxl
KHRydWUpCiAgICAgICAgICAgICAsIG1fZnVsbHNjcmVlbihmYWxzZSkKICAgICAgICAgeworI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIG1lbXNldCgmbV9nZW9tZXRyeSwgMCwgc2l6ZW9m
KEdka1JlY3RhbmdsZSkpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBXaW5kb3dQcm9w
ZXJ0aWVzKFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRvd1Byb3BlcnRpZXMpCkBAIC02NSwx
MCArNjcsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgLCBtX3Jlc2l6YWJsZSh3ZWJraXRfd2lu
ZG93X3Byb3BlcnRpZXNfZ2V0X3Jlc2l6YWJsZSh3aW5kb3dQcm9wZXJ0aWVzKSkKICAgICAgICAg
ICAgICwgbV9mdWxsc2NyZWVuKHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19nZXRfZnVsbHNjcmVl
bih3aW5kb3dQcm9wZXJ0aWVzKSkKICAgICAgICAgeworI2lmIFBMQVRGT1JNKEdUSykKICAgICAg
ICAgICAgIHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19nZXRfZ2VvbWV0cnkod2luZG93UHJvcGVy
dGllcywgJm1fZ2VvbWV0cnkpOworI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBXaW5kb3dQ
cm9wZXJ0aWVzKEdka1JlY3RhbmdsZSogZ2VvbWV0cnksIGJvb2wgdG9vbGJhclZpc2libGUsIGJv
b2wgc3RhdHVzYmFyVmlzaWJsZSwgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSwgYm9vbCBtZW51YmFy
VmlzaWJsZSwgYm9vbCBsb2NhdGlvbmJhclZpc2libGUsIGJvb2wgcmVzaXphYmxlLCBib29sIGZ1
bGxzY3JlZW4pCisgICAgICAgIFdpbmRvd1Byb3BlcnRpZXMoY2Fpcm9fcmVjdGFuZ2xlX2ludF90
KiBnZW9tZXRyeSwgYm9vbCB0b29sYmFyVmlzaWJsZSwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlLCBi
b29sIHNjcm9sbGJhcnNWaXNpYmxlLCBib29sIG1lbnViYXJWaXNpYmxlLCBib29sIGxvY2F0aW9u
YmFyVmlzaWJsZSwgYm9vbCByZXNpemFibGUsIGJvb2wgZnVsbHNjcmVlbikKICAgICAgICAgICAg
IDogbV9pc051bGwoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZ2VvbWV0cnkoKmdlb21ldHJ5KQog
ICAgICAgICAgICAgLCBtX3Rvb2xiYXJWaXNpYmxlKHRvb2xiYXJWaXNpYmxlKQpAQCAtODUsMTAg
Kzg5LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lkIGFzc2VydEVxdWFsKGNvbnN0IFdpbmRv
d1Byb3BlcnRpZXMmIG90aGVyKSBjb25zdAogICAgICAgICB7CisjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fZ2VvbWV0cnkueCwgPT0sIG90aGVyLm1fZ2Vv
bWV0cnkueCk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQobV9nZW9tZXRyeS55LCA9PSwg
b3RoZXIubV9nZW9tZXRyeS55KTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX2dlb21l
dHJ5LndpZHRoLCA9PSwgb3RoZXIubV9nZW9tZXRyeS53aWR0aCk7CiAgICAgICAgICAgICBnX2Fz
c2VydF9jbXBpbnQobV9nZW9tZXRyeS5oZWlnaHQsID09LCBvdGhlci5tX2dlb21ldHJ5LmhlaWdo
dCk7CisjZW5kaWYKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0aWNfY2FzdDxpbnQ+
KG1fdG9vbGJhclZpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3Rvb2xiYXJW
aXNpYmxlKSk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdGljX2Nhc3Q8aW50Piht
X3N0YXR1c2JhclZpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3N0YXR1c2Jh
clZpc2libGUpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0aWNfY2FzdDxpbnQ+
KG1fc2Nyb2xsYmFyc1Zpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3Njcm9s
bGJhcnNWaXNpYmxlKSk7CkBAIC0xMDEsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgbV9pc051bGw7CiAKLSAgICAgICAgR2RrUmVjdGFuZ2xlIG1fZ2VvbWV0
cnk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCBtX2dlb21ldHJ5OwogCiAgICAgICAg
IGJvb2wgbV90b29sYmFyVmlzaWJsZTsKICAgICAgICAgYm9vbCBtX3N0YXR1c2JhclZpc2libGU7
CkBAIC0xMTgsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICB0ZXN0LT5tX3dpbmRvd1Byb3Bl
cnRpZXNDaGFuZ2VkLmFkZChnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIEd0a1dpZGdldCogdmlld0NyZWF0ZUNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24sIFVJQ2xpZW50
VGVzdCogdGVzdCkKKyAgICBzdGF0aWMgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZUNhbGxiYWNr
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRp
b24sIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7CiAgICAgICAgIHJldHVybiB0ZXN0LT52aWV3
Q3JlYXRlKHdlYlZpZXcsIG5hdmlnYXRpb24pOwogICAgIH0KQEAgLTMwMSwxOSArMzA3LDI0IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNpbXVsYXRlVXNlckludGVyYWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3RJbnB1dCcpLmZvY3VzKCkiLCBudWxscHRyKTsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBrZXlTdHJva2UgaW4gV1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAg
a2V5U3Ryb2tlKEdES19LRVlfYSk7CiAgICAgICAgIGtleVN0cm9rZShHREtfS0VZX2IpOwogICAg
ICAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCiAgICAgICAgICAgICBndGtfbWFpbl9p
dGVyYXRpb24oKTsKKyNlbmRpZgogICAgIH0KIAotICAgIHZpcnR1YWwgR3RrV2lkZ2V0KiB2aWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5h
dmlnYXRpb24pCisgICAgdmlydHVhbCBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCiAgICAg
ewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7CiAgICAgICAgIGdfYXNz
ZXJ0KG5hdmlnYXRpb24pOwogCi0gICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3
ZWJWaWV3KSk7CisgICAgICAgIGF1dG8qIG5ld1dlYlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfY29udGV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldykpOworI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsobmV3V2ViVmlldyk7Cisj
ZW5kaWYKIAogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENyZWF0ZSk7CiAKQEAgLTMy
Niw3ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmll
dywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdSZWFkeVRvU2hvd0NhbGxiYWNrKSwg
dGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNsb3NlIiwgR19D
QUxMQkFDSyh2aWV3Q2xvc2VDYWxsYmFjayksIHRoaXMpOwogCi0gICAgICAgIHJldHVybiBuZXdX
ZWJWaWV3OworICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9WSUVXKG5ld1dlYlZpZXcpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKQEAgLTM5OCw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmF2aWdhdGlvbiA9
IG51bGxwdHI7CiAgICAgfQogCi0gICAgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCisgICAgV2Vi
S2l0V2ViVmlldyogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZp
Z2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uKQogICAgIHsKICAgICAgICAgZ19hc3NlcnQobmF2aWdh
dGlvbik7CiAgICAgICAgIGdfYXNzZXJ0KCFtX25hdmlnYXRpb24pOwpAQCAtNDI1LDcgKzQzNiw5
IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVOYXZpZ2F0aW9uRGF0
YShDcmVhdGVOYXZpZ2F0aW9uRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYg
UExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgp
OworI2VuZGlmCiAKICAgICB0ZXN0LT5sb2FkSFRNTCgKICAgICAgICAgIjxodG1sPjxib2R5PiIK
QEAgLTQ2Miw2ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZU5hdmlnYXRp
b25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVzdCwgZ2NvbgogICAgIGdfYXNzZXJ0
KCF3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25faXNfdXNlcl9nZXN0dXJlKHRlc3QtPm1fbmF2aWdh
dGlvbikpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGdib29sZWFuIGNoZWNrTWlt
ZVR5cGVGb3JGaWx0ZXIoR3RrRmlsZUZpbHRlciogZmlsdGVyLCBjb25zdCBnY2hhciogbWltZVR5
cGUpCiB7CiAgICAgR3RrRmlsZUZpbHRlckluZm8gZmlsdGVySW5mbzsKQEAgLTQ2OSw2ICs0ODMs
NyBAQCBzdGF0aWMgZ2Jvb2xlYW4gY2hlY2tNaW1lVHlwZUZvckZpbHRlcihHdGtGaWxlRmlsdGVy
KiBmaWx0ZXIsIGNvbnN0IGdjaGFyKiBtaW1lVAogICAgIGZpbHRlckluZm8ubWltZV90eXBlID0g
bWltZVR5cGU7CiAgICAgcmV0dXJuIGd0a19maWxlX2ZpbHRlcl9maWx0ZXIoZmlsdGVyLCAmZmls
dGVySW5mbyk7CiB9CisjZW5kaWYKIAogY2xhc3MgTW9kYWxEaWFsb2dzVGVzdDogcHVibGljIFVJ
Q2xpZW50VGVzdCB7CiBwdWJsaWM6CkBAIC00ODAsMTEgKzQ5NSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUnVuQXNNb2RhbCk7CiAgICAgfQogCi0g
ICAgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5h
dmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCisgICAgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0
aW9uKQogICAgIHsKICAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dlYlZpZXcpOwogCi0g
ICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IFVJQ2xpZW50VGVzdDo6dmlld0NyZWF0ZSh3
ZWJWaWV3LCBuYXZpZ2F0aW9uKTsKKyAgICAgICAgYXV0byogbmV3V2ViVmlldyA9IFVJQ2xpZW50
VGVzdDo6dmlld0NyZWF0ZSh3ZWJWaWV3LCBuYXZpZ2F0aW9uKTsKICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFDSyhkaWFsb2dSdW5B
c01vZGFsQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIG5ld1dlYlZpZXc7CiAgICAg
fQpAQCAtNTI4LDcgKzU0Myw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RGlzYWxsb3dNb2Rh
bERpYWxvZ3MoTW9kYWxEaWFsb2dzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlCiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogeworI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisjZW5kaWYKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBodG1sT25Mb2FkRm9ybWF0ID0gIjxodG1sPjxib2R5IG9uTG9hZD1c
IiVzXCI+PC9ib2R5PjwvaHRtbD4iOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqc0FsZXJ0Rm9y
bWF0ID0gImFsZXJ0KCclcycpIjsKQEAgLTYwNyw3ICs2MjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyhVSUNsaWVudFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHdpbmRvd1By
b3JwZXJ0aWVzU3RyaW5nID0gImxlZnQ9MTAwLHRvcD0xNTAsd2lkdGg9NDAwLGhlaWdodD00MDAs
bG9jYXRpb249bm8sbWVudWJhcj1ubyxzdGF0dXM9bm8sdG9vbGJhcj1ubyxzY3JvbGxiYXJzPW5v
IjsKLSAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnkgPSB7IDEwMCwgMTUwLCA0MDAsIDQwMCB9Owor
ICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCBnZW9tZXRyeSA9IHsgMTAwLCAxNTAsIDQwMCwgNDAw
IH07CiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdDo6
V2luZG93UHJvcGVydGllcygmZ2VvbWV0cnksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2UpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHRtbFN0cmluZyhn
X3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5vcGVuKCcnLCAnJywg
JyVzJykuY2xvc2UoKTtcIj48L2JvZHk+PC9odG1sPiIsIHdpbmRvd1Byb3JwZXJ0aWVzU3RyaW5n
KSk7CkBAIC02MjcsNiArNjQ0LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9w
ZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9j
bXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlDbGllbnRUZXN0OjpDbG9zZSk7CiB9CiAKKyNpZiBQTEFU
Rk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0
VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CkBAIC03MzksMTYgKzc1NywxOSBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19h
c3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOwotCiB9CisjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQogCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7CiAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBnZW9jbHVlIGdpdmUgYSBy
dW50aW1lIHdhcm5pbmcgYmVjYXVzZSBpdCB0cmllcwogICAgIC8vIHRvIHJlZ2lzdGVyIHRoZSBl
cnJvciBxdWFyayB0d2ljZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTg1OC4KICAgICAvLyBNYWtlIHdhcm5pbmdzIG5vbi1mYXRhbCBmb3IgdGhpcyB0ZXN0
IHRvIG1ha2UgaXQgcGFzcy4KICAgICB0ZXN0LT5yZW1vdmVMb2dGYXRhbEZsYWcoR19MT0dfTEVW
RUxfV0FSTklORyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0Fu
ZFdhaXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdlb2xv
Y2F0aW9uUmVxdWVzdEhUTUwgPQogICAgICAgICAiPGh0bWw+IgogICAgICAgICAiICA8c2NyaXB0
PiIKQEAgLTc4NCw2ICs4MDUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cAogICAgIGdfYXNz
ZXJ0X2NtcHN0cihyZXN1bHQsICE9LCAiMSIpOwogICAgIHRlc3QtPmFkZExvZ0ZhdGFsRmxhZyhH
X0xPR19MRVZFTF9XQVJOSU5HKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpA
QCAtNzkyLDcgKzgxNCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgZ2Jvb2xlYW4g
ZW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5n
cyk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdz
LCBUUlVFKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRX
YWl0VW50aWxNYXBwZWQoKTsKKyNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1c2VyTWVk
aWFSZXF1ZXN0SFRNTCA9CiAgICAgICAgICI8aHRtbD4iCiAgICAgICAgICIgIDxzY3JpcHQ+IgpA
QCAtODI5LDcgKzg1Myw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwKICAgICBnYm9vbGVhbiBl
bmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdz
KTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3Ms
IFRSVUUpOwogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdh
aXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJNZWRp
YVJlcXVlc3RIVE1MID0KICAgICAgICAgIjxodG1sPiIKICAgICAgICAgIiAgPHNjcmlwdD4iCkBA
IC04NTYsNiArODgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LAogfQogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAKKyNpZiBQTEFURk9STShHVEspCiBjbGFzcyBGaWxlQ2hvb3Nl
clRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNU
X0ZJWFRVUkUoRmlsZUNob29zZXJUZXN0KTsKQEAgLTg5MSw3ICs5MTgsOSBAQCBwcml2YXRlOgog
CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3Qt
PnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGZpbGVDaG9vc2VySFRNTEZvcm1hdCA9ICI8aHRtbD48Ym9keT48aW5wdXQgc3R5
bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDttYXJnaW46MDtwYWRkaW5nOjAnIHR5
cGU9J2ZpbGUnICVzLz48L2JvZHk+PC9odG1sPiI7CiAKICAgICAvLyBNdWx0aXBsZSBzZWxlY3Rp
b25zIG5vdCBhbGxvd2VkLCBubyBNSU1FIGZpbHRlcmluZy4KQEAgLTkwMyw4ICs5MzIsMTAgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgY29uc3QgZ2NoYXIqIGNvbnN0KiBtaW1lVHlw
ZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlwZXMoZmlsZUNob29z
ZXJSZXF1ZXN0KTsKICAgICBnX2Fzc2VydCghbWltZVR5cGVzKTsKKyNpZiBQTEFURk9STShHVEsp
CiAgICAgR3RrRmlsZUZpbHRlciogZmlsdGVyID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9taW1lX3R5cGVzX2ZpbHRlcihmaWxlQ2hvb3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0
KCFmaWx0ZXIpOworI2VuZGlmCiAgICAgY29uc3QgZ2NoYXIqIGNvbnN0KiBzZWxlY3RlZEZpbGVz
ID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3RlZF9maWxlcyhmaWxlQ2hv
b3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0KCFzZWxlY3RlZEZpbGVzKTsKICAgICB3ZWJraXRf
ZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CkBAIC05MTgs
OCArOTQ5LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KEZp
bGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIG1pbWVUeXBlcyA9IHdl
YmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlcyhmaWxlQ2hvb3NlclJlcXVl
c3QpOwogICAgIGdfYXNzZXJ0KCFtaW1lVHlwZXMpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICBm
aWx0ZXIgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlwZXNfZmlsdGVy
KGZpbGVDaG9vc2VyUmVxdWVzdCk7CiAgICAgZ19hc3NlcnQoIWZpbHRlcik7CisjZW5kaWYKICAg
ICBzZWxlY3RlZEZpbGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3Rl
ZF9maWxlcyhmaWxlQ2hvb3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0KCFzZWxlY3RlZEZpbGVz
KTsKIApAQCAtOTYwLDE3ICs5OTMsMjEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hv
b3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0X2NtcHN0cihtaW1lVHlwZXNbMl0sID09LCAiaW1hZ2UvKiIpOwogICAgIGdfYXNzZXJ0
KCFtaW1lVHlwZXNbM10pOwogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIGZpbHRlciA9IHdlYmtp
dF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlc19maWx0ZXIoZmlsZUNob29zZXJS
ZXF1ZXN0KTsKICAgICBnX2Fzc2VydChHVEtfSVNfRklMRV9GSUxURVIoZmlsdGVyKSk7CiAgICAg
Z19hc3NlcnQoY2hlY2tNaW1lVHlwZUZvckZpbHRlcihmaWx0ZXIsICJhdWRpby8qIikpOwogICAg
IGdfYXNzZXJ0KGNoZWNrTWltZVR5cGVGb3JGaWx0ZXIoZmlsdGVyLCAidmlkZW8vKiIpKTsKICAg
ICBnX2Fzc2VydChjaGVja01pbWVUeXBlRm9yRmlsdGVyKGZpbHRlciwgImltYWdlLyoiKSk7Cisj
ZW5kaWYKIAogICAgIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X3NlbGVjdGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiAgICAgZ19hc3NlcnQoIXNl
bGVjdGVkRmlsZXMpOwogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmls
ZUNob29zZXJSZXF1ZXN0KTsKIH0KKyNlbmRpZiAvLyBQTEFURk9STShHVEspCiAKKyNpZiBQTEFU
Rk9STShHVEspCiBjbGFzcyBDb2xvckNob29zZXJUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3Qgewog
cHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29sb3JDaG9vc2VyVGVzdCk7CkBA
IC0xMDcyLDYgKzExMDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJl
cXVlc3QoQ29sb3JDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogCiAgICAgdGVzdC0+
Y2FuY2VsUmVxdWVzdCgpOwogfQorI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIAogdm9pZCBiZWZv
cmVBbGwoKQogewpAQCAtMTA4MSwxNCArMTExOSwyNCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAg
TW9kYWxEaWFsb2dzVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRpc2FsbG93LW1vZGFsLWRp
YWxvZ3MiLCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmll
d0phdmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBtb3ZlIGluIFdQRS4KKyNpZiBQTEFURk9STShH
VEspCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0
IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VPTE9DQVRJ
T04pCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZ2VvbG9jYXRpb24t
cGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdHMpOworI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIs
IHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdWRpby11c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1
ZXN0IiwgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwog
I2VuZGlmCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBjbGljayBpbiBXUEUuCisjaWYg
UExBVEZPUk0oR1RLKQogICAgIEZpbGVDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
ImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QpOwor
I2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKQogICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0NvbG9yQ2hv
b3NlclJlcXVlc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9u
cy5jcHAKaW5kZXggZmE0YWIyZDZjYjEuLjIxNjg4NDJmM2JlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5j
cHAKQEAgLTE4NCw2ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0
ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCBzY3JpcHREaWFsb2dJRCk7CiB9CiAK
KyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgZ2Jvb2xlYW4gcGVybWlzc2lvblJlcXVlc3RDYWxs
YmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QsIFdl
YlZpZXdUZXN0KiB0ZXN0KQogewogICAgIGlmICghV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19N
RURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKQEAgLTI3NCw2ICsyNzUs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybUNvbnRyb2xzQXNzb2NpYXRlZChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogCiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2ln
bmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sIGlkKTsKIH0KKyNlbmRpZiAvLyBQTEFURk9STShH
VEspCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKQEAgLTI4MSwxMyArMjgzLDE4IEBAIHZvaWQgYmVm
b3JlQWxsKCkKICAgICBpZiAoIWJ1cy0+cnVuKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8v
IEZJWE1FOiBVc2UgSlNDIEFQSSBpbiB0aGUgZXh0ZW5zaW9uIHRvIGdldCB0aGUgdGl0bGUgZnJv
bSBKYXZhU2NyaXB0LgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9tLWRvY3VtZW50LXRpdGxlIiwgdGVzdFdlYkV4dGVuc2lv
bkdldFRpdGxlKTsKKyNlbmRpZgogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVu
c2lvbiIsICJkb2N1bWVudC1sb2FkZWQtc2lnbmFsIiwgdGVzdERvY3VtZW50TG9hZGVkU2lnbmFs
KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndlYi1wcm9jZXNzLWNy
YXNoZWQiLCB0ZXN0V2ViS2l0V2ViVmlld1Byb2Nlc3NDcmFzaGVkKTsKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAid2luZG93LW9iamVjdC1jbGVhcmVkIiwgdGVz
dFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOwogICAgIFdlYlZpZXdUZXN0OjphZGQo
IldlYktpdFdlYkV4dGVuc2lvbiIsICJpc29sYXRlZC13b3JsZCIsIHRlc3RXZWJFeHRlbnNpb25J
c29sYXRlZFdvcmxkKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJpbnN0YWxsLW1pc3NpbmctcGx1Z2lucy1wZXJtaXNzaW9uLXJlcXVl
c3QiLCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QpOwogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJmb3JtLWNvbnRyb2xzLWFzc29j
aWF0ZWQtc2lnbmFsIiwgdGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOwor
I2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCmluZGV4IDVhM2IwNTdmZDJiLi4wMDAwNzFkYTRmOSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIGVwaGVt
ZXJhbFZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZl
bnQgbG9hCiAKIHN0YXRpYyB2b2lkIHRlc3RQcml2YXRlQnJvd3NpbmcoRmF2aWNvbkRhdGFiYXNl
VGVzdCogdGVzdCkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAgIGF1dG8g
d2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwKICAg
ICAgICAgImlzLWVwaGVtZXJhbCIsIFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmluZENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNzI4OWZkMzdmOTcuLjQxYmZjNzE0OGNhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dEZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyLmNwcApAQCAtMjAsOCArMjAsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgotI2luY2x1
ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXN0U3RyaW5nID0gIjxo
dG1sPjxib2R5PmZpcnN0IHRlc3Rpbmcgc2Vjb25kIHRlc3Rpbmcgc2Vjb25kSGFsZjwvYm9keT48
L2h0bWw+IjsKQEAgLTI2NCw3ICsyNjIsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xs
ZXJIaWRlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0
LT5sb2FkSHRtbCh0ZXN0U3RyaW5nLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0
VW50aWxNYXBwZWQoKTsKKyNlbmRpZgogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1
cmZhY2UgPSBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZSgKICAgICAgICAgdGVzdC0+Z2V0U25hcHNo
b3RBbmRXYWl0VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQs
IFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0eU9y
aWdpbi5jcHAKaW5kZXggMWNjOWU3NzA5ZWYuLjFiYWZkN2UyZGI1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2lu
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiVGVzdE1haW4uaCIKLSNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHN0YXRpYyB2b2lkIHRlc3RTZWN1
cml0eU9yaWdpbkJhc2ljQ29uc3RydWN0b3IoVGVzdCosIGdjb25zdHBvaW50ZXIpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IGY4ZjE5NjlhMjBkLi5mNDBhMDkxZTFhZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRT
ZXR0aW5ncy5jcHAKQEAgLTI4Myw2ICsyODMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0
dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxv
d191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91cmxzKHNldHRpbmdzLCBUUlVFKTsKICAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9m
aWxlX3VybHMoc2V0dGluZ3MpKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICAvLyBPbmRlbWFu
ZCBpcyB0aGUgZGVmYXVsdCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gcG9saWN5LgogICAgIGdfYXNz
ZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9s
aWN5KHNldHRpbmdzKSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09O
X0RFTUFORCk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25f
cG9saWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BPTElDWV9ORVZF
Uik7CkBAIC0yOTEsNiArMjkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRl
c3QqLCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdz
X2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzKSwgPT0sIFdFQktJVF9I
QVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX0FMV0FZUyk7CiAgICAgd2Via2l0X3NldHRpbmdz
X3NldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdB
UkVfQUNDRUxFUkFUSU9OX1BPTElDWV9PTl9ERU1BTkQpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdz
KSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09OX0RFTUFORCk7Cisj
ZW5kaWYKIAogICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHNldHRpbmdzKSk7CiB9CkBAIC0z
MTUsNiArMzE3LDcgQEAgc3RhdGljIENTdHJpbmcgY29udmVydFdlYlZpZXdNYWluUmVzb3VyY2VE
YXRhVG9DU3RyaW5nKFdlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHJldHVybiBDU3RyaW5nKG1haW5S
ZXNvdXJjZURhdGEsIG1haW5SZXNvdXJjZURhdGFTaXplKTsKIH0KIAorI2lmIFBMQVRGT1JNKEdU
SykKIHN0YXRpYyB2b2lkIGFzc2VydFRoYXRVc2VyQWdlbnRJc1NlbnRJbkhlYWRlcnMoV2ViVmll
d1Rlc3QqIHRlc3QsIGNvbnN0IENTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICB0ZXN0LT5sb2Fk
VVJJKGdTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwpAQCAtMzU5LDYgKzM2Miw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5nc1VzZXJBZ2VudChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9uVXNl
ckFnZW50KGdfc3RyZHVwX3ByaW50ZigiJXMgJXMiLCBkZWZhdWx0VXNlckFnZW50LmRhdGEoKSwg
IldlYkNhdEdUSysvMy40LjUiKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFwcGxpY2F0aW9uVXNl
ckFnZW50LmdldCgpLCA9PSwgd2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRpbmdz
LmdldCgpKSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMgdm9pZCBzZXJ2
ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25z
dCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikK
IHsKQEAgLTM4Myw3ICszODcsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAKICAgICBUZXN0OjphZGQo
IldlYktpdFNldHRpbmdzIiwgIndlYmtpdC1zZXR0aW5ncyIsIHRlc3RXZWJLaXRTZXR0aW5ncyk7
CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZXR0aW5ncyIsICJuZXctd2l0aC1zZXR0aW5ncyIsIHRl
c3RXZWJLaXRTZXR0aW5nc05ld1dpdGhTZXR0aW5ncyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAg
IFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFNldHRpbmdzIiwgInVzZXItYWdlbnQiLCB0ZXN0V2Vi
S2l0U2V0dGluZ3NVc2VyQWdlbnQpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDEzNGFkMzgzNzFhLi5k
MmJiNjkxNmRjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApA
QCAtMjIsOCArMjIsNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRl
ICJXZWJWaWV3VGVzdC5oIgogI2luY2x1ZGUgPGNzdGRhcmc+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5o
PgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTQyLDEwICs0MCwx
MCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFnZXIoVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBHUmVmUHRyPFdlYktpdFVzZXJDb250ZW50
TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9IGFkb3B0R1JlZih3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfbmV3KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOwotICAgIEdS
ZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dl
Yl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHVzZXJDb250ZW50TWFuYWdlcjEu
Z2V0KCkpKTsKKyAgICBhdXRvIHdlYlZpZXcxID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcih1c2VyQ29udGVudE1hbmFnZXIxLmdl
dCgpKSk7CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFu
YWdlcih3ZWJWaWV3MS5nZXQoKSkgPT0gdXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSk7CiAKLSAg
ICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcyID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0Vmlldyh3
ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0KCkpICE9IHVzZXJDb250ZW50TWFuYWdl
cjEuZ2V0KCkpOwogfQogCkBAIC0zMjIsNiArMzIwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJD
b250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2FnZVRlc3Qq
IHQKICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigiYW5vdGhlckhhbmRsZXIiKTsKIH0KIAor
I2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3Jp
cHRNZXNzYWdlRnJvbURPTUJpbmRpbmdzKFVzZXJTY3JpcHRNZXNzYWdlVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIHsKICAgICBnX2Fzc2VydCh0ZXN0LT5yZWdpc3RlckhhbmRsZXIoImRvbSIp
KTsKQEAgLTMzNCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2Vy
U2NyaXB0TWVzc2FnZUZyb21ET01CaW5kaW5ncyhVc2VyU2NyaXB0TWVzc2FnZQogCiAgICAgdGVz
dC0+dW5yZWdpc3RlckhhbmRsZXIoImRvbSIpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHNl
cnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNv
bnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVy
KQogewpAQCAtMzUxLDcgKzM1MSw5IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQi
LCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KTsKICAgICBXZWJWaWV3
VGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc2NyaXB0Iiwg
dGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU2NyaXB0KTsKICAgICBVc2VyU2NyaXB0TWVz
c2FnZVRlc3Q6OmFkZCgiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIiwgInNjcmlwdC1tZXNzYWdl
LXJlY2VpdmVkIiwgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZCk7
CisjaWYgUExBVEZPUk0oR1RLKQogICAgIFVzZXJTY3JpcHRNZXNzYWdlVGVzdDo6YWRkKCJXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIiLCAic2NyaXB0LW1lc3NhZ2UtZnJvbS1kb20tYmluZGluZ3Mi
LCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUZyb21ET01CaW5kaW5ncyk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAppbmRl
eCBlN2IwM2ZlMGRlMS4uZWNmMzUxNDgwNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApA
QCAtMjEsMTAgKzIxLDggQEAKIAogI2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKICNpbmNs
dWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUg
PGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0
Mi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTUzLDExICs1MSwxMSBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dEVwaGVtZXJhbChUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5h
Z2VyKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhl
bWVyYWwobWFuYWdlcikpOwogCi0gICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CiAgICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOwogICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQo
KSkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSkpOwogCi0gICAgd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh0ZXN0LT5tX3dlYkNvbnRleHQu
Z2V0KCkpKTsKKyAgICB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19u
ZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0
KCF3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKICAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0
KCkpID09IG1hbmFnZXIpOwogCkBAIC02OCw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJD
b250ZXh0RXBoZW1lcmFsKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQo
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAgICAg
Z19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3
LmdldCgpKSAhPSBtYW5hZ2VyKTsKIAotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoY29udGV4dC5nZXQoKSkpOworICAgIHdlYlZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoY29u
dGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
d2ViVmlldy5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgPT0gbWFuYWdlcik7CiAKQEAgLTc4LDYgKzc2
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRFcGhlbWVyYWwoVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFs
KGNvbnRleHQuZ2V0KCkpKTsKIH0KIAorI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
Y2xhc3MgUGx1Z2luc1Rlc3Q6IHB1YmxpYyBUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJf
VEVTVF9GSVhUVVJFKFBsdWdpbnNUZXN0KTsKQEAgLTE1Myw2ICsxNTIsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViQ29udGV4dEdldFBsdWdpbnMoUGx1Z2luc1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgZ19hc3NlcnQoZXh0ZW5zaW9ucyk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGV4dGVu
c2lvbnNbMF0sID09LCAidGVzdG5ldHNjYXBlIik7CiB9CisjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBrQmFySFRNTCA9ICI8aHRtbD48
Ym9keT5CYXI8L2JvZHk+PC9odG1sPiI7CiBzdGF0aWMgY29uc3QgY2hhcioga0VjaG9IVE1MRm9y
bWF0ID0gIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iOwpAQCAtMzcwLDYgKzM3MCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSwg
R19JT19FUlJPUiwgR19JT19FUlJPUl9DTE9TRUQpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQog
c3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gdGVzdC0+bV93
ZWJDb250ZXh0LmdldCgpOwpAQCAtNDIyLDYgKzQyMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJD
b250ZXh0U3BlbGxDaGVja2VyKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9zcGVsbF9jaGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQsIFRSVUUp
OwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfZW5h
YmxlZCh3ZWJDb250ZXh0KSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMg
dm9pZCB0ZXN0V2ViQ29udGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKQEAgLTU3OCw2ICs1ODAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNl
Y3VyaXR5UG9saWN5KFNlY3VyaXR5UG9saWN5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAg
ICAgICB8IFNlY3VyaXR5UG9saWN5VGVzdDo6Q09SU0VuYWJsZWQgfCBTZWN1cml0eVBvbGljeVRl
c3Q6OkVtcHR5RG9jdW1lbnQpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQg
Y29uc29sZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlcios
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIG1lc3NhZ2UsIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
KiByZXN1bHQpCiB7CiAgICAgZ19hc3NlcnQocmVzdWx0KTsKQEAgLTY0Niw2ICs2NDksNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUihXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfZmlsZV9h
Y2Nlc3NfZnJvbV9maWxlX3VybHMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5t
X3dlYlZpZXcpLCBGQUxTRSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBjbGFzcyBQ
cm94eVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgpAQCAtNzA1LDcgKzcwOSw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQcm94eVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X25ldHdvcmtfcHJveHlfc2V0dGluZ3NfZnJl
ZShzZXR0aW5ncyk7CiAKICAgICAvLyBQcm94eSBzZXR0aW5ncyBhbHNvIGFmZmVjdCBlcGhlbWVy
YWwgd2ViIHZpZXdzLgotICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisgICAgYXV0byB3
ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklF
VywKICAgICAgICAgIndlYi1jb250ZXh0IiwgdGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLAogICAg
ICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAgICAgbnVsbHB0cikpOwpAQCAtNzcwLDEy
ICs3NzQsMjAgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJD
b250ZXh0IiwgImRlZmF1bHQtY29udGV4dCIsIHRlc3RXZWJDb250ZXh0RGVmYXVsdCk7CiAgICAg
VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImVwaGVtZXJhbCIsIHRlc3RXZWJDb250ZXh0
RXBoZW1lcmFsKTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBQbHVnaW5z
VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImdldC1wbHVnaW5zIiwgdGVzdFdlYkNvbnRl
eHRHZXRQbHVnaW5zKTsKKyNlbmRpZgogICAgIFVSSVNjaGVtZVRlc3Q6OmFkZCgiV2ViS2l0V2Vi
Q29udGV4dCIsICJ1cmktc2NoZW1lIiwgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgc3BlbGxjaGVja2VyIGluIFdQRS4KKyNpZiBQTEFURk9STShHVEsp
CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInNwZWxsLWNoZWNrZXIiLCB0ZXN0
V2ViQ29udGV4dFNwZWxsQ2hlY2tlcik7CisjZW5kaWYKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJDb250ZXh0IiwgImxhbmd1YWdlcyIsIHRlc3RXZWJDb250ZXh0TGFuZ3VhZ2VzKTsK
ICAgICBTZWN1cml0eVBvbGljeVRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgInNl
Y3VyaXR5LXBvbGljeSIsIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlQb2xpY3kpOworICAgIC8vIEZJ
WE1FOiBmaXggc2NyaXB0IG1lc3NhZ2VzIGluIFdQRS4KKyNpZiBQTEFURk9STShHVEspCiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhyIiwgdGVz
dFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOworI2VuZGlmCiAgICAgUHJveHlUZXN0OjphZGQo
IldlYktpdFdlYkNvbnRleHQiLCAicHJveHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4OTNiZmExYTVhNi4uMjhhNmI2YThkNGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNTEsMTUgKzUxLDE1IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3V2ViQ29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0LT5tX3dl
YkNvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBhIHdlYiB2aWV3IGNyZWF0ZWQg
d2l0aCBnX29iamVjdF9uZXcgaGFzIHRoZSBkZWZhdWx0IGNvbnRleHQuCi0gICAgR1JlZlB0cjxX
ZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfVklFVywgbnVsbHB0cikpOworICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFk
b3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIG51bGxwdHIpKTsKICAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkgPT0g
d2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBh
IHdlYiB2aWV3IGNyZWF0ZWQgd2l0aCBhIHJlbGF0ZWQgdmlldyBoYXMgdGhlIHJlbGF0ZWQgdmll
dyBjb250ZXh0LgotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3
X25ld193aXRoX3JlbGF0ZWRfdmlldyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICB3ZWJWaWV3ID0g
VGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcodGVz
dC0+bV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0
KHdlYlZpZXcuZ2V0KCkpID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CiAKICAgICAvLyBD
aGVjayB0aGF0IGEgd2ViIGNvbnRleHQgZ2l2ZW4gYXMgY29uc3RydWN0IHBhcmFtZXRlciBpcyBp
Z25vcmVkIGlmIGEgcmVsYXRlZCB2aWV3IGlzIGFsc28gcHJvdmlkZWQuCi0gICAgd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisgICAg
d2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVs
dCgpLCAicmVsYXRlZC12aWV3IiwgdGVzdC0+bV93ZWJWaWV3LCBudWxscHRyKSk7CiAgICAgZ19h
c3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpID09IHRlc3Qt
Pm1fd2ViQ29udGV4dC5nZXQoKSk7CiB9CkBAIC02OSwxMCArNjksMTIgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdXZWJDb250ZXh0TGlmZXRpbWUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IHdlYmtpdF93ZWJfY29u
dGV4dF9uZXcoKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKHdlYkNvbnRleHQpKTsKIAotICAgIEd0a1dpZGdldCogd2ViVmlldyA9IHdl
YmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYkNvbnRleHQpOworICAgIGF1dG8qIHdl
YlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJDb250ZXh0KTsKICAg
ICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdl
YlZpZXcpKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJW
aWV3KTsKKyNlbmRpZgogICAgIGdfb2JqZWN0X3VucmVmKHdlYkNvbnRleHQpOwogCiAgICAgLy8g
Q2hlY2sgdGhhdCB0aGUgd2ViIHZpZXcgc3RpbGwgaGFzIGEgdmFsaWQgY29udGV4dC4KQEAgLTgz
LDEwICs4NSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkNvbnRleHRMaWZldGltZShX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3
ZWJDb250ZXh0MiA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXcoKTsKICAgICB0ZXN0LT5hc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYkNvbnRleHQyKSk7CiAK
LSAgICBHdGtXaWRnZXQqIHdlYlZpZXcyID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRl
eHQod2ViQ29udGV4dDIpOworICAgIGF1dG8qIHdlYlZpZXcyID0gd2Via2l0X3dlYl92aWV3X25l
d193aXRoX2NvbnRleHQod2ViQ29udGV4dDIpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViVmlldzIpKTsKIAorI2lmIFBMQVRGT1JN
KEdUSykKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3Mik7CisjZW5kaWYKICAgICBnX29i
amVjdF91bnJlZih3ZWJWaWV3Mik7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb250ZXh0IGlz
IHN0aWxsIHZhbGlkLgpAQCAtMTE2LDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfbWFpbl9s
b29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKIAogICAgIC8vIEEgV2ViVmlldyBvbiBhIG5vbiBl
cGhlbWVyYWwgY29udGV4dCBjYW4gYmUgZXBoZW1lcmFsLgotICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Vmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVy
YWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7CkBAIC0xNzMsNyArMTc3LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX2Fzc2VydChzZXR0aW5ncyAhPSBkZWZhdWx0U2V0dGluZ3MpOwogICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CiAK
LSAgICBHUmVmUHRyPEd0a1dpZGdldD4gd2ViVmlldzIgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7
CisgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3
KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1Qod2ViVmlldzIuZ2V0KCkpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdz
KFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSksIHNldHRpbmdzKTsKICAgICBnX2Fzc2Vy
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5n
ZXQoKSkpID09IHNldHRpbmdzKTsKQEAgLTE4NSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0KHNldHRpbmdzID09IG5ld1NldHRpbmdzMi5nZXQoKSk7CiAgICAgZ19hc3NlcnQod2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOwogCi0gICAgR1Jl
ZlB0cjxHdGtXaWRnZXQ+IHdlYlZpZXczID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3NldHRp
bmdzKG5ld1NldHRpbmdzMi5nZXQoKSk7CisgICAgYXV0byB3ZWJWaWV3MyA9IFRlc3Q6OmFkb3B0
Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MobmV3U2V0dGluZ3MyLmdldCgp
KSk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVCh3ZWJWaWV3My5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRf
c2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXczLmdldCgpKSkgPT0gbmV3U2V0dGluZ3My
LmdldCgpKTsKIH0KQEAgLTMxNyw3ICszMjEsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGdi
b29sZWFuIGxlYXZlRnVsbFNjcmVlbklkbGUoRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRlc3QpCiAg
ICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGtleSBzdHJva2VzIGluIFdQRQorI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfRXNjYXBlKTsK
KyNlbmRpZgogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCkBAIC0zMzEsNiArMzM4LDcg
QEAgcHVibGljOgogICAgIEZ1bGxTY3JlZW5FdmVudCBtX2V2ZW50OwogfTsKIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RnVsbFNjcmVlbihGdWxs
U2NyZWVuQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5zaG93
SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKQEAgLTM0MSw2ICszNDksNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4oRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bGVhdmVGdWxsU2NyZWVuQW5kV2FpdFVudGlsTGVmdEZ1
bGxTY3JlZW4oKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIEZ1bGxT
Y3JlZW5DbGllbnRUZXN0OjpMZWF2ZSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdDYW5TaG93TUlNRVR5cGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
CkBAIC0zNTQsMTMgKzM2MywxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NhblNob3dNSU1F
VHlwZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNh
dGlvbi96aXAiKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1l
X3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOwogCisj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLy8gUGx1Z2lucyBhcmUgb25seSBz
dXBwb3J0ZWQgd2hlbiBlbmFibGVkLgogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRp
b25hbF9wbHVnaW5zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+
bV93ZWJWaWV3KSwgV0VCS0lUX1RFU1RfUExVR0lOX0RJUik7CiAgICAgZ19hc3NlcnQod2Via2l0
X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNhdGlv
bi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIikpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX3BsdWdpbnMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcp
LCBGQUxTRSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5
cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIp
KTsKKyNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oR1RLKQogY2xhc3MgRm9ybUNsaWVudFRlc3Q6
IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVS
RShGb3JtQ2xpZW50VGVzdCk7CkBAIC00NDEsNiArNDUzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdTdWJtaXRGb3JtKEZvcm1DbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cCh2
YWx1ZXMsICJ0ZXh0MiIpKSwgPT0sICJ2YWx1ZTIiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc3Rh
dGljX2Nhc3Q8Y2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAodmFsdWVzLCAicGFzc3dvcmQiKSks
ID09LCAic2VjcmV0Iik7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBjbGFzcyBTYXZl
V2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CkBAIC01MzgsNiArNTUx
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTYXZlKFNhdmVXZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19maWxlX2luZm9fZ2V0X3NpemUo
ZmlsZUluZm8uZ2V0KCkpLCA9PSwgdG90YWxCeXRlc0Zyb21TdHJlYW0pOwogfQogCisjaWYgUExB
VEZPUk0oR1RLKQogLy8gVG8gdGVzdCBwYWdlIHZpc2liaWxpdHkgQVBJLiBDdXJyZW50bHkgb25s
eSAndmlzaWJsZScsICdoaWRkZW4nIGFuZCAncHJlcmVuZGVyJyBzdGF0ZXMgYXJlIGltcGxlbWVu
dGVkIGZ1bGx5IGluIFdlYkNvcmUuCiAvLyBTZWUgYWxzbyBodHRwOi8vd3d3LnczLm9yZy9UUi8y
MDExL1dELXBhZ2UtdmlzaWJpbGl0eS0yMDExMDYwMi8gYW5kIGh0dHBzOi8vZGV2ZWxvcGVycy5n
b29nbGUuY29tL2Nocm9tZS93aGl0ZXBhcGVycy9wYWdldmlzaWJpbGl0eQogc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKQEAgLTU4NCw3ICs1OTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmls
aXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCFXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CiAK
ICAgICAvLyBIaWRlIHRoZSBwYWdlLiBUaGUgdmlzaWJpbGl0eSBzaG91bGQgYmUgdXBkYXRlZCB0
byAnaGlkZGVuJy4KLSAgICBndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdFVCh0ZXN0LT5tX3dlYlZp
ZXcpKTsKKyAgICB0ZXN0LT5oaWRlVmlldygpOwogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hh
bmdlZCgpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOyIsICZlcnJvci5vdXRQ
dHIoKSk7CkBAIC02NzYsNyArNjkwLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTbmFwc2hv
dChTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFRlc3Qg
dGhhdCBjYW5jZWxsYXRpb24gd29ya3MuCiAgICAgZ19hc3NlcnQodGVzdC0+Z2V0U25hcHNob3RB
bmRDYW5jZWwoKSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiBjbGFzcyBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDogcHVibGljIFdlYlZp
ZXdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFX1dJVEhfU0VUVVBf
VEVBUkRPV04oTm90aWZpY2F0aW9uV2ViVmlld1Rlc3QsIHNldHVwLCB0ZWFyZG93bik7CkBAIC05
MjMsMTIgKzkzOSwxNSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlmaWNhdGlvbkluaXRp
YWxQZXJtaXNzaW9uRGlzYWxsb3dlZChOb3RpZmljYXRpb25XZWJWaQogICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGdfYXNzZXJ0KCF0ZXN0LT5oYXNQZXJtaXNzaW9uKCkp
OwogfQorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIC8vIFRoZSB3ZWIgdmlldyBt
dXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8gc3RhcnQgcGxheWJhY2sgYW5kCiAgICAg
Ly8gdHJpZ2dlciBjaGFuZ2VzIGluIFdlYktpdFdlYlZpZXc6OmlzLXBsYXlpbmctYXVkaW8uCiAg
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVW
RUwpOworI2VuZGlmCiAKICAgICAvLyBJbml0aWFsbHksIHdlYiB2aWV3cyBzaG91bGQgYWx3YXlz
IHJlcG9ydCBubyBhdWRpbyBiZWluZyBwbGF5ZWQuCiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
dmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwpAQCAtOTUxLDYgKzk3MCw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5nQXVkaW9X
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmll
d19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCisjaWYgUExBVEZPUk0o
R1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFj
a2dyb3VuZC4KQEAgLTk4OCw2ICsxMDA4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQcmVm
ZXJyZWRTaXplKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
X2NtcGludChuYXR1cmFsU2l6ZS53aWR0aCwgPT0sIDMyNSk7CiAgICAgZ19hc3NlcnRfY21waW50
KG5hdHVyYWxTaXplLmhlaWdodCwgPT0sIDYxNSk7CiB9CisjZW5kaWYKIAogY2xhc3MgV2ViVmll
d1RpdGxlVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKQEAgLTEwNjEsMTggKzEw
ODIsMzAgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld1NldHRpbmdzKTsKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpvb20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pvb21MZXZl
bCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJydW4tamF2YXNjcmlw
dCIsIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdCk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIEZ1bGxTY3JlZW5DbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZnVsbHNj
cmVlbiIsIHRlc3RXZWJWaWV3RnVsbFNjcmVlbik7CisjZW5kaWYKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNhbi1zaG93LW1pbWUtdHlwZSIsIHRlc3RXZWJWaWV3Q2Fu
U2hvd01JTUVUeXBlKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IG1vdXNlIGNsaWNrcyBpbiBX
UEUuCisjaWYgUExBVEZPUk0oR1RLKQogICAgIEZvcm1DbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0pOworI2VuZGlmCiAg
ICAgU2F2ZVdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2F2ZSIsIHRlc3RXZWJW
aWV3U2F2ZSk7CisgICAgLy8gRklYTUU6IFZpZXcgaXMgaW5pdGlhbGx5IHZpc2libGUgaW4gV1BF
IGFuZCBoYXMgYSBmaXhlZCBoYXJkY29kZWQgc2l6ZS4KKyNpZiBQTEFURk9STShHVEspCiAgICAg
U25hcHNob3RXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90IiwgdGVz
dFdlYlZpZXdTbmFwc2hvdCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJwYWdlLXZpc2liaWxpdHkiLCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KTsKKyNlbmRpZgor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uIiwgdGVzdFdlYlZpZXdOb3RpZmljYXRp
b24pOwogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
bm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1hbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3Rp
ZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkFsbG93ZWQpOwogICAgIE5vdGlmaWNhdGlvbldlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlz
c2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lv
bkRpc2FsbG93ZWQpOworI2VuZGlmCiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWlu
Z0F1ZGlvKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3Ip
OwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicHJlZmVycmVkLXNpemUi
LCB0ZXN0V2ViVmlld1ByZWZlcnJlZFNpemUpOworI2VuZGlmCiAgICAgV2ViVmlld1RpdGxlVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRpdGxlLWNoYW5nZSIsIHRlc3RXZWJWaWV3VGl0bGVD
aGFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDQ5NTllODM4ZTdkLi44ODdkZmNmYWFj
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgLy8gTm9uIHBlcnNpc3RlbnQgZGF0YSBjYW4gYmUgcXVlcmllZCBpbiBhbiBlcGhlbWVyYWwg
bWFuYWdlci4KICAgICBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+IHdlYkNvbnRleHQgPSBhZG9w
dEdSZWYod2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1h
bmFnZXIuZ2V0KCkpKTsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1l
cmFsKHdlYkNvbnRleHQuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Vi
Q29udGV4dC5nZXQoKSkpOworICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJr
aXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJDb250ZXh0LmdldCgpKSk7CiAgICAgZ19h
c3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CiAgICAg
Z19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3
LmdldCgpKSA9PSBtYW5hZ2VyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGYxODRj
NzYzM2RhLi5kOWYyYzZhYzcyYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjUsMTMgKzI1LDE4
IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShHVEspCisjaW5j
bHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2VsaWYgUExBVEZPUk0oV1BF
KQorI2luY2x1ZGUgPHdwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2VuZGlmCisKIHN0YXRp
YyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIjxub2RlPiIKICAgICAiIDxp
bnRlcmZhY2UgbmFtZT0nb3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCc+IgpAQCAtMTAw
LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0RG9jdW1lbnRMb2FkZWQoR0RCdXNDb25uZWN0
aW9uKiBjb25uZWN0aW9uKQogCiBzdGF0aWMgdm9pZCBkb2N1bWVudExvYWRlZENhbGxiYWNrKFdl
YktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewor
I2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCh3ZWJQYWdlKTsKICAgICBHUmVmUHRyPFdlYktp
dERPTURPTVdpbmRvdz4gd2luZG93ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0
X2RlZmF1bHRfdmlldyhkb2N1bWVudCkpOwogICAgIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJr
aXRfbWVzc2FnZV9oYW5kbGVyc19wb3N0X21lc3NhZ2Uod2luZG93LmdldCgpLCAiZG9tIiwgIkRv
Y3VtZW50TG9hZGVkIik7CisjZW5kaWYKIAogICAgIGdwb2ludGVyIGRhdGEgPSBnX29iamVjdF9n
ZXRfZGF0YShHX09CSkVDVChleHRlbnNpb24pLCAiZGJ1cy1jb25uZWN0aW9uIik7CiAgICAgaWYg
KGRhdGEpCkBAIC0xNzUsNiArMTgyLDggQEAgc3RhdGljIGdib29sZWFuIHNlbmRSZXF1ZXN0Q2Fs
bGJhY2soV2ViS2l0V2ViUGFnZSosIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QsIFcKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IHdoYXQgdG8gZG8g
d2l0aCBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0IGluIFdQRS4KKyNpZiBQTEFURk9STShHVEspCiBz
dGF0aWMgR1ZhcmlhbnQqIHNlcmlhbGl6ZUNvbnRleHRNZW51KFdlYktpdENvbnRleHRNZW51KiBt
ZW51KQogewogICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwpAQCAtMjI5LDcgKzIzOCwxMCBA
QCBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiBwYWdl
LCBXZWJLaXRDb250ZXh0TWVudSogbWVudQogCiAgICAgcmV0dXJuIEZBTFNFOwogfQorI2VuZGlm
IC8vIFBMQVRGT1JNKEdUSykKIAorLy8gRklYTUU6IFVzZSBKU0MgQVBJIHRvIHNlbmQgc2NyaXB0
IG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdC4KKyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9p
ZCBjb25zb2xlTWVzc2FnZVNlbnRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJL
aXRDb25zb2xlTWVzc2FnZSogY29uc29sZU1lc3NhZ2UpCiB7CiAgICAgZ19hc3NlcnQoY29uc29s
ZU1lc3NhZ2UpOwpAQCAtMjQxLDggKzI1Myw5IEBAIHN0YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdl
U2VudENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdENvbnNvbGVNZXNzCiAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKHdpbmRvdy5nZXQoKSkpOwogICAg
IHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRfbWVzc2FnZV9oYW5kbGVyc19wb3N0X21lc3Nh
Z2Uod2luZG93LmdldCgpLCAiY29uc29sZSIsIG1lc3NhZ2VTdHJpbmcuZ2V0KCkpOwogfQorI2Vu
ZGlmCiAKLQorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIGVtaXRGb3JtQ29udHJvbHNB
c3NvY2lhdGVkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogZm9ybUlk
cykKIHsKICAgICBib29sIG9rID0gZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwoCkBAIC0y
NzcsMTUgKzI5MCwxOCBAQCBzdGF0aWMgdm9pZCBmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJh
Y2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR1B0ckFycmF5KiBmbwogICAgIGVsc2UKICAgICAg
ICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBlbmQoRGVsYXllZFNpZ25hbChGb3JtQ29udHJvbHNB
c3NvY2lhdGVkU2lnbmFsLCBmb3JtSWRzLmdldCgpKSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZv
aWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2Vi
S2l0V2ViUGFnZSogd2ViUGFnZSwgZ3BvaW50ZXIpCiB7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3
ZWJQYWdlLCAiZG9jdW1lbnQtbG9hZGVkIiwgR19DQUxMQkFDSyhkb2N1bWVudExvYWRlZENhbGxi
YWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJub3RpZnk6
OnVyaSIsIEdfQ0FMTEJBQ0sodXJpQ2hhbmdlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3QiLCBHX0NBTExCQUNLKHNlbmRS
ZXF1ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgZ19zaWdu
YWxfY29ubmVjdCh3ZWJQYWdlLCAiY29udGV4dC1tZW51IiwgR19DQUxMQkFDSyhjb250ZXh0TWVu
dUNhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiY29u
c29sZS1tZXNzYWdlLXNlbnQiLCBHX0NBTExCQUNLKGNvbnNvbGVNZXNzYWdlU2VudENhbGxiYWNr
KSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiZm9ybS1jb250cm9s
cy1hc3NvY2lhdGVkIiwgR19DQUxMQkFDSyhmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJhY2sp
LCBleHRlbnNpb24pOworI2VuZGlmCiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxsYmFj
ayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KikKQEAgLTMzNSw5ICszNTEsMTQgQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdE
QnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShHVEspCiAgICAg
ICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50KHBhZ2UpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHRpdGxlKHdlYmtpdF9k
b21fZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KSk7CiAgICAgICAgIGdfZGJ1c19tZXRob2Rf
aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHMpIiwg
dGl0bGUuZ2V0KCkpKTsKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyAgICAgICAgLy8gRklYTUU6IFVz
ZSBKU0MgQVBJIHRvIGdldCB0aGUgdGl0bGUgZnJvbSBKYXZhU2NyaXB0LgorICAgICAgICBnX2Ri
dXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9u
ZXcoIihzKSIsICIiKSk7CisjZW5kaWYKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9k
TmFtZSwgIlJ1bkphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQiKSkgewogICAgICAgICB1aW50NjRf
dCBwYWdlSUQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKQEAgLTQwNSw3ICs0MjYsMTEg
QEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICAgICAgICAgIGVtaXRVUklDaGFuZ2VkKGNv
bm5lY3Rpb24sIGRlbGF5ZWRTaWduYWwuc3RyLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBGb3JtQ29udHJvbHNBc3NvY2lhdGVkU2lnbmFsOgorI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgICAgIGVtaXRGb3JtQ29udHJvbHNBc3NvY2lhdGVkKGNvbm5lY3Rpb24s
IGRlbGF5ZWRTaWduYWwuc3RyLmRhdGEoKSk7CisjZWxpZiBQTEFURk9STShXUEUpCisgICAgICAg
ICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggM2IzZDEzZmFiZTcuLjdhNDRjYjA1Y2Q0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJv
Y2Vzc1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuaApAQCAtMTgsMTIgKzE4LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0
ZW5zaW9uLmg+CisjZWxpZiBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8d3BlL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmg+CisjZW5kaWYKKwogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgog
ICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0KCkgeyB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
Q01ha2VMaXN0cy50eHQKaW5kZXggYzg1ZDQ5NDU2MDUuLmQwOTExNjU5YzdjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CkBAIC0xLDMgKzEsMTEgQEAKK3NldChXZWJL
aXRHTGliQVBJVGVzdHNfU09VUkNFUworICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorICAgICR7VE9PTFNfRElSfS9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcAorICAgICR7VE9PTFNf
RElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAor
ICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5j
cHAKKyAgICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuY3BwCispCisKIHNldChXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlCiAgICAgJHtDTUFLRV9TT1VSQ0VfRElS
fS9Tb3VyY2UvV1RGCkBAIC03NCwxMyArODIsNyBAQCBhZGRfZGVmaW5pdGlvbnMoCiBpbmNsdWRl
X2RpcmVjdG9yaWVzKCR7V2ViS2l0R0xpYkFQSVRlc3RzX0lOQ0xVREVfRElSRUNUT1JJRVN9KQog
aW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0gJHtXZWJLaXRHTGliQVBJVGVzdHNfU1lTVEVNX0lO
Q0xVREVfRElSRUNUT1JJRVN9KQogCi1hZGRfbGlicmFyeShXZWJLaXRHTGliQVBJVGVzdHNDb3Jl
IFNUQVRJQwotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9M
b2FkVHJhY2tpbmdUZXN0LmNwcAotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcAotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAotICAgICR7VE9PTFNfRElS
fS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKLSAgICAke1RPT0xT
X0RJUn0vVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCi0pCith
ZGRfbGlicmFyeShXZWJLaXRHTGliQVBJVGVzdHNDb3JlIFNUQVRJQyAke1dlYktpdEdMaWJBUElU
ZXN0c19TT1VSQ0VTfSkKIHRhcmdldF9saW5rX2xpYnJhcmllcyhXZWJLaXRHTGliQVBJVGVzdHND
b3JlIFdlYktpdDIpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAxNzYwNGNjZmU3NC4uMzE4OGJmYTRkNDAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEsNiArMSwx
MCBAQAogc2V0KFRFU1RfTElCUkFSWV9ESVIgJHtDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RP
Ull9L1dlYktpdDJHdGtBUElUZXN0cykKIHNldChURVNUX0JJTkFSWV9ESVIgJHtDTUFLRV9SVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0aykKIAorbGlzdChB
UFBFTkQgV2ViS2l0R0xpYkFQSVRlc3RzX1NPVVJDRVMKKyAgICAke1RPT0xTX0RJUn0vVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAorKQorCiBsaXN0
KEFQUEVORCBXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfQogICAgICR7Rk9SV0FSRElOR19IRUFERVJTX1dF
QktJVDJHVEtfRElSfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAppbmRleCA0YTI2MGI4MTIxZC4uZTZhMzQ4MmQz
ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRU
cmFja2luZ1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC0yMCw4ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgogCi0jaW5jbHVkZSA8d2Via2l0Mi93
ZWJraXQyLmg+Ci0KIHN0YXRpYyB2b2lkIGxvYWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwgTG9hZFRyYWNraW5nVGVzdCog
dGVzdCkKIHsKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCmluZGV4IDgyMGE4YjJhNTJjLi5jNzY5
OWQ0NGMyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
VGVzdE1haW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RNYWluLmNwcApAQCAtMjEsMTQgKzIxLDE3IEBACiAjaW5jbHVkZSAiVGVzdE1haW4uaCIKIAog
I2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CisKKyNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8
Z3RrL2d0ay5oPgorI2VuZGlmCiAKIHVpbnQzMl90IFRlc3Q6OnNfd2ViRXh0ZW5zaW9uSUQgPSAw
OwogCiB2b2lkIGJlZm9yZUFsbCgpOwogdm9pZCBhZnRlckFsbCgpOwogCi1zdGF0aWMgR1VuaXF1
ZVB0cjxjaGFyPiB0ZXN0RGF0YURpcmVjdG9yeShnX2Rpcl9tYWtlX3RtcCgiV2ViS2l0Mkd0a1Rl
c3RzLVhYWFhYWCIsIG51bGxwdHIpKTsKK3N0YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHRlc3REYXRh
RGlyZWN0b3J5KGdfZGlyX21ha2VfdG1wKCJXZWJLaXRHTGliVGVzdHMtWFhYWFhYIiwgbnVsbHB0
cikpOwogCiBjb25zdCBjaGFyKiBUZXN0OjpkYXRhRGlyZWN0b3J5KCkKIHsKQEAgLTY0LDcgKzY3
LDExIEBAIHN0YXRpYyB2b2lkIHJlbW92ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IGNoYXIqIGRp
cmVjdG9yeVBhdGgpCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgZ191
bnNldGVudigiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIik7Ci0gICAgZ3RrX3Rlc3RfaW5pdCgm
YXJnYywgJmFyZ3YsIDApOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBndGtfdGVzdF9pbml0KCZh
cmdjLCAmYXJndiwgbnVsbHB0cik7CisjZWxzZQorICAgIGdfdGVzdF9pbml0KCZhcmdjLCAmYXJn
diwgbnVsbHB0cik7CisjZW5kaWYKICAgICBnX3NldGVudigiV0VCS0lUX0VYRUNfUEFUSCIsIFdF
QktJVF9FWEVDX1BBVEgsIEZBTFNFKTsKICAgICBnX3NldGVudigiV0VCS0lUX0lOSkVDVEVEX0JV
TkRMRV9QQVRIIiwgV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRILCBGQUxTRSk7CiAgICAgZ19z
ZXRlbnYoIkxDX0FMTCIsICJDIiwgVFJVRSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvVGVzdE1haW4uaAppbmRleCBmYmJlMDAyZjgzYi4uMzZlMDNmZGQzZmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAt
MjEsMTIgKzIxLDIzIEBACiAKICNpbmNsdWRlIDxjYWlyby5oPgogI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBMQVRG
T1JNKEdUSykKKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNlbGlmIFBMQVRGT1JNKFdQ
RSkKKyNpbmNsdWRlIDx3cGUvd2Via2l0Lmg+CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykK
KyNkZWZpbmUgVEVTVF9QQVRIX0ZPUk1BVCAiL3dlYmtpdDIvJXMvJXMiCisjZWxpZiBQTEFURk9S
TShXUEUpCisjZGVmaW5lIFRFU1RfUEFUSF9GT1JNQVQgIi93cGUvJXMvJXMiCisjZW5kaWYKKwog
I2RlZmluZSBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENsYXNzTmFtZSkgXAogICAgIHN0YXRpYyB2
b2lkIHNldFVwKENsYXNzTmFtZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKSBcCiAgICAg
eyBcCkBAIC0zOCw3ICs0OSw3IEBACiAgICAgfSBcCiAgICAgc3RhdGljIHZvaWQgYWRkKGNvbnN0
IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVzdE5hbWUsIHZvaWQgKCp0ZXN0RnVuYyko
Q2xhc3NOYW1lKiwgY29uc3Qgdm9pZCopKSBcCiAgICAgeyBcCi0gICAgICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHRlc3RQYXRoKGdfc3RyZHVwX3ByaW50ZigiL3dlYmtpdDIvJXMvJXMiLCBzdWl0ZU5h
bWUsIHRlc3ROYW1lKSk7IFwKKyAgICAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdGVzdFBhdGgoZ19z
dHJkdXBfcHJpbnRmKFRFU1RfUEFUSF9GT1JNQVQsIHN1aXRlTmFtZSwgdGVzdE5hbWUpKTsgXAog
ICAgICAgICBnX3Rlc3RfYWRkKHRlc3RQYXRoLmdldCgpLCBDbGFzc05hbWUsIDAsIENsYXNzTmFt
ZTo6c2V0VXAsIHRlc3RGdW5jLCBDbGFzc05hbWU6OnRlYXJEb3duKTsgXAogICAgIH0KIApAQCAt
NTcsNyArNjgsNyBAQAogICAgIH0gXAogICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBjaGFyKiBz
dWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lLCB2b2lkICgqdGVzdEZ1bmMpKENsYXNzTmFt
ZSosIGNvbnN0IHZvaWQqKSkgXAogICAgIHsgXAotICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0
ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIi93ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0
TmFtZSkpOyBcCisgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlc3RQYXRoKGdfc3RyZHVwX3By
aW50ZihURVNUX1BBVEhfRk9STUFULCBzdWl0ZU5hbWUsIHRlc3ROYW1lKSk7IFwKICAgICAgICAg
Z190ZXN0X2FkZCh0ZXN0UGF0aC5nZXQoKSwgQ2xhc3NOYW1lLCAwLCBDbGFzc05hbWU6OnNldFVw
LCB0ZXN0RnVuYywgQ2xhc3NOYW1lOjp0ZWFyRG93bik7IFwKICAgICB9CiAKQEAgLTc3LDYgKzg4
LDE3IEBAIGNsYXNzIFRlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUo
VGVzdCk7CiAKKyAgICBzdGF0aWMgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiBhZG9wdFZpZXcoZ3Bv
aW50ZXIgdmlldykKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh2
aWV3KSk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBnX2Fzc2VydChnX29iamVjdF9pc19m
bG9hdGluZyh2aWV3KSk7CisgICAgICAgIHJldHVybiBHUmVmUHRyPFdlYktpdFdlYlZpZXc+KFdF
QktJVF9XRUJfVklFVyh2aWV3KSk7CisjZWxpZiBQTEFURk9STShXUEUpCisgICAgICAgIHJldHVy
biBhZG9wdEdSZWYoV0VCS0lUX1dFQl9WSUVXKHZpZXcpKTsKKyNlbmRpZgorICAgIH0KKwogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBkYXRhRGlyZWN0b3J5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplV2ViRXh0ZW5zaW9uc0NhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFRlc3QqIHRlc3QpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJLaXRUZXN0QnVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYktpdFRlc3RCdXMuY3BwCmluZGV4IDg4NDU2Y2U0ZjQxLi4xYjg5MzAyMTA1NSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVz
dEJ1cy5jcHAKQEAgLTMzLDkgKzMzLDExIEBAIFdlYktpdFRlc3RCdXM6On5XZWJLaXRUZXN0QnVz
KCkKIGJvb2wgV2ViS2l0VGVzdEJ1czo6cnVuKCkKIHsKICAgICBDU3RyaW5nIGRpc3BsYXkgPSBn
X2dldGVudigiRElTUExBWSIpOworICAgIENTdHJpbmcgcnVudGltZURpciA9IGdfZ2V0ZW52KCJY
REdfUlVOVElNRV9ESVIiKTsKICAgICBnX3Rlc3RfZGJ1c191cChtX2J1cy5nZXQoKSk7CiAgICAg
bV9hZGRyZXNzID0gZ190ZXN0X2RidXNfZ2V0X2J1c19hZGRyZXNzKG1fYnVzLmdldCgpKTsKICAg
ICBnX3NldGVudigiRElTUExBWSIsIGRpc3BsYXkuZGF0YSgpLCBGQUxTRSk7CisgICAgZ19zZXRl
bnYoIlhER19SVU5USU1FX0RJUiIsIHJ1bnRpbWVEaXIuZGF0YSgpLCBGQUxTRSk7CiAgICAgcmV0
dXJuICFtX2FkZHJlc3MuaXNOdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAppbmRleCA3MDcxOTEwZTRlMy4uYzhi
Y2Q4ZmI5MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJWaWV3VGVzdC5jcHAKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJXZWJWaWV3VGVz
dC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KLSNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KIAogYm9vbCBXZWJWaWV3VGVzdDo6c2hvdWxkSW5p
dGlhbGl6ZVdlYlZpZXdJbkNvbnN0cnVjdG9yID0gdHJ1ZTsKIApAQCAtMzcsOCArMzYsNyBAQCBX
ZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQogCiBXZWJWaWV3VGVzdDo6fldlYlZpZXdUZXN0KCkK
IHsKLSAgICBpZiAobV9wYXJlbnRXaW5kb3cpCi0gICAgICAgIGd0a193aWRnZXRfZGVzdHJveSht
X3BhcmVudFdpbmRvdyk7CisgICAgcGxhdGZvcm1EZXN0cm95KCk7CiAgICAgaWYgKG1famF2YXNj
cmlwdFJlc3VsdCkKICAgICAgICAgd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKG1famF2
YXNjcmlwdFJlc3VsdCk7CiAgICAgaWYgKG1fc3VyZmFjZSkKQEAgLTUwLDcgKzQ4LDggQEAgV2Vi
Vmlld1Rlc3Q6On5XZWJWaWV3VGVzdCgpCiB2b2lkIFdlYlZpZXdUZXN0Ojppbml0aWFsaXplV2Vi
VmlldygpCiB7CiAgICAgZ19hc3NlcnQoIW1fd2ViVmlldyk7Ci0gICAgbV93ZWJWaWV3ID0gV0VC
S0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfVklFVywgIndlYi1jb250ZXh0IiwgbV93ZWJDb250ZXh0LmdldCgpLCAidXNlci1jb250ZW50
LW1hbmFnZXIiLCBtX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICBt
X3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9W
SUVXLCAid2ViLWNvbnRleHQiLCBtX3dlYkNvbnRleHQuZ2V0KCksICJ1c2VyLWNvbnRlbnQtbWFu
YWdlciIsIG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBudWxscHRyKSk7CisgICAgcGxhdGZv
cm1Jbml0aWFsaXplV2ViVmlldygpOwogICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QobV93ZWJWaWV3KSk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2ViVmlldywgIndlYi1wcm9jZXNzLWNyYXNoZWQiLCBHX0NBTExCQUNLKFdlYlZpZXdUZXN0Ojp3
ZWJQcm9jZXNzQ3Jhc2hlZCksIHRoaXMpOwpAQCAtMTY3LDEzICsxNjYsNiBAQCB2b2lkIFdlYlZp
ZXdUZXN0OjpxdWl0TWFpbkxvb3AoKQogICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7
CiB9CiAKLXZvaWQgV2ViVmlld1Rlc3Q6OnF1aXRNYWluTG9vcEFmdGVyUHJvY2Vzc2luZ1BlbmRp
bmdFdmVudHMoKQotewotICAgIHdoaWxlIChndGtfZXZlbnRzX3BlbmRpbmcoKSkKLSAgICAgICAg
Z3RrX21haW5faXRlcmF0aW9uKCk7Ci0gICAgcXVpdE1haW5Mb29wKCk7Ci19Ci0KIHZvaWQgV2Vi
Vmlld1Rlc3Q6OndhaXQoZG91YmxlIHNlY29uZHMpCiB7CiAgICAgZ190aW1lb3V0X2FkZChzZWNv
bmRzICogMTAwMCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKQEAgLTIxOSw0
OCArMjExLDYgQEAgdm9pZCBXZWJWaWV3VGVzdDo6d2FpdFVudGlsVGl0bGVDaGFuZ2VkKCkKICAg
ICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygwKTsKIH0KIAotc3RhdGljIGdib29sZWFuIHBhcmVu
dFdpbmRvd01hcHBlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnQqLCBXZWJWaWV3VGVzdCog
dGVzdCkKLXsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2lkZ2V0
LCByZWludGVycHJldF9jYXN0PHZvaWQqPihwYXJlbnRXaW5kb3dNYXBwZWQpLCB0ZXN0KTsKLSAg
ICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwotCi0gICAgcmV0dXJuIEZBTFNF
OwotfQotCi12b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3coR3RrV2luZG93VHlwZSB3aW5k
b3dUeXBlKQotewotICAgIGdfYXNzZXJ0KCFtX3BhcmVudFdpbmRvdyk7Ci0gICAgbV9wYXJlbnRX
aW5kb3cgPSBndGtfd2luZG93X25ldyh3aW5kb3dUeXBlKTsKLSAgICBndGtfY29udGFpbmVyX2Fk
ZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsK
LSAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBndGtfd2lk
Z2V0X3Nob3cobV9wYXJlbnRXaW5kb3cpOwotfQotCi12b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5X
aW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCi17Ci0gICAgZ19hc3NlcnQoIW1fcGFyZW50V2luZG93KTsKLSAgICBt
X3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3dfbmV3KHdpbmRvd1R5cGUpOwotICAgIGlmICh3aWR0
aCAmJiBoZWlnaHQpCi0gICAgICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9wYXJl
bnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBndGtf
d2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLQotICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9wYXJlbnRXaW5kb3csICJtYXAtZXZlbnQiLCBHX0NBTExCQUNLKHBhcmVudFdpbmRvd01h
cHBlZCksIHRoaXMpOwotICAgIGd0a193aWRnZXRfc2hvdyhtX3BhcmVudFdpbmRvdyk7Ci0gICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwotfQotCi12b2lkIFdlYlZpZXdUZXN0OjpyZXNp
emVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9j
YXRpb247Ci0gICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihHVEtfV0lER0VUKG1fd2ViVmll
dyksICZhbGxvY2F0aW9uKTsKLSAgICBpZiAod2lkdGggIT0gLTEpCi0gICAgICAgIGFsbG9jYXRp
b24ud2lkdGggPSB3aWR0aDsKLSAgICBpZiAoaGVpZ2h0ICE9IC0xKQotICAgICAgICBhbGxvY2F0
aW9uLmhlaWdodCA9IGhlaWdodDsKLSAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJ
REdFVChtX3dlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci19Ci0KIHZvaWQgV2ViVmlld1Rlc3Q6OnNl
bGVjdEFsbCgpCiB7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5k
KG1fd2ViVmlldywgIlNlbGVjdEFsbCIpOwpAQCAtMzAzLDk3ICsyNTMsNiBAQCBjb25zdCBjaGFy
KiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFT
aXplKQogICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5nZXQoKTsKIH0KIAotdm9pZCBXZWJWaWV3
VGVzdDo6bW91c2VNb3ZlVG8oaW50IHgsIGludCB5LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykK
LXsKLSAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRvdyk7Ci0gICAgR3RrV2lkZ2V0KiB2aWV3V2lk
Z2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0
X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKLQotICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50
KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkpKTsKLSAgICBldmVudC0+bW90aW9uLngg
PSB4OwotICAgIGV2ZW50LT5tb3Rpb24ueSA9IHk7Ci0KLSAgICBldmVudC0+bW90aW9uLnRpbWUg
PSBHREtfQ1VSUkVOVF9USU1FOwotICAgIGV2ZW50LT5tb3Rpb24ud2luZG93ID0gZ3RrX3dpZGdl
dF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOwotICAgIGdfb2JqZWN0X3JlZihldmVudC0+bW90aW9u
LndpbmRvdyk7Ci0gICAgZXZlbnQtPm1vdGlvbi5kZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFnZXJf
Z2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9kZXZpY2VfbWFuYWdlcihndGtfd2lk
Z2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQpKSk7Ci0gICAgZXZlbnQtPm1vdGlvbi5zdGF0ZSA9
IG1vdXNlTW9kaWZpZXJzOwotICAgIGV2ZW50LT5tb3Rpb24uYXhlcyA9IDA7Ci0KLSAgICBpbnQg
eFJvb3QsIHlSb290OwotICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzKGd0a193aWRnZXRf
Z2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSwgeCwgeSwgJnhSb290LCAmeVJvb3QpOwotICAgIGV2ZW50
LT5tb3Rpb24ueF9yb290ID0geFJvb3Q7Ci0gICAgZXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB5Um9v
dDsKLSAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7Ci19Ci0KLXZvaWQgV2ViVmll
d1Rlc3Q6OmNsaWNrTW91c2VCdXR0b24oaW50IHgsIGludCB5LCB1bnNpZ25lZCBidXR0b24sIHVu
c2lnbmVkIG1vdXNlTW9kaWZpZXJzKQotewotICAgIGRvTW91c2VCdXR0b25FdmVudChHREtfQlVU
VE9OX1BSRVNTLCB4LCB5LCBidXR0b24sIG1vdXNlTW9kaWZpZXJzKTsKLSAgICBkb01vdXNlQnV0
dG9uRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCB4LCB5LCBidXR0b24sIG1vdXNlTW9kaWZpZXJz
KTsKLX0KLQotdm9pZCBXZWJWaWV3VGVzdDo6ZW1pdFBvcHVwTWVudVNpZ25hbCgpCi17Ci0gICAg
R3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcpOwotICAgIGdfYXNz
ZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKLQotICAgIGdib29sZWFu
IGhhbmRsZWQ7Ci0gICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXdXaWRnZXQsICJwb3B1cC1t
ZW51IiwgJmhhbmRsZWQpOwotfQotCi12b2lkIFdlYlZpZXdUZXN0OjprZXlTdHJva2UodW5zaWdu
ZWQga2V5VmFsLCB1bnNpZ25lZCBrZXlNb2RpZmllcnMpCi17Ci0gICAgZ19hc3NlcnQobV9wYXJl
bnRXaW5kb3cpOwotICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJW
aWV3KTsKLSAgICBnX2Fzc2VydChndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7
Ci0KLSAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlf
UFJFU1MpKTsKLSAgICBldmVudC0+a2V5LmtleXZhbCA9IGtleVZhbDsKLQotICAgIGV2ZW50LT5r
ZXkudGltZSA9IEdES19DVVJSRU5UX1RJTUU7Ci0gICAgZXZlbnQtPmtleS53aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdldCk7Ci0gICAgZ19vYmplY3RfcmVmKGV2ZW50LT5r
ZXkud2luZG93KTsKLSAgICBnZGtfZXZlbnRfc2V0X2RldmljZShldmVudC5nZXQoKSwgZ2RrX2Rl
dmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21h
bmFnZXIoZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh2aWV3V2lkZ2V0KSkpKTsKLSAgICBldmVudC0+
a2V5LnN0YXRlID0ga2V5TW9kaWZpZXJzOwotCi0gICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4g
ZXZlbnQsIGFuIGludmFsaWQgaGFyZHdhcmVfa2V5Y29kZSB2YWx1ZSBjYW4gY2F1c2UgaXQgdG8g
YmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEdUSysuCi0gICAgR1VuaXF1ZU91dFB0cjxHZGtLZXltYXBL
ZXk+IGtleXM7Ci0gICAgaW50IGtleXNDb3VudDsKLSAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50
cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2RlZmF1bHQoKSwga2V5VmFsLCAma2V5cy5v
dXRQdHIoKSwgJmtleXNDb3VudCkpCi0gICAgICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29k
ZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKLQotICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50
LmdldCgpKTsKLSAgICBldmVudC0+a2V5LnR5cGUgPSBHREtfS0VZX1JFTEVBU0U7Ci0gICAgZ3Rr
X21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOwotfQotCi12b2lkIFdlYlZpZXdUZXN0Ojpkb01v
dXNlQnV0dG9uRXZlbnQoR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSwgaW50IHgsIGludCB5LCB1bnNp
Z25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQotewotICAgIGdfYXNzZXJ0KG1f
cGFyZW50V2luZG93KTsKLSAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1f
d2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdl
dCkpOwotCi0gICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVu
dFR5cGUpKTsKLSAgICBldmVudC0+YnV0dG9uLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRv
dyh2aWV3V2lkZ2V0KTsKLSAgICBnX29iamVjdF9yZWYoZXZlbnQtPmJ1dHRvbi53aW5kb3cpOwot
Ci0gICAgZXZlbnQtPmJ1dHRvbi50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC0+
YnV0dG9uLnggPSB4OwotICAgIGV2ZW50LT5idXR0b24ueSA9IHk7Ci0gICAgZXZlbnQtPmJ1dHRv
bi5heGVzID0gMDsKLSAgICBldmVudC0+YnV0dG9uLnN0YXRlID0gbW91c2VNb2RpZmllcnM7Ci0g
ICAgZXZlbnQtPmJ1dHRvbi5idXR0b24gPSBidXR0b247Ci0KLSAgICBldmVudC0+YnV0dG9uLmRl
dmljZSA9IGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlf
Z2V0X2RldmljZV9tYW5hZ2VyKGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdldCkpKTsK
LQotICAgIGludCB4Um9vdCwgeVJvb3Q7Ci0gICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMo
Z3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpLCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7
Ci0gICAgZXZlbnQtPmJ1dHRvbi54X3Jvb3QgPSB4Um9vdDsKLSAgICBldmVudC0+YnV0dG9uLnlf
cm9vdCA9IHlSb290OwotICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKLX0KLQog
c3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVzdCkKIHsKICAgICB0ZXN0LT5tX2phdmFzY3Jp
cHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFzY3JpcHRfZmluaXNoKHRlc3QtPm1f
d2ViVmlldywgcmVzdWx0LCB0ZXN0LT5tX2phdmFzY3JpcHRFcnJvcik7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaAppbmRleCAzNmFlNjJh
MDA2YS4uMzI2YTRhYmQzZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9X
ZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtMzIsNiArMzIsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdlYlZpZXdJbkNvbnN0cnVjdG9yOwogICAgIHZvaWQg
aW5pdGlhbGl6ZVdlYlZpZXcoKTsKIAorICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViVmll
dygpOworICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7CisKICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZFVSSShjb25zdCBjaGFyKiB1cmkpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkSHRtbChjb25zdCBj
aGFyKiBodG1sLCBjb25zdCBjaGFyKiBiYXNlVVJJKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFBs
YWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRleHQpOwpAQCAtNDgsOSArNTEsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB2b2lkIHdhaXRVbnRpbFRp
dGxlQ2hhbmdlZFRvKGNvbnN0IGNoYXIqIGV4cGVjdGVkVGl0bGUpOwogICAgIHZvaWQgd2FpdFVu
dGlsVGl0bGVDaGFuZ2VkKCk7Ci0gICAgdm9pZCBzaG93SW5XaW5kb3coR3RrV2luZG93VHlwZSA9
IEdUS19XSU5ET1dfUE9QVVApOwotICAgIHZvaWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFw
cGVkKEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lORE9XX1BPUFVQLCBpbnQgd2lkdGggPSAwLCBpbnQg
aGVpZ2h0ID0gMCk7CiAgICAgdm9pZCByZXNpemVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCk7
CisgICAgdm9pZCBoaWRlVmlldygpOwogICAgIHZvaWQgc2VsZWN0QWxsKCk7CiAgICAgY29uc3Qg
Y2hhciogbWFpblJlc291cmNlRGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFTaXplKTsKIApA
QCAtNjEsNyArNjMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgY2xpY2tNb3VzZUJ1dHRvbihpbnQg
eCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiA9IDEsIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzID0g
MCk7CiAgICAgdm9pZCBrZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1bnNpZ25lZCBrZXlNb2Rp
ZmllcnMgPSAwKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIHNob3dJbldpbmRvdyhH
dGtXaW5kb3dUeXBlID0gR1RLX1dJTkRPV19QT1BVUCk7CisgICAgdm9pZCBzaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSA9IEdUS19XSU5ET1dfUE9QVVAsIGludCB3
aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKTsKICAgICB2b2lkIGVtaXRQb3B1cE1lbnVTaWduYWwo
KTsKKyNlbmRpZgogCiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGphdmFzY3JpcHQsIEdFcnJvcioqKTsKICAg
ICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdh
aXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIHJlc291cmNlLCBHRXJyb3IqKik7CkBAIC04Nyw3
ICs5Myw2IEBAIHB1YmxpYzoKICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXcgeyBudWxscHRy
IH07CiAgICAgR01haW5Mb29wKiBtX21haW5Mb29wOwogICAgIENTdHJpbmcgbV9hY3RpdmVVUkk7
Ci0gICAgR3RrV2lkZ2V0KiBtX3BhcmVudFdpbmRvdyB7IG51bGxwdHIgfTsKICAgICBDU3RyaW5n
IG1fZXhwZWN0ZWRUaXRsZTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBtX2phdmFzY3Jp
cHRSZXN1bHQgeyBudWxscHRyIH07CiAgICAgR0Vycm9yKiogbV9qYXZhc2NyaXB0RXJyb3IgeyBu
dWxscHRyIH07CkBAIC05Niw2ICsxMDEsMTIgQEAgcHVibGljOgogICAgIGNhaXJvX3N1cmZhY2Vf
dCogbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9leHBlY3RlZFdlYlByb2Nlc3ND
cmFzaCB7IGZhbHNlIH07CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgR3RrV2lkZ2V0KiBtX3Bh
cmVudFdpbmRvdyB7IG51bGxwdHIgfTsKKyNlbmRpZgorCiBwcml2YXRlOgorI2lmIFBMQVRGT1JN
KEdUSykKICAgICB2b2lkIGRvTW91c2VCdXR0b25FdmVudChHZGtFdmVudFR5cGUsIGludCwgaW50
LCB1bnNpZ25lZCwgdW5zaWduZWQpOworI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhiM2Q4YmEwZDk5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZp
ZXdUZXN0R3RrLmNwcApAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1v
YmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0
ay5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKwordm9pZCBXZWJWaWV3VGVzdDo6cGxhdGZvcm1E
ZXN0cm95KCkKK3sKKyAgICBpZiAobV9wYXJlbnRXaW5kb3cpCisgICAgICAgIGd0a193aWRnZXRf
ZGVzdHJveShtX3BhcmVudFdpbmRvdyk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlZpZXcoKQoreworICAgIGdfYXNzZXJ0KFdFQktJVF9XRUJfVklFVyhtX3dl
YlZpZXcpKTsKKyAgICBnX2Fzc2VydChnX29iamVjdF9pc19mbG9hdGluZyhtX3dlYlZpZXcpKTsK
KyAgICBnX29iamVjdF9yZWZfc2luayhtX3dlYlZpZXcpOworfQorCit2b2lkIFdlYlZpZXdUZXN0
OjpxdWl0TWFpbkxvb3BBZnRlclByb2Nlc3NpbmdQZW5kaW5nRXZlbnRzKCkKK3sKKyAgICB3aGls
ZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCisgICAgICAgIGd0a19tYWluX2l0ZXJhdGlvbigpOwor
ICAgIHF1aXRNYWluTG9vcCgpOworfQorCit2b2lkIFdlYlZpZXdUZXN0OjpyZXNpemVWaWV3KGlu
dCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247Cisg
ICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihHVEtfV0lER0VUKG1fd2ViVmlldyksICZhbGxv
Y2F0aW9uKTsKKyAgICBpZiAod2lkdGggIT0gLTEpCisgICAgICAgIGFsbG9jYXRpb24ud2lkdGgg
PSB3aWR0aDsKKyAgICBpZiAoaGVpZ2h0ICE9IC0xKQorICAgICAgICBhbGxvY2F0aW9uLmhlaWdo
dCA9IGhlaWdodDsKKyAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVChtX3dl
YlZpZXcpLCAmYWxsb2NhdGlvbik7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmhpZGVWaWV3KCkK
K3sKKyAgICBndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKK30KKworc3Rh
dGljIGdib29sZWFuIHBhcmVudFdpbmRvd01hcHBlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZl
bnQqLCBXZWJWaWV3VGVzdCogdGVzdCkKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25u
ZWN0X2J5X2Z1bmMod2lkZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihwYXJlbnRXaW5kb3dN
YXBwZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwor
CisgICAgcmV0dXJuIEZBTFNFOworfQorCit2b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3co
R3RrV2luZG93VHlwZSB3aW5kb3dUeXBlKQoreworICAgIGdfYXNzZXJ0KCFtX3BhcmVudFdpbmRv
dyk7CisgICAgbV9wYXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyh3aW5kb3dUeXBlKTsKKyAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJ
REdFVChtX3dlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZp
ZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3cobV9wYXJlbnRXaW5kb3cpOworfQorCit2b2lkIFdl
YlZpZXdUZXN0OjpzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSB3
aW5kb3dUeXBlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCit7CisgICAgZ19hc3NlcnQoIW1fcGFy
ZW50V2luZG93KTsKKyAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3dfbmV3KHdpbmRvd1R5
cGUpOworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisgICAgICAgIGd0a193aW5kb3dfcmVzaXpl
KEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBndGtfY29u
dGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dl
YlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wYXJlbnRXaW5kb3csICJtYXAtZXZlbnQiLCBHX0NBTExC
QUNLKHBhcmVudFdpbmRvd01hcHBlZCksIHRoaXMpOworICAgIGd0a193aWRnZXRfc2hvdyhtX3Bh
cmVudFdpbmRvdyk7CisgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworfQorCit2b2lk
IFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyhpbnQgeCwgaW50IHksIHVuc2lnbmVkIG1vdXNlTW9k
aWZpZXJzKQoreworICAgIGdfYXNzZXJ0KG1fcGFyZW50V2luZG93KTsKKyAgICBHdGtXaWRnZXQq
IHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7CisgICAgZ19hc3NlcnQoZ3RrX3dp
ZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOworCisgICAgR1VuaXF1ZVB0cjxHZGtFdmVu
dD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9USU9OX05PVElGWSkpOworICAgIGV2ZW50LT5t
b3Rpb24ueCA9IHg7CisgICAgZXZlbnQtPm1vdGlvbi55ID0geTsKKworICAgIGV2ZW50LT5tb3Rp
b24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAgZXZlbnQtPm1vdGlvbi53aW5kb3cgPSBn
dGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdldCk7CisgICAgZ19vYmplY3RfcmVmKGV2ZW50
LT5tb3Rpb24ud2luZG93KTsKKyAgICBldmVudC0+bW90aW9uLmRldmljZSA9IGdka19kZXZpY2Vf
bWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2Vy
KGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdldCkpKTsKKyAgICBldmVudC0+bW90aW9u
LnN0YXRlID0gbW91c2VNb2RpZmllcnM7CisgICAgZXZlbnQtPm1vdGlvbi5heGVzID0gMDsKKwor
ICAgIGludCB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoZ3Rr
X3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpLCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7Cisg
ICAgZXZlbnQtPm1vdGlvbi54X3Jvb3QgPSB4Um9vdDsKKyAgICBldmVudC0+bW90aW9uLnlfcm9v
dCA9IHlSb290OworICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKK30KKwordm9p
ZCBXZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1dHRvbihpbnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1
dHRvbiwgdW5zaWduZWQgbW91c2VNb2RpZmllcnMpCit7CisgICAgZG9Nb3VzZUJ1dHRvbkV2ZW50
KEdES19CVVRUT05fUFJFU1MsIHgsIHksIGJ1dHRvbiwgbW91c2VNb2RpZmllcnMpOworICAgIGRv
TW91c2VCdXR0b25FdmVudChHREtfQlVUVE9OX1JFTEVBU0UsIHgsIHksIGJ1dHRvbiwgbW91c2VN
b2RpZmllcnMpOworfQorCit2b2lkIFdlYlZpZXdUZXN0OjplbWl0UG9wdXBNZW51U2lnbmFsKCkK
K3sKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7Cisg
ICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOworCisgICAg
Z2Jvb2xlYW4gaGFuZGxlZDsKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlld1dpZGdldCwg
InBvcHVwLW1lbnUiLCAmaGFuZGxlZCk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmtleVN0cm9r
ZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1vZGlmaWVycykKK3sKKyAgICBnX2Fzc2Vy
dChtX3BhcmVudFdpbmRvdyk7CisgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdF
VChtX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdX
aWRnZXQpKTsKKworICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXco
R0RLX0tFWV9QUkVTUykpOworICAgIGV2ZW50LT5rZXkua2V5dmFsID0ga2V5VmFsOworCisgICAg
ZXZlbnQtPmtleS50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKyAgICBldmVudC0+a2V5LndpbmRv
dyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KTsKKyAgICBnX29iamVjdF9yZWYo
ZXZlbnQtPmtleS53aW5kb3cpOworICAgIGdka19ldmVudF9zZXRfZGV2aWNlKGV2ZW50LmdldCgp
LCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9k
ZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQpKSkpOworICAg
IGV2ZW50LT5rZXkuc3RhdGUgPSBrZXlNb2RpZmllcnM7CisKKyAgICAvLyBXaGVuIHN5bnRoZXNp
emluZyBhbiBldmVudCwgYW4gaW52YWxpZCBoYXJkd2FyZV9rZXljb2RlIHZhbHVlIGNhbiBjYXVz
ZSBpdCB0byBiZSBiYWRseSBwcm9jZXNzZWQgYnkgR1RLKy4KKyAgICBHVW5pcXVlT3V0UHRyPEdk
a0tleW1hcEtleT4ga2V5czsKKyAgICBpbnQga2V5c0NvdW50OworICAgIGlmIChnZGtfa2V5bWFw
X2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1hcF9nZXRfZGVmYXVsdCgpLCBrZXlWYWws
ICZrZXlzLm91dFB0cigpLCAma2V5c0NvdW50KSkKKyAgICAgICAgZXZlbnQtPmtleS5oYXJkd2Fy
ZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2RlOworCisgICAgZ3RrX21haW5fZG9fZXZl
bnQoZXZlbnQuZ2V0KCkpOworICAgIGV2ZW50LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFTRTsK
KyAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViVmlld1Rl
c3Q6OmRvTW91c2VCdXR0b25FdmVudChHZGtFdmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgeCwgaW50
IHksIHVuc2lnbmVkIGJ1dHRvbiwgdW5zaWduZWQgbW91c2VNb2RpZmllcnMpCit7CisgICAgZ19h
c3NlcnQobV9wYXJlbnRXaW5kb3cpOworICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19X
SURHRVQobV93ZWJWaWV3KTsKKyAgICBnX2Fzc2VydChndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2
aWV3V2lkZ2V0KSk7CisKKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRf
bmV3KGV2ZW50VHlwZSkpOworICAgIGV2ZW50LT5idXR0b24ud2luZG93ID0gZ3RrX3dpZGdldF9n
ZXRfd2luZG93KHZpZXdXaWRnZXQpOworICAgIGdfb2JqZWN0X3JlZihldmVudC0+YnV0dG9uLndp
bmRvdyk7CisKKyAgICBldmVudC0+YnV0dG9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworICAg
IGV2ZW50LT5idXR0b24ueCA9IHg7CisgICAgZXZlbnQtPmJ1dHRvbi55ID0geTsKKyAgICBldmVu
dC0+YnV0dG9uLmF4ZXMgPSAwOworICAgIGV2ZW50LT5idXR0b24uc3RhdGUgPSBtb3VzZU1vZGlm
aWVyczsKKyAgICBldmVudC0+YnV0dG9uLmJ1dHRvbiA9IGJ1dHRvbjsKKworICAgIGV2ZW50LT5i
dXR0b24uZGV2aWNlID0gZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtf
ZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh2aWV3V2lk
Z2V0KSkpOworCisgICAgaW50IHhSb290LCB5Um9vdDsKKyAgICBnZGtfd2luZG93X2dldF9yb290
X2Nvb3JkcyhndGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdldCksIHgsIHksICZ4Um9vdCwg
JnlSb290KTsKKyAgICBldmVudC0+YnV0dG9uLnhfcm9vdCA9IHhSb290OworICAgIGV2ZW50LT5i
dXR0b24ueV9yb290ID0geVJvb3Q7CisgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkp
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvd3Bl
L1dlYlZpZXdUZXN0V1BFLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L3dwZS9XZWJWaWV3VGVzdFdQRS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmNjZjE1YzIxMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvd3BlL1dlYlZpZXdUZXN0V1BFLmNwcApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorCit2b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9y
bURlc3Ryb3koKQoreworfQorCit2b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJWaWV3KCkKK3sKK30KKwordm9pZCBXZWJWaWV3VGVzdDo6cXVpdE1haW5Mb29wQWZ0ZXJQcm9j
ZXNzaW5nUGVuZGluZ0V2ZW50cygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCBpZiBuZWVk
ZWQuCisgICAgcXVpdE1haW5Mb29wKCk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OnJlc2l6ZVZp
ZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9
CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmhpZGVWaWV3KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50LgorfQorCit2b2lkIFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyhpbnQgeCwgaW50IHksIHVu
c2lnbmVkIG1vdXNlTW9kaWZpZXJzKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisK
K3ZvaWQgV2ViVmlld1Rlc3Q6OmNsaWNrTW91c2VCdXR0b24oaW50IHgsIGludCB5LCB1bnNpZ25l
ZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQuCit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSh1bnNpZ25lZCBrZXlWYWws
IHVuc2lnbmVkIGtleU1vZGlmaWVycykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313601</attachid>
            <date>2017-06-22 02:28:11 -0700</date>
            <delta_ts>2017-06-22 03:05:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wpe-unit-tests.diff</filename>
            <type>text/plain</type>
            <size>94586</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQK
aW5kZXggNmM0ZjliZmRhYzYuLjU4OGFmY2JmMjhhIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxp
c3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsOSBAQCBlbHNl
aWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiV1BFIikKICAgICBpZiAoREVWRUxPUEVSX01PREUpCiAg
ICAgICAgIGFkZF9zdWJkaXJlY3RvcnkoSW1hZ2VEaWZmKQogICAgICAgICBhZGRfc3ViZGlyZWN0
b3J5KFdlYktpdFRlc3RSdW5uZXIpCisgICAgICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAg
ICAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJL2dsaWIpCisgICAgICAgIGVu
ZGlmICgpCiAgICAgZW5kaWYgKCkKIGVsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJXaW4iKQog
ICAgIGFkZF9zdWJkaXJlY3RvcnkoRHVtcFJlbmRlclRyZWUpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjI4ZjExNzRhYjUuLmEwM2IzY2VmMDk1
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTI1IEBACiAyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAorICAgICAgICBbV1BFXSBCdWlsZCBnbGliIEFQSSB0ZXN0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFueSBvZiB0aGUgdGVz
dHMgcGFzcyB3aXRob3V0IHByb2JsZW1zLCBvdGhlcnMgbmVlZCB0byBiZSBpbnZlc3RpZ2F0ZWQs
IGFuZCBzb21lIG90aGVycyBhcmUga25vd24gaXNzdWVzLiBUaGUKKyAgICAgICAgbWFpbiBkaWZm
ZXJlbmNlIGJldHdlZW4gdGhlIEdUSysgYW5kIFdQRSBXZWJLaXRXZWJWaWV3IGlzIHRoYXQgaW4g
R1RLKyBpdCdzIGEgR3RrV2lkZ2V0LCBzbyBpbml0aWFsbHkKKyAgICAgICAgdW5vd25lZC4gVGhl
IHRlc3RzIGFzc3VtZSB0aGF0IHdlYmtpdF93ZWJfdmlld19uZXcgbWV0aG9kcyByZXR1cm4gYSBm
bG9hdGluZyByZWZlcmVuY2UuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICBUZXN0OjphZG9wdFZp
ZXcoKSBtZXRob2QgdGhhdCByZXR1cm5zIGEgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3aXRoIGEg
ZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGluIEdUSysgYW5kCisgICAgICAgIFdQRS4gSW4gdGhl
IGNhc2Ugb2YgR1RLKywgaXQgc2lua3MgdGhlIGZsb2F0aW5nIHJlZmVyZW5jZSwgd2hpbGUgaW4g
V1BFIGl0IHNpbXBseSBhZG9wdHMgdGhlIHJlZmVyZW5jZS4gQW5vdGhlcgorICAgICAgICBkaWZm
ZXJlbmNlIGlzIHRoYXQgaW4gR1RLKyB0aGUgd2ViIHZpZXcgaXMgaW5pdGlhbGx5IGhpZGRlbiBh
bmQgbmVlZHMgdG8gYmUgYWRkZWQgdG8gYSB3aW5kb3cgdG8gbWFrZSBpdAorICAgICAgICB2aXNp
YmxlLiBBbHNvLCBzb21lIHRlc3RzIG5lZWQgdGhlIHdlYiB2aWV3IHRvIGJlIHJlYWxpemVkIHRv
IHdvcmssIGFuZCBvdGhlcnMgbmVlZCB0aGF0IHRoZSB2aWV3IGlzIGFkZGVkIHRvIGEKKyAgICAg
ICAgdG9wbGV2ZWwgd2luZG93LCBpbnN0ZWFkIG9mIGEgcG9wdXAgd2luZG93LiBBbGwgdGhvc2Ug
dGhpbmdzIGFyZSBub3QgbmVlZGVkIGF0IGFsbCBpbiBXUEUuIEkndmUgYWRkZWQgc2V2ZXJhbAor
ICAgICAgICAjaWZkZWZzIHdpdGggRklYTUUgY29tbWVudHMgZm9yIHRoZSB0aGluZ3MgdGhhdCB3
ZSBrbm93IGRvbid0IHdvcmsgaW4gV1BFIHlldCwgZm9yIGV4YW1wbGUsIGJlY2F1c2Ugd2UgaGF2
ZW4ndAorICAgICAgICBpbXBsZW1lbnRlZCB0aGUgbWV0aG9kcyB0byBzZW5kIGV2ZW50cyB0byB0
aGUgd2ViIHZpZXcuIFRob3NlIHdpbGwgYmUgcmVtb3ZlZCBldmVudHVhbGx5IHdoZW4gd2UgZml4
IHRoZSBpc3N1ZXMKKyAgICAgICAgYW5kIGltcGxlbWVudCB0aGUgbWlzc2luZyBmZWF0dXJlcy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9FZGl0b3JUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHRlc3RB
dXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgICh0ZXN0
V2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZVdpdGhGb3JtRGF0YSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld05hdmln
YXRpb25BZnRlclNlc3Npb25SZXN0b3JlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyRXBoZW1lcmFsKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHA6CisgICAg
ICAgICh0ZXN0QmxvYkRvd25sb2FkKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNw
cDoKKyAgICAgICAgKHRlc3RQcm9jZXNzUGVyV2ViVmlldyk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwOgorICAgICAgICAodGVzdFdlYlZp
ZXdDcmVhdGVOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgICh0ZXN0V2ViVmlld0phdmFTY3JpcHRE
aWFsb2dzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk6CisgICAgICAg
ICh0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVl
c3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoYmVmb3JlQWxsKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHA6CisgICAgICAgICh0ZXN0UHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZpbmRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlckhpZGUpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGlu
Z3MuY3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdOZXdXaXRoVXNlckNv
bnRlbnRNYW5hZ2VyKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KHRlc3RXZWJDb250ZXh0RXBoZW1lcmFsKToKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0UHJveHlT
ZXR0aW5ncyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
Vmlld1dlYkNvbnRleHQpOgorICAgICAgICAodGVzdFdlYlZpZXdXZWJDb250ZXh0TGlmZXRpbWUp
OgorICAgICAgICAodGVzdFdlYlZpZXdFcGhlbWVyYWwpOgorICAgICAgICAodGVzdFdlYlZpZXdT
ZXR0aW5ncyk6CisgICAgICAgICh0ZXN0V2ViVmlld0NhblNob3dNSU1FVHlwZSk6CisgICAgICAg
ICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKHRlc3RXZWJWaWV3SXNQbGF5
aW5nQXVkaW8pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKHRlc3RXZWJz
aXRlRGF0YUVwaGVtZXJhbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAoZG9jdW1lbnRMb2FkZWRDYWxsYmFj
ayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKyAgICAgICAgKG1ldGhvZENhbGxD
YWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlBy
b2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHA6Cisg
ICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9U
ZXN0TWFpbi5oOgorICAgICAgICAoVGVzdDo6YWRvcHRWaWV3KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcDoKKyAgICAgICAgKFdlYktp
dFRlc3RCdXM6OnJ1bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6On5XZWJWaWV3VGVzdCk6Cisg
ICAgICAgIChXZWJWaWV3VGVzdDo6aW5pdGlhbGl6ZVdlYlZpZXcpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJWaWV3VGVzdDo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpx
dWl0TWFpbkxvb3BBZnRlclByb2Nlc3NpbmdQZW5kaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYlZp
ZXdUZXN0OjpyZXNpemVWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpoaWRlVmlldyk6Cisg
ICAgICAgIChwYXJlbnRXaW5kb3dNYXBwZWQpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnNob3dJ
bldpbmRvdyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93QW5kV2FpdFVudGls
TWFwcGVkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyk6CisgICAgICAgIChX
ZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1dHRvbik6CisgICAgICAgIChXZWJWaWV3VGVzdDo6ZW1p
dFBvcHVwTWVudVNpZ25hbCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKToKKyAg
ICAgICAgKFdlYlZpZXdUZXN0Ojpkb01vdXNlQnV0dG9uRXZlbnQpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL3dwZS9XZWJWaWV3VGVzdFdQRS5jcHA6IENvcGllZCBm
cm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5o
LgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnBsYXRmb3JtRGVzdHJveSk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3VGVz
dDo6cXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cyk6CisgICAgICAgIChX
ZWJWaWV3VGVzdDo6cmVzaXplVmlldyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6aGlkZVZpZXcp
OgorICAgICAgICAoV2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjpjbGlja01vdXNlQnV0dG9uKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2Up
OgorCisyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKwogICAgICAgICBbR1RLXSBNb3ZlIFdlYktpdDIgR0xpYiBBUEkgdGVzdHMgdG8gZ2xpYiBk
aXJlY3RvcmllcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczNjQyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9FZGl0b3JUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9FZGl0b3JUZXN0LmNwcAppbmRleCA4NzMzNDQyNzE4Ni4uYzIyZDhhYjM4OTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9FZGl0b3JUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRWRpdG9yVGVzdC5jcHAK
QEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIldlYlBy
b2Nlc3NUZXN0LmgiCi0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgog
CiAjZGVmaW5lIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQogI2luY2x1ZGUgPHdlYmtpdGRv
bS9XZWJLaXRET01ET01TZWxlY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKaW5kZXggYTMyZDNlNTJmZTUuLmRlODAzMTQz
ZGMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJh
bWVUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJh
bWVUZXN0LmNwcApAQCAtMjEsNyArMjEsNiBAQAogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3Qu
aCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4
dGVuc2lvbi5oPgogCiBjbGFzcyBXZWJLaXRGcmFtZVRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rl
c3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA2Njk3NDNjNzIx
Yy4uMzFjZDY4NmY5NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yNjYsMTIg
KzI2NiwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lv
bihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogICAgIGdfYXNzZXJ0KCF0ZXN0LT5j
cmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChudWxscHRyKSk7CiAKICAgICAvLyBXaWxsIGFs
c28gZmFpbCBpZiB0aGUgd2ViIHZpZXcgaXMgbm90IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4K
LSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7
CisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkp
KTsKICAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQod2Vi
Vmlldy5nZXQoKSkpOwogCiAgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJvcGVyIHdlYiB2
aWV3LgotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksICJp
cy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLCBudWxscHRyKSk7CisgICAgd2ViVmll
dyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJ3
ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgImlzLWNvbnRyb2xsZWQtYnkt
YXV0b21hdGlvbiIsIFRSVUUsIG51bGxwdHIpKTsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3Zp
ZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsKICAgICBnX2Fz
c2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dCh3ZWJWaWV3LmdldCgpKSk7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
QmFja0ZvcndhcmRMaXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBmZDJmYmY1ZjIzNy4uYWYyMjRjMWE1NmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QmFj
a0ZvcndhcmRMaXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTIxLDEwICsyMSw4IEBACiAKICNpbmNsdWRl
ICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAKIC8vIEJhY2sgZm9yd2FyZCBsaXN0
IGxpbWl0IGlzIDEwMCBieSBkZWZhdWx0Lgogc3RhdGljIGNvbnN0IGludCBrQmFja0ZvcndhcmRM
aXN0TGltaXQgPSAxMDA7CkBAIC0yNjgsNyArMjY2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktp
dFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnQKIHsKICAgICBXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKiBzdGF0ZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfc2Vzc2lvbl9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KHN0
YXRlKTsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBhdXRvIHZpZXcgPSBUZXN0OjphZG9wdFZpZXco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGJmTGlz
dCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAg
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChi
Zkxpc3QpLCA9PSwgMCk7CiAgICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0
ZSh2aWV3LmdldCgpLCBzdGF0ZSk7CkBAIC0yNzcsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnQKICAgICBnX2Fzc2VydChkYXRhKTsKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmll
d19zZXNzaW9uX3N0YXRlX25ldyhkYXRhLmdldCgpKTsKICAgICBnX2Fzc2VydChzdGF0ZSk7Ci0g
ICAgdmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3Qg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZM
aXN0KSwgPT0sIDApOwogICAgIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUo
dmlldy5nZXQoKSwgc3RhdGUpOwpAQCAtMzIwLDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50CiAgICAgc3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9uZXcoZGF0
YS5nZXQoKSk7CiAgICAgZ19hc3NlcnQoc3RhdGUpOwogCi0gICAgdmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZpZXcgPSBUZXN0OjphZG9wdFZpZXco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdl
YmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwpA
QCAtMzQ5LDcgKzM0Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0
YXRlV2l0aEZvcm1EYXRhKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsCiAKICAgICBXZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlKiBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9z
dGF0ZSh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KHN0YXRlKTsKLSAgICBHUmVmUHRy
PFdlYktpdFdlYlZpZXc+IHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKKyAgICBhdXRvIHZpZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGJmTGlzdCA9IHdlYmtpdF93ZWJfdmll
d19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChiZkxpc3QpLCA9PSwgMCk7CiAg
ICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZSh2aWV3LmdldCgpLCBzdGF0
ZSk7CkBAIC0zNTgsNyArMzU2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlZpZXdTZXNz
aW9uU3RhdGVXaXRoRm9ybURhdGEoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwKICAgICBnX2Fz
c2VydChkYXRhKTsKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX25l
dyhkYXRhLmdldCgpKTsKICAgICBnX2Fzc2VydChzdGF0ZSk7Ci0gICAgdmlldyA9IFdFQktJVF9X
RUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZpZXcgPSBUZXN0OjphZG9wdFZp
ZXcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAg
IHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUp
OwpAQCAtMzc2LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3TmF2aWdh
dGlvbkFmdGVyU2Vzc2lvblJlc3RvcmUoQmFja0ZvcndhcmRMaXN0VGVzdCoKIHsKICAgICAvLyBU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBub3JtYWwgbG9hZCBhZnRlciBhIHNlc3Npb24gcmVzdG9y
ZSB3aXRoIGEgQmFja0ZvcmFyZCBsaXN0IGhhdmluZwogICAgIC8vIGZvcndhcmQgaXRlbXMgZG9l
c24ndCBwcm9kdWNlIGFueSBydW50aW1lIGNyaXRpY2FsIHdhcm5pbmcuIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMjMzLgotICAgIEdSZWZQdHI8V2ViS2l0
V2ViVmlldz4gdmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwor
ICAgIGF1dG8gdmlldyA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qodmlldy5nZXQoKSwgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJB
Q0sodmlld0xvYWRDaGFuZ2VkKSwgdGVzdC0+bV9tYWluTG9vcCk7CiAKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkodmlldy5nZXQoKSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL1BhZ2Ux
IikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29uc29sZU1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggNzAxOTQ0MGRmOTAuLmE4OWM4
MTkyMjI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdENvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcApAQCAtMjAsOSArMjAsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxndGsv
Z3RrLmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAKKyNpZiBQTEFURk9STShHVEsp
CiBjbGFzcyBDb25zb2xlTWVzc2FnZVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGlj
OgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29uc29sZU1lc3NhZ2VUZXN0KTsKQEAgLTE0
MSwxMyArMTQwLDE3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZVNlY3Vy
aXR5RXJyb3IoQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29uCiAgICAgdGVzdC0+d2FpdFVu
dGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwogICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29s
ZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgLy8gRklYTUU6IFVzZSBKU0MgQVBJIHRvIHNl
bmQgc2NyaXB0IG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdC4KKyNpZiBQTEFURk9STShHVEspCiAg
ICAgQ29uc29sZU1lc3NhZ2VUZXN0OjphZGQoIldlYktpdENvbnNvbGVNZXNzYWdlIiwgImNvbnNv
bGUtYXBpIiwgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlQ29uc29sZUFQSSk7CiAgICAgQ29uc29s
ZU1lc3NhZ2VUZXN0OjphZGQoIldlYktpdENvbnNvbGVNZXNzYWdlIiwgImpzLWV4Y2VwdGlvbiIs
IHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUphdmFTY3JpcHRFeGNlcHRpb24pOwogICAgIENvbnNv
bGVNZXNzYWdlVGVzdDo6YWRkKCJXZWJLaXRDb25zb2xlTWVzc2FnZSIsICJuZXR3b3JrLWVycm9y
IiwgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlTmV0d29ya0Vycm9yKTsKICAgICBDb25zb2xlTWVz
c2FnZVRlc3Q6OmFkZCgiV2ViS2l0Q29uc29sZU1lc3NhZ2UiLCAic2VjdXJpdHktZXJyb3IiLCB0
ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VTZWN1cml0eUVycm9yKTsKKyNlbmRpZgogfQogCiB2b2lk
IGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGRmNWYzZGRlZDkzLi4xYmU4Y2Mw
ZDA2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgc3RhdGljIHZv
aWQgdGVzdENvb2tpZU1hbmFnZXJFcGhlbWVyYWwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50
KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Vmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVy
YWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggNzU2MDQ2MGFi
ZjQuLjgyMDA3NzMxZDcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3BwCkBAIC0yMiwxMCArMjIsOCBAQAogI2luY2x1
ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogI2luY2x1
ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0
Mi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtNjcxLDYgKzY2OSw3IEBA
IHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZE1JTUVUeXBlKERvd25sb2FkVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5kRGVsZXRlRmlsZShkb3du
bG9hZC5nZXQoKSwgZXhwZWN0ZWRGaWxlbmFtZS5nZXQoKSk7CiB9CiAKKyNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0
SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkK
IHsKICAgICBnX2Fzc2VydChXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1bHQp
KTsKQEAgLTcyNiwxMCArNzI1LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURvd25s
b2FkQWN0aW9ucyhXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgZ19h
c3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dldF9zaXplKGRvd25sb2FkRmlsZUluZm8uZ2V0KCkp
LCA+LCAwKTsKICAgICBnX2ZpbGVfZGVsZXRlKGRvd25sb2FkRmlsZS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cik7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMgdm9pZCB0ZXN0
QmxvYkRvd25sb2FkKFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1h
cHBlZCgpOworI2VuZGlmCiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogbGlua0Jsb2JIVE1MID0K
ICAgICAgICAgIjxodG1sPjxib2R5PiIKQEAgLTc3OCw4ICs3ODAsMTQgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJw
b2xpY3ktZGVjaXNpb24tZG93bmxvYWQiLCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZCk7CiAg
ICAgUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3Q6OmFkZCgiRG93bmxvYWRzIiwgInBvbGljeS1k
ZWNpc2lvbi1kb3dubG9hZC1jYW5jZWwiLCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZENhbmNl
bCk7CiAgICAgRG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJtaW1lLXR5cGUiLCB0ZXN0
RG93bmxvYWRNSU1FVHlwZSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBrZXlTdHJva2UgaW4g
V1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3RG93bmxvYWRUZXN0OjphZGQoIkRv
d25sb2FkcyIsICJjb250ZXgtbWVudS1kb3dubG9hZC1hY3Rpb25zIiwgdGVzdENvbnRleHRNZW51
RG93bmxvYWRBY3Rpb25zKTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW91c2Ug
Y2xpY2sgaW4gV1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3RG93bmxvYWRUZXN0
OjphZGQoIkRvd25sb2FkcyIsICJibG9iLWRvd25sb2FkIiwgdGVzdEJsb2JEb3dubG9hZCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZyYW1lLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0RnJhbWUuY3BwCmluZGV4IDkxNDVhYjgxM2NlLi4yNTQ1N2Q3
ZmZjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RGcmFtZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RGcmFtZS5jcHAKQEAgLTIwLDggKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIldlYlZpZXdUZXN0LmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHdl
YmtpdDIvd2Via2l0Mi5oPgogCiBzdGF0aWMgdm9pZCB3ZWJraXRGcmFtZVRlc3RSdW4oV2ViVmll
d1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIHRlc3ROYW1lKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGYzZTI4ZDE2NzQ4Li43OTQ2NzA3MThhNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcApAQCAtMjUs
NyArMjUsNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNpbmNsdWRlICJXZWJLaXRU
ZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcAppbmRleCAwMjBh
ZDM1MjlhMi4uNTViOTk4ODA3ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHAKQEAgLTIyLDcgKzIyLDYg
QEAKICNpbmNsdWRlICJUZXN0TWFpbi5oIgogI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNp
bmNsdWRlICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bVZpZXdzID0g
MjsKQEAgLTU5LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgZ19hc3NlcnRfY21w
dWludChpbmRleCwgPCwgbnVtVmlld3MpOwogCi0gICAgICAgIG1fd2ViVmlld3NbaW5kZXhdID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KG1fd2ViQ29u
dGV4dC5nZXQoKSkpOworICAgICAgICBtX3dlYlZpZXdzW2luZGV4XSA9IFRlc3Q6OmFkb3B0Vmll
dyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChtX3dlYkNvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCht
X3dlYlZpZXdzW2luZGV4XS5nZXQoKSkpOwogCiAgICAgICAgIG1fd2ViVmlld0J1c05hbWVzW2lu
ZGV4XSA9IEdVbmlxdWVQdHI8Y2hhcj4oZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0JXUiLCBUZXN0OjpzX3dlYkV4dGVuc2lvbklEKSk7CkBAIC04OSw2ICs4
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAgICAgfQogCisjaWYg
UExBVEZPUk0oR1RLKQogICAgIHN0YXRpYyB2b2lkIG5hbWVWYW5pc2hlZENhbGxiYWNrKEdEQnVz
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgZ2NoYXIqIG5hbWUsIGdwb2ludGVyIHVzZXJE
YXRhKQogICAgIHsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxv
b3AqPih1c2VyRGF0YSkpOwpAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgICAgICBnX2J1c191bndhdGNoX25hbWUod2F0
Y2hlcklEKTsKICAgICB9CisjZW5kaWYKIAogICAgIEdNYWluTG9vcCogbV9tYWluTG9vcDsKICAg
ICB1bnNpZ25lZCBtX2luaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQ7CkBAIC0xMjks
MTIgKzEzMCwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJvY2Vzc1BlcldlYlZpZXcoTXVsdGlwcm9j
ZXNzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+
bV93ZWJWaWV3QnVzTmFtZXNbMF0uZ2V0KCksICE9LCB0ZXN0LT5tX3dlYlZpZXdCdXNOYW1lc1sx
XS5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT53ZWJQcm9jZXNzUGlkKDApLCAh
PSwgdGVzdC0+d2ViUHJvY2Vzc1BpZCgxKSk7CiAKKyNpZiBQTEFURk9STShHVEspCiAgICAgLy8g
Q2hlY2sgdGhhdCB3ZWIgcHJvY2Vzc2VzIGZpbmlzaCB3aGVuIHRoZSB3ZWIgdmlldyBpcyBkZXN0
cm95ZWQgZXZlbiB3aGVuIGl0J3Mgbm90IGZpbmFsaXplZC4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTc4My4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtVmlld3M7IGkrKykgewogICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlZp
ZXc+IHdlYlZpZXcgPSB0ZXN0LT5tX3dlYlZpZXdzW2ldOwogICAgICAgICB0ZXN0LT5kZXN0cm95
V2ViVmlld0FuZFdhaXRVbnRpbFdlYlByb2Nlc3NGaW5pc2hlcyhpKTsKICAgICB9CisjZW5kaWYK
IH0KIAogY2xhc3MgVUlDbGllbnRNdWx0aXByb2Nlc3NUZXN0OiBwdWJsaWMgVGVzdCB7CkBAIC0x
NDcsNyArMTUwLDcgQEAgcHVibGljOgogICAgICAgICBDbG9zZQogICAgIH07CiAKLSAgICBzdGF0
aWMgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0TmF2aWdhdGlvbkFjdGlvbiosIFVJQ2xpZW50TXVsdGlwcm9jZXNzVGVzdCogdGVzdCkK
KyAgICBzdGF0aWMgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZUNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qLCBVSUNsaWVudE11bHRpcHJvY2Vz
c1Rlc3QqIHRlc3QpCiAgICAgewogICAgICAgICByZXR1cm4gdGVzdC0+dmlld0NyZWF0ZSh3ZWJW
aWV3KTsKICAgICB9CkBAIC0xNjcsNyArMTcwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2lu
aXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQoMCkKICAgICB7CiAgICAgICAgIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbChtX3dlYkNvbnRleHQuZ2V0KCksIFdFQktJ
VF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMpOwotICAgICAgICBt
X3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2Via2l0X3dlYl92
aWV3X25ld193aXRoX2NvbnRleHQobV93ZWJDb250ZXh0LmdldCgpKSkpOworICAgICAgICBtX3dl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQo
bV93ZWJDb250ZXh0LmdldCgpKSk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBnX29iamVj
dF9yZWZfc2luayhtX3dlYlZpZXcpOworI2VuZGlmCiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKIAogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sodmlld0NyZWF0ZUNhbGxiYWNr
KSwgdGhpcyk7CkBAIC0xNzYsNyArMTgyLDcgQEAgcHVibGljOgogICAgIH5VSUNsaWVudE11bHRp
cHJvY2Vzc1Rlc3QoKQogICAgIHsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhp
cyk7Ci0gICAgICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKG1fd2ViVmlldykpOwor
ICAgICAgICBnX29iamVjdF91bnJlZihtX3dlYlZpZXcpOwogICAgIH0KIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVdlYkV4dGVuc2lvbnMoKSBvdmVycmlkZQpAQCAtMTg1LDE5ICsxOTEsMjEgQEAgcHVi
bGljOgogICAgICAgICBtX2luaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQrKzsKICAg
ICB9CiAKLSAgICBHdGtXaWRnZXQqIHZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
KyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7CiAKLSAgICAgICAg
R3RrV2lkZ2V0KiBuZXdXZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRf
dmlldyh3ZWJWaWV3KTsKKyAgICAgICAgYXV0byogbmV3V2ViVmlldyA9IHdlYmtpdF93ZWJfdmll
d19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcod2ViVmlldyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAg
ICAgICBnX29iamVjdF9yZWZfc2luayhuZXdXZWJWaWV3KTsKKyNlbmRpZgogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5ld1dlYlZpZXcpKTsK
ICAgICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVuZChDcmVhdGUpOwogCiAgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdS
ZWFkeVRvU2hvd0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3
V2ViVmlldywgImNsb3NlIiwgR19DQUxMQkFDSyh2aWV3Q2xvc2VDYWxsYmFjayksIHRoaXMpOwog
Ci0gICAgICAgIHJldHVybiBuZXdXZWJWaWV3OworICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9W
SUVXKG5ld1dlYlZpZXcpOwogICAgIH0KIAogICAgIHZvaWQgdmlld1JlYWR5VG9TaG93KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFNTTC5jcHAKaW5kZXggMTBjNWU3M2I2Y2EuLjk2ZjVmNjNhNjExIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCkBAIC0y
MSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGVzdFNlcnZlci5oIgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogc3RhdGljIFdlYktp
dFRlc3RTZXJ2ZXIqIGtIdHRwc1NlcnZlcjsKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrSHR0
cFNlcnZlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RVSUNsaWVudC5jcHAKaW5kZXggMmI5NTQyZjNkZGIuLjg5OTVjOGYyZjI0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50
LmNwcApAQCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIG1fcmVzaXphYmxl
KHRydWUpCiAgICAgICAgICAgICAsIG1fZnVsbHNjcmVlbihmYWxzZSkKICAgICAgICAgeworI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIG1lbXNldCgmbV9nZW9tZXRyeSwgMCwgc2l6ZW9m
KEdka1JlY3RhbmdsZSkpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBXaW5kb3dQcm9w
ZXJ0aWVzKFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRvd1Byb3BlcnRpZXMpCkBAIC02NSwx
MCArNjcsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgLCBtX3Jlc2l6YWJsZSh3ZWJraXRfd2lu
ZG93X3Byb3BlcnRpZXNfZ2V0X3Jlc2l6YWJsZSh3aW5kb3dQcm9wZXJ0aWVzKSkKICAgICAgICAg
ICAgICwgbV9mdWxsc2NyZWVuKHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19nZXRfZnVsbHNjcmVl
bih3aW5kb3dQcm9wZXJ0aWVzKSkKICAgICAgICAgeworI2lmIFBMQVRGT1JNKEdUSykKICAgICAg
ICAgICAgIHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19nZXRfZ2VvbWV0cnkod2luZG93UHJvcGVy
dGllcywgJm1fZ2VvbWV0cnkpOworI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBXaW5kb3dQ
cm9wZXJ0aWVzKEdka1JlY3RhbmdsZSogZ2VvbWV0cnksIGJvb2wgdG9vbGJhclZpc2libGUsIGJv
b2wgc3RhdHVzYmFyVmlzaWJsZSwgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSwgYm9vbCBtZW51YmFy
VmlzaWJsZSwgYm9vbCBsb2NhdGlvbmJhclZpc2libGUsIGJvb2wgcmVzaXphYmxlLCBib29sIGZ1
bGxzY3JlZW4pCisgICAgICAgIFdpbmRvd1Byb3BlcnRpZXMoY2Fpcm9fcmVjdGFuZ2xlX2ludF90
KiBnZW9tZXRyeSwgYm9vbCB0b29sYmFyVmlzaWJsZSwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlLCBi
b29sIHNjcm9sbGJhcnNWaXNpYmxlLCBib29sIG1lbnViYXJWaXNpYmxlLCBib29sIGxvY2F0aW9u
YmFyVmlzaWJsZSwgYm9vbCByZXNpemFibGUsIGJvb2wgZnVsbHNjcmVlbikKICAgICAgICAgICAg
IDogbV9pc051bGwoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZ2VvbWV0cnkoKmdlb21ldHJ5KQog
ICAgICAgICAgICAgLCBtX3Rvb2xiYXJWaXNpYmxlKHRvb2xiYXJWaXNpYmxlKQpAQCAtODUsMTAg
Kzg5LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lkIGFzc2VydEVxdWFsKGNvbnN0IFdpbmRv
d1Byb3BlcnRpZXMmIG90aGVyKSBjb25zdAogICAgICAgICB7CisjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fZ2VvbWV0cnkueCwgPT0sIG90aGVyLm1fZ2Vv
bWV0cnkueCk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQobV9nZW9tZXRyeS55LCA9PSwg
b3RoZXIubV9nZW9tZXRyeS55KTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX2dlb21l
dHJ5LndpZHRoLCA9PSwgb3RoZXIubV9nZW9tZXRyeS53aWR0aCk7CiAgICAgICAgICAgICBnX2Fz
c2VydF9jbXBpbnQobV9nZW9tZXRyeS5oZWlnaHQsID09LCBvdGhlci5tX2dlb21ldHJ5LmhlaWdo
dCk7CisjZW5kaWYKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0aWNfY2FzdDxpbnQ+
KG1fdG9vbGJhclZpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3Rvb2xiYXJW
aXNpYmxlKSk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdGljX2Nhc3Q8aW50Piht
X3N0YXR1c2JhclZpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3N0YXR1c2Jh
clZpc2libGUpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0aWNfY2FzdDxpbnQ+
KG1fc2Nyb2xsYmFyc1Zpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3Njcm9s
bGJhcnNWaXNpYmxlKSk7CkBAIC0xMDEsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgbV9pc051bGw7CiAKLSAgICAgICAgR2RrUmVjdGFuZ2xlIG1fZ2VvbWV0
cnk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCBtX2dlb21ldHJ5OwogCiAgICAgICAg
IGJvb2wgbV90b29sYmFyVmlzaWJsZTsKICAgICAgICAgYm9vbCBtX3N0YXR1c2JhclZpc2libGU7
CkBAIC0xMTgsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICB0ZXN0LT5tX3dpbmRvd1Byb3Bl
cnRpZXNDaGFuZ2VkLmFkZChnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIEd0a1dpZGdldCogdmlld0NyZWF0ZUNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24sIFVJQ2xpZW50
VGVzdCogdGVzdCkKKyAgICBzdGF0aWMgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZUNhbGxiYWNr
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRp
b24sIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7CiAgICAgICAgIHJldHVybiB0ZXN0LT52aWV3
Q3JlYXRlKHdlYlZpZXcsIG5hdmlnYXRpb24pOwogICAgIH0KQEAgLTMwMSwxOSArMzA3LDI0IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNpbXVsYXRlVXNlckludGVyYWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3RJbnB1dCcpLmZvY3VzKCkiLCBudWxscHRyKTsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBrZXlTdHJva2UgaW4gV1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAg
a2V5U3Ryb2tlKEdES19LRVlfYSk7CiAgICAgICAgIGtleVN0cm9rZShHREtfS0VZX2IpOwogICAg
ICAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCiAgICAgICAgICAgICBndGtfbWFpbl9p
dGVyYXRpb24oKTsKKyNlbmRpZgogICAgIH0KIAotICAgIHZpcnR1YWwgR3RrV2lkZ2V0KiB2aWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5h
dmlnYXRpb24pCisgICAgdmlydHVhbCBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCiAgICAg
ewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7CiAgICAgICAgIGdfYXNz
ZXJ0KG5hdmlnYXRpb24pOwogCi0gICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3
ZWJWaWV3KSk7CisgICAgICAgIGF1dG8qIG5ld1dlYlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfY29udGV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldykpOworI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsobmV3V2ViVmlldyk7Cisj
ZW5kaWYKIAogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENyZWF0ZSk7CiAKQEAgLTMy
Niw3ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmll
dywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdSZWFkeVRvU2hvd0NhbGxiYWNrKSwg
dGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNsb3NlIiwgR19D
QUxMQkFDSyh2aWV3Q2xvc2VDYWxsYmFjayksIHRoaXMpOwogCi0gICAgICAgIHJldHVybiBuZXdX
ZWJWaWV3OworICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9WSUVXKG5ld1dlYlZpZXcpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKQEAgLTM5OCw3ICs0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmF2aWdhdGlvbiA9
IG51bGxwdHI7CiAgICAgfQogCi0gICAgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCisgICAgV2Vi
S2l0V2ViVmlldyogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZp
Z2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uKQogICAgIHsKICAgICAgICAgZ19hc3NlcnQobmF2aWdh
dGlvbik7CiAgICAgICAgIGdfYXNzZXJ0KCFtX25hdmlnYXRpb24pOwpAQCAtNDI1LDcgKzQzNiw5
IEBAIHB1YmxpYzoKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVOYXZpZ2F0aW9uRGF0
YShDcmVhdGVOYXZpZ2F0aW9uRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYg
UExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgp
OworI2VuZGlmCiAKICAgICB0ZXN0LT5sb2FkSFRNTCgKICAgICAgICAgIjxodG1sPjxib2R5PiIK
QEAgLTQ2Miw2ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZU5hdmlnYXRp
b25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVzdCwgZ2NvbgogICAgIGdfYXNzZXJ0
KCF3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25faXNfdXNlcl9nZXN0dXJlKHRlc3QtPm1fbmF2aWdh
dGlvbikpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGdib29sZWFuIGNoZWNrTWlt
ZVR5cGVGb3JGaWx0ZXIoR3RrRmlsZUZpbHRlciogZmlsdGVyLCBjb25zdCBnY2hhciogbWltZVR5
cGUpCiB7CiAgICAgR3RrRmlsZUZpbHRlckluZm8gZmlsdGVySW5mbzsKQEAgLTQ2OSw2ICs0ODMs
NyBAQCBzdGF0aWMgZ2Jvb2xlYW4gY2hlY2tNaW1lVHlwZUZvckZpbHRlcihHdGtGaWxlRmlsdGVy
KiBmaWx0ZXIsIGNvbnN0IGdjaGFyKiBtaW1lVAogICAgIGZpbHRlckluZm8ubWltZV90eXBlID0g
bWltZVR5cGU7CiAgICAgcmV0dXJuIGd0a19maWxlX2ZpbHRlcl9maWx0ZXIoZmlsdGVyLCAmZmls
dGVySW5mbyk7CiB9CisjZW5kaWYKIAogY2xhc3MgTW9kYWxEaWFsb2dzVGVzdDogcHVibGljIFVJ
Q2xpZW50VGVzdCB7CiBwdWJsaWM6CkBAIC00ODAsMTEgKzQ5NSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUnVuQXNNb2RhbCk7CiAgICAgfQogCi0g
ICAgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5h
dmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCisgICAgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0
aW9uKQogICAgIHsKICAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dlYlZpZXcpOwogCi0g
ICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IFVJQ2xpZW50VGVzdDo6dmlld0NyZWF0ZSh3
ZWJWaWV3LCBuYXZpZ2F0aW9uKTsKKyAgICAgICAgYXV0byogbmV3V2ViVmlldyA9IFVJQ2xpZW50
VGVzdDo6dmlld0NyZWF0ZSh3ZWJWaWV3LCBuYXZpZ2F0aW9uKTsKICAgICAgICAgZ19zaWduYWxf
Y29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFDSyhkaWFsb2dSdW5B
c01vZGFsQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIG5ld1dlYlZpZXc7CiAgICAg
fQpAQCAtNTI4LDcgKzU0Myw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RGlzYWxsb3dNb2Rh
bERpYWxvZ3MoTW9kYWxEaWFsb2dzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlCiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogeworI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisjZW5kaWYKIAogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBodG1sT25Mb2FkRm9ybWF0ID0gIjxodG1sPjxib2R5IG9uTG9hZD1c
IiVzXCI+PC9ib2R5PjwvaHRtbD4iOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqc0FsZXJ0Rm9y
bWF0ID0gImFsZXJ0KCclcycpIjsKQEAgLTYwNyw3ICs2MjQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyhVSUNsaWVudFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHdpbmRvd1By
b3JwZXJ0aWVzU3RyaW5nID0gImxlZnQ9MTAwLHRvcD0xNTAsd2lkdGg9NDAwLGhlaWdodD00MDAs
bG9jYXRpb249bm8sbWVudWJhcj1ubyxzdGF0dXM9bm8sdG9vbGJhcj1ubyxzY3JvbGxiYXJzPW5v
IjsKLSAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnkgPSB7IDEwMCwgMTUwLCA0MDAsIDQwMCB9Owor
ICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCBnZW9tZXRyeSA9IHsgMTAwLCAxNTAsIDQwMCwgNDAw
IH07CiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdDo6
V2luZG93UHJvcGVydGllcygmZ2VvbWV0cnksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2UpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gaHRtbFN0cmluZyhn
X3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5vcGVuKCcnLCAnJywg
JyVzJykuY2xvc2UoKTtcIj48L2JvZHk+PC9odG1sPiIsIHdpbmRvd1Byb3JwZXJ0aWVzU3RyaW5n
KSk7CkBAIC02MjcsNiArNjQ0LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9w
ZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9j
bXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlDbGllbnRUZXN0OjpDbG9zZSk7CiB9CiAKKyNpZiBQTEFU
Rk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0
VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CkBAIC03MzksMTYgKzc1NywxOSBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19h
c3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOwotCiB9CisjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQogCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7CiAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBnZW9jbHVlIGdpdmUgYSBy
dW50aW1lIHdhcm5pbmcgYmVjYXVzZSBpdCB0cmllcwogICAgIC8vIHRvIHJlZ2lzdGVyIHRoZSBl
cnJvciBxdWFyayB0d2ljZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTg1OC4KICAgICAvLyBNYWtlIHdhcm5pbmdzIG5vbi1mYXRhbCBmb3IgdGhpcyB0ZXN0
IHRvIG1ha2UgaXQgcGFzcy4KICAgICB0ZXN0LT5yZW1vdmVMb2dGYXRhbEZsYWcoR19MT0dfTEVW
RUxfV0FSTklORyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0Fu
ZFdhaXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGdlb2xv
Y2F0aW9uUmVxdWVzdEhUTUwgPQogICAgICAgICAiPGh0bWw+IgogICAgICAgICAiICA8c2NyaXB0
PiIKQEAgLTc4NCw2ICs4MDUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cAogICAgIGdfYXNz
ZXJ0X2NtcHN0cihyZXN1bHQsICE9LCAiMSIpOwogICAgIHRlc3QtPmFkZExvZ0ZhdGFsRmxhZyhH
X0xPR19MRVZFTF9XQVJOSU5HKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoR0VPTE9DQVRJT04pCiAK
ICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpA
QCAtNzkyLDcgKzgxNCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgZ2Jvb2xlYW4g
ZW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5n
cyk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdz
LCBUUlVFKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRX
YWl0VW50aWxNYXBwZWQoKTsKKyNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB1c2VyTWVk
aWFSZXF1ZXN0SFRNTCA9CiAgICAgICAgICI8aHRtbD4iCiAgICAgICAgICIgIDxzY3JpcHQ+IgpA
QCAtODI5LDcgKzg1Myw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXVkaW9Pbmx5VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwKICAgICBnYm9vbGVhbiBl
bmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdz
KTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3Ms
IFRSVUUpOwogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdh
aXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHVzZXJNZWRp
YVJlcXVlc3RIVE1MID0KICAgICAgICAgIjxodG1sPiIKICAgICAgICAgIiAgPHNjcmlwdD4iCkBA
IC04NTYsNiArODgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LAogfQogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCiAKKyNpZiBQTEFURk9STShHVEspCiBjbGFzcyBGaWxlQ2hvb3Nl
clRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNU
X0ZJWFRVUkUoRmlsZUNob29zZXJUZXN0KTsKQEAgLTg5MSw3ICs5MTgsOSBAQCBwcml2YXRlOgog
CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3Qt
PnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGZpbGVDaG9vc2VySFRNTEZvcm1hdCA9ICI8aHRtbD48Ym9keT48aW5wdXQgc3R5
bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDttYXJnaW46MDtwYWRkaW5nOjAnIHR5
cGU9J2ZpbGUnICVzLz48L2JvZHk+PC9odG1sPiI7CiAKICAgICAvLyBNdWx0aXBsZSBzZWxlY3Rp
b25zIG5vdCBhbGxvd2VkLCBubyBNSU1FIGZpbHRlcmluZy4KQEAgLTkwMyw4ICs5MzIsMTAgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgY29uc3QgZ2NoYXIqIGNvbnN0KiBtaW1lVHlw
ZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlwZXMoZmlsZUNob29z
ZXJSZXF1ZXN0KTsKICAgICBnX2Fzc2VydCghbWltZVR5cGVzKTsKKyNpZiBQTEFURk9STShHVEsp
CiAgICAgR3RrRmlsZUZpbHRlciogZmlsdGVyID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9taW1lX3R5cGVzX2ZpbHRlcihmaWxlQ2hvb3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0
KCFmaWx0ZXIpOworI2VuZGlmCiAgICAgY29uc3QgZ2NoYXIqIGNvbnN0KiBzZWxlY3RlZEZpbGVz
ID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3RlZF9maWxlcyhmaWxlQ2hv
b3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0KCFzZWxlY3RlZEZpbGVzKTsKICAgICB3ZWJraXRf
ZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CkBAIC05MTgs
OCArOTQ5LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KEZp
bGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIG1pbWVUeXBlcyA9IHdl
YmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlcyhmaWxlQ2hvb3NlclJlcXVl
c3QpOwogICAgIGdfYXNzZXJ0KCFtaW1lVHlwZXMpOworI2lmIFBMQVRGT1JNKEdUSykKICAgICBm
aWx0ZXIgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlwZXNfZmlsdGVy
KGZpbGVDaG9vc2VyUmVxdWVzdCk7CiAgICAgZ19hc3NlcnQoIWZpbHRlcik7CisjZW5kaWYKICAg
ICBzZWxlY3RlZEZpbGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3Rl
ZF9maWxlcyhmaWxlQ2hvb3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0KCFzZWxlY3RlZEZpbGVz
KTsKIApAQCAtOTYwLDE3ICs5OTMsMjEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hv
b3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0X2NtcHN0cihtaW1lVHlwZXNbMl0sID09LCAiaW1hZ2UvKiIpOwogICAgIGdfYXNzZXJ0
KCFtaW1lVHlwZXNbM10pOwogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIGZpbHRlciA9IHdlYmtp
dF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlc19maWx0ZXIoZmlsZUNob29zZXJS
ZXF1ZXN0KTsKICAgICBnX2Fzc2VydChHVEtfSVNfRklMRV9GSUxURVIoZmlsdGVyKSk7CiAgICAg
Z19hc3NlcnQoY2hlY2tNaW1lVHlwZUZvckZpbHRlcihmaWx0ZXIsICJhdWRpby8qIikpOwogICAg
IGdfYXNzZXJ0KGNoZWNrTWltZVR5cGVGb3JGaWx0ZXIoZmlsdGVyLCAidmlkZW8vKiIpKTsKICAg
ICBnX2Fzc2VydChjaGVja01pbWVUeXBlRm9yRmlsdGVyKGZpbHRlciwgImltYWdlLyoiKSk7Cisj
ZW5kaWYKIAogICAgIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X3NlbGVjdGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiAgICAgZ19hc3NlcnQoIXNl
bGVjdGVkRmlsZXMpOwogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmls
ZUNob29zZXJSZXF1ZXN0KTsKIH0KKyNlbmRpZiAvLyBQTEFURk9STShHVEspCiAKKyNpZiBQTEFU
Rk9STShHVEspCiBjbGFzcyBDb2xvckNob29zZXJUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3Qgewog
cHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29sb3JDaG9vc2VyVGVzdCk7CkBA
IC0xMDcyLDYgKzExMDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NvbG9yQ2hvb3NlclJl
cXVlc3QoQ29sb3JDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogCiAgICAgdGVzdC0+
Y2FuY2VsUmVxdWVzdCgpOwogfQorI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIAogdm9pZCBiZWZv
cmVBbGwoKQogewpAQCAtMTA4MSwxNCArMTExOSwyNCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAg
TW9kYWxEaWFsb2dzVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRpc2FsbG93LW1vZGFsLWRp
YWxvZ3MiLCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0V2ViVmll
d0phdmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBtb3ZlIGluIFdQRS4KKyNpZiBQTEFURk9STShH
VEspCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2UtdGFyZ2V0
IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VPTE9DQVRJ
T04pCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZ2VvbG9jYXRpb24t
cGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdHMpOworI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1ZXN0cyIs
IHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBVSUNsaWVudFRl
c3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdWRpby11c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1
ZXN0IiwgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMpOwog
I2VuZGlmCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBjbGljayBpbiBXUEUuCisjaWYg
UExBVEZPUk0oR1RLKQogICAgIEZpbGVDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3Iiwg
ImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QpOwor
I2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKQogICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFkZCgiV2Vi
S2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0NvbG9yQ2hv
b3NlclJlcXVlc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9u
cy5jcHAKaW5kZXggZmE0YWIyZDZjYjEuLjIxNjg4NDJmM2JlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5j
cHAKQEAgLTE4NCw2ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0
ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCBzY3JpcHREaWFsb2dJRCk7CiB9CiAK
KyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgZ2Jvb2xlYW4gcGVybWlzc2lvblJlcXVlc3RDYWxs
YmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVlc3QsIFdl
YlZpZXdUZXN0KiB0ZXN0KQogewogICAgIGlmICghV0VCS0lUX0lTX0lOU1RBTExfTUlTU0lOR19N
RURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKQEAgLTI3NCw2ICsyNzUs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybUNvbnRyb2xzQXNzb2NpYXRlZChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogCiAgICAgZ19kYnVzX2Nvbm5lY3Rpb25fc2ln
bmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sIGlkKTsKIH0KKyNlbmRpZiAvLyBQTEFURk9STShH
VEspCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKQEAgLTI4MSwxMyArMjgzLDE4IEBAIHZvaWQgYmVm
b3JlQWxsKCkKICAgICBpZiAoIWJ1cy0+cnVuKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8v
IEZJWE1FOiBVc2UgSlNDIEFQSSBpbiB0aGUgZXh0ZW5zaW9uIHRvIGdldCB0aGUgdGl0bGUgZnJv
bSBKYXZhU2NyaXB0LgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9tLWRvY3VtZW50LXRpdGxlIiwgdGVzdFdlYkV4dGVuc2lv
bkdldFRpdGxlKTsKKyNlbmRpZgogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVu
c2lvbiIsICJkb2N1bWVudC1sb2FkZWQtc2lnbmFsIiwgdGVzdERvY3VtZW50TG9hZGVkU2lnbmFs
KTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndlYi1wcm9jZXNzLWNy
YXNoZWQiLCB0ZXN0V2ViS2l0V2ViVmlld1Byb2Nlc3NDcmFzaGVkKTsKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAid2luZG93LW9iamVjdC1jbGVhcmVkIiwgdGVz
dFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOwogICAgIFdlYlZpZXdUZXN0OjphZGQo
IldlYktpdFdlYkV4dGVuc2lvbiIsICJpc29sYXRlZC13b3JsZCIsIHRlc3RXZWJFeHRlbnNpb25J
c29sYXRlZFdvcmxkKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJpbnN0YWxsLW1pc3NpbmctcGx1Z2lucy1wZXJtaXNzaW9uLXJlcXVl
c3QiLCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QpOwogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJmb3JtLWNvbnRyb2xzLWFzc29j
aWF0ZWQtc2lnbmFsIiwgdGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOwor
I2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJh
c2UuY3BwCmluZGV4IDVhM2IwNTdmZDJiLi4wMDAwNzFkYTRmOSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lkIGVwaGVt
ZXJhbFZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZl
bnQgbG9hCiAKIHN0YXRpYyB2b2lkIHRlc3RQcml2YXRlQnJvd3NpbmcoRmF2aWNvbkRhdGFiYXNl
VGVzdCogdGVzdCkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJL
SVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAgIGF1dG8g
d2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwKICAg
ICAgICAgImlzLWVwaGVtZXJhbCIsIFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmluZENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNzI4OWZkMzdmOTcuLjQxYmZjNzE0OGNhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dEZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyLmNwcApAQCAtMjAsOCArMjAsNiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgotI2luY2x1
ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNsdWRlIDx3
dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXN0U3RyaW5nID0gIjxo
dG1sPjxib2R5PmZpcnN0IHRlc3Rpbmcgc2Vjb25kIHRlc3Rpbmcgc2Vjb25kSGFsZjwvYm9keT48
L2h0bWw+IjsKQEAgLTI2NCw3ICsyNjIsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xs
ZXJIaWRlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0
LT5sb2FkSHRtbCh0ZXN0U3RyaW5nLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0
VW50aWxNYXBwZWQoKTsKKyNlbmRpZgogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBvcmlnaW5hbFN1
cmZhY2UgPSBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZSgKICAgICAgICAgdGVzdC0+Z2V0U25hcHNo
b3RBbmRXYWl0VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQs
IFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0eU9y
aWdpbi5jcHAKaW5kZXggMWNjOWU3NzA5ZWYuLjFiYWZkN2UyZGI1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2lu
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCiAjaW5jbHVkZSAiVGVzdE1haW4uaCIKLSNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHN0YXRpYyB2b2lkIHRlc3RTZWN1
cml0eU9yaWdpbkJhc2ljQ29uc3RydWN0b3IoVGVzdCosIGdjb25zdHBvaW50ZXIpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNldHRp
bmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IGY4ZjE5NjlhMjBkLi5mNDBhMDkxZTFhZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRT
ZXR0aW5ncy5jcHAKQEAgLTI4Myw2ICsyODMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0
dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxv
d191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91cmxzKHNldHRpbmdzLCBUUlVFKTsKICAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9m
aWxlX3VybHMoc2V0dGluZ3MpKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICAvLyBPbmRlbWFu
ZCBpcyB0aGUgZGVmYXVsdCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gcG9saWN5LgogICAgIGdfYXNz
ZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9s
aWN5KHNldHRpbmdzKSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09O
X0RFTUFORCk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25f
cG9saWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BPTElDWV9ORVZF
Uik7CkBAIC0yOTEsNiArMjkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRl
c3QqLCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdz
X2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzKSwgPT0sIFdFQktJVF9I
QVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX0FMV0FZUyk7CiAgICAgd2Via2l0X3NldHRpbmdz
X3NldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdB
UkVfQUNDRUxFUkFUSU9OX1BPTElDWV9PTl9ERU1BTkQpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdz
KSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09OX0RFTUFORCk7Cisj
ZW5kaWYKIAogICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHNldHRpbmdzKSk7CiB9CkBAIC0z
MTUsNiArMzE3LDcgQEAgc3RhdGljIENTdHJpbmcgY29udmVydFdlYlZpZXdNYWluUmVzb3VyY2VE
YXRhVG9DU3RyaW5nKFdlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHJldHVybiBDU3RyaW5nKG1haW5S
ZXNvdXJjZURhdGEsIG1haW5SZXNvdXJjZURhdGFTaXplKTsKIH0KIAorI2lmIFBMQVRGT1JNKEdU
SykKIHN0YXRpYyB2b2lkIGFzc2VydFRoYXRVc2VyQWdlbnRJc1NlbnRJbkhlYWRlcnMoV2ViVmll
d1Rlc3QqIHRlc3QsIGNvbnN0IENTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICB0ZXN0LT5sb2Fk
VVJJKGdTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwpAQCAtMzU5LDYgKzM2Miw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5nc1VzZXJBZ2VudChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0aW9uVXNl
ckFnZW50KGdfc3RyZHVwX3ByaW50ZigiJXMgJXMiLCBkZWZhdWx0VXNlckFnZW50LmRhdGEoKSwg
IldlYkNhdEdUSysvMy40LjUiKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFwcGxpY2F0aW9uVXNl
ckFnZW50LmdldCgpLCA9PSwgd2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRpbmdz
LmdldCgpKSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMgdm9pZCBzZXJ2
ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25z
dCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikK
IHsKQEAgLTM4Myw3ICszODcsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAKICAgICBUZXN0OjphZGQo
IldlYktpdFNldHRpbmdzIiwgIndlYmtpdC1zZXR0aW5ncyIsIHRlc3RXZWJLaXRTZXR0aW5ncyk7
CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZXR0aW5ncyIsICJuZXctd2l0aC1zZXR0aW5ncyIsIHRl
c3RXZWJLaXRTZXR0aW5nc05ld1dpdGhTZXR0aW5ncyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAg
IFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFNldHRpbmdzIiwgInVzZXItYWdlbnQiLCB0ZXN0V2Vi
S2l0U2V0dGluZ3NVc2VyQWdlbnQpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDEzNGFkMzgzNzFhLi5k
MmJiNjkxNmRjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcApA
QCAtMjIsOCArMjIsNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRl
ICJXZWJWaWV3VGVzdC5oIgogI2luY2x1ZGUgPGNzdGRhcmc+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5o
PgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTQyLDEwICs0MCwx
MCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFnZXIoVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBHUmVmUHRyPFdlYktpdFVzZXJDb250ZW50
TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9IGFkb3B0R1JlZih3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfbmV3KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOwotICAgIEdS
ZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dl
Yl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHVzZXJDb250ZW50TWFuYWdlcjEu
Z2V0KCkpKTsKKyAgICBhdXRvIHdlYlZpZXcxID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcih1c2VyQ29udGVudE1hbmFnZXIxLmdl
dCgpKSk7CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRlbnRfbWFu
YWdlcih3ZWJWaWV3MS5nZXQoKSkgPT0gdXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSk7CiAKLSAg
ICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcyID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0Vmlldyh3
ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0KCkpICE9IHVzZXJDb250ZW50TWFuYWdl
cjEuZ2V0KCkpOwogfQogCkBAIC0zMjIsNiArMzIwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJD
b250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2FnZVRlc3Qq
IHQKICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigiYW5vdGhlckhhbmRsZXIiKTsKIH0KIAor
I2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3Jp
cHRNZXNzYWdlRnJvbURPTUJpbmRpbmdzKFVzZXJTY3JpcHRNZXNzYWdlVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIHsKICAgICBnX2Fzc2VydCh0ZXN0LT5yZWdpc3RlckhhbmRsZXIoImRvbSIp
KTsKQEAgLTMzNCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2Vy
U2NyaXB0TWVzc2FnZUZyb21ET01CaW5kaW5ncyhVc2VyU2NyaXB0TWVzc2FnZQogCiAgICAgdGVz
dC0+dW5yZWdpc3RlckhhbmRsZXIoImRvbSIpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkIHNl
cnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNv
bnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdwb2ludGVy
KQogewpAQCAtMzUxLDcgKzM1MSw5IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc3R5bGUtc2hlZXQi
LCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KTsKICAgICBXZWJWaWV3
VGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc2NyaXB0Iiwg
dGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU2NyaXB0KTsKICAgICBVc2VyU2NyaXB0TWVz
c2FnZVRlc3Q6OmFkZCgiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIiwgInNjcmlwdC1tZXNzYWdl
LXJlY2VpdmVkIiwgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZCk7
CisjaWYgUExBVEZPUk0oR1RLKQogICAgIFVzZXJTY3JpcHRNZXNzYWdlVGVzdDo6YWRkKCJXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIiLCAic2NyaXB0LW1lc3NhZ2UtZnJvbS1kb20tYmluZGluZ3Mi
LCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUZyb21ET01CaW5kaW5ncyk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAppbmRl
eCBlN2IwM2ZlMGRlMS4uZWNmMzUxNDgwNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApA
QCAtMjEsMTAgKzIxLDggQEAKIAogI2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIKICNpbmNs
dWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUg
PGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0
Mi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTUzLDExICs1MSwxMSBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dEVwaGVtZXJhbChUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5h
Z2VyKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhl
bWVyYWwobWFuYWdlcikpOwogCi0gICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CiAgICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOwogICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQo
KSkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSkpOwogCi0gICAgd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh0ZXN0LT5tX3dlYkNvbnRleHQu
Z2V0KCkpKTsKKyAgICB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19u
ZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0
KCF3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKICAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0
KCkpID09IG1hbmFnZXIpOwogCkBAIC02OCw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJD
b250ZXh0RXBoZW1lcmFsKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQo
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAgICAg
Z19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3
LmdldCgpKSAhPSBtYW5hZ2VyKTsKIAotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoY29udGV4dC5nZXQoKSkpOworICAgIHdlYlZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoY29u
dGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
d2ViVmlldy5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgPT0gbWFuYWdlcik7CiAKQEAgLTc4LDYgKzc2
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRFcGhlbWVyYWwoVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFs
KGNvbnRleHQuZ2V0KCkpKTsKIH0KIAorI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQog
Y2xhc3MgUGx1Z2luc1Rlc3Q6IHB1YmxpYyBUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJf
VEVTVF9GSVhUVVJFKFBsdWdpbnNUZXN0KTsKQEAgLTE1Myw2ICsxNTIsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViQ29udGV4dEdldFBsdWdpbnMoUGx1Z2luc1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgZ19hc3NlcnQoZXh0ZW5zaW9ucyk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGV4dGVu
c2lvbnNbMF0sID09LCAidGVzdG5ldHNjYXBlIik7CiB9CisjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBrQmFySFRNTCA9ICI8aHRtbD48
Ym9keT5CYXI8L2JvZHk+PC9odG1sPiI7CiBzdGF0aWMgY29uc3QgY2hhcioga0VjaG9IVE1MRm9y
bWF0ID0gIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iOwpAQCAtMzcwLDYgKzM3MCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSwg
R19JT19FUlJPUiwgR19JT19FUlJPUl9DTE9TRUQpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQog
c3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gdGVzdC0+bV93
ZWJDb250ZXh0LmdldCgpOwpAQCAtNDIyLDYgKzQyMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJD
b250ZXh0U3BlbGxDaGVja2VyKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9zcGVsbF9jaGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQsIFRSVUUp
OwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfZW5h
YmxlZCh3ZWJDb250ZXh0KSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMg
dm9pZCB0ZXN0V2ViQ29udGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKQEAgLTU3OCw2ICs1ODAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNl
Y3VyaXR5UG9saWN5KFNlY3VyaXR5UG9saWN5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAg
ICAgICB8IFNlY3VyaXR5UG9saWN5VGVzdDo6Q09SU0VuYWJsZWQgfCBTZWN1cml0eVBvbGljeVRl
c3Q6OkVtcHR5RG9jdW1lbnQpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQg
Y29uc29sZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFVzZXJDb250ZW50TWFuYWdlcios
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIG1lc3NhZ2UsIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
KiByZXN1bHQpCiB7CiAgICAgZ19hc3NlcnQocmVzdWx0KTsKQEAgLTY0Niw2ICs2NDksNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUihXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3dfZmlsZV9h
Y2Nlc3NfZnJvbV9maWxlX3VybHMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5t
X3dlYlZpZXcpLCBGQUxTRSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBjbGFzcyBQ
cm94eVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgpAQCAtNzA1LDcgKzcwOSw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQcm94eVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X25ldHdvcmtfcHJveHlfc2V0dGluZ3NfZnJl
ZShzZXR0aW5ncyk7CiAKICAgICAvLyBQcm94eSBzZXR0aW5ncyBhbHNvIGFmZmVjdCBlcGhlbWVy
YWwgd2ViIHZpZXdzLgotICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisgICAgYXV0byB3
ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklF
VywKICAgICAgICAgIndlYi1jb250ZXh0IiwgdGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLAogICAg
ICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAgICAgbnVsbHB0cikpOwpAQCAtNzcwLDEy
ICs3NzQsMjAgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJD
b250ZXh0IiwgImRlZmF1bHQtY29udGV4dCIsIHRlc3RXZWJDb250ZXh0RGVmYXVsdCk7CiAgICAg
VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImVwaGVtZXJhbCIsIHRlc3RXZWJDb250ZXh0
RXBoZW1lcmFsKTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBQbHVnaW5z
VGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImdldC1wbHVnaW5zIiwgdGVzdFdlYkNvbnRl
eHRHZXRQbHVnaW5zKTsKKyNlbmRpZgogICAgIFVSSVNjaGVtZVRlc3Q6OmFkZCgiV2ViS2l0V2Vi
Q29udGV4dCIsICJ1cmktc2NoZW1lIiwgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgc3BlbGxjaGVja2VyIGluIFdQRS4KKyNpZiBQTEFURk9STShHVEsp
CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInNwZWxsLWNoZWNrZXIiLCB0ZXN0
V2ViQ29udGV4dFNwZWxsQ2hlY2tlcik7CisjZW5kaWYKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJDb250ZXh0IiwgImxhbmd1YWdlcyIsIHRlc3RXZWJDb250ZXh0TGFuZ3VhZ2VzKTsK
ICAgICBTZWN1cml0eVBvbGljeVRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgInNl
Y3VyaXR5LXBvbGljeSIsIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlQb2xpY3kpOworICAgIC8vIEZJ
WE1FOiBmaXggc2NyaXB0IG1lc3NhZ2VzIGluIFdQRS4KKyNpZiBQTEFURk9STShHVEspCiAgICAg
V2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhyIiwgdGVz
dFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOworI2VuZGlmCiAgICAgUHJveHlUZXN0OjphZGQo
IldlYktpdFdlYkNvbnRleHQiLCAicHJveHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3Mp
OwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4OTNiZmExYTVhNi4uMjhhNmI2YThkNGUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNTEsMTUgKzUxLDE1IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3V2ViQ29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0LT5tX3dl
YkNvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBhIHdlYiB2aWV3IGNyZWF0ZWQg
d2l0aCBnX29iamVjdF9uZXcgaGFzIHRoZSBkZWZhdWx0IGNvbnRleHQuCi0gICAgR1JlZlB0cjxX
ZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfVklFVywgbnVsbHB0cikpOworICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFk
b3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIG51bGxwdHIpKTsKICAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkgPT0g
d2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBh
IHdlYiB2aWV3IGNyZWF0ZWQgd2l0aCBhIHJlbGF0ZWQgdmlldyBoYXMgdGhlIHJlbGF0ZWQgdmll
dyBjb250ZXh0LgotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3
X25ld193aXRoX3JlbGF0ZWRfdmlldyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICB3ZWJWaWV3ID0g
VGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcodGVz
dC0+bV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0
KHdlYlZpZXcuZ2V0KCkpID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CiAKICAgICAvLyBD
aGVjayB0aGF0IGEgd2ViIGNvbnRleHQgZ2l2ZW4gYXMgY29uc3RydWN0IHBhcmFtZXRlciBpcyBp
Z25vcmVkIGlmIGEgcmVsYXRlZCB2aWV3IGlzIGFsc28gcHJvdmlkZWQuCi0gICAgd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisgICAg
d2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVs
dCgpLCAicmVsYXRlZC12aWV3IiwgdGVzdC0+bV93ZWJWaWV3LCBudWxscHRyKSk7CiAgICAgZ19h
c3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpID09IHRlc3Qt
Pm1fd2ViQ29udGV4dC5nZXQoKSk7CiB9CkBAIC02OSwxMCArNjksMTIgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdXZWJDb250ZXh0TGlmZXRpbWUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IHdlYmtpdF93ZWJfY29u
dGV4dF9uZXcoKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKHdlYkNvbnRleHQpKTsKIAotICAgIEd0a1dpZGdldCogd2ViVmlldyA9IHdl
YmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYkNvbnRleHQpOworICAgIGF1dG8qIHdl
YlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJDb250ZXh0KTsKICAg
ICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdl
YlZpZXcpKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJW
aWV3KTsKKyNlbmRpZgogICAgIGdfb2JqZWN0X3VucmVmKHdlYkNvbnRleHQpOwogCiAgICAgLy8g
Q2hlY2sgdGhhdCB0aGUgd2ViIHZpZXcgc3RpbGwgaGFzIGEgdmFsaWQgY29udGV4dC4KQEAgLTgz
LDEwICs4NSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkNvbnRleHRMaWZldGltZShX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3
ZWJDb250ZXh0MiA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXcoKTsKICAgICB0ZXN0LT5hc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYkNvbnRleHQyKSk7CiAK
LSAgICBHdGtXaWRnZXQqIHdlYlZpZXcyID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRl
eHQod2ViQ29udGV4dDIpOworICAgIGF1dG8qIHdlYlZpZXcyID0gd2Via2l0X3dlYl92aWV3X25l
d193aXRoX2NvbnRleHQod2ViQ29udGV4dDIpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViVmlldzIpKTsKIAorI2lmIFBMQVRGT1JN
KEdUSykKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3Mik7CisjZW5kaWYKICAgICBnX29i
amVjdF91bnJlZih3ZWJWaWV3Mik7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb250ZXh0IGlz
IHN0aWxsIHZhbGlkLgpAQCAtMTE2LDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfbWFpbl9s
b29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKIAogICAgIC8vIEEgV2ViVmlldyBvbiBhIG5vbiBl
cGhlbWVyYWwgY29udGV4dCBjYW4gYmUgZXBoZW1lcmFsLgotICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Vmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVy
YWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7CkBAIC0xNzMsNyArMTc3LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX2Fzc2VydChzZXR0aW5ncyAhPSBkZWZhdWx0U2V0dGluZ3MpOwogICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CiAK
LSAgICBHUmVmUHRyPEd0a1dpZGdldD4gd2ViVmlldzIgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7
CisgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3
KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1Qod2ViVmlldzIuZ2V0KCkpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdz
KFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSksIHNldHRpbmdzKTsKICAgICBnX2Fzc2Vy
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5n
ZXQoKSkpID09IHNldHRpbmdzKTsKQEAgLTE4NSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0KHNldHRpbmdzID09IG5ld1NldHRpbmdzMi5nZXQoKSk7CiAgICAgZ19hc3NlcnQod2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOwogCi0gICAgR1Jl
ZlB0cjxHdGtXaWRnZXQ+IHdlYlZpZXczID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3NldHRp
bmdzKG5ld1NldHRpbmdzMi5nZXQoKSk7CisgICAgYXV0byB3ZWJWaWV3MyA9IFRlc3Q6OmFkb3B0
Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MobmV3U2V0dGluZ3MyLmdldCgp
KSk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVCh3ZWJWaWV3My5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRf
c2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXczLmdldCgpKSkgPT0gbmV3U2V0dGluZ3My
LmdldCgpKTsKIH0KQEAgLTMxNyw3ICszMjEsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGdi
b29sZWFuIGxlYXZlRnVsbFNjcmVlbklkbGUoRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRlc3QpCiAg
ICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGtleSBzdHJva2VzIGluIFdQRQorI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfRXNjYXBlKTsK
KyNlbmRpZgogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCkBAIC0zMzEsNiArMzM4LDcg
QEAgcHVibGljOgogICAgIEZ1bGxTY3JlZW5FdmVudCBtX2V2ZW50OwogfTsKIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RnVsbFNjcmVlbihGdWxs
U2NyZWVuQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5zaG93
SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKQEAgLTM0MSw2ICszNDksNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4oRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bGVhdmVGdWxsU2NyZWVuQW5kV2FpdFVudGlsTGVmdEZ1
bGxTY3JlZW4oKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIEZ1bGxT
Y3JlZW5DbGllbnRUZXN0OjpMZWF2ZSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdDYW5TaG93TUlNRVR5cGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
CkBAIC0zNTQsMTMgKzM2MywxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NhblNob3dNSU1F
VHlwZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNh
dGlvbi96aXAiKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1l
X3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOwogCisj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLy8gUGx1Z2lucyBhcmUgb25seSBz
dXBwb3J0ZWQgd2hlbiBlbmFibGVkLgogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYWRkaXRp
b25hbF9wbHVnaW5zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+
bV93ZWJWaWV3KSwgV0VCS0lUX1RFU1RfUExVR0lOX0RJUik7CiAgICAgZ19hc3NlcnQod2Via2l0
X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNhdGlv
bi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIikpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5h
YmxlX3BsdWdpbnMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcp
LCBGQUxTRSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5
cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIp
KTsKKyNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oR1RLKQogY2xhc3MgRm9ybUNsaWVudFRlc3Q6
IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVS
RShGb3JtQ2xpZW50VGVzdCk7CkBAIC00NDEsNiArNDUzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdTdWJtaXRGb3JtKEZvcm1DbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cCh2
YWx1ZXMsICJ0ZXh0MiIpKSwgPT0sICJ2YWx1ZTIiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc3Rh
dGljX2Nhc3Q8Y2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAodmFsdWVzLCAicGFzc3dvcmQiKSks
ID09LCAic2VjcmV0Iik7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBjbGFzcyBTYXZl
V2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CkBAIC01MzgsNiArNTUx
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTYXZlKFNhdmVXZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19maWxlX2luZm9fZ2V0X3NpemUo
ZmlsZUluZm8uZ2V0KCkpLCA9PSwgdG90YWxCeXRlc0Zyb21TdHJlYW0pOwogfQogCisjaWYgUExB
VEZPUk0oR1RLKQogLy8gVG8gdGVzdCBwYWdlIHZpc2liaWxpdHkgQVBJLiBDdXJyZW50bHkgb25s
eSAndmlzaWJsZScsICdoaWRkZW4nIGFuZCAncHJlcmVuZGVyJyBzdGF0ZXMgYXJlIGltcGxlbWVu
dGVkIGZ1bGx5IGluIFdlYkNvcmUuCiAvLyBTZWUgYWxzbyBodHRwOi8vd3d3LnczLm9yZy9UUi8y
MDExL1dELXBhZ2UtdmlzaWJpbGl0eS0yMDExMDYwMi8gYW5kIGh0dHBzOi8vZGV2ZWxvcGVycy5n
b29nbGUuY29tL2Nocm9tZS93aGl0ZXBhcGVycy9wYWdldmlzaWJpbGl0eQogc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKQEAgLTU4NCw3ICs1OTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmls
aXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KCFXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CiAK
ICAgICAvLyBIaWRlIHRoZSBwYWdlLiBUaGUgdmlzaWJpbGl0eSBzaG91bGQgYmUgdXBkYXRlZCB0
byAnaGlkZGVuJy4KLSAgICBndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdFVCh0ZXN0LT5tX3dlYlZp
ZXcpKTsKKyAgICB0ZXN0LT5oaWRlVmlldygpOwogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hh
bmdlZCgpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOyIsICZlcnJvci5vdXRQ
dHIoKSk7CkBAIC02NzYsNyArNjkwLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTbmFwc2hv
dChTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFRlc3Qg
dGhhdCBjYW5jZWxsYXRpb24gd29ya3MuCiAgICAgZ19hc3NlcnQodGVzdC0+Z2V0U25hcHNob3RB
bmRDYW5jZWwoKSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCisjaWYgRU5BQkxFKE5P
VElGSUNBVElPTlMpCiBjbGFzcyBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDogcHVibGljIFdlYlZp
ZXdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFX1dJVEhfU0VUVVBf
VEVBUkRPV04oTm90aWZpY2F0aW9uV2ViVmlld1Rlc3QsIHNldHVwLCB0ZWFyZG93bik7CkBAIC05
MjMsMTIgKzkzOSwxNSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlmaWNhdGlvbkluaXRp
YWxQZXJtaXNzaW9uRGlzYWxsb3dlZChOb3RpZmljYXRpb25XZWJWaQogICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGdfYXNzZXJ0KCF0ZXN0LT5oYXNQZXJtaXNzaW9uKCkp
OwogfQorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIC8vIFRoZSB3ZWIgdmlldyBt
dXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8gc3RhcnQgcGxheWJhY2sgYW5kCiAgICAg
Ly8gdHJpZ2dlciBjaGFuZ2VzIGluIFdlYktpdFdlYlZpZXc6OmlzLXBsYXlpbmctYXVkaW8uCiAg
ICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVW
RUwpOworI2VuZGlmCiAKICAgICAvLyBJbml0aWFsbHksIHdlYiB2aWV3cyBzaG91bGQgYWx3YXlz
IHJlcG9ydCBubyBhdWRpbyBiZWluZyBwbGF5ZWQuCiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
dmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwpAQCAtOTUxLDYgKzk3MCw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5nQXVkaW9X
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmll
d19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCisjaWYgUExBVEZPUk0o
R1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1bHQgYmFj
a2dyb3VuZC4KQEAgLTk4OCw2ICsxMDA4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQcmVm
ZXJyZWRTaXplKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
X2NtcGludChuYXR1cmFsU2l6ZS53aWR0aCwgPT0sIDMyNSk7CiAgICAgZ19hc3NlcnRfY21waW50
KG5hdHVyYWxTaXplLmhlaWdodCwgPT0sIDYxNSk7CiB9CisjZW5kaWYKIAogY2xhc3MgV2ViVmll
d1RpdGxlVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKQEAgLTEwNjEsMTggKzEw
ODIsMzAgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld1NldHRpbmdzKTsKICAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpvb20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pvb21MZXZl
bCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJydW4tamF2YXNjcmlw
dCIsIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdCk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQogICAgIEZ1bGxTY3JlZW5DbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZnVsbHNj
cmVlbiIsIHRlc3RXZWJWaWV3RnVsbFNjcmVlbik7CisjZW5kaWYKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNhbi1zaG93LW1pbWUtdHlwZSIsIHRlc3RXZWJWaWV3Q2Fu
U2hvd01JTUVUeXBlKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IG1vdXNlIGNsaWNrcyBpbiBX
UEUuCisjaWYgUExBVEZPUk0oR1RLKQogICAgIEZvcm1DbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0pOworI2VuZGlmCiAg
ICAgU2F2ZVdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2F2ZSIsIHRlc3RXZWJW
aWV3U2F2ZSk7CisgICAgLy8gRklYTUU6IFZpZXcgaXMgaW5pdGlhbGx5IHZpc2libGUgaW4gV1BF
IGFuZCBoYXMgYSBmaXhlZCBoYXJkY29kZWQgc2l6ZS4KKyNpZiBQTEFURk9STShHVEspCiAgICAg
U25hcHNob3RXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90IiwgdGVz
dFdlYlZpZXdTbmFwc2hvdCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIs
ICJwYWdlLXZpc2liaWxpdHkiLCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KTsKKyNlbmRpZgor
I2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0Ojph
ZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uIiwgdGVzdFdlYlZpZXdOb3RpZmljYXRp
b24pOwogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
bm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1hbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3Rp
ZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkFsbG93ZWQpOwogICAgIE5vdGlmaWNhdGlvbldlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlz
c2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lv
bkRpc2FsbG93ZWQpOworI2VuZGlmCiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lzUGxheWlu
Z0F1ZGlvKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3Ip
OwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicHJlZmVycmVkLXNpemUi
LCB0ZXN0V2ViVmlld1ByZWZlcnJlZFNpemUpOworI2VuZGlmCiAgICAgV2ViVmlld1RpdGxlVGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRpdGxlLWNoYW5nZSIsIHRlc3RXZWJWaWV3VGl0bGVD
aGFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDQ5NTllODM4ZTdkLi44ODdkZmNmYWFj
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgLy8gTm9uIHBlcnNpc3RlbnQgZGF0YSBjYW4gYmUgcXVlcmllZCBpbiBhbiBlcGhlbWVyYWwg
bWFuYWdlci4KICAgICBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+IHdlYkNvbnRleHQgPSBhZG9w
dEdSZWYod2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5hZ2VyKG1h
bmFnZXIuZ2V0KCkpKTsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1l
cmFsKHdlYkNvbnRleHQuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZp
ZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQod2Vi
Q29udGV4dC5nZXQoKSkpOworICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJr
aXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJDb250ZXh0LmdldCgpKSk7CiAgICAgZ19h
c3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CiAgICAg
Z19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3
LmdldCgpKSA9PSBtYW5hZ2VyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGYxODRj
NzYzM2RhLi5kOWYyYzZhYzcyYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjUsMTMgKzI1LDE4
IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUg
PHN0cmluZy5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4KICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShHVEspCisjaW5j
bHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2VsaWYgUExBVEZPUk0oV1BF
KQorI2luY2x1ZGUgPHdwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2VuZGlmCisKIHN0YXRp
YyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIjxub2RlPiIKICAgICAiIDxp
bnRlcmZhY2UgbmFtZT0nb3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCc+IgpAQCAtMTAw
LDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0RG9jdW1lbnRMb2FkZWQoR0RCdXNDb25uZWN0
aW9uKiBjb25uZWN0aW9uKQogCiBzdGF0aWMgdm9pZCBkb2N1bWVudExvYWRlZENhbGxiYWNrKFdl
YktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQogewor
I2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCh3ZWJQYWdlKTsKICAgICBHUmVmUHRyPFdlYktp
dERPTURPTVdpbmRvdz4gd2luZG93ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0
X2RlZmF1bHRfdmlldyhkb2N1bWVudCkpOwogICAgIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJr
aXRfbWVzc2FnZV9oYW5kbGVyc19wb3N0X21lc3NhZ2Uod2luZG93LmdldCgpLCAiZG9tIiwgIkRv
Y3VtZW50TG9hZGVkIik7CisjZW5kaWYKIAogICAgIGdwb2ludGVyIGRhdGEgPSBnX29iamVjdF9n
ZXRfZGF0YShHX09CSkVDVChleHRlbnNpb24pLCAiZGJ1cy1jb25uZWN0aW9uIik7CiAgICAgaWYg
KGRhdGEpCkBAIC0xNzUsNiArMTgyLDggQEAgc3RhdGljIGdib29sZWFuIHNlbmRSZXF1ZXN0Q2Fs
bGJhY2soV2ViS2l0V2ViUGFnZSosIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QsIFcKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IHdoYXQgdG8gZG8g
d2l0aCBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0IGluIFdQRS4KKyNpZiBQTEFURk9STShHVEspCiBz
dGF0aWMgR1ZhcmlhbnQqIHNlcmlhbGl6ZUNvbnRleHRNZW51KFdlYktpdENvbnRleHRNZW51KiBt
ZW51KQogewogICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwpAQCAtMjI5LDcgKzIzOCwxMCBA
QCBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiBwYWdl
LCBXZWJLaXRDb250ZXh0TWVudSogbWVudQogCiAgICAgcmV0dXJuIEZBTFNFOwogfQorI2VuZGlm
IC8vIFBMQVRGT1JNKEdUSykKIAorLy8gRklYTUU6IFVzZSBKU0MgQVBJIHRvIHNlbmQgc2NyaXB0
IG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdC4KKyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9p
ZCBjb25zb2xlTWVzc2FnZVNlbnRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJL
aXRDb25zb2xlTWVzc2FnZSogY29uc29sZU1lc3NhZ2UpCiB7CiAgICAgZ19hc3NlcnQoY29uc29s
ZU1lc3NhZ2UpOwpAQCAtMjQxLDggKzI1Myw5IEBAIHN0YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdl
U2VudENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdENvbnNvbGVNZXNzCiAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKHdpbmRvdy5nZXQoKSkpOwogICAg
IHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRfbWVzc2FnZV9oYW5kbGVyc19wb3N0X21lc3Nh
Z2Uod2luZG93LmdldCgpLCAiY29uc29sZSIsIG1lc3NhZ2VTdHJpbmcuZ2V0KCkpOwogfQorI2Vu
ZGlmCiAKLQorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIGVtaXRGb3JtQ29udHJvbHNB
c3NvY2lhdGVkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogZm9ybUlk
cykKIHsKICAgICBib29sIG9rID0gZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwoCkBAIC0y
NzcsMTUgKzI5MCwxOCBAQCBzdGF0aWMgdm9pZCBmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJh
Y2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR1B0ckFycmF5KiBmbwogICAgIGVsc2UKICAgICAg
ICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBlbmQoRGVsYXllZFNpZ25hbChGb3JtQ29udHJvbHNB
c3NvY2lhdGVkU2lnbmFsLCBmb3JtSWRzLmdldCgpKSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZv
aWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2Vi
S2l0V2ViUGFnZSogd2ViUGFnZSwgZ3BvaW50ZXIpCiB7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3
ZWJQYWdlLCAiZG9jdW1lbnQtbG9hZGVkIiwgR19DQUxMQkFDSyhkb2N1bWVudExvYWRlZENhbGxi
YWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJub3RpZnk6
OnVyaSIsIEdfQ0FMTEJBQ0sodXJpQ2hhbmdlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAgICBn
X3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3QiLCBHX0NBTExCQUNLKHNlbmRS
ZXF1ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgZ19zaWdu
YWxfY29ubmVjdCh3ZWJQYWdlLCAiY29udGV4dC1tZW51IiwgR19DQUxMQkFDSyhjb250ZXh0TWVu
dUNhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiY29u
c29sZS1tZXNzYWdlLXNlbnQiLCBHX0NBTExCQUNLKGNvbnNvbGVNZXNzYWdlU2VudENhbGxiYWNr
KSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiZm9ybS1jb250cm9s
cy1hc3NvY2lhdGVkIiwgR19DQUxMQkFDSyhmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJhY2sp
LCBleHRlbnNpb24pOworI2VuZGlmCiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxsYmFj
ayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KikKQEAgLTMzNSw5ICszNTEsMTQgQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxiYWNrKEdE
QnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAgICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShHVEspCiAgICAg
ICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50KHBhZ2UpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHRpdGxlKHdlYmtpdF9k
b21fZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KSk7CiAgICAgICAgIGdfZGJ1c19tZXRob2Rf
aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygiKHMpIiwg
dGl0bGUuZ2V0KCkpKTsKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyAgICAgICAgLy8gRklYTUU6IFVz
ZSBKU0MgQVBJIHRvIGdldCB0aGUgdGl0bGUgZnJvbSBKYXZhU2NyaXB0LgorICAgICAgICBnX2Ri
dXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFyaWFudF9u
ZXcoIihzKSIsICIiKSk7CisjZW5kaWYKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAobWV0aG9k
TmFtZSwgIlJ1bkphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQiKSkgewogICAgICAgICB1aW50NjRf
dCBwYWdlSUQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKQEAgLTQwNSw3ICs0MjYsMTEg
QEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICAgICAgICAgIGVtaXRVUklDaGFuZ2VkKGNv
bm5lY3Rpb24sIGRlbGF5ZWRTaWduYWwuc3RyLmRhdGEoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBGb3JtQ29udHJvbHNBc3NvY2lhdGVkU2lnbmFsOgorI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgICAgIGVtaXRGb3JtQ29udHJvbHNBc3NvY2lhdGVkKGNvbm5lY3Rpb24s
IGRlbGF5ZWRTaWduYWwuc3RyLmRhdGEoKSk7CisjZWxpZiBQTEFURk9STShXUEUpCisgICAgICAg
ICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggM2IzZDEzZmFiZTcuLjdhNDRjYjA1Y2Q0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJv
Y2Vzc1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuaApAQCAtMTgsMTIgKzE4LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgPGZ1bmN0
aW9uYWw+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdC13ZWItZXh0
ZW5zaW9uLmg+CisjZWxpZiBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8d3BlL3dlYmtpdC13ZWIt
ZXh0ZW5zaW9uLmg+CisjZW5kaWYKKwogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgewogcHVibGljOgog
ICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0KCkgeyB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
Q01ha2VMaXN0cy50eHQKaW5kZXggYzg1ZDQ5NDU2MDUuLmQwOTExNjU5YzdjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CkBAIC0xLDMgKzEsMTEgQEAKK3NldChXZWJL
aXRHTGliQVBJVGVzdHNfU09VUkNFUworICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorICAgICR7VE9PTFNfRElSfS9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcAorICAgICR7VE9PTFNf
RElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAor
ICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5j
cHAKKyAgICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmll
d1Rlc3QuY3BwCispCisKIHNldChXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlCiAgICAgJHtDTUFLRV9TT1VSQ0VfRElS
fS9Tb3VyY2UvV1RGCkBAIC03NCwxMyArODIsNyBAQCBhZGRfZGVmaW5pdGlvbnMoCiBpbmNsdWRl
X2RpcmVjdG9yaWVzKCR7V2ViS2l0R0xpYkFQSVRlc3RzX0lOQ0xVREVfRElSRUNUT1JJRVN9KQog
aW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0gJHtXZWJLaXRHTGliQVBJVGVzdHNfU1lTVEVNX0lO
Q0xVREVfRElSRUNUT1JJRVN9KQogCi1hZGRfbGlicmFyeShXZWJLaXRHTGliQVBJVGVzdHNDb3Jl
IFNUQVRJQwotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9M
b2FkVHJhY2tpbmdUZXN0LmNwcAotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcAotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAotICAgICR7VE9PTFNfRElS
fS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKLSAgICAke1RPT0xT
X0RJUn0vVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCi0pCith
ZGRfbGlicmFyeShXZWJLaXRHTGliQVBJVGVzdHNDb3JlIFNUQVRJQyAke1dlYktpdEdMaWJBUElU
ZXN0c19TT1VSQ0VTfSkKIHRhcmdldF9saW5rX2xpYnJhcmllcyhXZWJLaXRHTGliQVBJVGVzdHND
b3JlIFdlYktpdDIpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Z2xpYi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAxNzYwNGNjZmU3NC4uMzE4OGJmYTRkNDAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEsNiArMSwx
MCBAQAogc2V0KFRFU1RfTElCUkFSWV9ESVIgJHtDTUFLRV9MSUJSQVJZX09VVFBVVF9ESVJFQ1RP
Ull9L1dlYktpdDJHdGtBUElUZXN0cykKIHNldChURVNUX0JJTkFSWV9ESVIgJHtDTUFLRV9SVU5U
SU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0aykKIAorbGlzdChB
UFBFTkQgV2ViS2l0R0xpYkFQSVRlc3RzX1NPVVJDRVMKKyAgICAke1RPT0xTX0RJUn0vVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAorKQorCiBsaXN0
KEFQUEVORCBXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfQogICAgICR7Rk9SV0FSRElOR19IRUFERVJTX1dF
QktJVDJHVEtfRElSfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1BsYXRm
b3JtV1BFLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1BsYXRmb3JtV1BFLmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ZjBkYjVhMDdiNQotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybVdQRS5jbWFr
ZQpAQCAtMCwwICsxLDIwIEBACitzZXQoVEVTVF9MSUJSQVJZX0RJUiAke0NNQUtFX0xJQlJBUllf
T1VUUFVUX0RJUkVDVE9SWX0vV1BFQVBJVGVzdHMpCitzZXQoVEVTVF9CSU5BUllfRElSICR7Q01B
S0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJL1dQRSkKKworbGlzdChB
UFBFTkQgV2ViS2l0R0xpYkFQSVRlc3RzX1NPVVJDRVMKKyAgICAke1RPT0xTX0RJUn0vVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvd3BlL1dlYlZpZXdUZXN0V1BFLmNwcAorKQorCitsaXN0
KEFQUEVORCBXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7REVS
SVZFRF9TT1VSQ0VTX1dQRV9BUElfRElSfQorICAgICR7Rk9SV0FSRElOR19IRUFERVJTX1dQRV9E
SVJ9CisgICAgJHtGT1JXQVJESU5HX0hFQURFUlNfV1BFX0VYVEVOU0lPTl9ESVJ9CispCisKK2xp
c3QoQVBQRU5EIFdlYktpdEdMaWJBUElUZXN0c19TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwor
ICAgICR7V1BFX0lOQ0xVREVfRElSU30KKykKKworbGlzdChBUFBFTkQgV2ViS2l0R0xpYkFQSVRl
c3RfTElCUkFSSUVTCisgICAgJHtXUEVfTElCUkFSSUVTfQorKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAppbmRl
eCA0YTI2MGI4MTIxZC4uZTZhMzQ4MmQzZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC0yMCw4ICsy
MCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5o
IgogCi0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+Ci0KIHN0YXRpYyB2b2lkIGxvYWRDaGFu
Z2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRF
dmVudCwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKIHsKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1h
aW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3Bw
CmluZGV4IDgyMGE4YjJhNTJjLi5jNzY5OWQ0NGMyNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMjEsMTQgKzIxLDE3IEBACiAj
aW5jbHVkZSAiVGVzdE1haW4uaCIKIAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CisKKyNpZiBQ
TEFURk9STShHVEspCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2VuZGlmCiAKIHVpbnQzMl90IFRl
c3Q6OnNfd2ViRXh0ZW5zaW9uSUQgPSAwOwogCiB2b2lkIGJlZm9yZUFsbCgpOwogdm9pZCBhZnRl
ckFsbCgpOwogCi1zdGF0aWMgR1VuaXF1ZVB0cjxjaGFyPiB0ZXN0RGF0YURpcmVjdG9yeShnX2Rp
cl9tYWtlX3RtcCgiV2ViS2l0Mkd0a1Rlc3RzLVhYWFhYWCIsIG51bGxwdHIpKTsKK3N0YXRpYyBH
VW5pcXVlUHRyPGNoYXI+IHRlc3REYXRhRGlyZWN0b3J5KGdfZGlyX21ha2VfdG1wKCJXZWJLaXRH
TGliVGVzdHMtWFhYWFhYIiwgbnVsbHB0cikpOwogCiBjb25zdCBjaGFyKiBUZXN0OjpkYXRhRGly
ZWN0b3J5KCkKIHsKQEAgLTY0LDcgKzY3LDExIEBAIHN0YXRpYyB2b2lkIHJlbW92ZU5vbkVtcHR5
RGlyZWN0b3J5KGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgpCiBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiB7CiAgICAgZ191bnNldGVudigiREJVU19TRVNTSU9OX0JVU19BRERSRVNT
Iik7Ci0gICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIDApOworI2lmIFBMQVRGT1JNKEdU
SykKKyAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwgbnVsbHB0cik7CisjZWxzZQorICAg
IGdfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwgbnVsbHB0cik7CisjZW5kaWYKICAgICBnX3NldGVu
digiV0VCS0lUX0VYRUNfUEFUSCIsIFdFQktJVF9FWEVDX1BBVEgsIEZBTFNFKTsKICAgICBnX3Nl
dGVudigiV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIIiwgV0VCS0lUX0lOSkVDVEVEX0JVTkRM
RV9QQVRILCBGQUxTRSk7CiAgICAgZ19zZXRlbnYoIkxDX0FMTCIsICJDIiwgVFJVRSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaAppbmRleCBmYmJl
MDAyZjgzYi4uMzZlMDNmZGQzZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvVGVzdE1haW4uaApAQCAtMjEsMTIgKzIxLDIzIEBACiAKICNpbmNsdWRlIDxjYWly
by5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtp
dDIuaD4KKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDx3cGUvd2Via2l0Lmg+CisjZW5k
aWYKKworI2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgVEVTVF9QQVRIX0ZPUk1BVCAiL3dlYmtp
dDIvJXMvJXMiCisjZWxpZiBQTEFURk9STShXUEUpCisjZGVmaW5lIFRFU1RfUEFUSF9GT1JNQVQg
Ii93cGUvJXMvJXMiCisjZW5kaWYKKwogI2RlZmluZSBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKENs
YXNzTmFtZSkgXAogICAgIHN0YXRpYyB2b2lkIHNldFVwKENsYXNzTmFtZSogZml4dHVyZSwgZ2Nv
bnN0cG9pbnRlciBkYXRhKSBcCiAgICAgeyBcCkBAIC0zOCw3ICs0OSw3IEBACiAgICAgfSBcCiAg
ICAgc3RhdGljIHZvaWQgYWRkKGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVz
dE5hbWUsIHZvaWQgKCp0ZXN0RnVuYykoQ2xhc3NOYW1lKiwgY29uc3Qgdm9pZCopKSBcCiAgICAg
eyBcCi0gICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlc3RQYXRoKGdfc3RyZHVwX3ByaW50Zigi
L3dlYmtpdDIvJXMvJXMiLCBzdWl0ZU5hbWUsIHRlc3ROYW1lKSk7IFwKKyAgICAgICAgR1VuaXF1
ZVB0cjxnY2hhcj4gdGVzdFBhdGgoZ19zdHJkdXBfcHJpbnRmKFRFU1RfUEFUSF9GT1JNQVQsIHN1
aXRlTmFtZSwgdGVzdE5hbWUpKTsgXAogICAgICAgICBnX3Rlc3RfYWRkKHRlc3RQYXRoLmdldCgp
LCBDbGFzc05hbWUsIDAsIENsYXNzTmFtZTo6c2V0VXAsIHRlc3RGdW5jLCBDbGFzc05hbWU6OnRl
YXJEb3duKTsgXAogICAgIH0KIApAQCAtNTcsNyArNjgsNyBAQAogICAgIH0gXAogICAgIHN0YXRp
YyB2b2lkIGFkZChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3ROYW1lLCB2
b2lkICgqdGVzdEZ1bmMpKENsYXNzTmFtZSosIGNvbnN0IHZvaWQqKSkgXAogICAgIHsgXAotICAg
ICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIi93ZWJraXQy
LyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFtZSkpOyBcCisgICAgICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHRlc3RQYXRoKGdfc3RyZHVwX3ByaW50ZihURVNUX1BBVEhfRk9STUFULCBzdWl0ZU5hbWUs
IHRlc3ROYW1lKSk7IFwKICAgICAgICAgZ190ZXN0X2FkZCh0ZXN0UGF0aC5nZXQoKSwgQ2xhc3NO
YW1lLCAwLCBDbGFzc05hbWU6OnNldFVwLCB0ZXN0RnVuYywgQ2xhc3NOYW1lOjp0ZWFyRG93bik7
IFwKICAgICB9CiAKQEAgLTc3LDYgKzg4LDE3IEBAIGNsYXNzIFRlc3QgewogcHVibGljOgogICAg
IE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVGVzdCk7CiAKKyAgICBzdGF0aWMgR1JlZlB0cjxXZWJL
aXRXZWJWaWV3PiBhZG9wdFZpZXcoZ3BvaW50ZXIgdmlldykKKyAgICB7CisgICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19XRUJfVklFVyh2aWV3KSk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAg
ICBnX2Fzc2VydChnX29iamVjdF9pc19mbG9hdGluZyh2aWV3KSk7CisgICAgICAgIHJldHVybiBH
UmVmUHRyPFdlYktpdFdlYlZpZXc+KFdFQktJVF9XRUJfVklFVyh2aWV3KSk7CisjZWxpZiBQTEFU
Rk9STShXUEUpCisgICAgICAgIHJldHVybiBhZG9wdEdSZWYoV0VCS0lUX1dFQl9WSUVXKHZpZXcp
KTsKKyNlbmRpZgorICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkYXRhRGlyZWN0b3J5
KCk7CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplV2ViRXh0ZW5zaW9uc0NhbGxiYWNrKFdl
YktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFRlc3QqIHRlc3QpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RCdXMuY3BwCmluZGV4IDg4NDU2
Y2U0ZjQxLi4xYjg5MzAyMTA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTMzLDkgKzMzLDExIEBAIFdlYktp
dFRlc3RCdXM6On5XZWJLaXRUZXN0QnVzKCkKIGJvb2wgV2ViS2l0VGVzdEJ1czo6cnVuKCkKIHsK
ICAgICBDU3RyaW5nIGRpc3BsYXkgPSBnX2dldGVudigiRElTUExBWSIpOworICAgIENTdHJpbmcg
cnVudGltZURpciA9IGdfZ2V0ZW52KCJYREdfUlVOVElNRV9ESVIiKTsKICAgICBnX3Rlc3RfZGJ1
c191cChtX2J1cy5nZXQoKSk7CiAgICAgbV9hZGRyZXNzID0gZ190ZXN0X2RidXNfZ2V0X2J1c19h
ZGRyZXNzKG1fYnVzLmdldCgpKTsKICAgICBnX3NldGVudigiRElTUExBWSIsIGRpc3BsYXkuZGF0
YSgpLCBGQUxTRSk7CisgICAgZ19zZXRlbnYoIlhER19SVU5USU1FX0RJUiIsIHJ1bnRpbWVEaXIu
ZGF0YSgpLCBGQUxTRSk7CiAgICAgcmV0dXJuICFtX2FkZHJlc3MuaXNOdWxsKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNw
cAppbmRleCA3MDcxOTEwZTRlMy4uYzhiY2Q4ZmI5MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTIyLDcgKzIyLDYg
QEAKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4KIAogYm9v
bCBXZWJWaWV3VGVzdDo6c2hvdWxkSW5pdGlhbGl6ZVdlYlZpZXdJbkNvbnN0cnVjdG9yID0gdHJ1
ZTsKIApAQCAtMzcsOCArMzYsNyBAQCBXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQogCiBXZWJW
aWV3VGVzdDo6fldlYlZpZXdUZXN0KCkKIHsKLSAgICBpZiAobV9wYXJlbnRXaW5kb3cpCi0gICAg
ICAgIGd0a193aWRnZXRfZGVzdHJveShtX3BhcmVudFdpbmRvdyk7CisgICAgcGxhdGZvcm1EZXN0
cm95KCk7CiAgICAgaWYgKG1famF2YXNjcmlwdFJlc3VsdCkKICAgICAgICAgd2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X3VucmVmKG1famF2YXNjcmlwdFJlc3VsdCk7CiAgICAgaWYgKG1fc3VyZmFj
ZSkKQEAgLTUwLDcgKzQ4LDggQEAgV2ViVmlld1Rlc3Q6On5XZWJWaWV3VGVzdCgpCiB2b2lkIFdl
YlZpZXdUZXN0Ojppbml0aWFsaXplV2ViVmlldygpCiB7CiAgICAgZ19hc3NlcnQoIW1fd2ViVmll
dyk7Ci0gICAgbV93ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9zaW5rKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgIndlYi1jb250ZXh0IiwgbV93ZWJDb250
ZXh0LmdldCgpLCAidXNlci1jb250ZW50LW1hbmFnZXIiLCBtX3VzZXJDb250ZW50TWFuYWdlci5n
ZXQoKSwgbnVsbHB0cikpKTsKKyAgICBtX3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCBtX3dlYkNvbnRleHQu
Z2V0KCksICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
LCBudWxscHRyKSk7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpOwogICAgIGFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV93ZWJWaWV3KSk7CiAK
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIndlYi1wcm9jZXNzLWNyYXNoZWQiLCBH
X0NBTExCQUNLKFdlYlZpZXdUZXN0Ojp3ZWJQcm9jZXNzQ3Jhc2hlZCksIHRoaXMpOwpAQCAtMTY3
LDEzICsxNjYsNiBAQCB2b2lkIFdlYlZpZXdUZXN0OjpxdWl0TWFpbkxvb3AoKQogICAgIGdfbWFp
bl9sb29wX3F1aXQobV9tYWluTG9vcCk7CiB9CiAKLXZvaWQgV2ViVmlld1Rlc3Q6OnF1aXRNYWlu
TG9vcEFmdGVyUHJvY2Vzc2luZ1BlbmRpbmdFdmVudHMoKQotewotICAgIHdoaWxlIChndGtfZXZl
bnRzX3BlbmRpbmcoKSkKLSAgICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7Ci0gICAgcXVpdE1h
aW5Mb29wKCk7Ci19Ci0KIHZvaWQgV2ViVmlld1Rlc3Q6OndhaXQoZG91YmxlIHNlY29uZHMpCiB7
CiAgICAgZ190aW1lb3V0X2FkZChzZWNvbmRzICogMTAwMCwgW10oZ3BvaW50ZXIgdXNlckRhdGEp
IC0+IGdib29sZWFuIHsKQEAgLTIxOSw0OCArMjExLDYgQEAgdm9pZCBXZWJWaWV3VGVzdDo6d2Fp
dFVudGlsVGl0bGVDaGFuZ2VkKCkKICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygwKTsKIH0K
IAotc3RhdGljIGdib29sZWFuIHBhcmVudFdpbmRvd01hcHBlZChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRXZlbnQqLCBXZWJWaWV3VGVzdCogdGVzdCkKLXsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19k
aXNjb25uZWN0X2J5X2Z1bmMod2lkZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihwYXJlbnRX
aW5kb3dNYXBwZWQpLCB0ZXN0KTsKLSAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxv
b3ApOwotCi0gICAgcmV0dXJuIEZBTFNFOwotfQotCi12b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5X
aW5kb3coR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlKQotewotICAgIGdfYXNzZXJ0KCFtX3BhcmVu
dFdpbmRvdyk7Ci0gICAgbV9wYXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyh3aW5kb3dUeXBl
KTsKLSAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwg
R1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVCht
X3dlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3cobV9wYXJlbnRXaW5kb3cpOwotfQotCi12
b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93
VHlwZSB3aW5kb3dUeXBlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgZ19hc3NlcnQo
IW1fcGFyZW50V2luZG93KTsKLSAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3dfbmV3KHdp
bmRvd1R5cGUpOwotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCi0gICAgICAgIGd0a193aW5kb3df
cmVzaXplKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdF
VChtX3dlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcp
KTsKLQotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wYXJlbnRXaW5kb3csICJtYXAtZXZlbnQiLCBH
X0NBTExCQUNLKHBhcmVudFdpbmRvd01hcHBlZCksIHRoaXMpOwotICAgIGd0a193aWRnZXRfc2hv
dyhtX3BhcmVudFdpbmRvdyk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwotfQot
Ci12b2lkIFdlYlZpZXdUZXN0OjpyZXNpemVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCkKLXsK
LSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gICAgZ3RrX3dpZGdldF9nZXRfYWxsb2Nh
dGlvbihHVEtfV0lER0VUKG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICBpZiAod2lkdGgg
IT0gLTEpCi0gICAgICAgIGFsbG9jYXRpb24ud2lkdGggPSB3aWR0aDsKLSAgICBpZiAoaGVpZ2h0
ICE9IC0xKQotICAgICAgICBhbGxvY2F0aW9uLmhlaWdodCA9IGhlaWdodDsKLSAgICBndGtfd2lk
Z2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVChtX3dlYlZpZXcpLCAmYWxsb2NhdGlvbik7Ci19
Ci0KIHZvaWQgV2ViVmlld1Rlc3Q6OnNlbGVjdEFsbCgpCiB7CiAgICAgd2Via2l0X3dlYl92aWV3
X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2ViVmlldywgIlNlbGVjdEFsbCIpOwpAQCAtMzAz
LDk3ICsyNTMsNiBAQCBjb25zdCBjaGFyKiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNlRGF0YShz
aXplX3QmIG1haW5SZXNvdXJjZURhdGFTaXplKQogICAgIHJldHVybiBtX3Jlc291cmNlRGF0YS5n
ZXQoKTsKIH0KIAotdm9pZCBXZWJWaWV3VGVzdDo6bW91c2VNb3ZlVG8oaW50IHgsIGludCB5LCB1
bnNpZ25lZCBtb3VzZU1vZGlmaWVycykKLXsKLSAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRvdyk7
Ci0gICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcpOwotICAg
IGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKLQotICAgIEdV
bmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9OT1RJRlkp
KTsKLSAgICBldmVudC0+bW90aW9uLnggPSB4OwotICAgIGV2ZW50LT5tb3Rpb24ueSA9IHk7Ci0K
LSAgICBldmVudC0+bW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwotICAgIGV2ZW50LT5t
b3Rpb24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOwotICAgIGdf
b2JqZWN0X3JlZihldmVudC0+bW90aW9uLndpbmRvdyk7Ci0gICAgZXZlbnQtPm1vdGlvbi5kZXZp
Y2UgPSBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dl
dF9kZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQpKSk7Ci0g
ICAgZXZlbnQtPm1vdGlvbi5zdGF0ZSA9IG1vdXNlTW9kaWZpZXJzOwotICAgIGV2ZW50LT5tb3Rp
b24uYXhlcyA9IDA7Ci0KLSAgICBpbnQgeFJvb3QsIHlSb290OwotICAgIGdka193aW5kb3dfZ2V0
X3Jvb3RfY29vcmRzKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSwgeCwgeSwgJnhS
b290LCAmeVJvb3QpOwotICAgIGV2ZW50LT5tb3Rpb24ueF9yb290ID0geFJvb3Q7Ci0gICAgZXZl
bnQtPm1vdGlvbi55X3Jvb3QgPSB5Um9vdDsKLSAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5n
ZXQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlld1Rlc3Q6OmNsaWNrTW91c2VCdXR0b24oaW50IHgsIGlu
dCB5LCB1bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQotewotICAgIGRv
TW91c2VCdXR0b25FdmVudChHREtfQlVUVE9OX1BSRVNTLCB4LCB5LCBidXR0b24sIG1vdXNlTW9k
aWZpZXJzKTsKLSAgICBkb01vdXNlQnV0dG9uRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNFLCB4LCB5
LCBidXR0b24sIG1vdXNlTW9kaWZpZXJzKTsKLX0KLQotdm9pZCBXZWJWaWV3VGVzdDo6ZW1pdFBv
cHVwTWVudVNpZ25hbCgpCi17Ci0gICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdF
VChtX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdX
aWRnZXQpKTsKLQotICAgIGdib29sZWFuIGhhbmRsZWQ7Ci0gICAgZ19zaWduYWxfZW1pdF9ieV9u
YW1lKHZpZXdXaWRnZXQsICJwb3B1cC1tZW51IiwgJmhhbmRsZWQpOwotfQotCi12b2lkIFdlYlZp
ZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1bnNpZ25lZCBrZXlNb2RpZmllcnMp
Ci17Ci0gICAgZ19hc3NlcnQobV9wYXJlbnRXaW5kb3cpOwotICAgIEd0a1dpZGdldCogdmlld1dp
ZGdldCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChndGtfd2lkZ2V0X2dl
dF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7Ci0KLSAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVu
dChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKLSAgICBldmVudC0+a2V5LmtleXZhbCA9
IGtleVZhbDsKLQotICAgIGV2ZW50LT5rZXkudGltZSA9IEdES19DVVJSRU5UX1RJTUU7Ci0gICAg
ZXZlbnQtPmtleS53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdldCk7Ci0g
ICAgZ19vYmplY3RfcmVmKGV2ZW50LT5rZXkud2luZG93KTsKLSAgICBnZGtfZXZlbnRfc2V0X2Rl
dmljZShldmVudC5nZXQoKSwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihn
ZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ3RrX3dpZGdldF9nZXRfZGlzcGxheSh2aWV3
V2lkZ2V0KSkpKTsKLSAgICBldmVudC0+a2V5LnN0YXRlID0ga2V5TW9kaWZpZXJzOwotCi0gICAg
Ly8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGludmFsaWQgaGFyZHdhcmVfa2V5Y29k
ZSB2YWx1ZSBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEdUSysuCi0gICAg
R1VuaXF1ZU91dFB0cjxHZGtLZXltYXBLZXk+IGtleXM7Ci0gICAgaW50IGtleXNDb3VudDsKLSAg
ICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBfZ2V0X2Rl
ZmF1bHQoKSwga2V5VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkpCi0gICAgICAgIGV2
ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsKLQotICAg
IGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKLSAgICBldmVudC0+a2V5LnR5cGUgPSBH
REtfS0VZX1JFTEVBU0U7Ci0gICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOwotfQot
Ci12b2lkIFdlYlZpZXdUZXN0Ojpkb01vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnRUeXBlIGV2ZW50
VHlwZSwgaW50IHgsIGludCB5LCB1bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZp
ZXJzKQotewotICAgIGdfYXNzZXJ0KG1fcGFyZW50V2luZG93KTsKLSAgICBHdGtXaWRnZXQqIHZp
ZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoZ3RrX3dpZGdl
dF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOwotCi0gICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4g
ZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKLSAgICBldmVudC0+YnV0dG9uLndpbmRv
dyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KTsKLSAgICBnX29iamVjdF9yZWYo
ZXZlbnQtPmJ1dHRvbi53aW5kb3cpOwotCi0gICAgZXZlbnQtPmJ1dHRvbi50aW1lID0gR0RLX0NV
UlJFTlRfVElNRTsKLSAgICBldmVudC0+YnV0dG9uLnggPSB4OwotICAgIGV2ZW50LT5idXR0b24u
eSA9IHk7Ci0gICAgZXZlbnQtPmJ1dHRvbi5heGVzID0gMDsKLSAgICBldmVudC0+YnV0dG9uLnN0
YXRlID0gbW91c2VNb2RpZmllcnM7Ci0gICAgZXZlbnQtPmJ1dHRvbi5idXR0b24gPSBidXR0b247
Ci0KLSAgICBldmVudC0+YnV0dG9uLmRldmljZSA9IGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xp
ZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGd0a193aWRnZXRfZ2V0
X2Rpc3BsYXkodmlld1dpZGdldCkpKTsKLQotICAgIGludCB4Um9vdCwgeVJvb3Q7Ci0gICAgZ2Rr
X3dpbmRvd19nZXRfcm9vdF9jb29yZHMoZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQp
LCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7Ci0gICAgZXZlbnQtPmJ1dHRvbi54X3Jvb3QgPSB4Um9v
dDsKLSAgICBldmVudC0+YnV0dG9uLnlfcm9vdCA9IHlSb290OwotICAgIGd0a19tYWluX2RvX2V2
ZW50KGV2ZW50LmdldCgpKTsKLX0KLQogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJlYWR5Q2Fs
bGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3VGVzdCogdGVzdCkK
IHsKICAgICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdfcnVuX2ph
dmFzY3JpcHRfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCB0ZXN0LT5tX2phdmFzY3Jp
cHRFcnJvcik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2Vi
Vmlld1Rlc3QuaAppbmRleCAzNmFlNjJhMDA2YS4uMzI2YTRhYmQzZDAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAtMzIsNiAr
MzIsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdlYlZpZXdJ
bkNvbnN0cnVjdG9yOwogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXcoKTsKIAorICAgIHZvaWQg
cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpOworICAgIHZvaWQgcGxhdGZvcm1EZXN0cm95KCk7
CisKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFVSSShjb25zdCBjaGFyKiB1cmkpOwogICAgIHZpcnR1
YWwgdm9pZCBsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBiYXNlVVJJKTsK
ICAgICB2aXJ0dWFsIHZvaWQgbG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRleHQpOwpA
QCAtNDgsOSArNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKGNvbnN0IGNoYXIqIGV4cGVjdGVk
VGl0bGUpOwogICAgIHZvaWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkKCk7Ci0gICAgdm9pZCBzaG93
SW5XaW5kb3coR3RrV2luZG93VHlwZSA9IEdUS19XSU5ET1dfUE9QVVApOwotICAgIHZvaWQgc2hv
d0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lORE9XX1BP
UFVQLCBpbnQgd2lkdGggPSAwLCBpbnQgaGVpZ2h0ID0gMCk7CiAgICAgdm9pZCByZXNpemVWaWV3
KGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBoaWRlVmlldygpOwogICAgIHZvaWQg
c2VsZWN0QWxsKCk7CiAgICAgY29uc3QgY2hhciogbWFpblJlc291cmNlRGF0YShzaXplX3QmIG1h
aW5SZXNvdXJjZURhdGFTaXplKTsKIApAQCAtNjEsNyArNjMsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgY2xpY2tNb3VzZUJ1dHRvbihpbnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiA9IDEsIHVu
c2lnbmVkIG1vdXNlTW9kaWZpZXJzID0gMCk7CiAgICAgdm9pZCBrZXlTdHJva2UodW5zaWduZWQg
a2V5VmFsLCB1bnNpZ25lZCBrZXlNb2RpZmllcnMgPSAwKTsKIAorI2lmIFBMQVRGT1JNKEdUSykK
KyAgICB2b2lkIHNob3dJbldpbmRvdyhHdGtXaW5kb3dUeXBlID0gR1RLX1dJTkRPV19QT1BVUCk7
CisgICAgdm9pZCBzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSA9
IEdUS19XSU5ET1dfUE9QVVAsIGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKTsKICAgICB2
b2lkIGVtaXRQb3B1cE1lbnVTaWduYWwoKTsKKyNlbmRpZgogCiAgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIGph
dmFzY3JpcHQsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBydW5KYXZh
U2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIqIHJlc291
cmNlLCBHRXJyb3IqKik7CkBAIC04Nyw3ICs5Myw2IEBAIHB1YmxpYzoKICAgICBXZWJLaXRXZWJW
aWV3KiBtX3dlYlZpZXcgeyBudWxscHRyIH07CiAgICAgR01haW5Mb29wKiBtX21haW5Mb29wOwog
ICAgIENTdHJpbmcgbV9hY3RpdmVVUkk7Ci0gICAgR3RrV2lkZ2V0KiBtX3BhcmVudFdpbmRvdyB7
IG51bGxwdHIgfTsKICAgICBDU3RyaW5nIG1fZXhwZWN0ZWRUaXRsZTsKICAgICBXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBtX2phdmFzY3JpcHRSZXN1bHQgeyBudWxscHRyIH07CiAgICAgR0Vycm9y
KiogbV9qYXZhc2NyaXB0RXJyb3IgeyBudWxscHRyIH07CkBAIC05Niw2ICsxMDEsMTIgQEAgcHVi
bGljOgogICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIGJv
b2wgbV9leHBlY3RlZFdlYlByb2Nlc3NDcmFzaCB7IGZhbHNlIH07CiAKKyNpZiBQTEFURk9STShH
VEspCisgICAgR3RrV2lkZ2V0KiBtX3BhcmVudFdpbmRvdyB7IG51bGxwdHIgfTsKKyNlbmRpZgor
CiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRvTW91c2VCdXR0b25FdmVu
dChHZGtFdmVudFR5cGUsIGludCwgaW50LCB1bnNpZ25lZCwgdW5zaWduZWQpOworI2VuZGlmCiB9
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dl
YlZpZXdUZXN0R3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0
ay9XZWJWaWV3VGVzdEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjhiM2Q4YmEwZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcApAQCAtMCwwICsxLDE4MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMgQ29weXJp
Z2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKworI2luY2x1
ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKwordm9p
ZCBXZWJWaWV3VGVzdDo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBpZiAobV9wYXJlbnRXaW5k
b3cpCisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX3BhcmVudFdpbmRvdyk7Cit9CisKK3Zv
aWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlZpZXcoKQoreworICAgIGdfYXNz
ZXJ0KFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydChnX29iamVjdF9p
c19mbG9hdGluZyhtX3dlYlZpZXcpKTsKKyAgICBnX29iamVjdF9yZWZfc2luayhtX3dlYlZpZXcp
OworfQorCit2b2lkIFdlYlZpZXdUZXN0OjpxdWl0TWFpbkxvb3BBZnRlclByb2Nlc3NpbmdQZW5k
aW5nRXZlbnRzKCkKK3sKKyAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCisgICAgICAg
IGd0a19tYWluX2l0ZXJhdGlvbigpOworICAgIHF1aXRNYWluTG9vcCgpOworfQorCit2b2lkIFdl
YlZpZXdUZXN0OjpyZXNpemVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAgICBHdGtB
bGxvY2F0aW9uIGFsbG9jYXRpb247CisgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbihHVEtf
V0lER0VUKG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICBpZiAod2lkdGggIT0gLTEpCisg
ICAgICAgIGFsbG9jYXRpb24ud2lkdGggPSB3aWR0aDsKKyAgICBpZiAoaGVpZ2h0ICE9IC0xKQor
ICAgICAgICBhbGxvY2F0aW9uLmhlaWdodCA9IGhlaWdodDsKKyAgICBndGtfd2lkZ2V0X3NpemVf
YWxsb2NhdGUoR1RLX1dJREdFVChtX3dlYlZpZXcpLCAmYWxsb2NhdGlvbik7Cit9CisKK3ZvaWQg
V2ViVmlld1Rlc3Q6OmhpZGVWaWV3KCkKK3sKKyAgICBndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdF
VChtX3dlYlZpZXcpKTsKK30KKworc3RhdGljIGdib29sZWFuIHBhcmVudFdpbmRvd01hcHBlZChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnQqLCBXZWJWaWV3VGVzdCogdGVzdCkKK3sKKyAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2lkZ2V0LCByZWludGVycHJldF9j
YXN0PHZvaWQqPihwYXJlbnRXaW5kb3dNYXBwZWQpLCB0ZXN0KTsKKyAgICBnX21haW5fbG9vcF9x
dWl0KHRlc3QtPm1fbWFpbkxvb3ApOworCisgICAgcmV0dXJuIEZBTFNFOworfQorCit2b2lkIFdl
YlZpZXdUZXN0OjpzaG93SW5XaW5kb3coR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlKQoreworICAg
IGdfYXNzZXJ0KCFtX3BhcmVudFdpbmRvdyk7CisgICAgbV9wYXJlbnRXaW5kb3cgPSBndGtfd2lu
ZG93X25ldyh3aW5kb3dUeXBlKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS
KG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0
X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3cobV9wYXJl
bnRXaW5kb3cpOworfQorCit2b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3dBbmRXYWl0VW50
aWxNYXBwZWQoR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQp
Cit7CisgICAgZ19hc3NlcnQoIW1fcGFyZW50V2luZG93KTsKKyAgICBtX3BhcmVudFdpbmRvdyA9
IGd0a193aW5kb3dfbmV3KHdpbmRvd1R5cGUpOworICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCisg
ICAgICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50
V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RL
X1dJREdFVChtX3dlYlZpZXcpKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wYXJlbnRXaW5k
b3csICJtYXAtZXZlbnQiLCBHX0NBTExCQUNLKHBhcmVudFdpbmRvd01hcHBlZCksIHRoaXMpOwor
ICAgIGd0a193aWRnZXRfc2hvdyhtX3BhcmVudFdpbmRvdyk7CisgICAgZ19tYWluX2xvb3BfcnVu
KG1fbWFpbkxvb3ApOworfQorCit2b2lkIFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyhpbnQgeCwg
aW50IHksIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQoreworICAgIGdfYXNzZXJ0KG1fcGFyZW50
V2luZG93KTsKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmll
dyk7CisgICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOwor
CisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtfTU9USU9O
X05PVElGWSkpOworICAgIGV2ZW50LT5tb3Rpb24ueCA9IHg7CisgICAgZXZlbnQtPm1vdGlvbi55
ID0geTsKKworICAgIGV2ZW50LT5tb3Rpb24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisgICAg
ZXZlbnQtPm1vdGlvbi53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdldCk7
CisgICAgZ19vYmplY3RfcmVmKGV2ZW50LT5tb3Rpb24ud2luZG93KTsKKyAgICBldmVudC0+bW90
aW9uLmRldmljZSA9IGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rp
c3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdl
dCkpKTsKKyAgICBldmVudC0+bW90aW9uLnN0YXRlID0gbW91c2VNb2RpZmllcnM7CisgICAgZXZl
bnQtPm1vdGlvbi5heGVzID0gMDsKKworICAgIGludCB4Um9vdCwgeVJvb3Q7CisgICAgZ2RrX3dp
bmRvd19nZXRfcm9vdF9jb29yZHMoZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpLCB4
LCB5LCAmeFJvb3QsICZ5Um9vdCk7CisgICAgZXZlbnQtPm1vdGlvbi54X3Jvb3QgPSB4Um9vdDsK
KyAgICBldmVudC0+bW90aW9uLnlfcm9vdCA9IHlSb290OworICAgIGd0a19tYWluX2RvX2V2ZW50
KGV2ZW50LmdldCgpKTsKK30KKwordm9pZCBXZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1dHRvbihp
bnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiwgdW5zaWduZWQgbW91c2VNb2RpZmllcnMpCit7
CisgICAgZG9Nb3VzZUJ1dHRvbkV2ZW50KEdES19CVVRUT05fUFJFU1MsIHgsIHksIGJ1dHRvbiwg
bW91c2VNb2RpZmllcnMpOworICAgIGRvTW91c2VCdXR0b25FdmVudChHREtfQlVUVE9OX1JFTEVB
U0UsIHgsIHksIGJ1dHRvbiwgbW91c2VNb2RpZmllcnMpOworfQorCit2b2lkIFdlYlZpZXdUZXN0
OjplbWl0UG9wdXBNZW51U2lnbmFsKCkKK3sKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBH
VEtfV0lER0VUKG1fd2ViVmlldyk7CisgICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6
ZWQodmlld1dpZGdldCkpOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZDsKKyAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUodmlld1dpZGdldCwgInBvcHVwLW1lbnUiLCAmaGFuZGxlZCk7Cit9CisKK3Zv
aWQgV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1v
ZGlmaWVycykKK3sKKyAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRvdyk7CisgICAgR3RrV2lkZ2V0
KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0KGd0a193
aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKKworICAgIEdVbmlxdWVQdHI8R2RrRXZl
bnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOworICAgIGV2ZW50LT5rZXku
a2V5dmFsID0ga2V5VmFsOworCisgICAgZXZlbnQtPmtleS50aW1lID0gR0RLX0NVUlJFTlRfVElN
RTsKKyAgICBldmVudC0+a2V5LndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lk
Z2V0KTsKKyAgICBnX29iamVjdF9yZWYoZXZlbnQtPmtleS53aW5kb3cpOworICAgIGdka19ldmVu
dF9zZXRfZGV2aWNlKGV2ZW50LmdldCgpLCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9w
b2ludGVyKGdka19kaXNwbGF5X2dldF9kZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dldF9kaXNw
bGF5KHZpZXdXaWRnZXQpKSkpOworICAgIGV2ZW50LT5rZXkuc3RhdGUgPSBrZXlNb2RpZmllcnM7
CisKKyAgICAvLyBXaGVuIHN5bnRoZXNpemluZyBhbiBldmVudCwgYW4gaW52YWxpZCBoYXJkd2Fy
ZV9rZXljb2RlIHZhbHVlIGNhbiBjYXVzZSBpdCB0byBiZSBiYWRseSBwcm9jZXNzZWQgYnkgR1RL
Ky4KKyAgICBHVW5pcXVlT3V0UHRyPEdka0tleW1hcEtleT4ga2V5czsKKyAgICBpbnQga2V5c0Nv
dW50OworICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2RrX2tleW1h
cF9nZXRfZGVmYXVsdCgpLCBrZXlWYWwsICZrZXlzLm91dFB0cigpLCAma2V5c0NvdW50KSkKKyAg
ICAgICAgZXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5rZXljb2Rl
OworCisgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIGV2ZW50LT5rZXku
dHlwZSA9IEdES19LRVlfUkVMRUFTRTsKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVudC5nZXQo
KSk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmRvTW91c2VCdXR0b25FdmVudChHZGtFdmVudFR5
cGUgZXZlbnRUeXBlLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiwgdW5zaWduZWQgbW91
c2VNb2RpZmllcnMpCit7CisgICAgZ19hc3NlcnQobV9wYXJlbnRXaW5kb3cpOworICAgIEd0a1dp
ZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKKyAgICBnX2Fzc2VydChn
dGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7CisKKyAgICBHVW5pcXVlUHRyPEdk
a0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSkpOworICAgIGV2ZW50LT5idXR0
b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOworICAgIGdfb2Jq
ZWN0X3JlZihldmVudC0+YnV0dG9uLndpbmRvdyk7CisKKyAgICBldmVudC0+YnV0dG9uLnRpbWUg
PSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50LT5idXR0b24ueCA9IHg7CisgICAgZXZlbnQt
PmJ1dHRvbi55ID0geTsKKyAgICBldmVudC0+YnV0dG9uLmF4ZXMgPSAwOworICAgIGV2ZW50LT5i
dXR0b24uc3RhdGUgPSBtb3VzZU1vZGlmaWVyczsKKyAgICBldmVudC0+YnV0dG9uLmJ1dHRvbiA9
IGJ1dHRvbjsKKworICAgIGV2ZW50LT5idXR0b24uZGV2aWNlID0gZ2RrX2RldmljZV9tYW5hZ2Vy
X2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ3RrX3dp
ZGdldF9nZXRfZGlzcGxheSh2aWV3V2lkZ2V0KSkpOworCisgICAgaW50IHhSb290LCB5Um9vdDsK
KyAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhndGtfd2lkZ2V0X2dldF93aW5kb3codmll
d1dpZGdldCksIHgsIHksICZ4Um9vdCwgJnlSb290KTsKKyAgICBldmVudC0+YnV0dG9uLnhfcm9v
dCA9IHhSb290OworICAgIGV2ZW50LT5idXR0b24ueV9yb290ID0geVJvb3Q7CisgICAgZ3RrX21h
aW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvd3BlL1dlYlZpZXdUZXN0V1BFLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL3dwZS9XZWJWaWV3VGVzdFdQRS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNjZjE1YzIxMzc1Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvd3BlL1dlYlZpZXdUZXN0
V1BFLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorCit2
b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9ybURlc3Ryb3koKQoreworfQorCit2b2lkIFdlYlZpZXdU
ZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KCkKK3sKK30KKwordm9pZCBXZWJWaWV3VGVz
dDo6cXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cygpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudCBpZiBuZWVkZWQuCisgICAgcXVpdE1haW5Mb29wKCk7Cit9CisKK3Zv
aWQgV2ViVmlld1Rlc3Q6OnJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmhpZGVWaWV3KCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorfQorCit2b2lkIFdlYlZpZXdUZXN0Ojptb3Vz
ZU1vdmVUbyhpbnQgeCwgaW50IHksIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQuCit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmNsaWNrTW91c2VCdXR0
b24oaW50IHgsIGludCB5LCB1bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJz
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6Omtl
eVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1vZGlmaWVycykKK3sKKyAgICAv
LyBGSVhNRTogaW1wbGVtZW50LgorfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313606</attachid>
            <date>2017-06-22 03:05:02 -0700</date>
            <delta_ts>2017-06-22 03:45:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wpe-unit-tests.diff</filename>
            <type>text/plain</type>
            <size>95333</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvQ01ha2VMaXN0cy50eHQK
aW5kZXggNmM0ZjliZmRhYzYuLjU4OGFmY2JmMjhhIDEwMDY0NAotLS0gYS9Ub29scy9DTWFrZUxp
c3RzLnR4dAorKysgYi9Ub29scy9DTWFrZUxpc3RzLnR4dApAQCAtMjcsNiArMjcsOSBAQCBlbHNl
aWYgKCIke1BPUlR9IiBTVFJFUVVBTCAiV1BFIikKICAgICBpZiAoREVWRUxPUEVSX01PREUpCiAg
ICAgICAgIGFkZF9zdWJkaXJlY3RvcnkoSW1hZ2VEaWZmKQogICAgICAgICBhZGRfc3ViZGlyZWN0
b3J5KFdlYktpdFRlc3RSdW5uZXIpCisgICAgICAgIGlmIChFTkFCTEVfQVBJX1RFU1RTKQorICAg
ICAgICAgICAgYWRkX3N1YmRpcmVjdG9yeShUZXN0V2ViS2l0QVBJL2dsaWIpCisgICAgICAgIGVu
ZGlmICgpCiAgICAgZW5kaWYgKCkKIGVsc2VpZiAoIiR7UE9SVH0iIFNUUkVRVUFMICJXaW4iKQog
ICAgIGFkZF9zdWJkaXJlY3RvcnkoRHVtcFJlbmRlclRyZWUpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjI4ZjExNzRhYjUuLmEwM2IzY2VmMDk1
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTI1IEBACiAyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAorICAgICAgICBbV1BFXSBCdWlsZCBnbGliIEFQSSB0ZXN0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzAyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFueSBvZiB0aGUgdGVz
dHMgcGFzcyB3aXRob3V0IHByb2JsZW1zLCBvdGhlcnMgbmVlZCB0byBiZSBpbnZlc3RpZ2F0ZWQs
IGFuZCBzb21lIG90aGVycyBhcmUga25vd24gaXNzdWVzLiBUaGUKKyAgICAgICAgbWFpbiBkaWZm
ZXJlbmNlIGJldHdlZW4gdGhlIEdUSysgYW5kIFdQRSBXZWJLaXRXZWJWaWV3IGlzIHRoYXQgaW4g
R1RLKyBpdCdzIGEgR3RrV2lkZ2V0LCBzbyBpbml0aWFsbHkKKyAgICAgICAgdW5vd25lZC4gVGhl
IHRlc3RzIGFzc3VtZSB0aGF0IHdlYmtpdF93ZWJfdmlld19uZXcgbWV0aG9kcyByZXR1cm4gYSBm
bG9hdGluZyByZWZlcmVuY2UuIFRoaXMgcGF0Y2ggYWRkcworICAgICAgICBUZXN0OjphZG9wdFZp
ZXcoKSBtZXRob2QgdGhhdCByZXR1cm5zIGEgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3aXRoIGEg
ZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGluIEdUSysgYW5kCisgICAgICAgIFdQRS4gSW4gdGhl
IGNhc2Ugb2YgR1RLKywgaXQgc2lua3MgdGhlIGZsb2F0aW5nIHJlZmVyZW5jZSwgd2hpbGUgaW4g
V1BFIGl0IHNpbXBseSBhZG9wdHMgdGhlIHJlZmVyZW5jZS4gQW5vdGhlcgorICAgICAgICBkaWZm
ZXJlbmNlIGlzIHRoYXQgaW4gR1RLKyB0aGUgd2ViIHZpZXcgaXMgaW5pdGlhbGx5IGhpZGRlbiBh
bmQgbmVlZHMgdG8gYmUgYWRkZWQgdG8gYSB3aW5kb3cgdG8gbWFrZSBpdAorICAgICAgICB2aXNp
YmxlLiBBbHNvLCBzb21lIHRlc3RzIG5lZWQgdGhlIHdlYiB2aWV3IHRvIGJlIHJlYWxpemVkIHRv
IHdvcmssIGFuZCBvdGhlcnMgbmVlZCB0aGF0IHRoZSB2aWV3IGlzIGFkZGVkIHRvIGEKKyAgICAg
ICAgdG9wbGV2ZWwgd2luZG93LCBpbnN0ZWFkIG9mIGEgcG9wdXAgd2luZG93LiBBbGwgdGhvc2Ug
dGhpbmdzIGFyZSBub3QgbmVlZGVkIGF0IGFsbCBpbiBXUEUuIEkndmUgYWRkZWQgc2V2ZXJhbAor
ICAgICAgICAjaWZkZWZzIHdpdGggRklYTUUgY29tbWVudHMgZm9yIHRoZSB0aGluZ3MgdGhhdCB3
ZSBrbm93IGRvbid0IHdvcmsgaW4gV1BFIHlldCwgZm9yIGV4YW1wbGUsIGJlY2F1c2Ugd2UgaGF2
ZW4ndAorICAgICAgICBpbXBsZW1lbnRlZCB0aGUgbWV0aG9kcyB0byBzZW5kIGV2ZW50cyB0byB0
aGUgd2ViIHZpZXcuIFRob3NlIHdpbGwgYmUgcmVtb3ZlZCBldmVudHVhbGx5IHdoZW4gd2UgZml4
IHRoZSBpc3N1ZXMKKyAgICAgICAgYW5kIGltcGxlbWVudCB0aGUgbWlzc2luZyBmZWF0dXJlcy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9FZGl0b3JUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKHRlc3RB
dXRvbWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgICh0ZXN0
V2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld1Nl
c3Npb25TdGF0ZVdpdGhGb3JtRGF0YSk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld05hdmln
YXRpb25BZnRlclNlc3Npb25SZXN0b3JlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcDoKKyAgICAgICAgKGJlZm9yZUFsbCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyRXBoZW1lcmFsKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHA6CisgICAg
ICAgICh0ZXN0QmxvYkRvd25sb2FkKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHA6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNw
cDoKKyAgICAgICAgKHRlc3RQcm9jZXNzUGVyV2ViVmlldyk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwOgorICAgICAgICAodGVzdFdlYlZp
ZXdDcmVhdGVOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgICh0ZXN0V2ViVmlld0phdmFTY3JpcHRE
aWFsb2dzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk6CisgICAgICAg
ICh0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3R2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAodGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVl
c3QpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoYmVmb3JlQWxsKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHA6CisgICAgICAgICh0ZXN0UHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdEZpbmRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlckhpZGUpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGlu
Z3MuY3BwOgorICAgICAgICAodGVzdFdlYktpdFNldHRpbmdzKToKKyAgICAgICAgKGJlZm9yZUFs
bCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdOZXdXaXRoVXNlckNv
bnRlbnRNYW5hZ2VyKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcDoKKyAgICAgICAg
KHRlc3RXZWJDb250ZXh0RXBoZW1lcmFsKToKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0UHJveHlT
ZXR0aW5ncyk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
Vmlld1dlYkNvbnRleHQpOgorICAgICAgICAodGVzdFdlYlZpZXdXZWJDb250ZXh0TGlmZXRpbWUp
OgorICAgICAgICAodGVzdFdlYlZpZXdFcGhlbWVyYWwpOgorICAgICAgICAodGVzdFdlYlZpZXdT
ZXR0aW5ncyk6CisgICAgICAgICh0ZXN0V2ViVmlld0NhblNob3dNSU1FVHlwZSk6CisgICAgICAg
ICh0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KToKKyAgICAgICAgKHRlc3RXZWJWaWV3SXNQbGF5
aW5nQXVkaW8pOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcDoKKyAgICAgICAgKHRlc3RXZWJz
aXRlRGF0YUVwaGVtZXJhbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAoZG9jdW1lbnRMb2FkZWRDYWxsYmFj
ayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKyAgICAgICAgKG1ldGhvZENhbGxD
YWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlBy
b2Nlc3NUZXN0Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHA6Cisg
ICAgICAgIChtYWluKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9U
ZXN0TWFpbi5oOgorICAgICAgICAoVGVzdDo6YWRvcHRWaWV3KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcDoKKyAgICAgICAgKFdlYktp
dFRlc3RCdXM6OnJ1bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6On5XZWJWaWV3VGVzdCk6Cisg
ICAgICAgIChXZWJWaWV3VGVzdDo6aW5pdGlhbGl6ZVdlYlZpZXcpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0Lmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJWaWV3VGVzdDo6cGxhdGZvcm1EZXN0cm95KToKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpx
dWl0TWFpbkxvb3BBZnRlclByb2Nlc3NpbmdQZW5kaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYlZp
ZXdUZXN0OjpyZXNpemVWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpoaWRlVmlldyk6Cisg
ICAgICAgIChwYXJlbnRXaW5kb3dNYXBwZWQpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnNob3dJ
bldpbmRvdyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93QW5kV2FpdFVudGls
TWFwcGVkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyk6CisgICAgICAgIChX
ZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1dHRvbik6CisgICAgICAgIChXZWJWaWV3VGVzdDo6ZW1p
dFBvcHVwTWVudVNpZ25hbCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKToKKyAg
ICAgICAgKFdlYlZpZXdUZXN0Ojpkb01vdXNlQnV0dG9uRXZlbnQpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL3dwZS9XZWJWaWV3VGVzdFdQRS5jcHA6IENvcGllZCBm
cm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5o
LgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnBsYXRmb3JtRGVzdHJveSk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3VGVz
dDo6cXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cyk6CisgICAgICAgIChX
ZWJWaWV3VGVzdDo6cmVzaXplVmlldyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6aGlkZVZpZXcp
OgorICAgICAgICAoV2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKToKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjpjbGlja01vdXNlQnV0dG9uKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjprZXlTdHJva2Up
OgorCisyMDE3LTA2LTIyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KKwogICAgICAgICBbR1RLXSBNb3ZlIFdlYktpdDIgR0xpYiBBUEkgdGVzdHMgdG8gZ2xpYiBk
aXJlY3RvcmllcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczNjQyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mkd0ay9FZGl0b3JUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9FZGl0b3JUZXN0LmNwcAppbmRleCA4NzMzNDQyNzE4Ni4uYzIyZDhhYjM4OTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9FZGl0b3JUZXN0LmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvRWRpdG9yVGVzdC5jcHAK
QEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2luY2x1ZGUgIldlYlBy
b2Nlc3NUZXN0LmgiCi0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgog
CiAjZGVmaW5lIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSQogI2luY2x1ZGUgPHdlYmtpdGRv
bS9XZWJLaXRET01ET01TZWxlY3Rpb24uaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKaW5kZXggYTMyZDNlNTJmZTUuLmRlODAzMTQz
ZGMxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJh
bWVUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJh
bWVUZXN0LmNwcApAQCAtMjEsNyArMjEsNiBAQAogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3Qu
aCIKICNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4
dGVuc2lvbi5oPgogCiBjbGFzcyBXZWJLaXRGcmFtZVRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rl
c3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA2Njk3NDNjNzIx
Yy4uMzFjZDY4NmY5NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0yNjYsMTIg
KzI2NiwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lv
bihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogICAgIGdfYXNzZXJ0KCF0ZXN0LT5j
cmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChudWxscHRyKSk7CiAKICAgICAvLyBXaWxsIGFs
c28gZmFpbCBpZiB0aGUgd2ViIHZpZXcgaXMgbm90IGNvbnRyb2xsZWQgYnkgYXV0b21hdGlvbi4K
LSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7
CisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXdf
d2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkp
KTsKICAgICBnX2Fzc2VydCghdGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQod2Vi
Vmlldy5nZXQoKSkpOwogCiAgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJvcGVyIHdlYiB2
aWV3LgotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9U
WVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksICJp
cy1jb250cm9sbGVkLWJ5LWF1dG9tYXRpb24iLCBUUlVFLCBudWxscHRyKSk7CisgICAgd2ViVmll
dyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsICJ3
ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgImlzLWNvbnRyb2xsZWQtYnkt
YXV0b21hdGlvbiIsIFRSVUUsIG51bGxwdHIpKTsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3Zp
ZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsKICAgICBnX2Fz
c2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dCh3ZWJWaWV3LmdldCgpKSk7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
QmFja0ZvcndhcmRMaXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCBmZDJmYmY1ZjIzNy4uYWYyMjRjMWE1NmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QmFj
a0ZvcndhcmRMaXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTIxLDEwICsyMSw4IEBACiAKICNpbmNsdWRl
ICJXZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8c3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAKIC8vIEJhY2sgZm9yd2FyZCBsaXN0
IGxpbWl0IGlzIDEwMCBieSBkZWZhdWx0Lgogc3RhdGljIGNvbnN0IGludCBrQmFja0ZvcndhcmRM
aXN0TGltaXQgPSAxMDA7CkBAIC0yNjgsNyArMjY2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktp
dFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnQKIHsKICAgICBXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKiBzdGF0ZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfc2Vzc2lvbl9zdGF0ZSh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KHN0
YXRlKTsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKKyAgICBhdXRvIHZpZXcgPSBUZXN0OjphZG9wdFZpZXco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGJmTGlz
dCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAg
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChi
Zkxpc3QpLCA9PSwgMCk7CiAgICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0
ZSh2aWV3LmdldCgpLCBzdGF0ZSk7CkBAIC0yNzcsNyArMjc1LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnQKICAgICBnX2Fzc2VydChkYXRhKTsKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmll
d19zZXNzaW9uX3N0YXRlX25ldyhkYXRhLmdldCgpKTsKICAgICBnX2Fzc2VydChzdGF0ZSk7Ci0g
ICAgdmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3Qg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZM
aXN0KSwgPT0sIDApOwogICAgIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUo
dmlldy5nZXQoKSwgc3RhdGUpOwpAQCAtMzIwLDcgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50CiAgICAgc3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9uZXcoZGF0
YS5nZXQoKSk7CiAgICAgZ19hc3NlcnQoc3RhdGUpOwogCi0gICAgdmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZpZXcgPSBUZXN0OjphZG9wdFZpZXco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdl
YmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwpA
QCAtMzQ5LDcgKzM0Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0
YXRlV2l0aEZvcm1EYXRhKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsCiAKICAgICBXZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlKiBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9z
dGF0ZSh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIGdfYXNzZXJ0KHN0YXRlKTsKLSAgICBHUmVmUHRy
PFdlYktpdFdlYlZpZXc+IHZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKKyAgICBhdXRvIHZpZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25l
dygpKTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGJmTGlzdCA9IHdlYmtpdF93ZWJfdmll
d19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wdWlu
dCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChiZkxpc3QpLCA9PSwgMCk7CiAg
ICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZSh2aWV3LmdldCgpLCBzdGF0
ZSk7CkBAIC0zNTgsNyArMzU2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlZpZXdTZXNz
aW9uU3RhdGVXaXRoRm9ybURhdGEoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwKICAgICBnX2Fz
c2VydChkYXRhKTsKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX25l
dyhkYXRhLmdldCgpKTsKICAgICBnX2Fzc2VydChzdGF0ZSk7Ci0gICAgdmlldyA9IFdFQktJVF9X
RUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOworICAgIHZpZXcgPSBUZXN0OjphZG9wdFZp
ZXcod2Via2l0X3dlYl92aWV3X25ldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
d2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAg
IHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUp
OwpAQCAtMzc2LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3TmF2aWdh
dGlvbkFmdGVyU2Vzc2lvblJlc3RvcmUoQmFja0ZvcndhcmRMaXN0VGVzdCoKIHsKICAgICAvLyBU
aGlzIHRlc3QgY2hlY2tzIHRoYXQgYSBub3JtYWwgbG9hZCBhZnRlciBhIHNlc3Npb24gcmVzdG9y
ZSB3aXRoIGEgQmFja0ZvcmFyZCBsaXN0IGhhdmluZwogICAgIC8vIGZvcndhcmQgaXRlbXMgZG9l
c24ndCBwcm9kdWNlIGFueSBydW50aW1lIGNyaXRpY2FsIHdhcm5pbmcuIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMjMzLgotICAgIEdSZWZQdHI8V2ViS2l0
V2ViVmlldz4gdmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwor
ICAgIGF1dG8gdmlldyA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwog
ICAgIGdfc2lnbmFsX2Nvbm5lY3Qodmlldy5nZXQoKSwgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJB
Q0sodmlld0xvYWRDaGFuZ2VkKSwgdGVzdC0+bV9tYWluTG9vcCk7CiAKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkodmlldy5nZXQoKSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL1BhZ2Ux
IikuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29uc29sZU1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggNzAxOTQ0MGRmOTAuLmE4OWM4
MTkyMjI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdENvbnNvbGVNZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcApAQCAtMjAsOSArMjAsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxndGsv
Z3RrLmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CiAKKyNpZiBQTEFURk9STShHVEsp
CiBjbGFzcyBDb25zb2xlTWVzc2FnZVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGlj
OgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29uc29sZU1lc3NhZ2VUZXN0KTsKQEAgLTE0
MSwxMyArMTQwLDE3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZVNlY3Vy
aXR5RXJyb3IoQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29uCiAgICAgdGVzdC0+d2FpdFVu
dGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwogICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29s
ZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CisgICAgLy8gRklYTUU6IFVzZSBKU0MgQVBJIHRvIHNl
bmQgc2NyaXB0IG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdC4KKyNpZiBQTEFURk9STShHVEspCiAg
ICAgQ29uc29sZU1lc3NhZ2VUZXN0OjphZGQoIldlYktpdENvbnNvbGVNZXNzYWdlIiwgImNvbnNv
bGUtYXBpIiwgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlQ29uc29sZUFQSSk7CiAgICAgQ29uc29s
ZU1lc3NhZ2VUZXN0OjphZGQoIldlYktpdENvbnNvbGVNZXNzYWdlIiwgImpzLWV4Y2VwdGlvbiIs
IHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUphdmFTY3JpcHRFeGNlcHRpb24pOwogICAgIENvbnNv
bGVNZXNzYWdlVGVzdDo6YWRkKCJXZWJLaXRDb25zb2xlTWVzc2FnZSIsICJuZXR3b3JrLWVycm9y
IiwgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlTmV0d29ya0Vycm9yKTsKICAgICBDb25zb2xlTWVz
c2FnZVRlc3Q6OmFkZCgiV2ViS2l0Q29uc29sZU1lc3NhZ2UiLCAic2VjdXJpdHktZXJyb3IiLCB0
ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VTZWN1cml0eUVycm9yKTsKKyNlbmRpZgogfQogCiB2b2lk
IGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IGRmNWYzZGRlZDkzLi4xYmU4Y2Mw
ZDA2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0zMTYsNyArMzE2LDcgQEAgc3RhdGljIHZv
aWQgdGVzdENvb2tpZU1hbmFnZXJFcGhlbWVyYWwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50
KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0V2Vi
Vmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCiAgICAgICAgICJpcy1lcGhlbWVy
YWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggNzU2MDQ2MGFi
ZjQuLjgyMDA3NzMxZDcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3BwCkBAIC0yMiwxMCArMjIsOCBAQAogI2luY2x1
ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogI2luY2x1
ZGUgPGdsaWIvZ3N0ZGlvLmg+Ci0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPGxpYnNv
dXAvc291cC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0
Mi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtNjcxLDYgKzY2OSw3IEBA
IHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZE1JTUVUeXBlKERvd25sb2FkVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5kRGVsZXRlRmlsZShkb3du
bG9hZC5nZXQoKSwgZXhwZWN0ZWRGaWxlbmFtZS5nZXQoKSk7CiB9CiAKKyNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0
SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkK
IHsKICAgICBnX2Fzc2VydChXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1bHQp
KTsKQEAgLTcyNiwxMCArNzI1LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURvd25s
b2FkQWN0aW9ucyhXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgZ19h
c3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dldF9zaXplKGRvd25sb2FkRmlsZUluZm8uZ2V0KCkp
LCA+LCAwKTsKICAgICBnX2ZpbGVfZGVsZXRlKGRvd25sb2FkRmlsZS5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0cik7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMgdm9pZCB0ZXN0
QmxvYkRvd25sb2FkKFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1h
cHBlZCgpOworI2VuZGlmCiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogbGlua0Jsb2JIVE1MID0K
ICAgICAgICAgIjxodG1sPjxib2R5PiIKQEAgLTc3OCw4ICs3ODAsMTQgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIFBvbGljeVJlc3BvbnNlRG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJw
b2xpY3ktZGVjaXNpb24tZG93bmxvYWQiLCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZCk7CiAg
ICAgUG9saWN5UmVzcG9uc2VEb3dubG9hZFRlc3Q6OmFkZCgiRG93bmxvYWRzIiwgInBvbGljeS1k
ZWNpc2lvbi1kb3dubG9hZC1jYW5jZWwiLCB0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZENhbmNl
bCk7CiAgICAgRG93bmxvYWRUZXN0OjphZGQoIkRvd25sb2FkcyIsICJtaW1lLXR5cGUiLCB0ZXN0
RG93bmxvYWRNSU1FVHlwZSk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBrZXlTdHJva2UgaW4g
V1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3RG93bmxvYWRUZXN0OjphZGQoIkRv
d25sb2FkcyIsICJjb250ZXgtbWVudS1kb3dubG9hZC1hY3Rpb25zIiwgdGVzdENvbnRleHRNZW51
RG93bmxvYWRBY3Rpb25zKTsKKyNlbmRpZgorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW91c2Ug
Y2xpY2sgaW4gV1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3RG93bmxvYWRUZXN0
OjphZGQoIkRvd25sb2FkcyIsICJibG9iLWRvd25sb2FkIiwgdGVzdEJsb2JEb3dubG9hZCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZyYW1lLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0RnJhbWUuY3BwCmluZGV4IDkxNDVhYjgxM2NlLi4yNTQ1N2Q3
ZmZjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RGcmFtZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RGcmFtZS5jcHAKQEAgLTIwLDggKzIwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lu
Y2x1ZGUgIldlYlZpZXdUZXN0LmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2luY2x1ZGUgPHdl
YmtpdDIvd2Via2l0Mi5oPgogCiBzdGF0aWMgdm9pZCB3ZWJraXRGcmFtZVRlc3RSdW4oV2ViVmll
d1Rlc3QqIHRlc3QsIGNvbnN0IGNoYXIqIHRlc3ROYW1lKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IGYzZTI4ZDE2NzQ4Li43OTQ2NzA3MThhNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcApAQCAtMjUs
NyArMjUsNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNpbmNsdWRlICJXZWJLaXRU
ZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKLSNpbmNsdWRlIDxndGsvZ3Rr
Lmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcAppbmRleCAwMjBh
ZDM1MjlhMi4uNTViOTk4ODA3ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHAKQEAgLTIyLDcgKzIyLDYg
QEAKICNpbmNsdWRlICJUZXN0TWFpbi5oIgogI2luY2x1ZGUgIldlYktpdFRlc3RCdXMuaCIKICNp
bmNsdWRlICJXZWJWaWV3VGVzdC5oIgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bVZpZXdzID0g
MjsKQEAgLTU5LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgZ19hc3NlcnRfY21w
dWludChpbmRleCwgPCwgbnVtVmlld3MpOwogCi0gICAgICAgIG1fd2ViVmlld3NbaW5kZXhdID0g
V0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KG1fd2ViQ29u
dGV4dC5nZXQoKSkpOworICAgICAgICBtX3dlYlZpZXdzW2luZGV4XSA9IFRlc3Q6OmFkb3B0Vmll
dyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dChtX3dlYkNvbnRleHQuZ2V0KCkpKTsK
ICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCht
X3dlYlZpZXdzW2luZGV4XS5nZXQoKSkpOwogCiAgICAgICAgIG1fd2ViVmlld0J1c05hbWVzW2lu
ZGV4XSA9IEdVbmlxdWVQdHI8Y2hhcj4oZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0JXUiLCBUZXN0OjpzX3dlYkV4dGVuc2lvbklEKSk7CkBAIC04OSw2ICs4
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXI7CiAgICAgfQogCisjaWYg
UExBVEZPUk0oR1RLKQogICAgIHN0YXRpYyB2b2lkIG5hbWVWYW5pc2hlZENhbGxiYWNrKEdEQnVz
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgZ2NoYXIqIG5hbWUsIGdwb2ludGVyIHVzZXJE
YXRhKQogICAgIHsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxv
b3AqPih1c2VyRGF0YSkpOwpAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgICAgICBnX2J1c191bndhdGNoX25hbWUod2F0
Y2hlcklEKTsKICAgICB9CisjZW5kaWYKIAogICAgIEdNYWluTG9vcCogbV9tYWluTG9vcDsKICAg
ICB1bnNpZ25lZCBtX2luaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQ7CkBAIC0xMjks
MTIgKzEzMCwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJvY2Vzc1BlcldlYlZpZXcoTXVsdGlwcm9j
ZXNzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+
bV93ZWJWaWV3QnVzTmFtZXNbMF0uZ2V0KCksICE9LCB0ZXN0LT5tX3dlYlZpZXdCdXNOYW1lc1sx
XS5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT53ZWJQcm9jZXNzUGlkKDApLCAh
PSwgdGVzdC0+d2ViUHJvY2Vzc1BpZCgxKSk7CiAKKyNpZiBQTEFURk9STShHVEspCiAgICAgLy8g
Q2hlY2sgdGhhdCB3ZWIgcHJvY2Vzc2VzIGZpbmlzaCB3aGVuIHRoZSB3ZWIgdmlldyBpcyBkZXN0
cm95ZWQgZXZlbiB3aGVuIGl0J3Mgbm90IGZpbmFsaXplZC4KICAgICAvLyBTZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTc4My4KICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbnVtVmlld3M7IGkrKykgewogICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlZp
ZXc+IHdlYlZpZXcgPSB0ZXN0LT5tX3dlYlZpZXdzW2ldOwogICAgICAgICB0ZXN0LT5kZXN0cm95
V2ViVmlld0FuZFdhaXRVbnRpbFdlYlByb2Nlc3NGaW5pc2hlcyhpKTsKICAgICB9CisjZW5kaWYK
IH0KIAogY2xhc3MgVUlDbGllbnRNdWx0aXByb2Nlc3NUZXN0OiBwdWJsaWMgVGVzdCB7CkBAIC0x
NDcsNyArMTUwLDcgQEAgcHVibGljOgogICAgICAgICBDbG9zZQogICAgIH07CiAKLSAgICBzdGF0
aWMgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0TmF2aWdhdGlvbkFjdGlvbiosIFVJQ2xpZW50TXVsdGlwcm9jZXNzVGVzdCogdGVzdCkK
KyAgICBzdGF0aWMgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZUNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qLCBVSUNsaWVudE11bHRpcHJvY2Vz
c1Rlc3QqIHRlc3QpCiAgICAgewogICAgICAgICByZXR1cm4gdGVzdC0+dmlld0NyZWF0ZSh3ZWJW
aWV3KTsKICAgICB9CkBAIC0xNjcsNyArMTcwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2lu
aXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQoMCkKICAgICB7CiAgICAgICAgIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfcHJvY2Vzc19tb2RlbChtX3dlYkNvbnRleHQuZ2V0KCksIFdFQktJ
VF9QUk9DRVNTX01PREVMX01VTFRJUExFX1NFQ09OREFSWV9QUk9DRVNTRVMpOwotICAgICAgICBt
X3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfcmVmX3Npbmsod2Via2l0X3dlYl92
aWV3X25ld193aXRoX2NvbnRleHQobV93ZWJDb250ZXh0LmdldCgpKSkpOworICAgICAgICBtX3dl
YlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQo
bV93ZWJDb250ZXh0LmdldCgpKSk7CisjaWYgUExBVEZPUk0oR1RLKQorICAgICAgICBnX29iamVj
dF9yZWZfc2luayhtX3dlYlZpZXcpOworI2VuZGlmCiAgICAgICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkod2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyhtX3dlYlZpZXcpLCBUUlVFKTsKIAogICAgICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sodmlld0NyZWF0ZUNhbGxiYWNr
KSwgdGhpcyk7CkBAIC0xNzYsNyArMTgyLDcgQEAgcHVibGljOgogICAgIH5VSUNsaWVudE11bHRp
cHJvY2Vzc1Rlc3QoKQogICAgIHsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhp
cyk7Ci0gICAgICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKG1fd2ViVmlldykpOwor
ICAgICAgICBnX29iamVjdF91bnJlZihtX3dlYlZpZXcpOwogICAgIH0KIAogICAgIHZvaWQgaW5p
dGlhbGl6ZVdlYkV4dGVuc2lvbnMoKSBvdmVycmlkZQpAQCAtMTg1LDE5ICsxOTEsMjEgQEAgcHVi
bGljOgogICAgICAgICBtX2luaXRpYWxpemVXZWJFeHRlbnNpb25zU2lnbmFsQ291bnQrKzsKICAg
ICB9CiAKLSAgICBHdGtXaWRnZXQqIHZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
KyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7CiAKLSAgICAgICAg
R3RrV2lkZ2V0KiBuZXdXZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X25ld193aXRoX3JlbGF0ZWRf
dmlldyh3ZWJWaWV3KTsKKyAgICAgICAgYXV0byogbmV3V2ViVmlldyA9IHdlYmtpdF93ZWJfdmll
d19uZXdfd2l0aF9yZWxhdGVkX3ZpZXcod2ViVmlldyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAg
ICAgICBnX29iamVjdF9yZWZfc2luayhuZXdXZWJWaWV3KTsKKyNlbmRpZgogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5ld1dlYlZpZXcpKTsK
ICAgICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVuZChDcmVhdGUpOwogCiAgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3QobmV3V2ViVmlldywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdS
ZWFkeVRvU2hvd0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3
V2ViVmlldywgImNsb3NlIiwgR19DQUxMQkFDSyh2aWV3Q2xvc2VDYWxsYmFjayksIHRoaXMpOwog
Ci0gICAgICAgIHJldHVybiBuZXdXZWJWaWV3OworICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9W
SUVXKG5ld1dlYlZpZXcpOwogICAgIH0KIAogICAgIHZvaWQgdmlld1JlYWR5VG9TaG93KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFNTTC5jcHAKaW5kZXggMTBjNWU3M2I2Y2EuLjk2ZjVmNjNhNjExIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCkBAIC0y
MSw3ICsyMSw2IEBACiAKICNpbmNsdWRlICJMb2FkVHJhY2tpbmdUZXN0LmgiCiAjaW5jbHVkZSAi
V2ViS2l0VGVzdFNlcnZlci5oIgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogc3RhdGljIFdlYktp
dFRlc3RTZXJ2ZXIqIGtIdHRwc1NlcnZlcjsKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBrSHR0
cFNlcnZlcjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RVSUNsaWVudC5jcHAKaW5kZXggMmI5NTQyZjNkZGIuLjY0MTNhOWM3YTM1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50
LmNwcApAQCAtNTIsNyArNTIsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIG1fcmVzaXphYmxl
KHRydWUpCiAgICAgICAgICAgICAsIG1fZnVsbHNjcmVlbihmYWxzZSkKICAgICAgICAgeworI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIG1lbXNldCgmbV9nZW9tZXRyeSwgMCwgc2l6ZW9m
KEdka1JlY3RhbmdsZSkpOworI2VuZGlmCiAgICAgICAgIH0KIAogICAgICAgICBXaW5kb3dQcm9w
ZXJ0aWVzKFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRvd1Byb3BlcnRpZXMpCkBAIC02NSwx
MCArNjcsMTIgQEAgcHVibGljOgogICAgICAgICAgICAgLCBtX3Jlc2l6YWJsZSh3ZWJraXRfd2lu
ZG93X3Byb3BlcnRpZXNfZ2V0X3Jlc2l6YWJsZSh3aW5kb3dQcm9wZXJ0aWVzKSkKICAgICAgICAg
ICAgICwgbV9mdWxsc2NyZWVuKHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19nZXRfZnVsbHNjcmVl
bih3aW5kb3dQcm9wZXJ0aWVzKSkKICAgICAgICAgeworI2lmIFBMQVRGT1JNKEdUSykKICAgICAg
ICAgICAgIHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19nZXRfZ2VvbWV0cnkod2luZG93UHJvcGVy
dGllcywgJm1fZ2VvbWV0cnkpOworI2VuZGlmCiAgICAgICAgIH0KIAotICAgICAgICBXaW5kb3dQ
cm9wZXJ0aWVzKEdka1JlY3RhbmdsZSogZ2VvbWV0cnksIGJvb2wgdG9vbGJhclZpc2libGUsIGJv
b2wgc3RhdHVzYmFyVmlzaWJsZSwgYm9vbCBzY3JvbGxiYXJzVmlzaWJsZSwgYm9vbCBtZW51YmFy
VmlzaWJsZSwgYm9vbCBsb2NhdGlvbmJhclZpc2libGUsIGJvb2wgcmVzaXphYmxlLCBib29sIGZ1
bGxzY3JlZW4pCisgICAgICAgIFdpbmRvd1Byb3BlcnRpZXMoY2Fpcm9fcmVjdGFuZ2xlX2ludF90
KiBnZW9tZXRyeSwgYm9vbCB0b29sYmFyVmlzaWJsZSwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlLCBi
b29sIHNjcm9sbGJhcnNWaXNpYmxlLCBib29sIG1lbnViYXJWaXNpYmxlLCBib29sIGxvY2F0aW9u
YmFyVmlzaWJsZSwgYm9vbCByZXNpemFibGUsIGJvb2wgZnVsbHNjcmVlbikKICAgICAgICAgICAg
IDogbV9pc051bGwoZmFsc2UpCiAgICAgICAgICAgICAsIG1fZ2VvbWV0cnkoKmdlb21ldHJ5KQog
ICAgICAgICAgICAgLCBtX3Rvb2xiYXJWaXNpYmxlKHRvb2xiYXJWaXNpYmxlKQpAQCAtODUsMTAg
Kzg5LDEyIEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lkIGFzc2VydEVxdWFsKGNvbnN0IFdpbmRv
d1Byb3BlcnRpZXMmIG90aGVyKSBjb25zdAogICAgICAgICB7CisjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fZ2VvbWV0cnkueCwgPT0sIG90aGVyLm1fZ2Vv
bWV0cnkueCk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQobV9nZW9tZXRyeS55LCA9PSwg
b3RoZXIubV9nZW9tZXRyeS55KTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX2dlb21l
dHJ5LndpZHRoLCA9PSwgb3RoZXIubV9nZW9tZXRyeS53aWR0aCk7CiAgICAgICAgICAgICBnX2Fz
c2VydF9jbXBpbnQobV9nZW9tZXRyeS5oZWlnaHQsID09LCBvdGhlci5tX2dlb21ldHJ5LmhlaWdo
dCk7CisjZW5kaWYKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0aWNfY2FzdDxpbnQ+
KG1fdG9vbGJhclZpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3Rvb2xiYXJW
aXNpYmxlKSk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhdGljX2Nhc3Q8aW50Piht
X3N0YXR1c2JhclZpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3N0YXR1c2Jh
clZpc2libGUpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdGF0aWNfY2FzdDxpbnQ+
KG1fc2Nyb2xsYmFyc1Zpc2libGUpLCA9PSwgc3RhdGljX2Nhc3Q8aW50PihvdGhlci5tX3Njcm9s
bGJhcnNWaXNpYmxlKSk7CkBAIC0xMDEsNyArMTA3LDcgQEAgcHVibGljOgogICAgIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgbV9pc051bGw7CiAKLSAgICAgICAgR2RrUmVjdGFuZ2xlIG1fZ2VvbWV0
cnk7CisgICAgICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCBtX2dlb21ldHJ5OwogCiAgICAgICAg
IGJvb2wgbV90b29sYmFyVmlzaWJsZTsKICAgICAgICAgYm9vbCBtX3N0YXR1c2JhclZpc2libGU7
CkBAIC0xMTgsNyArMTI0LDcgQEAgcHVibGljOgogICAgICAgICB0ZXN0LT5tX3dpbmRvd1Byb3Bl
cnRpZXNDaGFuZ2VkLmFkZChnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKSk7CiAgICAg
fQogCi0gICAgc3RhdGljIEd0a1dpZGdldCogdmlld0NyZWF0ZUNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24sIFVJQ2xpZW50
VGVzdCogdGVzdCkKKyAgICBzdGF0aWMgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZUNhbGxiYWNr
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRp
b24sIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7CiAgICAgICAgIHJldHVybiB0ZXN0LT52aWV3
Q3JlYXRlKHdlYlZpZXcsIG5hdmlnYXRpb24pOwogICAgIH0KQEAgLTMwMSwxOSArMzA3LDI0IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNpbXVsYXRlVXNlckludGVyYWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3RJbnB1dCcpLmZvY3VzKCkiLCBudWxscHRyKTsKKyAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBrZXlTdHJva2UgaW4gV1BFLgorI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAg
a2V5U3Ryb2tlKEdES19LRVlfYSk7CiAgICAgICAgIGtleVN0cm9rZShHREtfS0VZX2IpOwogICAg
ICAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCiAgICAgICAgICAgICBndGtfbWFpbl9p
dGVyYXRpb24oKTsKKyNlbmRpZgogICAgIH0KIAotICAgIHZpcnR1YWwgR3RrV2lkZ2V0KiB2aWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5h
dmlnYXRpb24pCisgICAgdmlydHVhbCBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCiAgICAg
ewogICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7CiAgICAgICAgIGdfYXNz
ZXJ0KG5hdmlnYXRpb24pOwogCi0gICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3
ZWJWaWV3KSk7CisgICAgICAgIGF1dG8qIG5ld1dlYlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3
X3dpdGhfY29udGV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldykpOworI2lm
IFBMQVRGT1JNKEdUSykKICAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsobmV3V2ViVmlldyk7Cisj
ZW5kaWYKIAogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENyZWF0ZSk7CiAKQEAgLTMy
Niw3ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmll
dywgInJlYWR5LXRvLXNob3ciLCBHX0NBTExCQUNLKHZpZXdSZWFkeVRvU2hvd0NhbGxiYWNrKSwg
dGhpcyk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobmV3V2ViVmlldywgImNsb3NlIiwgR19D
QUxMQkFDSyh2aWV3Q2xvc2VDYWxsYmFjayksIHRoaXMpOwogCi0gICAgICAgIHJldHVybiBuZXdX
ZWJWaWV3OworICAgICAgICByZXR1cm4gV0VCS0lUX1dFQl9WSUVXKG5ld1dlYlZpZXcpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKQEAgLTM3Nyw2ICszODgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZVJl
YWR5Q2xvc2UoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
X2NtcGludChldmVudHNbMl0sID09LCBVSUNsaWVudFRlc3Q6OkNsb3NlKTsKIH0KIAorI2lmIFBM
QVRGT1JNKEdUSykKIGNsYXNzIENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdDogcHVibGljIFVJQ2xp
ZW50VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1RfRklYVFVSRShDcmVhdGVOYXZp
Z2F0aW9uRGF0YVRlc3QpOwpAQCAtMzk4LDcgKzQxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9u
YXZpZ2F0aW9uID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBHdGtXaWRnZXQqIHZpZXdDcmVhdGUo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlv
bikKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCiAgICAgewogICAgICAgICBnX2Fz
c2VydChuYXZpZ2F0aW9uKTsKICAgICAgICAgZ19hc3NlcnQoIW1fbmF2aWdhdGlvbik7CkBAIC00
MjUsNyArNDM3LDkgQEAgcHVibGljOgogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZU5h
dmlnYXRpb25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHsKKyNpZiBQTEFURk9STShHVEspCiAgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVu
dGlsTWFwcGVkKCk7CisjZW5kaWYKIAogICAgIHRlc3QtPmxvYWRIVE1MKAogICAgICAgICAiPGh0
bWw+PGJvZHk+IgpAQCAtNDYxLDcgKzQ3NSw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q3Jl
YXRlTmF2aWdhdGlvbkRhdGEoQ3JlYXRlTmF2aWdhdGlvbkRhdGFUZXN0KiB0ZXN0LCBnY29uCiAg
ICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vZGlmaWVy
cyh0ZXN0LT5tX25hdmlnYXRpb24pLCA9PSwgMCk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF9uYXZp
Z2F0aW9uX2FjdGlvbl9pc191c2VyX2dlc3R1cmUodGVzdC0+bV9uYXZpZ2F0aW9uKSk7CiB9Cisj
ZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGdib29s
ZWFuIGNoZWNrTWltZVR5cGVGb3JGaWx0ZXIoR3RrRmlsZUZpbHRlciogZmlsdGVyLCBjb25zdCBn
Y2hhciogbWltZVR5cGUpCiB7CiAgICAgR3RrRmlsZUZpbHRlckluZm8gZmlsdGVySW5mbzsKQEAg
LTQ2OSw2ICs0ODUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gY2hlY2tNaW1lVHlwZUZvckZpbHRlcihH
dGtGaWxlRmlsdGVyKiBmaWx0ZXIsIGNvbnN0IGdjaGFyKiBtaW1lVAogICAgIGZpbHRlckluZm8u
bWltZV90eXBlID0gbWltZVR5cGU7CiAgICAgcmV0dXJuIGd0a19maWxlX2ZpbHRlcl9maWx0ZXIo
ZmlsdGVyLCAmZmlsdGVySW5mbyk7CiB9CisjZW5kaWYKIAogY2xhc3MgTW9kYWxEaWFsb2dzVGVz
dDogcHVibGljIFVJQ2xpZW50VGVzdCB7CiBwdWJsaWM6CkBAIC00ODAsMTEgKzQ5NywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUnVuQXNNb2RhbCk7
CiAgICAgfQogCi0gICAgR3RrV2lkZ2V0KiB2aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24pCisgICAgV2ViS2l0V2ViVmll
dyogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0
aW9uKiBuYXZpZ2F0aW9uKQogICAgIHsKICAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dl
YlZpZXcpOwogCi0gICAgICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IFVJQ2xpZW50VGVzdDo6
dmlld0NyZWF0ZSh3ZWJWaWV3LCBuYXZpZ2F0aW9uKTsKKyAgICAgICAgYXV0byogbmV3V2ViVmll
dyA9IFVJQ2xpZW50VGVzdDo6dmlld0NyZWF0ZSh3ZWJWaWV3LCBuYXZpZ2F0aW9uKTsKICAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFzLW1vZGFsIiwgR19DQUxMQkFD
SyhkaWFsb2dSdW5Bc01vZGFsQ2FsbGJhY2spLCB0aGlzKTsKICAgICAgICAgcmV0dXJuIG5ld1dl
YlZpZXc7CiAgICAgfQpAQCAtNTI4LDcgKzU0NSw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RGlzYWxsb3dNb2RhbERpYWxvZ3MoTW9kYWxEaWFsb2dzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogeworI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5z
aG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisjZW5k
aWYKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sT25Mb2FkRm9ybWF0ID0gIjxodG1sPjxi
b2R5IG9uTG9hZD1cIiVzXCI+PC9ib2R5PjwvaHRtbD4iOwogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBqc0FsZXJ0Rm9ybWF0ID0gImFsZXJ0KCclcycpIjsKQEAgLTYwNyw3ICs2MjYsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyhV
SUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHdpbmRvd1Byb3JwZXJ0aWVzU3RyaW5nID0gImxlZnQ9MTAwLHRvcD0xNTAsd2lkdGg9NDAw
LGhlaWdodD00MDAsbG9jYXRpb249bm8sbWVudWJhcj1ubyxzdGF0dXM9bm8sdG9vbGJhcj1ubyxz
Y3JvbGxiYXJzPW5vIjsKLSAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnkgPSB7IDEwMCwgMTUwLCA0
MDAsIDQwMCB9OworICAgIGNhaXJvX3JlY3RhbmdsZV9pbnRfdCBnZW9tZXRyeSA9IHsgMTAwLCAx
NTAsIDQwMCwgNDAwIH07CiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRXaW5kb3dQcm9wZXJ0aWVzKFVJ
Q2xpZW50VGVzdDo6V2luZG93UHJvcGVydGllcygmZ2VvbWV0cnksIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
aHRtbFN0cmluZyhnX3N0cmR1cF9wcmludGYoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5v
cGVuKCcnLCAnJywgJyVzJykuY2xvc2UoKTtcIj48L2JvZHk+PC9odG1sPiIsIHdpbmRvd1Byb3Jw
ZXJ0aWVzU3RyaW5nKSk7CkBAIC02MjcsNiArNjQ2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlDbGllbnRUZXN0OjpDbG9zZSk7CiB9
CiAKKyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0
KFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5zaG93SW5X
aW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7CkBAIC03MzksMTYg
Kzc1OSwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnQo
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0
KSk7CiAgICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOwotCiB9Cisj
ZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0cyhVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBnZW9j
bHVlIGdpdmUgYSBydW50aW1lIHdhcm5pbmcgYmVjYXVzZSBpdCB0cmllcwogICAgIC8vIHRvIHJl
Z2lzdGVyIHRoZSBlcnJvciBxdWFyayB0d2ljZS4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04OTg1OC4KICAgICAvLyBNYWtlIHdhcm5pbmdzIG5vbi1mYXRhbCBm
b3IgdGhpcyB0ZXN0IHRvIG1ha2UgaXQgcGFzcy4KICAgICB0ZXN0LT5yZW1vdmVMb2dGYXRhbEZs
YWcoR19MT0dfTEVWRUxfV0FSTklORyk7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNo
b3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGdlb2xvY2F0aW9uUmVxdWVzdEhUTUwgPQogICAgICAgICAiPGh0bWw+IgogICAgICAg
ICAiICA8c2NyaXB0PiIKQEAgLTc4NCw2ICs4MDcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0
cAogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHQsICE9LCAiMSIpOwogICAgIHRlc3QtPmFkZExv
Z0ZhdGFsRmxhZyhHX0xPR19MRVZFTF9XQVJOSU5HKTsKIH0KKyNlbmRpZiAvLyBFTkFCTEUoR0VP
TE9DQVRJT04pCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQpAQCAtNzkyLDcgKzgxNiw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAg
ICAgZ2Jvb2xlYW4gZW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0
cmVhbShzZXR0aW5ncyk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3Ry
ZWFtKHNldHRpbmdzLCBUUlVFKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93
SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKKyNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiB1c2VyTWVkaWFSZXF1ZXN0SFRNTCA9CiAgICAgICAgICI8aHRtbD4iCiAgICAgICAgICIg
IDxzY3JpcHQ+IgpAQCAtODI5LDcgKzg1NSw5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXVk
aW9Pbmx5VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKFVJQ2xpZW50VGVzdCogdGVzdCwKICAg
ICBnYm9vbGVhbiBlbmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3Ry
ZWFtKHNldHRpbmdzKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJl
YW0oc2V0dGluZ3MsIFRSVUUpOwogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIHRlc3QtPnNob3dJ
bldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHVzZXJNZWRpYVJlcXVlc3RIVE1MID0KICAgICAgICAgIjxodG1sPiIKICAgICAgICAgIiAg
PHNjcmlwdD4iCkBAIC04NTYsNiArODg0LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdWRp
b09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdHMoVUlDbGllbnRUZXN0KiB0ZXN0LAogfQog
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNpZiBQTEFURk9STShHVEspCiBjbGFz
cyBGaWxlQ2hvb3NlclRlc3Q6IHB1YmxpYyBVSUNsaWVudFRlc3QgewogcHVibGljOgogICAgIE1B
S0VfR0xJQl9URVNUX0ZJWFRVUkUoRmlsZUNob29zZXJUZXN0KTsKQEAgLTg5MSw3ICs5MjAsOSBA
QCBwcml2YXRlOgogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChG
aWxlQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RL
KQogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCgpOworI2VuZGlmCiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGZpbGVDaG9vc2VySFRNTEZvcm1hdCA9ICI8aHRtbD48Ym9k
eT48aW5wdXQgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDt0b3A6MDttYXJnaW46MDtw
YWRkaW5nOjAnIHR5cGU9J2ZpbGUnICVzLz48L2JvZHk+PC9odG1sPiI7CiAKICAgICAvLyBNdWx0
aXBsZSBzZWxlY3Rpb25zIG5vdCBhbGxvd2VkLCBubyBNSU1FIGZpbHRlcmluZy4KQEAgLTkwMyw4
ICs5MzQsMTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmls
ZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgY29uc3QgZ2NoYXIqIGNv
bnN0KiBtaW1lVHlwZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlw
ZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsKICAgICBnX2Fzc2VydCghbWltZVR5cGVzKTsKKyNpZiBQ
TEFURk9STShHVEspCiAgICAgR3RrRmlsZUZpbHRlciogZmlsdGVyID0gd2Via2l0X2ZpbGVfY2hv
b3Nlcl9yZXF1ZXN0X2dldF9taW1lX3R5cGVzX2ZpbHRlcihmaWxlQ2hvb3NlclJlcXVlc3QpOwog
ICAgIGdfYXNzZXJ0KCFmaWx0ZXIpOworI2VuZGlmCiAgICAgY29uc3QgZ2NoYXIqIGNvbnN0KiBz
ZWxlY3RlZEZpbGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3RlZF9m
aWxlcyhmaWxlQ2hvb3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0KCFzZWxlY3RlZEZpbGVzKTsK
ICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVz
dCk7CkBAIC05MTgsOCArOTUxLDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29z
ZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIG1p
bWVUeXBlcyA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlcyhmaWxl
Q2hvb3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0KCFtaW1lVHlwZXMpOworI2lmIFBMQVRGT1JN
KEdUSykKICAgICBmaWx0ZXIgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVf
dHlwZXNfZmlsdGVyKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiAgICAgZ19hc3NlcnQoIWZpbHRlcik7
CisjZW5kaWYKICAgICBzZWxlY3RlZEZpbGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9zZWxlY3RlZF9maWxlcyhmaWxlQ2hvb3NlclJlcXVlc3QpOwogICAgIGdfYXNzZXJ0KCFz
ZWxlY3RlZEZpbGVzKTsKIApAQCAtOTYwLDE3ICs5OTUsMjEgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIGdfYXNzZXJ0X2NtcHN0cihtaW1lVHlwZXNbMl0sID09LCAiaW1hZ2UvKiIpOwog
ICAgIGdfYXNzZXJ0KCFtaW1lVHlwZXNbM10pOwogCisjaWYgUExBVEZPUk0oR1RLKQogICAgIGZp
bHRlciA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlc19maWx0ZXIo
ZmlsZUNob29zZXJSZXF1ZXN0KTsKICAgICBnX2Fzc2VydChHVEtfSVNfRklMRV9GSUxURVIoZmls
dGVyKSk7CiAgICAgZ19hc3NlcnQoY2hlY2tNaW1lVHlwZUZvckZpbHRlcihmaWx0ZXIsICJhdWRp
by8qIikpOwogICAgIGdfYXNzZXJ0KGNoZWNrTWltZVR5cGVGb3JGaWx0ZXIoZmlsdGVyLCAidmlk
ZW8vKiIpKTsKICAgICBnX2Fzc2VydChjaGVja01pbWVUeXBlRm9yRmlsdGVyKGZpbHRlciwgImlt
YWdlLyoiKSk7CisjZW5kaWYKIAogICAgIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9v
c2VyX3JlcXVlc3RfZ2V0X3NlbGVjdGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiAgICAg
Z19hc3NlcnQoIXNlbGVjdGVkRmlsZXMpOwogICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVz
dF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsKIH0KKyNlbmRpZiAvLyBQTEFURk9STShHVEsp
CiAKKyNpZiBQTEFURk9STShHVEspCiBjbGFzcyBDb2xvckNob29zZXJUZXN0OiBwdWJsaWMgV2Vi
Vmlld1Rlc3QgewogcHVibGljOgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoQ29sb3JDaG9v
c2VyVGVzdCk7CkBAIC0xMDcyLDIzICsxMTExLDM3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
Q29sb3JDaG9vc2VyUmVxdWVzdChDb2xvckNob29zZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
CiAKICAgICB0ZXN0LT5jYW5jZWxSZXF1ZXN0KCk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RL
KQogCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdl
YlZpZXciLCAiY3JlYXRlLXJlYWR5LWNsb3NlIiwgdGVzdFdlYlZpZXdDcmVhdGVSZWFkeUNsb3Nl
KTsKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vdXNlIGNsaWNrcyBpbiBXUEUuCisjaWYgUExB
VEZPUk0oR1RLKQogICAgIENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImNyZWF0ZS1uYXZpZ2F0aW9uLWRhdGEiLCB0ZXN0V2ViVmlld0NyZWF0ZU5hdmlnYXRp
b25EYXRhKTsKKyNlbmRpZgogICAgIE1vZGFsRGlhbG9nc1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmll
dyIsICJhbGxvdy1tb2RhbC1kaWFsb2dzIiwgdGVzdFdlYlZpZXdBbGxvd01vZGFsRGlhbG9ncyk7
CiAgICAgTW9kYWxEaWFsb2dzVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImRpc2FsbG93LW1v
ZGFsLWRpYWxvZ3MiLCB0ZXN0V2ViVmlld0Rpc2FsbG93TW9kYWxEaWFsb2dzKTsKICAgICBVSUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJqYXZhc2NyaXB0LWRpYWxvZ3MiLCB0ZXN0
V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKTsKICAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0
V2ViVmlldyIsICJ3aW5kb3ctcHJvcGVydGllcyIsIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGll
cyk7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBtb3ZlIGluIFdQRS4KKyNpZiBQTEFU
Rk9STShHVEspCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibW91c2Ut
dGFyZ2V0IiwgdGVzdFdlYlZpZXdNb3VzZVRhcmdldCk7CisjZW5kaWYKKyNpZiBFTkFCTEUoR0VP
TE9DQVRJT04pCiAgICAgVUlDbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiZ2VvbG9j
YXRpb24tcGVybWlzc2lvbi1yZXF1ZXN0cyIsIHRlc3RXZWJWaWV3R2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdHMpOworI2VuZGlmCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBVSUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJ1c2VybWVkaWEtcGVybWlzc2lvbi1yZXF1
ZXN0cyIsIHRlc3RXZWJWaWV3VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RzKTsKICAgICBVSUNs
aWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdWRpby11c2VybWVkaWEtcGVybWlzc2lv
bi1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdBdWRpb09ubHlVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dHMpOwogI2VuZGlmCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBtb3VzZSBjbGljayBpbiBXUEUu
CisjaWYgUExBVEZPUk0oR1RLKQogICAgIEZpbGVDaG9vc2VyVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImZpbGUtY2hvb3Nlci1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVl
c3QpOworI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKQogICAgIENvbG9yQ2hvb3NlclRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJjb2xvci1jaG9vc2VyLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0Nv
bG9yQ2hvb3NlclJlcXVlc3QpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNp
b25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0
ZW5zaW9ucy5jcHAKaW5kZXggZmE0YWIyZDZjYjEuLjIxNjg4NDJmM2JlIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5z
aW9ucy5jcHAKQEAgLTE4NCw2ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9u
SXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX3Np
Z25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCBzY3JpcHREaWFsb2dJRCk7
CiB9CiAKKyNpZiBQTEFURk9STShHVEspCiBzdGF0aWMgZ2Jvb2xlYW4gcGVybWlzc2lvblJlcXVl
c3RDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QqIHJlcXVl
c3QsIFdlYlZpZXdUZXN0KiB0ZXN0KQogewogICAgIGlmICghV0VCS0lUX0lTX0lOU1RBTExfTUlT
U0lOR19NRURJQV9QTFVHSU5TX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkKQEAgLTI3NCw2
ICsyNzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybUNvbnRyb2xzQXNzb2Np
YXRlZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogCiAgICAgZ19kYnVzX2Nvbm5lY3Rp
b25fc2lnbmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sIGlkKTsKIH0KKyNlbmRpZiAvLyBQTEFU
Rk9STShHVEspCiAKIHZvaWQgYmVmb3JlQWxsKCkKIHsKQEAgLTI4MSwxMyArMjgzLDE4IEBAIHZv
aWQgYmVmb3JlQWxsKCkKICAgICBpZiAoIWJ1cy0+cnVuKCkpCiAgICAgICAgIHJldHVybjsKIAor
ICAgIC8vIEZJWE1FOiBVc2UgSlNDIEFQSSBpbiB0aGUgZXh0ZW5zaW9uIHRvIGdldCB0aGUgdGl0
bGUgZnJvbSBKYXZhU2NyaXB0LgorI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9tLWRvY3VtZW50LXRpdGxlIiwgdGVzdFdlYkV4
dGVuc2lvbkdldFRpdGxlKTsKKyNlbmRpZgogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdl
YkV4dGVuc2lvbiIsICJkb2N1bWVudC1sb2FkZWQtc2lnbmFsIiwgdGVzdERvY3VtZW50TG9hZGVk
U2lnbmFsKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgIndlYi1wcm9j
ZXNzLWNyYXNoZWQiLCB0ZXN0V2ViS2l0V2ViVmlld1Byb2Nlc3NDcmFzaGVkKTsKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAid2luZG93LW9iamVjdC1jbGVhcmVk
IiwgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOwogICAgIFdlYlZpZXdUZXN0
OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJpc29sYXRlZC13b3JsZCIsIHRlc3RXZWJFeHRl
bnNpb25Jc29sYXRlZFdvcmxkKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJpbnN0YWxsLW1pc3NpbmctcGx1Z2lucy1wZXJtaXNzaW9u
LXJlcXVlc3QiLCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QpOwog
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJmb3JtLWNvbnRyb2xz
LWFzc29jaWF0ZWQtc2lnbmFsIiwgdGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0
ZWQpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29u
RGF0YWJhc2UuY3BwCmluZGV4IDVhM2IwNTdmZDJiLi4wMDAwNzFkYTRmOSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0
YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lk
IGVwaGVtZXJhbFZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRM
b2FkRXZlbnQgbG9hCiAKIHN0YXRpYyB2b2lkIHRlc3RQcml2YXRlQnJvd3NpbmcoRmF2aWNvbkRh
dGFiYXNlVGVzdCogdGVzdCkKIHsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcg
PSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAorICAg
IGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQo
KSwKICAgICAgICAgImlzLWVwaGVtZXJhbCIsIFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
RmluZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNzI4OWZkMzdmOTcuLjQxYmZjNzE0
OGNhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdEZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdEZpbmRDb250cm9sbGVyLmNwcApAQCAtMjAsOCArMjAsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5nVGVzdC5oIgot
I2luY2x1ZGUgPGd0ay9ndGsuaD4KLSNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAKIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXN0U3RyaW5n
ID0gIjxodG1sPjxib2R5PmZpcnN0IHRlc3Rpbmcgc2Vjb25kIHRlc3Rpbmcgc2Vjb25kSGFsZjwv
Ym9keT48L2h0bWw+IjsKQEAgLTI2NCw3ICsyNjIsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENv
bnRyb2xsZXJIaWRlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICB0ZXN0LT5sb2FkSHRtbCh0ZXN0U3RyaW5nLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoKTsKKyNlbmRpZgogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBvcmln
aW5hbFN1cmZhY2UgPSBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZSgKICAgICAgICAgdGVzdC0+Z2V0
U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9D
VU1FTlQsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4u
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1
cml0eU9yaWdpbi5jcHAKaW5kZXggMWNjOWU3NzA5ZWYuLjFiYWZkN2UyZGI1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNlY3VyaXR5
T3JpZ2luLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdFNlY3VyaXR5T3JpZ2luLmNwcApAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogCiAjaW5jbHVkZSAiVGVzdE1haW4uaCIKLSNpbmNsdWRlIDx3ZWJraXQyL3dlYmtp
dDIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKIHN0YXRpYyB2b2lkIHRl
c3RTZWN1cml0eU9yaWdpbkJhc2ljQ29uc3RydWN0b3IoVGVzdCosIGdjb25zdHBvaW50ZXIpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFNldHRpbmdzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0U2V0dGluZ3MuY3BwCmluZGV4IGY4ZjE5NjlhMjBkLi5mNDBhMDkxZTFhZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0
aW5ncy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTI4Myw2ICsyODMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
S2l0U2V0dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91cmxzKHNldHRpbmdzLCBUUlVFKTsK
ICAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3Nf
ZnJvbV9maWxlX3VybHMoc2V0dGluZ3MpKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICAvLyBP
bmRlbWFuZCBpcyB0aGUgZGVmYXVsdCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gcG9saWN5LgogICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRp
b25fcG9saWN5KHNldHRpbmdzKSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9M
SUNZX09OX0RFTUFORCk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9oYXJkd2FyZV9hY2NlbGVy
YXRpb25fcG9saWN5KHNldHRpbmdzLCBXRUJLSVRfSEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BPTElD
WV9ORVZFUik7CkBAIC0yOTEsNiArMjkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRp
bmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3Nl
dHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzKSwgPT0sIFdF
QktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX0FMV0FZUyk7CiAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNldHRpbmdzLCBXRUJLSVRf
SEFSRFdBUkVfQUNDRUxFUkFUSU9OX1BPTElDWV9PTl9ERU1BTkQpOwogICAgIGdfYXNzZXJ0X2Nt
cHVpbnQod2Via2l0X3NldHRpbmdzX2dldF9oYXJkd2FyZV9hY2NlbGVyYXRpb25fcG9saWN5KHNl
dHRpbmdzKSwgPT0sIFdFQktJVF9IQVJEV0FSRV9BQ0NFTEVSQVRJT05fUE9MSUNZX09OX0RFTUFO
RCk7CisjZW5kaWYKIAogICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHNldHRpbmdzKSk7CiB9
CkBAIC0zMTUsNiArMzE3LDcgQEAgc3RhdGljIENTdHJpbmcgY29udmVydFdlYlZpZXdNYWluUmVz
b3VyY2VEYXRhVG9DU3RyaW5nKFdlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHJldHVybiBDU3RyaW5n
KG1haW5SZXNvdXJjZURhdGEsIG1haW5SZXNvdXJjZURhdGFTaXplKTsKIH0KIAorI2lmIFBMQVRG
T1JNKEdUSykKIHN0YXRpYyB2b2lkIGFzc2VydFRoYXRVc2VyQWdlbnRJc1NlbnRJbkhlYWRlcnMo
V2ViVmlld1Rlc3QqIHRlc3QsIGNvbnN0IENTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICB0ZXN0
LT5sb2FkVVJJKGdTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwpAQCAtMzU5LDYg
KzM2Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5nc1VzZXJBZ2VudChXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFwcGxpY2F0
aW9uVXNlckFnZW50KGdfc3RyZHVwX3ByaW50ZigiJXMgJXMiLCBkZWZhdWx0VXNlckFnZW50LmRh
dGEoKSwgIldlYkNhdEdUSysvMy40LjUiKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFwcGxpY2F0
aW9uVXNlckFnZW50LmdldCgpLCA9PSwgd2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNl
dHRpbmdzLmdldCgpKSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBzdGF0aWMgdm9p
ZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdl
LCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9p
bnRlcikKIHsKQEAgLTM4Myw3ICszODcsOSBAQCB2b2lkIGJlZm9yZUFsbCgpCiAKICAgICBUZXN0
OjphZGQoIldlYktpdFNldHRpbmdzIiwgIndlYmtpdC1zZXR0aW5ncyIsIHRlc3RXZWJLaXRTZXR0
aW5ncyk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRTZXR0aW5ncyIsICJuZXctd2l0aC1zZXR0aW5n
cyIsIHRlc3RXZWJLaXRTZXR0aW5nc05ld1dpdGhTZXR0aW5ncyk7CisjaWYgUExBVEZPUk0oR1RL
KQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFNldHRpbmdzIiwgInVzZXItYWdlbnQiLCB0
ZXN0V2ViS2l0U2V0dGluZ3NVc2VyQWdlbnQpOworI2VuZGlmCiB9CiAKIHZvaWQgYWZ0ZXJBbGwo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDEzNGFkMzgz
NzFhLi5kMmJiNjkxNmRjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2Vy
LmNwcApAQCAtMjIsOCArMjIsNiBAQAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNp
bmNsdWRlICJXZWJWaWV3VGVzdC5oIgogI2luY2x1ZGUgPGNzdGRhcmc+Ci0jaW5jbHVkZSA8Z3Rr
L2d0ay5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9nbGli
L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTQyLDEw
ICs0MCwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFn
ZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBHUmVmUHRyPFdlYktpdFVzZXJD
b250ZW50TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9IGFkb3B0R1JlZih3ZWJraXRfdXNl
cl9jb250ZW50X21hbmFnZXJfbmV3KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOwot
ICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldzEgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ld193aXRoX3VzZXJfY29udGVudF9tYW5hZ2VyKHVzZXJDb250ZW50TWFu
YWdlcjEuZ2V0KCkpKTsKKyAgICBhdXRvIHdlYlZpZXcxID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtp
dF93ZWJfdmlld19uZXdfd2l0aF91c2VyX2NvbnRlbnRfbWFuYWdlcih1c2VyQ29udGVudE1hbmFn
ZXIxLmdldCgpKSk7CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF91c2VyX2NvbnRl
bnRfbWFuYWdlcih3ZWJWaWV3MS5nZXQoKSkgPT0gdXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSk7
CiAKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcyID0gV0VCS0lUX1dFQl9WSUVX
KHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0
Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmll
d19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0KCkpICE9IHVzZXJDb250ZW50
TWFuYWdlcjEuZ2V0KCkpOwogfQogCkBAIC0zMjIsNiArMzIwLDcgQEAgc3RhdGljIHZvaWQgdGVz
dFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2Fn
ZVRlc3QqIHQKICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigiYW5vdGhlckhhbmRsZXIiKTsK
IH0KIAorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFn
ZXJTY3JpcHRNZXNzYWdlRnJvbURPTUJpbmRpbmdzKFVzZXJTY3JpcHRNZXNzYWdlVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBnX2Fzc2VydCh0ZXN0LT5yZWdpc3RlckhhbmRsZXIo
ImRvbSIpKTsKQEAgLTMzNCw2ICszMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRN
YW5hZ2VyU2NyaXB0TWVzc2FnZUZyb21ET01CaW5kaW5ncyhVc2VyU2NyaXB0TWVzc2FnZQogCiAg
ICAgdGVzdC0+dW5yZWdpc3RlckhhbmRsZXIoImRvbSIpOwogfQorI2VuZGlmCiAKIHN0YXRpYyB2
b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3Nh
Z2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50Q29udGV4dCosIGdw
b2ludGVyKQogewpAQCAtMzUxLDcgKzM1MSw5IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc3R5bGUt
c2hlZXQiLCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KTsKICAgICBX
ZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAiaW5qZWN0ZWQtc2Ny
aXB0IiwgdGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU2NyaXB0KTsKICAgICBVc2VyU2Ny
aXB0TWVzc2FnZVRlc3Q6OmFkZCgiV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyIiwgInNjcmlwdC1t
ZXNzYWdlLXJlY2VpdmVkIiwgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNl
aXZlZCk7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIFVzZXJTY3JpcHRNZXNzYWdlVGVzdDo6YWRk
KCJXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIiLCAic2NyaXB0LW1lc3NhZ2UtZnJvbS1kb20tYmlu
ZGluZ3MiLCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUZyb21ET01CaW5kaW5n
cyk7CisjZW5kaWYKIH0KIAogdm9pZCBhZnRlckFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNw
cAppbmRleCBlN2IwM2ZlMGRlMS4uZWNmMzUxNDgwNzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0
LmNwcApAQCAtMjEsMTAgKzIxLDggQEAKIAogI2luY2x1ZGUgIkxvYWRUcmFja2luZ1Rlc3QuaCIK
ICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2lu
Y2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHdlYmtpdDIv
d2Via2l0Mi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIv
R1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KQEAgLTUzLDExICs1
MSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dEVwaGVtZXJhbChUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdF
UihtYW5hZ2VyKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9p
c19lcGhlbWVyYWwobWFuYWdlcikpOwogCi0gICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJW
aWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CisgICAgYXV0byB3
ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CiAgICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOwogICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmll
dy5nZXQoKSkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSkpOwogCi0gICAgd2ViVmlldyA9IFdFQktJ
VF9XRUJfVklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh0ZXN0LT5tX3dlYkNv
bnRleHQuZ2V0KCkpKTsKKyAgICB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJf
dmlld19uZXdfd2l0aF9jb250ZXh0KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOwogICAgIGdf
YXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKICAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZp
ZXcuZ2V0KCkpID09IG1hbmFnZXIpOwogCkBAIC02OCw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJDb250ZXh0RXBoZW1lcmFsKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19h
c3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7
CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3
ZWJWaWV3LmdldCgpKSAhPSBtYW5hZ2VyKTsKIAotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJ
RVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRleHQoY29udGV4dC5nZXQoKSkpOworICAg
IHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRl
eHQoY29udGV4dC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19lcGhl
bWVyYWwod2ViVmlldy5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgPT0gbWFuYWdlcik7CiAKQEAgLTc4
LDYgKzc2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRFcGhlbWVyYWwoVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBo
ZW1lcmFsKGNvbnRleHQuZ2V0KCkpKTsKIH0KIAorI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5f
QVBJKQogY2xhc3MgUGx1Z2luc1Rlc3Q6IHB1YmxpYyBUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtF
X0dMSUJfVEVTVF9GSVhUVVJFKFBsdWdpbnNUZXN0KTsKQEAgLTE1Myw2ICsxNTIsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViQ29udGV4dEdldFBsdWdpbnMoUGx1Z2luc1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19hc3NlcnQoZXh0ZW5zaW9ucyk7CiAgICAgZ19hc3NlcnRfY21wc3Ry
KGV4dGVuc2lvbnNbMF0sID09LCAidGVzdG5ldHNjYXBlIik7CiB9CisjZW5kaWYgLy8gRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiBrQmFySFRNTCA9ICI8
aHRtbD48Ym9keT5CYXI8L2JvZHk+PC9odG1sPiI7CiBzdGF0aWMgY29uc3QgY2hhcioga0VjaG9I
VE1MRm9ybWF0ID0gIjxodG1sPjxib2R5PiVzPC9ib2R5PjwvaHRtbD4iOwpAQCAtMzcwLDYgKzM3
MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfZXJyb3IodGVzdC0+bV9lcnJvci5n
ZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DTE9TRUQpOwogfQogCisjaWYgUExBVEZPUk0o
R1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiB3ZWJDb250ZXh0ID0gdGVz
dC0+bV93ZWJDb250ZXh0LmdldCgpOwpAQCAtNDIyLDYgKzQyMyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJDb250ZXh0U3BlbGxDaGVja2VyKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
d2Via2l0X3dlYl9jb250ZXh0X3NldF9zcGVsbF9jaGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQs
IFRSVUUpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tp
bmdfZW5hYmxlZCh3ZWJDb250ZXh0KSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBz
dGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIHsKQEAgLTU3OCw2ICs1ODAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29u
dGV4dFNlY3VyaXR5UG9saWN5KFNlY3VyaXR5UG9saWN5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cgogICAgICAgICB8IFNlY3VyaXR5UG9saWN5VGVzdDo6Q09SU0VuYWJsZWQgfCBTZWN1cml0eVBv
bGljeVRlc3Q6OkVtcHR5RG9jdW1lbnQpOwogfQogCisjaWYgUExBVEZPUk0oR1RLKQogc3RhdGlj
IHZvaWQgY29uc29sZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFVzZXJDb250ZW50TWFu
YWdlciosIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIG1lc3NhZ2UsIFdlYktpdEphdmFzY3JpcHRS
ZXN1bHQqKiByZXN1bHQpCiB7CiAgICAgZ19hc3NlcnQocmVzdWx0KTsKQEAgLTY0Niw2ICs2NDks
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUihXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYWxsb3df
ZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0
ZXN0LT5tX3dlYlZpZXcpLCBGQUxTRSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBj
bGFzcyBQcm94eVRlc3QgOiBwdWJsaWMgV2ViVmlld1Rlc3QgewogcHVibGljOgpAQCAtNzA1LDcg
KzcwOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQcm94eVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X25ldHdvcmtfcHJveHlfc2V0dGlu
Z3NfZnJlZShzZXR0aW5ncyk7CiAKICAgICAvLyBQcm94eSBzZXR0aW5ncyBhbHNvIGFmZmVjdCBl
cGhlbWVyYWwgd2ViIHZpZXdzLgotICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gd2ViVmlldyA9
IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCisgICAg
YXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9X
RUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0IiwgdGVzdC0+bV93ZWJDb250ZXh0LmdldCgp
LAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAgICAgbnVsbHB0cikpOwpAQCAt
NzcwLDEyICs3NzQsMjAgQEAgdm9pZCBiZWZvcmVBbGwoKQogCiAgICAgVGVzdDo6YWRkKCJXZWJL
aXRXZWJDb250ZXh0IiwgImRlZmF1bHQtY29udGV4dCIsIHRlc3RXZWJDb250ZXh0RGVmYXVsdCk7
CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImVwaGVtZXJhbCIsIHRlc3RXZWJD
b250ZXh0RXBoZW1lcmFsKTsKKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBQ
bHVnaW5zVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImdldC1wbHVnaW5zIiwgdGVzdFdl
YkNvbnRleHRHZXRQbHVnaW5zKTsKKyNlbmRpZgogICAgIFVSSVNjaGVtZVRlc3Q6OmFkZCgiV2Vi
S2l0V2ViQ29udGV4dCIsICJ1cmktc2NoZW1lIiwgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOwor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc3BlbGxjaGVja2VyIGluIFdQRS4KKyNpZiBQTEFURk9S
TShHVEspCiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgInNwZWxsLWNoZWNrZXIi
LCB0ZXN0V2ViQ29udGV4dFNwZWxsQ2hlY2tlcik7CisjZW5kaWYKICAgICBXZWJWaWV3VGVzdDo6
YWRkKCJXZWJLaXRXZWJDb250ZXh0IiwgImxhbmd1YWdlcyIsIHRlc3RXZWJDb250ZXh0TGFuZ3Vh
Z2VzKTsKICAgICBTZWN1cml0eVBvbGljeVRlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2Vy
IiwgInNlY3VyaXR5LXBvbGljeSIsIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlQb2xpY3kpOworICAg
IC8vIEZJWE1FOiBmaXggc2NyaXB0IG1lc3NhZ2VzIGluIFdQRS4KKyNpZiBQTEFURk9STShHVEsp
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0U2VjdXJpdHlNYW5hZ2VyIiwgImZpbGUteGhy
IiwgdGVzdFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOworI2VuZGlmCiAgICAgUHJveHlUZXN0
OjphZGQoIldlYktpdFdlYkNvbnRleHQiLCAicHJveHkiLCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0
dGluZ3MpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4OTNiZmExYTVhNi4uMjhhNmI2
YThkNGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNTEsMTUgKzUxLDE1IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3V2ViQ29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0
LT5tX3dlYkNvbnRleHQuZ2V0KCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBhIHdlYiB2aWV3IGNy
ZWF0ZWQgd2l0aCBnX29iamVjdF9uZXcgaGFzIHRoZSBkZWZhdWx0IGNvbnRleHQuCi0gICAgR1Jl
ZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X25l
dyhXRUJLSVRfVFlQRV9XRUJfVklFVywgbnVsbHB0cikpOworICAgIGF1dG8gd2ViVmlldyA9IFRl
c3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsIG51bGxwdHIp
KTsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQo
KSkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwogCiAgICAgLy8gQ2hlY2sg
dGhhdCBhIHdlYiB2aWV3IGNyZWF0ZWQgd2l0aCBhIHJlbGF0ZWQgdmlldyBoYXMgdGhlIHJlbGF0
ZWQgdmlldyBjb250ZXh0LgotICAgIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dl
Yl92aWV3X25ld193aXRoX3JlbGF0ZWRfdmlldyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICB3ZWJW
aWV3ID0gVGVzdDo6YWRvcHRWaWV3KHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9yZWxhdGVkX3Zp
ZXcodGVzdC0+bV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0KHdlYlZpZXcuZ2V0KCkpID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IGEgd2ViIGNvbnRleHQgZ2l2ZW4gYXMgY29uc3RydWN0IHBhcmFtZXRl
ciBpcyBpZ25vcmVkIGlmIGEgcmVsYXRlZCB2aWV3IGlzIGFsc28gcHJvdmlkZWQuCi0gICAgd2Vi
VmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcs
CisgICAgd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
ZGVmYXVsdCgpLCAicmVsYXRlZC12aWV3IiwgdGVzdC0+bV93ZWJWaWV3LCBudWxscHRyKSk7CiAg
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpID09
IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CiB9CkBAIC02OSwxMCArNjksMTIgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdXZWJDb250ZXh0TGlmZXRpbWUoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgV2ViS2l0V2ViQ29udGV4dCogd2ViQ29udGV4dCA9IHdlYmtpdF93
ZWJfY29udGV4dF9uZXcoKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdlYkNvbnRleHQpKTsKIAotICAgIEd0a1dpZGdldCogd2ViVmll
dyA9IHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250ZXh0KHdlYkNvbnRleHQpOworICAgIGF1
dG8qIHdlYlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJDb250ZXh0
KTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHdlYlZpZXcpKTsKIAorI2lmIFBMQVRGT1JNKEdUSykKICAgICBnX29iamVjdF9yZWZfc2lu
ayh3ZWJWaWV3KTsKKyNlbmRpZgogICAgIGdfb2JqZWN0X3VucmVmKHdlYkNvbnRleHQpOwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCB0aGUgd2ViIHZpZXcgc3RpbGwgaGFzIGEgdmFsaWQgY29udGV4dC4K
QEAgLTgzLDEwICs4NSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkNvbnRleHRMaWZl
dGltZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJLaXRXZWJDb250
ZXh0KiB3ZWJDb250ZXh0MiA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXcoKTsKICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYkNvbnRleHQy
KSk7CiAKLSAgICBHdGtXaWRnZXQqIHdlYlZpZXcyID0gd2Via2l0X3dlYl92aWV3X25ld193aXRo
X2NvbnRleHQod2ViQ29udGV4dDIpOworICAgIGF1dG8qIHdlYlZpZXcyID0gd2Via2l0X3dlYl92
aWV3X25ld193aXRoX2NvbnRleHQod2ViQ29udGV4dDIpOwogICAgIHRlc3QtPmFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViVmlldzIpKTsKIAorI2lmIFBM
QVRGT1JNKEdUSykKICAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3Mik7CisjZW5kaWYKICAg
ICBnX29iamVjdF91bnJlZih3ZWJWaWV3Mik7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSBjb250
ZXh0IGlzIHN0aWxsIHZhbGlkLgpAQCAtMTE2LDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3RXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
bWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKIAogICAgIC8vIEEgV2ViVmlldyBvbiBh
IG5vbiBlcGhlbWVyYWwgY29udGV4dCBjYW4gYmUgZXBoZW1lcmFsLgotICAgIEdSZWZQdHI8V2Vi
S2l0V2ViVmlldz4gd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lU
X1RZUEVfV0VCX1ZJRVcsCisgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2Jq
ZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICAgICAgICAgIndlYi1jb250ZXh0Iiwgd2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCiAgICAgICAgICJpcy1l
cGhlbWVyYWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7CkBAIC0xNzMsNyArMTc3LDcgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICBnX2Fzc2VydChzZXR0aW5ncyAhPSBkZWZhdWx0U2V0dGluZ3MpOwogICAg
IGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdz
KSk7CiAKLSAgICBHUmVmUHRyPEd0a1dpZGdldD4gd2ViVmlldzIgPSB3ZWJraXRfd2ViX3ZpZXdf
bmV3KCk7CisgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0Vmlldyh3ZWJraXRfd2ViX3Zp
ZXdfbmV3KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1Qod2ViVmlldzIuZ2V0KCkpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3Nl
dHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSksIHNldHRpbmdzKTsKICAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJW
aWV3Mi5nZXQoKSkpID09IHNldHRpbmdzKTsKQEAgLTE4NSw3ICsxODksNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIGdfYXNzZXJ0KHNldHRpbmdzID09IG5ld1NldHRpbmdzMi5nZXQoKSk7CiAgICAgZ19hc3Nl
cnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOwogCi0g
ICAgR1JlZlB0cjxHdGtXaWRnZXQ+IHdlYlZpZXczID0gd2Via2l0X3dlYl92aWV3X25ld193aXRo
X3NldHRpbmdzKG5ld1NldHRpbmdzMi5nZXQoKSk7CisgICAgYXV0byB3ZWJWaWV3MyA9IFRlc3Q6
OmFkb3B0Vmlldyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfc2V0dGluZ3MobmV3U2V0dGluZ3My
LmdldCgpKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVCh3ZWJWaWV3My5nZXQoKSkpOwogICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXczLmdldCgpKSkgPT0gbmV3U2V0
dGluZ3MyLmdldCgpKTsKIH0KQEAgLTMxNyw3ICszMjEsMTAgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGdib29sZWFuIGxlYXZlRnVsbFNjcmVlbklkbGUoRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRl
c3QpCiAgICAgeworICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGtleSBzdHJva2VzIGluIFdQ
RQorI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgdGVzdC0+a2V5U3Ryb2tlKEdES19LRVlfRXNj
YXBlKTsKKyNlbmRpZgogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCkBAIC0zMzEsNiAr
MzM4LDcgQEAgcHVibGljOgogICAgIEZ1bGxTY3JlZW5FdmVudCBtX2V2ZW50OwogfTsKIAorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RnVsbFNjcmVl
bihGdWxsU2NyZWVuQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0
LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoKTsKQEAgLTM0MSw2ICszNDksNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4oRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bGVhdmVGdWxsU2NyZWVuQW5kV2FpdFVudGls
TGVmdEZ1bGxTY3JlZW4oKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0s
IEZ1bGxTY3JlZW5DbGllbnRUZXN0OjpMZWF2ZSk7CiB9CisjZW5kaWYKIAogc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdDYW5TaG93TUlNRVR5cGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CkBAIC0zNTQsMTMgKzM2MywxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NhblNo
b3dNSU1FVHlwZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2Vy
dCghd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJh
cHBsaWNhdGlvbi96aXAiKSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hv
d19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikp
OwogCisjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLy8gUGx1Z2lucyBhcmUg
b25seSBzdXBwb3J0ZWQgd2hlbiBlbmFibGVkLgogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRf
YWRkaXRpb25hbF9wbHVnaW5zX2RpcmVjdG9yeSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQo
dGVzdC0+bV93ZWJWaWV3KSwgV0VCS0lUX1RFU1RfUExVR0lOX0RJUik7CiAgICAgZ19hc3NlcnQo
d2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBs
aWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIikpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX3BsdWdpbnMod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dl
YlZpZXcpLCBGQUxTRSk7CiAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19t
aW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRz
Y2FwZSIpKTsKKyNlbmRpZgogfQogCisjaWYgUExBVEZPUk0oR1RLKQogY2xhc3MgRm9ybUNsaWVu
dFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElCX1RFU1Rf
RklYVFVSRShGb3JtQ2xpZW50VGVzdCk7CkBAIC00NDEsNiArNDUzLDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdTdWJtaXRGb3JtKEZvcm1DbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4oZ19oYXNoX3RhYmxlX2xv
b2t1cCh2YWx1ZXMsICJ0ZXh0MiIpKSwgPT0sICJ2YWx1ZTIiKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIoc3RhdGljX2Nhc3Q8Y2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAodmFsdWVzLCAicGFzc3dv
cmQiKSksID09LCAic2VjcmV0Iik7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCiBjbGFz
cyBTYXZlV2ViVmlld1Rlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CiBwdWJsaWM6CkBAIC01Mzgs
NiArNTUxLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTYXZlKFNhdmVXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19maWxlX2luZm9fZ2V0
X3NpemUoZmlsZUluZm8uZ2V0KCkpLCA9PSwgdG90YWxCeXRlc0Zyb21TdHJlYW0pOwogfQogCisj
aWYgUExBVEZPUk0oR1RLKQogLy8gVG8gdGVzdCBwYWdlIHZpc2liaWxpdHkgQVBJLiBDdXJyZW50
bHkgb25seSAndmlzaWJsZScsICdoaWRkZW4nIGFuZCAncHJlcmVuZGVyJyBzdGF0ZXMgYXJlIGlt
cGxlbWVudGVkIGZ1bGx5IGluIFdlYkNvcmUuCiAvLyBTZWUgYWxzbyBodHRwOi8vd3d3LnczLm9y
Zy9UUi8yMDExL1dELXBhZ2UtdmlzaWJpbGl0eS0yMDExMDYwMi8gYW5kIGh0dHBzOi8vZGV2ZWxv
cGVycy5nb29nbGUuY29tL2Nocm9tZS93aGl0ZXBhcGVycy9wYWdldmlzaWJpbGl0eQogc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKQEAgLTU4NCw3ICs1OTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1BhZ2VW
aXNpYmlsaXR5KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
KCFXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0
KSk7CiAKICAgICAvLyBIaWRlIHRoZSBwYWdlLiBUaGUgdmlzaWJpbGl0eSBzaG91bGQgYmUgdXBk
YXRlZCB0byAnaGlkZGVuJy4KLSAgICBndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdFVCh0ZXN0LT5t
X3dlYlZpZXcpKTsKKyAgICB0ZXN0LT5oaWRlVmlldygpOwogICAgIHRlc3QtPndhaXRVbnRpbFRp
dGxlQ2hhbmdlZCgpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOyIsICZlcnJv
ci5vdXRQdHIoKSk7CkBAIC02NzYsNyArNjkwLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdT
bmFwc2hvdChTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8v
IFRlc3QgdGhhdCBjYW5jZWxsYXRpb24gd29ya3MuCiAgICAgZ19hc3NlcnQodGVzdC0+Z2V0U25h
cHNob3RBbmRDYW5jZWwoKSk7CiB9CisjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCiBjbGFzcyBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDogcHVibGlj
IFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFX1dJVEhf
U0VUVVBfVEVBUkRPV04oTm90aWZpY2F0aW9uV2ViVmlld1Rlc3QsIHNldHVwLCB0ZWFyZG93bik7
CkBAIC05MjMsMTIgKzkzOSwxNSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlmaWNhdGlv
bkluaXRpYWxQZXJtaXNzaW9uRGlzYWxsb3dlZChOb3RpZmljYXRpb25XZWJWaQogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGdfYXNzZXJ0KCF0ZXN0LT5oYXNQZXJtaXNz
aW9uKCkpOwogfQorI2VuZGlmIC8vIEVOQUJMRShOT1RJRklDQVRJT05TKQogCiBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1ZGlvV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiB7CisjaWYgUExBVEZPUk0oR1RLKQogICAgIC8vIFRoZSB3ZWIg
dmlldyBtdXN0IGJlIHJlYWxpemVkIGZvciB0aGUgdmlkZW8gdG8gc3RhcnQgcGxheWJhY2sgYW5k
CiAgICAgLy8gdHJpZ2dlciBjaGFuZ2VzIGluIFdlYktpdFdlYlZpZXc6OmlzLXBsYXlpbmctYXVk
aW8uCiAgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1df
VE9QTEVWRUwpOworI2VuZGlmCiAKICAgICAvLyBJbml0aWFsbHksIHdlYiB2aWV3cyBzaG91bGQg
YWx3YXlzIHJlcG9ydCBubyBhdWRpbyBiZWluZyBwbGF5ZWQuCiAgICAgZ19hc3NlcnQoIXdlYmtp
dF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwpAQCAtOTUxLDYg
Kzk3MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8oSXNQbGF5aW5n
QXVkaW9XZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCisjaWYgUExB
VEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdCYWNrZ3JvdW5kQ29sb3IoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gV2hpdGUgaXMgdGhlIGRlZmF1
bHQgYmFja2dyb3VuZC4KQEAgLTk4OCw2ICsxMDA4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdQcmVmZXJyZWRTaXplKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdf
YXNzZXJ0X2NtcGludChuYXR1cmFsU2l6ZS53aWR0aCwgPT0sIDMyNSk7CiAgICAgZ19hc3NlcnRf
Y21waW50KG5hdHVyYWxTaXplLmhlaWdodCwgPT0sIDYxNSk7CiB9CisjZW5kaWYKIAogY2xhc3Mg
V2ViVmlld1RpdGxlVGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKIHB1YmxpYzoKQEAgLTEwNjEs
MTggKzEwODIsMzAgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2ViVmlld1NldHRpbmdzKTsKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInpvb20tbGV2ZWwiLCB0ZXN0V2ViVmlld1pv
b21MZXZlbCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJydW4tamF2
YXNjcmlwdCIsIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdCk7CisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIEZ1bGxTY3JlZW5DbGllbnRUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
ZnVsbHNjcmVlbiIsIHRlc3RXZWJWaWV3RnVsbFNjcmVlbik7CisjZW5kaWYKICAgICBXZWJWaWV3
VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImNhbi1zaG93LW1pbWUtdHlwZSIsIHRlc3RXZWJW
aWV3Q2FuU2hvd01JTUVUeXBlKTsKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IG1vdXNlIGNsaWNr
cyBpbiBXUEUuCisjaWYgUExBVEZPUk0oR1RLKQogICAgIEZvcm1DbGllbnRUZXN0OjphZGQoIldl
YktpdFdlYlZpZXciLCAic3VibWl0LWZvcm0iLCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0pOworI2Vu
ZGlmCiAgICAgU2F2ZVdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2F2ZSIsIHRl
c3RXZWJWaWV3U2F2ZSk7CisgICAgLy8gRklYTUU6IFZpZXcgaXMgaW5pdGlhbGx5IHZpc2libGUg
aW4gV1BFIGFuZCBoYXMgYSBmaXhlZCBoYXJkY29kZWQgc2l6ZS4KKyNpZiBQTEFURk9STShHVEsp
CiAgICAgU25hcHNob3RXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInNuYXBzaG90
IiwgdGVzdFdlYlZpZXdTbmFwc2hvdCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2Vi
VmlldyIsICJwYWdlLXZpc2liaWxpdHkiLCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KTsKKyNl
bmRpZgorI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdU
ZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uIiwgdGVzdFdlYlZpZXdOb3Rp
ZmljYXRpb24pOwogICAgIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAibm90aWZpY2F0aW9uLWluaXRpYWwtcGVybWlzc2lvbi1hbGxvd2VkIiwgdGVzdFdlYlZp
ZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkFsbG93ZWQpOwogICAgIE5vdGlmaWNhdGlv
bldlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAibm90aWZpY2F0aW9uLWluaXRpYWwt
cGVybWlzc2lvbi1kaXNhbGxvd2VkIiwgdGVzdFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVy
bWlzc2lvbkRpc2FsbG93ZWQpOworI2VuZGlmCiAgICAgSXNQbGF5aW5nQXVkaW9XZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImlzLXBsYXlpbmctYXVkaW8iLCB0ZXN0V2ViVmlld0lz
UGxheWluZ0F1ZGlvKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJiYWNrZ3JvdW5kLWNvbG9yIiwgdGVzdFdlYlZpZXdCYWNrZ3JvdW5k
Q29sb3IpOwogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAicHJlZmVycmVk
LXNpemUiLCB0ZXN0V2ViVmlld1ByZWZlcnJlZFNpemUpOworI2VuZGlmCiAgICAgV2ViVmlld1Rp
dGxlVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInRpdGxlLWNoYW5nZSIsIHRlc3RXZWJWaWV3
VGl0bGVDaGFuZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwCmluZGV4IDQ5NTllODM4ZTdkLi44ODdk
ZmNmYWFjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJzaXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgLy8gTm9uIHBlcnNpc3RlbnQgZGF0YSBjYW4gYmUgcXVlcmllZCBpbiBhbiBlcGhl
bWVyYWwgbWFuYWdlci4KICAgICBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+IHdlYkNvbnRleHQg
PSBhZG9wdEdSZWYod2Via2l0X3dlYl9jb250ZXh0X25ld193aXRoX3dlYnNpdGVfZGF0YV9tYW5h
Z2VyKG1hbmFnZXIuZ2V0KCkpKTsKICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNf
ZXBoZW1lcmFsKHdlYkNvbnRleHQuZ2V0KCkpKTsKLSAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXc+
IHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ld193aXRoX2NvbnRl
eHQod2ViQ29udGV4dC5nZXQoKSkpOworICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0Vmll
dyh3ZWJraXRfd2ViX3ZpZXdfbmV3X3dpdGhfY29udGV4dCh3ZWJDb250ZXh0LmdldCgpKSk7CiAg
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7
CiAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3
ZWJWaWV3LmdldCgpKSA9PSBtYW5hZ2VyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4
IGYxODRjNzYzM2RhLi5kOWYyYzZhYzcyYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMjUsMTMg
KzI1LDE4IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lu
Y2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24u
aD4KICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShHVEsp
CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2VsaWYgUExBVEZP
Uk0oV1BFKQorI2luY2x1ZGUgPHdwZS93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorI2VuZGlmCisK
IHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIjxub2RlPiIKICAg
ICAiIDxpbnRlcmZhY2UgbmFtZT0nb3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCc+IgpA
QCAtMTAwLDkgKzEwNSwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0RG9jdW1lbnRMb2FkZWQoR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uKQogCiBzdGF0aWMgdm9pZCBkb2N1bWVudExvYWRlZENhbGxi
YWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9u
KQogeworI2lmIFBMQVRGT1JNKEdUSykKICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQg
PSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudCh3ZWJQYWdlKTsKICAgICBHUmVmUHRy
PFdlYktpdERPTURPTVdpbmRvdz4gd2luZG93ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9jdW1l
bnRfZ2V0X2RlZmF1bHRfdmlldyhkb2N1bWVudCkpOwogICAgIHdlYmtpdF9kb21fZG9tX3dpbmRv
d193ZWJraXRfbWVzc2FnZV9oYW5kbGVyc19wb3N0X21lc3NhZ2Uod2luZG93LmdldCgpLCAiZG9t
IiwgIkRvY3VtZW50TG9hZGVkIik7CisjZW5kaWYKIAogICAgIGdwb2ludGVyIGRhdGEgPSBnX29i
amVjdF9nZXRfZGF0YShHX09CSkVDVChleHRlbnNpb24pLCAiZGJ1cy1jb25uZWN0aW9uIik7CiAg
ICAgaWYgKGRhdGEpCkBAIC0xNzUsNiArMTgyLDggQEAgc3RhdGljIGdib29sZWFuIHNlbmRSZXF1
ZXN0Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSosIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QsIFcK
ICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IHdoYXQg
dG8gZG8gd2l0aCBXZWJLaXRXZWJIaXRUZXN0UmVzdWx0IGluIFdQRS4KKyNpZiBQTEFURk9STShH
VEspCiBzdGF0aWMgR1ZhcmlhbnQqIHNlcmlhbGl6ZUNvbnRleHRNZW51KFdlYktpdENvbnRleHRN
ZW51KiBtZW51KQogewogICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwpAQCAtMjI5LDcgKzIz
OCwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJQYWdl
KiBwYWdlLCBXZWJLaXRDb250ZXh0TWVudSogbWVudQogCiAgICAgcmV0dXJuIEZBTFNFOwogfQor
I2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIAorLy8gRklYTUU6IFVzZSBKU0MgQVBJIHRvIHNlbmQg
c2NyaXB0IG1lc3NhZ2VzIGZyb20gSmF2YVNjcmlwdC4KKyNpZiBQTEFURk9STShHVEspCiBzdGF0
aWMgdm9pZCBjb25zb2xlTWVzc2FnZVNlbnRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdl
LCBXZWJLaXRDb25zb2xlTWVzc2FnZSogY29uc29sZU1lc3NhZ2UpCiB7CiAgICAgZ19hc3NlcnQo
Y29uc29sZU1lc3NhZ2UpOwpAQCAtMjQxLDggKzI1Myw5IEBAIHN0YXRpYyB2b2lkIGNvbnNvbGVN
ZXNzYWdlU2VudENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdENvbnNvbGVN
ZXNzCiAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKHdpbmRvdy5nZXQoKSkp
OwogICAgIHdlYmtpdF9kb21fZG9tX3dpbmRvd193ZWJraXRfbWVzc2FnZV9oYW5kbGVyc19wb3N0
X21lc3NhZ2Uod2luZG93LmdldCgpLCAiY29uc29sZSIsIG1lc3NhZ2VTdHJpbmcuZ2V0KCkpOwog
fQorI2VuZGlmCiAKLQorI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIGVtaXRGb3JtQ29u
dHJvbHNBc3NvY2lhdGVkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciog
Zm9ybUlkcykKIHsKICAgICBib29sIG9rID0gZ19kYnVzX2Nvbm5lY3Rpb25fZW1pdF9zaWduYWwo
CkBAIC0yNzcsMTUgKzI5MCwxOCBAQCBzdGF0aWMgdm9pZCBmb3JtQ29udHJvbHNBc3NvY2lhdGVk
Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR1B0ckFycmF5KiBmbwogICAgIGVsc2UK
ICAgICAgICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBlbmQoRGVsYXllZFNpZ25hbChGb3JtQ29u
dHJvbHNBc3NvY2lhdGVkU2lnbmFsLCBmb3JtSWRzLmdldCgpKSk7CiB9CisjZW5kaWYKIAogc3Rh
dGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lv
biwgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgZ3BvaW50ZXIpCiB7CiAgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJQYWdlLCAiZG9jdW1lbnQtbG9hZGVkIiwgR19DQUxMQkFDSyhkb2N1bWVudExvYWRl
ZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJu
b3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0sodXJpQ2hhbmdlZENhbGxiYWNrKSwgZXh0ZW5zaW9uKTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3QiLCBHX0NBTExCQUNL
KHNlbmRSZXF1ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKKyNpZiBQTEFURk9STShHVEspCiAgICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiY29udGV4dC1tZW51IiwgR19DQUxMQkFDSyhjb250
ZXh0TWVudUNhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdl
LCAiY29uc29sZS1tZXNzYWdlLXNlbnQiLCBHX0NBTExCQUNLKGNvbnNvbGVNZXNzYWdlU2VudENh
bGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiZm9ybS1j
b250cm9scy1hc3NvY2lhdGVkIiwgR19DQUxMQkFDSyhmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2Fs
bGJhY2spLCBleHRlbnNpb24pOworI2VuZGlmCiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9D
YWxsYmFjayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKikKQEAgLTMzNSw5ICszNTEsMTQgQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2FsbENhbGxi
YWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVyLAogICAg
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShHVEsp
CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHRpdGxlKHdl
YmtpdF9kb21fZG9jdW1lbnRfZ2V0X3RpdGxlKGRvY3VtZW50KSk7CiAgICAgICAgIGdfZGJ1c19t
ZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUoaW52b2NhdGlvbiwgZ192YXJpYW50X25ldygi
KHMpIiwgdGl0bGUuZ2V0KCkpKTsKKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyAgICAgICAgLy8gRklY
TUU6IFVzZSBKU0MgQVBJIHRvIGdldCB0aGUgdGl0bGUgZnJvbSBKYXZhU2NyaXB0LgorICAgICAg
ICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVlKGludm9jYXRpb24sIGdfdmFy
aWFudF9uZXcoIihzKSIsICIiKSk7CisjZW5kaWYKICAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAo
bWV0aG9kTmFtZSwgIlJ1bkphdmFTY3JpcHRJbklzb2xhdGVkV29ybGQiKSkgewogICAgICAgICB1
aW50NjRfdCBwYWdlSUQ7CiAgICAgICAgIGNvbnN0IGNoYXIqIHNjcmlwdDsKQEAgLTQwNSw3ICs0
MjYsMTEgQEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICAgICAgICAgIGVtaXRVUklDaGFu
Z2VkKGNvbm5lY3Rpb24sIGRlbGF5ZWRTaWduYWwuc3RyLmRhdGEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBGb3JtQ29udHJvbHNBc3NvY2lhdGVkU2lnbmFsOgorI2lmIFBM
QVRGT1JNKEdUSykKICAgICAgICAgICAgIGVtaXRGb3JtQ29udHJvbHNBc3NvY2lhdGVkKGNvbm5l
Y3Rpb24sIGRlbGF5ZWRTaWduYWwuc3RyLmRhdGEoKSk7CisjZWxpZiBQTEFURk9STShXUEUpCisg
ICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworI2VuZGlmCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggM2IzZDEzZmFiZTcuLjdhNDRj
YjA1Y2Q0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
V2ViUHJvY2Vzc1Rlc3QuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvV2ViUHJvY2Vzc1Rlc3QuaApAQCAtMTgsMTIgKzE4LDE3IEBACiAgKi8KIAogI2luY2x1ZGUg
PGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdC13
ZWItZXh0ZW5zaW9uLmg+CisjZWxpZiBQTEFURk9STShXUEUpCisjaW5jbHVkZSA8d3BlL3dlYmtp
dC13ZWItZXh0ZW5zaW9uLmg+CisjZW5kaWYKKwogY2xhc3MgV2ViUHJvY2Vzc1Rlc3QgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfldlYlByb2Nlc3NUZXN0KCkgeyB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvQ01ha2VMaXN0cy50eHQKaW5kZXggYzg1ZDQ5NDU2MDUuLmQwOTExNjU5YzdjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL0NNYWtlTGlzdHMudHh0CkBAIC0xLDMgKzEsMTEgQEAKK3Nl
dChXZWJLaXRHTGliQVBJVGVzdHNfU09VUkNFUworICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAorICAgICR7VE9PTFNfRElS
fS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcAorICAgICR7
VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVy
LmNwcAorICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0
TWFpbi5jcHAKKyAgICAke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwCispCisKIHNldChXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlCiAgICAgJHtDTUFLRV9TT1VS
Q0VfRElSfS9Tb3VyY2UvV1RGCkBAIC03NCwxMyArODIsNyBAQCBhZGRfZGVmaW5pdGlvbnMoCiBp
bmNsdWRlX2RpcmVjdG9yaWVzKCR7V2ViS2l0R0xpYkFQSVRlc3RzX0lOQ0xVREVfRElSRUNUT1JJ
RVN9KQogaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0gJHtXZWJLaXRHTGliQVBJVGVzdHNfU1lT
VEVNX0lOQ0xVREVfRElSRUNUT1JJRVN9KQogCi1hZGRfbGlicmFyeShXZWJLaXRHTGliQVBJVGVz
dHNDb3JlIFNUQVRJQwotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAotICAgICR7VE9PTFNfRElSfS9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcAotICAgICR7VE9PTFNfRElSfS9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAotICAgICR7VE9P
TFNfRElSfS9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKLSAgICAk
e1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3Bw
Ci0pCithZGRfbGlicmFyeShXZWJLaXRHTGliQVBJVGVzdHNDb3JlIFNUQVRJQyAke1dlYktpdEdM
aWJBUElUZXN0c19TT1VSQ0VTfSkKIHRhcmdldF9saW5rX2xpYnJhcmllcyhXZWJLaXRHTGliQVBJ
VGVzdHNDb3JlIFdlYktpdDIpCiAKIGFkZF9jdXN0b21fY29tbWFuZCgKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAxNzYwNGNjZmU3NC4uMzE4OGJmYTRk
NDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybUdUSy5jbWFr
ZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTEs
NiArMSwxMCBAQAogc2V0KFRFU1RfTElCUkFSWV9ESVIgJHtDTUFLRV9MSUJSQVJZX09VVFBVVF9E
SVJFQ1RPUll9L1dlYktpdDJHdGtBUElUZXN0cykKIHNldChURVNUX0JJTkFSWV9ESVIgJHtDTUFL
RV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L1Rlc3RXZWJLaXRBUEkvV2ViS2l0Mkd0aykKIAor
bGlzdChBUFBFTkQgV2ViS2l0R0xpYkFQSVRlc3RzX1NPVVJDRVMKKyAgICAke1RPT0xTX0RJUn0v
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcAorKQor
CiBsaXN0KEFQUEVORCBXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICR7REVSSVZFRF9TT1VSQ0VTX1dFQktJVDJHVEtfRElSfQogICAgICR7Rk9SV0FSRElOR19IRUFE
RVJTX1dFQktJVDJHVEtfRElSfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1BsYXRmb3JtV1BF
LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ZjBkYjVhMDdi
NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9QbGF0Zm9ybVdQ
RS5jbWFrZQpAQCAtMCwwICsxLDIwIEBACitzZXQoVEVTVF9MSUJSQVJZX0RJUiAke0NNQUtFX0xJ
QlJBUllfT1VUUFVUX0RJUkVDVE9SWX0vV1BFQVBJVGVzdHMpCitzZXQoVEVTVF9CSU5BUllfRElS
ICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9UZXN0V2ViS2l0QVBJL1dQRSkKKwor
bGlzdChBUFBFTkQgV2ViS2l0R0xpYkFQSVRlc3RzX1NPVVJDRVMKKyAgICAke1RPT0xTX0RJUn0v
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvd3BlL1dlYlZpZXdUZXN0V1BFLmNwcAorKQor
CitsaXN0KEFQUEVORCBXZWJLaXRHTGliQVBJVGVzdHNfSU5DTFVERV9ESVJFQ1RPUklFUworICAg
ICR7REVSSVZFRF9TT1VSQ0VTX1dQRV9BUElfRElSfQorICAgICR7Rk9SV0FSRElOR19IRUFERVJT
X1dQRV9ESVJ9CisgICAgJHtGT1JXQVJESU5HX0hFQURFUlNfV1BFX0VYVEVOU0lPTl9ESVJ9Cisp
CisKK2xpc3QoQVBQRU5EIFdlYktpdEdMaWJBUElUZXN0c19TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFUworICAgICR7V1BFX0lOQ0xVREVfRElSU30KKykKKworbGlzdChBUFBFTkQgV2ViS2l0R0xp
YkFQSVRlc3RfTElCUkFSSUVTCisgICAgJHtXUEVfTElCUkFSSUVTfQorKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNw
cAppbmRleCA0YTI2MGI4MTIxZC4uZTZhMzQ4MmQzZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC0y
MCw4ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTG9hZFRyYWNraW5n
VGVzdC5oIgogCi0jaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+Ci0KIHN0YXRpYyB2b2lkIGxv
YWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50
IGxvYWRFdmVudCwgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKIHsKICAgICBzd2l0Y2ggKGxvYWRF
dmVudCkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
VGVzdE1haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1h
aW4uY3BwCmluZGV4IDgyMGE4YjJhNTJjLi5jNzY5OWQ0NGMyNCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtMjEsMTQgKzIxLDE3
IEBACiAjaW5jbHVkZSAiVGVzdE1haW4uaCIKIAogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CisK
KyNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2VuZGlmCiAKIHVpbnQz
Ml90IFRlc3Q6OnNfd2ViRXh0ZW5zaW9uSUQgPSAwOwogCiB2b2lkIGJlZm9yZUFsbCgpOwogdm9p
ZCBhZnRlckFsbCgpOwogCi1zdGF0aWMgR1VuaXF1ZVB0cjxjaGFyPiB0ZXN0RGF0YURpcmVjdG9y
eShnX2Rpcl9tYWtlX3RtcCgiV2ViS2l0Mkd0a1Rlc3RzLVhYWFhYWCIsIG51bGxwdHIpKTsKK3N0
YXRpYyBHVW5pcXVlUHRyPGNoYXI+IHRlc3REYXRhRGlyZWN0b3J5KGdfZGlyX21ha2VfdG1wKCJX
ZWJLaXRHTGliVGVzdHMtWFhYWFhYIiwgbnVsbHB0cikpOwogCiBjb25zdCBjaGFyKiBUZXN0Ojpk
YXRhRGlyZWN0b3J5KCkKIHsKQEAgLTY0LDcgKzY3LDExIEBAIHN0YXRpYyB2b2lkIHJlbW92ZU5v
bkVtcHR5RGlyZWN0b3J5KGNvbnN0IGNoYXIqIGRpcmVjdG9yeVBhdGgpCiBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAgZ191bnNldGVudigiREJVU19TRVNTSU9OX0JVU19B
RERSRVNTIik7Ci0gICAgZ3RrX3Rlc3RfaW5pdCgmYXJnYywgJmFyZ3YsIDApOworI2lmIFBMQVRG
T1JNKEdUSykKKyAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwgbnVsbHB0cik7CisjZWxz
ZQorICAgIGdfdGVzdF9pbml0KCZhcmdjLCAmYXJndiwgbnVsbHB0cik7CisjZW5kaWYKICAgICBn
X3NldGVudigiV0VCS0lUX0VYRUNfUEFUSCIsIFdFQktJVF9FWEVDX1BBVEgsIEZBTFNFKTsKICAg
ICBnX3NldGVudigiV0VCS0lUX0lOSkVDVEVEX0JVTkRMRV9QQVRIIiwgV0VCS0lUX0lOSkVDVEVE
X0JVTkRMRV9QQVRILCBGQUxTRSk7CiAgICAgZ19zZXRlbnYoIkxDX0FMTCIsICJDIiwgVFJVRSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFp
bi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaAppbmRl
eCBmYmJlMDAyZjgzYi4uMzZlMDNmZGQzZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvVGVzdE1haW4uaApAQCAtMjEsMTIgKzIxLDIzIEBACiAKICNpbmNsdWRl
IDxjYWlyby5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+Ci0jaW5jbHVkZSA8d2Via2l0Mi93
ZWJraXQyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9H
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlIDx3ZWJraXQy
L3dlYmtpdDIuaD4KKyNlbGlmIFBMQVRGT1JNKFdQRSkKKyNpbmNsdWRlIDx3cGUvd2Via2l0Lmg+
CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykKKyNkZWZpbmUgVEVTVF9QQVRIX0ZPUk1BVCAi
L3dlYmtpdDIvJXMvJXMiCisjZWxpZiBQTEFURk9STShXUEUpCisjZGVmaW5lIFRFU1RfUEFUSF9G
T1JNQVQgIi93cGUvJXMvJXMiCisjZW5kaWYKKwogI2RlZmluZSBNQUtFX0dMSUJfVEVTVF9GSVhU
VVJFKENsYXNzTmFtZSkgXAogICAgIHN0YXRpYyB2b2lkIHNldFVwKENsYXNzTmFtZSogZml4dHVy
ZSwgZ2NvbnN0cG9pbnRlciBkYXRhKSBcCiAgICAgeyBcCkBAIC0zOCw3ICs0OSw3IEBACiAgICAg
fSBcCiAgICAgc3RhdGljIHZvaWQgYWRkKGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hh
ciogdGVzdE5hbWUsIHZvaWQgKCp0ZXN0RnVuYykoQ2xhc3NOYW1lKiwgY29uc3Qgdm9pZCopKSBc
CiAgICAgeyBcCi0gICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRlc3RQYXRoKGdfc3RyZHVwX3By
aW50ZigiL3dlYmtpdDIvJXMvJXMiLCBzdWl0ZU5hbWUsIHRlc3ROYW1lKSk7IFwKKyAgICAgICAg
R1VuaXF1ZVB0cjxnY2hhcj4gdGVzdFBhdGgoZ19zdHJkdXBfcHJpbnRmKFRFU1RfUEFUSF9GT1JN
QVQsIHN1aXRlTmFtZSwgdGVzdE5hbWUpKTsgXAogICAgICAgICBnX3Rlc3RfYWRkKHRlc3RQYXRo
LmdldCgpLCBDbGFzc05hbWUsIDAsIENsYXNzTmFtZTo6c2V0VXAsIHRlc3RGdW5jLCBDbGFzc05h
bWU6OnRlYXJEb3duKTsgXAogICAgIH0KIApAQCAtNTcsNyArNjgsNyBAQAogICAgIH0gXAogICAg
IHN0YXRpYyB2b2lkIGFkZChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0IGNoYXIqIHRlc3RO
YW1lLCB2b2lkICgqdGVzdEZ1bmMpKENsYXNzTmFtZSosIGNvbnN0IHZvaWQqKSkgXAogICAgIHsg
XAotICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiB0ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIi93
ZWJraXQyLyVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFtZSkpOyBcCisgICAgICAgIEdVbmlxdWVQ
dHI8Z2NoYXI+IHRlc3RQYXRoKGdfc3RyZHVwX3ByaW50ZihURVNUX1BBVEhfRk9STUFULCBzdWl0
ZU5hbWUsIHRlc3ROYW1lKSk7IFwKICAgICAgICAgZ190ZXN0X2FkZCh0ZXN0UGF0aC5nZXQoKSwg
Q2xhc3NOYW1lLCAwLCBDbGFzc05hbWU6OnNldFVwLCB0ZXN0RnVuYywgQ2xhc3NOYW1lOjp0ZWFy
RG93bik7IFwKICAgICB9CiAKQEAgLTc3LDYgKzg4LDE3IEBAIGNsYXNzIFRlc3QgewogcHVibGlj
OgogICAgIE1BS0VfR0xJQl9URVNUX0ZJWFRVUkUoVGVzdCk7CiAKKyAgICBzdGF0aWMgR1JlZlB0
cjxXZWJLaXRXZWJWaWV3PiBhZG9wdFZpZXcoZ3BvaW50ZXIgdmlldykKKyAgICB7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh2aWV3KSk7CisjaWYgUExBVEZPUk0oR1RLKQor
ICAgICAgICBnX2Fzc2VydChnX29iamVjdF9pc19mbG9hdGluZyh2aWV3KSk7CisgICAgICAgIHJl
dHVybiBHUmVmUHRyPFdlYktpdFdlYlZpZXc+KFdFQktJVF9XRUJfVklFVyh2aWV3KSk7CisjZWxp
ZiBQTEFURk9STShXUEUpCisgICAgICAgIHJldHVybiBhZG9wdEdSZWYoV0VCS0lUX1dFQl9WSUVX
KHZpZXcpKTsKKyNlbmRpZgorICAgIH0KKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkYXRhRGly
ZWN0b3J5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplV2ViRXh0ZW5zaW9uc0NhbGxi
YWNrKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFRlc3QqIHRlc3QpCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RCdXMuY3BwCmluZGV4
IDg4NDU2Y2U0ZjQxLi4xYjg5MzAyMTA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTMzLDkgKzMzLDExIEBA
IFdlYktpdFRlc3RCdXM6On5XZWJLaXRUZXN0QnVzKCkKIGJvb2wgV2ViS2l0VGVzdEJ1czo6cnVu
KCkKIHsKICAgICBDU3RyaW5nIGRpc3BsYXkgPSBnX2dldGVudigiRElTUExBWSIpOworICAgIENT
dHJpbmcgcnVudGltZURpciA9IGdfZ2V0ZW52KCJYREdfUlVOVElNRV9ESVIiKTsKICAgICBnX3Rl
c3RfZGJ1c191cChtX2J1cy5nZXQoKSk7CiAgICAgbV9hZGRyZXNzID0gZ190ZXN0X2RidXNfZ2V0
X2J1c19hZGRyZXNzKG1fYnVzLmdldCgpKTsKICAgICBnX3NldGVudigiRElTUExBWSIsIGRpc3Bs
YXkuZGF0YSgpLCBGQUxTRSk7CisgICAgZ19zZXRlbnYoIlhER19SVU5USU1FX0RJUiIsIHJ1bnRp
bWVEaXIuZGF0YSgpLCBGQUxTRSk7CiAgICAgcmV0dXJuICFtX2FkZHJlc3MuaXNOdWxsKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZp
ZXdUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmNwcAppbmRleCA3MDcxOTEwZTRlMy4uYzhiY2Q4ZmI5MDQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTIyLDcg
KzIyLDYgQEAKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgogCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJHdGsuaD4K
IAogYm9vbCBXZWJWaWV3VGVzdDo6c2hvdWxkSW5pdGlhbGl6ZVdlYlZpZXdJbkNvbnN0cnVjdG9y
ID0gdHJ1ZTsKIApAQCAtMzcsOCArMzYsNyBAQCBXZWJWaWV3VGVzdDo6V2ViVmlld1Rlc3QoKQog
CiBXZWJWaWV3VGVzdDo6fldlYlZpZXdUZXN0KCkKIHsKLSAgICBpZiAobV9wYXJlbnRXaW5kb3cp
Ci0gICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX3BhcmVudFdpbmRvdyk7CisgICAgcGxhdGZv
cm1EZXN0cm95KCk7CiAgICAgaWYgKG1famF2YXNjcmlwdFJlc3VsdCkKICAgICAgICAgd2Via2l0
X2phdmFzY3JpcHRfcmVzdWx0X3VucmVmKG1famF2YXNjcmlwdFJlc3VsdCk7CiAgICAgaWYgKG1f
c3VyZmFjZSkKQEAgLTUwLDcgKzQ4LDggQEAgV2ViVmlld1Rlc3Q6On5XZWJWaWV3VGVzdCgpCiB2
b2lkIFdlYlZpZXdUZXN0Ojppbml0aWFsaXplV2ViVmlldygpCiB7CiAgICAgZ19hc3NlcnQoIW1f
d2ViVmlldyk7Ci0gICAgbV93ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKGdfb2JqZWN0X3JlZl9z
aW5rKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywgIndlYi1jb250ZXh0IiwgbV93
ZWJDb250ZXh0LmdldCgpLCAidXNlci1jb250ZW50LW1hbmFnZXIiLCBtX3VzZXJDb250ZW50TWFu
YWdlci5nZXQoKSwgbnVsbHB0cikpKTsKKyAgICBtX3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLCAid2ViLWNvbnRleHQiLCBtX3dlYkNv
bnRleHQuZ2V0KCksICJ1c2VyLWNvbnRlbnQtbWFuYWdlciIsIG1fdXNlckNvbnRlbnRNYW5hZ2Vy
LmdldCgpLCBudWxscHRyKSk7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpOwogICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV93ZWJWaWV3
KSk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIndlYi1wcm9jZXNzLWNyYXNo
ZWQiLCBHX0NBTExCQUNLKFdlYlZpZXdUZXN0Ojp3ZWJQcm9jZXNzQ3Jhc2hlZCksIHRoaXMpOwpA
QCAtMTY3LDEzICsxNjYsNiBAQCB2b2lkIFdlYlZpZXdUZXN0OjpxdWl0TWFpbkxvb3AoKQogICAg
IGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CiB9CiAKLXZvaWQgV2ViVmlld1Rlc3Q6OnF1
aXRNYWluTG9vcEFmdGVyUHJvY2Vzc2luZ1BlbmRpbmdFdmVudHMoKQotewotICAgIHdoaWxlIChn
dGtfZXZlbnRzX3BlbmRpbmcoKSkKLSAgICAgICAgZ3RrX21haW5faXRlcmF0aW9uKCk7Ci0gICAg
cXVpdE1haW5Mb29wKCk7Ci19Ci0KIHZvaWQgV2ViVmlld1Rlc3Q6OndhaXQoZG91YmxlIHNlY29u
ZHMpCiB7CiAgICAgZ190aW1lb3V0X2FkZChzZWNvbmRzICogMTAwMCwgW10oZ3BvaW50ZXIgdXNl
ckRhdGEpIC0+IGdib29sZWFuIHsKQEAgLTIxOSw0OCArMjExLDYgQEAgdm9pZCBXZWJWaWV3VGVz
dDo6d2FpdFVudGlsVGl0bGVDaGFuZ2VkKCkKICAgICB3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygw
KTsKIH0KIAotc3RhdGljIGdib29sZWFuIHBhcmVudFdpbmRvd01hcHBlZChHdGtXaWRnZXQqIHdp
ZGdldCwgR2RrRXZlbnQqLCBXZWJWaWV3VGVzdCogdGVzdCkKLXsKLSAgICBnX3NpZ25hbF9oYW5k
bGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2lkZ2V0LCByZWludGVycHJldF9jYXN0PHZvaWQqPihw
YXJlbnRXaW5kb3dNYXBwZWQpLCB0ZXN0KTsKLSAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1f
bWFpbkxvb3ApOwotCi0gICAgcmV0dXJuIEZBTFNFOwotfQotCi12b2lkIFdlYlZpZXdUZXN0Ojpz
aG93SW5XaW5kb3coR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlKQotewotICAgIGdfYXNzZXJ0KCFt
X3BhcmVudFdpbmRvdyk7Ci0gICAgbV9wYXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyh3aW5k
b3dUeXBlKTsKLSAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2lu
ZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJ
REdFVChtX3dlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3cobV9wYXJlbnRXaW5kb3cpOwot
fQotCi12b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3Rr
V2luZG93VHlwZSB3aW5kb3dUeXBlLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCi17Ci0gICAgZ19h
c3NlcnQoIW1fcGFyZW50V2luZG93KTsKLSAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3df
bmV3KHdpbmRvd1R5cGUpOwotICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCi0gICAgICAgIGd0a193
aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsK
LSAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RL
X1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dl
YlZpZXcpKTsKLQotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wYXJlbnRXaW5kb3csICJtYXAtZXZl
bnQiLCBHX0NBTExCQUNLKHBhcmVudFdpbmRvd01hcHBlZCksIHRoaXMpOwotICAgIGd0a193aWRn
ZXRfc2hvdyhtX3BhcmVudFdpbmRvdyk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OwotfQotCi12b2lkIFdlYlZpZXdUZXN0OjpyZXNpemVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdo
dCkKLXsKLSAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247Ci0gICAgZ3RrX3dpZGdldF9nZXRf
YWxsb2NhdGlvbihHVEtfV0lER0VUKG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsKLSAgICBpZiAo
d2lkdGggIT0gLTEpCi0gICAgICAgIGFsbG9jYXRpb24ud2lkdGggPSB3aWR0aDsKLSAgICBpZiAo
aGVpZ2h0ICE9IC0xKQotICAgICAgICBhbGxvY2F0aW9uLmhlaWdodCA9IGhlaWdodDsKLSAgICBn
dGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVChtX3dlYlZpZXcpLCAmYWxsb2NhdGlv
bik7Ci19Ci0KIHZvaWQgV2ViVmlld1Rlc3Q6OnNlbGVjdEFsbCgpCiB7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2ViVmlldywgIlNlbGVjdEFsbCIpOwpA
QCAtMzAzLDk3ICsyNTMsNiBAQCBjb25zdCBjaGFyKiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNl
RGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFTaXplKQogICAgIHJldHVybiBtX3Jlc291cmNl
RGF0YS5nZXQoKTsKIH0KIAotdm9pZCBXZWJWaWV3VGVzdDo6bW91c2VNb3ZlVG8oaW50IHgsIGlu
dCB5LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykKLXsKLSAgICBnX2Fzc2VydChtX3BhcmVudFdp
bmRvdyk7Ci0gICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcp
OwotICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKLQot
ICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX01PVElPTl9O
T1RJRlkpKTsKLSAgICBldmVudC0+bW90aW9uLnggPSB4OwotICAgIGV2ZW50LT5tb3Rpb24ueSA9
IHk7Ci0KLSAgICBldmVudC0+bW90aW9uLnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOwotICAgIGV2
ZW50LT5tb3Rpb24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOwot
ICAgIGdfb2JqZWN0X3JlZihldmVudC0+bW90aW9uLndpbmRvdyk7Ci0gICAgZXZlbnQtPm1vdGlv
bi5kZXZpY2UgPSBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2NsaWVudF9wb2ludGVyKGdka19kaXNw
bGF5X2dldF9kZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dldF9kaXNwbGF5KHZpZXdXaWRnZXQp
KSk7Ci0gICAgZXZlbnQtPm1vdGlvbi5zdGF0ZSA9IG1vdXNlTW9kaWZpZXJzOwotICAgIGV2ZW50
LT5tb3Rpb24uYXhlcyA9IDA7Ci0KLSAgICBpbnQgeFJvb3QsIHlSb290OwotICAgIGdka193aW5k
b3dfZ2V0X3Jvb3RfY29vcmRzKGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KSwgeCwg
eSwgJnhSb290LCAmeVJvb3QpOwotICAgIGV2ZW50LT5tb3Rpb24ueF9yb290ID0geFJvb3Q7Ci0g
ICAgZXZlbnQtPm1vdGlvbi55X3Jvb3QgPSB5Um9vdDsKLSAgICBndGtfbWFpbl9kb19ldmVudChl
dmVudC5nZXQoKSk7Ci19Ci0KLXZvaWQgV2ViVmlld1Rlc3Q6OmNsaWNrTW91c2VCdXR0b24oaW50
IHgsIGludCB5LCB1bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQotewot
ICAgIGRvTW91c2VCdXR0b25FdmVudChHREtfQlVUVE9OX1BSRVNTLCB4LCB5LCBidXR0b24sIG1v
dXNlTW9kaWZpZXJzKTsKLSAgICBkb01vdXNlQnV0dG9uRXZlbnQoR0RLX0JVVFRPTl9SRUxFQVNF
LCB4LCB5LCBidXR0b24sIG1vdXNlTW9kaWZpZXJzKTsKLX0KLQotdm9pZCBXZWJWaWV3VGVzdDo6
ZW1pdFBvcHVwTWVudVNpZ25hbCgpCi17Ci0gICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RL
X1dJREdFVChtX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVk
KHZpZXdXaWRnZXQpKTsKLQotICAgIGdib29sZWFuIGhhbmRsZWQ7Ci0gICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKHZpZXdXaWRnZXQsICJwb3B1cC1tZW51IiwgJmhhbmRsZWQpOwotfQotCi12b2lk
IFdlYlZpZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1bnNpZ25lZCBrZXlNb2Rp
ZmllcnMpCi17Ci0gICAgZ19hc3NlcnQobV9wYXJlbnRXaW5kb3cpOwotICAgIEd0a1dpZGdldCog
dmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChndGtfd2lk
Z2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7Ci0KLSAgICBHVW5pcXVlUHRyPEdka0V2ZW50
PiBldmVudChnZGtfZXZlbnRfbmV3KEdES19LRVlfUFJFU1MpKTsKLSAgICBldmVudC0+a2V5Lmtl
eXZhbCA9IGtleVZhbDsKLQotICAgIGV2ZW50LT5rZXkudGltZSA9IEdES19DVVJSRU5UX1RJTUU7
Ci0gICAgZXZlbnQtPmtleS53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdl
dCk7Ci0gICAgZ19vYmplY3RfcmVmKGV2ZW50LT5rZXkud2luZG93KTsKLSAgICBnZGtfZXZlbnRf
c2V0X2RldmljZShldmVudC5nZXQoKSwgZ2RrX2RldmljZV9tYW5hZ2VyX2dldF9jbGllbnRfcG9p
bnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIoZ3RrX3dpZGdldF9nZXRfZGlzcGxh
eSh2aWV3V2lkZ2V0KSkpKTsKLSAgICBldmVudC0+a2V5LnN0YXRlID0ga2V5TW9kaWZpZXJzOwot
Ci0gICAgLy8gV2hlbiBzeW50aGVzaXppbmcgYW4gZXZlbnQsIGFuIGludmFsaWQgaGFyZHdhcmVf
a2V5Y29kZSB2YWx1ZSBjYW4gY2F1c2UgaXQgdG8gYmUgYmFkbHkgcHJvY2Vzc2VkIGJ5IEdUSysu
Ci0gICAgR1VuaXF1ZU91dFB0cjxHZGtLZXltYXBLZXk+IGtleXM7Ci0gICAgaW50IGtleXNDb3Vu
dDsKLSAgICBpZiAoZ2RrX2tleW1hcF9nZXRfZW50cmllc19mb3Jfa2V5dmFsKGdka19rZXltYXBf
Z2V0X2RlZmF1bHQoKSwga2V5VmFsLCAma2V5cy5vdXRQdHIoKSwgJmtleXNDb3VudCkpCi0gICAg
ICAgIGV2ZW50LT5rZXkuaGFyZHdhcmVfa2V5Y29kZSA9IGtleXMuZ2V0KClbMF0ua2V5Y29kZTsK
LQotICAgIGd0a19tYWluX2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKLSAgICBldmVudC0+a2V5LnR5
cGUgPSBHREtfS0VZX1JFTEVBU0U7Ci0gICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkp
OwotfQotCi12b2lkIFdlYlZpZXdUZXN0Ojpkb01vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnRUeXBl
IGV2ZW50VHlwZSwgaW50IHgsIGludCB5LCB1bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNl
TW9kaWZpZXJzKQotewotICAgIGdfYXNzZXJ0KG1fcGFyZW50V2luZG93KTsKLSAgICBHdGtXaWRn
ZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoZ3Rr
X3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOwotCi0gICAgR1VuaXF1ZVB0cjxHZGtF
dmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKLSAgICBldmVudC0+YnV0dG9u
LndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KTsKLSAgICBnX29iamVj
dF9yZWYoZXZlbnQtPmJ1dHRvbi53aW5kb3cpOwotCi0gICAgZXZlbnQtPmJ1dHRvbi50aW1lID0g
R0RLX0NVUlJFTlRfVElNRTsKLSAgICBldmVudC0+YnV0dG9uLnggPSB4OwotICAgIGV2ZW50LT5i
dXR0b24ueSA9IHk7Ci0gICAgZXZlbnQtPmJ1dHRvbi5heGVzID0gMDsKLSAgICBldmVudC0+YnV0
dG9uLnN0YXRlID0gbW91c2VNb2RpZmllcnM7Ci0gICAgZXZlbnQtPmJ1dHRvbi5idXR0b24gPSBi
dXR0b247Ci0KLSAgICBldmVudC0+YnV0dG9uLmRldmljZSA9IGdka19kZXZpY2VfbWFuYWdlcl9n
ZXRfY2xpZW50X3BvaW50ZXIoZ2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGd0a193aWRn
ZXRfZ2V0X2Rpc3BsYXkodmlld1dpZGdldCkpKTsKLQotICAgIGludCB4Um9vdCwgeVJvb3Q7Ci0g
ICAgZ2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdX
aWRnZXQpLCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7Ci0gICAgZXZlbnQtPmJ1dHRvbi54X3Jvb3Qg
PSB4Um9vdDsKLSAgICBldmVudC0+YnV0dG9uLnlfcm9vdCA9IHlSb290OwotICAgIGd0a19tYWlu
X2RvX2V2ZW50KGV2ZW50LmdldCgpKTsKLX0KLQogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdFJl
YWR5Q2FsbGJhY2soR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBXZWJWaWV3VGVzdCog
dGVzdCkKIHsKICAgICB0ZXN0LT5tX2phdmFzY3JpcHRSZXN1bHQgPSB3ZWJraXRfd2ViX3ZpZXdf
cnVuX2phdmFzY3JpcHRfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCB0ZXN0LT5tX2ph
dmFzY3JpcHRFcnJvcik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJWaWV3VGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViVmlld1Rlc3QuaAppbmRleCAzNmFlNjJhMDA2YS4uMzI2YTRhYmQzZDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuaApAQCAt
MzIsNiArMzIsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZVdl
YlZpZXdJbkNvbnN0cnVjdG9yOwogICAgIHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXcoKTsKIAorICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygpOworICAgIHZvaWQgcGxhdGZvcm1EZXN0
cm95KCk7CisKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFVSSShjb25zdCBjaGFyKiB1cmkpOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBiYXNl
VVJJKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRl
eHQpOwpAQCAtNDgsOSArNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKICAgICB2b2lkIHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKGNvbnN0IGNoYXIqIGV4
cGVjdGVkVGl0bGUpOwogICAgIHZvaWQgd2FpdFVudGlsVGl0bGVDaGFuZ2VkKCk7Ci0gICAgdm9p
ZCBzaG93SW5XaW5kb3coR3RrV2luZG93VHlwZSA9IEdUS19XSU5ET1dfUE9QVVApOwotICAgIHZv
aWQgc2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgPSBHVEtfV0lO
RE9XX1BPUFVQLCBpbnQgd2lkdGggPSAwLCBpbnQgaGVpZ2h0ID0gMCk7CiAgICAgdm9pZCByZXNp
emVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCk7CisgICAgdm9pZCBoaWRlVmlldygpOwogICAg
IHZvaWQgc2VsZWN0QWxsKCk7CiAgICAgY29uc3QgY2hhciogbWFpblJlc291cmNlRGF0YShzaXpl
X3QmIG1haW5SZXNvdXJjZURhdGFTaXplKTsKIApAQCAtNjEsNyArNjMsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xpY2tNb3VzZUJ1dHRvbihpbnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiA9
IDEsIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzID0gMCk7CiAgICAgdm9pZCBrZXlTdHJva2UodW5z
aWduZWQga2V5VmFsLCB1bnNpZ25lZCBrZXlNb2RpZmllcnMgPSAwKTsKIAorI2lmIFBMQVRGT1JN
KEdUSykKKyAgICB2b2lkIHNob3dJbldpbmRvdyhHdGtXaW5kb3dUeXBlID0gR1RLX1dJTkRPV19Q
T1BVUCk7CisgICAgdm9pZCBzaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93
VHlwZSA9IEdUS19XSU5ET1dfUE9QVVAsIGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKTsK
ICAgICB2b2lkIGVtaXRQb3B1cE1lbnVTaWduYWwoKTsKKyNlbmRpZgogCiAgICAgV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNo
YXIqIGphdmFzY3JpcHQsIEdFcnJvcioqKTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBy
dW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdhaXRVbnRpbEZpbmlzaGVkKGNvbnN0IGNoYXIq
IHJlc291cmNlLCBHRXJyb3IqKik7CkBAIC04Nyw3ICs5Myw2IEBAIHB1YmxpYzoKICAgICBXZWJL
aXRXZWJWaWV3KiBtX3dlYlZpZXcgeyBudWxscHRyIH07CiAgICAgR01haW5Mb29wKiBtX21haW5M
b29wOwogICAgIENTdHJpbmcgbV9hY3RpdmVVUkk7Ci0gICAgR3RrV2lkZ2V0KiBtX3BhcmVudFdp
bmRvdyB7IG51bGxwdHIgfTsKICAgICBDU3RyaW5nIG1fZXhwZWN0ZWRUaXRsZTsKICAgICBXZWJL
aXRKYXZhc2NyaXB0UmVzdWx0KiBtX2phdmFzY3JpcHRSZXN1bHQgeyBudWxscHRyIH07CiAgICAg
R0Vycm9yKiogbV9qYXZhc2NyaXB0RXJyb3IgeyBudWxscHRyIH07CkBAIC05Niw2ICsxMDEsMTIg
QEAgcHVibGljOgogICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zdXJmYWNlIHsgbnVsbHB0ciB9Owog
ICAgIGJvb2wgbV9leHBlY3RlZFdlYlByb2Nlc3NDcmFzaCB7IGZhbHNlIH07CiAKKyNpZiBQTEFU
Rk9STShHVEspCisgICAgR3RrV2lkZ2V0KiBtX3BhcmVudFdpbmRvdyB7IG51bGxwdHIgfTsKKyNl
bmRpZgorCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRvTW91c2VCdXR0
b25FdmVudChHZGtFdmVudFR5cGUsIGludCwgaW50LCB1bnNpZ25lZCwgdW5zaWduZWQpOworI2Vu
ZGlmCiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
Z3RrL1dlYlZpZXdUZXN0R3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjhiM2Q4YmEwZDk5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcApAQCAtMCwwICsxLDE4
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogUG9ydGlvbnMg
Q29weXJpZ2h0IChjKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4K
Kwordm9pZCBXZWJWaWV3VGVzdDo6cGxhdGZvcm1EZXN0cm95KCkKK3sKKyAgICBpZiAobV9wYXJl
bnRXaW5kb3cpCisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX3BhcmVudFdpbmRvdyk7Cit9
CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlZpZXcoKQoreworICAg
IGdfYXNzZXJ0KFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydChnX29i
amVjdF9pc19mbG9hdGluZyhtX3dlYlZpZXcpKTsKKyAgICBnX29iamVjdF9yZWZfc2luayhtX3dl
YlZpZXcpOworfQorCit2b2lkIFdlYlZpZXdUZXN0OjpxdWl0TWFpbkxvb3BBZnRlclByb2Nlc3Np
bmdQZW5kaW5nRXZlbnRzKCkKK3sKKyAgICB3aGlsZSAoZ3RrX2V2ZW50c19wZW5kaW5nKCkpCisg
ICAgICAgIGd0a19tYWluX2l0ZXJhdGlvbigpOworICAgIHF1aXRNYWluTG9vcCgpOworfQorCit2
b2lkIFdlYlZpZXdUZXN0OjpyZXNpemVWaWV3KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3sKKyAg
ICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CisgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlv
bihHVEtfV0lER0VUKG1fd2ViVmlldyksICZhbGxvY2F0aW9uKTsKKyAgICBpZiAod2lkdGggIT0g
LTEpCisgICAgICAgIGFsbG9jYXRpb24ud2lkdGggPSB3aWR0aDsKKyAgICBpZiAoaGVpZ2h0ICE9
IC0xKQorICAgICAgICBhbGxvY2F0aW9uLmhlaWdodCA9IGhlaWdodDsKKyAgICBndGtfd2lkZ2V0
X3NpemVfYWxsb2NhdGUoR1RLX1dJREdFVChtX3dlYlZpZXcpLCAmYWxsb2NhdGlvbik7Cit9CisK
K3ZvaWQgV2ViVmlld1Rlc3Q6OmhpZGVWaWV3KCkKK3sKKyAgICBndGtfd2lkZ2V0X2hpZGUoR1RL
X1dJREdFVChtX3dlYlZpZXcpKTsKK30KKworc3RhdGljIGdib29sZWFuIHBhcmVudFdpbmRvd01h
cHBlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnQqLCBXZWJWaWV3VGVzdCogdGVzdCkKK3sK
KyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMod2lkZ2V0LCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihwYXJlbnRXaW5kb3dNYXBwZWQpLCB0ZXN0KTsKKyAgICBnX21haW5f
bG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOworCisgICAgcmV0dXJuIEZBTFNFOworfQorCit2
b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3coR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlKQor
eworICAgIGdfYXNzZXJ0KCFtX3BhcmVudFdpbmRvdyk7CisgICAgbV9wYXJlbnRXaW5kb3cgPSBn
dGtfd2luZG93X25ldyh3aW5kb3dUeXBlKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKG1fcGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBndGtf
d2lkZ2V0X3Nob3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3Nob3co
bV9wYXJlbnRXaW5kb3cpOworfQorCit2b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3dBbmRX
YWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlLCBpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCit7CisgICAgZ19hc3NlcnQoIW1fcGFyZW50V2luZG93KTsKKyAgICBtX3BhcmVudFdp
bmRvdyA9IGd0a193aW5kb3dfbmV3KHdpbmRvd1R5cGUpOworICAgIGlmICh3aWR0aCAmJiBoZWln
aHQpCisgICAgICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cp
LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1f
cGFyZW50V2luZG93KSwgR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICBndGtfd2lkZ2V0X3No
b3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wYXJl
bnRXaW5kb3csICJtYXAtZXZlbnQiLCBHX0NBTExCQUNLKHBhcmVudFdpbmRvd01hcHBlZCksIHRo
aXMpOworICAgIGd0a193aWRnZXRfc2hvdyhtX3BhcmVudFdpbmRvdyk7CisgICAgZ19tYWluX2xv
b3BfcnVuKG1fbWFpbkxvb3ApOworfQorCit2b2lkIFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyhp
bnQgeCwgaW50IHksIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQoreworICAgIGdfYXNzZXJ0KG1f
cGFyZW50V2luZG93KTsKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1f
d2ViVmlldyk7CisgICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdl
dCkpOworCisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhHREtf
TU9USU9OX05PVElGWSkpOworICAgIGV2ZW50LT5tb3Rpb24ueCA9IHg7CisgICAgZXZlbnQtPm1v
dGlvbi55ID0geTsKKworICAgIGV2ZW50LT5tb3Rpb24udGltZSA9IEdES19DVVJSRU5UX1RJTUU7
CisgICAgZXZlbnQtPm1vdGlvbi53aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dp
ZGdldCk7CisgICAgZ19vYmplY3RfcmVmKGV2ZW50LT5tb3Rpb24ud2luZG93KTsKKyAgICBldmVu
dC0+bW90aW9uLmRldmljZSA9IGdka19kZXZpY2VfbWFuYWdlcl9nZXRfY2xpZW50X3BvaW50ZXIo
Z2RrX2Rpc3BsYXlfZ2V0X2RldmljZV9tYW5hZ2VyKGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkodmll
d1dpZGdldCkpKTsKKyAgICBldmVudC0+bW90aW9uLnN0YXRlID0gbW91c2VNb2RpZmllcnM7Cisg
ICAgZXZlbnQtPm1vdGlvbi5heGVzID0gMDsKKworICAgIGludCB4Um9vdCwgeVJvb3Q7CisgICAg
Z2RrX3dpbmRvd19nZXRfcm9vdF9jb29yZHMoZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRn
ZXQpLCB4LCB5LCAmeFJvb3QsICZ5Um9vdCk7CisgICAgZXZlbnQtPm1vdGlvbi54X3Jvb3QgPSB4
Um9vdDsKKyAgICBldmVudC0+bW90aW9uLnlfcm9vdCA9IHlSb290OworICAgIGd0a19tYWluX2Rv
X2V2ZW50KGV2ZW50LmdldCgpKTsKK30KKwordm9pZCBXZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1
dHRvbihpbnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiwgdW5zaWduZWQgbW91c2VNb2RpZmll
cnMpCit7CisgICAgZG9Nb3VzZUJ1dHRvbkV2ZW50KEdES19CVVRUT05fUFJFU1MsIHgsIHksIGJ1
dHRvbiwgbW91c2VNb2RpZmllcnMpOworICAgIGRvTW91c2VCdXR0b25FdmVudChHREtfQlVUVE9O
X1JFTEVBU0UsIHgsIHksIGJ1dHRvbiwgbW91c2VNb2RpZmllcnMpOworfQorCit2b2lkIFdlYlZp
ZXdUZXN0OjplbWl0UG9wdXBNZW51U2lnbmFsKCkKK3sKKyAgICBHdGtXaWRnZXQqIHZpZXdXaWRn
ZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7CisgICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRf
cmVhbGl6ZWQodmlld1dpZGdldCkpOworCisgICAgZ2Jvb2xlYW4gaGFuZGxlZDsKKyAgICBnX3Np
Z25hbF9lbWl0X2J5X25hbWUodmlld1dpZGdldCwgInBvcHVwLW1lbnUiLCAmaGFuZGxlZCk7Cit9
CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVk
IGtleU1vZGlmaWVycykKK3sKKyAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRvdyk7CisgICAgR3Rr
V2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0
KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKKworICAgIEdVbmlxdWVQdHI8
R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RLX0tFWV9QUkVTUykpOworICAgIGV2ZW50
LT5rZXkua2V5dmFsID0ga2V5VmFsOworCisgICAgZXZlbnQtPmtleS50aW1lID0gR0RLX0NVUlJF
TlRfVElNRTsKKyAgICBldmVudC0+a2V5LndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2
aWV3V2lkZ2V0KTsKKyAgICBnX29iamVjdF9yZWYoZXZlbnQtPmtleS53aW5kb3cpOworICAgIGdk
a19ldmVudF9zZXRfZGV2aWNlKGV2ZW50LmdldCgpLCBnZGtfZGV2aWNlX21hbmFnZXJfZ2V0X2Ns
aWVudF9wb2ludGVyKGdka19kaXNwbGF5X2dldF9kZXZpY2VfbWFuYWdlcihndGtfd2lkZ2V0X2dl
dF9kaXNwbGF5KHZpZXdXaWRnZXQpKSkpOworICAgIGV2ZW50LT5rZXkuc3RhdGUgPSBrZXlNb2Rp
ZmllcnM7CisKKyAgICAvLyBXaGVuIHN5bnRoZXNpemluZyBhbiBldmVudCwgYW4gaW52YWxpZCBo
YXJkd2FyZV9rZXljb2RlIHZhbHVlIGNhbiBjYXVzZSBpdCB0byBiZSBiYWRseSBwcm9jZXNzZWQg
YnkgR1RLKy4KKyAgICBHVW5pcXVlT3V0UHRyPEdka0tleW1hcEtleT4ga2V5czsKKyAgICBpbnQg
a2V5c0NvdW50OworICAgIGlmIChnZGtfa2V5bWFwX2dldF9lbnRyaWVzX2Zvcl9rZXl2YWwoZ2Rr
X2tleW1hcF9nZXRfZGVmYXVsdCgpLCBrZXlWYWwsICZrZXlzLm91dFB0cigpLCAma2V5c0NvdW50
KSkKKyAgICAgICAgZXZlbnQtPmtleS5oYXJkd2FyZV9rZXljb2RlID0ga2V5cy5nZXQoKVswXS5r
ZXljb2RlOworCisgICAgZ3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOworICAgIGV2ZW50
LT5rZXkudHlwZSA9IEdES19LRVlfUkVMRUFTRTsKKyAgICBndGtfbWFpbl9kb19ldmVudChldmVu
dC5nZXQoKSk7Cit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmRvTW91c2VCdXR0b25FdmVudChHZGtF
dmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiwgdW5zaWdu
ZWQgbW91c2VNb2RpZmllcnMpCit7CisgICAgZ19hc3NlcnQobV9wYXJlbnRXaW5kb3cpOworICAg
IEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKKyAgICBnX2Fz
c2VydChndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7CisKKyAgICBHVW5pcXVl
UHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSkpOworICAgIGV2ZW50
LT5idXR0b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOworICAg
IGdfb2JqZWN0X3JlZihldmVudC0+YnV0dG9uLndpbmRvdyk7CisKKyAgICBldmVudC0+YnV0dG9u
LnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworICAgIGV2ZW50LT5idXR0b24ueCA9IHg7CisgICAg
ZXZlbnQtPmJ1dHRvbi55ID0geTsKKyAgICBldmVudC0+YnV0dG9uLmF4ZXMgPSAwOworICAgIGV2
ZW50LT5idXR0b24uc3RhdGUgPSBtb3VzZU1vZGlmaWVyczsKKyAgICBldmVudC0+YnV0dG9uLmJ1
dHRvbiA9IGJ1dHRvbjsKKworICAgIGV2ZW50LT5idXR0b24uZGV2aWNlID0gZ2RrX2RldmljZV9t
YW5hZ2VyX2dldF9jbGllbnRfcG9pbnRlcihnZGtfZGlzcGxheV9nZXRfZGV2aWNlX21hbmFnZXIo
Z3RrX3dpZGdldF9nZXRfZGlzcGxheSh2aWV3V2lkZ2V0KSkpOworCisgICAgaW50IHhSb290LCB5
Um9vdDsKKyAgICBnZGtfd2luZG93X2dldF9yb290X2Nvb3JkcyhndGtfd2lkZ2V0X2dldF93aW5k
b3codmlld1dpZGdldCksIHgsIHksICZ4Um9vdCwgJnlSb290KTsKKyAgICBldmVudC0+YnV0dG9u
Lnhfcm9vdCA9IHhSb290OworICAgIGV2ZW50LT5idXR0b24ueV9yb290ID0geVJvb3Q7CisgICAg
Z3RrX21haW5fZG9fZXZlbnQoZXZlbnQuZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvd3BlL1dlYlZpZXdUZXN0V1BFLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL3dwZS9XZWJWaWV3VGVzdFdQRS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNjZjE1YzIxMzc1Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvd3BlL1dlYlZp
ZXdUZXN0V1BFLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5o
IgorCit2b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9ybURlc3Ryb3koKQoreworfQorCit2b2lkIFdl
YlZpZXdUZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KCkKK3sKK30KKwordm9pZCBXZWJW
aWV3VGVzdDo6cXVpdE1haW5Mb29wQWZ0ZXJQcm9jZXNzaW5nUGVuZGluZ0V2ZW50cygpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudCBpZiBuZWVkZWQuCisgICAgcXVpdE1haW5Mb29wKCk7Cit9
CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OnJlc2l6ZVZpZXcoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmhpZGVW
aWV3KCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorfQorCit2b2lkIFdlYlZpZXdUZXN0
Ojptb3VzZU1vdmVUbyhpbnQgeCwgaW50IHksIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQorewor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKK3ZvaWQgV2ViVmlld1Rlc3Q6OmNsaWNrTW91
c2VCdXR0b24oaW50IHgsIGludCB5LCB1bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9k
aWZpZXJzKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQuCit9CisKK3ZvaWQgV2ViVmlld1Rl
c3Q6OmtleVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1vZGlmaWVycykKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50LgorfQo=
</data>
<flag name="review"
          id="334492"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>