<?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>213431</bug_id>
          
          <creation_ts>2020-06-20 09:17:05 -0700</creation_ts>
          <short_desc>Migrate run-minibrowser to webkitpy</short_desc>
          <delta_ts>2020-07-02 01:08:13 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1664739</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-20 09:17:05 -0700</bug_when>
    <thetext>The perl script pulls into webkitdirs.pm which requires the &quot;version&quot; module. On Linux platforms this is not installed by default. This could be a good opportunity to migrate this script to webkitpy.

The perl version would be renamed to old-run-minibrowser and would be used by the mac port, until its specific command-line options are ported to the python script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664746</commentid>
    <comment_count>1</comment_count>
      <attachid>402387</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-20 10:36:10 -0700</bug_when>
    <thetext>Created attachment 402387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664747</commentid>
    <comment_count>2</comment_count>
      <attachid>402388</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-20 10:40:44 -0700</bug_when>
    <thetext>Created attachment 402388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664756</commentid>
    <comment_count>3</comment_count>
      <attachid>402394</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-20 11:02:06 -0700</bug_when>
    <thetext>Created attachment 402394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664760</commentid>
    <comment_count>4</comment_count>
      <attachid>402394</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-20 11:56:00 -0700</bug_when>
    <thetext>Comment on attachment 402394
Patch

Needs to pass-through options to wpe/gtk browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664835</commentid>
    <comment_count>5</comment_count>
      <attachid>402416</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-21 03:40:37 -0700</bug_when>
    <thetext>Created attachment 402416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664836</commentid>
    <comment_count>6</comment_count>
      <attachid>402417</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-21 04:31:52 -0700</bug_when>
    <thetext>Created attachment 402417
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664858</commentid>
    <comment_count>7</comment_count>
      <attachid>402417</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-21 10:02:12 -0700</bug_when>
    <thetext>Comment on attachment 402417
Patch

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

&gt; Tools/ChangeLog:10
&gt; +        The perl version was renamed to old-run-minibrowser and remains used by the Mac ports.
&gt; +        run-minibrowser is now a Python script hooking into webkitpy and the Port infrastructure.
&gt; +        Both WPE and GTK ports will now use the pure python implementation.

What are the benefits of the python based version? Is the idea that those of us using the Mac port should now be calling old-run-minibrowser? Or is it just something run-minibrowser now calls when running on the Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664861</commentid>
    <comment_count>8</comment_count>
      <attachid>402417</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-21 10:16:02 -0700</bug_when>
    <thetext>Comment on attachment 402417
Patch

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

&gt;&gt; Tools/ChangeLog:10
&gt;&gt; +        Both WPE and GTK ports will now use the pure python implementation.
&gt; 
&gt; What are the benefits of the python based version? Is the idea that those of us using the Mac port should now be calling old-run-minibrowser? Or is it just something run-minibrowser now calls when running on the Mac?

The advantage of the python based version is that the barrier to entry is lower. By default in most linux distros, the Perl version module isn&apos;t installed, which makes webkitdirs and the scripts that depend on it useless. The Python version runs out of the box without installing additional packages.

On Mac run-minibrowser will indeed call old-run-minibrowser. So this patch keeps backward compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665003</commentid>
    <comment_count>9</comment_count>
      <attachid>402417</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-22 06:55:58 -0700</bug_when>
    <thetext>Comment on attachment 402417
Patch

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

&gt;&gt;&gt; Tools/ChangeLog:10
&gt;&gt;&gt; +        Both WPE and GTK ports will now use the pure python implementation.
&gt;&gt; 
&gt;&gt; What are the benefits of the python based version? Is the idea that those of us using the Mac port should now be calling old-run-minibrowser? Or is it just something run-minibrowser now calls when running on the Mac?
&gt; 
&gt; The advantage of the python based version is that the barrier to entry is lower. By default in most linux distros, the Perl version module isn&apos;t installed, which makes webkitdirs and the scripts that depend on it useless. The Python version runs out of the box without installing additional packages.
&gt; 
&gt; On Mac run-minibrowser will indeed call old-run-minibrowser. So this patch keeps backward compatibility.

I&apos;m actually in favor of scrapping the perl version completely, even for Apple ports. I understand if you need someone that has a Mac handy to complete that, though. Simulators are not obvious to interact with.

&gt; Tools/Scripts/run-minibrowser:-1
&gt; -#!/usr/bin/env perl

My general comment here is that run-minibrowser is basically a special case of run-webkit-app. Seems that Tools/Scripts/webkitpy/minibrowser/run_minibrowser.py should be called Tools/Scripts/webkitpy/minibrowser/run_webkit_app.py and the top-level script basically sets the path of the binary to be run to MiniBrowser.

I know this would make sense on Apple ports, where any app using WebKit could be run with your built WebKit by setting DYLD_FRAMEWORK and DYLD_LIBRARY paths. I don&apos;t have much experience with other ports, so it may not make sense.

&gt; Tools/Scripts/run-minibrowser:23
&gt; +from webkitpy.common import multiprocessing_bootstrap

We shouldn&apos;t need this

&gt; Tools/Scripts/run-minibrowser:31
&gt; +multiprocessing_bootstrap.run(&apos;webkitpy&apos;, &apos;minibrowser&apos;, &apos;run_minibrowser.py&apos;)

We shouldn&apos;t need this. The multiprocessing_bootstrap stuff is 1) a bad way to do multiprocessing (not your fault, I&apos;m looking to replace it) but 2) only needed if we intend to have worker processes.

&gt; Tools/Scripts/webkitpy/minibrowser/run_minibrowser.py:33
&gt; +    # Convert options to argparse, so that we can use parse_known_args() which is not supported in optparse.

Can we add a FIXME here? Really, we should be using argparse options generally.

&gt; Tools/Scripts/webkitpy/port/base.py:1384
&gt; +        return subprocess.call(run_script_command, cwd=self.webkit_base())

Let&apos;s add a FIXME here. Apple ports should also use native Python.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665026</commentid>
    <comment_count>10</comment_count>
      <attachid>402417</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-22 07:52:27 -0700</bug_when>
    <thetext>Comment on attachment 402417
Patch

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

&gt;&gt; Tools/Scripts/run-minibrowser:-1
&gt;&gt; -#!/usr/bin/env perl
&gt; 
&gt; My general comment here is that run-minibrowser is basically a special case of run-webkit-app. Seems that Tools/Scripts/webkitpy/minibrowser/run_minibrowser.py should be called Tools/Scripts/webkitpy/minibrowser/run_webkit_app.py and the top-level script basically sets the path of the binary to be run to MiniBrowser.
&gt; 
&gt; I know this would make sense on Apple ports, where any app using WebKit could be run with your built WebKit by setting DYLD_FRAMEWORK and DYLD_LIBRARY paths. I don&apos;t have much experience with other ports, so it may not make sense.

Well, on Linux with the Flatpak SDK we actually do something similar deep under the hood. The `flatpakutils.run_in_sandbox_if_available()` below runs MiniBrowser in a dedicated sandbox with LD_LIBRARY_PATH and similar vars set.

I don&apos;t mind renaming to Tools/Scripts/webkitpy/minibrowser/run_webkit_app.py :)

&gt;&gt; Tools/Scripts/run-minibrowser:31
&gt;&gt; +multiprocessing_bootstrap.run(&apos;webkitpy&apos;, &apos;minibrowser&apos;, &apos;run_minibrowser.py&apos;)
&gt; 
&gt; We shouldn&apos;t need this. The multiprocessing_bootstrap stuff is 1) a bad way to do multiprocessing (not your fault, I&apos;m looking to replace it) but 2) only needed if we intend to have worker processes.

OK. I started off from run_webkit_tests.py and clearly didn&apos;t clean enough here :)

&gt;&gt; Tools/Scripts/webkitpy/minibrowser/run_minibrowser.py:33
&gt;&gt; +    # Convert options to argparse, so that we can use parse_known_args() which is not supported in optparse.
&gt; 
&gt; Can we add a FIXME here? Really, we should be using argparse options generally.

I will link to https://bugs.webkit.org/show_bug.cgi?id=213463

&gt;&gt; Tools/Scripts/webkitpy/port/base.py:1384
&gt;&gt; +        return subprocess.call(run_script_command, cwd=self.webkit_base())
&gt; 
&gt; Let&apos;s add a FIXME here. Apple ports should also use native Python.

I will link to https://bugs.webkit.org/show_bug.cgi?id=213432</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665028</commentid>
    <comment_count>11</comment_count>
      <attachid>402472</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-22 08:02:17 -0700</bug_when>
    <thetext>Created attachment 402472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665718</commentid>
    <comment_count>12</comment_count>
      <attachid>402472</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-24 06:49:00 -0700</bug_when>
    <thetext>Comment on attachment 402472
Patch

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

&gt; Tools/Scripts/webkitpy/minibrowser/run_webkit_app.py:30
&gt; +    option_parser = argparse.ArgumentParser(prog=&quot;run-minibrowser&quot;, usage=&quot;%(prog)s [options] [url]&quot;, add_help=False)

Let&apos;s add a FIXME here.

Ultimately, I think that this function should accept an optional name of the binary being run, which would actually change what we feed to argparse. That way, we can replace some other scripts (like run-safari) with Python versions that share code.

&gt; Tools/Scripts/webkitpy/port/wpe.py:143
&gt; +        command = [miniBrowser, ]

Shouldn&apos;t need the trailing ,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665738</commentid>
    <comment_count>13</comment_count>
      <attachid>402472</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-24 08:12:13 -0700</bug_when>
    <thetext>Comment on attachment 402472
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/minibrowser/run_webkit_app.py:30
&gt;&gt; +    option_parser = argparse.ArgumentParser(prog=&quot;run-minibrowser&quot;, usage=&quot;%(prog)s [options] [url]&quot;, add_help=False)
&gt; 
&gt; Let&apos;s add a FIXME here.
&gt; 
&gt; Ultimately, I think that this function should accept an optional name of the binary being run, which would actually change what we feed to argparse. That way, we can replace some other scripts (like run-safari) with Python versions that share code.

Actually I think the prog arg can be removed. By default the parser will then use sys.argv[0], which should fit for run-minibrowser and others :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666780</commentid>
    <comment_count>14</comment_count>
      <attachid>402959</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-06-27 09:35:25 -0700</bug_when>
    <thetext>Created attachment 402959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666783</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-27 10:00:53 -0700</bug_when>
    <thetext>Committed r263625: &lt;https://trac.webkit.org/changeset/263625&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 402959.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666784</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-27 10:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/64845044&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1666785</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-27 10:01:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/64845045&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668012</commentid>
    <comment_count>18</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-01 11:31:48 -0700</bug_when>
    <thetext>This seems to have broken run-minibrowser, at least on shipping macOS.

AttributeError raised: &apos;list&apos; object has no attribute &apos;startswith&apos;
Traceback (most recent call last):
  File &quot;/Users/***/WebKit/Tools/Scripts/webkitpy/minibrowser/run_webkit_app.py&quot;, line 59, in main
    return port.run_minibrowser(args)
  File &quot;/Users/***/WebKit/Tools/Scripts/webkitpy/port/base.py&quot;, line 1372, in run_minibrowser
    return self._run_script([&quot;old-run-minibrowser&quot;, ] + args)
  File &quot;/Users/***/WebKit/Tools/Scripts/webkitpy/port/base.py&quot;, line 1486, in _run_script
    run_script_command = [self.path_to_script(script_name)]
  File &quot;/Users/***/WebKit/Tools/Scripts/webkitpy/port/base.py&quot;, line 717, in path_to_script
    return self._webkit_finder.path_to_script(script_name)
  File &quot;/Users/***/WebKit/Tools/Scripts/webkitpy/common/webkit_finder.py&quot;, line 64, in path_to_script
    return self._filesystem.join(&quot;Tools&quot;, &quot;Scripts&quot;, script_name)
  File &quot;/Users/***/WebKit/Tools/Scripts/webkitpy/common/system/filesystem.py&quot;, line 162, in join
    return os.path.join(*comps)
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py&quot;, line 68, in join
    if b.startswith(&apos;/&apos;):
AttributeError: &apos;list&apos; object has no attribute &apos;startswith&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668013</commentid>
    <comment_count>19</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-01 11:33:22 -0700</bug_when>
    <thetext>Pinged Phillipe over email.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668014</commentid>
    <comment_count>20</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-01 11:33:44 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #19)
&gt; Pinged Phillipe over email.

Philippe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668018</commentid>
    <comment_count>21</comment_count>
      <attachid>403306</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-01 11:58:06 -0700</bug_when>
    <thetext>Created attachment 403306
Fix attempt

Hi John, thanks for the ping and my apologies for the break. Can you check if this patch fixes the issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668178</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-07-02 01:08:13 -0700</bug_when>
    <thetext>I confirm it works. Sending patch to https://bugs.webkit.org/show_bug.cgi?id=213876</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402387</attachid>
            <date>2020-06-20 10:36:10 -0700</date>
            <delta_ts>2020-06-20 10:40:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213431-20200620103608.patch</filename>
            <type>text/plain</type>
            <size>15792</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmI2YTYwY2Y5MDgzOTZiNTk1OWFjNDcyZWE3MjI0YjQ2
