<?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>184524</bug_id>
          
          <creation_ts>2018-04-11 19:14:09 -0700</creation_ts>
          <short_desc>[WinCairo][TestWebKitAPI] Implement PlatformWebView for TestWebKit</short_desc>
          <delta_ts>2018-04-17 18:08:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174003</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>lforschler</cc>
    
    <cc>pvollan</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1413903</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-04-11 19:14:09 -0700</bug_when>
    <thetext>[WinCairo][TestWebKitAPI] Implement PlatformWebView for TestWebKit

It was removed in Bug 104607.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1413905</commentid>
    <comment_count>1</comment_count>
      <attachid>337769</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-04-11 19:17:47 -0700</bug_when>
    <thetext>Created attachment 337769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414614</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-04-13 21:17:06 -0700</bug_when>
    <thetext>Could anyone review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1414783</commentid>
    <comment_count>3</comment_count>
      <attachid>337769</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-04-16 08:42:23 -0700</bug_when>
    <thetext>Comment on attachment 337769
Patch

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

&gt; Tools/TestWebKitAPI/win/PlatformUtilitiesWin.cpp:38
&gt; +    constexpr size_t bufferLength = _MAX_PATH * 4;

This seems excessive.

&gt; Tools/TestWebKitAPI/win/PlatformUtilitiesWin.cpp:53
&gt; +    String filename = String::format(&quot;..\\..\\..\\Tools\\TestWebKitAPI\\Tests\\WebKit\\%s.%s&quot;, resource, extension);

This seems specific to a certain build configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415022</commentid>
    <comment_count>4</comment_count>
      <attachid>337769</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-04-16 21:16:48 -0700</bug_when>
    <thetext>Comment on attachment 337769
Patch

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

Thank you for the review.

&gt;&gt; Tools/TestWebKitAPI/win/PlatformUtilitiesWin.cpp:38
&gt;&gt; +    constexpr size_t bufferLength = _MAX_PATH * 4;
&gt; 
&gt; This seems excessive.

Agreed. I&apos;ll use _MAX_PATH+1.

&gt;&gt; Tools/TestWebKitAPI/win/PlatformUtilitiesWin.cpp:53
&gt;&gt; +    String filename = String::format(&quot;..\\..\\..\\Tools\\TestWebKitAPI\\Tests\\WebKit\\%s.%s&quot;, resource, extension);
&gt; 
&gt; This seems specific to a certain build configuration.

Mac port is copying the resource file into the build directory.
GTK and WPE ports are using a env var to specify the source directory.
Old WebKit port was using the same approach with Mac port.
I&apos;m going to solve this problem in another bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415023</commentid>
    <comment_count>5</comment_count>
      <attachid>338077</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-04-16 21:23:05 -0700</bug_when>
    <thetext>Created attachment 338077
Patch to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415404</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-04-17 18:01:37 -0700</bug_when>
    <thetext>Committed r230744: &lt;https://trac.webkit.org/changeset/230744&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415405</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-17 18:03:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/39512612&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415410</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-04-17 18:08:52 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #4)
&gt; I&apos;m going to solve this problem in another bug.

Filed Bug 184722.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>337769</attachid>
            <date>2018-04-11 19:17:47 -0700</date>
            <delta_ts>2018-04-16 21:23:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184524-20180412111746.patch</filename>
            <type>text/plain</type>
            <size>18852</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNTUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTkwNmY1ZTc1NTZmY2E4ZjMzZjViNjMxM2JjYjM1YzFl
