<?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>183265</bug_id>
          
          <creation_ts>2018-03-01 15:08:20 -0800</creation_ts>
          <short_desc>[webkitpy, WinCairo] Launch Apache HTTPD for HTTP Tests.</short_desc>
          <delta_ts>2018-03-09 10:49:18 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>183191</dependson>
          <blocked>179216</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>achristensen</cc>
    
    <cc>basuke</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>lforschler</cc>
    
    <cc>pvollan</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1403057</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-01 15:08:20 -0800</bug_when>
    <thetext>Launch apache httpd server from python script. Use xampp distribution for latest apache package.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403091</commentid>
    <comment_count>1</comment_count>
      <attachid>334865</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-01 16:16:27 -0800</bug_when>
    <thetext>Created attachment 334865
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403092</commentid>
    <comment_count>2</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-01 16:19:42 -0800</bug_when>
    <thetext>Apache is required to run http tests. Use xampp distribution.

https://www.apachefriends.org/index.html

Or install via chocolatey:

&gt; C:\ choco install bitnami-xampp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403106</commentid>
    <comment_count>3</comment_count>
      <attachid>334869</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-01 16:44:29 -0800</bug_when>
    <thetext>Created attachment 334869
FIX for webkitpy tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403107</commentid>
    <comment_count>4</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-01 16:46:37 -0800</bug_when>
    <thetext>port_testcase.py is weird. It makes platform object useless because this test depends on the fact code depends on sys.platform. It should be refactored for the future anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403319</commentid>
    <comment_count>5</comment_count>
      <attachid>334869</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-03-02 11:25:16 -0800</bug_when>
    <thetext>Comment on attachment 334869
FIX for webkitpy tests

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

I&apos;m just wondering if it would be better to have like an XAMP_ROOT or something like that defined that we could then use.

&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:1
&gt; +ServerRoot &quot;C:/xampp/apache&quot;

Is there any way to avoid hard coding a path? It appears that apache config files can take environment variables from http://httpd.apache.org/docs/current/configuring.html#syntax

&gt; Tools/Scripts/webkitpy/port/win.py:468
&gt; +        httpdPath = os.path.join(&apos;C:\\&apos;, &apos;xampp&apos;, &apos;apache&apos;, &apos;bin&apos;, &apos;httpd.exe&apos;)

Same</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403330</commentid>
    <comment_count>6</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-02 12:08:39 -0800</bug_when>
    <thetext>Those are better improvements. I wanna do that modification after this patch landed to probe this working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403824</commentid>
    <comment_count>7</comment_count>
      <attachid>334869</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-05 17:14:44 -0800</bug_when>
    <thetext>Comment on attachment 334869
FIX for webkitpy tests

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

&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:12
&gt; +# LoadModule unixd_module libexec/apache/mod_unixd.so

We shouldn&apos;t commit commented out code.

&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:25
&gt; +#LoadModule imagemap_module modules/mod_imagemap.so

Ditto.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:172
&gt; +        return [(alias, make_path(path)) for (alias, path) in json.loads(json_data)]

This function use to return a list of lists. Now its a list of tuples. Is this OK with respect to the calling code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403826</commentid>
    <comment_count>8</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-05 17:18:09 -0800</bug_when>
    <thetext>Run with Administrator privileges.

&gt; $ python .\Tools\Scripts\run-webkit-tests --dump-render-tree --wincairo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403830</commentid>
    <comment_count>9</comment_count>
      <attachid>334869</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-05 17:21:46 -0800</bug_when>
    <thetext>Comment on attachment 334869
FIX for webkitpy tests

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

&gt;&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:12
&gt;&gt; +# LoadModule unixd_module libexec/apache/mod_unixd.so
&gt; 
&gt; We shouldn&apos;t commit commented out code.

Got it.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:172
&gt;&gt; +        return [(alias, make_path(path)) for (alias, path) in json.loads(json_data)]
&gt; 
&gt; This function use to return a list of lists. Now its a list of tuples. Is this OK with respect to the calling code?

I double check it, but the result was used only to generate a string using format function. Of course it can be list as it was, tuple is better representation for this result and I think this is improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403835</commentid>
    <comment_count>10</comment_count>
      <attachid>334869</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-05 17:27:36 -0800</bug_when>
    <thetext>Comment on attachment 334869
FIX for webkitpy tests

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:172
&gt;&gt;&gt; +        return [(alias, make_path(path)) for (alias, path) in json.loads(json_data)]
&gt;&gt; 
&gt;&gt; This function use to return a list of lists. Now its a list of tuples. Is this OK with respect to the calling code?
&gt; 
&gt; I double check it, but the result was used only to generate a string using format function. Of course it can be list as it was, tuple is better representation for this result and I think this is improvement.

I&apos;ve confirmed this was only used in apache_http_server.py and http_server.py and usage is to get pair of string to generate a config string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403844</commentid>
    <comment_count>11</comment_count>
      <attachid>335058</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-05 17:36:38 -0800</bug_when>
    <thetext>Created attachment 335058
fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404026</commentid>
    <comment_count>12</comment_count>
      <attachid>335058</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2018-03-06 09:32:33 -0800</bug_when>
    <thetext>Comment on attachment 335058
fix

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

&gt; LayoutTests/ChangeLog:8
&gt; +        * http/conf/win-httpd-2.4-php7.conf: Added.

Is this basically a copy of the .conf file used by AppleWin, where only the file paths are changed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404068</commentid>
    <comment_count>13</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-06 10:59:43 -0800</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #12)
&gt; Comment on attachment 335058 [details]
&gt; fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=335058&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        * http/conf/win-httpd-2.4-php7.conf: Added.
&gt; 
&gt; Is this basically a copy of the .conf file used by AppleWin, where only the
&gt; file paths are changed?

The main change is PHP version, from 5 to 7. PHP 5 is almost out of date and support is going to be ended soon. http://php.net/supported-versions.php</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404155</commentid>
    <comment_count>14</comment_count>
      <attachid>335058</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-06 14:24:56 -0800</bug_when>
    <thetext>Comment on attachment 335058
fix

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

&gt;&gt;&gt; LayoutTests/ChangeLog:8
&gt;&gt;&gt; +        * http/conf/win-httpd-2.4-php7.conf: Added.
&gt;&gt; 
&gt;&gt; Is this basically a copy of the .conf file used by AppleWin, where only the file paths are changed?
&gt; 
&gt; The main change is PHP version, from 5 to 7. PHP 5 is almost out of date and support is going to be ended soon. http://php.net/supported-versions.php

Not related to your patch. We should look to update the PHP requirement for the Apple Windows port.

&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:1
&gt; +ServerRoot &quot;C:/xampp/apache&quot;

The direction of the slashes in this line do not match the direction of the slashes we used on line 54. I take it we do not need to worry about the direction of the slashes.

&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:3
&gt; +PidFile &quot;c:/xampp/apache/logs/httpd.pid&quot;

Does this assume a case-insensitive file system? I mean, we use a lowercase drive letter in this line (c:) but use an uppercase drive letter everywhere else in this configuration file (e.g. on line 1).

The direction of the slashes in this line do not match the direction of the slashes we used on line 54.

&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:27
&gt; +LoadFile &quot;C:/xampp/php/php7ts.dll&quot;
&gt; +LoadFile &quot;C:/xampp/php/libpq.dll&quot;
&gt; +LoadModule php7_module &quot;C:/xampp/php/php7apache2_4.dll&quot;

The direction of the slashes in this line do not match the direction of the slashes we used on line 54.

&gt; LayoutTests/http/conf/win-httpd-2.4-php7.conf:64
&gt; +&lt;IfModule mod_alias.c&gt;
&gt; +&lt;/IfModule&gt;

I know that you copied this over from cygwin-httpd.conf. I suggest we remove this empty directive.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:34
&gt; +import os.path

It is unnecessary to import this module. We should use FileSystem.normpath() below.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:170
&gt; +        make_path = lambda path: self._filesystem.join(self.tests_dir, os.path.normpath(path))

Notice that the FileSystem module has a normpath function that turns around and calls os.path.normpath(). We should make use of it instead of directly invoking os.path.normpath() so as to support unit testing this code ...

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:172
&gt;      def aliases(self):
&gt;          json_data = self._filesystem.read_text_file(self._port_obj.path_from_webkit_base(&quot;Tools&quot;, &quot;Scripts&quot;, &quot;webkitpy&quot;, &quot;layout_tests&quot;, &quot;servers&quot;, &quot;aliases.json&quot;))
&gt; -        results = []
&gt; -        for item in json.loads(json_data):
&gt; -            results.append([item[0], self._port_obj._filesystem.join(self.tests_dir, item[1])])
&gt; -        return results
&gt; +
&gt; +        make_path = lambda path: self._filesystem.join(self.tests_dir, os.path.normpath(path))
&gt; +
&gt; +        return [(alias, make_path(path)) for (alias, path) in json.loads(json_data)]

Please add unit tests for this function.

&gt; Tools/Scripts/webkitpy/port/win.py:468
&gt; +        httpdPath = os.path.join(&apos;C:\\&apos;, &apos;xampp&apos;, &apos;apache&apos;, &apos;bin&apos;, &apos;httpd.exe&apos;)

This code is almost identical to the code in WinPort._path_to_apache() except for the drive-prefix portion of the path. Would the change made to this function (to pass os.path.join() &quot;C:\\&quot; as the first argument) break the Apple Windows port? If not, we should share this code.

On another note, we should be using FileSystem.join() instead of os.path.join() directly.

&gt; Tools/Scripts/webkitpy/port/win.py:471
&gt; +        _log.error(&quot;Could not find apache. Not installed or unknown path.&quot;)

&quot; (double quote) =&gt; &apos; (single quote)

&gt; Tools/Scripts/webkitpy/port/win.py:480
&gt; +        # to launch apache as a daemon, service installation is required.

We follow the WebKit Code Style guidelines more or less for Python code and hence comments should be complete sentence that start with a capital letter and end with a period. Please capitalize the &apos;t&apos; in &quot;to&quot;.

&gt; Tools/Scripts/webkitpy/port/win.py:481
&gt; +        code = self._executive.run_command([httpd_path, &quot;-k&quot;, &quot;install&quot;], return_exit_code=True)

I suggest that we rename &quot;code&quot; to &quot;exit_code&quot; as it better describes the purpose of this value. 

&quot; (double quote) =&gt; &apos; (single quote)

&gt; Tools/Scripts/webkitpy/port/win.py:482
&gt; +        # 0 : success, 2 : already installed, 720005 : permission error

Are these the only possible exit codes? I mean, the code below assumes that if we do not get 0 or 2 then it has to be a permission error. It simplifies the code to make this assumption as you did. Having said that, if there is a possibility of other exit code values then we may want to consider emitting the exit code value with the logged error below for debugging purposes.

&gt; Tools/Scripts/webkitpy/port/win.py:486
&gt; +        _log.error(&quot;Httpd cannot run as service. perhaps you forgot to log in as Adminstrator?&quot;)

&quot;as service&quot; =&gt; &quot;as a service&quot;
&quot;perhaps&quot; =&gt; &quot;Perhaps&quot;
&quot;as Administrator?&quot; =&gt; &quot;as an administrator user?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404475</commentid>
    <comment_count>15</comment_count>
      <attachid>335222</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-07 14:26:39 -0800</bug_when>
    <thetext>Created attachment 335222
PATCH

Added unittest, cleanup apache config, refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1404852</commentid>
    <comment_count>16</comment_count>
      <attachid>335222</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-08 11:59:02 -0800</bug_when>
    <thetext>Comment on attachment 335222
PATCH

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

&gt; Tools/ChangeLog:7
&gt; +

Please describe this change as the title of the bug is not descriptive enough. The purpose of this change is to support running HTTP layout tests on Windows without Cygwin. Currently we only support running HTTP layout tests on Windows in Cygwin.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:178
&gt; +    @property
&gt; +    def platform(self):
&gt; +        return self._port_obj.host.platform

Nice.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:227
&gt; +    def _server_error(self, message, err, exit_code):

I know that you named the second argument, err, based on the existing code. It neither conforms to the naming conventions in the WebKit Code Style guidelines nor is is very descriptive. I suggest we rename the argument err to stderr_output (or can we come up with a better name) to describe what it is: the standard error output.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:229
&gt; +            err = &apos;Access is denied. Do you have an administrator privilegde?&apos;

&quot;an administrator privilegde?&quot; =&gt; &quot;administrator privilege?&quot;

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:230
&gt; +

Please remove this empty line as I do not feel it improves the readability of this function.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:231
&gt; +        return http_server_base.ServerError(&apos;%s: %s (exit code=%s)&apos; % (message, err, exit_code))

We prefer using String.format() in new code as this was initially suggested as the analog in Python 3. I am unclear when we will move to Python 3 (if ever) or if String.format() is still preferred in Python 3. If you chose to use the % operator then we should format the exit code as decimal (%d).

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:168
&gt; +

Please remove this empty line as I do not feel it improves the readability of this function.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:171
&gt; +    def _prepare_aliases(self, data):

Maybe a more descriptive name for this would be _build_alias_path_pairs?

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py:174
&gt; +

Please remove this empty line as I do not feel it improves the readability of this function.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:60
&gt; +    def test_aliases(self):

I suggest we name this function test_prepare_aliases to coincide with the name of the function it is testing _prepare_aliases. If you take my suggestion above then we should rename this function to test_build_alias_path_pairs.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:68
&gt; +            [&quot;/media-resources&quot;, &quot;media&quot;],
&gt; +            [&quot;/modern-media-controls&quot;, &quot;../Source/WebCore/Modules/modern-media-controls&quot;],
&gt; +            [&quot;/resources/testharness.css&quot;, &quot;resources/testharness.css&quot;],

&quot; (double quote) =&gt; &apos; (single quote)

&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:74
&gt; +            (&apos;/media-resources&apos;, &apos;/test.checkout/LayoutTests/media&apos;),
&gt; +            (&apos;/modern-media-controls&apos;, &apos;/test.checkout/LayoutTests/../Source/WebCore/Modules/modern-media-controls&apos;),
&gt; +            (&apos;/resources/testharness.css&apos;, &apos;/test.checkout/LayoutTests/resources/testharness.css&apos;),

This output matches the output on Windows? I would have expected the slashes to be different.

&gt; Tools/Scripts/webkitpy/port/win.py:187
&gt; +    def _expected_path_to_apache(self):
&gt; +        return self._filesystem.join(&apos;C:\\&apos;, &apos;xampp&apos;, &apos;apache&apos;, &apos;bin&apos;, &apos;httpd.exe&apos;)

I do not see the need for this function because it is referenced exactly once from _path_to_apache() and its name raises more questions than answers (&quot;expected&quot;?). I suggest we inline the implementation of this function into _path_to_apache() and remove this function.

&gt; Tools/Scripts/webkitpy/port/win.py:193
&gt; +

Please remove this empty line as I do not feel it improves the readability of this function.

&gt; Tools/Scripts/webkitpy/port/win.py:479
&gt; +        # To launch apache as a daemon, service installation is required.

apache =&gt; Apache
(it&apos;s a proper noun)

&gt; Tools/Scripts/webkitpy/port/win.py:481
&gt; +        # 0=success, 2=already installed, 720005=permission error, etc

etc =&gt; &quot;etc.&quot; (notice the period at the end since etc. is an abbreviation of et cetera).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405054</commentid>
    <comment_count>17</comment_count>
      <attachid>335390</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 20:56:58 -0800</bug_when>
    <thetext>Created attachment 335390
FIX

&gt; Reviewed by Daniel Bates.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405056</commentid>
    <comment_count>18</comment_count>
      <attachid>335222</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2018-03-08 21:03:16 -0800</bug_when>
    <thetext>Comment on attachment 335222
PATCH

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py:231
&gt;&gt; +        return http_server_base.ServerError(&apos;%s: %s (exit code=%s)&apos; % (message, err, exit_code))
&gt; 
&gt; We prefer using String.format() in new code as this was initially suggested as the analog in Python 3. I am unclear when we will move to Python 3 (if ever) or if String.format() is still preferred in Python 3. If you chose to use the % operator then we should format the exit code as decimal (%d).

That&apos;s wonderful. I prefer format().

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:74
&gt;&gt; +            (&apos;/resources/testharness.css&apos;, &apos;/test.checkout/LayoutTests/resources/testharness.css&apos;),
&gt; 
&gt; This output matches the output on Windows? I would have expected the slashes to be different.

Filesystem_mock object prepared for mock port always uses &apos;/&apos; as a separator. This is the case I discussed at IRC. I think the validity of Windows style path style is okay not checking at this test, but it should be covered by filesystem_mock_unitcase. I&apos;ve started working on that test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405221</commentid>
    <comment_count>19</comment_count>
      <attachid>335390</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-09 10:48:51 -0800</bug_when>
    <thetext>Comment on attachment 335390
FIX

Clearing flags on attachment: 335390

Committed r229469: &lt;https://trac.webkit.org/changeset/229469&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405222</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-09 10:48:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405223</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-09 10:49:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/38308428&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334865</attachid>
            <date>2018-03-01 16:16:27 -0800</date>
            <delta_ts>2018-03-01 16:44:29 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>183265.diff</filename>
            <type>text/plain</type>
            <size>10687</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NTE5N2I4MzRjZS4uYjkyZDUyZDMyNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxOC0wMy0wMSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAg
