<?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>191406</bug_id>
          
          <creation_ts>2018-11-07 16:09:54 -0800</creation_ts>
          <short_desc>[Curl] Reject entire cookie if the domain fails a tailmatch.</short_desc>
          <delta_ts>2018-11-12 23:22:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=191493</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1476307</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-07 16:09:54 -0800</bug_when>
    <thetext>Currently we don&apos;t put domain attribute of cookie when it fails a tailmatch. As Firefox and Chrome do, we are going to reject the entire cookie if the domain fails a tailmatch instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476311</commentid>
    <comment_count>1</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-07 16:12:26 -0800</bug_when>
    <thetext>The entire cookie needs to be rejected if a site tries to set a cookie that fails these conditions.
https://tools.ietf.org/html/rfc6265#section-5.1.3.

Basically the domain attribute of a cookie must either be an exact match, or a suffix starting at the start of a %2e (&quot;.&quot;) separated domain part that is not an IP address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476723</commentid>
    <comment_count>2</comment_count>
      <attachid>354291</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-08 16:47:21 -0800</bug_when>
    <thetext>Created attachment 354291
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476725</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-08 16:50:35 -0800</bug_when>
    <thetext>Attachment 354291 did not pass style-queue:


ERROR: Source/WebCore/platform/win/FileSystemWin.cpp:574:  file_op is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/platform/win/FileSystemWin.cpp:575:  Use nullptr instead of NULL.  [readability/null] [5]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476960</commentid>
    <comment_count>4</comment_count>
      <attachid>354291</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-09 10:00:27 -0800</bug_when>
    <thetext>Comment on attachment 354291
PATCH

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

Overall looks good minus a couple nits.

&gt; Source/WebCore/platform/FileSystem.h:193
&gt; +#if USE(CURL)
&gt; +WEBCORE_EXPORT String createTemporaryDirectory(String directoryPrefix);
&gt; +WEBCORE_EXPORT bool deleteNonEmptyDirectory(const String&amp;);
&gt; +#endif

Having something be USE(CURL) within FileSystem.h is a little odd. I would say make it based on Windows since you have that implementation.

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:574
&gt; +    SHFILEOPSTRUCT file_op = {

Just rename to make the style checker happy.

&gt; Tools/TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp:73
&gt; +TEST_F(CurlCookies, RejectTailmatchFailureDomain)
&gt; +{
&gt; +    // success: domain match
&gt; +    EXPECT_EQ(0, m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=example.com&quot;, false));
&gt; +    // success: wildcard of domains
&gt; +    EXPECT_EQ(0, m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=.example.com&quot;, false));
&gt; +    // failure: specific sub domain
&gt; +    EXPECT_EQ(-1, m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=www.example.com&quot;, false));
&gt; +    // failure: different domain
&gt; +    EXPECT_EQ(-1, m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=sample.com&quot;, false));
&gt; +}

:+1: for tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477005</commentid>
    <comment_count>5</comment_count>
      <attachid>354291</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-09 11:18:06 -0800</bug_when>
    <thetext>Comment on attachment 354291
PATCH

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

Thanks for your comments.

&gt;&gt; Source/WebCore/platform/FileSystem.h:193
&gt;&gt; +#endif
&gt; 
&gt; Having something be USE(CURL) within FileSystem.h is a little odd. I would say make it based on Windows since you have that implementation.

Oh, that&apos;s right. I put the code on FileSystemWin.cpp so that it should use PLATFORM(WINCAIRO). Thanks

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:574
&gt;&gt; +    SHFILEOPSTRUCT file_op = {
&gt; 
&gt; Just rename to make the style checker happy.

Sure. Copy and pasted from MS homepage. My bad.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp:73
&gt;&gt; +}
&gt; 
&gt; :+1: for tests!

My first unittest on WebCore!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477042</commentid>
    <comment_count>6</comment_count>
      <attachid>354369</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-09 12:18:30 -0800</bug_when>
    <thetext>Created attachment 354369
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477057</commentid>
    <comment_count>7</comment_count>
      <attachid>354369</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-09 12:40:48 -0800</bug_when>
    <thetext>Comment on attachment 354369
PATCH

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

&gt; Source/WebCore/platform/network/curl/CookieJarDB.cpp:460
&gt;  int CookieJarDB::setCookie(const String&amp; url, const String&amp; cookie, bool fromJavaScript)

Could it return a bool instead?
Or are we passing some meaningful error codes?

&gt; Source/WebCore/platform/network/curl/CookieUtil.cpp:140
&gt; +bool parseCookieHeader(const String&amp; cookieLine, Cookie&amp; result)

Might be a follow-up patch but we now like to do things like:
std::optional&lt;Cookie&gt; parseCookieHeader(const String&amp; cookieLine);
or ExceptionOr&lt;Cookie&gt; if there is a need to provide more accurate error handling.

&gt; Source/WebCore/platform/network/curl/CookieUtil.h:37
&gt; +bool parseCookieHeader(const String&amp; cookieLine, Cookie&amp; result);

s/ result//

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:379
&gt; +static String generateTemporaryPath(Function&lt;bool(const String&amp;)&gt; action)