NjRmMWYwMy4uZThmMGMwNmIwMGEzYTUzYWI2OTJhNGUxNDM5MjA0NmUyYzJhNGUwNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDE4LTA0LTExICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgorCisgICAgICAgIFtXaW5DYWlyb11bVGVzdFdlYktpdEFQSV0gSW1wbGVtZW50IFBsYXRmb3Jt
V2ViVmlldyBmb3IgVGVzdFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg0NTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVzdXJyZWN0IFBsYXRmb3JtV2ViVmlldyBmb3IgV2luZG93cyBwb3J0
IHdoaWNoIHdhcyByZW1vdmVkIGluIEJ1ZyAxMDQ2MDcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1BsYXRmb3JtV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1X
aW4uY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vSW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyV2luLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlV0aWw6Om1vZHVsZURpcmVjdG9yeSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VXRpbDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VXRpbDo6VVJMRm9yTm9uRXhpc3RlbnRSZXNvdXJjZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpVdGlsOjppc0tleURvd24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3Jt
V2ViVmlld1dpbi5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1X
ZWJWaWV3OjpyZWdpc3RlcldpbmRvd0NsYXNzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlBsYXRmb3JtV2ViVmlldzo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
bGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6UGxhdGZvcm1XZWJWaWV3OjpwYWdlIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlBsYXRmb3JtV2ViVmlldzo6cmVzaXplVG8pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZUFsdEtleVByZXNzKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVSaWdodENsaWNrKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVNb3VzZU1vdmUp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3Ojp3bmRQcm9jKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9VdGlsaXRpZXNXaW4uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpzbGVlcCk6
CisKIDIwMTgtMDQtMTEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBUZXN0SW52b2NhdGlvbiBjbGFzcyBmb3IgbmV3ZXIgdmVyc2lvbnMgb2YgY2xh
bmcuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAppbmRleCA4NDQ1YzIzODM4YWE5
MWVhYWVlMmVjMGVkNjM4MjhlYzQyODhlOWI5Li43NzAyMzRkNmQ3MDIwMDczOTQ4OTQ5MmZiZDQw
Y2UyMzFlYmUwNDI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2Vi
Vmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKQEAgLTUy
LDYgKzUyLDkgQEAgY2xhc3MgSGVhZGxlc3NWaWV3QmFja2VuZDsKIHN0cnVjdCB3cGVfdmlld19i
YWNrZW5kOwogdHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIEhlYWRs
ZXNzVmlld0JhY2tlbmQgKlBsYXRmb3JtV2luZG93OworI2VsaWYgUExBVEZPUk0oV0lOKQordHlw
ZWRlZiBXS1ZpZXdSZWYgUGxhdGZvcm1XS1ZpZXc7Cit0eXBlZGVmIEhXTkQgUGxhdGZvcm1XaW5k
b3c7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtODIsOSArODUsMTMg
QEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBpbml0aWFs
aXplKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIENsYXNzIHdrVmlld1N1YmNsYXNzKTsKLSNlbGlm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQorI2VsaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXUEUpIHx8IFBMQVRGT1JNKFdJTikKICAgICB2b2lkIGluaXRpYWxpemUoV0tQYWdl
Q29uZmlndXJhdGlvblJlZik7CiAjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOworICAgIHN0YXRpYyBMUkVTVUxUIENBTExCQUNL
IHduZFByb2MoSFdORCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSk7CisjZW5kaWYKIAog
ICAgIFBsYXRmb3JtV0tWaWV3IG1fdmlldzsKICAgICBQbGF0Zm9ybVdpbmRvdyBtX3dpbmRvdzsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDg0ODZhYjk5ZjA4MGMwMmE5
YTJjMjE2YjJmNDU0MGY3NDAxMTY4MGUuLmM4YjQ0ZGJkZDA5YmY1NmUyNTZjZGRhNGRmMTA3Zjgz
OTNlY2VlMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21h
a2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMTYyLDYg
KzE2MiwzOCBAQCBpZiAoRU5BQkxFX1dFQktJVF9MRUdBQ1kpCiAgICAgYWRkX2RlcGVuZGVuY2ll
cyhUZXN0V2ViS2l0TGVnYWN5IFRlc3RXZWJLaXRMZWdhY3lMaWIpCiBlbmRpZiAoKQogCitpZiAo
RU5BQkxFX1dFQktJVCkKKyAgICBzZXQoYnVuZGxlX2hhcm5lc3NfU09VUkNFUworICAgICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS93aW4vVXRpbGl0aWVzV2luLmNwcAorICAgICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS93aW4vSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyV2luLmNwcAorICAgICAg
ICAke1RFU1RXRUJLSVRBUElfRElSfS93aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwCisgICAg
KQorCisgICAgc2V0KHdlYmtpdF9hcGlfaGFybmVzc19TT1VSQ0VTCisgICAgICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKKyAgICAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKKyAgICAgICAgJHtURVNU
V0VCS0lUQVBJX0RJUn0vd2luL1V0aWxpdGllc1dpbi5jcHAKKyAgICApCisKKyAgICBhZGRfbGli
cmFyeShUZXN0V2ViS2l0TGliIFNIQVJFRAorICAgICAgICAke1RFU1RXRUJLSVRBUElfRElSfS93
aW4vbWFpbi5jcHAKKyAgICAgICAgJHt0ZXN0X3dlYmtpdF9hcGlfU09VUkNFU30KKyAgICApCisK
KyAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoVGVzdFdlYktpdExpYiAke3Rlc3Rfd2Via2l0X2Fw
aV9MSUJSQVJJRVN9KQorCisgICAgYWRkX2V4ZWN1dGFibGUoVGVzdFdlYktpdAorICAgICAgICAk
e1RPT0xTX0RJUn0vd2luL0RMTExhdW5jaGVyL0RMTExhdW5jaGVyTWFpbi5jcHAKKyAgICApCisg
ICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKFRlc3RXZWJLaXQgc2hsd2FwaSkKKworICAgIGFkZF90
ZXN0KFRlc3RXZWJLaXQgJHtURVNUV0VCS0lUQVBJX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0v
V2ViS2l0L1Rlc3RXZWJLaXQpCisgICAgc2V0X3Rlc3RzX3Byb3BlcnRpZXMoVGVzdFdlYktpdCBQ
Uk9QRVJUSUVTIFRJTUVPVVQgNjApCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFRlc3RXZWJL
aXQgUFJPUEVSVElFUyBSVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgJHtURVNUV0VCS0lUQVBJX1JV
TlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vV2ViS2l0KQorCisgICAgYWRkX2RlcGVuZGVuY2llcyhU
ZXN0V2ViS2l0IFRlc3RXZWJLaXRBUElCYXNlKQorZW5kaWYgKCkKKwogc2V0KHRlc3RfbWFpbl9T
T1VSQ0VTCiAgICAgJHtUT09MU19ESVJ9L3dpbi9ETExMYXVuY2hlci9ETExMYXVuY2hlck1haW4u
Y3BwCiApCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9JbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXJXaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vSW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDc1OTg2MmFlYjQ3ZDMyMDE5ZDJmYTli
YzAyM2NkNjBlNWMyYjY1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyV2luLmNwcApAQCAtMCwwICsxLDM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXIuaCIKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCit2b2lkIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKCkKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93
aW4vUGxhdGZvcm1VdGlsaXRpZXNXaW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxh
dGZvcm1VdGlsaXRpZXNXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkMGM1ZDEwNTE2NmZmYzE1YWQ1YzYz
ZmY4ZDg3MGFkOWNhMGVhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKKworI2luY2x1ZGUgPFNobHdhcGkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CituYW1lc3BhY2UgVXRpbCB7CisKK3N0YXRpYyBTdHJpbmcgbW9kdWxlRGlyZWN0b3J5KCkKK3sK
KyAgICBjb25zdGV4cHIgc2l6ZV90IGJ1ZmZlckxlbmd0aCA9IF9NQVhfUEFUSCAqIDQ7CisgICAg
VENIQVIgZmlsZW5hbWVbYnVmZmVyTGVuZ3RoXTsKKyAgICBhdXRvIGxlbiA9IEdldE1vZHVsZUZp
bGVOYW1lKG51bGxwdHIsIGZpbGVuYW1lLCBidWZmZXJMZW5ndGgpOworICAgIEFTU0VSVChsZW4g
PiAwKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZGlyZWN0b3J5TmFtZShTdHJp
bmcoZmlsZW5hbWUsIGxlbikpOworfQorCitXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRs
ZVBhdGgoKQoreworICAgIGF1dG8gcGF0aCA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtb2R1bGVEaXJlY3RvcnkoKSwgU3RyaW5nKEwiVGVzdFdlYktpdEFQ
SUluamVjdGVkQnVuZGxlLmRsbCIpKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcocGF0aC51dGY4KCkuZGF0YSgpKTsKK30KKworV0tVUkxSZWYgY3JlYXRlVVJMRm9y
UmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKK3sK
KyAgICBTdHJpbmcgZmlsZW5hbWUgPSBTdHJpbmc6OmZvcm1hdCgiLi5cXC4uXFwuLlxcVG9vbHNc
XFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXZWJLaXRcXCVzLiVzIiwgcmVzb3VyY2UsIGV4dGVuc2lv
bik7CisgICAgYXV0byB1cmwgPSBXZWJDb3JlOjpVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgoV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1vZHVsZURp
cmVjdG9yeSgpLCBmaWxlbmFtZSkpOworICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0
cmluZyh1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK1dLVVJMUmVmIFVSTEZvck5v
bkV4aXN0ZW50UmVzb3VyY2UoKQoreworICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiZmlsZTovLy9kb2VzLW5vdC1leGlzdC5odG1sIik7Cit9CisKK2Jvb2wgaXNLZXlEb3du
KFdLTmF0aXZlRXZlbnRQdHIgZXZlbnQpCit7CisgICAgLy8gRklYTUUKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dp
bi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFjMGM2ODllMTYxNWI5MTE0N2JjZTA5YmU3Yzc2NDdkNTdhYmJhMjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0Zm9ybVdlYlZpZXdXaW4u
Y3BwCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorCisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWlu
UHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGNvbnN0IHdjaGFy
X3QqIGhvc3RXaW5kb3dDbGFzc05hbWUgPSBMIm9yZy5XZWJLaXQuVGVzdFdlYktpdEFQSS5QbGF0
Zm9ybVdlYlZpZXdIb3N0V2luZG93IjsKK3N0YXRpYyBjb25zdCB3Y2hhcl90KiB3ZWJWaWV3UG9p
bnRlclByb3BlcnR5ID0gTCJvcmcuV2ViS2l0LlRlc3RXZWJLaXRBUEkuUGxhdGZvcm1XZWJWaWV3
Lkluc3RhbmNlUG9pbnRlciI7CisKKy8vIFRoZXNlIG9mZnNldHMgY29tZSBmcm9tIHJvbSA8aHR0
cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjQ2MjgwKFZTLjg1KS5hc3B4
Pi4KK3N0YXRpYyBjb25zdCBzaXplX3QgcmVwZWF0Q291bnRCaXRPZmZzZXQgPSAwOworc3RhdGlj
IGNvbnN0IHNpemVfdCBzY2FuQ29kZUJpdE9mZnNldCA9IDE2Oworc3RhdGljIGNvbnN0IHNpemVf
dCBjb250ZXh0Q29kZUJpdE9mZnNldCA9IDI5Oworc3RhdGljIGNvbnN0IHNpemVfdCBwcmV2aW91
c1N0YXRlQml0T2Zmc2V0ID0gMzA7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHRyYW5zaXRpb25TdGF0
ZUJpdE9mZnNldCA9IDMxOworCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6cmVnaXN0ZXJXaW5kb3dD
bGFzcygpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CisgICAgaWYgKGluaXRpYWxp
emVkKQorICAgICAgICByZXR1cm47CisgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgV05E
Q0xBU1NFWFcgd25kQ2xhc3MgPSB7MH07CisgICAgd25kQ2xhc3MuY2JTaXplID0gc2l6ZW9mKHdu
ZENsYXNzKTsKKyAgICB3bmRDbGFzcy5zdHlsZSA9IENTX0hSRURSQVcgfCBDU19WUkVEUkFXOwor
ICAgIHduZENsYXNzLmxwZm5XbmRQcm9jID0gd25kUHJvYzsKKyAgICB3bmRDbGFzcy5oQ3Vyc29y
ID0gTG9hZEN1cnNvcigwLCBJRENfQVJST1cpOworICAgIHduZENsYXNzLmxwc3pDbGFzc05hbWUg
PSBob3N0V2luZG93Q2xhc3NOYW1lOworCisgICAgOjpSZWdpc3RlckNsYXNzRXhXKCZ3bmRDbGFz
cyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCit7CisgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdl
Q29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4
dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0UmVmKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHBhZ2VHcm91cFJlZik7CisKKyAg
ICBpbml0aWFsaXplKGNvbmZpZ3VyYXRpb24uZ2V0KCkpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6
OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7
CisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uKTsKK30KKworUGxhdGZvcm1XZWJWaWV3OjpQ
bGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmIHJlbGF0ZWRQYWdlKQoreworICAgIFdLUmV0YWluUHRy
PFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdFdLKFdLUGFnZUNv
bmZpZ3VyYXRpb25DcmVhdGUoKSk7CisgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldENvbnRleHQo
Y29uZmlndXJhdGlvbi5nZXQoKSwgV0tQYWdlR2V0Q29udGV4dChyZWxhdGVkUGFnZSkpOworICAg
IFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRQYWdlR3JvdXAoY29uZmlndXJhdGlvbi5nZXQoKSwgV0tQ
YWdlR2V0UGFnZUdyb3VwKHJlbGF0ZWRQYWdlKSk7CisgICAgV0tQYWdlQ29uZmlndXJhdGlvblNl
dFJlbGF0ZWRQYWdlKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHJlbGF0ZWRQYWdlKTsKKworICAgIGlu
aXRpYWxpemUoY29uZmlndXJhdGlvbi5nZXQoKSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3
Ojppbml0aWFsaXplKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sKKyAg
ICByZWdpc3RlcldpbmRvd0NsYXNzKCk7CisKKyAgICBSRUNUIHZpZXdSZWN0ID0gezAsIDAsIDgw
MCwgNjAwfTsKKyAgICBtX3dpbmRvdyA9IENyZWF0ZVdpbmRvd0V4VygwLCBob3N0V2luZG93Q2xh
c3NOYW1lLCBMIlRlc3RXZWJLaXRBUEkiLCBXU19PVkVSTEFQUEVEV0lORE9XLCB2aWV3UmVjdC5s
ZWZ0LCB2aWV3UmVjdC50b3AsIHZpZXdSZWN0LnJpZ2h0LCB2aWV3UmVjdC5ib3R0b20sIDAsIDAs
IDAsIHRoaXMpOworICAgIG1fdmlldyA9IFdLVmlld0NyZWF0ZSh2aWV3UmVjdCwgY29uZmlndXJh
dGlvbiwgbV93aW5kb3cpOworfQorCitQbGF0Zm9ybVdlYlZpZXc6On5QbGF0Zm9ybVdlYlZpZXco
KQoreworICAgIDo6RGVzdHJveVdpbmRvdyhtX3dpbmRvdyk7Cit9CisKK1dLUGFnZVJlZiBQbGF0
Zm9ybVdlYlZpZXc6OnBhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBXS1ZpZXdHZXRQYWdlKG1f
dmlldyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0
aCwgdW5zaWduZWQgaGVpZ2h0KQoreworICAgIDo6U2V0V2luZG93UG9zKFdLVmlld0dldFdpbmRv
dyhtX3ZpZXcpLCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0LCBTV1BfTk9NT1ZFIHwgU1dQX05PWk9S
REVSIHwgU1dQX05PQUNUSVZBVEUgfCBTV1BfTk9DT1BZQklUUyk7Cit9CisKK3ZvaWQgUGxhdGZv
cm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKQoreworICAgIEhXTkQgd2luZG93
ID0gV0tWaWV3R2V0V2luZG93KG1fdmlldyk7CisKKyAgICAvLyBUaGVzZSB2YWx1ZXMgbWF0Y2gg
d2hhdCBoYXBwZW5zIHdoZW4geW91IHByZXNzIHRoZSBzcGFjZWJhciBpbiBOb3RlcGFkLCBhcyBv
YnNlcnZlZCBieSBTcHkrKy4KKyAgICA6OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX0tFWURPV04s
IFZLX1NQQUNFLCAoMSA8PCByZXBlYXRDb3VudEJpdE9mZnNldCkgfCAoMzkgPDwgc2NhbkNvZGVC
aXRPZmZzZXQpKTsKKyAgICA6OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX0NIQVIsICcgJywgKDEg
PDwgcmVwZWF0Q291bnRCaXRPZmZzZXQpIHwgKDM5IDw8IHNjYW5Db2RlQml0T2Zmc2V0KSk7Cisg
ICAgOjpTZW5kTWVzc2FnZVcod2luZG93LCBXTV9LRVlVUCwgVktfU1BBQ0UsICgxIDw8IHJlcGVh
dENvdW50Qml0T2Zmc2V0KSB8ICgzOSA8PCBzY2FuQ29kZUJpdE9mZnNldCkgfCAoMSA8PCBwcmV2
aW91c1N0YXRlQml0T2Zmc2V0KSB8ICgxIDw8IHRyYW5zaXRpb25TdGF0ZUJpdE9mZnNldCkpOwor
fQorCit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVBbHRLZXlQcmVzcygpCit7CisgICAg
SFdORCB3aW5kb3cgPSBXS1ZpZXdHZXRXaW5kb3cobV92aWV3KTsKKworICAgIC8vIFRoZXNlIHZh
bHVlcyBtYXRjaCB3aGF0IGhhcHBlbnMgd2hlbiB5b3UgcHJlc3MgdGhlIEFsdCBrZXkgaW4gTm90
ZXBhZCwgYXMgb2JzZXJ2ZWQgYnkgU3B5KysuCisgICAgOjpTZW5kTWVzc2FnZVcod2luZG93LCBX
TV9TWVNLRVlET1dOLCBWS19NRU5VLCAoMSA8PCByZXBlYXRDb3VudEJpdE9mZnNldCkgfCAoMzgg
PDwgc2NhbkNvZGVCaXRPZmZzZXQpIHwgKDEgPDwgY29udGV4dENvZGVCaXRPZmZzZXQpKTsKKyAg
ICA6OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX1NZU0tFWVVQLCBWS19NRU5VLCAoMSA8PCByZXBl
YXRDb3VudEJpdE9mZnNldCkgfCAoMzggPDwgc2NhbkNvZGVCaXRPZmZzZXQpIHwgKDEgPDwgcHJl
dmlvdXNTdGF0ZUJpdE9mZnNldCkgfCAoMSA8PCB0cmFuc2l0aW9uU3RhdGVCaXRPZmZzZXQpKTsK
K30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayh1bnNpZ25lZCB4
LCB1bnNpZ25lZCB5KQoreworICAgIEhXTkQgd2luZG93ID0gV0tWaWV3R2V0V2luZG93KG1fdmll
dyk7CisKKyAgICA6OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX1JCVVRUT05ET1dOLCAwLCBNQUtF
TFBBUkFNKHgsIHkpKTsKKyAgICA6OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX1JCVVRUT05VUCwg
MCwgTUFLRUxQQVJBTSh4LCB5KSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0
ZU1vdXNlTW92ZSh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCBXS0V2ZW50TW9kaWZpZXJzKQorewor
ICAgIEhXTkQgd2luZG93ID0gV0tWaWV3R2V0V2luZG93KG1fdmlldyk7CisKKyAgICA6OlNlbmRN
ZXNzYWdlVyh3aW5kb3csIFdNX01PVVNFTU9WRSwgMCwgTUFLRUxQQVJBTSh4LCB5KSk7Cit9CisK
K0xSRVNVTFQgUGxhdGZvcm1XZWJWaWV3Ojp3bmRQcm9jKEhXTkQgaFduZCwgVUlOVCBtZXNzYWdl
LCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQoreworICAgIFBsYXRmb3JtV2ViVmlldyog
d2ViVmlldzsKKyAgICBpZiAobWVzc2FnZSA9PSBXTV9DUkVBVEUpIHsKKyAgICAgICAgQ1JFQVRF
U1RSVUNUKiBjcmVhdGVTdHJ1Y3QgPSByZWludGVycHJldF9jYXN0PENSRUFURVNUUlVDVCo+KGxQ
YXJhbSk7CisgICAgICAgIHdlYlZpZXcgPSBzdGF0aWNfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPihj
cmVhdGVTdHJ1Y3QtPmxwQ3JlYXRlUGFyYW1zKTsKKyAgICAgICAgOjpTZXRQcm9wVyhoV25kLCB3
ZWJWaWV3UG9pbnRlclByb3BlcnR5LCB3ZWJWaWV3KTsKKyAgICB9IGVsc2UKKyAgICAgICAgd2Vi
VmlldyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UGxhdGZvcm1XZWJWaWV3Kj4oOjpHZXRQcm9wVyhoV25k
LCB3ZWJWaWV3UG9pbnRlclByb3BlcnR5KSk7CisKKyAgICBpZiAobWVzc2FnZSA9PSBXTV9OQ0RF
U1RST1kpCisgICAgICAgIDo6UmVtb3ZlUHJvcFcoaFduZCwgd2ViVmlld1BvaW50ZXJQcm9wZXJ0
eSk7CisKKyAgICByZXR1cm4gOjpEZWZXaW5kb3dQcm9jVyhoV25kLCBtZXNzYWdlLCB3UGFyYW0s
IGxQYXJhbSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1V0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL3dpbi9VdGlsaXRpZXNXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0M2ZmOWFlY2Y3NDgyZjli
NWQ0NjBiOThlMzdhODZkY2U4Zjg5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL3dpbi9VdGlsaXRpZXNXaW4uY3BwCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlV0aWxpdGllcy5oIgorCisjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworbmFtZXNw
YWNlIFV0aWwgeworCit2b2lkIHJ1bihib29sKiBkb25lKQoreworICAgIHdoaWxlICghKmRvbmUp
IHsKKyAgICAgICAgTVNHIG1lc3NhZ2U7CisgICAgICAgIEJPT0wgcmVzdWx0ID0gR2V0TWVzc2Fn
ZSgmbWVzc2FnZSwgMCwgMCwgMCk7CisgICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIFRyYW5zbGF0ZU1lc3NhZ2UoJm1lc3NhZ2UpOworICAgICAgICBEaXNw
YXRjaE1lc3NhZ2UoJm1lc3NhZ2UpOworICAgIH0KK30KKwordm9pZCBzcGluUnVuTG9vcCh1aW50
NjRfdCBjb3VudCkKK3sKKyAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykg
eworICAgICAgICBNU0cgbWVzc2FnZTsKKyAgICAgICAgQk9PTCByZXN1bHQgPSBHZXRNZXNzYWdl
KCZtZXNzYWdlLCAwLCAwLCAwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgVHJhbnNsYXRlTWVzc2FnZSgmbWVzc2FnZSk7CisgICAgICAgIERpc3Bh
dGNoTWVzc2FnZSgmbWVzc2FnZSk7CisgICAgfQorfQorCit2b2lkIHNsZWVwKGRvdWJsZSBzZWNv
bmRzKQoreworICAgIFdURjo6c2xlZXAoU2Vjb25kcyhzZWNvbmRzKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFV0aWwKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338077</attachid>
            <date>2018-04-16 21:23:05 -0700</date>
            <delta_ts>2018-04-16 21:23:05 -0700</delta_ts>
            <desc>Patch to land</desc>
            <filename>bug-184524-20180417132304.patch</filename>
            <type>text/plain</type>
            <size>18905</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwNjk3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWE5NjY4ZDk1Yjc0NzA5MjcxNmI4MWY4YmQ5OWU5MjZl