MGM4ODk2MC4uZDJjMTRmNThiNTVkMjI5M2Q0NzBkYWY2YjRmMmU4MDAxYWI3ZjE5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA2LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBNaWdyYXRlIHJ1bi1taW5pYnJvd3NlciB0byB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBlcmwgdmVyc2lvbiB3
YXMgcmVuYW1lZCB0byBvbGQtcnVuLW1pbmlicm93c2VyIGFuZCByZW1haW5zIHVzZWQgYnkgdGhl
IE1hYyBwb3J0cy4KKyAgICAgICAgcnVuLW1pbmlicm93c2VyIGlzIG5vdyBhIFB5dGhvbiBzY3Jp
cHQgaG9va2luZyBpbnRvIHdlYmtpdHB5IGFuZCB0aGUgUG9ydCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgQm90aCBXUEUgYW5kIEdUSyBwb3J0cyB3aWxsIG5vdyB1c2UgdGhlIHB1cmUgcHl0aG9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2Vy
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3Nlci4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1taW5pYnJvd3NlcjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L21pbmli
cm93c2VyL3J1bl9taW5pYnJvd3Nlci5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXJfYXJndW1lbnRzKToKKyAgICAgICAgKFBv
cnQpOgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9kYXJ3aW4ucHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LmVudmlyb25tZW50
X2Zvcl9hcGlfdGVzdHMpOgorICAgICAgICAoRGFyd2luUG9ydCk6CisgICAgICAgIChEYXJ3aW5Q
b3J0LnJ1bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUp
OgorICAgICAgICAoR3RrUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQpOgorICAgICAgICAo
R3RrUG9ydCk6CisgICAgICAgIChHdGtQb3J0LnJ1bl9taW5pYnJvd3Nlcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuc2hvd19yZXN1
bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChXUEVQb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZCk6CisgICAgICAgIChXUEVQb3J0KToKKyAgICAgICAgKFdQRVBvcnQucnVuX21pbmlicm93c2Vy
KToKKwogMjAyMC0wNi0xOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnJpbmcgdXAgd2F0Y2hPUy90dk9TIG9uIGJ1aWxkLndlYmtpdC5vcmcgKEZvbGxv
dy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIg
Yi9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDJlNzBkOGZl
NDNmOTAzZjNiNGJhNmU2NTViY2I0N2I2OWRmYTdmMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvb2xkLXJ1bi1taW5pYnJvd3NlcgpAQCAtMCwwICsxLDUxIEBACisjIS91c3IvYmlu
L2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0
aW5nIFNlcnZpY2VzLCBJbmMuICA8aW5mb0BzdGFpa29zLm5ldD4KKworIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgU2ltcGxpZmllZCAicnVuIiBzY3JpcHQgZm9yIGxhdW5jaGluZyB0aGUgV2ViS2l0MiBN
aW5pQnJvd3Nlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBGaWxlOjpTcGVj
OjpGdW5jdGlvbnMgcXcvY2F0ZGlyLzsKK3VzZSBGaW5kQmluOwordXNlIGxpYiAkRmluZEJpbjo6
QmluOwordXNlIHdlYmtpdGRpcnM7CisKK215ICRsYXVuY2hlck5hbWU7CitteSAkbGF1bmNoZXJQ
YXRoOworCitwcm9oaWJpdFVua25vd25Qb3J0KCk7CitzZXRDb25maWd1cmF0aW9uKCk7CisKK2lm
IChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgeworICAgIHByaW50SGVscEFuZEV4aXRGb3JSdW5BbmRE
ZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7CisgICAgZXhpdCBleGl0U3RhdHVzKHJ1bk1pbmlCcm93
c2VyKCkpOworfSBlbHNlIHsKKyAgICBkaWUgIlVuc3VwcG9ydGVkIHBsYXRmb3JtLiIKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLW1pbmlicm93c2VyIGIvVG9vbHMvU2NyaXB0cy9y
dW4tbWluaWJyb3dzZXIKaW5kZXggOTBjZDNmYWY0MzFhZWI5MjhkZmQ2ZGRmZDZlZDZkMjNkMmYy
MWNjYy4uODU2YjA3NGE3MDM2ZjZlNDBmOGMyYjYxY2Q3ZTM1ZGYyOTI2YzNkOCAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4t
bWluaWJyb3dzZXIKQEAgLTEsNjQgKzEsMzEgQEAKLSMhL3Vzci9iaW4vZW52IHBlcmwKLQotIyBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMsIElu
Yy4gIDxpbmZvQHN0YWlrb3MubmV0PgotCisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJp
Z2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCiAjCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICMKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuIAotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uIAotIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorIyBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KICMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSMgU2ltcGxpZmll
ZCAicnVuIiBzY3JpcHQgZm9yIGxhdW5jaGluZyB0aGUgV2ViS2l0MiBNaW5pQnJvd3Nlci4KLQot
dXNlIHN0cmljdDsKLXVzZSB3YXJuaW5nczsKLXVzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnMgcXcv
Y2F0ZGlyLzsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIHdlYmtp
dGRpcnM7Ci0KLW15ICRsYXVuY2hlck5hbWU7Ci1teSAkbGF1bmNoZXJQYXRoOwotbXkgQGpoYnVp
bGRXcmFwcGVyOworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KIAotcHJvaGliaXRVbmtub3duUG9ydCgpOwotc2V0Q29uZmlndXJhdGlvbigpOworIiIiV3Jh
cHBlciBhcm91bmQgd2Via2l0cHkvbWluaWJyb3dzZXIvcnVuX21pbmlicm93c2VyLnB5IiIiCitp
bXBvcnQgb3MKK2ltcG9ydCBzeXMKIAotaWYgKGlzR3RrKCkgfHwgaXNXUEUoKSkgewotICAgIG15
IEBjb21tYW5kID0gKEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJT
Y3JpcHRzIiwgInJ1bi1taW5pYnJvd3NlciIpKTsKLSAgICBydW5JbkZsYXRwYWtJZkF2YWlsYWJs
ZShAY29tbWFuZCk7Citmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5n
X2Jvb3RzdHJhcAogCi0gICAgIyBDaGVjayB0byBzZWUgdGhhdCBhbGwgdGhlIGZyYW1ld29ya3Mg
YXJlIGJ1aWx0LgotICAgIGNoZWNrRnJhbWV3b3JrcygpOwordG9wX2xldmVsX2RpcmVjdG9yeSA9
IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks
ICcuLicsICcuLicpKQoraWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CisgICAg
c3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAnVG9v
bHMnLCAnZmxhdHBhaycpKQorICAgIGltcG9ydCBmbGF0cGFrdXRpbHMKKyAgICBmbGF0cGFrdXRp
bHMucnVuX2luX3NhbmRib3hfaWZfYXZhaWxhYmxlKHN5cy5hcmd2KQogCi0gICAgJGxhdW5jaGVy
UGF0aCA9IGNhdGRpcihwcm9kdWN0RGlyKCksICJiaW4iLCAiTWluaUJyb3dzZXIiKTsKLSAgICBk
aWUgIkNhbid0IGZpbmQgJGxhdW5jaGVyUGF0aCIgdW5sZXNzIC14ICRsYXVuY2hlclBhdGg7Ci0g
ICAgQGpoYnVpbGRXcmFwcGVyID0gd3JhcHBlclByZWZpeElmTmVlZGVkKCk7Ci0gICAgcHJpbnQg
IlN0YXJ0aW5nIE1pbmlCcm93c2VyLlxuIjsKLSAgICBleGVjIEBqaGJ1aWxkV3JhcHBlciwgJGxh
dW5jaGVyUGF0aCwgQEFSR1Ygb3IgZGllOwotfSBlbHNpZiAoaXNBcHBsZUNvY29hV2ViS2l0KCkp
IHsKLSAgICBwcmludEhlbHBBbmRFeGl0Rm9yUnVuQW5kRGVidWdXZWJLaXRBcHBJZk5lZWRlZCgp
OwotICAgIGV4aXQgZXhpdFN0YXR1cyhydW5NaW5pQnJvd3NlcigpKTsKLX0gZWxzZSB7Ci0gICAg
ZGllICJVbnN1cHBvcnRlZCBwbGF0Zm9ybS4iCi19CittdWx0aXByb2Nlc3NpbmdfYm9vdHN0cmFw
LnJ1bignd2Via2l0cHknLCAnbWluaWJyb3dzZXInLCAncnVuX21pbmlicm93c2VyLnB5JykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbWluaWJyb3dzZXIvcnVuX21pbmlicm93
c2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fbWluaWJyb3dz
ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzk4NzE3NDAxMWYzYTYwOTBjYTg2NDVhOTVjYzg2NzI0NmRhYjMx
NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbWluaWJyb3dzZXIv
cnVuX21pbmlicm93c2VyLnB5CkBAIC0wLDAgKzEsNjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDIw
IElnYWxpYSBTLkwuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyLjEgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisjIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorIyBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgor
aW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJhY2sK
KworZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5w
b3J0IGltcG9ydCBjb25maWd1cmF0aW9uX29wdGlvbnMsIHBsYXRmb3JtX29wdGlvbnMsIGZhY3Rv
cnkKKworCitkZWYgbWFpbihhcmd2KToKKyAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VfYXJncyhh
cmd2KQorCisgICAgdHJ5OgorICAgICAgICBmID0gZmFjdG9yeS5Qb3J0RmFjdG9yeShIb3N0KCkp
CisgICAgICAgIHBvcnQgPSBmLmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMp
CisgICAgICAgIHJldHVybiBwb3J0LnJ1bl9taW5pYnJvd3NlcihhcmdzKQorICAgIGV4Y2VwdCBC
YXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZSwgRXhjZXB0aW9uKToK
KyAgICAgICAgICAgIHByaW50KCdcbiVzIHJhaXNlZDogJXMnICUgKGUuX19jbGFzc19fLl9fbmFt
ZV9fLCBzdHIoZSkpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICB0cmFjZWJhY2sucHJp
bnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgcmV0dXJuIDEKKworCitkZWYgcGFyc2Vf
YXJncyhhcmdzKToKKyAgICBvcHRpb25fcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVz
YWdlPSIlcHJvZyBbb3B0aW9uc10gW3VybF0iKQorICAgIGdyb3VwcyA9IFsoIlBsYXRmb3JtIG9w
dGlvbnMiLCBwbGF0Zm9ybV9vcHRpb25zKCkpLCAoIkNvbmZpZ3VyYXRpb24gb3B0aW9ucyIsIGNv
bmZpZ3VyYXRpb25fb3B0aW9ucygpKV0KKworICAgIGdyb3Vwcy5hcHBlbmQoKCJtYWNPUyBvcHRp
b25zIiwgWworICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLWciLCAiLS1ndWFyZC1tYWxs
b2MiLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJFbmFibGUgR3VhcmQgTWFsbG9jIChkZWZhdWx0OiAlZGVmYXVs
dCkiKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tbGFuZyIsIGFjdGlvbj0ic3Rv
cmUiLCBoZWxwPSJVc2UgYSBzcGVjaWZpYyBsYW5ndWFnZSBpbnN0ZWFkIG9mIHN5c3RlbSBsYW5n
dWFnZS5UaGlzIGFjY2VwdHMgYSBsYW5ndWFnZSBuYW1lIChHZXJtYW4pIG9yIGEgbGFuZ3VhZ2Ug
Y29kZSAoZGUsIGFyLCBwdF9CUiwgZXRjKS4iKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRp
b24oIi0tbG9jYWxlIiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlVzZSBhIHNwZWNpZmljIGxvY2Fs
ZSBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gcmVnaW9uLiIpCisgICAgXSkpCisKKyAgICBmb3IgZ3Jv
dXBfbmFtZSwgZ3JvdXBfb3B0aW9ucyBpbiBncm91cHM6CisgICAgICAgIG9wdGlvbl9ncm91cCA9
IG9wdHBhcnNlLk9wdGlvbkdyb3VwKG9wdGlvbl9wYXJzZXIsIGdyb3VwX25hbWUpCisgICAgICAg
IG9wdGlvbl9ncm91cC5hZGRfb3B0aW9ucyhncm91cF9vcHRpb25zKQorICAgICAgICBvcHRpb25f
cGFyc2VyLmFkZF9vcHRpb25fZ3JvdXAob3B0aW9uX2dyb3VwKQorCisgICAgcmV0dXJuIG9wdGlv
bl9wYXJzZXIucGFyc2VfYXJncyhhcmdzKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgor
ICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHkKaW5kZXggMTA5YmJlNzRjODEzYzcwYTkyY2JkNDNlNTlkYzhhZGFjZmVmNWJjNi4uMDY2
YWY1MThjZDQyZDY5ZWUwNjkwNWUzYzg3ZWE1NmQyNGEzMDMzOSAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2Jhc2UucHkKQEAgLTEzNzAsNiArMTM3MCwxNCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGVmYXVsdCBJbWFnZURp
ZmYgYmluYXJ5LCBvciBOb25lIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUuIiIiCiAgICAgICAgIHJl
dHVybiBzZWxmLl9idWlsZF9wYXRoKCdJbWFnZURpZmYnKQogCisgICAgZGVmIHJ1bl9taW5pYnJv
d3Nlcl9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIHJ1bl9t
aW5pYnJvd3NlcihzZWxmLCBhcmdzKToKKyAgICAgICAgb3B0aW9uc0FuZEFyZ3MgPSBzZWxmLnJ1
bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMoKQorICAgICAgICBvcHRpb25zQW5kQXJncy5leHRlbmQo
YXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9zY3JpcHQoWyJvbGQtcnVuLW1pbmlicm93
c2VyIiwgXSArIG9wdGlvbnNBbmRBcmdzKQorCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIF9wYXRo
X3RvX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0
byB0aGUgaW1hZ2VfZGlmZiBiaW5hcnksIG9yIE5vbmUgaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CmluZGV4IGI1MjgxNDE1MmQ3MTMzODVl
MDFiOWYyNTg3ZGI3YTRmN2Q3ZGQwOTIuLjFkMmRiMTI5NzRiNDEwNTUxMTgxMmNjYTNlODhjNjE0
NjI5MjgzMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kYXJ3aW4u
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQpAQCAtMjc2LDMg
KzI3NiwxMyBAQCBjbGFzcyBEYXJ3aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgICAgIGZvciBuYW1l
IGluIFsnRFlMRF9MSUJSQVJZX1BBVEgnLCAnX19YUENfRFlMRF9MSUJSQVJZX1BBVEgnLCAnRFlM
RF9GUkFNRVdPUktfUEFUSCcsICdfX1hQQ19EWUxEX0ZSQU1FV09SS19QQVRIJ106CiAgICAgICAg
ICAgICBzZWxmLl9hcHBlbmRfdmFsdWVfY29sb25fc2VwYXJhdGVkKGVudmlyb25tZW50LCBuYW1l
LCBidWlsZF9yb290X3BhdGgpCiAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudAorCisgICAgZGVm
IHJ1bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGFyZ3MgPSBbXQorICAg
ICAgICBpZiBzZWxmLmdldF9vcHRpb24oImd1YXJkX21hbGxvYyIpOgorICAgICAgICAgICAgYXJn
cy5hcHBlbmQoIi1nIikKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCJsYW5nIik6CisgICAg
ICAgICAgICBhcmdzLmV4dGVuZChbIi0tbGFuZyIsIHNlbGYuZ2V0X29wdGlvbigibGFuZyIpXSkK
KyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCJsb2NhbGUiKToKKyAgICAgICAgICAgIGFyZ3Mu
ZXh0ZW5kKFsiLS1sb2NhbGUiLCBzZWxmLmdldF9vcHRpb24oImxvY2FsZSIpXSkKKyAgICAgICAg
cmV0dXJuIGFyZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5CmluZGV4IDA0OTM1N2NlYjEx
YzczYWNlMWRjOGY3NmQ4NDFkNTNmOGE3NmFjZTEuLjZkOTQxNzI0MmZmODRkY2ZjYjk0ODAxYTEy
MjMzMDRlMGU2MDMwOGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9n
dGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQpAQCAtMjMxLDcg
KzIzMSw3IEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgIHNlbGYuX2xlYWtkZXRlY3Rv
ci5wYXJzZV9hbmRfcHJpbnRfbGVha3NfZGV0YWlsKGxlYWtzX2ZpbGVzKQogCiAgICAgZGVmIHNo
b3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6Ci0gICAgICAgIHNl
bGYuX3J1bl9zY3JpcHQoInJ1bi1taW5pYnJvd3NlciIsIFtwYXRoLmFic3BhdGhfdG9fdXJpKHNl
bGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQorICAgICAgICBzZWxmLnJ1bl9t
aW5pYnJvd3NlcihbcGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLmhvc3QucGxhdGZvcm0sIHJlc3Vs
dHNfZmlsZW5hbWUpXSkKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHN1cGVyKEd0a1BvcnQsIHNlbGYpLmNoZWNrX3N5c19kZXBzKCkgYW5kIHNlbGYuX2Ry
aXZlcl9jbGFzcygpLmNoZWNrX2RyaXZlcihzZWxmKQpAQCAtMjYwLDMgKzI2MCwxMyBAQCBjbGFz
cyBHdGtQb3J0KFBvcnQpOgogICAgICAgICBjb25maWd1cmF0aW9uWydwbGF0Zm9ybSddID0gJ0dU
SycKICAgICAgICAgY29uZmlndXJhdGlvblsndmVyc2lvbl9uYW1lJ10gPSBzZWxmLl9kaXNwbGF5
X3NlcnZlci5jYXBpdGFsaXplKCkgaWYgc2VsZi5fZGlzcGxheV9zZXJ2ZXIgZWxzZSAnWHZmYicK
ICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KKworICAgIGRlZiBydW5fbWluaWJyb3dzZXIo
c2VsZiwgYXJncyk6CisgICAgICAgIG1pbmlCcm93c2VyID0gc2VsZi5fYnVpbGRfcGF0aCgnYmlu
JywgJ01pbmlCcm93c2VyJykKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3Rz
KG1pbmlCcm93c2VyKToKKyAgICAgICAgICAgIHByaW50KCIlcyBub3QgZm91bmQuLi4gRGlkIHlv
dSBydW4gYnVpbGQtd2Via2l0PyIgJSBtaW5pQnJvd3NlcikKKyAgICAgICAgICAgIHJldHVybiAx
CisgICAgICAgIGNvbW1hbmQgPSBbbWluaUJyb3dzZXIsIF0KKyAgICAgICAgaWYgc2VsZi5fc2hv
dWxkX3VzZV9qaGJ1aWxkKCk6CisgICAgICAgICAgICBjb21tYW5kID0gc2VsZi5famhidWlsZF93
cmFwcGVyICsgY29tbWFuZAorICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKGNvbW1hbmQgKyBhcmdzLCBjd2Q9c2VsZi53ZWJraXRfYmFzZSgpKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvcG9ydC93cGUucHkKaW5kZXggYTQ1NzMwZjZiNDU2YzMyMGEzMjc1NGY3MDNkNzJjNzY5ZTEw
OGM1ZS4uNDM3NTA1MTMwNWUyZTY5MWJjMjllNTlkMDdjNDQ1ZWM0YTI2NzM3OCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvd3BlLnB5CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFdQRVBvcnQoUG9y
dCk6CiAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudAogCiAgICAgZGVmIHNob3dfcmVzdWx0c19o
dG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6Ci0gICAgICAgIHNlbGYuX3J1bl9zY3Jp
cHQoInJ1bi1taW5pYnJvd3NlciIsIFtwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0
Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQorICAgICAgICBzZWxmLnJ1bl9taW5pYnJvd3Nlcihb
cGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLmhvc3QucGxhdGZvcm0sIHJlc3VsdHNfZmlsZW5hbWUp
XSkKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN1cGVy
KFdQRVBvcnQsIHNlbGYpLmNoZWNrX3N5c19kZXBzKCkgYW5kIHNlbGYuX2RyaXZlcl9jbGFzcygp
LmNoZWNrX2RyaXZlcihzZWxmKQpAQCAtMTM0LDMgKzEzNCwxMyBAQCBjbGFzcyBXUEVQb3J0KFBv
cnQpOgogICAgICAgICBjb25maWd1cmF0aW9uID0gc3VwZXIoV1BFUG9ydCwgc2VsZikuY29uZmln
dXJhdGlvbl9mb3JfdXBsb2FkKGhvc3Q9aG9zdCkKICAgICAgICAgY29uZmlndXJhdGlvblsncGxh
dGZvcm0nXSA9ICdXUEUnCiAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uCisKKyAgICBkZWYg
cnVuX21pbmlicm93c2VyKHNlbGYsIGFyZ3MpOgorICAgICAgICBtaW5pQnJvd3NlciA9IHNlbGYu
X2J1aWxkX3BhdGgoJ2JpbicsICdNaW5pQnJvd3NlcicpCisgICAgICAgIGlmIG5vdCBzZWxmLl9m
aWxlc3lzdGVtLmV4aXN0cyhtaW5pQnJvd3Nlcik6CisgICAgICAgICAgICBwcmludCgiJXMgbm90
IGZvdW5kLi4uIERpZCB5b3UgcnVuIGJ1aWxkLXdlYmtpdD8iICUgbWluaUJyb3dzZXIpCisgICAg
ICAgICAgICByZXR1cm4gMQorICAgICAgICBjb21tYW5kID0gW21pbmlCcm93c2VyLCBdCisgICAg
ICAgIGlmIHNlbGYuX3Nob3VsZF91c2VfamhidWlsZCgpOgorICAgICAgICAgICAgY29tbWFuZCA9
IHNlbGYuX2poYnVpbGRfd3JhcHBlciArIGNvbW1hbmQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChjb21tYW5kICsgYXJncywgY3dkPXNlbGYud2Via2l0X2Jhc2Uo
KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402388</attachid>
            <date>2020-06-20 10:40:44 -0700</date>
            <delta_ts>2020-06-20 11:02:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213431-20200620104043.patch</filename>
            <type>text/plain</type>
            <size>15713</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmI2YTYwY2Y5MDgzOTZiNTk1OWFjNDcyZWE3MjI0YjQ2