ICAgICAgW3dlYmtpdHB5LCBXaW5DYWlyb10gTGF1bmNoIEFwYWNoZSBIVFRQRCBmb3IgSFRUUCBU
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mOiBBZGRlZC4KKwogMjAxOC0wMy0wMSAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1b
RFJUXSBJbXBsZW1lbnQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mIGIvTGF5b3V0VGVz
dHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5mNTgyMDkwMTA1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40LXBocDcuY29uZgpAQCAtMCwwICsxLDE2MiBA
QAorU2VydmVyUm9vdCAiQzoveGFtcHAvYXBhY2hlIgorCisjIE11dGV4IGZpbGU6L3RtcC9XZWJL
aXQKK1BpZEZpbGUgImM6L3hhbXBwL2FwYWNoZS9sb2dzL2h0dHBkLnBpZCIKKyNTY29yZUJvYXJk
RmlsZSAiL3RtcC9XZWJLaXQvaHR0cGQuc2NvcmVib2FyZCIKKworVGltZW91dCAzMDAKK0tlZXBB
bGl2ZSBPbgorTWF4S2VlcEFsaXZlUmVxdWVzdHMgMTAwCitLZWVwQWxpdmVUaW1lb3V0IDE1CisK
KyMgTG9hZE1vZHVsZSB1bml4ZF9tb2R1bGUgbGliZXhlYy9hcGFjaGUvbW9kX3VuaXhkLnNvCitM
b2FkTW9kdWxlIGFjY2Vzc19jb21wYXRfbW9kdWxlIG1vZHVsZXMvbW9kX2FjY2Vzc19jb21wYXQu
c28KK0xvYWRNb2R1bGUgYXV0aG5fY29yZV9tb2R1bGUgbW9kdWxlcy9tb2RfYXV0aG5fY29yZS5z
bworTG9hZE1vZHVsZSBhdXRoel9jb3JlX21vZHVsZSBtb2R1bGVzL21vZF9hdXRoel9jb3JlLnNv
CitMb2FkTW9kdWxlIGF1dGh6X2hvc3RfbW9kdWxlIG1vZHVsZXMvbW9kX2F1dGh6X2hvc3Quc28K
K0xvYWRNb2R1bGUgaW5jbHVkZV9tb2R1bGUgbW9kdWxlcy9tb2RfaW5jbHVkZS5zbworTG9hZE1v
ZHVsZSBsb2dfY29uZmlnX21vZHVsZSBtb2R1bGVzL21vZF9sb2dfY29uZmlnLnNvCitMb2FkTW9k
dWxlIGhlYWRlcnNfbW9kdWxlIG1vZHVsZXMvbW9kX2hlYWRlcnMuc28KK0xvYWRNb2R1bGUgc3Ns
X21vZHVsZSBtb2R1bGVzL21vZF9zc2wuc28KK0xvYWRNb2R1bGUgbWltZV9tb2R1bGUgbW9kdWxl
cy9tb2RfbWltZS5zbworTG9hZE1vZHVsZSBhc2lzX21vZHVsZSBtb2R1bGVzL21vZF9hc2lzLnNv
CitMb2FkTW9kdWxlIGNnaV9tb2R1bGUgbW9kdWxlcy9tb2RfY2dpLnNvCitMb2FkTW9kdWxlIG5l
Z290aWF0aW9uX21vZHVsZSBtb2R1bGVzL21vZF9uZWdvdGlhdGlvbi5zbworI0xvYWRNb2R1bGUg
aW1hZ2VtYXBfbW9kdWxlIG1vZHVsZXMvbW9kX2ltYWdlbWFwLnNvCitMb2FkTW9kdWxlIGFjdGlv
bnNfbW9kdWxlIG1vZHVsZXMvbW9kX2FjdGlvbnMuc28KK0xvYWRNb2R1bGUgYWxpYXNfbW9kdWxl
IG1vZHVsZXMvbW9kX2FsaWFzLnNvCitMb2FkTW9kdWxlIHJld3JpdGVfbW9kdWxlIG1vZHVsZXMv
bW9kX3Jld3JpdGUuc28KK0xvYWRGaWxlICJDOi94YW1wcC9waHAvcGhwN3RzLmRsbCIKK0xvYWRG
aWxlICJDOi94YW1wcC9waHAvbGlicHEuZGxsIgorTG9hZE1vZHVsZSBwaHA3X21vZHVsZSAiQzov
eGFtcHAvcGhwL3BocDdhcGFjaGUyXzQuZGxsIgorCisKK1NlcnZlck5hbWUgMTI3LjAuMC4xCisK
KzxEaXJlY3RvcnkgLz4KKyAgICBPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MgTXVsdGlW
aWV3cyBFeGVjQ0dJIEluY2x1ZGVzCisgICAgQWxsb3dPdmVycmlkZSBBbGwKKyAgICBPcmRlciBh
bGxvdyxkZW55CisgICAgQWxsb3cgZnJvbSBhbGwKKzwvRGlyZWN0b3J5PgorCitBY2Nlc3NGaWxl
TmFtZSAuaHRhY2Nlc3MKKworPEZpbGVzIH4gIl5cLihbSGhdW1R0XXxbRGRdW1NzXV9bU3NdKSI+
CisgICAgT3JkZXIgYWxsb3csZGVueQorICAgIERlbnkgZnJvbSBhbGwKKyAgICBTYXRpc2Z5IEFs
bAorPC9GaWxlcz4KKworVXNlQ2Fub25pY2FsTmFtZSBPbgorSG9zdG5hbWVMb29rdXBzIE9mZgor
CitTY3JpcHRJbnRlcnByZXRlclNvdXJjZSBSZWdpc3RyeS1TdHJpY3QKKyMgV2hlbiB1c2luZyB0
aGUgYWJvdmUgc2V0dGluZywgc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgUGVybCBiaW5hcnkKKyMg
dXNpbmcgdGhlIHJlZ2lzdHJ5IGtleXMgYmVsb3c6CisjIFtIS0VZX0NMQVNTRVNfUk9PVFwucGxc
U2hlbGxcRXhlY0NHSVxDb21tYW5kXSBAPSJjOlxcUEFUSFxUT1xwZXJsXFxiaW5cXHBlcmwuZXhl
IgorIyBIS0VZX0NMQVNTRVNfUk9PVFwuY2dpXFNoZWxsXEV4ZWNDR0lcQ29tbWFuZF0gQD0iYzpc
XFBBVEhcVE9ccGVybFxcYmluXFxwZXJsLmV4ZSIKKworTG9nTGV2ZWwgd2FybgorCitFcnJvckxv
ZyAiQzpceGFtcHBcYXBhY2hlXGxvZ3NcZXJyb3JfbG9nLnR4dCIKKworTG9nRm9ybWF0ICIlaCAl
bCAldSAldCBcIiVyXCIgJT5zICViIFwiJXtSZWZlcmVyfWlcIiBcIiV7VXNlci1BZ2VudH1pXCIi
IGNvbWJpbmVkCitMb2dGb3JtYXQgIiVoICVsICV1ICV0IFwiJXJcIiAlPnMgJWIgJUQiIGNvbW1v
bgorTG9nRm9ybWF0ICIle1JlZmVyZXJ9aSAtPiAlVSIgcmVmZXJlcgorTG9nRm9ybWF0ICIle1Vz
ZXItYWdlbnR9aSIgYWdlbnQKKworU2VydmVyU2lnbmF0dXJlIE9uCisKKzxJZk1vZHVsZSBtb2Rf
YWxpYXMuYz4KKzwvSWZNb2R1bGU+CisKKzxJZk1vZHVsZSBtb2RfbWltZS5jPgorICAgIEFkZExh
bmd1YWdlIGRhIC5kaworICAgIEFkZExhbmd1YWdlIG5sIC5ubAorICAgIEFkZExhbmd1YWdlIGVu
IC5lbgorICAgIEFkZExhbmd1YWdlIGV0IC5lZQorICAgIEFkZExhbmd1YWdlIGZyIC5mcgorICAg
IEFkZExhbmd1YWdlIGRlIC5kZQorICAgIEFkZExhbmd1YWdlIGVsIC5lbAorICAgIEFkZExhbmd1
YWdlIGhlIC5oZQorICAgIEFkZENoYXJzZXQgSVNPLTg4NTktOCAuaXNvODg1OS04CisgICAgQWRk
TGFuZ3VhZ2UgaXQgLml0CisgICAgQWRkTGFuZ3VhZ2UgamEgLmphCisgICAgQWRkQ2hhcnNldCBJ
U08tMjAyMi1KUCAuamlzCisgICAgQWRkTGFuZ3VhZ2Uga3IgLmtyCisgICAgQWRkQ2hhcnNldCBJ
U08tMjAyMi1LUiAuaXNvLWtyCisgICAgQWRkTGFuZ3VhZ2Ugbm4gLm5uCisgICAgQWRkTGFuZ3Vh
Z2Ugbm8gLm5vCisgICAgQWRkTGFuZ3VhZ2UgcGwgLnBvCisgICAgQWRkQ2hhcnNldCBJU08tODg1
OS0yIC5pc28tcGwKKyAgICBBZGRMYW5ndWFnZSBwdCAucHQKKyAgICBBZGRMYW5ndWFnZSBwdC1i
ciAucHQtYnIKKyAgICBBZGRMYW5ndWFnZSBsdHogLmx1CisgICAgQWRkTGFuZ3VhZ2UgY2EgLmNh
CisgICAgQWRkTGFuZ3VhZ2UgZXMgLmVzCisgICAgQWRkTGFuZ3VhZ2Ugc3YgLnN2CisgICAgQWRk
TGFuZ3VhZ2UgY3MgLmN6IC5jcworICAgIEFkZExhbmd1YWdlIHJ1IC5ydQorICAgIEFkZExhbmd1
YWdlIHpoLVRXIC56aC10dworICAgIEFkZENoYXJzZXQgQmlnNSAgICAgICAgIC5CaWc1ICAgIC5i
aWc1CisgICAgQWRkQ2hhcnNldCBXSU5ET1dTLTEyNTEgLmNwLTEyNTEKKyAgICBBZGRDaGFyc2V0
IENQODY2ICAgICAgICAuY3A4NjYKKyAgICBBZGRDaGFyc2V0IElTTy04ODU5LTUgICAuaXNvLXJ1
CisgICAgQWRkQ2hhcnNldCBLT0k4LVIgICAgICAgLmtvaTgtcgorICAgIEFkZENoYXJzZXQgVUNT
LTIgICAgICAgIC51Y3MyCisgICAgQWRkQ2hhcnNldCBVQ1MtNCAgICAgICAgLnVjczQKKyAgICBB
ZGRDaGFyc2V0IFVURi04ICAgICAgICAudXRmOAorCisgICAgPElmTW9kdWxlIG1vZF9uZWdvdGlh
dGlvbi5jPgorICAgICAgICBMYW5ndWFnZVByaW9yaXR5IGVuIGRhIG5sIGV0IGZyIGRlIGVsIGl0
IGphIGtyIG5vIHBsIHB0IHB0LWJyIHJ1IGx0eiBjYSBlcyBzdiB0dworICAgIDwvSWZNb2R1bGU+
CisKKyAgICBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtdGFyIC50Z3oKKworICAgIEFkZEVuY29kaW5n
IHgtY29tcHJlc3MgLloKKyAgICBBZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKKworICAgIEFk
ZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorCisgICAgQWRkVHlwZSB0ZXh0L2h0bWwgLnNo
dG1sCisgICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5zaHRtbAorCisgICAgQWRkSGFuZGxl
ciBzZW5kLWFzLWlzIGFzaXMKKzwvSWZNb2R1bGU+CisKKzxJZk1vZHVsZSBtb2RfcGhwNy5jPgor
ICAgIEFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1waHAgLnBocAorICAgIEFkZFR5cGUgYXBw
bGljYXRpb24veC1odHRwZC1waHAgLmJhdAorICAgIEFkZFR5cGUgYXBwbGljYXRpb24veC1odHRw
ZC1waHAtc291cmNlIC5waHBzCisKKyAgICA8SWZNb2R1bGUgbW9kX2Rpci5jPgorICAgICAgICBE
aXJlY3RvcnlJbmRleCBpbmRleC5odG1sIGluZGV4LnBocAorICAgIDwvSWZNb2R1bGU+CisKKyAg
ICBwaHBfZmxhZyBsb2dfZXJyb3JzIG9uCisgICAgcGhwX2ZsYWcgc2hvcnRfb3Blbl90YWcgb24K
KzwvSWZNb2R1bGU+CisKKzxJZk1vZHVsZSBtb2RfcmV3cml0ZS5jPgorICAgIFJld3JpdGVFbmdp
bmUgT24KKyAgICBSZXdyaXRlQ29uZCAle1JFUVVFU1RfTUVUSE9EfSBeVFJBQ0UKKyAgICBSZXdy
aXRlUnVsZSAuKiAtIFtGXQorPC9JZk1vZHVsZT4KKworIyBTZWN1cmUgKFNTTC9UTFMpIGNvbm5l
Y3Rpb25zCisjSW5jbHVkZSBjb25mL2V4dHJhL2h0dHBkLXNzbC5jb25mCisjCisjIE5vdGU6IFRo
ZSBmb2xsb3dpbmcgbXVzdCBtdXN0IGJlIHByZXNlbnQgdG8gc3VwcG9ydAorIyAgICAgICBzdGFy
dGluZyB3aXRob3V0IFNTTCBvbiBwbGF0Zm9ybXMgd2l0aCBubyAvZGV2L3JhbmRvbSBlcXVpdmFs
ZW50CisjICAgICAgIGJ1dCBhIHN0YXRpY2FsbHkgY29tcGlsZWQtaW4gbW9kX3NzbC4KKyMKKzxJ
Zk1vZHVsZSBzc2xfbW9kdWxlPgorU1NMUmFuZG9tU2VlZCBzdGFydHVwIGJ1aWx0aW4KK1NTTFJh
bmRvbVNlZWQgY29ubmVjdCBidWlsdGluCis8L0lmTW9kdWxlPgorCis8VmlydHVhbEhvc3QgKjo4
NDQzPgorICAgIFNlcnZlck5hbWUgMTI3LjAuMC4xCisgICAgU1NMRW5naW5lIE9uCis8L1ZpcnR1
YWxIb3N0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDEwMWZiMjkyMGVhLi5lMzU1YjhhMDk4ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE4LTAzLTAxICBCYXN1
a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KKworICAgICAgICBbd2Via2l0cHks
IFdpbkNhaXJvXSBMYXVuY2ggQXBhY2hlIEhUVFBEIGZvciBIVFRQIFRlc3RzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKExh
eW91dFRlc3RBcGFjaGVIdHRwZC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5OgorICAgICAgICAoSHR0
cFNlcnZlckJhc2UuYWxpYXNlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHk6CisgICAgICAgIChQb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZv
cm0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChX
aW5DYWlyb1BvcnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6CisgICAgICAgIChXaW5D
YWlyb1BvcnQpOgorICAgICAgICAoV2luQ2Fpcm9Qb3J0Ll9wYXRoX3RvX2FwYWNoZSk6CisgICAg
ICAgIChXaW5DYWlyb1BvcnQuY2hlY2tfaHR0cGQpOgorCiAyMDE4LTAzLTAxICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbV2luXVtEUlRdIEltcGxl
bWVudCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBf
c2VydmVyLnB5CmluZGV4IGI1MjJkYzQ0OWE4Li42MTc2NWJkNDBlZSAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9h
cGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTEwMSw4ICsxMDEsOCBAQCBjbGFzcyBMYXlvdXRUZXN0
QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgICAgICAg
ICAnLWMnLCAnUGlkRmlsZSAiJXMiJyAlIHNlbGYuX3BpZF9maWxlLAogICAgICAgICAgICAgJy1r
JywgInN0YXJ0Il0KIAotICAgICAgICBmb3IgYWxpYXMgaW4gc2VsZi5hbGlhc2VzKCk6Ci0gICAg
ICAgICAgICBzdGFydF9jbWQuZXh0ZW5kKFsnLWMnLCAnQWxpYXMgJXMgIiVzIicgJSAoYWxpYXNb
MF0sIGFsaWFzWzFdKV0pCisgICAgICAgIGZvciAoYWxpYXMsIHBhdGgpIGluIHNlbGYuYWxpYXNl
cygpOgorICAgICAgICAgICAgc3RhcnRfY21kLmV4dGVuZChbJy1jJywgJ0FsaWFzICVzICIlcyIn
ICUgKGFsaWFzLCBwYXRoKV0pCiAKICAgICAgICAgaWYgbm90IHBvcnRfb2JqLmhvc3QucGxhdGZv
cm0uaXNfd2luKCk6CiAgICAgICAgICAgICBzdGFydF9jbWQuZXh0ZW5kKFsnLUMnLCAnVXNlciAi
JXMiJyAlIG9zLmVudmlyb24uZ2V0KCJVU0VSTkFNRSIsIG9zLmVudmlyb24uZ2V0KCJVU0VSIiwg
IiIpKV0pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9z
ZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXggMTlhY2Q3YmM2ODguLmMz
ZDQ1Nzk5ZWY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CkBAIC0zMSw2ICszMSw3
IEBACiBpbXBvcnQgZXJybm8KIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9z
LnBhdGgKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQpAQCAtMTY1
LDEwICsxNjYsMTAgQEAgY2xhc3MgSHR0cFNlcnZlckJhc2Uob2JqZWN0KToKIAogICAgIGRlZiBh
bGlhc2VzKHNlbGYpOgogICAgICAgICBqc29uX2RhdGEgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRf
dGV4dF9maWxlKHNlbGYuX3BvcnRfb2JqLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiVG9vbHMiLCAi
U2NyaXB0cyIsICJ3ZWJraXRweSIsICJsYXlvdXRfdGVzdHMiLCAic2VydmVycyIsICJhbGlhc2Vz
Lmpzb24iKSkKLSAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGZvciBpdGVtIGluIGpzb24u
bG9hZHMoanNvbl9kYXRhKToKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFtpdGVtWzBdLCBz
ZWxmLl9wb3J0X29iai5fZmlsZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfZGlyLCBpdGVtWzFdKV0p
Ci0gICAgICAgIHJldHVybiByZXN1bHRzCisKKyAgICAgICAgbWFrZV9wYXRoID0gbGFtYmRhIHBh
dGg6IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX2Rpciwgb3MucGF0aC5ub3JtcGF0
aChwYXRoKSkKKworICAgICAgICByZXR1cm4gWyhhbGlhcywgbWFrZV9wYXRoKHBhdGgpKSBmb3Ig
KGFsaWFzLCBwYXRoKSBpbiBqc29uLmxvYWRzKGpzb25fZGF0YSldCiAKICAgICBkZWYgX3JlbW92
ZV9waWRfZmlsZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2Vs
Zi5fcGlkX2ZpbGUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCBjZmQxNjFh
ZmViMy4uZWY5Yjc2MjQxZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CkBAIC0x
MjUwLDggKzEyNTAsMTAgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAgIyBXZSBwYXNzIHN5
c19wbGF0Zm9ybSBpbnRvIHRoaXMgbWV0aG9kIHRvIG1ha2UgaXQgZWFzeSB0byB1bml0IHRlc3Qu
CiAgICAgZGVmIF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0oc2VsZiwgc3lz
X3BsYXRmb3JtKToKLSAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICdjeWd3aW4nIG9yIHN5c19w
bGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgaWYgc2VsZi5ob3N0LnBsYXRmb3Jt
LmlzX2N5Z3dpbigpOgogICAgICAgICAgICAgcmV0dXJuICdhcGFjaGUnICsgc2VsZi5fYXBhY2hl
X3ZlcnNpb24oKSArICctaHR0cGQtd2luLmNvbmYnCisgICAgICAgIGlmIHNlbGYuaG9zdC5wbGF0
Zm9ybS5pc19uYXRpdmVfd2luKCk6CisgICAgICAgICAgICByZXR1cm4gJ3dpbi1odHRwZC0nICsg
c2VsZi5fYXBhY2hlX3ZlcnNpb24oKSArICctcGhwNy5jb25mJwogICAgICAgICBpZiBzeXNfcGxh
dGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICByZXR1cm4gJ2FwYWNoZScgKyBzZWxmLl9h
cGFjaGVfdmVyc2lvbigpICsgc2VsZi5fZGFyd2luX3BocF92ZXJzaW9uKCkgKyAnLWh0dHBkLmNv
bmYnCiAgICAgICAgIGlmIHN5c19wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93aW4ucHkKaW5kZXggOTgxNDYxMzRiY2UuLjUwN2U5MzliOTFlIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKQEAgLTQ2MywzICs0NjMsMjUgQEAgY2xhc3MgV2lu
Q2Fpcm9Qb3J0KFdpblBvcnQpOgogICAgICAgICBmYWxsYmFja19uYW1lcyA9IFsnd2luY2Fpcm8t
JyArIHZlcnNpb25fbmFtZV9tYXAudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnBvcnRf
bmFtZSkubG93ZXIoKS5yZXBsYWNlKCcgJywgJycpIGZvciB2ZXJzaW9uIGluIGZhbGxiYWNrX3Zl
cnNpb25zXQogICAgICAgICBmYWxsYmFja19uYW1lcy5hcHBlbmQoJ3dpbmNhaXJvJykKICAgICAg
ICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJhY2tfbmFtZXMp
CisKKyAgICBkZWYgX3BhdGhfdG9fYXBhY2hlKHNlbGYpOgorICAgICAgICBodHRwZFBhdGggPSBv
cy5wYXRoLmpvaW4oJ0M6XFwnLCAneGFtcHAnLCAnYXBhY2hlJywgJ2JpbicsICdodHRwZC5leGUn
KQorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhodHRwZFBhdGgpOgorICAgICAg
ICAgICAgcmV0dXJuIGh0dHBkUGF0aAorICAgICAgICBfbG9nLmVycm9yKCJDb3VsZCBub3QgZmlu
ZCBhcGFjaGUuIE5vdCBpbnN0YWxsZWQgb3IgdW5rbm93biBwYXRoLiIpCisgICAgICAgIHJldHVy
biBOb25lCisKKyAgICBkZWYgY2hlY2tfaHR0cGQoc2VsZik6CisgICAgICAgIGlmIG5vdCBzdXBl
cihXaW5DYWlyb1BvcnQsIHNlbGYpLmNoZWNrX2h0dHBkKCk6CisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgICAgICBodHRwZF9wYXRoID0gc2VsZi5fcGF0aF90b19hcGFjaGUoKQorCisg
ICAgICAgICMgdG8gbGF1bmNoIGFwYWNoZSBhcyBhIGRhZW1vbiwgc2VydmljZSBpbnN0YWxsYXRp
b24gaXMgcmVxdWlyZWQuCisgICAgICAgIGNvZGUgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1h
bmQoW2h0dHBkX3BhdGgsICItayIsICJpbnN0YWxsIl0sIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkK
KyAgICAgICAgIyAwIDogc3VjY2VzcywgMiA6IGFscmVhZHkgaW5zdGFsbGVkLCA3MjAwMDUgOiBw
ZXJtaXNzaW9uIGVycm9yCisgICAgICAgIGlmIGNvZGUgPT0gMCBvciBjb2RlID09IDI6CisgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIF9sb2cuZXJyb3IoIkh0dHBkIGNhbm5vdCBy
dW4gYXMgc2VydmljZS4gcGVyaGFwcyB5b3UgZm9yZ290IHRvIGxvZyBpbiBhcyBBZG1pbnN0cmF0
b3I/IikKKyAgICAgICAgcmV0dXJuIEZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334869</attachid>
            <date>2018-03-01 16:44:29 -0800</date>
            <delta_ts>2018-03-05 17:36:38 -0800</delta_ts>
            <desc>FIX for webkitpy tests</desc>
            <filename>183265.diff</filename>
            <type>text/plain</type>
            <size>11695</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NTE5N2I4MzRjZS4uYjkyZDUyZDMyNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxOC0wMy0wMSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAg
ICAgICAgW3dlYmtpdHB5LCBXaW5DYWlyb10gTGF1bmNoIEFwYWNoZSBIVFRQRCBmb3IgSFRUUCBU
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mOiBBZGRlZC4KKwogMjAxOC0wMy0wMSAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1b
RFJUXSBJbXBsZW1lbnQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mIGIvTGF5b3V0VGVz
dHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5mNTgyMDkwMTA1NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40LXBocDcuY29uZgpAQCAtMCwwICsxLDE2MiBA
QAorU2VydmVyUm9vdCAiQzoveGFtcHAvYXBhY2hlIgorCisjIE11dGV4IGZpbGU6L3RtcC9XZWJL
aXQKK1BpZEZpbGUgImM6L3hhbXBwL2FwYWNoZS9sb2dzL2h0dHBkLnBpZCIKKyNTY29yZUJvYXJk
RmlsZSAiL3RtcC9XZWJLaXQvaHR0cGQuc2NvcmVib2FyZCIKKworVGltZW91dCAzMDAKK0tlZXBB
bGl2ZSBPbgorTWF4S2VlcEFsaXZlUmVxdWVzdHMgMTAwCitLZWVwQWxpdmVUaW1lb3V0IDE1CisK
KyMgTG9hZE1vZHVsZSB1bml4ZF9tb2R1bGUgbGliZXhlYy9hcGFjaGUvbW9kX3VuaXhkLnNvCitM
b2FkTW9kdWxlIGFjY2Vzc19jb21wYXRfbW9kdWxlIG1vZHVsZXMvbW9kX2FjY2Vzc19jb21wYXQu
c28KK0xvYWRNb2R1bGUgYXV0aG5fY29yZV9tb2R1bGUgbW9kdWxlcy9tb2RfYXV0aG5fY29yZS5z
bworTG9hZE1vZHVsZSBhdXRoel9jb3JlX21vZHVsZSBtb2R1bGVzL21vZF9hdXRoel9jb3JlLnNv
CitMb2FkTW9kdWxlIGF1dGh6X2hvc3RfbW9kdWxlIG1vZHVsZXMvbW9kX2F1dGh6X2hvc3Quc28K
K0xvYWRNb2R1bGUgaW5jbHVkZV9tb2R1bGUgbW9kdWxlcy9tb2RfaW5jbHVkZS5zbworTG9hZE1v
ZHVsZSBsb2dfY29uZmlnX21vZHVsZSBtb2R1bGVzL21vZF9sb2dfY29uZmlnLnNvCitMb2FkTW9k
dWxlIGhlYWRlcnNfbW9kdWxlIG1vZHVsZXMvbW9kX2hlYWRlcnMuc28KK0xvYWRNb2R1bGUgc3Ns
X21vZHVsZSBtb2R1bGVzL21vZF9zc2wuc28KK0xvYWRNb2R1bGUgbWltZV9tb2R1bGUgbW9kdWxl
cy9tb2RfbWltZS5zbworTG9hZE1vZHVsZSBhc2lzX21vZHVsZSBtb2R1bGVzL21vZF9hc2lzLnNv
CitMb2FkTW9kdWxlIGNnaV9tb2R1bGUgbW9kdWxlcy9tb2RfY2dpLnNvCitMb2FkTW9kdWxlIG5l
Z290aWF0aW9uX21vZHVsZSBtb2R1bGVzL21vZF9uZWdvdGlhdGlvbi5zbworI0xvYWRNb2R1bGUg
aW1hZ2VtYXBfbW9kdWxlIG1vZHVsZXMvbW9kX2ltYWdlbWFwLnNvCitMb2FkTW9kdWxlIGFjdGlv
bnNfbW9kdWxlIG1vZHVsZXMvbW9kX2FjdGlvbnMuc28KK0xvYWRNb2R1bGUgYWxpYXNfbW9kdWxl
IG1vZHVsZXMvbW9kX2FsaWFzLnNvCitMb2FkTW9kdWxlIHJld3JpdGVfbW9kdWxlIG1vZHVsZXMv
bW9kX3Jld3JpdGUuc28KK0xvYWRGaWxlICJDOi94YW1wcC9waHAvcGhwN3RzLmRsbCIKK0xvYWRG
aWxlICJDOi94YW1wcC9waHAvbGlicHEuZGxsIgorTG9hZE1vZHVsZSBwaHA3X21vZHVsZSAiQzov
eGFtcHAvcGhwL3BocDdhcGFjaGUyXzQuZGxsIgorCisKK1NlcnZlck5hbWUgMTI3LjAuMC4xCisK
KzxEaXJlY3RvcnkgLz4KKyAgICBPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MgTXVsdGlW
aWV3cyBFeGVjQ0dJIEluY2x1ZGVzCisgICAgQWxsb3dPdmVycmlkZSBBbGwKKyAgICBPcmRlciBh
bGxvdyxkZW55CisgICAgQWxsb3cgZnJvbSBhbGwKKzwvRGlyZWN0b3J5PgorCitBY2Nlc3NGaWxl
TmFtZSAuaHRhY2Nlc3MKKworPEZpbGVzIH4gIl5cLihbSGhdW1R0XXxbRGRdW1NzXV9bU3NdKSI+
CisgICAgT3JkZXIgYWxsb3csZGVueQorICAgIERlbnkgZnJvbSBhbGwKKyAgICBTYXRpc2Z5IEFs
bAorPC9GaWxlcz4KKworVXNlQ2Fub25pY2FsTmFtZSBPbgorSG9zdG5hbWVMb29rdXBzIE9mZgor
CitTY3JpcHRJbnRlcnByZXRlclNvdXJjZSBSZWdpc3RyeS1TdHJpY3QKKyMgV2hlbiB1c2luZyB0
aGUgYWJvdmUgc2V0dGluZywgc3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgUGVybCBiaW5hcnkKKyMg
dXNpbmcgdGhlIHJlZ2lzdHJ5IGtleXMgYmVsb3c6CisjIFtIS0VZX0NMQVNTRVNfUk9PVFwucGxc
U2hlbGxcRXhlY0NHSVxDb21tYW5kXSBAPSJjOlxcUEFUSFxUT1xwZXJsXFxiaW5cXHBlcmwuZXhl
IgorIyBIS0VZX0NMQVNTRVNfUk9PVFwuY2dpXFNoZWxsXEV4ZWNDR0lcQ29tbWFuZF0gQD0iYzpc
XFBBVEhcVE9ccGVybFxcYmluXFxwZXJsLmV4ZSIKKworTG9nTGV2ZWwgd2FybgorCitFcnJvckxv
ZyAiQzpceGFtcHBcYXBhY2hlXGxvZ3NcZXJyb3JfbG9nLnR4dCIKKworTG9nRm9ybWF0ICIlaCAl
bCAldSAldCBcIiVyXCIgJT5zICViIFwiJXtSZWZlcmVyfWlcIiBcIiV7VXNlci1BZ2VudH1pXCIi
IGNvbWJpbmVkCitMb2dGb3JtYXQgIiVoICVsICV1ICV0IFwiJXJcIiAlPnMgJWIgJUQiIGNvbW1v
bgorTG9nRm9ybWF0ICIle1JlZmVyZXJ9aSAtPiAlVSIgcmVmZXJlcgorTG9nRm9ybWF0ICIle1Vz
ZXItYWdlbnR9aSIgYWdlbnQKKworU2VydmVyU2lnbmF0dXJlIE9uCisKKzxJZk1vZHVsZSBtb2Rf
YWxpYXMuYz4KKzwvSWZNb2R1bGU+CisKKzxJZk1vZHVsZSBtb2RfbWltZS5jPgorICAgIEFkZExh
bmd1YWdlIGRhIC5kaworICAgIEFkZExhbmd1YWdlIG5sIC5ubAorICAgIEFkZExhbmd1YWdlIGVu
IC5lbgorICAgIEFkZExhbmd1YWdlIGV0IC5lZQorICAgIEFkZExhbmd1YWdlIGZyIC5mcgorICAg
IEFkZExhbmd1YWdlIGRlIC5kZQorICAgIEFkZExhbmd1YWdlIGVsIC5lbAorICAgIEFkZExhbmd1
YWdlIGhlIC5oZQorICAgIEFkZENoYXJzZXQgSVNPLTg4NTktOCAuaXNvODg1OS04CisgICAgQWRk
TGFuZ3VhZ2UgaXQgLml0CisgICAgQWRkTGFuZ3VhZ2UgamEgLmphCisgICAgQWRkQ2hhcnNldCBJ
U08tMjAyMi1KUCAuamlzCisgICAgQWRkTGFuZ3VhZ2Uga3IgLmtyCisgICAgQWRkQ2hhcnNldCBJ
U08tMjAyMi1LUiAuaXNvLWtyCisgICAgQWRkTGFuZ3VhZ2Ugbm4gLm5uCisgICAgQWRkTGFuZ3Vh
Z2Ugbm8gLm5vCisgICAgQWRkTGFuZ3VhZ2UgcGwgLnBvCisgICAgQWRkQ2hhcnNldCBJU08tODg1
OS0yIC5pc28tcGwKKyAgICBBZGRMYW5ndWFnZSBwdCAucHQKKyAgICBBZGRMYW5ndWFnZSBwdC1i
ciAucHQtYnIKKyAgICBBZGRMYW5ndWFnZSBsdHogLmx1CisgICAgQWRkTGFuZ3VhZ2UgY2EgLmNh
CisgICAgQWRkTGFuZ3VhZ2UgZXMgLmVzCisgICAgQWRkTGFuZ3VhZ2Ugc3YgLnN2CisgICAgQWRk
TGFuZ3VhZ2UgY3MgLmN6IC5jcworICAgIEFkZExhbmd1YWdlIHJ1IC5ydQorICAgIEFkZExhbmd1
YWdlIHpoLVRXIC56aC10dworICAgIEFkZENoYXJzZXQgQmlnNSAgICAgICAgIC5CaWc1ICAgIC5i
aWc1CisgICAgQWRkQ2hhcnNldCBXSU5ET1dTLTEyNTEgLmNwLTEyNTEKKyAgICBBZGRDaGFyc2V0
IENQODY2ICAgICAgICAuY3A4NjYKKyAgICBBZGRDaGFyc2V0IElTTy04ODU5LTUgICAuaXNvLXJ1
CisgICAgQWRkQ2hhcnNldCBLT0k4LVIgICAgICAgLmtvaTgtcgorICAgIEFkZENoYXJzZXQgVUNT
LTIgICAgICAgIC51Y3MyCisgICAgQWRkQ2hhcnNldCBVQ1MtNCAgICAgICAgLnVjczQKKyAgICBB
ZGRDaGFyc2V0IFVURi04ICAgICAgICAudXRmOAorCisgICAgPElmTW9kdWxlIG1vZF9uZWdvdGlh
dGlvbi5jPgorICAgICAgICBMYW5ndWFnZVByaW9yaXR5IGVuIGRhIG5sIGV0IGZyIGRlIGVsIGl0
IGphIGtyIG5vIHBsIHB0IHB0LWJyIHJ1IGx0eiBjYSBlcyBzdiB0dworICAgIDwvSWZNb2R1bGU+
CisKKyAgICBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtdGFyIC50Z3oKKworICAgIEFkZEVuY29kaW5n
IHgtY29tcHJlc3MgLloKKyAgICBBZGRFbmNvZGluZyB4LWd6aXAgLmd6IC50Z3oKKworICAgIEFk
ZEhhbmRsZXIgY2dpLXNjcmlwdCAuY2dpIC5wbAorCisgICAgQWRkVHlwZSB0ZXh0L2h0bWwgLnNo
dG1sCisgICAgQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5zaHRtbAorCisgICAgQWRkSGFuZGxl
ciBzZW5kLWFzLWlzIGFzaXMKKzwvSWZNb2R1bGU+CisKKzxJZk1vZHVsZSBtb2RfcGhwNy5jPgor
ICAgIEFkZFR5cGUgYXBwbGljYXRpb24veC1odHRwZC1waHAgLnBocAorICAgIEFkZFR5cGUgYXBw
bGljYXRpb24veC1odHRwZC1waHAgLmJhdAorICAgIEFkZFR5cGUgYXBwbGljYXRpb24veC1odHRw
ZC1waHAtc291cmNlIC5waHBzCisKKyAgICA8SWZNb2R1bGUgbW9kX2Rpci5jPgorICAgICAgICBE
aXJlY3RvcnlJbmRleCBpbmRleC5odG1sIGluZGV4LnBocAorICAgIDwvSWZNb2R1bGU+CisKKyAg
ICBwaHBfZmxhZyBsb2dfZXJyb3JzIG9uCisgICAgcGhwX2ZsYWcgc2hvcnRfb3Blbl90YWcgb24K
KzwvSWZNb2R1bGU+CisKKzxJZk1vZHVsZSBtb2RfcmV3cml0ZS5jPgorICAgIFJld3JpdGVFbmdp
bmUgT24KKyAgICBSZXdyaXRlQ29uZCAle1JFUVVFU1RfTUVUSE9EfSBeVFJBQ0UKKyAgICBSZXdy
aXRlUnVsZSAuKiAtIFtGXQorPC9JZk1vZHVsZT4KKworIyBTZWN1cmUgKFNTTC9UTFMpIGNvbm5l
Y3Rpb25zCisjSW5jbHVkZSBjb25mL2V4dHJhL2h0dHBkLXNzbC5jb25mCisjCisjIE5vdGU6IFRo
ZSBmb2xsb3dpbmcgbXVzdCBtdXN0IGJlIHByZXNlbnQgdG8gc3VwcG9ydAorIyAgICAgICBzdGFy
dGluZyB3aXRob3V0IFNTTCBvbiBwbGF0Zm9ybXMgd2l0aCBubyAvZGV2L3JhbmRvbSBlcXVpdmFs
ZW50CisjICAgICAgIGJ1dCBhIHN0YXRpY2FsbHkgY29tcGlsZWQtaW4gbW9kX3NzbC4KKyMKKzxJ
Zk1vZHVsZSBzc2xfbW9kdWxlPgorU1NMUmFuZG9tU2VlZCBzdGFydHVwIGJ1aWx0aW4KK1NTTFJh
bmRvbVNlZWQgY29ubmVjdCBidWlsdGluCis8L0lmTW9kdWxlPgorCis8VmlydHVhbEhvc3QgKjo4
NDQzPgorICAgIFNlcnZlck5hbWUgMTI3LjAuMC4xCisgICAgU1NMRW5naW5lIE9uCis8L1ZpcnR1
YWxIb3N0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDEwMWZiMjkyMGVhLi5mNmM1MzIwMmZjYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTAzLTAxICBCYXN1
a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KKworICAgICAgICBbd2Via2l0cHks
IFdpbkNhaXJvXSBMYXVuY2ggQXBhY2hlIEhUVFBEIGZvciBIVFRQIFRlc3RzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMjY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKExh
eW91dFRlc3RBcGFjaGVIdHRwZC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5OgorICAgICAgICAoSHR0
cFNlcnZlckJhc2UuYWxpYXNlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHk6CisgICAgICAgIChQb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZv
cm0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Ogor
ICAgICAgICAodGVzdF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5DYWlyb1Bv
cnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6CisgICAgICAgIChXaW5DYWlyb1BvcnQp
OgorICAgICAgICAoV2luQ2Fpcm9Qb3J0Ll9wYXRoX3RvX2FwYWNoZSk6CisgICAgICAgIChXaW5D
YWlyb1BvcnQuY2hlY2tfaHR0cGQpOgorCiAyMDE4LTAzLTAxICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbV2luXVtEUlRdIEltcGxlbWVudCBzZXRT
cGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5
CmluZGV4IGI1MjJkYzQ0OWE4Li42MTc2NWJkNDBlZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0
cF9zZXJ2ZXIucHkKQEAgLTEwMSw4ICsxMDEsOCBAQCBjbGFzcyBMYXlvdXRUZXN0QXBhY2hlSHR0
cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAgICAgICAgICAgICAnLWMnLCAn
UGlkRmlsZSAiJXMiJyAlIHNlbGYuX3BpZF9maWxlLAogICAgICAgICAgICAgJy1rJywgInN0YXJ0
Il0KIAotICAgICAgICBmb3IgYWxpYXMgaW4gc2VsZi5hbGlhc2VzKCk6Ci0gICAgICAgICAgICBz
dGFydF9jbWQuZXh0ZW5kKFsnLWMnLCAnQWxpYXMgJXMgIiVzIicgJSAoYWxpYXNbMF0sIGFsaWFz
WzFdKV0pCisgICAgICAgIGZvciAoYWxpYXMsIHBhdGgpIGluIHNlbGYuYWxpYXNlcygpOgorICAg
ICAgICAgICAgc3RhcnRfY21kLmV4dGVuZChbJy1jJywgJ0FsaWFzICVzICIlcyInICUgKGFsaWFz
LCBwYXRoKV0pCiAKICAgICAgICAgaWYgbm90IHBvcnRfb2JqLmhvc3QucGxhdGZvcm0uaXNfd2lu
KCk6CiAgICAgICAgICAgICBzdGFydF9jbWQuZXh0ZW5kKFsnLUMnLCAnVXNlciAiJXMiJyAlIG9z
LmVudmlyb24uZ2V0KCJVU0VSTkFNRSIsIG9zLmVudmlyb24uZ2V0KCJVU0VSIiwgIiIpKV0pCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0
dHBfc2VydmVyX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9z
ZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXggMTlhY2Q3YmM2ODguLmMzZDQ1Nzk5ZWY5
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2h0dHBfc2VydmVyX2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CkBAIC0zMSw2ICszMSw3IEBACiBpbXBv
cnQgZXJybm8KIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zLnBhdGgKIGlt
cG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQpAQCAtMTY1LDEwICsxNjYs
MTAgQEAgY2xhc3MgSHR0cFNlcnZlckJhc2Uob2JqZWN0KToKIAogICAgIGRlZiBhbGlhc2VzKHNl
bGYpOgogICAgICAgICBqc29uX2RhdGEgPSBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxl
KHNlbGYuX3BvcnRfb2JqLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiVG9vbHMiLCAiU2NyaXB0cyIs
ICJ3ZWJraXRweSIsICJsYXlvdXRfdGVzdHMiLCAic2VydmVycyIsICJhbGlhc2VzLmpzb24iKSkK
LSAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGZvciBpdGVtIGluIGpzb24ubG9hZHMoanNv
bl9kYXRhKToKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKFtpdGVtWzBdLCBzZWxmLl9wb3J0
X29iai5fZmlsZXN5c3RlbS5qb2luKHNlbGYudGVzdHNfZGlyLCBpdGVtWzFdKV0pCi0gICAgICAg
IHJldHVybiByZXN1bHRzCisKKyAgICAgICAgbWFrZV9wYXRoID0gbGFtYmRhIHBhdGg6IHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX2Rpciwgb3MucGF0aC5ub3JtcGF0aChwYXRoKSkK
KworICAgICAgICByZXR1cm4gWyhhbGlhcywgbWFrZV9wYXRoKHBhdGgpKSBmb3IgKGFsaWFzLCBw
YXRoKSBpbiBqc29uLmxvYWRzKGpzb25fZGF0YSldCiAKICAgICBkZWYgX3JlbW92ZV9waWRfZmls
ZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5fcGlkX2Zp
bGUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCBjZmQxNjFhZmViMy4uMWRh
MDZjNzdkNzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CkBAIC0xMjUwLDggKzEy
NTAsMTAgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogCiAgICAgIyBXZSBwYXNzIHN5c19wbGF0Zm9y
bSBpbnRvIHRoaXMgbWV0aG9kIHRvIG1ha2UgaXQgZWFzeSB0byB1bml0IHRlc3QuCiAgICAgZGVm
IF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0oc2VsZiwgc3lzX3BsYXRmb3Jt
KToKLSAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICdjeWd3aW4nIG9yIHN5c19wbGF0Zm9ybS5z
dGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICdjeWd3aW4nOgog
ICAgICAgICAgICAgcmV0dXJuICdhcGFjaGUnICsgc2VsZi5fYXBhY2hlX3ZlcnNpb24oKSArICct
aHR0cGQtd2luLmNvbmYnCisgICAgICAgIGlmIHN5c19wbGF0Zm9ybSA9PSAnd2luMzInOgorICAg
ICAgICAgICAgcmV0dXJuICd3aW4taHR0cGQtJyArIHNlbGYuX2FwYWNoZV92ZXJzaW9uKCkgKyAn
LXBocDcuY29uZicKICAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAg
ICAgICAgcmV0dXJuICdhcGFjaGUnICsgc2VsZi5fYXBhY2hlX3ZlcnNpb24oKSArIHNlbGYuX2Rh
cndpbl9waHBfdmVyc2lvbigpICsgJy1odHRwZC5jb25mJwogICAgICAgICBpZiBzeXNfcGxhdGZv
cm0uc3RhcnRzd2l0aCgnbGludXgnKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Bv
cnRfdGVzdGNhc2UucHkKaW5kZXggMjkxMzc5OWE3NTUuLmRlYmU5ZWRkZDZmIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpAQCAtNjM3LDcgKzYzNyw3
IEBAIE1PQ0sgb3V0cHV0IG9mIGNoaWxkIHByb2Nlc3MKICAgICAgICAgc2VsZi5fYXNzZXJ0X2Nv
bmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnbGludXgyJywgJ2RlYmlhbi1odHRwZC0yLjIu
Y29uZicpCiAKICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShw
b3J0LCAnbWFjJywgJ2FwYWNoZTIuMi1odHRwZC5jb25mJykKLSAgICAgICAgc2VsZi5fYXNzZXJ0
X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnd2luMzInLCAnYXBhY2hlMi4yLWh0dHBk
LXdpbi5jb25mJykgICMgd2luMzIgaXNuJ3QgYSBzdXBwb3J0ZWQgc3lzLnBsYXRmb3JtLiAgQXBw
bGVXaW4vV2luQ2Fpcm8gcG9ydHMgYWxsIHVzZSBjeWd3aW4uCisgICAgICAgIHNlbGYuX2Fzc2Vy
dF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ3dpbjMyJywgJ3dpbi1odHRwZC0yLjIt
cGhwNy5jb25mJykgICMgV2luQ2Fpcm8gdXNlcyB3aW4zMi4gT25seSBBcHBsZVdpbiBwb3J0IHVz
ZXMgY3lnd2luLgogICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3Jt
KHBvcnQsICdiYXJmJywgJ2FwYWNoZTIuMi1odHRwZC5jb25mJykKIAogICAgIGRlZiB0ZXN0X3Bh
dGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L3dpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4u
cHkKaW5kZXggOTgxNDYxMzRiY2UuLjUwN2U5MzliOTFlIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC93aW4ucHkKQEAgLTQ2MywzICs0NjMsMjUgQEAgY2xhc3MgV2luQ2Fpcm9Qb3J0KFdpblBvcnQp
OgogICAgICAgICBmYWxsYmFja19uYW1lcyA9IFsnd2luY2Fpcm8tJyArIHZlcnNpb25fbmFtZV9t
YXAudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSkubG93ZXIoKS5yZXBs
YWNlKCcgJywgJycpIGZvciB2ZXJzaW9uIGluIGZhbGxiYWNrX3ZlcnNpb25zXQogICAgICAgICBm
YWxsYmFja19uYW1lcy5hcHBlbmQoJ3dpbmNhaXJvJykKICAgICAgICAgcmV0dXJuIG1hcChzZWxm
Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJhY2tfbmFtZXMpCisKKyAgICBkZWYgX3BhdGhf
dG9fYXBhY2hlKHNlbGYpOgorICAgICAgICBodHRwZFBhdGggPSBvcy5wYXRoLmpvaW4oJ0M6XFwn
LCAneGFtcHAnLCAnYXBhY2hlJywgJ2JpbicsICdodHRwZC5leGUnKQorICAgICAgICBpZiBzZWxm
Ll9maWxlc3lzdGVtLmV4aXN0cyhodHRwZFBhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGh0dHBk
UGF0aAorICAgICAgICBfbG9nLmVycm9yKCJDb3VsZCBub3QgZmluZCBhcGFjaGUuIE5vdCBpbnN0
YWxsZWQgb3IgdW5rbm93biBwYXRoLiIpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYg
Y2hlY2tfaHR0cGQoc2VsZik6CisgICAgICAgIGlmIG5vdCBzdXBlcihXaW5DYWlyb1BvcnQsIHNl
bGYpLmNoZWNrX2h0dHBkKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBo
dHRwZF9wYXRoID0gc2VsZi5fcGF0aF90b19hcGFjaGUoKQorCisgICAgICAgICMgdG8gbGF1bmNo
IGFwYWNoZSBhcyBhIGRhZW1vbiwgc2VydmljZSBpbnN0YWxsYXRpb24gaXMgcmVxdWlyZWQuCisg
ICAgICAgIGNvZGUgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoW2h0dHBkX3BhdGgsICIt
ayIsICJpbnN0YWxsIl0sIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKKyAgICAgICAgIyAwIDogc3Vj
Y2VzcywgMiA6IGFscmVhZHkgaW5zdGFsbGVkLCA3MjAwMDUgOiBwZXJtaXNzaW9uIGVycm9yCisg
ICAgICAgIGlmIGNvZGUgPT0gMCBvciBjb2RlID09IDI6CisgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorCisgICAgICAgIF9sb2cuZXJyb3IoIkh0dHBkIGNhbm5vdCBydW4gYXMgc2VydmljZS4gcGVy
aGFwcyB5b3UgZm9yZ290IHRvIGxvZyBpbiBhcyBBZG1pbnN0cmF0b3I/IikKKyAgICAgICAgcmV0
dXJuIEZhbHNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335058</attachid>
            <date>2018-03-05 17:36:38 -0800</date>
            <delta_ts>2018-03-07 14:26:39 -0800</delta_ts>
            <desc>fix</desc>
            <filename>183265.diff</filename>
            <type>text/plain</type>
            <size>11033</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZjM2NDIwNTA1OC4uOWMzOWUxOGFiZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxOC0wMy0wNSAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAg
ICAgICAgW3dlYmtpdHB5LCBXaW5DYWlyb10gTGF1bmNoIEFwYWNoZSBIVFRQRCBmb3IgSFRUUCBU
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mOiBBZGRlZC4KKwogMjAxOC0wMy0wNSAg
UnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCBhZGQgYmFzZWxpbmUgZm9yIGZhc3QvdGV4dC9jb21iaW5pbmctZW5jbG9zaW5nLWtleWNhcC5o
dG1sLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhw
Ny5jb25mIGIvTGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZjQzNWRjMjYwYwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40LXBocDcuY29u
ZgpAQCAtMCwwICsxLDE0NyBAQAorU2VydmVyUm9vdCAiQzoveGFtcHAvYXBhY2hlIgorCitQaWRG
aWxlICJjOi94YW1wcC9hcGFjaGUvbG9ncy9odHRwZC5waWQiCisKK1RpbWVvdXQgMzAwCitLZWVw
QWxpdmUgT24KK01heEtlZXBBbGl2ZVJlcXVlc3RzIDEwMAorS2VlcEFsaXZlVGltZW91dCAxNQor
CitMb2FkTW9kdWxlIGFjY2Vzc19jb21wYXRfbW9kdWxlIG1vZHVsZXMvbW9kX2FjY2Vzc19jb21w
YXQuc28KK0xvYWRNb2R1bGUgYXV0aG5fY29yZV9tb2R1bGUgbW9kdWxlcy9tb2RfYXV0aG5fY29y
ZS5zbworTG9hZE1vZHVsZSBhdXRoel9jb3JlX21vZHVsZSBtb2R1bGVzL21vZF9hdXRoel9jb3Jl
LnNvCitMb2FkTW9kdWxlIGF1dGh6X2hvc3RfbW9kdWxlIG1vZHVsZXMvbW9kX2F1dGh6X2hvc3Qu
c28KK0xvYWRNb2R1bGUgaW5jbHVkZV9tb2R1bGUgbW9kdWxlcy9tb2RfaW5jbHVkZS5zbworTG9h
ZE1vZHVsZSBsb2dfY29uZmlnX21vZHVsZSBtb2R1bGVzL21vZF9sb2dfY29uZmlnLnNvCitMb2Fk
TW9kdWxlIGhlYWRlcnNfbW9kdWxlIG1vZHVsZXMvbW9kX2hlYWRlcnMuc28KK0xvYWRNb2R1bGUg
c3NsX21vZHVsZSBtb2R1bGVzL21vZF9zc2wuc28KK0xvYWRNb2R1bGUgbWltZV9tb2R1bGUgbW9k
dWxlcy9tb2RfbWltZS5zbworTG9hZE1vZHVsZSBhc2lzX21vZHVsZSBtb2R1bGVzL21vZF9hc2lz
LnNvCitMb2FkTW9kdWxlIGNnaV9tb2R1bGUgbW9kdWxlcy9tb2RfY2dpLnNvCitMb2FkTW9kdWxl
IG5lZ290aWF0aW9uX21vZHVsZSBtb2R1bGVzL21vZF9uZWdvdGlhdGlvbi5zbworTG9hZE1vZHVs
ZSBhY3Rpb25zX21vZHVsZSBtb2R1bGVzL21vZF9hY3Rpb25zLnNvCitMb2FkTW9kdWxlIGFsaWFz
X21vZHVsZSBtb2R1bGVzL21vZF9hbGlhcy5zbworTG9hZE1vZHVsZSByZXdyaXRlX21vZHVsZSBt
b2R1bGVzL21vZF9yZXdyaXRlLnNvCitMb2FkRmlsZSAiQzoveGFtcHAvcGhwL3BocDd0cy5kbGwi
CitMb2FkRmlsZSAiQzoveGFtcHAvcGhwL2xpYnBxLmRsbCIKK0xvYWRNb2R1bGUgcGhwN19tb2R1
bGUgIkM6L3hhbXBwL3BocC9waHA3YXBhY2hlMl80LmRsbCIKKworCitTZXJ2ZXJOYW1lIDEyNy4w
LjAuMQorCis8RGlyZWN0b3J5IC8+CisgICAgT3B0aW9ucyBJbmRleGVzIEZvbGxvd1N5bUxpbmtz
IE11bHRpVmlld3MgRXhlY0NHSSBJbmNsdWRlcworICAgIEFsbG93T3ZlcnJpZGUgQWxsCisgICAg
T3JkZXIgYWxsb3csZGVueQorICAgIEFsbG93IGZyb20gYWxsCis8L0RpcmVjdG9yeT4KKworQWNj
ZXNzRmlsZU5hbWUgLmh0YWNjZXNzCisKKzxGaWxlcyB+ICJeXC4oW0hoXVtUdF18W0RkXVtTc11f
W1NzXSkiPgorICAgIE9yZGVyIGFsbG93LGRlbnkKKyAgICBEZW55IGZyb20gYWxsCisgICAgU2F0
aXNmeSBBbGwKKzwvRmlsZXM+CisKK1VzZUNhbm9uaWNhbE5hbWUgT24KK0hvc3RuYW1lTG9va3Vw
cyBPZmYKKworU2NyaXB0SW50ZXJwcmV0ZXJTb3VyY2UgUmVnaXN0cnktU3RyaWN0CisKK0xvZ0xl
dmVsIHdhcm4KKworRXJyb3JMb2cgIkM6XHhhbXBwXGFwYWNoZVxsb2dzXGVycm9yX2xvZy50eHQi
CisKK0xvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICU+cyAlYiBcIiV7UmVmZXJlcn1pXCIg
XCIle1VzZXItQWdlbnR9aVwiIiBjb21iaW5lZAorTG9nRm9ybWF0ICIlaCAlbCAldSAldCBcIiVy
XCIgJT5zICViICVEIiBjb21tb24KK0xvZ0Zvcm1hdCAiJXtSZWZlcmVyfWkgLT4gJVUiIHJlZmVy
ZXIKK0xvZ0Zvcm1hdCAiJXtVc2VyLWFnZW50fWkiIGFnZW50CisKK1NlcnZlclNpZ25hdHVyZSBP
bgorCis8SWZNb2R1bGUgbW9kX2FsaWFzLmM+Cis8L0lmTW9kdWxlPgorCis8SWZNb2R1bGUgbW9k
X21pbWUuYz4KKyAgICBBZGRMYW5ndWFnZSBkYSAuZGsKKyAgICBBZGRMYW5ndWFnZSBubCAubmwK
KyAgICBBZGRMYW5ndWFnZSBlbiAuZW4KKyAgICBBZGRMYW5ndWFnZSBldCAuZWUKKyAgICBBZGRM
YW5ndWFnZSBmciAuZnIKKyAgICBBZGRMYW5ndWFnZSBkZSAuZGUKKyAgICBBZGRMYW5ndWFnZSBl
bCAuZWwKKyAgICBBZGRMYW5ndWFnZSBoZSAuaGUKKyAgICBBZGRDaGFyc2V0IElTTy04ODU5LTgg
Lmlzbzg4NTktOAorICAgIEFkZExhbmd1YWdlIGl0IC5pdAorICAgIEFkZExhbmd1YWdlIGphIC5q
YQorICAgIEFkZENoYXJzZXQgSVNPLTIwMjItSlAgLmppcworICAgIEFkZExhbmd1YWdlIGtyIC5r
cgorICAgIEFkZENoYXJzZXQgSVNPLTIwMjItS1IgLmlzby1rcgorICAgIEFkZExhbmd1YWdlIG5u
IC5ubgorICAgIEFkZExhbmd1YWdlIG5vIC5ubworICAgIEFkZExhbmd1YWdlIHBsIC5wbworICAg
IEFkZENoYXJzZXQgSVNPLTg4NTktMiAuaXNvLXBsCisgICAgQWRkTGFuZ3VhZ2UgcHQgLnB0Cisg
ICAgQWRkTGFuZ3VhZ2UgcHQtYnIgLnB0LWJyCisgICAgQWRkTGFuZ3VhZ2UgbHR6IC5sdQorICAg
IEFkZExhbmd1YWdlIGNhIC5jYQorICAgIEFkZExhbmd1YWdlIGVzIC5lcworICAgIEFkZExhbmd1
YWdlIHN2IC5zdgorICAgIEFkZExhbmd1YWdlIGNzIC5jeiAuY3MKKyAgICBBZGRMYW5ndWFnZSBy
dSAucnUKKyAgICBBZGRMYW5ndWFnZSB6aC1UVyAuemgtdHcKKyAgICBBZGRDaGFyc2V0IEJpZzUg
ICAgICAgICAuQmlnNSAgICAuYmlnNQorICAgIEFkZENoYXJzZXQgV0lORE9XUy0xMjUxIC5jcC0x
MjUxCisgICAgQWRkQ2hhcnNldCBDUDg2NiAgICAgICAgLmNwODY2CisgICAgQWRkQ2hhcnNldCBJ
U08tODg1OS01ICAgLmlzby1ydQorICAgIEFkZENoYXJzZXQgS09JOC1SICAgICAgIC5rb2k4LXIK
KyAgICBBZGRDaGFyc2V0IFVDUy0yICAgICAgICAudWNzMgorICAgIEFkZENoYXJzZXQgVUNTLTQg
ICAgICAgIC51Y3M0CisgICAgQWRkQ2hhcnNldCBVVEYtOCAgICAgICAgLnV0ZjgKKworICAgIDxJ
Zk1vZHVsZSBtb2RfbmVnb3RpYXRpb24uYz4KKyAgICAgICAgTGFuZ3VhZ2VQcmlvcml0eSBlbiBk
YSBubCBldCBmciBkZSBlbCBpdCBqYSBrciBubyBwbCBwdCBwdC1iciBydSBsdHogY2EgZXMgc3Yg
dHcKKyAgICA8L0lmTW9kdWxlPgorCisgICAgQWRkVHlwZSBhcHBsaWNhdGlvbi94LXRhciAudGd6
CisKKyAgICBBZGRFbmNvZGluZyB4LWNvbXByZXNzIC5aCisgICAgQWRkRW5jb2RpbmcgeC1nemlw
IC5neiAudGd6CisKKyAgICBBZGRIYW5kbGVyIGNnaS1zY3JpcHQgLmNnaSAucGwKKworICAgIEFk
ZFR5cGUgdGV4dC9odG1sIC5zaHRtbAorICAgIEFkZEhhbmRsZXIgc2VydmVyLXBhcnNlZCAuc2h0
bWwKKworICAgIEFkZEhhbmRsZXIgc2VuZC1hcy1pcyBhc2lzCis8L0lmTW9kdWxlPgorCis8SWZN
b2R1bGUgbW9kX3BocDcuYz4KKyAgICBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwIC5w
aHAKKyAgICBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwIC5iYXQKKyAgICBBZGRUeXBl
IGFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwLXNvdXJjZSAucGhwcworCisgICAgPElmTW9kdWxlIG1v
ZF9kaXIuYz4KKyAgICAgICAgRGlyZWN0b3J5SW5kZXggaW5kZXguaHRtbCBpbmRleC5waHAKKyAg
ICA8L0lmTW9kdWxlPgorCisgICAgcGhwX2ZsYWcgbG9nX2Vycm9ycyBvbgorICAgIHBocF9mbGFn
IHNob3J0X29wZW5fdGFnIG9uCis8L0lmTW9kdWxlPgorCis8SWZNb2R1bGUgbW9kX3Jld3JpdGUu
Yz4KKyAgICBSZXdyaXRlRW5naW5lIE9uCisgICAgUmV3cml0ZUNvbmQgJXtSRVFVRVNUX01FVEhP
RH0gXlRSQUNFCisgICAgUmV3cml0ZVJ1bGUgLiogLSBbRl0KKzwvSWZNb2R1bGU+CisKKzxJZk1v
ZHVsZSBzc2xfbW9kdWxlPgorU1NMUmFuZG9tU2VlZCBzdGFydHVwIGJ1aWx0aW4KK1NTTFJhbmRv
bVNlZWQgY29ubmVjdCBidWlsdGluCis8L0lmTW9kdWxlPgorCis8VmlydHVhbEhvc3QgKjo4NDQz
PgorICAgIFNlcnZlck5hbWUgMTI3LjAuMC4xCisgICAgU1NMRW5naW5lIE9uCis8L1ZpcnR1YWxI
b3N0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGRlY2VkOTMzMGJlLi5hYmMyZGQzOGU1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE4LTAzLTA1ICBCYXN1a2Ug
U3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KKworICAgICAgICBbd2Via2l0cHksIFdp
bkNhaXJvXSBMYXVuY2ggQXBhY2hlIEhUVFBEIGZvciBIVFRQIFRlc3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzMjY1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weToKKyAgICAgICAgKExheW91
dFRlc3RBcGFjaGVIdHRwZC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5OgorICAgICAgICAoSHR0cFNl
cnZlckJhc2UuYWxpYXNlcyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2Uu
cHk6CisgICAgICAgIChQb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAg
ICAgICAodGVzdF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5DYWlyb1BvcnQu
ZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aCk6CisgICAgICAgIChXaW5DYWlyb1BvcnQpOgor
ICAgICAgICAoV2luQ2Fpcm9Qb3J0Ll9wYXRoX3RvX2FwYWNoZSk6CisgICAgICAgIChXaW5DYWly
b1BvcnQuY2hlY2tfaHR0cGQpOgorCiAyMDE4LTAzLTA1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgZHVtcC1jbGFzcy1sYXlvdXQgbWlzaGFuZGxlcyBk
dXBsaWNhdGVzIGJhc2UgY2xhc3NlcyBhbmQgbWlzY29tcHV0ZXMgcGFkZGluZwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0
cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2FwYWNoZV9odHRwX3NlcnZlci5weQppbmRleCBiNTIyZGM0NDlhOC4uNjE3NjViZDQwZWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBh
Y2hlX2h0dHBfc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CkBAIC0xMDEsOCArMTAxLDggQEAgY2xh
c3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2Up
OgogICAgICAgICAgICAgJy1jJywgJ1BpZEZpbGUgIiVzIicgJSBzZWxmLl9waWRfZmlsZSwKICAg
ICAgICAgICAgICctaycsICJzdGFydCJdCiAKLSAgICAgICAgZm9yIGFsaWFzIGluIHNlbGYuYWxp
YXNlcygpOgotICAgICAgICAgICAgc3RhcnRfY21kLmV4dGVuZChbJy1jJywgJ0FsaWFzICVzICIl
cyInICUgKGFsaWFzWzBdLCBhbGlhc1sxXSldKQorICAgICAgICBmb3IgKGFsaWFzLCBwYXRoKSBp
biBzZWxmLmFsaWFzZXMoKToKKyAgICAgICAgICAgIHN0YXJ0X2NtZC5leHRlbmQoWyctYycsICdB
bGlhcyAlcyAiJXMiJyAlIChhbGlhcywgcGF0aCldKQogCiAgICAgICAgIGlmIG5vdCBwb3J0X29i
ai5ob3N0LnBsYXRmb3JtLmlzX3dpbigpOgogICAgICAgICAgICAgc3RhcnRfY21kLmV4dGVuZChb
Jy1DJywgJ1VzZXIgIiVzIicgJSBvcy5lbnZpcm9uLmdldCgiVVNFUk5BTUUiLCBvcy5lbnZpcm9u
LmdldCgiVVNFUiIsICIiKSldKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CmluZGV4IDE5
YWNkN2JjNjg4Li5jM2Q0NTc5OWVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZS5weQpA
QCAtMzEsNiArMzEsNyBAQAogaW1wb3J0IGVycm5vCiBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dp
bmcKK2ltcG9ydCBvcy5wYXRoCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVt
cGZpbGUKQEAgLTE2NSwxMCArMTY2LDEwIEBAIGNsYXNzIEh0dHBTZXJ2ZXJCYXNlKG9iamVjdCk6
CiAKICAgICBkZWYgYWxpYXNlcyhzZWxmKToKICAgICAgICAganNvbl9kYXRhID0gc2VsZi5fZmls
ZXN5c3RlbS5yZWFkX3RleHRfZmlsZShzZWxmLl9wb3J0X29iai5wYXRoX2Zyb21fd2Via2l0X2Jh
c2UoIlRvb2xzIiwgIlNjcmlwdHMiLCAid2Via2l0cHkiLCAibGF5b3V0X3Rlc3RzIiwgInNlcnZl
cnMiLCAiYWxpYXNlcy5qc29uIikpCi0gICAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgICBmb3Ig
aXRlbSBpbiBqc29uLmxvYWRzKGpzb25fZGF0YSk6Ci0gICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChbaXRlbVswXSwgc2VsZi5fcG9ydF9vYmouX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3RzX2Rp
ciwgaXRlbVsxXSldKQotICAgICAgICByZXR1cm4gcmVzdWx0cworCisgICAgICAgIG1ha2VfcGF0
aCA9IGxhbWJkYSBwYXRoOiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0c19kaXIsIG9z
LnBhdGgubm9ybXBhdGgocGF0aCkpCisKKyAgICAgICAgcmV0dXJuIFsoYWxpYXMsIG1ha2VfcGF0
aChwYXRoKSkgZm9yIChhbGlhcywgcGF0aCkgaW4ganNvbi5sb2Fkcyhqc29uX2RhdGEpXQogCiAg
ICAgZGVmIF9yZW1vdmVfcGlkX2ZpbGUoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0
ZW0uZXhpc3RzKHNlbGYuX3BpZF9maWxlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkK
aW5kZXggY2ZkMTYxYWZlYjMuLjFkYTA2Yzc3ZDc4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
YmFzZS5weQpAQCAtMTI1MCw4ICsxMjUwLDEwIEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAg
ICMgV2UgcGFzcyBzeXNfcGxhdGZvcm0gaW50byB0aGlzIG1ldGhvZCB0byBtYWtlIGl0IGVhc3kg
dG8gdW5pdCB0ZXN0LgogICAgIGRlZiBfYXBhY2hlX2NvbmZpZ19maWxlX25hbWVfZm9yX3BsYXRm
b3JtKHNlbGYsIHN5c19wbGF0Zm9ybSk6Ci0gICAgICAgIGlmIHN5c19wbGF0Zm9ybSA9PSAnY3ln
d2luJyBvciBzeXNfcGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CisgICAgICAgIGlmIHN5c19w
bGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAgIHJldHVybiAnYXBhY2hlJyArIHNlbGYu
X2FwYWNoZV92ZXJzaW9uKCkgKyAnLWh0dHBkLXdpbi5jb25mJworICAgICAgICBpZiBzeXNfcGxh
dGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHJldHVybiAnd2luLWh0dHBkLScgKyBzZWxm
Ll9hcGFjaGVfdmVyc2lvbigpICsgJy1waHA3LmNvbmYnCiAgICAgICAgIGlmIHN5c19wbGF0Zm9y
bSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHJldHVybiAnYXBhY2hlJyArIHNlbGYuX2FwYWNo
ZV92ZXJzaW9uKCkgKyBzZWxmLl9kYXJ3aW5fcGhwX3ZlcnNpb24oKSArICctaHR0cGQuY29uZicK
ICAgICAgICAgaWYgc3lzX3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4IDI5MTM3OTlhNzU1Li5k
ZWJlOWVkZGQ2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRf
dGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNh
c2UucHkKQEAgLTYzNyw3ICs2MzcsNyBAQCBNT0NLIG91dHB1dCBvZiBjaGlsZCBwcm9jZXNzCiAg
ICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4
MicsICdkZWJpYW4taHR0cGQtMi4yLmNvbmYnKQogCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25m
aWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ21hYycsICdhcGFjaGUyLjItaHR0cGQuY29uZicp
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ3dp
bjMyJywgJ2FwYWNoZTIuMi1odHRwZC13aW4uY29uZicpICAjIHdpbjMyIGlzbid0IGEgc3VwcG9y
dGVkIHN5cy5wbGF0Zm9ybS4gIEFwcGxlV2luL1dpbkNhaXJvIHBvcnRzIGFsbCB1c2UgY3lnd2lu
LgorICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICd3
aW4zMicsICd3aW4taHR0cGQtMi4yLXBocDcuY29uZicpICAjIFdpbkNhaXJvIHVzZXMgd2luMzIu
IE9ubHkgQXBwbGVXaW4gcG9ydCB1c2VzIGN5Z3dpbi4KICAgICAgICAgc2VsZi5fYXNzZXJ0X2Nv
bmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnYmFyZicsICdhcGFjaGUyLjItaHR0cGQuY29u
ZicpCiAKICAgICBkZWYgdGVzdF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CmluZGV4IDk4MTQ2MTM0YmNlLi41MDdlOTM5YjkxZSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CkBAIC00NjMsMyArNDYzLDI1IEBAIGNsYXNz
IFdpbkNhaXJvUG9ydChXaW5Qb3J0KToKICAgICAgICAgZmFsbGJhY2tfbmFtZXMgPSBbJ3dpbmNh
aXJvLScgKyB2ZXJzaW9uX25hbWVfbWFwLnRvX25hbWUodmVyc2lvbiwgcGxhdGZvcm09c2VsZi5w
b3J0X25hbWUpLmxvd2VyKCkucmVwbGFjZSgnICcsICcnKSBmb3IgdmVyc2lvbiBpbiBmYWxsYmFj
a192ZXJzaW9uc10KICAgICAgICAgZmFsbGJhY2tfbmFtZXMuYXBwZW5kKCd3aW5jYWlybycpCiAg
ICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIGZhbGxiYWNrX25h
bWVzKQorCisgICAgZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKKyAgICAgICAgaHR0cGRQYXRo
ID0gb3MucGF0aC5qb2luKCdDOlxcJywgJ3hhbXBwJywgJ2FwYWNoZScsICdiaW4nLCAnaHR0cGQu
ZXhlJykKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoaHR0cGRQYXRoKToKKyAg
ICAgICAgICAgIHJldHVybiBodHRwZFBhdGgKKyAgICAgICAgX2xvZy5lcnJvcigiQ291bGQgbm90
IGZpbmQgYXBhY2hlLiBOb3QgaW5zdGFsbGVkIG9yIHVua25vd24gcGF0aC4iKQorICAgICAgICBy
ZXR1cm4gTm9uZQorCisgICAgZGVmIGNoZWNrX2h0dHBkKHNlbGYpOgorICAgICAgICBpZiBub3Qg
c3VwZXIoV2luQ2Fpcm9Qb3J0LCBzZWxmKS5jaGVja19odHRwZCgpOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICAgICAgaHR0cGRfcGF0aCA9IHNlbGYuX3BhdGhfdG9fYXBhY2hlKCkK
KworICAgICAgICAjIHRvIGxhdW5jaCBhcGFjaGUgYXMgYSBkYWVtb24sIHNlcnZpY2UgaW5zdGFs
bGF0aW9uIGlzIHJlcXVpcmVkLgorICAgICAgICBjb2RlID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFtodHRwZF9wYXRoLCAiLWsiLCAiaW5zdGFsbCJdLCByZXR1cm5fZXhpdF9jb2RlPVRy
dWUpCisgICAgICAgICMgMCA6IHN1Y2Nlc3MsIDIgOiBhbHJlYWR5IGluc3RhbGxlZCwgNzIwMDA1
IDogcGVybWlzc2lvbiBlcnJvcgorICAgICAgICBpZiBjb2RlID09IDAgb3IgY29kZSA9PSAyOgor
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBfbG9nLmVycm9yKCJIdHRwZCBjYW5u
b3QgcnVuIGFzIHNlcnZpY2UuIHBlcmhhcHMgeW91IGZvcmdvdCB0byBsb2cgaW4gYXMgQWRtaW5z
dHJhdG9yPyIpCisgICAgICAgIHJldHVybiBGYWxzZQo=
</data>
<flag name="review"
          id="353739"
          type_id="1"
          status="-"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="353740"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335222</attachid>
            <date>2018-03-07 14:26:39 -0800</date>
            <delta_ts>2018-03-08 20:56:58 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>183265-ddb38bd938585b8e021eb5bd4c7c2976d2234127.diff</filename>
            <type>text/plain</type>
            <size>16854</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NTE5N2I4MzRjZS4uZTRiMGNlYWVjYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxOC0wMy0wNyAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAg
