<?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>221982</bug_id>
          
          <creation_ts>2021-02-16 11:45:31 -0800</creation_ts>
          <short_desc>Add support for syncing repo with commit revision label</short_desc>
          <delta_ts>2021-06-14 11:31:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>222897</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhifei Fang">zhifei_fang</reporter>
          <assigned_to name="Zhifei Fang">zhifei_fang</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>darin</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>jbedard</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zhifei_fang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1729835</commentid>
    <comment_count>0</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-02-16 11:45:31 -0800</bug_when>
    <thetext>Add support for syncing repo with commit identifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729849</commentid>
    <comment_count>1</comment_count>
      <attachid>420515</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-02-16 11:54:18 -0800</bug_when>
    <thetext>Created attachment 420515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729887</commentid>
    <comment_count>2</comment_count>
      <attachid>420515</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-16 13:10:14 -0800</bug_when>
    <thetext>Comment on attachment 420515
Patch

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

&gt; Websites/perf.webkit.org/tools/sync-commits.py:263
&gt; +    IDENTIFIER_RE = re.compile(r&apos;Canonical link: https://commits.webkit.org/([\d]+@[a-zA-Z\s\-_]+)\n&apos;)

Use lowercase and prefix with _ to be consistent with other code in this file.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:284
&gt; +        identifier = self.IDENTIFIER_RE.search(message).group(1)

Please use named group: ?P&lt;~&gt;

&gt; Websites/perf.webkit.org/tools/sync-commits.py:290
&gt; +        res = {

Please don&apos;t abbreviate result / response as &quot;res&quot;.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:298
&gt; +        if previous_identifier:
&gt; +            res[&apos;previousCommit&apos;] = previous_identifier

Please just always put previousCommit as we do in GitRepository&apos;s version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729889</commentid>
    <comment_count>3</comment_count>
      <attachid>420515</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-02-16 13:12:55 -0800</bug_when>
    <thetext>Comment on attachment 420515
Patch

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

&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:298
&gt;&gt; +            res[&apos;previousCommit&apos;] = previous_identifier
&gt; 
&gt; Please just always put previousCommit as we do in GitRepository&apos;s version.

This doesn&apos;t work for the first commit, please see validate_commits, it will validate the revision if the key exist. Either I change the API or change it here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729922</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-16 13:50:40 -0800</bug_when>
    <thetext>(In reply to Zhifei Fang from comment #3)
&gt; Comment on attachment 420515 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420515&amp;action=review
&gt; 
&gt; &gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:298
&gt; &gt;&gt; +            res[&apos;previousCommit&apos;] = previous_identifier
&gt; &gt; 
&gt; &gt; Please just always put previousCommit as we do in GitRepository&apos;s version.
&gt; 
&gt; This doesn&apos;t work for the first commit, please see validate_commits, it will
&gt; validate the revision if the key exist. Either I change the API or change it
&gt; here

That seems to suggest that GitRepository._revision_from_tokens is also broken? I suggest we fix the API to allow null being specified in the previousCommit (with a test). It&apos;s awkward to disallow null there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729923</commentid>
    <comment_count>5</comment_count>
      <attachid>420515</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-02-16 13:51:55 -0800</bug_when>
    <thetext>Comment on attachment 420515
Patch

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

&gt;&gt;&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:298
&gt;&gt;&gt;&gt; +            res[&apos;previousCommit&apos;] = previous_identifier
&gt;&gt;&gt; 
&gt;&gt;&gt; Please just always put previousCommit as we do in GitRepository&apos;s version.
&gt;&gt; 
&gt;&gt; This doesn&apos;t work for the first commit, please see validate_commits, it will validate the revision if the key exist. Either I change the API or change it here
&gt; 
&gt; That seems to suggest that GitRepository._revision_from_tokens is also broken? I suggest we fix the API to allow null being specified in the previousCommit (with a test). It&apos;s awkward to disallow null there.

Yes... OK, I will change the API then</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729961</commentid>
    <comment_count>6</comment_count>
      <attachid>420545</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-02-16 14:57:07 -0800</bug_when>
    <thetext>Created attachment 420545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729975</commentid>
    <comment_count>7</comment_count>
      <attachid>420545</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-16 15:18:05 -0800</bug_when>
    <thetext>Comment on attachment 420545
Patch

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

&gt; Websites/perf.webkit.org/public/include/commit-updater.php:158
&gt; -        require_format(&apos;Revision&apos;, $commit_info[&apos;revision&apos;], &apos;/^[A-Za-z0-9 \.]+$/&apos;);
&gt; +        require_format(&apos;Revision&apos;, $commit_info[&apos;revision&apos;], &apos;/^[@A-Za-z0-9 \.]+$/&apos;);

I don&apos;t think this is quite right. We don&apos;t want to allow arbitrary number of @s.
We should be using a similar expression to the one in sync-commits.py

&gt; Websites/perf.webkit.org/public/include/commit-updater.php:161
&gt; +        if (array_key_exists(&apos;previousCommit&apos;, $commit_info) &amp;&amp; $commit_info[&apos;previousCommit&apos;])

Please add a test. Also, doesn&apos;t this allow previousCommit of 0 or false to be treated like null?
I think we should probably use is_null here or === NULL.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:263
&gt; +    _IDENTIFIER_RE = re.compile(r&apos;Canonical link: https://commits.webkit.org/(?P&lt;identifier&gt;[\d]+@[a-zA-Z\s\-_]+)\n&apos;)

Use lowercase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729992</commentid>
    <comment_count>8</comment_count>
      <attachid>420545</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-02-16 15:42:47 -0800</bug_when>
    <thetext>Comment on attachment 420545
Patch

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

&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:263
&gt;&gt; +    _IDENTIFIER_RE = re.compile(r&apos;Canonical link: https://commits.webkit.org/(?P&lt;identifier&gt;[\d]+@[a-zA-Z\s\-_]+)\n&apos;)
&gt; 
&gt; Use lowercase?

If this is meant to be a constant, I think python PEP8 recommends it to be all upper case per https://www.python.org/dev/peps/pep-0008/#constants</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729998</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-16 15:51:26 -0800</bug_when>
    <thetext>(In reply to dewei_zhu from comment #8)
&gt; Comment on attachment 420545 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420545&amp;action=review
&gt; 
&gt; &gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:263
&gt; &gt;&gt; +    _IDENTIFIER_RE = re.compile(r&apos;Canonical link: https://commits.webkit.org/(?P&lt;identifier&gt;[\d]+@[a-zA-Z\s\-_]+)\n&apos;)
&gt; &gt; 
&gt; &gt; Use lowercase?
&gt; 
&gt; If this is meant to be a constant, I think python PEP8 recommends it to be
&gt; all upper case per https://www.python.org/dev/peps/pep-0008/#constants

Huh, I&apos;m pretty sure we used not to do that but I guess we&apos;re doing that now. Okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729999</commentid>
    <comment_count>10</comment_count>
      <attachid>420545</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-16 15:51:56 -0800</bug_when>
    <thetext>Comment on attachment 420545
Patch

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

&gt;&gt;&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:263
&gt;&gt;&gt;&gt; +    _IDENTIFIER_RE = re.compile(r&apos;Canonical link: https://commits.webkit.org/(?P&lt;identifier&gt;[\d]+@[a-zA-Z\s\-_]+)\n&apos;)
&gt;&gt;&gt; 
&gt;&gt;&gt; Use lowercase?
&gt;&gt; 
&gt;&gt; If this is meant to be a constant, I think python PEP8 recommends it to be all upper case per https://www.python.org/dev/peps/pep-0008/#constants
&gt; 
&gt; Huh, I&apos;m pretty sure we used not to do that but I guess we&apos;re doing that now. Okay.

It should probably be IDENTIFIER_PATTERN in that case per PEP8 style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730654</commentid>
    <comment_count>11</comment_count>
      <attachid>420762</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-02-17 17:02:16 -0800</bug_when>
    <thetext>Created attachment 420762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730657</commentid>
    <comment_count>12</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-02-17 17:03:32 -0800</bug_when>
    <thetext>I will add unit test in another patch, will also need firstly update the unit test to make it can work with up to date nodejs

(In reply to Ryosuke Niwa from comment #7)
&gt; Comment on attachment 420545 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=420545&amp;action=review
&gt; 
&gt; &gt; Websites/perf.webkit.org/public/include/commit-updater.php:158
&gt; &gt; -        require_format(&apos;Revision&apos;, $commit_info[&apos;revision&apos;], &apos;/^[A-Za-z0-9 \.]+$/&apos;);
&gt; &gt; +        require_format(&apos;Revision&apos;, $commit_info[&apos;revision&apos;], &apos;/^[@A-Za-z0-9 \.]+$/&apos;);
&gt; 
&gt; I don&apos;t think this is quite right. We don&apos;t want to allow arbitrary number
&gt; of @s.
&gt; We should be using a similar expression to the one in sync-commits.py
&gt; 
&gt; &gt; Websites/perf.webkit.org/public/include/commit-updater.php:161
&gt; &gt; +        if (array_key_exists(&apos;previousCommit&apos;, $commit_info) &amp;&amp; $commit_info[&apos;previousCommit&apos;])
&gt; 
&gt; Please add a test. Also, doesn&apos;t this allow previousCommit of 0 or false to
&gt; be treated like null?
&gt; I think we should probably use is_null here or === NULL.
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:263
&gt; &gt; +    _IDENTIFIER_RE = re.compile(r&apos;Canonical link: https://commits.webkit.org/(?P&lt;identifier&gt;[\d]+@[a-zA-Z\s\-_]+)\n&apos;)
&gt; 
&gt; Use lowercase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730696</commentid>
    <comment_count>13</comment_count>
    <who name="">dewei_zhu</who>
    <bug_when>2021-02-17 18:21:03 -0800</bug_when>
    <thetext>Maybe we want to land the change that fixes unit tests to be compatible with newer version of nodejs first.

I think it would be cleaner to keep the fix and the unit tests those are associated with the fix under the same patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1730717</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-17 19:49:05 -0800</bug_when>
    <thetext>(In reply to dewei_zhu from comment #13)
&gt; Maybe we want to land the change that fixes unit tests to be compatible with
&gt; newer version of nodejs first.
&gt; 
&gt; I think it would be cleaner to keep the fix and the unit tests those are
&gt; associated with the fix under the same patch.

Yes, we should do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732634</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-23 11:46:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/74653254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1739034</commentid>
    <comment_count>16</comment_count>
      <attachid>423083</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-03-12 14:31:04 -0800</bug_when>
    <thetext>Created attachment 423083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745927</commentid>
    <comment_count>17</comment_count>
      <attachid>423083</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-03-31 19:36:50 -0700</bug_when>
    <thetext>Comment on attachment 423083
Patch

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

r- because I don&apos;t think we want to land this as is.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:46
&gt; +        return GitRepository(name=repository[&apos;name&apos;], git_url=repository[&apos;url&apos;], git_checkout=repository[&apos;gitCheckout&apos;], git_branch=repository.get(&apos;branch&apos;), fetch_revision_label=repository.get(&quot;fetchRevisionLabel&quot;, False))

This isn&apos;t right. We aren&apos;t really fetching anything.
If anything this is really about whether repository has revision identifier or not.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:194
&gt; +    REVISION_LABEL_RE = re.compile(r&apos;Canonical link: https://commits.webkit.org/(?P&lt;revision_label&gt;\d+@\S+)\n&apos;)

I don&apos;t think it&apos;s right that we&apos;re hard-coding into the script.
This script is supposed to work with any repository.
This should probably be specified in fetch_revision_label in the config file.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:245
&gt; +        if self._fetch_revision_label:
&gt; +            revision_label = self.REVISION_LABEL_RE.search(message).group(&apos;revision_label&apos;)
&gt; +            result[&apos;revisionLabel&apos;] = revision_label

This is unnecessarily complex. Given our API is perfectly capable of accepting null, we should just do this:
&apos;revisionIdentifier&apos;: ~</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748213</commentid>
    <comment_count>18</comment_count>
      <attachid>425478</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-07 22:36:29 -0700</bug_when>
    <thetext>Created attachment 425478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748220</commentid>
    <comment_count>19</comment_count>
      <attachid>425478</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-04-08 00:25:30 -0700</bug_when>
    <thetext>Comment on attachment 425478
Patch

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

&gt; Websites/perf.webkit.org/tools/sync-commits.py:198
&gt; +    def __init__(self, name, git_checkout, git_url, git_branch=None, revision_identifier=False):

`revision_identifier` sounds like it an identifier, but it&apos;s actually a boolean. So how about `include_revision_identifier`?
Also, do we expect changes on `load_repository` ?
Stepping back a bit, do we really need this variable? Can we always include `revisionIdentifier` when it&apos;s available rather than using this flag?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748364</commentid>
    <comment_count>20</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-08 11:00:45 -0700</bug_when>
    <thetext>(In reply to dewei_zhu from comment #19)
&gt; Comment on attachment 425478 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425478&amp;action=review
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:198
&gt; &gt; +    def __init__(self, name, git_checkout, git_url, git_branch=None, revision_identifier=False):
&gt; 
&gt; `revision_identifier` sounds like it an identifier, but it&apos;s actually a
&gt; boolean. So how about `include_revision_identifier`?
&gt; Also, do we expect changes on `load_repository` ?
&gt; Stepping back a bit, do we really need this variable? Can we always include
&gt; `revisionIdentifier` when it&apos;s available rather than using this flag?

I did this because this code will be shared with other git repo, it won&apos;t include this in the commit message, running regular expression against something that I know it won&apos;t exist will be a waste of time. I think I should rename this to get_revision_identifier_from_commit_message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748366</commentid>
    <comment_count>21</comment_count>
      <attachid>425522</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-08 11:03:41 -0700</bug_when>
    <thetext>Created attachment 425522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750271</commentid>
    <comment_count>22</comment_count>
      <attachid>426029</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 12:17:18 -0700</bug_when>
    <thetext>Created attachment 426029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750279</commentid>
    <comment_count>23</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 12:29:10 -0700</bug_when>
    <thetext>Any further comments about this ?

I have made this script raise an error when we cannot find the revision identifier, I know our API is smart enough to handle if we have revision identifier or not, but the real issue is if we expected there is a revision identifier but we never find it, there must be a issue in our infra, the commit with out revision identifier will be rewrite, this will gives us a new git hash. I think we should not report this bad commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750283</commentid>
    <comment_count>24</comment_count>
      <attachid>426032</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 12:35:15 -0700</bug_when>
    <thetext>Created attachment 426032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750285</commentid>
    <comment_count>25</comment_count>
      <attachid>426034</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 12:36:35 -0700</bug_when>
    <thetext>Created attachment 426034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750286</commentid>
    <comment_count>26</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 12:38:00 -0700</bug_when>
    <thetext>Also, add the sync option for the SVN as well, we currently still sync with SVN instead of the git repo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750375</commentid>
    <comment_count>27</comment_count>
      <attachid>426034</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-14 15:22:31 -0700</bug_when>
    <thetext>Comment on attachment 426034
Patch

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

&gt; Websites/perf.webkit.org/tools/sync-commits.py:21
&gt; +# Canonical link: https://commits.webkit.org/https://commits.webkit.org/232477@main
&gt; +REVISION_IDENTIFIER_RE = re.compile(r&apos;Canonical link: (https://commits.webkit.org/)+(?P&lt;revision_identifier&gt;\d+@[\w\.\-]+)\n&apos;)

Surely, you meant `(https://commits.webkit.org/)?`, not (~)+.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:131
&gt; -    def __init__(self, name, svn_url, should_trust_certificate, use_server_auth, account_name_script_path):
&gt; +    def __init__(self, name, svn_url, should_trust_certificate, use_server_auth, account_name_script_path, get_revision_identifier_from_commit_msg):

I&apos;d call this report_revision_identifier_in_commit_msg instead.
But it doesn&apos;t seem like this is ever set?

&gt; Websites/perf.webkit.org/tools/sync-commits.py:171
&gt; +            if revision_identifier_match:

WebKit&apos;s preferred way of structuring code like this is to put unusual path as an early return.
So we should have `if not revision_identifier_match` then raise and shouldn&apos;t have any else clause.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:177
&gt; +                # one useless. If we detect this, we should not report this commit.

This comment is very wordy. It&apos;s probably better this information in the exception itself.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:178
&gt; +                raise ValueError(&apos;Expected commit message includes revision identifier, but cannot find it&apos;)

Something like this:
`Expected commit message includes revision identifier, but did not find - may have been caused by a history rewrite`

&gt; Websites/perf.webkit.org/tools/sync-commits.py:255
&gt; +            if revision_identifier_match:

Ditto.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:258
&gt; +                # This is due to we may have sync error for the commit, if we don&apos;t have the revision

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750425</commentid>
    <comment_count>28</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 17:20:20 -0700</bug_when>
    <thetext>
(In reply to Ryosuke Niwa from comment #27)
&gt; Comment on attachment 426034 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426034&amp;action=review
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:21
&gt; &gt; +# Canonical link: https://commits.webkit.org/https://commits.webkit.org/232477@main
&gt; &gt; +REVISION_IDENTIFIER_RE = re.compile(r&apos;Canonical link: (https://commits.webkit.org/)+(?P&lt;revision_identifier&gt;\d+@[\w\.\-]+)\n&apos;)
&gt; 
&gt; Surely, you meant `(https://commits.webkit.org/)?`, not (~)+.
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:131
&gt; &gt; -    def __init__(self, name, svn_url, should_trust_certificate, use_server_auth, account_name_script_path):
&gt; &gt; +    def __init__(self, name, svn_url, should_trust_certificate, use_server_auth, account_name_script_path, get_revision_identifier_from_commit_msg):
&gt; 
&gt; I&apos;d call this report_revision_identifier_in_commit_msg instead.
&gt; But it doesn&apos;t seem like this is ever set?
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:171
&gt; &gt; +            if revision_identifier_match:
&gt; 
&gt; WebKit&apos;s preferred way of structuring code like this is to put unusual path
&gt; as an early return.
&gt; So we should have `if not revision_identifier_match` then raise and
&gt; shouldn&apos;t have any else clause.
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:177
&gt; &gt; +                # one useless. If we detect this, we should not report this commit.
&gt; 
&gt; This comment is very wordy. It&apos;s probably better this information in the
&gt; exception itself.
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:178
&gt; &gt; +                raise ValueError(&apos;Expected commit message includes revision identifier, but cannot find it&apos;)
&gt; 
&gt; Something like this:
&gt; `Expected commit message includes revision identifier, but did not find -
&gt; may have been caused by a history rewrite`

OK, but this won&apos;t be caused by a history rewrite, we will need a history rewrite to fix this, therefore this commit is invalid after that rewrite.

I will change this to something like: 
`Expected commit message includes revision identifier, but did not find - need a history rewrite to fix it`
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:255
&gt; &gt; +            if revision_identifier_match:
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:258
&gt; &gt; +                # This is due to we may have sync error for the commit, if we don&apos;t have the revision
&gt; 
&gt; Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750460</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-14 20:16:37 -0700</bug_when>
    <thetext>(In reply to Zhifei Fang from comment #28)
&gt; (In reply to Ryosuke Niwa from comment #27)
&gt; &gt; Comment on attachment 426034 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=426034&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:21
&gt; &gt; &gt; +# Canonical link: https://commits.webkit.org/https://commits.webkit.org/232477@main
&gt; &gt; &gt; +REVISION_IDENTIFIER_RE = re.compile(r&apos;Canonical link: (https://commits.webkit.org/)+(?P&lt;revision_identifier&gt;\d+@[\w\.\-]+)\n&apos;)
&gt; &gt; 
&gt; &gt; Surely, you meant `(https://commits.webkit.org/)?`, not (~)+.
&gt; &gt; 
&gt; &gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:131
&gt; &gt; &gt; -    def __init__(self, name, svn_url, should_trust_certificate, use_server_auth, account_name_script_path):
&gt; &gt; &gt; +    def __init__(self, name, svn_url, should_trust_certificate, use_server_auth, account_name_script_path, get_revision_identifier_from_commit_msg):
&gt; &gt; 
&gt; &gt; I&apos;d call this report_revision_identifier_in_commit_msg instead.
&gt; &gt; But it doesn&apos;t seem like this is ever set?
&gt; &gt; 
&gt; &gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:171
&gt; &gt; &gt; +            if revision_identifier_match:
&gt; &gt; 
&gt; &gt; WebKit&apos;s preferred way of structuring code like this is to put unusual path
&gt; &gt; as an early return.
&gt; &gt; So we should have `if not revision_identifier_match` then raise and
&gt; &gt; shouldn&apos;t have any else clause.
&gt; &gt; 
&gt; &gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:177
&gt; &gt; &gt; +                # one useless. If we detect this, we should not report this commit.
&gt; &gt; 
&gt; &gt; This comment is very wordy. It&apos;s probably better this information in the
&gt; &gt; exception itself.
&gt; &gt; 
&gt; &gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:178
&gt; &gt; &gt; +                raise ValueError(&apos;Expected commit message includes revision identifier, but cannot find it&apos;)
&gt; &gt; 
&gt; &gt; Something like this:
&gt; &gt; `Expected commit message includes revision identifier, but did not find -
&gt; &gt; may have been caused by a history rewrite`
&gt; 
&gt; OK, but this won&apos;t be caused by a history rewrite, we will need a history
&gt; rewrite to fix this, therefore this commit is invalid after that rewrite.
&gt; 
&gt; I will change this to something like: 
&gt; `Expected commit message includes revision identifier, but did not find -
&gt; need a history rewrite to fix it`

I see, yeah, that&apos;s a way clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750481</commentid>
    <comment_count>30</comment_count>
      <attachid>426074</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 22:03:43 -0700</bug_when>
    <thetext>Created attachment 426074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1750482</commentid>
    <comment_count>31</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-14 22:05:32 -0700</bug_when>
    <thetext>After test I find that in the SVN repo we won&apos;t include the revision identifier, so we will need to report SVN revision and revision identifier from the git repo.

After we switch everything to git only, just switch off the new option I added, it will sync with git hash again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751208</commentid>
    <comment_count>32</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-04-16 13:17:18 -0700</bug_when>
    <thetext>Any more comments ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751398</commentid>
    <comment_count>33</comment_count>
      <attachid>426074</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-17 01:08:48 -0700</bug_when>
    <thetext>Comment on attachment 426074
Patch

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

Sorry for the delay. I got caught up with other things.

&gt; Websites/perf.webkit.org/ChangeLog:2
&gt; +2021-04-14  Zhifei Fang  &lt;zhifei_fang@apple.com&gt;
&gt; +Add support for syncing repo with commit revision label

Something went awfully wrong with this change log entry.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:39
&gt;          for repository in repositories:
&gt; -            try:
&gt;                  repository.fetch_commits_and_submit(server_config, args.max_fetch_count, args.max_ancestor_fetch_count)

Nit: wrong indentation.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:47
&gt; -        return GitRepository(name=repository[&apos;name&apos;], git_url=repository[&apos;url&apos;], git_checkout=repository[&apos;gitCheckout&apos;], git_branch=repository.get(&apos;branch&apos;))
&gt; +        return GitRepository(name=repository[&apos;name&apos;], git_url=repository[&apos;url&apos;], git_checkout=repository[&apos;gitCheckout&apos;], git_branch=repository.get(&apos;branch&apos;), report_revision_identifier_in_commit_msg=repository.get(&apos;reportRevisionIdentifier&apos;), report_svn_revison=repository.get(&apos;reportSVNRevision&apos;))

This line is way too long!
Please insert a hard line break somewhere.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:212
&gt; +                # translate the last svn revision to git hash

This kind of &quot;what&quot; comment is a code smell.
We should be extracting this logic as a helper method instead.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:216
&gt; +                last_fetched_git_hash = self._run_git_command([&apos;svn&apos;, &apos;find-rev&apos;, &apos;r{}&apos;.format(last_fetched)]).strip()
&gt; +                if not last_fetched_git_hash:
&gt; +                    self._fetch_all_hashes()
&gt; +                    last_fetched_git_hash = self._run_git_command([&apos;svn&apos;, &apos;find-rev&apos;, &apos;r{}&apos;.format(last_fetched)]).strip()

What is this retry logic about? When is this useful?

&gt; Websites/perf.webkit.org/tools/sync-commits.py:219
&gt; +                last_fetched = last_fetched_git_hash

Why are we updating last_fetched? This is just wrong.
last_fetched comes from the server, it&apos;s nothing to do with the local state of git clone or git svn state.
This script is meant to be fault tolerant, meaning that if the script had failed / got killed mid way,
it can continue syncing the commit info from where it left off.
r- because of this.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:235
&gt; +    def _get_svn_revision_from_message(self, message):

Nit: our coding style guidelines mandates that we do not prefix a getter function with &quot;get&quot; unless it has an out argument.
Here, it should read _svn_revision_from_commit_message instead
https://webkit.org/code-style-guidelines/#names-out-argument

&gt; Websites/perf.webkit.org/tools/sync-commits.py:239
&gt; +        if svn_revision_match:
&gt; +            return svn_revision_match.group(&apos;svn_revision&apos;)
&gt; +        return None

We prefer early exit over nested if. i.e. normal flow of logic should continue.
So this should read:
if not svn_revision_match:
    return None
return svn_revision_match.group(&apos;svn_revision&apos;)

or better yet:
return svn_revision_match.group(&apos;svn_revision&apos;) if svn_revision_match else None

&gt; Websites/perf.webkit.org/tools/sync-commits.py:260
&gt; +            svn_revision = self._get_svn_revision_from_message(message)

Why are we parsing subversion revision from git commit?
Can&apos;t we just run git svn find-rev instead?
It can convert git hash to subversion revision as well as subversion to git hash.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:269
&gt; +            &apos;revision&apos;: current_hash if not svn_revision else svn_revision,
&gt; +            &apos;revisionIdentifier&apos;: revision_identifier,
&gt; +            &apos;previousCommit&apos;: previous_hash if not previous_revision else previous_revision,

This isn&apos;t right. We can&apos;t switch between git hashes and revisions in a single repository.
That would cause all sorts of havoc down the line.
We should instead error and exit if _report_svn_revision is specified but we didn&apos;t find a subversion information.
r- because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756326</commentid>
    <comment_count>34</comment_count>
      <attachid>427603</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-03 14:31:07 -0700</bug_when>
    <thetext>Created attachment 427603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756332</commentid>
    <comment_count>35</comment_count>
      <attachid>427603</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-03 14:41:05 -0700</bug_when>
    <thetext>Comment on attachment 427603
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:3
&gt; +2021-04-14  Zhifei Fang  &lt;zhifei_fang@apple.com&gt;
&gt; +Add support for syncing repo with commit revision label
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=221982

This is not formatted correctly.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:21
&gt; +REVISION_IDENTIFIER_RE = re.compile(r&apos;Canonical link: (https://commits.webkit.org/)+(?P&lt;revision_identifier&gt;\d+@[\w\.\-]+)\n&apos;)

I believe the period characters in &quot;commits.webkig.org&quot; are going to compile as single character wild cards, not periods, right? I am pretty sure that is not what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756340</commentid>
    <comment_count>36</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-03 15:41:11 -0700</bug_when>
    <thetext>ah, good catch!

(In reply to Darin Adler from comment #35)
&gt; Comment on attachment 427603 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427603&amp;action=review
&gt; 
&gt; &gt; Websites/perf.webkit.org/ChangeLog:3
&gt; &gt; +2021-04-14  Zhifei Fang  &lt;zhifei_fang@apple.com&gt;
&gt; &gt; +Add support for syncing repo with commit revision label
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=221982
&gt; 
&gt; This is not formatted correctly.
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:21
&gt; &gt; +REVISION_IDENTIFIER_RE = re.compile(r&apos;Canonical link: (https://commits.webkit.org/)+(?P&lt;revision_identifier&gt;\d+@[\w\.\-]+)\n&apos;)
&gt; 
&gt; I believe the period characters in &quot;commits.webkig.org&quot; are going to compile
&gt; as single character wild cards, not periods, right? I am pretty sure that is
&gt; not what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756350</commentid>
    <comment_count>37</comment_count>
      <attachid>427610</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-03 16:01:00 -0700</bug_when>
    <thetext>Created attachment 427610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756356</commentid>
    <comment_count>38</comment_count>
      <attachid>427610</attachid>
    <who name="">dewei_zhu</who>
    <bug_when>2021-05-03 16:20:08 -0700</bug_when>
    <thetext>Comment on attachment 427610
Patch

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

&gt; Websites/perf.webkit.org/ChangeLog:9
&gt; +        Add new syncing option reportSVNRevision, which will let the script try to report SVN revision from a git-svn repo

Nit: missing &apos;.&apos; by the end of this sentence.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:38
&gt;                  repository.fetch_commits_and_submit(server_config, args.max_fetch_count, args.max_ancestor_fetch_count)

Do we need to change the indentation if we remove `try - except` block?
Also, is the idea of removing those to stop the script if any error occurs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756390</commentid>
    <comment_count>39</comment_count>
      <attachid>427610</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-03 17:27:49 -0700</bug_when>
    <thetext>Comment on attachment 427610
Patch

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

&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:38
&gt;&gt;                  repository.fetch_commits_and_submit(server_config, args.max_fetch_count, args.max_ancestor_fetch_count)
&gt; 
&gt; Do we need to change the indentation if we remove `try - except` block?
&gt; Also, is the idea of removing those to stop the script if any error occurs?

I don&apos;t think we want to make this change.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:46
&gt; -        return GitRepository(name=repository[&apos;name&apos;], git_url=repository[&apos;url&apos;], git_checkout=repository[&apos;gitCheckout&apos;], git_branch=repository.get(&apos;branch&apos;))
&gt; +        return GitRepository(name=repository[&apos;name&apos;], git_url=repository[&apos;url&apos;], git_checkout=repository[&apos;gitCheckout&apos;], git_branch=repository.get(&apos;branch&apos;), report_revision_identifier_in_commit_msg=repository.get(&apos;reportRevisionIdentifier&apos;), report_svn_revison=repository.get(&apos;reportSVNRevision&apos;))

Please insert a line break somewhere. This is awfully long.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:211
&gt; +                # translate the last svn revision to git hash

Rather than adding a comment like this, we should move the code inside this if block as a helper method:
_fetch_git_hash_from_svn_revision

&gt; Websites/perf.webkit.org/tools/sync-commits.py:214
&gt; +                    self._fetch_all_hashes()

I don&apos;t think we want to tokenize the entire history just because we&apos;re missing a few subversion revisions.
Just run git svn fetch instead.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:217
&gt; +                        raise ValueError(&apos;Cannot find git hash for last fetched svn revision&apos;)

Cannot find *the* git hash for *the* last fetched svn revision.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:234
&gt; +    def _git_hash_to_svn_revision(self, git_hash):

To be consistent, call this _svn_revision_from_git_hash

&gt; Websites/perf.webkit.org/tools/sync-commits.py:237
&gt; +    def _svn_revision_to_git_hash(self, revision):

And _git_hash_from_svn_revision

&gt; Websites/perf.webkit.org/tools/sync-commits.py:253
&gt; +                raise ValueError(&apos;Expected commit message includes revision identifier, but cannot find it, will need a history rewrite to fix it&apos;)

Expected commit message *to include* a revision identifier but did not find one. Need a history rewrite to fix it.
&quot;cannot find&quot; doesn&apos;t sound right because it&apos;s not like we failed to fetch the commit message.
Also, we need to end the sentence after &quot;find one&quot;. It&apos;s a run-on sentence as is.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:257
&gt; +        svn_revision = None
&gt; +        previous_revision = None

I don&apos;t think there is a need to define a new set of local variables.
Just rename the existing variables to current_revision &amp; previous_revision
since &quot;revision&quot; is the term we&apos;re using in the perf dashboard.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:261
&gt; +                raise ValueError(&apos;Expected this is a git svn repo, but cannot find SVN revison for {}&apos;.format(svn_revision))

I don&apos;t think there is any need to say we expected this to be a git svn repository.
Just say &quot;Cannot find svn revision for X.
Also, we should be including current_hash, not svn_revision, which is what we couldn&apos;t figure out.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:265
&gt; +                    raise ValueError(&apos;Expected this is a git svn repo, but cannot find SVN revison for {}&apos;.format(previous_hash))

Ditto.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:269
&gt; +            &apos;revision&apos;: current_hash if not svn_revision else svn_revision,

We don&apos;t want to rely on the value of revision we found to determine whether we use hash vs. revision.
This can lead to bugs like submitting hash when we should be submitting a revision
when _git_hash_to_svn_revision starts returning falsey values or some code change is made above
such that we don&apos;t always set a value to svn_revision when self._report_svn_revision is set.
Instead, check the value of self._report_svn_revision directly or merge these two variables as I suggested above.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:271
&gt; +            &apos;previousCommit&apos;: previous_hash if not previous_revision else previous_revision,

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756673</commentid>
    <comment_count>40</comment_count>
      <attachid>427699</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 14:20:09 -0700</bug_when>
    <thetext>Created attachment 427699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756687</commentid>
    <comment_count>41</comment_count>
      <attachid>427699</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 15:19:25 -0700</bug_when>
    <thetext>Comment on attachment 427699
Patch

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

r-. Please add all my comments above and below.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:-38
&gt; -            try:
&gt;                  repository.fetch_commits_and_submit(server_config, args.max_fetch_count, args.max_ancestor_fetch_count)
&gt; -            except Exception as error:
&gt; -                print &quot;Failed to fetch and sync:&quot;, error

Again, I don&apos;t think we want to make this change.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:48
&gt; +        return GitRepository(name=repository[&apos;name&apos;], git_url=repository[&apos;url&apos;], git_checkout=repository[&apos;gitCheckout&apos;],
&gt; +                             git_branch=repository.get(&apos;branch&apos;), report_revision_identifier_in_commit_msg=repository.get(&apos;reportRevisionIdentifier&apos;),
&gt; +                             report_svn_revison=repository.get(&apos;reportSVNRevision&apos;))

Nit: wrong indentation. Despite of what PEP8 says, we don&apos;t align arguments.
We always indent by 4 spaces instead.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:214
&gt; +                # translate the last svn revision to git hash
&gt; +                last_fetched_git_hash = self._git_hash_from_svn_revision(last_fetched)

Again, this should be extracted as a helper method instead of adding a comment.

&gt; Websites/perf.webkit.org/tools/sync-commits.py:216
&gt; +                    self._fetch_remote()

Again, we don&apos;t want to fetch all git commits just because we can&apos;t find some svn revisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756695</commentid>
    <comment_count>42</comment_count>
      <attachid>427699</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-05-04 15:50:16 -0700</bug_when>
    <thetext>Comment on attachment 427699
Patch

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

&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:216
&gt;&gt; +                    self._fetch_remote()
&gt; 
&gt; Again, we don&apos;t want to fetch all git commits just because we can&apos;t find some svn revisions.

I&apos;m not sure I understand the objection here. If we fail to find the git hash from the provided Svn revision, we clearly need to update our checkout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756696</commentid>
    <comment_count>43</comment_count>
      <attachid>427699</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 15:52:09 -0700</bug_when>
    <thetext>Comment on attachment 427699
Patch

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

&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:216
&gt;&gt; +                    self._fetch_remote()
&gt; 
&gt; Again, we don&apos;t want to fetch all git commits just because we can&apos;t find some svn revisions.

I don&apos;t understand here, if we cannot find it at the first time, this means we don&apos;t have it locally, we should pull the remote to get the commits. this happens when you have a git repo out of sync with database. In such case, if we don&apos;t fetch the remote, you can find nothing by using git svn</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756697</commentid>
    <comment_count>44</comment_count>
      <attachid>427699</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 15:53:45 -0700</bug_when>
    <thetext>Comment on attachment 427699
Patch

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

&gt;&gt;&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:216
&gt;&gt;&gt;&gt; +                    self._fetch_remote()
&gt;&gt;&gt; 
&gt;&gt;&gt; Again, we don&apos;t want to fetch all git commits just because we can&apos;t find some svn revisions.
&gt;&gt; 
&gt;&gt; I&apos;m not sure I understand the objection here. If we fail to find the git hash from the provided Svn revision, we clearly need to update our checkout.
&gt; 
&gt; I don&apos;t understand here, if we cannot find it at the first time, this means we don&apos;t have it locally, we should pull the remote to get the commits. this happens when you have a git repo out of sync with database. In such case, if we don&apos;t fetch the remote, you can find nothing by using git svn

Oh, sorry, I misread the code. This new code is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756698</commentid>
    <comment_count>45</comment_count>
      <attachid>427705</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 15:55:13 -0700</bug_when>
    <thetext>Created attachment 427705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756740</commentid>
    <comment_count>46</comment_count>
      <attachid>427699</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 17:45:15 -0700</bug_when>
    <thetext>Comment on attachment 427699
Patch

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

&gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:214
&gt;&gt; +                last_fetched_git_hash = self._git_hash_from_svn_revision(last_fetched)
&gt; 
&gt; Again, this should be extracted as a helper method instead of adding a comment.

Not really understand what should be extracted as a helper method, Do you mean translate the svn revision to git hash ? That is already a function. Or do you mean the line from 214 to 220? If so I am also confused, I think you have suggested me that we should not make any functions if there is only one caller, it will have some potential callers in future. And the logic here seems have no other caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756743</commentid>
    <comment_count>47</comment_count>
      <attachid>427715</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 17:46:27 -0700</bug_when>
    <thetext>Created attachment 427715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756765</commentid>
    <comment_count>48</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 18:52:19 -0700</bug_when>
    <thetext>(In reply to Zhifei Fang from comment #46)
&gt; Comment on attachment 427699 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427699&amp;action=review
&gt; 
&gt; &gt;&gt; Websites/perf.webkit.org/tools/sync-commits.py:214
&gt; &gt;&gt; +                last_fetched_git_hash = self._git_hash_from_svn_revision(last_fetched)
&gt; &gt; 
&gt; &gt; Again, this should be extracted as a helper method instead of adding a comment.
&gt; 
&gt; Not really understand what should be extracted as a helper method, Do you
&gt; mean translate the svn revision to git hash ? That is already a function. Or
&gt; do you mean the line from 214 to 220? If so I am also confused, I think you
&gt; have suggested me that we should not make any functions if there is only one
&gt; caller, it will have some potential callers in future. And the logic here
&gt; seems have no other caller.

Lines 217 through 224. Either that should be extracted as a helper method or the comment should be removed. It&apos;s not okay to add a &quot;what&quot; comment like that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756766</commentid>
    <comment_count>49</comment_count>
      <attachid>427715</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 18:52:36 -0700</bug_when>
    <thetext>Comment on attachment 427715
Patch

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

&gt; Websites/perf.webkit.org/tools/sync-commits.py:217
&gt; +                # translate the last svn revision to git hash

This comment should be either removed or the following code should be extracted as a helper method.
r- because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756768</commentid>
    <comment_count>50</comment_count>
      <attachid>427723</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 18:53:33 -0700</bug_when>
    <thetext>Created attachment 427723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756769</commentid>
    <comment_count>51</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 18:54:01 -0700</bug_when>
    <thetext>Removed.
(In reply to Ryosuke Niwa from comment #49)
&gt; Comment on attachment 427715 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427715&amp;action=review
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:217
&gt; &gt; +                # translate the last svn revision to git hash
&gt; 
&gt; This comment should be either removed or the following code should be
&gt; extracted as a helper method.
&gt; r- because of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756774</commentid>
    <comment_count>52</comment_count>
      <attachid>427723</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 18:58:25 -0700</bug_when>
    <thetext>Comment on attachment 427723
Patch

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

&gt; Websites/perf.webkit.org/tools/sync-commits.py:240
&gt; +        return self._run_git_command([&apos;svn&apos;, &apos;find-rev&apos;, &apos;{}&apos;.format(git_hash)]).strip()

What is the point of calling format on &apos;{}&apos;? Why isn&apos;t this simply git_hash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756776</commentid>
    <comment_count>53</comment_count>
      <attachid>427726</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 19:00:08 -0700</bug_when>
    <thetext>Created attachment 427726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756778</commentid>
    <comment_count>54</comment_count>
      <attachid>427726</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 19:02:26 -0700</bug_when>
    <thetext>Comment on attachment 427726
Patch

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

&gt; Websites/perf.webkit.org/tools/sync-commits.py:266
&gt; +                raise ValueError(&apos;Cannot find SVN revison for {}&apos;.format(current_revision))

This should be current_hash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756789</commentid>
    <comment_count>55</comment_count>
      <attachid>427728</attachid>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-04 20:06:15 -0700</bug_when>
    <thetext>Created attachment 427728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1756822</commentid>
    <comment_count>56</comment_count>
      <attachid>427728</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-05-04 23:13:06 -0700</bug_when>
    <thetext>Comment on attachment 427728
Patch

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

&gt; Websites/perf.webkit.org/tools/sync-commits.py:258
&gt; +                raise ValueError(&apos;Expected commit message to include revision identifier, but cannot find it, will need a history rewrite to fix it&apos;)

Ugh... sorry, I keep noticing new issues. Please see my earlier comment about revising this message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758076</commentid>
    <comment_count>57</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-05-07 16:24:02 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #56)
Please see my previous comment about it:

&quot;&quot;&quot;

&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:178
&gt; &gt; +                raise ValueError(&apos;Expected commit message includes revision identifier, but cannot find it&apos;)
&gt; 
&gt; Something like this:
&gt; `Expected commit message includes revision identifier, but did not find -
&gt; may have been caused by a history rewrite`


OK, but this won&apos;t be caused by a history rewrite, we will need a history rewrite to fix this, therefore this commit is invalid after that rewrite.

I will change this to something like: 
`Expected commit message includes revision identifier, but did not find - need a history rewrite to fix it`
&quot;&quot;&quot;

&gt; Comment on attachment 427728 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=427728&amp;action=review
&gt; 
&gt; &gt; Websites/perf.webkit.org/tools/sync-commits.py:258
&gt; &gt; +                raise ValueError(&apos;Expected commit message to include revision identifier, but cannot find it, will need a history rewrite to fix it&apos;)
&gt; 
&gt; Ugh... sorry, I keep noticing new issues. Please see my earlier comment
&gt; about revising this message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1758130</commentid>
    <comment_count>58</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-07 18:08:16 -0700</bug_when>
    <thetext>Committed r277220 (237491@main): &lt;https://commits.webkit.org/237491@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427728.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769470</commentid>
    <comment_count>59</comment_count>
    <who name="Zhifei Fang">zhifei_fang</who>
    <bug_when>2021-06-14 11:31:49 -0700</bug_when>
    <thetext>*** Bug 222608 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420515</attachid>
            <date>2021-02-16 11:54:18 -0800</date>
            <delta_ts>2021-02-16 14:57:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210216115417.patch</filename>
            <type>text/plain</type>
            <size>5481</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzZDM4NmY3ZjA2MDdjMWMzMTU0ZGRkM2JmYzRlOGQ3ZmYzYTM5Yjg0Li5lNjE3MzQxZmM3
MjU1ZDY4NWI2ODkxMzY3OGFkZGUyOTMwZjZhY2UwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0xNiAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCBpZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjE5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2NvbW1pdC11cGRhdGVyLnBocDogQWRkIHN1
cHBvcnQgZm9yIGlkZW50aWZpZXIgZm9ybWF0LCBlLmcuIDEyMzRAbWFzdGVyCisgICAgICAgICog
dG9vbHMvc3luYy1jb21taXRzLnB5OiBBZGQgc3VwcG9ydCBmb3IgZXh0cmFjdCBpZGVudGlmaWVy
IGZyb20gdGhlIGNvbW1pdAorICAgICAgICAobG9hZF9yZXBvc2l0b3J5KToKKyAgICAgICAgKElk
ZW50aWZpZXJHaXRSZXBvc2l0b3J5KToKKyAgICAgICAgKElkZW50aWZpZXJHaXRSZXBvc2l0b3J5
Ll9ydW5fZ2l0X3dlYmtpdCk6CisgICAgICAgIChJZGVudGlmaWVyR2l0UmVwb3NpdG9yeS5fZmlu
ZF9uZXh0X2hhc2gpOgorICAgICAgICAoSWRlbnRpZmllckdpdFJlcG9zaXRvcnkuX3JldmlzaW9u
X2Zyb21fdG9rZW5zKToKKwogMjAyMS0wMi0xMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxl
LmNvbT4KIAogICAgICAgICAnc3luYy1jb21taXRzLnB5JyBzaG91bGQgYmUgYWJsZSB0byBsaW1p
dCByZXBvcnRpbmcgc2NvcGUgdG8gYSBzcGVjaWZpYyBicmFuY2ggb24gYSBHaXQgcmVwb3NpdG9y
eS4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9j
b21taXQtdXBkYXRlci5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1
ZGUvY29tbWl0LXVwZGF0ZXIucGhwCmluZGV4IDA4YzY4YmJlNjQxMGFmZjA2ZGI4NzU0OTkyYTQ4
YzkzN2U3MGUzMmYuLmE4YWU5ZTBjMDUwZjZkNzRkMjE5NzMwNGEyNGI3NmQwMzhlNjU0ODEgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQt
dXBkYXRlci5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRl
L2NvbW1pdC11cGRhdGVyLnBocApAQCAtMTU1LDExICsxNTUsMTEgQEAgY2xhc3MgQ29tbWl0VXBk
YXRlciB7CiAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ01pc3NpbmdSZXBvc2l0b3J5TmFt
ZScsIGFycmF5KCdjb21taXQnID0+ICRjb21taXRfaW5mbykpOwogICAgICAgICBpZiAoIWFycmF5
X2tleV9leGlzdHMoJ3JldmlzaW9uJywgJGNvbW1pdF9pbmZvKSkKICAgICAgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignTWlzc2luZ1JldmlzaW9uJywgYXJyYXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9p
bmZvKSk7Ci0gICAgICAgIHJlcXVpcmVfZm9ybWF0KCdSZXZpc2lvbicsICRjb21taXRfaW5mb1sn
cmV2aXNpb24nXSwgJy9eW0EtWmEtejAtOSBcLl0rJC8nKTsKKyAgICAgICAgcmVxdWlyZV9mb3Jt
YXQoJ1JldmlzaW9uJywgJGNvbW1pdF9pbmZvWydyZXZpc2lvbiddLCAnL15bQEEtWmEtejAtOSBc
Ll0rJC8nKTsKICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2F1dGhvcicsICRjb21taXRf
aW5mbykgJiYgIWlzX2FycmF5KCRjb21taXRfaW5mb1snYXV0aG9yJ10pKQogICAgICAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQXV0aG9yRm9ybWF0JywgYXJyYXkoJ2NvbW1pdCcgPT4g
JGNvbW1pdF9pbmZvKSk7CiAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcmV2aW91c0Nv
bW1pdCcsICRjb21taXRfaW5mbykpCi0gICAgICAgICAgICByZXF1aXJlX2Zvcm1hdCgnUmV2aXNp
b24nLCAkY29tbWl0X2luZm9bJ3ByZXZpb3VzQ29tbWl0J10sICcvXltBLVphLXowLTkgXC5dKyQv
Jyk7CisgICAgICAgICAgICByZXF1aXJlX2Zvcm1hdCgnUmV2aXNpb24nLCAkY29tbWl0X2luZm9b
J3ByZXZpb3VzQ29tbWl0J10sICcvXltAQS1aYS16MC05IFwuXSskLycpOwogICAgIH0KIAogICAg
IHByaXZhdGUgZnVuY3Rpb24gcmVzb2x2ZV9yZXBvc2l0b3J5KCRyZXBvc2l0b3J5X25hbWUsICRv
d25lcl9yZXBvc2l0b3J5X2lkLCAkc2hvdWxkX2luc2VydCkKZGlmZiAtLWdpdCBhL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CmluZGV4IGZkYmUyYzI1OWZhZDk2MjBmNTQ1
ZTliMDBhNzUzNDg2YWMyNzAxMmMuLjU0NDYyYzFlZTYzYTdjMmZiNTdhM2UxNzJiNjM2NjVjZGUw
N2M0ZDkgMTAwNzU1Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNv
bW1pdHMucHkKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0
cy5weQpAQCAtNDMsNiArNDMsOCBAQCBkZWYgbWFpbihhcmd2KToKIAogZGVmIGxvYWRfcmVwb3Np
dG9yeShyZXBvc2l0b3J5KToKICAgICBpZiAnZ2l0Q2hlY2tvdXQnIGluIHJlcG9zaXRvcnk6Cisg
ICAgICAgIGlmICd1c2VJZGVudGlmaWVyJyBpbiByZXBvc2l0b3J5IGFuZCByZXBvc2l0b3J5Wyd1
c2VJZGVudGlmaWVyJ106CisgICAgICAgICAgICByZXR1cm4gSWRlbnRpZmllckdpdFJlcG9zaXRv
cnkobmFtZT1yZXBvc2l0b3J5WyduYW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdp
dF9jaGVja291dD1yZXBvc2l0b3J5WydnaXRDaGVja291dCddKQogICAgICAgICByZXR1cm4gR2l0
UmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwgZ2l0X3VybD1yZXBvc2l0b3J5Wyd1
cmwnXSwgZ2l0X2NoZWNrb3V0PXJlcG9zaXRvcnlbJ2dpdENoZWNrb3V0J10sIGdpdF9icmFuY2g9
cmVwb3NpdG9yeS5nZXQoJ2JyYW5jaCcpKQogICAgIHJldHVybiBTVk5SZXBvc2l0b3J5KG5hbWU9
cmVwb3NpdG9yeVsnbmFtZSddLCBzdm5fdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBzaG91bGRfdHJ1
c3RfY2VydGlmaWNhdGU9cmVwb3NpdG9yeS5nZXQoJ3RydXN0Q2VydGlmaWNhdGUnLCBGYWxzZSks
CiAgICAgICAgIHVzZV9zZXJ2ZXJfYXV0aD1yZXBvc2l0b3J5LmdldCgndXNlU2VydmVyQXV0aCcs
IEZhbHNlKSwgYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRoPXJlcG9zaXRvcnkuZ2V0KCdhY2NvdW50
TmFtZUZpbmRlclNjcmlwdCcpKQpAQCAtMjU3LDUgKzI1OSw0NCBAQCBjbGFzcyBHaXRSZXBvc2l0
b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICByZXR1cm4gc3RyKHJldmlzaW9uKVswOjhdCiAKIAor
Y2xhc3MgSWRlbnRpZmllckdpdFJlcG9zaXRvcnkoR2l0UmVwb3NpdG9yeSk6CisgICAgSURFTlRJ
RklFUl9SRSA9IHJlLmNvbXBpbGUocidDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRzLndl
YmtpdC5vcmcvKFtcZF0rQFthLXpBLVpcc1wtX10rKVxuJykKKworICAgIGRlZiBfcnVuX2dpdF93
ZWJraXQoc2VsZiwgYXJncyk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1
dChbb3MucGF0aC5qb2luKHNlbGYuX2dpdF9jaGVja291dCwgJ1Rvb2xzL1NjcmlwdHMvZ2l0LXdl
YmtpdCcpXSArIGFyZ3MpCisKKyAgICBkZWYgX2ZpbmRfbmV4dF9oYXNoKHNlbGYsIGlkZW50aWZp
ZXJfb3JfaGFzaCk6CisgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bl9naXRfd2Via2l0KFsnZmlu
ZCcsIGlkZW50aWZpZXJfb3JfaGFzaCwgJy0tanNvbiddKQorICAgICAgICBnaXRfaGFzaCA9IGpz
b24ubG9hZHMob3V0cHV0KVsnaGFzaCddCisgICAgICAgIGZvciBpLCB0b2tlbnMgaW4gZW51bWVy
YXRlKHNlbGYuX3Rva2VuaXplZF9oYXNoZXMpOgorICAgICAgICAgICAgaWYgdG9rZW5zIGFuZCB0
b2tlbnNbMF0gPT0gZ2l0X2hhc2g6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rva2Vu
aXplZF9oYXNoZXNbaSArIDFdIGlmIGkgKyAxIDwgbGVuKHNlbGYuX3Rva2VuaXplZF9oYXNoZXMp
IGVsc2UgTm9uZQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9yZXZpc2lvbl9mcm9t
X3Rva2VucyhzZWxmLCB0b2tlbnMpOgorICAgICAgICBjdXJyZW50X2hhc2ggPSB0b2tlbnNbMF0K
KyAgICAgICAgY29tbWl0X3RpbWUgPSBpbnQodG9rZW5zWzFdKQorICAgICAgICBhdXRob3JfZW1h
aWwgPSB0b2tlbnNbMl0KKyAgICAgICAgcHJldmlvdXNfaGFzaCA9IHRva2Vuc1szXSBpZiBsZW4o
dG9rZW5zKSA+PSA0IGVsc2UgTm9uZQorCisgICAgICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVu
X2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10p
CisgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50
X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQorICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5J
REVOVElGSUVSX1JFLnNlYXJjaChtZXNzYWdlKS5ncm91cCgxKQorICAgICAgICBwcmV2aW91c19p
ZGVudGlmaWVyID0gTm9uZQorICAgICAgICBpZiBwcmV2aW91c19oYXNoOgorICAgICAgICAgICAg
cHJldmlvdXNfbWVzc2FnZSA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ2xvZycsIHByZXZpb3Vz
X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQorICAgICAgICAgICAgcHJldmlvdXNfaWRlbnRp
ZmllciA9IHNlbGYuSURFTlRJRklFUl9SRS5zZWFyY2gocHJldmlvdXNfbWVzc2FnZSkuZ3JvdXAo
MSkKKworICAgICAgICByZXMgPSB7CisgICAgICAgICAgICAncmVwb3NpdG9yeSc6IHNlbGYuX25h
bWUsCisgICAgICAgICAgICAncmV2aXNpb24nOiBpZGVudGlmaWVyLAorICAgICAgICAgICAgJ3Rp
bWUnOiBkYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdF90aW1lKS5zdHJmdGltZShyJyVZLSVt
LSVkVCVIOiVNOiVTLiVmJyksCisgICAgICAgICAgICAnYXV0aG9yJzogeydhY2NvdW50JzogYXV0
aG9yX2VtYWlsLCAnbmFtZSc6IGF1dGhvcl9uYW1lfSwKKyAgICAgICAgICAgICdtZXNzYWdlJzog
bWVzc2FnZSwKKyAgICAgICAgfQorICAgICAgICBpZiBwcmV2aW91c19pZGVudGlmaWVyOgorICAg
ICAgICAgICAgcmVzWydwcmV2aW91c0NvbW1pdCddID0gcHJldmlvdXNfaWRlbnRpZmllcgorICAg
ICAgICByZXR1cm4gcmVzCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgbWFpbihz
eXMuYXJndikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420545</attachid>
            <date>2021-02-16 14:57:07 -0800</date>
            <delta_ts>2021-02-17 17:02:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210216145706.patch</filename>
            <type>text/plain</type>
            <size>5560</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzZDM4NmY3ZjA2MDdjMWMzMTU0ZGRkM2JmYzRlOGQ3ZmYzYTM5Yjg0Li5lNjE3MzQxZmM3
MjU1ZDY4NWI2ODkxMzY3OGFkZGUyOTMwZjZhY2UwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0xNiAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCBpZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjE5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2NvbW1pdC11cGRhdGVyLnBocDogQWRkIHN1
cHBvcnQgZm9yIGlkZW50aWZpZXIgZm9ybWF0LCBlLmcuIDEyMzRAbWFzdGVyCisgICAgICAgICog
dG9vbHMvc3luYy1jb21taXRzLnB5OiBBZGQgc3VwcG9ydCBmb3IgZXh0cmFjdCBpZGVudGlmaWVy
IGZyb20gdGhlIGNvbW1pdAorICAgICAgICAobG9hZF9yZXBvc2l0b3J5KToKKyAgICAgICAgKElk
ZW50aWZpZXJHaXRSZXBvc2l0b3J5KToKKyAgICAgICAgKElkZW50aWZpZXJHaXRSZXBvc2l0b3J5
Ll9ydW5fZ2l0X3dlYmtpdCk6CisgICAgICAgIChJZGVudGlmaWVyR2l0UmVwb3NpdG9yeS5fZmlu
ZF9uZXh0X2hhc2gpOgorICAgICAgICAoSWRlbnRpZmllckdpdFJlcG9zaXRvcnkuX3JldmlzaW9u
X2Zyb21fdG9rZW5zKToKKwogMjAyMS0wMi0xMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxl
LmNvbT4KIAogICAgICAgICAnc3luYy1jb21taXRzLnB5JyBzaG91bGQgYmUgYWJsZSB0byBsaW1p
dCByZXBvcnRpbmcgc2NvcGUgdG8gYSBzcGVjaWZpYyBicmFuY2ggb24gYSBHaXQgcmVwb3NpdG9y
eS4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9j
b21taXQtdXBkYXRlci5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1
ZGUvY29tbWl0LXVwZGF0ZXIucGhwCmluZGV4IDA4YzY4YmJlNjQxMGFmZjA2ZGI4NzU0OTkyYTQ4
YzkzN2U3MGUzMmYuLmEyNTA0NDhmZGI4MDhhNmQ4ZmVjMDRjZTlhODI1OTkxYzQxMjVhMDggMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQt
dXBkYXRlci5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRl
L2NvbW1pdC11cGRhdGVyLnBocApAQCAtMTU1LDExICsxNTUsMTEgQEAgY2xhc3MgQ29tbWl0VXBk
YXRlciB7CiAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ01pc3NpbmdSZXBvc2l0b3J5TmFt
ZScsIGFycmF5KCdjb21taXQnID0+ICRjb21taXRfaW5mbykpOwogICAgICAgICBpZiAoIWFycmF5
X2tleV9leGlzdHMoJ3JldmlzaW9uJywgJGNvbW1pdF9pbmZvKSkKICAgICAgICAgICAgIGV4aXRf
d2l0aF9lcnJvcignTWlzc2luZ1JldmlzaW9uJywgYXJyYXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9p
bmZvKSk7Ci0gICAgICAgIHJlcXVpcmVfZm9ybWF0KCdSZXZpc2lvbicsICRjb21taXRfaW5mb1sn
cmV2aXNpb24nXSwgJy9eW0EtWmEtejAtOSBcLl0rJC8nKTsKKyAgICAgICAgcmVxdWlyZV9mb3Jt
YXQoJ1JldmlzaW9uJywgJGNvbW1pdF9pbmZvWydyZXZpc2lvbiddLCAnL15bQEEtWmEtejAtOSBc
Ll0rJC8nKTsKICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2F1dGhvcicsICRjb21taXRf
aW5mbykgJiYgIWlzX2FycmF5KCRjb21taXRfaW5mb1snYXV0aG9yJ10pKQogICAgICAgICAgICAg
ZXhpdF93aXRoX2Vycm9yKCdJbnZhbGlkQXV0aG9yRm9ybWF0JywgYXJyYXkoJ2NvbW1pdCcgPT4g
JGNvbW1pdF9pbmZvKSk7Ci0gICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcmV2aW91c0Nv
bW1pdCcsICRjb21taXRfaW5mbykpCi0gICAgICAgICAgICByZXF1aXJlX2Zvcm1hdCgnUmV2aXNp
b24nLCAkY29tbWl0X2luZm9bJ3ByZXZpb3VzQ29tbWl0J10sICcvXltBLVphLXowLTkgXC5dKyQv
Jyk7CisgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcmV2aW91c0NvbW1pdCcsICRjb21t
aXRfaW5mbykgJiYgJGNvbW1pdF9pbmZvWydwcmV2aW91c0NvbW1pdCddKQorICAgICAgICAgICAg
cmVxdWlyZV9mb3JtYXQoJ1JldmlzaW9uJywgJGNvbW1pdF9pbmZvWydwcmV2aW91c0NvbW1pdCdd
LCAnL15bQEEtWmEtejAtOSBcLl0rJC8nKTsKICAgICB9CiAKICAgICBwcml2YXRlIGZ1bmN0aW9u
IHJlc29sdmVfcmVwb3NpdG9yeSgkcmVwb3NpdG9yeV9uYW1lLCAkb3duZXJfcmVwb3NpdG9yeV9p
ZCwgJHNob3VsZF9pbnNlcnQpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcv
dG9vbHMvc3luYy1jb21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5
bmMtY29tbWl0cy5weQppbmRleCBmZGJlMmMyNTlmYWQ5NjIwZjU0NWU5YjAwYTc1MzQ4NmFjMjcw
MTJjLi4wYjgxOWM3NTA0MDE0YjU1YzM5NzEwY2U3ZjlmNmVlOTVjMjAyODQzIDEwMDc1NQotLS0g
YS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTQzLDYgKzQz
LDggQEAgZGVmIG1haW4oYXJndik6CiAKIGRlZiBsb2FkX3JlcG9zaXRvcnkocmVwb3NpdG9yeSk6
CiAgICAgaWYgJ2dpdENoZWNrb3V0JyBpbiByZXBvc2l0b3J5OgorICAgICAgICBpZiAndXNlSWRl
bnRpZmllcicgaW4gcmVwb3NpdG9yeSBhbmQgcmVwb3NpdG9yeVsndXNlSWRlbnRpZmllciddOgor
ICAgICAgICAgICAgcmV0dXJuIElkZW50aWZpZXJHaXRSZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9y
eVsnbmFtZSddLCBnaXRfdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBnaXRfY2hlY2tvdXQ9cmVwb3Np
dG9yeVsnZ2l0Q2hlY2tvdXQnXSkKICAgICAgICAgcmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1y
ZXBvc2l0b3J5WyduYW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291
dD1yZXBvc2l0b3J5WydnaXRDaGVja291dCddLCBnaXRfYnJhbmNoPXJlcG9zaXRvcnkuZ2V0KCdi
cmFuY2gnKSkKICAgICByZXR1cm4gU1ZOUmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUn
XSwgc3ZuX3VybD1yZXBvc2l0b3J5Wyd1cmwnXSwgc2hvdWxkX3RydXN0X2NlcnRpZmljYXRlPXJl
cG9zaXRvcnkuZ2V0KCd0cnVzdENlcnRpZmljYXRlJywgRmFsc2UpLAogICAgICAgICB1c2Vfc2Vy
dmVyX2F1dGg9cmVwb3NpdG9yeS5nZXQoJ3VzZVNlcnZlckF1dGgnLCBGYWxzZSksIGFjY291bnRf
bmFtZV9zY3JpcHRfcGF0aD1yZXBvc2l0b3J5LmdldCgnYWNjb3VudE5hbWVGaW5kZXJTY3JpcHQn
KSkKQEAgLTI1Nyw1ICsyNTksNDIgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToK
ICAgICAgICAgcmV0dXJuIHN0cihyZXZpc2lvbilbMDo4XQogCiAKK2NsYXNzIElkZW50aWZpZXJH
aXRSZXBvc2l0b3J5KEdpdFJlcG9zaXRvcnkpOgorICAgIF9JREVOVElGSUVSX1JFID0gcmUuY29t
cGlsZShyJ0Nhbm9uaWNhbCBsaW5rOiBodHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8oP1A8aWRl
bnRpZmllcj5bXGRdK0BbYS16QS1aXHNcLV9dKylcbicpCisKKyAgICBkZWYgX3J1bl9naXRfd2Vi
a2l0KHNlbGYsIGFyZ3MpOgorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo
W29zLnBhdGguam9pbihzZWxmLl9naXRfY2hlY2tvdXQsICdUb29scy9TY3JpcHRzL2dpdC13ZWJr
aXQnKV0gKyBhcmdzKQorCisgICAgZGVmIF9maW5kX25leHRfaGFzaChzZWxmLCBpZGVudGlmaWVy
X29yX2hhc2gpOgorICAgICAgICBvdXRwdXQgPSBzZWxmLl9ydW5fZ2l0X3dlYmtpdChbJ2ZpbmQn
LCBpZGVudGlmaWVyX29yX2hhc2gsICctLWpzb24nXSkKKyAgICAgICAgZ2l0X2hhc2ggPSBqc29u
LmxvYWRzKG91dHB1dClbJ2hhc2gnXQorICAgICAgICBmb3IgaSwgdG9rZW5zIGluIGVudW1lcmF0
ZShzZWxmLl90b2tlbml6ZWRfaGFzaGVzKToKKyAgICAgICAgICAgIGlmIHRva2VucyBhbmQgdG9r
ZW5zWzBdID09IGdpdF9oYXNoOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl90b2tlbml6
ZWRfaGFzaGVzW2kgKyAxXSBpZiBpICsgMSA8IGxlbihzZWxmLl90b2tlbml6ZWRfaGFzaGVzKSBl
bHNlIE5vbmUKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBfcmV2aXNpb25fZnJvbV90
b2tlbnMoc2VsZiwgdG9rZW5zKToKKyAgICAgICAgY3VycmVudF9oYXNoID0gdG9rZW5zWzBdCisg
ICAgICAgIGNvbW1pdF90aW1lID0gaW50KHRva2Vuc1sxXSkKKyAgICAgICAgYXV0aG9yX2VtYWls
ID0gdG9rZW5zWzJdCisgICAgICAgIHByZXZpb3VzX2hhc2ggPSB0b2tlbnNbM10gaWYgbGVuKHRv
a2VucykgPj0gNCBlbHNlIE5vbmUKKworICAgICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX3J1bl9n
aXRfY29tbWFuZChbJ2xvZycsIGN1cnJlbnRfaGFzaCwgJy0xJywgJy0tcHJldHR5PSVjbiddKQor
ICAgICAgICBtZXNzYWdlID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9o
YXNoLCAnLTEnLCAnLS1wcmV0dHk9JUInXSkKKyAgICAgICAgaWRlbnRpZmllciA9IHNlbGYuX0lE
RU5USUZJRVJfUkUuc2VhcmNoKG1lc3NhZ2UpLmdyb3VwKCdpZGVudGlmaWVyJykKKyAgICAgICAg
cHJldmlvdXNfaWRlbnRpZmllciA9IE5vbmUKKyAgICAgICAgaWYgcHJldmlvdXNfaGFzaDoKKyAg
ICAgICAgICAgIHByZXZpb3VzX21lc3NhZ2UgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cn
LCBwcmV2aW91c19oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JUInXSkKKyAgICAgICAgICAgIHByZXZp
b3VzX2lkZW50aWZpZXIgPSBzZWxmLl9JREVOVElGSUVSX1JFLnNlYXJjaChwcmV2aW91c19tZXNz
YWdlKS5ncm91cCgnaWRlbnRpZmllcicpCisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICdyZXBvc2l0b3J5Jzogc2VsZi5fbmFtZSwKKyAgICAgICAgICAgICdyZXZpc2lvbic6IGlkZW50
aWZpZXIsCisgICAgICAgICAgICAncHJldmlvdXNDb21taXQnOiBwcmV2aW91c19pZGVudGlmaWVy
LAorICAgICAgICAgICAgJ3RpbWUnOiBkYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdF90aW1l
KS5zdHJmdGltZShyJyVZLSVtLSVkVCVIOiVNOiVTLiVmJyksCisgICAgICAgICAgICAnYXV0aG9y
JzogeydhY2NvdW50JzogYXV0aG9yX2VtYWlsLCAnbmFtZSc6IGF1dGhvcl9uYW1lfSwKKyAgICAg
ICAgICAgICdtZXNzYWdlJzogbWVzc2FnZSwKKyAgICAgICAgfQorCiBpZiBfX25hbWVfXyA9PSAi
X19tYWluX18iOgogICAgIG1haW4oc3lzLmFyZ3YpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420762</attachid>
            <date>2021-02-17 17:02:16 -0800</date>
            <delta_ts>2021-03-12 14:31:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210217170215.patch</filename>
            <type>text/plain</type>
            <size>7318</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyOTE3CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCAzZDM4NmY3ZjA2MDdjMWMzMTU0ZGRkM2JmYzRlOGQ3ZmYzYTM5Yjg0Li5lNjE3MzQxZmM3
MjU1ZDY4NWI2ODkxMzY3OGFkZGUyOTMwZjZhY2UwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMi0xNiAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCBpZGVudGlmaWVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjE5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHB1YmxpYy9pbmNsdWRlL2NvbW1pdC11cGRhdGVyLnBocDogQWRkIHN1
cHBvcnQgZm9yIGlkZW50aWZpZXIgZm9ybWF0LCBlLmcuIDEyMzRAbWFzdGVyCisgICAgICAgICog
dG9vbHMvc3luYy1jb21taXRzLnB5OiBBZGQgc3VwcG9ydCBmb3IgZXh0cmFjdCBpZGVudGlmaWVy
IGZyb20gdGhlIGNvbW1pdAorICAgICAgICAobG9hZF9yZXBvc2l0b3J5KToKKyAgICAgICAgKElk
ZW50aWZpZXJHaXRSZXBvc2l0b3J5KToKKyAgICAgICAgKElkZW50aWZpZXJHaXRSZXBvc2l0b3J5
Ll9ydW5fZ2l0X3dlYmtpdCk6CisgICAgICAgIChJZGVudGlmaWVyR2l0UmVwb3NpdG9yeS5fZmlu
ZF9uZXh0X2hhc2gpOgorICAgICAgICAoSWRlbnRpZmllckdpdFJlcG9zaXRvcnkuX3JldmlzaW9u
X2Zyb21fdG9rZW5zKToKKwogMjAyMS0wMi0xMSAgRGV3ZWkgWmh1ICA8ZGV3ZWlfemh1QGFwcGxl
LmNvbT4KIAogICAgICAgICAnc3luYy1jb21taXRzLnB5JyBzaG91bGQgYmUgYWJsZSB0byBsaW1p
dCByZXBvcnRpbmcgc2NvcGUgdG8gYSBzcGVjaWZpYyBicmFuY2ggb24gYSBHaXQgcmVwb3NpdG9y
eS4KZGlmZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9j
b21taXQtdXBkYXRlci5waHAgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL2luY2x1
ZGUvY29tbWl0LXVwZGF0ZXIucGhwCmluZGV4IDA4YzY4YmJlNjQxMGFmZjA2ZGI4NzU0OTkyYTQ4
YzkzN2U3MGUzMmYuLmZkNmYzNThhYTY2NDU1YWU4ZGI2ODQ5Y2QwOGEzNGFhNWEwODcxM2IgMTAw
NjQ0Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvaW5jbHVkZS9jb21taXQt
dXBkYXRlci5waHAKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy9pbmNsdWRl
L2NvbW1pdC11cGRhdGVyLnBocApAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBDb21taXRVcGRhdGVy
IHsKICAgICAgICAgJHJlcG9zaXRvcnlfaWQgPSAkdGhpcy0+cmVzb2x2ZV9yZXBvc2l0b3J5KCR1
cGRhdGVbJ3JlcG9zaXRvcnknXSwgJG93bmVyX3JlcG9zaXRvcnlfaWQsICRzaG91bGRfaW5zZXJ0
KTsKICAgICAgICAgJGNvbW1pdF9kYXRhWydyZXBvc2l0b3J5J10gPSAkcmVwb3NpdG9yeV9pZDsK
IAotICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygncHJldmlvdXNfY29tbWl0JywgJHVwZGF0
ZSkpCisgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcmV2aW91c19jb21taXQnLCAkdXBk
YXRlKSAmJiAhaXNfbnVsbCgkdXBkYXRlWydwcmV2aW91c19jb21taXQnXSkpCiAgICAgICAgICAg
ICAkY29tbWl0X2RhdGFbJ3ByZXZpb3VzX2NvbW1pdCddID0gJHRoaXMtPnJlc29sdmVfcHJldmlv
dXNfY29tbWl0KCRyZXBvc2l0b3J5X2lkLCAkdXBkYXRlWydwcmV2aW91c19jb21taXQnXSk7CiAK
ICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2F1dGhvcicsICR1cGRhdGUpKQpAQCAtODEs
NyArODEsNyBAQCBjbGFzcyBDb21taXRVcGRhdGVyIHsKICAgICAgICAgICAgICRoYXNfdXBkYXRl
ID0gY291bnQoJGNvbW1pdF9kYXRhKSA+IDE7CiAKICAgICAgICAgICAgICR1cGRhdGUgPSBhcnJh
eSgnY29tbWl0JyA9PiAmJGNvbW1pdF9kYXRhLCAncmVwb3NpdG9yeScgPT4gJiRjb21taXRfaW5m
b1sncmVwb3NpdG9yeSddKTsKLSAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcmV2
aW91c0NvbW1pdCcsICRjb21taXRfaW5mbykpIHsKKyAgICAgICAgICAgIGlmIChhcnJheV9rZXlf
ZXhpc3RzKCdwcmV2aW91c0NvbW1pdCcsICRjb21taXRfaW5mbykgJiYgIWlzX251bGwoJGNvbW1p
dF9pbmZvWydwcmV2aW91c19jb21taXQnXSkpIHsKICAgICAgICAgICAgICAgICAkaGFzX3VwZGF0
ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgJHVwZGF0ZVsncHJldmlvdXNfY29tbWl0J10gPSAm
JGNvbW1pdF9pbmZvWydwcmV2aW91c0NvbW1pdCddOwogICAgICAgICAgICAgfQpAQCAtMTA3LDcg
KzEwNyw3IEBAIGNsYXNzIENvbW1pdFVwZGF0ZXIgewogICAgICAgICAgICAgICAgICRvd25lZF9j
b21taXQgPSAmc2VsZjo6Y29uc3RydWN0X2NvbW1pdF9kYXRhKCRvd25lZF9jb21taXRfaW5mbywg
JG93bmVkX3JlcG9zaXRvcnlfbmFtZSwgJHNob3VsZF9pbnNlcnQpOwogICAgICAgICAgICAgICAg
ICRvd25lZF9jb21taXRfdXBkYXRlID0gYXJyYXkoJ2NvbW1pdCcgPT4gJiRvd25lZF9jb21taXQs
ICdyZXBvc2l0b3J5JyA9PiAkb3duZWRfcmVwb3NpdG9yeV9uYW1lKTsKIAotICAgICAgICAgICAg
ICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcmV2aW91c0NvbW1pdCcsICRvd25lZF9jb21taXRf
aW5mbykpCisgICAgICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3ByZXZpb3VzQ29t
bWl0JywgJG93bmVkX2NvbW1pdF9pbmZvKSAmJiAhaXNfbnVsbCgkb3duZWRfY29tbWl0X2luZm9b
J3ByZXZpb3VzX2NvbW1pdCddKSkKICAgICAgICAgICAgICAgICAgICAgJG93bmVkX2NvbW1pdF91
cGRhdGVbJ3ByZXZpb3VzX2NvbW1pdCddID0gJG93bmVkX2NvbW1pdF9pbmZvWydwcmV2aW91c0Nv
bW1pdCddOwogCiAgICAgICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2F1dGhvcics
ICRvd25lZF9jb21taXRfaW5mbykpCkBAIC0xNTUsMTEgKzE1NSwxMSBAQCBjbGFzcyBDb21taXRV
cGRhdGVyIHsKICAgICAgICAgICAgIGV4aXRfd2l0aF9lcnJvcignTWlzc2luZ1JlcG9zaXRvcnlO
YW1lJywgYXJyYXkoJ2NvbW1pdCcgPT4gJGNvbW1pdF9pbmZvKSk7CiAgICAgICAgIGlmICghYXJy
YXlfa2V5X2V4aXN0cygncmV2aXNpb24nLCAkY29tbWl0X2luZm8pKQogICAgICAgICAgICAgZXhp
dF93aXRoX2Vycm9yKCdNaXNzaW5nUmV2aXNpb24nLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0
X2luZm8pKTsKLSAgICAgICAgcmVxdWlyZV9mb3JtYXQoJ1JldmlzaW9uJywgJGNvbW1pdF9pbmZv
WydyZXZpc2lvbiddLCAnL15bQS1aYS16MC05IFwuXSskLycpOworICAgICAgICByZXF1aXJlX2Zv
cm1hdCgnUmV2aXNpb24nLCAkY29tbWl0X2luZm9bJ3JldmlzaW9uJ10sICcvXihbQS1aYS16MC05
IFwuXSspfChbXGRdK0BbYS16QS1aXHNcLV9dKykkLycpOwogICAgICAgICBpZiAoYXJyYXlfa2V5
X2V4aXN0cygnYXV0aG9yJywgJGNvbW1pdF9pbmZvKSAmJiAhaXNfYXJyYXkoJGNvbW1pdF9pbmZv
WydhdXRob3InXSkpCiAgICAgICAgICAgICBleGl0X3dpdGhfZXJyb3IoJ0ludmFsaWRBdXRob3JG
b3JtYXQnLCBhcnJheSgnY29tbWl0JyA9PiAkY29tbWl0X2luZm8pKTsKLSAgICAgICAgaWYgKGFy
cmF5X2tleV9leGlzdHMoJ3ByZXZpb3VzQ29tbWl0JywgJGNvbW1pdF9pbmZvKSkKLSAgICAgICAg
ICAgIHJlcXVpcmVfZm9ybWF0KCdSZXZpc2lvbicsICRjb21taXRfaW5mb1sncHJldmlvdXNDb21t
aXQnXSwgJy9eW0EtWmEtejAtOSBcLl0rJC8nKTsKKyAgICAgICAgaWYgKGFycmF5X2tleV9leGlz
dHMoJ3ByZXZpb3VzQ29tbWl0JywgJGNvbW1pdF9pbmZvKSAmJiAkY29tbWl0X2luZm9bJ3ByZXZp
b3VzQ29tbWl0J10pCisgICAgICAgICAgICByZXF1aXJlX2Zvcm1hdCgnUmV2aXNpb24nLCAkY29t
bWl0X2luZm9bJ3ByZXZpb3VzQ29tbWl0J10sICcvXihbQEEtWmEtejAtOSBcLl0rKXwoW1xkXStA
W2EtekEtWlxzXC1fXSspJC8nKTsKICAgICB9CiAKICAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc29s
dmVfcmVwb3NpdG9yeSgkcmVwb3NpdG9yeV9uYW1lLCAkb3duZXJfcmVwb3NpdG9yeV9pZCwgJHNo
b3VsZF9pbnNlcnQpCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMv
c3luYy1jb21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29t
bWl0cy5weQppbmRleCBmZGJlMmMyNTlmYWQ5NjIwZjU0NWU5YjAwYTc1MzQ4NmFjMjcwMTJjLi4x
MThhYTkwMTFkZTE5MjU0MGNhNmMzODRjNzFmZTA0MTA5MjhmMWNjIDEwMDc1NQotLS0gYS9XZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTQzLDYgKzQzLDggQEAg
ZGVmIG1haW4oYXJndik6CiAKIGRlZiBsb2FkX3JlcG9zaXRvcnkocmVwb3NpdG9yeSk6CiAgICAg
aWYgJ2dpdENoZWNrb3V0JyBpbiByZXBvc2l0b3J5OgorICAgICAgICBpZiAndXNlSWRlbnRpZmll
cicgaW4gcmVwb3NpdG9yeSBhbmQgcmVwb3NpdG9yeVsndXNlSWRlbnRpZmllciddOgorICAgICAg
ICAgICAgcmV0dXJuIElkZW50aWZpZXJHaXRSZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFt
ZSddLCBnaXRfdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBnaXRfY2hlY2tvdXQ9cmVwb3NpdG9yeVsn
Z2l0Q2hlY2tvdXQnXSkKICAgICAgICAgcmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1yZXBvc2l0
b3J5WyduYW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBv
c2l0b3J5WydnaXRDaGVja291dCddLCBnaXRfYnJhbmNoPXJlcG9zaXRvcnkuZ2V0KCdicmFuY2gn
KSkKICAgICByZXR1cm4gU1ZOUmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwgc3Zu
X3VybD1yZXBvc2l0b3J5Wyd1cmwnXSwgc2hvdWxkX3RydXN0X2NlcnRpZmljYXRlPXJlcG9zaXRv
cnkuZ2V0KCd0cnVzdENlcnRpZmljYXRlJywgRmFsc2UpLAogICAgICAgICB1c2Vfc2VydmVyX2F1
dGg9cmVwb3NpdG9yeS5nZXQoJ3VzZVNlcnZlckF1dGgnLCBGYWxzZSksIGFjY291bnRfbmFtZV9z
Y3JpcHRfcGF0aD1yZXBvc2l0b3J5LmdldCgnYWNjb3VudE5hbWVGaW5kZXJTY3JpcHQnKSkKQEAg
LTI1Nyw1ICsyNTksNDIgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAg
ICAgcmV0dXJuIHN0cihyZXZpc2lvbilbMDo4XQogCiAKK2NsYXNzIElkZW50aWZpZXJHaXRSZXBv
c2l0b3J5KEdpdFJlcG9zaXRvcnkpOgorICAgIElERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHIn
Q2Fub25pY2FsIGxpbms6IGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnLyg/UDxpZGVudGlmaWVy
PltcZF0rQFthLXpBLVpcc1wtX10rKVxuJykKKworICAgIGRlZiBfcnVuX2dpdF93ZWJraXQoc2Vs
ZiwgYXJncyk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbb3MucGF0
aC5qb2luKHNlbGYuX2dpdF9jaGVja291dCwgJ1Rvb2xzL1NjcmlwdHMvZ2l0LXdlYmtpdCcpXSAr
IGFyZ3MpCisKKyAgICBkZWYgX2ZpbmRfbmV4dF9oYXNoKHNlbGYsIGlkZW50aWZpZXJfb3JfaGFz
aCk6CisgICAgICAgIG91dHB1dCA9IHNlbGYuX3J1bl9naXRfd2Via2l0KFsnZmluZCcsIGlkZW50
aWZpZXJfb3JfaGFzaCwgJy0tanNvbiddKQorICAgICAgICBnaXRfaGFzaCA9IGpzb24ubG9hZHMo
b3V0cHV0KVsnaGFzaCddCisgICAgICAgIGZvciBpLCB0b2tlbnMgaW4gZW51bWVyYXRlKHNlbGYu
X3Rva2VuaXplZF9oYXNoZXMpOgorICAgICAgICAgICAgaWYgdG9rZW5zIGFuZCB0b2tlbnNbMF0g
PT0gZ2l0X2hhc2g6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rva2VuaXplZF9oYXNo
ZXNbaSArIDFdIGlmIGkgKyAxIDwgbGVuKHNlbGYuX3Rva2VuaXplZF9oYXNoZXMpIGVsc2UgTm9u
ZQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9yZXZpc2lvbl9mcm9tX3Rva2Vucyhz
ZWxmLCB0b2tlbnMpOgorICAgICAgICBjdXJyZW50X2hhc2ggPSB0b2tlbnNbMF0KKyAgICAgICAg
Y29tbWl0X3RpbWUgPSBpbnQodG9rZW5zWzFdKQorICAgICAgICBhdXRob3JfZW1haWwgPSB0b2tl
bnNbMl0KKyAgICAgICAgcHJldmlvdXNfaGFzaCA9IHRva2Vuc1szXSBpZiBsZW4odG9rZW5zKSA+
PSA0IGVsc2UgTm9uZQorCisgICAgICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVuX2dpdF9jb21t
YW5kKFsnbG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10pCisgICAgICAg
IG1lc3NhZ2UgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gsICct
MScsICctLXByZXR0eT0lQiddKQorICAgICAgICBpZGVudGlmaWVyID0gc2VsZi5JREVOVElGSUVS
X1JFLnNlYXJjaChtZXNzYWdlKS5ncm91cCgnaWRlbnRpZmllcicpCisgICAgICAgIHByZXZpb3Vz
X2lkZW50aWZpZXIgPSBOb25lCisgICAgICAgIGlmIHByZXZpb3VzX2hhc2g6CisgICAgICAgICAg
ICBwcmV2aW91c19tZXNzYWdlID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgcHJldmlv
dXNfaGFzaCwgJy0xJywgJy0tcHJldHR5PSVCJ10pCisgICAgICAgICAgICBwcmV2aW91c19pZGVu
dGlmaWVyID0gc2VsZi5JREVOVElGSUVSX1JFLnNlYXJjaChwcmV2aW91c19tZXNzYWdlKS5ncm91
cCgnaWRlbnRpZmllcicpCisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICdyZXBvc2l0
b3J5Jzogc2VsZi5fbmFtZSwKKyAgICAgICAgICAgICdyZXZpc2lvbic6IGlkZW50aWZpZXIsCisg
ICAgICAgICAgICAncHJldmlvdXNDb21taXQnOiBwcmV2aW91c19pZGVudGlmaWVyLAorICAgICAg
ICAgICAgJ3RpbWUnOiBkYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdF90aW1lKS5zdHJmdGlt
ZShyJyVZLSVtLSVkVCVIOiVNOiVTLiVmJyksCisgICAgICAgICAgICAnYXV0aG9yJzogeydhY2Nv
dW50JzogYXV0aG9yX2VtYWlsLCAnbmFtZSc6IGF1dGhvcl9uYW1lfSwKKyAgICAgICAgICAgICdt
ZXNzYWdlJzogbWVzc2FnZSwKKyAgICAgICAgfQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgogICAgIG1haW4oc3lzLmFyZ3YpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423083</attachid>
            <date>2021-03-12 14:31:04 -0800</date>
            <delta_ts>2021-04-07 22:36:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210312143103.patch</filename>
            <type>text/plain</type>
            <size>3699</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0MzYxCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBjNGQ2MTc5MzdiNzU1Y2EwYTlmOGM3N2E3NTViM2U2ZjljMmRlYThjLi44YTBkM2U3ZWJl
ZjhhY2RkMzg3MDJjYWJmMDk5YWQ1OTkyZDkyYTQzIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0xMiAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCByZXZpc2lvbiBsYWJlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiwgd2hpY2ggd2lsbCBsZXQg
dGhlIHNjcmlwdCB0cnkgdG8gZmV0Y2ggdGhlIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBmcm9tIHRo
ZSBjb21taXQgbWVzc2FnZS4KKworICAgICAgICAqIHRvb2xzL3N5bmMtY29tbWl0cy5weToKKyAg
ICAgICAgKGxvYWRfcmVwb3NpdG9yeSk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5KToKKyAgICAg
ICAgKEdpdFJlcG9zaXRvcnkuX19pbml0X18pOgorICAgICAgICAoR2l0UmVwb3NpdG9yeS5fcmV2
aXNpb25fZnJvbV90b2tlbnMpOiAKKwogMjAyMS0wMy0wNiAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbcGVyZiBkYXNoYm9hcmRdIFVzZSBhc3luYy9hd2FpdCBp
biB0ZXN0cyBmb3IgVGltZVNlcmllc0NoYXJ0IGFuZCBJbnRlcmFjdGl2ZVRpbWVTZXJpZXNDaGFy
dApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0
cy5weSBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKaW5k
ZXggZmRiZTJjMjU5ZmFkOTYyMGY1NDVlOWIwMGE3NTM0ODZhYzI3MDEyYy4uOWY2ZmY3Mzg0MDNj
ODFhNzE5NTI5YzMyYjY5NGU4ZDAwYThjNmQ4NSAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMvcGVyZi53
ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weQorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CkBAIC00Myw3ICs0Myw3IEBAIGRlZiBtYWluKGFy
Z3YpOgogCiBkZWYgbG9hZF9yZXBvc2l0b3J5KHJlcG9zaXRvcnkpOgogICAgIGlmICdnaXRDaGVj
a291dCcgaW4gcmVwb3NpdG9yeToKLSAgICAgICAgcmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1y
ZXBvc2l0b3J5WyduYW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291
dD1yZXBvc2l0b3J5WydnaXRDaGVja291dCddLCBnaXRfYnJhbmNoPXJlcG9zaXRvcnkuZ2V0KCdi
cmFuY2gnKSkKKyAgICAgICAgcmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1yZXBvc2l0b3J5Wydu
YW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5
WydnaXRDaGVja291dCddLCBnaXRfYnJhbmNoPXJlcG9zaXRvcnkuZ2V0KCdicmFuY2gnKSwgZmV0
Y2hfcmV2aXNpb25fbGFiZWw9cmVwb3NpdG9yeS5nZXQoImZldGNoUmV2aXNpb25MYWJlbCIsIEZh
bHNlKSkKICAgICByZXR1cm4gU1ZOUmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwg
c3ZuX3VybD1yZXBvc2l0b3J5Wyd1cmwnXSwgc2hvdWxkX3RydXN0X2NlcnRpZmljYXRlPXJlcG9z
aXRvcnkuZ2V0KCd0cnVzdENlcnRpZmljYXRlJywgRmFsc2UpLAogICAgICAgICB1c2Vfc2VydmVy
X2F1dGg9cmVwb3NpdG9yeS5nZXQoJ3VzZVNlcnZlckF1dGgnLCBGYWxzZSksIGFjY291bnRfbmFt
ZV9zY3JpcHRfcGF0aD1yZXBvc2l0b3J5LmdldCgnYWNjb3VudE5hbWVGaW5kZXJTY3JpcHQnKSkK
IApAQCAtMTkxLDE0ICsxOTEsMTYgQEAgY2xhc3MgU1ZOUmVwb3NpdG9yeShSZXBvc2l0b3J5KToK
IAogCiBjbGFzcyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgorICAgIFJFVklTSU9OX0xBQkVM
X1JFID0gcmUuY29tcGlsZShyJ0Nhbm9uaWNhbCBsaW5rOiBodHRwczovL2NvbW1pdHMud2Via2l0
Lm9yZy8oP1A8cmV2aXNpb25fbGFiZWw+XGQrQFxTKylcbicpCiAKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9icmFu
Y2g9Tm9uZSwgZmV0Y2hfcmV2aXNpb25fbGFiZWw9RmFsc2UpOgogICAgICAgICBhc3NlcnQob3Mu
cGF0aC5pc2RpcihnaXRfY2hlY2tvdXQpKQogICAgICAgICBzdXBlcihHaXRSZXBvc2l0b3J5LCBz
ZWxmKS5fX2luaXRfXyhuYW1lKQogICAgICAgICBzZWxmLl9naXRfY2hlY2tvdXQgPSBnaXRfY2hl
Y2tvdXQKICAgICAgICAgc2VsZi5fZ2l0X3VybCA9IGdpdF91cmwKICAgICAgICAgc2VsZi5fZ2l0
X2JyYW5jaCA9IGdpdF9icmFuY2gKICAgICAgICAgc2VsZi5fdG9rZW5pemVkX2hhc2hlcyA9IFtd
CisgICAgICAgIHNlbGYuX2ZldGNoX3JldmlzaW9uX2xhYmVsID0gZmV0Y2hfcmV2aXNpb25fbGFi
ZWwKIAogICAgIGRlZiBmZXRjaF9uZXh0X2NvbW1pdChzZWxmLCBzZXJ2ZXJfY29uZmlnLCBsYXN0
X2ZldGNoZWQpOgogICAgICAgICBpZiBub3QgbGFzdF9mZXRjaGVkOgpAQCAtMjI5LDcgKzIzMSw3
IEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAgIGF1dGhvcl9uYW1l
ID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1w
cmV0dHk9JWNuJ10pCiAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWyds
b2cnLCBjdXJyZW50X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQogCi0gICAgICAgIHJldHVy
biB7CisgICAgICAgIHJlc3VsdCA9IHsKICAgICAgICAgICAgICdyZXBvc2l0b3J5Jzogc2VsZi5f
bmFtZSwKICAgICAgICAgICAgICdyZXZpc2lvbic6IGN1cnJlbnRfaGFzaCwKICAgICAgICAgICAg
ICdwcmV2aW91c0NvbW1pdCc6IHByZXZpb3VzX2hhc2gsCkBAIC0yMzgsNiArMjQwLDExIEBAIGNs
YXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAgICAgICAnbWVzc2FnZSc6IG1l
c3NhZ2UsCiAgICAgICAgIH0KIAorICAgICAgICBpZiBzZWxmLl9mZXRjaF9yZXZpc2lvbl9sYWJl
bDoKKyAgICAgICAgICAgIHJldmlzaW9uX2xhYmVsID0gc2VsZi5SRVZJU0lPTl9MQUJFTF9SRS5z
ZWFyY2gobWVzc2FnZSkuZ3JvdXAoJ3JldmlzaW9uX2xhYmVsJykKKyAgICAgICAgICAgIHJlc3Vs
dFsncmV2aXNpb25MYWJlbCddID0gcmV2aXNpb25fbGFiZWwKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dAorCiAgICAgZGVmIF9maW5kX25leHRfaGFzaChzZWxmLCBoYXNoX3RvX2ZpbmQpOgogICAgICAg
ICBmb3IgaSwgdG9rZW5zIGluIGVudW1lcmF0ZShzZWxmLl90b2tlbml6ZWRfaGFzaGVzKToKICAg
ICAgICAgICAgIGlmIHRva2VucyBhbmQgdG9rZW5zWzBdID09IGhhc2hfdG9fZmluZDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425478</attachid>
            <date>2021-04-07 22:36:29 -0700</date>
            <delta_ts>2021-04-08 11:03:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210407223628.patch</filename>
            <type>text/plain</type>
            <size>3050</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi40M2UzMDFiNTZh
YmZjOTU2MmYxYjFmNjc4ZmZkODI4Y2FlNzBjZDFkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNC0wNyAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCByZXZpc2lvbiBsYWJlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiwgd2hpY2ggd2lsbCBsZXQg
dGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0aGUgY29tbWl0IHJldmlzaW9uIGlkZW50aWZpZXIgZnJv
bSB0aGUgY29tbWl0IG1lc3NhZ2UuCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6
CisgICAgICAgIChsb2FkX3JlcG9zaXRvcnkpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeSk6Cisg
ICAgICAgIChHaXRSZXBvc2l0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnku
X3JldmlzaW9uX2Zyb21fdG9rZW5zKTogCisKIDIwMjEtMDMtMzEgIFpoaWZlaSBGYW5nICA8emhp
ZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb21taXQgcmV2aXNpb24gbGFiZWwg
c3VwcG9ydApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMt
Y29tbWl0cy5weSBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMu
cHkKaW5kZXggODc5OTc1MGYzZGEzYWM4YjU5ODU3YmY3YzQ2NThmYmQ2ODk4Y2QzZi4uM2Y4MTc4
NjdkMWExNDBkYzNhODczN2NiNjMzY2MwMDAyYTM0MDlhYiAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weQorKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CkBAIC0xOTEsMTQgKzE5MSwxOCBAQCBj
bGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiAKIGNsYXNzIEdpdFJlcG9zaXRvcnko
UmVwb3NpdG9yeSk6CisgICAgIyBUaGVyZSBhcmUgc29tZSBidWdneSBjb21taXQgbWVzc2FnZXM6
CisgICAgIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvaHR0cHM6
Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KKyAgICBSRVZJU0lPTl9JREVOVElGSUVS
X1JFID0gcmUuY29tcGlsZShyJ0Nhbm9uaWNhbCBsaW5rOiAoaHR0cHM6Ly9jb21taXRzLndlYmtp
dC5vcmcvKSsoP1A8cmV2aXNpb25faWRlbnRpZmllcj5cZCtAW1x3XC5cLV0rKVxuJykKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9icmFu
Y2g9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdpdF9jaGVja291dCwgZ2l0
X3VybCwgZ2l0X2JyYW5jaD1Ob25lLCByZXZpc2lvbl9pZGVudGlmaWVyPUZhbHNlKToKICAgICAg
ICAgYXNzZXJ0KG9zLnBhdGguaXNkaXIoZ2l0X2NoZWNrb3V0KSkKICAgICAgICAgc3VwZXIoR2l0
UmVwb3NpdG9yeSwgc2VsZikuX19pbml0X18obmFtZSkKICAgICAgICAgc2VsZi5fZ2l0X2NoZWNr
b3V0ID0gZ2l0X2NoZWNrb3V0CiAgICAgICAgIHNlbGYuX2dpdF91cmwgPSBnaXRfdXJsCiAgICAg
ICAgIHNlbGYuX2dpdF9icmFuY2ggPSBnaXRfYnJhbmNoCiAgICAgICAgIHNlbGYuX3Rva2VuaXpl
ZF9oYXNoZXMgPSBbXQorICAgICAgICBzZWxmLl9yZXZpc2lvbl9pZGVudGlmaWVyID0gcmV2aXNp
b25faWRlbnRpZmllcgogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZlcl9j
b25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CkBAIC0y
MjksNyArMjMzLDcgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAg
YXV0aG9yX25hbWUgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gs
ICctMScsICctLXByZXR0eT0lY24nXSkKICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3J1bl9naXRf
Y29tbWFuZChbJ2xvZycsIGN1cnJlbnRfaGFzaCwgJy0xJywgJy0tcHJldHR5PSVCJ10pCiAKLSAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgcmVzdWx0ID0gewogICAgICAgICAgICAgJ3JlcG9zaXRv
cnknOiBzZWxmLl9uYW1lLAogICAgICAgICAgICAgJ3JldmlzaW9uJzogY3VycmVudF9oYXNoLAog
ICAgICAgICAgICAgJ3ByZXZpb3VzQ29tbWl0JzogcHJldmlvdXNfaGFzaCwKQEAgLTIzOCw2ICsy
NDIsMTEgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgICAgICdt
ZXNzYWdlJzogbWVzc2FnZSwKICAgICAgICAgfQogCisgICAgICAgIGlmIHNlbGYuX3JldmlzaW9u
X2lkZW50aWZpZXI6CisgICAgICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVyID0gc2VsZi5SRVZJ
U0lPTl9JREVOVElGSUVSX1JFLnNlYXJjaChtZXNzYWdlKS5ncm91cCgncmV2aXNpb25faWRlbnRp
ZmllcicpCisgICAgICAgICAgICByZXN1bHRbJ3JldmlzaW9uSWRlbnRpZmllciddID0gcmV2aXNp
b25faWRlbnRpZmllcgorICAgICAgICByZXR1cm4gcmVzdWx0CisKICAgICBkZWYgX2ZpbmRfbmV4
dF9oYXNoKHNlbGYsIGhhc2hfdG9fZmluZCk6CiAgICAgICAgIGZvciBpLCB0b2tlbnMgaW4gZW51
bWVyYXRlKHNlbGYuX3Rva2VuaXplZF9oYXNoZXMpOgogICAgICAgICAgICAgaWYgdG9rZW5zIGFu
ZCB0b2tlbnNbMF0gPT0gaGFzaF90b19maW5kOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425522</attachid>
            <date>2021-04-08 11:03:41 -0700</date>
            <delta_ts>2021-04-14 12:17:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210408110340.patch</filename>
            <type>text/plain</type>
            <size>3018</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi40M2UzMDFiNTZh
YmZjOTU2MmYxYjFmNjc4ZmZkODI4Y2FlNzBjZDFkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNC0wNyAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCByZXZpc2lvbiBsYWJlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiwgd2hpY2ggd2lsbCBsZXQg
dGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0aGUgY29tbWl0IHJldmlzaW9uIGlkZW50aWZpZXIgZnJv
bSB0aGUgY29tbWl0IG1lc3NhZ2UuCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6
CisgICAgICAgIChsb2FkX3JlcG9zaXRvcnkpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeSk6Cisg
ICAgICAgIChHaXRSZXBvc2l0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnku
X3JldmlzaW9uX2Zyb21fdG9rZW5zKTogCisKIDIwMjEtMDMtMzEgIFpoaWZlaSBGYW5nICA8emhp
ZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb21taXQgcmV2aXNpb24gbGFiZWwg
c3VwcG9ydApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMt
Y29tbWl0cy5weSBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMu
cHkKaW5kZXggODc5OTc1MGYzZGEzYWM4YjU5ODU3YmY3YzQ2NThmYmQ2ODk4Y2QzZi4uMzJmODc4
Y2JiMTI0YWQxOTM5ZDZkMWM0NzNlZTk3ZjRjMWIwNjAzMSAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weQorKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CkBAIC0xOTEsMTQgKzE5MSwxOCBAQCBj
bGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiAKIGNsYXNzIEdpdFJlcG9zaXRvcnko
UmVwb3NpdG9yeSk6CisgICAgIyBUaGVyZSBhcmUgc29tZSBidWdneSBjb21taXQgbWVzc2FnZXM6
CisgICAgIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvaHR0cHM6
Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KKyAgICBSRVZJU0lPTl9JREVOVElGSUVS
X1JFID0gcmUuY29tcGlsZShyJ0Nhbm9uaWNhbCBsaW5rOiAoaHR0cHM6Ly9jb21taXRzLndlYmtp
dC5vcmcvKSsoP1A8cmV2aXNpb25faWRlbnRpZmllcj5cZCtAW1x3XC5cLV0rKVxuJykKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9icmFu
Y2g9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdpdF9jaGVja291dCwgZ2l0
X3VybCwgZ2l0X2JyYW5jaD1Ob25lLCBnZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9tX2NvbW1p
dF9tc2c9RmFsc2UpOgogICAgICAgICBhc3NlcnQob3MucGF0aC5pc2RpcihnaXRfY2hlY2tvdXQp
KQogICAgICAgICBzdXBlcihHaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhuYW1lKQogICAg
ICAgICBzZWxmLl9naXRfY2hlY2tvdXQgPSBnaXRfY2hlY2tvdXQKICAgICAgICAgc2VsZi5fZ2l0
X3VybCA9IGdpdF91cmwKICAgICAgICAgc2VsZi5fZ2l0X2JyYW5jaCA9IGdpdF9icmFuY2gKICAg
ICAgICAgc2VsZi5fdG9rZW5pemVkX2hhc2hlcyA9IFtdCisgICAgICAgIHNlbGYuX2dldF9yZXZp
c2lvbl9pZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZyA9IGdldF9yZXZpc2lvbl9pZGVudGlmaWVy
X2Zyb21fY29tbWl0X21zZwogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZl
cl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CkBA
IC0yMjksOSArMjMzLDE0IEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAg
ICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9o
YXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10pCiAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9ydW5f
Z2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQog
CisgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSBOb25lCisgICAgICAgIGlmIHNlbGYuX2dl
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZzoKKyAgICAgICAgICAgIHJldmlz
aW9uX2lkZW50aWZpZXIgPSBzZWxmLlJFVklTSU9OX0lERU5USUZJRVJfUkUuc2VhcmNoKG1lc3Nh
Z2UpLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlmaWVyJykKKwogICAgICAgICByZXR1cm4gewogICAg
ICAgICAgICAgJ3JlcG9zaXRvcnknOiBzZWxmLl9uYW1lLAogICAgICAgICAgICAgJ3JldmlzaW9u
JzogY3VycmVudF9oYXNoLAorICAgICAgICAgICAgJ3JldmlzaW9uSWRlbnRpZmllcic6IHJldmlz
aW9uX2lkZW50aWZpZXIsCiAgICAgICAgICAgICAncHJldmlvdXNDb21taXQnOiBwcmV2aW91c19o
YXNoLAogICAgICAgICAgICAgJ3RpbWUnOiBkYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdF90
aW1lKS5zdHJmdGltZShyJyVZLSVtLSVkVCVIOiVNOiVTLiVmJyksCiAgICAgICAgICAgICAnYXV0
aG9yJzogeydhY2NvdW50JzogYXV0aG9yX2VtYWlsLCAnbmFtZSc6IGF1dGhvcl9uYW1lfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426029</attachid>
            <date>2021-04-14 12:17:18 -0700</date>
            <delta_ts>2021-04-14 12:35:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210414121717.patch</filename>
            <type>text/plain</type>
            <size>3663</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi40M2UzMDFiNTZh
YmZjOTU2MmYxYjFmNjc4ZmZkODI4Y2FlNzBjZDFkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNC0wNyAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCByZXZpc2lvbiBsYWJlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiwgd2hpY2ggd2lsbCBsZXQg
dGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0aGUgY29tbWl0IHJldmlzaW9uIGlkZW50aWZpZXIgZnJv
bSB0aGUgY29tbWl0IG1lc3NhZ2UuCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6
CisgICAgICAgIChsb2FkX3JlcG9zaXRvcnkpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeSk6Cisg
ICAgICAgIChHaXRSZXBvc2l0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnku
X3JldmlzaW9uX2Zyb21fdG9rZW5zKTogCisKIDIwMjEtMDMtMzEgIFpoaWZlaSBGYW5nICA8emhp
ZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb21taXQgcmV2aXNpb24gbGFiZWwg
c3VwcG9ydApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMt
Y29tbWl0cy5weSBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMu
cHkKaW5kZXggODc5OTc1MGYzZGEzYWM4YjU5ODU3YmY3YzQ2NThmYmQ2ODk4Y2QzZi4uYzNjZDQ2
ZjBmZjIwNTBiNTUyNzAzYWJmMDcwMjgwZTc1NmFjZTM0NCAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weQorKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CkBAIC0xOTEsMTQgKzE5MSwxOCBAQCBj
bGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiAKIGNsYXNzIEdpdFJlcG9zaXRvcnko
UmVwb3NpdG9yeSk6CisgICAgIyBUaGVyZSBhcmUgc29tZSBidWdneSBjb21taXQgbWVzc2FnZXM6
CisgICAgIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvaHR0cHM6
Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KKyAgICBSRVZJU0lPTl9JREVOVElGSUVS
X1JFID0gcmUuY29tcGlsZShyJ0Nhbm9uaWNhbCBsaW5rOiAoaHR0cHM6Ly9jb21taXRzLndlYmtp
dC5vcmcvKSsoP1A8cmV2aXNpb25faWRlbnRpZmllcj5cZCtAW1x3XC5cLV0rKVxuJykKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9icmFu
Y2g9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdpdF9jaGVja291dCwgZ2l0
X3VybCwgZ2l0X2JyYW5jaD1Ob25lLCBnZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9tX2NvbW1p
dF9tc2c9RmFsc2UpOgogICAgICAgICBhc3NlcnQob3MucGF0aC5pc2RpcihnaXRfY2hlY2tvdXQp
KQogICAgICAgICBzdXBlcihHaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhuYW1lKQogICAg
ICAgICBzZWxmLl9naXRfY2hlY2tvdXQgPSBnaXRfY2hlY2tvdXQKICAgICAgICAgc2VsZi5fZ2l0
X3VybCA9IGdpdF91cmwKICAgICAgICAgc2VsZi5fZ2l0X2JyYW5jaCA9IGdpdF9icmFuY2gKICAg
ICAgICAgc2VsZi5fdG9rZW5pemVkX2hhc2hlcyA9IFtdCisgICAgICAgIHNlbGYuX2dldF9yZXZp
c2lvbl9pZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZyA9IGdldF9yZXZpc2lvbl9pZGVudGlmaWVy
X2Zyb21fY29tbWl0X21zZwogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZl
cl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CkBA
IC0yMjksOSArMjMzLDIyIEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAg
ICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9o
YXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10pCiAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9ydW5f
Z2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQog
CisgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSBOb25lCisgICAgICAgIGlmIHNlbGYuX2dl
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZzoKKyAgICAgICAgICAgIHJldmlz
aW9uX2lkZW50aWZpZXJfbWF0Y2ggPSBzZWxmLlJFVklTSU9OX0lERU5USUZJRVJfUkUuc2VhcmNo
KG1lc3NhZ2UpCisgICAgICAgICAgICBpZiByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoOgorICAg
ICAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSByZXZpc2lvbl9pZGVudGlmaWVyX21h
dGNoLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlmaWVyJykKKyAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgIyBUaGlzIGlzIGR1ZSB0byB3ZSBtYXkgaGF2ZSBzeW5jIGVycm9yIGZvciB0
aGUgY29tbWl0LCBpZiB3ZSBkb24ndCBoYXZlIHRoZSByZXZpc2lvbgorICAgICAgICAgICAgICAg
ICMgaWRlbnRpZmllciBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgYnV0IHdlIGV4cGVjdCB0bywgd2Ug
d2lsbCBlbmQgdXAgd2l0aCByZXdyaXRpbmcgdGhlIAorICAgICAgICAgICAgICAgICMgaGlzdG9y
eSBhbmQgcGVyZm9ybSBhIGZvcmNlIHB1c2gsIHRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgY29tbWl0
IGdpdCBoYXNoIGFuZCBtYWtlIHRoZSBvbGQKKyAgICAgICAgICAgICAgICAjIG9uZSB1c2VsZXNz
LiBJZiB3ZSBkZXRlY3QgdGhpcywgd2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhpcyBjb21taXQuCisg
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRXhwZWN0ZWQgY29tbWl0IG1lc3NhZ2Ug
aW5jbHVkZXMgcmV2aXNpb24gaWRlbnRpZmllciwgYnV0IGNhbm5vdCBmaW5kIGl0JykKKwogICAg
ICAgICByZXR1cm4gewogICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiBzZWxmLl9uYW1lLAogICAg
ICAgICAgICAgJ3JldmlzaW9uJzogY3VycmVudF9oYXNoLAorICAgICAgICAgICAgJ3JldmlzaW9u
SWRlbnRpZmllcic6IHJldmlzaW9uX2lkZW50aWZpZXIsCiAgICAgICAgICAgICAncHJldmlvdXND
b21taXQnOiBwcmV2aW91c19oYXNoLAogICAgICAgICAgICAgJ3RpbWUnOiBkYXRldGltZS5mcm9t
dGltZXN0YW1wKGNvbW1pdF90aW1lKS5zdHJmdGltZShyJyVZLSVtLSVkVCVIOiVNOiVTLiVmJyks
CiAgICAgICAgICAgICAnYXV0aG9yJzogeydhY2NvdW50JzogYXV0aG9yX2VtYWlsLCAnbmFtZSc6
IGF1dGhvcl9uYW1lfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426032</attachid>
            <date>2021-04-14 12:35:15 -0700</date>
            <delta_ts>2021-04-14 12:36:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210414123514.patch</filename>
            <type>text/plain</type>
            <size>6139</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi40M2UzMDFiNTZh
YmZjOTU2MmYxYjFmNjc4ZmZkODI4Y2FlNzBjZDFkIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wNC0wNyAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCByZXZpc2lvbiBsYWJlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiwgd2hpY2ggd2lsbCBsZXQg
dGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0aGUgY29tbWl0IHJldmlzaW9uIGlkZW50aWZpZXIgZnJv
bSB0aGUgY29tbWl0IG1lc3NhZ2UuCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6
CisgICAgICAgIChsb2FkX3JlcG9zaXRvcnkpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeSk6Cisg
ICAgICAgIChHaXRSZXBvc2l0b3J5Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnku
X3JldmlzaW9uX2Zyb21fdG9rZW5zKTogCisKIDIwMjEtMDMtMzEgIFpoaWZlaSBGYW5nICA8emhp
ZmVpX2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb21taXQgcmV2aXNpb24gbGFiZWwg
c3VwcG9ydApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMt
Y29tbWl0cy5weSBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMu
cHkKaW5kZXggODc5OTc1MGYzZGEzYWM4YjU5ODU3YmY3YzQ2NThmYmQ2ODk4Y2QzZi4uZGE0MzRl
ZWIwOGI4YWM2ZWE0OGY4ZmZkNWY0MmE3OGVlNTgwM2EzYyAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMv
cGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weQorKysgYi9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CkBAIC0xNiw2ICsxNiwxMCBAQCBmcm9t
IHV0aWwgaW1wb3J0IGxvYWRfc2VydmVyX2NvbmZpZwogZnJvbSB1dGlsIGltcG9ydCBzdWJtaXRf
Y29tbWl0cwogZnJvbSB1dGlsIGltcG9ydCB0ZXh0X2NvbnRlbnQKIAorIyBUaGVyZSBhcmUgc29t
ZSBidWdneSBjb21taXQgbWVzc2FnZXM6CisjIENhbm9uaWNhbCBsaW5rOiBodHRwczovL2NvbW1p
dHMud2Via2l0Lm9yZy9odHRwczovL2NvbW1pdHMud2Via2l0Lm9yZy8yMzI0NzdAbWFpbgorUkVW
SVNJT05fSURFTlRJRklFUl9SRSA9IHJlLmNvbXBpbGUocidDYW5vbmljYWwgbGluazogKGh0dHBz
Oi8vY29tbWl0cy53ZWJraXQub3JnLykrKD9QPHJldmlzaW9uX2lkZW50aWZpZXI+XGQrQFtcd1wu
XC1dKylcbicpCisKIAogZGVmIG1haW4oYXJndik6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJn
dW1lbnRQYXJzZXIoKQpAQCAtMTI0LDEzICsxMjgsMTQgQEAgY2xhc3MgUmVwb3NpdG9yeShvYmpl
Y3QpOgogCiBjbGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWUsIHN2bl91cmwsIHNob3VsZF90cnVzdF9jZXJ0aWZpY2F0ZSwgdXNlX3Nl
cnZlcl9hdXRoLCBhY2NvdW50X25hbWVfc2NyaXB0X3BhdGgpOgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCBzdm5fdXJsLCBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGUsIHVzZV9zZXJ2ZXJf
YXV0aCwgYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRoLCBnZXRfcmV2aXNpb25faWRlbnRpZmllcl9m
cm9tX2NvbW1pdF9tc2cpOgogICAgICAgICBhc3NlcnQgbm90IGFjY291bnRfbmFtZV9zY3JpcHRf
cGF0aCBvciBpc2luc3RhbmNlKGFjY291bnRfbmFtZV9zY3JpcHRfcGF0aCwgbGlzdCkKICAgICAg
ICAgc3VwZXIoU1ZOUmVwb3NpdG9yeSwgc2VsZikuX19pbml0X18obmFtZSkKICAgICAgICAgc2Vs
Zi5fc3ZuX3VybCA9IHN2bl91cmwKICAgICAgICAgc2VsZi5fc2hvdWxkX3RydXN0X2NlcnRpZmlj
YXRlID0gc2hvdWxkX3RydXN0X2NlcnRpZmljYXRlCiAgICAgICAgIHNlbGYuX3VzZV9zZXJ2ZXJf
YXV0aCA9IHVzZV9zZXJ2ZXJfYXV0aAogICAgICAgICBzZWxmLl9hY2NvdW50X25hbWVfc2NyaXB0
X3BhdGggPSBhY2NvdW50X25hbWVfc2NyaXB0X3BhdGgKKyAgICAgICAgc2VsZi5fZ2V0X3Jldmlz
aW9uX2lkZW50aWZpZXJfZnJvbV9jb21taXRfbXNnID0gZ2V0X3JldmlzaW9uX2lkZW50aWZpZXJf
ZnJvbV9jb21taXRfbXNnCiAKICAgICBkZWYgZmV0Y2hfbmV4dF9jb21taXQoc2VsZiwgc2VydmVy
X2NvbmZpZywgbGFzdF9mZXRjaGVkKToKICAgICAgICAgaWYgbm90IGxhc3RfZmV0Y2hlZDoKQEAg
LTE2MCwxMSArMTY1LDI1IEBAIGNsYXNzIFNWTlJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAg
ICAgIGF1dGhvcl9hY2NvdW50ID0gdGV4dF9jb250ZW50KGF1dGhvcl9lbGVtZW50c1swXSkgaWYg
YXV0aG9yX2VsZW1lbnRzLmxlbmd0aCBlbHNlIE5vbmUKICAgICAgICAgbWVzc2FnZSA9IHRleHRf
Y29udGVudCh4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIm1zZyIpWzBdKQogCisgICAgICAgIHJl
dmlzaW9uX2lkZW50aWZpZXIgPSBOb25lCisgICAgICAgIGlmIHNlbGYuX2dldF9yZXZpc2lvbl9p
ZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZzoKKyAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZp
ZXJfbWF0Y2ggPSBSRVZJU0lPTl9JREVOVElGSUVSX1JFLnNlYXJjaChtZXNzYWdlKQorICAgICAg
ICAgICAgaWYgcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaDoKKyAgICAgICAgICAgICAgICByZXZp
c2lvbl9pZGVudGlmaWVyID0gcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaC5ncm91cCgncmV2aXNp
b25faWRlbnRpZmllcicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgVGhp
cyBpcyBkdWUgdG8gd2UgbWF5IGhhdmUgc3luYyBlcnJvciBmb3IgdGhlIGNvbW1pdCwgaWYgd2Ug
ZG9uJ3QgaGF2ZSB0aGUgcmV2aXNpb24KKyAgICAgICAgICAgICAgICAjIGlkZW50aWZpZXIgaW4g
dGhlIGNvbW1pdCBtZXNzYWdlIGJ1dCB3ZSBleHBlY3QgdG8sIHdlIHdpbGwgZW5kIHVwIHdpdGgg
cmV3cml0aW5nIHRoZQorICAgICAgICAgICAgICAgICMgaGlzdG9yeSBhbmQgcGVyZm9ybSBhIGZv
cmNlIHB1c2gsIHRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgY29tbWl0IGdpdCBoYXNoIGFuZCBtYWtl
IHRoZSBvbGQKKyAgICAgICAgICAgICAgICAjIG9uZSB1c2VsZXNzLiBJZiB3ZSBkZXRlY3QgdGhp
cywgd2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhpcyBjb21taXQuCisgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignRXhwZWN0ZWQgY29tbWl0IG1lc3NhZ2UgaW5jbHVkZXMgcmV2aXNpb24g
aWRlbnRpZmllciwgYnV0IGNhbm5vdCBmaW5kIGl0JykKKworCiAgICAgICAgIG5hbWUgPSBzZWxm
Ll9yZXNvbHZlX2F1dGhvcl9uYW1lKGF1dGhvcl9hY2NvdW50KSBpZiBhdXRob3JfYWNjb3VudCBh
bmQgc2VsZi5fYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRoIGVsc2UgTm9uZQogCiAgICAgICAgIHJl
c3VsdCA9IHsKICAgICAgICAgICAgICdyZXBvc2l0b3J5Jzogc2VsZi5fbmFtZSwKICAgICAgICAg
ICAgICdyZXZpc2lvbic6IHJldmlzaW9uX3RvX2ZldGNoLAorICAgICAgICAgICAgJ3JldmlzaW9u
SWRlbnRpZmllcic6IHJldmlzaW9uX2lkZW50aWZpZXIsCiAgICAgICAgICAgICAndGltZSc6IHRp
bWUsCiAgICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsCiAgICAgICAgIH0KQEAgLTE5Miwx
MyArMjExLDE0IEBAIGNsYXNzIFNWTlJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAKIGNsYXNzIEdp
dFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwg
Z2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9icmFuY2g9Tm9uZSwgZ2V0
X3JldmlzaW9uX2lkZW50aWZpZXJfZnJvbV9jb21taXRfbXNnPUZhbHNlKToKICAgICAgICAgYXNz
ZXJ0KG9zLnBhdGguaXNkaXIoZ2l0X2NoZWNrb3V0KSkKICAgICAgICAgc3VwZXIoR2l0UmVwb3Np
dG9yeSwgc2VsZikuX19pbml0X18obmFtZSkKICAgICAgICAgc2VsZi5fZ2l0X2NoZWNrb3V0ID0g
Z2l0X2NoZWNrb3V0CiAgICAgICAgIHNlbGYuX2dpdF91cmwgPSBnaXRfdXJsCiAgICAgICAgIHNl
bGYuX2dpdF9icmFuY2ggPSBnaXRfYnJhbmNoCiAgICAgICAgIHNlbGYuX3Rva2VuaXplZF9oYXNo
ZXMgPSBbXQorICAgICAgICBzZWxmLl9nZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9tX2NvbW1p
dF9tc2cgPSBnZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9tX2NvbW1pdF9tc2cKIAogICAgIGRl
ZiBmZXRjaF9uZXh0X2NvbW1pdChzZWxmLCBzZXJ2ZXJfY29uZmlnLCBsYXN0X2ZldGNoZWQpOgog
ICAgICAgICBpZiBub3QgbGFzdF9mZXRjaGVkOgpAQCAtMjI5LDkgKzI0OSwyMiBAQCBjbGFzcyBH
aXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX3J1
bl9naXRfY29tbWFuZChbJ2xvZycsIGN1cnJlbnRfaGFzaCwgJy0xJywgJy0tcHJldHR5PSVjbidd
KQogICAgICAgICBtZXNzYWdlID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVu
dF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JUInXSkKIAorICAgICAgICByZXZpc2lvbl9pZGVudGlm
aWVyID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9nZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9t
X2NvbW1pdF9tc2c6CisgICAgICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoID0gUkVW
SVNJT05fSURFTlRJRklFUl9SRS5zZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIHJldmlz
aW9uX2lkZW50aWZpZXJfbWF0Y2g6CisgICAgICAgICAgICAgICAgcmV2aXNpb25faWRlbnRpZmll
ciA9IHJldmlzaW9uX2lkZW50aWZpZXJfbWF0Y2guZ3JvdXAoJ3JldmlzaW9uX2lkZW50aWZpZXIn
KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgZHVlIHRvIHdl
IG1heSBoYXZlIHN5bmMgZXJyb3IgZm9yIHRoZSBjb21taXQsIGlmIHdlIGRvbid0IGhhdmUgdGhl
IHJldmlzaW9uCisgICAgICAgICAgICAgICAgIyBpZGVudGlmaWVyIGluIHRoZSBjb21taXQgbWVz
c2FnZSBidXQgd2UgZXhwZWN0IHRvLCB3ZSB3aWxsIGVuZCB1cCB3aXRoIHJld3JpdGluZyB0aGUK
KyAgICAgICAgICAgICAgICAjIGhpc3RvcnkgYW5kIHBlcmZvcm0gYSBmb3JjZSBwdXNoLCB0aGlz
IHdpbGwgY3JlYXRlIGEgbmV3IGNvbW1pdCBnaXQgaGFzaCBhbmQgbWFrZSB0aGUgb2xkCisgICAg
ICAgICAgICAgICAgIyBvbmUgdXNlbGVzcy4gSWYgd2UgZGV0ZWN0IHRoaXMsIHdlIHNob3VsZCBu
b3QgcmVwb3J0IHRoaXMgY29tbWl0LgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0V4cGVjdGVkIGNvbW1pdCBtZXNzYWdlIGluY2x1ZGVzIHJldmlzaW9uIGlkZW50aWZpZXIsIGJ1
dCBjYW5ub3QgZmluZCBpdCcpCisKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICdyZXBv
c2l0b3J5Jzogc2VsZi5fbmFtZSwKICAgICAgICAgICAgICdyZXZpc2lvbic6IGN1cnJlbnRfaGFz
aCwKKyAgICAgICAgICAgICdyZXZpc2lvbklkZW50aWZpZXInOiByZXZpc2lvbl9pZGVudGlmaWVy
LAogICAgICAgICAgICAgJ3ByZXZpb3VzQ29tbWl0JzogcHJldmlvdXNfaGFzaCwKICAgICAgICAg
ICAgICd0aW1lJzogZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChjb21taXRfdGltZSkuc3RyZnRpbWUo
ciclWS0lbS0lZFQlSDolTTolUy4lZicpLAogICAgICAgICAgICAgJ2F1dGhvcic6IHsnYWNjb3Vu
dCc6IGF1dGhvcl9lbWFpbCwgJ25hbWUnOiBhdXRob3JfbmFtZX0sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426034</attachid>
            <date>2021-04-14 12:36:35 -0700</date>
            <delta_ts>2021-04-14 22:03:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210414123634.patch</filename>
            <type>text/plain</type>
            <size>6165</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi5iZWU2NjlmZDc2
MzZhOTI1NDllODlkZDI1YjVhMzNlNDU1OTkwZmM1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHN5bmNpbmcgcmVwbyB3
aXRoIGNvbW1pdCByZXZpc2lvbiBsYWJlbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiwgd2hpY2ggd2lsbCBsZXQg
dGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0aGUgY29tbWl0IHJldmlzaW9uIGlkZW50aWZpZXIgZnJv
bSB0aGUgY29tbWl0IG1lc3NhZ2UuCisKKworICAgICAgICAqIHRvb2xzL3N5bmMtY29tbWl0cy5w
eToKKyAgICAgICAgKFNWTlJlcG9zaXRvcnkuX19pbml0X18pOgorICAgICAgICAoU1ZOUmVwb3Np
dG9yeS5mZXRjaF9uZXh0X2NvbW1pdCk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5Ll9faW5pdF9f
KToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuX3JldmlzaW9uX2Zyb21fdG9rZW5zKToKKwogMjAy
MS0wMy0zMSAgWmhpZmVpIEZhbmcgIDx6aGlmZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBzdXBwb3J0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weQppbmRleCA4Nzk5NzUwZjNkYTNhYzhiNTk4NTdi
ZjdjNDY1OGZiZDY4OThjZDNmLi5kYTQzNGVlYjA4YjhhYzZlYTQ4ZjhmZmQ1ZjQyYTc4ZWU1ODAz
YTNjIDEwMDc1NQotLS0gYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21t
aXRzLnB5CisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMu
cHkKQEAgLTE2LDYgKzE2LDEwIEBAIGZyb20gdXRpbCBpbXBvcnQgbG9hZF9zZXJ2ZXJfY29uZmln
CiBmcm9tIHV0aWwgaW1wb3J0IHN1Ym1pdF9jb21taXRzCiBmcm9tIHV0aWwgaW1wb3J0IHRleHRf
Y29udGVudAogCisjIFRoZXJlIGFyZSBzb21lIGJ1Z2d5IGNvbW1pdCBtZXNzYWdlczoKKyMgQ2Fu
b25pY2FsIGxpbms6IGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL2h0dHBzOi8vY29tbWl0cy53
ZWJraXQub3JnLzIzMjQ3N0BtYWluCitSRVZJU0lPTl9JREVOVElGSUVSX1JFID0gcmUuY29tcGls
ZShyJ0Nhbm9uaWNhbCBsaW5rOiAoaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvKSsoP1A8cmV2
aXNpb25faWRlbnRpZmllcj5cZCtAW1x3XC5cLV0rKVxuJykKKwogCiBkZWYgbWFpbihhcmd2KToK
ICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCkBAIC0xMjQsMTMgKzEyOCwx
NCBAQCBjbGFzcyBSZXBvc2l0b3J5KG9iamVjdCk6CiAKIGNsYXNzIFNWTlJlcG9zaXRvcnkoUmVw
b3NpdG9yeSk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc3ZuX3VybCwgc2hvdWxk
X3RydXN0X2NlcnRpZmljYXRlLCB1c2Vfc2VydmVyX2F1dGgsIGFjY291bnRfbmFtZV9zY3JpcHRf
cGF0aCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN2bl91cmwsIHNob3VsZF90cnVz
dF9jZXJ0aWZpY2F0ZSwgdXNlX3NlcnZlcl9hdXRoLCBhY2NvdW50X25hbWVfc2NyaXB0X3BhdGgs
IGdldF9yZXZpc2lvbl9pZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZyk6CiAgICAgICAgIGFzc2Vy
dCBub3QgYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRoIG9yIGlzaW5zdGFuY2UoYWNjb3VudF9uYW1l
X3NjcmlwdF9wYXRoLCBsaXN0KQogICAgICAgICBzdXBlcihTVk5SZXBvc2l0b3J5LCBzZWxmKS5f
X2luaXRfXyhuYW1lKQogICAgICAgICBzZWxmLl9zdm5fdXJsID0gc3ZuX3VybAogICAgICAgICBz
ZWxmLl9zaG91bGRfdHJ1c3RfY2VydGlmaWNhdGUgPSBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGUK
ICAgICAgICAgc2VsZi5fdXNlX3NlcnZlcl9hdXRoID0gdXNlX3NlcnZlcl9hdXRoCiAgICAgICAg
IHNlbGYuX2FjY291bnRfbmFtZV9zY3JpcHRfcGF0aCA9IGFjY291bnRfbmFtZV9zY3JpcHRfcGF0
aAorICAgICAgICBzZWxmLl9nZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9tX2NvbW1pdF9tc2cg
PSBnZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9tX2NvbW1pdF9tc2cKIAogICAgIGRlZiBmZXRj
aF9uZXh0X2NvbW1pdChzZWxmLCBzZXJ2ZXJfY29uZmlnLCBsYXN0X2ZldGNoZWQpOgogICAgICAg
ICBpZiBub3QgbGFzdF9mZXRjaGVkOgpAQCAtMTYwLDExICsxNjUsMjUgQEAgY2xhc3MgU1ZOUmVw
b3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgYXV0aG9yX2FjY291bnQgPSB0ZXh0X2NvbnRl
bnQoYXV0aG9yX2VsZW1lbnRzWzBdKSBpZiBhdXRob3JfZWxlbWVudHMubGVuZ3RoIGVsc2UgTm9u
ZQogICAgICAgICBtZXNzYWdlID0gdGV4dF9jb250ZW50KHhtbC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgibXNnIilbMF0pCiAKKyAgICAgICAgcmV2aXNpb25faWRlbnRpZmllciA9IE5vbmUKKyAgICAg
ICAgaWYgc2VsZi5fZ2V0X3JldmlzaW9uX2lkZW50aWZpZXJfZnJvbV9jb21taXRfbXNnOgorICAg
ICAgICAgICAgcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaCA9IFJFVklTSU9OX0lERU5USUZJRVJf
UkUuc2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICBpZiByZXZpc2lvbl9pZGVudGlmaWVyX21h
dGNoOgorICAgICAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSByZXZpc2lvbl9pZGVu
dGlmaWVyX21hdGNoLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlmaWVyJykKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGR1ZSB0byB3ZSBtYXkgaGF2ZSBzeW5jIGVy
cm9yIGZvciB0aGUgY29tbWl0LCBpZiB3ZSBkb24ndCBoYXZlIHRoZSByZXZpc2lvbgorICAgICAg
ICAgICAgICAgICMgaWRlbnRpZmllciBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgYnV0IHdlIGV4cGVj
dCB0bywgd2Ugd2lsbCBlbmQgdXAgd2l0aCByZXdyaXRpbmcgdGhlCisgICAgICAgICAgICAgICAg
IyBoaXN0b3J5IGFuZCBwZXJmb3JtIGEgZm9yY2UgcHVzaCwgdGhpcyB3aWxsIGNyZWF0ZSBhIG5l
dyBjb21taXQgZ2l0IGhhc2ggYW5kIG1ha2UgdGhlIG9sZAorICAgICAgICAgICAgICAgICMgb25l
IHVzZWxlc3MuIElmIHdlIGRldGVjdCB0aGlzLCB3ZSBzaG91bGQgbm90IHJlcG9ydCB0aGlzIGNv
bW1pdC4KKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCBjb21taXQg
bWVzc2FnZSBpbmNsdWRlcyByZXZpc2lvbiBpZGVudGlmaWVyLCBidXQgY2Fubm90IGZpbmQgaXQn
KQorCisKICAgICAgICAgbmFtZSA9IHNlbGYuX3Jlc29sdmVfYXV0aG9yX25hbWUoYXV0aG9yX2Fj
Y291bnQpIGlmIGF1dGhvcl9hY2NvdW50IGFuZCBzZWxmLl9hY2NvdW50X25hbWVfc2NyaXB0X3Bh
dGggZWxzZSBOb25lCiAKICAgICAgICAgcmVzdWx0ID0gewogICAgICAgICAgICAgJ3JlcG9zaXRv
cnknOiBzZWxmLl9uYW1lLAogICAgICAgICAgICAgJ3JldmlzaW9uJzogcmV2aXNpb25fdG9fZmV0
Y2gsCisgICAgICAgICAgICAncmV2aXNpb25JZGVudGlmaWVyJzogcmV2aXNpb25faWRlbnRpZmll
ciwKICAgICAgICAgICAgICd0aW1lJzogdGltZSwKICAgICAgICAgICAgICdtZXNzYWdlJzogbWVz
c2FnZSwKICAgICAgICAgfQpAQCAtMTkyLDEzICsyMTEsMTQgQEAgY2xhc3MgU1ZOUmVwb3NpdG9y
eShSZXBvc2l0b3J5KToKIAogY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9icmFu
Y2g9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdpdF9jaGVja291dCwgZ2l0
X3VybCwgZ2l0X2JyYW5jaD1Ob25lLCBnZXRfcmV2aXNpb25faWRlbnRpZmllcl9mcm9tX2NvbW1p
dF9tc2c9RmFsc2UpOgogICAgICAgICBhc3NlcnQob3MucGF0aC5pc2RpcihnaXRfY2hlY2tvdXQp
KQogICAgICAgICBzdXBlcihHaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhuYW1lKQogICAg
ICAgICBzZWxmLl9naXRfY2hlY2tvdXQgPSBnaXRfY2hlY2tvdXQKICAgICAgICAgc2VsZi5fZ2l0
X3VybCA9IGdpdF91cmwKICAgICAgICAgc2VsZi5fZ2l0X2JyYW5jaCA9IGdpdF9icmFuY2gKICAg
ICAgICAgc2VsZi5fdG9rZW5pemVkX2hhc2hlcyA9IFtdCisgICAgICAgIHNlbGYuX2dldF9yZXZp
c2lvbl9pZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZyA9IGdldF9yZXZpc2lvbl9pZGVudGlmaWVy
X2Zyb21fY29tbWl0X21zZwogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZl
cl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CkBA
IC0yMjksOSArMjQ5LDIyIEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAg
ICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9o
YXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10pCiAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9ydW5f
Z2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQog
CisgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSBOb25lCisgICAgICAgIGlmIHNlbGYuX2dl
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2Zyb21fY29tbWl0X21zZzoKKyAgICAgICAgICAgIHJldmlz
aW9uX2lkZW50aWZpZXJfbWF0Y2ggPSBSRVZJU0lPTl9JREVOVElGSUVSX1JFLnNlYXJjaChtZXNz
YWdlKQorICAgICAgICAgICAgaWYgcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaDoKKyAgICAgICAg
ICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVyID0gcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaC5n
cm91cCgncmV2aXNpb25faWRlbnRpZmllcicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICMgVGhpcyBpcyBkdWUgdG8gd2UgbWF5IGhhdmUgc3luYyBlcnJvciBmb3IgdGhlIGNv
bW1pdCwgaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgcmV2aXNpb24KKyAgICAgICAgICAgICAgICAjIGlk
ZW50aWZpZXIgaW4gdGhlIGNvbW1pdCBtZXNzYWdlIGJ1dCB3ZSBleHBlY3QgdG8sIHdlIHdpbGwg
ZW5kIHVwIHdpdGggcmV3cml0aW5nIHRoZQorICAgICAgICAgICAgICAgICMgaGlzdG9yeSBhbmQg
cGVyZm9ybSBhIGZvcmNlIHB1c2gsIHRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgY29tbWl0IGdpdCBo
YXNoIGFuZCBtYWtlIHRoZSBvbGQKKyAgICAgICAgICAgICAgICAjIG9uZSB1c2VsZXNzLiBJZiB3
ZSBkZXRlY3QgdGhpcywgd2Ugc2hvdWxkIG5vdCByZXBvcnQgdGhpcyBjb21taXQuCisgICAgICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRXhwZWN0ZWQgY29tbWl0IG1lc3NhZ2UgaW5jbHVk
ZXMgcmV2aXNpb24gaWRlbnRpZmllciwgYnV0IGNhbm5vdCBmaW5kIGl0JykKKwogICAgICAgICBy
ZXR1cm4gewogICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiBzZWxmLl9uYW1lLAogICAgICAgICAg
ICAgJ3JldmlzaW9uJzogY3VycmVudF9oYXNoLAorICAgICAgICAgICAgJ3JldmlzaW9uSWRlbnRp
Zmllcic6IHJldmlzaW9uX2lkZW50aWZpZXIsCiAgICAgICAgICAgICAncHJldmlvdXNDb21taXQn
OiBwcmV2aW91c19oYXNoLAogICAgICAgICAgICAgJ3RpbWUnOiBkYXRldGltZS5mcm9tdGltZXN0
YW1wKGNvbW1pdF90aW1lKS5zdHJmdGltZShyJyVZLSVtLSVkVCVIOiVNOiVTLiVmJyksCiAgICAg
ICAgICAgICAnYXV0aG9yJzogeydhY2NvdW50JzogYXV0aG9yX2VtYWlsLCAnbmFtZSc6IGF1dGhv
cl9uYW1lfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426074</attachid>
            <date>2021-04-14 22:03:43 -0700</date>
            <delta_ts>2021-05-03 14:31:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210414220342.patch</filename>
            <type>text/plain</type>
            <size>7716</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi4yNTJmM2EzYjVi
YWE3ZDY5M2I1OWIxZDc0ODRlOTkxZGM5ZDI2MDY4IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CitBZGQgc3VwcG9ydCBmb3Igc3luY2luZyByZXBvIHdpdGggY29tbWl0
IHJldmlzaW9uIGxhYmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjE5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFJldmlzaW9uSWRlbnRpZmllciwg
d2hpY2ggd2lsbCBsZXQgdGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0aGUgY29tbWl0IHJldmlzaW9u
IGlkZW50aWZpZXIgZnJvbSB0aGUgY29tbWl0IG1lc3NhZ2UuCisgICAgICAgIEFkZCBuZXcgc3lu
Y2luZyBvcHRpb24gcmVwb3J0U1ZOUmV2aXNpb24sIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQg
dHJ5IHRvIHJlcG9ydCBTVk4gcmV2aXNpb24gZnJvbSBhIGdpdC1zdm4gcmVwbworCisgICAgICAg
ICogdG9vbHMvc3luYy1jb21taXRzLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgIChsb2Fk
X3JlcG9zaXRvcnkpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeS5fX2luaXRfXyk6CisgICAgICAg
IChHaXRSZXBvc2l0b3J5LmZldGNoX25leHRfY29tbWl0KToKKyAgICAgICAgKEdpdFJlcG9zaXRv
cnkuX2dldF9zdm5fcmV2aXNpb25fZnJvbV9tZXNzYWdlKToKKyAgICAgICAgKEdpdFJlcG9zaXRv
cnkuX3JldmlzaW9uX2Zyb21fdG9rZW5zKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuX2ZldGNo
X2FsbF9oYXNoZXMpOgorCiAyMDIxLTAzLTMxICBaaGlmZWkgRmFuZyAgPHpoaWZlaV9mYW5nQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgY29tbWl0IHJldmlzaW9uIGxhYmVsIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkg
Yi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CmluZGV4IDg3
OTk3NTBmM2RhM2FjOGI1OTg1N2JmN2M0NjU4ZmJkNjg5OGNkM2YuLjA4ODUxMzZjZTgxZDY0YThh
ZjM4YzE3ZTg0MjkzMGI4MGZlNjQ0YjQgMTAwNzU1Ci0tLSBhL1dlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKKysrIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3Jn
L3Rvb2xzL3N5bmMtY29tbWl0cy5weQpAQCAtMTYsNiArMTYsMTAgQEAgZnJvbSB1dGlsIGltcG9y
dCBsb2FkX3NlcnZlcl9jb25maWcKIGZyb20gdXRpbCBpbXBvcnQgc3VibWl0X2NvbW1pdHMKIGZy
b20gdXRpbCBpbXBvcnQgdGV4dF9jb250ZW50CiAKKyMgVGhlcmUgYXJlIHNvbWUgYnVnZ3kgY29t
bWl0IG1lc3NhZ2VzOgorIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRzLndlYmtpdC5v
cmcvaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KK1JFVklTSU9OX0lERU5U
SUZJRVJfUkUgPSByZS5jb21waWxlKHInQ2Fub25pY2FsIGxpbms6IChodHRwczovL2NvbW1pdHMu
d2Via2l0Lm9yZy8pKyg/UDxyZXZpc2lvbl9pZGVudGlmaWVyPlxkK0BbXHdcLlwtXSspXG4nKQor
U1ZOX1JFVklTSU9OX1JFID0gcmUuY29tcGlsZShyJ2dpdC1zdm4taWQ6IGh0dHBzOi8vc3ZuLndl
YmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvdHJ1bmtAKD9QPHN2bl9yZXZpc2lvbj5cZCspXHMn
KQogCiBkZWYgbWFpbihhcmd2KToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNl
cigpCkBAIC0zMiwxMCArMzYsNyBAQCBkZWYgbWFpbihhcmd2KToKICAgICB3aGlsZSBUcnVlOgog
ICAgICAgICBzZXJ2ZXJfY29uZmlnID0gbG9hZF9zZXJ2ZXJfY29uZmlnKGFyZ3Muc2VydmVyX2Nv
bmZpZ19qc29uKQogICAgICAgICBmb3IgcmVwb3NpdG9yeSBpbiByZXBvc2l0b3JpZXM6Ci0gICAg
ICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS5mZXRjaF9jb21taXRzX2Fu
ZF9zdWJtaXQoc2VydmVyX2NvbmZpZywgYXJncy5tYXhfZmV0Y2hfY291bnQsIGFyZ3MubWF4X2Fu
Y2VzdG9yX2ZldGNoX2NvdW50KQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnJv
cjoKLSAgICAgICAgICAgICAgICBwcmludCAiRmFpbGVkIHRvIGZldGNoIGFuZCBzeW5jOiIsIGVy
cm9yCiAKICAgICAgICAgcHJpbnQgIlNsZWVwaW5nIGZvciAlZCBzZWNvbmRzLi4uIiAlIGFyZ3Mu
c2Vjb25kc190b19zbGVlcAogICAgICAgICB0aW1lLnNsZWVwKGFyZ3Muc2Vjb25kc190b19zbGVl
cCkKQEAgLTQzLDcgKzQ0LDcgQEAgZGVmIG1haW4oYXJndik6CiAKIGRlZiBsb2FkX3JlcG9zaXRv
cnkocmVwb3NpdG9yeSk6CiAgICAgaWYgJ2dpdENoZWNrb3V0JyBpbiByZXBvc2l0b3J5OgotICAg
ICAgICByZXR1cm4gR2l0UmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwgZ2l0X3Vy
bD1yZXBvc2l0b3J5Wyd1cmwnXSwgZ2l0X2NoZWNrb3V0PXJlcG9zaXRvcnlbJ2dpdENoZWNrb3V0
J10sIGdpdF9icmFuY2g9cmVwb3NpdG9yeS5nZXQoJ2JyYW5jaCcpKQorICAgICAgICByZXR1cm4g
R2l0UmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwgZ2l0X3VybD1yZXBvc2l0b3J5
Wyd1cmwnXSwgZ2l0X2NoZWNrb3V0PXJlcG9zaXRvcnlbJ2dpdENoZWNrb3V0J10sIGdpdF9icmFu
Y2g9cmVwb3NpdG9yeS5nZXQoJ2JyYW5jaCcpLCByZXBvcnRfcmV2aXNpb25faWRlbnRpZmllcl9p
bl9jb21taXRfbXNnPXJlcG9zaXRvcnkuZ2V0KCdyZXBvcnRSZXZpc2lvbklkZW50aWZpZXInKSwg
cmVwb3J0X3N2bl9yZXZpc29uPXJlcG9zaXRvcnkuZ2V0KCdyZXBvcnRTVk5SZXZpc2lvbicpKQog
ICAgIHJldHVybiBTVk5SZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFtZSddLCBzdm5fdXJs
PXJlcG9zaXRvcnlbJ3VybCddLCBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGU9cmVwb3NpdG9yeS5n
ZXQoJ3RydXN0Q2VydGlmaWNhdGUnLCBGYWxzZSksCiAgICAgICAgIHVzZV9zZXJ2ZXJfYXV0aD1y
ZXBvc2l0b3J5LmdldCgndXNlU2VydmVyQXV0aCcsIEZhbHNlKSwgYWNjb3VudF9uYW1lX3Njcmlw
dF9wYXRoPXJlcG9zaXRvcnkuZ2V0KCdhY2NvdW50TmFtZUZpbmRlclNjcmlwdCcpKQogCkBAIC0x
OTIsMTkgKzE5MywzMCBAQCBjbGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiBjbGFz
cyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIGdpdF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5jaD1Ob25lKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUs
IHJlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9RmFsc2UsIHJlcG9ydF9z
dm5fcmV2aXNvbj1GYWxzZSk6CiAgICAgICAgIGFzc2VydChvcy5wYXRoLmlzZGlyKGdpdF9jaGVj
a291dCkpCiAgICAgICAgIHN1cGVyKEdpdFJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9fKG5hbWUp
CiAgICAgICAgIHNlbGYuX2dpdF9jaGVja291dCA9IGdpdF9jaGVja291dAogICAgICAgICBzZWxm
Ll9naXRfdXJsID0gZ2l0X3VybAogICAgICAgICBzZWxmLl9naXRfYnJhbmNoID0gZ2l0X2JyYW5j
aAogICAgICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW10KKyAgICAgICAgc2VsZi5fcmVw
b3J0X3JldmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZyA9IHJlcG9ydF9yZXZpc2lvbl9p
ZGVudGlmaWVyX2luX2NvbW1pdF9tc2cKKyAgICAgICAgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lv
biA9IHJlcG9ydF9zdm5fcmV2aXNvbgogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYs
IHNlcnZlcl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNo
ZWQ6CiAgICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFzaGVzKCkKICAgICAgICAgICAgIHRv
a2VucyA9IHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbMF0KICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIGlmIHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgIyB0cmFu
c2xhdGUgdGhlIGxhc3Qgc3ZuIHJldmlzaW9uIHRvIGdpdCBoYXNoCisgICAgICAgICAgICAgICAg
bGFzdF9mZXRjaGVkX2dpdF9oYXNoID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnc3ZuJywgJ2Zp
bmQtcmV2JywgJ3J7fScuZm9ybWF0KGxhc3RfZmV0Y2hlZCldKS5zdHJpcCgpCisgICAgICAgICAg
ICAgICAgaWYgbm90IGxhc3RfZmV0Y2hlZF9naXRfaGFzaDoKKyAgICAgICAgICAgICAgICAgICAg
c2VsZi5fZmV0Y2hfYWxsX2hhc2hlcygpCisgICAgICAgICAgICAgICAgICAgIGxhc3RfZmV0Y2hl
ZF9naXRfaGFzaCA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ3N2bicsICdmaW5kLXJldicsICdy
e30nLmZvcm1hdChsYXN0X2ZldGNoZWQpXSkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgbGFzdF9mZXRjaGVkX2dpdF9oYXNoOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignQ2Fubm90IGZpbmQgZ2l0IGhhc2ggZm9yIGxhc3QgZmV0Y2hlZCBzdm4g
cmV2aXNpb24nKQorICAgICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZCA9IGxhc3RfZmV0Y2hlZF9n
aXRfaGFzaAogICAgICAgICAgICAgdG9rZW5zID0gc2VsZi5fZmluZF9uZXh0X2hhc2gobGFzdF9m
ZXRjaGVkKQogICAgICAgICAgICAgaWYgbm90IHRva2VuczoKICAgICAgICAgICAgICAgICBzZWxm
Ll9mZXRjaF9hbGxfaGFzaGVzKCkKQEAgLTIyMCw2ICsyMzIsMTIgQEAgY2xhc3MgR2l0UmVwb3Np
dG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25f
ZnJvbV90b2tlbnModG9rZW5zKQogICAgICAgICByZXR1cm4gTm9uZQogCisgICAgZGVmIF9nZXRf
c3ZuX3JldmlzaW9uX2Zyb21fbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgc3ZuX3Jl
dmlzaW9uX21hdGNoID0gU1ZOX1JFVklTSU9OX1JFLnNlYXJjaChtZXNzYWdlKQorICAgICAgICBp
ZiBzdm5fcmV2aXNpb25fbWF0Y2g6CisgICAgICAgICAgICByZXR1cm4gc3ZuX3JldmlzaW9uX21h
dGNoLmdyb3VwKCdzdm5fcmV2aXNpb24nKQorICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVm
IF9yZXZpc2lvbl9mcm9tX3Rva2VucyhzZWxmLCB0b2tlbnMpOgogICAgICAgICBjdXJyZW50X2hh
c2ggPSB0b2tlbnNbMF0KICAgICAgICAgY29tbWl0X3RpbWUgPSBpbnQodG9rZW5zWzFdKQpAQCAt
MjI5LDEwICsyNDcsMjYgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAg
ICAgYXV0aG9yX25hbWUgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hh
c2gsICctMScsICctLXByZXR0eT0lY24nXSkKICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3J1bl9n
aXRfY29tbWFuZChbJ2xvZycsIGN1cnJlbnRfaGFzaCwgJy0xJywgJy0tcHJldHR5PSVCJ10pCiAK
KyAgICAgICAgcmV2aXNpb25faWRlbnRpZmllciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVw
b3J0X3JldmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZzoKKyAgICAgICAgICAgIHJldmlz
aW9uX2lkZW50aWZpZXJfbWF0Y2ggPSBSRVZJU0lPTl9JREVOVElGSUVSX1JFLnNlYXJjaChtZXNz
YWdlKQorICAgICAgICAgICAgaWYgbm90IHJldmlzaW9uX2lkZW50aWZpZXJfbWF0Y2g6CisgICAg
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRXhwZWN0ZWQgY29tbWl0IG1lc3NhZ2UgaW5j
bHVkZXMgcmV2aXNpb24gaWRlbnRpZmllciwgYnV0IGNhbm5vdCBmaW5kIGl0LCB3aWxsIG5lZWQg
YSBoaXN0b3J5IHJld3JpdGUgdG8gZml4IGl0JykKKyAgICAgICAgICAgIHJldmlzaW9uX2lkZW50
aWZpZXIgPSByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlm
aWVyJykKKworICAgICAgICBzdm5fcmV2aXNpb24gPSBOb25lCisgICAgICAgIHByZXZpb3VzX3Jl
dmlzaW9uID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAg
ICAgICAgICAgc3ZuX3JldmlzaW9uID0gc2VsZi5fZ2V0X3N2bl9yZXZpc2lvbl9mcm9tX21lc3Nh
Z2UobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIHByZXZpb3VzX2hhc2g6CisgICAgICAgICAgICAg
ICAgcHJldmlvdXNfbWVzc2FnZSA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ2xvZycsIHByZXZp
b3VzX2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQorICAgICAgICAgICAgICAgIHByZXZpb3Vz
X3JldmlzaW9uID0gc2VsZi5fZ2V0X3N2bl9yZXZpc2lvbl9mcm9tX21lc3NhZ2UocHJldmlvdXNf
bWVzc2FnZSkKKwogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiBz
ZWxmLl9uYW1lLAotICAgICAgICAgICAgJ3JldmlzaW9uJzogY3VycmVudF9oYXNoLAotICAgICAg
ICAgICAgJ3ByZXZpb3VzQ29tbWl0JzogcHJldmlvdXNfaGFzaCwKKyAgICAgICAgICAgICdyZXZp
c2lvbic6IGN1cnJlbnRfaGFzaCBpZiBub3Qgc3ZuX3JldmlzaW9uIGVsc2Ugc3ZuX3JldmlzaW9u
LAorICAgICAgICAgICAgJ3JldmlzaW9uSWRlbnRpZmllcic6IHJldmlzaW9uX2lkZW50aWZpZXIs
CisgICAgICAgICAgICAncHJldmlvdXNDb21taXQnOiBwcmV2aW91c19oYXNoIGlmIG5vdCBwcmV2
aW91c19yZXZpc2lvbiBlbHNlIHByZXZpb3VzX3JldmlzaW9uLAogICAgICAgICAgICAgJ3RpbWUn
OiBkYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdF90aW1lKS5zdHJmdGltZShyJyVZLSVtLSVk
VCVIOiVNOiVTLiVmJyksCiAgICAgICAgICAgICAnYXV0aG9yJzogeydhY2NvdW50JzogYXV0aG9y
X2VtYWlsLCAnbmFtZSc6IGF1dGhvcl9uYW1lfSwKICAgICAgICAgICAgICdtZXNzYWdlJzogbWVz
c2FnZSwKQEAgLTI0Niw2ICsyODAsOCBAQCBjbGFzcyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkp
OgogCiAgICAgZGVmIF9mZXRjaF9hbGxfaGFzaGVzKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5f
Z2l0X2NvbW1hbmQoWydwdWxsJywgc2VsZi5fZ2l0X3VybF0pCisgICAgICAgIGlmIHNlbGYuX3Jl
cG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAgICBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydz
dm4nLCAnZmV0Y2gnXSkKICAgICAgICAgc2NvcGUgPSBzZWxmLl9naXRfYnJhbmNoIG9yICctLWFs
bCcKICAgICAgICAgbGluZXMgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBzY29wZSwg
Jy0tZGF0ZS1vcmRlcicsICctLXJldmVyc2UnLCAnLS1wcmV0dHk9JUggJWN0ICVjZSAlUCddKS5z
cGxpdCgnXG4nKQogICAgICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW2xpbmUuc3BsaXQo
KSBmb3IgbGluZSBpbiBsaW5lc10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427603</attachid>
            <date>2021-05-03 14:31:07 -0700</date>
            <delta_ts>2021-05-03 16:00:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210503143107.patch</filename>
            <type>text/plain</type>
            <size>7855</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi4zYzY1YTk1MTMy
NzFhODljOWViOGU0MWNlNmZmMTUwZThhNDZiOGU5IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CitBZGQgc3VwcG9ydCBmb3Igc3luY2luZyByZXBvIHdpdGggY29tbWl0
IHJldmlzaW9uIGxhYmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjE5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFJldmlzaW9uSWRlbnRpZmllciwg
d2hpY2ggd2lsbCBsZXQgdGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0aGUgY29tbWl0IHJldmlzaW9u
IGlkZW50aWZpZXIgZnJvbSB0aGUgY29tbWl0IG1lc3NhZ2UuCisgICAgICAgIEFkZCBuZXcgc3lu
Y2luZyBvcHRpb24gcmVwb3J0U1ZOUmV2aXNpb24sIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQg
dHJ5IHRvIHJlcG9ydCBTVk4gcmV2aXNpb24gZnJvbSBhIGdpdC1zdm4gcmVwbworCisgICAgICAg
ICogdG9vbHMvc3luYy1jb21taXRzLnB5OgorICAgICAgICAobWFpbik6CisgICAgICAgIChsb2Fk
X3JlcG9zaXRvcnkpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeS5fX2luaXRfXyk6CisgICAgICAg
IChHaXRSZXBvc2l0b3J5LmZldGNoX25leHRfY29tbWl0KToKKyAgICAgICAgKEdpdFJlcG9zaXRv
cnkuX2dpdF9oYXNoX3RvX3N2bl9yZXZpc2lvbik6CisgICAgICAgIChHaXRSZXBvc2l0b3J5Ll9z
dm5fcmV2aXNpb25fdG9fZ2l0X2hhc2gpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeS5fcmV2aXNp
b25fZnJvbV90b2tlbnMpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeS5fZmV0Y2hfYWxsX2hhc2hl
cyk6CisKIDIwMjEtMDMtMzEgIFpoaWZlaSBGYW5nICA8emhpZmVpX2ZhbmdAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBjb21taXQgcmV2aXNpb24gbGFiZWwgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weSBiL1dlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKaW5kZXggODc5OTc1MGYzZGEz
YWM4YjU5ODU3YmY3YzQ2NThmYmQ2ODk4Y2QzZi4uN2Y5NWVlNzY0YjYyNWM1ZTdhOGM0ZmIwMTFk
ZGU5ZjJlY2YxMDIzNyAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L3N5bmMtY29tbWl0cy5weQorKysgYi9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3lu
Yy1jb21taXRzLnB5CkBAIC0xNiw2ICsxNiw5IEBAIGZyb20gdXRpbCBpbXBvcnQgbG9hZF9zZXJ2
ZXJfY29uZmlnCiBmcm9tIHV0aWwgaW1wb3J0IHN1Ym1pdF9jb21taXRzCiBmcm9tIHV0aWwgaW1w
b3J0IHRleHRfY29udGVudAogCisjIFRoZXJlIGFyZSBzb21lIGJ1Z2d5IGNvbW1pdCBtZXNzYWdl
czoKKyMgQ2Fub25pY2FsIGxpbms6IGh0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnL2h0dHBzOi8v
Y29tbWl0cy53ZWJraXQub3JnLzIzMjQ3N0BtYWluCitSRVZJU0lPTl9JREVOVElGSUVSX1JFID0g
cmUuY29tcGlsZShyJ0Nhbm9uaWNhbCBsaW5rOiAoaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcv
KSsoP1A8cmV2aXNpb25faWRlbnRpZmllcj5cZCtAW1x3XC5cLV0rKVxuJykKIAogZGVmIG1haW4o
YXJndik6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQpAQCAtMzIsMTAg
KzM1LDcgQEAgZGVmIG1haW4oYXJndik6CiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgc2VydmVy
X2NvbmZpZyA9IGxvYWRfc2VydmVyX2NvbmZpZyhhcmdzLnNlcnZlcl9jb25maWdfanNvbikKICAg
ICAgICAgZm9yIHJlcG9zaXRvcnkgaW4gcmVwb3NpdG9yaWVzOgotICAgICAgICAgICAgdHJ5Ogog
ICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuZmV0Y2hfY29tbWl0c19hbmRfc3VibWl0KHNlcnZl
cl9jb25maWcsIGFyZ3MubWF4X2ZldGNoX2NvdW50LCBhcmdzLm1heF9hbmNlc3Rvcl9mZXRjaF9j
b3VudCkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyb3I6Ci0gICAgICAgICAg
ICAgICAgcHJpbnQgIkZhaWxlZCB0byBmZXRjaCBhbmQgc3luYzoiLCBlcnJvcgogCiAgICAgICAg
IHByaW50ICJTbGVlcGluZyBmb3IgJWQgc2Vjb25kcy4uLiIgJSBhcmdzLnNlY29uZHNfdG9fc2xl
ZXAKICAgICAgICAgdGltZS5zbGVlcChhcmdzLnNlY29uZHNfdG9fc2xlZXApCkBAIC00Myw3ICs0
Myw3IEBAIGRlZiBtYWluKGFyZ3YpOgogCiBkZWYgbG9hZF9yZXBvc2l0b3J5KHJlcG9zaXRvcnkp
OgogICAgIGlmICdnaXRDaGVja291dCcgaW4gcmVwb3NpdG9yeToKLSAgICAgICAgcmV0dXJuIEdp
dFJlcG9zaXRvcnkobmFtZT1yZXBvc2l0b3J5WyduYW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsn
dXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5WydnaXRDaGVja291dCddLCBnaXRfYnJhbmNo
PXJlcG9zaXRvcnkuZ2V0KCdicmFuY2gnKSkKKyAgICAgICAgcmV0dXJuIEdpdFJlcG9zaXRvcnko
bmFtZT1yZXBvc2l0b3J5WyduYW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9j
aGVja291dD1yZXBvc2l0b3J5WydnaXRDaGVja291dCddLCBnaXRfYnJhbmNoPXJlcG9zaXRvcnku
Z2V0KCdicmFuY2gnKSwgcmVwb3J0X3JldmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZz1y
ZXBvc2l0b3J5LmdldCgncmVwb3J0UmV2aXNpb25JZGVudGlmaWVyJyksIHJlcG9ydF9zdm5fcmV2
aXNvbj1yZXBvc2l0b3J5LmdldCgncmVwb3J0U1ZOUmV2aXNpb24nKSkKICAgICByZXR1cm4gU1ZO
UmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwgc3ZuX3VybD1yZXBvc2l0b3J5Wyd1
cmwnXSwgc2hvdWxkX3RydXN0X2NlcnRpZmljYXRlPXJlcG9zaXRvcnkuZ2V0KCd0cnVzdENlcnRp
ZmljYXRlJywgRmFsc2UpLAogICAgICAgICB1c2Vfc2VydmVyX2F1dGg9cmVwb3NpdG9yeS5nZXQo
J3VzZVNlcnZlckF1dGgnLCBGYWxzZSksIGFjY291bnRfbmFtZV9zY3JpcHRfcGF0aD1yZXBvc2l0
b3J5LmdldCgnYWNjb3VudE5hbWVGaW5kZXJTY3JpcHQnKSkKIApAQCAtMTkyLDE5ICsxOTIsMzAg
QEAgY2xhc3MgU1ZOUmVwb3NpdG9yeShSZXBvc2l0b3J5KToKIAogY2xhc3MgR2l0UmVwb3NpdG9y
eShSZXBvc2l0b3J5KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tv
dXQsIGdpdF91cmwsIGdpdF9icmFuY2g9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIGdpdF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5jaD1Ob25lLCByZXBvcnRfcmV2aXNp
b25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnPUZhbHNlLCByZXBvcnRfc3ZuX3Jldmlzb249RmFs
c2UpOgogICAgICAgICBhc3NlcnQob3MucGF0aC5pc2RpcihnaXRfY2hlY2tvdXQpKQogICAgICAg
ICBzdXBlcihHaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRfXyhuYW1lKQogICAgICAgICBzZWxm
Ll9naXRfY2hlY2tvdXQgPSBnaXRfY2hlY2tvdXQKICAgICAgICAgc2VsZi5fZ2l0X3VybCA9IGdp
dF91cmwKICAgICAgICAgc2VsZi5fZ2l0X2JyYW5jaCA9IGdpdF9icmFuY2gKICAgICAgICAgc2Vs
Zi5fdG9rZW5pemVkX2hhc2hlcyA9IFtdCisgICAgICAgIHNlbGYuX3JlcG9ydF9yZXZpc2lvbl9p
ZGVudGlmaWVyX2luX2NvbW1pdF9tc2cgPSByZXBvcnRfcmV2aXNpb25faWRlbnRpZmllcl9pbl9j
b21taXRfbXNnCisgICAgICAgIHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb24gPSByZXBvcnRfc3Zu
X3Jldmlzb24KIAogICAgIGRlZiBmZXRjaF9uZXh0X2NvbW1pdChzZWxmLCBzZXJ2ZXJfY29uZmln
LCBsYXN0X2ZldGNoZWQpOgogICAgICAgICBpZiBub3QgbGFzdF9mZXRjaGVkOgogICAgICAgICAg
ICAgc2VsZi5fZmV0Y2hfYWxsX2hhc2hlcygpCiAgICAgICAgICAgICB0b2tlbnMgPSBzZWxmLl90
b2tlbml6ZWRfaGFzaGVzWzBdCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZWxmLl9y
ZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBsYXN0
IHN2biByZXZpc2lvbiB0byBnaXQgaGFzaAorICAgICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZF9n
aXRfaGFzaCA9IHNlbGYuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaChsYXN0X2ZldGNoZWQpCisg
ICAgICAgICAgICAgICAgaWYgbm90IGxhc3RfZmV0Y2hlZF9naXRfaGFzaDoKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fZmV0Y2hfYWxsX2hhc2hlcygpCisgICAgICAgICAgICAgICAgICAgIGxh
c3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaChsYXN0
X2ZldGNoZWQpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWRfZ2l0X2hh
c2g6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZmlu
ZCBnaXQgaGFzaCBmb3IgbGFzdCBmZXRjaGVkIHN2biByZXZpc2lvbicpCisgICAgICAgICAgICAg
ICAgbGFzdF9mZXRjaGVkID0gbGFzdF9mZXRjaGVkX2dpdF9oYXNoCiAgICAgICAgICAgICB0b2tl
bnMgPSBzZWxmLl9maW5kX25leHRfaGFzaChsYXN0X2ZldGNoZWQpCiAgICAgICAgICAgICBpZiBu
b3QgdG9rZW5zOgogICAgICAgICAgICAgICAgIHNlbGYuX2ZldGNoX2FsbF9oYXNoZXMoKQpAQCAt
MjIwLDYgKzIzMSwxMiBAQCBjbGFzcyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9yZXZpc2lvbl9mcm9tX3Rva2Vucyh0b2tlbnMpCiAgICAg
ICAgIHJldHVybiBOb25lCiAKKyAgICBkZWYgX2dpdF9oYXNoX3RvX3N2bl9yZXZpc2lvbihzZWxm
LCBnaXRfaGFzaCk6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydzdm4n
LCAnZmluZC1yZXYnLCAne30nLmZvcm1hdChnaXRfaGFzaCldKS5zdHJpcCgpCisKKyAgICBkZWYg
X3N2bl9yZXZpc2lvbl90b19naXRfaGFzaChzZWxmLCByZXZpc2lvbik6CisgICAgICAgIHJldHVy
biBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydzdm4nLCAnZmluZC1yZXYnLCAncnt9Jy5mb3JtYXQo
cmV2aXNpb24pXSkuc3RyaXAoKQorCiAgICAgZGVmIF9yZXZpc2lvbl9mcm9tX3Rva2VucyhzZWxm
LCB0b2tlbnMpOgogICAgICAgICBjdXJyZW50X2hhc2ggPSB0b2tlbnNbMF0KICAgICAgICAgY29t
bWl0X3RpbWUgPSBpbnQodG9rZW5zWzFdKQpAQCAtMjI5LDEwICsyNDYsMjkgQEAgY2xhc3MgR2l0
UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgYXV0aG9yX25hbWUgPSBzZWxmLl9ydW5f
Z2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gsICctMScsICctLXByZXR0eT0lY24nXSkK
ICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ2xvZycsIGN1cnJlbnRf
aGFzaCwgJy0xJywgJy0tcHJldHR5PSVCJ10pCiAKKyAgICAgICAgcmV2aXNpb25faWRlbnRpZmll
ciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVwb3J0X3JldmlzaW9uX2lkZW50aWZpZXJfaW5f
Y29tbWl0X21zZzoKKyAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXJfbWF0Y2ggPSBSRVZJ
U0lPTl9JREVOVElGSUVSX1JFLnNlYXJjaChtZXNzYWdlKQorICAgICAgICAgICAgaWYgbm90IHJl
dmlzaW9uX2lkZW50aWZpZXJfbWF0Y2g6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cignRXhwZWN0ZWQgY29tbWl0IG1lc3NhZ2UgaW5jbHVkZXMgcmV2aXNpb24gaWRlbnRpZmllciwg
YnV0IGNhbm5vdCBmaW5kIGl0LCB3aWxsIG5lZWQgYSBoaXN0b3J5IHJld3JpdGUgdG8gZml4IGl0
JykKKyAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSByZXZpc2lvbl9pZGVudGlmaWVy
X21hdGNoLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlmaWVyJykKKworICAgICAgICBzdm5fcmV2aXNp
b24gPSBOb25lCisgICAgICAgIHByZXZpb3VzX3JldmlzaW9uID0gTm9uZQorICAgICAgICBpZiBz
ZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAgICAgICAgc3ZuX3JldmlzaW9uID0gc2Vs
Zi5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKGN1cnJlbnRfaGFzaCkKKyAgICAgICAgICAgIGlm
IG5vdCBzdm5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRXhw
ZWN0ZWQgdGhpcyBpcyBhIGdpdCBzdm4gcmVwbywgYnV0IGNhbm5vdCBmaW5kIFNWTiByZXZpc29u
IGZvciB7fScuZm9ybWF0KHN2bl9yZXZpc2lvbikpCisgICAgICAgICAgICBpZiBwcmV2aW91c19o
YXNoOgorICAgICAgICAgICAgICAgIHByZXZpb3VzX3JldmlzaW9uID0gc2VsZi5fZ2l0X2hhc2hf
dG9fc3ZuX3JldmlzaW9uKHByZXZpb3VzX2hhc2gpCisgICAgICAgICAgICAgICAgaWYgbm90IHBy
ZXZpb3VzX3JldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdF
eHBlY3RlZCB0aGlzIGlzIGEgZ2l0IHN2biByZXBvLCBidXQgY2Fubm90IGZpbmQgU1ZOIHJldmlz
b24gZm9yIHt9Jy5mb3JtYXQocHJldmlvdXNfaGFzaCkpCisKICAgICAgICAgcmV0dXJuIHsKICAg
ICAgICAgICAgICdyZXBvc2l0b3J5Jzogc2VsZi5fbmFtZSwKLSAgICAgICAgICAgICdyZXZpc2lv
bic6IGN1cnJlbnRfaGFzaCwKLSAgICAgICAgICAgICdwcmV2aW91c0NvbW1pdCc6IHByZXZpb3Vz
X2hhc2gsCisgICAgICAgICAgICAncmV2aXNpb24nOiBjdXJyZW50X2hhc2ggaWYgbm90IHN2bl9y
ZXZpc2lvbiBlbHNlIHN2bl9yZXZpc2lvbiwKKyAgICAgICAgICAgICdyZXZpc2lvbklkZW50aWZp
ZXInOiByZXZpc2lvbl9pZGVudGlmaWVyLAorICAgICAgICAgICAgJ3ByZXZpb3VzQ29tbWl0Jzog
cHJldmlvdXNfaGFzaCBpZiBub3QgcHJldmlvdXNfcmV2aXNpb24gZWxzZSBwcmV2aW91c19yZXZp
c2lvbiwKICAgICAgICAgICAgICd0aW1lJzogZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChjb21taXRf
dGltZSkuc3RyZnRpbWUociclWS0lbS0lZFQlSDolTTolUy4lZicpLAogICAgICAgICAgICAgJ2F1
dGhvcic6IHsnYWNjb3VudCc6IGF1dGhvcl9lbWFpbCwgJ25hbWUnOiBhdXRob3JfbmFtZX0sCiAg
ICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsCkBAIC0yNDYsNiArMjgyLDggQEAgY2xhc3Mg
R2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKIAogICAgIGRlZiBfZmV0Y2hfYWxsX2hhc2hlcyhz
ZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsncHVsbCcsIHNlbGYuX2dpdF91
cmxdKQorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAgICAgICAg
c2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnc3ZuJywgJ2ZldGNoJ10pCiAgICAgICAgIHNjb3BlID0g
c2VsZi5fZ2l0X2JyYW5jaCBvciAnLS1hbGwnCiAgICAgICAgIGxpbmVzID0gc2VsZi5fcnVuX2dp
dF9jb21tYW5kKFsnbG9nJywgc2NvcGUsICctLWRhdGUtb3JkZXInLCAnLS1yZXZlcnNlJywgJy0t
cHJldHR5PSVIICVjdCAlY2UgJVAnXSkuc3BsaXQoJ1xuJykKICAgICAgICAgc2VsZi5fdG9rZW5p
emVkX2hhc2hlcyA9IFtsaW5lLnNwbGl0KCkgZm9yIGxpbmUgaW4gbGluZXNdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427610</attachid>
            <date>2021-05-03 16:01:00 -0700</date>
            <delta_ts>2021-05-04 14:20:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210503160059.patch</filename>
            <type>text/plain</type>
            <size>7876</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi4xMTQ4NjQxMGFk
YTZkN2Q5YWJlMDg1NDNjYjdkNzYxMzY2N2IyNTkwIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3luY2lu
ZyByZXBvIHdpdGggY29tbWl0IHJldmlzaW9uIGxhYmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE5ODIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFJl
dmlzaW9uSWRlbnRpZmllciwgd2hpY2ggd2lsbCBsZXQgdGhlIHNjcmlwdCB0cnkgdG8gc3luYyB0
aGUgY29tbWl0IHJldmlzaW9uIGlkZW50aWZpZXIgZnJvbSB0aGUgY29tbWl0IG1lc3NhZ2UuCisg
ICAgICAgIEFkZCBuZXcgc3luY2luZyBvcHRpb24gcmVwb3J0U1ZOUmV2aXNpb24sIHdoaWNoIHdp
bGwgbGV0IHRoZSBzY3JpcHQgdHJ5IHRvIHJlcG9ydCBTVk4gcmV2aXNpb24gZnJvbSBhIGdpdC1z
dm4gcmVwbworCisgICAgICAgICogdG9vbHMvc3luYy1jb21taXRzLnB5OgorICAgICAgICAobWFp
bik6CisgICAgICAgIChsb2FkX3JlcG9zaXRvcnkpOgorICAgICAgICAoR2l0UmVwb3NpdG9yeS5f
X2luaXRfXyk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5LmZldGNoX25leHRfY29tbWl0KToKKyAg
ICAgICAgKEdpdFJlcG9zaXRvcnkuX2dpdF9oYXNoX3RvX3N2bl9yZXZpc2lvbik6CisgICAgICAg
IChHaXRSZXBvc2l0b3J5Ll9zdm5fcmV2aXNpb25fdG9fZ2l0X2hhc2gpOgorICAgICAgICAoR2l0
UmVwb3NpdG9yeS5fcmV2aXNpb25fZnJvbV90b2tlbnMpOgorICAgICAgICAoR2l0UmVwb3NpdG9y
eS5fZmV0Y2hfYWxsX2hhc2hlcyk6CisKIDIwMjEtMDMtMzEgIFpoaWZlaSBGYW5nICA8emhpZmVp
X2ZhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb21taXQgcmV2aXNpb24gbGFiZWwgc3Vw
cG9ydApkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29t
bWl0cy5weSBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkK
aW5kZXggODc5OTc1MGYzZGEzYWM4YjU5ODU3YmY3YzQ2NThmYmQ2ODk4Y2QzZi4uYWNiNjI3M2E4
ZmY2OWNhYTNiNDJiYjMwMjA2Zjk1Zjc2YTIwOTg2MyAxMDA3NTUKLS0tIGEvV2Vic2l0ZXMvcGVy
Zi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5weQorKysgYi9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CkBAIC0xNiw2ICsxNiw5IEBAIGZyb20gdXRp
bCBpbXBvcnQgbG9hZF9zZXJ2ZXJfY29uZmlnCiBmcm9tIHV0aWwgaW1wb3J0IHN1Ym1pdF9jb21t
aXRzCiBmcm9tIHV0aWwgaW1wb3J0IHRleHRfY29udGVudAogCisjIFRoZXJlIGFyZSBzb21lIGJ1
Z2d5IGNvbW1pdCBtZXNzYWdlczoKKyMgQ2Fub25pY2FsIGxpbms6IGh0dHBzOi8vY29tbWl0cy53
ZWJraXQub3JnL2h0dHBzOi8vY29tbWl0cy53ZWJraXQub3JnLzIzMjQ3N0BtYWluCitSRVZJU0lP
Tl9JREVOVElGSUVSX1JFID0gcmUuY29tcGlsZShyJ0Nhbm9uaWNhbCBsaW5rOiAoaHR0cHNcOi8v
Y29tbWl0c1wud2Via2l0XC5vcmcvKSsoP1A8cmV2aXNpb25faWRlbnRpZmllcj5cZCtAW1x3XC5c
LV0rKVxuJykKIAogZGVmIG1haW4oYXJndik6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1l
bnRQYXJzZXIoKQpAQCAtMzIsMTAgKzM1LDcgQEAgZGVmIG1haW4oYXJndik6CiAgICAgd2hpbGUg
VHJ1ZToKICAgICAgICAgc2VydmVyX2NvbmZpZyA9IGxvYWRfc2VydmVyX2NvbmZpZyhhcmdzLnNl
cnZlcl9jb25maWdfanNvbikKICAgICAgICAgZm9yIHJlcG9zaXRvcnkgaW4gcmVwb3NpdG9yaWVz
OgotICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlcG9zaXRvcnkuZmV0Y2hfY29t
bWl0c19hbmRfc3VibWl0KHNlcnZlcl9jb25maWcsIGFyZ3MubWF4X2ZldGNoX2NvdW50LCBhcmdz
Lm1heF9hbmNlc3Rvcl9mZXRjaF9jb3VudCkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZXJyb3I6Ci0gICAgICAgICAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBmZXRjaCBhbmQgc3lu
YzoiLCBlcnJvcgogCiAgICAgICAgIHByaW50ICJTbGVlcGluZyBmb3IgJWQgc2Vjb25kcy4uLiIg
JSBhcmdzLnNlY29uZHNfdG9fc2xlZXAKICAgICAgICAgdGltZS5zbGVlcChhcmdzLnNlY29uZHNf
dG9fc2xlZXApCkBAIC00Myw3ICs0Myw3IEBAIGRlZiBtYWluKGFyZ3YpOgogCiBkZWYgbG9hZF9y
ZXBvc2l0b3J5KHJlcG9zaXRvcnkpOgogICAgIGlmICdnaXRDaGVja291dCcgaW4gcmVwb3NpdG9y
eToKLSAgICAgICAgcmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1yZXBvc2l0b3J5WyduYW1lJ10s
IGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5WydnaXRD
aGVja291dCddLCBnaXRfYnJhbmNoPXJlcG9zaXRvcnkuZ2V0KCdicmFuY2gnKSkKKyAgICAgICAg
cmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1yZXBvc2l0b3J5WyduYW1lJ10sIGdpdF91cmw9cmVw
b3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5WydnaXRDaGVja291dCddLCBn
aXRfYnJhbmNoPXJlcG9zaXRvcnkuZ2V0KCdicmFuY2gnKSwgcmVwb3J0X3JldmlzaW9uX2lkZW50
aWZpZXJfaW5fY29tbWl0X21zZz1yZXBvc2l0b3J5LmdldCgncmVwb3J0UmV2aXNpb25JZGVudGlm
aWVyJyksIHJlcG9ydF9zdm5fcmV2aXNvbj1yZXBvc2l0b3J5LmdldCgncmVwb3J0U1ZOUmV2aXNp
b24nKSkKICAgICByZXR1cm4gU1ZOUmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwg
c3ZuX3VybD1yZXBvc2l0b3J5Wyd1cmwnXSwgc2hvdWxkX3RydXN0X2NlcnRpZmljYXRlPXJlcG9z
aXRvcnkuZ2V0KCd0cnVzdENlcnRpZmljYXRlJywgRmFsc2UpLAogICAgICAgICB1c2Vfc2VydmVy
X2F1dGg9cmVwb3NpdG9yeS5nZXQoJ3VzZVNlcnZlckF1dGgnLCBGYWxzZSksIGFjY291bnRfbmFt
ZV9zY3JpcHRfcGF0aD1yZXBvc2l0b3J5LmdldCgnYWNjb3VudE5hbWVGaW5kZXJTY3JpcHQnKSkK
IApAQCAtMTkyLDE5ICsxOTIsMzAgQEAgY2xhc3MgU1ZOUmVwb3NpdG9yeShSZXBvc2l0b3J5KToK
IAogY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKIAotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9icmFuY2g9Tm9uZSk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdpdF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5j
aD1Ob25lLCByZXBvcnRfcmV2aXNpb25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnPUZhbHNlLCBy
ZXBvcnRfc3ZuX3Jldmlzb249RmFsc2UpOgogICAgICAgICBhc3NlcnQob3MucGF0aC5pc2Rpcihn
aXRfY2hlY2tvdXQpKQogICAgICAgICBzdXBlcihHaXRSZXBvc2l0b3J5LCBzZWxmKS5fX2luaXRf
XyhuYW1lKQogICAgICAgICBzZWxmLl9naXRfY2hlY2tvdXQgPSBnaXRfY2hlY2tvdXQKICAgICAg
ICAgc2VsZi5fZ2l0X3VybCA9IGdpdF91cmwKICAgICAgICAgc2VsZi5fZ2l0X2JyYW5jaCA9IGdp
dF9icmFuY2gKICAgICAgICAgc2VsZi5fdG9rZW5pemVkX2hhc2hlcyA9IFtdCisgICAgICAgIHNl
bGYuX3JlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2cgPSByZXBvcnRfcmV2
aXNpb25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnCisgICAgICAgIHNlbGYuX3JlcG9ydF9zdm5f
cmV2aXNpb24gPSByZXBvcnRfc3ZuX3Jldmlzb24KIAogICAgIGRlZiBmZXRjaF9uZXh0X2NvbW1p
dChzZWxmLCBzZXJ2ZXJfY29uZmlnLCBsYXN0X2ZldGNoZWQpOgogICAgICAgICBpZiBub3QgbGFz
dF9mZXRjaGVkOgogICAgICAgICAgICAgc2VsZi5fZmV0Y2hfYWxsX2hhc2hlcygpCiAgICAgICAg
ICAgICB0b2tlbnMgPSBzZWxmLl90b2tlbml6ZWRfaGFzaGVzWzBdCiAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBpZiBzZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAgICAgICAgICAg
ICMgdHJhbnNsYXRlIHRoZSBsYXN0IHN2biByZXZpc2lvbiB0byBnaXQgaGFzaAorICAgICAgICAg
ICAgICAgIGxhc3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX3N2bl9yZXZpc2lvbl90b19naXRf
aGFzaChsYXN0X2ZldGNoZWQpCisgICAgICAgICAgICAgICAgaWYgbm90IGxhc3RfZmV0Y2hlZF9n
aXRfaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmV0Y2hfYWxsX2hhc2hlcygpCisg
ICAgICAgICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX3N2bl9yZXZp
c2lvbl90b19naXRfaGFzaChsYXN0X2ZldGNoZWQpCisgICAgICAgICAgICAgICAgICAgIGlmIG5v
dCBsYXN0X2ZldGNoZWRfZ2l0X2hhc2g6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdDYW5ub3QgZmluZCBnaXQgaGFzaCBmb3IgbGFzdCBmZXRjaGVkIHN2biByZXZp
c2lvbicpCisgICAgICAgICAgICAgICAgbGFzdF9mZXRjaGVkID0gbGFzdF9mZXRjaGVkX2dpdF9o
YXNoCiAgICAgICAgICAgICB0b2tlbnMgPSBzZWxmLl9maW5kX25leHRfaGFzaChsYXN0X2ZldGNo
ZWQpCiAgICAgICAgICAgICBpZiBub3QgdG9rZW5zOgogICAgICAgICAgICAgICAgIHNlbGYuX2Zl
dGNoX2FsbF9oYXNoZXMoKQpAQCAtMjIwLDYgKzIzMSwxMiBAQCBjbGFzcyBHaXRSZXBvc2l0b3J5
KFJlcG9zaXRvcnkpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZXZpc2lvbl9mcm9t
X3Rva2Vucyh0b2tlbnMpCiAgICAgICAgIHJldHVybiBOb25lCiAKKyAgICBkZWYgX2dpdF9oYXNo
X3RvX3N2bl9yZXZpc2lvbihzZWxmLCBnaXRfaGFzaCk6CisgICAgICAgIHJldHVybiBzZWxmLl9y
dW5fZ2l0X2NvbW1hbmQoWydzdm4nLCAnZmluZC1yZXYnLCAne30nLmZvcm1hdChnaXRfaGFzaCld
KS5zdHJpcCgpCisKKyAgICBkZWYgX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaChzZWxmLCByZXZp
c2lvbik6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydzdm4nLCAnZmlu
ZC1yZXYnLCAncnt9Jy5mb3JtYXQocmV2aXNpb24pXSkuc3RyaXAoKQorCiAgICAgZGVmIF9yZXZp
c2lvbl9mcm9tX3Rva2VucyhzZWxmLCB0b2tlbnMpOgogICAgICAgICBjdXJyZW50X2hhc2ggPSB0
b2tlbnNbMF0KICAgICAgICAgY29tbWl0X3RpbWUgPSBpbnQodG9rZW5zWzFdKQpAQCAtMjI5LDEw
ICsyNDYsMjkgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgYXV0
aG9yX25hbWUgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gsICct
MScsICctLXByZXR0eT0lY24nXSkKICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3J1bl9naXRfY29t
bWFuZChbJ2xvZycsIGN1cnJlbnRfaGFzaCwgJy0xJywgJy0tcHJldHR5PSVCJ10pCiAKKyAgICAg
ICAgcmV2aXNpb25faWRlbnRpZmllciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fcmVwb3J0X3Jl
dmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZzoKKyAgICAgICAgICAgIHJldmlzaW9uX2lk
ZW50aWZpZXJfbWF0Y2ggPSBSRVZJU0lPTl9JREVOVElGSUVSX1JFLnNlYXJjaChtZXNzYWdlKQor
ICAgICAgICAgICAgaWYgbm90IHJldmlzaW9uX2lkZW50aWZpZXJfbWF0Y2g6CisgICAgICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignRXhwZWN0ZWQgY29tbWl0IG1lc3NhZ2UgaW5jbHVkZXMg
cmV2aXNpb24gaWRlbnRpZmllciwgYnV0IGNhbm5vdCBmaW5kIGl0LCB3aWxsIG5lZWQgYSBoaXN0
b3J5IHJld3JpdGUgdG8gZml4IGl0JykKKyAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIg
PSByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlmaWVyJykK
KworICAgICAgICBzdm5fcmV2aXNpb24gPSBOb25lCisgICAgICAgIHByZXZpb3VzX3JldmlzaW9u
ID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAgICAg
ICAgc3ZuX3JldmlzaW9uID0gc2VsZi5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKGN1cnJlbnRf
aGFzaCkKKyAgICAgICAgICAgIGlmIG5vdCBzdm5fcmV2aXNpb246CisgICAgICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcignRXhwZWN0ZWQgdGhpcyBpcyBhIGdpdCBzdm4gcmVwbywgYnV0IGNh
bm5vdCBmaW5kIFNWTiByZXZpc29uIGZvciB7fScuZm9ybWF0KHN2bl9yZXZpc2lvbikpCisgICAg
ICAgICAgICBpZiBwcmV2aW91c19oYXNoOgorICAgICAgICAgICAgICAgIHByZXZpb3VzX3Jldmlz
aW9uID0gc2VsZi5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKHByZXZpb3VzX2hhc2gpCisgICAg
ICAgICAgICAgICAgaWYgbm90IHByZXZpb3VzX3JldmlzaW9uOgorICAgICAgICAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCB0aGlzIGlzIGEgZ2l0IHN2biByZXBvLCBidXQg
Y2Fubm90IGZpbmQgU1ZOIHJldmlzb24gZm9yIHt9Jy5mb3JtYXQocHJldmlvdXNfaGFzaCkpCisK
ICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICdyZXBvc2l0b3J5Jzogc2VsZi5fbmFtZSwK
LSAgICAgICAgICAgICdyZXZpc2lvbic6IGN1cnJlbnRfaGFzaCwKLSAgICAgICAgICAgICdwcmV2
aW91c0NvbW1pdCc6IHByZXZpb3VzX2hhc2gsCisgICAgICAgICAgICAncmV2aXNpb24nOiBjdXJy
ZW50X2hhc2ggaWYgbm90IHN2bl9yZXZpc2lvbiBlbHNlIHN2bl9yZXZpc2lvbiwKKyAgICAgICAg
ICAgICdyZXZpc2lvbklkZW50aWZpZXInOiByZXZpc2lvbl9pZGVudGlmaWVyLAorICAgICAgICAg
ICAgJ3ByZXZpb3VzQ29tbWl0JzogcHJldmlvdXNfaGFzaCBpZiBub3QgcHJldmlvdXNfcmV2aXNp
b24gZWxzZSBwcmV2aW91c19yZXZpc2lvbiwKICAgICAgICAgICAgICd0aW1lJzogZGF0ZXRpbWUu
ZnJvbXRpbWVzdGFtcChjb21taXRfdGltZSkuc3RyZnRpbWUociclWS0lbS0lZFQlSDolTTolUy4l
ZicpLAogICAgICAgICAgICAgJ2F1dGhvcic6IHsnYWNjb3VudCc6IGF1dGhvcl9lbWFpbCwgJ25h
bWUnOiBhdXRob3JfbmFtZX0sCiAgICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsCkBAIC0y
NDYsNiArMjgyLDggQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKIAogICAgIGRl
ZiBfZmV0Y2hfYWxsX2hhc2hlcyhzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2dpdF9jb21tYW5k
KFsncHVsbCcsIHNlbGYuX2dpdF91cmxdKQorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfc3ZuX3Jl
dmlzaW9uOgorICAgICAgICAgICAgc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnc3ZuJywgJ2ZldGNo
J10pCiAgICAgICAgIHNjb3BlID0gc2VsZi5fZ2l0X2JyYW5jaCBvciAnLS1hbGwnCiAgICAgICAg
IGxpbmVzID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgc2NvcGUsICctLWRhdGUtb3Jk
ZXInLCAnLS1yZXZlcnNlJywgJy0tcHJldHR5PSVIICVjdCAlY2UgJVAnXSkuc3BsaXQoJ1xuJykK
ICAgICAgICAgc2VsZi5fdG9rZW5pemVkX2hhc2hlcyA9IFtsaW5lLnNwbGl0KCkgZm9yIGxpbmUg
aW4gbGluZXNdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427699</attachid>
            <date>2021-05-04 14:20:09 -0700</date>
            <delta_ts>2021-05-04 15:55:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210504142008.patch</filename>
            <type>text/plain</type>
            <size>8058</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi45N2ViYjM0YzI4
OGFlODEwOTAwOTVkMDFiMzEyZTdmYzJjOGY2ZjRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3luY2lu
ZyByZXBvIHdpdGggY29tbWl0IHJldmlzaW9uIGxhYmVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiByZXBvcnRS
ZXZpc2lvbklkZW50aWZpZXIsIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQgdHJ5IHRvIHN5bmMg
dGhlIGNvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGZyb20gdGhlIGNvbW1pdCBtZXNzYWdlLgor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFNWTlJldmlzaW9uLCB3aGljaCB3
aWxsIGxldCB0aGUgc2NyaXB0IHRyeSB0byByZXBvcnQgU1ZOIHJldmlzaW9uIGZyb20gYSBnaXQt
c3ZuIHJlcG8uCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKGxvYWRfcmVwb3NpdG9yeSk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5
Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuZmV0Y2hfbmV4dF9jb21taXQpOgor
ICAgICAgICAoR2l0UmVwb3NpdG9yeS5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKToKKyAgICAg
ICAgKEdpdFJlcG9zaXRvcnkuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaCk6CisgICAgICAgIChH
aXRSZXBvc2l0b3J5Ll9yZXZpc2lvbl9mcm9tX3Rva2Vucyk6CisgICAgICAgIChHaXRSZXBvc2l0
b3J5Ll9mZXRjaF9hbGxfaGFzaGVzKToKKwogMjAyMS0wMy0zMSAgWmhpZmVpIEZhbmcgIDx6aGlm
ZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBz
dXBwb3J0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1j
b21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5w
eQppbmRleCA4Nzk5NzUwZjNkYTNhYzhiNTk4NTdiZjdjNDY1OGZiZDY4OThjZDNmLi4zOGJlZTFh
OTFmZmUxMGE2ZGJlMjFjZWY2MjZmZGNjNWM1NDFkNzlmIDEwMDc1NQotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTE2LDYgKzE2LDkgQEAgZnJvbSB1
dGlsIGltcG9ydCBsb2FkX3NlcnZlcl9jb25maWcKIGZyb20gdXRpbCBpbXBvcnQgc3VibWl0X2Nv
bW1pdHMKIGZyb20gdXRpbCBpbXBvcnQgdGV4dF9jb250ZW50CiAKKyMgVGhlcmUgYXJlIHNvbWUg
YnVnZ3kgY29tbWl0IG1lc3NhZ2VzOgorIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KK1JFVklT
SU9OX0lERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInQ2Fub25pY2FsIGxpbms6IChodHRwc1w6
Ly9jb21taXRzXC53ZWJraXRcLm9yZy8pKyg/UDxyZXZpc2lvbl9pZGVudGlmaWVyPlxkK0BbXHdc
LlwtXSspXG4nKQogCiBkZWYgbWFpbihhcmd2KToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcigpCkBAIC0zMiwxMCArMzUsNyBAQCBkZWYgbWFpbihhcmd2KToKICAgICB3aGls
ZSBUcnVlOgogICAgICAgICBzZXJ2ZXJfY29uZmlnID0gbG9hZF9zZXJ2ZXJfY29uZmlnKGFyZ3Mu
c2VydmVyX2NvbmZpZ19qc29uKQogICAgICAgICBmb3IgcmVwb3NpdG9yeSBpbiByZXBvc2l0b3Jp
ZXM6Ci0gICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeS5mZXRjaF9j
b21taXRzX2FuZF9zdWJtaXQoc2VydmVyX2NvbmZpZywgYXJncy5tYXhfZmV0Y2hfY291bnQsIGFy
Z3MubWF4X2FuY2VzdG9yX2ZldGNoX2NvdW50KQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlcnJvcjoKLSAgICAgICAgICAgICAgICBwcmludCAiRmFpbGVkIHRvIGZldGNoIGFuZCBz
eW5jOiIsIGVycm9yCiAKICAgICAgICAgcHJpbnQgIlNsZWVwaW5nIGZvciAlZCBzZWNvbmRzLi4u
IiAlIGFyZ3Muc2Vjb25kc190b19zbGVlcAogICAgICAgICB0aW1lLnNsZWVwKGFyZ3Muc2Vjb25k
c190b19zbGVlcCkKQEAgLTQzLDcgKzQzLDkgQEAgZGVmIG1haW4oYXJndik6CiAKIGRlZiBsb2Fk
X3JlcG9zaXRvcnkocmVwb3NpdG9yeSk6CiAgICAgaWYgJ2dpdENoZWNrb3V0JyBpbiByZXBvc2l0
b3J5OgotICAgICAgICByZXR1cm4gR2l0UmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUn
XSwgZ2l0X3VybD1yZXBvc2l0b3J5Wyd1cmwnXSwgZ2l0X2NoZWNrb3V0PXJlcG9zaXRvcnlbJ2dp
dENoZWNrb3V0J10sIGdpdF9icmFuY2g9cmVwb3NpdG9yeS5nZXQoJ2JyYW5jaCcpKQorICAgICAg
ICByZXR1cm4gR2l0UmVwb3NpdG9yeShuYW1lPXJlcG9zaXRvcnlbJ25hbWUnXSwgZ2l0X3VybD1y
ZXBvc2l0b3J5Wyd1cmwnXSwgZ2l0X2NoZWNrb3V0PXJlcG9zaXRvcnlbJ2dpdENoZWNrb3V0J10s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdF9icmFuY2g9cmVwb3NpdG9yeS5nZXQo
J2JyYW5jaCcpLCByZXBvcnRfcmV2aXNpb25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnPXJlcG9z
aXRvcnkuZ2V0KCdyZXBvcnRSZXZpc2lvbklkZW50aWZpZXInKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwb3J0X3N2bl9yZXZpc29uPXJlcG9zaXRvcnkuZ2V0KCdyZXBvcnRTVk5S
ZXZpc2lvbicpKQogICAgIHJldHVybiBTVk5SZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFt
ZSddLCBzdm5fdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGU9
cmVwb3NpdG9yeS5nZXQoJ3RydXN0Q2VydGlmaWNhdGUnLCBGYWxzZSksCiAgICAgICAgIHVzZV9z
ZXJ2ZXJfYXV0aD1yZXBvc2l0b3J5LmdldCgndXNlU2VydmVyQXV0aCcsIEZhbHNlKSwgYWNjb3Vu
dF9uYW1lX3NjcmlwdF9wYXRoPXJlcG9zaXRvcnkuZ2V0KCdhY2NvdW50TmFtZUZpbmRlclNjcmlw
dCcpKQogCkBAIC0xOTIsMTkgKzE5NCwzMCBAQCBjbGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRv
cnkpOgogCiBjbGFzcyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWUsIGdpdF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5jaD1Ob25lKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRf
YnJhbmNoPU5vbmUsIHJlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9RmFs
c2UsIHJlcG9ydF9zdm5fcmV2aXNvbj1GYWxzZSk6CiAgICAgICAgIGFzc2VydChvcy5wYXRoLmlz
ZGlyKGdpdF9jaGVja291dCkpCiAgICAgICAgIHN1cGVyKEdpdFJlcG9zaXRvcnksIHNlbGYpLl9f
aW5pdF9fKG5hbWUpCiAgICAgICAgIHNlbGYuX2dpdF9jaGVja291dCA9IGdpdF9jaGVja291dAog
ICAgICAgICBzZWxmLl9naXRfdXJsID0gZ2l0X3VybAogICAgICAgICBzZWxmLl9naXRfYnJhbmNo
ID0gZ2l0X2JyYW5jaAogICAgICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW10KKyAgICAg
ICAgc2VsZi5fcmVwb3J0X3JldmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZyA9IHJlcG9y
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2cKKyAgICAgICAgc2VsZi5fcmVwb3J0
X3N2bl9yZXZpc2lvbiA9IHJlcG9ydF9zdm5fcmV2aXNvbgogCiAgICAgZGVmIGZldGNoX25leHRf
Y29tbWl0KHNlbGYsIHNlcnZlcl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5v
dCBsYXN0X2ZldGNoZWQ6CiAgICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFzaGVzKCkKICAg
ICAgICAgICAgIHRva2VucyA9IHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbMF0KICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAg
ICAgICAgIyB0cmFuc2xhdGUgdGhlIGxhc3Qgc3ZuIHJldmlzaW9uIHRvIGdpdCBoYXNoCisgICAg
ICAgICAgICAgICAgbGFzdF9mZXRjaGVkX2dpdF9oYXNoID0gc2VsZi5fZ2l0X2hhc2hfZnJvbV9z
dm5fcmV2aXNpb24obGFzdF9mZXRjaGVkKQorICAgICAgICAgICAgICAgIGlmIG5vdCBsYXN0X2Zl
dGNoZWRfZ2l0X2hhc2g6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZldGNoX3JlbW90ZSgp
CisgICAgICAgICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX2dpdF9o
YXNoX2Zyb21fc3ZuX3JldmlzaW9uKGxhc3RfZmV0Y2hlZCkKKyAgICAgICAgICAgICAgICAgICAg
aWYgbm90IGxhc3RfZmV0Y2hlZF9naXRfaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBmaW5kIHRoZSBnaXQgaGFzaCBmb3IgdGhlIGxhc3QgZmV0
Y2hlZCBzdm4gcmV2aXNpb24nKQorICAgICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZCA9IGxhc3Rf
ZmV0Y2hlZF9naXRfaGFzaAogICAgICAgICAgICAgdG9rZW5zID0gc2VsZi5fZmluZF9uZXh0X2hh
c2gobGFzdF9mZXRjaGVkKQogICAgICAgICAgICAgaWYgbm90IHRva2VuczoKICAgICAgICAgICAg
ICAgICBzZWxmLl9mZXRjaF9hbGxfaGFzaGVzKCkKQEAgLTIyMCw2ICsyMzMsMTIgQEAgY2xhc3Mg
R2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5f
cmV2aXNpb25fZnJvbV90b2tlbnModG9rZW5zKQogICAgICAgICByZXR1cm4gTm9uZQogCisgICAg
ZGVmIF9zdm5fcmV2aXNpb25fZnJvbV9naXRfaGFzaChzZWxmLCBnaXRfaGFzaCk6CisgICAgICAg
IHJldHVybiBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydzdm4nLCAnZmluZC1yZXYnLCAne30nLmZv
cm1hdChnaXRfaGFzaCldKS5zdHJpcCgpCisKKyAgICBkZWYgX2dpdF9oYXNoX2Zyb21fc3ZuX3Jl
dmlzaW9uKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9naXRfY29t
bWFuZChbJ3N2bicsICdmaW5kLXJldicsICdye30nLmZvcm1hdChyZXZpc2lvbildKS5zdHJpcCgp
CisKICAgICBkZWYgX3JldmlzaW9uX2Zyb21fdG9rZW5zKHNlbGYsIHRva2Vucyk6CiAgICAgICAg
IGN1cnJlbnRfaGFzaCA9IHRva2Vuc1swXQogICAgICAgICBjb21taXRfdGltZSA9IGludCh0b2tl
bnNbMV0pCkBAIC0yMjksMTAgKzI0OCwyOSBAQCBjbGFzcyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRv
cnkpOgogICAgICAgICBhdXRob3JfbmFtZSA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ2xvZycs
IGN1cnJlbnRfaGFzaCwgJy0xJywgJy0tcHJldHR5PSVjbiddKQogICAgICAgICBtZXNzYWdlID0g
c2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0
dHk9JUInXSkKIAorICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVyID0gTm9uZQorICAgICAgICBp
ZiBzZWxmLl9yZXBvcnRfcmV2aXNpb25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnOgorICAgICAg
ICAgICAgcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaCA9IFJFVklTSU9OX0lERU5USUZJRVJfUkUu
c2VhcmNoKG1lc3NhZ2UpCisgICAgICAgICAgICBpZiBub3QgcmV2aXNpb25faWRlbnRpZmllcl9t
YXRjaDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCBjb21taXQg
bWVzc2FnZSB0byBpbmNsdWRlIHJldmlzaW9uIGlkZW50aWZpZXIsIGJ1dCBjYW5ub3QgZmluZCBp
dCwgd2lsbCBuZWVkIGEgaGlzdG9yeSByZXdyaXRlIHRvIGZpeCBpdCcpCisgICAgICAgICAgICBy
ZXZpc2lvbl9pZGVudGlmaWVyID0gcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaC5ncm91cCgncmV2
aXNpb25faWRlbnRpZmllcicpCisKKyAgICAgICAgY3VycmVudF9yZXZpc2lvbiA9IGN1cnJlbnRf
aGFzaAorICAgICAgICBwcmV2aW91c19yZXZpc2lvbiA9IHByZXZpb3VzX2hhc2gKKyAgICAgICAg
aWYgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lvbjoKKyAgICAgICAgICAgIGN1cnJlbnRfcmV2aXNp
b24gPSBzZWxmLl9zdm5fcmV2aXNpb25fZnJvbV9naXRfaGFzaChjdXJyZW50X2hhc2gpCisgICAg
ICAgICAgICBpZiBub3QgY3VycmVudF9yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdDYW5ub3QgZmluZCBTVk4gcmV2aXNvbiBmb3Ige30nLmZvcm1hdChjdXJyZW50
X3JldmlzaW9uKSkKKyAgICAgICAgICAgIGlmIHByZXZpb3VzX2hhc2g6CisgICAgICAgICAgICAg
ICAgcHJldmlvdXNfcmV2aXNpb24gPSBzZWxmLl9zdm5fcmV2aXNpb25fZnJvbV9naXRfaGFzaChw
cmV2aW91c19oYXNoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBwcmV2aW91c19yZXZpc2lvbjoK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGZpbmQgU1ZOIHJl
dmlzb24gZm9yIHt9Jy5mb3JtYXQocHJldmlvdXNfaGFzaCkpCisKICAgICAgICAgcmV0dXJuIHsK
ICAgICAgICAgICAgICdyZXBvc2l0b3J5Jzogc2VsZi5fbmFtZSwKLSAgICAgICAgICAgICdyZXZp
c2lvbic6IGN1cnJlbnRfaGFzaCwKLSAgICAgICAgICAgICdwcmV2aW91c0NvbW1pdCc6IHByZXZp
b3VzX2hhc2gsCisgICAgICAgICAgICAncmV2aXNpb24nOiBjdXJyZW50X3JldmlzaW9uLAorICAg
ICAgICAgICAgJ3JldmlzaW9uSWRlbnRpZmllcic6IHJldmlzaW9uX2lkZW50aWZpZXIsCisgICAg
ICAgICAgICAncHJldmlvdXNDb21taXQnOiBwcmV2aW91c19yZXZpc2lvbiwKICAgICAgICAgICAg
ICd0aW1lJzogZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChjb21taXRfdGltZSkuc3RyZnRpbWUocicl
WS0lbS0lZFQlSDolTTolUy4lZicpLAogICAgICAgICAgICAgJ2F1dGhvcic6IHsnYWNjb3VudCc6
IGF1dGhvcl9lbWFpbCwgJ25hbWUnOiBhdXRob3JfbmFtZX0sCiAgICAgICAgICAgICAnbWVzc2Fn
ZSc6IG1lc3NhZ2UsCkBAIC0yNDQsOCArMjgyLDEzIEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVw
b3NpdG9yeSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Rva2VuaXplZF9oYXNoZXNb
aSArIDFdIGlmIGkgKyAxIDwgbGVuKHNlbGYuX3Rva2VuaXplZF9oYXNoZXMpIGVsc2UgTm9uZQog
ICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIF9mZXRjaF9hbGxfaGFzaGVzKHNlbGYpOgor
ICAgIGRlZiBfZmV0Y2hfcmVtb3RlKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fZ2l0X2NvbW1h
bmQoWydwdWxsJywgc2VsZi5fZ2l0X3VybF0pCisgICAgICAgIGlmIHNlbGYuX3JlcG9ydF9zdm5f
cmV2aXNpb246CisgICAgICAgICAgICBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydzdm4nLCAnZmV0
Y2gnXSkKKworICAgIGRlZiBfZmV0Y2hfYWxsX2hhc2hlcyhzZWxmKToKKyAgICAgICAgc2VsZi5f
ZmV0Y2hfcmVtb3RlKCkKICAgICAgICAgc2NvcGUgPSBzZWxmLl9naXRfYnJhbmNoIG9yICctLWFs
bCcKICAgICAgICAgbGluZXMgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBzY29wZSwg
Jy0tZGF0ZS1vcmRlcicsICctLXJldmVyc2UnLCAnLS1wcmV0dHk9JUggJWN0ICVjZSAlUCddKS5z
cGxpdCgnXG4nKQogICAgICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW2xpbmUuc3BsaXQo
KSBmb3IgbGluZSBpbiBsaW5lc10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427705</attachid>
            <date>2021-05-04 15:55:13 -0700</date>
            <delta_ts>2021-05-04 17:46:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210504155512.patch</filename>
            <type>text/plain</type>
            <size>7544</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi45N2ViYjM0YzI4
OGFlODEwOTAwOTVkMDFiMzEyZTdmYzJjOGY2ZjRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3luY2lu
ZyByZXBvIHdpdGggY29tbWl0IHJldmlzaW9uIGxhYmVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiByZXBvcnRS
ZXZpc2lvbklkZW50aWZpZXIsIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQgdHJ5IHRvIHN5bmMg
dGhlIGNvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGZyb20gdGhlIGNvbW1pdCBtZXNzYWdlLgor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFNWTlJldmlzaW9uLCB3aGljaCB3
aWxsIGxldCB0aGUgc2NyaXB0IHRyeSB0byByZXBvcnQgU1ZOIHJldmlzaW9uIGZyb20gYSBnaXQt
c3ZuIHJlcG8uCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKGxvYWRfcmVwb3NpdG9yeSk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5
Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuZmV0Y2hfbmV4dF9jb21taXQpOgor
ICAgICAgICAoR2l0UmVwb3NpdG9yeS5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKToKKyAgICAg
ICAgKEdpdFJlcG9zaXRvcnkuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaCk6CisgICAgICAgIChH
aXRSZXBvc2l0b3J5Ll9yZXZpc2lvbl9mcm9tX3Rva2Vucyk6CisgICAgICAgIChHaXRSZXBvc2l0
b3J5Ll9mZXRjaF9hbGxfaGFzaGVzKToKKwogMjAyMS0wMy0zMSAgWmhpZmVpIEZhbmcgIDx6aGlm
ZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBz
dXBwb3J0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1j
b21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5w
eQppbmRleCA4Nzk5NzUwZjNkYTNhYzhiNTk4NTdiZjdjNDY1OGZiZDY4OThjZDNmLi4xOTZlMzEx
OWQzYjRkZmM1ZGZjYTZmYWZhMmMxMWYzMWFmNmFhNTgxIDEwMDc1NQotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTE2LDYgKzE2LDkgQEAgZnJvbSB1
dGlsIGltcG9ydCBsb2FkX3NlcnZlcl9jb25maWcKIGZyb20gdXRpbCBpbXBvcnQgc3VibWl0X2Nv
bW1pdHMKIGZyb20gdXRpbCBpbXBvcnQgdGV4dF9jb250ZW50CiAKKyMgVGhlcmUgYXJlIHNvbWUg
YnVnZ3kgY29tbWl0IG1lc3NhZ2VzOgorIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KK1JFVklT
SU9OX0lERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInQ2Fub25pY2FsIGxpbms6IChodHRwc1w6
Ly9jb21taXRzXC53ZWJraXRcLm9yZy8pKyg/UDxyZXZpc2lvbl9pZGVudGlmaWVyPlxkK0BbXHdc
LlwtXSspXG4nKQogCiBkZWYgbWFpbihhcmd2KToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcigpCkBAIC00Myw3ICs0Niw5IEBAIGRlZiBtYWluKGFyZ3YpOgogCiBkZWYgbG9h
ZF9yZXBvc2l0b3J5KHJlcG9zaXRvcnkpOgogICAgIGlmICdnaXRDaGVja291dCcgaW4gcmVwb3Np
dG9yeToKLSAgICAgICAgcmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1yZXBvc2l0b3J5WyduYW1l
J10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5Wydn
aXRDaGVja291dCddLCBnaXRfYnJhbmNoPXJlcG9zaXRvcnkuZ2V0KCdicmFuY2gnKSkKKyAgICAg
ICAgcmV0dXJuIEdpdFJlcG9zaXRvcnkobmFtZT1yZXBvc2l0b3J5WyduYW1lJ10sIGdpdF91cmw9
cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5WydnaXRDaGVja291dCdd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdF9icmFuY2g9cmVwb3NpdG9yeS5nZXQo
J2JyYW5jaCcpLCByZXBvcnRfcmV2aXNpb25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnPXJlcG9z
aXRvcnkuZ2V0KCdyZXBvcnRSZXZpc2lvbklkZW50aWZpZXInKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBvcnRfc3ZuX3Jldmlzb249cmVwb3NpdG9yeS5nZXQoJ3JlcG9ydFNWTlJl
dmlzaW9uJykpCiAgICAgcmV0dXJuIFNWTlJlcG9zaXRvcnkobmFtZT1yZXBvc2l0b3J5WyduYW1l
J10sIHN2bl91cmw9cmVwb3NpdG9yeVsndXJsJ10sIHNob3VsZF90cnVzdF9jZXJ0aWZpY2F0ZT1y
ZXBvc2l0b3J5LmdldCgndHJ1c3RDZXJ0aWZpY2F0ZScsIEZhbHNlKSwKICAgICAgICAgdXNlX3Nl
cnZlcl9hdXRoPXJlcG9zaXRvcnkuZ2V0KCd1c2VTZXJ2ZXJBdXRoJywgRmFsc2UpLCBhY2NvdW50
X25hbWVfc2NyaXB0X3BhdGg9cmVwb3NpdG9yeS5nZXQoJ2FjY291bnROYW1lRmluZGVyU2NyaXB0
JykpCiAKQEAgLTE5MiwxOSArMTk3LDMwIEBAIGNsYXNzIFNWTlJlcG9zaXRvcnkoUmVwb3NpdG9y
eSk6CiAKIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBnaXRfY2hlY2tvdXQsIGdpdF91cmwsIGdpdF9i
cmFuY2g9Tm9uZSwgcmVwb3J0X3JldmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZz1GYWxz
ZSwgcmVwb3J0X3N2bl9yZXZpc29uPUZhbHNlKToKICAgICAgICAgYXNzZXJ0KG9zLnBhdGguaXNk
aXIoZ2l0X2NoZWNrb3V0KSkKICAgICAgICAgc3VwZXIoR2l0UmVwb3NpdG9yeSwgc2VsZikuX19p
bml0X18obmFtZSkKICAgICAgICAgc2VsZi5fZ2l0X2NoZWNrb3V0ID0gZ2l0X2NoZWNrb3V0CiAg
ICAgICAgIHNlbGYuX2dpdF91cmwgPSBnaXRfdXJsCiAgICAgICAgIHNlbGYuX2dpdF9icmFuY2gg
PSBnaXRfYnJhbmNoCiAgICAgICAgIHNlbGYuX3Rva2VuaXplZF9oYXNoZXMgPSBbXQorICAgICAg
ICBzZWxmLl9yZXBvcnRfcmV2aXNpb25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnID0gcmVwb3J0
X3JldmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZworICAgICAgICBzZWxmLl9yZXBvcnRf
c3ZuX3JldmlzaW9uID0gcmVwb3J0X3N2bl9yZXZpc29uCiAKICAgICBkZWYgZmV0Y2hfbmV4dF9j
b21taXQoc2VsZiwgc2VydmVyX2NvbmZpZywgbGFzdF9mZXRjaGVkKToKICAgICAgICAgaWYgbm90
IGxhc3RfZmV0Y2hlZDoKICAgICAgICAgICAgIHNlbGYuX2ZldGNoX2FsbF9oYXNoZXMoKQogICAg
ICAgICAgICAgdG9rZW5zID0gc2VsZi5fdG9rZW5pemVkX2hhc2hlc1swXQogICAgICAgICBlbHNl
OgorICAgICAgICAgICAgaWYgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lvbjoKKyAgICAgICAgICAg
ICAgICAjIHRyYW5zbGF0ZSB0aGUgbGFzdCBzdm4gcmV2aXNpb24gdG8gZ2l0IGhhc2gKKyAgICAg
ICAgICAgICAgICBsYXN0X2ZldGNoZWRfZ2l0X2hhc2ggPSBzZWxmLl9naXRfaGFzaF9mcm9tX3N2
bl9yZXZpc2lvbihsYXN0X2ZldGNoZWQpCisgICAgICAgICAgICAgICAgaWYgbm90IGxhc3RfZmV0
Y2hlZF9naXRfaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmV0Y2hfcmVtb3RlKCkK
KyAgICAgICAgICAgICAgICAgICAgbGFzdF9mZXRjaGVkX2dpdF9oYXNoID0gc2VsZi5fZ2l0X2hh
c2hfZnJvbV9zdm5fcmV2aXNpb24obGFzdF9mZXRjaGVkKQorICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgbGFzdF9mZXRjaGVkX2dpdF9oYXNoOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignQ2Fubm90IGZpbmQgdGhlIGdpdCBoYXNoIGZvciB0aGUgbGFzdCBmZXRj
aGVkIHN2biByZXZpc2lvbicpCisgICAgICAgICAgICAgICAgbGFzdF9mZXRjaGVkID0gbGFzdF9m
ZXRjaGVkX2dpdF9oYXNoCiAgICAgICAgICAgICB0b2tlbnMgPSBzZWxmLl9maW5kX25leHRfaGFz
aChsYXN0X2ZldGNoZWQpCiAgICAgICAgICAgICBpZiBub3QgdG9rZW5zOgogICAgICAgICAgICAg
ICAgIHNlbGYuX2ZldGNoX2FsbF9oYXNoZXMoKQpAQCAtMjIwLDYgKzIzNiwxMiBAQCBjbGFzcyBH
aXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9y
ZXZpc2lvbl9mcm9tX3Rva2Vucyh0b2tlbnMpCiAgICAgICAgIHJldHVybiBOb25lCiAKKyAgICBk
ZWYgX3N2bl9yZXZpc2lvbl9mcm9tX2dpdF9oYXNoKHNlbGYsIGdpdF9oYXNoKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ3N2bicsICdmaW5kLXJldicsICd7fScuZm9y
bWF0KGdpdF9oYXNoKV0pLnN0cmlwKCkKKworICAgIGRlZiBfZ2l0X2hhc2hfZnJvbV9zdm5fcmV2
aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1cm4gc2VsZi5fcnVuX2dpdF9jb21t
YW5kKFsnc3ZuJywgJ2ZpbmQtcmV2JywgJ3J7fScuZm9ybWF0KHJldmlzaW9uKV0pLnN0cmlwKCkK
KwogICAgIGRlZiBfcmV2aXNpb25fZnJvbV90b2tlbnMoc2VsZiwgdG9rZW5zKToKICAgICAgICAg
Y3VycmVudF9oYXNoID0gdG9rZW5zWzBdCiAgICAgICAgIGNvbW1pdF90aW1lID0gaW50KHRva2Vu
c1sxXSkKQEAgLTIyOSwxMCArMjUxLDI5IEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9y
eSk6CiAgICAgICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnbG9nJywg
Y3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10pCiAgICAgICAgIG1lc3NhZ2UgPSBz
ZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50X2hhc2gsICctMScsICctLXByZXR0
eT0lQiddKQogCisgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSBOb25lCisgICAgICAgIGlm
IHNlbGYuX3JlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c6CisgICAgICAg
ICAgICByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoID0gUkVWSVNJT05fSURFTlRJRklFUl9SRS5z
ZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCByZXZpc2lvbl9pZGVudGlmaWVyX21h
dGNoOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0V4cGVjdGVkIGNvbW1pdCBt
ZXNzYWdlIHRvIGluY2x1ZGUgcmV2aXNpb24gaWRlbnRpZmllciwgYnV0IGNhbm5vdCBmaW5kIGl0
LCB3aWxsIG5lZWQgYSBoaXN0b3J5IHJld3JpdGUgdG8gZml4IGl0JykKKyAgICAgICAgICAgIHJl
dmlzaW9uX2lkZW50aWZpZXIgPSByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoLmdyb3VwKCdyZXZp
c2lvbl9pZGVudGlmaWVyJykKKworICAgICAgICBjdXJyZW50X3JldmlzaW9uID0gY3VycmVudF9o
YXNoCisgICAgICAgIHByZXZpb3VzX3JldmlzaW9uID0gcHJldmlvdXNfaGFzaAorICAgICAgICBp
ZiBzZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAgICAgICAgY3VycmVudF9yZXZpc2lv
biA9IHNlbGYuX3N2bl9yZXZpc2lvbl9mcm9tX2dpdF9oYXNoKGN1cnJlbnRfaGFzaCkKKyAgICAg
ICAgICAgIGlmIG5vdCBjdXJyZW50X3JldmlzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ0Nhbm5vdCBmaW5kIFNWTiByZXZpc29uIGZvciB7fScuZm9ybWF0KGN1cnJlbnRf
cmV2aXNpb24pKQorICAgICAgICAgICAgaWYgcHJldmlvdXNfaGFzaDoKKyAgICAgICAgICAgICAg
ICBwcmV2aW91c19yZXZpc2lvbiA9IHNlbGYuX3N2bl9yZXZpc2lvbl9mcm9tX2dpdF9oYXNoKHBy
ZXZpb3VzX2hhc2gpCisgICAgICAgICAgICAgICAgaWYgbm90IHByZXZpb3VzX3JldmlzaW9uOgor
ICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZmluZCBTVk4gcmV2
aXNvbiBmb3Ige30nLmZvcm1hdChwcmV2aW91c19oYXNoKSkKKwogICAgICAgICByZXR1cm4gewog
ICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiBzZWxmLl9uYW1lLAotICAgICAgICAgICAgJ3Jldmlz
aW9uJzogY3VycmVudF9oYXNoLAotICAgICAgICAgICAgJ3ByZXZpb3VzQ29tbWl0JzogcHJldmlv
dXNfaGFzaCwKKyAgICAgICAgICAgICdyZXZpc2lvbic6IGN1cnJlbnRfcmV2aXNpb24sCisgICAg
ICAgICAgICAncmV2aXNpb25JZGVudGlmaWVyJzogcmV2aXNpb25faWRlbnRpZmllciwKKyAgICAg
ICAgICAgICdwcmV2aW91c0NvbW1pdCc6IHByZXZpb3VzX3JldmlzaW9uLAogICAgICAgICAgICAg
J3RpbWUnOiBkYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1pdF90aW1lKS5zdHJmdGltZShyJyVZ
LSVtLSVkVCVIOiVNOiVTLiVmJyksCiAgICAgICAgICAgICAnYXV0aG9yJzogeydhY2NvdW50Jzog
YXV0aG9yX2VtYWlsLCAnbmFtZSc6IGF1dGhvcl9uYW1lfSwKICAgICAgICAgICAgICdtZXNzYWdl
JzogbWVzc2FnZSwKQEAgLTI0NCw4ICsyODUsMTMgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBv
c2l0b3J5KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fdG9rZW5pemVkX2hhc2hlc1tp
ICsgMV0gaWYgaSArIDEgPCBsZW4oc2VsZi5fdG9rZW5pemVkX2hhc2hlcykgZWxzZSBOb25lCiAg
ICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgX2ZldGNoX2FsbF9oYXNoZXMoc2VsZik6Cisg
ICAgZGVmIF9mZXRjaF9yZW1vdGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9naXRfY29tbWFu
ZChbJ3B1bGwnLCBzZWxmLl9naXRfdXJsXSkKKyAgICAgICAgaWYgc2VsZi5fcmVwb3J0X3N2bl9y
ZXZpc2lvbjoKKyAgICAgICAgICAgIHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ3N2bicsICdmZXRj
aCddKQorCisgICAgZGVmIF9mZXRjaF9hbGxfaGFzaGVzKHNlbGYpOgorICAgICAgICBzZWxmLl9m
ZXRjaF9yZW1vdGUoKQogICAgICAgICBzY29wZSA9IHNlbGYuX2dpdF9icmFuY2ggb3IgJy0tYWxs
JwogICAgICAgICBsaW5lcyA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ2xvZycsIHNjb3BlLCAn
LS1kYXRlLW9yZGVyJywgJy0tcmV2ZXJzZScsICctLXByZXR0eT0lSCAlY3QgJWNlICVQJ10pLnNw
bGl0KCdcbicpCiAgICAgICAgIHNlbGYuX3Rva2VuaXplZF9oYXNoZXMgPSBbbGluZS5zcGxpdCgp
IGZvciBsaW5lIGluIGxpbmVzXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427715</attachid>
            <date>2021-05-04 17:46:27 -0700</date>
            <delta_ts>2021-05-04 18:53:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210504174626.patch</filename>
            <type>text/plain</type>
            <size>7527</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi45N2ViYjM0YzI4
OGFlODEwOTAwOTVkMDFiMzEyZTdmYzJjOGY2ZjRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3luY2lu
ZyByZXBvIHdpdGggY29tbWl0IHJldmlzaW9uIGxhYmVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiByZXBvcnRS
ZXZpc2lvbklkZW50aWZpZXIsIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQgdHJ5IHRvIHN5bmMg
dGhlIGNvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGZyb20gdGhlIGNvbW1pdCBtZXNzYWdlLgor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFNWTlJldmlzaW9uLCB3aGljaCB3
aWxsIGxldCB0aGUgc2NyaXB0IHRyeSB0byByZXBvcnQgU1ZOIHJldmlzaW9uIGZyb20gYSBnaXQt
c3ZuIHJlcG8uCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKGxvYWRfcmVwb3NpdG9yeSk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5
Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuZmV0Y2hfbmV4dF9jb21taXQpOgor
ICAgICAgICAoR2l0UmVwb3NpdG9yeS5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKToKKyAgICAg
ICAgKEdpdFJlcG9zaXRvcnkuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaCk6CisgICAgICAgIChH
aXRSZXBvc2l0b3J5Ll9yZXZpc2lvbl9mcm9tX3Rva2Vucyk6CisgICAgICAgIChHaXRSZXBvc2l0
b3J5Ll9mZXRjaF9hbGxfaGFzaGVzKToKKwogMjAyMS0wMy0zMSAgWmhpZmVpIEZhbmcgIDx6aGlm
ZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBz
dXBwb3J0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1j
b21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5w
eQppbmRleCA4Nzk5NzUwZjNkYTNhYzhiNTk4NTdiZjdjNDY1OGZiZDY4OThjZDNmLi5mNjg1N2Qx
YmI4NDE4MjgwZGFiY2QyZTQyNTdlNjIwMDliNDQ2ZTc5IDEwMDc1NQotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTE2LDYgKzE2LDkgQEAgZnJvbSB1
dGlsIGltcG9ydCBsb2FkX3NlcnZlcl9jb25maWcKIGZyb20gdXRpbCBpbXBvcnQgc3VibWl0X2Nv
bW1pdHMKIGZyb20gdXRpbCBpbXBvcnQgdGV4dF9jb250ZW50CiAKKyMgVGhlcmUgYXJlIHNvbWUg
YnVnZ3kgY29tbWl0IG1lc3NhZ2VzOgorIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KK1JFVklT
SU9OX0lERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInQ2Fub25pY2FsIGxpbms6IChodHRwc1w6
Ly9jb21taXRzXC53ZWJraXRcLm9yZy8pKyg/UDxyZXZpc2lvbl9pZGVudGlmaWVyPlxkK0BbXHdc
LlwtXSspXG4nKQogCiBkZWYgbWFpbihhcmd2KToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcigpCkBAIC00Myw3ICs0NiwxMCBAQCBkZWYgbWFpbihhcmd2KToKIAogZGVmIGxv
YWRfcmVwb3NpdG9yeShyZXBvc2l0b3J5KToKICAgICBpZiAnZ2l0Q2hlY2tvdXQnIGluIHJlcG9z
aXRvcnk6Ci0gICAgICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFt
ZSddLCBnaXRfdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBnaXRfY2hlY2tvdXQ9cmVwb3NpdG9yeVsn
Z2l0Q2hlY2tvdXQnXSwgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgnYnJhbmNoJykpCisgICAg
ICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KAorICAgICAgICAgICAgbmFtZT1yZXBvc2l0b3J5Wydu
YW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5
WydnaXRDaGVja291dCddLAorICAgICAgICAgICAgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgn
YnJhbmNoJyksIHJlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9cmVwb3Np
dG9yeS5nZXQoJ3JlcG9ydFJldmlzaW9uSWRlbnRpZmllcicpLAorICAgICAgICAgICAgcmVwb3J0
X3N2bl9yZXZpc29uPXJlcG9zaXRvcnkuZ2V0KCdyZXBvcnRTVk5SZXZpc2lvbicpKQogICAgIHJl
dHVybiBTVk5SZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFtZSddLCBzdm5fdXJsPXJlcG9z
aXRvcnlbJ3VybCddLCBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGU9cmVwb3NpdG9yeS5nZXQoJ3Ry
dXN0Q2VydGlmaWNhdGUnLCBGYWxzZSksCiAgICAgICAgIHVzZV9zZXJ2ZXJfYXV0aD1yZXBvc2l0
b3J5LmdldCgndXNlU2VydmVyQXV0aCcsIEZhbHNlKSwgYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRo
PXJlcG9zaXRvcnkuZ2V0KCdhY2NvdW50TmFtZUZpbmRlclNjcmlwdCcpKQogCkBAIC0xOTIsMTkg
KzE5OCwzMCBAQCBjbGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiBjbGFzcyBHaXRS
ZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdp
dF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5jaD1Ob25lKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUsIHJlcG9y
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9RmFsc2UsIHJlcG9ydF9zdm5fcmV2
aXNvbj1GYWxzZSk6CiAgICAgICAgIGFzc2VydChvcy5wYXRoLmlzZGlyKGdpdF9jaGVja291dCkp
CiAgICAgICAgIHN1cGVyKEdpdFJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9fKG5hbWUpCiAgICAg
ICAgIHNlbGYuX2dpdF9jaGVja291dCA9IGdpdF9jaGVja291dAogICAgICAgICBzZWxmLl9naXRf
dXJsID0gZ2l0X3VybAogICAgICAgICBzZWxmLl9naXRfYnJhbmNoID0gZ2l0X2JyYW5jaAogICAg
ICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW10KKyAgICAgICAgc2VsZi5fcmVwb3J0X3Jl
dmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZyA9IHJlcG9ydF9yZXZpc2lvbl9pZGVudGlm
aWVyX2luX2NvbW1pdF9tc2cKKyAgICAgICAgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lvbiA9IHJl
cG9ydF9zdm5fcmV2aXNvbgogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZl
cl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CiAg
ICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFzaGVzKCkKICAgICAgICAgICAgIHRva2VucyA9
IHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbMF0KICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlm
IHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUg
dGhlIGxhc3Qgc3ZuIHJldmlzaW9uIHRvIGdpdCBoYXNoCisgICAgICAgICAgICAgICAgbGFzdF9m
ZXRjaGVkX2dpdF9oYXNoID0gc2VsZi5fZ2l0X2hhc2hfZnJvbV9zdm5fcmV2aXNpb24obGFzdF9m
ZXRjaGVkKQorICAgICAgICAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWRfZ2l0X2hhc2g6Cisg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZldGNoX3JlbW90ZSgpCisgICAgICAgICAgICAgICAg
ICAgIGxhc3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX2dpdF9oYXNoX2Zyb21fc3ZuX3Jldmlz
aW9uKGxhc3RfZmV0Y2hlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxhc3RfZmV0Y2hl
ZF9naXRfaGFzaDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nh
bm5vdCBmaW5kIHRoZSBnaXQgaGFzaCBmb3IgdGhlIGxhc3QgZmV0Y2hlZCBzdm4gcmV2aXNpb24n
KQorICAgICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZCA9IGxhc3RfZmV0Y2hlZF9naXRfaGFzaAog
ICAgICAgICAgICAgdG9rZW5zID0gc2VsZi5fZmluZF9uZXh0X2hhc2gobGFzdF9mZXRjaGVkKQog
ICAgICAgICAgICAgaWYgbm90IHRva2VuczoKICAgICAgICAgICAgICAgICBzZWxmLl9mZXRjaF9h
bGxfaGFzaGVzKCkKQEAgLTIyMCw2ICsyMzcsMTIgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBv
c2l0b3J5KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25fZnJvbV90b2tl
bnModG9rZW5zKQogICAgICAgICByZXR1cm4gTm9uZQogCisgICAgZGVmIF9zdm5fcmV2aXNpb25f
ZnJvbV9naXRfaGFzaChzZWxmLCBnaXRfaGFzaCk6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5f
Z2l0X2NvbW1hbmQoWydzdm4nLCAnZmluZC1yZXYnLCAne30nLmZvcm1hdChnaXRfaGFzaCldKS5z
dHJpcCgpCisKKyAgICBkZWYgX2dpdF9oYXNoX2Zyb21fc3ZuX3JldmlzaW9uKHNlbGYsIHJldmlz
aW9uKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ3N2bicsICdmaW5k
LXJldicsICdye30nLmZvcm1hdChyZXZpc2lvbildKS5zdHJpcCgpCisKICAgICBkZWYgX3Jldmlz
aW9uX2Zyb21fdG9rZW5zKHNlbGYsIHRva2Vucyk6CiAgICAgICAgIGN1cnJlbnRfaGFzaCA9IHRv
a2Vuc1swXQogICAgICAgICBjb21taXRfdGltZSA9IGludCh0b2tlbnNbMV0pCkBAIC0yMjksMTAg
KzI1MiwyOSBAQCBjbGFzcyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICBhdXRo
b3JfbmFtZSA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ2xvZycsIGN1cnJlbnRfaGFzaCwgJy0x
JywgJy0tcHJldHR5PSVjbiddKQogICAgICAgICBtZXNzYWdlID0gc2VsZi5fcnVuX2dpdF9jb21t
YW5kKFsnbG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JUInXSkKIAorICAgICAg
ICByZXZpc2lvbl9pZGVudGlmaWVyID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfcmV2
aXNpb25faWRlbnRpZmllcl9pbl9jb21taXRfbXNnOgorICAgICAgICAgICAgcmV2aXNpb25faWRl
bnRpZmllcl9tYXRjaCA9IFJFVklTSU9OX0lERU5USUZJRVJfUkUuc2VhcmNoKG1lc3NhZ2UpCisg
ICAgICAgICAgICBpZiBub3QgcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaDoKKyAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCBjb21taXQgbWVzc2FnZSB0byBpbmNsdWRl
IHJldmlzaW9uIGlkZW50aWZpZXIsIGJ1dCBjYW5ub3QgZmluZCBpdCwgd2lsbCBuZWVkIGEgaGlz
dG9yeSByZXdyaXRlIHRvIGZpeCBpdCcpCisgICAgICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVy
ID0gcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaC5ncm91cCgncmV2aXNpb25faWRlbnRpZmllcicp
CisKKyAgICAgICAgY3VycmVudF9yZXZpc2lvbiA9IGN1cnJlbnRfaGFzaAorICAgICAgICBwcmV2
aW91c19yZXZpc2lvbiA9IHByZXZpb3VzX2hhc2gKKyAgICAgICAgaWYgc2VsZi5fcmVwb3J0X3N2
bl9yZXZpc2lvbjoKKyAgICAgICAgICAgIGN1cnJlbnRfcmV2aXNpb24gPSBzZWxmLl9zdm5fcmV2
aXNpb25fZnJvbV9naXRfaGFzaChjdXJyZW50X2hhc2gpCisgICAgICAgICAgICBpZiBub3QgY3Vy
cmVudF9yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3Qg
ZmluZCBTVk4gcmV2aXNvbiBmb3Ige30nLmZvcm1hdChjdXJyZW50X3JldmlzaW9uKSkKKyAgICAg
ICAgICAgIGlmIHByZXZpb3VzX2hhc2g6CisgICAgICAgICAgICAgICAgcHJldmlvdXNfcmV2aXNp
b24gPSBzZWxmLl9zdm5fcmV2aXNpb25fZnJvbV9naXRfaGFzaChwcmV2aW91c19oYXNoKQorICAg
ICAgICAgICAgICAgIGlmIG5vdCBwcmV2aW91c19yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGZpbmQgU1ZOIHJldmlzb24gZm9yIHt9Jy5mb3Jt
YXQocHJldmlvdXNfaGFzaCkpCisKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICdyZXBv
c2l0b3J5Jzogc2VsZi5fbmFtZSwKLSAgICAgICAgICAgICdyZXZpc2lvbic6IGN1cnJlbnRfaGFz
aCwKLSAgICAgICAgICAgICdwcmV2aW91c0NvbW1pdCc6IHByZXZpb3VzX2hhc2gsCisgICAgICAg
ICAgICAncmV2aXNpb24nOiBjdXJyZW50X3JldmlzaW9uLAorICAgICAgICAgICAgJ3JldmlzaW9u
SWRlbnRpZmllcic6IHJldmlzaW9uX2lkZW50aWZpZXIsCisgICAgICAgICAgICAncHJldmlvdXND
b21taXQnOiBwcmV2aW91c19yZXZpc2lvbiwKICAgICAgICAgICAgICd0aW1lJzogZGF0ZXRpbWUu
ZnJvbXRpbWVzdGFtcChjb21taXRfdGltZSkuc3RyZnRpbWUociclWS0lbS0lZFQlSDolTTolUy4l
ZicpLAogICAgICAgICAgICAgJ2F1dGhvcic6IHsnYWNjb3VudCc6IGF1dGhvcl9lbWFpbCwgJ25h
bWUnOiBhdXRob3JfbmFtZX0sCiAgICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsCkBAIC0y
NDQsOCArMjg2LDEzIEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbaSArIDFdIGlmIGkgKyAxIDwg
bGVuKHNlbGYuX3Rva2VuaXplZF9oYXNoZXMpIGVsc2UgTm9uZQogICAgICAgICByZXR1cm4gTm9u
ZQogCi0gICAgZGVmIF9mZXRjaF9hbGxfaGFzaGVzKHNlbGYpOgorICAgIGRlZiBfZmV0Y2hfcmVt
b3RlKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydwdWxsJywgc2VsZi5f
Z2l0X3VybF0pCisgICAgICAgIGlmIHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAg
ICAgICBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydzdm4nLCAnZmV0Y2gnXSkKKworICAgIGRlZiBf
ZmV0Y2hfYWxsX2hhc2hlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fZmV0Y2hfcmVtb3RlKCkKICAg
ICAgICAgc2NvcGUgPSBzZWxmLl9naXRfYnJhbmNoIG9yICctLWFsbCcKICAgICAgICAgbGluZXMg
PSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBzY29wZSwgJy0tZGF0ZS1vcmRlcicsICct
LXJldmVyc2UnLCAnLS1wcmV0dHk9JUggJWN0ICVjZSAlUCddKS5zcGxpdCgnXG4nKQogICAgICAg
ICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW2xpbmUuc3BsaXQoKSBmb3IgbGluZSBpbiBsaW5l
c10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427723</attachid>
            <date>2021-05-04 18:53:33 -0700</date>
            <delta_ts>2021-05-04 19:00:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210504185332.patch</filename>
            <type>text/plain</type>
            <size>7464</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi45N2ViYjM0YzI4
OGFlODEwOTAwOTVkMDFiMzEyZTdmYzJjOGY2ZjRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3luY2lu
ZyByZXBvIHdpdGggY29tbWl0IHJldmlzaW9uIGxhYmVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiByZXBvcnRS
ZXZpc2lvbklkZW50aWZpZXIsIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQgdHJ5IHRvIHN5bmMg
dGhlIGNvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGZyb20gdGhlIGNvbW1pdCBtZXNzYWdlLgor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFNWTlJldmlzaW9uLCB3aGljaCB3
aWxsIGxldCB0aGUgc2NyaXB0IHRyeSB0byByZXBvcnQgU1ZOIHJldmlzaW9uIGZyb20gYSBnaXQt
c3ZuIHJlcG8uCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKGxvYWRfcmVwb3NpdG9yeSk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5
Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuZmV0Y2hfbmV4dF9jb21taXQpOgor
ICAgICAgICAoR2l0UmVwb3NpdG9yeS5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKToKKyAgICAg
ICAgKEdpdFJlcG9zaXRvcnkuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaCk6CisgICAgICAgIChH
aXRSZXBvc2l0b3J5Ll9yZXZpc2lvbl9mcm9tX3Rva2Vucyk6CisgICAgICAgIChHaXRSZXBvc2l0
b3J5Ll9mZXRjaF9hbGxfaGFzaGVzKToKKwogMjAyMS0wMy0zMSAgWmhpZmVpIEZhbmcgIDx6aGlm
ZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBz
dXBwb3J0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1j
b21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5w
eQppbmRleCA4Nzk5NzUwZjNkYTNhYzhiNTk4NTdiZjdjNDY1OGZiZDY4OThjZDNmLi44ZTA2OWQ3
Mzg0ODgzMzNmOTZmYTIzYjQ5NDZlZWEzYTRkYWY2MTg5IDEwMDc1NQotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTE2LDYgKzE2LDkgQEAgZnJvbSB1
dGlsIGltcG9ydCBsb2FkX3NlcnZlcl9jb25maWcKIGZyb20gdXRpbCBpbXBvcnQgc3VibWl0X2Nv
bW1pdHMKIGZyb20gdXRpbCBpbXBvcnQgdGV4dF9jb250ZW50CiAKKyMgVGhlcmUgYXJlIHNvbWUg
YnVnZ3kgY29tbWl0IG1lc3NhZ2VzOgorIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KK1JFVklT
SU9OX0lERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInQ2Fub25pY2FsIGxpbms6IChodHRwc1w6
Ly9jb21taXRzXC53ZWJraXRcLm9yZy8pKyg/UDxyZXZpc2lvbl9pZGVudGlmaWVyPlxkK0BbXHdc
LlwtXSspXG4nKQogCiBkZWYgbWFpbihhcmd2KToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcigpCkBAIC00Myw3ICs0NiwxMCBAQCBkZWYgbWFpbihhcmd2KToKIAogZGVmIGxv
YWRfcmVwb3NpdG9yeShyZXBvc2l0b3J5KToKICAgICBpZiAnZ2l0Q2hlY2tvdXQnIGluIHJlcG9z
aXRvcnk6Ci0gICAgICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFt
ZSddLCBnaXRfdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBnaXRfY2hlY2tvdXQ9cmVwb3NpdG9yeVsn
Z2l0Q2hlY2tvdXQnXSwgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgnYnJhbmNoJykpCisgICAg
ICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KAorICAgICAgICAgICAgbmFtZT1yZXBvc2l0b3J5Wydu
YW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5
WydnaXRDaGVja291dCddLAorICAgICAgICAgICAgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgn
YnJhbmNoJyksIHJlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9cmVwb3Np
dG9yeS5nZXQoJ3JlcG9ydFJldmlzaW9uSWRlbnRpZmllcicpLAorICAgICAgICAgICAgcmVwb3J0
X3N2bl9yZXZpc29uPXJlcG9zaXRvcnkuZ2V0KCdyZXBvcnRTVk5SZXZpc2lvbicpKQogICAgIHJl
dHVybiBTVk5SZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFtZSddLCBzdm5fdXJsPXJlcG9z
aXRvcnlbJ3VybCddLCBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGU9cmVwb3NpdG9yeS5nZXQoJ3Ry
dXN0Q2VydGlmaWNhdGUnLCBGYWxzZSksCiAgICAgICAgIHVzZV9zZXJ2ZXJfYXV0aD1yZXBvc2l0
b3J5LmdldCgndXNlU2VydmVyQXV0aCcsIEZhbHNlKSwgYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRo
PXJlcG9zaXRvcnkuZ2V0KCdhY2NvdW50TmFtZUZpbmRlclNjcmlwdCcpKQogCkBAIC0xOTIsMTkg
KzE5OCwyOSBAQCBjbGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiBjbGFzcyBHaXRS
ZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdp
dF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5jaD1Ob25lKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUsIHJlcG9y
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9RmFsc2UsIHJlcG9ydF9zdm5fcmV2
aXNvbj1GYWxzZSk6CiAgICAgICAgIGFzc2VydChvcy5wYXRoLmlzZGlyKGdpdF9jaGVja291dCkp
CiAgICAgICAgIHN1cGVyKEdpdFJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9fKG5hbWUpCiAgICAg
ICAgIHNlbGYuX2dpdF9jaGVja291dCA9IGdpdF9jaGVja291dAogICAgICAgICBzZWxmLl9naXRf
dXJsID0gZ2l0X3VybAogICAgICAgICBzZWxmLl9naXRfYnJhbmNoID0gZ2l0X2JyYW5jaAogICAg
ICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW10KKyAgICAgICAgc2VsZi5fcmVwb3J0X3Jl
dmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZyA9IHJlcG9ydF9yZXZpc2lvbl9pZGVudGlm
aWVyX2luX2NvbW1pdF9tc2cKKyAgICAgICAgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lvbiA9IHJl
cG9ydF9zdm5fcmV2aXNvbgogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZl
cl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CiAg
ICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFzaGVzKCkKICAgICAgICAgICAgIHRva2VucyA9
IHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbMF0KICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlm
IHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgbGFzdF9mZXRjaGVk
X2dpdF9oYXNoID0gc2VsZi5fZ2l0X2hhc2hfZnJvbV9zdm5fcmV2aXNpb24obGFzdF9mZXRjaGVk
KQorICAgICAgICAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWRfZ2l0X2hhc2g6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2ZldGNoX3JlbW90ZSgpCisgICAgICAgICAgICAgICAgICAgIGxh
c3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX2dpdF9oYXNoX2Zyb21fc3ZuX3JldmlzaW9uKGxh
c3RfZmV0Y2hlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxhc3RfZmV0Y2hlZF9naXRf
aGFzaDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBm
aW5kIHRoZSBnaXQgaGFzaCBmb3IgdGhlIGxhc3QgZmV0Y2hlZCBzdm4gcmV2aXNpb24nKQorICAg
ICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZCA9IGxhc3RfZmV0Y2hlZF9naXRfaGFzaAogICAgICAg
ICAgICAgdG9rZW5zID0gc2VsZi5fZmluZF9uZXh0X2hhc2gobGFzdF9mZXRjaGVkKQogICAgICAg
ICAgICAgaWYgbm90IHRva2VuczoKICAgICAgICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFz
aGVzKCkKQEAgLTIyMCw2ICsyMzYsMTIgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5
KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25fZnJvbV90b2tlbnModG9r
ZW5zKQogICAgICAgICByZXR1cm4gTm9uZQogCisgICAgZGVmIF9zdm5fcmV2aXNpb25fZnJvbV9n
aXRfaGFzaChzZWxmLCBnaXRfaGFzaCk6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fZ2l0X2Nv
bW1hbmQoWydzdm4nLCAnZmluZC1yZXYnLCAne30nLmZvcm1hdChnaXRfaGFzaCldKS5zdHJpcCgp
CisKKyAgICBkZWYgX2dpdF9oYXNoX2Zyb21fc3ZuX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ3N2bicsICdmaW5kLXJldics
ICdye30nLmZvcm1hdChyZXZpc2lvbildKS5zdHJpcCgpCisKICAgICBkZWYgX3JldmlzaW9uX2Zy
b21fdG9rZW5zKHNlbGYsIHRva2Vucyk6CiAgICAgICAgIGN1cnJlbnRfaGFzaCA9IHRva2Vuc1sw
XQogICAgICAgICBjb21taXRfdGltZSA9IGludCh0b2tlbnNbMV0pCkBAIC0yMjksMTAgKzI1MSwy
OSBAQCBjbGFzcyBHaXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICBhdXRob3JfbmFt
ZSA9IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ2xvZycsIGN1cnJlbnRfaGFzaCwgJy0xJywgJy0t
cHJldHR5PSVjbiddKQogICAgICAgICBtZXNzYWdlID0gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsn
bG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JUInXSkKIAorICAgICAgICByZXZp
c2lvbl9pZGVudGlmaWVyID0gTm9uZQorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfcmV2aXNpb25f
aWRlbnRpZmllcl9pbl9jb21taXRfbXNnOgorICAgICAgICAgICAgcmV2aXNpb25faWRlbnRpZmll
cl9tYXRjaCA9IFJFVklTSU9OX0lERU5USUZJRVJfUkUuc2VhcmNoKG1lc3NhZ2UpCisgICAgICAg
ICAgICBpZiBub3QgcmV2aXNpb25faWRlbnRpZmllcl9tYXRjaDoKKyAgICAgICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCdFeHBlY3RlZCBjb21taXQgbWVzc2FnZSB0byBpbmNsdWRlIHJldmlz
aW9uIGlkZW50aWZpZXIsIGJ1dCBjYW5ub3QgZmluZCBpdCwgd2lsbCBuZWVkIGEgaGlzdG9yeSBy
ZXdyaXRlIHRvIGZpeCBpdCcpCisgICAgICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVyID0gcmV2
aXNpb25faWRlbnRpZmllcl9tYXRjaC5ncm91cCgncmV2aXNpb25faWRlbnRpZmllcicpCisKKyAg
ICAgICAgY3VycmVudF9yZXZpc2lvbiA9IGN1cnJlbnRfaGFzaAorICAgICAgICBwcmV2aW91c19y
ZXZpc2lvbiA9IHByZXZpb3VzX2hhc2gKKyAgICAgICAgaWYgc2VsZi5fcmVwb3J0X3N2bl9yZXZp
c2lvbjoKKyAgICAgICAgICAgIGN1cnJlbnRfcmV2aXNpb24gPSBzZWxmLl9zdm5fcmV2aXNpb25f
ZnJvbV9naXRfaGFzaChjdXJyZW50X2hhc2gpCisgICAgICAgICAgICBpZiBub3QgY3VycmVudF9y
ZXZpc2lvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW5ub3QgZmluZCBT
Vk4gcmV2aXNvbiBmb3Ige30nLmZvcm1hdChjdXJyZW50X3JldmlzaW9uKSkKKyAgICAgICAgICAg
IGlmIHByZXZpb3VzX2hhc2g6CisgICAgICAgICAgICAgICAgcHJldmlvdXNfcmV2aXNpb24gPSBz
ZWxmLl9zdm5fcmV2aXNpb25fZnJvbV9naXRfaGFzaChwcmV2aW91c19oYXNoKQorICAgICAgICAg
ICAgICAgIGlmIG5vdCBwcmV2aW91c19yZXZpc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcignQ2Fubm90IGZpbmQgU1ZOIHJldmlzb24gZm9yIHt9Jy5mb3JtYXQocHJl
dmlvdXNfaGFzaCkpCisKICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICdyZXBvc2l0b3J5
Jzogc2VsZi5fbmFtZSwKLSAgICAgICAgICAgICdyZXZpc2lvbic6IGN1cnJlbnRfaGFzaCwKLSAg
ICAgICAgICAgICdwcmV2aW91c0NvbW1pdCc6IHByZXZpb3VzX2hhc2gsCisgICAgICAgICAgICAn
cmV2aXNpb24nOiBjdXJyZW50X3JldmlzaW9uLAorICAgICAgICAgICAgJ3JldmlzaW9uSWRlbnRp
Zmllcic6IHJldmlzaW9uX2lkZW50aWZpZXIsCisgICAgICAgICAgICAncHJldmlvdXNDb21taXQn
OiBwcmV2aW91c19yZXZpc2lvbiwKICAgICAgICAgICAgICd0aW1lJzogZGF0ZXRpbWUuZnJvbXRp
bWVzdGFtcChjb21taXRfdGltZSkuc3RyZnRpbWUociclWS0lbS0lZFQlSDolTTolUy4lZicpLAog
ICAgICAgICAgICAgJ2F1dGhvcic6IHsnYWNjb3VudCc6IGF1dGhvcl9lbWFpbCwgJ25hbWUnOiBh
dXRob3JfbmFtZX0sCiAgICAgICAgICAgICAnbWVzc2FnZSc6IG1lc3NhZ2UsCkBAIC0yNDQsOCAr
Mjg1LDEzIEBAIGNsYXNzIEdpdFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbaSArIDFdIGlmIGkgKyAxIDwgbGVuKHNl
bGYuX3Rva2VuaXplZF9oYXNoZXMpIGVsc2UgTm9uZQogICAgICAgICByZXR1cm4gTm9uZQogCi0g
ICAgZGVmIF9mZXRjaF9hbGxfaGFzaGVzKHNlbGYpOgorICAgIGRlZiBfZmV0Y2hfcmVtb3RlKHNl
bGYpOgogICAgICAgICBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydwdWxsJywgc2VsZi5fZ2l0X3Vy
bF0pCisgICAgICAgIGlmIHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAgICBz
ZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydzdm4nLCAnZmV0Y2gnXSkKKworICAgIGRlZiBfZmV0Y2hf
YWxsX2hhc2hlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fZmV0Y2hfcmVtb3RlKCkKICAgICAgICAg
c2NvcGUgPSBzZWxmLl9naXRfYnJhbmNoIG9yICctLWFsbCcKICAgICAgICAgbGluZXMgPSBzZWxm
Ll9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBzY29wZSwgJy0tZGF0ZS1vcmRlcicsICctLXJldmVy
c2UnLCAnLS1wcmV0dHk9JUggJWN0ICVjZSAlUCddKS5zcGxpdCgnXG4nKQogICAgICAgICBzZWxm
Ll90b2tlbml6ZWRfaGFzaGVzID0gW2xpbmUuc3BsaXQoKSBmb3IgbGluZSBpbiBsaW5lc10K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427726</attachid>
            <date>2021-05-04 19:00:08 -0700</date>
            <delta_ts>2021-05-04 20:06:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210504190007.patch</filename>
            <type>text/plain</type>
            <size>7451</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi45N2ViYjM0YzI4
OGFlODEwOTAwOTVkMDFiMzEyZTdmYzJjOGY2ZjRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3luY2lu
ZyByZXBvIHdpdGggY29tbWl0IHJldmlzaW9uIGxhYmVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiByZXBvcnRS
ZXZpc2lvbklkZW50aWZpZXIsIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQgdHJ5IHRvIHN5bmMg
dGhlIGNvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGZyb20gdGhlIGNvbW1pdCBtZXNzYWdlLgor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFNWTlJldmlzaW9uLCB3aGljaCB3
aWxsIGxldCB0aGUgc2NyaXB0IHRyeSB0byByZXBvcnQgU1ZOIHJldmlzaW9uIGZyb20gYSBnaXQt
c3ZuIHJlcG8uCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKGxvYWRfcmVwb3NpdG9yeSk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5
Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuZmV0Y2hfbmV4dF9jb21taXQpOgor
ICAgICAgICAoR2l0UmVwb3NpdG9yeS5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKToKKyAgICAg
ICAgKEdpdFJlcG9zaXRvcnkuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaCk6CisgICAgICAgIChH
aXRSZXBvc2l0b3J5Ll9yZXZpc2lvbl9mcm9tX3Rva2Vucyk6CisgICAgICAgIChHaXRSZXBvc2l0
b3J5Ll9mZXRjaF9hbGxfaGFzaGVzKToKKwogMjAyMS0wMy0zMSAgWmhpZmVpIEZhbmcgIDx6aGlm
ZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBz
dXBwb3J0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1j
b21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5w
eQppbmRleCA4Nzk5NzUwZjNkYTNhYzhiNTk4NTdiZjdjNDY1OGZiZDY4OThjZDNmLi44MjlhNDU1
ZTBjNjgxMmM5OTc3NzcxOGY0YzM1YWFlMjY2ZDZmZTE4IDEwMDc1NQotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTE2LDYgKzE2LDkgQEAgZnJvbSB1
dGlsIGltcG9ydCBsb2FkX3NlcnZlcl9jb25maWcKIGZyb20gdXRpbCBpbXBvcnQgc3VibWl0X2Nv
bW1pdHMKIGZyb20gdXRpbCBpbXBvcnQgdGV4dF9jb250ZW50CiAKKyMgVGhlcmUgYXJlIHNvbWUg
YnVnZ3kgY29tbWl0IG1lc3NhZ2VzOgorIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KK1JFVklT
SU9OX0lERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInQ2Fub25pY2FsIGxpbms6IChodHRwc1w6
Ly9jb21taXRzXC53ZWJraXRcLm9yZy8pKyg/UDxyZXZpc2lvbl9pZGVudGlmaWVyPlxkK0BbXHdc
LlwtXSspXG4nKQogCiBkZWYgbWFpbihhcmd2KToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcigpCkBAIC00Myw3ICs0NiwxMCBAQCBkZWYgbWFpbihhcmd2KToKIAogZGVmIGxv
YWRfcmVwb3NpdG9yeShyZXBvc2l0b3J5KToKICAgICBpZiAnZ2l0Q2hlY2tvdXQnIGluIHJlcG9z
aXRvcnk6Ci0gICAgICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFt
ZSddLCBnaXRfdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBnaXRfY2hlY2tvdXQ9cmVwb3NpdG9yeVsn
Z2l0Q2hlY2tvdXQnXSwgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgnYnJhbmNoJykpCisgICAg
ICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KAorICAgICAgICAgICAgbmFtZT1yZXBvc2l0b3J5Wydu
YW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5
WydnaXRDaGVja291dCddLAorICAgICAgICAgICAgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgn
YnJhbmNoJyksIHJlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9cmVwb3Np
dG9yeS5nZXQoJ3JlcG9ydFJldmlzaW9uSWRlbnRpZmllcicpLAorICAgICAgICAgICAgcmVwb3J0
X3N2bl9yZXZpc29uPXJlcG9zaXRvcnkuZ2V0KCdyZXBvcnRTVk5SZXZpc2lvbicpKQogICAgIHJl
dHVybiBTVk5SZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFtZSddLCBzdm5fdXJsPXJlcG9z
aXRvcnlbJ3VybCddLCBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGU9cmVwb3NpdG9yeS5nZXQoJ3Ry
dXN0Q2VydGlmaWNhdGUnLCBGYWxzZSksCiAgICAgICAgIHVzZV9zZXJ2ZXJfYXV0aD1yZXBvc2l0
b3J5LmdldCgndXNlU2VydmVyQXV0aCcsIEZhbHNlKSwgYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRo
PXJlcG9zaXRvcnkuZ2V0KCdhY2NvdW50TmFtZUZpbmRlclNjcmlwdCcpKQogCkBAIC0xOTIsMTkg
KzE5OCwyOSBAQCBjbGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiBjbGFzcyBHaXRS
ZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdp
dF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5jaD1Ob25lKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUsIHJlcG9y
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9RmFsc2UsIHJlcG9ydF9zdm5fcmV2
aXNvbj1GYWxzZSk6CiAgICAgICAgIGFzc2VydChvcy5wYXRoLmlzZGlyKGdpdF9jaGVja291dCkp
CiAgICAgICAgIHN1cGVyKEdpdFJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9fKG5hbWUpCiAgICAg
ICAgIHNlbGYuX2dpdF9jaGVja291dCA9IGdpdF9jaGVja291dAogICAgICAgICBzZWxmLl9naXRf
dXJsID0gZ2l0X3VybAogICAgICAgICBzZWxmLl9naXRfYnJhbmNoID0gZ2l0X2JyYW5jaAogICAg
ICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW10KKyAgICAgICAgc2VsZi5fcmVwb3J0X3Jl
dmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZyA9IHJlcG9ydF9yZXZpc2lvbl9pZGVudGlm
aWVyX2luX2NvbW1pdF9tc2cKKyAgICAgICAgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lvbiA9IHJl
cG9ydF9zdm5fcmV2aXNvbgogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZl
cl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CiAg
ICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFzaGVzKCkKICAgICAgICAgICAgIHRva2VucyA9
IHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbMF0KICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlm
IHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgbGFzdF9mZXRjaGVk
X2dpdF9oYXNoID0gc2VsZi5fZ2l0X2hhc2hfZnJvbV9zdm5fcmV2aXNpb24obGFzdF9mZXRjaGVk
KQorICAgICAgICAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWRfZ2l0X2hhc2g6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2ZldGNoX3JlbW90ZSgpCisgICAgICAgICAgICAgICAgICAgIGxh
c3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX2dpdF9oYXNoX2Zyb21fc3ZuX3JldmlzaW9uKGxh
c3RfZmV0Y2hlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxhc3RfZmV0Y2hlZF9naXRf
aGFzaDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBm
aW5kIHRoZSBnaXQgaGFzaCBmb3IgdGhlIGxhc3QgZmV0Y2hlZCBzdm4gcmV2aXNpb24nKQorICAg
ICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZCA9IGxhc3RfZmV0Y2hlZF9naXRfaGFzaAogICAgICAg
ICAgICAgdG9rZW5zID0gc2VsZi5fZmluZF9uZXh0X2hhc2gobGFzdF9mZXRjaGVkKQogICAgICAg
ICAgICAgaWYgbm90IHRva2VuczoKICAgICAgICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFz
aGVzKCkKQEAgLTIyMCw2ICsyMzYsMTIgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5
KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25fZnJvbV90b2tlbnModG9r
ZW5zKQogICAgICAgICByZXR1cm4gTm9uZQogCisgICAgZGVmIF9zdm5fcmV2aXNpb25fZnJvbV9n
aXRfaGFzaChzZWxmLCBnaXRfaGFzaCk6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fZ2l0X2Nv
bW1hbmQoWydzdm4nLCAnZmluZC1yZXYnLCBnaXRfaGFzaF0pLnN0cmlwKCkKKworICAgIGRlZiBf
Z2l0X2hhc2hfZnJvbV9zdm5fcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1
cm4gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnc3ZuJywgJ2ZpbmQtcmV2JywgJ3J7fScuZm9ybWF0
KHJldmlzaW9uKV0pLnN0cmlwKCkKKwogICAgIGRlZiBfcmV2aXNpb25fZnJvbV90b2tlbnMoc2Vs
ZiwgdG9rZW5zKToKICAgICAgICAgY3VycmVudF9oYXNoID0gdG9rZW5zWzBdCiAgICAgICAgIGNv
bW1pdF90aW1lID0gaW50KHRva2Vuc1sxXSkKQEAgLTIyOSwxMCArMjUxLDI5IEBAIGNsYXNzIEdp
dFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVu
X2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10p
CiAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50
X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQogCisgICAgICAgIHJldmlzaW9uX2lkZW50aWZp
ZXIgPSBOb25lCisgICAgICAgIGlmIHNlbGYuX3JlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2lu
X2NvbW1pdF9tc2c6CisgICAgICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoID0gUkVW
SVNJT05fSURFTlRJRklFUl9SRS5zZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCBy
ZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0V4cGVjdGVkIGNvbW1pdCBtZXNzYWdlIHRvIGluY2x1ZGUgcmV2aXNpb24gaWRlbnRpZmll
ciwgYnV0IGNhbm5vdCBmaW5kIGl0LCB3aWxsIG5lZWQgYSBoaXN0b3J5IHJld3JpdGUgdG8gZml4
IGl0JykKKyAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSByZXZpc2lvbl9pZGVudGlm
aWVyX21hdGNoLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlmaWVyJykKKworICAgICAgICBjdXJyZW50
X3JldmlzaW9uID0gY3VycmVudF9oYXNoCisgICAgICAgIHByZXZpb3VzX3JldmlzaW9uID0gcHJl
dmlvdXNfaGFzaAorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAg
ICAgICAgY3VycmVudF9yZXZpc2lvbiA9IHNlbGYuX3N2bl9yZXZpc2lvbl9mcm9tX2dpdF9oYXNo
KGN1cnJlbnRfaGFzaCkKKyAgICAgICAgICAgIGlmIG5vdCBjdXJyZW50X3JldmlzaW9uOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBmaW5kIFNWTiByZXZpc29uIGZv
ciB7fScuZm9ybWF0KGN1cnJlbnRfcmV2aXNpb24pKQorICAgICAgICAgICAgaWYgcHJldmlvdXNf
aGFzaDoKKyAgICAgICAgICAgICAgICBwcmV2aW91c19yZXZpc2lvbiA9IHNlbGYuX3N2bl9yZXZp
c2lvbl9mcm9tX2dpdF9oYXNoKHByZXZpb3VzX2hhc2gpCisgICAgICAgICAgICAgICAgaWYgbm90
IHByZXZpb3VzX3JldmlzaW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCdDYW5ub3QgZmluZCBTVk4gcmV2aXNvbiBmb3Ige30nLmZvcm1hdChwcmV2aW91c19oYXNoKSkK
KwogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgJ3JlcG9zaXRvcnknOiBzZWxmLl9uYW1l
LAotICAgICAgICAgICAgJ3JldmlzaW9uJzogY3VycmVudF9oYXNoLAotICAgICAgICAgICAgJ3By
ZXZpb3VzQ29tbWl0JzogcHJldmlvdXNfaGFzaCwKKyAgICAgICAgICAgICdyZXZpc2lvbic6IGN1
cnJlbnRfcmV2aXNpb24sCisgICAgICAgICAgICAncmV2aXNpb25JZGVudGlmaWVyJzogcmV2aXNp
b25faWRlbnRpZmllciwKKyAgICAgICAgICAgICdwcmV2aW91c0NvbW1pdCc6IHByZXZpb3VzX3Jl
dmlzaW9uLAogICAgICAgICAgICAgJ3RpbWUnOiBkYXRldGltZS5mcm9tdGltZXN0YW1wKGNvbW1p
dF90aW1lKS5zdHJmdGltZShyJyVZLSVtLSVkVCVIOiVNOiVTLiVmJyksCiAgICAgICAgICAgICAn
YXV0aG9yJzogeydhY2NvdW50JzogYXV0aG9yX2VtYWlsLCAnbmFtZSc6IGF1dGhvcl9uYW1lfSwK
ICAgICAgICAgICAgICdtZXNzYWdlJzogbWVzc2FnZSwKQEAgLTI0NCw4ICsyODUsMTMgQEAgY2xh
c3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5fdG9rZW5pemVkX2hhc2hlc1tpICsgMV0gaWYgaSArIDEgPCBsZW4oc2VsZi5fdG9rZW5pemVk
X2hhc2hlcykgZWxzZSBOb25lCiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgX2ZldGNo
X2FsbF9oYXNoZXMoc2VsZik6CisgICAgZGVmIF9mZXRjaF9yZW1vdGUoc2VsZik6CiAgICAgICAg
IHNlbGYuX3J1bl9naXRfY29tbWFuZChbJ3B1bGwnLCBzZWxmLl9naXRfdXJsXSkKKyAgICAgICAg
aWYgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lvbjoKKyAgICAgICAgICAgIHNlbGYuX3J1bl9naXRf
Y29tbWFuZChbJ3N2bicsICdmZXRjaCddKQorCisgICAgZGVmIF9mZXRjaF9hbGxfaGFzaGVzKHNl
bGYpOgorICAgICAgICBzZWxmLl9mZXRjaF9yZW1vdGUoKQogICAgICAgICBzY29wZSA9IHNlbGYu
X2dpdF9icmFuY2ggb3IgJy0tYWxsJwogICAgICAgICBsaW5lcyA9IHNlbGYuX3J1bl9naXRfY29t
bWFuZChbJ2xvZycsIHNjb3BlLCAnLS1kYXRlLW9yZGVyJywgJy0tcmV2ZXJzZScsICctLXByZXR0
eT0lSCAlY3QgJWNlICVQJ10pLnNwbGl0KCdcbicpCiAgICAgICAgIHNlbGYuX3Rva2VuaXplZF9o
YXNoZXMgPSBbbGluZS5zcGxpdCgpIGZvciBsaW5lIGluIGxpbmVzXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427728</attachid>
            <date>2021-05-04 20:06:15 -0700</date>
            <delta_ts>2021-05-07 18:08:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221982-20210504200615.patch</filename>
            <type>text/plain</type>
            <size>7447</size>
            <attacher name="Zhifei Fang">zhifei_fang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjUyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndl
YmtpdC5vcmcvQ2hhbmdlTG9nIGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwpp
bmRleCBiZTJkNTI2NTBhOWZkNWRkNmIyMjU1MjU4ZTE0MGY4NDFjN2M4M2EwLi45N2ViYjM0YzI4
OGFlODEwOTAwOTVkMDFiMzEyZTdmYzJjOGY2ZjRlIDEwMDY0NAotLS0gYS9XZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvQ2hhbmdlTG9nCisrKyBiL1dlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAyMS0wNC0xNCAgWmhpZmVpIEZhbmcgIDx6aGlmZWlf
ZmFuZ0BhcHBsZS5jb20+CisgICAgICAgIAorICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3luY2lu
ZyByZXBvIHdpdGggY29tbWl0IHJldmlzaW9uIGxhYmVsLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBzeW5jaW5nIG9wdGlvbiByZXBvcnRS
ZXZpc2lvbklkZW50aWZpZXIsIHdoaWNoIHdpbGwgbGV0IHRoZSBzY3JpcHQgdHJ5IHRvIHN5bmMg
dGhlIGNvbW1pdCByZXZpc2lvbiBpZGVudGlmaWVyIGZyb20gdGhlIGNvbW1pdCBtZXNzYWdlLgor
ICAgICAgICBBZGQgbmV3IHN5bmNpbmcgb3B0aW9uIHJlcG9ydFNWTlJldmlzaW9uLCB3aGljaCB3
aWxsIGxldCB0aGUgc2NyaXB0IHRyeSB0byByZXBvcnQgU1ZOIHJldmlzaW9uIGZyb20gYSBnaXQt
c3ZuIHJlcG8uCisKKyAgICAgICAgKiB0b29scy9zeW5jLWNvbW1pdHMucHk6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKGxvYWRfcmVwb3NpdG9yeSk6CisgICAgICAgIChHaXRSZXBvc2l0b3J5
Ll9faW5pdF9fKToKKyAgICAgICAgKEdpdFJlcG9zaXRvcnkuZmV0Y2hfbmV4dF9jb21taXQpOgor
ICAgICAgICAoR2l0UmVwb3NpdG9yeS5fZ2l0X2hhc2hfdG9fc3ZuX3JldmlzaW9uKToKKyAgICAg
ICAgKEdpdFJlcG9zaXRvcnkuX3N2bl9yZXZpc2lvbl90b19naXRfaGFzaCk6CisgICAgICAgIChH
aXRSZXBvc2l0b3J5Ll9yZXZpc2lvbl9mcm9tX3Rva2Vucyk6CisgICAgICAgIChHaXRSZXBvc2l0
b3J5Ll9mZXRjaF9hbGxfaGFzaGVzKToKKwogMjAyMS0wMy0zMSAgWmhpZmVpIEZhbmcgIDx6aGlm
ZWlfZmFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1pdCByZXZpc2lvbiBsYWJlbCBz
dXBwb3J0CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1j
b21taXRzLnB5IGIvV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3N5bmMtY29tbWl0cy5w
eQppbmRleCA4Nzk5NzUwZjNkYTNhYzhiNTk4NTdiZjdjNDY1OGZiZDY4OThjZDNmLi43ZWNhNDk4
ZTU3NzBmOTc0YmE2OTMwM2FiYmE2ODMzNDgzOGM3OTIzIDEwMDc1NQotLS0gYS9XZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvdG9vbHMvc3luYy1jb21taXRzLnB5CisrKyBiL1dlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy90b29scy9zeW5jLWNvbW1pdHMucHkKQEAgLTE2LDYgKzE2LDkgQEAgZnJvbSB1
dGlsIGltcG9ydCBsb2FkX3NlcnZlcl9jb25maWcKIGZyb20gdXRpbCBpbXBvcnQgc3VibWl0X2Nv
bW1pdHMKIGZyb20gdXRpbCBpbXBvcnQgdGV4dF9jb250ZW50CiAKKyMgVGhlcmUgYXJlIHNvbWUg
YnVnZ3kgY29tbWl0IG1lc3NhZ2VzOgorIyBDYW5vbmljYWwgbGluazogaHR0cHM6Ly9jb21taXRz
LndlYmtpdC5vcmcvaHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjMyNDc3QG1haW4KK1JFVklT
SU9OX0lERU5USUZJRVJfUkUgPSByZS5jb21waWxlKHInQ2Fub25pY2FsIGxpbms6IChodHRwc1w6
Ly9jb21taXRzXC53ZWJraXRcLm9yZy8pKyg/UDxyZXZpc2lvbl9pZGVudGlmaWVyPlxkK0BbXHdc
LlwtXSspXG4nKQogCiBkZWYgbWFpbihhcmd2KToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcigpCkBAIC00Myw3ICs0NiwxMCBAQCBkZWYgbWFpbihhcmd2KToKIAogZGVmIGxv
YWRfcmVwb3NpdG9yeShyZXBvc2l0b3J5KToKICAgICBpZiAnZ2l0Q2hlY2tvdXQnIGluIHJlcG9z
aXRvcnk6Ci0gICAgICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFt
ZSddLCBnaXRfdXJsPXJlcG9zaXRvcnlbJ3VybCddLCBnaXRfY2hlY2tvdXQ9cmVwb3NpdG9yeVsn
Z2l0Q2hlY2tvdXQnXSwgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgnYnJhbmNoJykpCisgICAg
ICAgIHJldHVybiBHaXRSZXBvc2l0b3J5KAorICAgICAgICAgICAgbmFtZT1yZXBvc2l0b3J5Wydu
YW1lJ10sIGdpdF91cmw9cmVwb3NpdG9yeVsndXJsJ10sIGdpdF9jaGVja291dD1yZXBvc2l0b3J5
WydnaXRDaGVja291dCddLAorICAgICAgICAgICAgZ2l0X2JyYW5jaD1yZXBvc2l0b3J5LmdldCgn
YnJhbmNoJyksIHJlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9cmVwb3Np
dG9yeS5nZXQoJ3JlcG9ydFJldmlzaW9uSWRlbnRpZmllcicpLAorICAgICAgICAgICAgcmVwb3J0
X3N2bl9yZXZpc29uPXJlcG9zaXRvcnkuZ2V0KCdyZXBvcnRTVk5SZXZpc2lvbicpKQogICAgIHJl
dHVybiBTVk5SZXBvc2l0b3J5KG5hbWU9cmVwb3NpdG9yeVsnbmFtZSddLCBzdm5fdXJsPXJlcG9z
aXRvcnlbJ3VybCddLCBzaG91bGRfdHJ1c3RfY2VydGlmaWNhdGU9cmVwb3NpdG9yeS5nZXQoJ3Ry
dXN0Q2VydGlmaWNhdGUnLCBGYWxzZSksCiAgICAgICAgIHVzZV9zZXJ2ZXJfYXV0aD1yZXBvc2l0
b3J5LmdldCgndXNlU2VydmVyQXV0aCcsIEZhbHNlKSwgYWNjb3VudF9uYW1lX3NjcmlwdF9wYXRo
PXJlcG9zaXRvcnkuZ2V0KCdhY2NvdW50TmFtZUZpbmRlclNjcmlwdCcpKQogCkBAIC0xOTIsMTkg
KzE5OCwyOSBAQCBjbGFzcyBTVk5SZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCiBjbGFzcyBHaXRS
ZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGdp
dF9jaGVja291dCwgZ2l0X3VybCwgZ2l0X2JyYW5jaD1Ob25lKToKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgZ2l0X2NoZWNrb3V0LCBnaXRfdXJsLCBnaXRfYnJhbmNoPU5vbmUsIHJlcG9y
dF9yZXZpc2lvbl9pZGVudGlmaWVyX2luX2NvbW1pdF9tc2c9RmFsc2UsIHJlcG9ydF9zdm5fcmV2
aXNvbj1GYWxzZSk6CiAgICAgICAgIGFzc2VydChvcy5wYXRoLmlzZGlyKGdpdF9jaGVja291dCkp
CiAgICAgICAgIHN1cGVyKEdpdFJlcG9zaXRvcnksIHNlbGYpLl9faW5pdF9fKG5hbWUpCiAgICAg
ICAgIHNlbGYuX2dpdF9jaGVja291dCA9IGdpdF9jaGVja291dAogICAgICAgICBzZWxmLl9naXRf
dXJsID0gZ2l0X3VybAogICAgICAgICBzZWxmLl9naXRfYnJhbmNoID0gZ2l0X2JyYW5jaAogICAg
ICAgICBzZWxmLl90b2tlbml6ZWRfaGFzaGVzID0gW10KKyAgICAgICAgc2VsZi5fcmVwb3J0X3Jl
dmlzaW9uX2lkZW50aWZpZXJfaW5fY29tbWl0X21zZyA9IHJlcG9ydF9yZXZpc2lvbl9pZGVudGlm
aWVyX2luX2NvbW1pdF9tc2cKKyAgICAgICAgc2VsZi5fcmVwb3J0X3N2bl9yZXZpc2lvbiA9IHJl
cG9ydF9zdm5fcmV2aXNvbgogCiAgICAgZGVmIGZldGNoX25leHRfY29tbWl0KHNlbGYsIHNlcnZl
cl9jb25maWcsIGxhc3RfZmV0Y2hlZCk6CiAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWQ6CiAg
ICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFzaGVzKCkKICAgICAgICAgICAgIHRva2VucyA9
IHNlbGYuX3Rva2VuaXplZF9oYXNoZXNbMF0KICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlm
IHNlbGYuX3JlcG9ydF9zdm5fcmV2aXNpb246CisgICAgICAgICAgICAgICAgbGFzdF9mZXRjaGVk
X2dpdF9oYXNoID0gc2VsZi5fZ2l0X2hhc2hfZnJvbV9zdm5fcmV2aXNpb24obGFzdF9mZXRjaGVk
KQorICAgICAgICAgICAgICAgIGlmIG5vdCBsYXN0X2ZldGNoZWRfZ2l0X2hhc2g6CisgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2ZldGNoX3JlbW90ZSgpCisgICAgICAgICAgICAgICAgICAgIGxh
c3RfZmV0Y2hlZF9naXRfaGFzaCA9IHNlbGYuX2dpdF9oYXNoX2Zyb21fc3ZuX3JldmlzaW9uKGxh
c3RfZmV0Y2hlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxhc3RfZmV0Y2hlZF9naXRf
aGFzaDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBm
aW5kIHRoZSBnaXQgaGFzaCBmb3IgdGhlIGxhc3QgZmV0Y2hlZCBzdm4gcmV2aXNpb24nKQorICAg
ICAgICAgICAgICAgIGxhc3RfZmV0Y2hlZCA9IGxhc3RfZmV0Y2hlZF9naXRfaGFzaAogICAgICAg
ICAgICAgdG9rZW5zID0gc2VsZi5fZmluZF9uZXh0X2hhc2gobGFzdF9mZXRjaGVkKQogICAgICAg
ICAgICAgaWYgbm90IHRva2VuczoKICAgICAgICAgICAgICAgICBzZWxmLl9mZXRjaF9hbGxfaGFz
aGVzKCkKQEAgLTIyMCw2ICsyMzYsMTIgQEAgY2xhc3MgR2l0UmVwb3NpdG9yeShSZXBvc2l0b3J5
KToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25fZnJvbV90b2tlbnModG9r
ZW5zKQogICAgICAgICByZXR1cm4gTm9uZQogCisgICAgZGVmIF9zdm5fcmV2aXNpb25fZnJvbV9n
aXRfaGFzaChzZWxmLCBnaXRfaGFzaCk6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fZ2l0X2Nv
bW1hbmQoWydzdm4nLCAnZmluZC1yZXYnLCBnaXRfaGFzaF0pLnN0cmlwKCkKKworICAgIGRlZiBf
Z2l0X2hhc2hfZnJvbV9zdm5fcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1
cm4gc2VsZi5fcnVuX2dpdF9jb21tYW5kKFsnc3ZuJywgJ2ZpbmQtcmV2JywgJ3J7fScuZm9ybWF0
KHJldmlzaW9uKV0pLnN0cmlwKCkKKwogICAgIGRlZiBfcmV2aXNpb25fZnJvbV90b2tlbnMoc2Vs
ZiwgdG9rZW5zKToKICAgICAgICAgY3VycmVudF9oYXNoID0gdG9rZW5zWzBdCiAgICAgICAgIGNv
bW1pdF90aW1lID0gaW50KHRva2Vuc1sxXSkKQEAgLTIyOSwxMCArMjUxLDI5IEBAIGNsYXNzIEdp
dFJlcG9zaXRvcnkoUmVwb3NpdG9yeSk6CiAgICAgICAgIGF1dGhvcl9uYW1lID0gc2VsZi5fcnVu
X2dpdF9jb21tYW5kKFsnbG9nJywgY3VycmVudF9oYXNoLCAnLTEnLCAnLS1wcmV0dHk9JWNuJ10p
CiAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9ydW5fZ2l0X2NvbW1hbmQoWydsb2cnLCBjdXJyZW50
X2hhc2gsICctMScsICctLXByZXR0eT0lQiddKQogCisgICAgICAgIHJldmlzaW9uX2lkZW50aWZp
ZXIgPSBOb25lCisgICAgICAgIGlmIHNlbGYuX3JlcG9ydF9yZXZpc2lvbl9pZGVudGlmaWVyX2lu
X2NvbW1pdF9tc2c6CisgICAgICAgICAgICByZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoID0gUkVW
SVNJT05fSURFTlRJRklFUl9SRS5zZWFyY2gobWVzc2FnZSkKKyAgICAgICAgICAgIGlmIG5vdCBy
ZXZpc2lvbl9pZGVudGlmaWVyX21hdGNoOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoJ0V4cGVjdGVkIGNvbW1pdCBtZXNzYWdlIHRvIGluY2x1ZGUgcmV2aXNpb24gaWRlbnRpZmll
ciwgYnV0IGNhbm5vdCBmaW5kIGl0LCB3aWxsIG5lZWQgYSBoaXN0b3J5IHJld3JpdGUgdG8gZml4
IGl0JykKKyAgICAgICAgICAgIHJldmlzaW9uX2lkZW50aWZpZXIgPSByZXZpc2lvbl9pZGVudGlm
aWVyX21hdGNoLmdyb3VwKCdyZXZpc2lvbl9pZGVudGlmaWVyJykKKworICAgICAgICBjdXJyZW50
X3JldmlzaW9uID0gY3VycmVudF9oYXNoCisgICAgICAgIHByZXZpb3VzX3JldmlzaW9uID0gcHJl
dmlvdXNfaGFzaAorICAgICAgICBpZiBzZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAg
ICAgICAgY3VycmVudF9yZXZpc2lvbiA9IHNlbGYuX3N2bl9yZXZpc2lvbl9mcm9tX2dpdF9oYXNo
KGN1cnJlbnRfaGFzaCkKKyAgICAgICAgICAgIGlmIG5vdCBjdXJyZW50X3JldmlzaW9uOgorICAg
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBmaW5kIFNWTiByZXZpc29uIGZv
ciB7fScuZm9ybWF0KGN1cnJlbnRfaGFzaCkpCisgICAgICAgICAgICBpZiBwcmV2aW91c19oYXNo
OgorICAgICAgICAgICAgICAgIHByZXZpb3VzX3JldmlzaW9uID0gc2VsZi5fc3ZuX3JldmlzaW9u
X2Zyb21fZ2l0X2hhc2gocHJldmlvdXNfaGFzaCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcHJl
dmlvdXNfcmV2aXNpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nh
bm5vdCBmaW5kIFNWTiByZXZpc29uIGZvciB7fScuZm9ybWF0KHByZXZpb3VzX2hhc2gpKQorCiAg
ICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAncmVwb3NpdG9yeSc6IHNlbGYuX25hbWUsCi0g
ICAgICAgICAgICAncmV2aXNpb24nOiBjdXJyZW50X2hhc2gsCi0gICAgICAgICAgICAncHJldmlv
dXNDb21taXQnOiBwcmV2aW91c19oYXNoLAorICAgICAgICAgICAgJ3JldmlzaW9uJzogY3VycmVu
dF9yZXZpc2lvbiwKKyAgICAgICAgICAgICdyZXZpc2lvbklkZW50aWZpZXInOiByZXZpc2lvbl9p
ZGVudGlmaWVyLAorICAgICAgICAgICAgJ3ByZXZpb3VzQ29tbWl0JzogcHJldmlvdXNfcmV2aXNp
b24sCiAgICAgICAgICAgICAndGltZSc6IGRhdGV0aW1lLmZyb210aW1lc3RhbXAoY29tbWl0X3Rp
bWUpLnN0cmZ0aW1lKHInJVktJW0tJWRUJUg6JU06JVMuJWYnKSwKICAgICAgICAgICAgICdhdXRo
b3InOiB7J2FjY291bnQnOiBhdXRob3JfZW1haWwsICduYW1lJzogYXV0aG9yX25hbWV9LAogICAg
ICAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLApAQCAtMjQ0LDggKzI4NSwxMyBAQCBjbGFzcyBH
aXRSZXBvc2l0b3J5KFJlcG9zaXRvcnkpOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl90
b2tlbml6ZWRfaGFzaGVzW2kgKyAxXSBpZiBpICsgMSA8IGxlbihzZWxmLl90b2tlbml6ZWRfaGFz
aGVzKSBlbHNlIE5vbmUKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBfZmV0Y2hfYWxs
X2hhc2hlcyhzZWxmKToKKyAgICBkZWYgX2ZldGNoX3JlbW90ZShzZWxmKToKICAgICAgICAgc2Vs
Zi5fcnVuX2dpdF9jb21tYW5kKFsncHVsbCcsIHNlbGYuX2dpdF91cmxdKQorICAgICAgICBpZiBz
ZWxmLl9yZXBvcnRfc3ZuX3JldmlzaW9uOgorICAgICAgICAgICAgc2VsZi5fcnVuX2dpdF9jb21t
YW5kKFsnc3ZuJywgJ2ZldGNoJ10pCisKKyAgICBkZWYgX2ZldGNoX2FsbF9oYXNoZXMoc2VsZik6
CisgICAgICAgIHNlbGYuX2ZldGNoX3JlbW90ZSgpCiAgICAgICAgIHNjb3BlID0gc2VsZi5fZ2l0
X2JyYW5jaCBvciAnLS1hbGwnCiAgICAgICAgIGxpbmVzID0gc2VsZi5fcnVuX2dpdF9jb21tYW5k
KFsnbG9nJywgc2NvcGUsICctLWRhdGUtb3JkZXInLCAnLS1yZXZlcnNlJywgJy0tcHJldHR5PSVI
ICVjdCAlY2UgJVAnXSkuc3BsaXQoJ1xuJykKICAgICAgICAgc2VsZi5fdG9rZW5pemVkX2hhc2hl
cyA9IFtsaW5lLnNwbGl0KCkgZm9yIGxpbmUgaW4gbGluZXNdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>