<?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>183028</bug_id>
          
          <creation_ts>2018-02-21 22:24:05 -0800</creation_ts>
          <short_desc>pushState and replaceState no longer works in local file</short_desc>
          <delta_ts>2018-03-12 10:53:46 -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>History</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>iOS 11</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>178565</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Danyao Wang">danyao</reporter>
          <assigned_to name="Danyao Wang">danyao</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ajuma</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fred.wang</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1401378</commentid>
    <comment_count>0</comment_count>
      <attachid>334441</attachid>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-02-21 22:24:05 -0800</bug_when>
    <thetext>Created attachment 334441
replace_state.html

pushState and replaceState when called in file:// scheme fail in Safari Tech Review and iOS 11.3 with SecurityError: Blocked attempt to use history.replaceState() to change session history URL from file:///tmp/replace_state.html to file:///tmp/replace_state.html?replaced. Paths and fragments must match for a sandboxed document.

How to reproduce: load the attached file using file:// scheme.

This is a regression compared to Safari 11. I believe it&apos;s a result of this change: https://github.com/WebKit/webkit/commit/f7e07f31530f7c4df8bbf3a60697518428acd8da#diff-c870f5a610f9e6d344005bf329ccc405

Chrome on iOS depends on this behavior to restore session history into WKWebView after app is backgrounded.
There is also web compatibility concern, see http://crbug.com/528681. Blink ended up shipping a patch that considers two file:// scheme URLs same origin if they only differ in query and fragment: https://codereview.chromium.org/1632513002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401398</commentid>
    <comment_count>1</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-02-22 02:22:54 -0800</bug_when>
    <thetext>cc&apos;ing Brent as he is the author of https://trac.webkit.org/changeset/224609</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401419</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-22 08:02:46 -0800</bug_when>
    <thetext>&lt;rdar://problem/37787656&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401550</commentid>
    <comment_count>3</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-02-22 14:23:02 -0800</bug_when>
    <thetext>I confirm that reverting Brent&apos;s change makes Danyao&apos;s test work as expected.

diff --git a/Source/WebCore/page/SecurityOrigin.cpp b/Source/WebCore/page/SecurityOrigin.cpp
index e41af3763e5..d90e3ba3e79 100644
--- a/Source/WebCore/page/SecurityOrigin.cpp
+++ b/Source/WebCore/page/SecurityOrigin.cpp
@@ -283,7 +283,10 @@ bool SecurityOrigin::passesFileCheck(const SecurityOrigin&amp; other) const
 {
     ASSERT(isLocal() &amp;&amp; other.isLocal());
 
-    return !m_enforcesFilePathSeparation &amp;&amp; !other.m_enforcesFilePathSeparation;
+    if (!m_enforcesFilePathSeparation &amp;&amp; !other.m_enforcesFilePathSeparation)
+        return true;
+
+    return (m_filePath == other.m_filePath);
 }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401561</commentid>
    <comment_count>4</comment_count>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-02-22 14:45:56 -0800</bug_when>
    <thetext>Thanks Fred!

SecurityOrigin::passesFileCheck() is also used in SecurityOrigin::canAccess(). I&apos;m not sure if reverting Brent&apos;s patch will have other undesired effect. So I&apos;m also OK if we just patch History::stateObjectAdded() like Blink did.

bfulgham@, dbates@: Do you have any preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402345</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-02-27 08:46:26 -0800</bug_when>
    <thetext>(In reply to Danyao Wang from comment #4)
&gt; Thanks Fred!
&gt; 
&gt; SecurityOrigin::passesFileCheck() is also used in
&gt; SecurityOrigin::canAccess(). I&apos;m not sure if reverting Brent&apos;s patch will
&gt; have other undesired effect. So I&apos;m also OK if we just patch
&gt; History::stateObjectAdded() like Blink did.
&gt; 
&gt; bfulgham@, dbates@: Do you have any preference?

Please do not roll this change out without coordinating with me first. We made the original change as part of a security fix and need to make sure this request doesn&apos;t reintroduce a possible exploit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403700</commentid>
    <comment_count>6</comment_count>
      <attachid>335014</attachid>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-03-05 12:02:21 -0800</bug_when>
    <thetext>Created attachment 335014
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403701</commentid>
    <comment_count>7</comment_count>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-03-05 12:03:54 -0800</bug_when>
    <thetext>Brent - what do you think about this patch? It&apos;s based on https://codereview.chromium.org/1632513002/ and https://codereview.chromium.org/2060093002/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404303</commentid>
    <comment_count>8</comment_count>
      <attachid>335014</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-03-07 03:04:32 -0800</bug_when>
    <thetext>Comment on attachment 335014
WIP

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

&gt; Source/WebCore/page/History.cpp:58
&gt; +}

Why does that need to in the default namespace? Can you make this function static? If it&apos;s only used in one place, maybe it should be moved before History::stateObjectAdded?

&gt; Source/WebCore/page/History.cpp:202
&gt; +    const SecurityOrigin&amp; documentOrigin = m_frame-&gt;document()-&gt;securityOrigin();

Are you able to use auto here?

&gt; Source/WebCore/page/History.cpp:208
&gt; +        &amp;&amp; !allowSandboxException)

I would put !allowSandboxException first so that lazy evaluation of the expression is faster when allowSandboxException == true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404385</commentid>
    <comment_count>9</comment_count>
      <attachid>335014</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-07 10:01:25 -0800</bug_when>
    <thetext>Comment on attachment 335014
WIP

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

I think the overall approach here is good, but the new equality predicate needs to be added to the URL class so it can be used elsewhere if needed.

I&apos;m also worried that we will inadvertently break this again without some form of test case. Can you repurpose some of the test cases in &apos;https://codereview.chromium.org/1632513002/patch/20001/30006&apos;? Perhaps adding them to &apos;Tools/TestWebKitAPI/Tests/WebCore/URL.cpp&apos;.

For these reasons, r- for now.

&gt; Source/WebCore/page/History.cpp:52
&gt; +        for (unsigned i = 0; i &lt; pathEnd; i++) {

WebKit style uses &quot;++i&quot;

&gt;&gt; Source/WebCore/page/History.cpp:58
&gt;&gt; +}
&gt; 
&gt; Why does that need to in the default namespace? Can you make this function static? If it&apos;s only used in one place, maybe it should be moved before History::stateObjectAdded?

No, this should be added to URL, just like &apos;equalIgnoringFragmentIdentifier&apos;:

WTF/URL.h:
    WEBCORE_EXPORT friend bool equalIgnoringFragmentIdentifier(const URL&amp;, const URL&amp;);

&gt;&gt; Source/WebCore/page/History.cpp:202
&gt;&gt; +    const SecurityOrigin&amp; documentOrigin = m_frame-&gt;document()-&gt;securityOrigin();
&gt; 
&gt; Are you able to use auto here?

I&apos;d suggest using &apos; const auto&amp; documentSecurityOrigin&apos;

&gt; Source/WebCore/page/History.cpp:203
&gt; +    // We allow sandboxed documents, `data:`/`file:` URLs, etc. to use &apos;pushState&apos;/&apos;replaceState&apos; to modify the URL query and fragments.

The quotes here are all over the place. Just please use plain-old ASCII single-quotes: &apos;

