<?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>186451</bug_id>
          
          <creation_ts>2018-06-08 17:07:14 -0700</creation_ts>
          <short_desc>Add support for webkit-test-runner jscOptions in DumpRenderTree and WebKitTestRunner.</short_desc>
          <delta_ts>2018-06-11 15:16:01 -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>JavaScriptCore</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>186452</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>thorton</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1431499</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-08 17:07:14 -0700</bug_when>
    <thetext>This option can be used by a layout test to specify some JSC runtime options needed by the test e.g. by adding something like this to the top of the html file after the DOCTYPE tag:
    &lt;!-- webkit-test-runner [ jscOptions=--useIntlPluralRules=true ] --&gt;

If more than one option is needed, the options can be specified as a comma separated string e.g.
    &lt;!-- webkit-test-runner [ jscOptions=--useIntlPluralRules=true,--useZombieMode=true ] --&gt;

This only works with JSC options that can be changed at runtime.  Not all JSC options can be changed this way as some options are only checked and set once at VM / process initialization time: changing these types of options may have no effect.  It&apos;s the test writer&apos;s responsibility to determine which options are appropriate for with this webkit-test-runner jscOptions option.

&lt;rdar://problem/40875792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431508</commentid>
    <comment_count>1</comment_count>
      <attachid>342350</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-08 17:21:31 -0700</bug_when>
    <thetext>Created attachment 342350
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431511</commentid>
    <comment_count>2</comment_count>
      <attachid>342350</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-06-08 17:45:42 -0700</bug_when>
    <thetext>Comment on attachment 342350
proposed patch.

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

&gt; Tools/DumpRenderTree/TestOptions.cpp:115
&gt; +        &amp;&amp; other.jscOptions == jscOptions;

It looks to me like you can set these dynamically. Do you actually need to re-create the web view? You might be able to avoid this.

&gt; Tools/WebKitTestRunner/TestOptions.h:95
&gt; +            || jscOptions != options.jscOptions)

It looks to me like you can set these dynamically. Do you actually need to re-create the web view? You might be able to avoid this.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:232
&gt; +            size_t stringLength = WKStringGetLength(jscOptionsString.get());
&gt; +            Vector&lt;char&gt; optionsVector;
&gt; +            optionsVector.resize(stringLength + 1);
&gt; +            WKStringGetUTF8CString(jscOptionsString.get(), optionsVector.data(), stringLength + 1);
&gt; +            String options(optionsVector.data(), stringLength);

How about you just use toWTFString instead of all this madness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432073</commentid>
    <comment_count>3</comment_count>
      <attachid>342350</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-11 15:03:37 -0700</bug_when>
    <thetext>Comment on attachment 342350
proposed patch.

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

&gt;&gt; Tools/DumpRenderTree/TestOptions.cpp:115
&gt;&gt; +        &amp;&amp; other.jscOptions == jscOptions;
&gt; 
&gt; It looks to me like you can set these dynamically. Do you actually need to re-create the web view? You might be able to avoid this.

Unlike the WKTR case below, DRT&apos;s TestOptions::webViewIsCompatibleWithOptions() does not block resetWebViewToConsistentStateBeforeTesting() from being called.  So, we can argue that this change is not needed for the intl JSC options used in this patch.

However, there are some JSC options that only take effect when the JSGlobalObject is constructed.  It is better for the test harness to enable to use of those options as well.  Hence, I would prefer to keep this test condition.

&gt;&gt; Tools/WebKitTestRunner/TestOptions.h:95
&gt;&gt; +            || jscOptions != options.jscOptions)
&gt; 
&gt; It looks to me like you can set these dynamically. Do you actually need to re-create the web view? You might be able to avoid this.