ICAgICAgW3dlYmtpdHB5LCBXaW5DYWlyb10gTGF1bmNoIEFwYWNoZSBIVFRQRCBmb3IgSFRUUCBU
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mOiBBZGRlZC4KKwogMjAxOC0wMy0wMSAg
Um9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl1b
RFJUXSBJbXBsZW1lbnQgc2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mIGIvTGF5b3V0VGVz
dHMvaHR0cC9jb25mL3dpbi1odHRwZC0yLjQtcGhwNy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4yYjgxOTZhODhmOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvY29uZi93aW4taHR0cGQtMi40LXBocDcuY29uZgpAQCAtMCwwICsxLDE0MCBA
QAorU2VydmVyUm9vdCAiQzpceGFtcHBcYXBhY2hlIgorCitUaW1lb3V0IDMwMAorS2VlcEFsaXZl
IE9uCitNYXhLZWVwQWxpdmVSZXF1ZXN0cyAxMDAKK0tlZXBBbGl2ZVRpbWVvdXQgMTUKKworTG9h
ZE1vZHVsZSBhY2Nlc3NfY29tcGF0X21vZHVsZSBtb2R1bGVzL21vZF9hY2Nlc3NfY29tcGF0LnNv
CitMb2FkTW9kdWxlIGF1dGhuX2NvcmVfbW9kdWxlIG1vZHVsZXMvbW9kX2F1dGhuX2NvcmUuc28K
K0xvYWRNb2R1bGUgYXV0aHpfY29yZV9tb2R1bGUgbW9kdWxlcy9tb2RfYXV0aHpfY29yZS5zbwor
TG9hZE1vZHVsZSBhdXRoel9ob3N0X21vZHVsZSBtb2R1bGVzL21vZF9hdXRoel9ob3N0LnNvCitM
b2FkTW9kdWxlIGluY2x1ZGVfbW9kdWxlIG1vZHVsZXMvbW9kX2luY2x1ZGUuc28KK0xvYWRNb2R1
bGUgbG9nX2NvbmZpZ19tb2R1bGUgbW9kdWxlcy9tb2RfbG9nX2NvbmZpZy5zbworTG9hZE1vZHVs
ZSBoZWFkZXJzX21vZHVsZSBtb2R1bGVzL21vZF9oZWFkZXJzLnNvCitMb2FkTW9kdWxlIHNzbF9t
b2R1bGUgbW9kdWxlcy9tb2Rfc3NsLnNvCitMb2FkTW9kdWxlIG1pbWVfbW9kdWxlIG1vZHVsZXMv
bW9kX21pbWUuc28KK0xvYWRNb2R1bGUgYXNpc19tb2R1bGUgbW9kdWxlcy9tb2RfYXNpcy5zbwor
TG9hZE1vZHVsZSBjZ2lfbW9kdWxlIG1vZHVsZXMvbW9kX2NnaS5zbworTG9hZE1vZHVsZSBuZWdv
dGlhdGlvbl9tb2R1bGUgbW9kdWxlcy9tb2RfbmVnb3RpYXRpb24uc28KK0xvYWRNb2R1bGUgYWN0
aW9uc19tb2R1bGUgbW9kdWxlcy9tb2RfYWN0aW9ucy5zbworTG9hZE1vZHVsZSBhbGlhc19tb2R1
bGUgbW9kdWxlcy9tb2RfYWxpYXMuc28KK0xvYWRNb2R1bGUgcmV3cml0ZV9tb2R1bGUgbW9kdWxl
cy9tb2RfcmV3cml0ZS5zbworTG9hZEZpbGUgIkM6XHhhbXBwXHBocFxwaHA3dHMuZGxsIgorTG9h
ZEZpbGUgIkM6XHhhbXBwXHBocFxsaWJwcS5kbGwiCitMb2FkTW9kdWxlIHBocDdfbW9kdWxlICJD
Olx4YW1wcFxwaHBccGhwN2FwYWNoZTJfNC5kbGwiCisKKworU2VydmVyTmFtZSAxMjcuMC4wLjEK
KworPERpcmVjdG9yeSAvPgorICAgIE9wdGlvbnMgSW5kZXhlcyBGb2xsb3dTeW1MaW5rcyBNdWx0
aVZpZXdzIEV4ZWNDR0kgSW5jbHVkZXMKKyAgICBBbGxvd092ZXJyaWRlIEFsbAorICAgIE9yZGVy
IGFsbG93LGRlbnkKKyAgICBBbGxvdyBmcm9tIGFsbAorPC9EaXJlY3Rvcnk+CisKK0FjY2Vzc0Zp
bGVOYW1lIC5odGFjY2VzcworCis8RmlsZXMgfiAiXlwuKFtIaF1bVHRdfFtEZF1bU3NdX1tTc10p
Ij4KKyAgICBPcmRlciBhbGxvdyxkZW55CisgICAgRGVueSBmcm9tIGFsbAorICAgIFNhdGlzZnkg
QWxsCis8L0ZpbGVzPgorCitVc2VDYW5vbmljYWxOYW1lIE9uCitIb3N0bmFtZUxvb2t1cHMgT2Zm
CisKK1NjcmlwdEludGVycHJldGVyU291cmNlIFJlZ2lzdHJ5LVN0cmljdAorCitMb2dMZXZlbCB3
YXJuCisKK0xvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICU+cyAlYiBcIiV7UmVmZXJlcn1p
XCIgXCIle1VzZXItQWdlbnR9aVwiIiBjb21iaW5lZAorTG9nRm9ybWF0ICIlaCAlbCAldSAldCBc
IiVyXCIgJT5zICViICVEIiBjb21tb24KK0xvZ0Zvcm1hdCAiJXtSZWZlcmVyfWkgLT4gJVUiIHJl
ZmVyZXIKK0xvZ0Zvcm1hdCAiJXtVc2VyLWFnZW50fWkiIGFnZW50CisKK1NlcnZlclNpZ25hdHVy
ZSBPbgorCis8SWZNb2R1bGUgbW9kX21pbWUuYz4KKyAgICBBZGRMYW5ndWFnZSBkYSAuZGsKKyAg
ICBBZGRMYW5ndWFnZSBubCAubmwKKyAgICBBZGRMYW5ndWFnZSBlbiAuZW4KKyAgICBBZGRMYW5n
dWFnZSBldCAuZWUKKyAgICBBZGRMYW5ndWFnZSBmciAuZnIKKyAgICBBZGRMYW5ndWFnZSBkZSAu
ZGUKKyAgICBBZGRMYW5ndWFnZSBlbCAuZWwKKyAgICBBZGRMYW5ndWFnZSBoZSAuaGUKKyAgICBB
ZGRDaGFyc2V0IElTTy04ODU5LTggLmlzbzg4NTktOAorICAgIEFkZExhbmd1YWdlIGl0IC5pdAor
ICAgIEFkZExhbmd1YWdlIGphIC5qYQorICAgIEFkZENoYXJzZXQgSVNPLTIwMjItSlAgLmppcwor
ICAgIEFkZExhbmd1YWdlIGtyIC5rcgorICAgIEFkZENoYXJzZXQgSVNPLTIwMjItS1IgLmlzby1r
cgorICAgIEFkZExhbmd1YWdlIG5uIC5ubgorICAgIEFkZExhbmd1YWdlIG5vIC5ubworICAgIEFk
ZExhbmd1YWdlIHBsIC5wbworICAgIEFkZENoYXJzZXQgSVNPLTg4NTktMiAuaXNvLXBsCisgICAg
QWRkTGFuZ3VhZ2UgcHQgLnB0CisgICAgQWRkTGFuZ3VhZ2UgcHQtYnIgLnB0LWJyCisgICAgQWRk
TGFuZ3VhZ2UgbHR6IC5sdQorICAgIEFkZExhbmd1YWdlIGNhIC5jYQorICAgIEFkZExhbmd1YWdl
IGVzIC5lcworICAgIEFkZExhbmd1YWdlIHN2IC5zdgorICAgIEFkZExhbmd1YWdlIGNzIC5jeiAu
Y3MKKyAgICBBZGRMYW5ndWFnZSBydSAucnUKKyAgICBBZGRMYW5ndWFnZSB6aC1UVyAuemgtdHcK
KyAgICBBZGRDaGFyc2V0IEJpZzUgICAgICAgICAuQmlnNSAgICAuYmlnNQorICAgIEFkZENoYXJz
ZXQgV0lORE9XUy0xMjUxIC5jcC0xMjUxCisgICAgQWRkQ2hhcnNldCBDUDg2NiAgICAgICAgLmNw
ODY2CisgICAgQWRkQ2hhcnNldCBJU08tODg1OS01ICAgLmlzby1ydQorICAgIEFkZENoYXJzZXQg
S09JOC1SICAgICAgIC5rb2k4LXIKKyAgICBBZGRDaGFyc2V0IFVDUy0yICAgICAgICAudWNzMgor
ICAgIEFkZENoYXJzZXQgVUNTLTQgICAgICAgIC51Y3M0CisgICAgQWRkQ2hhcnNldCBVVEYtOCAg
ICAgICAgLnV0ZjgKKworICAgIDxJZk1vZHVsZSBtb2RfbmVnb3RpYXRpb24uYz4KKyAgICAgICAg
TGFuZ3VhZ2VQcmlvcml0eSBlbiBkYSBubCBldCBmciBkZSBlbCBpdCBqYSBrciBubyBwbCBwdCBw
dC1iciBydSBsdHogY2EgZXMgc3YgdHcKKyAgICA8L0lmTW9kdWxlPgorCisgICAgQWRkVHlwZSBh
cHBsaWNhdGlvbi94LXRhciAudGd6CisKKyAgICBBZGRFbmNvZGluZyB4LWNvbXByZXNzIC5aCisg
ICAgQWRkRW5jb2RpbmcgeC1nemlwIC5neiAudGd6CisKKyAgICBBZGRIYW5kbGVyIGNnaS1zY3Jp
cHQgLmNnaSAucGwKKworICAgIEFkZFR5cGUgdGV4dC9odG1sIC5zaHRtbAorICAgIEFkZEhhbmRs
ZXIgc2VydmVyLXBhcnNlZCAuc2h0bWwKKworICAgIEFkZEhhbmRsZXIgc2VuZC1hcy1pcyBhc2lz
Cis8L0lmTW9kdWxlPgorCis8SWZNb2R1bGUgbW9kX3BocDcuYz4KKyAgICBBZGRUeXBlIGFwcGxp
Y2F0aW9uL3gtaHR0cGQtcGhwIC5waHAKKyAgICBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQt
cGhwIC5iYXQKKyAgICBBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwLXNvdXJjZSAucGhw
cworCisgICAgPElmTW9kdWxlIG1vZF9kaXIuYz4KKyAgICAgICAgRGlyZWN0b3J5SW5kZXggaW5k
ZXguaHRtbCBpbmRleC5waHAKKyAgICA8L0lmTW9kdWxlPgorCisgICAgcGhwX2ZsYWcgbG9nX2Vy
cm9ycyBvbgorICAgIHBocF9mbGFnIHNob3J0X29wZW5fdGFnIG9uCis8L0lmTW9kdWxlPgorCis8
SWZNb2R1bGUgbW9kX3Jld3JpdGUuYz4KKyAgICBSZXdyaXRlRW5naW5lIE9uCisgICAgUmV3cml0
ZUNvbmQgJXtSRVFVRVNUX01FVEhPRH0gXlRSQUNFCisgICAgUmV3cml0ZVJ1bGUgLiogLSBbRl0K
KzwvSWZNb2R1bGU+CisKKzxJZk1vZHVsZSBzc2xfbW9kdWxlPgorU1NMUmFuZG9tU2VlZCBzdGFy
dHVwIGJ1aWx0aW4KK1NTTFJhbmRvbVNlZWQgY29ubmVjdCBidWlsdGluCis8L0lmTW9kdWxlPgor
Cis8VmlydHVhbEhvc3QgKjo4NDQzPgorICAgIFNlcnZlck5hbWUgMTI3LjAuMC4xCisgICAgU1NM
RW5naW5lIE9uCis8L1ZpcnR1YWxIb3N0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEwMWZiMjkyMGVhLi5mYjA1YTFhNjkyZCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDE4LTAzLTA3ICBCYXN1a2UgU3V6dWtpICA8QmFzdWtlLlN1enVraUBzb255LmNvbT4KKwor
ICAgICAgICBbd2Via2l0cHksIFdpbkNhaXJvXSBMYXVuY2ggQXBhY2hlIEhUVFBEIGZvciBIVFRQ
IFRlc3RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzMjY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZl
ci5weToKKyAgICAgICAgKExheW91dFRlc3RBcGFjaGVIdHRwZC5fX2luaXRfXyk6CisgICAgICAg
IChMYXlvdXRUZXN0QXBhY2hlSHR0cGQuX2NvcHlfYXBhY2hlX2NvbmZpZ19maWxlKToKKyAgICAg
ICAgKExheW91dFRlc3RBcGFjaGVIdHRwZCk6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hlSHR0
cGQucGxhdGZvcm0pOgorICAgICAgICAoTGF5b3V0VGVzdEFwYWNoZUh0dHBkLl9zcGF3bl9wcm9j
ZXNzKToKKyAgICAgICAgKExheW91dFRlc3RBcGFjaGVIdHRwZC5fc3RvcF9ydW5uaW5nX3NlcnZl
cik6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hlSHR0cGQuX3J1bik6CisgICAgICAgIChMYXlv
dXRUZXN0QXBhY2hlSHR0cGQuX3NlcnZlcl9lcnJvcik6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5OgorICAgICAgICAo
SHR0cFNlcnZlckJhc2UuYWxpYXNlcyk6CisgICAgICAgIChIdHRwU2VydmVyQmFzZSk6CisgICAg
ICAgIChIdHRwU2VydmVyQmFzZS5fcHJlcGFyZV9hbGlhc2VzKToKKyAgICAgICAgKEh0dHBTZXJ2
ZXJCYXNlLl9wcmVwYXJlX2FsaWFzZXMubWFrZV9wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2VfdW5pdHRlc3QucHk6
CisgICAgICAgIChUZXN0SHR0cFNlcnZlckJhc2UudGVzdF9jb3JydXB0X3BpZF9maWxlKToKKyAg
ICAgICAgKFRlc3RIdHRwU2VydmVyQmFzZSk6CisgICAgICAgIChUZXN0SHR0cFNlcnZlckJhc2Uu
dGVzdF9hbGlhc2VzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToK
KyAgICAgICAgKFBvcnQuX2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybSk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHk6CisgICAgICAg
ICh0ZXN0X2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybSk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weToKKyAgICAgICAgKFdpblBvcnQuX2V4cGVjdGVk
X3BhdGhfdG9fYXBhY2hlKToKKyAgICAgICAgKFdpblBvcnQuX3BhdGhfdG9fYXBhY2hlKToKKyAg
ICAgICAgKFdpbkNhaXJvUG9ydC5kZWZhdWx0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKToKKyAgICAg
ICAgKFdpbkNhaXJvUG9ydCk6CisgICAgICAgIChXaW5DYWlyb1BvcnQuY2hlY2tfaHR0cGQpOgor
CiAyMDE4LTAzLTAxICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAog
ICAgICAgICBbV2luXVtEUlRdIEltcGxlbWVudCBzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQu
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJz
L2FwYWNoZV9odHRwX3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CmluZGV4IGI1MjJkYzQ0OWE4Li5lMzMw
YWY4YWRkNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
c2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkKQEAgLTEwMSw4ICsx
MDEsOCBAQCBjbGFzcyBMYXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRw
U2VydmVyQmFzZSk6CiAgICAgICAgICAgICAnLWMnLCAnUGlkRmlsZSAiJXMiJyAlIHNlbGYuX3Bp
ZF9maWxlLAogICAgICAgICAgICAgJy1rJywgInN0YXJ0Il0KIAotICAgICAgICBmb3IgYWxpYXMg
aW4gc2VsZi5hbGlhc2VzKCk6Ci0gICAgICAgICAgICBzdGFydF9jbWQuZXh0ZW5kKFsnLWMnLCAn
QWxpYXMgJXMgIiVzIicgJSAoYWxpYXNbMF0sIGFsaWFzWzFdKV0pCisgICAgICAgIGZvciAoYWxp
YXMsIHBhdGgpIGluIHNlbGYuYWxpYXNlcygpOgorICAgICAgICAgICAgc3RhcnRfY21kLmV4dGVu
ZChbJy1jJywgJ0FsaWFzICVzICIlcyInICUgKGFsaWFzLCBwYXRoKV0pCiAKICAgICAgICAgaWYg
bm90IHBvcnRfb2JqLmhvc3QucGxhdGZvcm0uaXNfd2luKCk6CiAgICAgICAgICAgICBzdGFydF9j
bWQuZXh0ZW5kKFsnLUMnLCAnVXNlciAiJXMiJyAlIG9zLmVudmlyb24uZ2V0KCJVU0VSTkFNRSIs
IG9zLmVudmlyb24uZ2V0KCJVU0VSIiwgIiIpKV0pCkBAIC0xNjQsNyArMTY0LDcgQEAgY2xhc3Mg
TGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UpOgog
ICAgICAgICAjIEZJWE1FOiBXaHkgZG8gd2UgbmVlZCB0byBjb3B5IHRoZSBjb25maWcgZmlsZSBz
aW5jZSB3ZSdyZSBub3QgbW9kaWZ5aW5nIGl0PwogICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZShodHRwZF9jb25maWdfY29weSwgaHR0cGRfY29uZikKIAotICAgICAgICBp
ZiBzZWxmLl9wb3J0X29iai5ob3N0LnBsYXRmb3JtLmlzX2N5Z3dpbigpOgorICAgICAgICBpZiBz
ZWxmLnBsYXRmb3JtLmlzX2N5Z3dpbigpOgogICAgICAgICAgICAgIyBDb252ZXJ0IHRvIE1TRE9T
IGZpbGUgbmFtaW5nOgogICAgICAgICAgICAgcHJlY29tcGlsZWREcml2ZSA9IHJlLmNvbXBpbGUo
J14vY3lnZHJpdmUvW2NDXScpCiAgICAgICAgICAgICBodHRwZF9jb25maWdfY29weSA9IHByZWNv
bXBpbGVkRHJpdmUuc3ViKCJDOiIsIGh0dHBkX2NvbmZpZ19jb3B5KQpAQCAtMTczLDExICsxNzMs
MTUgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNl
cnZlckJhc2UpOgogCiAgICAgICAgIHJldHVybiBodHRwZF9jb25maWdfY29weQogCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIHBsYXRmb3JtKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcG9y
dF9vYmouaG9zdC5wbGF0Zm9ybQorCiAgICAgZGVmIF9zcGF3bl9wcm9jZXNzKHNlbGYpOgogICAg
ICAgICBfbG9nLmRlYnVnKCdTdGFydGluZyAlcyBzZXJ2ZXIsIGNtZD0iJXMiJyAlIChzZWxmLl9u
YW1lLCBzdHIoc2VsZi5fc3RhcnRfY21kKSkpCiAgICAgICAgIHJldHZhbCwgZXJyID0gc2VsZi5f
cnVuKHNlbGYuX3N0YXJ0X2NtZCkKICAgICAgICAgaWYgcmV0dmFsIG9yIGxlbihlcnIpOgotICAg
ICAgICAgICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFpbGVkIHRvIHN0
YXJ0ICVzOiAlcycgJSAoc2VsZi5fbmFtZSwgZXJyKSkKKyAgICAgICAgICAgIHJhaXNlIHNlbGYu
X3NlcnZlcl9lcnJvcignRmFpbGVkIHRvIHN0YXJ0ICVzJyAlIHNlbGYuX25hbWUsIGVyciwgcmV0
dmFsKQogCiAgICAgICAgICMgRm9yIHNvbWUgcmVhc29uIGFwYWNoZSBpc24ndCBndWFyYW50ZWVk
IHRvIGhhdmUgY3JlYXRlZCB0aGUgcGlkIGZpbGUgYmVmb3JlCiAgICAgICAgICMgdGhlIHByb2Nl
c3MgZXhpdHMsIHNvIHdlIHdhaXQgYSBsaXR0bGUgd2hpbGUgbG9uZ2VyLgpAQCAtMTg5LDI1ICsx
OTMsMjUgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0
cFNlcnZlckJhc2UpOgogICAgIGRlZiBfc3RvcF9ydW5uaW5nX3NlcnZlcihzZWxmKToKICAgICAg
ICAgIyBJZiBhcGFjaGUgd2FzIGZvcmNlZnVsbHkga2lsbGVkLCB0aGUgcGlkIGZpbGUgd2lsbCBu
b3QgaGF2ZSBiZWVuIGRlbGV0ZWQsIHNvIGNoZWNrCiAgICAgICAgICMgdGhhdCB0aGUgcHJvY2Vz
cyBzcGVjaWZpZWQgYnkgdGhlIHBpZF9maWxlIG5vIGxvbmdlciBleGlzdHMgYmVmb3JlIGRlbGV0
aW5nIHRoZSBmaWxlLgotICAgICAgICBpZiBzZWxmLl9waWQgYW5kIG5vdCBzZWxmLl9wb3J0X29i
ai5ob3N0LnBsYXRmb3JtLmlzX3dpbigpIGFuZCBub3Qgc2VsZi5fZXhlY3V0aXZlLmNoZWNrX3J1
bm5pbmdfcGlkKHNlbGYuX3BpZCk6CisgICAgICAgIGlmIHNlbGYuX3BpZCBhbmQgbm90IHNlbGYu
cGxhdGZvcm0uaXNfd2luKCkgYW5kIG5vdCBzZWxmLl9leGVjdXRpdmUuY2hlY2tfcnVubmluZ19w
aWQoc2VsZi5fcGlkKToKICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucmVtb3ZlKHNlbGYu
X3BpZF9maWxlKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgcmV0dmFsLCBlcnIgPSBz
ZWxmLl9ydW4oc2VsZi5fc3RvcF9jbWQpCiAKICAgICAgICAgIyBXaW5kb3dzIGh0dHBkIG91dHB1
dHMgc2h1dGRvd24gc3RhdHVzIGluIHN0ZGVycjoKLSAgICAgICAgaWYgc2VsZi5fcG9ydF9vYmou
aG9zdC5wbGF0Zm9ybS5pc193aW4oKSBhbmQgbm90IHJldHZhbCBhbmQgbGVuKGVycik6CisgICAg
ICAgIGlmIHNlbGYucGxhdGZvcm0uaXNfd2luKCkgYW5kIG5vdCByZXR2YWwgYW5kIGxlbihlcnIp
OgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnU2h1dGRvd246ICVzJyAlIGVycikKICAgICAgICAg
ICAgIGVyciA9ICIiCiAKICAgICAgICAgaWYgcmV0dmFsIG9yIGxlbihlcnIpOgotICAgICAgICAg
ICAgcmFpc2UgaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignRmFpbGVkIHRvIHN0b3AgJXM6
ICVzJyAlIChzZWxmLl9uYW1lLCBlcnIpKQorICAgICAgICAgICAgcmFpc2Ugc2VsZi5fc2VydmVy
X2Vycm9yKCdGYWlsZWQgdG8gc3RvcCAlcycgJSBzZWxmLl9uYW1lLCBlcnIsIHJldHZhbCkKIAog
ICAgICAgICAjIEZvciBzb21lIHJlYXNvbiBhcGFjaGUgaXNuJ3QgZ3VhcmFudGVlZCB0byBoYXZl
IGFjdHVhbGx5IHN0b3BwZWQgYWZ0ZXIKICAgICAgICAgIyB0aGUgc3RvcCBjb21tYW5kIHJldHVy
bnMsIHNvIHdlIHdhaXQgYSBsaXR0bGUgd2hpbGUgbG9uZ2VyIGZvciB0aGUKICAgICAgICAgIyBw
aWQgZmlsZSB0byBiZSByZW1vdmVkLgogICAgICAgICBpZiBub3Qgc2VsZi5fd2FpdF9mb3JfYWN0
aW9uKGxhbWJkYTogbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNlbGYuX3BpZF9maWxlKSk6
Ci0gICAgICAgICAgICBpZiBzZWxmLl9wb3J0X29iai5ob3N0LnBsYXRmb3JtLmlzX3dpbigpOgor
ICAgICAgICAgICAgaWYgc2VsZi5wbGF0Zm9ybS5pc193aW4oKToKICAgICAgICAgICAgICAgICBz
ZWxmLl9yZW1vdmVfcGlkX2ZpbGUoKQogICAgICAgICAgICAgICAgIHJldHVybgogCkBAIC0yMTks
MyArMjIzLDkgQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2Uu
SHR0cFNlcnZlckJhc2UpOgogICAgICAgICByZXR2YWwgPSBwcm9jZXNzLnJldHVybmNvZGUKICAg
ICAgICAgZXJyID0gcHJvY2Vzcy5zdGRlcnIucmVhZCgpCiAgICAgICAgIHJldHVybiAocmV0dmFs
LCBlcnIpCisKKyAgICBkZWYgX3NlcnZlcl9lcnJvcihzZWxmLCBtZXNzYWdlLCBlcnIsIGV4aXRf
Y29kZSk6CisgICAgICAgIGlmIHNlbGYucGxhdGZvcm0uaXNfd2luKCkgYW5kIGV4aXRfY29kZSA9
PSA3MjAwMDUgYW5kIG5vdCBlcnI6CisgICAgICAgICAgICBlcnIgPSAnQWNjZXNzIGlzIGRlbmll
ZC4gRG8geW91IGhhdmUgYW4gYWRtaW5pc3RyYXRvciBwcml2aWxlZ2RlPycKKworICAgICAgICBy
ZXR1cm4gaHR0cF9zZXJ2ZXJfYmFzZS5TZXJ2ZXJFcnJvcignJXM6ICVzIChleGl0IGNvZGU9JXMp
JyAlIChtZXNzYWdlLCBlcnIsIGV4aXRfY29kZSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2Uu
cHkKaW5kZXggMTlhY2Q3YmM2ODguLjQ1YWRhNGUwNzdjIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZl
cl9iYXNlLnB5CkBAIC0xNjUsMTAgKzE2NSwxNCBAQCBjbGFzcyBIdHRwU2VydmVyQmFzZShvYmpl
Y3QpOgogCiAgICAgZGVmIGFsaWFzZXMoc2VsZik6CiAgICAgICAgIGpzb25fZGF0YSA9IHNlbGYu
X2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoc2VsZi5fcG9ydF9vYmoucGF0aF9mcm9tX3dlYmtp
dF9iYXNlKCJUb29scyIsICJTY3JpcHRzIiwgIndlYmtpdHB5IiwgImxheW91dF90ZXN0cyIsICJz
ZXJ2ZXJzIiwgImFsaWFzZXMuanNvbiIpKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAg
Zm9yIGl0ZW0gaW4ganNvbi5sb2Fkcyhqc29uX2RhdGEpOgotICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQoW2l0ZW1bMF0sIHNlbGYuX3BvcnRfb2JqLl9maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0
c19kaXIsIGl0ZW1bMV0pXSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKKworICAgICAgICByZXR1
cm4gc2VsZi5fcHJlcGFyZV9hbGlhc2VzKGpzb24ubG9hZHMoanNvbl9kYXRhKSkKKworICAgIGRl
ZiBfcHJlcGFyZV9hbGlhc2VzKHNlbGYsIGRhdGEpOgorICAgICAgICBkZWYgbWFrZV9wYXRoKHBh
dGgpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLnRlc3Rz
X2Rpciwgc2VsZi5fZmlsZXN5c3RlbS5ub3JtcGF0aChwYXRoKSkKKworICAgICAgICByZXR1cm4g
WyhhbGlhcywgbWFrZV9wYXRoKHBhdGgpKSBmb3IgKGFsaWFzLCBwYXRoKSBpbiBkYXRhXQogCiAg
ICAgZGVmIF9yZW1vdmVfcGlkX2ZpbGUoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0
ZW0uZXhpc3RzKHNlbGYuX3BpZF9maWxlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZV91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJf
YmFzZV91bml0dGVzdC5weQppbmRleCA4YjgxYmMzOTQ1OS4uODkxMWIyNWQxMDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2
ZXJfYmFzZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2VfdW5pdHRlc3QucHkKQEAgLTU2LDMgKzU2LDIy
IEBAIGNsYXNzIFRlc3RIdHRwU2VydmVyQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICMgTm90ZSB0aGF0IHRoZSBwaWQgZmlsZSB3b3VsZCBub3QgYmUgTm9uZSBpZiBfc3Bhd25fcHJv
Y2VzcygpCiAgICAgICAgICMgd2FzIGFjdHVhbGx5IGEgcmVhbCBpbXBsZW1lbnRhdGlvbi4KICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0LmZpbGVzeXN0ZW0uZmlsZXNbc2VydmVyLl9waWRf
ZmlsZV0sIE5vbmUpCisKKyAgICBkZWYgdGVzdF9hbGlhc2VzKHNlbGYpOgorICAgICAgICBob3N0
ID0gTW9ja0hvc3QoKQorICAgICAgICB0ZXN0X3BvcnQgPSB0ZXN0LlRlc3RQb3J0KGhvc3QpCisg
ICAgICAgIHNlcnZlciA9IEh0dHBTZXJ2ZXJCYXNlKHRlc3RfcG9ydCkKKworICAgICAgICBkYXRh
ID0gWworICAgICAgICAgICAgWyIvbWVkaWEtcmVzb3VyY2VzIiwgIm1lZGlhIl0sCisgICAgICAg
ICAgICBbIi9tb2Rlcm4tbWVkaWEtY29udHJvbHMiLCAiLi4vU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2Rlcm4tbWVkaWEtY29udHJvbHMiXSwKKyAgICAgICAgICAgIFsiL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5jc3MiLCAicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcyJdLAorICAgICAgICBdCisK
KyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJy9tZWRpYS1yZXNvdXJjZXMnLCAn
L3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvbWVkaWEnKSwKKyAgICAgICAgICAgICgnL21vZGVy
bi1tZWRpYS1jb250cm9scycsICcvdGVzdC5jaGVja291dC9MYXlvdXRUZXN0cy8uLi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scycpLAorICAgICAgICAgICAgKCcv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcycsICcvdGVzdC5jaGVja291dC9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJyksCisgICAgICAgIF0KKworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlcnZlci5fcHJlcGFyZV9hbGlhc2VzKGRhdGEpLCBleHBlY3RlZCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggY2ZkMTYxYWZlYjMuLjFkYTA2Yzc3ZDc4IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMTI1MCw4ICsxMjUwLDEwIEBAIGNs
YXNzIFBvcnQob2JqZWN0KToKIAogICAgICMgV2UgcGFzcyBzeXNfcGxhdGZvcm0gaW50byB0aGlz
IG1ldGhvZCB0byBtYWtlIGl0IGVhc3kgdG8gdW5pdCB0ZXN0LgogICAgIGRlZiBfYXBhY2hlX2Nv
bmZpZ19maWxlX25hbWVfZm9yX3BsYXRmb3JtKHNlbGYsIHN5c19wbGF0Zm9ybSk6Ci0gICAgICAg
IGlmIHN5c19wbGF0Zm9ybSA9PSAnY3lnd2luJyBvciBzeXNfcGxhdGZvcm0uc3RhcnRzd2l0aCgn
d2luJyk6CisgICAgICAgIGlmIHN5c19wbGF0Zm9ybSA9PSAnY3lnd2luJzoKICAgICAgICAgICAg
IHJldHVybiAnYXBhY2hlJyArIHNlbGYuX2FwYWNoZV92ZXJzaW9uKCkgKyAnLWh0dHBkLXdpbi5j
b25mJworICAgICAgICBpZiBzeXNfcGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHJl
dHVybiAnd2luLWh0dHBkLScgKyBzZWxmLl9hcGFjaGVfdmVyc2lvbigpICsgJy1waHA3LmNvbmYn
CiAgICAgICAgIGlmIHN5c19wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHJldHVy
biAnYXBhY2hlJyArIHNlbGYuX2FwYWNoZV92ZXJzaW9uKCkgKyBzZWxmLl9kYXJ3aW5fcGhwX3Zl
cnNpb24oKSArICctaHR0cGQuY29uZicKICAgICAgICAgaWYgc3lzX3BsYXRmb3JtLnN0YXJ0c3dp
dGgoJ2xpbnV4Jyk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcG9y
dF90ZXN0Y2FzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5CmluZGV4IDI5MTM3OTlhNzU1Li5kZWJlOWVkZGQ2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTYzNyw3ICs2MzcsNyBAQCBNT0NLIG91
dHB1dCBvZiBjaGlsZCBwcm9jZXNzCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9m
b3JfcGxhdGZvcm0ocG9ydCwgJ2xpbnV4MicsICdkZWJpYW4taHR0cGQtMi4yLmNvbmYnKQogCiAg
ICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ21hYycs
ICdhcGFjaGUyLjItaHR0cGQuY29uZicpCi0gICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmls
ZV9mb3JfcGxhdGZvcm0ocG9ydCwgJ3dpbjMyJywgJ2FwYWNoZTIuMi1odHRwZC13aW4uY29uZicp
ICAjIHdpbjMyIGlzbid0IGEgc3VwcG9ydGVkIHN5cy5wbGF0Zm9ybS4gIEFwcGxlV2luL1dpbkNh
aXJvIHBvcnRzIGFsbCB1c2UgY3lnd2luLgorICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2Zp
bGVfZm9yX3BsYXRmb3JtKHBvcnQsICd3aW4zMicsICd3aW4taHR0cGQtMi4yLXBocDcuY29uZicp
ICAjIFdpbkNhaXJvIHVzZXMgd2luMzIuIE9ubHkgQXBwbGVXaW4gcG9ydCB1c2VzIGN5Z3dpbi4K
ICAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnYmFy
ZicsICdhcGFjaGUyLjItaHR0cGQuY29uZicpCiAKICAgICBkZWYgdGVzdF9wYXRoX3RvX2FwYWNo
ZV9jb25maWdfZmlsZShzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC93aW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CmluZGV4IDk4
MTQ2MTM0YmNlLi5hYTMzMjExNDIzYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5CkBA
IC0xODMsMTEgKzE4MywxNSBAQCBjbGFzcyBXaW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgZGVmIF91
c2VzX2FwYWNoZShzZWxmKToKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBfZXhwZWN0
ZWRfcGF0aF90b19hcGFjaGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVt
LmpvaW4oJ0M6XFwnLCAneGFtcHAnLCAnYXBhY2hlJywgJ2JpbicsICdodHRwZC5leGUnKQorCiAg
ICAgZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKLSAgICAgICAgaHR0cGRQYXRoID0gb3MucGF0
aC5qb2luKCdDOicsICd4YW1wcCcsICdhcGFjaGUnLCAnYmluJywgJ2h0dHBkLmV4ZScpCi0gICAg
ICAgIGlmIHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGh0dHBkUGF0aCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gaHR0cGRQYXRoCi0gICAgICAgIF9sb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFwYWNo
ZS4gTm90IGluc3RhbGxlZCBvciB1bmtub3duIHBhdGguIikKKyAgICAgICAgcGF0aCA9IHNlbGYu
X2V4cGVjdGVkX3BhdGhfdG9fYXBhY2hlKCkKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5l
eGlzdHMocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gcGF0aAorCisgICAgICAgIF9sb2cuZXJy
b3IoJ0NvdWxkIG5vdCBmaW5kIGFwYWNoZSBpbiB0aGUgZXhwZWN0ZWQgbG9jYXRpb24uIChwYXRo
PSVzKScgJSBwYXRoKQogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIF9wYXRoX3RvX2xp
Z2h0dHBkKHNlbGYpOgpAQCAtNDYzLDMgKzQ2NywyMCBAQCBjbGFzcyBXaW5DYWlyb1BvcnQoV2lu
UG9ydCk6CiAgICAgICAgIGZhbGxiYWNrX25hbWVzID0gWyd3aW5jYWlyby0nICsgdmVyc2lvbl9u
YW1lX21hcC50b19uYW1lKHZlcnNpb24sIHBsYXRmb3JtPXNlbGYucG9ydF9uYW1lKS5sb3dlcigp
LnJlcGxhY2UoJyAnLCAnJykgZm9yIHZlcnNpb24gaW4gZmFsbGJhY2tfdmVyc2lvbnNdCiAgICAg
ICAgIGZhbGxiYWNrX25hbWVzLmFwcGVuZCgnd2luY2Fpcm8nKQogICAgICAgICByZXR1cm4gbWFw
KHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoLCBmYWxsYmFja19uYW1lcykKKworICAgIGRlZiBj
aGVja19odHRwZChzZWxmKToKKyAgICAgICAgaWYgbm90IHN1cGVyKFdpbkNhaXJvUG9ydCwgc2Vs
ZikuY2hlY2tfaHR0cGQoKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHBh
dGggPSBzZWxmLl9wYXRoX3RvX2FwYWNoZSgpCisgICAgICAgIGlmIG5vdCBwYXRoOgorICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBUbyBsYXVuY2ggYXBhY2hlIGFzIGEgZGFl
bW9uLCBzZXJ2aWNlIGluc3RhbGxhdGlvbiBpcyByZXF1aXJlZC4KKyAgICAgICAgZXhpdF9jb2Rl
ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtwYXRoLCAnLWsnLCAnaW5zdGFsbCddLCBy
ZXR1cm5fZXhpdF9jb2RlPVRydWUpCisgICAgICAgICMgMD1zdWNjZXNzLCAyPWFscmVhZHkgaW5z
dGFsbGVkLCA3MjAwMDU9cGVybWlzc2lvbiBlcnJvciwgZXRjCisgICAgICAgIGlmIGV4aXRfY29k
ZSA9PSAwIG9yIGV4aXRfY29kZSA9PSAyOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAg
ICAgICBfbG9nLmVycm9yKCdIdHRwZCBjYW5ub3QgcnVuIGFzIGEgc2VydmljZS4gUGVyaGFwcyB5
b3UgZm9yZ290IHRvIGxvZyBpbiBhcyBhbiBhZG1pbnN0cmF0b3IgdXNlcj8gKGV4aXQgY29kZT0l
cyknICUgZXhpdF9jb2RlKQorICAgICAgICByZXR1cm4gRmFsc2UK
</data>
<flag name="review"
          id="353899"
          type_id="1"
          status="+"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="353900"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335390</attachid>
            <date>2018-03-08 20:56:58 -0800</date>
            <delta_ts>2018-03-09 10:48:51 -0800</delta_ts>
            <desc>FIX</desc>
            <filename>183256-ddb38bd9385.diff</filename>
            <type>text/plain</type>
            <size>17604</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4NTE5N2I4MzRjZS4uZDM0ZGIzMTIxZGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOC0wMy0wOCAgQmFzdWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAg
ICAgICAgW3dlYmtpdHB5LCBXaW5DYWlyb10gTGF1bmNoIEFwYWNoZSBIVFRQRCBmb3IgSFRUUCBU
ZXN0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MzI2NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBMYXVu
Y2ggYXBhY2hlIGh0dHBkIHNlcnZlciBmcm9tIHB5dGhvbiBzY3JpcHQgZm9yIFdpbkNhaXJvIEhU
VFAgTGF5b3V0VGVzdHMuIEJ5IG5vdywgQXBwbGVXaW4gdXNlcworICAgICAgICBDeWd3aW4gdG8g
bGF1bmNoIGh0dHBkIHNlcnZlci4gVGhpcyBwYXRjaCBlbmFibGVzIG5hdGl2ZSBXaW5kb3dzIHRv
IHJ1biBIVFRQIExheW91dFRlc3RzIGJ5IHN0YXJ0aW5nCisgICAgICAgIGFuZCBzdG9wcGluZyBo
dHRwZCBzZXJ2ZXIgZnJvbSB0aGUgc2NyaXB0LgorCisgICAgICAgICogaHR0cC9jb25mL3dpbi1o
dHRwZC0yLjQtcGhwNy5jb25mOiBBZGRlZC4KKyAgICAgICAgRm9yIFdpbkNhaXJvIGZyb20gbmF0
aXZlIFdpbmRvd3MgZW52aXJvbm1lbnQuCisKIDIwMTgtMDMtMDEgIFJvc3MgS2lyc2xpbmcgIDxy
b3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0RSVF0gSW1wbGVtZW50IHNl
dFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
Y29uZi93aW4taHR0cGQtMi40LXBocDcuY29uZiBiL0xheW91dFRlc3RzL2h0dHAvY29uZi93aW4t
aHR0cGQtMi40LXBocDcuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMmI4MTk2YTg4ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL2NvbmYv
d2luLWh0dHBkLTIuNC1waHA3LmNvbmYKQEAgLTAsMCArMSwxNDAgQEAKK1NlcnZlclJvb3QgIkM6
XHhhbXBwXGFwYWNoZSIKKworVGltZW91dCAzMDAKK0tlZXBBbGl2ZSBPbgorTWF4S2VlcEFsaXZl
UmVxdWVzdHMgMTAwCitLZWVwQWxpdmVUaW1lb3V0IDE1CisKK0xvYWRNb2R1bGUgYWNjZXNzX2Nv
bXBhdF9tb2R1bGUgbW9kdWxlcy9tb2RfYWNjZXNzX2NvbXBhdC5zbworTG9hZE1vZHVsZSBhdXRo
bl9jb3JlX21vZHVsZSBtb2R1bGVzL21vZF9hdXRobl9jb3JlLnNvCitMb2FkTW9kdWxlIGF1dGh6
X2NvcmVfbW9kdWxlIG1vZHVsZXMvbW9kX2F1dGh6X2NvcmUuc28KK0xvYWRNb2R1bGUgYXV0aHpf
aG9zdF9tb2R1bGUgbW9kdWxlcy9tb2RfYXV0aHpfaG9zdC5zbworTG9hZE1vZHVsZSBpbmNsdWRl
X21vZHVsZSBtb2R1bGVzL21vZF9pbmNsdWRlLnNvCitMb2FkTW9kdWxlIGxvZ19jb25maWdfbW9k
dWxlIG1vZHVsZXMvbW9kX2xvZ19jb25maWcuc28KK0xvYWRNb2R1bGUgaGVhZGVyc19tb2R1bGUg
bW9kdWxlcy9tb2RfaGVhZGVycy5zbworTG9hZE1vZHVsZSBzc2xfbW9kdWxlIG1vZHVsZXMvbW9k
X3NzbC5zbworTG9hZE1vZHVsZSBtaW1lX21vZHVsZSBtb2R1bGVzL21vZF9taW1lLnNvCitMb2Fk
TW9kdWxlIGFzaXNfbW9kdWxlIG1vZHVsZXMvbW9kX2FzaXMuc28KK0xvYWRNb2R1bGUgY2dpX21v
ZHVsZSBtb2R1bGVzL21vZF9jZ2kuc28KK0xvYWRNb2R1bGUgbmVnb3RpYXRpb25fbW9kdWxlIG1v
ZHVsZXMvbW9kX25lZ290aWF0aW9uLnNvCitMb2FkTW9kdWxlIGFjdGlvbnNfbW9kdWxlIG1vZHVs
ZXMvbW9kX2FjdGlvbnMuc28KK0xvYWRNb2R1bGUgYWxpYXNfbW9kdWxlIG1vZHVsZXMvbW9kX2Fs
aWFzLnNvCitMb2FkTW9kdWxlIHJld3JpdGVfbW9kdWxlIG1vZHVsZXMvbW9kX3Jld3JpdGUuc28K
K0xvYWRGaWxlICJDOlx4YW1wcFxwaHBccGhwN3RzLmRsbCIKK0xvYWRGaWxlICJDOlx4YW1wcFxw
aHBcbGlicHEuZGxsIgorTG9hZE1vZHVsZSBwaHA3X21vZHVsZSAiQzpceGFtcHBccGhwXHBocDdh
cGFjaGUyXzQuZGxsIgorCisKK1NlcnZlck5hbWUgMTI3LjAuMC4xCisKKzxEaXJlY3RvcnkgLz4K
KyAgICBPcHRpb25zIEluZGV4ZXMgRm9sbG93U3ltTGlua3MgTXVsdGlWaWV3cyBFeGVjQ0dJIElu
Y2x1ZGVzCisgICAgQWxsb3dPdmVycmlkZSBBbGwKKyAgICBPcmRlciBhbGxvdyxkZW55CisgICAg
QWxsb3cgZnJvbSBhbGwKKzwvRGlyZWN0b3J5PgorCitBY2Nlc3NGaWxlTmFtZSAuaHRhY2Nlc3MK
KworPEZpbGVzIH4gIl5cLihbSGhdW1R0XXxbRGRdW1NzXV9bU3NdKSI+CisgICAgT3JkZXIgYWxs
b3csZGVueQorICAgIERlbnkgZnJvbSBhbGwKKyAgICBTYXRpc2Z5IEFsbAorPC9GaWxlcz4KKwor
VXNlQ2Fub25pY2FsTmFtZSBPbgorSG9zdG5hbWVMb29rdXBzIE9mZgorCitTY3JpcHRJbnRlcnBy
ZXRlclNvdXJjZSBSZWdpc3RyeS1TdHJpY3QKKworTG9nTGV2ZWwgd2FybgorCitMb2dGb3JtYXQg
IiVoICVsICV1ICV0IFwiJXJcIiAlPnMgJWIgXCIle1JlZmVyZXJ9aVwiIFwiJXtVc2VyLUFnZW50
fWlcIiIgY29tYmluZWQKK0xvZ0Zvcm1hdCAiJWggJWwgJXUgJXQgXCIlclwiICU+cyAlYiAlRCIg
Y29tbW9uCitMb2dGb3JtYXQgIiV7UmVmZXJlcn1pIC0+ICVVIiByZWZlcmVyCitMb2dGb3JtYXQg
IiV7VXNlci1hZ2VudH1pIiBhZ2VudAorCitTZXJ2ZXJTaWduYXR1cmUgT24KKworPElmTW9kdWxl
IG1vZF9taW1lLmM+CisgICAgQWRkTGFuZ3VhZ2UgZGEgLmRrCisgICAgQWRkTGFuZ3VhZ2Ugbmwg
Lm5sCisgICAgQWRkTGFuZ3VhZ2UgZW4gLmVuCisgICAgQWRkTGFuZ3VhZ2UgZXQgLmVlCisgICAg
QWRkTGFuZ3VhZ2UgZnIgLmZyCisgICAgQWRkTGFuZ3VhZ2UgZGUgLmRlCisgICAgQWRkTGFuZ3Vh
Z2UgZWwgLmVsCisgICAgQWRkTGFuZ3VhZ2UgaGUgLmhlCisgICAgQWRkQ2hhcnNldCBJU08tODg1
OS04IC5pc284ODU5LTgKKyAgICBBZGRMYW5ndWFnZSBpdCAuaXQKKyAgICBBZGRMYW5ndWFnZSBq
YSAuamEKKyAgICBBZGRDaGFyc2V0IElTTy0yMDIyLUpQIC5qaXMKKyAgICBBZGRMYW5ndWFnZSBr
ciAua3IKKyAgICBBZGRDaGFyc2V0IElTTy0yMDIyLUtSIC5pc28ta3IKKyAgICBBZGRMYW5ndWFn
ZSBubiAubm4KKyAgICBBZGRMYW5ndWFnZSBubyAubm8KKyAgICBBZGRMYW5ndWFnZSBwbCAucG8K
KyAgICBBZGRDaGFyc2V0IElTTy04ODU5LTIgLmlzby1wbAorICAgIEFkZExhbmd1YWdlIHB0IC5w
dAorICAgIEFkZExhbmd1YWdlIHB0LWJyIC5wdC1icgorICAgIEFkZExhbmd1YWdlIGx0eiAubHUK
KyAgICBBZGRMYW5ndWFnZSBjYSAuY2EKKyAgICBBZGRMYW5ndWFnZSBlcyAuZXMKKyAgICBBZGRM
YW5ndWFnZSBzdiAuc3YKKyAgICBBZGRMYW5ndWFnZSBjcyAuY3ogLmNzCisgICAgQWRkTGFuZ3Vh
Z2UgcnUgLnJ1CisgICAgQWRkTGFuZ3VhZ2UgemgtVFcgLnpoLXR3CisgICAgQWRkQ2hhcnNldCBC
aWc1ICAgICAgICAgLkJpZzUgICAgLmJpZzUKKyAgICBBZGRDaGFyc2V0IFdJTkRPV1MtMTI1MSAu
Y3AtMTI1MQorICAgIEFkZENoYXJzZXQgQ1A4NjYgICAgICAgIC5jcDg2NgorICAgIEFkZENoYXJz
ZXQgSVNPLTg4NTktNSAgIC5pc28tcnUKKyAgICBBZGRDaGFyc2V0IEtPSTgtUiAgICAgICAua29p
OC1yCisgICAgQWRkQ2hhcnNldCBVQ1MtMiAgICAgICAgLnVjczIKKyAgICBBZGRDaGFyc2V0IFVD
Uy00ICAgICAgICAudWNzNAorICAgIEFkZENoYXJzZXQgVVRGLTggICAgICAgIC51dGY4CisKKyAg
ICA8SWZNb2R1bGUgbW9kX25lZ290aWF0aW9uLmM+CisgICAgICAgIExhbmd1YWdlUHJpb3JpdHkg
ZW4gZGEgbmwgZXQgZnIgZGUgZWwgaXQgamEga3Igbm8gcGwgcHQgcHQtYnIgcnUgbHR6IGNhIGVz
IHN2IHR3CisgICAgPC9JZk1vZHVsZT4KKworICAgIEFkZFR5cGUgYXBwbGljYXRpb24veC10YXIg
LnRnegorCisgICAgQWRkRW5jb2RpbmcgeC1jb21wcmVzcyAuWgorICAgIEFkZEVuY29kaW5nIHgt
Z3ppcCAuZ3ogLnRnegorCisgICAgQWRkSGFuZGxlciBjZ2ktc2NyaXB0IC5jZ2kgLnBsCisKKyAg
ICBBZGRUeXBlIHRleHQvaHRtbCAuc2h0bWwKKyAgICBBZGRIYW5kbGVyIHNlcnZlci1wYXJzZWQg
LnNodG1sCisKKyAgICBBZGRIYW5kbGVyIHNlbmQtYXMtaXMgYXNpcworPC9JZk1vZHVsZT4KKwor
PElmTW9kdWxlIG1vZF9waHA3LmM+CisgICAgQWRkVHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBo
cCAucGhwCisgICAgQWRkVHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBocCAuYmF0CisgICAgQWRk
VHlwZSBhcHBsaWNhdGlvbi94LWh0dHBkLXBocC1zb3VyY2UgLnBocHMKKworICAgIDxJZk1vZHVs
ZSBtb2RfZGlyLmM+CisgICAgICAgIERpcmVjdG9yeUluZGV4IGluZGV4Lmh0bWwgaW5kZXgucGhw
CisgICAgPC9JZk1vZHVsZT4KKworICAgIHBocF9mbGFnIGxvZ19lcnJvcnMgb24KKyAgICBwaHBf
ZmxhZyBzaG9ydF9vcGVuX3RhZyBvbgorPC9JZk1vZHVsZT4KKworPElmTW9kdWxlIG1vZF9yZXdy
aXRlLmM+CisgICAgUmV3cml0ZUVuZ2luZSBPbgorICAgIFJld3JpdGVDb25kICV7UkVRVUVTVF9N
RVRIT0R9IF5UUkFDRQorICAgIFJld3JpdGVSdWxlIC4qIC0gW0ZdCis8L0lmTW9kdWxlPgorCis8
SWZNb2R1bGUgc3NsX21vZHVsZT4KK1NTTFJhbmRvbVNlZWQgc3RhcnR1cCBidWlsdGluCitTU0xS
YW5kb21TZWVkIGNvbm5lY3QgYnVpbHRpbgorPC9JZk1vZHVsZT4KKworPFZpcnR1YWxIb3N0ICo6
ODQ0Mz4KKyAgICBTZXJ2ZXJOYW1lIDEyNy4wLjAuMQorICAgIFNTTEVuZ2luZSBPbgorPC9WaXJ0
dWFsSG9zdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAxMDFmYjI5MjBlYS4uMGZmOTVkMWE4ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxOC0wMy0wOCAgQmFz
dWtlIFN1enVraSAgPEJhc3VrZS5TdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW3dlYmtpdHB5
LCBXaW5DYWlyb10gTGF1bmNoIEFwYWNoZSBIVFRQRCBmb3IgSFRUUCBUZXN0cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzI2NQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KKworICAgICAgICBMYXVuY2ggYXBhY2hlIGh0dHBk
IHNlcnZlciBmcm9tIHB5dGhvbiBzY3JpcHQgZm9yIFdpbkNhaXJvIEhUVFAgTGF5b3V0VGVzdHMu
IEJ5IG5vdywgQXBwbGVXaW4gdXNlcworICAgICAgICBDeWd3aW4gdG8gbGF1bmNoIGh0dHBkIHNl
cnZlci4gVGhpcyBwYXRjaCBlbmFibGVzIG5hdGl2ZSBXaW5kb3dzIHRvIHJ1biBIVFRQIExheW91
dFRlc3RzIGJ5IHN0YXJ0aW5nCisgICAgICAgIGFuZCBzdG9wcGluZyBodHRwZCBzZXJ2ZXIgZnJv
bSB0aGUgc2NyaXB0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
c2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHk6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hl
SHR0cGQuX19pbml0X18pOgorICAgICAgICAoTGF5b3V0VGVzdEFwYWNoZUh0dHBkLl9jb3B5X2Fw
YWNoZV9jb25maWdfZmlsZSk6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hlSHR0cGQpOgorICAg
ICAgICAoTGF5b3V0VGVzdEFwYWNoZUh0dHBkLnBsYXRmb3JtKToKKyAgICAgICAgKExheW91dFRl
c3RBcGFjaGVIdHRwZC5fc3Bhd25fcHJvY2Vzcyk6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hl
SHR0cGQuX3N0b3BfcnVubmluZ19zZXJ2ZXIpOgorICAgICAgICAoTGF5b3V0VGVzdEFwYWNoZUh0
dHBkLl9ydW4pOgorICAgICAgICAoTGF5b3V0VGVzdEFwYWNoZUh0dHBkLl9zZXJ2ZXJfZXJyb3Ip
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9z
ZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKEh0dHBTZXJ2ZXJCYXNlLmFsaWFzZXMpOgorICAgICAg
ICAoSHR0cFNlcnZlckJhc2UpOgorICAgICAgICAoSHR0cFNlcnZlckJhc2UuX2J1aWxkX2FsaWFz
X3BhdGhfcGFpcnMpOgorICAgICAgICAoSHR0cFNlcnZlckJhc2UuX2J1aWxkX2FsaWFzX3BhdGhf
cGFpcnMuX21ha2VfcGF0aCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAoVGVzdEh0
dHBTZXJ2ZXJCYXNlLnRlc3RfY29ycnVwdF9waWRfZmlsZSk6CisgICAgICAgIChUZXN0SHR0cFNl
cnZlckJhc2UpOgorICAgICAgICAoVGVzdEh0dHBTZXJ2ZXJCYXNlLnRlc3RfYnVpbGRfYWxpYXNf
cGF0aF9wYWlycyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6Cisg
ICAgICAgIChQb3J0Ll9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAo
dGVzdF9hcGFjaGVfY29uZmlnX2ZpbGVfbmFtZV9mb3JfcGxhdGZvcm0pOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHk6CisgICAgICAgIChXaW5Qb3J0Ll9wYXRoX3RvX2Fw
YWNoZSk6CisgICAgICAgIChXaW5DYWlyb1BvcnQuZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0
aCk6CisgICAgICAgIChXaW5DYWlyb1BvcnQpOgorICAgICAgICAoV2luQ2Fpcm9Qb3J0LmNoZWNr
X2h0dHBkKToKKwogMjAxOC0wMy0wMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKICAgICAgICAgW1dpbl1bRFJUXSBJbXBsZW1lbnQgc2V0U3BhdGlhbE5hdmlnYXRp
b25FbmFibGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQppbmRleCBiNTIyZGM0
NDlhOC4uMWRmODE4ZmVlNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CkBA
IC0xMDEsOCArMTAxLDggQEAgY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVy
X2Jhc2UuSHR0cFNlcnZlckJhc2UpOgogICAgICAgICAgICAgJy1jJywgJ1BpZEZpbGUgIiVzIicg
JSBzZWxmLl9waWRfZmlsZSwKICAgICAgICAgICAgICctaycsICJzdGFydCJdCiAKLSAgICAgICAg
Zm9yIGFsaWFzIGluIHNlbGYuYWxpYXNlcygpOgotICAgICAgICAgICAgc3RhcnRfY21kLmV4dGVu
ZChbJy1jJywgJ0FsaWFzICVzICIlcyInICUgKGFsaWFzWzBdLCBhbGlhc1sxXSldKQorICAgICAg
ICBmb3IgKGFsaWFzLCBwYXRoKSBpbiBzZWxmLmFsaWFzZXMoKToKKyAgICAgICAgICAgIHN0YXJ0
X2NtZC5leHRlbmQoWyctYycsICdBbGlhcyAlcyAiJXMiJyAlIChhbGlhcywgcGF0aCldKQogCiAg
ICAgICAgIGlmIG5vdCBwb3J0X29iai5ob3N0LnBsYXRmb3JtLmlzX3dpbigpOgogICAgICAgICAg
ICAgc3RhcnRfY21kLmV4dGVuZChbJy1DJywgJ1VzZXIgIiVzIicgJSBvcy5lbnZpcm9uLmdldCgi
VVNFUk5BTUUiLCBvcy5lbnZpcm9uLmdldCgiVVNFUiIsICIiKSldKQpAQCAtMTY0LDcgKzE2NCw3
IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2
ZXJCYXNlKToKICAgICAgICAgIyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdG8gY29weSB0aGUgY29u
ZmlnIGZpbGUgc2luY2Ugd2UncmUgbm90IG1vZGlmeWluZyBpdD8KICAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoaHR0cGRfY29uZmlnX2NvcHksIGh0dHBkX2NvbmYpCiAK
LSAgICAgICAgaWYgc2VsZi5fcG9ydF9vYmouaG9zdC5wbGF0Zm9ybS5pc19jeWd3aW4oKToKKyAg
ICAgICAgaWYgc2VsZi5wbGF0Zm9ybS5pc19jeWd3aW4oKToKICAgICAgICAgICAgICMgQ29udmVy
dCB0byBNU0RPUyBmaWxlIG5hbWluZzoKICAgICAgICAgICAgIHByZWNvbXBpbGVkRHJpdmUgPSBy
ZS5jb21waWxlKCdeL2N5Z2RyaXZlL1tjQ10nKQogICAgICAgICAgICAgaHR0cGRfY29uZmlnX2Nv
cHkgPSBwcmVjb21waWxlZERyaXZlLnN1YigiQzoiLCBodHRwZF9jb25maWdfY29weSkKQEAgLTE3
MywxMSArMTczLDE1IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZlcl9i
YXNlLkh0dHBTZXJ2ZXJCYXNlKToKIAogICAgICAgICByZXR1cm4gaHR0cGRfY29uZmlnX2NvcHkK
IAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwbGF0Zm9ybShzZWxmKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3BvcnRfb2JqLmhvc3QucGxhdGZvcm0KKwogICAgIGRlZiBfc3Bhd25fcHJvY2Vzcyhz
ZWxmKToKICAgICAgICAgX2xvZy5kZWJ1ZygnU3RhcnRpbmcgJXMgc2VydmVyLCBjbWQ9IiVzIicg
JSAoc2VsZi5fbmFtZSwgc3RyKHNlbGYuX3N0YXJ0X2NtZCkpKQogICAgICAgICByZXR2YWwsIGVy
ciA9IHNlbGYuX3J1bihzZWxmLl9zdGFydF9jbWQpCiAgICAgICAgIGlmIHJldHZhbCBvciBsZW4o
ZXJyKToKLSAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0Zh
aWxlZCB0byBzdGFydCAlczogJXMnICUgKHNlbGYuX25hbWUsIGVycikpCisgICAgICAgICAgICBy
YWlzZSBzZWxmLl9zZXJ2ZXJfZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCAlcycgJSBzZWxmLl9uYW1l
LCBlcnIsIHJldHZhbCkKIAogICAgICAgICAjIEZvciBzb21lIHJlYXNvbiBhcGFjaGUgaXNuJ3Qg
Z3VhcmFudGVlZCB0byBoYXZlIGNyZWF0ZWQgdGhlIHBpZCBmaWxlIGJlZm9yZQogICAgICAgICAj
IHRoZSBwcm9jZXNzIGV4aXRzLCBzbyB3ZSB3YWl0IGEgbGl0dGxlIHdoaWxlIGxvbmdlci4KQEAg
LTE4OSwyNSArMTkzLDI1IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3NlcnZl
cl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICBkZWYgX3N0b3BfcnVubmluZ19zZXJ2ZXIoc2Vs
Zik6CiAgICAgICAgICMgSWYgYXBhY2hlIHdhcyBmb3JjZWZ1bGx5IGtpbGxlZCwgdGhlIHBpZCBm
aWxlIHdpbGwgbm90IGhhdmUgYmVlbiBkZWxldGVkLCBzbyBjaGVjawogICAgICAgICAjIHRoYXQg
dGhlIHByb2Nlc3Mgc3BlY2lmaWVkIGJ5IHRoZSBwaWRfZmlsZSBubyBsb25nZXIgZXhpc3RzIGJl
Zm9yZSBkZWxldGluZyB0aGUgZmlsZS4KLSAgICAgICAgaWYgc2VsZi5fcGlkIGFuZCBub3Qgc2Vs
Zi5fcG9ydF9vYmouaG9zdC5wbGF0Zm9ybS5pc193aW4oKSBhbmQgbm90IHNlbGYuX2V4ZWN1dGl2
ZS5jaGVja19ydW5uaW5nX3BpZChzZWxmLl9waWQpOgorICAgICAgICBpZiBzZWxmLl9waWQgYW5k
IG5vdCBzZWxmLnBsYXRmb3JtLmlzX3dpbigpIGFuZCBub3Qgc2VsZi5fZXhlY3V0aXZlLmNoZWNr
X3J1bm5pbmdfcGlkKHNlbGYuX3BpZCk6CiAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLnJl
bW92ZShzZWxmLl9waWRfZmlsZSkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHJldHZh
bCwgZXJyID0gc2VsZi5fcnVuKHNlbGYuX3N0b3BfY21kKQogCiAgICAgICAgICMgV2luZG93cyBo
dHRwZCBvdXRwdXRzIHNodXRkb3duIHN0YXR1cyBpbiBzdGRlcnI6Ci0gICAgICAgIGlmIHNlbGYu
X3BvcnRfb2JqLmhvc3QucGxhdGZvcm0uaXNfd2luKCkgYW5kIG5vdCByZXR2YWwgYW5kIGxlbihl
cnIpOgorICAgICAgICBpZiBzZWxmLnBsYXRmb3JtLmlzX3dpbigpIGFuZCBub3QgcmV0dmFsIGFu
ZCBsZW4oZXJyKToKICAgICAgICAgICAgIF9sb2cuZGVidWcoJ1NodXRkb3duOiAlcycgJSBlcnIp
CiAgICAgICAgICAgICBlcnIgPSAiIgogCiAgICAgICAgIGlmIHJldHZhbCBvciBsZW4oZXJyKToK
LSAgICAgICAgICAgIHJhaXNlIGh0dHBfc2VydmVyX2Jhc2UuU2VydmVyRXJyb3IoJ0ZhaWxlZCB0
byBzdG9wICVzOiAlcycgJSAoc2VsZi5fbmFtZSwgZXJyKSkKKyAgICAgICAgICAgIHJhaXNlIHNl
bGYuX3NlcnZlcl9lcnJvcignRmFpbGVkIHRvIHN0b3AgJXMnICUgc2VsZi5fbmFtZSwgZXJyLCBy
ZXR2YWwpCiAKICAgICAgICAgIyBGb3Igc29tZSByZWFzb24gYXBhY2hlIGlzbid0IGd1YXJhbnRl
ZWQgdG8gaGF2ZSBhY3R1YWxseSBzdG9wcGVkIGFmdGVyCiAgICAgICAgICMgdGhlIHN0b3AgY29t
bWFuZCByZXR1cm5zLCBzbyB3ZSB3YWl0IGEgbGl0dGxlIHdoaWxlIGxvbmdlciBmb3IgdGhlCiAg
ICAgICAgICMgcGlkIGZpbGUgdG8gYmUgcmVtb3ZlZC4KICAgICAgICAgaWYgbm90IHNlbGYuX3dh
aXRfZm9yX2FjdGlvbihsYW1iZGE6IG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9w
aWRfZmlsZSkpOgotICAgICAgICAgICAgaWYgc2VsZi5fcG9ydF9vYmouaG9zdC5wbGF0Zm9ybS5p
c193aW4oKToKKyAgICAgICAgICAgIGlmIHNlbGYucGxhdGZvcm0uaXNfd2luKCk6CiAgICAgICAg
ICAgICAgICAgc2VsZi5fcmVtb3ZlX3BpZF9maWxlKCkKICAgICAgICAgICAgICAgICByZXR1cm4K
IApAQCAtMjE5LDMgKzIyMyw4IEBAIGNsYXNzIExheW91dFRlc3RBcGFjaGVIdHRwZChodHRwX3Nl
cnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgcmV0dmFsID0gcHJvY2Vzcy5yZXR1
cm5jb2RlCiAgICAgICAgIGVyciA9IHByb2Nlc3Muc3RkZXJyLnJlYWQoKQogICAgICAgICByZXR1
cm4gKHJldHZhbCwgZXJyKQorCisgICAgZGVmIF9zZXJ2ZXJfZXJyb3Ioc2VsZiwgbWVzc2FnZSwg
c3RkZXJyX291dHB1dCwgZXhpdF9jb2RlKToKKyAgICAgICAgaWYgc2VsZi5wbGF0Zm9ybS5pc193
aW4oKSBhbmQgZXhpdF9jb2RlID09IDcyMDAwNSBhbmQgbm90IHN0ZGVycl9vdXRwdXQ6CisgICAg
ICAgICAgICBzdGRlcnJfb3V0cHV0ID0gJ0FjY2VzcyBpcyBkZW5pZWQuIERvIHlvdSBoYXZlIGFk
bWluaXN0cmF0b3IgcHJpdmlsZWdlPycKKyAgICAgICAgcmV0dXJuIGh0dHBfc2VydmVyX2Jhc2Uu
U2VydmVyRXJyb3IoJ3t9OiB7fSAoZXhpdCBjb2RlPXt9KScuZm9ybWF0KG1lc3NhZ2UsIHN0ZGVy
cl9vdXRwdXQsIGV4aXRfY29kZSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXgg
MTlhY2Q3YmM2ODguLjVmYjFkYzc5MDQyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5
CkBAIC0xNjQsMTEgKzE2NCwxNSBAQCBjbGFzcyBIdHRwU2VydmVyQmFzZShvYmplY3QpOgogICAg
ICMgVXRpbGl0eSByb3V0aW5lcy4KIAogICAgIGRlZiBhbGlhc2VzKHNlbGYpOgorICAgICAgICAi
IiJSZXR1cm4gcGF0aCBwYWlycyB1c2VkIHRvIGRlZmluZSBhbGlhc2VzLiBGaXJzdCBpdGVtIGlz
IFVSTCBwYXRoIGFuZCBzZWNvbmQKKyAgICAgICAgb25lIGlzIGFjdHVhbCBsb2NhdGlvbiBpbiB0
aGUgZmlsZSBzeXN0ZW0uIiIiCiAgICAgICAgIGpzb25fZGF0YSA9IHNlbGYuX2ZpbGVzeXN0ZW0u
cmVhZF90ZXh0X2ZpbGUoc2VsZi5fcG9ydF9vYmoucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCJUb29s
cyIsICJTY3JpcHRzIiwgIndlYmtpdHB5IiwgImxheW91dF90ZXN0cyIsICJzZXJ2ZXJzIiwgImFs
aWFzZXMuanNvbiIpKQotICAgICAgICByZXN1bHRzID0gW10KLSAgICAgICAgZm9yIGl0ZW0gaW4g
anNvbi5sb2Fkcyhqc29uX2RhdGEpOgotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoW2l0ZW1b
MF0sIHNlbGYuX3BvcnRfb2JqLl9maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0c19kaXIsIGl0ZW1b
MV0pXSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxk
X2FsaWFzX3BhdGhfcGFpcnMoanNvbi5sb2Fkcyhqc29uX2RhdGEpKQorCisgICAgZGVmIF9idWls
ZF9hbGlhc19wYXRoX3BhaXJzKHNlbGYsIGRhdGEpOgorICAgICAgICBkZWYgX21ha2VfcGF0aChw
YXRoKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi50ZXN0
c19kaXIsIHNlbGYuX2ZpbGVzeXN0ZW0ubm9ybXBhdGgocGF0aCkpCisgICAgICAgIHJldHVybiBb
KGFsaWFzLCBfbWFrZV9wYXRoKHBhdGgpKSBmb3IgKGFsaWFzLCBwYXRoKSBpbiBkYXRhXQogCiAg
ICAgZGVmIF9yZW1vdmVfcGlkX2ZpbGUoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0
ZW0uZXhpc3RzKHNlbGYuX3BpZF9maWxlKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZV91bml0dGVzdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJf
YmFzZV91bml0dGVzdC5weQppbmRleCA4YjgxYmMzOTQ1OS4uZjM0NGIwMWU2YWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2
ZXJfYmFzZV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2VfdW5pdHRlc3QucHkKQEAgLTU2LDMgKzU2LDIy
IEBAIGNsYXNzIFRlc3RIdHRwU2VydmVyQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
ICMgTm90ZSB0aGF0IHRoZSBwaWQgZmlsZSB3b3VsZCBub3QgYmUgTm9uZSBpZiBfc3Bhd25fcHJv
Y2VzcygpCiAgICAgICAgICMgd2FzIGFjdHVhbGx5IGEgcmVhbCBpbXBsZW1lbnRhdGlvbi4KICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0LmZpbGVzeXN0ZW0uZmlsZXNbc2VydmVyLl9waWRf
ZmlsZV0sIE5vbmUpCisKKyAgICBkZWYgdGVzdF9idWlsZF9hbGlhc19wYXRoX3BhaXJzKHNlbGYp
OgorICAgICAgICBob3N0ID0gTW9ja0hvc3QoKQorICAgICAgICB0ZXN0X3BvcnQgPSB0ZXN0LlRl
c3RQb3J0KGhvc3QpCisgICAgICAgIHNlcnZlciA9IEh0dHBTZXJ2ZXJCYXNlKHRlc3RfcG9ydCkK
KworICAgICAgICBkYXRhID0gWworICAgICAgICAgICAgWycvbWVkaWEtcmVzb3VyY2VzJywgJ21l
ZGlhJ10sCisgICAgICAgICAgICBbJy9tb2Rlcm4tbWVkaWEtY29udHJvbHMnLCAnLi4vU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29udHJvbHMnXSwKKyAgICAgICAgICAgIFsn
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5jc3MnLCAncmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcydd
LAorICAgICAgICBdCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJy9tZWRp
YS1yZXNvdXJjZXMnLCAnL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvbWVkaWEnKSwKKyAgICAg
ICAgICAgICgnL21vZGVybi1tZWRpYS1jb250cm9scycsICcvdGVzdC5jaGVja291dC9MYXlvdXRU
ZXN0cy8uLi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVybi1tZWRpYS1jb250cm9scycpLAor
ICAgICAgICAgICAgKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmNzcycsICcvdGVzdC5jaGVja291
dC9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJyksCisgICAgICAgIF0KKwor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5fYnVpbGRfYWxpYXNfcGF0aF9wYWlycyhk
YXRhKSwgZXhwZWN0ZWQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
YmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CmluZGV4IGNmZDE2
MWFmZWIzLi4xZGEwNmM3N2Q3OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAg
LTEyNTAsOCArMTI1MCwxMCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICAjIFdlIHBhc3Mg
c3lzX3BsYXRmb3JtIGludG8gdGhpcyBtZXRob2QgdG8gbWFrZSBpdCBlYXN5IHRvIHVuaXQgdGVz
dC4KICAgICBkZWYgX2FwYWNoZV9jb25maWdfZmlsZV9uYW1lX2Zvcl9wbGF0Zm9ybShzZWxmLCBz
eXNfcGxhdGZvcm0pOgotICAgICAgICBpZiBzeXNfcGxhdGZvcm0gPT0gJ2N5Z3dpbicgb3Igc3lz
X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgICAgICBpZiBzeXNfcGxhdGZvcm0gPT0g
J2N5Z3dpbic6CiAgICAgICAgICAgICByZXR1cm4gJ2FwYWNoZScgKyBzZWxmLl9hcGFjaGVfdmVy
c2lvbigpICsgJy1odHRwZC13aW4uY29uZicKKyAgICAgICAgaWYgc3lzX3BsYXRmb3JtID09ICd3
aW4zMic6CisgICAgICAgICAgICByZXR1cm4gJ3dpbi1odHRwZC0nICsgc2VsZi5fYXBhY2hlX3Zl
cnNpb24oKSArICctcGhwNy5jb25mJwogICAgICAgICBpZiBzeXNfcGxhdGZvcm0gPT0gJ2Rhcndp
bic6CiAgICAgICAgICAgICByZXR1cm4gJ2FwYWNoZScgKyBzZWxmLl9hcGFjaGVfdmVyc2lvbigp
ICsgc2VsZi5fZGFyd2luX3BocF92ZXJzaW9uKCkgKyAnLWh0dHBkLmNvbmYnCiAgICAgICAgIGlm
IHN5c19wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQppbmRleCAyOTEzNzk5YTc1NS4uZGViZTllZGRkNmYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CkBAIC02
MzcsNyArNjM3LDcgQEAgTU9DSyBvdXRwdXQgb2YgY2hpbGQgcHJvY2VzcwogICAgICAgICBzZWxm
Ll9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICdsaW51eDInLCAnZGViaWFu
LWh0dHBkLTIuMi5jb25mJykKIAogICAgICAgICBzZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9y
X3BsYXRmb3JtKHBvcnQsICdtYWMnLCAnYXBhY2hlMi4yLWh0dHBkLmNvbmYnKQotICAgICAgICBz
ZWxmLl9hc3NlcnRfY29uZmlnX2ZpbGVfZm9yX3BsYXRmb3JtKHBvcnQsICd3aW4zMicsICdhcGFj
aGUyLjItaHR0cGQtd2luLmNvbmYnKSAgIyB3aW4zMiBpc24ndCBhIHN1cHBvcnRlZCBzeXMucGxh
dGZvcm0uICBBcHBsZVdpbi9XaW5DYWlybyBwb3J0cyBhbGwgdXNlIGN5Z3dpbi4KKyAgICAgICAg
c2VsZi5fYXNzZXJ0X2NvbmZpZ19maWxlX2Zvcl9wbGF0Zm9ybShwb3J0LCAnd2luMzInLCAnd2lu
LWh0dHBkLTIuMi1waHA3LmNvbmYnKSAgIyBXaW5DYWlybyB1c2VzIHdpbjMyLiBPbmx5IEFwcGxl
V2luIHBvcnQgdXNlcyBjeWd3aW4uCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jb25maWdfZmlsZV9m
b3JfcGxhdGZvcm0ocG9ydCwgJ2JhcmYnLCAnYXBhY2hlMi4yLWh0dHBkLmNvbmYnKQogCiAgICAg
ZGVmIHRlc3RfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd2luLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3dpbi5weQppbmRleCA5ODE0NjEzNGJjZS4uNGEzZDQ1M2JlMTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3dpbi5weQpAQCAtMTg0LDEwICsxODQsMTEgQEAgY2xhc3MgV2luUG9ydChB
cHBsZVBvcnQpOgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNo
ZShzZWxmKToKLSAgICAgICAgaHR0cGRQYXRoID0gb3MucGF0aC5qb2luKCdDOicsICd4YW1wcCcs
ICdhcGFjaGUnLCAnYmluJywgJ2h0dHBkLmV4ZScpCi0gICAgICAgIGlmIHNlbGYuX2ZpbGVzeXN0
ZW0uZXhpc3RzKGh0dHBkUGF0aCk6Ci0gICAgICAgICAgICByZXR1cm4gaHR0cGRQYXRoCi0gICAg
ICAgIF9sb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFwYWNoZS4gTm90IGluc3RhbGxlZCBvciB1
bmtub3duIHBhdGguIikKKyAgICAgICAgcm9vdCA9IG9zLmVudmlyb24uZ2V0KCdYQU1QUF9ST09U
JywgJ0M6XFx4YW1wcCcpCisgICAgICAgIHBhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4ocm9v
dCwgJ2FwYWNoZScsICdiaW4nLCAnaHR0cGQuZXhlJykKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5
c3RlbS5leGlzdHMocGF0aCk6CisgICAgICAgICAgICByZXR1cm4gcGF0aAorICAgICAgICBfbG9n
LmVycm9yKCdDb3VsZCBub3QgZmluZCBhcGFjaGUgaW4gdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiAo
cGF0aD0lcyknICUgcGF0aCkKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBfcGF0aF90
b19saWdodHRwZChzZWxmKToKQEAgLTQ2MywzICs0NjQsMTkgQEAgY2xhc3MgV2luQ2Fpcm9Qb3J0
KFdpblBvcnQpOgogICAgICAgICBmYWxsYmFja19uYW1lcyA9IFsnd2luY2Fpcm8tJyArIHZlcnNp
b25fbmFtZV9tYXAudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1zZWxmLnBvcnRfbmFtZSkubG93
ZXIoKS5yZXBsYWNlKCcgJywgJycpIGZvciB2ZXJzaW9uIGluIGZhbGxiYWNrX3ZlcnNpb25zXQog
ICAgICAgICBmYWxsYmFja19uYW1lcy5hcHBlbmQoJ3dpbmNhaXJvJykKICAgICAgICAgcmV0dXJu
IG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgZmFsbGJhY2tfbmFtZXMpCisKKyAgICBk
ZWYgY2hlY2tfaHR0cGQoc2VsZik6CisgICAgICAgIGlmIG5vdCBzdXBlcihXaW5DYWlyb1BvcnQs
IHNlbGYpLmNoZWNrX2h0dHBkKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAg
ICBwYXRoID0gc2VsZi5fcGF0aF90b19hcGFjaGUoKQorICAgICAgICBpZiBub3QgcGF0aDoKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgVG8gbGF1bmNoIEFwYWNoZSBhcyBh
IGRhZW1vbiwgc2VydmljZSBpbnN0YWxsYXRpb24gaXMgcmVxdWlyZWQuCisgICAgICAgIGV4aXRf
Y29kZSA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbcGF0aCwgJy1rJywgJ2luc3RhbGwn
LCAnLVQnXSwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQorICAgICAgICAjIDA9c3VjY2VzcywgMj1h
bHJlYWR5IGluc3RhbGxlZCwgNzIwMDA1PXBlcm1pc3Npb24gZXJyb3IsIGV0Yy4KKyAgICAgICAg
aWYgZXhpdF9jb2RlID09IDAgb3IgZXhpdF9jb2RlID09IDI6CisgICAgICAgICAgICByZXR1cm4g
VHJ1ZQorICAgICAgICBfbG9nLmVycm9yKCdIdHRwZCBjYW5ub3QgcnVuIGFzIGEgc2VydmljZS4g
UGVyaGFwcyB5b3UgZm9yZ290IHRvIGxvZyBpbiBhcyBhbiBhZG1pbnN0cmF0b3IgdXNlcj8gKGV4
aXQgY29kZT0lcyknICUgZXhpdF9jb2RlKQorICAgICAgICByZXR1cm4gRmFsc2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>