Can action be a const Function&amp;?

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:412
&gt; +    String proposedPath = generateTemporaryPath([&amp;handle](const String proposedPath) {

s/const String/const String&amp;/

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:563
&gt; +String createTemporaryDirectory(String directoryPrefix)

directoryPrefix does not seem to be used.
Also it is a String, should it be a const String&amp;.

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:565
&gt; +    String proposedPath = generateTemporaryPath([](const String proposedPath) {

s/const String/const String&amp;/

&gt; Source/WebCore/platform/win/FileSystemWin.cpp:569
&gt; +    return proposedPath;

Maybe we could remove this temporary variable and directly write &apos;return generate...&apos;
This would remove the use of two different &apos;proposedPath&apos; variables in the same function.

&gt; Tools/TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp:66
&gt; +    EXPECT_EQ(0, m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=example.com&quot;, false));

If we return a boolean, we would write it:
EXPECT_TRUE(m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=example.com&quot;, false));
which seems a bit more readable.

Also false is not super readable.
We could write it as:
bool fromJavaScript = false here or use an enumeration instead of a bool.

There are no tests for setCookie with fromJavaScript = true.
Should it be tested as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477059</commentid>
    <comment_count>8</comment_count>
      <attachid>354369</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-09 12:41:25 -0800</bug_when>
    <thetext>Comment on attachment 354369
PATCH

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

&gt; Tools/ChangeLog:1
&gt; +2018-11-08  Christopher Reid  &lt;chris.reid@sony.com&gt;

Is it a patch from Christopher, from Basuke or a joint work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477170</commentid>
    <comment_count>9</comment_count>
      <attachid>354369</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-09 16:20:53 -0800</bug_when>
    <thetext>Comment on attachment 354369
PATCH

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

Separate the refactoring and initial preparation of the unit test file to https://bugs.webkit.org/show_bug.cgi?id=191493

&gt;&gt; Source/WebCore/platform/network/curl/CookieJarDB.cpp:460
&gt;&gt;  int CookieJarDB::setCookie(const String&amp; url, const String&amp; cookie, bool fromJavaScript)
&gt; 
&gt; Could it return a bool instead?
&gt; Or are we passing some meaningful error codes?

bool must be fine.

&gt;&gt; Source/WebCore/platform/network/curl/CookieUtil.cpp:140
&gt;&gt; +bool parseCookieHeader(const String&amp; cookieLine, Cookie&amp; result)
&gt; 
&gt; Might be a follow-up patch but we now like to do things like:
&gt; std::optional&lt;Cookie&gt; parseCookieHeader(const String&amp; cookieLine);
&gt; or ExceptionOr&lt;Cookie&gt; if there is a need to provide more accurate error handling.

Good to catch this improvement on this patch. Thanks

&gt;&gt; Source/WebCore/platform/network/curl/CookieUtil.h:37
&gt;&gt; +bool parseCookieHeader(const String&amp; cookieLine, Cookie&amp; result);
&gt; 
&gt; s/ result//

Might change using optional as above.

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:379
&gt;&gt; +static String generateTemporaryPath(Function&lt;bool(const String&amp;)&gt; action)
&gt; 
&gt; Can action be a const Function&amp;?

I try. Let me see.

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:412
&gt;&gt; +    String proposedPath = generateTemporaryPath([&amp;handle](const String proposedPath) {
&gt; 
&gt; s/const String/const String&amp;/

Right.

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:563
&gt;&gt; +String createTemporaryDirectory(String directoryPrefix)
&gt; 
&gt; directoryPrefix does not seem to be used.
&gt; Also it is a String, should it be a const String&amp;.

Right.

&gt;&gt; Source/WebCore/platform/win/FileSystemWin.cpp:569
&gt;&gt; +    return proposedPath;
&gt; 
&gt; Maybe we could remove this temporary variable and directly write &apos;return generate...&apos;
&gt; This would remove the use of two different &apos;proposedPath&apos; variables in the same function.

Right.

&gt;&gt; Tools/ChangeLog:1
&gt;&gt; +2018-11-08  Christopher Reid  &lt;chris.reid@sony.com&gt;
&gt; 
&gt; Is it a patch from Christopher, from Basuke or a joint work?

This is Chris&apos;s work and tested by me.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebCore/curl/Cookies.cpp:66
&gt;&gt; +    EXPECT_EQ(0, m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=example.com&quot;, false));
&gt; 
&gt; If we return a boolean, we would write it:
&gt; EXPECT_TRUE(m_cookieJar-&gt;setCookie(&quot;http://example.com&quot;, &quot;foo=bar; Domain=example.com&quot;, false));
&gt; which seems a bit more readable.
&gt; 
&gt; Also false is not super readable.
&gt; We could write it as:
&gt; bool fromJavaScript = false here or use an enumeration instead of a bool.
&gt; 
&gt; There are no tests for setCookie with fromJavaScript = true.
&gt; Should it be tested as well?

It should be. I&apos;ll change the code using Enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477762</commentid>
    <comment_count>10</comment_count>
      <attachid>354600</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-12 15:32:39 -0800</bug_when>
    <thetext>Created attachment 354600
PATCH

After bug 191493 was landed, this patch just is patch for the tailmatch and add test for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477876</commentid>
    <comment_count>11</comment_count>
      <attachid>354600</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-11-12 20:06:58 -0800</bug_when>
    <thetext>Comment on attachment 354600
PATCH

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

&gt; Source/WebCore/platform/network/curl/CookieJarDB.cpp:478
&gt; +        || !CookieUtil::domainMatch(cookie-&gt;domain, host))

maybe rewrite it as 
if (fromJavaScript &amp;&amp; (cookie-&gt;httpOnly || hasHttpOnlyCookie(cookie-&gt;name, cookie-&gt;domain, cookie-&gt;path))
    return false;
if (!CookieUtil::domainMatch(cookie-&gt;domain, host))
    return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477913</commentid>
    <comment_count>12</comment_count>
      <attachid>354653</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-12 22:38:53 -0800</bug_when>
    <thetext>Created attachment 354653
PATCH

Thanks. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477914</commentid>
    <comment_count>13</comment_count>
      <attachid>354653</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-12 22:40:12 -0800</bug_when>
    <thetext>Comment on attachment 354653
PATCH

Rejecting attachment 354653 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 354653, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/9969355</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477917</commentid>
    <comment_count>14</comment_count>
      <attachid>354654</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-11-12 22:42:38 -0800</bug_when>
    <thetext>Created attachment 354654
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477922</commentid>
    <comment_count>15</comment_count>
      <attachid>354654</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-12 23:21:21 -0800</bug_when>
    <thetext>Comment on attachment 354654
PATCH

Clearing flags on attachment: 354654

Committed r238123: &lt;https://trac.webkit.org/changeset/238123&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477923</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-12 23:21:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477924</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-12 23:22:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/46019326&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354291</attachid>
            <date>2018-11-08 16:47:21 -0800</date>
            <delta_ts>2018-11-09 12:18:30 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>191406.diff</filename>
            <type>text/plain</type>
            <size>13044</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNWU0YTFhNmMzMi4uNDJjYzZmMThkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOC0xMS0wOCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlamVjdCBlbnRpcmUgY29va2llIGlmIHRoZSBkb21h
aW4gZmFpbHMgYSB0YWlsbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDdXJyZW50bHkgd2UgZG9uJ3QgcHV0IGRvbWFpbiBhdHRyaWJ1dGUgb2Yg
Y29va2llIHdoZW4gaXQgZmFpbHMgYSB0YWlsbWF0Y2guIEFzIEZpcmVmb3gKKyAgICAgICAgYW5k
IENocm9tZSBkbywgd2UgYXJlIGdvaW5nIHRvIHJlamVjdCB0aGUgZW50aXJlIGNvb2tpZSBpZiB0
aGUgZG9tYWluIGZhaWxzIGEgdGFpbG1hdGNoIGluc3RlYWQuCisKKyAgICAgICAgVGVzdHM6IFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZXRDb29raWUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OnBhcnNlQ29va2llQXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUhlYWRlcik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
RmlsZVN5c3RlbVdpbi5jcHA6IEZvciB1bml0dGVzdC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkpOgorCiAyMDE4LTExLTA3ICBEb24gT2xtc3RlYWQgIDxk
b24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgbWFjcm9zIGluIHBsYXRm
b3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggYTUyYWI0YzdjZjQuLjEz
ZmFkMjQxNmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xODcsNiAr
MTg3LDExIEBAIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKKyNpZiBVU0UoQ1VS
TCkKK1dFQkNPUkVfRVhQT1JUIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkoU3RyaW5n
IGRpcmVjdG9yeVByZWZpeCk7CitXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYpOworI2VuZGlmCisKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBy
ZWFsUGF0aChjb25zdCBTdHJpbmcmKTsKIAogY2xhc3MgTWFwcGVkRmlsZURhdGEgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAK
aW5kZXggNDIwNDllZDQ3YzkuLmExZjNjZjk3YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTQ1NCw3ICs0NTQs
NyBAQCBpbnQgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKICAg
ICBjaGVja1NRTGl0ZVJldHVybkNvZGUocmV0KTsKICAgICBBU1NFUlQocmV0ID09IFNRTElURV9E
T05FKTsKIAotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIFNRTElURV9PSzsKIH0KIAogaW50
IENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llLCBib29sIGZyb21KYXZhU2NyaXB0KQpAQCAtNDcwLDcgKzQ3MCw3IEBAIGludCBDb29r
aWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZSwgYm9vbCBmcm9tSmF2CiAgICAgU3RyaW5nIHBhdGgodXJsT2JqLnBhdGgoKSk7CiAKICAgICBD
b29raWUgY29va2llT2JqOwotICAgIGlmICghQ29va2llVXRpbDo6cGFyc2VDb29raWVIZWFkZXIo
Y29va2llLCBob3N0LCBjb29raWVPYmopKQorICAgIGlmICghQ29va2llVXRpbDo6cGFyc2VDb29r
aWVIZWFkZXIoY29va2llLCBjb29raWVPYmopKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBp
ZiAoY29va2llT2JqLmRvbWFpbi5pc0VtcHR5KCkpCkBAIC00ODQsMTAgKzQ4NCw5IEBAIGludCBD
b29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZSwgYm9vbCBmcm9tSmF2CiAgICAgICAgIHJldHVybiAtMTsKICNlbmRpZgogCi0gICAgaWYg
KGZyb21KYXZhU2NyaXB0ICYmIGNvb2tpZU9iai5odHRwT25seSkKLSAgICAgICAgcmV0dXJuIC0x
OwotCi0gICAgaWYgKGZyb21KYXZhU2NyaXB0ICYmIGhhc0h0dHBPbmx5Q29va2llKGNvb2tpZU9i
ai5uYW1lLCBjb29raWVPYmouZG9tYWluLCBjb29raWVPYmoucGF0aCkpCisgICAgaWYgKChmcm9t
SmF2YVNjcmlwdCAmJiBjb29raWVPYmouaHR0cE9ubHkpCisgICAgICAgIHx8IChmcm9tSmF2YVNj
cmlwdCAmJiBoYXNIdHRwT25seUNvb2tpZShjb29raWVPYmoubmFtZSwgY29va2llT2JqLmRvbWFp
biwgY29va2llT2JqLnBhdGgpKQorICAgICAgICB8fCAhQ29va2llVXRpbDo6ZG9tYWluTWF0Y2go
Y29va2llT2JqLmRvbWFpbiwgaG9zdCkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIHJldHVy
biBzZXRDb29raWUoY29va2llT2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCBjZjU1ODg0ODI2Zi4uMTkyN2YyZDcz
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBwYXJzZUV4cGlyZXMoY29uc3QgY2hhciogZXhwaXJlcykKICAgICByZXR1cm4gc3RkOjpvcHRp
b25hbDxkb3VibGU+IHt0bXAgLyBXVEY6Om1zUGVyU2Vjb25kfTsKIH0KIAotc3RhdGljIHZvaWQg
cGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwgYm9vbCYgaGFzTWF4QWdlLCBDb29raWUmIHJlc3VsdCkKK3N0YXRpYyB2b2lk
IHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFz
TWF4QWdlLCBDb29raWUmIHJlc3VsdCkKIHsKICAgICBzaXplX3QgYXNzaWdubWVudFBvc2l0aW9u
ID0gYXR0cmlidXRlLmZpbmQoJz0nKTsKIApAQCAtMTEzLDExICsxMTMsNyBAQCBzdGF0aWMgdm9p
ZCBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0
cmluZyYgZG9tYWluLAogICAgICAgICBpZiAoIWlzSVBBZGRyZXNzKGF0dHJpYnV0ZVZhbHVlKSAm
JiAhYXR0cmlidXRlVmFsdWUuc3RhcnRzV2l0aCgnLicpICYmIGF0dHJpYnV0ZVZhbHVlLmZpbmQo
Jy4nKSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gIi4iICsgYXR0
cmlidXRlVmFsdWU7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBob3N0IGNhbiBzZXQgYSBj
b29raWUgZm9yIHRoZSBkb21haW4KLSAgICAgICAgLy8gRklYTUU6IGZpcmVmb3ggYW5kIGNocm9t
ZSBib3RoIGlnbm9yZSBjb29raWVzIHdpdGggbm8gdmFsaWQgZG9tYWluIHNldAotICAgICAgICAv
LyB3ZSBjdXJyZW50bHkgaWdub3JlIHRoZSBpbnZhbGlkIGRvbWFpbnMgYW5kIGRlZmF1bHQgdG8g
dGhlIGhvc3RuYW1lIGFzIHRoZSBkb21haW4KLSAgICAgICAgaWYgKGRvbWFpbk1hdGNoKGF0dHJp
YnV0ZVZhbHVlLCBkb21haW4pKQotICAgICAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGF0dHJpYnV0
ZVZhbHVlOworICAgICAgICByZXN1bHQuZG9tYWluID0gYXR0cmlidXRlVmFsdWU7CiAKICAgICB9
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlTmFtZSwgIm1heC1hZ2Ui
KSkgewogICAgICAgICBib29sIG9rOwpAQCAtMTQxLDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHBh
cnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5n
JiBkb21haW4sCiAgICAgfQogfQogCi1ib29sIHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgY29va2llTGluZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIENvb2tpZSYgcmVzdWx0KQorYm9v
bCBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUsIENvb2tpZSYgcmVz
dWx0KQogewogICAgIGlmIChjb29raWVMaW5lLmxlbmd0aCgpID49IE1BWF9DT09LSUVfTElORSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcyLDcgKzE2OCw3IEBAIGJvb2wgcGFyc2VDb29r
aWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwg
Q29va2llJiByCiAgICAgcmVzdWx0LnNlc3Npb24gPSB0cnVlOwogCiAgICAgZm9yIChhdXRvIGF0
dHJpYnV0ZSA6IGNvb2tpZUxpbmUuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnOycpKQotICAg
ICAgICBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoYXR0cmlidXRlLCBkb21haW4sIGhhc01heEFnZSwg
cmVzdWx0KTsKKyAgICAgICAgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZSwgaGFzTWF4
QWdlLCByZXN1bHQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAppbmRleCBhODljOWFiN2I5Ni4u
ZjU4ZTBhOWUzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZVV0aWwuaApAQCAtMzQsNyArMzQsNyBAQCBzdHJ1Y3QgQ29va2llOwogCiBuYW1l
c3BhY2UgQ29va2llVXRpbCB7CiAKLWJvb2wgcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5n
JiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgQ29va2llJiByZXN1bHQpOworYm9v
bCBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUsIENvb2tpZSYgcmVz
dWx0KTsKIAogYm9vbCBpc0lQQWRkcmVzcyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDU0MzZh
MjZhZDUxLi4xNzhlZGFiYjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9G
aWxlU3lzdGVtV2luLmNwcApAQCAtMzc2LDEwICszNzYsOCBAQCBzdGF0aWMgU3RyaW5nIGNhY2hl
ZFN0b3JhZ2VEaXJlY3RvcnkoRFdPUkQgcGF0aElkZW50aWZpZXIpCiAgICAgcmV0dXJuIGRpcmVj
dG9yeTsKIH0KIAotU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgaGFuZGxlKQorc3RhdGljIFN0cmluZyBnZW5lcmF0ZVRlbXBvcmFyeVBh
dGgoRnVuY3Rpb248Ym9vbChjb25zdCBTdHJpbmcmKT4gYWN0aW9uKQogewotICAgIGhhbmRsZSA9
IElOVkFMSURfSEFORExFX1ZBTFVFOwotCiAgICAgd2NoYXJfdCB0ZW1wUGF0aFtNQVhfUEFUSF07
CiAgICAgaW50IHRlbXBQYXRoTGVuZ3RoID0gOjpHZXRUZW1wUGF0aFcoV1RGX0FSUkFZX0xFTkdU
SCh0ZW1wUGF0aCksIHRlbXBQYXRoKTsKICAgICBpZiAodGVtcFBhdGhMZW5ndGggPD0gMCB8fCB0
ZW1wUGF0aExlbmd0aCA+IFdURl9BUlJBWV9MRU5HVEgodGVtcFBhdGgpKQpAQCAtNDAyLDEwICs0
MDAsMjEgQEAgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3Jt
RmlsZUhhbmRsZSYgaGFuZGxlKQogICAgICAgICBwcm9wb3NlZFBhdGggPSBwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQobnVsbFRlcm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBQYXRoKSwgbnVsbFRl
cm1pbmF0ZWRXQ2hhclRvU3RyaW5nKHRlbXBGaWxlKSk7CiAgICAgICAgIGlmIChwcm9wb3NlZFBh
dGguaXNFbXB0eSgpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgfSB3aGlsZSAoIWFjdGlvbihw
cm9wb3NlZFBhdGgpKTsKKworICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Cit9CisKK1N0cmluZyBv
cGVuVGVtcG9yYXJ5RmlsZShjb25zdCBTdHJpbmcmLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIGhhbmRs
ZSkKK3sKKyAgICBoYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKIAorICAgIFN0cmluZyBw
cm9wb3NlZFBhdGggPSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoWyZoYW5kbGVdKGNvbnN0IFN0cmlu
ZyBwcm9wb3NlZFBhdGgpIHsKICAgICAgICAgLy8gdXNlIENSRUFURV9ORVcgdG8gYXZvaWQgb3Zl
cndyaXRpbmcgYW4gZXhpc3RpbmcgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUKICAgICAgICAgaGFu
ZGxlID0gOjpDcmVhdGVGaWxlVyhzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIocHJvcG9zZWRQ
YXRoKS5kYXRhKCksIEdFTkVSSUNfUkVBRCB8IEdFTkVSSUNfV1JJVEUsIDAsIDAsIENSRUFURV9O
RVcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgMCk7Ci0gICAgfSB3aGlsZSAoIWlzSGFuZGxlVmFs
aWQoaGFuZGxlKSAmJiBHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9BTFJFQURZX0VYSVNUUyk7CisK
KyAgICAgICAgcmV0dXJuIGlzSGFuZGxlVmFsaWQoaGFuZGxlKSB8fCBHZXRMYXN0RXJyb3IoKSA9
PSBFUlJPUl9BTFJFQURZX0VYSVNUUzsKKyAgICB9KTsKIAogICAgIGlmICghaXNIYW5kbGVWYWxp
ZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC01NTEsNSArNTYwLDI5IEBA
IFN0cmluZyByZWFsUGF0aChjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogICAgIHJldHVybiBnZXRG
aW5hbFBhdGhOYW1lKGZpbGVQYXRoKTsKIH0KIAorU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVj
dG9yeShTdHJpbmcgZGlyZWN0b3J5UHJlZml4KQoreworICAgIFN0cmluZyBwcm9wb3NlZFBhdGgg
PSBnZW5lcmF0ZVRlbXBvcmFyeVBhdGgoW10oY29uc3QgU3RyaW5nIHByb3Bvc2VkUGF0aCkgewor
ICAgICAgICByZXR1cm4gbWFrZUFsbERpcmVjdG9yaWVzKHByb3Bvc2VkUGF0aCk7CisgICAgfSk7
CisKKyAgICByZXR1cm4gcHJvcG9zZWRQYXRoOworfQorCitib29sIGRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5UGF0aCkKK3sKKyAgICBTSEZJTEVPUFNUUlVD
VCBmaWxlX29wID0geworICAgICAgICBOVUxMLAorICAgICAgICBGT19ERUxFVEUsCisgICAgICAg
IHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihkaXJlY3RvcnlQYXRoKS5kYXRhKCksCisgICAg
ICAgIEwiIiwKKyAgICAgICAgRk9GX05PQ09ORklSTUFUSU9OIHwgRk9GX05PRVJST1JVSSB8IEZP
Rl9TSUxFTlQsCisgICAgICAgIGZhbHNlLAorICAgICAgICAwLAorICAgICAgICBMIiIKKyAgICB9
OworICAgIHJldHVybiAhU0hGaWxlT3BlcmF0aW9uKCZmaWxlX29wKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgRmlsZVN5c3RlbQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJiNmM3NzUzNDA0Li4yOTM2NTJh
NDBhOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDE4LTExLTA4ICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVr
aUBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gUmVqZWN0IGVudGlyZSBjb29raWUgaWYgdGhl
IGRvbWFpbiBmYWlscyBhIHRhaWxtYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTQwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIHVuaXR0ZXN0IGZvciBDdXJsIGNvb2tpZSBpbXBsZW1l
bnRhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2U6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6IEFk
ZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAxOC0xMS0wNyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgT3ZlcnJpZGUgK1tVSUtl
eWJvYXJkIGlzSW5IYXJkd2FyZUtleWJvYXJkTW9kZV0gaW4gV2ViS2l0VGVzdFJ1bm5lciBhbmQg
RHVtcFJlbmRlclRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1X
aW4uY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGYx
M2I4MmVhZTc1Li4zNjUwZTQwNjQ1YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2luLmNt
YWtlCkBAIC03NCw2ICs3NCw3IEBAIGlmICgke1dURl9QTEFURk9STV9XSU5fQ0FJUk99KQogICAg
ICAgICB2Y3J1bnRpbWUKICAgICApCiAgICAgbGlzdChBUFBFTkQgVGVzdFdlYkNvcmVMaWJfU09V
UkNFUworICAgICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29v
a2llcy5jcHAKICAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViQ29yZS93aW4v
Qml0bWFwSW1hZ2UuY3BwCiAgICAgICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYkNv
cmUvQ3J5cHRvRGlnZXN0LmNwcAogICAgICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9X
ZWJDb3JlL1B1YmxpY1N1ZmZpeC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmJiNjQ3MDZiZDI3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTAsMCArMSw3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQ1VSTCkKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyREIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVV0
aWwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDxtZW1vcnk+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK2NsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6Cisg
ICAgdm9pZCBTZXRVcCgpIGZpbmFsCisgICAgeworICAgICAgICBtX2Nvb2tpZURpcmVjdG9yeSA9
IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeSgiQ3VybENvb2tpZSIpOworCisg
ICAgICAgIG1fY29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJDb3JlOjpDb29raWVKYXJE
Qj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fY29va2llRGlyZWN0b3J5
LCAiY29va2llZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tpZUphci0+b3BlbigpOworICAgICAg
ICBtX2Nvb2tpZUphci0+c2V0RW5hYmxlZCh0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJE
b3duKCkgZmluYWwKKyAgICB7CisgICAgICAgIG1fY29va2llSmFyID0gbnVsbHB0cjsKKworICAg
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShtX2Nvb2tpZURpcmVjdG9y
eSk7CisgICAgICAgIG1fY29va2llRGlyZWN0b3J5ID0gU3RyaW5nKCk7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgc3RkOjp1bmlxdWVfcHRyPENvb2tpZUphckRCPiBtX2Nvb2tpZUphcjsKKyAg
ICBTdHJpbmcgbV9jb29raWVEaXJlY3Rvcnk7Cit9OworCitURVNUX0YoQ3VybENvb2tpZXMsIFJl
amVjdFRhaWxtYXRjaEZhaWx1cmVEb21haW4pCit7CisgICAgLy8gc3VjY2VzczogZG9tYWluIG1h
dGNoCisgICAgRVhQRUNUX0VRKDAsIG1fY29va2llSmFyLT5zZXRDb29raWUoImh0dHA6Ly9leGFt
cGxlLmNvbSIsICJmb289YmFyOyBEb21haW49ZXhhbXBsZS5jb20iLCBmYWxzZSkpOworICAgIC8v
IHN1Y2Nlc3M6IHdpbGRjYXJkIG9mIGRvbWFpbnMKKyAgICBFWFBFQ1RfRVEoMCwgbV9jb29raWVK
YXItPnNldENvb2tpZSgiaHR0cDovL2V4YW1wbGUuY29tIiwgImZvbz1iYXI7IERvbWFpbj0uZXhh
bXBsZS5jb20iLCBmYWxzZSkpOworICAgIC8vIGZhaWx1cmU6IHNwZWNpZmljIHN1YiBkb21haW4K
KyAgICBFWFBFQ1RfRVEoLTEsIG1fY29va2llSmFyLT5zZXRDb29raWUoImh0dHA6Ly9leGFtcGxl
LmNvbSIsICJmb289YmFyOyBEb21haW49d3d3LmV4YW1wbGUuY29tIiwgZmFsc2UpKTsKKyAgICAv
LyBmYWlsdXJlOiBkaWZmZXJlbnQgZG9tYWluCisgICAgRVhQRUNUX0VRKC0xLCBtX2Nvb2tpZUph
ci0+c2V0Q29va2llKCJodHRwOi8vZXhhbXBsZS5jb20iLCAiZm9vPWJhcjsgRG9tYWluPXNhbXBs
ZS5jb20iLCBmYWxzZSkpOworfQorCit9CisKKyNlbmRpZiAvLyBVU0UoQ1VSTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354369</attachid>
            <date>2018-11-09 12:18:30 -0800</date>
            <delta_ts>2018-11-12 15:32:39 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>191406.diff</filename>
            <type>text/plain</type>
            <size>13065</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNWU0YTFhNmMzMi4uNDJjYzZmMThkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAxOC0xMS0wOCAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlamVjdCBlbnRpcmUgY29va2llIGlmIHRoZSBkb21h
aW4gZmFpbHMgYSB0YWlsbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDdXJyZW50bHkgd2UgZG9uJ3QgcHV0IGRvbWFpbiBhdHRyaWJ1dGUgb2Yg
Y29va2llIHdoZW4gaXQgZmFpbHMgYSB0YWlsbWF0Y2guIEFzIEZpcmVmb3gKKyAgICAgICAgYW5k
IENocm9tZSBkbywgd2UgYXJlIGdvaW5nIHRvIHJlamVjdCB0aGUgZW50aXJlIGNvb2tpZSBpZiB0
aGUgZG9tYWluIGZhaWxzIGEgdGFpbG1hdGNoIGluc3RlYWQuCisKKyAgICAgICAgVGVzdHM6IFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZXRDb29raWUp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OnBhcnNlQ29va2llQXR0cmlidXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUhlYWRlcik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
RmlsZVN5c3RlbVdpbi5jcHA6IEZvciB1bml0dGVzdC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdlbmVyYXRlVGVtcG9yYXJ5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpj
cmVhdGVUZW1wb3JhcnlEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkpOgorCiAyMDE4LTExLTA3ICBEb24gT2xtc3RlYWQgIDxk
b24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgbWFjcm9zIGluIHBsYXRm
b3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKaW5kZXggYTUyYWI0YzdjZjQuLmU4
ZjM2ODk3ZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0xODcsNiAr
MTg3LDExIEBAIFdFQkNPUkVfRVhQT1JUIE5TU3RyaW5nICpjcmVhdGVUZW1wb3JhcnlEaXJlY3Rv
cnkoTlNTdHJpbmcgKmRpcmVjdG9yeVByZWZpeCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0
ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCiAKKyNpZiBPUyhXSU5E
T1dTKQorV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeURpcmVjdG9yeShTdHJp
bmcgZGlyZWN0b3J5UHJlZml4KTsKK1dFQkNPUkVfRVhQT1JUIGJvb2wgZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisjZW5kaWYKKwogV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IHJlYWxQYXRoKGNvbnN0IFN0cmluZyYpOwogCiBjbGFzcyBNYXBwZWRGaWxlRGF0YSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cAppbmRleCA0MjA0OWVkNDdjOS4uYTFmM2NmOTdhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtNDU0LDcgKzQ1
NCw3IEBAIGludCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQog
ICAgIGNoZWNrU1FMaXRlUmV0dXJuQ29kZShyZXQpOwogICAgIEFTU0VSVChyZXQgPT0gU1FMSVRF
X0RPTkUpOwogCi0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gU1FMSVRFX09LOwogfQogCiBp
bnQgQ29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWUsIGJvb2wgZnJvbUphdmFTY3JpcHQpCkBAIC00NzAsNyArNDcwLDcgQEAgaW50IENv
b2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llLCBib29sIGZyb21KYXYKICAgICBTdHJpbmcgcGF0aCh1cmxPYmoucGF0aCgpKTsKIAogICAg
IENvb2tpZSBjb29raWVPYmo7Ci0gICAgaWYgKCFDb29raWVVdGlsOjpwYXJzZUNvb2tpZUhlYWRl
cihjb29raWUsIGhvc3QsIGNvb2tpZU9iaikpCisgICAgaWYgKCFDb29raWVVdGlsOjpwYXJzZUNv
b2tpZUhlYWRlcihjb29raWUsIGNvb2tpZU9iaikpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAg
IGlmIChjb29raWVPYmouZG9tYWluLmlzRW1wdHkoKSkKQEAgLTQ4NCwxMCArNDg0LDkgQEAgaW50
IENvb2tpZUphckRCOjpzZXRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llLCBib29sIGZyb21KYXYKICAgICAgICAgcmV0dXJuIC0xOwogI2VuZGlmCiAKLSAgICBp
ZiAoZnJvbUphdmFTY3JpcHQgJiYgY29va2llT2JqLmh0dHBPbmx5KQotICAgICAgICByZXR1cm4g
LTE7Ci0KLSAgICBpZiAoZnJvbUphdmFTY3JpcHQgJiYgaGFzSHR0cE9ubHlDb29raWUoY29va2ll
T2JqLm5hbWUsIGNvb2tpZU9iai5kb21haW4sIGNvb2tpZU9iai5wYXRoKSkKKyAgICBpZiAoKGZy
b21KYXZhU2NyaXB0ICYmIGNvb2tpZU9iai5odHRwT25seSkKKyAgICAgICAgfHwgKGZyb21KYXZh
U2NyaXB0ICYmIGhhc0h0dHBPbmx5Q29va2llKGNvb2tpZU9iai5uYW1lLCBjb29raWVPYmouZG9t
YWluLCBjb29raWVPYmoucGF0aCkpCisgICAgICAgIHx8ICFDb29raWVVdGlsOjpkb21haW5NYXRj
aChjb29raWVPYmouZG9tYWluLCBob3N0KSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgcmV0
dXJuIHNldENvb2tpZShjb29raWVPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IGNmNTU4ODQ4MjZmLi4xOTI3ZjJk
NzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVVdGlsLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxkb3Vi
bGU+IHBhcnNlRXhwaXJlcyhjb25zdCBjaGFyKiBleHBpcmVzKQogICAgIHJldHVybiBzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4ge3RtcCAvIFdURjo6bXNQZXJTZWNvbmR9OwogfQogCi1zdGF0aWMgdm9p
ZCBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0
cmluZyYgZG9tYWluLCBib29sJiBoYXNNYXhBZ2UsIENvb2tpZSYgcmVzdWx0KQorc3RhdGljIHZv
aWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29sJiBo
YXNNYXhBZ2UsIENvb2tpZSYgcmVzdWx0KQogewogICAgIHNpemVfdCBhc3NpZ25tZW50UG9zaXRp
b24gPSBhdHRyaWJ1dGUuZmluZCgnPScpOwogCkBAIC0xMTMsMTEgKzExMyw3IEBAIHN0YXRpYyB2
b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4sCiAgICAgICAgIGlmICghaXNJUEFkZHJlc3MoYXR0cmlidXRlVmFsdWUp
ICYmICFhdHRyaWJ1dGVWYWx1ZS5zdGFydHNXaXRoKCcuJykgJiYgYXR0cmlidXRlVmFsdWUuZmlu
ZCgnLicpICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSAiLiIgKyBh
dHRyaWJ1dGVWYWx1ZTsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGhvc3QgY2FuIHNldCBh
IGNvb2tpZSBmb3IgdGhlIGRvbWFpbgotICAgICAgICAvLyBGSVhNRTogZmlyZWZveCBhbmQgY2hy
b21lIGJvdGggaWdub3JlIGNvb2tpZXMgd2l0aCBubyB2YWxpZCBkb21haW4gc2V0Ci0gICAgICAg
IC8vIHdlIGN1cnJlbnRseSBpZ25vcmUgdGhlIGludmFsaWQgZG9tYWlucyBhbmQgZGVmYXVsdCB0
byB0aGUgaG9zdG5hbWUgYXMgdGhlIGRvbWFpbgotICAgICAgICBpZiAoZG9tYWluTWF0Y2goYXR0
cmlidXRlVmFsdWUsIGRvbWFpbikpCi0gICAgICAgICAgICByZXN1bHQuZG9tYWluID0gYXR0cmli
dXRlVmFsdWU7CisgICAgICAgIHJlc3VsdC5kb21haW4gPSBhdHRyaWJ1dGVWYWx1ZTsKIAogICAg
IH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVOYW1lLCAibWF4LWFn
ZSIpKSB7CiAgICAgICAgIGJvb2wgb2s7CkBAIC0xNDEsNyArMTM3LDcgQEAgc3RhdGljIHZvaWQg
cGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBjb25zdCBTdHJp
bmcmIGRvbWFpbiwKICAgICB9CiB9CiAKLWJvb2wgcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3Ry
aW5nJiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgQ29va2llJiByZXN1bHQpCiti
b29sIHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSwgQ29va2llJiBy
ZXN1bHQpCiB7CiAgICAgaWYgKGNvb2tpZUxpbmUubGVuZ3RoKCkgPj0gTUFYX0NPT0tJRV9MSU5F
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzIsNyArMTY4LDcgQEAgYm9vbCBwYXJzZUNv
b2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUsIGNvbnN0IFN0cmluZyYgZG9tYWlu
LCBDb29raWUmIHIKICAgICByZXN1bHQuc2Vzc2lvbiA9IHRydWU7CiAKICAgICBmb3IgKGF1dG8g
YXR0cmlidXRlIDogY29va2llTGluZS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc7JykpCi0g
ICAgICAgIHBhcnNlQ29va2llQXR0cmlidXRlcyhhdHRyaWJ1dGUsIGRvbWFpbiwgaGFzTWF4QWdl
LCByZXN1bHQpOworICAgICAgICBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoYXR0cmlidXRlLCBoYXNN
YXhBZ2UsIHJlc3VsdCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCmluZGV4IGE4OWM5YWI3Yjk2
Li5mNThlMGE5ZTM0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZVV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5oCkBAIC0zNCw3ICszNCw3IEBAIHN0cnVjdCBDb29raWU7CiAKIG5h
bWVzcGFjZSBDb29raWVVdGlsIHsKIAotYm9vbCBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJp
bmcmIGNvb2tpZUxpbmUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBDb29raWUmIHJlc3VsdCk7Citi
b29sIHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29va2llTGluZSwgQ29va2llJiBy
ZXN1bHQpOwogCiBib29sIGlzSVBBZGRyZXNzKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggNTQz
NmEyNmFkNTEuLjRmOGJlMmY3OTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0zNzYsMTAgKzM3Niw4IEBAIHN0YXRpYyBTdHJpbmcgY2Fj
aGVkU3RvcmFnZURpcmVjdG9yeShEV09SRCBwYXRoSWRlbnRpZmllcikKICAgICByZXR1cm4gZGly
ZWN0b3J5OwogfQogCi1TdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxh
dGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpCitzdGF0aWMgU3RyaW5nIGdlbmVyYXRlVGVtcG9yYXJ5
UGF0aChGdW5jdGlvbjxib29sKGNvbnN0IFN0cmluZyYpPiBhY3Rpb24pCiB7Ci0gICAgaGFuZGxl
ID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0KICAgICB3Y2hhcl90IHRlbXBQYXRoW01BWF9QQVRI
XTsKICAgICBpbnQgdGVtcFBhdGhMZW5ndGggPSA6OkdldFRlbXBQYXRoVyhXVEZfQVJSQVlfTEVO
R1RIKHRlbXBQYXRoKSwgdGVtcFBhdGgpOwogICAgIGlmICh0ZW1wUGF0aExlbmd0aCA8PSAwIHx8
IHRlbXBQYXRoTGVuZ3RoID4gV1RGX0FSUkFZX0xFTkdUSCh0ZW1wUGF0aCkpCkBAIC00MDIsMTAg
KzQwMCwyMSBAQCBTdHJpbmcgb3BlblRlbXBvcmFyeUZpbGUoY29uc3QgU3RyaW5nJiwgUGxhdGZv
cm1GaWxlSGFuZGxlJiBoYW5kbGUpCiAgICAgICAgIHByb3Bvc2VkUGF0aCA9IHBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChudWxsVGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcFBhdGgpLCBudWxs
VGVybWluYXRlZFdDaGFyVG9TdHJpbmcodGVtcEZpbGUpKTsKICAgICAgICAgaWYgKHByb3Bvc2Vk
UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBicmVhazsKKyAgICB9IHdoaWxlICghYWN0aW9u
KHByb3Bvc2VkUGF0aCkpOworCisgICAgcmV0dXJuIHByb3Bvc2VkUGF0aDsKK30KKworU3RyaW5n
IG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYsIFBsYXRmb3JtRmlsZUhhbmRsZSYgaGFu
ZGxlKQoreworICAgIGhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogCisgICAgU3RyaW5n
IHByb3Bvc2VkUGF0aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbJmhhbmRsZV0oY29uc3QgU3Ry
aW5nIHByb3Bvc2VkUGF0aCkgewogICAgICAgICAvLyB1c2UgQ1JFQVRFX05FVyB0byBhdm9pZCBv
dmVyd3JpdGluZyBhbiBleGlzdGluZyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZQogICAgICAgICBo
YW5kbGUgPSA6OkNyZWF0ZUZpbGVXKHN0cmluZ1RvTnVsbFRlcm1pbmF0ZWRXQ2hhcihwcm9wb3Nl
ZFBhdGgpLmRhdGEoKSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwgMCwgMCwgQ1JFQVRF
X05FVywgRklMRV9BVFRSSUJVVEVfTk9STUFMLCAwKTsKLSAgICB9IHdoaWxlICghaXNIYW5kbGVW
YWxpZChoYW5kbGUpICYmIEdldExhc3RFcnJvcigpID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTKTsK
KworICAgICAgICByZXR1cm4gaXNIYW5kbGVWYWxpZChoYW5kbGUpIHx8IEdldExhc3RFcnJvcigp
ID09IEVSUk9SX0FMUkVBRFlfRVhJU1RTOworICAgIH0pOwogCiAgICAgaWYgKCFpc0hhbmRsZVZh
bGlkKGhhbmRsZSkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTU1MSw1ICs1NjAsMjkg
QEAgU3RyaW5nIHJlYWxQYXRoKGNvbnN0IFN0cmluZyYgZmlsZVBhdGgpCiAgICAgcmV0dXJuIGdl
dEZpbmFsUGF0aE5hbWUoZmlsZVBhdGgpOwogfQogCitTdHJpbmcgY3JlYXRlVGVtcG9yYXJ5RGly
ZWN0b3J5KFN0cmluZyBkaXJlY3RvcnlQcmVmaXgpCit7CisgICAgU3RyaW5nIHByb3Bvc2VkUGF0
aCA9IGdlbmVyYXRlVGVtcG9yYXJ5UGF0aChbXShjb25zdCBTdHJpbmcgcHJvcG9zZWRQYXRoKSB7
CisgICAgICAgIHJldHVybiBtYWtlQWxsRGlyZWN0b3JpZXMocHJvcG9zZWRQYXRoKTsKKyAgICB9
KTsKKworICAgIHJldHVybiBwcm9wb3NlZFBhdGg7Cit9CisKK2Jvb2wgZGVsZXRlTm9uRW1wdHlE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlQYXRoKQoreworICAgIFNIRklMRU9QU1RS
VUNUIGRlbGV0ZU9wZXJhdGlvbiA9IHsKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgRk9fREVM
RVRFLAorICAgICAgICBzdHJpbmdUb051bGxUZXJtaW5hdGVkV0NoYXIoZGlyZWN0b3J5UGF0aCku
ZGF0YSgpLAorICAgICAgICBMIiIsCisgICAgICAgIEZPRl9OT0NPTkZJUk1BVElPTiB8IEZPRl9O
T0VSUk9SVUkgfCBGT0ZfU0lMRU5ULAorICAgICAgICBmYWxzZSwKKyAgICAgICAgMCwKKyAgICAg
ICAgTCIiCisgICAgfTsKKyAgICByZXR1cm4gIVNIRmlsZU9wZXJhdGlvbigmZGVsZXRlT3BlcmF0
aW9uKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgRmlsZVN5c3RlbQogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDJiNmM3NzUzNDA0Li42ODdmYzVkMzYwNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTExLTA4ICBDaHJpc3Rv
cGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gUmVqZWN0
IGVudGlyZSBjb29raWUgaWYgdGhlIGRvbWFpbiBmYWlscyBhIHRhaWxtYXRjaC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHVuaXR0ZXN0IGZv
ciBDdXJsIGNvb2tpZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
UGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2N1cmwvQ29va2llcy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9G
KToKKwogMjAxOC0xMS0wNyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgT3ZlcnJpZGUgK1tVSUtleWJvYXJkIGlzSW5IYXJkd2FyZUtleWJvYXJkTW9kZV0gaW4g
V2ViS2l0VGVzdFJ1bm5lciBhbmQgRHVtcFJlbmRlclRyZWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1XaW4uY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRm
b3JtV2luLmNtYWtlCmluZGV4IGYxM2I4MmVhZTc1Li4zNjUwZTQwNjQ1YSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtV2luLmNtYWtlCkBAIC03NCw2ICs3NCw3IEBAIGlmICgke1dURl9QTEFU
Rk9STV9XSU5fQ0FJUk99KQogICAgICAgICB2Y3J1bnRpbWUKICAgICApCiAgICAgbGlzdChBUFBF
TkQgVGVzdFdlYkNvcmVMaWJfU09VUkNFUworICAgICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9U
ZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKICAgICAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV2ViQ29yZS93aW4vQml0bWFwSW1hZ2UuY3BwCiAgICAgICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dlYkNvcmUvQ3J5cHRvRGlnZXN0LmNwcAogICAgICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XZWJDb3JlL1B1YmxpY1N1ZmZpeC5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJiNjQ3MDZiZDI3Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAK
QEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBVU0UoQ1VSTCkKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyREIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0Nvb2tpZVV0aWwuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbGVTeXN0ZW0u
aD4KKyNpbmNsdWRlIDxtZW1vcnk+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIEN1cmxDb29raWVzOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIGZpbmFsCisgICAgeworICAgICAg
ICBtX2Nvb2tpZURpcmVjdG9yeSA9IEZpbGVTeXN0ZW06OmNyZWF0ZVRlbXBvcmFyeURpcmVjdG9y
eSgiQ3VybENvb2tpZSIpOworCisgICAgICAgIG1fY29va2llSmFyID0gc3RkOjptYWtlX3VuaXF1
ZTxXZWJDb3JlOjpDb29raWVKYXJEQj4oRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KG1fY29va2llRGlyZWN0b3J5LCAiY29va2llZGIuc3FsIikpOworICAgICAgICBtX2Nvb2tp
ZUphci0+b3BlbigpOworICAgICAgICBtX2Nvb2tpZUphci0+c2V0RW5hYmxlZCh0cnVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgZmluYWwKKyAgICB7CisgICAgICAgIG1fY29va2ll
SmFyID0gbnVsbHB0cjsKKworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVj
dG9yeShtX2Nvb2tpZURpcmVjdG9yeSk7CisgICAgICAgIG1fY29va2llRGlyZWN0b3J5ID0gU3Ry
aW5nKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RkOjp1bmlxdWVfcHRyPENvb2tpZUph
ckRCPiBtX2Nvb2tpZUphcjsKKyAgICBTdHJpbmcgbV9jb29raWVEaXJlY3Rvcnk7Cit9OworCitU
RVNUX0YoQ3VybENvb2tpZXMsIFJlamVjdFRhaWxtYXRjaEZhaWx1cmVEb21haW4pCit7CisgICAg
Ly8gc3VjY2VzczogZG9tYWluIG1hdGNoCisgICAgRVhQRUNUX0VRKDAsIG1fY29va2llSmFyLT5z
ZXRDb29raWUoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJmb289YmFyOyBEb21haW49ZXhhbXBsZS5j
b20iLCBmYWxzZSkpOworICAgIC8vIHN1Y2Nlc3M6IHdpbGRjYXJkIG9mIGRvbWFpbnMKKyAgICBF
WFBFQ1RfRVEoMCwgbV9jb29raWVKYXItPnNldENvb2tpZSgiaHR0cDovL2V4YW1wbGUuY29tIiwg
ImZvbz1iYXI7IERvbWFpbj0uZXhhbXBsZS5jb20iLCBmYWxzZSkpOworICAgIC8vIGZhaWx1cmU6
IHNwZWNpZmljIHN1YiBkb21haW4KKyAgICBFWFBFQ1RfRVEoLTEsIG1fY29va2llSmFyLT5zZXRD
b29raWUoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJmb289YmFyOyBEb21haW49d3d3LmV4YW1wbGUu
Y29tIiwgZmFsc2UpKTsKKyAgICAvLyBmYWlsdXJlOiBkaWZmZXJlbnQgZG9tYWluCisgICAgRVhQ
RUNUX0VRKC0xLCBtX2Nvb2tpZUphci0+c2V0Q29va2llKCJodHRwOi8vZXhhbXBsZS5jb20iLCAi
Zm9vPWJhcjsgRG9tYWluPXNhbXBsZS5jb20iLCBmYWxzZSkpOworfQorCit9CisKKyNlbmRpZiAv
LyBVU0UoQ1VSTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354600</attachid>
            <date>2018-11-12 15:32:39 -0800</date>
            <delta_ts>2018-11-12 22:38:53 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>191406.diff</filename>
            <type>text/plain</type>
            <size>6818</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNWU0YTFhNmMzMi4uM2Q3ZTc5NmVkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMyBAQAorMjAxOC0xMS0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlamVjdCBlbnRpcmUgY29va2llIGlmIHRoZSBkb21h
aW4gZmFpbHMgYSB0YWlsbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDdXJyZW50bHkgd2UgZG9uJ3QgcHV0IGRvbWFpbiBhdHRyaWJ1dGUgb2Yg
Y29va2llIHdoZW4gaXQgZmFpbHMgYSB0YWlsbWF0Y2guIEFzIEZpcmVmb3gKKyAgICAgICAgYW5k
IENocm9tZSBkbywgd2UgYXJlIGdvaW5nIHRvIHJlamVjdCB0aGUgZW50aXJlIGNvb2tpZSBpZiB0
aGUgZG9tYWluIGZhaWxzIGEgdGFpbG1hdGNoIGluc3RlYWQuCisgICAgICAgIEFsc28gY2xlYW51
cCBDb29raWUgZGF0YWJhc2UgaW1wbGVtZW50YXRpb24gdG8gbWFrZSB0aGVtIHRlc3RhYmxlIGJl
dHRlci4KKworICAgICAgICBUZXN0czogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwv
Q29va2llcy5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2V0Q29va2llKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmg6CisKIDIwMTgtMTEtMDcgIERvbiBPbG1zdGVhZCAgPGRv
bi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBtYWNyb3MgaW4gcGxhdGZv
cm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuY3BwCmluZGV4IGQ2Nzk1ZjZlYzhhLi45M2E0MDhhY2M1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC00
NTcsNyArNDU3LDcgQEAgYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGJvZHksIENvb2tpZUphckRCOjoKICAgICBTdHJpbmcgaG9zdCh1
cmxPYmouaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgIFN0cmluZyBwYXRoKHVybE9iai5wYXRoKCkp
OwogCi0gICAgYXV0byBjb29raWUgPSBDb29raWVVdGlsOjpwYXJzZUNvb2tpZUhlYWRlcihib2R5
LCBob3N0KTsKKyAgICBhdXRvIGNvb2tpZSA9IENvb2tpZVV0aWw6OnBhcnNlQ29va2llSGVhZGVy
KGJvZHkpOwogICAgIGlmICghY29va2llKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ3
MywxMSArNDczLDkgQEAgYm9vbCBDb29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGJvZHksIENvb2tpZUphckRCOjoKICNlbmRpZgogCiAgICAgYm9v
bCBmcm9tSmF2YVNjcmlwdCA9IHNvdXJjZSA9PSBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQ7
Ci0KLSAgICBpZiAoZnJvbUphdmFTY3JpcHQgJiYgY29va2llLT5odHRwT25seSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGZyb21KYXZhU2NyaXB0ICYmIGhhc0h0dHBPbmx5Q29v
a2llKGNvb2tpZS0+bmFtZSwgY29va2llLT5kb21haW4sIGNvb2tpZS0+cGF0aCkpCisgICAgaWYg
KChmcm9tSmF2YVNjcmlwdCAmJiBjb29raWUtPmh0dHBPbmx5KQorICAgICAgICB8fCAoZnJvbUph
dmFTY3JpcHQgJiYgaGFzSHR0cE9ubHlDb29raWUoY29va2llLT5uYW1lLCBjb29raWUtPmRvbWFp
biwgY29va2llLT5wYXRoKSkKKyAgICAgICAgfHwgIUNvb2tpZVV0aWw6OmRvbWFpbk1hdGNoKGNv
b2tpZS0+ZG9tYWluLCBob3N0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IHNldENvb2tpZSgqY29va2llKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCAzYWE3N2E4OTJkNC4uYmU1ZTc5YWUyZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVV
dGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
VXRpbC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBw
YXJzZUV4cGlyZXMoY29uc3QgY2hhciogZXhwaXJlcykKICAgICByZXR1cm4gc3RkOjpvcHRpb25h
bDxkb3VibGU+IHt0bXAgLyBXVEY6Om1zUGVyU2Vjb25kfTsKIH0KIAotc3RhdGljIHZvaWQgcGFy
c2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBjb25zdCBTdHJpbmcm
IGRvbWFpbiwgYm9vbCYgaGFzTWF4QWdlLCBDb29raWUmIHJlc3VsdCkKK3N0YXRpYyB2b2lkIHBh
cnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4
QWdlLCBDb29raWUmIHJlc3VsdCkKIHsKICAgICBzaXplX3QgYXNzaWdubWVudFBvc2l0aW9uID0g
YXR0cmlidXRlLmZpbmQoJz0nKTsKIApAQCAtMTEzLDExICsxMTMsNyBAQCBzdGF0aWMgdm9pZCBw
YXJzZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluLAogICAgICAgICBpZiAoIWlzSVBBZGRyZXNzKGF0dHJpYnV0ZVZhbHVlKSAmJiAh
YXR0cmlidXRlVmFsdWUuc3RhcnRzV2l0aCgnLicpICYmIGF0dHJpYnV0ZVZhbHVlLmZpbmQoJy4n
KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gIi4iICsgYXR0cmli
dXRlVmFsdWU7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBob3N0IGNhbiBzZXQgYSBjb29r
aWUgZm9yIHRoZSBkb21haW4KLSAgICAgICAgLy8gRklYTUU6IGZpcmVmb3ggYW5kIGNocm9tZSBi
b3RoIGlnbm9yZSBjb29raWVzIHdpdGggbm8gdmFsaWQgZG9tYWluIHNldAotICAgICAgICAvLyB3
ZSBjdXJyZW50bHkgaWdub3JlIHRoZSBpbnZhbGlkIGRvbWFpbnMgYW5kIGRlZmF1bHQgdG8gdGhl
IGhvc3RuYW1lIGFzIHRoZSBkb21haW4KLSAgICAgICAgaWYgKGRvbWFpbk1hdGNoKGF0dHJpYnV0
ZVZhbHVlLCBkb21haW4pKQotICAgICAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGF0dHJpYnV0ZVZh
bHVlOworICAgICAgICByZXN1bHQuZG9tYWluID0gYXR0cmlidXRlVmFsdWU7CiAKICAgICB9IGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlTmFtZSwgIm1heC1hZ2UiKSkg
ewogICAgICAgICBib29sIG9rOwpAQCAtMTQxLDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lkIHBhcnNl
Q29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3QgU3RyaW5nJiBk
b21haW4sCiAgICAgfQogfQogCi1zdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVIZWFk
ZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFpbikKK3N0ZDo6
b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxp
bmUpCiB7CiAgICAgaWYgKGNvb2tpZUxpbmUubGVuZ3RoKCkgPj0gTUFYX0NPT0tJRV9MSU5FKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTczLDcgKzE2OSw3IEBAIHN0ZDo6b3B0
aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUs
IGNvbnN0IFN0cmluZyYKICAgICBjb29raWUuc2Vzc2lvbiA9IHRydWU7CiAKICAgICBmb3IgKGF1
dG8gYXR0cmlidXRlIDogY29va2llTGluZS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCc7Jykp
Ci0gICAgICAgIHBhcnNlQ29va2llQXR0cmlidXRlcyhhdHRyaWJ1dGUsIGRvbWFpbiwgaGFzTWF4
QWdlLCBjb29raWUpOworICAgICAgICBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoYXR0cmlidXRlLCBo
YXNNYXhBZ2UsIGNvb2tpZSk7CiAKICAgICByZXR1cm4gY29va2llOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKaW5kZXggNDkwZDM2
MmJiZDYuLjA0ZGJlODMyZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IENvb2tpZTsK
IAogbmFtZXNwYWNlIENvb2tpZVV0aWwgewogCi1zdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VD
b29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFp
bik7CitzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5n
Jik7CiAKIGJvb2wgaXNJUEFkZHJlc3MoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYjZjNzc1MzQwNC4uOGRjZDgy
NmU4N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMS0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJl
aWRAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlamVjdCBlbnRpcmUgY29va2llIGlmIHRo
ZSBkb21haW4gZmFpbHMgYSB0YWlsbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCB1bml0dGVzdHMgZm9yIEN1cmwgY29va2llIGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwv
Q29va2llcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDdXJsOjpDdXJsQ29va2llczo6
UmVqZWN0VGFpbG1hdGNoRmFpbHVyZURvbWFpbik6CisKIDIwMTgtMTEtMDcgIERhbmllbCBCYXRl
cyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE92ZXJyaWRlICtbVUlLZXlib2FyZCBp
c0luSGFyZHdhcmVLZXlib2FyZE1vZGVdIGluIFdlYktpdFRlc3RSdW5uZXIgYW5kIER1bXBSZW5k
ZXJUcmVlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3Vy
bC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nv
b2tpZXMuY3BwCmluZGV4IDNhMDk5YTVjN2E3Li4xYjhkN2ZjM2NkZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTYyLDYg
KzYyLDE4IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgbV9jb29raWVEaXJlY3Rvcnk7CiB9Owog
CitURVNUX0YoQ3VybENvb2tpZXMsIFJlamVjdFRhaWxtYXRjaEZhaWx1cmVEb21haW4pCit7Cisg
ICAgLy8gc3VjY2VzczogZG9tYWluIG1hdGNoCisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXIt
PnNldENvb2tpZSgiaHR0cDovL2V4YW1wbGUuY29tIiwgImZvbz1iYXI7IERvbWFpbj1leGFtcGxl
LmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICAvLyBzdWNjZXNzOiB3
aWxkY2FyZCBvZiBkb21haW5zCisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tp
ZSgiaHR0cDovL2V4YW1wbGUuY29tIiwgImZvbz1iYXI7IERvbWFpbj0uZXhhbXBsZS5jb20iLCBD
b29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgLy8gZmFpbHVyZTogc3BlY2lmaWMg
c3ViIGRvbWFpbgorICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKCJodHRw
Oi8vZXhhbXBsZS5jb20iLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNvbSIsIENvb2tp
ZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICAvLyBmYWlsdXJlOiBkaWZmZXJlbnQgZG9t
YWluCisgICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUoImh0dHA6Ly9leGFt
cGxlLmNvbSIsICJmb289YmFyOyBEb21haW49c2FtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3Vy
Y2U6Ok5ldHdvcmspKTsKK30KKwogVEVTVF9GKEN1cmxDb29raWVzLCBUZXN0SHR0cE9ubHlDYXNl
KQogewogICAgIC8vIHN1Y2Nlc3M6IGZyb20gbmV0d29yawo=
</data>
<flag name="review"
          id="371772"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354653</attachid>
            <date>2018-11-12 22:38:53 -0800</date>
            <delta_ts>2018-11-12 22:42:38 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>191406.diff</filename>
            <type>text/plain</type>
            <size>8309</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNWU0YTFhNmMzMi4uMTVhMjE4MTljZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxOC0xMS0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlamVjdCBlbnRpcmUgY29va2llIGlmIHRoZSBkb21h
aW4gZmFpbHMgYSB0YWlsbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDdXJyZW50bHkgd2UgZG9uJ3QgcHV0IGRvbWFpbiBhdHRyaWJ1dGUgb2Yg
Y29va2llIHdoZW4gaXQgZmFpbHMgYSB0YWlsbWF0Y2guIEFzIEZpcmVmb3gKKyAgICAgICAgYW5k
IENocm9tZSBkbywgd2UgYXJlIGdvaW5nIHRvIHJlamVjdCB0aGUgZW50aXJlIGNvb2tpZSBpZiB0
aGUgZG9tYWluIGZhaWxzIGEgdGFpbG1hdGNoIGluc3RlYWQuCisgICAgICAgIEFsc28gY2xlYW51
cCBDb29raWUgZGF0YWJhc2UgaW1wbGVtZW50YXRpb24gdG8gbWFrZSB0aGVtIHRlc3RhYmxlIGJl
dHRlci4KKworICAgICAgICBUZXN0czogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwv
Q29va2llcy5jcHAKKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6Y2FuQWNjZXB0Q29va2llKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2V0Q29va2llKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmg6CisKIDIwMTgtMTEtMDcgIERvbiBPbG1zdGVhZCAgPGRv
bi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBtYWNyb3MgaW4gcGxhdGZv
cm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuY3BwCmluZGV4IGQ2Nzk1ZjZlYzhhLi43OTljMTM3Mjg1ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC00
MjQsNiArNDI0LDIyIEBAIGJvb2wgQ29va2llSmFyREI6Omhhc0h0dHBPbmx5Q29va2llKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvCiAgICAgcmV0dXJuIHN0YXRl
bWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVzsKIH0KIAorYm9vbCBDb29raWVKYXJEQjo6Y2FuQWNj
ZXB0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llLCBjb25zdCBTdHJpbmcmIGhvc3QsIENvb2tp
ZUphckRCOjpTb3VyY2Ugc291cmNlKQoreworI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1Qp
CisgICAgaWYgKGlzUHVibGljU3VmZml4KGNvb2tpZS5kb21haW4pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKKworICAgIGJvb2wgZnJvbUphdmFTY3JpcHQgPSBzb3VyY2UgPT0gQ29v
a2llSmFyREI6OlNvdXJjZTo6U2NyaXB0OworICAgIGlmIChmcm9tSmF2YVNjcmlwdCAmJiAoY29v
a2llLmh0dHBPbmx5IHx8IGhhc0h0dHBPbmx5Q29va2llKGNvb2tpZS5uYW1lLCBjb29raWUuZG9t
YWluLCBjb29raWUucGF0aCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIUNv
b2tpZVV0aWw6OmRvbWFpbk1hdGNoKGNvb2tpZS5kb21haW4sIGhvc3QpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAogYm9vbCBDb29raWVKYXJEQjo6c2V0
Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewpAQCAtNDU3LDcgKzQ3Myw3IEBAIGJvb2wg
Q29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBi
b2R5LCBDb29raWVKYXJEQjo6CiAgICAgU3RyaW5nIGhvc3QodXJsT2JqLmhvc3QoKS50b1N0cmlu
ZygpKTsKICAgICBTdHJpbmcgcGF0aCh1cmxPYmoucGF0aCgpKTsKIAotICAgIGF1dG8gY29va2ll
ID0gQ29va2llVXRpbDo6cGFyc2VDb29raWVIZWFkZXIoYm9keSwgaG9zdCk7CisgICAgYXV0byBj
b29raWUgPSBDb29raWVVdGlsOjpwYXJzZUNvb2tpZUhlYWRlcihib2R5KTsKICAgICBpZiAoIWNv
b2tpZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00NjcsMTcgKzQ4Myw3IEBAIGJvb2wg
Q29va2llSmFyREI6OnNldENvb2tpZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBi
b2R5LCBDb29raWVKYXJEQjo6CiAgICAgaWYgKGNvb2tpZS0+cGF0aC5pc0VtcHR5KCkpCiAgICAg
ICAgIGNvb2tpZS0+cGF0aCA9IENvb2tpZVV0aWw6OmRlZmF1bHRQYXRoRm9yVVJMKHVybE9iaik7
CiAKLSNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAgIGlmIChpc1B1YmxpY1N1ZmZp
eChjb29raWUtPmRvbWFpbikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotCi0gICAg
Ym9vbCBmcm9tSmF2YVNjcmlwdCA9IHNvdXJjZSA9PSBDb29raWVKYXJEQjo6U291cmNlOjpTY3Jp
cHQ7Ci0KLSAgICBpZiAoZnJvbUphdmFTY3JpcHQgJiYgY29va2llLT5odHRwT25seSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGZyb21KYXZhU2NyaXB0ICYmIGhhc0h0dHBPbmx5
Q29va2llKGNvb2tpZS0+bmFtZSwgY29va2llLT5kb21haW4sIGNvb2tpZS0+cGF0aCkpCisgICAg
aWYgKCFjYW5BY2NlcHRDb29raWUoKmNvb2tpZSwgaG9zdCwgc291cmNlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHNldENvb2tpZSgqY29va2llKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmgKaW5kZXggNTk4
N2E2ZTNiNDIuLjc3NTk2MTQ1MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaApAQCAtODgsNiArODgsNyBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBkZWxldGVDb29raWVJbnRlcm5hbChjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHBhdGgpOwogICAgIGJvb2wgaGFzSHR0cE9u
bHlDb29raWUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBwYXRoKTsKKyAgICBib29sIGNhbkFjY2VwdENvb2tpZShjb25zdCBDb29raWUmLCBj
b25zdCBTdHJpbmcmIGhvc3QsIENvb2tpZUphckRCOjpTb3VyY2UpOwogCiAgICAgU1FMaXRlRGF0
YWJhc2UgbV9kYXRhYmFzZTsKICAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFNR
TGl0ZVN0YXRlbWVudD4+IG1fc3RhdGVtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCAzYWE3N2E4OTJkNC4uYmU1
ZTc5YWUyZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llVXRpbC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBwYXJzZUV4cGlyZXMoY29uc3QgY2hhciogZXhwaXJlcykKICAgICByZXR1cm4gc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHt0bXAgLyBXVEY6Om1zUGVyU2Vjb25kfTsKIH0KIAotc3RhdGlj
IHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBjb25z
dCBTdHJpbmcmIGRvbWFpbiwgYm9vbCYgaGFzTWF4QWdlLCBDb29raWUmIHJlc3VsdCkKK3N0YXRp
YyB2b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9v
bCYgaGFzTWF4QWdlLCBDb29raWUmIHJlc3VsdCkKIHsKICAgICBzaXplX3QgYXNzaWdubWVudFBv
c2l0aW9uID0gYXR0cmlidXRlLmZpbmQoJz0nKTsKIApAQCAtMTEzLDExICsxMTMsNyBAQCBzdGF0
aWMgdm9pZCBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGNv
bnN0IFN0cmluZyYgZG9tYWluLAogICAgICAgICBpZiAoIWlzSVBBZGRyZXNzKGF0dHJpYnV0ZVZh
bHVlKSAmJiAhYXR0cmlidXRlVmFsdWUuc3RhcnRzV2l0aCgnLicpICYmIGF0dHJpYnV0ZVZhbHVl
LmZpbmQoJy4nKSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gIi4i
ICsgYXR0cmlidXRlVmFsdWU7CiAKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBob3N0IGNhbiBz
ZXQgYSBjb29raWUgZm9yIHRoZSBkb21haW4KLSAgICAgICAgLy8gRklYTUU6IGZpcmVmb3ggYW5k
IGNocm9tZSBib3RoIGlnbm9yZSBjb29raWVzIHdpdGggbm8gdmFsaWQgZG9tYWluIHNldAotICAg
ICAgICAvLyB3ZSBjdXJyZW50bHkgaWdub3JlIHRoZSBpbnZhbGlkIGRvbWFpbnMgYW5kIGRlZmF1
bHQgdG8gdGhlIGhvc3RuYW1lIGFzIHRoZSBkb21haW4KLSAgICAgICAgaWYgKGRvbWFpbk1hdGNo
KGF0dHJpYnV0ZVZhbHVlLCBkb21haW4pKQotICAgICAgICAgICAgcmVzdWx0LmRvbWFpbiA9IGF0
dHJpYnV0ZVZhbHVlOworICAgICAgICByZXN1bHQuZG9tYWluID0gYXR0cmlidXRlVmFsdWU7CiAK
ICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoYXR0cmlidXRlTmFtZSwgIm1h
eC1hZ2UiKSkgewogICAgICAgICBib29sIG9rOwpAQCAtMTQxLDcgKzEzNyw3IEBAIHN0YXRpYyB2
b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4sCiAgICAgfQogfQogCi1zdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VD
b29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lLCBjb25zdCBTdHJpbmcmIGRvbWFp
bikKK3N0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcm
IGNvb2tpZUxpbmUpCiB7CiAgICAgaWYgKGNvb2tpZUxpbmUubGVuZ3RoKCkgPj0gTUFYX0NPT0tJ
RV9MSU5FKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTczLDcgKzE2OSw3IEBA
IHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNv
b2tpZUxpbmUsIGNvbnN0IFN0cmluZyYKICAgICBjb29raWUuc2Vzc2lvbiA9IHRydWU7CiAKICAg
ICBmb3IgKGF1dG8gYXR0cmlidXRlIDogY29va2llTGluZS5zcGxpdEFsbG93aW5nRW1wdHlFbnRy
aWVzKCc7JykpCi0gICAgICAgIHBhcnNlQ29va2llQXR0cmlidXRlcyhhdHRyaWJ1dGUsIGRvbWFp
biwgaGFzTWF4QWdlLCBjb29raWUpOworICAgICAgICBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoYXR0
cmlidXRlLCBoYXNNYXhBZ2UsIGNvb2tpZSk7CiAKICAgICByZXR1cm4gY29va2llOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKaW5k
ZXggNDkwZDM2MmJiZDYuLjA0ZGJlODMyZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0
IENvb2tpZTsKIAogbmFtZXNwYWNlIENvb2tpZVV0aWwgewogCi1zdGQ6Om9wdGlvbmFsPENvb2tp
ZT4gcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lLCBjb25zdCBTdHJp
bmcmIGRvbWFpbik7CitzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVIZWFkZXIoY29u
c3QgU3RyaW5nJik7CiAKIGJvb2wgaXNJUEFkZHJlc3MoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYjZjNzc1MzQw
NC4uOGRjZDgyNmU4N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMS0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAg
PGNocmlzLnJlaWRAc29ueS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlamVjdCBlbnRpcmUgY29v
a2llIGlmIHRoZSBkb21haW4gZmFpbHMgYSB0YWlsbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0MDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB1bml0dGVzdHMgZm9yIEN1cmwgY29v
a2llIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDdXJsOjpDdXJs
Q29va2llczo6UmVqZWN0VGFpbG1hdGNoRmFpbHVyZURvbWFpbik6CisKIDIwMTgtMTEtMDcgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIE92ZXJyaWRlICtbVUlL
ZXlib2FyZCBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGVdIGluIFdlYktpdFRlc3RSdW5uZXIgYW5k
IER1bXBSZW5kZXJUcmVlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvY3VybC9Db29raWVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jdXJsL0Nvb2tpZXMuY3BwCmluZGV4IDNhMDk5YTVjN2E3Li4xYjhkN2ZjM2NkZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAK
QEAgLTYyLDYgKzYyLDE4IEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgbV9jb29raWVEaXJlY3Rv
cnk7CiB9OwogCitURVNUX0YoQ3VybENvb2tpZXMsIFJlamVjdFRhaWxtYXRjaEZhaWx1cmVEb21h
aW4pCit7CisgICAgLy8gc3VjY2VzczogZG9tYWluIG1hdGNoCisgICAgRVhQRUNUX1RSVUUobV9j
b29raWVKYXItPnNldENvb2tpZSgiaHR0cDovL2V4YW1wbGUuY29tIiwgImZvbz1iYXI7IERvbWFp
bj1leGFtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICAvLyBz
dWNjZXNzOiB3aWxkY2FyZCBvZiBkb21haW5zCisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXIt
PnNldENvb2tpZSgiaHR0cDovL2V4YW1wbGUuY29tIiwgImZvbz1iYXI7IERvbWFpbj0uZXhhbXBs
ZS5jb20iLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgLy8gZmFpbHVyZTog
c3BlY2lmaWMgc3ViIGRvbWFpbgorICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29v
a2llKCJodHRwOi8vZXhhbXBsZS5jb20iLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNv
bSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICAvLyBmYWlsdXJlOiBkaWZm
ZXJlbnQgZG9tYWluCisgICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUoImh0
dHA6Ly9leGFtcGxlLmNvbSIsICJmb289YmFyOyBEb21haW49c2FtcGxlLmNvbSIsIENvb2tpZUph
ckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKK30KKwogVEVTVF9GKEN1cmxDb29raWVzLCBUZXN0SHR0
cE9ubHlDYXNlKQogewogICAgIC8vIHN1Y2Nlc3M6IGZyb20gbmV0d29yawo=
</data>
<flag name="commit-queue"
          id="371818"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354654</attachid>
            <date>2018-11-12 22:42:38 -0800</date>
            <delta_ts>2018-11-12 23:21:21 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>191406.diff</filename>
            <type>text/plain</type>
            <size>8307</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNWU0YTFhNmMzMi4uMjA5MGRkMTdjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAxOC0xMS0xMiAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29u
eS5jb20+CisKKyAgICAgICAgW0N1cmxdIFJlamVjdCBlbnRpcmUgY29va2llIGlmIHRoZSBkb21h
aW4gZmFpbHMgYSB0YWlsbWF0Y2guCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0
LgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBkb24ndCBwdXQgZG9tYWluIGF0dHJpYnV0ZSBvZiBj
b29raWUgd2hlbiBpdCBmYWlscyBhIHRhaWxtYXRjaC4gQXMgRmlyZWZveAorICAgICAgICBhbmQg
Q2hyb21lIGRvLCB3ZSBhcmUgZ29pbmcgdG8gcmVqZWN0IHRoZSBlbnRpcmUgY29va2llIGlmIHRo
ZSBkb21haW4gZmFpbHMgYSB0YWlsbWF0Y2ggaW5zdGVhZC4KKyAgICAgICAgQWxzbyBjbGVhbnVw
IENvb2tpZSBkYXRhYmFzZSBpbXBsZW1lbnRhdGlvbiB0byBtYWtlIHRoZW0gdGVzdGFibGUgYmV0
dGVyLgorCisgICAgICAgIFRlc3RzOiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9D
b29raWVzLmNwcAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpjYW5BY2NlcHRDb29raWUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZXRDb29raWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvb2tpZVV0aWw6OnBhcnNlQ29va2llQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZVV0aWwuaDoKKwogMjAxOC0xMS0wNyAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IG1hY3JvcyBpbiBwbGF0Zm9y
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVK
YXJEQi5jcHAKaW5kZXggZDY3OTVmNmVjOGEuLjc5OWMxMzcyODVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTQy
NCw2ICs0MjQsMjIgQEAgYm9vbCBDb29raWVKYXJEQjo6aGFzSHR0cE9ubHlDb29raWUoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY28KICAgICByZXR1cm4gc3RhdGVt
ZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XOwogfQogCitib29sIENvb2tpZUphckRCOjpjYW5BY2Nl
cHRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUsIGNvbnN0IFN0cmluZyYgaG9zdCwgQ29va2ll
SmFyREI6OlNvdXJjZSBzb3VyY2UpCit7CisjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkK
KyAgICBpZiAoaXNQdWJsaWNTdWZmaXgoY29va2llLmRvbWFpbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorCisgICAgYm9vbCBmcm9tSmF2YVNjcmlwdCA9IHNvdXJjZSA9PSBDb29r
aWVKYXJEQjo6U291cmNlOjpTY3JpcHQ7CisgICAgaWYgKGZyb21KYXZhU2NyaXB0ICYmIChjb29r
aWUuaHR0cE9ubHkgfHwgaGFzSHR0cE9ubHlDb29raWUoY29va2llLm5hbWUsIGNvb2tpZS5kb21h
aW4sIGNvb2tpZS5wYXRoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghQ29v
a2llVXRpbDo6ZG9tYWluTWF0Y2goY29va2llLmRvbWFpbiwgaG9zdCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQogCiBib29sIENvb2tpZUphckRCOjpzZXRD
b29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7CkBAIC00NTcsNyArNDczLDcgQEAgYm9vbCBD
b29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJv
ZHksIENvb2tpZUphckRCOjoKICAgICBTdHJpbmcgaG9zdCh1cmxPYmouaG9zdCgpLnRvU3RyaW5n
KCkpOwogICAgIFN0cmluZyBwYXRoKHVybE9iai5wYXRoKCkpOwogCi0gICAgYXV0byBjb29raWUg
PSBDb29raWVVdGlsOjpwYXJzZUNvb2tpZUhlYWRlcihib2R5LCBob3N0KTsKKyAgICBhdXRvIGNv
b2tpZSA9IENvb2tpZVV0aWw6OnBhcnNlQ29va2llSGVhZGVyKGJvZHkpOwogICAgIGlmICghY29v
a2llKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQ2NywxNyArNDgzLDcgQEAgYm9vbCBD
b29raWVKYXJEQjo6c2V0Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJv
ZHksIENvb2tpZUphckRCOjoKICAgICBpZiAoY29va2llLT5wYXRoLmlzRW1wdHkoKSkKICAgICAg
ICAgY29va2llLT5wYXRoID0gQ29va2llVXRpbDo6ZGVmYXVsdFBhdGhGb3JVUkwodXJsT2JqKTsK
IAotI2lmIEVOQUJMRShQVUJMSUNfU1VGRklYX0xJU1QpCi0gICAgaWYgKGlzUHVibGljU3VmZml4
KGNvb2tpZS0+ZG9tYWluKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0KLSAgICBi
b29sIGZyb21KYXZhU2NyaXB0ID0gc291cmNlID09IENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlw
dDsKLQotICAgIGlmIChmcm9tSmF2YVNjcmlwdCAmJiBjb29raWUtPmh0dHBPbmx5KQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZnJvbUphdmFTY3JpcHQgJiYgaGFzSHR0cE9ubHlD
b29raWUoY29va2llLT5uYW1lLCBjb29raWUtPmRvbWFpbiwgY29va2llLT5wYXRoKSkKKyAgICBp
ZiAoIWNhbkFjY2VwdENvb2tpZSgqY29va2llLCBob3N0LCBzb3VyY2UpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICByZXR1cm4gc2V0Q29va2llKCpjb29raWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaAppbmRleCA1OTg3
YTZlM2I0Mi4uNzc1OTYxNDUwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5oCkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIGRlbGV0ZUNvb2tpZUludGVybmFsKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAgICAgYm9vbCBoYXNIdHRwT25s
eUNvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBT
dHJpbmcmIHBhdGgpOworICAgIGJvb2wgY2FuQWNjZXB0Q29va2llKGNvbnN0IENvb2tpZSYsIGNv
bnN0IFN0cmluZyYgaG9zdCwgQ29va2llSmFyREI6OlNvdXJjZSk7CiAKICAgICBTUUxpdGVEYXRh
YmFzZSBtX2RhdGFiYXNlOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8U1FM
aXRlU3RhdGVtZW50Pj4gbV9zdGF0ZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDNhYTc3YTg5MmQ0Li5iZTVl
NzlhZTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVVdGlsLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxk
b3VibGU+IHBhcnNlRXhwaXJlcyhjb25zdCBjaGFyKiBleHBpcmVzKQogICAgIHJldHVybiBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4ge3RtcCAvIFdURjo6bXNQZXJTZWNvbmR9OwogfQogCi1zdGF0aWMg
dm9pZCBwYXJzZUNvb2tpZUF0dHJpYnV0ZXMoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0
IFN0cmluZyYgZG9tYWluLCBib29sJiBoYXNNYXhBZ2UsIENvb2tpZSYgcmVzdWx0KQorc3RhdGlj
IHZvaWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBib29s
JiBoYXNNYXhBZ2UsIENvb2tpZSYgcmVzdWx0KQogewogICAgIHNpemVfdCBhc3NpZ25tZW50UG9z
aXRpb24gPSBhdHRyaWJ1dGUuZmluZCgnPScpOwogCkBAIC0xMTMsMTEgKzExMyw3IEBAIHN0YXRp
YyB2b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgY29u
c3QgU3RyaW5nJiBkb21haW4sCiAgICAgICAgIGlmICghaXNJUEFkZHJlc3MoYXR0cmlidXRlVmFs
dWUpICYmICFhdHRyaWJ1dGVWYWx1ZS5zdGFydHNXaXRoKCcuJykgJiYgYXR0cmlidXRlVmFsdWUu
ZmluZCgnLicpICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSAiLiIg
KyBhdHRyaWJ1dGVWYWx1ZTsKIAotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGhvc3QgY2FuIHNl
dCBhIGNvb2tpZSBmb3IgdGhlIGRvbWFpbgotICAgICAgICAvLyBGSVhNRTogZmlyZWZveCBhbmQg
Y2hyb21lIGJvdGggaWdub3JlIGNvb2tpZXMgd2l0aCBubyB2YWxpZCBkb21haW4gc2V0Ci0gICAg
ICAgIC8vIHdlIGN1cnJlbnRseSBpZ25vcmUgdGhlIGludmFsaWQgZG9tYWlucyBhbmQgZGVmYXVs
dCB0byB0aGUgaG9zdG5hbWUgYXMgdGhlIGRvbWFpbgotICAgICAgICBpZiAoZG9tYWluTWF0Y2go
YXR0cmlidXRlVmFsdWUsIGRvbWFpbikpCi0gICAgICAgICAgICByZXN1bHQuZG9tYWluID0gYXR0
cmlidXRlVmFsdWU7CisgICAgICAgIHJlc3VsdC5kb21haW4gPSBhdHRyaWJ1dGVWYWx1ZTsKIAog
ICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhdHRyaWJ1dGVOYW1lLCAibWF4
LWFnZSIpKSB7CiAgICAgICAgIGJvb2wgb2s7CkBAIC0xNDEsNyArMTM3LDcgQEAgc3RhdGljIHZv
aWQgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGNvbnN0IFN0cmluZyYgYXR0cmlidXRlLCBjb25zdCBT
dHJpbmcmIGRvbWFpbiwKICAgICB9CiB9CiAKLXN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNv
b2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUsIGNvbnN0IFN0cmluZyYgZG9tYWlu
KQorc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYg
Y29va2llTGluZSkKIHsKICAgICBpZiAoY29va2llTGluZS5sZW5ndGgoKSA+PSBNQVhfQ09PS0lF
X0xJTkUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xNzMsNyArMTY5LDcgQEAg
c3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llSGVhZGVyKGNvbnN0IFN0cmluZyYgY29v
a2llTGluZSwgY29uc3QgU3RyaW5nJgogICAgIGNvb2tpZS5zZXNzaW9uID0gdHJ1ZTsKIAogICAg
IGZvciAoYXV0byBhdHRyaWJ1dGUgOiBjb29raWVMaW5lLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJp
ZXMoJzsnKSkKLSAgICAgICAgcGFyc2VDb29raWVBdHRyaWJ1dGVzKGF0dHJpYnV0ZSwgZG9tYWlu
LCBoYXNNYXhBZ2UsIGNvb2tpZSk7CisgICAgICAgIHBhcnNlQ29va2llQXR0cmlidXRlcyhhdHRy
aWJ1dGUsIGhhc01heEFnZSwgY29va2llKTsKIAogICAgIHJldHVybiBjb29raWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaAppbmRl
eCA0OTBkMzYyYmJkNi4uMDRkYmU4MzJmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuaApAQCAtMzQsNyArMzQsNyBAQCBzdHJ1Y3Qg
Q29va2llOwogCiBuYW1lc3BhY2UgQ29va2llVXRpbCB7CiAKLXN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluKTsKK3N0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRlcihjb25z
dCBTdHJpbmcmKTsKIAogYm9vbCBpc0lQQWRkcmVzcyhjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJiNmM3NzUzNDA0
Li44MzY0ZjU0ZWIzYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTExLTEyICBDaHJpc3RvcGhlciBSZWlkICA8
Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBbQ3VybF0gUmVqZWN0IGVudGlyZSBjb29r
aWUgaWYgdGhlIGRvbWFpbiBmYWlscyBhIHRhaWxtYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQwNgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgQWRkZWQgdW5pdHRlc3RzIGZvciBDdXJsIGNvb2tp
ZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9jdXJsL0Nvb2tpZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q3VybDo6Q3VybENv
b2tpZXM6OlJlamVjdFRhaWxtYXRjaEZhaWx1cmVEb21haW4pOgorCiAyMDE4LTExLTA3ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBPdmVycmlkZSArW1VJS2V5
Ym9hcmQgaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlXSBpbiBXZWJLaXRUZXN0UnVubmVyIGFuZCBE
dW1wUmVuZGVyVHJlZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y3VybC9Db29raWVzLmNwcAppbmRleCAzYTA5OWE1YzdhNy4uMWI4ZDdmYzNjZGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwCkBA
IC02Miw2ICs2MiwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIG1fY29va2llRGlyZWN0b3J5
OwogfTsKIAorVEVTVF9GKEN1cmxDb29raWVzLCBSZWplY3RUYWlsbWF0Y2hGYWlsdXJlRG9tYWlu
KQoreworICAgIC8vIHN1Y2Nlc3M6IGRvbWFpbiBtYXRjaAorICAgIEVYUEVDVF9UUlVFKG1fY29v
a2llSmFyLT5zZXRDb29raWUoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJmb289YmFyOyBEb21haW49
ZXhhbXBsZS5jb20iLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgLy8gc3Vj
Y2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucworICAgIEVYUEVDVF9UUlVFKG1fY29va2llSmFyLT5z
ZXRDb29raWUoImh0dHA6Ly9leGFtcGxlLmNvbSIsICJmb289YmFyOyBEb21haW49LmV4YW1wbGUu
Y29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIC8vIGZhaWx1cmU6IHNw
ZWNpZmljIHN1YiBkb21haW4KKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tp
ZSgiaHR0cDovL2V4YW1wbGUuY29tIiwgImZvbz1iYXI7IERvbWFpbj13d3cuZXhhbXBsZS5jb20i
LCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgLy8gZmFpbHVyZTogZGlmZmVy
ZW50IGRvbWFpbgorICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKCJodHRw
Oi8vZXhhbXBsZS5jb20iLCAiZm9vPWJhcjsgRG9tYWluPXNhbXBsZS5jb20iLCBDb29raWVKYXJE
Qjo6U291cmNlOjpOZXR3b3JrKSk7Cit9CisKIFRFU1RfRihDdXJsQ29va2llcywgVGVzdEh0dHBP
bmx5Q2FzZSkKIHsKICAgICAvLyBzdWNjZXNzOiBmcm9tIG5ldHdvcmsK
</data>

          </attachment>
      

    </bug>

</bugzilla>