MGM4ODk2MC4uZDJjMTRmNThiNTVkMjI5M2Q0NzBkYWY2YjRmMmU4MDAxYWI3ZjE5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA2LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBNaWdyYXRlIHJ1bi1taW5pYnJvd3NlciB0byB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBlcmwgdmVyc2lvbiB3
YXMgcmVuYW1lZCB0byBvbGQtcnVuLW1pbmlicm93c2VyIGFuZCByZW1haW5zIHVzZWQgYnkgdGhl
IE1hYyBwb3J0cy4KKyAgICAgICAgcnVuLW1pbmlicm93c2VyIGlzIG5vdyBhIFB5dGhvbiBzY3Jp
cHQgaG9va2luZyBpbnRvIHdlYmtpdHB5IGFuZCB0aGUgUG9ydCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgQm90aCBXUEUgYW5kIEdUSyBwb3J0cyB3aWxsIG5vdyB1c2UgdGhlIHB1cmUgcHl0aG9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2Vy
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3Nlci4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1taW5pYnJvd3NlcjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L21pbmli
cm93c2VyL3J1bl9taW5pYnJvd3Nlci5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXJfYXJndW1lbnRzKToKKyAgICAgICAgKFBv
cnQpOgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9kYXJ3aW4ucHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LmVudmlyb25tZW50
X2Zvcl9hcGlfdGVzdHMpOgorICAgICAgICAoRGFyd2luUG9ydCk6CisgICAgICAgIChEYXJ3aW5Q
b3J0LnJ1bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUp
OgorICAgICAgICAoR3RrUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQpOgorICAgICAgICAo
R3RrUG9ydCk6CisgICAgICAgIChHdGtQb3J0LnJ1bl9taW5pYnJvd3Nlcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuc2hvd19yZXN1
bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChXUEVQb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZCk6CisgICAgICAgIChXUEVQb3J0KToKKyAgICAgICAgKFdQRVBvcnQucnVuX21pbmlicm93c2Vy
KToKKwogMjAyMC0wNi0xOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnJpbmcgdXAgd2F0Y2hPUy90dk9TIG9uIGJ1aWxkLndlYmtpdC5vcmcgKEZvbGxv
dy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIg
Yi9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDllYWRkMjZh
ZDQzNTM0NTliMzk4MGQzOTY4MjhlMDZlYWQxNTI3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvb2xkLXJ1bi1taW5pYnJvd3NlcgpAQCAtMCwwICsxLDQ3IEBACisjIS91c3IvYmlu
L2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0
aW5nIFNlcnZpY2VzLCBJbmMuICA8aW5mb0BzdGFpa29zLm5ldD4KKworIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgU2ltcGxpZmllZCAicnVuIiBzY3JpcHQgZm9yIGxhdW5jaGluZyB0aGUgV2ViS2l0MiBN
aW5pQnJvd3Nlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBGaW5kQmluOwor
dXNlIGxpYiAkRmluZEJpbjo6QmluOwordXNlIHdlYmtpdGRpcnM7CisKK3Byb2hpYml0VW5rbm93
blBvcnQoKTsKK3NldENvbmZpZ3VyYXRpb24oKTsKKworaWYgKGlzQXBwbGVDb2NvYVdlYktpdCgp
KSB7CisgICAgcHJpbnRIZWxwQW5kRXhpdEZvclJ1bkFuZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQo
KTsKKyAgICBleGl0IGV4aXRTdGF0dXMocnVuTWluaUJyb3dzZXIoKSk7Cit9IGVsc2UgeworICAg
IGRpZSAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0uIgorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9ydW4tbWluaWJyb3dzZXIgYi9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgppbmRleCA5
MGNkM2ZhZjQzMWFlYjkyOGRmZDZkZGZkNmVkNmQyM2QyZjIxY2NjLi44NTZiMDc0YTcwMzZmNmU0
MGY4YzJiNjFjZDdlMzVkZjI5MjZjM2Q4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1t
aW5pYnJvd3NlcgorKysgYi9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgpAQCAtMSw2NCAr
MSwzMSBAQAotIyEvdXNyL2Jpbi9lbnYgcGVybAotCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NywgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcywgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+
Ci0KKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TC4KICMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgorIyBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMg
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBTaW1wbGlmaWVkICJydW4iIHNjcmlwdCBmb3IgbGF1
bmNoaW5nIHRoZSBXZWJLaXQyIE1pbmlCcm93c2VyLgotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5p
bmdzOwotdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9ucyBxdy9jYXRkaXIvOwotdXNlIEZpbmRCaW47
Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2Ugd2Via2l0ZGlyczsKLQotbXkgJGxhdW5jaGVy
TmFtZTsKLW15ICRsYXVuY2hlclBhdGg7Ci1teSBAamhidWlsZFdyYXBwZXI7CisjIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUK
KyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGgg
Rmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogCi1wcm9oaWJpdFVua25vd25Q
b3J0KCk7Ci1zZXRDb25maWd1cmF0aW9uKCk7CisiIiJXcmFwcGVyIGFyb3VuZCB3ZWJraXRweS9t
aW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkiIiIKK2ltcG9ydCBvcworaW1wb3J0IHN5cwog
Ci1pZiAoaXNHdGsoKSB8fCBpc1dQRSgpKSB7Ci0gICAgbXkgQGNvbW1hbmQgPSAoRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAicnVuLW1pbmlicm93
c2VyIikpOwotICAgIHJ1bkluRmxhdHBha0lmQXZhaWxhYmxlKEBjb21tYW5kKTsKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uIGltcG9ydCBtdWx0aXByb2Nlc3NpbmdfYm9vdHN0cmFwCiAKLSAgICAjIENo
ZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBhcmUgYnVpbHQuCi0gICAgY2hlY2tG
cmFtZXdvcmtzKCk7Cit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCitpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCisgICAg
aW1wb3J0IGZsYXRwYWt1dGlscworICAgIGZsYXRwYWt1dGlscy5ydW5faW5fc2FuZGJveF9pZl9h
dmFpbGFibGUoc3lzLmFyZ3YpCiAKLSAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHByb2R1Y3RE
aXIoKSwgImJpbiIsICJNaW5pQnJvd3NlciIpOwotICAgIGRpZSAiQ2FuJ3QgZmluZCAkbGF1bmNo
ZXJQYXRoIiB1bmxlc3MgLXggJGxhdW5jaGVyUGF0aDsKLSAgICBAamhidWlsZFdyYXBwZXIgPSB3
cmFwcGVyUHJlZml4SWZOZWVkZWQoKTsKLSAgICBwcmludCAiU3RhcnRpbmcgTWluaUJyb3dzZXIu
XG4iOwotICAgIGV4ZWMgQGpoYnVpbGRXcmFwcGVyLCAkbGF1bmNoZXJQYXRoLCBAQVJHViBvciBk
aWU7Ci19IGVsc2lmIChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgewotICAgIHByaW50SGVscEFuZEV4
aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7Ci0gICAgZXhpdCBleGl0U3RhdHVz
KHJ1bk1pbmlCcm93c2VyKCkpOwotfSBlbHNlIHsKLSAgICBkaWUgIlVuc3VwcG9ydGVkIHBsYXRm
b3JtLiIKLX0KK211bHRpcHJvY2Vzc2luZ19ib290c3RyYXAucnVuKCd3ZWJraXRweScsICdtaW5p
YnJvd3NlcicsICdydW5fbWluaWJyb3dzZXIucHknKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L21pbmlicm93c2VyL3J1bl9taW5pYnJvd3Nlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTg3
MTc0MDExZjNhNjA5MGNhODY0NWE5NWNjODY3MjQ2ZGFiMzE0Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkKQEAg
LTAsMCArMSw2MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyMKKyMgVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj
CisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3
cml0ZSB0byB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdCwgRmlmdGggRmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorCitmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9y
dCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZ3VyYXRp
b25fb3B0aW9ucywgcGxhdGZvcm1fb3B0aW9ucywgZmFjdG9yeQorCisKK2RlZiBtYWluKGFyZ3Yp
OgorICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZV9hcmdzKGFyZ3YpCisKKyAgICB0cnk6CisgICAg
ICAgIGYgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KEhvc3QoKSkKKyAgICAgICAgcG9ydCA9IGYuZ2V0
KG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHBvcnQu
cnVuX21pbmlicm93c2VyKGFyZ3MpCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShlLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcHJpbnQoJ1xu
JXMgcmFpc2VkOiAlcycgJSAoZS5fX2NsYXNzX18uX19uYW1lX18sIHN0cihlKSksIGZpbGU9c3lz
LnN0ZGVycikKKyAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJy
KQorICAgICAgICByZXR1cm4gMQorCisKK2RlZiBwYXJzZV9hcmdzKGFyZ3MpOgorICAgIG9wdGlv
bl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9IiVwcm9nIFtvcHRpb25zXSBb
dXJsXSIpCisgICAgZ3JvdXBzID0gWygiUGxhdGZvcm0gb3B0aW9ucyIsIHBsYXRmb3JtX29wdGlv
bnMoKSksICgiQ29uZmlndXJhdGlvbiBvcHRpb25zIiwgY29uZmlndXJhdGlvbl9vcHRpb25zKCkp
XQorCisgICAgZ3JvdXBzLmFwcGVuZCgoIm1hY09TIG9wdGlvbnMiLCBbCisgICAgICAgIG9wdHBh
cnNlLm1ha2Vfb3B0aW9uKCItZyIsICItLWd1YXJkLW1hbGxvYyIsIGRlZmF1bHQ9RmFsc2UsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVu
YWJsZSBHdWFyZCBNYWxsb2MgKGRlZmF1bHQ6ICVkZWZhdWx0KSIpLAorICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1sYW5nIiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlVzZSBhIHNwZWNp
ZmljIGxhbmd1YWdlIGluc3RlYWQgb2Ygc3lzdGVtIGxhbmd1YWdlLlRoaXMgYWNjZXB0cyBhIGxh
bmd1YWdlIG5hbWUgKEdlcm1hbikgb3IgYSBsYW5ndWFnZSBjb2RlIChkZSwgYXIsIHB0X0JSLCBl
dGMpLiIpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1sb2NhbGUiLCBhY3Rpb249
InN0b3JlIiwgaGVscD0iVXNlIGEgc3BlY2lmaWMgbG9jYWxlIGluc3RlYWQgb2YgdGhlIHN5c3Rl
bSByZWdpb24uIikKKyAgICBdKSkKKworICAgIGZvciBncm91cF9uYW1lLCBncm91cF9vcHRpb25z
IGluIGdyb3VwczoKKyAgICAgICAgb3B0aW9uX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAo
b3B0aW9uX3BhcnNlciwgZ3JvdXBfbmFtZSkKKyAgICAgICAgb3B0aW9uX2dyb3VwLmFkZF9vcHRp
b25zKGdyb3VwX29wdGlvbnMpCisgICAgICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbl9ncm91
cChvcHRpb25fZ3JvdXApCisKKyAgICByZXR1cm4gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKGFy
Z3MpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMu
YXJndlsxOl0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2Uu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCAxMDliYmU3NGM4
MTNjNzBhOTJjYmQ0M2U1OWRjOGFkYWNmZWY1YmM2Li4wNjZhZjUxOGNkNDJkNjllZTA2OTA1ZTNj
ODdlYTU2ZDI0YTMwMzM5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
YmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMTM3
MCw2ICsxMzcwLDE0IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJucyB0
aGUgZnVsbCBwYXRoIHRvIHRoZSBkZWZhdWx0IEltYWdlRGlmZiBiaW5hcnksIG9yIE5vbmUgaWYg
aXQgaXMgbm90IGF2YWlsYWJsZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
J0ltYWdlRGlmZicpCiAKKyAgICBkZWYgcnVuX21pbmlicm93c2VyX2FyZ3VtZW50cyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgcnVuX21pbmlicm93c2VyKHNlbGYsIGFyZ3Mp
OgorICAgICAgICBvcHRpb25zQW5kQXJncyA9IHNlbGYucnVuX21pbmlicm93c2VyX2FyZ3VtZW50
cygpCisgICAgICAgIG9wdGlvbnNBbmRBcmdzLmV4dGVuZChhcmdzKQorICAgICAgICByZXR1cm4g
c2VsZi5fcnVuX3NjcmlwdChbIm9sZC1ydW4tbWluaWJyb3dzZXIiLCBdICsgb3B0aW9uc0FuZEFy
Z3MpCisKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
ICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBpbWFnZV9kaWZmIGJpbmFy
eSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgYXZhaWxhYmxlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9kYXJ3aW4ucHkKaW5kZXggYjUyODE0MTUyZDcxMzM4NWUwMWI5ZjI1ODdkYjdhNGY3ZDdkZDA5
Mi4uMWQyZGIxMjk3NGI0MTA1NTExODEyY2NhM2U4OGM2MTQ2MjkyODMzMCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CkBAIC0yNzYsMyArMjc2LDEzIEBAIGNsYXNzIERhcndp
blBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgZm9yIG5hbWUgaW4gWydEWUxEX0xJQlJBUllfUEFU
SCcsICdfX1hQQ19EWUxEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZSQU1FV09SS19QQVRIJywgJ19f
WFBDX0RZTERfRlJBTUVXT1JLX1BBVEgnXToKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF92YWx1
ZV9jb2xvbl9zZXBhcmF0ZWQoZW52aXJvbm1lbnQsIG5hbWUsIGJ1aWxkX3Jvb3RfcGF0aCkKICAg
ICAgICAgcmV0dXJuIGVudmlyb25tZW50CisKKyAgICBkZWYgcnVuX21pbmlicm93c2VyX2FyZ3Vt
ZW50cyhzZWxmKToKKyAgICAgICAgYXJncyA9IFtdCisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlv
bigiZ3VhcmRfbWFsbG9jIik6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLWciKQorICAgICAg
ICBpZiBzZWxmLmdldF9vcHRpb24oImxhbmciKToKKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsi
LS1sYW5nIiwgc2VsZi5nZXRfb3B0aW9uKCJsYW5nIildKQorICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oImxvY2FsZSIpOgorICAgICAgICAgICAgYXJncy5leHRlbmQoWyItLWxvY2FsZSIsIHNl
bGYuZ2V0X29wdGlvbigibG9jYWxlIildKQorICAgICAgICByZXR1cm4gYXJncwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9ndGsucHkKaW5kZXggMDQ5MzU3Y2ViMTFjNzNhY2UxZGM4Zjc2ZDg0MWQ1M2Y4
YTc2YWNlMS4uNmQ5NDE3MjQyZmY4NGRjZmNiOTQ4MDFhMTIyMzMwNGUwZTYwMzA4ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5CkBAIC0yMzEsNyArMjMxLDcgQEAgY2xhc3MgR3RrUG9y
dChQb3J0KToKICAgICAgICAgc2VsZi5fbGVha2RldGVjdG9yLnBhcnNlX2FuZF9wcmludF9sZWFr
c19kZXRhaWwobGVha3NfZmlsZXMpCiAKICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmlsZShz
ZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToKLSAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicnVuLW1p
bmlicm93c2VyIiwgW3BhdGguYWJzcGF0aF90b191cmkoc2VsZi5ob3N0LnBsYXRmb3JtLCByZXN1
bHRzX2ZpbGVuYW1lKV0pCisgICAgICAgIHNlbGYucnVuX21pbmlicm93c2VyKFtwYXRoLmFic3Bh
dGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQogCiAgICAg
ZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYpOgogICAgICAgICByZXR1cm4gc3VwZXIoR3RrUG9ydCwg
c2VsZikuY2hlY2tfc3lzX2RlcHMoKSBhbmQgc2VsZi5fZHJpdmVyX2NsYXNzKCkuY2hlY2tfZHJp
dmVyKHNlbGYpCkBAIC0yNjAsMyArMjYwLDEzIEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAg
ICAgIGNvbmZpZ3VyYXRpb25bJ3BsYXRmb3JtJ10gPSAnR1RLJwogICAgICAgICBjb25maWd1cmF0
aW9uWyd2ZXJzaW9uX25hbWUnXSA9IHNlbGYuX2Rpc3BsYXlfc2VydmVyLmNhcGl0YWxpemUoKSBp
ZiBzZWxmLl9kaXNwbGF5X3NlcnZlciBlbHNlICdYdmZiJwogICAgICAgICByZXR1cm4gY29uZmln
dXJhdGlvbgorCisgICAgZGVmIHJ1bl9taW5pYnJvd3NlcihzZWxmLCBhcmdzKToKKyAgICAgICAg
bWluaUJyb3dzZXIgPSBzZWxmLl9idWlsZF9wYXRoKCdiaW4nLCAnTWluaUJyb3dzZXInKQorICAg
ICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMobWluaUJyb3dzZXIpOgorICAgICAg
ICAgICAgcHJpbnQoIiVzIG5vdCBmb3VuZC4uLiBEaWQgeW91IHJ1biBidWlsZC13ZWJraXQ/IiAl
IG1pbmlCcm93c2VyKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgY29tbWFuZCA9IFtt
aW5pQnJvd3NlciwgXQorICAgICAgICBpZiBzZWxmLl9zaG91bGRfdXNlX2poYnVpbGQoKToKKyAg
ICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLl9qaGJ1aWxkX3dyYXBwZXIgKyBjb21tYW5kCisgICAg
ICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY29tbWFuZCArIGFyZ3MsIGN3
ZD1zZWxmLndlYmtpdF9iYXNlKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvd3BlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weQppbmRleCBh
NDU3MzBmNmI0NTZjMzIwYTMyNzU0ZjcwM2Q3MmM3NjllMTA4YzVlLi40Mzc1MDUxMzA1ZTJlNjkx
YmMyOWU1OWQwN2M0NDVlYzRhMjY3Mzc4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvd3BlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93cGUucHkK
QEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV1BFUG9ydChQb3J0KToKICAgICAgICAgcmV0dXJuIGVu
dmlyb25tZW50CiAKICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRz
X2ZpbGVuYW1lKToKLSAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicnVuLW1pbmlicm93c2VyIiwg
W3BhdGguYWJzcGF0aF90b191cmkoc2VsZi5ob3N0LnBsYXRmb3JtLCByZXN1bHRzX2ZpbGVuYW1l
KV0pCisgICAgICAgIHNlbGYucnVuX21pbmlicm93c2VyKFtwYXRoLmFic3BhdGhfdG9fdXJpKHNl
bGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQogCiAgICAgZGVmIGNoZWNrX3N5
c19kZXBzKHNlbGYpOgogICAgICAgICByZXR1cm4gc3VwZXIoV1BFUG9ydCwgc2VsZikuY2hlY2tf
c3lzX2RlcHMoKSBhbmQgc2VsZi5fZHJpdmVyX2NsYXNzKCkuY2hlY2tfZHJpdmVyKHNlbGYpCkBA
IC0xMzQsMyArMTM0LDEzIEBAIGNsYXNzIFdQRVBvcnQoUG9ydCk6CiAgICAgICAgIGNvbmZpZ3Vy
YXRpb24gPSBzdXBlcihXUEVQb3J0LCBzZWxmKS5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQoaG9z
dD1ob3N0KQogICAgICAgICBjb25maWd1cmF0aW9uWydwbGF0Zm9ybSddID0gJ1dQRScKICAgICAg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KKworICAgIGRlZiBydW5fbWluaWJyb3dzZXIoc2VsZiwg
YXJncyk6CisgICAgICAgIG1pbmlCcm93c2VyID0gc2VsZi5fYnVpbGRfcGF0aCgnYmluJywgJ01p
bmlCcm93c2VyJykKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKG1pbmlC
cm93c2VyKToKKyAgICAgICAgICAgIHByaW50KCIlcyBub3QgZm91bmQuLi4gRGlkIHlvdSBydW4g
YnVpbGQtd2Via2l0PyIgJSBtaW5pQnJvd3NlcikKKyAgICAgICAgICAgIHJldHVybiAxCisgICAg
ICAgIGNvbW1hbmQgPSBbbWluaUJyb3dzZXIsIF0KKyAgICAgICAgaWYgc2VsZi5fc2hvdWxkX3Vz
ZV9qaGJ1aWxkKCk6CisgICAgICAgICAgICBjb21tYW5kID0gc2VsZi5famhidWlsZF93cmFwcGVy
ICsgY29tbWFuZAorICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNv
bW1hbmQgKyBhcmdzLCBjd2Q9c2VsZi53ZWJraXRfYmFzZSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402394</attachid>
            <date>2020-06-20 11:02:06 -0700</date>
            <delta_ts>2020-06-21 03:40:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213431-20200620110204.patch</filename>
            <type>text/plain</type>
            <size>16740</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmI2YTYwY2Y5MDgzOTZiNTk1OWFjNDcyZWE3MjI0YjQ2
MGM4ODk2MC4uZDJjMTRmNThiNTVkMjI5M2Q0NzBkYWY2YjRmMmU4MDAxYWI3ZjE5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA2LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBNaWdyYXRlIHJ1bi1taW5pYnJvd3NlciB0byB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBlcmwgdmVyc2lvbiB3
YXMgcmVuYW1lZCB0byBvbGQtcnVuLW1pbmlicm93c2VyIGFuZCByZW1haW5zIHVzZWQgYnkgdGhl
IE1hYyBwb3J0cy4KKyAgICAgICAgcnVuLW1pbmlicm93c2VyIGlzIG5vdyBhIFB5dGhvbiBzY3Jp
cHQgaG9va2luZyBpbnRvIHdlYmtpdHB5IGFuZCB0aGUgUG9ydCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgQm90aCBXUEUgYW5kIEdUSyBwb3J0cyB3aWxsIG5vdyB1c2UgdGhlIHB1cmUgcHl0aG9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2Vy
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3Nlci4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1taW5pYnJvd3NlcjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L21pbmli
cm93c2VyL3J1bl9taW5pYnJvd3Nlci5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXJfYXJndW1lbnRzKToKKyAgICAgICAgKFBv
cnQpOgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9kYXJ3aW4ucHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LmVudmlyb25tZW50
X2Zvcl9hcGlfdGVzdHMpOgorICAgICAgICAoRGFyd2luUG9ydCk6CisgICAgICAgIChEYXJ3aW5Q
b3J0LnJ1bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUp
OgorICAgICAgICAoR3RrUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQpOgorICAgICAgICAo
R3RrUG9ydCk6CisgICAgICAgIChHdGtQb3J0LnJ1bl9taW5pYnJvd3Nlcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuc2hvd19yZXN1
bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChXUEVQb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZCk6CisgICAgICAgIChXUEVQb3J0KToKKyAgICAgICAgKFdQRVBvcnQucnVuX21pbmlicm93c2Vy
KToKKwogMjAyMC0wNi0xOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnJpbmcgdXAgd2F0Y2hPUy90dk9TIG9uIGJ1aWxkLndlYmtpdC5vcmcgKEZvbGxv
dy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIg
Yi9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDllYWRkMjZh
ZDQzNTM0NTliMzk4MGQzOTY4MjhlMDZlYWQxNTI3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvb2xkLXJ1bi1taW5pYnJvd3NlcgpAQCAtMCwwICsxLDQ3IEBACisjIS91c3IvYmlu
L2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0
aW5nIFNlcnZpY2VzLCBJbmMuICA8aW5mb0BzdGFpa29zLm5ldD4KKworIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgU2ltcGxpZmllZCAicnVuIiBzY3JpcHQgZm9yIGxhdW5jaGluZyB0aGUgV2ViS2l0MiBN
aW5pQnJvd3Nlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBGaW5kQmluOwor
dXNlIGxpYiAkRmluZEJpbjo6QmluOwordXNlIHdlYmtpdGRpcnM7CisKK3Byb2hpYml0VW5rbm93
blBvcnQoKTsKK3NldENvbmZpZ3VyYXRpb24oKTsKKworaWYgKGlzQXBwbGVDb2NvYVdlYktpdCgp
KSB7CisgICAgcHJpbnRIZWxwQW5kRXhpdEZvclJ1bkFuZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQo
KTsKKyAgICBleGl0IGV4aXRTdGF0dXMocnVuTWluaUJyb3dzZXIoKSk7Cit9IGVsc2UgeworICAg
IGRpZSAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0uIgorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9ydW4tbWluaWJyb3dzZXIgYi9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgppbmRleCA5
MGNkM2ZhZjQzMWFlYjkyOGRmZDZkZGZkNmVkNmQyM2QyZjIxY2NjLi44NTZiMDc0YTcwMzZmNmU0
MGY4YzJiNjFjZDdlMzVkZjI5MjZjM2Q4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1t
aW5pYnJvd3NlcgorKysgYi9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgpAQCAtMSw2NCAr
MSwzMSBAQAotIyEvdXNyL2Jpbi9lbnYgcGVybAotCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NywgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcywgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+
Ci0KKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TC4KICMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgorIyBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMg
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBTaW1wbGlmaWVkICJydW4iIHNjcmlwdCBmb3IgbGF1
bmNoaW5nIHRoZSBXZWJLaXQyIE1pbmlCcm93c2VyLgotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5p
bmdzOwotdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9ucyBxdy9jYXRkaXIvOwotdXNlIEZpbmRCaW47
Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2Ugd2Via2l0ZGlyczsKLQotbXkgJGxhdW5jaGVy
TmFtZTsKLW15ICRsYXVuY2hlclBhdGg7Ci1teSBAamhidWlsZFdyYXBwZXI7CisjIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUK
KyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGgg
Rmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogCi1wcm9oaWJpdFVua25vd25Q
b3J0KCk7Ci1zZXRDb25maWd1cmF0aW9uKCk7CisiIiJXcmFwcGVyIGFyb3VuZCB3ZWJraXRweS9t
aW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkiIiIKK2ltcG9ydCBvcworaW1wb3J0IHN5cwog
Ci1pZiAoaXNHdGsoKSB8fCBpc1dQRSgpKSB7Ci0gICAgbXkgQGNvbW1hbmQgPSAoRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAicnVuLW1pbmlicm93
c2VyIikpOwotICAgIHJ1bkluRmxhdHBha0lmQXZhaWxhYmxlKEBjb21tYW5kKTsKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uIGltcG9ydCBtdWx0aXByb2Nlc3NpbmdfYm9vdHN0cmFwCiAKLSAgICAjIENo
ZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBhcmUgYnVpbHQuCi0gICAgY2hlY2tG
cmFtZXdvcmtzKCk7Cit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCitpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCisgICAg
aW1wb3J0IGZsYXRwYWt1dGlscworICAgIGZsYXRwYWt1dGlscy5ydW5faW5fc2FuZGJveF9pZl9h
dmFpbGFibGUoc3lzLmFyZ3YpCiAKLSAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHByb2R1Y3RE
aXIoKSwgImJpbiIsICJNaW5pQnJvd3NlciIpOwotICAgIGRpZSAiQ2FuJ3QgZmluZCAkbGF1bmNo
ZXJQYXRoIiB1bmxlc3MgLXggJGxhdW5jaGVyUGF0aDsKLSAgICBAamhidWlsZFdyYXBwZXIgPSB3
cmFwcGVyUHJlZml4SWZOZWVkZWQoKTsKLSAgICBwcmludCAiU3RhcnRpbmcgTWluaUJyb3dzZXIu
XG4iOwotICAgIGV4ZWMgQGpoYnVpbGRXcmFwcGVyLCAkbGF1bmNoZXJQYXRoLCBAQVJHViBvciBk
aWU7Ci19IGVsc2lmIChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgewotICAgIHByaW50SGVscEFuZEV4
aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7Ci0gICAgZXhpdCBleGl0U3RhdHVz
KHJ1bk1pbmlCcm93c2VyKCkpOwotfSBlbHNlIHsKLSAgICBkaWUgIlVuc3VwcG9ydGVkIHBsYXRm
b3JtLiIKLX0KK211bHRpcHJvY2Vzc2luZ19ib290c3RyYXAucnVuKCd3ZWJraXRweScsICdtaW5p
YnJvd3NlcicsICdydW5fbWluaWJyb3dzZXIucHknKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L21pbmlicm93c2VyL3J1bl9taW5pYnJvd3Nlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTg3
MTc0MDExZjNhNjA5MGNhODY0NWE5NWNjODY3MjQ2ZGFiMzE0Ci0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkKQEAg
LTAsMCArMSw2MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMuTC4KKyMKKyMgVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisj
CisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3
cml0ZSB0byB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdCwgRmlmdGggRmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorCitmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgb3B0cGFyc2UKK2ltcG9y
dCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0IGltcG9ydCBIb3N0Citmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZ3VyYXRp
b25fb3B0aW9ucywgcGxhdGZvcm1fb3B0aW9ucywgZmFjdG9yeQorCisKK2RlZiBtYWluKGFyZ3Yp
OgorICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZV9hcmdzKGFyZ3YpCisKKyAgICB0cnk6CisgICAg
ICAgIGYgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KEhvc3QoKSkKKyAgICAgICAgcG9ydCA9IGYuZ2V0
KG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHBvcnQu
cnVuX21pbmlicm93c2VyKGFyZ3MpCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShlLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcHJpbnQoJ1xu
JXMgcmFpc2VkOiAlcycgJSAoZS5fX2NsYXNzX18uX19uYW1lX18sIHN0cihlKSksIGZpbGU9c3lz
LnN0ZGVycikKKyAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJy
KQorICAgICAgICByZXR1cm4gMQorCisKK2RlZiBwYXJzZV9hcmdzKGFyZ3MpOgorICAgIG9wdGlv
bl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIodXNhZ2U9IiVwcm9nIFtvcHRpb25zXSBb
dXJsXSIpCisgICAgZ3JvdXBzID0gWygiUGxhdGZvcm0gb3B0aW9ucyIsIHBsYXRmb3JtX29wdGlv
bnMoKSksICgiQ29uZmlndXJhdGlvbiBvcHRpb25zIiwgY29uZmlndXJhdGlvbl9vcHRpb25zKCkp
XQorCisgICAgZ3JvdXBzLmFwcGVuZCgoIm1hY09TIG9wdGlvbnMiLCBbCisgICAgICAgIG9wdHBh
cnNlLm1ha2Vfb3B0aW9uKCItZyIsICItLWd1YXJkLW1hbGxvYyIsIGRlZmF1bHQ9RmFsc2UsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVu
YWJsZSBHdWFyZCBNYWxsb2MgKGRlZmF1bHQ6ICVkZWZhdWx0KSIpLAorICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1sYW5nIiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlVzZSBhIHNwZWNp
ZmljIGxhbmd1YWdlIGluc3RlYWQgb2Ygc3lzdGVtIGxhbmd1YWdlLlRoaXMgYWNjZXB0cyBhIGxh
bmd1YWdlIG5hbWUgKEdlcm1hbikgb3IgYSBsYW5ndWFnZSBjb2RlIChkZSwgYXIsIHB0X0JSLCBl
dGMpLiIpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1sb2NhbGUiLCBhY3Rpb249
InN0b3JlIiwgaGVscD0iVXNlIGEgc3BlY2lmaWMgbG9jYWxlIGluc3RlYWQgb2YgdGhlIHN5c3Rl
bSByZWdpb24uIikKKyAgICBdKSkKKworICAgIGZvciBncm91cF9uYW1lLCBncm91cF9vcHRpb25z
IGluIGdyb3VwczoKKyAgICAgICAgb3B0aW9uX2dyb3VwID0gb3B0cGFyc2UuT3B0aW9uR3JvdXAo
b3B0aW9uX3BhcnNlciwgZ3JvdXBfbmFtZSkKKyAgICAgICAgb3B0aW9uX2dyb3VwLmFkZF9vcHRp
b25zKGdyb3VwX29wdGlvbnMpCisgICAgICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbl9ncm91
cChvcHRpb25fZ3JvdXApCisKKyAgICByZXR1cm4gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKGFy
Z3MpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMu
YXJndlsxOl0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2Uu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCAxMDliYmU3NGM4
MTNjNzBhOTJjYmQ0M2U1OWRjOGFkYWNmZWY1YmM2Li4wNjZhZjUxOGNkNDJkNjllZTA2OTA1ZTNj
ODdlYTU2ZDI0YTMwMzM5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
YmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAtMTM3
MCw2ICsxMzcwLDE0IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJucyB0
aGUgZnVsbCBwYXRoIHRvIHRoZSBkZWZhdWx0IEltYWdlRGlmZiBiaW5hcnksIG9yIE5vbmUgaWYg
aXQgaXMgbm90IGF2YWlsYWJsZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgo
J0ltYWdlRGlmZicpCiAKKyAgICBkZWYgcnVuX21pbmlicm93c2VyX2FyZ3VtZW50cyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBkZWYgcnVuX21pbmlicm93c2VyKHNlbGYsIGFyZ3Mp
OgorICAgICAgICBvcHRpb25zQW5kQXJncyA9IHNlbGYucnVuX21pbmlicm93c2VyX2FyZ3VtZW50
cygpCisgICAgICAgIG9wdGlvbnNBbmRBcmdzLmV4dGVuZChhcmdzKQorICAgICAgICByZXR1cm4g
c2VsZi5fcnVuX3NjcmlwdChbIm9sZC1ydW4tbWluaWJyb3dzZXIiLCBdICsgb3B0aW9uc0FuZEFy
Z3MpCisKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToK
ICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBpbWFnZV9kaWZmIGJpbmFy
eSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgYXZhaWxhYmxlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9kYXJ3aW4ucHkKaW5kZXggYjUyODE0MTUyZDcxMzM4NWUwMWI5ZjI1ODdkYjdhNGY3ZDdkZDA5
Mi4uMWQyZGIxMjk3NGI0MTA1NTExODEyY2NhM2U4OGM2MTQ2MjkyODMzMCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rhcndpbi5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5CkBAIC0yNzYsMyArMjc2LDEzIEBAIGNsYXNzIERhcndp
blBvcnQoQXBwbGVQb3J0KToKICAgICAgICAgZm9yIG5hbWUgaW4gWydEWUxEX0xJQlJBUllfUEFU
SCcsICdfX1hQQ19EWUxEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZSQU1FV09SS19QQVRIJywgJ19f
WFBDX0RZTERfRlJBTUVXT1JLX1BBVEgnXToKICAgICAgICAgICAgIHNlbGYuX2FwcGVuZF92YWx1
ZV9jb2xvbl9zZXBhcmF0ZWQoZW52aXJvbm1lbnQsIG5hbWUsIGJ1aWxkX3Jvb3RfcGF0aCkKICAg
ICAgICAgcmV0dXJuIGVudmlyb25tZW50CisKKyAgICBkZWYgcnVuX21pbmlicm93c2VyX2FyZ3Vt
ZW50cyhzZWxmKToKKyAgICAgICAgYXJncyA9IFtdCisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlv
bigiZ3VhcmRfbWFsbG9jIik6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLWciKQorICAgICAg
ICBpZiBzZWxmLmdldF9vcHRpb24oImxhbmciKToKKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsi
LS1sYW5nIiwgc2VsZi5nZXRfb3B0aW9uKCJsYW5nIildKQorICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oImxvY2FsZSIpOgorICAgICAgICAgICAgYXJncy5leHRlbmQoWyItLWxvY2FsZSIsIHNl
bGYuZ2V0X29wdGlvbigibG9jYWxlIildKQorICAgICAgICByZXR1cm4gYXJncwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9ndGsucHkKaW5kZXggMDQ5MzU3Y2ViMTFjNzNhY2UxZGM4Zjc2ZDg0MWQ1M2Y4
YTc2YWNlMS4uZDk0NWEwNDE3ZTAxMzg0NzI0OGI4OGZiYTUwOWZkZTJjMzZmNzZhZCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5CkBAIC0yMzEsNyArMjMxLDcgQEAgY2xhc3MgR3RrUG9y
dChQb3J0KToKICAgICAgICAgc2VsZi5fbGVha2RldGVjdG9yLnBhcnNlX2FuZF9wcmludF9sZWFr
c19kZXRhaWwobGVha3NfZmlsZXMpCiAKICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmlsZShz
ZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToKLSAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicnVuLW1p
bmlicm93c2VyIiwgW3BhdGguYWJzcGF0aF90b191cmkoc2VsZi5ob3N0LnBsYXRmb3JtLCByZXN1
bHRzX2ZpbGVuYW1lKV0pCisgICAgICAgIHNlbGYucnVuX21pbmlicm93c2VyKFtwYXRoLmFic3Bh
dGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQogCiAgICAg
ZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYpOgogICAgICAgICByZXR1cm4gc3VwZXIoR3RrUG9ydCwg
c2VsZikuY2hlY2tfc3lzX2RlcHMoKSBhbmQgc2VsZi5fZHJpdmVyX2NsYXNzKCkuY2hlY2tfZHJp
dmVyKHNlbGYpCkBAIC0yNjAsMyArMjYwLDEzIEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAg
ICAgIGNvbmZpZ3VyYXRpb25bJ3BsYXRmb3JtJ10gPSAnR1RLJwogICAgICAgICBjb25maWd1cmF0
aW9uWyd2ZXJzaW9uX25hbWUnXSA9IHNlbGYuX2Rpc3BsYXlfc2VydmVyLmNhcGl0YWxpemUoKSBp
ZiBzZWxmLl9kaXNwbGF5X3NlcnZlciBlbHNlICdYdmZiJwogICAgICAgICByZXR1cm4gY29uZmln
dXJhdGlvbgorCisgICAgZGVmIHJ1bl9taW5pYnJvd3NlcihzZWxmLCBhcmdzKToKKyAgICAgICAg
bWluaUJyb3dzZXIgPSBzZWxmLl9idWlsZF9wYXRoKCdiaW4nLCAnTWluaUJyb3dzZXInKQorICAg
ICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUobWluaUJyb3dzZXIpOgorICAgICAg
ICAgICAgcHJpbnQoIiVzIG5vdCBmb3VuZC4uLiBEaWQgeW91IHJ1biBidWlsZC13ZWJraXQ/IiAl
IG1pbmlCcm93c2VyKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgY29tbWFuZCA9IFtt
aW5pQnJvd3NlciwgXQorICAgICAgICBpZiBzZWxmLl9zaG91bGRfdXNlX2poYnVpbGQoKToKKyAg
ICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLl9qaGJ1aWxkX3dyYXBwZXIgKyBjb21tYW5kCisgICAg
ICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoY29tbWFuZCArIGFyZ3MsIGN3
ZD1zZWxmLndlYmtpdF9iYXNlKCkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0a191
bml0dGVzdC5weQppbmRleCAwMWFjYWQ5ZmM5ZjY0YWFjOGQ5MWMzNDc3MThjYmEzZTU4ODllZGJk
Li44ZTAzYTM1ODJlODc4NGFlMTk5YWI1MDg1NDYwMzk5MzRjMzNhMWY5IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3QucHkKQEAgLTY5LDcgKzY5LDEwIEBAIGNs
YXNzIEd0a1BvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtl
X3BvcnQoKQogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9s
b2c9VHJ1ZSkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rv
b2xzL1NjcmlwdHMvcnVuLW1pbmlicm93c2VyJywgJy0tcmVsZWFzZScsICctLWd0aycsICdmaWxl
Oi8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxuIgorICAgICAgICBwb3J0Ll9maWxl
c3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeworICAgICAgICAgICAgIi9tb2NrLWJ1aWxkL2Jpbi9N
aW5pQnJvd3NlciI6ICIiCisgICAgICAgIH0pCisgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9D
SyBydW5fY29tbWFuZDogWycvbW9jay1idWlsZC9iaW4vTWluaUJyb3dzZXInLCAnZmlsZTovL3Rl
c3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgp
LmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZSwgWyJ0ZXN0
Lmh0bWwiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9sb2dzKQogCiAgICAgZGVmIHRlc3RfZGVm
YXVsdF90aW1lb3V0X21zKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3dwZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93cGUucHkKaW5kZXgg
YTQ1NzMwZjZiNDU2YzMyMGEzMjc1NGY3MDNkNzJjNzY5ZTEwOGM1ZS4uZDk3NDUyMTNjOWM1YWIw
OTJlNmFhYzliZmM5MzY1MzAwYzJlZDY3OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3dwZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5
CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFdQRVBvcnQoUG9ydCk6CiAgICAgICAgIHJldHVybiBl
bnZpcm9ubWVudAogCiAgICAgZGVmIHNob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0
c19maWxlbmFtZSk6Ci0gICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInJ1bi1taW5pYnJvd3NlciIs
IFtwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFt
ZSldKQorICAgICAgICBzZWxmLnJ1bl9taW5pYnJvd3NlcihbcGF0aC5hYnNwYXRoX3RvX3VyaShz
ZWxmLmhvc3QucGxhdGZvcm0sIHJlc3VsdHNfZmlsZW5hbWUpXSkKIAogICAgIGRlZiBjaGVja19z
eXNfZGVwcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN1cGVyKFdQRVBvcnQsIHNlbGYpLmNoZWNr
X3N5c19kZXBzKCkgYW5kIHNlbGYuX2RyaXZlcl9jbGFzcygpLmNoZWNrX2RyaXZlcihzZWxmKQpA
QCAtMTM0LDMgKzEzNCwxMyBAQCBjbGFzcyBXUEVQb3J0KFBvcnQpOgogICAgICAgICBjb25maWd1
cmF0aW9uID0gc3VwZXIoV1BFUG9ydCwgc2VsZikuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKGhv
c3Q9aG9zdCkKICAgICAgICAgY29uZmlndXJhdGlvblsncGxhdGZvcm0nXSA9ICdXUEUnCiAgICAg
ICAgIHJldHVybiBjb25maWd1cmF0aW9uCisKKyAgICBkZWYgcnVuX21pbmlicm93c2VyKHNlbGYs
IGFyZ3MpOgorICAgICAgICBtaW5pQnJvd3NlciA9IHNlbGYuX2J1aWxkX3BhdGgoJ2JpbicsICdN
aW5pQnJvd3NlcicpCisgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmlzZmlsZShtaW5p
QnJvd3Nlcik6CisgICAgICAgICAgICBwcmludCgiJXMgbm90IGZvdW5kLi4uIERpZCB5b3UgcnVu
IGJ1aWxkLXdlYmtpdD8iICUgbWluaUJyb3dzZXIpCisgICAgICAgICAgICByZXR1cm4gMQorICAg
ICAgICBjb21tYW5kID0gW21pbmlCcm93c2VyLCBdCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF91
c2VfamhidWlsZCgpOgorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX2poYnVpbGRfd3JhcHBl
ciArIGNvbW1hbmQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChj
b21tYW5kICsgYXJncywgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402416</attachid>
            <date>2020-06-21 03:40:37 -0700</date>
            <delta_ts>2020-06-21 04:31:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213431-20200621034036.patch</filename>
            <type>text/plain</type>
            <size>16630</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzE4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmI2YTYwY2Y5MDgzOTZiNTk1OWFjNDcyZWE3MjI0YjQ2