YjRiZTkwMy4uMzhiNTA3MGMyOTZkODMyZmZjODE4YmIyMzQzNjRkZTBkN2NhZGI3ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDE4LTA0LTE2ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29t
PgorCisgICAgICAgIFtXaW5DYWlyb11bVGVzdFdlYktpdEFQSV0gSW1wbGVtZW50IFBsYXRmb3Jt
V2ViVmlldyBmb3IgVGVzdFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg0NTI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3Rl
bnNlbi4KKworICAgICAgICBSZXN1cnJlY3QgUGxhdGZvcm1XZWJWaWV3IGZvciBXaW5kb3dzIHBv
cnQgd2hpY2ggd2FzIHJlbW92ZWQgaW4gQnVnIDEwNDYwNy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9y
bVdpbi5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3dpbi9JbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXJXaW4uY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkluamVjdGVk
QnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHA6IEFkZGVkLgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VXRpbDo6bW9kdWxlRGlyZWN0b3J5KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlV0aWw6OmNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpVUkxGb3JOb25FeGlzdGVudFJlc291cmNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlV0aWw6OmlzS2V5RG93bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS93aW4vUGxhdGZv
cm1XZWJWaWV3V2luLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9y
bVdlYlZpZXc6OnJlZ2lzdGVyV2luZG93Q2xhc3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6UGxhdGZvcm1XZWJWaWV3Ojppbml0aWFsaXplKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6UGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
bGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlU3BhY2ViYXJLZXlQcmVzcyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQWx0S2V5UHJlc3MpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2spOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNlTW92
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnduZFByb2MpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvd2luL1V0aWxpdGllc1dpbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNsZWVw
KToKKwogMjAxOC0wNC0xNiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMYXlvdXRSZWxvYWRlZF0gSW50cm9kdWNlIGZyYWdtZW50YXRpb24gc3RhdGUvY29udGV4
dC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmggYi9U
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmlldy5oCmluZGV4IGZhM2MwNWM2ZGM1NjRh
YWNkNjE2NDEyNDJiMGQzYzgzOWQ1NmRhZjMuLjZiMzlkYzIwMjg3N2NkNmUyMjdjN2I1NjczMDdi
YWRiOGY0YzA4MzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJW
aWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNTIs
NiArNTIsOSBAQCBjbGFzcyBIZWFkbGVzc1ZpZXdCYWNrZW5kOwogc3RydWN0IHdwZV92aWV3X2Jh
Y2tlbmQ7CiB0eXBlZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgSGVhZGxl
c3NWaWV3QmFja2VuZCAqUGxhdGZvcm1XaW5kb3c7CisjZWxpZiBQTEFURk9STShXSU4pCit0eXBl
ZGVmIFdLVmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKK3R5cGVkZWYgSFdORCBQbGF0Zm9ybVdpbmRv
dzsKICNlbmRpZgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBAIC04Miw5ICs4NSwxMyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIGluaXRpYWxp
emUoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgQ2xhc3Mgd2tWaWV3U3ViY2xhc3MpOwotI2VsaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCisjZWxpZiBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKFdQRSkgfHwgUExBVEZPUk0oV0lOKQogICAgIHZvaWQgaW5pdGlhbGl6ZShXS1BhZ2VD
b25maWd1cmF0aW9uUmVmKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFdJTikKKyAgICBzdGF0aWMg
dm9pZCByZWdpc3RlcldpbmRvd0NsYXNzKCk7CisgICAgc3RhdGljIExSRVNVTFQgQ0FMTEJBQ0sg
d25kUHJvYyhIV05ELCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNKTsKKyNlbmRpZgogCiAg
ICAgUGxhdGZvcm1XS1ZpZXcgbV92aWV3OwogICAgIFBsYXRmb3JtV2luZG93IG1fd2luZG93Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggODQ4NmFiOTlmMDgwYzAyYTlh
MmMyMTZiMmY0NTQwZjc0MDExNjgwZS4uYzhiNDRkYmRkMDliZjU2ZTI1NmNkZGE0ZGYxMDdmODM5
M2VjZWUxZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFr
ZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0xNjIsNiAr
MTYyLDM4IEBAIGlmIChFTkFCTEVfV0VCS0lUX0xFR0FDWSkKICAgICBhZGRfZGVwZW5kZW5jaWVz
KFRlc3RXZWJLaXRMZWdhY3kgVGVzdFdlYktpdExlZ2FjeUxpYikKIGVuZGlmICgpCiAKK2lmIChF
TkFCTEVfV0VCS0lUKQorICAgIHNldChidW5kbGVfaGFybmVzc19TT1VSQ0VTCisgICAgICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L3dpbi9VdGlsaXRpZXNXaW4uY3BwCisgICAgICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L3dpbi9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJXaW4uY3BwCisgICAgICAg
ICR7VEVTVFdFQktJVEFQSV9ESVJ9L3dpbi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAKKyAgICAp
CisKKyAgICBzZXQod2Via2l0X2FwaV9oYXJuZXNzX1NPVVJDRVMKKyAgICAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vd2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcAorICAgICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNwcAorICAgICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS93aW4vVXRpbGl0aWVzV2luLmNwcAorICAgICkKKworICAgIGFkZF9saWJy
YXJ5KFRlc3RXZWJLaXRMaWIgU0hBUkVECisgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L3dp
bi9tYWluLmNwcAorICAgICAgICAke3Rlc3Rfd2Via2l0X2FwaV9TT1VSQ0VTfQorICAgICkKKwor
ICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhUZXN0V2ViS2l0TGliICR7dGVzdF93ZWJraXRfYXBp
X0xJQlJBUklFU30pCisKKyAgICBhZGRfZXhlY3V0YWJsZShUZXN0V2ViS2l0CisgICAgICAgICR7
VE9PTFNfRElSfS93aW4vRExMTGF1bmNoZXIvRExMTGF1bmNoZXJNYWluLmNwcAorICAgICkKKyAg
ICB0YXJnZXRfbGlua19saWJyYXJpZXMoVGVzdFdlYktpdCBzaGx3YXBpKQorCisgICAgYWRkX3Rl
c3QoVGVzdFdlYktpdCAke1RFU1RXRUJLSVRBUElfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS9X
ZWJLaXQvVGVzdFdlYktpdCkKKyAgICBzZXRfdGVzdHNfcHJvcGVydGllcyhUZXN0V2ViS2l0IFBS
T1BFUlRJRVMgVElNRU9VVCA2MCkKKyAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoVGVzdFdlYktp
dCBQUk9QRVJUSUVTIFJVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWSAke1RFU1RXRUJLSVRBUElfUlVO
VElNRV9PVVRQVVRfRElSRUNUT1JZfS9XZWJLaXQpCisKKyAgICBhZGRfZGVwZW5kZW5jaWVzKFRl
c3RXZWJLaXQgVGVzdFdlYktpdEFQSUJhc2UpCitlbmRpZiAoKQorCiBzZXQodGVzdF9tYWluX1NP
VVJDRVMKICAgICAke1RPT0xTX0RJUn0vd2luL0RMTExhdW5jaGVyL0RMTExhdW5jaGVyTWFpbi5j
cHAKICkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL0luamVjdGVkQnVuZGxl
Q29udHJvbGxlcldpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9JbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXJXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkNzU5ODYyYWViNDdkMzIwMTlkMmZhOWJj
MDIzY2Q2MGU1YzJiNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dp
bi9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJXaW4uY3BwCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3ZvaWQgSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemUoKQoreworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3dp
bi9QbGF0Zm9ybVV0aWxpdGllc1dpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9QbGF0
Zm9ybVV0aWxpdGllc1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY3NTVjMzJjOGMyZTJlMGQzNzlkM2U1
ZjA3Y2M2YjliZGNjMTg2NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
d2luL1BsYXRmb3JtVXRpbGl0aWVzV2luLmNwcApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorCisjaW5jbHVkZSA8U2hsd2FwaS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvd2luL1dDaGFy
U3RyaW5nRXh0cmFzLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK25hbWVzcGFjZSBV
dGlsIHsKKworc3RhdGljIFN0cmluZyBtb2R1bGVEaXJlY3RvcnkoKQoreworICAgIGNvbnN0ZXhw
ciBzaXplX3QgYnVmZmVyTGVuZ3RoID0gX01BWF9QQVRIICsgMTsKKyAgICB3Y2hhcl90IGZpbGVu
YW1lW2J1ZmZlckxlbmd0aF07CisgICAgYXV0byBsZW4gPSBHZXRNb2R1bGVGaWxlTmFtZShudWxs
cHRyLCBmaWxlbmFtZSwgYnVmZmVyTGVuZ3RoKTsKKyAgICBBU1NFUlQobGVuID4gMCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkZpbGVTeXN0ZW06OmRpcmVjdG9yeU5hbWUod2NoYXJUb1N0cmluZyhm
aWxlbmFtZSwgbGVuKSk7Cit9CisKK1dLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0
aCgpCit7CisgICAgYXV0byBwYXRoID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KG1vZHVsZURpcmVjdG9yeSgpLCBTdHJpbmcoTCJUZXN0V2ViS2l0QVBJSW5q
ZWN0ZWRCdW5kbGUuZGxsIikpOworICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhwYXRoLnV0ZjgoKS5kYXRhKCkpOworfQorCitXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNv
dXJjZShjb25zdCBjaGFyKiByZXNvdXJjZSwgY29uc3QgY2hhciogZXh0ZW5zaW9uKQoreworICAg
IFN0cmluZyBmaWxlbmFtZSA9IFN0cmluZzo6Zm9ybWF0KCIuLlxcLi5cXC4uXFxUb29sc1xcVGVz
dFdlYktpdEFQSVxcVGVzdHNcXFdlYktpdFxcJXMuJXMiLCByZXNvdXJjZSwgZXh0ZW5zaW9uKTsK
KyAgICBhdXRvIHVybCA9IFdlYkNvcmU6OlVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChX
ZWJDb3JlOjpGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobW9kdWxlRGlyZWN0
b3J5KCksIGZpbGVuYW1lKSk7CisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKK30KKworV0tVUkxSZWYgVVJMRm9yTm9uRXhp
c3RlbnRSZXNvdXJjZSgpCit7CisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJmaWxlOi8vL2RvZXMtbm90LWV4aXN0Lmh0bWwiKTsKK30KKworYm9vbCBpc0tleURvd24oV0tO
YXRpdmVFdmVudFB0ciBldmVudCkKK3sKKyAgICAvLyBGSVhNRQorICAgIHJldHVybiBmYWxzZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vUGxhdGZvcm1XZWJWaWV3V2luLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWMwYzY4OWUxNjE1YjkxMTQ3YmNlMDliZTdjNzY0N2Q1N2FiYmEyNwotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvd2luL1BsYXRmb3JtV2ViVmlld1dpbi5jcHAK
QEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIu
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgY29uc3Qgd2NoYXJfdCog
aG9zdFdpbmRvd0NsYXNzTmFtZSA9IEwib3JnLldlYktpdC5UZXN0V2ViS2l0QVBJLlBsYXRmb3Jt
V2ViVmlld0hvc3RXaW5kb3ciOworc3RhdGljIGNvbnN0IHdjaGFyX3QqIHdlYlZpZXdQb2ludGVy
UHJvcGVydHkgPSBMIm9yZy5XZWJLaXQuVGVzdFdlYktpdEFQSS5QbGF0Zm9ybVdlYlZpZXcuSW5z
dGFuY2VQb2ludGVyIjsKKworLy8gVGhlc2Ugb2Zmc2V0cyBjb21lIGZyb20gcm9tIDxodHRwOi8v
bXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2NDYyODAoVlMuODUpLmFzcHg+Lgor
c3RhdGljIGNvbnN0IHNpemVfdCByZXBlYXRDb3VudEJpdE9mZnNldCA9IDA7CitzdGF0aWMgY29u
c3Qgc2l6ZV90IHNjYW5Db2RlQml0T2Zmc2V0ID0gMTY7CitzdGF0aWMgY29uc3Qgc2l6ZV90IGNv
bnRleHRDb2RlQml0T2Zmc2V0ID0gMjk7CitzdGF0aWMgY29uc3Qgc2l6ZV90IHByZXZpb3VzU3Rh
dGVCaXRPZmZzZXQgPSAzMDsKK3N0YXRpYyBjb25zdCBzaXplX3QgdHJhbnNpdGlvblN0YXRlQml0
T2Zmc2V0ID0gMzE7CisKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZWdpc3RlcldpbmRvd0NsYXNz
KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKKyAgICBpZiAoaW5pdGlhbGl6ZWQp
CisgICAgICAgIHJldHVybjsKKyAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyAgICBXTkRDTEFT
U0VYVyB3bmRDbGFzcyA9IHswfTsKKyAgICB3bmRDbGFzcy5jYlNpemUgPSBzaXplb2Yod25kQ2xh
c3MpOworICAgIHduZENsYXNzLnN0eWxlID0gQ1NfSFJFRFJBVyB8IENTX1ZSRURSQVc7CisgICAg
d25kQ2xhc3MubHBmblduZFByb2MgPSB3bmRQcm9jOworICAgIHduZENsYXNzLmhDdXJzb3IgPSBM
b2FkQ3Vyc29yKDAsIElEQ19BUlJPVyk7CisgICAgd25kQ2xhc3MubHBzekNsYXNzTmFtZSA9IGhv
c3RXaW5kb3dDbGFzc05hbWU7CisKKyAgICA6OlJlZ2lzdGVyQ2xhc3NFeFcoJnduZENsYXNzKTsK
K30KKworUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKK3sKKyAgICBXS1JldGFpblB0cjxX
S1BhZ2VDb25maWd1cmF0aW9uUmVmPiBjb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VDb25m
aWd1cmF0aW9uQ3JlYXRlKCkpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KGNv
bmZpZ3VyYXRpb24uZ2V0KCksIGNvbnRleHRSZWYpOworICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25T
ZXRQYWdlR3JvdXAoY29uZmlndXJhdGlvbi5nZXQoKSwgcGFnZUdyb3VwUmVmKTsKKworICAgIGlu
aXRpYWxpemUoY29uZmlndXJhdGlvbi5nZXQoKSk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6UGxh
dGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sKKyAg
ICBpbml0aWFsaXplKGNvbmZpZ3VyYXRpb24pOworfQorCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRm
b3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpCit7CisgICAgV0tSZXRhaW5QdHI8V0tQ
YWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmln
dXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25m
aWd1cmF0aW9uLmdldCgpLCBXS1BhZ2VHZXRDb250ZXh0KHJlbGF0ZWRQYWdlKSk7CisgICAgV0tQ
YWdlQ29uZmlndXJhdGlvblNldFBhZ2VHcm91cChjb25maWd1cmF0aW9uLmdldCgpLCBXS1BhZ2VH
ZXRQYWdlR3JvdXAocmVsYXRlZFBhZ2UpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVs
YXRlZFBhZ2UoY29uZmlndXJhdGlvbi5nZXQoKSwgcmVsYXRlZFBhZ2UpOworCisgICAgaW5pdGlh
bGl6ZShjb25maWd1cmF0aW9uLmdldCgpKTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6Omlu
aXRpYWxpemUoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJl
Z2lzdGVyV2luZG93Q2xhc3MoKTsKKworICAgIFJFQ1Qgdmlld1JlY3QgPSB7MCwgMCwgODAwLCA2
MDB9OworICAgIG1fd2luZG93ID0gQ3JlYXRlV2luZG93RXhXKDAsIGhvc3RXaW5kb3dDbGFzc05h
bWUsIEwiVGVzdFdlYktpdEFQSSIsIFdTX09WRVJMQVBQRURXSU5ET1csIHZpZXdSZWN0LmxlZnQs
IHZpZXdSZWN0LnRvcCwgdmlld1JlY3QucmlnaHQsIHZpZXdSZWN0LmJvdHRvbSwgMCwgMCwgMCwg
dGhpcyk7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKHZpZXdSZWN0LCBjb25maWd1cmF0aW9u
LCBtX3dpbmRvdyk7Cit9CisKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCit7
CisgICAgOjpEZXN0cm95V2luZG93KG1fd2luZG93KTsKK30KKworV0tQYWdlUmVmIFBsYXRmb3Jt
V2ViVmlldzo6cGFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdLVmlld0dldFBhZ2UobV92aWV3
KTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2lnbmVkIHdpZHRoLCB1
bnNpZ25lZCBoZWlnaHQpCit7CisgICAgOjpTZXRXaW5kb3dQb3MoV0tWaWV3R2V0V2luZG93KG1f
dmlldyksIDAsIDAsIDAsIHdpZHRoLCBoZWlnaHQsIFNXUF9OT01PVkUgfCBTV1BfTk9aT1JERVIg
fCBTV1BfTk9BQ1RJVkFURSB8IFNXUF9OT0NPUFlCSVRTKTsKK30KKwordm9pZCBQbGF0Zm9ybVdl
YlZpZXc6OnNpbXVsYXRlU3BhY2ViYXJLZXlQcmVzcygpCit7CisgICAgSFdORCB3aW5kb3cgPSBX
S1ZpZXdHZXRXaW5kb3cobV92aWV3KTsKKworICAgIC8vIFRoZXNlIHZhbHVlcyBtYXRjaCB3aGF0
IGhhcHBlbnMgd2hlbiB5b3UgcHJlc3MgdGhlIHNwYWNlYmFyIGluIE5vdGVwYWQsIGFzIG9ic2Vy
dmVkIGJ5IFNweSsrLgorICAgIDo6U2VuZE1lc3NhZ2VXKHdpbmRvdywgV01fS0VZRE9XTiwgVktf
U1BBQ0UsICgxIDw8IHJlcGVhdENvdW50Qml0T2Zmc2V0KSB8ICgzOSA8PCBzY2FuQ29kZUJpdE9m
ZnNldCkpOworICAgIDo6U2VuZE1lc3NhZ2VXKHdpbmRvdywgV01fQ0hBUiwgJyAnLCAoMSA8PCBy
ZXBlYXRDb3VudEJpdE9mZnNldCkgfCAoMzkgPDwgc2NhbkNvZGVCaXRPZmZzZXQpKTsKKyAgICA6
OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX0tFWVVQLCBWS19TUEFDRSwgKDEgPDwgcmVwZWF0Q291
bnRCaXRPZmZzZXQpIHwgKDM5IDw8IHNjYW5Db2RlQml0T2Zmc2V0KSB8ICgxIDw8IHByZXZpb3Vz
U3RhdGVCaXRPZmZzZXQpIHwgKDEgPDwgdHJhbnNpdGlvblN0YXRlQml0T2Zmc2V0KSk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZUFsdEtleVByZXNzKCkKK3sKKyAgICBIV05E
IHdpbmRvdyA9IFdLVmlld0dldFdpbmRvdyhtX3ZpZXcpOworCisgICAgLy8gVGhlc2UgdmFsdWVz
IG1hdGNoIHdoYXQgaGFwcGVucyB3aGVuIHlvdSBwcmVzcyB0aGUgQWx0IGtleSBpbiBOb3RlcGFk
LCBhcyBvYnNlcnZlZCBieSBTcHkrKy4KKyAgICA6OlNlbmRNZXNzYWdlVyh3aW5kb3csIFdNX1NZ
U0tFWURPV04sIFZLX01FTlUsICgxIDw8IHJlcGVhdENvdW50Qml0T2Zmc2V0KSB8ICgzOCA8PCBz
Y2FuQ29kZUJpdE9mZnNldCkgfCAoMSA8PCBjb250ZXh0Q29kZUJpdE9mZnNldCkpOworICAgIDo6
U2VuZE1lc3NhZ2VXKHdpbmRvdywgV01fU1lTS0VZVVAsIFZLX01FTlUsICgxIDw8IHJlcGVhdENv
dW50Qml0T2Zmc2V0KSB8ICgzOCA8PCBzY2FuQ29kZUJpdE9mZnNldCkgfCAoMSA8PCBwcmV2aW91
c1N0YXRlQml0T2Zmc2V0KSB8ICgxIDw8IHRyYW5zaXRpb25TdGF0ZUJpdE9mZnNldCkpOworfQor
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6c2ltdWxhdGVSaWdodENsaWNrKHVuc2lnbmVkIHgsIHVu
c2lnbmVkIHkpCit7CisgICAgSFdORCB3aW5kb3cgPSBXS1ZpZXdHZXRXaW5kb3cobV92aWV3KTsK
KworICAgIDo6U2VuZE1lc3NhZ2VXKHdpbmRvdywgV01fUkJVVFRPTkRPV04sIDAsIE1BS0VMUEFS
QU0oeCwgeSkpOworICAgIDo6U2VuZE1lc3NhZ2VXKHdpbmRvdywgV01fUkJVVFRPTlVQLCAwLCBN
QUtFTFBBUkFNKHgsIHkpKTsKK30KKwordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91
c2VNb3ZlKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIFdLRXZlbnRNb2RpZmllcnMpCit7CisgICAg
SFdORCB3aW5kb3cgPSBXS1ZpZXdHZXRXaW5kb3cobV92aWV3KTsKKworICAgIDo6U2VuZE1lc3Nh
Z2VXKHdpbmRvdywgV01fTU9VU0VNT1ZFLCAwLCBNQUtFTFBBUkFNKHgsIHkpKTsKK30KKworTFJF
U1VMVCBQbGF0Zm9ybVdlYlZpZXc6OnduZFByb2MoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCit7CisgICAgUGxhdGZvcm1XZWJWaWV3KiB3ZWJW
aWV3OworICAgIGlmIChtZXNzYWdlID09IFdNX0NSRUFURSkgeworICAgICAgICBDUkVBVEVTVFJV
Q1QqIGNyZWF0ZVN0cnVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q1JFQVRFU1RSVUNUKj4obFBhcmFt
KTsKKyAgICAgICAgd2ViVmlldyA9IHN0YXRpY19jYXN0PFBsYXRmb3JtV2ViVmlldyo+KGNyZWF0
ZVN0cnVjdC0+bHBDcmVhdGVQYXJhbXMpOworICAgICAgICA6OlNldFByb3BXKGhXbmQsIHdlYlZp
ZXdQb2ludGVyUHJvcGVydHksIHdlYlZpZXcpOworICAgIH0gZWxzZQorICAgICAgICB3ZWJWaWV3
ID0gcmVpbnRlcnByZXRfY2FzdDxQbGF0Zm9ybVdlYlZpZXcqPig6OkdldFByb3BXKGhXbmQsIHdl
YlZpZXdQb2ludGVyUHJvcGVydHkpKTsKKworICAgIGlmIChtZXNzYWdlID09IFdNX05DREVTVFJP
WSkKKyAgICAgICAgOjpSZW1vdmVQcm9wVyhoV25kLCB3ZWJWaWV3UG9pbnRlclByb3BlcnR5KTsK
KworICAgIHJldHVybiA6OkRlZldpbmRvd1Byb2NXKGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBh
cmFtKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS93aW4vVXRpbGl0aWVzV2luLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1V0aWxpdGllc1dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQzZmY5YWVjZjc0ODJmOWI1ZDQ2
MGI5OGUzN2E4NmRjZThmODkxMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvd2luL1V0aWxpdGllc1dpbi5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXRpbGl0aWVzLmgiCisKKyNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CituYW1lc3BhY2Ug
VXRpbCB7CisKK3ZvaWQgcnVuKGJvb2wqIGRvbmUpCit7CisgICAgd2hpbGUgKCEqZG9uZSkgewor
ICAgICAgICBNU0cgbWVzc2FnZTsKKyAgICAgICAgQk9PTCByZXN1bHQgPSBHZXRNZXNzYWdlKCZt
ZXNzYWdlLCAwLCAwLCAwKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgVHJhbnNsYXRlTWVzc2FnZSgmbWVzc2FnZSk7CisgICAgICAgIERpc3BhdGNo
TWVzc2FnZSgmbWVzc2FnZSk7CisgICAgfQorfQorCit2b2lkIHNwaW5SdW5Mb29wKHVpbnQ2NF90
IGNvdW50KQoreworICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgIE1TRyBtZXNzYWdlOworICAgICAgICBCT09MIHJlc3VsdCA9IEdldE1lc3NhZ2UoJm1l
c3NhZ2UsIDAsIDAsIDApOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBUcmFuc2xhdGVNZXNzYWdlKCZtZXNzYWdlKTsKKyAgICAgICAgRGlzcGF0Y2hN
ZXNzYWdlKCZtZXNzYWdlKTsKKyAgICB9Cit9CisKK3ZvaWQgc2xlZXAoZG91YmxlIHNlY29uZHMp
Cit7CisgICAgV1RGOjpzbGVlcChTZWNvbmRzKHNlY29uZHMpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgVXRpbAorfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>