This is needed.  Here&apos;s why:
1. hasSameInitializationOptions(0 is called by viewSupportsOptions().
2. viewSupportsOptions() is called by TestController::ensureViewSupportsOptionsForTest().
3. TestController::ensureViewSupportsOptionsForTest() returns early if viewSupportsOptions() returns true.  This results in TestController::resetStateToConsistentValues() not being called.  As a result, the TestRunner will never apply a different set of jscOptions.

I first observed the need for this when I ran the layout tests with my changes and found that my change did not take effect, and it was due to omitting this change.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:232
&gt;&gt; +            String options(optionsVector.data(), stringLength);
&gt; 
&gt; How about you just use toWTFString instead of all this madness.

Thanks.  I looked for such a conversion utility function but wasn&apos;t able to find it.  I&apos;ve changed the code to use toWTFString().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432077</commentid>
    <comment_count>4</comment_count>
      <attachid>342469</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-11 15:07:01 -0700</bug_when>
    <thetext>Created attachment 342469
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1432079</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-06-11 15:16:01 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r232733: &lt;http://trac.webkit.org/r232733&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342350</attachid>
            <date>2018-06-08 17:21:31 -0700</date>
            <delta_ts>2018-06-11 15:07:01 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-186451.patch</filename>
            <type>text/plain</type>
            <size>19924</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyNjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE4LTA2LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3Igd2Via2l0LXRlc3QtcnVubmVyIGpzY09wdGlvbnMgaW4gRHVtcFJlbmRl
clRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwODc1
NzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVu
aGFuY2Ugc2V0T3B0aW9ucygpIHRvIGJlIGFibGUgdG8gdGFrZSBhIGNvbW1hIHNlcGFyYXRlZCBv
cHRpb25zIHN0cmluZyBpbgorICAgICAgICBhZGRpdGlvbiB0byB3aGl0ZSBzcGFjZSBzZXBhcmF0
ZWQgb3B0aW9ucyBzdHJpbmdzLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6aXNTZXBhcmF0b3IpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRPcHRp
b25zKToKKwogMjAxOC0wNi0wNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUaWVyVXBDaGVja0luamVjdGlvblBoYXNlIHN5c3RlbWF0aWNhbGx5IG5ldmVyIHB1
dHMgdGhlIG91dGVyLW1vc3QgbG9vcCBpbiBhbiBpbm5lciBsb29wJ3MgdmVjdG9yIG9mIG91dGVy
IGxvb3BzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
cmV2aXNpb24gMjMyNjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5OSw2ICs1OTksMTEgQEAgdm9pZCBPcHRpb25zOjpk
dW1wT3B0aW9uc0lmTmVlZGVkKCkKICAgICB9CiB9CiAKK3N0YXRpYyBib29sIGlzU2VwYXJhdG9y
KGNoYXIgYykKK3sKKyAgICByZXR1cm4gaXNBU0NJSVNwYWNlKGMpIHx8IChjID09ICcsJyk7Cit9
CisKIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9ucyhjb25zdCBjaGFyKiBvcHRpb25zU3RyKQogewog
ICAgIFZlY3RvcjxjaGFyKj4gb3B0aW9uczsKQEAgLTYwOSw4ICs2MTQsOCBAQCBib29sIE9wdGlv
bnM6OnNldE9wdGlvbnMoY29uc3QgY2hhciogb3B0CiAgICAgY2hhciogcCA9IG9wdGlvbnNTdHJD
b3B5OwogCiAgICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgLy8gU2tpcCB3aGl0ZSBzcGFj
ZS4KLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgaXNBU0NJSVNwYWNlKCpwKSkKKyAgICAgICAg
Ly8gU2tpcCBzZXBhcmF0b3JzICh3aGl0ZSBzcGFjZSBvciBjb21tYXMpLgorICAgICAgICB3aGls
ZSAocCA8IGVuZCAmJiBpc1NlcGFyYXRvcigqcCkpCiAgICAgICAgICAgICBwKys7CiAgICAgICAg
IGlmIChwID09IGVuZCkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjM3LDggKzY0Miw4IEBAIGJv
b2wgT3B0aW9uczo6c2V0T3B0aW9ucyhjb25zdCBjaGFyKiBvcHQKICAgICAgICAgICAgIGhhc1N0
cmluZ1ZhbHVlID0gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZpbmQgbmV4dCB3aGl0
ZSBzcGFjZS4KLSAgICAgICAgd2hpbGUgKHAgPCBlbmQgJiYgIWlzQVNDSUlTcGFjZSgqcCkpCisg
ICAgICAgIC8vIEZpbmQgbmV4dCBzZXBhcmF0b3IgKHdoaXRlIHNwYWNlIG9yIGNvbW1hcykuCisg
ICAgICAgIHdoaWxlIChwIDwgZW5kICYmICFpc1NlcGFyYXRvcigqcCkpCiAgICAgICAgICAgICBw
Kys7CiAgICAgICAgIGlmICghcCkKICAgICAgICAgICAgIHAgPSBlbmQ7IC8vIE5vIG1vcmUgIiAi
IHNlcGFyYXRvci4gSGVuY2UsIHRoaXMgaXMgdGhlIGxhc3QgYXJnLgpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyNjUzKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTgt
MDYtMDggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBw
b3J0IGZvciB3ZWJraXQtdGVzdC1ydW5uZXIganNjT3B0aW9ucyBpbiBEdW1wUmVuZGVyVHJlZSBh
bmQgV2ViS2l0VGVzdFJ1bm5lci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4NjQ1MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA4NzU3OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBqc2NP
cHRpb25zIG9wdGlvbiBjYW4gYmUgdXNlZCBieSBhIGxheW91dCB0ZXN0IHRvIHNwZWNpZnkgc29t
ZSBKU0MgcnVudGltZQorICAgICAgICBvcHRpb25zIG5lZWRlZCBieSB0aGUgdGVzdCBlLmcuIGJ5
IGFkZGluZyBzb21ldGhpbmcgbGlrZSB0aGlzIHRvIHRoZSB0b3Agb2YgdGhlCisgICAgICAgIGh0
bWwgZmlsZSBhZnRlciB0aGUgRE9DVFlQRSB0YWc6CisgICAgICAgICAgICA8IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VJbnRsUGx1cmFsUnVsZXM9dHJ1ZSBdIC0tPgor
CisgICAgICAgIElmIG1vcmUgdGhhbiBvbmUgb3B0aW9uIGlzIG5lZWRlZCwgdGhlIG9wdGlvbnMg
Y2FuIGJlIHNwZWNpZmllZCBhcyBhIGNvbW1hCisgICAgICAgIHNlcGFyYXRlZCBzdHJpbmcgZS5n
LgorICAgICAgICAgICAgPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNl
SW50bFBsdXJhbFJ1bGVzPXRydWUsLS11c2Vab21iaWVNb2RlPXRydWUgXSAtLT4KKworICAgICAg
ICBUaGlzIG9ubHkgd29ya3Mgd2l0aCBKU0Mgb3B0aW9ucyB0aGF0IGNhbiBiZSBjaGFuZ2VkIGF0
IHJ1bnRpbWUuICBOb3QgYWxsIEpTQworICAgICAgICBvcHRpb25zIGNhbiBiZSBjaGFuZ2VkIHRo
aXMgd2F5IGFzIHNvbWUgb3B0aW9ucyBhcmUgb25seSBjaGVja2VkIGFuZCBzZXQgb25jZSBhdAor
ICAgICAgICBWTSAvIHByb2Nlc3MgaW5pdGlhbGl6YXRpb24gdGltZTogY2hhbmdpbmcgdGhpcyB0
eXBlIG9mIG9wdGlvbnMgbWF5IGhhdmUgbm8KKyAgICAgICAgZWZmZWN0LiAgSXQncyB0aGUgdGVz
dCB3cml0ZXIncyByZXNwb25zaWJpbGl0eSB0byBkZXRlcm1pbmUgd2hpY2ggb3B0aW9ucyBhcmUK
KyAgICAgICAgYXBwcm9wcmlhdGUgZm9yIHdpdGggdGhpcyB3ZWJraXQtdGVzdC1ydW5uZXIganNj
T3B0aW9ucyBvcHRpb24uCisKKyAgICAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBhIHdvcmth
cm91bmQgdW50aWwgd2UgY2FuIGNoYW5nZSB0aGUgcnVuLXdlYmtpdC10ZXN0cworICAgICAgICBz
Y3JpcHRzIHRvIHBhcnNlIHRoZSBvcHRpb24gYW5kIGFwcGx5IGl0IHRvIGEgbmV3IGxhdW5jaCBv
ZiBEUlQgb3IgV0tUUjoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4NjQ1MgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlvbnMuY3Bw
OgorICAgICAgICAoVGVzdE9wdGlvbnM6OlRlc3RPcHRpb25zKToKKyAgICAgICAgKFRlc3RPcHRp
b25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlvbnMgY29uc3QpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAoc2V0SlNDT3B0aW9ucyk6CisgICAgICAgIChy
ZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcpOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAg
ICAoV1RSOjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChX
VFI6OnVwZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWFkZXIpOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKFdUUjo6VGVzdE9wdGlvbnM6Omhhc1Nh
bWVJbml0aWFsaXphdGlvbk9wdGlvbnMgY29uc3QpOgorCiAyMDE4LTA2LTA4ICBBbGljaWEgQm95
YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVcGRhdGUgdG8g
bGlidmEtMi4xLjAgaW4gamhidWlsZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcAkocmV2aXNpb24gMjMyNjAzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9wdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwMywxMSArMTAzLDE0IEBAIFRlc3RPcHRpb25zOjpUZXN0
T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmkKICAgICAgICAgICAgIGVuYWJsZVdlYkFuaW1hdGlvbnND
U1NJbnRlZ3JhdGlvbiA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CiAgICAg
ICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlQ29sb3JGaWx0ZXIiKQogICAgICAgICAgICAgZW5h
YmxlQ29sb3JGaWx0ZXIgPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFsdWUpOworICAg
ICAgICBlbHNlIGlmIChrZXkgPT0gImpzY09wdGlvbnMiKQorICAgICAgICAgICAganNjT3B0aW9u
cyA9IHZhbHVlOwogICAgICAgICBwYWlyU3RhcnQgPSBwYWlyRW5kICsgMTsKICAgICB9CiB9CiAK
IGJvb2wgVGVzdE9wdGlvbnM6OndlYlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBU
ZXN0T3B0aW9ucyYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG90aGVyLmxheWVyQmFja2Vk
V2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXc7CisgICAgcmV0dXJuIG90aGVyLmxheWVyQmFj
a2VkV2ViVmlldyA9PSBsYXllckJhY2tlZFdlYlZpZXcKKyAgICAgICAgJiYgb3RoZXIuanNjT3B0
aW9ucyA9PSBqc2NPcHRpb25zOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5o
CShyZXZpc2lvbiAyMzI2MDMpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQzLDYgKzQzLDcgQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAgICBi
b29sIGR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd0Ny
b3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyB7IGZhbHNlIH07CiAgICAg
Ym9vbCBlbmFibGVDb2xvckZpbHRlciB7IGZhbHNlIH07CisgICAgc3RkOjpzdHJpbmcganNjT3B0
aW9uczsKIAogICAgIFRlc3RPcHRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwsIGNv
bnN0IHN0ZDo6c3RyaW5nJiBhYnNvbHV0ZVBhdGgpOwogICAgIGJvb2wgd2ViVmlld0lzQ29tcGF0
aWJsZVdpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3Q7CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAyMzI2MDMpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDcgQEAKICNpbXBvcnQgIldvcmtRdWV1ZS5oIgogI2ltcG9ydCAiV29y
a1F1ZXVlSXRlbS5oIgogI2ltcG9ydCA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMuaD4KICNpbXBvcnQgPEphdmFTY3JpcHRD
b3JlL1Rlc3RSdW5uZXJVdGlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Mb2dJbml0aWFsaXphdGlv
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KQEAgLTk2LDYg
Kzk3LDcgQEAKICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CisjaW1wb3J0IDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
ICFQTEFURk9STShJT1MpCkBAIC0xNzY5LDYgKzE3NzEsMjEgQEAgc3RhdGljIGJvb2wgc2hvdWxk
TWFrZVZpZXdwb3J0RmxleGlibGUoYwogfQogI2VuZGlmCiAKK3N0YXRpYyB2b2lkIHNldEpTQ09w
dGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgc3RhdGljIFdURjo6U3Ry
aW5nQnVpbGRlciBzYXZlZE9wdGlvbnM7CisKKyAgICBpZiAoIXNhdmVkT3B0aW9ucy5pc0VtcHR5
KCkpIHsKKyAgICAgICAgSlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKHNhdmVkT3B0aW9ucy50b1N0
cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgc2F2ZWRPcHRpb25zLmNsZWFyKCk7Cisg
ICAgfQorCisgICAgaWYgKG9wdGlvbnMuanNjT3B0aW9ucy5sZW5ndGgoKSkgeworICAgICAgICBK
U0M6Ok9wdGlvbnM6OmR1bXBBbGxPcHRpb25zSW5BTGluZShzYXZlZE9wdGlvbnMpOworICAgICAg
ICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0aW9ucy5qc2NPcHRpb25zLmNfc3RyKCkpOwor
ICAgIH0KK30KKwogc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGVCZWZv
cmVUZXN0aW5nKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwpAQCAtMTg0OCw2ICsxODY1LDggQEAgc3RhdGlj
IHZvaWQgcmVzZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdAogICAgIFtbTlNQYXN0ZWJvYXJkIGdl
bmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0Ok5T
U3RyaW5nUGJvYXJkVHlwZV0gb3duZXI6bmlsXTsKICNlbmRpZgogCisgICAgc2V0SlNDT3B0aW9u
cyhvcHRpb25zKTsKKwogICAgIFttYWluRnJhbWUgX2NsZWFyT3BlbmVyXTsKIAogICAgIHNldFNw
ZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKGZhbHNlKTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzI2MDMpCisrKyBUb29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTQtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTgwNCw2ICs4MDQsMTIgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lz
dAogICAgIH0KICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKHJlc2V0TWVzc2FnZUJvZHkuZ2V0KCks
IGFsbG93ZWRIb3N0c0tleS5nZXQoKSwgYWxsb3dlZEhvc3RzVmFsdWUuZ2V0KCkpOwogCisgICAg
aWYgKG9wdGlvbnMuanNjT3B0aW9ucy5sZW5ndGgoKSkgeworICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4ganNjT3B0aW9uc0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkpTQ09wdGlvbnMiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBqc2NPcHRpb25zVmFsdWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KG9wdGlvbnMuanNjT3B0aW9ucy5jX3N0cigpKSk7CisgICAgICAgIFdLRGljdGlvbmFyeVNldEl0
ZW0ocmVzZXRNZXNzYWdlQm9keS5nZXQoKSwganNjT3B0aW9uc0tleS5nZXQoKSwganNjT3B0aW9u
c1ZhbHVlLmdldCgpKTsKKyAgICB9CisKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIHJlc2V0TWVzc2FnZUJvZHkuZ2V0KCkpOwogCiAgICAgV0tDb250
ZXh0U2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
Y29udGV4dCgpLCBmYWxzZSk7CkBAIC0xMDc4LDUwICsxMDg0LDUyIEBAIHN0YXRpYyB2b2lkIHVw
ZGF0ZVRlc3RPcHRpb25zRnJvbVRlc3RIZWEKICAgICAgICAgYXV0byB2YWx1ZSA9IHBhaXJTdHJp
bmcuc3Vic3RyKGVxdWFsc0xvY2F0aW9uICsgMSwgcGFpckVuZCAtIChlcXVhbHNMb2NhdGlvbiAr
IDEpKTsKICAgICAgICAgaWYgKGtleSA9PSAibGFuZ3VhZ2UiKQogICAgICAgICAgICAgU3RyaW5n
KHZhbHVlLmNfc3RyKCkpLnNwbGl0KCIsIiwgZmFsc2UsIHRlc3RPcHRpb25zLm92ZXJyaWRlTGFu
Z3VhZ2VzKTsKLSAgICAgICAgaWYgKGtleSA9PSAidXNlVGhyZWFkZWRTY3JvbGxpbmciKQorICAg
ICAgICBlbHNlIGlmIChrZXkgPT0gInVzZVRocmVhZGVkU2Nyb2xsaW5nIikKICAgICAgICAgICAg
IHRlc3RPcHRpb25zLnVzZVRocmVhZGVkU2Nyb2xsaW5nID0gcGFyc2VCb29sZWFuVGVzdEhlYWRl
clZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAidXNlQWNjZWxlcmF0ZWREcmF3aW5n
IikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ1c2VBY2NlbGVyYXRlZERyYXdpbmciKQogICAg
ICAgICAgICAgdGVzdE9wdGlvbnMudXNlQWNjZWxlcmF0ZWREcmF3aW5nID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAidXNlRmxleGlibGVW
aWV3cG9ydCIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAidXNlRmxleGlibGVWaWV3cG9ydCIp
CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy51c2VGbGV4aWJsZVZpZXdwb3J0ID0gcGFyc2VCb29s
ZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAidXNlRGF0YURl
dGVjdGlvbiIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAidXNlRGF0YURldGVjdGlvbiIpCiAg
ICAgICAgICAgICB0ZXN0T3B0aW9ucy51c2VEYXRhRGV0ZWN0aW9uID0gcGFyc2VCb29sZWFuVGVz
dEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAidXNlTW9ja1Njcm9sbGJh
cnMiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gInVzZU1vY2tTY3JvbGxiYXJzIikKICAgICAg
ICAgICAgIHRlc3RPcHRpb25zLnVzZU1vY2tTY3JvbGxiYXJzID0gcGFyc2VCb29sZWFuVGVzdEhl
YWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAibmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gIm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtz
IikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiaWdu
b3Jlc1ZpZXdwb3J0U2NhbGVMaW1pdHMiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gImlnbm9y
ZXNWaWV3cG9ydFNjYWxlTGltaXRzIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmlnbm9yZXNW
aWV3cG9ydFNjYWxlTGltaXRzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
LSAgICAgICAgaWYgKGtleSA9PSAidXNlQ2hhcmFjdGVyU2VsZWN0aW9uR3JhbnVsYXJpdHkiKQor
ICAgICAgICBlbHNlIGlmIChrZXkgPT0gInVzZUNoYXJhY3RlclNlbGVjdGlvbkdyYW51bGFyaXR5
IikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLnVzZUNoYXJhY3RlclNlbGVjdGlvbkdyYW51bGFy
aXR5ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtl
eSA9PSAiZW5hYmxlQXR0YWNobWVudEVsZW1lbnQiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0g
ImVuYWJsZUF0dGFjaG1lbnRFbGVtZW50IikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJs
ZUF0dGFjaG1lbnRFbGVtZW50ID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsK
LSAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiKQorICAgICAg
ICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyIikKICAgICAgICAg
ICAgIHRlc3RPcHRpb25zLmVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVyID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlTWVudUl0
ZW1FbGVtZW50IikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVNZW51SXRlbUVsZW1l
bnQiKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMuZW5hYmxlTWVudUl0ZW1FbGVtZW50ID0gcGFy
c2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiZW5h
YmxlTW9kZXJuTWVkaWFDb250cm9scyIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxl
TW9kZXJuTWVkaWFDb250cm9scyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVNb2Rl
cm5NZWRpYUNvbnRyb2xzID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAg
ICAgICAgaWYgKGtleSA9PSAiZW5hYmxlUG9pbnRlckxvY2siKQorICAgICAgICBlbHNlIGlmIChr
ZXkgPT0gImVuYWJsZVBvaW50ZXJMb2NrIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJs
ZVBvaW50ZXJMb2NrID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAg
ICAgaWYgKGtleSA9PSAiZW5hYmxlV2ViQXV0aGVudGljYXRpb24iKQorICAgICAgICBlbHNlIGlm
IChrZXkgPT0gImVuYWJsZVdlYkF1dGhlbnRpY2F0aW9uIikKICAgICAgICAgICAgIHRlc3RPcHRp
b25zLmVuYWJsZVdlYkF1dGhlbnRpY2F0aW9uID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVl
KHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlSXNTZWN1cmVDb250ZXh0QXR0cmli
dXRlIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJc1NlY3VyZUNvbnRleHRBdHRy
aWJ1dGUiKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMuZW5hYmxlSXNTZWN1cmVDb250ZXh0QXR0
cmlidXRlID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYg
KGtleSA9PSAiZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zIikKKyAgICAgICAgZWxzZSBpZiAoa2V5
ID09ICJlbmFibGVJbnNwZWN0b3JBZGRpdGlvbnMiKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMu
ZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyIikKKyAg
ICAgICAgZWxzZSBpZiAoa2V5ID09ICJkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIiKQogICAgICAg
ICAgICAgdGVzdE9wdGlvbnMuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiYXBwbGljYXRpb25N
YW5pZmVzdCIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiYXBwbGljYXRpb25NYW5pZmVzdCIp
CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5hcHBsaWNhdGlvbk1hbmlmZXN0ID0gcGFyc2VTdHJp
bmdUZXN0SGVhZGVyVmFsdWVBc1JlbGF0aXZlUGF0aCh2YWx1ZSwgcGF0aE9yVVJMKTsKLSAgICAg
ICAgaWYgKGtleSA9PSAiYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gImFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNv
dXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmFsbG93
Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRpYWxzID0gcGFyc2VCb29sZWFu
VGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlV2ViQW5p
bWF0aW9uc0NTU0ludGVncmF0aW9uIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVX
ZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb24iKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMuZW5h
YmxlV2ViQW5pbWF0aW9uc0NTU0ludGVncmF0aW9uID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZh
bHVlKHZhbHVlKTsKLSAgICAgICAgaWYgKGtleSA9PSAiZW5hYmxlUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24iKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZVByb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZVByb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKLSAgICAgICAgaWYg
KGtleSA9PSAiZW5hYmxlQ29sb3JGaWx0ZXIiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVu
YWJsZUNvbG9yRmlsdGVyIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZUNvbG9yRmls
dGVyID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZhbHVlKTsKKyAgICAgICAgZWxzZSBp
ZiAoa2V5ID09ICJqc2NPcHRpb25zIikKKyAgICAgICAgICAgIHRlc3RPcHRpb25zLmpzY09wdGlv
bnMgPSB2YWx1ZTsKICAgICAgICAgcGFpclN0YXJ0ID0gcGFpckVuZCArIDE7CiAgICAgfQogfQpJ
bmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAkocmV2aXNpb24gMjMyNjAzKQor
KysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYy
LDcgKzYyLDggQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciB7IDEgfTsKICAgICBWZWN0b3I8U3RyaW5nPiBvdmVycmlkZUxhbmd1YWdlczsKICAgICBz
dGQ6OnN0cmluZyBhcHBsaWNhdGlvbk1hbmlmZXN0OwotICAgIAorICAgIHN0ZDo6c3RyaW5nIGpz
Y09wdGlvbnM7CisKICAgICBUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJM
KTsKIAogICAgIC8vIEFkZCBoZXJlIG9wdGlvbnMgdGhhdCBjYW4gb25seSBiZSBzZXQgdXBvbiBQ
bGF0Zm9ybVdlYlZpZXcKQEAgLTkwLDcgKzkxLDggQEAgc3RydWN0IFRlc3RPcHRpb25zIHsKICAg
ICAgICAgICAgIHx8IGFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fza0ZvckNyZWRlbnRp
YWxzICE9IG9wdGlvbnMuYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVu
dGlhbHMKICAgICAgICAgICAgIHx8IGVuYWJsZVdlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbiAh
PSBvcHRpb25zLmVuYWJsZVdlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbgogICAgICAgICAgICAg
fHwgZW5hYmxlUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24gIT0gb3B0aW9ucy5lbmFibGVQcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbgotICAgICAgICAgICAgfHwgZW5hYmxlQ29sb3JGaWx0ZXIgIT0gb3B0
aW9ucy5lbmFibGVDb2xvckZpbHRlcikKKyAgICAgICAgICAgIHx8IGVuYWJsZUNvbG9yRmlsdGVy
ICE9IG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXIKKyAgICAgICAgICAgIHx8IGpzY09wdGlvbnMg
IT0gb3B0aW9ucy5qc2NPcHRpb25zKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgIHJldHVybiB0cnVlOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDIzMjYwMykK
KysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlUGFnZS5oIgogI2luY2x1ZGUgIlN0cmluZ0Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgIldl
YkNvcmVUZXN0U3VwcG9ydC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wdGlvbnMuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQ
YWdlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KQEAgLTIyMSw2
ICsyMjIsMTcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUbwogICAg
ICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOwogICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVz
c2FnZUJvZHkpID09IFdLRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKICAgICAgICAgV0tEaWN0aW9u
YXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJl
Zj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4ganNjT3B0
aW9uc0tleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSlNDT3B0aW9u
cyIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGpzY09wdGlvbnNTdHJpbmcg
PSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShtZXNz
YWdlQm9keURpY3Rpb25hcnksIGpzY09wdGlvbnNLZXkuZ2V0KCkpKTsKKyAgICAgICAgaWYgKGpz
Y09wdGlvbnNTdHJpbmcpIHsKKyAgICAgICAgICAgIHNpemVfdCBzdHJpbmdMZW5ndGggPSBXS1N0
cmluZ0dldExlbmd0aChqc2NPcHRpb25zU3RyaW5nLmdldCgpKTsKKyAgICAgICAgICAgIFZlY3Rv
cjxjaGFyPiBvcHRpb25zVmVjdG9yOworICAgICAgICAgICAgb3B0aW9uc1ZlY3Rvci5yZXNpemUo
c3RyaW5nTGVuZ3RoICsgMSk7CisgICAgICAgICAgICBXS1N0cmluZ0dldFVURjhDU3RyaW5nKGpz
Y09wdGlvbnNTdHJpbmcuZ2V0KCksIG9wdGlvbnNWZWN0b3IuZGF0YSgpLCBzdHJpbmdMZW5ndGgg
KyAxKTsKKyAgICAgICAgICAgIFN0cmluZyBvcHRpb25zKG9wdGlvbnNWZWN0b3IuZGF0YSgpLCBz
dHJpbmdMZW5ndGgpOworCisgICAgICAgICAgICBKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbnMob3B0
aW9ucy51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBzaG91bGRHQ0tleShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiU2hvdWxkR0MiKSk7CiAgICAgICAgIGJvb2wgc2hvdWxkR0MgPSBXS0Jvb2xlYW5HZXRW
YWx1ZShzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXko
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBzaG91bGRHQ0tleS5nZXQoKSkpKTsKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzMjYwMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE4LTA2LTA4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd2Via2l0LXRlc3QtcnVubmVyIGpzY09wdGlv
bnMgaW4gRHVtcFJlbmRlclRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0NTEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQwODc1NzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICoganMvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmh0bWw6
CisgICAgICAgICoganMvaW50bC1wbHVyYWxydWxlcy5odG1sOgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanM6CisKIDIwMTgtMDYt
MDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuaGFuY2UgcnVu
LWpzYy1zdHJlc3MtdGVzdHMgdG8gYWxsb3cgYSB0ZXN0IHRvIHNwZWNpZnkgdGVzdCBzcGVjaWZp
YyBvcHRpb25zIHJlcXVpcmVkIGZvciBpdCB0byBydW4uCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9p
bnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuaHRtbAkocmV2aXNp
b24gMjMyNjAzKQorKysgTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRv
LXBhcnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi08IWRvY3R5cGUgaHRt
bD4KKzwhZG9jdHlwZSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsganNjT3B0aW9ucz0t
LXVzZUludGxOdW1iZXJGb3JtYXRUb1BhcnRzPXRydWUgXSAtLT4KIDxodG1sPgogPGhlYWQ+CiA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9pbnRsLXBsdXJhbHJ1
bGVzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvaW50bC1wbHVyYWxydWxlcy5o
dG1sCShyZXZpc2lvbiAyMzI2MDMpCisrKyBMYXlvdXRUZXN0cy9qcy9pbnRsLXBsdXJhbHJ1bGVz
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi08IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0t
dXNlSW50bFBsdXJhbFJ1bGVzPXRydWUgXSAtLT4KIDxodG1sPgogPGhlYWQ+CiA8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1udW1i
ZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuanMJKHJldmlz
aW9uIDIzMjYwMykKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZv
cm1hdC1mb3JtYXQtdG8tcGFydHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw2IEBACiAv
L0Agc2tpcCBpZiAkaG9zdE9TID09ICJ3aW5kb3dzIiBvciAkaG9zdE9TID09ICJkYXJ3aW4iIG9y
ICRob3N0T1MgPT0gImxpbnV4IgorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUludGxOdW1iZXJG
b3JtYXRUb1BhcnRzPXRydWUiKQorCiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNoZWNrcyB0aGUg
YmVoYXZpb3Igb2YgSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMgYXMg
ZGVzY3JpYmVkIGluIHRoZSBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSSBTcGVj
aWZpY2F0aW9uLiIpOwogCiBzaG91bGRCZVR5cGUoIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlw
ZS5mb3JtYXRUb1BhcnRzIiwgIkZ1bmN0aW9uIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342469</attachid>
            <date>2018-06-11 15:07:01 -0700</date>
            <delta_ts>2018-06-11 15:10:13 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-186451.patch</filename>
            <type>text/plain</type>
            <size>19737</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyNzMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE4LTA2LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc3VwcG9ydCBmb3Igd2Via2l0LXRlc3QtcnVubmVyIGpzY09wdGlvbnMgaW4gRHVtcFJlbmRl
clRyZWUgYW5kIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0NTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwODc1
NzkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVu
aGFuY2Ugc2V0T3B0aW9ucygpIHRvIGJlIGFibGUgdG8gdGFrZSBhIGNvbW1hIHNlcGFyYXRlZCBv
cHRpb25zIHN0cmluZyBpbgorICAgICAgICBhZGRpdGlvbiB0byB3aGl0ZSBzcGFjZSBzZXBhcmF0
ZWQgb3B0aW9ucyBzdHJpbmdzLgorCisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6aXNTZXBhcmF0b3IpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRPcHRp
b25zKToKKwogMjAxOC0wNi0xMSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4K
IAogICAgICAgICBKYXZhU2NyaXB0Q29yZTogRGlzYWJsZSAzMi1iaXQgSklUIG9uIFdpbmRvd3MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lv
biAyMzI3MzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk5LDYgKzU5OSwxMSBAQCB2b2lkIE9wdGlvbnM6OmR1bXBPcHRp
b25zSWZOZWVkZWQoKQogICAgIH0KIH0KIAorc3RhdGljIGJvb2wgaXNTZXBhcmF0b3IoY2hhciBj
KQoreworICAgIHJldHVybiBpc0FTQ0lJU3BhY2UoYykgfHwgKGMgPT0gJywnKTsKK30KKwogYm9v
bCBPcHRpb25zOjpzZXRPcHRpb25zKGNvbnN0IGNoYXIqIG9wdGlvbnNTdHIpCiB7CiAgICAgVmVj
dG9yPGNoYXIqPiBvcHRpb25zOwpAQCAtNjA5LDggKzYxNCw4IEBAIGJvb2wgT3B0aW9uczo6c2V0
T3B0aW9ucyhjb25zdCBjaGFyKiBvcHQKICAgICBjaGFyKiBwID0gb3B0aW9uc1N0ckNvcHk7CiAK
ICAgICB3aGlsZSAocCA8IGVuZCkgewotICAgICAgICAvLyBTa2lwIHdoaXRlIHNwYWNlLgotICAg
ICAgICB3aGlsZSAocCA8IGVuZCAmJiBpc0FTQ0lJU3BhY2UoKnApKQorICAgICAgICAvLyBTa2lw
IHNlcGFyYXRvcnMgKHdoaXRlIHNwYWNlIG9yIGNvbW1hcykuCisgICAgICAgIHdoaWxlIChwIDwg
ZW5kICYmIGlzU2VwYXJhdG9yKCpwKSkKICAgICAgICAgICAgIHArKzsKICAgICAgICAgaWYgKHAg
PT0gZW5kKQogICAgICAgICAgICAgYnJlYWs7CkBAIC02MzcsOCArNjQyLDggQEAgYm9vbCBPcHRp
b25zOjpzZXRPcHRpb25zKGNvbnN0IGNoYXIqIG9wdAogICAgICAgICAgICAgaGFzU3RyaW5nVmFs
dWUgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRmluZCBuZXh0IHdoaXRlIHNwYWNl
LgotICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAhaXNBU0NJSVNwYWNlKCpwKSkKKyAgICAgICAg
Ly8gRmluZCBuZXh0IHNlcGFyYXRvciAod2hpdGUgc3BhY2Ugb3IgY29tbWFzKS4KKyAgICAgICAg
d2hpbGUgKHAgPCBlbmQgJiYgIWlzU2VwYXJhdG9yKCpwKSkKICAgICAgICAgICAgIHArKzsKICAg
ICAgICAgaWYgKCFwKQogICAgICAgICAgICAgcCA9IGVuZDsgLy8gTm8gbW9yZSAiICIgc2VwYXJh
dG9yLiBIZW5jZSwgdGhpcyBpcyB0aGUgbGFzdCBhcmcuCkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzI3MzApCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxOC0wNi0xMSAg
TWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IHdlYmtpdC10ZXN0LXJ1bm5lciBqc2NPcHRpb25zIGluIER1bXBSZW5kZXJUcmVlIGFuZCBXZWJL
aXRUZXN0UnVubmVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg2NDUxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDg3NTc5Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGpzY09wdGlvbnMg
b3B0aW9uIGNhbiBiZSB1c2VkIGJ5IGEgbGF5b3V0IHRlc3QgdG8gc3BlY2lmeSBzb21lIEpTQyBy
dW50aW1lCisgICAgICAgIG9wdGlvbnMgbmVlZGVkIGJ5IHRoZSB0ZXN0IGUuZy4gYnkgYWRkaW5n
IHNvbWV0aGluZyBsaWtlIHRoaXMgdG8gdGhlIHRvcCBvZiB0aGUKKyAgICAgICAgaHRtbCBmaWxl
IGFmdGVyIHRoZSBET0NUWVBFIHRhZzoKKyAgICAgICAgICAgIDwhLS0gd2Via2l0LXRlc3QtcnVu
bmVyIFsganNjT3B0aW9ucz0tLXVzZUludGxQbHVyYWxSdWxlcz10cnVlIF0gLS0+CisKKyAgICAg
ICAgSWYgbW9yZSB0aGFuIG9uZSBvcHRpb24gaXMgbmVlZGVkLCB0aGUgb3B0aW9ucyBjYW4gYmUg
c3BlY2lmaWVkIGFzIGEgY29tbWEKKyAgICAgICAgc2VwYXJhdGVkIHN0cmluZyBlLmcuCisgICAg
ICAgICAgICA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VJbnRsUGx1
cmFsUnVsZXM9dHJ1ZSwtLXVzZVpvbWJpZU1vZGU9dHJ1ZSBdIC0tPgorCisgICAgICAgIFRoaXMg
b25seSB3b3JrcyB3aXRoIEpTQyBvcHRpb25zIHRoYXQgY2FuIGJlIGNoYW5nZWQgYXQgcnVudGlt
ZS4gIE5vdCBhbGwgSlNDCisgICAgICAgIG9wdGlvbnMgY2FuIGJlIGNoYW5nZWQgdGhpcyB3YXkg
YXMgc29tZSBvcHRpb25zIGFyZSBvbmx5IGNoZWNrZWQgYW5kIHNldCBvbmNlIGF0CisgICAgICAg
IFZNIC8gcHJvY2VzcyBpbml0aWFsaXphdGlvbiB0aW1lOiBjaGFuZ2luZyB0aGlzIHR5cGUgb2Yg
b3B0aW9ucyBtYXkgaGF2ZSBubworICAgICAgICBlZmZlY3QuICBJdCdzIHRoZSB0ZXN0IHdyaXRl
cidzIHJlc3BvbnNpYmlsaXR5IHRvIGRldGVybWluZSB3aGljaCBvcHRpb25zIGFyZQorICAgICAg
ICBhcHByb3ByaWF0ZSBmb3Igd2l0aCB0aGlzIHdlYmtpdC10ZXN0LXJ1bm5lciBqc2NPcHRpb25z
IG9wdGlvbi4KKworICAgICAgICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGEgd29ya2Fyb3VuZCB1
bnRpbCB3ZSBjYW4gY2hhbmdlIHRoZSBydW4td2Via2l0LXRlc3RzCisgICAgICAgIHNjcmlwdHMg
dG8gcGFyc2UgdGhlIG9wdGlvbiBhbmQgYXBwbHkgaXQgdG8gYSBuZXcgbGF1bmNoIG9mIERSVCBv
ciBXS1RSOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg2NDUyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6CisgICAg
ICAgIChUZXN0T3B0aW9uczo6VGVzdE9wdGlvbnMpOgorICAgICAgICAoVGVzdE9wdGlvbnM6Ondl
YlZpZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyBjb25zdCk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdE9wdGlvbnMuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChzZXRKU0NPcHRpb25zKToKKyAgICAgICAgKHJlc2V0V2Vi
Vmlld1RvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVzdGluZyk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6dXBk
YXRlVGVzdE9wdGlvbnNGcm9tVGVzdEhlYWRlcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0T3B0aW9ucy5oOgorICAgICAgICAoV1RSOjpUZXN0T3B0aW9uczo6aGFzU2FtZUluaXRp
YWxpemF0aW9uT3B0aW9ucyBjb25zdCk6CisKIDIwMTgtMDYtMTEgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBlbmFibGluZyBQU09OIGluIGxheW91dCB0
ZXN0cyB3aXRob3V0IHdpbmRvdy5vcGVuIHN1cHBvcnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0T3B0aW9ucy5jcHAJKHJldmlzaW9uIDIzMjczMCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RPcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDMsMTEgKzEwMywxNCBAQCBUZXN0T3B0
aW9uczo6VGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpzdHJpCiAgICAgICAgICAgICBlbmFibGVXZWJB
bmltYXRpb25zQ1NTSW50ZWdyYXRpb24gPSBwYXJzZUJvb2xlYW5UZXN0SGVhZGVyVmFsdWUodmFs
dWUpOwogICAgICAgICBlbHNlIGlmIChrZXkgPT0gImVuYWJsZUNvbG9yRmlsdGVyIikKICAgICAg
ICAgICAgIGVuYWJsZUNvbG9yRmlsdGVyID0gcGFyc2VCb29sZWFuVGVzdEhlYWRlclZhbHVlKHZh
bHVlKTsKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJqc2NPcHRpb25zIikKKyAgICAgICAgICAg
IGpzY09wdGlvbnMgPSB2YWx1ZTsKICAgICAgICAgcGFpclN0YXJ0ID0gcGFpckVuZCArIDE7CiAg
ICAgfQogfQogCiBib29sIFRlc3RPcHRpb25zOjp3ZWJWaWV3SXNDb21wYXRpYmxlV2l0aE9wdGlv
bnMoY29uc3QgVGVzdE9wdGlvbnMmIG90aGVyKSBjb25zdAogewotICAgIHJldHVybiBvdGhlci5s
YXllckJhY2tlZFdlYlZpZXcgPT0gbGF5ZXJCYWNrZWRXZWJWaWV3OworICAgIHJldHVybiBvdGhl
ci5sYXllckJhY2tlZFdlYlZpZXcgPT0gbGF5ZXJCYWNrZWRXZWJWaWV3CisgICAgICAgICYmIG90
aGVyLmpzY09wdGlvbnMgPT0ganNjT3B0aW9uczsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RPcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dE9wdGlvbnMuaAkocmV2aXNpb24gMjMyNzMwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dE9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw3IEBAIHN0cnVjdCBUZXN0T3B0aW9u
cyB7CiAgICAgYm9vbCBkdW1wSlNDb25zb2xlTG9nSW5TdGRFcnIgeyBmYWxzZSB9OwogICAgIGJv
b2wgYWxsb3dDcm9zc09yaWdpblN1YnJlc291cmNlc1RvQXNrRm9yQ3JlZGVudGlhbHMgeyBmYWxz
ZSB9OwogICAgIGJvb2wgZW5hYmxlQ29sb3JGaWx0ZXIgeyBmYWxzZSB9OworICAgIHN0ZDo6c3Ry
aW5nIGpzY09wdGlvbnM7CiAKICAgICBUZXN0T3B0aW9ucyhjb25zdCBzdGQ6OnN0cmluZyYgcGF0
aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgYWJzb2x1dGVQYXRoKTsKICAgICBib29sIHdlYlZp
ZXdJc0NvbXBhdGlibGVXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24g
MjMyNzMwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW1wb3J0ICJXb3JrUXVldWUuaCIKICNp
bXBvcnQgIldvcmtRdWV1ZUl0ZW0uaCIKICNpbXBvcnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9UZXN0UnVubmVyVXRpbHMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTG9nSW5p
dGlhbGl6YXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CkBAIC05Niw2ICs5Nyw3IEBACiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgorI2ltcG9y
dCA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiAhUExBVEZPUk0oSU9TKQpAQCAtMTc2OSw2ICsxNzcxLDIxIEBAIHN0YXRpYyBi
b29sIHNob3VsZE1ha2VWaWV3cG9ydEZsZXhpYmxlKGMKIH0KICNlbmRpZgogCitzdGF0aWMgdm9p
ZCBzZXRKU0NPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQoreworICAgIHN0YXRp
YyBXVEY6OlN0cmluZ0J1aWxkZXIgc2F2ZWRPcHRpb25zOworCisgICAgaWYgKCFzYXZlZE9wdGlv
bnMuaXNFbXB0eSgpKSB7CisgICAgICAgIEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyhzYXZlZE9w
dGlvbnMudG9TdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgIHNhdmVkT3B0aW9ucy5j
bGVhcigpOworICAgIH0KKworICAgIGlmIChvcHRpb25zLmpzY09wdGlvbnMubGVuZ3RoKCkpIHsK
KyAgICAgICAgSlNDOjpPcHRpb25zOjpkdW1wQWxsT3B0aW9uc0luQUxpbmUoc2F2ZWRPcHRpb25z
KTsKKyAgICAgICAgSlNDOjpPcHRpb25zOjpzZXRPcHRpb25zKG9wdGlvbnMuanNjT3B0aW9ucy5j
X3N0cigpKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVu
dFN0YXRlQmVmb3JlVGVzdGluZyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBX
ZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKQEAgLTE4NDgsNiArMTg2NSw4
IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXQKICAgICBbW05TUGFz
dGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOltOU0FycmF5IGFycmF5V2l0
aE9iamVjdDpOU1N0cmluZ1Bib2FyZFR5cGVdIG93bmVyOm5pbF07CiAjZW5kaWYKIAorICAgIHNl
dEpTQ09wdGlvbnMob3B0aW9ucyk7CisKICAgICBbbWFpbkZyYW1lIF9jbGVhck9wZW5lcl07CiAK
ICAgICBzZXRTcGVsbENoZWNrZXJMb2dnaW5nRW5hYmxlZChmYWxzZSk7CkluZGV4OiBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjMyNzMwKQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0LTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04MDUsNiArODA1LDEyIEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3Rh
dGVUb0NvbnNpc3QKICAgICB9CiAgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShyZXNldE1lc3NhZ2VC
b2R5LmdldCgpLCBhbGxvd2VkSG9zdHNLZXkuZ2V0KCksIGFsbG93ZWRIb3N0c1ZhbHVlLmdldCgp
KTsKIAorICAgIGlmIChvcHRpb25zLmpzY09wdGlvbnMubGVuZ3RoKCkpIHsKKyAgICAgICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGpzY09wdGlvbnNLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJKU0NPcHRpb25zIikpOworICAgICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4ganNjT3B0aW9uc1ZhbHVlID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhvcHRpb25zLmpzY09wdGlvbnMuY19zdHIoKSkpOworICAgICAgICBXS0RpY3Rp
b25hcnlTZXRJdGVtKHJlc2V0TWVzc2FnZUJvZHkuZ2V0KCksIGpzY09wdGlvbnNLZXkuZ2V0KCks
IGpzY09wdGlvbnNWYWx1ZS5nZXQoKSk7CisgICAgfQorCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VU
b0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygp
LT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCByZXNldE1lc3NhZ2VCb2R5LmdldCgpKTsKIAog
ICAgIFdLQ29udGV4dFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmNvbnRleHQoKSwgZmFsc2UpOwpAQCAtMTA3OSw1MiArMTA4NSw1NCBAQCBzdGF0
aWMgdm9pZCB1cGRhdGVUZXN0T3B0aW9uc0Zyb21UZXN0SGVhCiAgICAgICAgIGF1dG8gdmFsdWUg
PSBwYWlyU3RyaW5nLnN1YnN0cihlcXVhbHNMb2NhdGlvbiArIDEsIHBhaXJFbmQgLSAoZXF1YWxz
TG9jYXRpb24gKyAxKSk7CiAgICAgICAgIGlmIChrZXkgPT0gImxhbmd1YWdlIikKICAgICAgICAg
ICAgIFN0cmluZyh2YWx1ZS5jX3N0cigpKS5zcGxpdCgiLCIsIGZhbHNlLCB0ZXN0T3B0aW9ucy5v
dmVycmlkZUxhbmd1YWdlcyk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVzZVRocmVhZGVkU2Nyb2xs
aW5nIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ1c2VUaHJlYWRlZFNjcm9sbGluZyIpCiAg
ICAgICAgICAgICB0ZXN0T3B0aW9ucy51c2VUaHJlYWRlZFNjcm9sbGluZyA9IHBhcnNlQm9vbGVh
blRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVzZUFjY2VsZXJh
dGVkRHJhd2luZyIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAidXNlQWNjZWxlcmF0ZWREcmF3
aW5nIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLnVzZUFjY2VsZXJhdGVkRHJhd2luZyA9IHBh
cnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVz
ZUZsZXhpYmxlVmlld3BvcnQiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gInVzZUZsZXhpYmxl
Vmlld3BvcnQiKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMudXNlRmxleGlibGVWaWV3cG9ydCA9
IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0g
InVzZURhdGFEZXRlY3Rpb24iKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gInVzZURhdGFEZXRl
Y3Rpb24iKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMudXNlRGF0YURldGVjdGlvbiA9IHBhcnNl
Qm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVzZU1v
Y2tTY3JvbGxiYXJzIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ1c2VNb2NrU2Nyb2xsYmFy
cyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy51c2VNb2NrU2Nyb2xsYmFycyA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gIm5lZWRzU2l0
ZVNwZWNpZmljUXVpcmtzIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJuZWVkc1NpdGVTcGVj
aWZpY1F1aXJrcyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5uZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChr
ZXkgPT0gImlnbm9yZXNWaWV3cG9ydFNjYWxlTGltaXRzIikKKyAgICAgICAgZWxzZSBpZiAoa2V5
ID09ICJpZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9u
cy5pZ25vcmVzVmlld3BvcnRTY2FsZUxpbWl0cyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gInVzZUNoYXJhY3RlclNlbGVjdGlvbkdyYW51
bGFyaXR5IikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJ1c2VDaGFyYWN0ZXJTZWxlY3Rpb25H
cmFudWxhcml0eSIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy51c2VDaGFyYWN0ZXJTZWxlY3Rp
b25HcmFudWxhcml0eSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAg
ICAgIGlmIChrZXkgPT0gImVuYWJsZUF0dGFjaG1lbnRFbGVtZW50IikKKyAgICAgICAgZWxzZSBp
ZiAoa2V5ID09ICJlbmFibGVBdHRhY2htZW50RWxlbWVudCIpCiAgICAgICAgICAgICB0ZXN0T3B0
aW9ucy5lbmFibGVBdHRhY2htZW50RWxlbWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1
ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVuYWJsZUludGVyc2VjdGlvbk9ic2VydmVy
IikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciIp
CiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHBh
cnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVu
YWJsZU1lbnVJdGVtRWxlbWVudCIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlTWVu
dUl0ZW1FbGVtZW50IikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZU1lbnVJdGVtRWxl
bWVudCA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChr
ZXkgPT0gImVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMiKQorICAgICAgICBlbHNlIGlmIChrZXkg
PT0gImVuYWJsZU1vZGVybk1lZGlhQ29udHJvbHMiKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMu
ZW5hYmxlTW9kZXJuTWVkaWFDb250cm9scyA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2
YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVuYWJsZVBvaW50ZXJMb2NrIikKKyAgICAgICAg
ZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQb2ludGVyTG9jayIpCiAgICAgICAgICAgICB0ZXN0T3B0
aW9ucy5lbmFibGVQb2ludGVyTG9jayA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1
ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVuYWJsZVdlYkF1dGhlbnRpY2F0aW9uIikKKyAgICAg
ICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVXZWJBdXRoZW50aWNhdGlvbiIpCiAgICAgICAgICAg
ICB0ZXN0T3B0aW9ucy5lbmFibGVXZWJBdXRoZW50aWNhdGlvbiA9IHBhcnNlQm9vbGVhblRlc3RI
ZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVuYWJsZUlzU2VjdXJlQ29u
dGV4dEF0dHJpYnV0ZSIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZW5hYmxlSXNTZWN1cmVD
b250ZXh0QXR0cmlidXRlIikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmVuYWJsZUlzU2VjdXJl
Q29udGV4dEF0dHJpYnV0ZSA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0g
ICAgICAgIGlmIChrZXkgPT0gImVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyIpCisgICAgICAgIGVs
c2UgaWYgKGtleSA9PSAiZW5hYmxlSW5zcGVjdG9yQWRkaXRpb25zIikKICAgICAgICAgICAgIHRl
c3RPcHRpb25zLmVuYWJsZUluc3BlY3RvckFkZGl0aW9ucyA9IHBhcnNlQm9vbGVhblRlc3RIZWFk
ZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImR1bXBKU0NvbnNvbGVMb2dJblN0
ZEVyciIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAiZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJy
IikKICAgICAgICAgICAgIHRlc3RPcHRpb25zLmR1bXBKU0NvbnNvbGVMb2dJblN0ZEVyciA9IHBh
cnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImFw
cGxpY2F0aW9uTWFuaWZlc3QiKQorICAgICAgICBlbHNlIGlmIChrZXkgPT0gImFwcGxpY2F0aW9u
TWFuaWZlc3QiKQogICAgICAgICAgICAgdGVzdE9wdGlvbnMuYXBwbGljYXRpb25NYW5pZmVzdCA9
IHBhcnNlU3RyaW5nVGVzdEhlYWRlclZhbHVlQXNSZWxhdGl2ZVBhdGgodmFsdWUsIHBhdGhPclVS
TCk7Ci0gICAgICAgIGlmIChrZXkgPT0gImFsbG93Q3Jvc3NPcmlnaW5TdWJyZXNvdXJjZXNUb0Fz
a0ZvckNyZWRlbnRpYWxzIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJhbGxvd0Nyb3NzT3Jp
Z2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyIpCiAgICAgICAgICAgICB0ZXN0T3B0
aW9ucy5hbGxvd0Nyb3NzT3JpZ2luU3VicmVzb3VyY2VzVG9Bc2tGb3JDcmVkZW50aWFscyA9IHBh
cnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVu
YWJsZVdlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbiIpCisgICAgICAgIGVsc2UgaWYgKGtleSA9
PSAiZW5hYmxlV2ViQW5pbWF0aW9uc0NTU0ludGVncmF0aW9uIikKICAgICAgICAgICAgIHRlc3RP
cHRpb25zLmVuYWJsZVdlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbiA9IHBhcnNlQm9vbGVhblRl
c3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVuYWJsZVByb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbiIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVQcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbiA9IHBhcnNlQm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0g
ICAgICAgIGlmIChrZXkgPT0gImVuYWJsZVByb2Nlc3NTd2FwT25XaW5kb3dPcGVuIikKKyAgICAg
ICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVQcm9jZXNzU3dhcE9uV2luZG93T3BlbiIpCiAgICAg
ICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVQcm9jZXNzU3dhcE9uV2luZG93T3BlbiA9IHBhcnNl
Qm9vbGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgIGlmIChrZXkgPT0gImVuYWJs
ZUNvbG9yRmlsdGVyIikKKyAgICAgICAgZWxzZSBpZiAoa2V5ID09ICJlbmFibGVDb2xvckZpbHRl
ciIpCiAgICAgICAgICAgICB0ZXN0T3B0aW9ucy5lbmFibGVDb2xvckZpbHRlciA9IHBhcnNlQm9v
bGVhblRlc3RIZWFkZXJWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSAianNj
T3B0aW9ucyIpCisgICAgICAgICAgICB0ZXN0T3B0aW9ucy5qc2NPcHRpb25zID0gdmFsdWU7CiAg
ICAgICAgIHBhaXJTdGFydCA9IHBhaXJFbmQgKyAxOwogICAgIH0KIH0KSW5kZXg6IFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RPcHRpb25zLmgJKHJldmlzaW9uIDIzMjczMCkKKysrIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdE9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw3ICs2Myw4IEBAIHN0
cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgeyAxIH07CiAg
ICAgVmVjdG9yPFN0cmluZz4gb3ZlcnJpZGVMYW5ndWFnZXM7CiAgICAgc3RkOjpzdHJpbmcgYXBw
bGljYXRpb25NYW5pZmVzdDsKLSAgICAKKyAgICBzdGQ6OnN0cmluZyBqc2NPcHRpb25zOworCiAg
ICAgVGVzdE9wdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGhPclVSTCk7CiAKICAgICAvLyBB
ZGQgaGVyZSBvcHRpb25zIHRoYXQgY2FuIG9ubHkgYmUgc2V0IHVwb24gUGxhdGZvcm1XZWJWaWV3
CkBAIC05Miw3ICs5Myw4IEBAIHN0cnVjdCBUZXN0T3B0aW9ucyB7CiAgICAgICAgICAgICB8fCBl
bmFibGVXZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb24gIT0gb3B0aW9ucy5lbmFibGVXZWJBbmlt
YXRpb25zQ1NTSW50ZWdyYXRpb24KICAgICAgICAgICAgIHx8IGVuYWJsZVByb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uICE9IG9wdGlvbnMuZW5hYmxlUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24KICAgICAg
ICAgICAgIHx8IGVuYWJsZVByb2Nlc3NTd2FwT25XaW5kb3dPcGVuICE9IG9wdGlvbnMuZW5hYmxl
UHJvY2Vzc1N3YXBPbldpbmRvd09wZW4KLSAgICAgICAgICAgIHx8IGVuYWJsZUNvbG9yRmlsdGVy
ICE9IG9wdGlvbnMuZW5hYmxlQ29sb3JGaWx0ZXIpCisgICAgICAgICAgICB8fCBlbmFibGVDb2xv
ckZpbHRlciAhPSBvcHRpb25zLmVuYWJsZUNvbG9yRmlsdGVyCisgICAgICAgICAgICB8fCBqc2NP
cHRpb25zICE9IG9wdGlvbnMuanNjT3B0aW9ucykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAy
MzI3MzApCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVk
QnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVBhZ2UuaCIKICNpbmNsdWRlICJTdHJpbmdGdW5jdGlvbnMuaCIKICNpbmNs
dWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcHRp
b25zLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dL
QnVuZGxlUGFnZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2VQcml2YXRlLmg+CkBA
IC0yMjEsNiArMjIyLDEyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdl
VG8KICAgICAgICAgQVNTRVJUKG1lc3NhZ2VCb2R5KTsKICAgICAgICAgQVNTRVJUKFdLR2V0VHlw
ZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CiAgICAgICAgIFdL
RGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rp
b25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IGpzY09wdGlvbnNLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkpT
Q09wdGlvbnMiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBqc2NPcHRpb25z
U3RyaW5nID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBqc2NPcHRpb25zS2V5LmdldCgpKSk7CisgICAgICAg
IGlmIChqc2NPcHRpb25zU3RyaW5nKSB7CisgICAgICAgICAgICBTdHJpbmcgb3B0aW9ucyA9IHRv
V1RGU3RyaW5nKGpzY09wdGlvbnNTdHJpbmcpOworICAgICAgICAgICAgSlNDOjpPcHRpb25zOjpz
ZXRPcHRpb25zKG9wdGlvbnMudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0KIAogICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc2hvdWxkR0NLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIlNob3VsZEdDIikpOwogICAgICAgICBib29sIHNob3VsZEdDID0g
V0tCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgc2hvdWxkR0NLZXkuZ2V0KCkpKSk7
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMzI3MzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0wNi0xMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdlYmtpdC10ZXN0LXJ1
bm5lciBqc2NPcHRpb25zIGluIER1bXBSZW5kZXJUcmVlIGFuZCBXZWJLaXRUZXN0UnVubmVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2NDUxCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDg3NTc5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10
by1wYXJ0cy5odG1sOgorICAgICAgICAqIGpzL2ludGwtcGx1cmFscnVsZXMuaHRtbDoKKyAgICAg
ICAgKiBqcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQtZm9ybWF0LXRvLXBhcnRzLmpz
OgorCiAyMDE4LTA2LTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgaHR0cC90ZXN0cy9zZWN1cml0eS9jb3JzLXBvc3QtcmVkaXJlY3QtMzA3Lmh0bWwgZmFpbHMg
d2l0aCBQU09OIGVuYWJsZWQKSW5kZXg6IExheW91dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0
LWZvcm1hdC10by1wYXJ0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2ludGwt
bnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5odG1sCShyZXZpc2lvbiAyMzI3MzApCisrKyBM
YXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQtdG8tcGFydHMuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLTwhZG9jdHlwZSBodG1sPgorPCFkb2N0eXBlIGh0
bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBqc2NPcHRpb25zPS0tdXNlSW50bE51bWJlckZv
cm1hdFRvUGFydHM9dHJ1ZSBdIC0tPgogPGh0bWw+CiA8aGVhZD4KIDxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KSW5kZXg6IExheW91dFRlc3RzL2pzL2ludGwtcGx1cmFscnVsZXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9pbnRsLXBsdXJhbHJ1bGVzLmh0bWwJKHJldmlzaW9uIDIz
MjczMCkKKysrIExheW91dFRlc3RzL2pzL2ludGwtcGx1cmFscnVsZXMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGpzY09wdGlvbnM9LS11c2VJbnRsUGx1cmFsUnVs
ZXM9dHJ1ZSBdIC0tPgogPGh0bWw+CiA8aGVhZD4KIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KSW5k
ZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC1mb3JtYXQt
dG8tcGFydHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2lu
dGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1wYXJ0cy5qcwkocmV2aXNpb24gMjMyNzMwKQorKysg
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LWZvcm1hdC10by1w
YXJ0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDYgQEAKIC8vQCBza2lwIGlmICRob3N0
T1MgPT0gIndpbmRvd3MiIG9yICRob3N0T1MgPT0gImRhcndpbiIgb3IgJGhvc3RPUyA9PSAibGlu
dXgiCisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlSW50bE51bWJlckZvcm1hdFRvUGFydHM9dHJ1
ZSIpCisKIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgY2hlY2tzIHRoZSBiZWhhdmlvciBvZiBJbnRs
Lk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBhcyBkZXNjcmliZWQgaW4gdGhl
IEVDTUFTY3JpcHQgSW50ZXJuYXRpb25hbGl6YXRpb24gQVBJIFNwZWNpZmljYXRpb24uIik7CiAK
IHNob3VsZEJlVHlwZSgiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMi
LCAiRnVuY3Rpb24iKTsK
</data>
<flag name="review"
          id="360560"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>