MGM4ODk2MC4uZDJjMTRmNThiNTVkMjI5M2Q0NzBkYWY2YjRmMmU4MDAxYWI3ZjE5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA2LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBNaWdyYXRlIHJ1bi1taW5pYnJvd3NlciB0byB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBlcmwgdmVyc2lvbiB3
YXMgcmVuYW1lZCB0byBvbGQtcnVuLW1pbmlicm93c2VyIGFuZCByZW1haW5zIHVzZWQgYnkgdGhl
IE1hYyBwb3J0cy4KKyAgICAgICAgcnVuLW1pbmlicm93c2VyIGlzIG5vdyBhIFB5dGhvbiBzY3Jp
cHQgaG9va2luZyBpbnRvIHdlYmtpdHB5IGFuZCB0aGUgUG9ydCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgQm90aCBXUEUgYW5kIEdUSyBwb3J0cyB3aWxsIG5vdyB1c2UgdGhlIHB1cmUgcHl0aG9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2Vy
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3Nlci4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1taW5pYnJvd3NlcjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L21pbmli
cm93c2VyL3J1bl9taW5pYnJvd3Nlci5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXJfYXJndW1lbnRzKToKKyAgICAgICAgKFBv
cnQpOgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9kYXJ3aW4ucHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LmVudmlyb25tZW50
X2Zvcl9hcGlfdGVzdHMpOgorICAgICAgICAoRGFyd2luUG9ydCk6CisgICAgICAgIChEYXJ3aW5Q
b3J0LnJ1bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUp
OgorICAgICAgICAoR3RrUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQpOgorICAgICAgICAo
R3RrUG9ydCk6CisgICAgICAgIChHdGtQb3J0LnJ1bl9taW5pYnJvd3Nlcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuc2hvd19yZXN1
bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChXUEVQb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZCk6CisgICAgICAgIChXUEVQb3J0KToKKyAgICAgICAgKFdQRVBvcnQucnVuX21pbmlicm93c2Vy
KToKKwogMjAyMC0wNi0xOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQnJpbmcgdXAgd2F0Y2hPUy90dk9TIG9uIGJ1aWxkLndlYmtpdC5vcmcgKEZvbGxv
dy11cCBmaXgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIg
Yi9Ub29scy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDllYWRkMjZh
ZDQzNTM0NTliMzk4MGQzOTY4MjhlMDZlYWQxNTI3NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvb2xkLXJ1bi1taW5pYnJvd3NlcgpAQCAtMCwwICsxLDQ3IEBACisjIS91c3IvYmlu
L2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0
aW5nIFNlcnZpY2VzLCBJbmMuICA8aW5mb0BzdGFpa29zLm5ldD4KKworIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgU2ltcGxpZmllZCAicnVuIiBzY3JpcHQgZm9yIGxhdW5jaGluZyB0aGUgV2ViS2l0MiBN
aW5pQnJvd3Nlci4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBGaW5kQmluOwor
dXNlIGxpYiAkRmluZEJpbjo6QmluOwordXNlIHdlYmtpdGRpcnM7CisKK3Byb2hpYml0VW5rbm93
blBvcnQoKTsKK3NldENvbmZpZ3VyYXRpb24oKTsKKworaWYgKGlzQXBwbGVDb2NvYVdlYktpdCgp
KSB7CisgICAgcHJpbnRIZWxwQW5kRXhpdEZvclJ1bkFuZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQo
KTsKKyAgICBleGl0IGV4aXRTdGF0dXMocnVuTWluaUJyb3dzZXIoKSk7Cit9IGVsc2UgeworICAg
IGRpZSAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0uIgorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy9ydW4tbWluaWJyb3dzZXIgYi9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgppbmRleCA5
MGNkM2ZhZjQzMWFlYjkyOGRmZDZkZGZkNmVkNmQyM2QyZjIxY2NjLi44NTZiMDc0YTcwMzZmNmU0
MGY4YzJiNjFjZDdlMzVkZjI5MjZjM2Q4IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1t
aW5pYnJvd3NlcgorKysgYi9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcgpAQCAtMSw2NCAr
MSwzMSBAQAotIyEvdXNyL2Jpbi9lbnYgcGVybAotCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NywgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcywgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+
Ci0KKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMjAgSWdhbGlhIFMu
TC4KICMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgorIyBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSMg
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBTaW1wbGlmaWVkICJydW4iIHNjcmlwdCBmb3IgbGF1
bmNoaW5nIHRoZSBXZWJLaXQyIE1pbmlCcm93c2VyLgotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5p
bmdzOwotdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9ucyBxdy9jYXRkaXIvOwotdXNlIEZpbmRCaW47
Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2Ugd2Via2l0ZGlyczsKLQotbXkgJGxhdW5jaGVy
TmFtZTsKLW15ICRsYXVuY2hlclBhdGg7Ci1teSBAamhidWlsZFdyYXBwZXI7CisjIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUK
KyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGgg
Rmxvb3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogCi1wcm9oaWJpdFVua25vd25Q
b3J0KCk7Ci1zZXRDb25maWd1cmF0aW9uKCk7CisiIiJXcmFwcGVyIGFyb3VuZCB3ZWJraXRweS9t
aW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkiIiIKK2ltcG9ydCBvcworaW1wb3J0IHN5cwog
Ci1pZiAoaXNHdGsoKSB8fCBpc1dQRSgpKSB7Ci0gICAgbXkgQGNvbW1hbmQgPSAoRmlsZTo6U3Bl
Yy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAicnVuLW1pbmlicm93
c2VyIikpOwotICAgIHJ1bkluRmxhdHBha0lmQXZhaWxhYmxlKEBjb21tYW5kKTsKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uIGltcG9ydCBtdWx0aXByb2Nlc3NpbmdfYm9vdHN0cmFwCiAKLSAgICAjIENo
ZWNrIHRvIHNlZSB0aGF0IGFsbCB0aGUgZnJhbWV3b3JrcyBhcmUgYnVpbHQuCi0gICAgY2hlY2tG
cmFtZXdvcmtzKCk7Cit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCitpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3Mu
cGF0aC5qb2luKHRvcF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCisgICAg
aW1wb3J0IGZsYXRwYWt1dGlscworICAgIGZsYXRwYWt1dGlscy5ydW5faW5fc2FuZGJveF9pZl9h
dmFpbGFibGUoc3lzLmFyZ3YpCiAKLSAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHByb2R1Y3RE
aXIoKSwgImJpbiIsICJNaW5pQnJvd3NlciIpOwotICAgIGRpZSAiQ2FuJ3QgZmluZCAkbGF1bmNo
ZXJQYXRoIiB1bmxlc3MgLXggJGxhdW5jaGVyUGF0aDsKLSAgICBAamhidWlsZFdyYXBwZXIgPSB3
cmFwcGVyUHJlZml4SWZOZWVkZWQoKTsKLSAgICBwcmludCAiU3RhcnRpbmcgTWluaUJyb3dzZXIu
XG4iOwotICAgIGV4ZWMgQGpoYnVpbGRXcmFwcGVyLCAkbGF1bmNoZXJQYXRoLCBAQVJHViBvciBk
aWU7Ci19IGVsc2lmIChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgewotICAgIHByaW50SGVscEFuZEV4
aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7Ci0gICAgZXhpdCBleGl0U3RhdHVz
KHJ1bk1pbmlCcm93c2VyKCkpOwotfSBlbHNlIHsKLSAgICBkaWUgIlVuc3VwcG9ydGVkIHBsYXRm
b3JtLiIKLX0KK211bHRpcHJvY2Vzc2luZ19ib290c3RyYXAucnVuKCd3ZWJraXRweScsICdtaW5p
YnJvd3NlcicsICdydW5fbWluaWJyb3dzZXIucHknKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L21pbmlicm93c2VyL3J1bl9taW5pYnJvd3Nlci5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmVh
ODFkMTVkZjgxMzZjYTdhZjdkOWU5ZjFiZWQzMTljNjQ5NTdmCi0tLSAvZGV2L251bGwKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkKQEAg
LTAsMCArMSw2NSBAQAorIyBweWxpbnQ6IGRpc2FibGU9RTExMDMKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIElnYWxpYSBTLkwuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyLjEgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisj
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisjIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorIyBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlv
bgoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJh
Y2sKKworZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRw
eS5wb3J0IGltcG9ydCBjb25maWd1cmF0aW9uX29wdGlvbnMsIHBsYXRmb3JtX29wdGlvbnMsIGZh
Y3RvcnkKKworCitkZWYgbWFpbihhcmd2KToKKyAgICBvcHRpb25fcGFyc2VyID0gYXJncGFyc2Uu
QXJndW1lbnRQYXJzZXIocHJvZz0icnVuLW1pbmlicm93c2VyIiwgdXNhZ2U9IiUocHJvZylzIFtv
cHRpb25zXSBbdXJsXSIsIGFkZF9oZWxwPUZhbHNlKQorICAgIGdyb3VwcyA9IFsoIlBsYXRmb3Jt
IG9wdGlvbnMiLCBwbGF0Zm9ybV9vcHRpb25zKCkpLCAoIkNvbmZpZ3VyYXRpb24gb3B0aW9ucyIs
IGNvbmZpZ3VyYXRpb25fb3B0aW9ucygpKV0KKworICAgICMgQ29udmVydCBvcHRpb25zIHRvIGFy
Z3BhcnNlLCBzbyB0aGF0IHdlIGNhbiB1c2UgcGFyc2Vfa25vd25fYXJncygpIHdoaWNoIGlzIG5v
dCBzdXBwb3J0ZWQgaW4gb3B0cGFyc2UuCisgICAgZm9yIGdyb3VwX25hbWUsIGdyb3VwX29wdGlv
bnMgaW4gZ3JvdXBzOgorICAgICAgICBvcHRpb25fZ3JvdXAgPSBvcHRpb25fcGFyc2VyLmFkZF9h
cmd1bWVudF9ncm91cChncm91cF9uYW1lKQorCisgICAgICAgIGZvciBvcHRpb24gaW4gZ3JvdXBf
b3B0aW9uczoKKyAgICAgICAgICAgICMgU2tpcCBkZXByZWNhdGVkIG9wdGlvbgorICAgICAgICAg
ICAgaWYgb3B0aW9uLmRlc3QgPT0gImNvbmZpZ3VyYXRpb24iOgorICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgICAgICAgICBkZWZhdWx0ID0gTm9uZQorICAgICAgICAgICAgaWYgb3B0aW9u
LmRlZmF1bHQgIT0gKCJOTyIsICJERUZBVUxUIik6CisgICAgICAgICAgICAgICAgZGVmYXVsdCA9
IG9wdGlvbi5kZWZhdWx0CisgICAgICAgICAgICBvcHRpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KG9w
dGlvbi5nZXRfb3B0X3N0cmluZygpLCBhY3Rpb249b3B0aW9uLmFjdGlvbiwgZGVzdD1vcHRpb24u
ZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1vcHRpb24u
aGVscCwgY29uc3Q9b3B0aW9uLmNvbnN0LCBkZWZhdWx0PWRlZmF1bHQpCisKKyAgICBvcHRpb25z
LCBhcmdzID0gb3B0aW9uX3BhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3YpCisKKyAgICBpZiBz
ZXQoYXJncykuaXNzdWJzZXQoWyItaCIsICItLWhlbHAiXSkgYW5kIG5vdCBvcHRpb25zLnBsYXRm
b3JtOgorICAgICAgICBvcHRpb25fcGFyc2VyLnByaW50X2hlbHAoKQorICAgICAgICBwcmludCgi
XG5UbyBzZWUgdGhlIGF2YWlsYWJsZSBvcHRpb25zIG9uIGEgc3BlY2lmaWMgcGxhdGZvcm0sIHN1
cHBseSBpdCBvbiB0aGUgY29tbWFuZC1saW5lLCBmb3IgZXhhbXBsZSAtLWd0ayAtLWhlbHAiKQor
ICAgICAgICByZXR1cm4gMAorCisgICAgdHJ5OgorICAgICAgICBwb3J0ID0gZmFjdG9yeS5Qb3J0
RmFjdG9yeShIb3N0KCkpLmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zPW9wdGlvbnMpCisg
ICAgICAgIHJldHVybiBwb3J0LnJ1bl9taW5pYnJvd3NlcihhcmdzKQorICAgIGV4Y2VwdCBCYXNl
RXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZSwgRXhjZXB0aW9uKToKKyAg
ICAgICAgICAgIHByaW50KCdcbiVzIHJhaXNlZDogJXMnICUgKGUuX19jbGFzc19fLl9fbmFtZV9f
LCBzdHIoZSkpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRf
ZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgcmV0dXJuIDEKKworCitpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdKSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggMTA5YmJlNzRjODEzYzcwYTkyY2JkNDNlNTlkYzhh
ZGFjZmVmNWJjNi4uNmJjMmQ5NzE5NTExMTE1YTkwNzA3NGQ1OGRlMDJhZGU4NDEyY2EyMyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAgLTMwLDYgKzMwLDcgQEAKICIiIkFic3Ry
YWN0IGJhc2UgY2xhc3Mgb2YgUG9ydC1zcGVjaWZpYyBlbnRyeSBwb2ludHMgZm9yIHRoZSBsYXlv
dXQgdGVzdHMKIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgKHRoZSBQb3J0IGFuZCBEcml2ZXIgY2xhc3Nl
cykuIiIiCiAKK2ltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGRpZmZsaWIKIGltcG9ydCBqc29uCiBp
bXBvcnQgbG9nZ2luZwpAQCAtNzk4LDcgKzc5OSwxMiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAg
ICAgICAgIHJldHVybiBzZWxmLmdldF9vcHRpb24obmFtZSkgPT0gdmFsdWUKIAogICAgIGRlZiBz
ZXRfb3B0aW9uX2RlZmF1bHQoc2VsZiwgbmFtZSwgZGVmYXVsdF92YWx1ZSk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9vcHRpb25zLmVuc3VyZV92YWx1ZShuYW1lLCBkZWZhdWx0X3ZhbHVlKQorICAg
ICAgICBpZiBpc2luc3RhbmNlKHNlbGYuX29wdGlvbnMsIGFyZ3BhcnNlLk5hbWVzcGFjZSk6Cisg
ICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLl9vcHRpb25zLCBuYW1lKToKKyAgICAgICAg
ICAgICAgICBzZXRhdHRyKHNlbGYuX29wdGlvbnMsIG5hbWUsIGRlZmF1bHRfdmFsdWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLl9vcHRpb25zLmVuc3VyZV92YWx1ZShuYW1lLCBkZWZhdWx0X3ZhbHVlKQogCiAgICAg
QG1lbW9pemVkCiAgICAgZGVmIHBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVjdGF0aW9uc19maWxl
KHNlbGYpOgpAQCAtMTM3MCw2ICsxMzc2LDkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIGRlZmF1bHQgSW1hZ2VEaWZmIGJpbmFy
eSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgYXZhaWxhYmxlLiIiIgogICAgICAgICByZXR1cm4gc2Vs
Zi5fYnVpbGRfcGF0aCgnSW1hZ2VEaWZmJykKIAorICAgIGRlZiBydW5fbWluaWJyb3dzZXIoc2Vs
ZiwgYXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fc2NyaXB0KFsib2xkLXJ1bi1taW5p
YnJvd3NlciIsIF0gKyBhcmdzKQorCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIF9wYXRoX3RvX2lt
YWdlX2RpZmYoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUg
aW1hZ2VfZGlmZiBiaW5hcnksIG9yIE5vbmUgaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZ3RrLnB5CmluZGV4IDA0OTM1N2NlYjExYzczYWNlMWRjOGY3NmQ4NDFk
NTNmOGE3NmFjZTEuLmQ5NDVhMDQxN2UwMTM4NDcyNDhiODhmYmE1MDlmZGUyYzM2Zjc2YWQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQpAQCAtMjMxLDcgKzIzMSw3IEBAIGNsYXNzIEd0
a1BvcnQoUG9ydCk6CiAgICAgICAgIHNlbGYuX2xlYWtkZXRlY3Rvci5wYXJzZV9hbmRfcHJpbnRf
bGVha3NfZGV0YWlsKGxlYWtzX2ZpbGVzKQogCiAgICAgZGVmIHNob3dfcmVzdWx0c19odG1sX2Zp
bGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6Ci0gICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoInJ1
bi1taW5pYnJvd3NlciIsIFtwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0Zm9ybSwg
cmVzdWx0c19maWxlbmFtZSldKQorICAgICAgICBzZWxmLnJ1bl9taW5pYnJvd3NlcihbcGF0aC5h
YnNwYXRoX3RvX3VyaShzZWxmLmhvc3QucGxhdGZvcm0sIHJlc3VsdHNfZmlsZW5hbWUpXSkKIAog
ICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN1cGVyKEd0a1Bv
cnQsIHNlbGYpLmNoZWNrX3N5c19kZXBzKCkgYW5kIHNlbGYuX2RyaXZlcl9jbGFzcygpLmNoZWNr
X2RyaXZlcihzZWxmKQpAQCAtMjYwLDMgKzI2MCwxMyBAQCBjbGFzcyBHdGtQb3J0KFBvcnQpOgog
ICAgICAgICBjb25maWd1cmF0aW9uWydwbGF0Zm9ybSddID0gJ0dUSycKICAgICAgICAgY29uZmln
dXJhdGlvblsndmVyc2lvbl9uYW1lJ10gPSBzZWxmLl9kaXNwbGF5X3NlcnZlci5jYXBpdGFsaXpl
KCkgaWYgc2VsZi5fZGlzcGxheV9zZXJ2ZXIgZWxzZSAnWHZmYicKICAgICAgICAgcmV0dXJuIGNv
bmZpZ3VyYXRpb24KKworICAgIGRlZiBydW5fbWluaWJyb3dzZXIoc2VsZiwgYXJncyk6CisgICAg
ICAgIG1pbmlCcm93c2VyID0gc2VsZi5fYnVpbGRfcGF0aCgnYmluJywgJ01pbmlCcm93c2VyJykK
KyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uaXNmaWxlKG1pbmlCcm93c2VyKToKKyAg
ICAgICAgICAgIHByaW50KCIlcyBub3QgZm91bmQuLi4gRGlkIHlvdSBydW4gYnVpbGQtd2Via2l0
PyIgJSBtaW5pQnJvd3NlcikKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGNvbW1hbmQg
PSBbbWluaUJyb3dzZXIsIF0KKyAgICAgICAgaWYgc2VsZi5fc2hvdWxkX3VzZV9qaGJ1aWxkKCk6
CisgICAgICAgICAgICBjb21tYW5kID0gc2VsZi5famhidWlsZF93cmFwcGVyICsgY29tbWFuZAor
ICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNvbW1hbmQgKyBhcmdz
LCBjd2Q9c2VsZi53ZWJraXRfYmFzZSgpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2d0a191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9n
dGtfdW5pdHRlc3QucHkKaW5kZXggMDFhY2FkOWZjOWY2NGFhYzhkOTFjMzQ3NzE4Y2JhM2U1ODg5
ZWRiZC4uOGUwM2EzNTgyZTg3ODRhZTE5OWFiNTA4NTQ2MDM5OTM0YzMzYTFmOSAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0a191bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CkBAIC02OSw3ICs2OSwxMCBA
QCBjbGFzcyBHdGtQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgZGVm
IHRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYu
bWFrZV9wb3J0KCkKICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91
bGRfbG9nPVRydWUpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBydW5fY29tbWFuZDog
WydUb29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlcicsICctLXJlbGVhc2UnLCAnLS1ndGsnLCAn
ZmlsZTovL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIKKyAgICAgICAgcG9ydC5f
ZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lzdGVtKHsKKyAgICAgICAgICAgICIvbW9jay1idWlsZC9i
aW4vTWluaUJyb3dzZXIiOiAiIgorICAgICAgICB9KQorICAgICAgICBleHBlY3RlZF9sb2dzID0g
Ik1PQ0sgcnVuX2NvbW1hbmQ6IFsnL21vY2stYnVpbGQvYmluL01pbmlCcm93c2VyJywgJ2ZpbGU6
Ly90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4iCiAgICAgICAgIE91dHB1dENhcHR1
cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBwb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUsIFsi
dGVzdC5odG1sIl0sIGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKIAogICAgIGRlZiB0ZXN0
X2RlZmF1bHRfdGltZW91dF9tcyhzZWxmKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC93cGUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5Cmlu
ZGV4IGE0NTczMGY2YjQ1NmMzMjBhMzI3NTRmNzAzZDcyYzc2OWUxMDhjNWUuLmQ5NzQ1MjEzYzlj
NWFiMDkyZTZhYWM5YmZjOTM2NTMwMGMyZWQ2NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93cGUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dw
ZS5weQpAQCAtOTMsNyArOTMsNyBAQCBjbGFzcyBXUEVQb3J0KFBvcnQpOgogICAgICAgICByZXR1
cm4gZW52aXJvbm1lbnQKIAogICAgIGRlZiBzaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYsIHJl
c3VsdHNfZmlsZW5hbWUpOgotICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJydW4tbWluaWJyb3dz
ZXIiLCBbcGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLmhvc3QucGxhdGZvcm0sIHJlc3VsdHNfZmls
ZW5hbWUpXSkKKyAgICAgICAgc2VsZi5ydW5fbWluaWJyb3dzZXIoW3BhdGguYWJzcGF0aF90b191
cmkoc2VsZi5ob3N0LnBsYXRmb3JtLCByZXN1bHRzX2ZpbGVuYW1lKV0pCiAKICAgICBkZWYgY2hl
Y2tfc3lzX2RlcHMoc2VsZik6CiAgICAgICAgIHJldHVybiBzdXBlcihXUEVQb3J0LCBzZWxmKS5j
aGVja19zeXNfZGVwcygpIGFuZCBzZWxmLl9kcml2ZXJfY2xhc3MoKS5jaGVja19kcml2ZXIoc2Vs
ZikKQEAgLTEzNCwzICsxMzQsMTMgQEAgY2xhc3MgV1BFUG9ydChQb3J0KToKICAgICAgICAgY29u
ZmlndXJhdGlvbiA9IHN1cGVyKFdQRVBvcnQsIHNlbGYpLmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZChob3N0PWhvc3QpCiAgICAgICAgIGNvbmZpZ3VyYXRpb25bJ3BsYXRmb3JtJ10gPSAnV1BFJwog
ICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgorCisgICAgZGVmIHJ1bl9taW5pYnJvd3Nlcihz
ZWxmLCBhcmdzKToKKyAgICAgICAgbWluaUJyb3dzZXIgPSBzZWxmLl9idWlsZF9wYXRoKCdiaW4n
LCAnTWluaUJyb3dzZXInKQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2ZpbGUo
bWluaUJyb3dzZXIpOgorICAgICAgICAgICAgcHJpbnQoIiVzIG5vdCBmb3VuZC4uLiBEaWQgeW91
IHJ1biBidWlsZC13ZWJraXQ/IiAlIG1pbmlCcm93c2VyKQorICAgICAgICAgICAgcmV0dXJuIDEK
KyAgICAgICAgY29tbWFuZCA9IFttaW5pQnJvd3NlciwgXQorICAgICAgICBpZiBzZWxmLl9zaG91
bGRfdXNlX2poYnVpbGQoKToKKyAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLl9qaGJ1aWxkX3dy
YXBwZXIgKyBjb21tYW5kCisgICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1h
bmQoY29tbWFuZCArIGFyZ3MsIGN3ZD1zZWxmLndlYmtpdF9iYXNlKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402417</attachid>
            <date>2020-06-21 04:31:52 -0700</date>
            <delta_ts>2020-06-22 08:02:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213431-20200621133150.patch</filename>
            <type>text/plain</type>
            <size>18075</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzI2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTUyYzAyMzVmM2JjMzNmZjc3YzI2NDEzMTAzOGQ5ZTAy