&gt;&gt; Source/WebCore/page/History.cpp:208
&gt;&gt; +        &amp;&amp; !allowSandboxException)
&gt; 
&gt; I would put !allowSandboxException first so that lazy evaluation of the expression is faster when allowSandboxException == true.

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404386</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-07 10:02:22 -0800</bug_when>
    <thetext>(In reply to Danyao Wang from comment #7)
&gt; Brent - what do you think about this patch? It&apos;s based on
&gt; https://codereview.chromium.org/1632513002/ and
&gt; https://codereview.chromium.org/2060093002/.

Also, you should make some kind of test case based on &apos;replace_state.html&apos; to help us avoid breaking this again.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405351</commentid>
    <comment_count>11</comment_count>
      <attachid>335473</attachid>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-03-09 15:22:41 -0800</bug_when>
    <thetext>Created attachment 335473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405393</commentid>
    <comment_count>12</comment_count>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-03-09 16:27:52 -0800</bug_when>
    <thetext>Thanks for the review. PTAL.

(In reply to Brent Fulgham from comment #9)
&gt; Comment on attachment 335014 [details]
&gt; WIP
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335014&amp;action=review
&gt; 
&gt; I think the overall approach here is good, but the new equality predicate
&gt; needs to be added to the URL class so it can be used elsewhere if needed.
&gt; 
&gt; I&apos;m also worried that we will inadvertently break this again without some
&gt; form of test case. Can you repurpose some of the test cases in
&gt; &apos;https://codereview.chromium.org/1632513002/patch/20001/30006&apos;? Perhaps
&gt; adding them to &apos;Tools/TestWebKitAPI/Tests/WebCore/URL.cpp&apos;.

Done.

I added LayoutTests/http/tests/navigation/pushstate-at-unique-origin-denied.php, which essentially tests the behavior in replace_state.html but for unique origin. This covers the IsUnique() part of |allowSandboxException|.

Is there a way to create a LayoutTest that is always as file:// scheme in run-webkit-tests? Then we can test the IsLocal() part of |allowSandboxException|.

I tried to create a pushstate-at-local-origin-denied.html test. But for some reason the file:// scheme is not detected inside testharness.js test when running using run-webkit-tests. It insists that document.URL is simply &quot;pushstate-at-local-origin-denied.html&quot;, when I expected &quot;file://&lt;WebKitPath&gt;/LayoutTests/security/pushstate-at-local-origin-denied.html&quot;...

&gt; 
&gt; For these reasons, r- for now.
&gt; 
&gt; &gt; Source/WebCore/page/History.cpp:52
&gt; &gt; +        for (unsigned i = 0; i &lt; pathEnd; i++) {
&gt; 
&gt; WebKit style uses &quot;++i&quot;

Done.

&gt; 
&gt; &gt;&gt; Source/WebCore/page/History.cpp:58
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; Why does that need to in the default namespace? Can you make this function static? If it&apos;s only used in one place, maybe it should be moved before History::stateObjectAdded?
&gt; 
&gt; No, this should be added to URL, just like &apos;equalIgnoringFragmentIdentifier&apos;:
&gt; 
&gt; WTF/URL.h:
&gt;     WEBCORE_EXPORT friend bool equalIgnoringFragmentIdentifier(const URL&amp;,
&gt; const URL&amp;);

Done. I&apos;m not sure what the &apos;friend&apos; modifier is for. So omitted it for now.

&gt; 
&gt; &gt;&gt; Source/WebCore/page/History.cpp:202
&gt; &gt;&gt; +    const SecurityOrigin&amp; documentOrigin = m_frame-&gt;document()-&gt;securityOrigin();
&gt; &gt; 
&gt; &gt; Are you able to use auto here?
&gt; 
&gt; I&apos;d suggest using &apos; const auto&amp; documentSecurityOrigin&apos;

Done.

&gt; 
&gt; &gt; Source/WebCore/page/History.cpp:203
&gt; &gt; +    // We allow sandboxed documents, `data:`/`file:` URLs, etc. to use &apos;pushState&apos;/&apos;replaceState&apos; to modify the URL query and fragments.
&gt; 
&gt; The quotes here are all over the place. Just please use plain-old ASCII
&gt; single-quotes: &apos;

Done.

&gt; 
&gt; &gt;&gt; Source/WebCore/page/History.cpp:208
&gt; &gt;&gt; +        &amp;&amp; !allowSandboxException)
&gt; &gt; 
&gt; &gt; I would put !allowSandboxException first so that lazy evaluation of the expression is faster when allowSandboxException == true.
&gt; 
&gt; +1

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405415</commentid>
    <comment_count>13</comment_count>
      <attachid>335473</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-03-09 17:34:16 -0800</bug_when>
    <thetext>Comment on attachment 335473
Patch

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

I think this looks correct -- I would like to see a simple test that file and http are not allowed to load each-other but otherwise this looks fine.

&gt; Source/WebCore/platform/URL.h:171
&gt; +    WEBCORE_EXPORT bool equalIgnoringQueryAndFragment(const URL&amp;, const URL&amp;);

This needs to be a friend declaration. However, the bots are green, so perhaps we don&apos;t need this declaration at all anymore?

&gt; Tools/TestWebKitAPI/Tests/WebCore/URL.cpp:251
&gt; +        {&quot;file:///path/to/other/file.html&quot;, &quot;file:///path/to/file.html&quot;, false},

Please add a failure case that compares a file URL and an HTTP URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405736</commentid>
    <comment_count>14</comment_count>
      <attachid>335594</attachid>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-03-12 07:44:45 -0700</bug_when>
    <thetext>Created attachment 335594
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405739</commentid>
    <comment_count>15</comment_count>
      <attachid>335595</attachid>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-03-12 08:09:44 -0700</bug_when>
    <thetext>Created attachment 335595
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405740</commentid>
    <comment_count>16</comment_count>
    <who name="Danyao Wang">danyao</who>
    <bug_when>2018-03-12 08:11:32 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #13)
&gt; Comment on attachment 335473 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335473&amp;action=review
&gt; 
&gt; I think this looks correct -- I would like to see a simple test that file
&gt; and http are not allowed to load each-other but otherwise this looks fine.

Removed unnecessary &quot;friend&quot; declaration. The new equalIgnoringQueryAndFragment() only uses public methods of URL so it doesn&apos;t need this friend declaration.

&gt; 
&gt; &gt; Source/WebCore/platform/URL.h:171
&gt; &gt; +    WEBCORE_EXPORT bool equalIgnoringQueryAndFragment(const URL&amp;, const URL&amp;);
&gt; 
&gt; This needs to be a friend declaration. However, the bots are green, so
&gt; perhaps we don&apos;t need this declaration at all anymore?
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebCore/URL.cpp:251
&gt; &gt; +        {&quot;file:///path/to/other/file.html&quot;, &quot;file:///path/to/file.html&quot;, false},
&gt; 
&gt; Please add a failure case that compares a file URL and an HTTP URL.

Added failure cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405786</commentid>
    <comment_count>17</comment_count>
      <attachid>335595</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 10:53:45 -0700</bug_when>
    <thetext>Comment on attachment 335595
Patch for landing

Clearing flags on attachment: 335595

Committed r229540: &lt;https://trac.webkit.org/changeset/229540&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405787</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-12 10:53:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>334441</attachid>
            <date>2018-02-21 22:24:05 -0800</date>
            <delta_ts>2018-02-21 22:24:05 -0800</delta_ts>
            <desc>replace_state.html</desc>
            <filename>replace_state.html</filename>
            <type>text/html</type>
            <size>258</size>
            <attacher name="Danyao Wang">danyao</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgPGJvZHk+CiAgICBVUkwgc2hvdWxkIGJlICJmaWxlOi8vL3JlcGxhY2Vfc3RhdGUu
aHRtbD9yZXBsYWNlZCI7CiAgICA8ZGl2IGlkPSJsb2ciPjwvZGl2PgogIDwvYm9keT4KICA8c2Ny
aXB0PgogICAgaWYgKGxvY2F0aW9uLmhyZWYuZW5kc1dpdGgoIi5odG1sIikpIHsKICAgICAgaGlz
dG9yeS5yZXBsYWNlU3RhdGUoe30sICJUaXRsZSIsIGxvY2F0aW9uLmhyZWYgKyAiP3JlcGxhY2Vk
Iik7CiAgICB9CiAgPC9zY3JpcHQ+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335014</attachid>
            <date>2018-03-05 12:02:21 -0800</date>
            <delta_ts>2018-03-09 15:22:39 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-183028-20180305150220.patch</filename>
            <type>text/plain</type>
            <size>2934</size>
            <attacher name="Danyao Wang">danyao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2MjhjZWQyZTA0YzUw
MTc5NzZmMWY2NTZlZjMyNDI4ZDJkNDIyZS4uZTBkMzA2OWRmYWY3ZmIzZTEwNGQ3ZTk2YmI0NTM0
OWFiMmRiYzU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTAzLTA1ICBEYW55
YW8gV2FuZyAgPGRhbnlhb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGEgcXVlcnkgYW5k
IGZyYWdtZW50IGV4Y2VwdGlvbiB0byBoaXN0b3J5IEFQSSdzIHVuaXF1ZSBvcmlnaW4gcmVzdHJp
Y3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODMwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMgKE9PUFMhKS4gVE9ETzogV2lsbCBhZGQgdGVzdHMgYmVmb3JlIHN1Ym1pdHRp
bmcKKworICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0
b3J5OjpzdGF0ZU9iamVjdEFkZGVkKToKKwogMjAxOC0wMy0wNSAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgaW52YWxpZGF0ZSBhbGwgY2hpbGRyZW4g
d2hlbiBkb2luZyBpbnNlcnRpb24vZGVsZXRpb24gaW4gcHJlc2VuY2Ugb2YgYmFja3dhcmQgcG9z
aXRpb25hbCBzZWxlY3RvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDhkMGI5NTlkMDM3
M2NjYTE2YmEyZWU0MjZjYTk5MWJlNmNmMGIzYTEuLjczYTk3OWM4MjQzYjJiMmFiNzIwZjI5NDg0
ZjVhYWIwMTNjNjI3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtNDMsNiArNDMsMTkg
QEAKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Citu
YW1lc3BhY2UgeworICAgIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3Qg
VVJMJiBhLCBjb25zdCBVUkwmIGIpCisgICAgeworICAgICAgICBpZiAoYS5wYXRoRW5kKCkgIT0g
Yi5wYXRoRW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHVuc2lnbmVk
IHBhdGhFbmQgPSBhLnBhdGhFbmQoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhdGhFbmQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJp
bmcoKVtpXSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorfQogCiBIaXN0b3J5OjpIaXN0b3J5KEZyYW1lJiBmcmFt
ZSkKICAgICA6IERPTVdpbmRvd1Byb3BlcnR5KCZmcmFtZSkKQEAgLTE4NSw3ICsxOTgsMTQgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICB9OwogICAgIGlmICghcHJvdG9jb2xIb3N0QW5k
UG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBmdWxsVVJMLnVzZXIoKSAhPSBk
b2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzKCkgIT0gZG9jdW1lbnRVUkwucGFzcygp
KQogICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5RXJyb3JXaXRoTWVzc2Fn
ZVN1ZmZpeCgiUHJvdG9jb2xzLCBkb21haW5zLCBwb3J0cywgdXNlcm5hbWVzLCBhbmQgcGFzc3dv
cmRzIG11c3QgbWF0Y2guIik7Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYgKGZ1bGxVUkwucGF0aCgpICE9IGRvY3Vt
ZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkgIT0gZG9jdW1lbnRVUkwucXVlcnkoKSkp
CisKKyAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgZG9jdW1lbnRPcmlnaW4gPSBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgIC8vIFdlIGFsbG93IHNhbmRib3hlZCBk
b2N1bWVudHMsIGBkYXRhOmAvYGZpbGU6YCBVUkxzLCBldGMuIHRvIHVzZSAncHVzaFN0YXRlJy8n
cmVwbGFjZVN0YXRlJyB0byBtb2RpZnkgdGhlIFVSTCBxdWVyeSBhbmQgZnJhZ21lbnRzLgorICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMDI4IGZv
ciB0aGUgY29tcGF0aWJpbGl0eSBjb25jZXJucy4KKyAgICBib29sIGFsbG93U2FuZGJveEV4Y2Vw
dGlvbiA9IChkb2N1bWVudE9yaWdpbi5pc0xvY2FsKCkgfHwgZG9jdW1lbnRPcmlnaW4uaXNVbmlx
dWUoKSkgJiYgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoZG9jdW1lbnRVUkwsIGZ1bGxV
UkwpOworCisgICAgaWYgKCFkb2N1bWVudE9yaWdpbi5jYW5SZXF1ZXN0KGZ1bGxVUkwpICYmIChm
dWxsVVJMLnBhdGgoKSAhPSBkb2N1bWVudFVSTC5wYXRoKCkgfHwgZnVsbFVSTC5xdWVyeSgpICE9
IGRvY3VtZW50VVJMLnF1ZXJ5KCkpCisgICAgICAgICYmICFhbGxvd1NhbmRib3hFeGNlcHRpb24p
CiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJvcldpdGhNZXNzYWdl
U3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3QgbWF0Y2ggZm9yIGEgc2FuZGJveGVkIGRv
Y3VtZW50LiIpOwogCiAgICAgRG9jdW1lbnQqIG1haW5Eb2N1bWVudCA9IG1fZnJhbWUtPnBhZ2Uo
KS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335473</attachid>
            <date>2018-03-09 15:22:41 -0800</date>
            <delta_ts>2018-03-12 07:44:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183028-20180309182241.patch</filename>
            <type>text/plain</type>
            <size>12816</size>
            <attacher name="Danyao Wang">danyao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2MjhjZWQyZTA0YzUw
MTc5NzZmMWY2NTZlZjMyNDI4ZDJkNDIyZS4uZWViZTdlOWRmNjAwOTY0M2I4YTljYzkyZDViMDcz
OTBkNWUwYzA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTA1ICBEYW55
YW8gV2FuZyAgPGRhbnlhb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGEgcXVlcnkgYW5k
IGZyYWdtZW50IGV4Y2VwdGlvbiB0byBoaXN0b3J5IEFQSSdzIHVuaXF1ZSBvcmlnaW4gcmVzdHJp
Y3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODMwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0czogaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRl
bmllZC5waHAKKyAgICAgICAgICAgICAgIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9VUkwuY3BwCisKKyAgICAgICAgKiBwYWdlL0hpc3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZCk6CisKIDIwMTgtMDMtMDUgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGludmFsaWRhdGUgYWxsIGNo
aWxkcmVuIHdoZW4gZG9pbmcgaW5zZXJ0aW9uL2RlbGV0aW9uIGluIHByZXNlbmNlIG9mIGJhY2t3
YXJkIHBvc2l0aW9uYWwgc2VsZWN0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0hpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCA4ZDBi
OTU5ZDAzNzNjY2ExNmJhMmVlNDI2Y2E5OTFiZTZjZjBiM2ExLi42NjYxMDJiM2Y2MTkxODk3N2E0
ZTEzMTc0NThhNjFiNDg1YTBjYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hp
c3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTE4NSw3
ICsxODUsMTMgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKICAgICB9OwogICAgIGlmICghcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGZ1bGxVUkwsIGRvY3VtZW50VVJMKSB8fCBmdWxsVVJM
LnVzZXIoKSAhPSBkb2N1bWVudFVSTC51c2VyKCkgfHwgZnVsbFVSTC5wYXNzKCkgIT0gZG9jdW1l
bnRVUkwucGFzcygpKQogICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2tlZFVSTFNlY3VyaXR5RXJy
b3JXaXRoTWVzc2FnZVN1ZmZpeCgiUHJvdG9jb2xzLCBkb21haW5zLCBwb3J0cywgdXNlcm5hbWVz
LCBhbmQgcGFzc3dvcmRzIG11c3QgbWF0Y2guIik7Ci0gICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYgKGZ1bGxVUkwucGF0
aCgpICE9IGRvY3VtZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkgIT0gZG9jdW1lbnRV
UkwucXVlcnkoKSkpCisKKyAgICBjb25zdCBhdXRvJiBkb2N1bWVudFNlY3VyaXR5T3JpZ2luID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICAvLyBXZSBhbGxvdyBz
YW5kYm94ZWQgZG9jdW1lbnRzLCAnZGF0YTonLydmaWxlOicgVVJMcywgZXRjLiB0byB1c2UgJ3B1
c2hTdGF0ZScvJ3JlcGxhY2VTdGF0ZScgdG8gbW9kaWZ5IHRoZSBVUkwgcXVlcnkgYW5kIGZyYWdt
ZW50cy4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MzAyOCBmb3IgdGhlIGNvbXBhdGliaWxpdHkgY29uY2VybnMuCisgICAgYm9vbCBhbGxvd1Nh
bmRib3hFeGNlcHRpb24gPSAoZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5pc0xvY2FsKCkgfHwgZG9j
dW1lbnRTZWN1cml0eU9yaWdpbi5pc1VuaXF1ZSgpKSAmJiBlcXVhbElnbm9yaW5nUXVlcnlBbmRG
cmFnbWVudChkb2N1bWVudFVSTCwgZnVsbFVSTCk7CisKKyAgICBpZiAoIWFsbG93U2FuZGJveEV4
Y2VwdGlvbiAmJiAhZG9jdW1lbnRTZWN1cml0eU9yaWdpbi5jYW5SZXF1ZXN0KGZ1bGxVUkwpICYm
IChmdWxsVVJMLnBhdGgoKSAhPSBkb2N1bWVudFVSTC5wYXRoKCkgfHwgZnVsbFVSTC5xdWVyeSgp
ICE9IGRvY3VtZW50VVJMLnF1ZXJ5KCkpKQogICAgICAgICByZXR1cm4gY3JlYXRlQmxvY2tlZFVS
TFNlY3VyaXR5RXJyb3JXaXRoTWVzc2FnZVN1ZmZpeCgiUGF0aHMgYW5kIGZyYWdtZW50cyBtdXN0
IG1hdGNoIGZvciBhIHNhbmRib3hlZCBkb2N1bWVudC4iKTsKIAogICAgIERvY3VtZW50KiBtYWlu
RG9jdW1lbnQgPSBtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmNwcAppbmRleCA1OTdhNTZjM2I2ZTY2M2I4YjA2MjM1NjYzZTdhY2RmNTgy
Yzk1NGY1Li4xMWU5Y2ZjYjY5MzFlYzZlYjliNGQzODZhMjMzN2VkNzRiZGU5YTgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VSTC5jcHAKQEAgLTcyOSw2ICs3MjksMTggQEAgYm9vbCBlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50KGNvbnN0IFVS
TCYgYSwgY29uc3QgVVJMJiBiKQoreworICAgIGlmIChhLnBhdGhFbmQoKSAhPSBiLnBhdGhFbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVuc2lnbmVkIHBhdGhFbmQgPSBhLnBhdGhF
bmQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGF0aEVuZDsgKytpKSB7CisgICAg
ICAgIGlmIChhLnN0cmluZygpW2ldICE9IGIuc3RyaW5nKClbaV0pCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiBib29sIHByb3RvY29sSG9z
dEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmIGEsIGNvbnN0IFVSTCYgYikKIHsKICAgICBpZiAo
YS5tX3NjaGVtZUVuZCAhPSBiLm1fc2NoZW1lRW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCBi
OGVkNzc4ZTY3ZDFhNjdmMGJjM2MxYThjNTFhZjE4YzIzMGY0MGY4Li4yYjJjZTczOWE4ODlmM2Nl
YWMwZGMyMjM4NjQ3OTU5OGU5ZjUxMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9VUkwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApAQCAtMTY4LDYg
KzE2OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVF1ZXJ5QW5k
RnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBmcmllbmQgYm9vbCBl
cXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29u
c3QgVVJMJiwgY29uc3QgVVJMJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBmcmllbmQgYm9vbCBw
cm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAKQEAg
LTMwNyw2ICszMDgsNyBAQCBib29sIG9wZXJhdG9yIT0oY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
Jik7CiBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiwgY29uc3QgVVJMJik7CiAKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihjb25zdCBVUkwm
LCBjb25zdCBVUkwmKTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5k
RnJhZ21lbnQoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBXRUJDT1JFX0VYUE9SVCBib29sIHBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaG9zdHNBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcAppbmRleCA3Yzc4OGE3Yjc2
YWM4NzFlYzJiYzI2YTEyOGViNDEyYWVjMTYxZDgyLi45NTU0YmQ1NWRhOGVhNzg4MmVlNDYyNTI1
NzU5MzdhZmM3NGY2NWU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJM
LmNwcApAQCAtMjEzLDYgKzIxMywxMDAgQEAgVEVTVF9GKFVSTFRlc3QsIFVSTFJlbW92ZVF1ZXJ5
QW5kRnJhZ21lbnRJZGVudGlmaWVyKQogICAgIEVYUEVDVF9FUSh1cmwuc3RyaW5nKCksIHVybDUu
c3RyaW5nKCkpOwogfQogCitURVNUX0YoVVJMVGVzdCwgRXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcikKK3sKKyAgICBzdHJ1Y3QgVGVzdENhc2UgeworICAgICAgICBjb25zdCBjaGFyKiB1
cmwxOworICAgICAgICBjb25zdCBjaGFyKiB1cmwyOworICAgICAgICBib29sIGV4cGVjdGVkOwor
ICAgIH0gY2FzZXNbXSA9IHsKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vI2hh
c2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCisgICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVl
fSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCNoYXNoIiwgImh0dHA6Ly9leGFt
cGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/
cXVlcnkiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsiaHR0
cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0
aCIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vb3RoZXJwYXRoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxl
LmNvbTo4MC8iLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAorICAgICAgICB7Imh0dHA6
Ly9leGFtcGxlLmNvbTo4MC8jaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCisg
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aCNoYXNoIiwg
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tOjgwL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0s
CisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGg/cXVlcnkjaGFzaCIsICJodHRw
Oi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5j
b206ODAvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAorICAg
ICAgICB7Imh0dHA6Ly9ub3QtZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyIsICJodHRwOi8vZXhh
bXBsZS5jb20vIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS8jaGFz
aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tOjgxL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxIiwgZmFsc2V9LAorICAg
ICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUu
Y29tOjgxL3BhdGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0
aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIGZhbHNlfSwKKyAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxl
LmNvbTo4MS9wYXRoIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9v
dGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCBmYWxzZX0sCisgICAgICAg
IHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1s
IiwgdHJ1ZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCNoYXNoIiwgImZp
bGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKKyAgICAgICAgeyJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sP3F1ZXJ5IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0s
CisgICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSNoYXNoIiwgImZpbGU6
Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRoL3Rv
L290aGVyX2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgZmFsc2V9LAor
ICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9vdGhlci9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRo
L3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwKKyAgICAgICAgeyJkYXRhOnRleHQvcGxhaW47Y2hhcnNl
dD11dGYtODtiYXNlNjQsNzZPLzc2Ty83Nk8vIiwgImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04O2Jhc2U2NCw3NjAvNzYwLzc2MC8iLCBmYWxzZX0sCisgICAgfTsKKworICAgIGZvciAoY29u
c3QgYXV0byYgdGVzdCA6IGNhc2VzKSB7CisgICAgICAgIFVSTCB1cmwxID0gY3JlYXRlVVJMKHRl
c3QudXJsMSk7CisgICAgICAgIFVSTCB1cmwyID0gY3JlYXRlVVJMKHRlc3QudXJsMik7CisgICAg
ICAgIEVYUEVDVF9FUSh0ZXN0LmV4cGVjdGVkLCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHVybDEsIHVybDIpKQorICAgICAgICAgICAgPDwgIlRlc3QgZmFpbGVkIGZvciAiIDw8IHRl
c3QudXJsMSA8PCAiIHZzLiAiIDw8IHRlc3QudXJsMjsKKyAgICB9Cit9CisKK1RFU1RfRihVUkxU
ZXN0LCBFcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCkKK3sKKyAgICBzdHJ1Y3QgVGVzdENh
c2UgeworICAgICAgICBjb25zdCBjaGFyKiB1cmwxOworICAgICAgICBjb25zdCBjaGFyKiB1cmwy
OworICAgICAgICBib29sIGV4cGVjdGVkOworICAgIH0gY2FzZXNbXSA9IHsKKyAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb20vIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAgICAg
ICAgeyJodHRwOi8vZXhhbXBsZS5jb20vI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRy
dWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxl
LmNvbS8iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCAiaHR0
cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5j
b20vcGF0aCNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeSNoYXNo
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tL290aGVycGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwK
KyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8i
LCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvI2hhc2giLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9w
YXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4
YW1wbGUuY29tOjgwL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9
LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9l
eGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgw
L3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAorICAg
ICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL25vdC1leGFtcGxlLmNvbTo4MC8i
LCAiaHR0cDovL2V4YW1wbGUuY29tOjgwLyIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhh
bXBsZS5jb206ODEvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCisgICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tOjgxLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCB0
cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsICJodHRwOi8vZXhh
bXBsZS5jb206ODEiLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3Bh
dGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAorICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4
MS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGg/cXVl
cnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAorICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgx
L3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsICJm
aWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRo
L3RvL2ZpbGUuaHRtbCNoYXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwK
KyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5IiwgImZpbGU6Ly8vcGF0
aC90by9maWxlLmh0bWwiLCB0cnVlfSwKKyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5o
dG1sP3F1ZXJ5I2hhc2giLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAorICAg
ICAgICB7ImZpbGU6Ly8vcGF0aC90by9vdGhlcl9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3Rv
L2ZpbGUuaHRtbCIsIGZhbHNlfSwKKyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXIvZmls
ZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCisgICAgICAgIHsi
ZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZPLyIsICJkYXRh
OnRleHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNlNjQsNzYwLzc2MC83NjAvIiwgZmFsc2V9LAor
ICAgIH07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRlc3QgOiBjYXNlcykgeworICAgICAgICBV
UkwgdXJsMSA9IGNyZWF0ZVVSTCh0ZXN0LnVybDEpOworICAgICAgICBVUkwgdXJsMiA9IGNyZWF0
ZVVSTCh0ZXN0LnVybDIpOworICAgICAgICBFWFBFQ1RfRVEodGVzdC5leHBlY3RlZCwgZXF1YWxJ
Z25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQodXJsMSwgdXJsMikpCisgICAgICAgICAgICA8PCAiVGVz
dCBmYWlsZWQgZm9yICIgPDwgdGVzdC51cmwxIDw8ICIgdnMuICIgPDwgdGVzdC51cmwyOworICAg
IH0KK30KKwogVEVTVF9GKFVSTFRlc3QsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkpCiB7CiAgICAg
RVhQRUNUX0ZBTFNFKHByb3RvY29sSXNJbkhUVFBGYW1pbHkoe30pKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdp
bi1kZW5pZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGMzZTkwNzhkZWMxMjYxNjM0ZjAwMzNmMmIyNzI4Mzk2OTIwM2YxMwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5p
cXVlLW9yaWdpbi1kZW5pZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIHB1
c2hTdGF0ZSB0byBhIG5ldyBwYXRoIGluIHVuaXF1ZSBvcmlnaW4gc2hvdWxkIGZhaWwgd2l0aCBT
ZWN1cml0eUVycm9yIAorUEFTUyBwdXNoU3RhdGUgI2hhc2ggaW4gdW5pcXVlIG9yaWdpbiBzaG91
bGQgbm90IGZhaWwgd2l0aCBTZWN1cml0eUVycm9yIAorUEFTUyBwdXNoU3RhdGUgP3F1ZXJ5IGlu
IHVuaXF1ZSBvcmlnaW4gc2hvdWxkIG5vdCBmYWlsIHdpdGggU2VjdXJpdHlFcnJvciAKK1BBU1Mg
cHVzaFN0YXRlID9xdWVyeSNoYXNoIGluIHVuaXF1ZSBvcmlnaW4gc2hvdWxkIG5vdCBmYWlsIHdp
dGggU2VjdXJpdHlFcnJvciAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9u
YXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5waHAgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1vcmlnaW4tZGVu
aWVkLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNzViNzY4MDNmMTZhYzA0ZWM5OGY1ZTQyMTZiY2U5MTYyYzI5
ZDgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9u
L3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC5waHAKQEAgLTAsMCArMSw0MCBAQAor
PD9waHAKK2hlYWRlcigiQ29udGVudC1TZWN1cml0eS1Qb2xpY3k6IHNhbmRib3ggYWxsb3ctc2Ny
aXB0cyIpOworPz4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIG9yaWdpblVSTCA9IGRvY3VtZW50LlVSTDsKK3Rlc3Qo
ZnVuY3Rpb24gKCkgeworICAgIGFzc2VydF90aHJvd3MoJ1NlY3VyaXR5RXJyb3InLCBmdW5jdGlv
biAoKSB7CisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsIG9yaWdpblVSTCAr
ICIvcGF0aCIpOworICAgIH0pOworfSwgJ3B1c2hTdGF0ZSB0byBhIG5ldyBwYXRoIGluIHVuaXF1
ZSBvcmlnaW4gc2hvdWxkIGZhaWwgd2l0aCBTZWN1cml0eUVycm9yJyk7CisKK3Rlc3QoZnVuY3Rp
b24gKCkgeworICAgIHRyeSB7CisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGws
IG9yaWdpblVSTCArICIjaGFzaCIpOworICAgICAgICBkb25lKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJwdXNoU3RhdGUgI2hhc2ggc2hvdWxkIG5vdCBm
YWlsLiIpOworICAgIH0KK30sICdwdXNoU3RhdGUgI2hhc2ggaW4gdW5pcXVlIG9yaWdpbiBzaG91
bGQgbm90IGZhaWwgd2l0aCBTZWN1cml0eUVycm9yJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgewor
ICAgIHRyeSB7CisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsIG9yaWdpblVS
TCArICI/cXVlcnkiKTsKKyAgICAgICAgZG9uZSgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgicHVzaFN0YXRlID9xdWVyeSBzaG91bGQgbm90IGZhaWwuIik7
CisgICAgfQorfSwgJ3B1c2hTdGF0ZSA/cXVlcnkgaW4gdW5pcXVlIG9yaWdpbiBzaG91bGQgbm90
IGZhaWwgd2l0aCBTZWN1cml0eUVycm9yJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHRy
eSB7CisgICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsIG9yaWdpblVSTCArICI/
cXVlcnkjaGFzaCIpOworICAgICAgICBkb25lKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBhc3NlcnRfdW5yZWFjaGVkKCJwdXNoU3RhdGUgP3F1ZXJ5I2hhc2ggc2hvdWxkIG5vdCBmYWls
LiIpOworICAgIH0KK30sICdwdXNoU3RhdGUgP3F1ZXJ5I2hhc2ggaW4gdW5pcXVlIG9yaWdpbiBz
aG91bGQgbm90IGZhaWwgd2l0aCBTZWN1cml0eUVycm9yJyk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335594</attachid>
            <date>2018-03-12 07:44:45 -0700</date>
            <delta_ts>2018-03-12 08:09:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183028-20180312104444.patch</filename>
            <type>text/plain</type>
            <size>13365</size>
            <attacher name="Danyao Wang">danyao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2MjhjZWQyZTA0YzUw
MTc5NzZmMWY2NTZlZjMyNDI4ZDJkNDIyZS4uZDQ4OTUyYjY3MDBmYzllNzViOGRhZmIxZDBkMjA2
M2Q0MWNjZDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTA1ICBEYW55
YW8gV2FuZyAgPGRhbnlhb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGEgcXVlcnkgYW5k
IGZyYWdtZW50IGV4Y2VwdGlvbiB0byBoaXN0b3J5IEFQSSdzIHVuaXF1ZSBvcmlnaW4gcmVzdHJp
Y3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODMwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFRl
c3RzOiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1vcmlnaW4tZGVu
aWVkLnBocAorICAgICAgICAgICAgICAgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTC5jcHAKKworICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKToKKwogMjAxOC0wMy0wNSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgaW52YWxpZGF0ZSBhbGwgY2hp
bGRyZW4gd2hlbiBkb2luZyBpbnNlcnRpb24vZGVsZXRpb24gaW4gcHJlc2VuY2Ugb2YgYmFja3dh
cmQgcG9zaXRpb25hbCBzZWxlY3RvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDhkMGI5
NTlkMDM3M2NjYTE2YmEyZWU0MjZjYTk5MWJlNmNmMGIzYTEuLjY2NjEwMmIzZjYxOTE4OTc3YTRl
MTMxNzQ1OGE2MWI0ODVhMGNjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMTg1LDcg
KzE4NSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YQogICAgIH07CiAgICAgaWYgKCFwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxVUkwu
dXNlcigpICE9IGRvY3VtZW50VVJMLnVzZXIoKSB8fCBmdWxsVVJMLnBhc3MoKSAhPSBkb2N1bWVu
dFVSTC5wYXNzKCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJv
cldpdGhNZXNzYWdlU3VmZml4KCJQcm90b2NvbHMsIGRvbWFpbnMsIHBvcnRzLCB1c2VybmFtZXMs
IGFuZCBwYXNzd29yZHMgbXVzdCBtYXRjaC4iKTsKLSAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChmdWxsVVJMKSAmJiAoZnVsbFVSTC5wYXRo
KCkgIT0gZG9jdW1lbnRVUkwucGF0aCgpIHx8IGZ1bGxVUkwucXVlcnkoKSAhPSBkb2N1bWVudFVS
TC5xdWVyeSgpKSkKKworICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgIC8vIFdlIGFsbG93IHNh
bmRib3hlZCBkb2N1bWVudHMsICdkYXRhOicvJ2ZpbGU6JyBVUkxzLCBldGMuIHRvIHVzZSAncHVz
aFN0YXRlJy8ncmVwbGFjZVN0YXRlJyB0byBtb2RpZnkgdGhlIFVSTCBxdWVyeSBhbmQgZnJhZ21l
bnRzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzMDI4IGZvciB0aGUgY29tcGF0aWJpbGl0eSBjb25jZXJucy4KKyAgICBib29sIGFsbG93U2Fu
ZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzTG9jYWwoKSB8fCBkb2N1
bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkpICYmIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZy
YWdtZW50KGRvY3VtZW50VVJMLCBmdWxsVVJMKTsKKworICAgIGlmICghYWxsb3dTYW5kYm94RXhj
ZXB0aW9uICYmICFkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYg
KGZ1bGxVUkwucGF0aCgpICE9IGRvY3VtZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkg
IT0gZG9jdW1lbnRVUkwucXVlcnkoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJM
U2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3Qg
bWF0Y2ggZm9yIGEgc2FuZGJveGVkIGRvY3VtZW50LiIpOwogCiAgICAgRG9jdW1lbnQqIG1haW5E
b2N1bWVudCA9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkwuY3BwCmluZGV4IDU5N2E1NmMzYjZlNjYzYjhiMDYyMzU2NjNlN2FjZGY1ODJj
OTU0ZjUuLjExZTljZmNiNjkzMWVjNmViOWI0ZDM4NmEyMzM3ZWQ3NGJkZTlhODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmNwcApAQCAtNzI5LDYgKzcyOSwxOCBAQCBib29sIGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJM
JiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVuZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0aEVu
ZCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKKyAgICAg
ICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgcHJvdG9jb2xIb3N0
QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewogICAgIGlmIChh
Lm1fc2NoZW1lRW5kICE9IGIubV9zY2hlbWVFbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCmluZGV4IGI4
ZWQ3NzhlNjdkMWE2N2YwYmMzYzFhOGM1MWFmMThjMjMwZjQwZjguLjJiMmNlNzM5YTg4OWYzY2Vh
YzBkYzIyMzg2NDc5NTk4ZTlmNTExNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCkBAIC0xNjgsNiAr
MTY4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUXVlcnlBbmRG
cmFnbWVudElkZW50aWZpZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIGVx
dWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudChjb25z
dCBVUkwmLCBjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGZyaWVuZCBib29sIHBy
b3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIApAQCAt
MzA3LDYgKzMwOCw3IEBAIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
KTsKIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmLCBjb25zdCBVUkwmKTsKIAogV0VCQ09S
RV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCBlcXVhbElnbm9yaW5nUXVlcnlBbmRG
cmFnbWVudChjb25zdCBVUkwmLCBjb25zdCBVUkwmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgcHJv
dG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogV0VCQ09S
RV9FWFBPUlQgYm9vbCBob3N0c0FyZUVxdWFsKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCmluZGV4IDdjNzg4YTdiNzZh
Yzg3MWVjMmJjMjZhMTI4ZWI0MTJhZWMxNjFkODIuLjhlYWIzZTljMzdkYjRkYWIzMTc0NWYyNThk
ZDE4NGJmNjgyYmMzMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkwuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwu
Y3BwCkBAIC0yMTMsNiArMjEzLDEwOCBAQCBURVNUX0YoVVJMVGVzdCwgVVJMUmVtb3ZlUXVlcnlB
bmRGcmFnbWVudElkZW50aWZpZXIpCiAgICAgRVhQRUNUX0VRKHVybC5zdHJpbmcoKSwgdXJsNS5z
dHJpbmcoKSk7CiB9CiAKK1RFU1RfRihVUkxUZXN0LCBFcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVu
dGlmaWVyKQoreworICAgIHN0cnVjdCBUZXN0Q2FzZSB7CisgICAgICAgIGNvbnN0IGNoYXIqIHVy
bDE7CisgICAgICAgIGNvbnN0IGNoYXIqIHVybDI7CisgICAgICAgIGJvb2wgZXhwZWN0ZWQ7Cisg
ICAgfSBjYXNlc1tdID0geworICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8iLCAiaHR0cDov
L2V4YW1wbGUuY29tLyIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFz
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZhbHNlfSwKKyAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9
LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1w
bGUuY29tL3BhdGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9x
dWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRw
Oi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRo
IiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9vdGhlcnBhdGgiLCAiaHR0
cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDov
L2V4YW1wbGUuY29tOjgwLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20v
IiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoI2hhc2giLCAi
aHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb206ODAvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwK
KyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6
Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bTo4MC9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCisgICAg
ICAgIHsiaHR0cDovL25vdC1leGFtcGxlLmNvbTo4MC8iLCAiaHR0cDovL2V4YW1wbGUuY29tLyIs
IGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxLyNoYXNo
IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhh
bXBsZS5jb206ODEvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEiLCBmYWxzZX0sCisgICAg
ICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5j
b206ODEvcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRo
P3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgZmFsc2V9LAorICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUu
Y29tOjgxL3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL290
aGVycGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIGZhbHNlfSwKKyAgICAgICAg
eyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwi
LCB0cnVlfSwKKyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sI2hhc2giLCAiZmls
ZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAorICAgICAgICB7ImZpbGU6Ly8vcGF0aC90
by9maWxlLmh0bWw/cXVlcnkiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwK
KyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5I2hhc2giLCAiZmlsZTov
Ly9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwKKyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8v
b3RoZXJfZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCisg
ICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL290aGVyL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sIiwgZmFsc2V9LAorICAgICAgICB7ImRhdGE6dGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04O2Jhc2U2NCw3Nk8vNzZPLzc2Ty8iLCAiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTg7YmFzZTY0LDc2MC83NjAvNzYwLyIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb20iLCAiZmlsZTovL2V4YW1wbGUuY29tIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbS8jaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCisgICAgICAg
IHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFs
c2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8/cXVlcnkjaGFzaCIsICJmaWxlOi8v
ZXhhbXBsZS5jb20vIiwgZmFsc2V9LAorICAgIH07CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHRl
c3QgOiBjYXNlcykgeworICAgICAgICBVUkwgdXJsMSA9IGNyZWF0ZVVSTCh0ZXN0LnVybDEpOwor
ICAgICAgICBVUkwgdXJsMiA9IGNyZWF0ZVVSTCh0ZXN0LnVybDIpOworICAgICAgICBFWFBFQ1Rf
RVEodGVzdC5leHBlY3RlZCwgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwxLCB1
cmwyKSkKKyAgICAgICAgICAgIDw8ICJUZXN0IGZhaWxlZCBmb3IgIiA8PCB0ZXN0LnVybDEgPDwg
IiB2cy4gIiA8PCB0ZXN0LnVybDI7CisgICAgfQorfQorCitURVNUX0YoVVJMVGVzdCwgRXF1YWxJ
Z25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQpCit7CisgICAgc3RydWN0IFRlc3RDYXNlIHsKKyAgICAg
ICAgY29uc3QgY2hhciogdXJsMTsKKyAgICAgICAgY29uc3QgY2hhciogdXJsMjsKKyAgICAgICAg
Ym9vbCBleHBlY3RlZDsKKyAgICB9IGNhc2VzW10gPSB7CisgICAgICAgIHsiaHR0cDovL2V4YW1w
bGUuY29tLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDov
L2V4YW1wbGUuY29tLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAgICAg
ICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFs
c2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxl
LmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgjaGFz
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0s
CisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8v
ZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9v
dGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsi
aHR0cDovL2V4YW1wbGUuY29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgdHJ1ZX0sCisg
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNv
bS8iLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aCIsICJodHRw
Oi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4
MC9wYXRoI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKKyAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb206ODAvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb20v
cGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5
I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRw
Oi8vZXhhbXBsZS5jb206ODAvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwg
ZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9ub3QtZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9l
eGFtcGxlLmNvbTo4MC8iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgx
LyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MS8jaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgdHJ1ZX0sCisgICAg
ICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgx
IiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoI2hhc2giLCAi
aHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhh
bXBsZS5jb206ODEvcGF0aD9xdWVyeSIsICJodHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsIHRy
dWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoP3F1ZXJ5I2hhc2giLCAi
aHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhh
bXBsZS5jb206ODEvb3RoZXJwYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgZmFs
c2V9LAorICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRo
L3RvL2ZpbGUuaHRtbCIsIHRydWV9LAorICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0
bWwjaGFzaCIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCisgICAgICAgIHsi
ZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5o
dG1sIiwgdHJ1ZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbD9xdWVyeSNo
YXNoIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKKyAgICAgICAgeyJmaWxl
Oi8vL3BhdGgvdG8vb3RoZXJfZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwi
LCBmYWxzZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL290aGVyL2ZpbGUuaHRtbCIsICJm
aWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgZmFsc2V9LAorICAgICAgICB7ImRhdGE6dGV4dC9w
bGFpbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCw3Nk8vNzZPLzc2Ty8iLCAiZGF0YTp0ZXh0L3BsYWlu
O2NoYXJzZXQ9dXRmLTg7YmFzZTY0LDc2MC83NjAvNzYwLyIsIGZhbHNlfSwKKyAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb20iLCAiZmlsZTovL2V4YW1wbGUuY29tIiwgZmFsc2V9LAorICAgICAg
ICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8jaGFzaCIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxz
ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSIsICJmaWxlOi8vZXhhbXBs
ZS5jb20vIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS8/cXVlcnkjaGFz
aCIsICJmaWxlOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAorICAgIH07CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHRlc3QgOiBjYXNlcykgeworICAgICAgICBVUkwgdXJsMSA9IGNyZWF0ZVVSTCh0
ZXN0LnVybDEpOworICAgICAgICBVUkwgdXJsMiA9IGNyZWF0ZVVSTCh0ZXN0LnVybDIpOworICAg
ICAgICBFWFBFQ1RfRVEodGVzdC5leHBlY3RlZCwgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21l
bnQodXJsMSwgdXJsMikpCisgICAgICAgICAgICA8PCAiVGVzdCBmYWlsZWQgZm9yICIgPDwgdGVz
dC51cmwxIDw8ICIgdnMuICIgPDwgdGVzdC51cmwyOworICAgIH0KK30KKwogVEVTVF9GKFVSTFRl
c3QsIFByb3RvY29sSXNJbkhUVFBGYW1pbHkpCiB7CiAgICAgRVhQRUNUX0ZBTFNFKHByb3RvY29s
SXNJbkhUVFBGYW1pbHkoe30pKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
bmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUt
b3JpZ2luLWRlbmllZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzZTkwNzhkZWMxMjYxNjM0
ZjAwMzNmMmIyNzI4Mzk2OTIwM2YxMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvbmF2aWdhdGlvbi9wdXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorCitQQVNTIHB1c2hTdGF0ZSB0byBhIG5ldyBwYXRo
IGluIHVuaXF1ZSBvcmlnaW4gc2hvdWxkIGZhaWwgd2l0aCBTZWN1cml0eUVycm9yIAorUEFTUyBw
dXNoU3RhdGUgI2hhc2ggaW4gdW5pcXVlIG9yaWdpbiBzaG91bGQgbm90IGZhaWwgd2l0aCBTZWN1
cml0eUVycm9yIAorUEFTUyBwdXNoU3RhdGUgP3F1ZXJ5IGluIHVuaXF1ZSBvcmlnaW4gc2hvdWxk
IG5vdCBmYWlsIHdpdGggU2VjdXJpdHlFcnJvciAKK1BBU1MgcHVzaFN0YXRlID9xdWVyeSNoYXNo
IGluIHVuaXF1ZSBvcmlnaW4gc2hvdWxkIG5vdCBmYWlsIHdpdGggU2VjdXJpdHlFcnJvciAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1h
dC11bmlxdWUtb3JpZ2luLWRlbmllZC5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmln
YXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1vcmlnaW4tZGVuaWVkLnBocApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NzViNzY4MDNmMTZhYzA0ZWM5OGY1ZTQyMTZiY2U5MTYyYzI5ZDgwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUt
b3JpZ2luLWRlbmllZC5waHAKQEAgLTAsMCArMSw0MCBAQAorPD9waHAKK2hlYWRlcigiQ29udGVu
dC1TZWN1cml0eS1Qb2xpY3k6IHNhbmRib3ggYWxsb3ctc2NyaXB0cyIpOworPz4KKzxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
dmFyIG9yaWdpblVSTCA9IGRvY3VtZW50LlVSTDsKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGFz
c2VydF90aHJvd3MoJ1NlY3VyaXR5RXJyb3InLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGhpc3Rv
cnkucHVzaFN0YXRlKG51bGwsIG51bGwsIG9yaWdpblVSTCArICIvcGF0aCIpOworICAgIH0pOwor
fSwgJ3B1c2hTdGF0ZSB0byBhIG5ldyBwYXRoIGluIHVuaXF1ZSBvcmlnaW4gc2hvdWxkIGZhaWwg
d2l0aCBTZWN1cml0eUVycm9yJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHRyeSB7Cisg
ICAgICAgIGhpc3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsIG9yaWdpblVSTCArICIjaGFzaCIp
OworICAgICAgICBkb25lKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnRfdW5y
ZWFjaGVkKCJwdXNoU3RhdGUgI2hhc2ggc2hvdWxkIG5vdCBmYWlsLiIpOworICAgIH0KK30sICdw
dXNoU3RhdGUgI2hhc2ggaW4gdW5pcXVlIG9yaWdpbiBzaG91bGQgbm90IGZhaWwgd2l0aCBTZWN1
cml0eUVycm9yJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHRyeSB7CisgICAgICAgIGhp
c3RvcnkucHVzaFN0YXRlKG51bGwsIG51bGwsIG9yaWdpblVSTCArICI/cXVlcnkiKTsKKyAgICAg
ICAgZG9uZSgpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgi
cHVzaFN0YXRlID9xdWVyeSBzaG91bGQgbm90IGZhaWwuIik7CisgICAgfQorfSwgJ3B1c2hTdGF0
ZSA/cXVlcnkgaW4gdW5pcXVlIG9yaWdpbiBzaG91bGQgbm90IGZhaWwgd2l0aCBTZWN1cml0eUVy
cm9yJyk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHRyeSB7CisgICAgICAgIGhpc3Rvcnku
cHVzaFN0YXRlKG51bGwsIG51bGwsIG9yaWdpblVSTCArICI/cXVlcnkjaGFzaCIpOworICAgICAg
ICBkb25lKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJw
dXNoU3RhdGUgP3F1ZXJ5I2hhc2ggc2hvdWxkIG5vdCBmYWlsLiIpOworICAgIH0KK30sICdwdXNo
U3RhdGUgP3F1ZXJ5I2hhc2ggaW4gdW5pcXVlIG9yaWdpbiBzaG91bGQgbm90IGZhaWwgd2l0aCBT
ZWN1cml0eUVycm9yJyk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335595</attachid>
            <date>2018-03-12 08:09:44 -0700</date>
            <delta_ts>2018-03-12 10:53:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183028-20180312110943.patch</filename>
            <type>text/plain</type>
            <size>13016</size>
            <attacher name="Danyao Wang">danyao</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk2MjhjZWQyZTA0YzUw
MTc5NzZmMWY2NTZlZjMyNDI4ZDJkNDIyZS4uZDQ4OTUyYjY3MDBmYzllNzViOGRhZmIxZDBkMjA2
M2Q0MWNjZDk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAzLTA1ICBEYW55
YW8gV2FuZyAgPGRhbnlhb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGEgcXVlcnkgYW5k
IGZyYWdtZW50IGV4Y2VwdGlvbiB0byBoaXN0b3J5IEFQSSdzIHVuaXF1ZSBvcmlnaW4gcmVzdHJp
Y3Rpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODMwMjgKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFRl
c3RzOiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1vcmlnaW4tZGVu
aWVkLnBocAorICAgICAgICAgICAgICAgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VSTC5jcHAKKworICAgICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKToKKwogMjAxOC0wMy0wNSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgaW52YWxpZGF0ZSBhbGwgY2hp
bGRyZW4gd2hlbiBkb2luZyBpbnNlcnRpb24vZGVsZXRpb24gaW4gcHJlc2VuY2Ugb2YgYmFja3dh
cmQgcG9zaXRpb25hbCBzZWxlY3RvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDhkMGI5
NTlkMDM3M2NjYTE2YmEyZWU0MjZjYTk5MWJlNmNmMGIzYTEuLjY2NjEwMmIzZjYxOTE4OTc3YTRl
MTMxNzQ1OGE2MWI0ODVhMGNjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlz
dG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMTg1LDcg
KzE4NSwxMyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YQogICAgIH07CiAgICAgaWYgKCFwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoZnVsbFVSTCwgZG9jdW1lbnRVUkwpIHx8IGZ1bGxVUkwu
dXNlcigpICE9IGRvY3VtZW50VVJMLnVzZXIoKSB8fCBmdWxsVVJMLnBhc3MoKSAhPSBkb2N1bWVu
dFVSTC5wYXNzKCkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJMU2VjdXJpdHlFcnJv
cldpdGhNZXNzYWdlU3VmZml4KCJQcm90b2NvbHMsIGRvbWFpbnMsIHBvcnRzLCB1c2VybmFtZXMs
IGFuZCBwYXNzd29yZHMgbXVzdCBtYXRjaC4iKTsKLSAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuUmVxdWVzdChmdWxsVVJMKSAmJiAoZnVsbFVSTC5wYXRo
KCkgIT0gZG9jdW1lbnRVUkwucGF0aCgpIHx8IGZ1bGxVUkwucXVlcnkoKSAhPSBkb2N1bWVudFVS
TC5xdWVyeSgpKSkKKworICAgIGNvbnN0IGF1dG8mIGRvY3VtZW50U2VjdXJpdHlPcmlnaW4gPSBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgIC8vIFdlIGFsbG93IHNh
bmRib3hlZCBkb2N1bWVudHMsICdkYXRhOicvJ2ZpbGU6JyBVUkxzLCBldGMuIHRvIHVzZSAncHVz
aFN0YXRlJy8ncmVwbGFjZVN0YXRlJyB0byBtb2RpZnkgdGhlIFVSTCBxdWVyeSBhbmQgZnJhZ21l
bnRzLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzMDI4IGZvciB0aGUgY29tcGF0aWJpbGl0eSBjb25jZXJucy4KKyAgICBib29sIGFsbG93U2Fu
ZGJveEV4Y2VwdGlvbiA9IChkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmlzTG9jYWwoKSB8fCBkb2N1
bWVudFNlY3VyaXR5T3JpZ2luLmlzVW5pcXVlKCkpICYmIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZy
YWdtZW50KGRvY3VtZW50VVJMLCBmdWxsVVJMKTsKKworICAgIGlmICghYWxsb3dTYW5kYm94RXhj
ZXB0aW9uICYmICFkb2N1bWVudFNlY3VyaXR5T3JpZ2luLmNhblJlcXVlc3QoZnVsbFVSTCkgJiYg
KGZ1bGxVUkwucGF0aCgpICE9IGRvY3VtZW50VVJMLnBhdGgoKSB8fCBmdWxsVVJMLnF1ZXJ5KCkg
IT0gZG9jdW1lbnRVUkwucXVlcnkoKSkpCiAgICAgICAgIHJldHVybiBjcmVhdGVCbG9ja2VkVVJM
U2VjdXJpdHlFcnJvcldpdGhNZXNzYWdlU3VmZml4KCJQYXRocyBhbmQgZnJhZ21lbnRzIG11c3Qg
bWF0Y2ggZm9yIGEgc2FuZGJveGVkIGRvY3VtZW50LiIpOwogCiAgICAgRG9jdW1lbnQqIG1haW5E
b2N1bWVudCA9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkwuY3BwCmluZGV4IDU5N2E1NmMzYjZlNjYzYjhiMDYyMzU2NjNlN2FjZGY1ODJj
OTU0ZjUuLjExZTljZmNiNjkzMWVjNmViOWI0ZDM4NmEyMzM3ZWQ3NGJkZTlhODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMLmNwcApAQCAtNzI5LDYgKzcyOSwxOCBAQCBib29sIGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK2Jvb2wgZXF1YWxJZ25vcmluZ1F1ZXJ5QW5kRnJhZ21lbnQoY29uc3QgVVJM
JiBhLCBjb25zdCBVUkwmIGIpCit7CisgICAgaWYgKGEucGF0aEVuZCgpICE9IGIucGF0aEVuZCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgdW5zaWduZWQgcGF0aEVuZCA9IGEucGF0aEVu
ZCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXRoRW5kOyArK2kpIHsKKyAgICAg
ICAgaWYgKGEuc3RyaW5nKClbaV0gIT0gYi5zdHJpbmcoKVtpXSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgcHJvdG9jb2xIb3N0
QW5kUG9ydEFyZUVxdWFsKGNvbnN0IFVSTCYgYSwgY29uc3QgVVJMJiBiKQogewogICAgIGlmIChh
Lm1fc2NoZW1lRW5kICE9IGIubV9zY2hlbWVFbmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9VUkwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCmluZGV4IGI4
ZWQ3NzhlNjdkMWE2N2YwYmMzYzFhOGM1MWFmMThjMjMwZjQwZjguLmNlOTc2NzJlMDRjNzFkZjMy
MmY5YTVlZjliYjQxOTZmNjE5ZDgzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCkBAIC0zMDcsNiAr
MzA3LDcgQEAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpOwogYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYsIGNvbnN0IFVSTCYpOwogCiBXRUJDT1JFX0VYUE9S
VCBib29sIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY29uc3QgVVJMJiwgY29uc3Qg
VVJMJik7CitXRUJDT1JFX0VYUE9SVCBib29sIGVxdWFsSWdub3JpbmdRdWVyeUFuZEZyYWdtZW50
KGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBwcm90b2NvbEhv
c3RBbmRQb3J0QXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiBXRUJDT1JFX0VYUE9S
VCBib29sIGhvc3RzQXJlRXF1YWwoY29uc3QgVVJMJiwgY29uc3QgVVJMJik7CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKaW5kZXggN2M3ODhhN2I3NmFjODcxZWMy
YmMyNmExMjhlYjQxMmFlYzE2MWQ4Mi4uOGVhYjNlOWMzN2RiNGRhYjMxNzQ1ZjI1OGRkMTg0YmY2
ODJiYzMyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VS
TC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKQEAg
LTIxMyw2ICsyMTMsMTA4IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxSZW1vdmVRdWVyeUFuZEZyYWdt
ZW50SWRlbnRpZmllcikKICAgICBFWFBFQ1RfRVEodXJsLnN0cmluZygpLCB1cmw1LnN0cmluZygp
KTsKIH0KIAorVEVTVF9GKFVSTFRlc3QsIEVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIp
Cit7CisgICAgc3RydWN0IFRlc3RDYXNlIHsKKyAgICAgICAgY29uc3QgY2hhciogdXJsMTsKKyAg
ICAgICAgY29uc3QgY2hhciogdXJsMjsKKyAgICAgICAgYm9vbCBleHBlY3RlZDsKKyAgICB9IGNh
c2VzW10gPSB7CisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyIsICJodHRwOi8vZXhhbXBs
ZS5jb20vIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20v
cGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAg
ICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20v
cGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5Iiwg
Imh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbS9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxz
ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL290aGVycGF0aCIsICJodHRwOi8vZXhh
bXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODAv
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb206ODAvI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAorICAgICAgICB7
Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxz
ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGgjaGFzaCIsICJodHRwOi8v
ZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4
MC9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgZmFsc2V9LAorICAgICAg
ICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5I2hhc2giLCAiaHR0cDovL2V4YW1w
bGUuY29tL3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL290
aGVycGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKKyAgICAgICAgeyJo
dHRwOi8vbm90LWV4YW1wbGUuY29tOjgwLyIsICJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmFsc2V9
LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCAiaHR0cDovL2V4YW1wbGUuY29t
LyIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvI2hhc2giLCAiaHR0
cDovL2V4YW1wbGUuY29tOjgxLyIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bTo4MS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MSIsIGZhbHNlfSwKKyAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9w
YXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGg/cXVlcnki
LCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDov
L2V4YW1wbGUuY29tOjgxL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEv
cGF0aCIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvb3RoZXJwYXRo
IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgZmFsc2V9LAorICAgICAgICB7ImZpbGU6
Ly8vcGF0aC90by9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9
LAorICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwjaGFzaCIsICJmaWxlOi8vL3Bh
dGgvdG8vZmlsZS5odG1sIiwgdHJ1ZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUu
aHRtbD9xdWVyeSIsICJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sIiwgZmFsc2V9LAorICAgICAg
ICB7ImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWw/cXVlcnkjaGFzaCIsICJmaWxlOi8vL3BhdGgv
dG8vZmlsZS5odG1sIiwgZmFsc2V9LAorICAgICAgICB7ImZpbGU6Ly8vcGF0aC90by9vdGhlcl9m
aWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNlfSwKKyAgICAgICAg
eyJmaWxlOi8vL3BhdGgvdG8vb3RoZXIvZmlsZS5odG1sIiwgImZpbGU6Ly8vcGF0aC90by9maWxl
Lmh0bWwiLCBmYWxzZX0sCisgICAgICAgIHsiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTg7
YmFzZTY0LDc2Ty83Nk8vNzZPLyIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNldD11dGYtODtiYXNl
NjQsNzYwLzc2MC83NjAvIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbSIs
ICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tLyNoYXNoIiwgImZpbGU6Ly9leGFtcGxlLmNvbSIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRw
Oi8vZXhhbXBsZS5jb20vP3F1ZXJ5IiwgImZpbGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCisg
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSNoYXNoIiwgImZpbGU6Ly9leGFtcGxl
LmNvbS8iLCBmYWxzZX0sCisgICAgfTsKKworICAgIGZvciAoY29uc3QgYXV0byYgdGVzdCA6IGNh
c2VzKSB7CisgICAgICAgIFVSTCB1cmwxID0gY3JlYXRlVVJMKHRlc3QudXJsMSk7CisgICAgICAg
IFVSTCB1cmwyID0gY3JlYXRlVVJMKHRlc3QudXJsMik7CisgICAgICAgIEVYUEVDVF9FUSh0ZXN0
LmV4cGVjdGVkLCBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybDEsIHVybDIpKQor
ICAgICAgICAgICAgPDwgIlRlc3QgZmFpbGVkIGZvciAiIDw8IHRlc3QudXJsMSA8PCAiIHZzLiAi
IDw8IHRlc3QudXJsMjsKKyAgICB9Cit9CisKK1RFU1RfRihVUkxUZXN0LCBFcXVhbElnbm9yaW5n
UXVlcnlBbmRGcmFnbWVudCkKK3sKKyAgICBzdHJ1Y3QgVGVzdENhc2UgeworICAgICAgICBjb25z
dCBjaGFyKiB1cmwxOworICAgICAgICBjb25zdCBjaGFyKiB1cmwyOworICAgICAgICBib29sIGV4
cGVjdGVkOworICAgIH0gY2FzZXNbXSA9IHsKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20v
IiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBs
ZS5jb20vI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRydWV9LAorICAgICAgICB7Imh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCisg
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3Bh
dGgiLCB0cnVlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCNoYXNoIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUu
Y29tL3BhdGg/cXVlcnkiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCB0cnVlfSwKKyAgICAg
ICAgeyJodHRwOi8vZXhhbXBsZS5jb20vcGF0aD9xdWVyeSNoYXNoIiwgImh0dHA6Ly9leGFtcGxl
LmNvbS9wYXRoIiwgdHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tL290aGVycGF0
aCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8v
ZXhhbXBsZS5jb206ODAvIiwgImh0dHA6Ly9leGFtcGxlLmNvbS8iLCB0cnVlfSwKKyAgICAgICAg
eyJodHRwOi8vZXhhbXBsZS5jb206ODAvI2hhc2giLCAiaHR0cDovL2V4YW1wbGUuY29tLyIsIHRy
dWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNvbTo4MC9wYXRoIiwgImh0dHA6Ly9leGFt
cGxlLmNvbS8iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGgj
aGFzaCIsICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6
Ly9leGFtcGxlLmNvbTo4MC9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoIiwg
dHJ1ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgwL3BhdGg/cXVlcnkjaGFzaCIs
ICJodHRwOi8vZXhhbXBsZS5jb20vcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFt
cGxlLmNvbTo4MC9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tL3BhdGgiLCBmYWxzZX0s
CisgICAgICAgIHsiaHR0cDovL25vdC1leGFtcGxlLmNvbTo4MC8iLCAiaHR0cDovL2V4YW1wbGUu
Y29tOjgwLyIsIGZhbHNlfSwKKyAgICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb206ODEvIiwgImh0
dHA6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29t
OjgxLyNoYXNoIiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS8iLCB0cnVlfSwKKyAgICAgICAgeyJo
dHRwOi8vZXhhbXBsZS5jb206ODEvcGF0aCIsICJodHRwOi8vZXhhbXBsZS5jb206ODEiLCBmYWxz
ZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgjaGFzaCIsICJodHRwOi8v
ZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bTo4MS9wYXRoP3F1ZXJ5IiwgImh0dHA6Ly9leGFtcGxlLmNvbTo4MS9wYXRoIiwgdHJ1ZX0sCisg
ICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGg/cXVlcnkjaGFzaCIsICJodHRwOi8v
ZXhhbXBsZS5jb206ODEvcGF0aCIsIHRydWV9LAorICAgICAgICB7Imh0dHA6Ly9leGFtcGxlLmNv
bTo4MS9vdGhlcnBhdGgiLCAiaHR0cDovL2V4YW1wbGUuY29tOjgxL3BhdGgiLCBmYWxzZX0sCisg
ICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsICJmaWxlOi8vL3BhdGgvdG8vZmls
ZS5odG1sIiwgdHJ1ZX0sCisgICAgICAgIHsiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCNoYXNo
IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0cnVlfSwKKyAgICAgICAgeyJmaWxlOi8v
L3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5IiwgImZpbGU6Ly8vcGF0aC90by9maWxlLmh0bWwiLCB0
cnVlfSwKKyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vZmlsZS5odG1sP3F1ZXJ5I2hhc2giLCAi
ZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIHRydWV9LAorICAgICAgICB7ImZpbGU6Ly8vcGF0
aC90by9vdGhlcl9maWxlLmh0bWwiLCAiZmlsZTovLy9wYXRoL3RvL2ZpbGUuaHRtbCIsIGZhbHNl
fSwKKyAgICAgICAgeyJmaWxlOi8vL3BhdGgvdG8vb3RoZXIvZmlsZS5odG1sIiwgImZpbGU6Ly8v
cGF0aC90by9maWxlLmh0bWwiLCBmYWxzZX0sCisgICAgICAgIHsiZGF0YTp0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTg7YmFzZTY0LDc2Ty83Nk8vNzZPLyIsICJkYXRhOnRleHQvcGxhaW47Y2hhcnNl
dD11dGYtODtiYXNlNjQsNzYwLzc2MC83NjAvIiwgZmFsc2V9LAorICAgICAgICB7Imh0dHA6Ly9l
eGFtcGxlLmNvbSIsICJmaWxlOi8vZXhhbXBsZS5jb20iLCBmYWxzZX0sCisgICAgICAgIHsiaHR0
cDovL2V4YW1wbGUuY29tLyNoYXNoIiwgImZpbGU6Ly9leGFtcGxlLmNvbSIsIGZhbHNlfSwKKyAg
ICAgICAgeyJodHRwOi8vZXhhbXBsZS5jb20vP3F1ZXJ5IiwgImZpbGU6Ly9leGFtcGxlLmNvbS8i
LCBmYWxzZX0sCisgICAgICAgIHsiaHR0cDovL2V4YW1wbGUuY29tLz9xdWVyeSNoYXNoIiwgImZp
bGU6Ly9leGFtcGxlLmNvbS8iLCBmYWxzZX0sCisgICAgfTsKKworICAgIGZvciAoY29uc3QgYXV0
byYgdGVzdCA6IGNhc2VzKSB7CisgICAgICAgIFVSTCB1cmwxID0gY3JlYXRlVVJMKHRlc3QudXJs
MSk7CisgICAgICAgIFVSTCB1cmwyID0gY3JlYXRlVVJMKHRlc3QudXJsMik7CisgICAgICAgIEVY
UEVDVF9FUSh0ZXN0LmV4cGVjdGVkLCBlcXVhbElnbm9yaW5nUXVlcnlBbmRGcmFnbWVudCh1cmwx
LCB1cmwyKSkKKyAgICAgICAgICAgIDw8ICJUZXN0IGZhaWxlZCBmb3IgIiA8PCB0ZXN0LnVybDEg
PDwgIiB2cy4gIiA8PCB0ZXN0LnVybDI7CisgICAgfQorfQorCiBURVNUX0YoVVJMVGVzdCwgUHJv
dG9jb2xJc0luSFRUUEZhbWlseSkKIHsKICAgICBFWFBFQ1RfRkFMU0UocHJvdG9jb2xJc0luSFRU
UEZhbWlseSh7fSkpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9uYXZpZ2F0
aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1vcmlnaW4t
ZGVuaWVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzNlOTA3OGRlYzEyNjE2MzRmMDAzM2Yy
YjI3MjgzOTY5MjAzZjEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9uYXZpZ2F0aW9uL3B1c2hzdGF0ZS1hdC11bmlxdWUtb3JpZ2luLWRlbmllZC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw2IEBACisKK1BBU1MgcHVzaFN0YXRlIHRvIGEgbmV3IHBhdGggaW4gdW5p
cXVlIG9yaWdpbiBzaG91bGQgZmFpbCB3aXRoIFNlY3VyaXR5RXJyb3IgCitQQVNTIHB1c2hTdGF0
ZSAjaGFzaCBpbiB1bmlxdWUgb3JpZ2luIHNob3VsZCBub3QgZmFpbCB3aXRoIFNlY3VyaXR5RXJy
b3IgCitQQVNTIHB1c2hTdGF0ZSA/cXVlcnkgaW4gdW5pcXVlIG9yaWdpbiBzaG91bGQgbm90IGZh
aWwgd2l0aCBTZWN1cml0eUVycm9yIAorUEFTUyBwdXNoU3RhdGUgP3F1ZXJ5I2hhc2ggaW4gdW5p
cXVlIG9yaWdpbiBzaG91bGQgbm90IGZhaWwgd2l0aCBTZWN1cml0eUVycm9yIAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1
ZS1vcmlnaW4tZGVuaWVkLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbmF2aWdhdGlvbi9w
dXNoc3RhdGUtYXQtdW5pcXVlLW9yaWdpbi1kZW5pZWQucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NWI3Njgw
M2YxNmFjMDRlYzk4ZjVlNDIxNmJjZTkxNjJjMjlkODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL25hdmlnYXRpb24vcHVzaHN0YXRlLWF0LXVuaXF1ZS1vcmlnaW4t
ZGVuaWVkLnBocApAQCAtMCwwICsxLDQwIEBACis8P3BocAoraGVhZGVyKCJDb250ZW50LVNlY3Vy
aXR5LVBvbGljeTogc2FuZGJveCBhbGxvdy1zY3JpcHRzIik7Cis/PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgb3Jp
Z2luVVJMID0gZG9jdW1lbnQuVVJMOwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3Ro
cm93cygnU2VjdXJpdHlFcnJvcicsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgaGlzdG9yeS5wdXNo
U3RhdGUobnVsbCwgbnVsbCwgb3JpZ2luVVJMICsgIi9wYXRoIik7CisgICAgfSk7Cit9LCAncHVz
aFN0YXRlIHRvIGEgbmV3IHBhdGggaW4gdW5pcXVlIG9yaWdpbiBzaG91bGQgZmFpbCB3aXRoIFNl
Y3VyaXR5RXJyb3InKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdHJ5IHsKKyAgICAgICAg
aGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgb3JpZ2luVVJMICsgIiNoYXNoIik7CisgICAg
ICAgIGRvbmUoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQo
InB1c2hTdGF0ZSAjaGFzaCBzaG91bGQgbm90IGZhaWwuIik7CisgICAgfQorfSwgJ3B1c2hTdGF0
ZSAjaGFzaCBpbiB1bmlxdWUgb3JpZ2luIHNob3VsZCBub3QgZmFpbCB3aXRoIFNlY3VyaXR5RXJy
b3InKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgaGlzdG9yeS5w
dXNoU3RhdGUobnVsbCwgbnVsbCwgb3JpZ2luVVJMICsgIj9xdWVyeSIpOworICAgICAgICBkb25l
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJwdXNoU3Rh
dGUgP3F1ZXJ5IHNob3VsZCBub3QgZmFpbC4iKTsKKyAgICB9Cit9LCAncHVzaFN0YXRlID9xdWVy
eSBpbiB1bmlxdWUgb3JpZ2luIHNob3VsZCBub3QgZmFpbCB3aXRoIFNlY3VyaXR5RXJyb3InKTsK
KwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgaGlzdG9yeS5wdXNoU3Rh
dGUobnVsbCwgbnVsbCwgb3JpZ2luVVJMICsgIj9xdWVyeSNoYXNoIik7CisgICAgICAgIGRvbmUo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoInB1c2hTdGF0
ZSA/cXVlcnkjaGFzaCBzaG91bGQgbm90IGZhaWwuIik7CisgICAgfQorfSwgJ3B1c2hTdGF0ZSA/
cXVlcnkjaGFzaCBpbiB1bmlxdWUgb3JpZ2luIHNob3VsZCBub3QgZmFpbCB3aXRoIFNlY3VyaXR5
RXJyb3InKTsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>