M2M1ZGIyMS4uMWNlYTc4NGUwYzI0ODA3MzQ4MDZiMDhkYjE5OWYxODNiOTNhNjYxMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA2LTIxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBNaWdyYXRlIHJ1bi1taW5pYnJvd3NlciB0byB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBlcmwgdmVyc2lvbiB3
YXMgcmVuYW1lZCB0byBvbGQtcnVuLW1pbmlicm93c2VyIGFuZCByZW1haW5zIHVzZWQgYnkgdGhl
IE1hYyBwb3J0cy4KKyAgICAgICAgcnVuLW1pbmlicm93c2VyIGlzIG5vdyBhIFB5dGhvbiBzY3Jp
cHQgaG9va2luZyBpbnRvIHdlYmtpdHB5IGFuZCB0aGUgUG9ydCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgQm90aCBXUEUgYW5kIEdUSyBwb3J0cyB3aWxsIG5vdyB1c2UgdGhlIHB1cmUgcHl0aG9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2Vy
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3Nlci4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1taW5pYnJvd3NlcjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L21pbmli
cm93c2VyL3J1bl9taW5pYnJvd3Nlci5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXJfYXJndW1lbnRzKToKKyAgICAgICAgKFBv
cnQpOgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9kYXJ3aW4ucHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LmVudmlyb25tZW50
X2Zvcl9hcGlfdGVzdHMpOgorICAgICAgICAoRGFyd2luUG9ydCk6CisgICAgICAgIChEYXJ3aW5Q
b3J0LnJ1bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUp
OgorICAgICAgICAoR3RrUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQpOgorICAgICAgICAo
R3RrUG9ydCk6CisgICAgICAgIChHdGtQb3J0LnJ1bl9taW5pYnJvd3Nlcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuc2hvd19yZXN1
bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChXUEVQb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZCk6CisgICAgICAgIChXUEVQb3J0KToKKyAgICAgICAgKFdQRVBvcnQucnVuX21pbmlicm93c2Vy
KToKKwogMjAyMC0wNi0yMCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OKHIyNTkyMTkpOiBTbGVlcCBhc3NlcnRpb24gcmVtYWlucyBhY3RpdmUg
aWYgV0tXZWJWaWV3IGlzIGNsb3NlZCBvciBXZWJDb250ZW50IHByb2Nlc3MgY3Jhc2hlcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2VyIGIvVG9vbHMvU2NyaXB0
cy9vbGQtcnVuLW1pbmlicm93c2VyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZWFkZDI2YWQ0MzUzNDU5YjM5ODBk
Mzk2ODI4ZTA2ZWFkMTUyNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL29sZC1y
dW4tbWluaWJyb3dzZXIKQEAgLTAsMCArMSw0NyBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisj
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcywg
SW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+CisKKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFNpbXBsaWZp
ZWQgInJ1biIgc2NyaXB0IGZvciBsYXVuY2hpbmcgdGhlIFdlYktpdDIgTWluaUJyb3dzZXIuCisK
K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgRmluZEJpbjsKK3VzZSBsaWIgJEZpbmRC
aW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitwcm9oaWJpdFVua25vd25Qb3J0KCk7CitzZXRD
b25maWd1cmF0aW9uKCk7CisKK2lmIChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgeworICAgIHByaW50
SGVscEFuZEV4aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVkKCk7CisgICAgZXhpdCBl
eGl0U3RhdHVzKHJ1bk1pbmlCcm93c2VyKCkpOworfSBlbHNlIHsKKyAgICBkaWUgIlVuc3VwcG9y
dGVkIHBsYXRmb3JtLiIKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLW1pbmlicm93
c2VyIGIvVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIKaW5kZXggOTBjZDNmYWY0MzFhZWI5
MjhkZmQ2ZGRmZDZlZDZkMjNkMmYyMWNjYy4uODU2YjA3NGE3MDM2ZjZlNDBmOGMyYjYxY2Q3ZTM1
ZGYyOTI2YzNkOCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIKKysr
IGIvVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIKQEAgLTEsNjQgKzEsMzEgQEAKLSMhL3Vz
ci9iaW4vZW52IHBlcmwKLQotIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBD
b21wdXRpbmcgU2VydmljZXMsIEluYy4gIDxpbmZvQHN0YWlrb3MubmV0PgotCisjIS91c3IvYmlu
L2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBTLkwuCiAjCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJz
aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KICMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uIAorIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLSMgU2ltcGxpZmllZCAicnVuIiBzY3JpcHQgZm9yIGxhdW5jaGluZyB0aGUgV2Vi
S2l0MiBNaW5pQnJvd3Nlci4KLQotdXNlIHN0cmljdDsKLXVzZSB3YXJuaW5nczsKLXVzZSBGaWxl
OjpTcGVjOjpGdW5jdGlvbnMgcXcvY2F0ZGlyLzsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiAkRmlu
ZEJpbjo6QmluOwotdXNlIHdlYmtpdGRpcnM7Ci0KLW15ICRsYXVuY2hlck5hbWU7Ci1teSAkbGF1
bmNoZXJQYXRoOwotbXkgQGpoYnVpbGRXcmFwcGVyOworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisjIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorIyBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIAotcHJvaGliaXRVbmtub3duUG9ydCgpOwotc2V0Q29u
ZmlndXJhdGlvbigpOworIiIiV3JhcHBlciBhcm91bmQgd2Via2l0cHkvbWluaWJyb3dzZXIvcnVu
X21pbmlicm93c2VyLnB5IiIiCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIAotaWYgKGlzR3RrKCkg
fHwgaXNXUEUoKSkgewotICAgIG15IEBjb21tYW5kID0gKEZpbGU6OlNwZWMtPmNhdGZpbGUoc291
cmNlRGlyKCksICJUb29scyIsICJTY3JpcHRzIiwgInJ1bi1taW5pYnJvd3NlciIpKTsKLSAgICBy
dW5JbkZsYXRwYWtJZkF2YWlsYWJsZShAY29tbWFuZCk7Citmcm9tIHdlYmtpdHB5LmNvbW1vbiBp
bXBvcnQgbXVsdGlwcm9jZXNzaW5nX2Jvb3RzdHJhcAogCi0gICAgIyBDaGVjayB0byBzZWUgdGhh
dCBhbGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0LgotICAgIGNoZWNrRnJhbWV3b3JrcygpOwor
dG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpKQoraWYgc3lzLnBsYXRmb3JtLnN0YXJ0
c3dpdGgoJ2xpbnV4Jyk6CisgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbih0b3Bf
bGV2ZWxfZGlyZWN0b3J5LCAnVG9vbHMnLCAnZmxhdHBhaycpKQorICAgIGltcG9ydCBmbGF0cGFr
dXRpbHMKKyAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hfaWZfYXZhaWxhYmxlKHN5cy5h
cmd2KQogCi0gICAgJGxhdW5jaGVyUGF0aCA9IGNhdGRpcihwcm9kdWN0RGlyKCksICJiaW4iLCAi
TWluaUJyb3dzZXIiKTsKLSAgICBkaWUgIkNhbid0IGZpbmQgJGxhdW5jaGVyUGF0aCIgdW5sZXNz
IC14ICRsYXVuY2hlclBhdGg7Ci0gICAgQGpoYnVpbGRXcmFwcGVyID0gd3JhcHBlclByZWZpeElm
TmVlZGVkKCk7Ci0gICAgcHJpbnQgIlN0YXJ0aW5nIE1pbmlCcm93c2VyLlxuIjsKLSAgICBleGVj
IEBqaGJ1aWxkV3JhcHBlciwgJGxhdW5jaGVyUGF0aCwgQEFSR1Ygb3IgZGllOwotfSBlbHNpZiAo
aXNBcHBsZUNvY29hV2ViS2l0KCkpIHsKLSAgICBwcmludEhlbHBBbmRFeGl0Rm9yUnVuQW5kRGVi
dWdXZWJLaXRBcHBJZk5lZWRlZCgpOwotICAgIGV4aXQgZXhpdFN0YXR1cyhydW5NaW5pQnJvd3Nl
cigpKTsKLX0gZWxzZSB7Ci0gICAgZGllICJVbnN1cHBvcnRlZCBwbGF0Zm9ybS4iCi19CittdWx0
aXByb2Nlc3NpbmdfYm9vdHN0cmFwLnJ1bignd2Via2l0cHknLCAnbWluaWJyb3dzZXInLCAncnVu
X21pbmlicm93c2VyLnB5JykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbWlu
aWJyb3dzZXIvcnVuX21pbmlicm93c2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9taW5p
YnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAzODY5ZTdiNGVhNThhMzI2
N2U0NDU1YzljMDIwZDBmOTQ1MTk0NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbWluaWJyb3dzZXIvcnVuX21pbmlicm93c2VyLnB5CkBAIC0wLDAgKzEsNjUgQEAK
KyMgcHlsaW50OiBkaXNhYmxlPUUxMTAzCisjIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5M
LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0g
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt
OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBhcmdw
YXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKK2Zyb20gd2Via2l0cHkucG9ydCBpbXBvcnQg
Y29uZmlndXJhdGlvbl9vcHRpb25zLCBwbGF0Zm9ybV9vcHRpb25zLCBmYWN0b3J5CisKKworZGVm
IG1haW4oYXJndik6CisgICAgb3B0aW9uX3BhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2Vy
KHByb2c9InJ1bi1taW5pYnJvd3NlciIsIHVzYWdlPSIlKHByb2cpcyBbb3B0aW9uc10gW3VybF0i
LCBhZGRfaGVscD1GYWxzZSkKKyAgICBncm91cHMgPSBbKCJQbGF0Zm9ybSBvcHRpb25zIiwgcGxh
dGZvcm1fb3B0aW9ucygpKSwgKCJDb25maWd1cmF0aW9uIG9wdGlvbnMiLCBjb25maWd1cmF0aW9u
X29wdGlvbnMoKSldCisKKyAgICAjIENvbnZlcnQgb3B0aW9ucyB0byBhcmdwYXJzZSwgc28gdGhh
dCB3ZSBjYW4gdXNlIHBhcnNlX2tub3duX2FyZ3MoKSB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGlu
IG9wdHBhcnNlLgorICAgIGZvciBncm91cF9uYW1lLCBncm91cF9vcHRpb25zIGluIGdyb3VwczoK
KyAgICAgICAgb3B0aW9uX2dyb3VwID0gb3B0aW9uX3BhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAo
Z3JvdXBfbmFtZSkKKworICAgICAgICBmb3Igb3B0aW9uIGluIGdyb3VwX29wdGlvbnM6CisgICAg
ICAgICAgICAjIFNraXAgZGVwcmVjYXRlZCBvcHRpb24KKyAgICAgICAgICAgIGlmIG9wdGlvbi5k
ZXN0ID09ICJjb25maWd1cmF0aW9uIjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgZGVmYXVsdCA9IE5vbmUKKyAgICAgICAgICAgIGlmIG9wdGlvbi5kZWZhdWx0ICE9ICgi
Tk8iLCAiREVGQVVMVCIpOgorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBvcHRpb24uZGVmYXVs
dAorICAgICAgICAgICAgb3B0aW9uX2dyb3VwLmFkZF9hcmd1bWVudChvcHRpb24uZ2V0X29wdF9z
dHJpbmcoKSwgYWN0aW9uPW9wdGlvbi5hY3Rpb24sIGRlc3Q9b3B0aW9uLmRlc3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9b3B0aW9uLmhlbHAsIGNvbnN0PW9w
dGlvbi5jb25zdCwgZGVmYXVsdD1kZWZhdWx0KQorCisgICAgb3B0aW9ucywgYXJncyA9IG9wdGlv
bl9wYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmd2KQorCisgICAgaWYgc2V0KGFyZ3MpLmlzc3Vi
c2V0KFsiLWgiLCAiLS1oZWxwIl0pIGFuZCBzeXMucGxhdGZvcm0gIT0gImRhcndpbiIgYW5kIG5v
dCBvcHRpb25zLnBsYXRmb3JtOgorICAgICAgICBvcHRpb25fcGFyc2VyLnByaW50X2hlbHAoKQor
ICAgICAgICBwcmludCgiXG5UbyBzZWUgdGhlIGF2YWlsYWJsZSBvcHRpb25zIG9uIGEgc3BlY2lm
aWMgcGxhdGZvcm0sIHN1cHBseSBpdCBvbiB0aGUgY29tbWFuZC1saW5lLCBmb3IgZXhhbXBsZSAt
LWd0ayAtLWhlbHAiKQorICAgICAgICByZXR1cm4gMAorCisgICAgdHJ5OgorICAgICAgICBwb3J0
ID0gZmFjdG9yeS5Qb3J0RmFjdG9yeShIb3N0KCkpLmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRp
b25zPW9wdGlvbnMpCisgICAgICAgIHJldHVybiBwb3J0LnJ1bl9taW5pYnJvd3NlcihhcmdzKQor
ICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZSwg
RXhjZXB0aW9uKToKKyAgICAgICAgICAgIHByaW50KCdcbiVzIHJhaXNlZDogJXMnICUgKGUuX19j
bGFzc19fLl9fbmFtZV9fLCBzdHIoZSkpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICB0
cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgcmV0dXJuIDEKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3Zb
MTpdKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggMTA5YmJlNzRjODEzYzcw
YTkyY2JkNDNlNTlkYzhhZGFjZmVmNWJjNi4uZjJiODM3ODlmMjMwNTIyZGE0YjAzMDFkNzVmNmEx
Y2QzYTZmMjMxMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2Uu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAgLTMwLDEyICsz
MCwxNCBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBvZiBQb3J0LXNwZWNpZmljIGVudHJ5IHBv
aW50cyBmb3IgdGhlIGxheW91dCB0ZXN0cwogdGVzdCBpbmZyYXN0cnVjdHVyZSAodGhlIFBvcnQg
YW5kIERyaXZlciBjbGFzc2VzKS4iIiIKIAoraW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgZGlmZmxp
YgogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBvcHRwYXJz
ZQogaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogCiBmcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdApAQCAtNzk4LDcgKzgwMCwxMiBAQCBjbGFzcyBQb3J0
KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmdldF9vcHRpb24obmFtZSkgPT0gdmFsdWUK
IAogICAgIGRlZiBzZXRfb3B0aW9uX2RlZmF1bHQoc2VsZiwgbmFtZSwgZGVmYXVsdF92YWx1ZSk6
Ci0gICAgICAgIHJldHVybiBzZWxmLl9vcHRpb25zLmVuc3VyZV92YWx1ZShuYW1lLCBkZWZhdWx0
X3ZhbHVlKQorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuX29wdGlvbnMsIGFyZ3BhcnNlLk5h
bWVzcGFjZSk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLl9vcHRpb25zLCBuYW1l
KToKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYuX29wdGlvbnMsIG5hbWUsIGRlZmF1bHRf
dmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9vcHRpb25zLmVuc3VyZV92YWx1ZShuYW1lLCBkZWZhdWx0X3Zh
bHVlKQogCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIHBhdGhfdG9fZ2VuZXJpY190ZXN0X2V4cGVj
dGF0aW9uc19maWxlKHNlbGYpOgpAQCAtMTM3MCw2ICsxMzc3LDEyIEBAIGNsYXNzIFBvcnQob2Jq
ZWN0KToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBkZWZhdWx0IElt
YWdlRGlmZiBiaW5hcnksIG9yIE5vbmUgaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4iIiIKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ0ltYWdlRGlmZicpCiAKKyAgICBkZWYgcnVuX21p
bmlicm93c2VyKHNlbGYsIGFyZ3MpOgorICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQgPSBbc2Vs
Zi5wYXRoX3RvX3NjcmlwdCgib2xkLXJ1bi1taW5pYnJvd3NlciIpXQorICAgICAgICBydW5fc2Ny
aXB0X2NvbW1hbmQuZXh0ZW5kKHNlbGYuX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbigpKQor
ICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKGFyZ3MpCisgICAgICAgIHJldHVybiBz
dWJwcm9jZXNzLmNhbGwocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi53ZWJraXRfYmFzZSgp
KQorCiAgICAgQG1lbW9pemVkCiAgICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byB0aGUgaW1hZ2VfZGlmZiBiaW5hcnks
IG9yIE5vbmUgaWYgaXQgaXMgbm90IGF2YWlsYWJsZS4KQEAgLTE0ODEsMTMgKzE0OTQsMTMgQEAg
Y2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAgICAgY29uZmlnX2FyZ3MuYXBwZW5kKHBvcnRf
ZmxhZykKICAgICAgICAgcmV0dXJuIGNvbmZpZ19hcmdzCiAKLSAgICBkZWYgX3J1bl9zY3JpcHQo
c2VsZiwgc2NyaXB0X25hbWUsIGFyZ3M9Tm9uZSwgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3Vt
ZW50cz1UcnVlLCBkZWNvZGVfb3V0cHV0PVRydWUsIGVudj1Ob25lKToKKyAgICBkZWYgX3J1bl9z
Y3JpcHQoc2VsZiwgc2NyaXB0X25hbWUsIGFyZ3M9Tm9uZSwgaW5jbHVkZV9jb25maWd1cmF0aW9u
X2FyZ3VtZW50cz1UcnVlLCBkZWNvZGVfb3V0cHV0PVRydWUsIGVudj1Ob25lLCByZXR1cm5fZXhp
dF9jb2RlPUZhbHNlKToKICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kID0gW3NlbGYucGF0aF90
b19zY3JpcHQoc2NyaXB0X25hbWUpXQogICAgICAgICBpZiBpbmNsdWRlX2NvbmZpZ3VyYXRpb25f
YXJndW1lbnRzOgogICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4dGVuZChzZWxmLl9h
cmd1bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24oKSkKICAgICAgICAgaWYgYXJnczoKICAgICAgICAg
ICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoYXJncykKLSAgICAgICAgb3V0cHV0ID0gc2Vs
Zi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYud2Vi
a2l0X2Jhc2UoKSwgZGVjb2RlX291dHB1dD1kZWNvZGVfb3V0cHV0LCBlbnY9ZW52KQorICAgICAg
ICBvdXRwdXQgPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQocnVuX3NjcmlwdF9jb21tYW5k
LCBjd2Q9c2VsZi53ZWJraXRfYmFzZSgpLCBkZWNvZGVfb3V0cHV0PWRlY29kZV9vdXRwdXQsIGVu
dj1lbnYsIHJldHVybl9leGl0X2NvZGU9cmV0dXJuX2V4aXRfY29kZSkKICAgICAgICAgX2xvZy5k
ZWJ1ZygnT3V0cHV0IG9mICVzOlxuJXMnICUgKHJ1bl9zY3JpcHRfY29tbWFuZCwgZW5jb2RlX2Zv
cihvdXRwdXQsIHN0cikgaWYgZGVjb2RlX291dHB1dCBlbHNlIG91dHB1dCkpCiAgICAgICAgIHJl
dHVybiBvdXRwdXQKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0
ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkKaW5kZXggMDQ5MzU3Y2Vi
MTFjNzNhY2UxZGM4Zjc2ZDg0MWQ1M2Y4YTc2YWNlMS4uZDk0NWEwNDE3ZTAxMzg0NzI0OGI4OGZi
YTUwOWZkZTJjMzZmNzZhZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2d0ay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5CkBAIC0yMzEs
NyArMjMxLDcgQEAgY2xhc3MgR3RrUG9ydChQb3J0KToKICAgICAgICAgc2VsZi5fbGVha2RldGVj
dG9yLnBhcnNlX2FuZF9wcmludF9sZWFrc19kZXRhaWwobGVha3NfZmlsZXMpCiAKICAgICBkZWYg
c2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToKLSAgICAgICAg
c2VsZi5fcnVuX3NjcmlwdCgicnVuLW1pbmlicm93c2VyIiwgW3BhdGguYWJzcGF0aF90b191cmko
c2VsZi5ob3N0LnBsYXRmb3JtLCByZXN1bHRzX2ZpbGVuYW1lKV0pCisgICAgICAgIHNlbGYucnVu
X21pbmlicm93c2VyKFtwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0Zm9ybSwgcmVz
dWx0c19maWxlbmFtZSldKQogCiAgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc3VwZXIoR3RrUG9ydCwgc2VsZikuY2hlY2tfc3lzX2RlcHMoKSBhbmQgc2VsZi5f
ZHJpdmVyX2NsYXNzKCkuY2hlY2tfZHJpdmVyKHNlbGYpCkBAIC0yNjAsMyArMjYwLDEzIEBAIGNs
YXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgIGNvbmZpZ3VyYXRpb25bJ3BsYXRmb3JtJ10gPSAn
R1RLJwogICAgICAgICBjb25maWd1cmF0aW9uWyd2ZXJzaW9uX25hbWUnXSA9IHNlbGYuX2Rpc3Bs
YXlfc2VydmVyLmNhcGl0YWxpemUoKSBpZiBzZWxmLl9kaXNwbGF5X3NlcnZlciBlbHNlICdYdmZi
JwogICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgorCisgICAgZGVmIHJ1bl9taW5pYnJvd3Nl
cihzZWxmLCBhcmdzKToKKyAgICAgICAgbWluaUJyb3dzZXIgPSBzZWxmLl9idWlsZF9wYXRoKCdi
aW4nLCAnTWluaUJyb3dzZXInKQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5pc2Zp
bGUobWluaUJyb3dzZXIpOgorICAgICAgICAgICAgcHJpbnQoIiVzIG5vdCBmb3VuZC4uLiBEaWQg
eW91IHJ1biBidWlsZC13ZWJraXQ/IiAlIG1pbmlCcm93c2VyKQorICAgICAgICAgICAgcmV0dXJu
IDEKKyAgICAgICAgY29tbWFuZCA9IFttaW5pQnJvd3NlciwgXQorICAgICAgICBpZiBzZWxmLl9z
aG91bGRfdXNlX2poYnVpbGQoKToKKyAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxmLl9qaGJ1aWxk
X3dyYXBwZXIgKyBjb21tYW5kCisgICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2Nv
bW1hbmQoY29tbWFuZCArIGFyZ3MsIGN3ZD1zZWxmLndlYmtpdF9iYXNlKCkpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2d0a191bml0dGVzdC5weQppbmRleCAwMWFjYWQ5ZmM5ZjY0YWFj
OGQ5MWMzNDc3MThjYmEzZTU4ODllZGJkLi44ZTAzYTM1ODJlODc4NGFlMTk5YWI1MDg1NDYwMzk5
MzRjMzNhMWY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3Vu
aXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3Qu
cHkKQEAgLTY5LDcgKzY5LDEwIEBAIGNsYXNzIEd0a1BvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9y
dFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYpOgog
ICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBwb3J0Ll9leGVjdXRpdmUg
PSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKLSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9
ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLW1pbmlicm93c2VyJywgJy0t
cmVsZWFzZScsICctLWd0aycsICdmaWxlOi8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291
dFxuIgorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeworICAgICAg
ICAgICAgIi9tb2NrLWJ1aWxkL2Jpbi9NaW5pQnJvd3NlciI6ICIiCisgICAgICAgIH0pCisgICAg
ICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBydW5fY29tbWFuZDogWycvbW9jay1idWlsZC9iaW4v
TWluaUJyb3dzZXInLCAnZmlsZTovL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIK
ICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2hvd19y
ZXN1bHRzX2h0bWxfZmlsZSwgWyJ0ZXN0Lmh0bWwiXSwgZXhwZWN0ZWRfbG9ncz1leHBlY3RlZF9s
b2dzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF90aW1lb3V0X21zKHNlbGYpOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC93cGUucHkKaW5kZXggYTQ1NzMwZjZiNDU2YzMyMGEzMjc1NGY3MDNkNzJjNzY5
ZTEwOGM1ZS4uZDk3NDUyMTNjOWM1YWIwOTJlNmFhYzliZmM5MzY1MzAwYzJlZDY3OSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNzIFdQRVBvcnQo
UG9ydCk6CiAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudAogCiAgICAgZGVmIHNob3dfcmVzdWx0
c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6Ci0gICAgICAgIHNlbGYuX3J1bl9z
Y3JpcHQoInJ1bi1taW5pYnJvd3NlciIsIFtwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuaG9zdC5w
bGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQorICAgICAgICBzZWxmLnJ1bl9taW5pYnJvd3Nl
cihbcGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLmhvc3QucGxhdGZvcm0sIHJlc3VsdHNfZmlsZW5h
bWUpXSkKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHN1
cGVyKFdQRVBvcnQsIHNlbGYpLmNoZWNrX3N5c19kZXBzKCkgYW5kIHNlbGYuX2RyaXZlcl9jbGFz
cygpLmNoZWNrX2RyaXZlcihzZWxmKQpAQCAtMTM0LDMgKzEzNCwxMyBAQCBjbGFzcyBXUEVQb3J0
KFBvcnQpOgogICAgICAgICBjb25maWd1cmF0aW9uID0gc3VwZXIoV1BFUG9ydCwgc2VsZikuY29u
ZmlndXJhdGlvbl9mb3JfdXBsb2FkKGhvc3Q9aG9zdCkKICAgICAgICAgY29uZmlndXJhdGlvblsn
cGxhdGZvcm0nXSA9ICdXUEUnCiAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uCisKKyAgICBk
ZWYgcnVuX21pbmlicm93c2VyKHNlbGYsIGFyZ3MpOgorICAgICAgICBtaW5pQnJvd3NlciA9IHNl
bGYuX2J1aWxkX3BhdGgoJ2JpbicsICdNaW5pQnJvd3NlcicpCisgICAgICAgIGlmIG5vdCBzZWxm
Ll9maWxlc3lzdGVtLmlzZmlsZShtaW5pQnJvd3Nlcik6CisgICAgICAgICAgICBwcmludCgiJXMg
bm90IGZvdW5kLi4uIERpZCB5b3UgcnVuIGJ1aWxkLXdlYmtpdD8iICUgbWluaUJyb3dzZXIpCisg
ICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBjb21tYW5kID0gW21pbmlCcm93c2VyLCBdCisg
ICAgICAgIGlmIHNlbGYuX3Nob3VsZF91c2VfamhidWlsZCgpOgorICAgICAgICAgICAgY29tbWFu
ZCA9IHNlbGYuX2poYnVpbGRfd3JhcHBlciArIGNvbW1hbmQKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChjb21tYW5kICsgYXJncywgY3dkPXNlbGYud2Via2l0X2Jh
c2UoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402472</attachid>
            <date>2020-06-22 08:02:17 -0700</date>
            <delta_ts>2020-06-27 09:35:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213431-20200622080216.patch</filename>
            <type>text/plain</type>
            <size>17001</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMzQ3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzhlNTVmNWNiOTVmM2JiOGI2NTk4YWQ1NGI4YjE5NDBl
MWQwODA3NC4uZmYzNDM1NjIzNmFlOGRiMTMwNmVhYjQzNjNkNDdjOTc0ZTAwMTU5ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA2LTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBNaWdyYXRlIHJ1bi1taW5pYnJvd3NlciB0byB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBlcmwgdmVyc2lvbiB3
YXMgcmVuYW1lZCB0byBvbGQtcnVuLW1pbmlicm93c2VyIGFuZCByZW1haW5zIHVzZWQgYnkgdGhl
IE1hYyBwb3J0cy4KKyAgICAgICAgcnVuLW1pbmlicm93c2VyIGlzIG5vdyBhIFB5dGhvbiBzY3Jp
cHQgaG9va2luZyBpbnRvIHdlYmtpdHB5IGFuZCB0aGUgUG9ydCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgQm90aCBXUEUgYW5kIEdUSyBwb3J0cyB3aWxsIG5vdyB1c2UgdGhlIHB1cmUgcHl0aG9u
IGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2Vy
OiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3Nlci4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1taW5pYnJvd3NlcjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L21pbmli
cm93c2VyL3J1bl9taW5pYnJvd3Nlci5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKHBhcnNlX2FyZ3MpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
OgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXJfYXJndW1lbnRzKToKKyAgICAgICAgKFBv
cnQpOgorICAgICAgICAoUG9ydC5ydW5fbWluaWJyb3dzZXIpOgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvcG9ydC9kYXJ3aW4ucHk6CisgICAgICAgIChEYXJ3aW5Qb3J0LmVudmlyb25tZW50
X2Zvcl9hcGlfdGVzdHMpOgorICAgICAgICAoRGFyd2luUG9ydCk6CisgICAgICAgIChEYXJ3aW5Q
b3J0LnJ1bl9taW5pYnJvd3Nlcl9hcmd1bWVudHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtQb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUp
OgorICAgICAgICAoR3RrUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQpOgorICAgICAgICAo
R3RrUG9ydCk6CisgICAgICAgIChHdGtQb3J0LnJ1bl9taW5pYnJvd3Nlcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weToKKyAgICAgICAgKFdQRVBvcnQuc2hvd19yZXN1
bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChXUEVQb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZCk6CisgICAgICAgIChXUEVQb3J0KToKKyAgICAgICAgKFdQRVBvcnQucnVuX21pbmlicm93c2Vy
KToKKwogMjAyMC0wNi0yMiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2V3c10gU3dpdGNoIGNvbnRyaWJ1dG9ycy5qc29uIHVybCBmcm9tIHRyYWMgdG8g
c3ZuIHNlcnZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2Vy
IGIvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2VyCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5ZWFkZDI2
YWQ0MzUzNDU5YjM5ODBkMzk2ODI4ZTA2ZWFkMTUyNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL29sZC1ydW4tbWluaWJyb3dzZXIKQEAgLTAsMCArMSw0NyBAQAorIyEvdXNyL2Jp
bi9lbnYgcGVybAorCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNywgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1
dGluZyBTZXJ2aWNlcywgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+CisKKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisjIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisj
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisj
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjIFNpbXBsaWZpZWQgInJ1biIgc2NyaXB0IGZvciBsYXVuY2hpbmcgdGhlIFdlYktpdDIg
TWluaUJyb3dzZXIuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgRmluZEJpbjsK
K3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitwcm9oaWJpdFVua25v
d25Qb3J0KCk7CitzZXRDb25maWd1cmF0aW9uKCk7CisKK2lmIChpc0FwcGxlQ29jb2FXZWJLaXQo
KSkgeworICAgIHByaW50SGVscEFuZEV4aXRGb3JSdW5BbmREZWJ1Z1dlYktpdEFwcElmTmVlZGVk
KCk7CisgICAgZXhpdCBleGl0U3RhdHVzKHJ1bk1pbmlCcm93c2VyKCkpOworfSBlbHNlIHsKKyAg
ICBkaWUgIlVuc3VwcG9ydGVkIHBsYXRmb3JtLiIKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvcnVuLW1pbmlicm93c2VyIGIvVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIKaW5kZXgg
OTBjZDNmYWY0MzFhZWI5MjhkZmQ2ZGRmZDZlZDZkMjNkMmYyMWNjYy4uNTlmNTRmMDUwZTAyM2Iz
ZDMzNzEyOWQ3ZGZmMGVmZGI0N2Q1OGQyOSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4t
bWluaWJyb3dzZXIKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIKQEAgLTEsNjQg
KzEsMzAgQEAKLSMhL3Vzci9iaW4vZW52IHBlcmwKLQotIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIw
MDcsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMp
IDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMsIEluYy4gIDxpbmZvQHN0YWlrb3MubmV0
PgotCisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDIwIElnYWxpYSBT
LkwuCiAjCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKKyMgVGhpcyBwcm9n
cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIyB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KICMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotIyAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0j
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSMgU2ltcGxpZmllZCAicnVuIiBzY3JpcHQgZm9yIGxh
dW5jaGluZyB0aGUgV2ViS2l0MiBNaW5pQnJvd3Nlci4KLQotdXNlIHN0cmljdDsKLXVzZSB3YXJu
aW5nczsKLXVzZSBGaWxlOjpTcGVjOjpGdW5jdGlvbnMgcXcvY2F0ZGlyLzsKLXVzZSBGaW5kQmlu
OwotdXNlIGxpYiAkRmluZEJpbjo6QmluOwotdXNlIHdlYmtpdGRpcnM7Ci0KLW15ICRsYXVuY2hl
ck5hbWU7Ci1teSAkbGF1bmNoZXJQYXRoOwotbXkgQGpoYnVpbGRXcmFwcGVyOwotCi1wcm9oaWJp
dFVua25vd25Qb3J0KCk7Ci1zZXRDb25maWd1cmF0aW9uKCk7Ci0KLWlmIChpc0d0aygpIHx8IGlz
V1BFKCkpIHsKLSAgICBteSBAY29tbWFuZCA9IChGaWxlOjpTcGVjLT5jYXRmaWxlKHNvdXJjZURp
cigpLCAiVG9vbHMiLCAiU2NyaXB0cyIsICJydW4tbWluaWJyb3dzZXIiKSk7Ci0gICAgcnVuSW5G
bGF0cGFrSWZBdmFpbGFibGUoQGNvbW1hbmQpOwotCi0gICAgIyBDaGVjayB0byBzZWUgdGhhdCBh
bGwgdGhlIGZyYW1ld29ya3MgYXJlIGJ1aWx0LgotICAgIGNoZWNrRnJhbWV3b3JrcygpOwotCi0g
ICAgJGxhdW5jaGVyUGF0aCA9IGNhdGRpcihwcm9kdWN0RGlyKCksICJiaW4iLCAiTWluaUJyb3dz
ZXIiKTsKLSAgICBkaWUgIkNhbid0IGZpbmQgJGxhdW5jaGVyUGF0aCIgdW5sZXNzIC14ICRsYXVu
Y2hlclBhdGg7Ci0gICAgQGpoYnVpbGRXcmFwcGVyID0gd3JhcHBlclByZWZpeElmTmVlZGVkKCk7
Ci0gICAgcHJpbnQgIlN0YXJ0aW5nIE1pbmlCcm93c2VyLlxuIjsKLSAgICBleGVjIEBqaGJ1aWxk
V3JhcHBlciwgJGxhdW5jaGVyUGF0aCwgQEFSR1Ygb3IgZGllOwotfSBlbHNpZiAoaXNBcHBsZUNv
Y29hV2ViS2l0KCkpIHsKLSAgICBwcmludEhlbHBBbmRFeGl0Rm9yUnVuQW5kRGVidWdXZWJLaXRB
cHBJZk5lZWRlZCgpOwotICAgIGV4aXQgZXhpdFN0YXR1cyhydW5NaW5pQnJvd3NlcigpKTsKLX0g
ZWxzZSB7Ci0gICAgZGllICJVbnN1cHBvcnRlZCBwbGF0Zm9ybS4iCi19CisjIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyMg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxv
b3IsCisjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorCisiIiJXcmFwcGVyIGFyb3VuZCB3
ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fd2Via2l0X2FwcC5weSIiIgoraW1wb3J0IG9zCitpbXBv
cnQgc3lzCitmcm9tIHdlYmtpdHB5Lm1pbmlicm93c2VyIGltcG9ydCBydW5fd2Via2l0X2FwcAor
Cit0b3BfbGV2ZWxfZGlyZWN0b3J5ID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJy4uJykpCitpZiBzeXMucGxhdGZvcm0uc3Rh
cnRzd2l0aCgnbGludXgnKToKKyAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKHRv
cF9sZXZlbF9kaXJlY3RvcnksICdUb29scycsICdmbGF0cGFrJykpCisgICAgaW1wb3J0IGZsYXRw
YWt1dGlscworICAgIGZsYXRwYWt1dGlscy5ydW5faW5fc2FuZGJveF9pZl9hdmFpbGFibGUoc3lz
LmFyZ3YpCisKK3J1bl93ZWJraXRfYXBwLm1haW4oc3lzLmFyZ3ZbMTpdKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9taW5pYnJvd3Nlci9fX2luaXRfXy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbWluaWJyb3dzZXIvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY5ZGUy
OWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9taW5pYnJvd3Nlci9ydW5fd2Via2l0X2FwcC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbWluaWJyb3dzZXIvcnVuX3dlYmtpdF9hcHAucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUx
YzlhZDljY2JlOTZmMzBkMGNiM2FiZDQ3ZWI1ZmY1NWMzNzQzMwotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbWluaWJyb3dzZXIvcnVuX3dlYmtpdF9hcHAucHkKQEAg
LTAsMCArMSw2NiBAQAorIyBweWxpbnQ6IGRpc2FibGU9RTExMDMKKyMgQ29weXJpZ2h0IChDKSAy
MDIwIElnYWxpYSBTLkwuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyLjEgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisj
IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisjIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorIyBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlv
bgoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0cmFjZWJh
Y2sKKworZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRw
eS5wb3J0IGltcG9ydCBjb25maWd1cmF0aW9uX29wdGlvbnMsIHBsYXRmb3JtX29wdGlvbnMsIGZh
Y3RvcnkKKworCitkZWYgbWFpbihhcmd2KToKKyAgICBvcHRpb25fcGFyc2VyID0gYXJncGFyc2Uu
QXJndW1lbnRQYXJzZXIocHJvZz0icnVuLW1pbmlicm93c2VyIiwgdXNhZ2U9IiUocHJvZylzIFtv
cHRpb25zXSBbdXJsXSIsIGFkZF9oZWxwPUZhbHNlKQorICAgIGdyb3VwcyA9IFsoIlBsYXRmb3Jt
IG9wdGlvbnMiLCBwbGF0Zm9ybV9vcHRpb25zKCkpLCAoIkNvbmZpZ3VyYXRpb24gb3B0aW9ucyIs
IGNvbmZpZ3VyYXRpb25fb3B0aW9ucygpKV0KKworICAgICMgQ29udmVydCBvcHRpb25zIHRvIGFy
Z3BhcnNlLCBzbyB0aGF0IHdlIGNhbiB1c2UgcGFyc2Vfa25vd25fYXJncygpIHdoaWNoIGlzIG5v
dCBzdXBwb3J0ZWQgaW4gb3B0cGFyc2UuCisgICAgIyBGSVhNRTogR2xvYmFsbHkgbWlncmF0ZSB0
byBhcmdwYXJzZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzQ2
MworICAgIGZvciBncm91cF9uYW1lLCBncm91cF9vcHRpb25zIGluIGdyb3VwczoKKyAgICAgICAg
b3B0aW9uX2dyb3VwID0gb3B0aW9uX3BhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoZ3JvdXBfbmFt
ZSkKKworICAgICAgICBmb3Igb3B0aW9uIGluIGdyb3VwX29wdGlvbnM6CisgICAgICAgICAgICAj
IFNraXAgZGVwcmVjYXRlZCBvcHRpb24KKyAgICAgICAgICAgIGlmIG9wdGlvbi5kZXN0ID09ICJj
b25maWd1cmF0aW9uIjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZGVm
YXVsdCA9IE5vbmUKKyAgICAgICAgICAgIGlmIG9wdGlvbi5kZWZhdWx0ICE9ICgiTk8iLCAiREVG
QVVMVCIpOgorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBvcHRpb24uZGVmYXVsdAorICAgICAg
ICAgICAgb3B0aW9uX2dyb3VwLmFkZF9hcmd1bWVudChvcHRpb24uZ2V0X29wdF9zdHJpbmcoKSwg
YWN0aW9uPW9wdGlvbi5hY3Rpb24sIGRlc3Q9b3B0aW9uLmRlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9b3B0aW9uLmhlbHAsIGNvbnN0PW9wdGlvbi5jb25z
dCwgZGVmYXVsdD1kZWZhdWx0KQorCisgICAgb3B0aW9ucywgYXJncyA9IG9wdGlvbl9wYXJzZXIu
cGFyc2Vfa25vd25fYXJncyhhcmd2KQorCisgICAgaWYgc2V0KGFyZ3MpLmlzc3Vic2V0KFsiLWgi
LCAiLS1oZWxwIl0pIGFuZCBub3Qgb3B0aW9ucy5wbGF0Zm9ybToKKyAgICAgICAgb3B0aW9uX3Bh
cnNlci5wcmludF9oZWxwKCkKKyAgICAgICAgcHJpbnQoIlxuVG8gc2VlIHRoZSBhdmFpbGFibGUg
b3B0aW9ucyBvbiBhIHNwZWNpZmljIHBsYXRmb3JtLCBzdXBwbHkgaXQgb24gdGhlIGNvbW1hbmQt
bGluZSwgZm9yIGV4YW1wbGUgLS1ndGsgLS1oZWxwIikKKyAgICAgICAgcmV0dXJuIDAKKworICAg
IHRyeToKKyAgICAgICAgcG9ydCA9IGZhY3RvcnkuUG9ydEZhY3RvcnkoSG9zdCgpKS5nZXQob3B0
aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zKQorICAgICAgICByZXR1cm4gcG9ydC5ydW5f
bWluaWJyb3dzZXIoYXJncykKKyAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAg
ICBpZiBpc2luc3RhbmNlKGUsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwcmludCgnXG4lcyBy
YWlzZWQ6ICVzJyAlIChlLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKGUpKSwgZmlsZT1zeXMuc3Rk
ZXJyKQorICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPXN5cy5zdGRlcnIpCisg
ICAgICAgIHJldHVybiAxCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMu
ZXhpdChtYWluKHN5cy5hcmd2WzE6XSkpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cmlu
ZGV4IDEwOWJiZTc0YzgxM2M3MGE5MmNiZDQzZTU5ZGM4YWRhY2ZlZjViYzYuLmZlYWIwY2QwODQz
MWFkNDU2OWNiYjFiYjQ1NDdmNTNmZjJkZTE4NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9i
YXNlLnB5CkBAIC0zMCw2ICszMCw3IEBACiAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIG9mIFBvcnQt
c3BlY2lmaWMgZW50cnkgcG9pbnRzIGZvciB0aGUgbGF5b3V0IHRlc3RzCiB0ZXN0IGluZnJhc3Ry
dWN0dXJlICh0aGUgUG9ydCBhbmQgRHJpdmVyIGNsYXNzZXMpLiIiIgogCitpbXBvcnQgYXJncGFy
c2UKIGltcG9ydCBkaWZmbGliCiBpbXBvcnQganNvbgogaW1wb3J0IGxvZ2dpbmcKQEAgLTc5OCw3
ICs3OTksMTIgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5nZXRf
b3B0aW9uKG5hbWUpID09IHZhbHVlCiAKICAgICBkZWYgc2V0X29wdGlvbl9kZWZhdWx0KHNlbGYs
IG5hbWUsIGRlZmF1bHRfdmFsdWUpOgotICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucy5lbnN1
cmVfdmFsdWUobmFtZSwgZGVmYXVsdF92YWx1ZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxm
Ll9vcHRpb25zLCBhcmdwYXJzZS5OYW1lc3BhY2UpOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0
dHIoc2VsZi5fb3B0aW9ucywgbmFtZSk6CisgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLl9v
cHRpb25zLCBuYW1lLCBkZWZhdWx0X3ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucy5lbnN1cmVf
dmFsdWUobmFtZSwgZGVmYXVsdF92YWx1ZSkKIAogICAgIEBtZW1vaXplZAogICAgIGRlZiBwYXRo
X3RvX2dlbmVyaWNfdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKQEAgLTEzNzAsNiArMTM3
NiwxMCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGZ1bGwg
cGF0aCB0byB0aGUgZGVmYXVsdCBJbWFnZURpZmYgYmluYXJ5LCBvciBOb25lIGlmIGl0IGlzIG5v
dCBhdmFpbGFibGUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdJbWFnZURp
ZmYnKQogCisgICAgZGVmIHJ1bl9taW5pYnJvd3NlcihzZWxmLCBhcmdzKToKKyAgICAgICAgIyBG
SVhNRTogTWlncmF0ZSB0byB3ZWJraXRweSBiYXNlZCBydW4tbWluaWJyb3dzZXIuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM0NjQKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3J1bl9zY3JpcHQoWyJvbGQtcnVuLW1pbmlicm93c2VyIiwgXSArIGFyZ3MpCisKICAgICBA
bWVtb2l6ZWQKICAgICBkZWYgX3BhdGhfdG9faW1hZ2VfZGlmZihzZWxmKToKICAgICAgICAgIiIi
UmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBpbWFnZV9kaWZmIGJpbmFyeSwgb3IgTm9uZSBp
ZiBpdCBpcyBub3QgYXZhaWxhYmxlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2d0ay5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsucHkKaW5kZXgg
MDQ5MzU3Y2ViMTFjNzNhY2UxZGM4Zjc2ZDg0MWQ1M2Y4YTc2YWNlMS4uZDk0NWEwNDE3ZTAxMzg0
NzI0OGI4OGZiYTUwOWZkZTJjMzZmNzZhZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L2d0ay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5
CkBAIC0yMzEsNyArMjMxLDcgQEAgY2xhc3MgR3RrUG9ydChQb3J0KToKICAgICAgICAgc2VsZi5f
bGVha2RldGVjdG9yLnBhcnNlX2FuZF9wcmludF9sZWFrc19kZXRhaWwobGVha3NfZmlsZXMpCiAK
ICAgICBkZWYgc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToK
LSAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicnVuLW1pbmlicm93c2VyIiwgW3BhdGguYWJzcGF0
aF90b191cmkoc2VsZi5ob3N0LnBsYXRmb3JtLCByZXN1bHRzX2ZpbGVuYW1lKV0pCisgICAgICAg
IHNlbGYucnVuX21pbmlicm93c2VyKFtwYXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0
Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQogCiAgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYp
OgogICAgICAgICByZXR1cm4gc3VwZXIoR3RrUG9ydCwgc2VsZikuY2hlY2tfc3lzX2RlcHMoKSBh
bmQgc2VsZi5fZHJpdmVyX2NsYXNzKCkuY2hlY2tfZHJpdmVyKHNlbGYpCkBAIC0yNjAsMyArMjYw
LDEzIEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgIGNvbmZpZ3VyYXRpb25bJ3BsYXRm
b3JtJ10gPSAnR1RLJwogICAgICAgICBjb25maWd1cmF0aW9uWyd2ZXJzaW9uX25hbWUnXSA9IHNl
bGYuX2Rpc3BsYXlfc2VydmVyLmNhcGl0YWxpemUoKSBpZiBzZWxmLl9kaXNwbGF5X3NlcnZlciBl
bHNlICdYdmZiJwogICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgorCisgICAgZGVmIHJ1bl9t
aW5pYnJvd3NlcihzZWxmLCBhcmdzKToKKyAgICAgICAgbWluaUJyb3dzZXIgPSBzZWxmLl9idWls
ZF9wYXRoKCdiaW4nLCAnTWluaUJyb3dzZXInKQorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5
c3RlbS5pc2ZpbGUobWluaUJyb3dzZXIpOgorICAgICAgICAgICAgcHJpbnQoIiVzIG5vdCBmb3Vu
ZC4uLiBEaWQgeW91IHJ1biBidWlsZC13ZWJraXQ/IiAlIG1pbmlCcm93c2VyKQorICAgICAgICAg
ICAgcmV0dXJuIDEKKyAgICAgICAgY29tbWFuZCA9IFttaW5pQnJvd3NlciwgXQorICAgICAgICBp
ZiBzZWxmLl9zaG91bGRfdXNlX2poYnVpbGQoKToKKyAgICAgICAgICAgIGNvbW1hbmQgPSBzZWxm
Ll9qaGJ1aWxkX3dyYXBwZXIgKyBjb21tYW5kCisgICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRp
dmUucnVuX2NvbW1hbmQoY29tbWFuZCArIGFyZ3MsIGN3ZD1zZWxmLndlYmtpdF9iYXNlKCkpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0a191bml0dGVzdC5weQppbmRleCAwMWFjYWQ5
ZmM5ZjY0YWFjOGQ5MWMzNDc3MThjYmEzZTU4ODllZGJkLi44ZTAzYTM1ODJlODc4NGFlMTk5YWI1
MDg1NDYwMzk5MzRjMzNhMWY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZ3RrX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGtf
dW5pdHRlc3QucHkKQEAgLTY5LDcgKzY5LDEwIEBAIGNsYXNzIEd0a1BvcnRUZXN0KHBvcnRfdGVz
dGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaG93X3Jlc3VsdHNfaHRtbF9maWxl
KHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBwb3J0Ll9l
eGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKLSAgICAgICAgZXhwZWN0
ZWRfbG9ncyA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLW1pbmlicm93
c2VyJywgJy0tcmVsZWFzZScsICctLWd0aycsICdmaWxlOi8vdGVzdC5odG1sJ10sIGN3ZD0vbW9j
ay1jaGVja291dFxuIgorICAgICAgICBwb3J0Ll9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0o
eworICAgICAgICAgICAgIi9tb2NrLWJ1aWxkL2Jpbi9NaW5pQnJvd3NlciI6ICIiCisgICAgICAg
IH0pCisgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBydW5fY29tbWFuZDogWycvbW9jay1i
dWlsZC9iaW4vTWluaUJyb3dzZXInLCAnZmlsZTovL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hl
Y2tvdXRcbiIKICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBv
cnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZSwgWyJ0ZXN0Lmh0bWwiXSwgZXhwZWN0ZWRfbG9ncz1l
eHBlY3RlZF9sb2dzKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF90aW1lb3V0X21zKHNlbGYpOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC93cGUucHkKaW5kZXggYTQ1NzMwZjZiNDU2YzMyMGEzMjc1NGY3
MDNkNzJjNzY5ZTEwOGM1ZS4uZDk3NDUyMTNjOWM1YWIwOTJlNmFhYzliZmM5MzY1MzAwYzJlZDY3
OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dwZS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5CkBAIC05Myw3ICs5Myw3IEBAIGNsYXNz
IFdQRVBvcnQoUG9ydCk6CiAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudAogCiAgICAgZGVmIHNo
b3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6Ci0gICAgICAgIHNl
bGYuX3J1bl9zY3JpcHQoInJ1bi1taW5pYnJvd3NlciIsIFtwYXRoLmFic3BhdGhfdG9fdXJpKHNl
bGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQorICAgICAgICBzZWxmLnJ1bl9t
aW5pYnJvd3NlcihbcGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLmhvc3QucGxhdGZvcm0sIHJlc3Vs
dHNfZmlsZW5hbWUpXSkKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHN1cGVyKFdQRVBvcnQsIHNlbGYpLmNoZWNrX3N5c19kZXBzKCkgYW5kIHNlbGYuX2Ry
aXZlcl9jbGFzcygpLmNoZWNrX2RyaXZlcihzZWxmKQpAQCAtMTM0LDMgKzEzNCwxMyBAQCBjbGFz
cyBXUEVQb3J0KFBvcnQpOgogICAgICAgICBjb25maWd1cmF0aW9uID0gc3VwZXIoV1BFUG9ydCwg
c2VsZikuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKGhvc3Q9aG9zdCkKICAgICAgICAgY29uZmln
dXJhdGlvblsncGxhdGZvcm0nXSA9ICdXUEUnCiAgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9u
CisKKyAgICBkZWYgcnVuX21pbmlicm93c2VyKHNlbGYsIGFyZ3MpOgorICAgICAgICBtaW5pQnJv
d3NlciA9IHNlbGYuX2J1aWxkX3BhdGgoJ2JpbicsICdNaW5pQnJvd3NlcicpCisgICAgICAgIGlm
IG5vdCBzZWxmLl9maWxlc3lzdGVtLmlzZmlsZShtaW5pQnJvd3Nlcik6CisgICAgICAgICAgICBw
cmludCgiJXMgbm90IGZvdW5kLi4uIERpZCB5b3UgcnVuIGJ1aWxkLXdlYmtpdD8iICUgbWluaUJy
b3dzZXIpCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBjb21tYW5kID0gW21pbmlCcm93
c2VyLCBdCisgICAgICAgIGlmIHNlbGYuX3Nob3VsZF91c2VfamhidWlsZCgpOgorICAgICAgICAg
ICAgY29tbWFuZCA9IHNlbGYuX2poYnVpbGRfd3JhcHBlciArIGNvbW1hbmQKKyAgICAgICAgcmV0
dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChjb21tYW5kICsgYXJncywgY3dkPXNlbGYu
d2Via2l0X2Jhc2UoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402959</attachid>
            <date>2020-06-27 09:35:25 -0700</date>
            <delta_ts>2020-06-27 10:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213431-20200627093523.patch</filename>
            <type>text/plain</type>
            <size>16986</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNjIzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmM2ZWU1Y2Y0ZWY3YWIxMTRkMTM2YmJiYmVkOTJiM2Qx
ZGJlNTYwNS4uYTMyZDRkM2VhNTViMzFjY2I5ZjJlZmU0ZWFjMzk4MjBlYjdiYjA4YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDIwLTA2LTI3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
KworICAgICAgICBNaWdyYXRlIHJ1bi1taW5pYnJvd3NlciB0byB3ZWJraXRweQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSm9uYXRoYW4gQmVkYXJkLgorCisgICAgICAgIFRoZSBwZXJsIHZlcnNpb24g
d2FzIHJlbmFtZWQgdG8gb2xkLXJ1bi1taW5pYnJvd3NlciBhbmQgcmVtYWlucyB1c2VkIGJ5IHRo
ZSBNYWMgcG9ydHMuCisgICAgICAgIHJ1bi1taW5pYnJvd3NlciBpcyBub3cgYSBQeXRob24gc2Ny
aXB0IGhvb2tpbmcgaW50byB3ZWJraXRweSBhbmQgdGhlIFBvcnQgaW5mcmFzdHJ1Y3R1cmUuCisg
ICAgICAgIEJvdGggV1BFIGFuZCBHVEsgcG9ydHMgd2lsbCBub3cgdXNlIHRoZSBwdXJlIHB5dGhv
biBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi1taW5pYnJvd3Nl
cjogQ29waWVkIGZyb20gVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXIuCisgICAgICAgICog
U2NyaXB0cy9ydW4tbWluaWJyb3dzZXI6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9taW5p
YnJvd3Nlci9ydW5fbWluaWJyb3dzZXIucHk6IEFkZGVkLgorICAgICAgICAobWFpbik6CisgICAg
ICAgIChwYXJzZV9hcmdzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5w
eToKKyAgICAgICAgKFBvcnQucnVuX21pbmlicm93c2VyX2FyZ3VtZW50cyk6CisgICAgICAgIChQ
b3J0KToKKyAgICAgICAgKFBvcnQucnVuX21pbmlicm93c2VyKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZGFyd2luLnB5OgorICAgICAgICAoRGFyd2luUG9ydC5lbnZpcm9ubWVu
dF9mb3JfYXBpX3Rlc3RzKToKKyAgICAgICAgKERhcndpblBvcnQpOgorICAgICAgICAoRGFyd2lu
UG9ydC5ydW5fbWluaWJyb3dzZXJfYXJndW1lbnRzKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZ3RrLnB5OgorICAgICAgICAoR3RrUG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxl
KToKKyAgICAgICAgKEd0a1BvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKToKKyAgICAgICAg
KEd0a1BvcnQpOgorICAgICAgICAoR3RrUG9ydC5ydW5fbWluaWJyb3dzZXIpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC93cGUucHk6CisgICAgICAgIChXUEVQb3J0LnNob3dfcmVz
dWx0c19odG1sX2ZpbGUpOgorICAgICAgICAoV1BFUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxv
YWQpOgorICAgICAgICAoV1BFUG9ydCk6CisgICAgICAgIChXUEVQb3J0LnJ1bl9taW5pYnJvd3Nl
cik6CisKIDIwMjAtMDYtMjcgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQHNvbnkuY29t
PgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gVXBkYXRlIHRlc3QgcnVubmVyIGZvciBjaGFuZ2Vz
IHRvIE9wdGlvbnMgYW5kIHNpZ25pbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvb2xkLXJ1
bi1taW5pYnJvd3NlciBiL1Rvb2xzL1NjcmlwdHMvb2xkLXJ1bi1taW5pYnJvd3NlcgpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wOWVhZGQyNmFkNDM1MzQ1OWIzOTgwZDM5NjgyOGUwNmVhZDE1Mjc1Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLW1pbmlicm93c2VyCkBAIC0wLDAgKzEsNDcg
QEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDcsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDcg
U3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMsIEluYy4gIDxpbmZvQHN0YWlrb3MubmV0PgorCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisj
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIyBTaW1wbGlmaWVkICJydW4iIHNjcmlwdCBmb3IgbGF1bmNoaW5n
IHRoZSBXZWJLaXQyIE1pbmlCcm93c2VyLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwor
dXNlIEZpbmRCaW47Cit1c2UgbGliICRGaW5kQmluOjpCaW47Cit1c2Ugd2Via2l0ZGlyczsKKwor
cHJvaGliaXRVbmtub3duUG9ydCgpOworc2V0Q29uZmlndXJhdGlvbigpOworCitpZiAoaXNBcHBs
ZUNvY29hV2ViS2l0KCkpIHsKKyAgICBwcmludEhlbHBBbmRFeGl0Rm9yUnVuQW5kRGVidWdXZWJL
aXRBcHBJZk5lZWRlZCgpOworICAgIGV4aXQgZXhpdFN0YXR1cyhydW5NaW5pQnJvd3NlcigpKTsK
K30gZWxzZSB7CisgICAgZGllICJVbnN1cHBvcnRlZCBwbGF0Zm9ybS4iCit9CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3J1bi1taW5pYnJvd3NlciBiL1Rvb2xzL1NjcmlwdHMvcnVuLW1pbmli
cm93c2VyCmluZGV4IDkwY2QzZmFmNDMxYWViOTI4ZGZkNmRkZmQ2ZWQ2ZDIzZDJmMjFjY2MuLjU5
ZjU0ZjA1MGUwMjNiM2QzMzcxMjlkN2RmZjBlZmRiNDdkNThkMjkgMTAwNzU1Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvcnVuLW1pbmlicm93c2VyCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLW1pbmlicm93
c2VyCkBAIC0xLDY0ICsxLDMwIEBACi0jIS91c3IvYmluL2VudiBwZXJsCi0KLSMgQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMg
Q29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzLCBJbmMuICA8aW5m
b0BzdGFpa29zLm5ldD4KLQorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykg
MjAyMCBJZ2FsaWEgUy5MLgogIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
CisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAjCi0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LiAKLSMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgotIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCiAjCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0jIFNpbXBsaWZpZWQgInJ1biIg
c2NyaXB0IGZvciBsYXVuY2hpbmcgdGhlIFdlYktpdDIgTWluaUJyb3dzZXIuCi0KLXVzZSBzdHJp
Y3Q7Ci11c2Ugd2FybmluZ3M7Ci11c2UgRmlsZTo6U3BlYzo6RnVuY3Rpb25zIHF3L2NhdGRpci87
Ci11c2UgRmluZEJpbjsKLXVzZSBsaWIgJEZpbmRCaW46OkJpbjsKLXVzZSB3ZWJraXRkaXJzOwot
Ci1teSAkbGF1bmNoZXJOYW1lOwotbXkgJGxhdW5jaGVyUGF0aDsKLW15IEBqaGJ1aWxkV3JhcHBl
cjsKLQotcHJvaGliaXRVbmtub3duUG9ydCgpOwotc2V0Q29uZmlndXJhdGlvbigpOwotCi1pZiAo
aXNHdGsoKSB8fCBpc1dQRSgpKSB7Ci0gICAgbXkgQGNvbW1hbmQgPSAoRmlsZTo6U3BlYy0+Y2F0
ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMiLCAicnVuLW1pbmlicm93c2VyIikp
OwotICAgIHJ1bkluRmxhdHBha0lmQXZhaWxhYmxlKEBjb21tYW5kKTsKLQotICAgICMgQ2hlY2sg
dG8gc2VlIHRoYXQgYWxsIHRoZSBmcmFtZXdvcmtzIGFyZSBidWlsdC4KLSAgICBjaGVja0ZyYW1l
d29ya3MoKTsKLQotICAgICRsYXVuY2hlclBhdGggPSBjYXRkaXIocHJvZHVjdERpcigpLCAiYmlu
IiwgIk1pbmlCcm93c2VyIik7Ci0gICAgZGllICJDYW4ndCBmaW5kICRsYXVuY2hlclBhdGgiIHVu
bGVzcyAteCAkbGF1bmNoZXJQYXRoOwotICAgIEBqaGJ1aWxkV3JhcHBlciA9IHdyYXBwZXJQcmVm
aXhJZk5lZWRlZCgpOwotICAgIHByaW50ICJTdGFydGluZyBNaW5pQnJvd3Nlci5cbiI7Ci0gICAg
ZXhlYyBAamhidWlsZFdyYXBwZXIsICRsYXVuY2hlclBhdGgsIEBBUkdWIG9yIGRpZTsKLX0gZWxz
aWYgKGlzQXBwbGVDb2NvYVdlYktpdCgpKSB7Ci0gICAgcHJpbnRIZWxwQW5kRXhpdEZvclJ1bkFu
ZERlYnVnV2ViS2l0QXBwSWZOZWVkZWQoKTsKLSAgICBleGl0IGV4aXRTdGF0dXMocnVuTWluaUJy
b3dzZXIoKSk7Ci19IGVsc2UgewotICAgIGRpZSAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0uIgotfQor
IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlCisjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3QsIEZpZnRoIEZsb29yLAorIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKworIiIiV3Jh
cHBlciBhcm91bmQgd2Via2l0cHkvbWluaWJyb3dzZXIvcnVuX3dlYmtpdF9hcHAucHkiIiIKK2lt
cG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB3ZWJraXRweS5taW5pYnJvd3NlciBpbXBvcnQgcnVu
X3dlYmtpdF9hcHAKKwordG9wX2xldmVsX2RpcmVjdG9yeSA9IG9zLnBhdGgubm9ybXBhdGgob3Mu
cGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpKQoraWYgc3lz
LnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CisgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9z
LnBhdGguam9pbih0b3BfbGV2ZWxfZGlyZWN0b3J5LCAnVG9vbHMnLCAnZmxhdHBhaycpKQorICAg
IGltcG9ydCBmbGF0cGFrdXRpbHMKKyAgICBmbGF0cGFrdXRpbHMucnVuX2luX3NhbmRib3hfaWZf
YXZhaWxhYmxlKHN5cy5hcmd2KQorCitydW5fd2Via2l0X2FwcC5tYWluKHN5cy5hcmd2WzE6XSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbWluaWJyb3dzZXIvX19pbml0X18u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L21pbmlicm93c2VyL19faW5pdF9fLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbWluaWJyb3dzZXIvcnVuX3dlYmtpdF9hcHAucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L21pbmlicm93c2VyL3J1bl93ZWJraXRfYXBwLnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM5NWMwNDNlMTI4MzJlYjY3YzY3NmM5NGM1NzUxZTllMTc0OTkyZGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L21pbmlicm93c2VyL3J1bl93ZWJr
aXRfYXBwLnB5CkBAIC0wLDAgKzEsNjYgQEAKKyMgcHlsaW50OiBkaXNhYmxlPUUxMTAzCisjIENv
cHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZl
cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZQorIyBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwK
KyMgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
cHJpbnRfZnVuY3Rpb24KK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitp
bXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QK
K2Zyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgY29uZmlndXJhdGlvbl9vcHRpb25zLCBwbGF0Zm9y
bV9vcHRpb25zLCBmYWN0b3J5CisKKworZGVmIG1haW4oYXJndik6CisgICAgb3B0aW9uX3BhcnNl
ciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHVzYWdlPSIlKHByb2cpcyBbb3B0aW9uc10gW3Vy
bF0iLCBhZGRfaGVscD1GYWxzZSkKKyAgICBncm91cHMgPSBbKCJQbGF0Zm9ybSBvcHRpb25zIiwg
cGxhdGZvcm1fb3B0aW9ucygpKSwgKCJDb25maWd1cmF0aW9uIG9wdGlvbnMiLCBjb25maWd1cmF0
aW9uX29wdGlvbnMoKSldCisKKyAgICAjIENvbnZlcnQgb3B0aW9ucyB0byBhcmdwYXJzZSwgc28g
dGhhdCB3ZSBjYW4gdXNlIHBhcnNlX2tub3duX2FyZ3MoKSB3aGljaCBpcyBub3Qgc3VwcG9ydGVk
IGluIG9wdHBhcnNlLgorICAgICMgRklYTUU6IEdsb2JhbGx5IG1pZ3JhdGUgdG8gYXJncGFyc2Uu
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM0NjMKKyAgICBmb3Ig
Z3JvdXBfbmFtZSwgZ3JvdXBfb3B0aW9ucyBpbiBncm91cHM6CisgICAgICAgIG9wdGlvbl9ncm91
cCA9IG9wdGlvbl9wYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKGdyb3VwX25hbWUpCisKKyAgICAg
ICAgZm9yIG9wdGlvbiBpbiBncm91cF9vcHRpb25zOgorICAgICAgICAgICAgIyBTa2lwIGRlcHJl
Y2F0ZWQgb3B0aW9uCisgICAgICAgICAgICBpZiBvcHRpb24uZGVzdCA9PSAiY29uZmlndXJhdGlv
biI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGRlZmF1bHQgPSBOb25l
CisgICAgICAgICAgICBpZiBvcHRpb24uZGVmYXVsdCAhPSAoIk5PIiwgIkRFRkFVTFQiKToKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0ID0gb3B0aW9uLmRlZmF1bHQKKyAgICAgICAgICAgIG9wdGlv
bl9ncm91cC5hZGRfYXJndW1lbnQob3B0aW9uLmdldF9vcHRfc3RyaW5nKCksIGFjdGlvbj1vcHRp
b24uYWN0aW9uLCBkZXN0PW9wdGlvbi5kZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPW9wdGlvbi5oZWxwLCBjb25zdD1vcHRpb24uY29uc3QsIGRlZmF1bHQ9
ZGVmYXVsdCkKKworICAgIG9wdGlvbnMsIGFyZ3MgPSBvcHRpb25fcGFyc2VyLnBhcnNlX2tub3du
X2FyZ3MoYXJndikKKworICAgIGlmIHNldChhcmdzKS5pc3N1YnNldChbIi1oIiwgIi0taGVscCJd
KSBhbmQgbm90IG9wdGlvbnMucGxhdGZvcm06CisgICAgICAgIG9wdGlvbl9wYXJzZXIucHJpbnRf
aGVscCgpCisgICAgICAgIHByaW50KCJcblRvIHNlZSB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgb24g
YSBzcGVjaWZpYyBwbGF0Zm9ybSwgc3VwcGx5IGl0IG9uIHRoZSBjb21tYW5kLWxpbmUsIGZvciBl
eGFtcGxlIC0tZ3RrIC0taGVscCIpCisgICAgICAgIHJldHVybiAwCisKKyAgICB0cnk6CisgICAg
ICAgIHBvcnQgPSBmYWN0b3J5LlBvcnRGYWN0b3J5KEhvc3QoKSkuZ2V0KG9wdGlvbnMucGxhdGZv
cm0sIG9wdGlvbnM9b3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHBvcnQucnVuX21pbmlicm93c2Vy
KGFyZ3MpCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgaWYgaXNpbnN0
YW5jZShlLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcHJpbnQoJ1xuJXMgcmFpc2VkOiAlcycg
JSAoZS5fX2NsYXNzX18uX19uYW1lX18sIHN0cihlKSksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAg
ICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICByZXR1
cm4gMQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihz
eXMuYXJndlsxOl0pKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCA2NzY5ODVj
ZThkYzBiYzEwYWE5YzMxOGY5NThjZmQyMjQ0NDYwNTlhLi5iNDNhNGMzZmZjNjA2OTg4NGU3MGFm
ZjZhMWMyYzBhYzdmMzI0MmFlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAt
MzAsNiArMzAsNyBAQAogIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBvZiBQb3J0LXNwZWNpZmljIGVu
dHJ5IHBvaW50cyBmb3IgdGhlIGxheW91dCB0ZXN0cwogdGVzdCBpbmZyYXN0cnVjdHVyZSAodGhl
IFBvcnQgYW5kIERyaXZlciBjbGFzc2VzKS4iIiIKIAoraW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQg
ZGlmZmxpYgogaW1wb3J0IGpzb24KIGltcG9ydCBsb2dnaW5nCkBAIC03ODksNyArNzkwLDEyIEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X29wdGlvbihuYW1l
KSA9PSB2YWx1ZQogCiAgICAgZGVmIHNldF9vcHRpb25fZGVmYXVsdChzZWxmLCBuYW1lLCBkZWZh
dWx0X3ZhbHVlKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX29wdGlvbnMuZW5zdXJlX3ZhbHVlKG5h
bWUsIGRlZmF1bHRfdmFsdWUpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5fb3B0aW9ucywg
YXJncGFyc2UuTmFtZXNwYWNlKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuX29w
dGlvbnMsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZi5fb3B0aW9ucywgbmFt
ZSwgZGVmYXVsdF92YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29wdGlvbnMuZW5zdXJlX3ZhbHVlKG5hbWUs
IGRlZmF1bHRfdmFsdWUpCiAKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgcGF0aF90b19nZW5lcmlj
X3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CkBAIC0xMzYxLDYgKzEzNjcsMTAgQEAgY2xh
c3MgUG9ydChvYmplY3QpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBmdWxsIHBhdGggdG8gdGhl
IGRlZmF1bHQgSW1hZ2VEaWZmIGJpbmFyeSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgYXZhaWxhYmxl
LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnSW1hZ2VEaWZmJykKIAorICAg
IGRlZiBydW5fbWluaWJyb3dzZXIoc2VsZiwgYXJncyk6CisgICAgICAgICMgRklYTUU6IE1pZ3Jh
dGUgdG8gd2Via2l0cHkgYmFzZWQgcnVuLW1pbmlicm93c2VyLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzNDY0CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fc2Ny
aXB0KFsib2xkLXJ1bi1taW5pYnJvd3NlciIsIF0gKyBhcmdzKQorCiAgICAgQG1lbW9pemVkCiAg
ICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhl
IGZ1bGwgcGF0aCB0byB0aGUgaW1hZ2VfZGlmZiBiaW5hcnksIG9yIE5vbmUgaWYgaXQgaXMgbm90
IGF2YWlsYWJsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGsu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZ3RrLnB5CmluZGV4IDA0OTM1N2NlYjEx
YzczYWNlMWRjOGY3NmQ4NDFkNTNmOGE3NmFjZTEuLmNhZmM0YmUwZTUyYzUxZmJmMWZhZTRmZGMx
ZTU3MzlmY2U1YmYwNjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9n
dGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0ay5weQpAQCAtMjMxLDcg
KzIzMSw3IEBAIGNsYXNzIEd0a1BvcnQoUG9ydCk6CiAgICAgICAgIHNlbGYuX2xlYWtkZXRlY3Rv
ci5wYXJzZV9hbmRfcHJpbnRfbGVha3NfZGV0YWlsKGxlYWtzX2ZpbGVzKQogCiAgICAgZGVmIHNo
b3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6Ci0gICAgICAgIHNl
bGYuX3J1bl9zY3JpcHQoInJ1bi1taW5pYnJvd3NlciIsIFtwYXRoLmFic3BhdGhfdG9fdXJpKHNl
bGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSldKQorICAgICAgICBzZWxmLnJ1bl9t
aW5pYnJvd3NlcihbcGF0aC5hYnNwYXRoX3RvX3VyaShzZWxmLmhvc3QucGxhdGZvcm0sIHJlc3Vs
dHNfZmlsZW5hbWUpXSkKIAogICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmKToKICAgICAgICAg
cmV0dXJuIHN1cGVyKEd0a1BvcnQsIHNlbGYpLmNoZWNrX3N5c19kZXBzKCkgYW5kIHNlbGYuX2Ry
aXZlcl9jbGFzcygpLmNoZWNrX2RyaXZlcihzZWxmKQpAQCAtMjYwLDMgKzI2MCwxMyBAQCBjbGFz
cyBHdGtQb3J0KFBvcnQpOgogICAgICAgICBjb25maWd1cmF0aW9uWydwbGF0Zm9ybSddID0gJ0dU
SycKICAgICAgICAgY29uZmlndXJhdGlvblsndmVyc2lvbl9uYW1lJ10gPSBzZWxmLl9kaXNwbGF5
X3NlcnZlci5jYXBpdGFsaXplKCkgaWYgc2VsZi5fZGlzcGxheV9zZXJ2ZXIgZWxzZSAnWHZmYicK
ICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KKworICAgIGRlZiBydW5fbWluaWJyb3dzZXIo
c2VsZiwgYXJncyk6CisgICAgICAgIG1pbmlCcm93c2VyID0gc2VsZi5fYnVpbGRfcGF0aCgnYmlu
JywgJ01pbmlCcm93c2VyJykKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uaXNmaWxl
KG1pbmlCcm93c2VyKToKKyAgICAgICAgICAgIHByaW50KCIlcyBub3QgZm91bmQuLi4gRGlkIHlv
dSBydW4gYnVpbGQtd2Via2l0PyIgJSBtaW5pQnJvd3NlcikKKyAgICAgICAgICAgIHJldHVybiAx
CisgICAgICAgIGNvbW1hbmQgPSBbbWluaUJyb3dzZXJdCisgICAgICAgIGlmIHNlbGYuX3Nob3Vs
ZF91c2VfamhidWlsZCgpOgorICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuX2poYnVpbGRfd3Jh
cHBlciArIGNvbW1hbmQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChjb21tYW5kICsgYXJncywgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CmluZGV4IDAxYWNhZDlmYzlmNjRhYWM4ZDkx
YzM0NzcxOGNiYTNlNTg4OWVkYmQuLjhlMDNhMzU4MmU4Nzg0YWUxOTlhYjUwODU0NjAzOTkzNGMz
M2ExZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9ndGtfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2d0a191bml0dGVzdC5weQpA
QCAtNjksNyArNjksMTAgQEAgY2xhc3MgR3RrUG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZik6CiAgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1v
Y2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQotICAgICAgICBleHBlY3RlZF9sb2dzID0gIk1P
Q0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9ydW4tbWluaWJyb3dzZXInLCAnLS1yZWxl
YXNlJywgJy0tZ3RrJywgJ2ZpbGU6Ly90ZXN0Lmh0bWwnXSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4i
CisgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSh7CisgICAgICAgICAg
ICAiL21vY2stYnVpbGQvYmluL01pbmlCcm93c2VyIjogIiIKKyAgICAgICAgfSkKKyAgICAgICAg
ZXhwZWN0ZWRfbG9ncyA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJy9tb2NrLWJ1aWxkL2Jpbi9NaW5p
QnJvd3NlcicsICdmaWxlOi8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxuIgogICAg
ICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5zaG93X3Jlc3Vs
dHNfaHRtbF9maWxlLCBbInRlc3QuaHRtbCJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3Mp
CiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3RpbWVvdXRfbXMoc2VsZik6CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3dwZS5weQppbmRleCBhNDU3MzBmNmI0NTZjMzIwYTMyNzU0ZjcwM2Q3MmM3NjllMTA4
YzVlLi44MTU1Y2MwOTFjN2Q2NTI1MzIyMzFkNjdkNDFlNGVkZWUwYWZlM2QwIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvd3BlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC93cGUucHkKQEAgLTkzLDcgKzkzLDcgQEAgY2xhc3MgV1BFUG9ydChQb3J0
KToKICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50CiAKICAgICBkZWYgc2hvd19yZXN1bHRzX2h0
bWxfZmlsZShzZWxmLCByZXN1bHRzX2ZpbGVuYW1lKToKLSAgICAgICAgc2VsZi5fcnVuX3Njcmlw
dCgicnVuLW1pbmlicm93c2VyIiwgW3BhdGguYWJzcGF0aF90b191cmkoc2VsZi5ob3N0LnBsYXRm
b3JtLCByZXN1bHRzX2ZpbGVuYW1lKV0pCisgICAgICAgIHNlbGYucnVuX21pbmlicm93c2VyKFtw
YXRoLmFic3BhdGhfdG9fdXJpKHNlbGYuaG9zdC5wbGF0Zm9ybSwgcmVzdWx0c19maWxlbmFtZSld
KQogCiAgICAgZGVmIGNoZWNrX3N5c19kZXBzKHNlbGYpOgogICAgICAgICByZXR1cm4gc3VwZXIo
V1BFUG9ydCwgc2VsZikuY2hlY2tfc3lzX2RlcHMoKSBhbmQgc2VsZi5fZHJpdmVyX2NsYXNzKCku
Y2hlY2tfZHJpdmVyKHNlbGYpCkBAIC0xMzQsMyArMTM0LDEzIEBAIGNsYXNzIFdQRVBvcnQoUG9y
dCk6CiAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzdXBlcihXUEVQb3J0LCBzZWxmKS5jb25maWd1
cmF0aW9uX2Zvcl91cGxvYWQoaG9zdD1ob3N0KQogICAgICAgICBjb25maWd1cmF0aW9uWydwbGF0
Zm9ybSddID0gJ1dQRScKICAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KKworICAgIGRlZiBy
dW5fbWluaWJyb3dzZXIoc2VsZiwgYXJncyk6CisgICAgICAgIG1pbmlCcm93c2VyID0gc2VsZi5f
YnVpbGRfcGF0aCgnYmluJywgJ01pbmlCcm93c2VyJykKKyAgICAgICAgaWYgbm90IHNlbGYuX2Zp
bGVzeXN0ZW0uaXNmaWxlKG1pbmlCcm93c2VyKToKKyAgICAgICAgICAgIHByaW50KCIlcyBub3Qg
Zm91bmQuLi4gRGlkIHlvdSBydW4gYnVpbGQtd2Via2l0PyIgJSBtaW5pQnJvd3NlcikKKyAgICAg
ICAgICAgIHJldHVybiAxCisgICAgICAgIGNvbW1hbmQgPSBbbWluaUJyb3dzZXJdCisgICAgICAg
IGlmIHNlbGYuX3Nob3VsZF91c2VfamhidWlsZCgpOgorICAgICAgICAgICAgY29tbWFuZCA9IHNl
bGYuX2poYnVpbGRfd3JhcHBlciArIGNvbW1hbmQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChjb21tYW5kICsgYXJncywgY3dkPXNlbGYud2Via2l0X2Jhc2UoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403306</attachid>
            <date>2020-07-01 11:58:06 -0700</date>
            <delta_ts>2020-07-01 11:58:06 -0700</delta_ts>
            <desc>Fix attempt</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>588</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggMjVmMmFjNDU3ODIzLi5jNTA0YWM1
MTZkZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CkBAIC0xMzY5LDcgKzEzNjks
NyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAKICAgICBkZWYgcnVuX21pbmlicm93c2VyKHNlbGYs
IGFyZ3MpOgogICAgICAgICAjIEZJWE1FOiBNaWdyYXRlIHRvIHdlYmtpdHB5IGJhc2VkIHJ1bi1t
aW5pYnJvd3Nlci4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzQ2
NAotICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3NjcmlwdChbIm9sZC1ydW4tbWluaWJyb3dzZXIi
LCBdICsgYXJncykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9zY3JpcHQoIm9sZC1ydW4tbWlu
aWJyb3dzZXIiLCBhcmdzPWFyZ3MpCiAKICAgICBAbWVtb2l6ZWQKICAgICBkZWYgX3BhdGhfdG9f
aW1hZ2VfZGlmZihzZWxmKToK
</data>

          </attachment>
      

    </bug>

</bugzilla>