<?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>33775</bug_id>
          
          <creation_ts>2010-01-17 15:27:08 -0800</creation_ts>
          <short_desc>check-webkit-style: File reading code should be shared between cpp_style.py and text_style.py.</short_desc>
          <delta_ts>2010-01-21 21:39:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>33791</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>181626</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-17 15:27:08 -0800</bug_when>
    <thetext>This involves refactoring and moving code like the following from cpp_style.py and text_style.py to checker.py:

if filename == &apos;-&apos;:
    lines = codecs.StreamReaderWriter(sys.stdin,
                                      codecs.getreader(&apos;utf8&apos;),
                                      codecs.getwriter(&apos;utf8&apos;),
                                      &apos;replace&apos;).read().split(&apos;\n&apos;)
else:
    lines = codecs.open(filename, &apos;r&apos;, &apos;utf8&apos;, &apos;replace&apos;).read().split(&apos;\n&apos;)

Cpp_style and text_style don&apos;t have to know about reading files; they just have to know how to process lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181721</commentid>
    <comment_count>1</comment_count>
      <attachid>46785</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-17 21:03:15 -0800</bug_when>
    <thetext>Created attachment 46785
Proposed patch

In addition, I adjusted the logic slightly so that no error gets logged when an exempted file is encountered, per this comment:

https://bugs.webkit.org/show_bug.cgi?id=33771#c6

If you&apos;d like, I can change it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181722</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-17 21:06:29 -0800</bug_when>
    <thetext>Attachment 46785 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
Traceback (most recent call last):
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 94, in &lt;module&gt;
    main()
  File &quot;WebKitTools/Scripts/check-webkit-style&quot;, line 87, in main
    style_checker.check_patch(patch)
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style/checker.py&quot;, line 879, in check_patch
    self._process_file(filename, error_for_patch)
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style/checker.py&quot;, line 839, in _process_file
    self._process_lines(filename, lines, error)
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style/checker.py&quot;, line 795, in _process_lines
    processor = dispatcher.dispatch_processor(file_path, lines, error, verbosity)
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style/checker.py&quot;, line 715, in dispatch_processor
    file_type = self._file_type(file_path, file_extension)
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style/checker.py&quot;, line 670, in _file_type
    if self._is_exempt(file_path):
  File &quot;/mnt/git/webkit-style-queue/WebKitTools/Scripts/webkitpy/style/checker.py&quot;, line 653, in _is_exempt
    if (filename.find(&apos;WebKit/qt/Api/&apos;) &gt;= 0
NameError: global name &apos;filename&apos; is not defined


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181723</commentid>
    <comment_count>3</comment_count>
      <attachid>46786</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-17 21:08:04 -0800</bug_when>
    <thetext>Created attachment 46786
Proposed patch 2

Forgot to &quot;git diff&quot; my latest changes before submitting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182004</commentid>
    <comment_count>4</comment_count>
      <attachid>46854</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-18 14:43:09 -0800</bug_when>
    <thetext>Created attachment 46854
Proposed patch 3

Added &quot;ignore&quot; warnings back for exempted files, as discussed here:

https://bugs.webkit.org/show_bug.cgi?id=33771#c7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182172</commentid>
    <comment_count>5</comment_count>
      <attachid>46854</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-19 00:58:43 -0800</bug_when>
    <thetext>Comment on attachment 46854
Proposed patch 3

I&apos;m not sure if all of my comments make sense, but I guess you may want to incorporate some of my suggestions. r- for now.

&gt; +        # Exempted files are files for which it might not be immediately
&gt; +        # apparent that they are exempted. For this reason, processing
&gt; +        # an exempted file should trigger a warning (but not a style error).
&gt; +        if (file_path.find(&apos;WebKit/qt/Api/&apos;) &gt;= 0
&gt; +            or file_path.find(&apos;WebKit/qt/tests/&apos;) &gt;= 0):
&gt; +            # The Qt API and tests do not follow WebKit style.
&gt; +            # They follow Qt style. :)
&gt; +            return True
&gt; +
&gt; +        return os.path.basename(file_path) in (
&gt; +            &apos;gtk2drawing.c&apos;,
&gt; +            &apos;gtk2drawing.h&apos;,
&gt; +        )

I prefer to create a list of exempted file names, like

EXEMPTED_FILENAMES = [
    # The Qt API and tests do not follow WebKit style.
    # They follow Qt style. :)
    &apos;WebKit/qt/Api/&apos;,
    &apos;WebKit/qt/tests/&apos;,
    &apos;WebCore/platform/gtk/gtk2drawing.c&apos;,
    &apos;WebCore/platform/gtk/gtk2drawing.h&apos;,
]
for exempted in EXEMPTED_FILENAMES:
    if file_path.find(exempted) &gt;= 0:
        return True
return False

&gt; +    def _file_type(self, file_path, file_extension):
&gt; +        &quot;&quot;&quot;Return what style processor to use to check style.
&gt; +
&gt; +        Returns one of the following strings: cpp, exempt, none, text.
&gt; +
&gt; +        &quot;&quot;&quot;
&gt; +        if self._is_exempt(file_path):
&gt; +            return &quot;exempt&quot;
&gt; +        elif (file_extension in self.cpp_file_extensions) or (file_path == &apos;-&apos;):
&gt; +            # FIXME: Do something about the comment below and the issue it
&gt; +            #        raises since cpp_style already relies on the extension.
&gt; +            #
&gt; +            # When reading from stdin, the extension is unknown, so no
&gt; +            # cpp_style tests should rely on the extension.
&gt; +            return &quot;cpp&quot;
&gt; +        elif ((not &quot;LayoutTests/&quot; in file_path)
&gt; +              and (&quot;ChangeLog&quot; in file_path
&gt; +                   or &quot;WebKitTools/Scripts/&quot; in file_path
&gt; +                   or file_extension in self.text_file_extensions)):
&gt; +            return &quot;text&quot;
&gt; +        else:
&gt; +            return &quot;none&quot;
&gt; +
&gt; +    def _create_processor(self, file_type, file_path, file_extension,
&gt; +                          lines, handle_style_error, verbosity):
&gt; +        &quot;&quot;&quot;Return a style processor according to the given file type.
&gt; +
&gt; +        Args:
&gt; +          file_type: A string that is either &quot;cpp&quot; or &quot;text&quot;.
&gt; +          file_path
&gt; +          lines
&gt; +          error
&gt; +          verbosity
&gt; +
&gt; +        &quot;&quot;&quot;
&gt; +        if file_type == &quot;cpp&quot;:
&gt; +            processor = CppProcessor(file_path, file_extension, lines, handle_style_error, verbosity)
&gt; +        elif file_type == &quot;text&quot;:
&gt; +            processor = TextProcessor(file_path, lines, handle_style_error)
&gt; +        elif file_type == &quot;exempt&quot;:
&gt; +            # Warn for exempted files.
&gt; +            processor = NoneProcessor(file_path, self._stderr_write, should_write_warning=True)
&gt; +        elif file_type == &quot;none&quot;:
&gt; +            # Do not warn for exempted files.
&gt; +            processor = NoneProcessor(file_path, self._stderr_write, should_write_warning=False)
&gt; +        else:
&gt; +            raise ValueError(&apos;Invalid file type &quot;%s&quot;: the valid file types &apos;
&gt; +                             &quot;are -- cpp, exempt, none, and text.&quot; % file_type)
&gt; +
&gt; +        return processor

It&apos;s OK as is if you like the current structure, but this looks a bit redundant to me. I&apos;d just combine _file_type and _create_processor and remove constants like &quot;cpp&quot;, &quot;text&quot;, &quot;exempt&quot;, and &quot;none&quot;.

You forgot to write Args section for _create_processor?

&gt;            stderr_write: A function that takes a string as a parameter
&gt;                          and that is called when a style error occurs.
&gt; +                        Defaults to sys.stderr.write.
&gt; +          dispatcher: An instance of a class with a processor() method.
&gt; +                      Defaults to ProcessorDispatcher(stderr_write).

How about mentioning these keyword parameters will be used only in unittest?

&gt; +class NoneProcessorTest(unittest.TestCase):
&gt; +
&gt; +    &quot;&quot;&quot;Tests NoneProcessor class.&quot;&quot;&quot;
&gt; +
&gt; +    warning_messages = &quot;&quot;

I slightly prefer to use setUp to initialize a member variables.

def setUp(self):
    self.warning_messages = &quot;&quot;

&gt; +        self.assertEquals(self.warning_messages, &quot;Ignoring file_path: this file is exempt from the style guide.\n&quot;)
&gt; +
&gt; +class ProcessorDispatcherTest(unittest.TestCase):

PEP0008 says &quot;Separate top-level function and class definitions with two blank lines.&quot;

&gt; +    def assert_none_type(self, file_path):
&gt; +        &quot;&quot;&quot;Assert that the dispatched processor is None.&quot;&quot;&quot;
&gt; +        processor = self.processor(file_path)
&gt; +        self.assertEquals(processor.__class__, NoneProcessor)
&gt; +        self.assertFalse(processor._should_write_warning, file_path)

Not sure, but do we need the second parameter?

&gt; +# Used in StyleCheckerProcessLinesTest.
&gt; +class MockStyleProcessor(object):
&gt; +
&gt; +    &quot;&quot;&quot;A mock style processor, for example a mock CppProcessor.&quot;&quot;&quot;
&gt; +
&gt; +    was_process_called = False
&gt; +
&gt; +    def __init__(self, error=None, file_path=None, lines=None, verbosity=None):
&gt; +        self.error = error
&gt; +        self.file_path = file_path
&gt; +        self.lines = lines
&gt; +        self.verbosity = verbosity
&gt; +
&gt; +    def process(self):
&gt; +        self.was_process_called = True
&gt; +

Two line blank lines here. Or, how about putting this in StyleCheckerProcessLinesTest like MockProcessorDispatcher?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182626</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-19 23:27:00 -0800</bug_when>
    <thetext>(In reply to comment #5)

Thanks a lot for the comments!  New patch forthcoming.

&gt; I prefer to create a list of exempted file names, like
&gt; 
&gt; EXEMPTED_FILENAMES = [
&gt;     # The Qt API and tests do not follow WebKit style.
&gt;     # They follow Qt style. :)
&gt;     &apos;WebKit/qt/Api/&apos;,
&gt;     &apos;WebKit/qt/tests/&apos;,
&gt;     &apos;WebCore/platform/gtk/gtk2drawing.c&apos;,
&gt;     &apos;WebCore/platform/gtk/gtk2drawing.h&apos;,
&gt; ]
&gt; for exempted in EXEMPTED_FILENAMES:
&gt;     if file_path.find(exempted) &gt;= 0:
&gt;         return True
&gt; return False

Good suggestion.  I will also do this for the other type of exempted file (skip with no warning).

&gt; It&apos;s OK as is if you like the current structure, but this looks a bit redundant
&gt; to me. I&apos;d just combine _file_type and _create_processor and remove constants
&gt; like &quot;cpp&quot;, &quot;text&quot;, &quot;exempt&quot;, and &quot;none&quot;.

I prefer keeping them separate since the file type depends only on the path and extension, and separating the two makes this fact clearer.  I changed the strings to an enum-like idiom to avoid use of strings -- if that helps.  Also, in the future we may want to separate this class into two classes (ProcessorFactory and FileTypeResolver).

&gt; &gt; +    def assert_none_type(self, file_path):
&gt; &gt; +        &quot;&quot;&quot;Assert that the dispatched processor is None.&quot;&quot;&quot;
&gt; &gt; +        processor = self.processor(file_path)
&gt; &gt; +        self.assertEquals(processor.__class__, NoneProcessor)
&gt; &gt; +        self.assertFalse(processor._should_write_warning, file_path)
&gt; 
&gt; Not sure, but do we need the second parameter?

The second parameter is for the message if a unit test fails.  I was using it to troubleshoot in this case.  I will make a more complete message in the next patch.  I think we should consider using the message parameter more often in future asserts.  Up to this point, I don&apos;t think we have been.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182640</commentid>
    <comment_count>7</comment_count>
      <attachid>46985</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-19 23:52:58 -0800</bug_when>
    <thetext>Created attachment 46985
Proposed patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182643</commentid>
    <comment_count>8</comment_count>
      <attachid>46985</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-20 00:02:11 -0800</bug_when>
    <thetext>Comment on attachment 46985
Proposed patch 4

Thanks for addressing my comments! Looks good.

&gt; I prefer keeping them separate since the file type depends only on the path and
&gt; extension, and separating the two makes this fact clearer.  I changed the
&gt; strings to an enum-like idiom to avoid use of strings -- if that helps.  Also,
&gt; in the future we may want to separate this class into two classes
&gt; (ProcessorFactory and FileTypeResolver).

Thanks for creating the enum values. I think using them is better than the string-literal approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182662</commentid>
    <comment_count>9</comment_count>
      <attachid>46985</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-20 01:12:33 -0800</bug_when>
    <thetext>Comment on attachment 46985
Proposed patch 4

I just discovered an issue I should probably address.  The code does not check whether the file should be skipped until after it has read all the lines:

&gt; lines = codecs.open(filename, &apos;r&apos;, &apos;utf8&apos;, &apos;replace&apos;).read().split(&apos;\n&apos;)

This should really be done only after we know the file is not skipped.  I don&apos;t know if this would be an issue with binary files, etc.  In any case, it&apos;s not necessary to read files that will be skipped anyways.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182729</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-20 03:51:19 -0800</bug_when>
    <thetext>I&apos;m confused why we have a patch attached which has r+/cq+ and is obsolete.  Sadly obsolete patches still show up in http://webkit.org/pending-commit so we should either clear the flags, or un-obsolete the patch if it is to be landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182786</commentid>
    <comment_count>11</comment_count>
      <attachid>46985</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-20 07:15:56 -0800</bug_when>
    <thetext>Comment on attachment 46985
Proposed patch 4

Clearing the r+ flag. Chris found a potential issue (comment #9) after I r+ed. Sorry I couldn&apos;t find the issue before I r+ed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183069</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-20 20:57:21 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 46985 [details])
&gt; Clearing the r+ flag. Chris found a potential issue (comment #9) after I r+ed.
&gt; Sorry I couldn&apos;t find the issue before I r+ed.

I assumed obsoleting took precedence over all the other flags, so I left r/cq alone for posterity.  If this ever happens again in the future, I will mark it cq- myself so you won&apos;t need to Shinichiro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183117</commentid>
    <comment_count>13</comment_count>
      <attachid>47102</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-21 01:11:53 -0800</bug_when>
    <thetext>Created attachment 47102
Proposed patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183285</commentid>
    <comment_count>14</comment_count>
      <attachid>47140</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-21 12:42:59 -0800</bug_when>
    <thetext>Created attachment 47140
Proposed patch 6

Minor touch-ups -- almost all to code comments and docstrings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183334</commentid>
    <comment_count>15</comment_count>
      <attachid>47140</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-21 14:58:39 -0800</bug_when>
    <thetext>Comment on attachment 47140
Proposed patch 6

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183475</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-21 21:24:54 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 47140 [details])
&gt; Looks good!

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183476</commentid>
    <comment_count>17</comment_count>
      <attachid>47140</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-21 21:39:30 -0800</bug_when>
    <thetext>Comment on attachment 47140
Proposed patch 6

Clearing flags on attachment: 47140

Committed r53675: &lt;http://trac.webkit.org/changeset/53675&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183477</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-21 21:39:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46785</attachid>
            <date>2010-01-17 21:03:15 -0800</date>
            <delta_ts>2010-01-17 21:08:04 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-33775-1.txt</filename>
            <type>text/plain</type>
            <size>35251</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2MzYxYjRlLi45ZTk0ZDE3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDEt
MTcgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JlZCBmaWxlIG5hbWUg
YW5kIGZpbGUtcmVhZGluZyByZWxhdGVkIGNvZGUgZnJvbQorICAgICAgICBjcHBfc3R5bGUucHkg
YW5kIHRleHRfc3R5bGUucHkgaW50byBjaGVja2VyLnB5LgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc3NQorCisgICAgICAgICogU2NyaXB0cy9j
aGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBVcGRhdGVzIGNhdXNlZCBieSBjaGFuZ2Vz
IHRvIGNoZWNrZXIucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBQcm9jZXNzb3JEaXNwYXRjaGVyIGNsYXNzLgorICAg
ICAgICAgIC0gQWRkZWQgb3B0aW9uYWwgImRpc3BhdGNoZXIiIHBhcmFtZXRlciB0byBTdHlsZUNo
ZWNrZXIgY29uc3RydWN0b3IuCisgICAgICAgICAgLSBBZGRlZCBfcHJvY2Vzc19saW5lcygpLgor
ICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX2ZpbGUoKSB0byBfcHJvY2Vzc19maWxlKCkgYW5k
IHJlZmFjdG9yZWQuCisgICAgICAgICAgLSBBZGRlZCBjaGVja19maWxlIHRvIHJlcGxhY2UgcHJv
Y2Vzc19maWxlKCkuCisgICAgICAgICAgLSBSZW5hbWVkIHByb2Nlc3NfcGF0Y2goKSB0byBjaGVj
a19wYXRjaCgpLgorICAgICAgICAgIC0gQWRkcmVzc2VkIEZJWE1FIGluIGNoZWNrX3BhdGNoKCkg
dG8gc2hhcmUgY29kZSB3aXRoIHByb2Nlc3NfZmlsZSgpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgUHJv
Y2Vzc29yRGlzcGF0Y2hlclRlc3QgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCBNb2NrU3R5bGVQ
cm9jZXNzb3IgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCBNb2NrUHJvY2Vzc29yRGlzcGF0Y2hl
ciBjbGFzcy4KKyAgICAgICAgICAtIEFkZGVkIHRlc3RfcHJvY2Vzc19saW5lcygpIHRvIFN0eWxl
Q2hlY2tlciBjbGFzcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0
eWxlLnB5OgorICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX2ZpbGVfZGF0YSgpIHRvIF9wcm9j
ZXNzX2xpbmVzLgorICAgICAgICAgIC0gUmVtb3ZlZCBwcm9jZXNzX2ZpbGUoKSAobW92ZWQgbG9n
aWMgdG8gY2hlY2tlci5weSkuCisgICAgICAgICAgLSBSZW1vdmVkIGNhbl9oYW5kbGUoKSAobW92
ZWQgbG9naWMgdG8gY2hlY2tlci5weSkuCisgICAgICAgICAgLSBBZGRlZCBDcHBQcm9jZXNzb3Ig
Y2xhc3MuCisgICAgICAgICAgLSBSZW1vdmVkIGlzX2V4ZW1wdCgpIChtb3ZlZCBsb2dpYyB0byBj
aGVja2VyLnB5KS4KKyAgICAgICAgICAtIEFkZGVkIHByb2Nlc3NfZmlsZV9kYXRhKCkgYmFjayBh
cyBhIHdyYXBwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NwcF9zdHlsZV91bml0dGVzdC5weToKKyAgICAgICAgICAtIFJlbW92ZWQgdGVzdF9jYW5faGFu
ZGxlKCkuCisgICAgICAgICAgLSBSZW1vdmVkIHRlc3RfaXNfZXhlbXB0KCkuCisgICAgICAgICAg
LSBBZGRlZCBDcHBQcm9jZXNzb3JUZXN0IGNsYXNzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5OgorICAgICAgICAgIC0gQWRkZWQgVGV4dFByb2Nlc3Nv
ciBjbGFzcy4KKyAgICAgICAgICAtIFJlbW92ZWQgcHJvY2Vzc19maWxlKCkuCisgICAgICAgICAg
LSBSZW1vdmVkIGNhbl9oYW5kbGUoKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weToKKyAgICAgICAgICAtIFJlbW92ZWQgdGVzdF9jYW5f
aGFuZGxlKCkuCisgICAgICAgICAgLSBBZGRlZCBUZXh0UHJvY2Vzc29yVGVzdCBjbGFzcy4KKwog
MjAxMC0wMS0xNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9j
aGVjay13ZWJraXQtc3R5bGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHls
ZQppbmRleCAxNDc1ZTZhLi5hMmI1ODRmIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L2NoZWNrLXdlYmtpdC1zdHlsZQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtp
dC1zdHlsZQpAQCAtNjgsNyArNjgsNyBAQCBkZWYgbWFpbigpOgogCiAgICAgaWYgZmlsZXM6CiAg
ICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgIHN0eWxlX2NoZWNrZXIu
cHJvY2Vzc19maWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVja19m
aWxlKGZpbGVuYW1lKQogCiAgICAgZWxzZToKICAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRo
KCcuJykKQEAgLTg0LDcgKzg0LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc3R5bGVf
Y2hlY2tlci5wcm9jZXNzX3BhdGNoKHBhdGNoKQorICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNr
X3BhdGNoKHBhdGNoKQogCiAgICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5k
OiAlZFxuJyAlIHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQpCiAgICAgc3lzLmV4aXQoc3R5bGVf
Y2hlY2tlci5lcnJvcl9jb3VudCA+IDApCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggYzNmNGRiMC4uOGI3N2M4ZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjksMTUgKzI5LDE0IEBA
CiAKICIiIkZyb250IGVuZCBvZiBzb21lIHN0eWxlLWNoZWNrZXIgbW9kdWxlcy4iIiIKIAotIyBG
SVhNRTogTW92ZSBtb3JlIGNvZGUgZnJvbSBjcHBfc3R5bGUgdG8gaGVyZS4KLQoraW1wb3J0IGNv
ZGVjcwogaW1wb3J0IGdldG9wdAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotaW1wb3J0
IGNwcF9zdHlsZQotaW1wb3J0IHRleHRfc3R5bGUKIGZyb20gZGlmZl9wYXJzZXIgaW1wb3J0IERp
ZmZQYXJzZXIKK2Zyb20gY3BwX3N0eWxlIGltcG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9z
dHlsZSBpbXBvcnQgVGV4dFByb2Nlc3NvcgogCiAKICMgVGhlc2UgZGVmYXVsdHMgYXJlIHVzZWQg
YnkgY2hlY2std2Via2l0LXN0eWxlLgpAQCAtNjE5LDYgKzYxOCwxMDYgQEAgY2xhc3MgQXJndW1l
bnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIChmaWxlbmFtZXMsIG9wdGlvbnMpCiAK
IAorY2xhc3MgUHJvY2Vzc29yRGlzcGF0Y2hlcihvYmplY3QpOgorCisgICAgIiIiU3VwcG9ydHMg
Y2hvb3NpbmcgYW5kIGNyZWF0aW5nIHdoYXQgc3R5bGUgcHJvY2Vzc29yIHRvIHVzZS4iIiIKKwor
ICAgIGNwcF9maWxlX2V4dGVuc2lvbnMgPSAoCisgICAgICAgICdjJywKKyAgICAgICAgJ2NwcCcs
CisgICAgICAgICdoJywKKyAgICApCisKKyAgICB0ZXh0X2ZpbGVfZXh0ZW5zaW9ucyA9ICgKKyAg
ICAgICAgJ2NzcycsCisgICAgICAgICdodG1sJywKKyAgICAgICAgJ2lkbCcsCisgICAgICAgICdq
cycsCisgICAgICAgICdtbScsCisgICAgICAgICdwaHAnLAorICAgICAgICAncG0nLAorICAgICAg
ICAncHknLAorICAgICAgICAndHh0JywKKyAgICApCisKKyAgICBkZWYgX2lzX2V4ZW1wdChzZWxm
LCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJDaGVjayBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBleGVt
cHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIHNvbWUgZmls
ZXMgYXJlIHB1cnBvc2VmdWxseSBtYW50YWluZWQgaW4gTW96aWxsYQorICAgICAgICBzdHlsZSB0
byBlYXNlIGZ1dHVyZSBtZXJnZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBmaWxlX3Bh
dGg6IEEgZmlsZSBwYXRoLgorCisgICAgICAgICIiIgorICAgICAgICBpZiAoZmlsZW5hbWUuZmlu
ZCgnV2ViS2l0L3F0L0FwaS8nKSA+PSAwCisgICAgICAgICAgICBvciBmaWxlbmFtZS5maW5kKCdX
ZWJLaXQvcXQvdGVzdHMvJykgPj0gMCk6CisgICAgICAgICAgICAjIFRoZSBRdCBBUEkgYW5kIHRl
c3RzIGRvIG5vdCBmb2xsb3cgV2ViS2l0IHN0eWxlLgorICAgICAgICAgICAgIyBUaGV5IGZvbGxv
dyBRdCBzdHlsZS4gOikKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmV0dXJu
IG9zLnBhdGguYmFzZW5hbWUoZmlsZV9wYXRoKSBpbiAoCisgICAgICAgICAgICAnZ3RrMmRyYXdp
bmcuYycsCisgICAgICAgICAgICAnZ3RrMmRyYXdpbmcuaCcsCisgICAgICAgICkKKworICAgIGRl
ZiBfZmlsZV90eXBlKHNlbGYsIGZpbGVfcGF0aCwgZmlsZV9leHRlbnNpb24pOgorICAgICAgICAi
IiJSZXR1cm4gd2hhdCBzdHlsZSBwcm9jZXNzb3IgdG8gdXNlIHRvIGNoZWNrIHN0eWxlLgorCisg
ICAgICAgIFJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RyaW5nczogY3BwLCB0ZXh0LCBu
b25lLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19leGVtcHQoZmlsZV9wYXRo
KToKKyAgICAgICAgICAgIHJldHVybiAibm9uZSIKKworICAgICAgICBpZiAoZmlsZV9leHRlbnNp
b24gaW4gc2VsZi5jcHBfZmlsZV9leHRlbnNpb25zKSBvciAoZmlsZV9wYXRoID09ICctJyk6Cisg
ICAgICAgICAgICByZXR1cm4gImNwcCIKKyAgICAgICAgZWxpZiAoKG5vdCAiTGF5b3V0VGVzdHMv
IiBpbiBmaWxlX3BhdGgpCisgICAgICAgICAgICAgIGFuZCAoIkNoYW5nZUxvZyIgaW4gZmlsZV9w
YXRoCisgICAgICAgICAgICAgICAgICAgb3IgIldlYktpdFRvb2xzL1NjcmlwdHMvIiBpbiBmaWxl
X3BhdGgKKyAgICAgICAgICAgICAgICAgICBvciBmaWxlX2V4dGVuc2lvbiBpbiBzZWxmLnRleHRf
ZmlsZV9leHRlbnNpb25zKSk6CisgICAgICAgICAgICByZXR1cm4gInRleHQiCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXR1cm4gIm5vbmUiCisKKyAgICBkZWYgX2NyZWF0ZV9wcm9jZXNz
b3Ioc2VsZiwgZmlsZV90eXBlLCBmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSk6CisgICAgICAgICIiIlJl
dHVybiBhIHN0eWxlIHByb2Nlc3NvciBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGZpbGUgdHlwZS4K
KworICAgICAgICBBcmdzOgorICAgICAgICAgIGZpbGVfdHlwZTogQSBzdHJpbmcgdGhhdCBpcyBl
aXRoZXIgImNwcCIgb3IgInRleHQiLgorICAgICAgICAgIGZpbGVfcGF0aAorICAgICAgICAgIGxp
bmVzCisgICAgICAgICAgZXJyb3IKKyAgICAgICAgICB2ZXJib3NpdHkKKworICAgICAgICAiIiIK
KyAgICAgICAgaWYgZmlsZV90eXBlID09ICJjcHAiOgorICAgICAgICAgICAgIyBGSVhNRTogRG8g
c29tZXRoaW5nIGFib3V0IHRoZSBjb21tZW50IGJlbG93IGFuZCB0aGUgaXNzdWUgaXQKKyAgICAg
ICAgICAgICMgICAgICAgIHJhaXNlcyBzaW5jZSBjcHBfc3R5bGUgYWxyZWFkeSByZWxpZXMgb24g
dGhlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgV2hlbiByZWFkaW5n
IGZyb20gc3RkaW4sIHRoZSBleHRlbnNpb24gaXMgdW5rbm93biwgc28gbm8KKyAgICAgICAgICAg
ICMgY3BwX3N0eWxlIHRlc3RzIHNob3VsZCByZWx5IG9uIHRoZSBleHRlbnNpb24uCisgICAgICAg
ICAgICBwcm9jZXNzb3IgPSBDcHBQcm9jZXNzb3IoZmlsZV9wYXRoLCBmaWxlX2V4dGVuc2lvbiwg
bGluZXMsIGVycm9yLCB2ZXJib3NpdHkpCisgICAgICAgIGVsaWYgZmlsZV90eXBlID09ICJ0ZXh0
IjoKKyAgICAgICAgICAgIHByb2Nlc3NvciA9IFRleHRQcm9jZXNzb3IoZmlsZV9wYXRoLCBsaW5l
cywgZXJyb3IpCisgICAgICAgIGVsaWYgZmlsZV90eXBlID09ICJub25lIjoKKyAgICAgICAgICAg
IHByb2Nlc3NvciA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0ludmFsaWQgZmlsZSB0eXBlICIlcyI6IHRoZSB2YWxpZCBmaWxlIHR5cGVzICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZSAtLSBjcHAsIHRleHQsIGFuZCBub25lLiIg
JSBmaWxlX3R5cGUpCisKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NvcgorCisgICAgZGVmIGRpc3Bh
dGNoX3Byb2Nlc3NvcihzZWxmLCBmaWxlX3BhdGgsIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToK
KyAgICAgICAgZmlsZV9leHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVfcGF0aClbMV0u
bHN0cmlwKCIuIikKKworICAgICAgICBmaWxlX3R5cGUgPSBzZWxmLl9maWxlX3R5cGUoZmlsZV9w
YXRoLCBmaWxlX2V4dGVuc2lvbikKKworICAgICAgICByZXR1cm4gc2VsZi5fY3JlYXRlX3Byb2Nl
c3NvcihmaWxlX3R5cGUsIGZpbGVfcGF0aCwgZmlsZV9leHRlbnNpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KQorCisKIGNs
YXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogCiAgICAgIiIiU3VwcG9ydHMgY2hlY2tpbmcgc3R5
bGUgaW4gZmlsZXMgYW5kIHBhdGNoZXMuCkBAIC02MzIsMTggKzczMSwyOCBAQCBjbGFzcyBTdHls
ZUNoZWNrZXIob2JqZWN0KToKIAogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9w
dGlvbnMsIHdyaXRlX2Vycm9yPXN5cy5zdGRlcnIud3JpdGUpOgorICAgICMgVGhlICJzdGRlcnJf
d3JpdGUiIGFuZCAiZGlzcGF0Y2hlciIgcGFyYW1ldGVycyBhcmUgZm9yIHVuaXQgdGVzdGluZy4K
KyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgc3RkZXJyX3dyaXRlPU5vbmUsIGRpc3Bh
dGNoZXI9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIFN0eWxlQ2hlY2tlciBpbnN0YW5jZS4K
IAogICAgICAgICBBcmdzOgogICAgICAgICAgIG9wdGlvbnM6IFNlZSBvcHRpb25zIGF0dHJpYnV0
ZS4KICAgICAgICAgICBzdGRlcnJfd3JpdGU6IEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHN0cmlu
ZyBhcyBhIHBhcmFtZXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoYXQgaXMgY2Fs
bGVkIHdoZW4gYSBzdHlsZSBlcnJvciBvY2N1cnMuCisgICAgICAgICAgICAgICAgICAgICAgIGFu
ZCB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgc3R5bGUgZXJyb3Igb2NjdXJzLgorICAgICAgICAgICAg
ICAgICAgICAgICBEZWZhdWx0cyB0byBzeXMuc3RkZXJyLndyaXRlLgorICAgICAgICAgIGRpc3Bh
dGNoZXI6IEFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBhIHByb2Nlc3NvcigpIG1ldGhvZC4K
KyAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0cyB0byBQcm9jZXNzb3JEaXNwYXRjaGVyKCku
CiAKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3dyaXRlX2Vycm9yID0gd3JpdGVfZXJyb3IK
LSAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworICAgICAgICBpZiBzdGRlcnJfd3JpdGUg
aXMgTm9uZToKKyAgICAgICAgICAgIHN0ZGVycl93cml0ZSA9IHN5cy5zdGRlcnIud3JpdGUKKyAg
ICAgICAgaWYgZGlzcGF0Y2hlciBpcyBOb25lOgorICAgICAgICAgICAgZGlzcGF0Y2hlciA9IFBy
b2Nlc3NvckRpc3BhdGNoZXIoKQorCisgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIgPSBkaXNwYXRj
aGVyCisgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSA9IHN0ZGVycl93cml0ZQogICAgICAgICBz
ZWxmLmVycm9yX2NvdW50ID0gMAorICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCiAKICAg
ICBkZWYgX2hhbmRsZV9lcnJvcihzZWxmLCBmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5
LCBjb25maWRlbmNlLCBtZXNzYWdlKToKICAgICAgICAgIiIiSGFuZGxlIHRoZSBvY2N1cnJlbmNl
IG9mIGEgc3R5bGUgZXJyb3Igd2hpbGUgY2hlY2tpbmcuCkBAIC02NzUsMjEgKzc4NCw3MiBAQCBj
bGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZv
cm1hdF9zdHJpbmcgPSAiJXM6JXM6ICAlcyAgWyVzXSBbJWRdXG4iCiAKLSAgICAgICAgc2VsZi5f
d3JpdGVfZXJyb3IoZm9ybWF0X3N0cmluZyAlIChmaWxlbmFtZSwgbGluZV9udW1iZXIsIG1lc3Nh
Z2UsCisgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZShmb3JtYXRfc3RyaW5nICUgKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCiAKLSAgICBkZWYgcHJvY2Vzc19maWxl
KHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgIiIiQ2hlY2tzIHN0eWxlIGZvciB0aGUgc3BlY2lm
aWVkIGZpbGUuCisgICAgZGVmIF9wcm9jZXNzX2xpbmVzKHNlbGYsIGZpbGVfcGF0aCwgbGluZXMs
IGVycm9yKToKKyAgICAgICAgIiIiQ2hlY2sgc3R5bGUgaW4gdGhlIGdpdmVuIGxpbmVzLiIiIgor
ICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5fZGlzcGF0Y2hlcgorICAgICAgICB2ZXJib3NpdHkg
PSBzZWxmLm9wdGlvbnMudmVyYm9zaXR5CisKKyAgICAgICAgcHJvY2Vzc29yID0gZGlzcGF0Y2hl
ci5kaXNwYXRjaF9wcm9jZXNzb3IoZmlsZV9wYXRoLCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSkK
KworICAgICAgICBpZiBwcm9jZXNzb3IgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorCisg
ICAgICAgIHByb2Nlc3Nvci5wcm9jZXNzKCkKKworICAgIGRlZiBfcHJvY2Vzc19maWxlKHNlbGYs
IGZpbGVuYW1lLCBlcnJvcik6CisgICAgICAgICIiIkNoZWNrIHN0eWxlIGluIGEgc2luZ2xlIGZp
bGUuCiAKLSAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSBpcyAnLScsIGFwcGxpZXMg
Y3BwX3N0eWxlIHRvIHRoZSBzdGFuZGFyZCBpbnB1dC4KKyAgICAgICAgQXJnczoKKyAgICAgICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcGFyc2UuCisgICAgICAgICAgZXJy
b3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KIAogICAgICAg
ICAiIiIKLSAgICAgICAgaWYgY3BwX3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpIG9yIGZpbGVu
YW1lID09ICctJzoKLSAgICAgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUs
IHNlbGYuX2hhbmRsZV9lcnJvciwgc2VsZi5vcHRpb25zLnZlcmJvc2l0eSkKLSAgICAgICAgZWxp
ZiB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgdGV4dF9zdHls
ZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHNlbGYuX2hhbmRsZV9lcnJvcikKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgIyBTdXBwb3J0IHRoZSBVTklYIGNvbnZlbnRpb24gb2YgdXNpbmcgIi0i
IGZvciBzdGRpbi4gIE5vdGUgdGhhdAorICAgICAgICAgICAgIyB3ZSBhcmUgbm90IG9wZW5pbmcg
dGhlIGZpbGUgd2l0aCB1bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0CisgICAgICAgICAgICAjICh3
aGljaCBjb2RlY3MgZG9lc24ndCBzdXBwb3J0IGFueXdheSksIHNvIHRoZSByZXN1bHRpbmcgbGlu
ZXMgZG8KKyAgICAgICAgICAgICMgY29udGFpbiB0cmFpbGluZyAnXHInIGNoYXJhY3RlcnMgaWYg
d2UgYXJlIHJlYWRpbmcgYSBmaWxlIHRoYXQKKyAgICAgICAgICAgICMgaGFzIENSTEYgZW5kaW5n
cy4KKyAgICAgICAgICAgICMgSWYgYWZ0ZXIgdGhlIHNwbGl0IGEgdHJhaWxpbmcgJ1xyJyBpcyBw
cmVzZW50LCBpdCBpcyByZW1vdmVkCisgICAgICAgICAgICAjIGJlbG93LiBJZiBpdCBpcyBub3Qg
ZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCAoaS5lLiBvcy5saW5lc2VwICE9CisgICAgICAgICAgICAj
ICdcclxuJyBhcyBpbiBXaW5kb3dzKSwgYSB3YXJuaW5nIGlzIGlzc3VlZCBiZWxvdyBpZiB0aGlz
IGZpbGUKKyAgICAgICAgICAgICMgaXMgcHJvY2Vzc2VkLgorICAgICAgICAgICAgaWYgZmlsZW5h
bWUgPT0gJy0nOgorICAgICAgICAgICAgICAgIGxpbmVzID0gY29kZWNzLlN0cmVhbVJlYWRlcldy
aXRlcihzeXMuc3RkaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvZGVjcy5nZXRyZWFkZXIoJ3V0ZjgnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFj
ZScpLnJlYWQoKS5zcGxpdCgnXG4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBsaW5lcyA9IGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKS5y
ZWFkKCkuc3BsaXQoJ1xuJykKKworICAgICAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0g
RmFsc2UKKyAgICAgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nICdccicuCisgICAgICAgICAgICBm
b3IgbGluZV9udW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVzKSk6CisgICAgICAgICAgICAgICAgaWYg
bGluZXNbbGluZV9udW1iZXJdLmVuZHN3aXRoKCdccicpOgorICAgICAgICAgICAgICAgICAgICBs
aW5lc1tsaW5lX251bWJlcl0gPSBsaW5lc1tsaW5lX251bWJlcl0ucnN0cmlwKCdccicpCisgICAg
ICAgICAgICAgICAgICAgIGNhcnJpYWdlX3JldHVybl9mb3VuZCA9IFRydWUKKworICAgICAgICBl
eGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgiU2tpcHBpbmcg
aW5wdXQgJyVzJzogQ2FuJ3Qgb3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVuYW1lKQorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fcHJvY2Vzc19saW5lcyhmaWxlbmFtZSwgbGlu
ZXMsIGVycm9yKQorCisgICAgICAgIGlmIGNhcnJpYWdlX3JldHVybl9mb3VuZCBhbmQgb3MubGlu
ZXNlcCAhPSAnXHJcbic6CisgICAgICAgICAgICAjIFVzZSAwIGZvciBsaW5lX251bWJlciBzaW5j
ZSBvdXRwdXRpbmcgb25seSBvbmUgZXJyb3IgZm9yIHBvdGVudGlhbGx5CisgICAgICAgICAgICAj
IHNldmVyYWwgbGluZXMuCisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgMCwgJ3doaXRlc3Bh
Y2UvbmV3bGluZScsIDEsCisgICAgICAgICAgICAgICAgICAnT25lIG9yIG1vcmUgdW5leHBlY3Rl
ZCBcXHIgKF5NKSBmb3VuZDsnCisgICAgICAgICAgICAgICAgICAnYmV0dGVyIHRvIHVzZSBvbmx5
IGEgXFxuJykKKworICAgIGRlZiBjaGVja19maWxlKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAg
IGVycm9yID0gc2VsZi5faGFuZGxlX2Vycm9yCisgICAgICAgIHNlbGYuX3Byb2Nlc3NfZmlsZShm
aWxlX3BhdGgsIGVycm9yKQogCi0gICAgZGVmIHByb2Nlc3NfcGF0Y2goc2VsZiwgcGF0Y2hfc3Ry
aW5nKToKKyAgICBkZWYgY2hlY2tfcGF0Y2goc2VsZiwgcGF0Y2hfc3RyaW5nKToKICAgICAgICAg
IiIiRG9lcyBsaW50IG9uIGEgc2luZ2xlIHBhdGNoLgogCiAgICAgICAgIEFyZ3M6CkBAIC02OTgs
NyArODU4LDYgQEAgY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICIiIgogICAg
ICAgICBwYXRjaCA9IERpZmZQYXJzZXIocGF0Y2hfc3RyaW5nLnNwbGl0bGluZXMoKSkKICAgICAg
ICAgZm9yIGZpbGVuYW1lLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygpOgotICAgICAg
ICAgICAgZmlsZV9leHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQogICAg
ICAgICAgICAgbGluZV9udW1iZXJzID0gc2V0KCkKIAogICAgICAgICAgICAgZGVmIGVycm9yX2Zv
cl9wYXRjaChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNz
YWdlKToKQEAgLTcxNyw4ICs4NzYsNCBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAg
ICAgICAgICAgICAgICBpZiBsaW5lX251bWJlciBpbiBsaW5lX251bWJlcnM6CiAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2hhbmRsZV9lcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVn
b3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQogCi0gICAgICAgICAgICAjIEZJWE1FOiBTaGFyZSB0
aGlzIGNvZGUgd2l0aCBzZWxmLnByb2Nlc3NfZmlsZSgpLgotICAgICAgICAgICAgaWYgY3BwX3N0
eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wcm9j
ZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yX2Zvcl9wYXRjaCwgc2VsZi5vcHRpb25zLnZlcmJvc2l0
eSkKLSAgICAgICAgICAgIGVsaWYgdGV4dF9zdHlsZS5jYW5faGFuZGxlKGZpbGVuYW1lKToKLSAg
ICAgICAgICAgICAgICB0ZXh0X3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3JfZm9y
X3BhdGNoKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcl9m
b3JfcGF0Y2gpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXggNWE2ZTY1MC4uNzE4OGYwMSAxMDA3NTUKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5w
eQpAQCAtMzgsOCArMzgsMTEgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBjaGVja2VyIGFz
IHN0eWxlCiBmcm9tIGNoZWNrZXIgaW1wb3J0IENhdGVnb3J5RmlsdGVyCitmcm9tIGNoZWNrZXIg
aW1wb3J0IFByb2Nlc3NvckRpc3BhdGNoZXIKIGZyb20gY2hlY2tlciBpbXBvcnQgUHJvY2Vzc29y
T3B0aW9ucwogZnJvbSBjaGVja2VyIGltcG9ydCBTdHlsZUNoZWNrZXIKK2Zyb20gY3BwX3N0eWxl
IGltcG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9zdHlsZSBpbXBvcnQgVGV4dFByb2Nlc3Nv
cgogCiBjbGFzcyBDYXRlZ29yeUZpbHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0z
NTIsNiArMzU1LDE1MyBAQCBjbGFzcyBBcmd1bWVudFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmaWxlcywgWydmb28uY3BwJywgJ2Jhci5j
cHAnXSkKIAogCitjbGFzcyBQcm9jZXNzb3JEaXNwYXRjaGVyVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CisKKyAgICAiIiJUZXN0cyBQcm9jZXNzb3JEaXNwYXRjaGVyIGNsYXNzLiIiIgorCisgICAg
ZGVmIG1vY2tfZXJyb3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBwcm9jZXNzb3Io
c2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IFByb2Nlc3NvckRpc3BhdGNo
ZXIoKQorICAgICAgICBwcm9jZXNzb3IgPSBkaXNwYXRjaGVyLmRpc3BhdGNoX3Byb2Nlc3Nvcihm
aWxlX3BhdGgsIFsibGluZSJdLCBzZWxmLm1vY2tfZXJyb3IsIDMpCisgICAgICAgIHJldHVybiBw
cm9jZXNzb3IKKworICAgIGRlZiBhc3NlcnRfY3BwKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAg
ICIiIkFzc2VydCB0aGF0IHRoZSBkaXNwYXRjaGVkIHByb2Nlc3NvciBpcyBhIENwcFByb2Nlc3Nv
ci4iIiIKKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5wcm9jZXNzb3IoZmlsZV9wYXRoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuX19jbGFzc19fLCBDcHBQcm9jZXNzb3Ip
CisKKyAgICBkZWYgYXNzZXJ0X3RleHQoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiQXNz
ZXJ0IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlzIGEgVGV4dFByb2Nlc3Nvci4iIiIK
KyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5wcm9jZXNzb3IoZmlsZV9wYXRoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuX19jbGFzc19fLCBUZXh0UHJvY2Vzc29yKQorCisg
ICAgZGVmIGFzc2VydF9ub25lKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIkFzc2VydCB0
aGF0IHRoZSBkaXNwYXRjaGVkIHByb2Nlc3NvciBpcyBOb25lLiIiIgorICAgICAgICBwcm9jZXNz
b3IgPSBzZWxmLnByb2Nlc3NvcihmaWxlX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KHByb2Nlc3NvciwgTm9uZSkKKworICAgIGRlZiB0ZXN0X2NwcF9wYXRocyhzZWxmKToKKyAgICAg
ICAgIiIiVGVzdCBwYXRocyB0aGF0IHNob3VsZCBiZSBjaGVja2VkIGFzIEMrKy4iIiIKKyAgICAg
ICAgcGF0aHMgPSBbCisgICAgICAgICAgICAiLSIsCisgICAgICAgICAgICAiZm9vLmMiLAorICAg
ICAgICAgICAgImZvby5jcHAiLAorICAgICAgICAgICAgImZvby5oIiwKKyAgICAgICAgXQorCisg
ICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRfY3BwKHBh
dGgpCisKKyAgICAgICAgIyBDaGVjayBwcm9jZXNzb3IgYXR0cmlidXRlcy4KKyAgICAgICAgcHJv
Y2Vzc29yID0gc2VsZi5wcm9jZXNzb3IoImZvby5jIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocHJvY2Vzc29yLmVycm9yLCBzZWxmLm1vY2tfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHByb2Nlc3Nvci5maWxlX2V4dGVuc2lvbiwgImMiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZm9vLmMiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhwcm9jZXNzb3IubGluZXMsIFsibGluZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhwcm9jZXNzb3IudmVyYm9zaXR5LCAzKQorICAgICAgICBwcm9jZXNzb3IgPSBzZWxmLnBy
b2Nlc3NvcigiLSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX2V4
dGVuc2lvbiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3Bh
dGgsICItIikKKworICAgIGRlZiB0ZXN0X3RleHQoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGF0
aHMgdGhhdCBzaG91bGQgYmUgY2hlY2tlZCBhcyB0ZXh0LiIiIgorICAgICAgICBwYXRocyA9IFsK
KyAgICAgICAgICAgIkNoYW5nZUxvZyIsCisgICAgICAgICAgICJmb28uY3NzIiwKKyAgICAgICAg
ICAgImZvby5odG1sIiwKKyAgICAgICAgICAgImZvby5pZGwiLAorICAgICAgICAgICAiZm9vLmpz
IiwKKyAgICAgICAgICAgImZvby5tbSIsCisgICAgICAgICAgICJmb28ucGhwIiwKKyAgICAgICAg
ICAgImZvby5wbSIsCisgICAgICAgICAgICJmb28ucHkiLAorICAgICAgICAgICAiZm9vLnR4dCIs
CisgICAgICAgICAgICJGb29DaGFuZ2VMb2cuYmFrIiwKKyAgICAgICAgICAgIldlYkNvcmUvQ2hh
bmdlTG9nIiwKKyAgICAgICAgICAgIldlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMiLAorICAgICAgICAgICAiV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQ9c3R5
bGUiLAorICAgICAgICAgICAiV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL3RleHRfc3R5bGUu
cHkiLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydF90ZXh0KHBhdGgpCisKKyAgICAgICAgIyBDaGVjayBwcm9jZXNzb3IgYXR0
cmlidXRlcy4KKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5wcm9jZXNzb3IoImZvby5jc3MiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZXJyb3IsIHNlbGYubW9ja19lcnJv
cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgImZvby5j
c3MiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IubGluZXMsIFsibGluZSJd
KQorCisgICAgZGVmIHRlc3Rfbm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwYXRocyB0aGF0
IHNob3VsZCBub3QgYmUgY2hlY2tlZC4iIiIKKyAgICAgICAgcGF0aHMgPSBbCisgICAgICAgICAg
ICIiLAorICAgICAgICAgICAiZm9vLmMvYmFyLnBuZyIsCisgICAgICAgICAgICJmb28uY2MiLAor
ICAgICAgICAgICAiZm9vLmN4eCIsCisgICAgICAgICAgICJmb28uQyIsCisgICAgICAgICAgICJm
b28uaHBwIiwKKyAgICAgICAgICAgImZvby5wbmciLAorICAgICAgICAgICAiTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuanMiLAorICAgICAgICAgICAibW0iLAorICAgICAgICAg
ICAiTWFrZWZpbGUiLAorICAgICAgICAgICAiV2ViQ29yZS9BbmRyb2lkLm1rIiwKKyAgICAgICAg
ICAgIldlYktpdC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MiLAorICAgICAgICAg
ICAiV2ViS2l0VG9vbHMvU2NyaXB0cyIsCisgICAgICAgICAgICMgRXhlbXB0ZWQgZmlsZXMKKyAg
ICAgICAgICAgImd0azJkcmF3aW5nLmMiLAorICAgICAgICAgICAiZ3RrMmRyYXdpbmcuaCIsCisg
ICAgICAgICAgICJXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5oIiwKKyAgICAgICAg
ICAgIldlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMiLAorICAgICAgICAgICAjIEV4
ZW1wdGVkIGZvbGRlcnMKKyAgICAgICAgICAgIldlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCIsCisg
ICAgICAgICAgICJXZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2Vj
dXJpdHlvcmlnaW4uY3BwIiwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBwYXRoIGluIHBhdGhz
OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRfbm9uZShwYXRoKQorCisKK2NsYXNzIE1vY2tTdHls
ZVByb2Nlc3NvcihvYmplY3QpOgorCisgICAgIiIiQSBtb2NrIHN0eWxlIHByb2Nlc3NvciwgZm9y
IGV4YW1wbGUgYSBtb2NrIENwcFByb2Nlc3Nvci4iIiIKKworICAgIGVycm9yID0gTm9uZQorICAg
IGZpbGVfcGF0aCA9IE5vbmUKKyAgICBsaW5lcyA9IE5vbmUKKyAgICB2ZXJib3NpdHkgPSBOb25l
CisgICAgd2FzX3Byb2Nlc3NfY2FsbGVkID0gRmFsc2UKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
KToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHByb2Nlc3Moc2VsZik6CisgICAgICAgIHNlbGYu
d2FzX3Byb2Nlc3NfY2FsbGVkID0gVHJ1ZQorCisKK2NsYXNzIE1vY2tQcm9jZXNzb3JEaXNwYXRj
aGVyKG9iamVjdCk6CisKKyAgICAiIiJBIG1vY2sgUHJvY2Vzc29yRGlzcGF0Y2hlci4iIiIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzb3IpOgorICAgICAgICBzZWxmLnByb2Nlc3Nv
ciA9IHByb2Nlc3NvcgorCisgICAgZGVmIGRpc3BhdGNoX3Byb2Nlc3NvcihzZWxmLCBmaWxlX3Bh
dGgsIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBhcHBy
b3ByaWF0ZSBzdHlsZSBwcm9jZXNzb3IuIiIiCisgICAgICAgIGlmIGZpbGVfcGF0aCA9PSAiZG9f
bm90X3Byb2Nlc3MucG5nIjoKKyAgICAgICAgICAgIHByb2Nlc3NvciA9IE5vbmUKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHByb2Nlc3NvciA9IHNlbGYucHJvY2Vzc29yCisgICAgICAgICAg
ICBwcm9jZXNzb3IuZXJyb3IgPSBlcnJvcgorICAgICAgICAgICAgcHJvY2Vzc29yLmZpbGVfcGF0
aCA9IGZpbGVfcGF0aAorICAgICAgICAgICAgcHJvY2Vzc29yLmxpbmVzID0gbGluZXMKKyAgICAg
ICAgICAgIHByb2Nlc3Nvci52ZXJib3NpdHkgPSB2ZXJib3NpdHkKKworICAgICAgICByZXR1cm4g
cHJvY2Vzc29yCisKKwogY2xhc3MgU3R5bGVDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICAiIiJUZXN0IHRoZSBTdHlsZUNoZWNrZXIgY2xhc3MuCkBAIC0zNjQsMTMgKzUxNCwx
NiBAQCBjbGFzcyBTdHlsZUNoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGVy
cm9yX21lc3NhZ2UgPSAiIgogCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYp
OgorICAgICAgICBwYXNzCisKICAgICBkZWYgbW9ja193cml0ZV9lcnJvcihzZWxmLCBlcnJvcl9t
ZXNzYWdlKToKICAgICAgICAgIiIiU3RvcmUgYW4gZXJyb3IgbWVzc2FnZSB3aXRob3V0IHByaW50
aW5nIGl0LiIiIgogICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2UgPSBlcnJvcl9tZXNzYWdlCiAg
ICAgICAgIHBhc3MKIAotICAgIGRlZiBzdHlsZV9jaGVja2VyKHNlbGYsIG9wdGlvbnMpOgotICAg
ICAgICByZXR1cm4gU3R5bGVDaGVja2VyKG9wdGlvbnMsIHNlbGYubW9ja193cml0ZV9lcnJvcikK
KyAgICBkZWYgc3R5bGVfY2hlY2tlcihzZWxmLCBvcHRpb25zLCBkaXNwYXRjaGVyPU5vbmUpOgor
ICAgICAgICByZXR1cm4gU3R5bGVDaGVja2VyKG9wdGlvbnMsIHNlbGYubW9ja193cml0ZV9lcnJv
ciwgZGlzcGF0Y2hlcikKIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgICIiIlRl
c3QgX19pbml0X18gY29uc3RydWN0b3IuIiIiCkBAIC00MTMsNiArNTY2LDMyIEBAIGNsYXNzIFN0
eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzdHlsZV9jaGVja2VyLmVycm9yX2NvdW50LCAyKSAjIEVycm9yIGNvbmZpZGVuY2UganVz
dCBoaWdoIGVub3VnaC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5lcnJvcl9tZXNz
YWdlLCAiZmlsZW5hbWUoMSk6ICBtZXNzYWdlICBbY2F0ZWdvcnldIFszXVxuIikKIAorICAgIGRl
ZiB0ZXN0X3Byb2Nlc3NfbGluZXMoc2VsZik6CisgICAgICAgICIiIlRlc3QgX3Byb2Nlc3NfbGlu
ZXMoKS4iIiIKKyAgICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9wdGlvbnModmVyYm9zaXR5PTMp
CisgICAgICAgIHByb2Nlc3NvciA9IE1vY2tTdHlsZVByb2Nlc3NvcigpCisgICAgICAgIGRpc3Bh
dGNoZXIgPSBNb2NrUHJvY2Vzc29yRGlzcGF0Y2hlcihwcm9jZXNzb3IpCisgICAgICAgIHN0eWxl
X2NoZWNrZXIgPSBzZWxmLnN0eWxlX2NoZWNrZXIob3B0aW9ucywgZGlzcGF0Y2hlcikKKworICAg
ICAgICBzZWxmLmFzc2VydFRydWUocHJvY2Vzc29yLmVycm9yIGlzIE5vbmUpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuZmlsZV9wYXRoIGlzIE5vbmUpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShwcm9jZXNzb3IubGluZXMgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHByb2Nlc3Nvci52ZXJib3NpdHkgaXMgTm9uZSkKKworICAgICAgICAjIFRlc3QgYSBmaWxl
IHRoYXQgc2hvdWxkIG5vdCBiZSBwcm9jZXNzZWQuCisgICAgICAgIHN0eWxlX2NoZWNrZXIuX3By
b2Nlc3NfbGluZXMoImRvX25vdF9wcm9jZXNzLnBuZyIsIFsibGluZSJdLCBzZWxmLm1vY2tfaGFu
ZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci53YXNf
cHJvY2Vzc19jYWxsZWQpCisKKyAgICAgICAgIyBUZXN0IGEgZmlsZSB0aGF0IHNob3VsZCBiZSBw
cm9jZXNzZWQuCisgICAgICAgIHN0eWxlX2NoZWNrZXIuX3Byb2Nlc3NfbGluZXMoIkNoYW5nZWxv
ZyIsIFsibGluZSJdLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICAjIFZl
cmlmeSB0aGF0IHRoZSBwcm9jZXNzb3IgaXMgZ2V0dGluZyBjYWxsZWQgYW5kIHBhc3NlZCBhbGwg
b2YKKyAgICAgICAgIyB0aGUgaW5mb3JtYXRpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
cm9jZXNzb3Iud2FzX3Byb2Nlc3NfY2FsbGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw
cm9jZXNzb3IuZXJyb3IsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJDaGFuZ2Vsb2ciKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IubGluZXMsIFsibGluZSJdKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IudmVyYm9zaXR5LCAzKQorCiAKIGlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weQppbmRleCBlYTBhNjRiLi4zNzdhMDJiIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weQpAQCAt
NCw2ICs0LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgogIyBDb3B5
cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgxMiw3ICsyODEzLDcgQEAgZGVmIHByb2Nl
c3NfbGluZShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sCiAgICAgY2hlY2tfaW52YWxpZF9pbmNy
ZW1lbnQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKIAogCi1kZWYgcHJvY2Vz
c19maWxlX2RhdGEoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHZlcmJv
c2l0eSk6CitkZWYgX3Byb2Nlc3NfbGluZXMoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5l
cywgZXJyb3IsIHZlcmJvc2l0eSk6CiAgICAgIiIiUGVyZm9ybXMgbGludCBjaGVja3MgYW5kIHJl
cG9ydHMgYW55IGVycm9ycyB0byB0aGUgZ2l2ZW4gZXJyb3IgZnVuY3Rpb24uCiAKICAgICBBcmdz
OgpAQCAtMjg1MSw4OSArMjg1MiwzMSBAQCBkZWYgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUs
IGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSk6CiAgICAgY2hlY2tfZm9y
X25ld19saW5lX2F0X2VvZihmaWxlbmFtZSwgbGluZXMsIGVycm9yKQogCiAKLWRlZiBwcm9jZXNz
X2ZpbGUoZmlsZW5hbWUsIGVycm9yLCB2ZXJib3NpdHkpOgotICAgICIiIlBlcmZvcm1zIGNwcF9z
dHlsZSBvbiBhIHNpbmdsZSBmaWxlLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUg
bmFtZSBvZiB0aGUgZmlsZSB0byBwYXJzZS4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8g
Y2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgICB2ZXJib3NpdHk6IEFuIGludGVnZXIg
dGhhdCBpcyB0aGUgdmVyYm9zaXR5IGxldmVsIHRvIHVzZSB3aGlsZQotICAgICAgICAgICAgICAg
ICBjaGVja2luZyBzdHlsZS4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgICMgU3VwcG9ydCB0
aGUgVU5JWCBjb252ZW50aW9uIG9mIHVzaW5nICItIiBmb3Igc3RkaW4uICBOb3RlIHRoYXQKLSAg
ICAgICAgIyB3ZSBhcmUgbm90IG9wZW5pbmcgdGhlIGZpbGUgd2l0aCB1bml2ZXJzYWwgbmV3bGlu
ZSBzdXBwb3J0Ci0gICAgICAgICMgKHdoaWNoIGNvZGVjcyBkb2Vzbid0IHN1cHBvcnQgYW55d2F5
KSwgc28gdGhlIHJlc3VsdGluZyBsaW5lcyBkbwotICAgICAgICAjIGNvbnRhaW4gdHJhaWxpbmcg
J1xyJyBjaGFyYWN0ZXJzIGlmIHdlIGFyZSByZWFkaW5nIGEgZmlsZSB0aGF0Ci0gICAgICAgICMg
aGFzIENSTEYgZW5kaW5ncy4KLSAgICAgICAgIyBJZiBhZnRlciB0aGUgc3BsaXQgYSB0cmFpbGlu
ZyAnXHInIGlzIHByZXNlbnQsIGl0IGlzIHJlbW92ZWQKLSAgICAgICAgIyBiZWxvdy4gSWYgaXQg
aXMgbm90IGV4cGVjdGVkIHRvIGJlIHByZXNlbnQgKGkuZS4gb3MubGluZXNlcCAhPQotICAgICAg
ICAjICdcclxuJyBhcyBpbiBXaW5kb3dzKSwgYSB3YXJuaW5nIGlzIGlzc3VlZCBiZWxvdyBpZiB0
aGlzIGZpbGUKLSAgICAgICAgIyBpcyBwcm9jZXNzZWQuCi0KLSAgICAgICAgaWYgZmlsZW5hbWUg
PT0gJy0nOgotICAgICAgICAgICAgbGluZXMgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5
cy5zdGRpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlJykucmVhZCgpLnNwbGl0KCdc
bicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lcyA9IGNvZGVjcy5vcGVuKGZpbGVu
YW1lLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQoJ1xuJykKLQotICAgICAg
ICBjYXJyaWFnZV9yZXR1cm5fZm91bmQgPSBGYWxzZQotICAgICAgICAjIFJlbW92ZSB0cmFpbGlu
ZyAnXHInLgotICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVzKSk6Ci0g
ICAgICAgICAgICBpZiBsaW5lc1tsaW5lX251bWJlcl0uZW5kc3dpdGgoJ1xyJyk6Ci0gICAgICAg
ICAgICAgICAgbGluZXNbbGluZV9udW1iZXJdID0gbGluZXNbbGluZV9udW1iZXJdLnJzdHJpcCgn
XHInKQotICAgICAgICAgICAgICAgIGNhcnJpYWdlX3JldHVybl9mb3VuZCA9IFRydWUKLQotICAg
IGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAotICAgICAgICAgICAg
IlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4gZm9yIHJlYWRpbmdcbiIgJSBmaWxlbmFt
ZSkKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIE5vdGUsIGlmIG5vIGRvdCBpcyBmb3VuZCwgdGhp
cyB3aWxsIGdpdmUgdGhlIGVudGlyZSBmaWxlbmFtZSBhcyB0aGUgZXh0LgotICAgIGZpbGVfZXh0
ZW5zaW9uID0gZmlsZW5hbWVbZmlsZW5hbWUucmZpbmQoJy4nKSArIDE6XQorY2xhc3MgQ3BwUHJv
Y2Vzc29yKG9iamVjdCk6CiAKLSAgICAjIFdoZW4gcmVhZGluZyBmcm9tIHN0ZGluLCB0aGUgZXh0
ZW5zaW9uIGlzIHVua25vd24sIHNvIG5vIGNwcF9zdHlsZSB0ZXN0cwotICAgICMgc2hvdWxkIHJl
bHkgb24gdGhlIGV4dGVuc2lvbi4KLSAgICBpZiAoZmlsZW5hbWUgIT0gJy0nIGFuZCBub3QgY2Fu
X2hhbmRsZShmaWxlbmFtZSkpOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJZ25vcmluZyAl
czsgbm90IGEgLmNwcCwgLmMgb3IgLmggZmlsZVxuJyAlIGZpbGVuYW1lKQotICAgIGVsaWYgaXNf
ZXhlbXB0KGZpbGVuYW1lKToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSWdub3JpbmcgJXM7
IFRoaXMgZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuXG4nICUgZmlsZW5hbWUp
Ci0gICAgZWxzZToKLSAgICAgICAgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGZpbGVfZXh0
ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSkKLSAgICAgICAgaWYgY2FycmlhZ2VfcmV0
dXJuX2ZvdW5kIGFuZCBvcy5saW5lc2VwICE9ICdcclxuJzoKLSAgICAgICAgICAgICMgVXNlIDAg
Zm9yIGxpbmVfbnVtYmVyIHNpbmNlIG91dHB1dGluZyBvbmx5IG9uZSBlcnJvciBmb3IgcG90ZW50
aWFsbHkKLSAgICAgICAgICAgICMgc2V2ZXJhbCBsaW5lcy4KLSAgICAgICAgICAgIGVycm9yKGZp
bGVuYW1lLCAwLCAnd2hpdGVzcGFjZS9uZXdsaW5lJywgMSwKLSAgICAgICAgICAgICAgICAgICdP
bmUgb3IgbW9yZSB1bmV4cGVjdGVkIFxcciAoXk0pIGZvdW5kOycKLSAgICAgICAgICAgICAgICAg
ICdiZXR0ZXIgdG8gdXNlIG9ubHkgYSBcXG4nKQorICAgICIiIlByb2Nlc3NlcyBDKysgbGluZXMg
Zm9yIGNoZWNraW5nIHN0eWxlLiIiIgogCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0
aCwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKKyAgICAgICAgIiIi
Q3JlYXRlIGEgQ3BwUHJvY2Vzc29yIGluc3RhbmNlLgogCi1kZWYgY2FuX2hhbmRsZShmaWxlbmFt
ZSk6Ci0gICAgIiIiQ2hlY2tzIGlmIHRoaXMgbW9kdWxlIHN1cHBvcnRzIGZvciB0aGUgc3BlY2lm
aWVkIGZpbGUgdHlwZS4KKyAgICAgICAgQXJnczoKKyAgICAgICAgICBmaWxlX2V4dGVuc2lvbjog
QSBzdHJpbmcgdGhhdCBpcyB0aGUgZmlsZSBleHRlbnNpb24sIHdpdGhvdXQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhlIGxlYWRpbmcgZG90LgogCi0gICAgQXJnczoKLSAgICAgIGZpbGVu
YW1lOiBBIGZpbGVuYW1lLiBJdCBtYXkgY29udGFpbiBkaXJlY3RvcnkgbmFtZXMuCi0gICAgICIi
IgotICAgIHJldHVybiBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXSBpbiAoJy5oJywgJy5j
cHAnLCAnLmMnKQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yCisgICAg
ICAgIHNlbGYuZmlsZV9leHRlbnNpb24gPSBmaWxlX2V4dGVuc2lvbgorICAgICAgICBzZWxmLmZp
bGVfcGF0aCA9IGZpbGVfcGF0aAorICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMKKyAgICAgICAg
c2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKIAorICAgIGRlZiBwcm9jZXNzKHNlbGYpOgorICAg
ICAgICBfcHJvY2Vzc19saW5lcyhzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX2V4dGVuc2lvbiwg
c2VsZi5saW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvciwgc2VsZi52ZXJi
b3NpdHkpCiAKLWRlZiBpc19leGVtcHQoZmlsZW5hbWUpOgotICAgICIiIkNoZWNrcyBpZiB0aGUg
Z2l2ZW4gZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuICBGb3IgZXhhbXBsZSwK
LSAgICBzb21lIGZpbGVzIGFyZSBwdXJwb3NlZnVsbHkgbWFudGFpbmVkIGluIE1vemlsbGEgc3R5
bGUgdG8gZWFzZSBmdXR1cmUKLSAgICBtZXJnZXMuCiAKLSAgICBBcmdzOgotICAgICAgZmlsZW5h
bWU6IEEgZmlsZW5hbWUuIEl0IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAgICAgIiIi
Ci0gICAgaWYgKGZpbGVuYW1lLmZpbmQoJ1dlYktpdC9xdC9BcGkvJykgPj0gMAotICAgICAgICBv
ciBmaWxlbmFtZS5maW5kKCdXZWJLaXQvcXQvdGVzdHMvJykgPj0gMCk6Ci0gICAgICAgICMgVGhl
IFF0IEFQSSBhbmQgdGVzdHMgZG8gbm90IGZvbGxvdyBXZWJLaXQgc3R5bGUuCi0gICAgICAgICMg
VGhleSBmb2xsb3cgUXQgc3R5bGUuIDopCi0gICAgICAgIHJldHVybiBUcnVlCisjIEZJWE1FOiBS
ZW1vdmUgdGhpcyBmdW5jdGlvbiAocmVxdWlyZXMgcmVmYWN0b3JpbmcgdW5pdCB0ZXN0cykuCitk
ZWYgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJy
b3IsIHZlcmJvc2l0eSk6CisgICAgcHJvY2Vzc29yID0gQ3BwUHJvY2Vzc29yKGZpbGVuYW1lLCBm
aWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpCisgICAgcHJvY2Vzc29yLnBy
b2Nlc3MoKQogCi0gICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpIGluICgKLSAg
ICAgICAgJ2d0azJkcmF3aW5nLmMnLAotICAgICAgICAnZ3RrMmRyYXdpbmcuaCcsCi0gICAgKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVf
dW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHls
ZV91bml0dGVzdC5weQppbmRleCA0MmQ2YzMwLi44NTljYmE5IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weQpA
QCAtNCw2ICs0LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgogIyBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDEsNiArNDIsOCBAQCBpbXBvcnQgcmFu
ZG9tCiBpbXBvcnQgcmUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNwcF9zdHlsZQorZnJvbSBj
cHBfc3R5bGUgaW1wb3J0IENwcFByb2Nlc3NvcgorCiAjIEZJWE1FOiBSZW1vdmUgdGhlIG5lZWQg
dG8gaW1wb3J0IGFueXRoaW5nIGZyb20gY2hlY2tlci4gU2VlIHRoZQogIyAgICAgICAgRklYTUUg
bm90ZXMgbmVhciB0aGUgU1RZTEVfQ0FURUdPUklFUyBkZWZpbml0aW9uIGZvciBhCiAjICAgICAg
ICBzdWdnZXN0aW9uIG9uIGhvdyB0byBiZXN0IGRvIHRoaXMuCkBAIC0zNTg4LDMzICszNTkxLDIy
IEBAIGNsYXNzIFdlYktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICAgICAgcGFz
cwogCiAKLSAgICBkZWYgdGVzdF9jYW5faGFuZGxlKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyBm
b3IgY3BwX3N0eWxlLmNhbl9oYW5kbGUoKS4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBj
cHBfc3R5bGUuY2FuX2hhbmRsZSgnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUu
Y2FuX2hhbmRsZSgnZm9vLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUu
Y2FuX2hhbmRsZSgnZm9vLmhwcCcpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmNh
bl9oYW5kbGUoJ2Zvby5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuY2FuX2hh
bmRsZSgnZm9vLmNwcCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5jYW5f
aGFuZGxlKCdmb28uY2MnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuY2Fu
X2hhbmRsZSgnZm9vLmN4eCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5j
YW5faGFuZGxlKCdmb28uQycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5j
YW5faGFuZGxlKCdmb28ubW0nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUu
Y2FuX2hhbmRsZSgnLScpKQotCi0gICAgZGVmIHRlc3RfaXNfZXhlbXB0KHNlbGYpOgotICAgICAg
ICAiIiJUZXN0cyBmb3IgY3BwX3N0eWxlLmlzX2V4ZW1wdCgpLiIiIgotICAgICAgICBzZWxmLmFz
c2VydF8obm90IGNwcF9zdHlsZS5pc19leGVtcHQoJycpKQotICAgICAgICBzZWxmLmFzc2VydF8o
bm90IGNwcF9zdHlsZS5pc19leGVtcHQoJ2Zvby5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhu
b3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmhwcCcpKQotICAgICAgICBzZWxmLmFzc2VydF8o
bm90IGNwcF9zdHlsZS5pc19leGVtcHQoJ2Zvby5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhu
b3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmNwcCcpKQotICAgICAgICBzZWxmLmFzc2VydF8o
bm90IGNwcF9zdHlsZS5pc19leGVtcHQoJy0nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9z
dHlsZS5pc19leGVtcHQoJ2d0azJkcmF3aW5nLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNw
cF9zdHlsZS5pc19leGVtcHQoJ1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmgnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5pc19leGVtcHQoJ2d0azJkcmF3aW5nLmMn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5pc19leGVtcHQoJ1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHls
ZS5pc19leGVtcHQoJ1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCcpKQotICAgICAgICBzZWxmLmFz
c2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnV2ViS2l0L3F0L3Rlc3RzL3F3ZWJzZWN1cml0eW9y
aWdpbi90c3RfcXdlYnNlY3VyaXR5b3JpZ2luLmNwcCcpKQorY2xhc3MgQ3BwUHJvY2Vzc29yVGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBDcHBQcm9jZXNzb3IgY2xhc3Mu
IiIiCisKKyAgICBkZWYgbW9ja19lcnJvcihzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVm
IHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4i
IiIKKyAgICAgICAgcHJvY2Vzc29yID0gQ3BwUHJvY2Vzc29yKCJmaWxlIiwgIi5oIiwgWyJsaW5l
Il0sIHNlbGYubW9ja19lcnJvciwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vz
c29yLmVycm9yLCBzZWxmLm1vY2tfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBy
b2Nlc3Nvci5maWxlX2V4dGVuc2lvbiwgIi5oIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
cHJvY2Vzc29yLmZpbGVfcGF0aCwgImZpbGUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw
cm9jZXNzb3IubGluZXMsIFsibGluZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9j
ZXNzb3IudmVyYm9zaXR5LCAzKQorCiAKIGRlZiB0ZWFyRG93bigpOgogICAgICIiIkEgZ2xvYmFs
IGNoZWNrIHRvIG1ha2Ugc3VyZSBhbGwgZXJyb3ItY2F0ZWdvcmllcyBoYXZlIGJlZW4gdGVzdGVk
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0
eWxlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5
CmluZGV4IDM4NWJiYWEuLjhlNzQ0OTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL3RleHRfc3R5bGUucHkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjYsNTMgKzI3LDMwIEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi0iIiJEb2VzIFdlYktpdC1saW50IG9uIHRleHQgZmlsZXMuCisiIiJD
aGVja3MgV2ViS2l0IHN0eWxlIGZvciB0ZXh0IGZpbGVzLiIiIgogCi1UaGlzIG1vZHVsZSBzaGFy
ZXMgZXJyb3IgY291bnQsIGZpbHRlciBzZXR0aW5nLCBvdXRwdXQgc2V0dGluZywgZXRjLiB3aXRo
IGNwcF9zdHlsZS4KLSIiIgogCi1pbXBvcnQgY29kZWNzCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0
IHN5cworY2xhc3MgVGV4dFByb2Nlc3NvcihvYmplY3QpOgogCi1pbXBvcnQgY3BwX3N0eWxlCisg
ICAgIiIiUHJvY2Vzc2VzIHRleHQgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgogCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgbGluZXMsIGVycm9yKToKKyAgICAgICAgc2Vs
Zi5maWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCisgICAg
ICAgIHNlbGYuZXJyb3IgPSBlcnJvcgogCi1kZWYgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUs
IGxpbmVzLCBlcnJvcik6Ci0gICAgIiIiUGVyZm9ybXMgbGludCBjaGVjayBmb3IgdGV4dCBvbiB0
aGUgc3BlY2lmaWVkIGxpbmVzLgotCi0gICAgSXQgcmVwb3J0cyBlcnJvcnMgdG8gdGhlIGdpdmVu
IGVycm9yIGZ1bmN0aW9uLgotICAgICIiIgotICAgIGxpbmVzID0gKFsnLy8gYWRqdXN0IGxpbmUg
bnVtYmVycyB0byBtYWtlIHRoZSBmaXJzdCBsaW5lIDEuJ10gKyBsaW5lcykKLQotICAgICMgRklY
TUU6IHNoYXJlIHdpdGggY3BwX3N0eWxlLmNoZWNrX3N0eWxlKCkKLSAgICBmb3IgbGluZV9udW1i
ZXIsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAgaWYgJ1x0JyBpbiBsaW5lOgot
ICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS90YWIn
LCA1LCAnTGluZSBjb250YWlucyB0YWIgY2hhcmFjdGVyLicpCisgICAgZGVmIHByb2Nlc3Moc2Vs
Zik6CisgICAgICAgIGxpbmVzID0gc2VsZi5saW5lcworICAgICAgICBsaW5lcyA9IChbJy8vIGFk
anVzdCBsaW5lIG51bWJlcnMgdG8gbWFrZSB0aGUgZmlyc3QgbGluZSAxLiddICsgbGluZXMpCiAK
KyAgICAgICAgIyBGSVhNRTogc2hhcmUgd2l0aCBjcHBfc3R5bGUuCisgICAgICAgIGZvciBsaW5l
X251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICAgICAgaWYgJ1x0JyBp
biBsaW5lOgorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3Ioc2VsZi5maWxlX3BhdGgsIGxpbmVf
bnVtYmVyLCAnd2hpdGVzcGFjZS90YWInLCA1LCAnTGluZSBjb250YWlucyB0YWIgY2hhcmFjdGVy
LicpCiAKLWRlZiBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yKToKLSAgICAiIiJQZXJmb3Jt
cyBsaW50IGNoZWNrIGZvciB0ZXh0IG9uIGEgc2luZ2xlIGZpbGUuIiIiCi0gICAgaWYgKG5vdCBj
YW5faGFuZGxlKGZpbGVuYW1lKSk6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0lnbm9yaW5n
ICVzOyBub3QgYSBzdXBwb3J0ZWQgZmlsZVxuJyAlIGZpbGVuYW1lKQotICAgICAgICByZXR1cm4K
IAotICAgICMgRklYTUU6IHNoYXJlIGNvZGUgd2l0aCBjcHBfc3R5bGUucHJvY2Vzc19maWxlKCku
Ci0gICAgdHJ5OgotICAgICAgICAjIERvIG5vdCBzdXBwb3J0IGZvciBmaWxlbmFtZT0nLScuIGNw
cF9zdHlsZSBoYW5kbGVzIGl0LgotICAgICAgICBsaW5lcyA9IGNvZGVjcy5vcGVuKGZpbGVuYW1l
LCAncicsICd1dGY4JywgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQoJ1xuJykKLSAgICBleGNlcHQg
SU9FcnJvcjoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU2tpcHBpbmcgaW5wdXQgJyVzJzog
Q2FuJ3Qgb3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVuYW1lKQotICAgICAgICByZXR1cm4KLSAg
ICBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgbGluZXMsIGVycm9yKQotCi0KLWRlZiBjYW5f
aGFuZGxlKGZpbGVuYW1lKToKLSAgICAiIiJDaGVja3MgaWYgdGhpcyBtb2R1bGUgc3VwcG9ydHMg
dGhlIHNwZWNpZmllZCBmaWxlIHR5cGUuCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBmdW5jdGlvbiAo
cmVxdWlyZXMgcmVmYWN0b3JpbmcgdW5pdCB0ZXN0cykuCitkZWYgcHJvY2Vzc19maWxlX2RhdGEo
ZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgcHJvY2Vzc29yID0gVGV4dFByb2Nlc3Nvcihm
aWxlbmFtZSwgbGluZXMsIGVycm9yKQorICAgIHByb2Nlc3Nvci5wcm9jZXNzKCkKIAotICAgIEFy
Z3M6Ci0gICAgICBmaWxlbmFtZTogQSBmaWxlbmFtZS4gSXQgbWF5IGNvbnRhaW4gZGlyZWN0b3J5
IG5hbWVzLgotICAgICIiIgotICAgIHJldHVybiAoIkNoYW5nZUxvZyIgaW4gZmlsZW5hbWUKLSAg
ICAgICAgICAgIG9yICJXZWJLaXRUb29scy9TY3JpcHRzLyIgaW4gZmlsZW5hbWUKLSAgICAgICAg
ICAgIG9yIG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzFdIGluICgnLmNzcycsICcuaHRtbCcs
ICcuaWRsJywgJy5qcycsICcubW0nLCAnLnBocCcsICcucG0nLCAnLnB5JywgJy50eHQnKSkgYW5k
IG5vdCAiTGF5b3V0VGVzdHMvIiBpbiBmaWxlbmFtZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5CmluZGV4IGQ5
MTE1ZjAuLjQzMzQwMWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHkKQEAgLTMyLDcgKzMyLDcgQEAKIGlt
cG9ydCB1bml0dGVzdAogCiBpbXBvcnQgdGV4dF9zdHlsZQotCitmcm9tIHRleHRfc3R5bGUgaW1w
b3J0IFRleHRQcm9jZXNzb3IKIAogY2xhc3MgVGV4dFN0eWxlVGVzdENhc2UodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICIiIlRlc3RDYXNlIGZvciB0ZXh0X3N0eWxlLnB5IiIiCkBAIC03NiwzNiAr
NzYsMTkgQEAgY2xhc3MgVGV4dFN0eWxlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAnXHRSZXZpZXdlZCBieSBOT0JPRFkuJ10sIDMpCiAKIAot
ICAgIGRlZiB0ZXN0X2Nhbl9oYW5kbGUoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGZvciB0ZXh0
X3N0eWxlLmNhbl9oYW5kbGUoKS4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0
eWxlLmNhbl9oYW5kbGUoJycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUu
Y2FuX2hhbmRsZSgnLScpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFu
ZGxlKCdDaGFuZ2VMb2cnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hh
bmRsZSgnV2ViQ29yZS9DaGFuZ2VMb2cnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5
bGUuY2FuX2hhbmRsZSgnRm9vQ2hhbmdlTG9nLmJhaycpKQotICAgICAgICBzZWxmLmFzc2VydF8o
dGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdD1z
dHlsZScpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJL
aXRUb29scy9TY3JpcHRzL21vZHVsZXMvdGV4dF9zdHlsZS5weScpKQotICAgICAgICBzZWxmLmFz
c2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViS2l0VG9vbHMvU2NyaXB0cycpKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jc3MnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmh0bWwnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmlkbCcpKQot
ICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28uanMnKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9z
dHlsZS5jYW5faGFuZGxlKCdmb28ubW0nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5
bGUuY2FuX2hhbmRsZSgnZm9vLnBocCcpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHls
ZS5jYW5faGFuZGxlKCdmb28ucG0nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUu
Y2FuX2hhbmRsZSgnZm9vLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNh
bl9oYW5kbGUoJ2Zvby50eHQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0eWxl
LmNhbl9oYW5kbGUoJ2Zvby5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHls
ZS5jYW5faGFuZGxlKCdmb28uYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5
bGUuY2FuX2hhbmRsZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0
eWxlLmNhbl9oYW5kbGUoJ2Zvby5wbmcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0
X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jL2Jhci5wbmcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
KG5vdCB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYktpdC9FbmdsaXNoLmxwcm9qL0xvY2FsaXph
YmxlLnN0cmluZ3MnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0eWxlLmNhbl9o
YW5kbGUoJ01ha2VmaWxlJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5j
YW5faGFuZGxlKCdXZWJDb3JlL0FuZHJvaWQubWsnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5v
dCB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRl
c3RzLmpzJykpCitjbGFzcyBUZXh0UHJvY2Vzc29yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisK
KyAgICAiIiJUZXN0cyBUZXh0UHJvY2Vzc29yIGNsYXNzLiIiIgorCisgICAgZGVmIG1vY2tfZXJy
b3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAg
ICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3IuIiIiCisgICAgICAgIHByb2Nlc3NvciA9
IFRleHRQcm9jZXNzb3IoImZpbGUiLCBbImxpbmUiXSwgc2VsZi5tb2NrX2Vycm9yKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZXJyb3IsIHNlbGYubW9ja19lcnJvcikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgImZpbGUiKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IubGluZXMsIFsibGluZSJdKQogCiAKIGlm
IF9fbmFtZV9fID09ICdfX21haW5fXyc6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46786</attachid>
            <date>2010-01-17 21:08:04 -0800</date>
            <delta_ts>2010-01-18 14:43:09 -0800</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>_patch-33775-2.txt</filename>
            <type>text/plain</type>
            <size>35253</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2MzYxYjRlLi45ZTk0ZDE3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTAtMDEt
MTcgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JlZCBmaWxlIG5hbWUg
YW5kIGZpbGUtcmVhZGluZyByZWxhdGVkIGNvZGUgZnJvbQorICAgICAgICBjcHBfc3R5bGUucHkg
YW5kIHRleHRfc3R5bGUucHkgaW50byBjaGVja2VyLnB5LgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc3NQorCisgICAgICAgICogU2NyaXB0cy9j
aGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBVcGRhdGVzIGNhdXNlZCBieSBjaGFuZ2Vz
IHRvIGNoZWNrZXIucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBQcm9jZXNzb3JEaXNwYXRjaGVyIGNsYXNzLgorICAg
ICAgICAgIC0gQWRkZWQgb3B0aW9uYWwgImRpc3BhdGNoZXIiIHBhcmFtZXRlciB0byBTdHlsZUNo
ZWNrZXIgY29uc3RydWN0b3IuCisgICAgICAgICAgLSBBZGRlZCBfcHJvY2Vzc19saW5lcygpLgor
ICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX2ZpbGUoKSB0byBfcHJvY2Vzc19maWxlKCkgYW5k
IHJlZmFjdG9yZWQuCisgICAgICAgICAgLSBBZGRlZCBjaGVja19maWxlIHRvIHJlcGxhY2UgcHJv
Y2Vzc19maWxlKCkuCisgICAgICAgICAgLSBSZW5hbWVkIHByb2Nlc3NfcGF0Y2goKSB0byBjaGVj
a19wYXRjaCgpLgorICAgICAgICAgIC0gQWRkcmVzc2VkIEZJWE1FIGluIGNoZWNrX3BhdGNoKCkg
dG8gc2hhcmUgY29kZSB3aXRoIHByb2Nlc3NfZmlsZSgpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgUHJv
Y2Vzc29yRGlzcGF0Y2hlclRlc3QgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCBNb2NrU3R5bGVQ
cm9jZXNzb3IgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCBNb2NrUHJvY2Vzc29yRGlzcGF0Y2hl
ciBjbGFzcy4KKyAgICAgICAgICAtIEFkZGVkIHRlc3RfcHJvY2Vzc19saW5lcygpIHRvIFN0eWxl
Q2hlY2tlciBjbGFzcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0
eWxlLnB5OgorICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX2ZpbGVfZGF0YSgpIHRvIF9wcm9j
ZXNzX2xpbmVzLgorICAgICAgICAgIC0gUmVtb3ZlZCBwcm9jZXNzX2ZpbGUoKSAobW92ZWQgbG9n
aWMgdG8gY2hlY2tlci5weSkuCisgICAgICAgICAgLSBSZW1vdmVkIGNhbl9oYW5kbGUoKSAobW92
ZWQgbG9naWMgdG8gY2hlY2tlci5weSkuCisgICAgICAgICAgLSBBZGRlZCBDcHBQcm9jZXNzb3Ig
Y2xhc3MuCisgICAgICAgICAgLSBSZW1vdmVkIGlzX2V4ZW1wdCgpIChtb3ZlZCBsb2dpYyB0byBj
aGVja2VyLnB5KS4KKyAgICAgICAgICAtIEFkZGVkIHByb2Nlc3NfZmlsZV9kYXRhKCkgYmFjayBh
cyBhIHdyYXBwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NwcF9zdHlsZV91bml0dGVzdC5weToKKyAgICAgICAgICAtIFJlbW92ZWQgdGVzdF9jYW5faGFu
ZGxlKCkuCisgICAgICAgICAgLSBSZW1vdmVkIHRlc3RfaXNfZXhlbXB0KCkuCisgICAgICAgICAg
LSBBZGRlZCBDcHBQcm9jZXNzb3JUZXN0IGNsYXNzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5OgorICAgICAgICAgIC0gQWRkZWQgVGV4dFByb2Nlc3Nv
ciBjbGFzcy4KKyAgICAgICAgICAtIFJlbW92ZWQgcHJvY2Vzc19maWxlKCkuCisgICAgICAgICAg
LSBSZW1vdmVkIGNhbl9oYW5kbGUoKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weToKKyAgICAgICAgICAtIFJlbW92ZWQgdGVzdF9jYW5f
aGFuZGxlKCkuCisgICAgICAgICAgLSBBZGRlZCBUZXh0UHJvY2Vzc29yVGVzdCBjbGFzcy4KKwog
MjAxMC0wMS0xNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9j
aGVjay13ZWJraXQtc3R5bGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHls
ZQppbmRleCAxNDc1ZTZhLi5hMmI1ODRmIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L2NoZWNrLXdlYmtpdC1zdHlsZQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtp
dC1zdHlsZQpAQCAtNjgsNyArNjgsNyBAQCBkZWYgbWFpbigpOgogCiAgICAgaWYgZmlsZXM6CiAg
ICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgIHN0eWxlX2NoZWNrZXIu
cHJvY2Vzc19maWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVja19m
aWxlKGZpbGVuYW1lKQogCiAgICAgZWxzZToKICAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRo
KCcuJykKQEAgLTg0LDcgKzg0LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc3R5bGVf
Y2hlY2tlci5wcm9jZXNzX3BhdGNoKHBhdGNoKQorICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNr
X3BhdGNoKHBhdGNoKQogCiAgICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5k
OiAlZFxuJyAlIHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQpCiAgICAgc3lzLmV4aXQoc3R5bGVf
Y2hlY2tlci5lcnJvcl9jb3VudCA+IDApCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggYzNmNGRiMC4uNmRkNDFmYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMjksMTUgKzI5LDE0IEBA
CiAKICIiIkZyb250IGVuZCBvZiBzb21lIHN0eWxlLWNoZWNrZXIgbW9kdWxlcy4iIiIKIAotIyBG
SVhNRTogTW92ZSBtb3JlIGNvZGUgZnJvbSBjcHBfc3R5bGUgdG8gaGVyZS4KLQoraW1wb3J0IGNv
ZGVjcwogaW1wb3J0IGdldG9wdAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotaW1wb3J0
IGNwcF9zdHlsZQotaW1wb3J0IHRleHRfc3R5bGUKIGZyb20gZGlmZl9wYXJzZXIgaW1wb3J0IERp
ZmZQYXJzZXIKK2Zyb20gY3BwX3N0eWxlIGltcG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9z
dHlsZSBpbXBvcnQgVGV4dFByb2Nlc3NvcgogCiAKICMgVGhlc2UgZGVmYXVsdHMgYXJlIHVzZWQg
YnkgY2hlY2std2Via2l0LXN0eWxlLgpAQCAtNjE5LDYgKzYxOCwxMDYgQEAgY2xhc3MgQXJndW1l
bnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgcmV0dXJuIChmaWxlbmFtZXMsIG9wdGlvbnMpCiAK
IAorY2xhc3MgUHJvY2Vzc29yRGlzcGF0Y2hlcihvYmplY3QpOgorCisgICAgIiIiU3VwcG9ydHMg
Y2hvb3NpbmcgYW5kIGNyZWF0aW5nIHdoYXQgc3R5bGUgcHJvY2Vzc29yIHRvIHVzZS4iIiIKKwor
ICAgIGNwcF9maWxlX2V4dGVuc2lvbnMgPSAoCisgICAgICAgICdjJywKKyAgICAgICAgJ2NwcCcs
CisgICAgICAgICdoJywKKyAgICApCisKKyAgICB0ZXh0X2ZpbGVfZXh0ZW5zaW9ucyA9ICgKKyAg
ICAgICAgJ2NzcycsCisgICAgICAgICdodG1sJywKKyAgICAgICAgJ2lkbCcsCisgICAgICAgICdq
cycsCisgICAgICAgICdtbScsCisgICAgICAgICdwaHAnLAorICAgICAgICAncG0nLAorICAgICAg
ICAncHknLAorICAgICAgICAndHh0JywKKyAgICApCisKKyAgICBkZWYgX2lzX2V4ZW1wdChzZWxm
LCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJDaGVjayBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBleGVt
cHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIHNvbWUgZmls
ZXMgYXJlIHB1cnBvc2VmdWxseSBtYW50YWluZWQgaW4gTW96aWxsYQorICAgICAgICBzdHlsZSB0
byBlYXNlIGZ1dHVyZSBtZXJnZXMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBmaWxlX3Bh
dGg6IEEgZmlsZSBwYXRoLgorCisgICAgICAgICIiIgorICAgICAgICBpZiAoZmlsZV9wYXRoLmZp
bmQoJ1dlYktpdC9xdC9BcGkvJykgPj0gMAorICAgICAgICAgICAgb3IgZmlsZV9wYXRoLmZpbmQo
J1dlYktpdC9xdC90ZXN0cy8nKSA+PSAwKToKKyAgICAgICAgICAgICMgVGhlIFF0IEFQSSBhbmQg
dGVzdHMgZG8gbm90IGZvbGxvdyBXZWJLaXQgc3R5bGUuCisgICAgICAgICAgICAjIFRoZXkgZm9s
bG93IFF0IHN0eWxlLiA6KQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXR1
cm4gb3MucGF0aC5iYXNlbmFtZShmaWxlX3BhdGgpIGluICgKKyAgICAgICAgICAgICdndGsyZHJh
d2luZy5jJywKKyAgICAgICAgICAgICdndGsyZHJhd2luZy5oJywKKyAgICAgICAgKQorCisgICAg
ZGVmIF9maWxlX3R5cGUoc2VsZiwgZmlsZV9wYXRoLCBmaWxlX2V4dGVuc2lvbik6CisgICAgICAg
ICIiIlJldHVybiB3aGF0IHN0eWxlIHByb2Nlc3NvciB0byB1c2UgdG8gY2hlY2sgc3R5bGUuCisK
KyAgICAgICAgUmV0dXJucyBvbmUgb2YgdGhlIGZvbGxvd2luZyBzdHJpbmdzOiBjcHAsIHRleHQs
IG5vbmUuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX2V4ZW1wdChmaWxlX3Bh
dGgpOgorICAgICAgICAgICAgcmV0dXJuICJub25lIgorCisgICAgICAgIGlmIChmaWxlX2V4dGVu
c2lvbiBpbiBzZWxmLmNwcF9maWxlX2V4dGVuc2lvbnMpIG9yIChmaWxlX3BhdGggPT0gJy0nKToK
KyAgICAgICAgICAgIHJldHVybiAiY3BwIgorICAgICAgICBlbGlmICgobm90ICJMYXlvdXRUZXN0
cy8iIGluIGZpbGVfcGF0aCkKKyAgICAgICAgICAgICAgYW5kICgiQ2hhbmdlTG9nIiBpbiBmaWxl
X3BhdGgKKyAgICAgICAgICAgICAgICAgICBvciAiV2ViS2l0VG9vbHMvU2NyaXB0cy8iIGluIGZp
bGVfcGF0aAorICAgICAgICAgICAgICAgICAgIG9yIGZpbGVfZXh0ZW5zaW9uIGluIHNlbGYudGV4
dF9maWxlX2V4dGVuc2lvbnMpKToKKyAgICAgICAgICAgIHJldHVybiAidGV4dCIKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJldHVybiAibm9uZSIKKworICAgIGRlZiBfY3JlYXRlX3Byb2Nl
c3NvcihzZWxmLCBmaWxlX3R5cGUsIGZpbGVfcGF0aCwgZmlsZV9leHRlbnNpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKKyAgICAgICAgIiIi
UmV0dXJuIGEgc3R5bGUgcHJvY2Vzc29yIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZmlsZSB0eXBl
LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmlsZV90eXBlOiBBIHN0cmluZyB0aGF0IGlz
IGVpdGhlciAiY3BwIiBvciAidGV4dCIuCisgICAgICAgICAgZmlsZV9wYXRoCisgICAgICAgICAg
bGluZXMKKyAgICAgICAgICBlcnJvcgorICAgICAgICAgIHZlcmJvc2l0eQorCisgICAgICAgICIi
IgorICAgICAgICBpZiBmaWxlX3R5cGUgPT0gImNwcCI6CisgICAgICAgICAgICAjIEZJWE1FOiBE
byBzb21ldGhpbmcgYWJvdXQgdGhlIGNvbW1lbnQgYmVsb3cgYW5kIHRoZSBpc3N1ZSBpdAorICAg
ICAgICAgICAgIyAgICAgICAgcmFpc2VzIHNpbmNlIGNwcF9zdHlsZSBhbHJlYWR5IHJlbGllcyBv
biB0aGUgZXh0ZW5zaW9uLgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBXaGVuIHJlYWRp
bmcgZnJvbSBzdGRpbiwgdGhlIGV4dGVuc2lvbiBpcyB1bmtub3duLCBzbyBubworICAgICAgICAg
ICAgIyBjcHBfc3R5bGUgdGVzdHMgc2hvdWxkIHJlbHkgb24gdGhlIGV4dGVuc2lvbi4KKyAgICAg
ICAgICAgIHByb2Nlc3NvciA9IENwcFByb2Nlc3NvcihmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9u
LCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSkKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gInRl
eHQiOgorICAgICAgICAgICAgcHJvY2Vzc29yID0gVGV4dFByb2Nlc3NvcihmaWxlX3BhdGgsIGxp
bmVzLCBlcnJvcikKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gIm5vbmUiOgorICAgICAgICAg
ICAgcHJvY2Vzc29yID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcignSW52YWxpZCBmaWxlIHR5cGUgIiVzIjogdGhlIHZhbGlkIGZpbGUgdHlwZXMgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJlIC0tIGNwcCwgdGV4dCwgYW5kIG5vbmUu
IiAlIGZpbGVfdHlwZSkKKworICAgICAgICByZXR1cm4gcHJvY2Vzc29yCisKKyAgICBkZWYgZGlz
cGF0Y2hfcHJvY2Vzc29yKHNlbGYsIGZpbGVfcGF0aCwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkp
OgorICAgICAgICBmaWxlX2V4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZV9wYXRoKVsx
XS5sc3RyaXAoIi4iKQorCisgICAgICAgIGZpbGVfdHlwZSA9IHNlbGYuX2ZpbGVfdHlwZShmaWxl
X3BhdGgsIGZpbGVfZXh0ZW5zaW9uKQorCisgICAgICAgIHJldHVybiBzZWxmLl9jcmVhdGVfcHJv
Y2Vzc29yKGZpbGVfdHlwZSwgZmlsZV9wYXRoLCBmaWxlX2V4dGVuc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpCisKKwog
Y2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAKICAgICAiIiJTdXBwb3J0cyBjaGVja2luZyBz
dHlsZSBpbiBmaWxlcyBhbmQgcGF0Y2hlcy4KQEAgLTYzMiwxOCArNzMxLDI4IEBAIGNsYXNzIFN0
eWxlQ2hlY2tlcihvYmplY3QpOgogCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
b3B0aW9ucywgd3JpdGVfZXJyb3I9c3lzLnN0ZGVyci53cml0ZSk6CisgICAgIyBUaGUgInN0ZGVy
cl93cml0ZSIgYW5kICJkaXNwYXRjaGVyIiBwYXJhbWV0ZXJzIGFyZSBmb3IgdW5pdCB0ZXN0aW5n
LgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBzdGRlcnJfd3JpdGU9Tm9uZSwgZGlz
cGF0Y2hlcj1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgU3R5bGVDaGVja2VyIGluc3RhbmNl
LgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgb3B0aW9uczogU2VlIG9wdGlvbnMgYXR0cmli
dXRlLgogICAgICAgICAgIHN0ZGVycl93cml0ZTogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc3Ry
aW5nIGFzIGEgcGFyYW1ldGVyCi0gICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhhdCBpcyBj
YWxsZWQgd2hlbiBhIHN0eWxlIGVycm9yIG9jY3Vycy4KKyAgICAgICAgICAgICAgICAgICAgICAg
YW5kIHRoYXQgaXMgY2FsbGVkIHdoZW4gYSBzdHlsZSBlcnJvciBvY2N1cnMuCisgICAgICAgICAg
ICAgICAgICAgICAgIERlZmF1bHRzIHRvIHN5cy5zdGRlcnIud3JpdGUuCisgICAgICAgICAgZGlz
cGF0Y2hlcjogQW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB3aXRoIGEgcHJvY2Vzc29yKCkgbWV0aG9k
LgorICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIFByb2Nlc3NvckRpc3BhdGNoZXIo
KS4KIAogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fd3JpdGVfZXJyb3IgPSB3cml0ZV9lcnJv
cgotICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAgICAgIGlmIHN0ZGVycl93cml0
ZSBpcyBOb25lOgorICAgICAgICAgICAgc3RkZXJyX3dyaXRlID0gc3lzLnN0ZGVyci53cml0ZQor
ICAgICAgICBpZiBkaXNwYXRjaGVyIGlzIE5vbmU6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0g
UHJvY2Vzc29yRGlzcGF0Y2hlcigpCisKKyAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3Bh
dGNoZXIKKyAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlID0gc3RkZXJyX3dyaXRlCiAgICAgICAg
IHNlbGYuZXJyb3JfY291bnQgPSAwCisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKIAog
ICAgIGRlZiBfaGFuZGxlX2Vycm9yKHNlbGYsIGZpbGVuYW1lLCBsaW5lX251bWJlciwgY2F0ZWdv
cnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgogICAgICAgICAiIiJIYW5kbGUgdGhlIG9jY3VycmVu
Y2Ugb2YgYSBzdHlsZSBlcnJvciB3aGlsZSBjaGVja2luZy4KQEAgLTY3NSwyMSArNzg0LDcyIEBA
IGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
Zm9ybWF0X3N0cmluZyA9ICIlczolczogICVzICBbJXNdIFslZF1cbiIKIAotICAgICAgICBzZWxm
Ll93cml0ZV9lcnJvcihmb3JtYXRfc3RyaW5nICUgKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVz
c2FnZSwKKyAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlKGZvcm1hdF9zdHJpbmcgJSAoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKIAotICAgIGRlZiBwcm9jZXNzX2Zp
bGUoc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICAiIiJDaGVja3Mgc3R5bGUgZm9yIHRoZSBzcGVj
aWZpZWQgZmlsZS4KKyAgICBkZWYgX3Byb2Nlc3NfbGluZXMoc2VsZiwgZmlsZV9wYXRoLCBsaW5l
cywgZXJyb3IpOgorICAgICAgICAiIiJDaGVjayBzdHlsZSBpbiB0aGUgZ2l2ZW4gbGluZXMuIiIi
CisgICAgICAgIGRpc3BhdGNoZXIgPSBzZWxmLl9kaXNwYXRjaGVyCisgICAgICAgIHZlcmJvc2l0
eSA9IHNlbGYub3B0aW9ucy52ZXJib3NpdHkKKworICAgICAgICBwcm9jZXNzb3IgPSBkaXNwYXRj
aGVyLmRpc3BhdGNoX3Byb2Nlc3NvcihmaWxlX3BhdGgsIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5
KQorCisgICAgICAgIGlmIHByb2Nlc3NvciBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisK
KyAgICAgICAgcHJvY2Vzc29yLnByb2Nlc3MoKQorCisgICAgZGVmIF9wcm9jZXNzX2ZpbGUoc2Vs
ZiwgZmlsZW5hbWUsIGVycm9yKToKKyAgICAgICAgIiIiQ2hlY2sgc3R5bGUgaW4gYSBzaW5nbGUg
ZmlsZS4KIAotICAgICAgICBJZiB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lIGlzICctJywgYXBwbGll
cyBjcHBfc3R5bGUgdG8gdGhlIHN0YW5kYXJkIGlucHV0LgorICAgICAgICBBcmdzOgorICAgICAg
ICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZmlsZSB0byBwYXJzZS4KKyAgICAgICAgICBl
cnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogCiAgICAg
ICAgICIiIgotICAgICAgICBpZiBjcHBfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSkgb3IgZmls
ZW5hbWUgPT0gJy0nOgotICAgICAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFt
ZSwgc2VsZi5faGFuZGxlX2Vycm9yLCBzZWxmLm9wdGlvbnMudmVyYm9zaXR5KQotICAgICAgICBl
bGlmIHRleHRfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgICAgICAgICB0ZXh0X3N0
eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgc2VsZi5faGFuZGxlX2Vycm9yKQorICAgICAgICB0
cnk6CisgICAgICAgICAgICAjIFN1cHBvcnQgdGhlIFVOSVggY29udmVudGlvbiBvZiB1c2luZyAi
LSIgZm9yIHN0ZGluLiAgTm90ZSB0aGF0CisgICAgICAgICAgICAjIHdlIGFyZSBub3Qgb3Blbmlu
ZyB0aGUgZmlsZSB3aXRoIHVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQKKyAgICAgICAgICAgICMg
KHdoaWNoIGNvZGVjcyBkb2Vzbid0IHN1cHBvcnQgYW55d2F5KSwgc28gdGhlIHJlc3VsdGluZyBs
aW5lcyBkbworICAgICAgICAgICAgIyBjb250YWluIHRyYWlsaW5nICdccicgY2hhcmFjdGVycyBp
ZiB3ZSBhcmUgcmVhZGluZyBhIGZpbGUgdGhhdAorICAgICAgICAgICAgIyBoYXMgQ1JMRiBlbmRp
bmdzLgorICAgICAgICAgICAgIyBJZiBhZnRlciB0aGUgc3BsaXQgYSB0cmFpbGluZyAnXHInIGlz
IHByZXNlbnQsIGl0IGlzIHJlbW92ZWQKKyAgICAgICAgICAgICMgYmVsb3cuIElmIGl0IGlzIG5v
dCBleHBlY3RlZCB0byBiZSBwcmVzZW50IChpLmUuIG9zLmxpbmVzZXAgIT0KKyAgICAgICAgICAg
ICMgJ1xyXG4nIGFzIGluIFdpbmRvd3MpLCBhIHdhcm5pbmcgaXMgaXNzdWVkIGJlbG93IGlmIHRo
aXMgZmlsZQorICAgICAgICAgICAgIyBpcyBwcm9jZXNzZWQuCisgICAgICAgICAgICBpZiBmaWxl
bmFtZSA9PSAnLSc6CisgICAgICAgICAgICAgICAgbGluZXMgPSBjb2RlY3MuU3RyZWFtUmVhZGVy
V3JpdGVyKHN5cy5zdGRpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29kZWNzLmdldHJlYWRlcigndXRmOCcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4Jyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs
YWNlJykucmVhZCgpLnNwbGl0KCdcbicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgIGxpbmVzID0gY29kZWNzLm9wZW4oZmlsZW5hbWUsICdyJywgJ3V0ZjgnLCAncmVwbGFjZScp
LnJlYWQoKS5zcGxpdCgnXG4nKQorCisgICAgICAgICAgICBjYXJyaWFnZV9yZXR1cm5fZm91bmQg
PSBGYWxzZQorICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ1xyJy4KKyAgICAgICAgICAg
IGZvciBsaW5lX251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKKyAgICAgICAgICAgICAgICBp
ZiBsaW5lc1tsaW5lX251bWJlcl0uZW5kc3dpdGgoJ1xyJyk6CisgICAgICAgICAgICAgICAgICAg
IGxpbmVzW2xpbmVfbnVtYmVyXSA9IGxpbmVzW2xpbmVfbnVtYmVyXS5yc3RyaXAoJ1xyJykKKyAg
ICAgICAgICAgICAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0gVHJ1ZQorCisgICAgICAg
IGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlKCJTa2lwcGlu
ZyBpbnB1dCAnJXMnOiBDYW4ndCBvcGVuIGZvciByZWFkaW5nXG4iICUgZmlsZW5hbWUpCisgICAg
ICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLl9wcm9jZXNzX2xpbmVzKGZpbGVuYW1lLCBs
aW5lcywgZXJyb3IpCisKKyAgICAgICAgaWYgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kIGFuZCBvcy5s
aW5lc2VwICE9ICdcclxuJzoKKyAgICAgICAgICAgICMgVXNlIDAgZm9yIGxpbmVfbnVtYmVyIHNp
bmNlIG91dHB1dGluZyBvbmx5IG9uZSBlcnJvciBmb3IgcG90ZW50aWFsbHkKKyAgICAgICAgICAg
ICMgc2V2ZXJhbCBsaW5lcy4KKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCAwLCAnd2hpdGVz
cGFjZS9uZXdsaW5lJywgMSwKKyAgICAgICAgICAgICAgICAgICdPbmUgb3IgbW9yZSB1bmV4cGVj
dGVkIFxcciAoXk0pIGZvdW5kOycKKyAgICAgICAgICAgICAgICAgICdiZXR0ZXIgdG8gdXNlIG9u
bHkgYSBcXG4nKQorCisgICAgZGVmIGNoZWNrX2ZpbGUoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAg
ICAgZXJyb3IgPSBzZWxmLl9oYW5kbGVfZXJyb3IKKyAgICAgICAgc2VsZi5fcHJvY2Vzc19maWxl
KGZpbGVfcGF0aCwgZXJyb3IpCiAKLSAgICBkZWYgcHJvY2Vzc19wYXRjaChzZWxmLCBwYXRjaF9z
dHJpbmcpOgorICAgIGRlZiBjaGVja19wYXRjaChzZWxmLCBwYXRjaF9zdHJpbmcpOgogICAgICAg
ICAiIiJEb2VzIGxpbnQgb24gYSBzaW5nbGUgcGF0Y2guCiAKICAgICAgICAgQXJnczoKQEAgLTY5
OCw3ICs4NTgsNiBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgIiIiCiAg
ICAgICAgIHBhdGNoID0gRGlmZlBhcnNlcihwYXRjaF9zdHJpbmcuc3BsaXRsaW5lcygpKQogICAg
ICAgICBmb3IgZmlsZW5hbWUsIGRpZmYgaW4gcGF0Y2guZmlsZXMuaXRlcml0ZW1zKCk6Ci0gICAg
ICAgICAgICBmaWxlX2V4dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzFdCiAg
ICAgICAgICAgICBsaW5lX251bWJlcnMgPSBzZXQoKQogCiAgICAgICAgICAgICBkZWYgZXJyb3Jf
Zm9yX3BhdGNoKGZpbGVuYW1lLCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1l
c3NhZ2UpOgpAQCAtNzE3LDggKzg3Niw0IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgog
ICAgICAgICAgICAgICAgIGlmIGxpbmVfbnVtYmVyIGluIGxpbmVfbnVtYmVyczoKICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5faGFuZGxlX2Vycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgY2F0
ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCiAKLSAgICAgICAgICAgICMgRklYTUU6IFNoYXJl
IHRoaXMgY29kZSB3aXRoIHNlbGYucHJvY2Vzc19maWxlKCkuCi0gICAgICAgICAgICBpZiBjcHBf
c3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBy
b2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3JfZm9yX3BhdGNoLCBzZWxmLm9wdGlvbnMudmVyYm9z
aXR5KQotICAgICAgICAgICAgZWxpZiB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgot
ICAgICAgICAgICAgICAgIHRleHRfc3R5bGUucHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcl9m
b3JfcGF0Y2gpCisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9y
X2Zvcl9wYXRjaCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcl91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcl91bml0dGVzdC5weQppbmRleCA1YTZlNjUwLi43MTg4ZjAxIDEwMDc1NQotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0
LnB5CkBAIC0zOCw4ICszOCwxMSBAQCBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGNoZWNrZXIg
YXMgc3R5bGUKIGZyb20gY2hlY2tlciBpbXBvcnQgQ2F0ZWdvcnlGaWx0ZXIKK2Zyb20gY2hlY2tl
ciBpbXBvcnQgUHJvY2Vzc29yRGlzcGF0Y2hlcgogZnJvbSBjaGVja2VyIGltcG9ydCBQcm9jZXNz
b3JPcHRpb25zCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlQ2hlY2tlcgorZnJvbSBjcHBfc3R5
bGUgaW1wb3J0IENwcFByb2Nlc3NvcgorZnJvbSB0ZXh0X3N0eWxlIGltcG9ydCBUZXh0UHJvY2Vz
c29yCiAKIGNsYXNzIENhdGVnb3J5RmlsdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAg
LTM1Miw2ICszNTUsMTUzIEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZpbGVzLCBbJ2Zvby5jcHAnLCAnYmFy
LmNwcCddKQogCiAKK2NsYXNzIFByb2Nlc3NvckRpc3BhdGNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKworICAgICIiIlRlc3RzIFByb2Nlc3NvckRpc3BhdGNoZXIgY2xhc3MuIiIiCisKKyAg
ICBkZWYgbW9ja19lcnJvcihzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHByb2Nlc3Nv
cihzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICBkaXNwYXRjaGVyID0gUHJvY2Vzc29yRGlzcGF0
Y2hlcigpCisgICAgICAgIHByb2Nlc3NvciA9IGRpc3BhdGNoZXIuZGlzcGF0Y2hfcHJvY2Vzc29y
KGZpbGVfcGF0aCwgWyJsaW5lIl0sIHNlbGYubW9ja19lcnJvciwgMykKKyAgICAgICAgcmV0dXJu
IHByb2Nlc3NvcgorCisgICAgZGVmIGFzc2VydF9jcHAoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAg
ICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlzIGEgQ3BwUHJvY2Vz
c29yLiIiIgorICAgICAgICBwcm9jZXNzb3IgPSBzZWxmLnByb2Nlc3NvcihmaWxlX3BhdGgpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5fX2NsYXNzX18sIENwcFByb2Nlc3Nv
cikKKworICAgIGRlZiBhc3NlcnRfdGV4dChzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJB
c3NlcnQgdGhhdCB0aGUgZGlzcGF0Y2hlZCBwcm9jZXNzb3IgaXMgYSBUZXh0UHJvY2Vzc29yLiIi
IgorICAgICAgICBwcm9jZXNzb3IgPSBzZWxmLnByb2Nlc3NvcihmaWxlX3BhdGgpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5fX2NsYXNzX18sIFRleHRQcm9jZXNzb3IpCisK
KyAgICBkZWYgYXNzZXJ0X25vbmUoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiQXNzZXJ0
IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlzIE5vbmUuIiIiCisgICAgICAgIHByb2Nl
c3NvciA9IHNlbGYucHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocHJvY2Vzc29yLCBOb25lKQorCisgICAgZGVmIHRlc3RfY3BwX3BhdGhzKHNlbGYpOgorICAg
ICAgICAiIiJUZXN0IHBhdGhzIHRoYXQgc2hvdWxkIGJlIGNoZWNrZWQgYXMgQysrLiIiIgorICAg
ICAgICBwYXRocyA9IFsKKyAgICAgICAgICAgICItIiwKKyAgICAgICAgICAgICJmb28uYyIsCisg
ICAgICAgICAgICAiZm9vLmNwcCIsCisgICAgICAgICAgICAiZm9vLmgiLAorICAgICAgICBdCisK
KyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydF9jcHAo
cGF0aCkKKworICAgICAgICAjIENoZWNrIHByb2Nlc3NvciBhdHRyaWJ1dGVzLgorICAgICAgICBw
cm9jZXNzb3IgPSBzZWxmLnByb2Nlc3NvcigiZm9vLmMiKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhwcm9jZXNzb3IuZXJyb3IsIHNlbGYubW9ja19lcnJvcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCAiYyIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmb28uYyIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHByb2Nlc3Nvci52ZXJib3NpdHksIDMpCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYu
cHJvY2Vzc29yKCItIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVf
ZXh0ZW5zaW9uLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVf
cGF0aCwgIi0iKQorCisgICAgZGVmIHRlc3RfdGV4dChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBw
YXRocyB0aGF0IHNob3VsZCBiZSBjaGVja2VkIGFzIHRleHQuIiIiCisgICAgICAgIHBhdGhzID0g
WworICAgICAgICAgICAiQ2hhbmdlTG9nIiwKKyAgICAgICAgICAgImZvby5jc3MiLAorICAgICAg
ICAgICAiZm9vLmh0bWwiLAorICAgICAgICAgICAiZm9vLmlkbCIsCisgICAgICAgICAgICJmb28u
anMiLAorICAgICAgICAgICAiZm9vLm1tIiwKKyAgICAgICAgICAgImZvby5waHAiLAorICAgICAg
ICAgICAiZm9vLnBtIiwKKyAgICAgICAgICAgImZvby5weSIsCisgICAgICAgICAgICJmb28udHh0
IiwKKyAgICAgICAgICAgIkZvb0NoYW5nZUxvZy5iYWsiLAorICAgICAgICAgICAiV2ViQ29yZS9D
aGFuZ2VMb2ciLAorICAgICAgICAgICAiV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcyIsCisgICAgICAgICAgICJXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdD1z
dHlsZSIsCisgICAgICAgICAgICJXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvdGV4dF9zdHls
ZS5weSIsCisgICAgICAgIF0KKworICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0X3RleHQocGF0aCkKKworICAgICAgICAjIENoZWNrIHByb2Nlc3NvciBh
dHRyaWJ1dGVzLgorICAgICAgICBwcm9jZXNzb3IgPSBzZWxmLnByb2Nlc3NvcigiZm9vLmNzcyIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvciwgc2VsZi5tb2NrX2Vy
cm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZm9v
LmNzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5l
Il0pCisKKyAgICBkZWYgdGVzdF9ub25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHBhdGhzIHRo
YXQgc2hvdWxkIG5vdCBiZSBjaGVja2VkLiIiIgorICAgICAgICBwYXRocyA9IFsKKyAgICAgICAg
ICAgIiIsCisgICAgICAgICAgICJmb28uYy9iYXIucG5nIiwKKyAgICAgICAgICAgImZvby5jYyIs
CisgICAgICAgICAgICJmb28uY3h4IiwKKyAgICAgICAgICAgImZvby5DIiwKKyAgICAgICAgICAg
ImZvby5ocHAiLAorICAgICAgICAgICAiZm9vLnBuZyIsCisgICAgICAgICAgICJMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcyIsCisgICAgICAgICAgICJtbSIsCisgICAgICAg
ICAgICJNYWtlZmlsZSIsCisgICAgICAgICAgICJXZWJDb3JlL0FuZHJvaWQubWsiLAorICAgICAg
ICAgICAiV2ViS2l0L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyIsCisgICAgICAg
ICAgICJXZWJLaXRUb29scy9TY3JpcHRzIiwKKyAgICAgICAgICAgIyBFeGVtcHRlZCBmaWxlcwor
ICAgICAgICAgICAiZ3RrMmRyYXdpbmcuYyIsCisgICAgICAgICAgICJndGsyZHJhd2luZy5oIiwK
KyAgICAgICAgICAgIldlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmgiLAorICAgICAg
ICAgICAiV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYyIsCisgICAgICAgICAgICMg
RXhlbXB0ZWQgZm9sZGVycworICAgICAgICAgICAiV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oIiwK
KyAgICAgICAgICAgIldlYktpdC9xdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vdHN0X3F3ZWJz
ZWN1cml0eW9yaWdpbi5jcHAiLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0
aHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydF9ub25lKHBhdGgpCisKKworY2xhc3MgTW9ja1N0
eWxlUHJvY2Vzc29yKG9iamVjdCk6CisKKyAgICAiIiJBIG1vY2sgc3R5bGUgcHJvY2Vzc29yLCBm
b3IgZXhhbXBsZSBhIG1vY2sgQ3BwUHJvY2Vzc29yLiIiIgorCisgICAgZXJyb3IgPSBOb25lCisg
ICAgZmlsZV9wYXRoID0gTm9uZQorICAgIGxpbmVzID0gTm9uZQorICAgIHZlcmJvc2l0eSA9IE5v
bmUKKyAgICB3YXNfcHJvY2Vzc19jYWxsZWQgPSBGYWxzZQorCisgICAgZGVmIF9faW5pdF9fKHNl
bGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcHJvY2VzcyhzZWxmKToKKyAgICAgICAgc2Vs
Zi53YXNfcHJvY2Vzc19jYWxsZWQgPSBUcnVlCisKKworY2xhc3MgTW9ja1Byb2Nlc3NvckRpc3Bh
dGNoZXIob2JqZWN0KToKKworICAgICIiIkEgbW9jayBQcm9jZXNzb3JEaXNwYXRjaGVyLiIiIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb2Nlc3Nvcik6CisgICAgICAgIHNlbGYucHJvY2Vz
c29yID0gcHJvY2Vzc29yCisKKyAgICBkZWYgZGlzcGF0Y2hfcHJvY2Vzc29yKHNlbGYsIGZpbGVf
cGF0aCwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGFw
cHJvcHJpYXRlIHN0eWxlIHByb2Nlc3Nvci4iIiIKKyAgICAgICAgaWYgZmlsZV9wYXRoID09ICJk
b19ub3RfcHJvY2Vzcy5wbmciOgorICAgICAgICAgICAgcHJvY2Vzc29yID0gTm9uZQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5wcm9jZXNzb3IKKyAgICAgICAg
ICAgIHByb2Nlc3Nvci5lcnJvciA9IGVycm9yCisgICAgICAgICAgICBwcm9jZXNzb3IuZmlsZV9w
YXRoID0gZmlsZV9wYXRoCisgICAgICAgICAgICBwcm9jZXNzb3IubGluZXMgPSBsaW5lcworICAg
ICAgICAgICAgcHJvY2Vzc29yLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQorCisgICAgICAgIHJldHVy
biBwcm9jZXNzb3IKKworCiBjbGFzcyBTdHlsZUNoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgICIiIlRlc3QgdGhlIFN0eWxlQ2hlY2tlciBjbGFzcy4KQEAgLTM2NCwxMyArNTE0
LDE2IEBAIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAg
ZXJyb3JfbWVzc2FnZSA9ICIiCiAKKyAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3Ioc2Vs
Zik6CisgICAgICAgIHBhc3MKKwogICAgIGRlZiBtb2NrX3dyaXRlX2Vycm9yKHNlbGYsIGVycm9y
X21lc3NhZ2UpOgogICAgICAgICAiIiJTdG9yZSBhbiBlcnJvciBtZXNzYWdlIHdpdGhvdXQgcHJp
bnRpbmcgaXQuIiIiCiAgICAgICAgIHNlbGYuZXJyb3JfbWVzc2FnZSA9IGVycm9yX21lc3NhZ2UK
ICAgICAgICAgcGFzcwogCi0gICAgZGVmIHN0eWxlX2NoZWNrZXIoc2VsZiwgb3B0aW9ucyk6Ci0g
ICAgICAgIHJldHVybiBTdHlsZUNoZWNrZXIob3B0aW9ucywgc2VsZi5tb2NrX3dyaXRlX2Vycm9y
KQorICAgIGRlZiBzdHlsZV9jaGVja2VyKHNlbGYsIG9wdGlvbnMsIGRpc3BhdGNoZXI9Tm9uZSk6
CisgICAgICAgIHJldHVybiBTdHlsZUNoZWNrZXIob3B0aW9ucywgc2VsZi5tb2NrX3dyaXRlX2Vy
cm9yLCBkaXNwYXRjaGVyKQogCiAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKICAgICAgICAgIiIi
VGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKQEAgLTQxMyw2ICs1NjYsMzIgQEAgY2xhc3Mg
U3R5bGVDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQsIDIpICMgRXJyb3IgY29uZmlkZW5jZSBq
dXN0IGhpZ2ggZW5vdWdoLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21l
c3NhZ2UsICJmaWxlbmFtZSgxKTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQogCisgICAg
ZGVmIHRlc3RfcHJvY2Vzc19saW5lcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBfcHJvY2Vzc19s
aW5lcygpLiIiIgorICAgICAgICBvcHRpb25zID0gUHJvY2Vzc29yT3B0aW9ucyh2ZXJib3NpdHk9
MykKKyAgICAgICAgcHJvY2Vzc29yID0gTW9ja1N0eWxlUHJvY2Vzc29yKCkKKyAgICAgICAgZGlz
cGF0Y2hlciA9IE1vY2tQcm9jZXNzb3JEaXNwYXRjaGVyKHByb2Nlc3NvcikKKyAgICAgICAgc3R5
bGVfY2hlY2tlciA9IHNlbGYuc3R5bGVfY2hlY2tlcihvcHRpb25zLCBkaXNwYXRjaGVyKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9jZXNzb3IuZXJyb3IgaXMgTm9uZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci5maWxlX3BhdGggaXMgTm9uZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHByb2Nlc3Nvci5saW5lcyBpcyBOb25lKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocHJvY2Vzc29yLnZlcmJvc2l0eSBpcyBOb25lKQorCisgICAgICAgICMgVGVzdCBhIGZp
bGUgdGhhdCBzaG91bGQgbm90IGJlIHByb2Nlc3NlZC4KKyAgICAgICAgc3R5bGVfY2hlY2tlci5f
cHJvY2Vzc19saW5lcygiZG9fbm90X3Byb2Nlc3MucG5nIiwgWyJsaW5lIl0sIHNlbGYubW9ja19o
YW5kbGVfc3R5bGVfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yLndh
c19wcm9jZXNzX2NhbGxlZCkKKworICAgICAgICAjIFRlc3QgYSBmaWxlIHRoYXQgc2hvdWxkIGJl
IHByb2Nlc3NlZC4KKyAgICAgICAgc3R5bGVfY2hlY2tlci5fcHJvY2Vzc19saW5lcygiQ2hhbmdl
bG9nIiwgWyJsaW5lIl0sIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCisgICAgICAgICMg
VmVyaWZ5IHRoYXQgdGhlIHByb2Nlc3NvciBpcyBnZXR0aW5nIGNhbGxlZCBhbmQgcGFzc2VkIGFs
bCBvZgorICAgICAgICAjIHRoZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHByb2Nlc3Nvci53YXNfcHJvY2Vzc19jYWxsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KHByb2Nlc3Nvci5lcnJvciwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgIkNoYW5nZWxvZyIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci52ZXJib3NpdHksIDMpCisKIAogaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CmluZGV4IGVhMGE2NGIuLjM3N2EwMmIgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CkBA
IC00LDYgKzQsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAjIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHly
aWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yODEyLDcgKzI4MTMsNyBAQCBkZWYgcHJv
Y2Vzc19saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwKICAgICBjaGVja19pbnZhbGlkX2lu
Y3JlbWVudChmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQogCiAKLWRlZiBwcm9j
ZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVy
Ym9zaXR5KToKK2RlZiBfcHJvY2Vzc19saW5lcyhmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxp
bmVzLCBlcnJvciwgdmVyYm9zaXR5KToKICAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrcyBhbmQg
cmVwb3J0cyBhbnkgZXJyb3JzIHRvIHRoZSBnaXZlbiBlcnJvciBmdW5jdGlvbi4KIAogICAgIEFy
Z3M6CkBAIC0yODUxLDg5ICsyODUyLDMxIEBAIGRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFt
ZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKICAgICBjaGVja19m
b3JfbmV3X2xpbmVfYXRfZW9mKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCiAKIAotZGVmIHByb2Nl
c3NfZmlsZShmaWxlbmFtZSwgZXJyb3IsIHZlcmJvc2l0eSk6Ci0gICAgIiIiUGVyZm9ybXMgY3Bw
X3N0eWxlIG9uIGEgc2luZ2xlIGZpbGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRo
ZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHBhcnNlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0
byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAgIHZlcmJvc2l0eTogQW4gaW50ZWdl
ciB0aGF0IGlzIHRoZSB2ZXJib3NpdHkgbGV2ZWwgdG8gdXNlIHdoaWxlCi0gICAgICAgICAgICAg
ICAgIGNoZWNraW5nIHN0eWxlLgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgIyBTdXBwb3J0
IHRoZSBVTklYIGNvbnZlbnRpb24gb2YgdXNpbmcgIi0iIGZvciBzdGRpbi4gIE5vdGUgdGhhdAot
ICAgICAgICAjIHdlIGFyZSBub3Qgb3BlbmluZyB0aGUgZmlsZSB3aXRoIHVuaXZlcnNhbCBuZXds
aW5lIHN1cHBvcnQKLSAgICAgICAgIyAod2hpY2ggY29kZWNzIGRvZXNuJ3Qgc3VwcG9ydCBhbnl3
YXkpLCBzbyB0aGUgcmVzdWx0aW5nIGxpbmVzIGRvCi0gICAgICAgICMgY29udGFpbiB0cmFpbGlu
ZyAnXHInIGNoYXJhY3RlcnMgaWYgd2UgYXJlIHJlYWRpbmcgYSBmaWxlIHRoYXQKLSAgICAgICAg
IyBoYXMgQ1JMRiBlbmRpbmdzLgotICAgICAgICAjIElmIGFmdGVyIHRoZSBzcGxpdCBhIHRyYWls
aW5nICdccicgaXMgcHJlc2VudCwgaXQgaXMgcmVtb3ZlZAotICAgICAgICAjIGJlbG93LiBJZiBp
dCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCAoaS5lLiBvcy5saW5lc2VwICE9Ci0gICAg
ICAgICMgJ1xyXG4nIGFzIGluIFdpbmRvd3MpLCBhIHdhcm5pbmcgaXMgaXNzdWVkIGJlbG93IGlm
IHRoaXMgZmlsZQotICAgICAgICAjIGlzIHByb2Nlc3NlZC4KLQotICAgICAgICBpZiBmaWxlbmFt
ZSA9PSAnLSc6Ci0gICAgICAgICAgICBsaW5lcyA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIo
c3lzLnN0ZGluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVjcy5nZXRyZWFkZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4JyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQo
J1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVzID0gY29kZWNzLm9wZW4oZmls
ZW5hbWUsICdyJywgJ3V0ZjgnLCAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQotCi0gICAg
ICAgIGNhcnJpYWdlX3JldHVybl9mb3VuZCA9IEZhbHNlCi0gICAgICAgICMgUmVtb3ZlIHRyYWls
aW5nICdccicuCi0gICAgICAgIGZvciBsaW5lX251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToK
LSAgICAgICAgICAgIGlmIGxpbmVzW2xpbmVfbnVtYmVyXS5lbmRzd2l0aCgnXHInKToKLSAgICAg
ICAgICAgICAgICBsaW5lc1tsaW5lX251bWJlcl0gPSBsaW5lc1tsaW5lX251bWJlcl0ucnN0cmlw
KCdccicpCi0gICAgICAgICAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0gVHJ1ZQotCi0g
ICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCi0gICAgICAgICAg
ICAiU2tpcHBpbmcgaW5wdXQgJyVzJzogQ2FuJ3Qgb3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVu
YW1lKQotICAgICAgICByZXR1cm4KLQotICAgICMgTm90ZSwgaWYgbm8gZG90IGlzIGZvdW5kLCB0
aGlzIHdpbGwgZ2l2ZSB0aGUgZW50aXJlIGZpbGVuYW1lIGFzIHRoZSBleHQuCi0gICAgZmlsZV9l
eHRlbnNpb24gPSBmaWxlbmFtZVtmaWxlbmFtZS5yZmluZCgnLicpICsgMTpdCitjbGFzcyBDcHBQ
cm9jZXNzb3Iob2JqZWN0KToKIAotICAgICMgV2hlbiByZWFkaW5nIGZyb20gc3RkaW4sIHRoZSBl
eHRlbnNpb24gaXMgdW5rbm93biwgc28gbm8gY3BwX3N0eWxlIHRlc3RzCi0gICAgIyBzaG91bGQg
cmVseSBvbiB0aGUgZXh0ZW5zaW9uLgotICAgIGlmIChmaWxlbmFtZSAhPSAnLScgYW5kIG5vdCBj
YW5faGFuZGxlKGZpbGVuYW1lKSk6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0lnbm9yaW5n
ICVzOyBub3QgYSAuY3BwLCAuYyBvciAuaCBmaWxlXG4nICUgZmlsZW5hbWUpCi0gICAgZWxpZiBp
c19leGVtcHQoZmlsZW5hbWUpOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJZ25vcmluZyAl
czsgVGhpcyBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRoZSBzdHlsZSBndWlkZS5cbicgJSBmaWxlbmFt
ZSkKLSAgICBlbHNlOgotICAgICAgICBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9l
eHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KQotICAgICAgICBpZiBjYXJyaWFnZV9y
ZXR1cm5fZm91bmQgYW5kIG9zLmxpbmVzZXAgIT0gJ1xyXG4nOgotICAgICAgICAgICAgIyBVc2Ug
MCBmb3IgbGluZV9udW1iZXIgc2luY2Ugb3V0cHV0aW5nIG9ubHkgb25lIGVycm9yIGZvciBwb3Rl
bnRpYWxseQotICAgICAgICAgICAgIyBzZXZlcmFsIGxpbmVzLgotICAgICAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIDAsICd3aGl0ZXNwYWNlL25ld2xpbmUnLCAxLAotICAgICAgICAgICAgICAgICAg
J09uZSBvciBtb3JlIHVuZXhwZWN0ZWQgXFxyICheTSkgZm91bmQ7JwotICAgICAgICAgICAgICAg
ICAgJ2JldHRlciB0byB1c2Ugb25seSBhIFxcbicpCisgICAgIiIiUHJvY2Vzc2VzIEMrKyBsaW5l
cyBmb3IgY2hlY2tpbmcgc3R5bGUuIiIiCiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9w
YXRoLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorICAgICAgICAi
IiJDcmVhdGUgYSBDcHBQcm9jZXNzb3IgaW5zdGFuY2UuCiAKLWRlZiBjYW5faGFuZGxlKGZpbGVu
YW1lKToKLSAgICAiIiJDaGVja3MgaWYgdGhpcyBtb2R1bGUgc3VwcG9ydHMgZm9yIHRoZSBzcGVj
aWZpZWQgZmlsZSB0eXBlLgorICAgICAgICBBcmdzOgorICAgICAgICAgIGZpbGVfZXh0ZW5zaW9u
OiBBIHN0cmluZyB0aGF0IGlzIHRoZSBmaWxlIGV4dGVuc2lvbiwgd2l0aG91dAorICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGUgbGVhZGluZyBkb3QuCiAKLSAgICBBcmdzOgotICAgICAgZmls
ZW5hbWU6IEEgZmlsZW5hbWUuIEl0IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAgICAg
IiIiCi0gICAgcmV0dXJuIG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzFdIGluICgnLmgnLCAn
LmNwcCcsICcuYycpCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmVycm9yID0gZXJyb3IKKyAg
ICAgICAgc2VsZi5maWxlX2V4dGVuc2lvbiA9IGZpbGVfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYu
ZmlsZV9wYXRoID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYubGluZXMgPSBsaW5lcworICAgICAg
ICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0eQogCisgICAgZGVmIHByb2Nlc3Moc2VsZik6Cisg
ICAgICAgIF9wcm9jZXNzX2xpbmVzKHNlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfZXh0ZW5zaW9u
LCBzZWxmLmxpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yLCBzZWxmLnZl
cmJvc2l0eSkKIAotZGVmIGlzX2V4ZW1wdChmaWxlbmFtZSk6Ci0gICAgIiIiQ2hlY2tzIGlmIHRo
ZSBnaXZlbiBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRoZSBzdHlsZSBndWlkZS4gIEZvciBleGFtcGxl
LAotICAgIHNvbWUgZmlsZXMgYXJlIHB1cnBvc2VmdWxseSBtYW50YWluZWQgaW4gTW96aWxsYSBz
dHlsZSB0byBlYXNlIGZ1dHVyZQotICAgIG1lcmdlcy4KIAotICAgIEFyZ3M6Ci0gICAgICBmaWxl
bmFtZTogQSBmaWxlbmFtZS4gSXQgbWF5IGNvbnRhaW4gZGlyZWN0b3J5IG5hbWVzLgotICAgICAi
IiIKLSAgICBpZiAoZmlsZW5hbWUuZmluZCgnV2ViS2l0L3F0L0FwaS8nKSA+PSAwCi0gICAgICAg
IG9yIGZpbGVuYW1lLmZpbmQoJ1dlYktpdC9xdC90ZXN0cy8nKSA+PSAwKToKLSAgICAgICAgIyBU
aGUgUXQgQVBJIGFuZCB0ZXN0cyBkbyBub3QgZm9sbG93IFdlYktpdCBzdHlsZS4KLSAgICAgICAg
IyBUaGV5IGZvbGxvdyBRdCBzdHlsZS4gOikKLSAgICAgICAgcmV0dXJuIFRydWUKKyMgRklYTUU6
IFJlbW92ZSB0aGlzIGZ1bmN0aW9uIChyZXF1aXJlcyByZWZhY3RvcmluZyB1bml0IHRlc3RzKS4K
K2RlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBl
cnJvciwgdmVyYm9zaXR5KToKKyAgICBwcm9jZXNzb3IgPSBDcHBQcm9jZXNzb3IoZmlsZW5hbWUs
IGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSkKKyAgICBwcm9jZXNzb3Iu
cHJvY2VzcygpCiAKLSAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkgaW4gKAot
ICAgICAgICAnZ3RrMmRyYXdpbmcuYycsCi0gICAgICAgICdndGsyZHJhd2luZy5oJywKLSAgICAp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHls
ZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0
eWxlX3VuaXR0ZXN0LnB5CmluZGV4IDQyZDZjMzAuLjg1OWNiYTkgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5
CkBAIC00LDYgKzQsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAj
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MSw2ICs0Miw4IEBAIGltcG9ydCBy
YW5kb20KIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY3BwX3N0eWxlCitmcm9t
IGNwcF9zdHlsZSBpbXBvcnQgQ3BwUHJvY2Vzc29yCisKICMgRklYTUU6IFJlbW92ZSB0aGUgbmVl
ZCB0byBpbXBvcnQgYW55dGhpbmcgZnJvbSBjaGVja2VyLiBTZWUgdGhlCiAjICAgICAgICBGSVhN
RSBub3RlcyBuZWFyIHRoZSBTVFlMRV9DQVRFR09SSUVTIGRlZmluaXRpb24gZm9yIGEKICMgICAg
ICAgIHN1Z2dlc3Rpb24gb24gaG93IHRvIGJlc3QgZG8gdGhpcy4KQEAgLTM1ODgsMzMgKzM1OTEs
MjIgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICBw
YXNzCiAKIAotICAgIGRlZiB0ZXN0X2Nhbl9oYW5kbGUoc2VsZik6Ci0gICAgICAgICIiIlRlc3Rz
IGZvciBjcHBfc3R5bGUuY2FuX2hhbmRsZSgpLiIiIgotICAgICAgICBzZWxmLmFzc2VydF8obm90
IGNwcF9zdHlsZS5jYW5faGFuZGxlKCcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHls
ZS5jYW5faGFuZGxlKCdmb28uaCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHls
ZS5jYW5faGFuZGxlKCdmb28uaHBwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUu
Y2FuX2hhbmRsZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5jYW5f
aGFuZGxlKCdmb28uY3BwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNh
bl9oYW5kbGUoJ2Zvby5jYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5j
YW5faGFuZGxlKCdmb28uY3h4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxl
LmNhbl9oYW5kbGUoJ2Zvby5DJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxl
LmNhbl9oYW5kbGUoJ2Zvby5tbScpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHls
ZS5jYW5faGFuZGxlKCctJykpCi0KLSAgICBkZWYgdGVzdF9pc19leGVtcHQoc2VsZik6Ci0gICAg
ICAgICIiIlRlc3RzIGZvciBjcHBfc3R5bGUuaXNfZXhlbXB0KCkuIiIiCi0gICAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
KG5vdCBjcHBfc3R5bGUuaXNfZXhlbXB0KCdmb28uaHBwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
KG5vdCBjcHBfc3R5bGUuaXNfZXhlbXB0KCdmb28uY3BwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnLScpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3Bw
X3N0eWxlLmlzX2V4ZW1wdCgnZ3RrMmRyYXdpbmcuaCcpKQotICAgICAgICBzZWxmLmFzc2VydF8o
Y3BwX3N0eWxlLmlzX2V4ZW1wdCgnV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuaCcp
KQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZ3RrMmRyYXdpbmcu
YycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0
eWxlLmlzX2V4ZW1wdCgnV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdXZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3VyaXR5
b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwJykpCitjbGFzcyBDcHBQcm9jZXNzb3JU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIENwcFByb2Nlc3NvciBjbGFz
cy4iIiIKKworICAgIGRlZiBtb2NrX2Vycm9yKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBk
ZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9faW5pdF9fIGNvbnN0cnVjdG9y
LiIiIgorICAgICAgICBwcm9jZXNzb3IgPSBDcHBQcm9jZXNzb3IoImZpbGUiLCAiLmgiLCBbImxp
bmUiXSwgc2VsZi5tb2NrX2Vycm9yLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9j
ZXNzb3IuZXJyb3IsIHNlbGYubW9ja19lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
cHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCAiLmgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZmlsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBy
b2Nlc3Nvci52ZXJib3NpdHksIDMpCisKIAogZGVmIHRlYXJEb3duKCk6CiAgICAgIiIiQSBnbG9i
YWwgY2hlY2sgdG8gbWFrZSBzdXJlIGFsbCBlcnJvci1jYXRlZ29yaWVzIGhhdmUgYmVlbiB0ZXN0
ZWQuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRf
c3R5bGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGUu
cHkKaW5kZXggMzg1YmJhYS4uOGU3NDQ5MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNiw1MyArMjcsMzAgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKLSIiIkRvZXMgV2ViS2l0LWxpbnQgb24gdGV4dCBmaWxlcy4KKyIi
IkNoZWNrcyBXZWJLaXQgc3R5bGUgZm9yIHRleHQgZmlsZXMuIiIiCiAKLVRoaXMgbW9kdWxlIHNo
YXJlcyBlcnJvciBjb3VudCwgZmlsdGVyIHNldHRpbmcsIG91dHB1dCBzZXR0aW5nLCBldGMuIHdp
dGggY3BwX3N0eWxlLgotIiIiCiAKLWltcG9ydCBjb2RlY3MKLWltcG9ydCBvcy5wYXRoCi1pbXBv
cnQgc3lzCitjbGFzcyBUZXh0UHJvY2Vzc29yKG9iamVjdCk6CiAKLWltcG9ydCBjcHBfc3R5bGUK
KyAgICAiIiJQcm9jZXNzZXMgdGV4dCBsaW5lcyBmb3IgY2hlY2tpbmcgc3R5bGUuIiIiCiAKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBsaW5lcywgZXJyb3IpOgorICAgICAgICBz
ZWxmLmZpbGVfcGF0aCA9IGZpbGVfcGF0aAorICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMKKyAg
ICAgICAgc2VsZi5lcnJvciA9IGVycm9yCiAKLWRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFt
ZSwgbGluZXMsIGVycm9yKToKLSAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrIGZvciB0ZXh0IG9u
IHRoZSBzcGVjaWZpZWQgbGluZXMuCi0KLSAgICBJdCByZXBvcnRzIGVycm9ycyB0byB0aGUgZ2l2
ZW4gZXJyb3IgZnVuY3Rpb24uCi0gICAgIiIiCi0gICAgbGluZXMgPSAoWycvLyBhZGp1c3QgbGlu
ZSBudW1iZXJzIHRvIG1ha2UgdGhlIGZpcnN0IGxpbmUgMS4nXSArIGxpbmVzKQotCi0gICAgIyBG
SVhNRTogc2hhcmUgd2l0aCBjcHBfc3R5bGUuY2hlY2tfc3R5bGUoKQotICAgIGZvciBsaW5lX251
bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAgICAgICBpZiAnXHQnIGluIGxpbmU6
Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3Rh
YicsIDUsICdMaW5lIGNvbnRhaW5zIHRhYiBjaGFyYWN0ZXIuJykKKyAgICBkZWYgcHJvY2Vzcyhz
ZWxmKToKKyAgICAgICAgbGluZXMgPSBzZWxmLmxpbmVzCisgICAgICAgIGxpbmVzID0gKFsnLy8g
YWRqdXN0IGxpbmUgbnVtYmVycyB0byBtYWtlIHRoZSBmaXJzdCBsaW5lIDEuJ10gKyBsaW5lcykK
IAorICAgICAgICAjIEZJWE1FOiBzaGFyZSB3aXRoIGNwcF9zdHlsZS4KKyAgICAgICAgZm9yIGxp
bmVfbnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CisgICAgICAgICAgICBpZiAnXHQn
IGluIGxpbmU6CisgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihzZWxmLmZpbGVfcGF0aCwgbGlu
ZV9udW1iZXIsICd3aGl0ZXNwYWNlL3RhYicsIDUsICdMaW5lIGNvbnRhaW5zIHRhYiBjaGFyYWN0
ZXIuJykKIAotZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3IpOgotICAgICIiIlBlcmZv
cm1zIGxpbnQgY2hlY2sgZm9yIHRleHQgb24gYSBzaW5nbGUgZmlsZS4iIiIKLSAgICBpZiAobm90
IGNhbl9oYW5kbGUoZmlsZW5hbWUpKToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSWdub3Jp
bmcgJXM7IG5vdCBhIHN1cHBvcnRlZCBmaWxlXG4nICUgZmlsZW5hbWUpCi0gICAgICAgIHJldHVy
bgogCi0gICAgIyBGSVhNRTogc2hhcmUgY29kZSB3aXRoIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUo
KS4KLSAgICB0cnk6Ci0gICAgICAgICMgRG8gbm90IHN1cHBvcnQgZm9yIGZpbGVuYW1lPSctJy4g
Y3BwX3N0eWxlIGhhbmRsZXMgaXQuCi0gICAgICAgIGxpbmVzID0gY29kZWNzLm9wZW4oZmlsZW5h
bWUsICdyJywgJ3V0ZjgnLCAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQotICAgIGV4Y2Vw
dCBJT0Vycm9yOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTa2lwcGluZyBpbnB1dCAnJXMn
OiBDYW4ndCBvcGVuIGZvciByZWFkaW5nXG4iICUgZmlsZW5hbWUpCi0gICAgICAgIHJldHVybgot
ICAgIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCi0KLQotZGVmIGNh
bl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICIiIkNoZWNrcyBpZiB0aGlzIG1vZHVsZSBzdXBwb3J0
cyB0aGUgc3BlY2lmaWVkIGZpbGUgdHlwZS4KKyMgRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9u
IChyZXF1aXJlcyByZWZhY3RvcmluZyB1bml0IHRlc3RzKS4KK2RlZiBwcm9jZXNzX2ZpbGVfZGF0
YShmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKKyAgICBwcm9jZXNzb3IgPSBUZXh0UHJvY2Vzc29y
KGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCisgICAgcHJvY2Vzc29yLnByb2Nlc3MoKQogCi0gICAg
QXJnczoKLSAgICAgIGZpbGVuYW1lOiBBIGZpbGVuYW1lLiBJdCBtYXkgY29udGFpbiBkaXJlY3Rv
cnkgbmFtZXMuCi0gICAgIiIiCi0gICAgcmV0dXJuICgiQ2hhbmdlTG9nIiBpbiBmaWxlbmFtZQot
ICAgICAgICAgICAgb3IgIldlYktpdFRvb2xzL1NjcmlwdHMvIiBpbiBmaWxlbmFtZQotICAgICAg
ICAgICAgb3Igb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0gaW4gKCcuY3NzJywgJy5odG1s
JywgJy5pZGwnLCAnLmpzJywgJy5tbScsICcucGhwJywgJy5wbScsICcucHknLCAnLnR4dCcpKSBh
bmQgbm90ICJMYXlvdXRUZXN0cy8iIGluIGZpbGVuYW1lCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHkKaW5kZXgg
ZDkxMTVmMC4uNDMzNDAxZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weQpAQCAtMzIsNyArMzIsNyBAQAog
aW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0ZXh0X3N0eWxlCi0KK2Zyb20gdGV4dF9zdHlsZSBp
bXBvcnQgVGV4dFByb2Nlc3NvcgogCiBjbGFzcyBUZXh0U3R5bGVUZXN0Q2FzZSh1bml0dGVzdC5U
ZXN0Q2FzZSk6CiAgICAgIiIiVGVzdENhc2UgZm9yIHRleHRfc3R5bGUucHkiIiIKQEAgLTc2LDM2
ICs3NiwxOSBAQCBjbGFzcyBUZXh0U3R5bGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdcdFJldmlld2VkIGJ5IE5PQk9EWS4nXSwgMykKIAog
Ci0gICAgZGVmIHRlc3RfY2FuX2hhbmRsZShzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgZm9yIHRl
eHRfc3R5bGUuY2FuX2hhbmRsZSgpLiIiIgotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRf
c3R5bGUuY2FuX2hhbmRsZSgnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHls
ZS5jYW5faGFuZGxlKCctJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9o
YW5kbGUoJ0NoYW5nZUxvZycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5f
aGFuZGxlKCdXZWJDb3JlL0NoYW5nZUxvZycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9z
dHlsZS5jYW5faGFuZGxlKCdGb29DaGFuZ2VMb2cuYmFrJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0
PXN0eWxlJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dl
YktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy90ZXh0X3N0eWxlLnB5JykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJLaXRUb29scy9TY3JpcHRzJykp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmNzcycp
KQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28uaHRtbCcp
KQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28uaWRsJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5qcycpKQot
ICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0
X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5tbScpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9z
dHlsZS5jYW5faGFuZGxlKCdmb28ucGhwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0
eWxlLmNhbl9oYW5kbGUoJ2Zvby5wbScpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHls
ZS5jYW5faGFuZGxlKCdmb28ucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUu
Y2FuX2hhbmRsZSgnZm9vLnR4dCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5
bGUuY2FuX2hhbmRsZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0
eWxlLmNhbl9oYW5kbGUoJ2Zvby5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9z
dHlsZS5jYW5faGFuZGxlKCdmb28uYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRf
c3R5bGUuY2FuX2hhbmRsZSgnZm9vLnBuZycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRl
eHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmMvYmFyLnBuZycpKQotICAgICAgICBzZWxmLmFzc2Vy
dF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViS2l0L0VuZ2xpc2gubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2Fu
X2hhbmRsZSgnTWFrZWZpbGUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0eWxl
LmNhbl9oYW5kbGUoJ1dlYkNvcmUvQW5kcm9pZC5taycpKQotICAgICAgICBzZWxmLmFzc2VydF8o
bm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUt
dGVzdHMuanMnKSkKK2NsYXNzIFRleHRQcm9jZXNzb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KworICAgICIiIlRlc3RzIFRleHRQcm9jZXNzb3IgY2xhc3MuIiIiCisKKyAgICBkZWYgbW9ja19l
cnJvcihzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAg
ICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKKyAgICAgICAgcHJvY2Vzc29y
ID0gVGV4dFByb2Nlc3NvcigiZmlsZSIsIFsibGluZSJdLCBzZWxmLm1vY2tfZXJyb3IpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvciwgc2VsZi5tb2NrX2Vycm9yKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZmlsZSIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCiAKIAog
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46854</attachid>
            <date>2010-01-18 14:43:09 -0800</date>
            <delta_ts>2010-01-19 23:52:58 -0800</delta_ts>
            <desc>Proposed patch 3</desc>
            <filename>_patch-33775-3.txt</filename>
            <type>text/plain</type>
            <size>40478</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmMTBlNzQ1Li5kNDhjNWQzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTAtMDEt
MTggIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JlZCBmaWxlIG5hbWUg
YW5kIGZpbGUtcmVhZGluZyByZWxhdGVkIGNvZGUgZnJvbQorICAgICAgICBjcHBfc3R5bGUucHkg
YW5kIHRleHRfc3R5bGUucHkgaW50byBjaGVja2VyLnB5LgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc3NQorCisgICAgICAgICogU2NyaXB0cy9j
aGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBVcGRhdGVzIGNhdXNlZCBieSBjaGFuZ2Vz
IHRvIGNoZWNrZXIucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBQcm9jZXNzb3JEaXNwYXRjaGVyIGNsYXNzLgorICAg
ICAgICAgIC0gQWRkZWQgb3B0aW9uYWwgImRpc3BhdGNoZXIiIHBhcmFtZXRlciB0byBTdHlsZUNo
ZWNrZXIgY29uc3RydWN0b3IuCisgICAgICAgICAgLSBBZGRlZCBfcHJvY2Vzc19saW5lcygpLgor
ICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX2ZpbGUoKSB0byBfcHJvY2Vzc19maWxlKCkgYW5k
IHJlZmFjdG9yZWQuCisgICAgICAgICAgLSBBZGRlZCBjaGVja19maWxlIHRvIHJlcGxhY2UgcHJv
Y2Vzc19maWxlKCkuCisgICAgICAgICAgLSBSZW5hbWVkIHByb2Nlc3NfcGF0Y2goKSB0byBjaGVj
a19wYXRjaCgpLgorICAgICAgICAgIC0gQWRkcmVzc2VkIEZJWE1FIGluIGNoZWNrX3BhdGNoKCkg
dG8gc2hhcmUgY29kZSB3aXRoIHByb2Nlc3NfZmlsZSgpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgUHJv
Y2Vzc29yRGlzcGF0Y2hlclRlc3QgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCBNb2NrU3R5bGVQ
cm9jZXNzb3IgY2xhc3MuCisgICAgICAgICAgLSBBZGRlZCBTdHlsZUNoZWNrZXJQcm9jZXNzTGlu
ZXNUZXN0IGNsYXNzLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5
bGUucHk6CisgICAgICAgICAgLSBSZW5hbWVkIHByb2Nlc3NfZmlsZV9kYXRhKCkgdG8gX3Byb2Nl
c3NfbGluZXMuCisgICAgICAgICAgLSBSZW1vdmVkIHByb2Nlc3NfZmlsZSgpIChtb3ZlZCBsb2dp
YyB0byBjaGVja2VyLnB5KS4KKyAgICAgICAgICAtIFJlbW92ZWQgY2FuX2hhbmRsZSgpIChtb3Zl
ZCBsb2dpYyB0byBjaGVja2VyLnB5KS4KKyAgICAgICAgICAtIEFkZGVkIENwcFByb2Nlc3NvciBj
bGFzcy4KKyAgICAgICAgICAtIFJlbW92ZWQgaXNfZXhlbXB0KCkgKG1vdmVkIGxvZ2ljIHRvIGNo
ZWNrZXIucHkpLgorICAgICAgICAgIC0gQWRkZWQgcHJvY2Vzc19maWxlX2RhdGEoKSBiYWNrIGFz
IGEgd3JhcHBlciBmdW5jdGlvbi4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y3BwX3N0eWxlX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gUmVtb3ZlZCB0ZXN0X2Nhbl9oYW5k
bGUoKS4KKyAgICAgICAgICAtIFJlbW92ZWQgdGVzdF9pc19leGVtcHQoKS4KKyAgICAgICAgICAt
IEFkZGVkIENwcFByb2Nlc3NvclRlc3QgY2xhc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL3RleHRfc3R5bGUucHk6CisgICAgICAgICAgLSBBZGRlZCBUZXh0UHJvY2Vzc29y
IGNsYXNzLgorICAgICAgICAgIC0gUmVtb3ZlZCBwcm9jZXNzX2ZpbGUoKS4KKyAgICAgICAgICAt
IFJlbW92ZWQgY2FuX2hhbmRsZSgpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gUmVtb3ZlZCB0ZXN0X2Nhbl9o
YW5kbGUoKS4KKyAgICAgICAgICAtIEFkZGVkIFRleHRQcm9jZXNzb3JUZXN0IGNsYXNzLgorCiAy
MDEwLTAxLTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
TGF5b3V0VGVzdENvbnRyb2xsZXIgc3VwcG9ydCBmb3IgY2FsbGluZyBuZXcgV2ViS2l0IFNQSSB0
bwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQppbmRleCAxNDc1ZTZhLi5hMmI1
ODRmIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQpAQCAtNjgsNyArNjgs
NyBAQCBkZWYgbWFpbigpOgogCiAgICAgaWYgZmlsZXM6CiAgICAgICAgIGZvciBmaWxlbmFtZSBp
biBmaWxlczoKLSAgICAgICAgICAgIHN0eWxlX2NoZWNrZXIucHJvY2Vzc19maWxlKGZpbGVuYW1l
KQorICAgICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVja19maWxlKGZpbGVuYW1lKQogCiAgICAg
ZWxzZToKICAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRoKCcuJykKQEAgLTg0LDcgKzg0LDcg
QEAgZGVmIG1haW4oKToKICAgICAgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaF9zaW5j
ZV9sb2NhbF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGF0Y2gg
PSBzY20uY3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc3R5bGVfY2hlY2tlci5wcm9jZXNzX3BhdGNo
KHBhdGNoKQorICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX3BhdGNoKHBhdGNoKQogCiAgICAg
c3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZFxuJyAlIHN0eWxlX2NoZWNr
ZXIuZXJyb3JfY291bnQpCiAgICAgc3lzLmV4aXQoc3R5bGVfY2hlY2tlci5lcnJvcl9jb3VudCA+
IDApCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5k
ZXggYzNmNGRiMC4uMTc0NDNiZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weQpAQCAtMjksMTUgKzI5LDE0IEBACiAKICIiIkZyb250IGVuZCBvZiBz
b21lIHN0eWxlLWNoZWNrZXIgbW9kdWxlcy4iIiIKIAotIyBGSVhNRTogTW92ZSBtb3JlIGNvZGUg
ZnJvbSBjcHBfc3R5bGUgdG8gaGVyZS4KLQoraW1wb3J0IGNvZGVjcwogaW1wb3J0IGdldG9wdAog
aW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotaW1wb3J0IGNwcF9zdHlsZQotaW1wb3J0IHRl
eHRfc3R5bGUKIGZyb20gZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gY3BwX3N0
eWxlIGltcG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9zdHlsZSBpbXBvcnQgVGV4dFByb2Nl
c3NvcgogCiAKICMgVGhlc2UgZGVmYXVsdHMgYXJlIHVzZWQgYnkgY2hlY2std2Via2l0LXN0eWxl
LgpAQCAtNjE5LDYgKzYxOCwxNDAgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAg
ICAgICAgcmV0dXJuIChmaWxlbmFtZXMsIG9wdGlvbnMpCiAKIAorY2xhc3MgTm9uZVByb2Nlc3Nv
cihvYmplY3QpOgorCisgICAgIiIiU3VwcG9ydHMgcHJvY2Vzc2luZyBmaWxlcyB0aGF0IHNob3Vs
ZCBiZSBza2lwcGVkLiIiIgorCisgICAgIyBUaGUgInN0ZGVycl93cml0ZSIgcGFyYW1ldGVyIGFs
bG93cyBmb3Igc2ltcGxlciB1bml0IHRlc3RpbmcuCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZp
bGVfcGF0aCwgc3RkZXJyX3dyaXRlLCBzaG91bGRfd3JpdGVfd2FybmluZyk6CisgICAgICAgICIi
IkNyZWF0ZSBhIHByb2Nlc3NvciB0aGF0IHNraXBzIGZpbGVzLiIiIgorICAgICAgICBzZWxmLl9m
aWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5fc2hvdWxkX3dyaXRlX3dhcm5pbmcg
PSBzaG91bGRfd3JpdGVfd2FybmluZworICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUgPSBzdGRl
cnJfd3JpdGUKKworICAgIGRlZiBwcm9jZXNzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9zaG91
bGRfd3JpdGVfd2FybmluZzoKKyAgICAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgiSWdub3Jp
bmcgJXM6IHRoaXMgZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzdHlsZSBndWlkZS5cbiIgJSBzZWxmLl9maWxlX3BhdGgpCisKKworY2xh
c3MgUHJvY2Vzc29yRGlzcGF0Y2hlcihvYmplY3QpOgorCisgICAgIiIiU3VwcG9ydHMgY2hvb3Np
bmcgYW5kIGNyZWF0aW5nIHdoYXQgc3R5bGUgcHJvY2Vzc29yIHRvIHVzZS4iIiIKKworICAgIGNw
cF9maWxlX2V4dGVuc2lvbnMgPSAoCisgICAgICAgICdjJywKKyAgICAgICAgJ2NwcCcsCisgICAg
ICAgICdoJywKKyAgICApCisKKyAgICB0ZXh0X2ZpbGVfZXh0ZW5zaW9ucyA9ICgKKyAgICAgICAg
J2NzcycsCisgICAgICAgICdodG1sJywKKyAgICAgICAgJ2lkbCcsCisgICAgICAgICdqcycsCisg
ICAgICAgICdtbScsCisgICAgICAgICdwaHAnLAorICAgICAgICAncG0nLAorICAgICAgICAncHkn
LAorICAgICAgICAndHh0JywKKyAgICApCisKKyAgICAjIFRoZSAic3RkZXJyX3dyaXRlIiBwYXJh
bWV0ZXIgYWxsb3dzIGZvciBzaW1wbGVyIHVuaXQgdGVzdGluZy4KKyAgICBkZWYgX19pbml0X18o
c2VsZiwgc3RkZXJyX3dyaXRlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgUHJvY2Vzc29yRGlzcGF0
Y2hlciBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIHN0ZGVycl93cml0ZTog
QSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc3RyaW5nIGFzIGEgcGFyYW1ldGVyCisgICAgICAgICAg
ICAgICAgICAgICAgICBhbmQgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIHdhcm5pbmcgb2NjdXJzLgor
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUgPSBzdGRlcnJfd3JpdGUK
KworICAgIGRlZiBfaXNfZXhlbXB0KHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIkNoZWNr
IGlmIHRoZSBnaXZlbiBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRoZSBzdHlsZSBndWlkZS4KKworICAg
ICAgICBGb3IgZXhhbXBsZSwgc29tZSBmaWxlcyBhcmUgcHVycG9zZWZ1bGx5IG1hbnRhaW5lZCBp
biBNb3ppbGxhCisgICAgICAgIHN0eWxlIHRvIGVhc2UgZnV0dXJlIG1lcmdlcy4KKworICAgICAg
ICBBcmdzOgorICAgICAgICAgIGZpbGVfcGF0aDogQSBmaWxlIHBhdGguCisKKyAgICAgICAgIiIi
CisgICAgICAgICMgRXhlbXB0ZWQgZmlsZXMgYXJlIGZpbGVzIGZvciB3aGljaCBpdCBtaWdodCBu
b3QgYmUgaW1tZWRpYXRlbHkKKyAgICAgICAgIyBhcHBhcmVudCB0aGF0IHRoZXkgYXJlIGV4ZW1w
dGVkLiBGb3IgdGhpcyByZWFzb24sIHByb2Nlc3NpbmcKKyAgICAgICAgIyBhbiBleGVtcHRlZCBm
aWxlIHNob3VsZCB0cmlnZ2VyIGEgd2FybmluZyAoYnV0IG5vdCBhIHN0eWxlIGVycm9yKS4KKyAg
ICAgICAgaWYgKGZpbGVfcGF0aC5maW5kKCdXZWJLaXQvcXQvQXBpLycpID49IDAKKyAgICAgICAg
ICAgIG9yIGZpbGVfcGF0aC5maW5kKCdXZWJLaXQvcXQvdGVzdHMvJykgPj0gMCk6CisgICAgICAg
ICAgICAjIFRoZSBRdCBBUEkgYW5kIHRlc3RzIGRvIG5vdCBmb2xsb3cgV2ViS2l0IHN0eWxlLgor
ICAgICAgICAgICAgIyBUaGV5IGZvbGxvdyBRdCBzdHlsZS4gOikKKyAgICAgICAgICAgIHJldHVy
biBUcnVlCisKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguYmFzZW5hbWUoZmlsZV9wYXRoKSBpbiAo
CisgICAgICAgICAgICAnZ3RrMmRyYXdpbmcuYycsCisgICAgICAgICAgICAnZ3RrMmRyYXdpbmcu
aCcsCisgICAgICAgICkKKworICAgIGRlZiBfZmlsZV90eXBlKHNlbGYsIGZpbGVfcGF0aCwgZmls
ZV9leHRlbnNpb24pOgorICAgICAgICAiIiJSZXR1cm4gd2hhdCBzdHlsZSBwcm9jZXNzb3IgdG8g
dXNlIHRvIGNoZWNrIHN0eWxlLgorCisgICAgICAgIFJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dp
bmcgc3RyaW5nczogY3BwLCBleGVtcHQsIG5vbmUsIHRleHQuCisKKyAgICAgICAgIiIiCisgICAg
ICAgIGlmIHNlbGYuX2lzX2V4ZW1wdChmaWxlX3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuICJl
eGVtcHQiCisgICAgICAgIGVsaWYgKGZpbGVfZXh0ZW5zaW9uIGluIHNlbGYuY3BwX2ZpbGVfZXh0
ZW5zaW9ucykgb3IgKGZpbGVfcGF0aCA9PSAnLScpOgorICAgICAgICAgICAgIyBGSVhNRTogRG8g
c29tZXRoaW5nIGFib3V0IHRoZSBjb21tZW50IGJlbG93IGFuZCB0aGUgaXNzdWUgaXQKKyAgICAg
ICAgICAgICMgICAgICAgIHJhaXNlcyBzaW5jZSBjcHBfc3R5bGUgYWxyZWFkeSByZWxpZXMgb24g
dGhlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgV2hlbiByZWFkaW5n
IGZyb20gc3RkaW4sIHRoZSBleHRlbnNpb24gaXMgdW5rbm93biwgc28gbm8KKyAgICAgICAgICAg
ICMgY3BwX3N0eWxlIHRlc3RzIHNob3VsZCByZWx5IG9uIHRoZSBleHRlbnNpb24uCisgICAgICAg
ICAgICByZXR1cm4gImNwcCIKKyAgICAgICAgZWxpZiAoKG5vdCAiTGF5b3V0VGVzdHMvIiBpbiBm
aWxlX3BhdGgpCisgICAgICAgICAgICAgIGFuZCAoIkNoYW5nZUxvZyIgaW4gZmlsZV9wYXRoCisg
ICAgICAgICAgICAgICAgICAgb3IgIldlYktpdFRvb2xzL1NjcmlwdHMvIiBpbiBmaWxlX3BhdGgK
KyAgICAgICAgICAgICAgICAgICBvciBmaWxlX2V4dGVuc2lvbiBpbiBzZWxmLnRleHRfZmlsZV9l
eHRlbnNpb25zKSk6CisgICAgICAgICAgICByZXR1cm4gInRleHQiCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICByZXR1cm4gIm5vbmUiCisKKyAgICBkZWYgX2NyZWF0ZV9wcm9jZXNzb3Ioc2Vs
ZiwgZmlsZV90eXBlLCBmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lcywgaGFuZGxlX3N0eWxlX2Vycm9yLCB2ZXJib3NpdHkpOgorICAgICAg
ICAiIiJSZXR1cm4gYSBzdHlsZSBwcm9jZXNzb3IgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBmaWxl
IHR5cGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBmaWxlX3R5cGU6IEEgc3RyaW5nIHRo
YXQgaXMgZWl0aGVyICJjcHAiIG9yICJ0ZXh0Ii4KKyAgICAgICAgICBmaWxlX3BhdGgKKyAgICAg
ICAgICBsaW5lcworICAgICAgICAgIGVycm9yCisgICAgICAgICAgdmVyYm9zaXR5CisKKyAgICAg
ICAgIiIiCisgICAgICAgIGlmIGZpbGVfdHlwZSA9PSAiY3BwIjoKKyAgICAgICAgICAgIHByb2Nl
c3NvciA9IENwcFByb2Nlc3NvcihmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgaGFu
ZGxlX3N0eWxlX2Vycm9yLCB2ZXJib3NpdHkpCisgICAgICAgIGVsaWYgZmlsZV90eXBlID09ICJ0
ZXh0IjoKKyAgICAgICAgICAgIHByb2Nlc3NvciA9IFRleHRQcm9jZXNzb3IoZmlsZV9wYXRoLCBs
aW5lcywgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSAiZXhl
bXB0IjoKKyAgICAgICAgICAgICMgV2FybiBmb3IgZXhlbXB0ZWQgZmlsZXMuCisgICAgICAgICAg
ICBwcm9jZXNzb3IgPSBOb25lUHJvY2Vzc29yKGZpbGVfcGF0aCwgc2VsZi5fc3RkZXJyX3dyaXRl
LCBzaG91bGRfd3JpdGVfd2FybmluZz1UcnVlKQorICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSAi
bm9uZSI6CisgICAgICAgICAgICAjIERvIG5vdCB3YXJuIGZvciBleGVtcHRlZCBmaWxlcy4KKyAg
ICAgICAgICAgIHByb2Nlc3NvciA9IE5vbmVQcm9jZXNzb3IoZmlsZV9wYXRoLCBzZWxmLl9zdGRl
cnJfd3JpdGUsIHNob3VsZF93cml0ZV93YXJuaW5nPUZhbHNlKQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBmaWxlIHR5cGUgIiVzIjogdGhlIHZh
bGlkIGZpbGUgdHlwZXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJlIC0tIGNw
cCwgZXhlbXB0LCBub25lLCBhbmQgdGV4dC4iICUgZmlsZV90eXBlKQorCisgICAgICAgIHJldHVy
biBwcm9jZXNzb3IKKworICAgIGRlZiBkaXNwYXRjaF9wcm9jZXNzb3Ioc2VsZiwgZmlsZV9wYXRo
LCBsaW5lcywgaGFuZGxlX3N0eWxlX2Vycm9yLCB2ZXJib3NpdHkpOgorICAgICAgICBmaWxlX2V4
dGVuc2lvbiA9IG9zLnBhdGguc3BsaXRleHQoZmlsZV9wYXRoKVsxXS5sc3RyaXAoIi4iKQorCisg
ICAgICAgIGZpbGVfdHlwZSA9IHNlbGYuX2ZpbGVfdHlwZShmaWxlX3BhdGgsIGZpbGVfZXh0ZW5z
aW9uKQorCisgICAgICAgIHJldHVybiBzZWxmLl9jcmVhdGVfcHJvY2Vzc29yKGZpbGVfdHlwZSwg
ZmlsZV9wYXRoLCBmaWxlX2V4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGluZXMsIGhhbmRsZV9zdHlsZV9lcnJvciwgdmVyYm9zaXR5KQorCisKIGNsYXNz
IFN0eWxlQ2hlY2tlcihvYmplY3QpOgogCiAgICAgIiIiU3VwcG9ydHMgY2hlY2tpbmcgc3R5bGUg
aW4gZmlsZXMgYW5kIHBhdGNoZXMuCkBAIC02MzIsMTggKzc2NSwyOSBAQCBjbGFzcyBTdHlsZUNo
ZWNrZXIob2JqZWN0KToKIAogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlv
bnMsIHdyaXRlX2Vycm9yPXN5cy5zdGRlcnIud3JpdGUpOgorICAgICMgVGhlICJzdGRlcnJfd3Jp
dGUiIGFuZCAiZGlzcGF0Y2hlciIgcGFyYW1ldGVycyBhcmUgZm9yIHVuaXQgdGVzdGluZy4KKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgc3RkZXJyX3dyaXRlPU5vbmUsIGRpc3BhdGNo
ZXI9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBhIFN0eWxlQ2hlY2tlciBpbnN0YW5jZS4KIAog
ICAgICAgICBBcmdzOgogICAgICAgICAgIG9wdGlvbnM6IFNlZSBvcHRpb25zIGF0dHJpYnV0ZS4K
ICAgICAgICAgICBzdGRlcnJfd3JpdGU6IEEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIHN0cmluZyBh
cyBhIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRoYXQgaXMgY2FsbGVk
IHdoZW4gYSBzdHlsZSBlcnJvciBvY2N1cnMuCisgICAgICAgICAgICAgICAgICAgICAgICBEZWZh
dWx0cyB0byBzeXMuc3RkZXJyLndyaXRlLgorICAgICAgICAgIGRpc3BhdGNoZXI6IEFuIGluc3Rh
bmNlIG9mIGEgY2xhc3Mgd2l0aCBhIHByb2Nlc3NvcigpIG1ldGhvZC4KKyAgICAgICAgICAgICAg
ICAgICAgICBEZWZhdWx0cyB0byBQcm9jZXNzb3JEaXNwYXRjaGVyKHN0ZGVycl93cml0ZSkuCiAK
ICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3dyaXRlX2Vycm9yID0gd3JpdGVfZXJyb3IKLSAg
ICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworICAgICAgICBpZiBzdGRlcnJfd3JpdGUgaXMg
Tm9uZToKKyAgICAgICAgICAgIHN0ZGVycl93cml0ZSA9IHN5cy5zdGRlcnIud3JpdGUKKworICAg
ICAgICBpZiBkaXNwYXRjaGVyIGlzIE5vbmU6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0gUHJv
Y2Vzc29yRGlzcGF0Y2hlcihzdGRlcnJfd3JpdGUpCisKKyAgICAgICAgc2VsZi5fZGlzcGF0Y2hl
ciA9IGRpc3BhdGNoZXIKKyAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlID0gc3RkZXJyX3dyaXRl
CiAgICAgICAgIHNlbGYuZXJyb3JfY291bnQgPSAwCisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9w
dGlvbnMKIAogICAgIGRlZiBfaGFuZGxlX2Vycm9yKHNlbGYsIGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgogICAgICAgICAiIiJIYW5kbGUgdGhl
IG9jY3VycmVuY2Ugb2YgYSBzdHlsZSBlcnJvciB3aGlsZSBjaGVja2luZy4KQEAgLTY3NSwyMSAr
ODE5LDY3IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICIlczolczogICVzICBbJXNdIFslZF1cbiIKIAotICAg
ICAgICBzZWxmLl93cml0ZV9lcnJvcihmb3JtYXRfc3RyaW5nICUgKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCisgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZShmb3Jt
YXRfc3RyaW5nICUgKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVzc2FnZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQog
Ci0gICAgZGVmIHByb2Nlc3NfZmlsZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICIiIkNoZWNr
cyBzdHlsZSBmb3IgdGhlIHNwZWNpZmllZCBmaWxlLgorICAgIGRlZiBfcHJvY2Vzc19saW5lcyhz
ZWxmLCBmaWxlX3BhdGgsIGxpbmVzLCBlcnJvcik6CisgICAgICAgICIiIkNoZWNrIHN0eWxlIGlu
IHRoZSBnaXZlbiBsaW5lcy4iIiIKKyAgICAgICAgdmVyYm9zaXR5ID0gc2VsZi5vcHRpb25zLnZl
cmJvc2l0eQogCi0gICAgICAgIElmIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUgaXMgJy0nLCBhcHBs
aWVzIGNwcF9zdHlsZSB0byB0aGUgc3RhbmRhcmQgaW5wdXQuCisgICAgICAgIHByb2Nlc3NvciA9
IHNlbGYuX2Rpc3BhdGNoZXIuZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCwgbGluZXMsIGVy
cm9yLCB2ZXJib3NpdHkpCisgICAgICAgIHByb2Nlc3Nvci5wcm9jZXNzKCkKKworICAgIGRlZiBf
cHJvY2Vzc19maWxlKHNlbGYsIGZpbGVuYW1lLCBlcnJvcik6CisgICAgICAgICIiIkNoZWNrIHN0
eWxlIGluIGEgc2luZ2xlIGZpbGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBmaWxlbmFt
ZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcGFyc2UuCisgICAgICAgICAgZXJyb3I6IFRoZSBm
dW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KIAogICAgICAgICAiIiIKLSAg
ICAgICAgaWYgY3BwX3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpIG9yIGZpbGVuYW1lID09ICct
JzoKLSAgICAgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHNlbGYuX2hh
bmRsZV9lcnJvciwgc2VsZi5vcHRpb25zLnZlcmJvc2l0eSkKLSAgICAgICAgZWxpZiB0ZXh0X3N0
eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgdGV4dF9zdHlsZS5wcm9jZXNz
X2ZpbGUoZmlsZW5hbWUsIHNlbGYuX2hhbmRsZV9lcnJvcikKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgIyBTdXBwb3J0IHRoZSBVTklYIGNvbnZlbnRpb24gb2YgdXNpbmcgIi0iIGZvciBzdGRp
bi4gIE5vdGUgdGhhdAorICAgICAgICAgICAgIyB3ZSBhcmUgbm90IG9wZW5pbmcgdGhlIGZpbGUg
d2l0aCB1bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0CisgICAgICAgICAgICAjICh3aGljaCBjb2Rl
Y3MgZG9lc24ndCBzdXBwb3J0IGFueXdheSksIHNvIHRoZSByZXN1bHRpbmcgbGluZXMgZG8KKyAg
ICAgICAgICAgICMgY29udGFpbiB0cmFpbGluZyAnXHInIGNoYXJhY3RlcnMgaWYgd2UgYXJlIHJl
YWRpbmcgYSBmaWxlIHRoYXQKKyAgICAgICAgICAgICMgaGFzIENSTEYgZW5kaW5ncy4KKyAgICAg
ICAgICAgICMgSWYgYWZ0ZXIgdGhlIHNwbGl0IGEgdHJhaWxpbmcgJ1xyJyBpcyBwcmVzZW50LCBp
dCBpcyByZW1vdmVkCisgICAgICAgICAgICAjIGJlbG93LiBJZiBpdCBpcyBub3QgZXhwZWN0ZWQg
dG8gYmUgcHJlc2VudCAoaS5lLiBvcy5saW5lc2VwICE9CisgICAgICAgICAgICAjICdcclxuJyBh
cyBpbiBXaW5kb3dzKSwgYSB3YXJuaW5nIGlzIGlzc3VlZCBiZWxvdyBpZiB0aGlzIGZpbGUKKyAg
ICAgICAgICAgICMgaXMgcHJvY2Vzc2VkLgorICAgICAgICAgICAgaWYgZmlsZW5hbWUgPT0gJy0n
OgorICAgICAgICAgICAgICAgIGxpbmVzID0gY29kZWNzLlN0cmVhbVJlYWRlcldyaXRlcihzeXMu
c3RkaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvZGVjcy5nZXRyZWFkZXIoJ3V0ZjgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFjZScpLnJlYWQo
KS5zcGxpdCgnXG4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lcyA9
IGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKS5yZWFkKCkuc3Bs
aXQoJ1xuJykKKworICAgICAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0gRmFsc2UKKyAg
ICAgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nICdccicuCisgICAgICAgICAgICBmb3IgbGluZV9u
dW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVzKSk6CisgICAgICAgICAgICAgICAgaWYgbGluZXNbbGlu
ZV9udW1iZXJdLmVuZHN3aXRoKCdccicpOgorICAgICAgICAgICAgICAgICAgICBsaW5lc1tsaW5l
X251bWJlcl0gPSBsaW5lc1tsaW5lX251bWJlcl0ucnN0cmlwKCdccicpCisgICAgICAgICAgICAg
ICAgICAgIGNhcnJpYWdlX3JldHVybl9mb3VuZCA9IFRydWUKKworICAgICAgICBleGNlcHQgSU9F
cnJvcjoKKyAgICAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgiU2tpcHBpbmcgaW5wdXQgJyVz
JzogQ2FuJ3Qgb3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVuYW1lKQorICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgc2VsZi5fcHJvY2Vzc19saW5lcyhmaWxlbmFtZSwgbGluZXMsIGVycm9y
KQorCisgICAgICAgIGlmIGNhcnJpYWdlX3JldHVybl9mb3VuZCBhbmQgb3MubGluZXNlcCAhPSAn
XHJcbic6CisgICAgICAgICAgICAjIFVzZSAwIGZvciBsaW5lX251bWJlciBzaW5jZSBvdXRwdXRp
bmcgb25seSBvbmUgZXJyb3IgZm9yIHBvdGVudGlhbGx5CisgICAgICAgICAgICAjIHNldmVyYWwg
bGluZXMuCisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgMCwgJ3doaXRlc3BhY2UvbmV3bGlu
ZScsIDEsCisgICAgICAgICAgICAgICAgICAnT25lIG9yIG1vcmUgdW5leHBlY3RlZCBcXHIgKF5N
KSBmb3VuZDsnCisgICAgICAgICAgICAgICAgICAnYmV0dGVyIHRvIHVzZSBvbmx5IGEgXFxuJykK
KworICAgIGRlZiBjaGVja19maWxlKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgIGVycm9yID0g
c2VsZi5faGFuZGxlX2Vycm9yCisgICAgICAgIHNlbGYuX3Byb2Nlc3NfZmlsZShmaWxlX3BhdGgs
IGVycm9yKQogCi0gICAgZGVmIHByb2Nlc3NfcGF0Y2goc2VsZiwgcGF0Y2hfc3RyaW5nKToKKyAg
ICBkZWYgY2hlY2tfcGF0Y2goc2VsZiwgcGF0Y2hfc3RyaW5nKToKICAgICAgICAgIiIiRG9lcyBs
aW50IG9uIGEgc2luZ2xlIHBhdGNoLgogCiAgICAgICAgIEFyZ3M6CkBAIC02OTgsNyArODg4LDYg
QEAgY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICIiIgogICAgICAgICBwYXRj
aCA9IERpZmZQYXJzZXIocGF0Y2hfc3RyaW5nLnNwbGl0bGluZXMoKSkKICAgICAgICAgZm9yIGZp
bGVuYW1lLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgZmls
ZV9leHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQogICAgICAgICAgICAg
bGluZV9udW1iZXJzID0gc2V0KCkKIAogICAgICAgICAgICAgZGVmIGVycm9yX2Zvcl9wYXRjaChm
aWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKQEAg
LTcxNyw4ICs5MDYsNCBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICBpZiBsaW5lX251bWJlciBpbiBsaW5lX251bWJlcnM6CiAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2hhbmRsZV9lcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25m
aWRlbmNlLCBtZXNzYWdlKQogCi0gICAgICAgICAgICAjIEZJWE1FOiBTaGFyZSB0aGlzIGNvZGUg
d2l0aCBzZWxmLnByb2Nlc3NfZmlsZSgpLgotICAgICAgICAgICAgaWYgY3BwX3N0eWxlLmNhbl9o
YW5kbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUo
ZmlsZW5hbWUsIGVycm9yX2Zvcl9wYXRjaCwgc2VsZi5vcHRpb25zLnZlcmJvc2l0eSkKLSAgICAg
ICAgICAgIGVsaWYgdGV4dF9zdHlsZS5jYW5faGFuZGxlKGZpbGVuYW1lKToKLSAgICAgICAgICAg
ICAgICB0ZXh0X3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3JfZm9yX3BhdGNoKQor
ICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcl9mb3JfcGF0Y2gp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJf
dW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJf
dW5pdHRlc3QucHkKaW5kZXggNWE2ZTY1MC4uOWM5OGIzYyAxMDA3NTUKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQpAQCAtMzgs
OCArMzgsMTIgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBjaGVja2VyIGFzIHN0eWxlCiBm
cm9tIGNoZWNrZXIgaW1wb3J0IENhdGVnb3J5RmlsdGVyCitmcm9tIGNoZWNrZXIgaW1wb3J0IE5v
bmVQcm9jZXNzb3IKK2Zyb20gY2hlY2tlciBpbXBvcnQgUHJvY2Vzc29yRGlzcGF0Y2hlcgogZnJv
bSBjaGVja2VyIGltcG9ydCBQcm9jZXNzb3JPcHRpb25zCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0
eWxlQ2hlY2tlcgorZnJvbSBjcHBfc3R5bGUgaW1wb3J0IENwcFByb2Nlc3NvcgorZnJvbSB0ZXh0
X3N0eWxlIGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKIGNsYXNzIENhdGVnb3J5RmlsdGVyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTM1Miw2ICszNTYsMTU4IEBAIGNsYXNzIEFyZ3VtZW50
UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGZpbGVzLCBbJ2Zvby5jcHAnLCAnYmFyLmNwcCddKQogCiAKK2NsYXNzIE5vbmVQcm9jZXNzb3JU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIE5vbmVQcm9jZXNzb3IgY2xh
c3MuIiIiCisKKyAgICB3YXJuaW5nX21lc3NhZ2VzID0gIiIKKworICAgIGRlZiBtb2NrX3N0ZGVy
cl93cml0ZShzZWxmLCB3YXJuaW5nX21lc3NhZ2UpOgorICAgICAgICBzZWxmLndhcm5pbmdfbWVz
c2FnZXMgKz0gd2FybmluZ19tZXNzYWdlCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzKHNlbGYpOgor
ICAgICAgICAjIFRlc3Qgbm8gd2FybmluZy4KKyAgICAgICAgcHJvY2Vzc29yID0gTm9uZVByb2Nl
c3NvcigiZmlsZV9wYXRoIiwgc2VsZi5tb2NrX3N0ZGVycl93cml0ZSwgc2hvdWxkX3dyaXRlX3dh
cm5pbmc9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYud2FybmluZ19tZXNz
YWdlcywgIiIpCisgICAgICAgIHByb2Nlc3Nvci5wcm9jZXNzKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi53YXJuaW5nX21lc3NhZ2VzLCAiIikKKworICAgICAgICAjIFRlc3Qgd2l0
aCB3YXJuaW5nLgorICAgICAgICBwcm9jZXNzb3IgPSBOb25lUHJvY2Vzc29yKCJmaWxlX3BhdGgi
LCBzZWxmLm1vY2tfc3RkZXJyX3dyaXRlLCBzaG91bGRfd3JpdGVfd2FybmluZz1UcnVlKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLndhcm5pbmdfbWVzc2FnZXMsICIiKQorICAgICAg
ICBwcm9jZXNzb3IucHJvY2VzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYud2Fy
bmluZ19tZXNzYWdlcywgIklnbm9yaW5nIGZpbGVfcGF0aDogdGhpcyBmaWxlIGlzIGV4ZW1wdCBm
cm9tIHRoZSBzdHlsZSBndWlkZS5cbiIpCisKK2NsYXNzIFByb2Nlc3NvckRpc3BhdGNoZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIFByb2Nlc3NvckRpc3BhdGNoZXIg
Y2xhc3MuIiIiCisKKyAgICB3YXJuaW5nX21lc3NhZ2VzID0gIiIKKworICAgIGRlZiBtb2NrX3N0
ZGVycl93cml0ZShzZWxmLCB3YXJuaW5nX21lc3NhZ2UpOgorICAgICAgICBzZWxmLndhcm5pbmdf
bWVzc2FnZXMgKz0gd2FybmluZ19tZXNzYWdlCisKKyAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVf
ZXJyb3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBwcm9jZXNzb3Ioc2VsZiwgZmls
ZV9wYXRoKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IFByb2Nlc3NvckRpc3BhdGNoZXIoc2VsZi5t
b2NrX3N0ZGVycl93cml0ZSkKKyAgICAgICAgcHJvY2Vzc29yID0gZGlzcGF0Y2hlci5kaXNwYXRj
aF9wcm9jZXNzb3IoZmlsZV9wYXRoLCBbImxpbmUiXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwg
MykKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NvcgorCisgICAgZGVmIGFzc2VydF9jcHBfdHlwZShz
ZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJBc3NlcnQgdGhhdCB0aGUgZGlzcGF0Y2hlZCBw
cm9jZXNzb3IgaXMgYSBDcHBQcm9jZXNzb3IuIiIiCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYu
cHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29y
Ll9fY2xhc3NfXywgQ3BwUHJvY2Vzc29yKQorCisgICAgZGVmIGFzc2VydF9leGVtcHRfdHlwZShz
ZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJBc3NlcnQgdGhhdCB0aGUgZGlzcGF0Y2hlZCBw
cm9jZXNzb3IgaXMgTm9uZS4iIiIKKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5wcm9jZXNzb3Io
ZmlsZV9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuX19jbGFzc19f
LCBOb25lUHJvY2Vzc29yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvY2Vzc29yLl9zaG91
bGRfd3JpdGVfd2FybmluZykKKworICAgIGRlZiBhc3NlcnRfbm9uZV90eXBlKHNlbGYsIGZpbGVf
cGF0aCk6CisgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBkaXNwYXRjaGVkIHByb2Nlc3NvciBp
cyBOb25lLiIiIgorICAgICAgICBwcm9jZXNzb3IgPSBzZWxmLnByb2Nlc3NvcihmaWxlX3BhdGgp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5fX2NsYXNzX18sIE5vbmVQcm9j
ZXNzb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yLl9zaG91bGRfd3JpdGVf
d2FybmluZywgZmlsZV9wYXRoKQorCisgICAgZGVmIGFzc2VydF90ZXh0X3R5cGUoc2VsZiwgZmls
ZV9wYXRoKToKKyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29y
IGlzIGEgVGV4dFByb2Nlc3Nvci4iIiIKKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5wcm9jZXNz
b3IoZmlsZV9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuX19jbGFz
c19fLCBUZXh0UHJvY2Vzc29yKQorCisgICAgZGVmIHRlc3RfY3BwX3BhdGhzKHNlbGYpOgorICAg
ICAgICAiIiJUZXN0IHBhdGhzIHRoYXQgc2hvdWxkIGJlIGNoZWNrZWQgYXMgQysrLiIiIgorICAg
ICAgICBwYXRocyA9IFsKKyAgICAgICAgICAgICItIiwKKyAgICAgICAgICAgICJmb28uYyIsCisg
ICAgICAgICAgICAiZm9vLmNwcCIsCisgICAgICAgICAgICAiZm9vLmgiLAorICAgICAgICBdCisK
KyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydF9jcHBf
dHlwZShwYXRoKQorCisgICAgICAgICMgQ2hlY2sgcHJvY2Vzc29yIGF0dHJpYnV0ZXMuCisgICAg
ICAgIHByb2Nlc3NvciA9IHNlbGYucHJvY2Vzc29yKCJmb28uYyIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvciwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCAiYyIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmb28uYyIp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci52ZXJib3NpdHksIDMpCisgICAgICAg
IHByb2Nlc3NvciA9IHNlbGYucHJvY2Vzc29yKCItIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgIi0iKQorCisgICAgZGVmIHRlc3RfdGV4dF9wYXRocyhz
ZWxmKToKKyAgICAgICAgIiIiVGVzdCBwYXRocyB0aGF0IHNob3VsZCBiZSBjaGVja2VkIGFzIHRl
eHQuIiIiCisgICAgICAgIHBhdGhzID0gWworICAgICAgICAgICAiQ2hhbmdlTG9nIiwKKyAgICAg
ICAgICAgImZvby5jc3MiLAorICAgICAgICAgICAiZm9vLmh0bWwiLAorICAgICAgICAgICAiZm9v
LmlkbCIsCisgICAgICAgICAgICJmb28uanMiLAorICAgICAgICAgICAiZm9vLm1tIiwKKyAgICAg
ICAgICAgImZvby5waHAiLAorICAgICAgICAgICAiZm9vLnBtIiwKKyAgICAgICAgICAgImZvby5w
eSIsCisgICAgICAgICAgICJmb28udHh0IiwKKyAgICAgICAgICAgIkZvb0NoYW5nZUxvZy5iYWsi
LAorICAgICAgICAgICAiV2ViQ29yZS9DaGFuZ2VMb2ciLAorICAgICAgICAgICAiV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyIsCisgICAgICAgICAgICJXZWJLaXRUb29s
cy9TY3JpcHRzL2NoZWNrLXdlYmtpdD1zdHlsZSIsCisgICAgICAgICAgICJXZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvdGV4dF9zdHlsZS5weSIsCisgICAgICAgIF0KKworICAgICAgICBmb3Ig
cGF0aCBpbiBwYXRoczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3RleHRfdHlwZShwYXRoKQor
CisgICAgICAgICMgQ2hlY2sgcHJvY2Vzc29yIGF0dHJpYnV0ZXMuCisgICAgICAgIHByb2Nlc3Nv
ciA9IHNlbGYucHJvY2Vzc29yKCJmb28uY3NzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
cHJvY2Vzc29yLmVycm9yLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZm9vLmNzcyIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisKKyAgICBkZWYg
dGVzdF9leGVtcHRfcGF0aHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGF0aHMgdGhhdCBzaG91
bGQgbm90IGJlIGNoZWNrZWQgKGJ1dCBzdGlsbCB3YXJuKS4iIiIKKyAgICAgICAgcGF0aHMgPSBb
CisgICAgICAgICAgICMgRXhlbXB0ZWQgZmlsZXMKKyAgICAgICAgICAgImd0azJkcmF3aW5nLmMi
LAorICAgICAgICAgICAiZ3RrMmRyYXdpbmcuaCIsCisgICAgICAgICAgICJXZWJDb3JlL3BsYXRm
b3JtL2d0ay9ndGsyZHJhd2luZy5oIiwKKyAgICAgICAgICAgIldlYkNvcmUvcGxhdGZvcm0vZ3Rr
L2d0azJkcmF3aW5nLmMiLAorICAgICAgICAgICAjIEV4ZW1wdGVkIGZvbGRlcnMKKyAgICAgICAg
ICAgIldlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCIsCisgICAgICAgICAgICJXZWJLaXQvcXQvdGVz
dHMvcXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIiwKKyAgICAg
ICAgXQorCisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRfZXhlbXB0X3R5cGUocGF0aCkKKworICAgIGRlZiB0ZXN0X25vbmVfcGF0aHMoc2VsZik6Cisg
ICAgICAgICIiIlRlc3QgcGF0aHMgdGhhdCBzaG91bGQgbm90IGJlIGNoZWNrZWQgKGFuZCBub3Qg
d2FybikuIiIiCisgICAgICAgIHBhdGhzID0gWworICAgICAgICAgICAiIiwKKyAgICAgICAgICAg
ImZvby5jL2Jhci5wbmciLAorICAgICAgICAgICAiZm9vLmNjIiwKKyAgICAgICAgICAgImZvby5j
eHgiLAorICAgICAgICAgICAiZm9vLkMiLAorICAgICAgICAgICAiZm9vLmhwcCIsCisgICAgICAg
ICAgICJmb28ucG5nIiwKKyAgICAgICAgICAgIkxheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xl
LXRlc3RzLmpzIiwKKyAgICAgICAgICAgIm1tIiwKKyAgICAgICAgICAgIk1ha2VmaWxlIiwKKyAg
ICAgICAgICAgIldlYkNvcmUvQW5kcm9pZC5tayIsCisgICAgICAgICAgICJXZWJLaXQvRW5nbGlz
aC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIiwKKyAgICAgICAgICAgIldlYktpdFRvb2xzL1Nj
cmlwdHMiLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydF9ub25lX3R5cGUocGF0aCkKKworCiBjbGFzcyBTdHlsZUNoZWNrZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3QgdGhlIFN0eWxlQ2hlY2tlciBj
bGFzcy4KQEAgLTM2MiwxNSArNTE4LDE4IEBAIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogCiAgICAgIiIiCiAKLSAgICBlcnJvcl9tZXNzYWdlID0gIiIKKyAgICBl
cnJvcl9tZXNzYWdlcyA9ICIiCisKKyAgICBkZWYgbW9ja19zdGRlcnJfd3JpdGUoc2VsZiwgZXJy
b3JfbWVzc2FnZSk6CisgICAgICAgICIiIkEgbW9jayBzeXMuc3RkZXJyLndyaXRlLiIiIgorICAg
ICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0gZXJyb3JfbWVzc2FnZQorICAgICAgICBwYXNzCiAK
LSAgICBkZWYgbW9ja193cml0ZV9lcnJvcihzZWxmLCBlcnJvcl9tZXNzYWdlKToKLSAgICAgICAg
IiIiU3RvcmUgYW4gZXJyb3IgbWVzc2FnZSB3aXRob3V0IHByaW50aW5nIGl0LiIiIgotICAgICAg
ICBzZWxmLmVycm9yX21lc3NhZ2UgPSBlcnJvcl9tZXNzYWdlCisgICAgZGVmIG1vY2tfaGFuZGxl
X3N0eWxlX2Vycm9yKHNlbGYpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgc3R5bGVfY2hlY2tl
cihzZWxmLCBvcHRpb25zKToKLSAgICAgICAgcmV0dXJuIFN0eWxlQ2hlY2tlcihvcHRpb25zLCBz
ZWxmLm1vY2tfd3JpdGVfZXJyb3IpCisgICAgZGVmIHN0eWxlX2NoZWNrZXIoc2VsZiwgb3B0aW9u
cywgZGlzcGF0Y2hlcj1Ob25lKToKKyAgICAgICAgcmV0dXJuIFN0eWxlQ2hlY2tlcihvcHRpb25z
LCBzZWxmLm1vY2tfc3RkZXJyX3dyaXRlLCBkaXNwYXRjaGVyKQogCiAgICAgZGVmIHRlc3RfaW5p
dChzZWxmKToKICAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKQEAgLTM5
NiwyMiArNTU1LDk4IEBAIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogCiAgICAgICAgICMgVmVyaWZ5IGluaXRpYWxpemVkIHByb3Blcmx5LgogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzdHlsZV9jaGVja2VyLmVycm9yX2NvdW50LCAwKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2UsICIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAiIikKIAogICAgICAgICAjIENoZWNrIHRoYXQg
c2hvdWxkX3ByaW50X2Vycm9yIGlzIGdldHRpbmcgY2FsbGVkIGFwcHJvcHJpYXRlbHkuCiAgICAg
ICAgIHNlbGYud3JpdGVfc2FtcGxlX2Vycm9yKHN0eWxlX2NoZWNrZXIsIDIpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQsIDApICMgRXJyb3IgY29u
ZmlkZW5jZSB0b28gbG93LgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21l
c3NhZ2UsICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2Vz
LCAiIikKIAogICAgICAgICBzZWxmLndyaXRlX3NhbXBsZV9lcnJvcihzdHlsZV9jaGVja2VyLCAz
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdHlsZV9jaGVja2VyLmVycm9yX2NvdW50LCAx
KSAjIEVycm9yIGNvbmZpZGVuY2UganVzdCBoaWdoIGVub3VnaC4KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5lcnJvcl9tZXNzYWdlLCAiZmlsZW5hbWU6MTogIG1lc3NhZ2UgIFtjYXRl
Z29yeV0gWzNdXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3Nh
Z2VzLCAiZmlsZW5hbWU6MTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQorCisgICAgICAg
ICMgQ2xlYXIgcHJldmlvdXMgZXJyb3JzLgorICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0g
IiIKIAogICAgICAgICAjIENoZWNrICJ2czciIG91dHB1dCBmb3JtYXQuCiAgICAgICAgIHN0eWxl
X2NoZWNrZXIub3B0aW9ucy5vdXRwdXRfZm9ybWF0ID0gInZzNyIKICAgICAgICAgc2VsZi53cml0
ZV9zYW1wbGVfZXJyb3Ioc3R5bGVfY2hlY2tlciwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoc3R5bGVfY2hlY2tlci5lcnJvcl9jb3VudCwgMikgIyBFcnJvciBjb25maWRlbmNlIGp1c3Qg
aGlnaCBlbm91Z2guCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVzc2Fn
ZSwgImZpbGVuYW1lKDEpOiAgbWVzc2FnZSAgW2NhdGVnb3J5XSBbM11cbiIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVzc2FnZXMsICJmaWxlbmFtZSgxKTogIG1lc3Nh
Z2UgIFtjYXRlZ29yeV0gWzNdXG4iKQorCisKKyMgVXNlZCBpbiBTdHlsZUNoZWNrZXJQcm9jZXNz
TGluZXNUZXN0LgorY2xhc3MgTW9ja1N0eWxlUHJvY2Vzc29yKG9iamVjdCk6CisKKyAgICAiIiJB
IG1vY2sgc3R5bGUgcHJvY2Vzc29yLCBmb3IgZXhhbXBsZSBhIG1vY2sgQ3BwUHJvY2Vzc29yLiIi
IgorCisgICAgd2FzX3Byb2Nlc3NfY2FsbGVkID0gRmFsc2UKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBlcnJvcj1Ob25lLCBmaWxlX3BhdGg9Tm9uZSwgbGluZXM9Tm9uZSwgdmVyYm9zaXR5PU5v
bmUpOgorICAgICAgICBzZWxmLmVycm9yID0gZXJyb3IKKyAgICAgICAgc2VsZi5maWxlX3BhdGgg
PSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCisgICAgICAgIHNlbGYudmVy
Ym9zaXR5ID0gdmVyYm9zaXR5CisKKyAgICBkZWYgcHJvY2VzcyhzZWxmKToKKyAgICAgICAgc2Vs
Zi53YXNfcHJvY2Vzc19jYWxsZWQgPSBUcnVlCisKKyMgRklYTUU6IFdlIGNhbiBlbGltaW5hdGUg
dGVzdGluZyB0aGlzIGludGVybmFsIG1ldGhvZCBvbmNlIHdlIGhhdmUKKyMgICAgICAgIGFwcHJv
cHJpYXRlIGVuZC10by1lbmQgdW5pdCB0ZXN0cyBvZiB0aGUgcHVibGljIG1ldGhvZHMgaW4KKyMg
ICAgICAgIHRoZSBTdHlsZUNoZWNrZXIgY2xhc3MgKHNpbmNlIHRlc3RpbmcgdGhpcyBtZXRob2Qg
aXMgYSBiaXQKKyMgICAgICAgIGNvbnZvbHV0ZWQpLgorY2xhc3MgU3R5bGVDaGVja2VyUHJvY2Vz
c0xpbmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHRoZSBfcHJvY2Vz
c19saW5lcygpIG1ldGhvZCBvZiB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLiIiIgorCisgICAgY2xh
c3MgTW9ja1Byb2Nlc3NvckRpc3BhdGNoZXIob2JqZWN0KToKKworICAgICAgICAiIiJBIG1vY2sg
UHJvY2Vzc29yRGlzcGF0Y2hlci4KKworICAgICAgICBBdHRyaWJ1dGVzOgorICAgICAgICAgIGRp
c3BhdGNoZWRfcHJvY2Vzc29yOiBBIE1vY2tTdHlsZVByb2Nlc3NvciBpbnN0YW5jZSB0aGF0IGlz
IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IHByb2Nlc3NvciByZXR1
cm5lZCBieSBkaXNwYXRjaF9wcm9jZXNzb3IoKS4KKworICAgICAgICAiIiIKKworICAgICAgICBk
aXNwYXRjaGVkX3Byb2Nlc3NvciA9IE5vbmUKKworICAgICAgICBkZWYgZGlzcGF0Y2hfcHJvY2Vz
c29yKHNlbGYsIGZpbGVfcGF0aCwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorICAgICAgICAg
ICAgIiIiUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBzdHlsZSBwcm9jZXNzb3IuIiIiCisgICAgICAg
ICAgICBwcm9jZXNzb3IgPSBNb2NrU3R5bGVQcm9jZXNzb3IoZXJyb3IsIGZpbGVfcGF0aCwgbGlu
ZXMsIHZlcmJvc2l0eSkKKyAgICAgICAgICAgICMgV2Ugc3RvcmUgdGhlIGRpc3BhdGNoZWQgcHJv
Y2Vzc29yIGFzIGFuIGF0dHJpYnV0ZSBzbyB0aGUKKyAgICAgICAgICAgICMgdGVzdCBtZXRob2Qg
aGFzIGEgd2F5IHRvIGFjY2VzcyBpdCBhbmQgaW5zcGVjdCBpdHMgYXR0cmlidXRlcworICAgICAg
ICAgICAgIyBhZnRlciBkaXNwYXRjaF9wcm9jZXNzb3IoKSBpcyBjYWxsZWQuCisgICAgICAgICAg
ICBzZWxmLmRpc3BhdGNoZWRfcHJvY2Vzc29yID0gcHJvY2Vzc29yCisgICAgICAgICAgICByZXR1
cm4gcHJvY2Vzc29yCisKKyAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3Ioc2VsZik6Cisg
ICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbGluZXMoc2VsZik6CisgICAgICAg
ICIiIlRlc3QgX3Byb2Nlc3NfbGluZXMoKS4iIiIKKyAgICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nv
ck9wdGlvbnModmVyYm9zaXR5PTMpCisgICAgICAgIGRpc3BhdGNoZXIgPSBzZWxmLk1vY2tQcm9j
ZXNzb3JEaXNwYXRjaGVyKCkKKyAgICAgICAgc3R5bGVfY2hlY2tlciA9IFN0eWxlQ2hlY2tlcihv
cHRpb25zLCBkaXNwYXRjaGVyPWRpc3BhdGNoZXIpCisKKyAgICAgICAgIyBDb25maXJtIHRoYXQg
YSBwcm9jZXNzb3Igc3RhcnRzIG91dCBhcyAibm90IGNhbGxlZCIuCisgICAgICAgIHByb2Nlc3Nv
ciA9IE1vY2tTdHlsZVByb2Nlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vz
c29yLndhc19wcm9jZXNzX2NhbGxlZCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlzcGF0
Y2hlci5kaXNwYXRjaGVkX3Byb2Nlc3NvciBpcyBOb25lKQorCisgICAgICAgIHN0eWxlX2NoZWNr
ZXIuX3Byb2Nlc3NfbGluZXMoIkNoYW5nZWxvZyIsIFsibGluZSJdLCBzZWxmLm1vY2tfaGFuZGxl
X3N0eWxlX2Vycm9yKQorCisgICAgICAgIHByb2Nlc3NvciA9IGRpc3BhdGNoZXIuZGlzcGF0Y2hl
ZF9wcm9jZXNzb3IKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLmRpc3BhdGNo
ZWRfcHJvY2Vzc29yIGlzIE5vbmUpCisgICAgICAgICMgQ2hlY2sgdGhhdCBwcm9jZXNzKCkgd2Fz
IGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci53YXNfcHJvY2Vzc19j
YWxsZWQpCisgICAgICAgICMgQ2hlY2sgdGhhdCBhbGwgb2YgdGhlIHJpZ2h0IGluZm9ybWF0aW9u
IGlzIGdldHRpbmcgcGFzc2VkIHRocm91Z2guCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBy
b2Nlc3Nvci5lcnJvciwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgIkNoYW5nZWxvZyIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci52ZXJib3NpdHksIDMpCiAKIAogaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY3BwX3N0eWxlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
cHBfc3R5bGUucHkKaW5kZXggMmNmOGY3ZC4uZjM1NTQ4MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkKQEAgLTQsNiArNCw3IEBACiAjIENv
cHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5
cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDA5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlz
IEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTI4MTgsNyArMjgxOSw3IEBAIGRlZiBwcm9jZXNzX2xpbmUoZmlsZW5hbWUs
IGZpbGVfZXh0ZW5zaW9uLAogICAgIGNoZWNrX2ludmFsaWRfaW5jcmVtZW50KGZpbGVuYW1lLCBj
bGVhbl9saW5lcywgbGluZSwgZXJyb3IpCiAKIAotZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVu
YW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorZGVmIF9wcm9j
ZXNzX2xpbmVzKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3Np
dHkpOgogICAgICIiIlBlcmZvcm1zIGxpbnQgY2hlY2tzIGFuZCByZXBvcnRzIGFueSBlcnJvcnMg
dG8gdGhlIGdpdmVuIGVycm9yIGZ1bmN0aW9uLgogCiAgICAgQXJnczoKQEAgLTI4NTcsODkgKzI4
NTgsMzEgQEAgZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwg
bGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgogICAgIGNoZWNrX2Zvcl9uZXdfbGluZV9hdF9lb2Yo
ZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKIAogCi1kZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBl
cnJvciwgdmVyYm9zaXR5KToKLSAgICAiIiJQZXJmb3JtcyBjcHBfc3R5bGUgb24gYSBzaW5nbGUg
ZmlsZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUg
dG8gcGFyc2UuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgotICAgICAgdmVyYm9zaXR5OiBBbiBpbnRlZ2VyIHRoYXQgaXMgdGhlIHZlcmJv
c2l0eSBsZXZlbCB0byB1c2Ugd2hpbGUKLSAgICAgICAgICAgICAgICAgY2hlY2tpbmcgc3R5bGUu
Ci0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICAjIFN1cHBvcnQgdGhlIFVOSVggY29udmVudGlv
biBvZiB1c2luZyAiLSIgZm9yIHN0ZGluLiAgTm90ZSB0aGF0Ci0gICAgICAgICMgd2UgYXJlIG5v
dCBvcGVuaW5nIHRoZSBmaWxlIHdpdGggdW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydAotICAgICAg
ICAjICh3aGljaCBjb2RlY3MgZG9lc24ndCBzdXBwb3J0IGFueXdheSksIHNvIHRoZSByZXN1bHRp
bmcgbGluZXMgZG8KLSAgICAgICAgIyBjb250YWluIHRyYWlsaW5nICdccicgY2hhcmFjdGVycyBp
ZiB3ZSBhcmUgcmVhZGluZyBhIGZpbGUgdGhhdAotICAgICAgICAjIGhhcyBDUkxGIGVuZGluZ3Mu
Ci0gICAgICAgICMgSWYgYWZ0ZXIgdGhlIHNwbGl0IGEgdHJhaWxpbmcgJ1xyJyBpcyBwcmVzZW50
LCBpdCBpcyByZW1vdmVkCi0gICAgICAgICMgYmVsb3cuIElmIGl0IGlzIG5vdCBleHBlY3RlZCB0
byBiZSBwcmVzZW50IChpLmUuIG9zLmxpbmVzZXAgIT0KLSAgICAgICAgIyAnXHJcbicgYXMgaW4g
V2luZG93cyksIGEgd2FybmluZyBpcyBpc3N1ZWQgYmVsb3cgaWYgdGhpcyBmaWxlCi0gICAgICAg
ICMgaXMgcHJvY2Vzc2VkLgotCi0gICAgICAgIGlmIGZpbGVuYW1lID09ICctJzoKLSAgICAgICAg
ICAgIGxpbmVzID0gY29kZWNzLlN0cmVhbVJlYWRlcldyaXRlcihzeXMuc3RkaW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHJlYWRlcign
dXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
ZGVjcy5nZXR3cml0ZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgbGluZXMgPSBjb2RlY3Mub3BlbihmaWxlbmFtZSwgJ3InLCAndXRmOCcs
ICdyZXBsYWNlJykucmVhZCgpLnNwbGl0KCdcbicpCi0KLSAgICAgICAgY2FycmlhZ2VfcmV0dXJu
X2ZvdW5kID0gRmFsc2UKLSAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ1xyJy4KLSAgICAgICAg
Zm9yIGxpbmVfbnVtYmVyIGluIHJhbmdlKGxlbihsaW5lcykpOgotICAgICAgICAgICAgaWYgbGlu
ZXNbbGluZV9udW1iZXJdLmVuZHN3aXRoKCdccicpOgotICAgICAgICAgICAgICAgIGxpbmVzW2xp
bmVfbnVtYmVyXSA9IGxpbmVzW2xpbmVfbnVtYmVyXS5yc3RyaXAoJ1xyJykKLSAgICAgICAgICAg
ICAgICBjYXJyaWFnZV9yZXR1cm5fZm91bmQgPSBUcnVlCi0KLSAgICBleGNlcHQgSU9FcnJvcjoK
LSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKLSAgICAgICAgICAgICJTa2lwcGluZyBpbnB1dCAn
JXMnOiBDYW4ndCBvcGVuIGZvciByZWFkaW5nXG4iICUgZmlsZW5hbWUpCi0gICAgICAgIHJldHVy
bgotCi0gICAgIyBOb3RlLCBpZiBubyBkb3QgaXMgZm91bmQsIHRoaXMgd2lsbCBnaXZlIHRoZSBl
bnRpcmUgZmlsZW5hbWUgYXMgdGhlIGV4dC4KLSAgICBmaWxlX2V4dGVuc2lvbiA9IGZpbGVuYW1l
W2ZpbGVuYW1lLnJmaW5kKCcuJykgKyAxOl0KK2NsYXNzIENwcFByb2Nlc3NvcihvYmplY3QpOgog
Ci0gICAgIyBXaGVuIHJlYWRpbmcgZnJvbSBzdGRpbiwgdGhlIGV4dGVuc2lvbiBpcyB1bmtub3du
LCBzbyBubyBjcHBfc3R5bGUgdGVzdHMKLSAgICAjIHNob3VsZCByZWx5IG9uIHRoZSBleHRlbnNp
b24uCi0gICAgaWYgKGZpbGVuYW1lICE9ICctJyBhbmQgbm90IGNhbl9oYW5kbGUoZmlsZW5hbWUp
KToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSWdub3JpbmcgJXM7IG5vdCBhIC5jcHAsIC5j
IG9yIC5oIGZpbGVcbicgJSBmaWxlbmFtZSkKLSAgICBlbGlmIGlzX2V4ZW1wdChmaWxlbmFtZSk6
Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0lnbm9yaW5nICVzOyBUaGlzIGZpbGUgaXMgZXhl
bXB0IGZyb20gdGhlIHN0eWxlIGd1aWRlLlxuJyAlIGZpbGVuYW1lKQotICAgIGVsc2U6Ci0gICAg
ICAgIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVy
cm9yLCB2ZXJib3NpdHkpCi0gICAgICAgIGlmIGNhcnJpYWdlX3JldHVybl9mb3VuZCBhbmQgb3Mu
bGluZXNlcCAhPSAnXHJcbic6Ci0gICAgICAgICAgICAjIFVzZSAwIGZvciBsaW5lX251bWJlciBz
aW5jZSBvdXRwdXRpbmcgb25seSBvbmUgZXJyb3IgZm9yIHBvdGVudGlhbGx5Ci0gICAgICAgICAg
ICAjIHNldmVyYWwgbGluZXMuCi0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgMCwgJ3doaXRl
c3BhY2UvbmV3bGluZScsIDEsCi0gICAgICAgICAgICAgICAgICAnT25lIG9yIG1vcmUgdW5leHBl
Y3RlZCBcXHIgKF5NKSBmb3VuZDsnCi0gICAgICAgICAgICAgICAgICAnYmV0dGVyIHRvIHVzZSBv
bmx5IGEgXFxuJykKKyAgICAiIiJQcm9jZXNzZXMgQysrIGxpbmVzIGZvciBjaGVja2luZyBzdHls
ZS4iIiIKIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9u
LCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSk6CisgICAgICAgICIiIkNyZWF0ZSBhIENwcFByb2Nl
c3NvciBpbnN0YW5jZS4KIAotZGVmIGNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICIiIkNoZWNr
cyBpZiB0aGlzIG1vZHVsZSBzdXBwb3J0cyBmb3IgdGhlIHNwZWNpZmllZCBmaWxlIHR5cGUuCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgZmlsZV9leHRlbnNpb246IEEgc3RyaW5nIHRoYXQgaXMg
dGhlIGZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBsZWFkaW5nIGRvdC4KIAotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogQSBmaWxlbmFtZS4g
SXQgbWF5IGNvbnRhaW4gZGlyZWN0b3J5IG5hbWVzLgotICAgICAiIiIKLSAgICByZXR1cm4gb3Mu
cGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0gaW4gKCcuaCcsICcuY3BwJywgJy5jJykKKyAgICAg
ICAgIiIiCisgICAgICAgIHNlbGYuZXJyb3IgPSBlcnJvcgorICAgICAgICBzZWxmLmZpbGVfZXh0
ZW5zaW9uID0gZmlsZV9leHRlbnNpb24KKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBmaWxlX3Bh
dGgKKyAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCisgICAgICAgIHNlbGYudmVyYm9zaXR5ID0g
dmVyYm9zaXR5CiAKKyAgICBkZWYgcHJvY2VzcyhzZWxmKToKKyAgICAgICAgX3Byb2Nlc3NfbGlu
ZXMoc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9leHRlbnNpb24sIHNlbGYubGluZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IsIHNlbGYudmVyYm9zaXR5KQogCi1kZWYgaXNf
ZXhlbXB0KGZpbGVuYW1lKToKLSAgICAiIiJDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUgaXMgZXhl
bXB0IGZyb20gdGhlIHN0eWxlIGd1aWRlLiAgRm9yIGV4YW1wbGUsCi0gICAgc29tZSBmaWxlcyBh
cmUgcHVycG9zZWZ1bGx5IG1hbnRhaW5lZCBpbiBNb3ppbGxhIHN0eWxlIHRvIGVhc2UgZnV0dXJl
Ci0gICAgbWVyZ2VzLgogCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBBIGZpbGVuYW1lLiBJ
dCBtYXkgY29udGFpbiBkaXJlY3RvcnkgbmFtZXMuCi0gICAgICIiIgotICAgIGlmIChmaWxlbmFt
ZS5maW5kKCdXZWJLaXQvcXQvQXBpLycpID49IDAKLSAgICAgICAgb3IgZmlsZW5hbWUuZmluZCgn
V2ViS2l0L3F0L3Rlc3RzLycpID49IDApOgotICAgICAgICAjIFRoZSBRdCBBUEkgYW5kIHRlc3Rz
IGRvIG5vdCBmb2xsb3cgV2ViS2l0IHN0eWxlLgotICAgICAgICAjIFRoZXkgZm9sbG93IFF0IHN0
eWxlLiA6KQotICAgICAgICByZXR1cm4gVHJ1ZQorIyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rp
b24gKHJlcXVpcmVzIHJlZmFjdG9yaW5nIHVuaXQgdGVzdHMpLgorZGVmIHByb2Nlc3NfZmlsZV9k
YXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgor
ICAgIHByb2Nlc3NvciA9IENwcFByb2Nlc3NvcihmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxp
bmVzLCBlcnJvciwgdmVyYm9zaXR5KQorICAgIHByb2Nlc3Nvci5wcm9jZXNzKCkKIAotICAgIHJl
dHVybiBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSBpbiAoCi0gICAgICAgICdndGsyZHJhd2lu
Zy5jJywKLSAgICAgICAgJ2d0azJkcmF3aW5nLmgnLAotICAgICkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHkKaW5k
ZXggN2UxNjVhNi4uMzAzYWVkOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHkKQEAgLTQsNiArNCw3IEBACiAj
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBD
b3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTQxLDYgKzQyLDggQEAgaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBp
bXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjcHBfc3R5bGUKK2Zyb20gY3BwX3N0eWxlIGltcG9ydCBD
cHBQcm9jZXNzb3IKKwogIyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIHRvIGltcG9ydCBhbnl0aGlu
ZyBmcm9tIGNoZWNrZXIuIFNlZSB0aGUKICMgICAgICAgIEZJWE1FIG5vdGVzIG5lYXIgdGhlIFNU
WUxFX0NBVEVHT1JJRVMgZGVmaW5pdGlvbiBmb3IgYQogIyAgICAgICAgc3VnZ2VzdGlvbiBvbiBo
b3cgdG8gYmVzdCBkbyB0aGlzLgpAQCAtMzU5OCwzMyArMzYwMSwyMiBAQCBjbGFzcyBXZWJLaXRT
dHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgIHBhc3MKIAogCi0gICAgZGVmIHRl
c3RfY2FuX2hhbmRsZShzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgZm9yIGNwcF9zdHlsZS5jYW5f
aGFuZGxlKCkuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5k
bGUoJycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5o
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5o
cHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5jYW5faGFuZGxlKCdmb28uYycp
KQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jcHAnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmNjJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jeHgn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLkMn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLm1t
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUoJy0nKSkK
LQotICAgIGRlZiB0ZXN0X2lzX2V4ZW1wdChzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgZm9yIGNw
cF9zdHlsZS5pc19leGVtcHQoKS4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5
bGUuaXNfZXhlbXB0KCcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNf
ZXhlbXB0KCdmb28uaCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5pc19l
eGVtcHQoJ2Zvby5ocHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNf
ZXhlbXB0KCdmb28uYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5pc19l
eGVtcHQoJ2Zvby5jcHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNf
ZXhlbXB0KCctJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdn
dGsyZHJhd2luZy5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0
KCdXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5oJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdndGsyZHJhd2luZy5jJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJh
d2luZy5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5p
c19leGVtcHQoJ1dlYktpdC9xdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vdHN0X3F3ZWJzZWN1
cml0eW9yaWdpbi5jcHAnKSkKK2NsYXNzIENwcFByb2Nlc3NvclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgorCisgICAgIiIiVGVzdHMgQ3BwUHJvY2Vzc29yIGNsYXNzLiIiIgorCisgICAgZGVmIG1v
Y2tfZXJyb3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6
CisgICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3IuIiIiCisgICAgICAgIHByb2Nl
c3NvciA9IENwcFByb2Nlc3NvcigiZmlsZSIsICIuaCIsIFsibGluZSJdLCBzZWxmLm1vY2tfZXJy
b3IsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvciwgc2VsZi5t
b2NrX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9leHRl
bnNpb24sICIuaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3Bh
dGgsICJmaWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmxpbmVzLCBb
ImxpbmUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLnZlcmJvc2l0eSwg
MykKKwogCiBkZWYgdGVhckRvd24oKToKICAgICAiIiJBIGdsb2JhbCBjaGVjayB0byBtYWtlIHN1
cmUgYWxsIGVycm9yLWNhdGVnb3JpZXMgaGF2ZSBiZWVuIHRlc3RlZC4KZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQppbmRleCAzODViYmFhLi44
ZTc0NDkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Rl
eHRfc3R5bGUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0
X3N0eWxlLnB5CkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRv
bmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTI2LDUzICsyNywzMCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
IiIiRG9lcyBXZWJLaXQtbGludCBvbiB0ZXh0IGZpbGVzLgorIiIiQ2hlY2tzIFdlYktpdCBzdHls
ZSBmb3IgdGV4dCBmaWxlcy4iIiIKIAotVGhpcyBtb2R1bGUgc2hhcmVzIGVycm9yIGNvdW50LCBm
aWx0ZXIgc2V0dGluZywgb3V0cHV0IHNldHRpbmcsIGV0Yy4gd2l0aCBjcHBfc3R5bGUuCi0iIiIK
IAotaW1wb3J0IGNvZGVjcwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzeXMKK2NsYXNzIFRleHRQ
cm9jZXNzb3Iob2JqZWN0KToKIAotaW1wb3J0IGNwcF9zdHlsZQorICAgICIiIlByb2Nlc3NlcyB0
ZXh0IGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4iIiIKIAorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBmaWxlX3BhdGgsIGxpbmVzLCBlcnJvcik6CisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gZmls
ZV9wYXRoCisgICAgICAgIHNlbGYubGluZXMgPSBsaW5lcworICAgICAgICBzZWxmLmVycm9yID0g
ZXJyb3IKIAotZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgot
ICAgICIiIlBlcmZvcm1zIGxpbnQgY2hlY2sgZm9yIHRleHQgb24gdGhlIHNwZWNpZmllZCBsaW5l
cy4KLQotICAgIEl0IHJlcG9ydHMgZXJyb3JzIHRvIHRoZSBnaXZlbiBlcnJvciBmdW5jdGlvbi4K
LSAgICAiIiIKLSAgICBsaW5lcyA9IChbJy8vIGFkanVzdCBsaW5lIG51bWJlcnMgdG8gbWFrZSB0
aGUgZmlyc3QgbGluZSAxLiddICsgbGluZXMpCi0KLSAgICAjIEZJWE1FOiBzaGFyZSB3aXRoIGNw
cF9zdHlsZS5jaGVja19zdHlsZSgpCi0gICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1l
cmF0ZShsaW5lcyk6Ci0gICAgICAgIGlmICdcdCcgaW4gbGluZToKLSAgICAgICAgICAgIGVycm9y
KGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvdGFiJywgNSwgJ0xpbmUgY29udGFp
bnMgdGFiIGNoYXJhY3Rlci4nKQorICAgIGRlZiBwcm9jZXNzKHNlbGYpOgorICAgICAgICBsaW5l
cyA9IHNlbGYubGluZXMKKyAgICAgICAgbGluZXMgPSAoWycvLyBhZGp1c3QgbGluZSBudW1iZXJz
IHRvIG1ha2UgdGhlIGZpcnN0IGxpbmUgMS4nXSArIGxpbmVzKQogCisgICAgICAgICMgRklYTUU6
IHNoYXJlIHdpdGggY3BwX3N0eWxlLgorICAgICAgICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4g
ZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgIGlmICdcdCcgaW4gbGluZToKKyAgICAgICAg
ICAgICAgICBzZWxmLmVycm9yKHNlbGYuZmlsZV9wYXRoLCBsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvdGFiJywgNSwgJ0xpbmUgY29udGFpbnMgdGFiIGNoYXJhY3Rlci4nKQogCi1kZWYgcHJvY2Vz
c19maWxlKGZpbGVuYW1lLCBlcnJvcik6Ci0gICAgIiIiUGVyZm9ybXMgbGludCBjaGVjayBmb3Ig
dGV4dCBvbiBhIHNpbmdsZSBmaWxlLiIiIgotICAgIGlmIChub3QgY2FuX2hhbmRsZShmaWxlbmFt
ZSkpOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJZ25vcmluZyAlczsgbm90IGEgc3VwcG9y
dGVkIGZpbGVcbicgJSBmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuCiAKLSAgICAjIEZJWE1FOiBz
aGFyZSBjb2RlIHdpdGggY3BwX3N0eWxlLnByb2Nlc3NfZmlsZSgpLgotICAgIHRyeToKLSAgICAg
ICAgIyBEbyBub3Qgc3VwcG9ydCBmb3IgZmlsZW5hbWU9Jy0nLiBjcHBfc3R5bGUgaGFuZGxlcyBp
dC4KLSAgICAgICAgbGluZXMgPSBjb2RlY3Mub3BlbihmaWxlbmFtZSwgJ3InLCAndXRmOCcsICdy
ZXBsYWNlJykucmVhZCgpLnNwbGl0KCdcbicpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoIlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4gZm9yIHJl
YWRpbmdcbiIgJSBmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuCi0gICAgcHJvY2Vzc19maWxlX2Rh
dGEoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKLQotCi1kZWYgY2FuX2hhbmRsZShmaWxlbmFtZSk6
Ci0gICAgIiIiQ2hlY2tzIGlmIHRoaXMgbW9kdWxlIHN1cHBvcnRzIHRoZSBzcGVjaWZpZWQgZmls
ZSB0eXBlLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gKHJlcXVpcmVzIHJlZmFjdG9y
aW5nIHVuaXQgdGVzdHMpLgorZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBsaW5lcywg
ZXJyb3IpOgorICAgIHByb2Nlc3NvciA9IFRleHRQcm9jZXNzb3IoZmlsZW5hbWUsIGxpbmVzLCBl
cnJvcikKKyAgICBwcm9jZXNzb3IucHJvY2VzcygpCiAKLSAgICBBcmdzOgotICAgICAgZmlsZW5h
bWU6IEEgZmlsZW5hbWUuIEl0IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAgICAiIiIK
LSAgICByZXR1cm4gKCJDaGFuZ2VMb2ciIGluIGZpbGVuYW1lCi0gICAgICAgICAgICBvciAiV2Vi
S2l0VG9vbHMvU2NyaXB0cy8iIGluIGZpbGVuYW1lCi0gICAgICAgICAgICBvciBvcy5wYXRoLnNw
bGl0ZXh0KGZpbGVuYW1lKVsxXSBpbiAoJy5jc3MnLCAnLmh0bWwnLCAnLmlkbCcsICcuanMnLCAn
Lm1tJywgJy5waHAnLCAnLnBtJywgJy5weScsICcudHh0JykpIGFuZCBub3QgIkxheW91dFRlc3Rz
LyIgaW4gZmlsZW5hbWUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weQppbmRleCBkOTExNWYwLi40MzM0MDFkIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVf
dW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0
X3N0eWxlX3VuaXR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAog
aW1wb3J0IHRleHRfc3R5bGUKLQorZnJvbSB0ZXh0X3N0eWxlIGltcG9ydCBUZXh0UHJvY2Vzc29y
CiAKIGNsYXNzIFRleHRTdHlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJU
ZXN0Q2FzZSBmb3IgdGV4dF9zdHlsZS5weSIiIgpAQCAtNzYsMzYgKzc2LDE5IEBAIGNsYXNzIFRl
eHRTdHlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1x0UmV2aWV3ZWQgYnkgTk9CT0RZLiddLCAzKQogCiAKLSAgICBkZWYgdGVzdF9jYW5f
aGFuZGxlKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyBmb3IgdGV4dF9zdHlsZS5jYW5faGFuZGxl
KCkuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCcn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJy0nKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnQ2hhbmdlTG9nJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYkNvcmUvQ2hh
bmdlTG9nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ0Zv
b0NoYW5nZUxvZy5iYWsnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hh
bmRsZSgnV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQ9c3R5bGUnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL3RleHRfc3R5bGUucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0
eWxlLmNhbl9oYW5kbGUoJ1dlYktpdFRvb2xzL1NjcmlwdHMnKSkKLQotICAgICAgICBzZWxmLmFz
c2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28uY3NzJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5odG1sJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5pZGwnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmpzJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgn
Zm9vLm1tJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zv
by5waHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9v
LnBtJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5w
eScpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28udHh0
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28u
YycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9v
LmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zv
by5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdm
b28ucG5nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxl
KCdmb28uYy9iYXIucG5nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5j
YW5faGFuZGxlKCdXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdNYWtlZmlsZScp
KQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViQ29y
ZS9BbmRyb2lkLm1rJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5f
aGFuZGxlKCdMYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcycpKQorY2xhc3Mg
VGV4dFByb2Nlc3NvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgVGV4
dFByb2Nlc3NvciBjbGFzcy4iIiIKKworICAgIGRlZiBtb2NrX2Vycm9yKHNlbGYpOgorICAgICAg
ICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9faW5p
dF9fIGNvbnN0cnVjdG9yLiIiIgorICAgICAgICBwcm9jZXNzb3IgPSBUZXh0UHJvY2Vzc29yKCJm
aWxlIiwgWyJsaW5lIl0sIHNlbGYubW9ja19lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocHJvY2Vzc29yLmVycm9yLCBzZWxmLm1vY2tfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmaWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMocHJvY2Vzc29yLmxpbmVzLCBbImxpbmUiXSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgo=
</data>
<flag name="review"
          id="29185"
          type_id="1"
          status="-"
          setter="hamaji"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46985</attachid>
            <date>2010-01-19 23:52:58 -0800</date>
            <delta_ts>2010-01-20 07:15:56 -0800</delta_ts>
            <desc>Proposed patch 4</desc>
            <filename>_patch-33775-4.txt</filename>
            <type>text/plain</type>
            <size>41852</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmMTBlNzQ1Li4zNTIyOWRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAKKzIwMTAtMDEt
MTggIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JlZCBmaWxlIG5hbWUg
YW5kIGZpbGUtcmVhZGluZyByZWxhdGVkIGNvZGUgZnJvbQorICAgICAgICBjcHBfc3R5bGUucHkg
YW5kIHRleHRfc3R5bGUucHkgaW50byBjaGVja2VyLnB5LgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc3NQorCisgICAgICAgICogU2NyaXB0cy9j
aGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBVcGRhdGVzIGNhdXNlZCBieSBjaGFuZ2Vz
IHRvIGNoZWNrZXIucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBTS0lQUEVEX0ZJTEVTX1dJVEhfV0FSTklORyBsaXN0
LgorICAgICAgICAgIC0gQWRkZWQgU0tJUFBFRF9GSUxFU19XSVRIT1VUX1dBUk5JTkcgbGlzdC4K
KyAgICAgICAgICAtIEFkZGVkIFByb2Nlc3NvckRpc3BhdGNoZXIgY2xhc3MuCisgICAgICAgICAg
LSBBZGRlZCBvcHRpb25hbCAiZGlzcGF0Y2hlciIgcGFyYW1ldGVyIHRvIFN0eWxlQ2hlY2tlciBj
b25zdHJ1Y3Rvci4KKyAgICAgICAgICAtIEFkZGVkIF9wcm9jZXNzX2xpbmVzKCkuCisgICAgICAg
ICAgLSBSZW5hbWVkIHByb2Nlc3NfZmlsZSgpIHRvIF9wcm9jZXNzX2ZpbGUoKSBhbmQgcmVmYWN0
b3JlZC4KKyAgICAgICAgICAtIEFkZGVkIGNoZWNrX2ZpbGUgdG8gcmVwbGFjZSBwcm9jZXNzX2Zp
bGUoKS4KKyAgICAgICAgICAtIFJlbmFtZWQgcHJvY2Vzc19wYXRjaCgpIHRvIGNoZWNrX3BhdGNo
KCkuCisgICAgICAgICAgLSBBZGRyZXNzZWQgRklYTUUgaW4gY2hlY2tfcGF0Y2goKSB0byBzaGFy
ZSBjb2RlIHdpdGggcHJvY2Vzc19maWxlKCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBBZGRlZCBQcm9jZXNzb3JE
aXNwYXRjaGVyVGVzdCBjbGFzcy4KKyAgICAgICAgICAtIEFkZGVkIE1vY2tTdHlsZVByb2Nlc3Nv
ciBjbGFzcy4KKyAgICAgICAgICAtIEFkZGVkIFN0eWxlQ2hlY2tlclByb2Nlc3NMaW5lc1Rlc3Qg
Y2xhc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weToK
KyAgICAgICAgICAtIFJlbmFtZWQgcHJvY2Vzc19maWxlX2RhdGEoKSB0byBfcHJvY2Vzc19saW5l
cy4KKyAgICAgICAgICAtIFJlbW92ZWQgcHJvY2Vzc19maWxlKCkgKG1vdmVkIGxvZ2ljIHRvIGNo
ZWNrZXIucHkpLgorICAgICAgICAgIC0gUmVtb3ZlZCBjYW5faGFuZGxlKCkgKG1vdmVkIGxvZ2lj
IHRvIGNoZWNrZXIucHkpLgorICAgICAgICAgIC0gQWRkZWQgQ3BwUHJvY2Vzc29yIGNsYXNzLgor
ICAgICAgICAgIC0gUmVtb3ZlZCBpc19leGVtcHQoKSAobW92ZWQgbG9naWMgdG8gY2hlY2tlci5w
eSkuCisgICAgICAgICAgLSBBZGRlZCBwcm9jZXNzX2ZpbGVfZGF0YSgpIGJhY2sgYXMgYSB3cmFw
cGVyIGZ1bmN0aW9uLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5
bGVfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBSZW1vdmVkIHRlc3RfY2FuX2hhbmRsZSgpLgor
ICAgICAgICAgIC0gUmVtb3ZlZCB0ZXN0X2lzX2V4ZW1wdCgpLgorICAgICAgICAgIC0gQWRkZWQg
Q3BwUHJvY2Vzc29yVGVzdCBjbGFzcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvdGV4dF9zdHlsZS5weToKKyAgICAgICAgICAtIEFkZGVkIFRleHRQcm9jZXNzb3IgY2xhc3Mu
CisgICAgICAgICAgLSBSZW1vdmVkIHByb2Nlc3NfZmlsZSgpLgorICAgICAgICAgIC0gUmVtb3Zl
ZCBjYW5faGFuZGxlKCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRf
c3R5bGVfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBSZW1vdmVkIHRlc3RfY2FuX2hhbmRsZSgp
LgorICAgICAgICAgIC0gQWRkZWQgVGV4dFByb2Nlc3NvclRlc3QgY2xhc3MuCisKIDIwMTAtMDEt
MTggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBMYXlvdXRU
ZXN0Q29udHJvbGxlciBzdXBwb3J0IGZvciBjYWxsaW5nIG5ldyBXZWJLaXQgU1BJIHRvCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCmluZGV4IDE0NzVlNmEuLmEyYjU4NGYgMTAw
NzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCkBAIC02OCw3ICs2OCw3IEBAIGRl
ZiBtYWluKCk6CiAKICAgICBpZiBmaWxlczoKICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVz
OgotICAgICAgICAgICAgc3R5bGVfY2hlY2tlci5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUpCisgICAg
ICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX2ZpbGUoZmlsZW5hbWUpCiAKICAgICBlbHNlOgog
ICAgICAgICBjd2QgPSBvcy5wYXRoLmFic3BhdGgoJy4nKQpAQCAtODQsNyArODQsNyBAQCBkZWYg
bWFpbigpOgogICAgICAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoX3NpbmNlX2xvY2Fs
X2NvbW1pdChjb21taXQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXRjaCA9IHNjbS5j
cmVhdGVfcGF0Y2goKQotICAgICAgICBzdHlsZV9jaGVja2VyLnByb2Nlc3NfcGF0Y2gocGF0Y2gp
CisgICAgICAgIHN0eWxlX2NoZWNrZXIuY2hlY2tfcGF0Y2gocGF0Y2gpCiAKICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCdUb3RhbCBlcnJvcnMgZm91bmQ6ICVkXG4nICUgc3R5bGVfY2hlY2tlci5lcnJv
cl9jb3VudCkKICAgICBzeXMuZXhpdChzdHlsZV9jaGVja2VyLmVycm9yX2NvdW50ID4gMCkKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCBjM2Y0
ZGIwLi4zMWQxMDc5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2VyLnB5CkBAIC0yOSwxNSArMjksMTQgQEAKIAogIiIiRnJvbnQgZW5kIG9mIHNvbWUgc3R5
bGUtY2hlY2tlciBtb2R1bGVzLiIiIgogCi0jIEZJWE1FOiBNb3ZlIG1vcmUgY29kZSBmcm9tIGNw
cF9zdHlsZSB0byBoZXJlLgotCitpbXBvcnQgY29kZWNzCiBpbXBvcnQgZ2V0b3B0CiBpbXBvcnQg
b3MucGF0aAogaW1wb3J0IHN5cwogCi1pbXBvcnQgY3BwX3N0eWxlCi1pbXBvcnQgdGV4dF9zdHls
ZQogZnJvbSBkaWZmX3BhcnNlciBpbXBvcnQgRGlmZlBhcnNlcgorZnJvbSBjcHBfc3R5bGUgaW1w
b3J0IENwcFByb2Nlc3NvcgorZnJvbSB0ZXh0X3N0eWxlIGltcG9ydCBUZXh0UHJvY2Vzc29yCiAK
IAogIyBUaGVzZSBkZWZhdWx0cyBhcmUgdXNlZCBieSBjaGVjay13ZWJraXQtc3R5bGUuCkBAIC0x
NTgsNiArMTU3LDI1IEBAIFNUWUxFX0NBVEVHT1JJRVMgPSBbCiAgICAgXQogCiAKKyMgU29tZSBm
aWxlcyBzaG91bGQgYmUgc2tpcHBlZCB3aGVuIGNoZWNraW5nIHN0eWxlLiBGb3IgZXhhbXBsZSwK
KyMgV2ViS2l0IG1haW50YWlucyBzb21lIGZpbGVzIGluIE1vemlsbGEgc3R5bGUgb24gcHVycG9z
ZSB0byBlYXNlCisjIGZ1dHVyZSBtZXJnZXMuCitTS0lQUEVEX0ZJTEVTX1dJVEhPVVRfV0FSTklO
RyA9IFsKKyAgICAiTGF5b3V0VGVzdHMvIgorICAgIF0KKworCisjIEluY2x1ZGUgYSB3YXJuaW5n
IGZvciBza2lwcGVkIGZpbGVzIHRoYXQgYXJlIGxlc3Mgb2J2aW91cy4KK1NLSVBQRURfRklMRVNf
V0lUSF9XQVJOSU5HID0gWworICAgICMgVGhlIFF0IEFQSSBhbmQgdGVzdHMgZG8gbm90IGZvbGxv
dyBXZWJLaXQgc3R5bGUuCisgICAgIyBUaGV5IGZvbGxvdyBRdCBzdHlsZS4gOikKKyAgICAiZ3Rr
MmRyYXdpbmcuYyIsICMgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYworICAgICJn
dGsyZHJhd2luZy5oIiwgIyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5oCisgICAg
IldlYktpdC9xdC9BcGkvIiwKKyAgICAiV2ViS2l0L3F0L3Rlc3RzLyIsCisgICAgXQorCisKIGRl
ZiB3ZWJraXRfYXJndW1lbnRfZGVmYXVsdHMoKToKICAgICAiIiJSZXR1cm4gdGhlIERlZmF1bHRB
cmd1bWVudHMgaW5zdGFuY2UgZm9yIHVzZSBieSBjaGVjay13ZWJraXQtc3R5bGUuIiIiCiAgICAg
cmV0dXJuIEFyZ3VtZW50RGVmYXVsdHMoV0VCS0lUX0RFRkFVTFRfT1VUUFVUX0ZPUk1BVCwKQEAg
LTYxOSw2ICs2MzcsMTI4IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAg
IHJldHVybiAoZmlsZW5hbWVzLCBvcHRpb25zKQogCiAKK2NsYXNzIE5vbmVQcm9jZXNzb3Iob2Jq
ZWN0KToKKworICAgICIiIlN1cHBvcnRzIHByb2Nlc3NpbmcgZmlsZXMgdGhhdCBzaG91bGQgYmUg
c2tpcHBlZC4iIiIKKworICAgICMgVGhlICJzdGRlcnJfd3JpdGUiIHBhcmFtZXRlciBhbGxvd3Mg
Zm9yIHNpbXBsZXIgdW5pdCB0ZXN0aW5nLgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3Bh
dGgsIHN0ZGVycl93cml0ZSwgc2hvdWxkX3dyaXRlX3dhcm5pbmcpOgorICAgICAgICAiIiJDcmVh
dGUgYSBwcm9jZXNzb3IgdGhhdCBza2lwcyBmaWxlcy4iIiIKKyAgICAgICAgc2VsZi5fZmlsZV9w
YXRoID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYuX3Nob3VsZF93cml0ZV93YXJuaW5nID0gc2hv
dWxkX3dyaXRlX3dhcm5pbmcKKyAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlID0gc3RkZXJyX3dy
aXRlCisKKyAgICBkZWYgcHJvY2VzcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fc2hvdWxkX3dy
aXRlX3dhcm5pbmc6CisgICAgICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUoIklnbm9yaW5nICVz
OiB0aGlzIGZpbGUgaXMgZXhlbXB0IGZyb20gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic3R5bGUgZ3VpZGUuXG4iICUgc2VsZi5fZmlsZV9wYXRoKQorCisKKyMgRW51bS1s
aWtlIGlkaW9tCitjbGFzcyBGaWxlVHlwZToKKworICAgIENQUCA9IDEKKyAgICBTS0lQX1dJVEhf
V0FSTklORyA9IDIKKyAgICBTS0lQX1dJVEhPVVRfV0FSTklORyA9IDMKKyAgICBURVhUID0gNAor
CisKK2NsYXNzIFByb2Nlc3NvckRpc3BhdGNoZXIob2JqZWN0KToKKworICAgICIiIlN1cHBvcnRz
IGNob29zaW5nIGFuZCBjcmVhdGluZyB3aGF0IHN0eWxlIHByb2Nlc3NvciB0byB1c2UuIiIiCisK
KyAgICBjcHBfZmlsZV9leHRlbnNpb25zID0gKAorICAgICAgICAnYycsCisgICAgICAgICdjcHAn
LAorICAgICAgICAnaCcsCisgICAgICAgICkKKworICAgIHRleHRfZmlsZV9leHRlbnNpb25zID0g
KAorICAgICAgICAnY3NzJywKKyAgICAgICAgJ2h0bWwnLAorICAgICAgICAnaWRsJywKKyAgICAg
ICAgJ2pzJywKKyAgICAgICAgJ21tJywKKyAgICAgICAgJ3BocCcsCisgICAgICAgICdwbScsCisg
ICAgICAgICdweScsCisgICAgICAgICd0eHQnLAorICAgICAgICApCisKKyAgICAjIFRoZSAic3Rk
ZXJyX3dyaXRlIiBwYXJhbWV0ZXIgYWxsb3dzIGZvciBzaW1wbGVyIHVuaXQgdGVzdGluZy4KKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgc3RkZXJyX3dyaXRlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEg
UHJvY2Vzc29yRGlzcGF0Y2hlciBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
IHN0ZGVycl93cml0ZTogQSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgc3RyaW5nIGFzIGEgcGFyYW1l
dGVyCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIHdh
cm5pbmcgb2NjdXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUgc3lzLnN0
ZGVyci53cml0ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlID0g
c3RkZXJyX3dyaXRlCisKKyAgICBkZWYgX3Nob3VsZF9za2lwX3dpdGhfd2FybmluZyhzZWxmLCBm
aWxlX3BhdGgpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gZmlsZSBzaG91
bGQgYmUgc2tpcHBlZCB3aXRoIGEgd2FybmluZy4iIiIKKyAgICAgICAgZm9yIHNraXBwZWRfZmls
ZSBpbiBTS0lQUEVEX0ZJTEVTX1dJVEhfV0FSTklORzoKKyAgICAgICAgICAgIGlmIGZpbGVfcGF0
aC5maW5kKHNraXBwZWRfZmlsZSkgPj0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfc2hvdWxkX3NraXBfd2l0aG91dF93YXJu
aW5nKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBnaXZl
biBmaWxlIHNob3VsZCBiZSBza2lwcGVkIHdpdGggYSB3YXJuaW5nLiIiIgorICAgICAgICBmb3Ig
c2tpcHBlZF9maWxlIGluIFNLSVBQRURfRklMRVNfV0lUSE9VVF9XQVJOSU5HOgorICAgICAgICAg
ICAgaWYgZmlsZV9wYXRoLmZpbmQoc2tpcHBlZF9maWxlKSA+PSAwOgorICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9maWxlX3R5cGUo
c2VsZiwgZmlsZV9wYXRoLCBmaWxlX2V4dGVuc2lvbik6CisgICAgICAgICIiIlJldHVybiB0aGUg
RmlsZVR5cGUgZm9yIHRoZSBnaXZlIGZpbGUgcGF0aCBhbmQgZXh0ZW5zaW9uLiIiIgorICAgICAg
ICBpZiBzZWxmLl9zaG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcoZmlsZV9wYXRoKToKKyAgICAg
ICAgICAgIHJldHVybiBGaWxlVHlwZS5TS0lQX1dJVEhPVVRfV0FSTklORworICAgICAgICBlbGlm
IHNlbGYuX3Nob3VsZF9za2lwX3dpdGhfd2FybmluZyhmaWxlX3BhdGgpOgorICAgICAgICAgICAg
cmV0dXJuIEZpbGVUeXBlLlNLSVBfV0lUSF9XQVJOSU5HCisgICAgICAgIGVsaWYgKGZpbGVfZXh0
ZW5zaW9uIGluIHNlbGYuY3BwX2ZpbGVfZXh0ZW5zaW9ucykgb3IgKGZpbGVfcGF0aCA9PSAnLScp
OgorICAgICAgICAgICAgIyBGSVhNRTogRG8gc29tZXRoaW5nIGFib3V0IHRoZSBjb21tZW50IGJl
bG93IGFuZCB0aGUgaXNzdWUgaXQKKyAgICAgICAgICAgICMgICAgICAgIHJhaXNlcyBzaW5jZSBj
cHBfc3R5bGUgYWxyZWFkeSByZWxpZXMgb24gdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgICAgICMK
KyAgICAgICAgICAgICMgVHJlYXQgc3RkaW4gYXMgQysrLiBTaW5jZSB0aGUgZXh0ZW5zaW9uIGlz
IHVua25vd24gd2hlbgorICAgICAgICAgICAgIyByZWFkaW5nIGZyb20gc3RkaW4sIGNwcF9zdHls
ZSB0ZXN0cyBzaG91bGQgbm90IHJlbHkgb24KKyAgICAgICAgICAgICMgdGhlIGV4dGVuc2lvbi4K
KyAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5DUFAKKyAgICAgICAgZWxpZiAoIkNoYW5nZUxv
ZyIgaW4gZmlsZV9wYXRoCisgICAgICAgICAgICAgIG9yICJXZWJLaXRUb29scy9TY3JpcHRzLyIg
aW4gZmlsZV9wYXRoCisgICAgICAgICAgICAgIG9yIGZpbGVfZXh0ZW5zaW9uIGluIHNlbGYudGV4
dF9maWxlX2V4dGVuc2lvbnMpOgorICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlRFWFQKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5TS0lQX1dJVEhPVVRfV0FS
TklORworCisgICAgZGVmIF9jcmVhdGVfcHJvY2Vzc29yKHNlbGYsIGZpbGVfdHlwZSwgZmlsZV9w
YXRoLCBmaWxlX2V4dGVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMsIGhh
bmRsZV9zdHlsZV9lcnJvciwgdmVyYm9zaXR5KToKKyAgICAgICAgIiIiSW5zdGFudGlhdGUgYSBz
dHlsZSBwcm9jZXNzb3Igc3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiBGaWxlVHlwZS4iIiIKKyAgICAg
ICAgaWYgZmlsZV90eXBlID09IEZpbGVUeXBlLkNQUDoKKyAgICAgICAgICAgIHByb2Nlc3NvciA9
IENwcFByb2Nlc3NvcihmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgaGFuZGxlX3N0
eWxlX2Vycm9yLCB2ZXJib3NpdHkpCisgICAgICAgIGVsaWYgZmlsZV90eXBlID09IEZpbGVUeXBl
LlRFWFQ6CisgICAgICAgICAgICBwcm9jZXNzb3IgPSBUZXh0UHJvY2Vzc29yKGZpbGVfcGF0aCwg
bGluZXMsIGhhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmls
ZVR5cGUuU0tJUF9XSVRIX1dBUk5JTkc6CisgICAgICAgICAgICBwcm9jZXNzb3IgPSBOb25lUHJv
Y2Vzc29yKGZpbGVfcGF0aCwgc2VsZi5fc3RkZXJyX3dyaXRlLCBzaG91bGRfd3JpdGVfd2Fybmlu
Zz1UcnVlKQorICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5TS0lQX1dJVEhPVVRf
V0FSTklORzoKKyAgICAgICAgICAgIHByb2Nlc3NvciA9IE5vbmVQcm9jZXNzb3IoZmlsZV9wYXRo
LCBzZWxmLl9zdGRlcnJfd3JpdGUsIHNob3VsZF93cml0ZV93YXJuaW5nPUZhbHNlKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBmaWxlIHR5cGUg
IiVzIjogdGhlIHZhbGlkIGZpbGUgdHlwZXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYXJlIC0tIGNwcCwgZXhlbXB0LCBub25lLCBhbmQgdGV4dC4iICUgZmlsZV90eXBlKQorCisg
ICAgICAgIHJldHVybiBwcm9jZXNzb3IKKworICAgIGRlZiBkaXNwYXRjaF9wcm9jZXNzb3Ioc2Vs
ZiwgZmlsZV9wYXRoLCBsaW5lcywgaGFuZGxlX3N0eWxlX2Vycm9yLCB2ZXJib3NpdHkpOgorICAg
ICAgICAiIiJSZXR1cm4gdGhlIHN0eWxlIHByb2Nlc3NvciB0byB1c2UgZm9yIHRoZSBnaXZlbiBm
aWxlIHBhdGguIiIiCisgICAgICAgIGZpbGVfZXh0ZW5zaW9uID0gb3MucGF0aC5zcGxpdGV4dChm
aWxlX3BhdGgpWzFdLmxzdHJpcCgiLiIpCisKKyAgICAgICAgZmlsZV90eXBlID0gc2VsZi5fZmls
ZV90eXBlKGZpbGVfcGF0aCwgZmlsZV9leHRlbnNpb24pCisKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2NyZWF0ZV9wcm9jZXNzb3IoZmlsZV90eXBlLCBmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcywgaGFuZGxlX3N0eWxl
X2Vycm9yLCB2ZXJib3NpdHkpCisKKwogY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAKICAg
ICAiIiJTdXBwb3J0cyBjaGVja2luZyBzdHlsZSBpbiBmaWxlcyBhbmQgcGF0Y2hlcy4KQEAgLTYz
MiwxOCArNzcyLDMwIEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogCiAgICAgIiIiCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgd3JpdGVfZXJyb3I9c3lzLnN0ZGVyci53
cml0ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMsIHN0ZGVycl93cml0ZT1Ob25l
LCBkaXNwYXRjaGVyPU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgYSBTdHlsZUNoZWNrZXIgaW5z
dGFuY2UuCiAKICAgICAgICAgQXJnczoKICAgICAgICAgICBvcHRpb25zOiBTZWUgb3B0aW9ucyBh
dHRyaWJ1dGUuCiAgICAgICAgICAgc3RkZXJyX3dyaXRlOiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMg
YSBzdHJpbmcgYXMgYSBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGF0
IGlzIGNhbGxlZCB3aGVuIGEgc3R5bGUgZXJyb3Igb2NjdXJzLgorICAgICAgICAgICAgICAgICAg
ICAgICAgRGVmYXVsdHMgdG8gc3lzLnN0ZGVyci53cml0ZS4gVGhpcyBzaG91bGQgYmUKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZWQgb25seSBpbiB1bml0IHRlc3RzLgorICAgICAgICAgIGRp
c3BhdGNoZXI6IEFuIGluc3RhbmNlIG9mIGEgY2xhc3Mgd2l0aCBhIGRpc3BhdGNoX3Byb2Nlc3Nv
cigpCisgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kLiBEZWZhdWx0cyB0byBQcm9jZXNzb3JE
aXNwYXRjaGVyKHN0ZGVycl93cml0ZSkuCisgICAgICAgICAgICAgICAgICAgICAgVGhpcyBzaG91
bGQgYmUgdXNlZCBvbmx5IGluIHVuaXQgdGVzdHMuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHNl
bGYuX3dyaXRlX2Vycm9yID0gd3JpdGVfZXJyb3IKLSAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0
aW9ucworICAgICAgICBpZiBzdGRlcnJfd3JpdGUgaXMgTm9uZToKKyAgICAgICAgICAgIHN0ZGVy
cl93cml0ZSA9IHN5cy5zdGRlcnIud3JpdGUKKworICAgICAgICBpZiBkaXNwYXRjaGVyIGlzIE5v
bmU6CisgICAgICAgICAgICBkaXNwYXRjaGVyID0gUHJvY2Vzc29yRGlzcGF0Y2hlcihzdGRlcnJf
d3JpdGUpCisKKyAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKKyAgICAgICAg
c2VsZi5fc3RkZXJyX3dyaXRlID0gc3RkZXJyX3dyaXRlCiAgICAgICAgIHNlbGYuZXJyb3JfY291
bnQgPSAwCisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKIAogICAgIGRlZiBfaGFuZGxl
X2Vycm9yKHNlbGYsIGZpbGVuYW1lLCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2Us
IG1lc3NhZ2UpOgogICAgICAgICAiIiJIYW5kbGUgdGhlIG9jY3VycmVuY2Ugb2YgYSBzdHlsZSBl
cnJvciB3aGlsZSBjaGVja2luZy4KQEAgLTY3NSwyMSArODI3LDY3IEBAIGNsYXNzIFN0eWxlQ2hl
Y2tlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9
ICIlczolczogICVzICBbJXNdIFslZF1cbiIKIAotICAgICAgICBzZWxmLl93cml0ZV9lcnJvcihm
b3JtYXRfc3RyaW5nICUgKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVzc2FnZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5jZSkp
CisgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZShmb3JtYXRfc3RyaW5nICUgKGZpbGVuYW1lLCBs
aW5lX251bWJlciwgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQogCi0gICAgZGVmIHByb2Nlc3NfZmlsZShz
ZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICIiIkNoZWNrcyBzdHlsZSBmb3IgdGhlIHNwZWNpZmll
ZCBmaWxlLgorICAgIGRlZiBfcHJvY2Vzc19saW5lcyhzZWxmLCBmaWxlX3BhdGgsIGxpbmVzLCBl
cnJvcik6CisgICAgICAgICIiIkNoZWNrIHN0eWxlIGluIHRoZSBnaXZlbiBsaW5lcy4iIiIKKyAg
ICAgICAgdmVyYm9zaXR5ID0gc2VsZi5vcHRpb25zLnZlcmJvc2l0eQogCi0gICAgICAgIElmIHRo
ZSBzcGVjaWZpZWQgZmlsZW5hbWUgaXMgJy0nLCBhcHBsaWVzIGNwcF9zdHlsZSB0byB0aGUgc3Rh
bmRhcmQgaW5wdXQuCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuX2Rpc3BhdGNoZXIuZGlzcGF0
Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpCisgICAgICAg
IHByb2Nlc3Nvci5wcm9jZXNzKCkKKworICAgIGRlZiBfcHJvY2Vzc19maWxlKHNlbGYsIGZpbGVu
YW1lLCBlcnJvcik6CisgICAgICAgICIiIkNoZWNrIHN0eWxlIGluIGEgc2luZ2xlIGZpbGUuCisK
KyAgICAgICAgQXJnczoKKyAgICAgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUg
dG8gcGFyc2UuCisgICAgICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55
IGVycm9ycyBmb3VuZC4KIAogICAgICAgICAiIiIKLSAgICAgICAgaWYgY3BwX3N0eWxlLmNhbl9o
YW5kbGUoZmlsZW5hbWUpIG9yIGZpbGVuYW1lID09ICctJzoKLSAgICAgICAgICAgIGNwcF9zdHls
ZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHNlbGYuX2hhbmRsZV9lcnJvciwgc2VsZi5vcHRpb25z
LnZlcmJvc2l0eSkKLSAgICAgICAgZWxpZiB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUp
OgotICAgICAgICAgICAgdGV4dF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHNlbGYuX2hh
bmRsZV9lcnJvcikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBTdXBwb3J0IHRoZSBVTklY
IGNvbnZlbnRpb24gb2YgdXNpbmcgIi0iIGZvciBzdGRpbi4gIE5vdGUgdGhhdAorICAgICAgICAg
ICAgIyB3ZSBhcmUgbm90IG9wZW5pbmcgdGhlIGZpbGUgd2l0aCB1bml2ZXJzYWwgbmV3bGluZSBz
dXBwb3J0CisgICAgICAgICAgICAjICh3aGljaCBjb2RlY3MgZG9lc24ndCBzdXBwb3J0IGFueXdh
eSksIHNvIHRoZSByZXN1bHRpbmcgbGluZXMgZG8KKyAgICAgICAgICAgICMgY29udGFpbiB0cmFp
bGluZyAnXHInIGNoYXJhY3RlcnMgaWYgd2UgYXJlIHJlYWRpbmcgYSBmaWxlIHRoYXQKKyAgICAg
ICAgICAgICMgaGFzIENSTEYgZW5kaW5ncy4KKyAgICAgICAgICAgICMgSWYgYWZ0ZXIgdGhlIHNw
bGl0IGEgdHJhaWxpbmcgJ1xyJyBpcyBwcmVzZW50LCBpdCBpcyByZW1vdmVkCisgICAgICAgICAg
ICAjIGJlbG93LiBJZiBpdCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCAoaS5lLiBvcy5s
aW5lc2VwICE9CisgICAgICAgICAgICAjICdcclxuJyBhcyBpbiBXaW5kb3dzKSwgYSB3YXJuaW5n
IGlzIGlzc3VlZCBiZWxvdyBpZiB0aGlzIGZpbGUKKyAgICAgICAgICAgICMgaXMgcHJvY2Vzc2Vk
LgorICAgICAgICAgICAgaWYgZmlsZW5hbWUgPT0gJy0nOgorICAgICAgICAgICAgICAgIGxpbmVz
ID0gY29kZWNzLlN0cmVhbVJlYWRlcldyaXRlcihzeXMuc3RkaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5nZXRyZWFkZXIoJ3V0Zjgn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29k
ZWNzLmdldHdyaXRlcigndXRmOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAn
cicsICd1dGY4JywgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQoJ1xuJykKKworICAgICAgICAgICAg
Y2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgICMgUmVtb3ZlIHRyYWls
aW5nICdccicuCisgICAgICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVz
KSk6CisgICAgICAgICAgICAgICAgaWYgbGluZXNbbGluZV9udW1iZXJdLmVuZHN3aXRoKCdccicp
OgorICAgICAgICAgICAgICAgICAgICBsaW5lc1tsaW5lX251bWJlcl0gPSBsaW5lc1tsaW5lX251
bWJlcl0ucnN0cmlwKCdccicpCisgICAgICAgICAgICAgICAgICAgIGNhcnJpYWdlX3JldHVybl9m
b3VuZCA9IFRydWUKKworICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIHNlbGYu
X3N0ZGVycl93cml0ZSgiU2tpcHBpbmcgaW5wdXQgJyVzJzogQ2FuJ3Qgb3BlbiBmb3IgcmVhZGlu
Z1xuIiAlIGZpbGVuYW1lKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5fcHJv
Y2Vzc19saW5lcyhmaWxlbmFtZSwgbGluZXMsIGVycm9yKQorCisgICAgICAgIGlmIGNhcnJpYWdl
X3JldHVybl9mb3VuZCBhbmQgb3MubGluZXNlcCAhPSAnXHJcbic6CisgICAgICAgICAgICAjIFVz
ZSAwIGZvciBsaW5lX251bWJlciBzaW5jZSBvdXRwdXRpbmcgb25seSBvbmUgZXJyb3IgZm9yIHBv
dGVudGlhbGx5CisgICAgICAgICAgICAjIHNldmVyYWwgbGluZXMuCisgICAgICAgICAgICBlcnJv
cihmaWxlbmFtZSwgMCwgJ3doaXRlc3BhY2UvbmV3bGluZScsIDEsCisgICAgICAgICAgICAgICAg
ICAnT25lIG9yIG1vcmUgdW5leHBlY3RlZCBcXHIgKF5NKSBmb3VuZDsnCisgICAgICAgICAgICAg
ICAgICAnYmV0dGVyIHRvIHVzZSBvbmx5IGEgXFxuJykKKworICAgIGRlZiBjaGVja19maWxlKHNl
bGYsIGZpbGVfcGF0aCk6CisgICAgICAgIGVycm9yID0gc2VsZi5faGFuZGxlX2Vycm9yCisgICAg
ICAgIHNlbGYuX3Byb2Nlc3NfZmlsZShmaWxlX3BhdGgsIGVycm9yKQogCi0gICAgZGVmIHByb2Nl
c3NfcGF0Y2goc2VsZiwgcGF0Y2hfc3RyaW5nKToKKyAgICBkZWYgY2hlY2tfcGF0Y2goc2VsZiwg
cGF0Y2hfc3RyaW5nKToKICAgICAgICAgIiIiRG9lcyBsaW50IG9uIGEgc2luZ2xlIHBhdGNoLgog
CiAgICAgICAgIEFyZ3M6CkBAIC02OTgsNyArODk2LDYgQEAgY2xhc3MgU3R5bGVDaGVja2VyKG9i
amVjdCk6CiAgICAgICAgICIiIgogICAgICAgICBwYXRjaCA9IERpZmZQYXJzZXIocGF0Y2hfc3Ry
aW5nLnNwbGl0bGluZXMoKSkKICAgICAgICAgZm9yIGZpbGVuYW1lLCBkaWZmIGluIHBhdGNoLmZp
bGVzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgZmlsZV9leHRlbnNpb24gPSBvcy5wYXRoLnNw
bGl0ZXh0KGZpbGVuYW1lKVsxXQogICAgICAgICAgICAgbGluZV9udW1iZXJzID0gc2V0KCkKIAog
ICAgICAgICAgICAgZGVmIGVycm9yX2Zvcl9wYXRjaChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNh
dGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKQEAgLTcxNyw4ICs5MTQsNCBAQCBjbGFzcyBT
dHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBpZiBsaW5lX251bWJlciBpbiBs
aW5lX251bWJlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9lcnJvcihmaWxl
bmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQogCi0gICAg
ICAgICAgICAjIEZJWE1FOiBTaGFyZSB0aGlzIGNvZGUgd2l0aCBzZWxmLnByb2Nlc3NfZmlsZSgp
LgotICAgICAgICAgICAgaWYgY3BwX3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICAg
ICAgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIGVycm9yX2Zvcl9wYXRj
aCwgc2VsZi5vcHRpb25zLnZlcmJvc2l0eSkKLSAgICAgICAgICAgIGVsaWYgdGV4dF9zdHlsZS5j
YW5faGFuZGxlKGZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICB0ZXh0X3N0eWxlLnByb2Nlc3Nf
ZmlsZShmaWxlbmFtZSwgZXJyb3JfZm9yX3BhdGNoKQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vz
c19maWxlKGZpbGVuYW1lLCBlcnJvcl9mb3JfcGF0Y2gpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXggNWE2ZTY1
MC4uZDYxN2UwNSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQpAQCAtMzgsOCArMzgsMTIgQEAgaW1wb3J0IHVuaXR0
ZXN0CiAKIGltcG9ydCBjaGVja2VyIGFzIHN0eWxlCiBmcm9tIGNoZWNrZXIgaW1wb3J0IENhdGVn
b3J5RmlsdGVyCitmcm9tIGNoZWNrZXIgaW1wb3J0IE5vbmVQcm9jZXNzb3IKK2Zyb20gY2hlY2tl
ciBpbXBvcnQgUHJvY2Vzc29yRGlzcGF0Y2hlcgogZnJvbSBjaGVja2VyIGltcG9ydCBQcm9jZXNz
b3JPcHRpb25zCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlQ2hlY2tlcgorZnJvbSBjcHBfc3R5
bGUgaW1wb3J0IENwcFByb2Nlc3NvcgorZnJvbSB0ZXh0X3N0eWxlIGltcG9ydCBUZXh0UHJvY2Vz
c29yCiAKIGNsYXNzIENhdGVnb3J5RmlsdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAg
LTM1Miw2ICszNTYsMTY0IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZpbGVzLCBbJ2Zvby5jcHAnLCAnYmFy
LmNwcCddKQogCiAKK2NsYXNzIE5vbmVQcm9jZXNzb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KworICAgICIiIlRlc3RzIE5vbmVQcm9jZXNzb3IgY2xhc3MuIiIiCisKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIHNlbGYud2FybmluZ19tZXNzYWdlcyA9ICIiCisKKyAgICBkZWYgbW9j
a19zdGRlcnJfd3JpdGUoc2VsZiwgd2FybmluZ19tZXNzYWdlKToKKyAgICAgICAgc2VsZi53YXJu
aW5nX21lc3NhZ2VzICs9IHdhcm5pbmdfbWVzc2FnZQorCisgICAgZGVmIHRlc3RfcHJvY2Vzcyhz
ZWxmKToKKyAgICAgICAgIyBUZXN0IG5vIHdhcm5pbmcuCisgICAgICAgIHByb2Nlc3NvciA9IE5v
bmVQcm9jZXNzb3IoImZpbGVfcGF0aCIsIHNlbGYubW9ja19zdGRlcnJfd3JpdGUsIHNob3VsZF93
cml0ZV93YXJuaW5nPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLndhcm5p
bmdfbWVzc2FnZXMsICIiKQorICAgICAgICBwcm9jZXNzb3IucHJvY2VzcygpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHNlbGYud2FybmluZ19tZXNzYWdlcywgIiIpCisKKyAgICAgICAgIyBU
ZXN0IHdpdGggd2FybmluZy4KKyAgICAgICAgcHJvY2Vzc29yID0gTm9uZVByb2Nlc3NvcigiZmls
ZV9wYXRoIiwgc2VsZi5tb2NrX3N0ZGVycl93cml0ZSwgc2hvdWxkX3dyaXRlX3dhcm5pbmc9VHJ1
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi53YXJuaW5nX21lc3NhZ2VzLCAiIikK
KyAgICAgICAgcHJvY2Vzc29yLnByb2Nlc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
ZWxmLndhcm5pbmdfbWVzc2FnZXMsICJJZ25vcmluZyBmaWxlX3BhdGg6IHRoaXMgZmlsZSBpcyBl
eGVtcHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuXG4iKQorCisKK2NsYXNzIFByb2Nlc3NvckRpc3Bh
dGNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIFByb2Nlc3NvckRp
c3BhdGNoZXIgY2xhc3MuIiIiCisKKyAgICBkZWYgbW9ja19zdGRlcnJfd3JpdGUoc2VsZiwgd2Fy
bmluZ19tZXNzYWdlKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxl
X2Vycm9yKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcHJvY2Vzc29yKHNlbGYsIGZp
bGVfcGF0aCk6CisgICAgICAgIGRpc3BhdGNoZXIgPSBQcm9jZXNzb3JEaXNwYXRjaGVyKHNlbGYu
bW9ja19zdGRlcnJfd3JpdGUpCisgICAgICAgIHByb2Nlc3NvciA9IGRpc3BhdGNoZXIuZGlzcGF0
Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCwgWyJsaW5lIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3Is
IDMpCisgICAgICAgIHJldHVybiBwcm9jZXNzb3IKKworICAgIGRlZiBhc3NlcnRfdHlwZShzZWxm
LCBmaWxlX3BhdGgsIGV4cGVjdGVkX2NsYXNzKToKKyAgICAgICAgIiIiQXNzZXJ0IHRoZSBkaXNw
YXRjaGVkIHByb2Nlc3NvciB0eXBlIGFuZCByZXR1cm4gdGhlIHByb2Nlc3Nvci4iIiIKKyAgICAg
ICAgcHJvY2Vzc29yID0gc2VsZi5wcm9jZXNzb3IoZmlsZV9wYXRoKQorICAgICAgICBnb3RfY2xh
c3MgPSBwcm9jZXNzb3IuX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGdvdF9j
bGFzcywgZXhwZWN0ZWRfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgcGF0
aCAiJShmaWxlX3BhdGgpcyIgZ290ICUoZ290X2NsYXNzKXMgd2hlbiAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RpbmcgJShleHBlY3RlZF9jbGFzcylzLiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSB7ImZpbGVfcGF0aCI6IGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImdvdF9jbGFzcyI6IGdvdF9jbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImV4cGVjdGVkX2NsYXNzIjogZXhwZWN0ZWRfY2xhc3N9KQorICAgICAgICBy
ZXR1cm4gcHJvY2Vzc29yCisKKyAgICBkZWYgYXNzZXJ0X3R5cGVfY3BwKHNlbGYsIGZpbGVfcGF0
aCk6CisgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBkaXNwYXRjaGVkIHByb2Nlc3NvciBpcyBh
IENwcFByb2Nlc3Nvci4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRfdHlwZShmaWxlX3BhdGgsIENw
cFByb2Nlc3NvcikKKworICAgIGRlZiBhc3NlcnRfdHlwZV9za2lwcGVkX3dpdGhfd2FybmluZyhz
ZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJBc3NlcnQgdGhhdCB0aGUgZGlzcGF0Y2hlZCBw
cm9jZXNzb3IgaXMgTm9uZS4iIiIKKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5hc3NlcnRfdHlw
ZShmaWxlX3BhdGgsIE5vbmVQcm9jZXNzb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9j
ZXNzb3IuX3Nob3VsZF93cml0ZV93YXJuaW5nLCAnQ2hlY2tpbmc6ICIlcyInICUgZmlsZV9wYXRo
KQorCisgICAgZGVmIGFzc2VydF90eXBlX3NraXBwZWRfd2l0aG91dF93YXJuaW5nKHNlbGYsIGZp
bGVfcGF0aCk6CisgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBkaXNwYXRjaGVkIHByb2Nlc3Nv
ciBpcyBOb25lLiIiIgorICAgICAgICBwcm9jZXNzb3IgPSBzZWxmLmFzc2VydF90eXBlKGZpbGVf
cGF0aCwgTm9uZVByb2Nlc3NvcikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jZXNzb3Iu
X3Nob3VsZF93cml0ZV93YXJuaW5nLCAnQ2hlY2tpbmc6ICIlcyInICUgZmlsZV9wYXRoKQorCisg
ICAgZGVmIGFzc2VydF90eXBlX3RleHQoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiQXNz
ZXJ0IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlzIGEgVGV4dFByb2Nlc3Nvci4iIiIK
KyAgICAgICAgc2VsZi5hc3NlcnRfdHlwZShmaWxlX3BhdGgsIFRleHRQcm9jZXNzb3IpCisKKyAg
ICBkZWYgdGVzdF9jcHBfcGF0aHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGF0aHMgdGhhdCBz
aG91bGQgYmUgY2hlY2tlZCBhcyBDKysuIiIiCisgICAgICAgIHBhdGhzID0gWworICAgICAgICAg
ICAgIi0iLAorICAgICAgICAgICAgImZvby5jIiwKKyAgICAgICAgICAgICJmb28uY3BwIiwKKyAg
ICAgICAgICAgICJmb28uaCIsCisgICAgICAgICAgICBdCisKKyAgICAgICAgZm9yIHBhdGggaW4g
cGF0aHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydF90eXBlX2NwcChwYXRoKQorCisgICAgICAg
ICMgQ2hlY2sgcHJvY2Vzc29yIGF0dHJpYnV0ZXMuCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYu
cHJvY2Vzc29yKCJmb28uYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5l
cnJvciwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmb28uYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHByb2Nlc3Nvci52ZXJib3NpdHksIDMpCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYucHJv
Y2Vzc29yKCItIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0
ZW5zaW9uLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0
aCwgIi0iKQorCisgICAgZGVmIHRlc3RfdGV4dF9wYXRocyhzZWxmKToKKyAgICAgICAgIiIiVGVz
dCBwYXRocyB0aGF0IHNob3VsZCBiZSBjaGVja2VkIGFzIHRleHQuIiIiCisgICAgICAgIHBhdGhz
ID0gWworICAgICAgICAgICAiQ2hhbmdlTG9nIiwKKyAgICAgICAgICAgImZvby5jc3MiLAorICAg
ICAgICAgICAiZm9vLmh0bWwiLAorICAgICAgICAgICAiZm9vLmlkbCIsCisgICAgICAgICAgICJm
b28uanMiLAorICAgICAgICAgICAiZm9vLm1tIiwKKyAgICAgICAgICAgImZvby5waHAiLAorICAg
ICAgICAgICAiZm9vLnBtIiwKKyAgICAgICAgICAgImZvby5weSIsCisgICAgICAgICAgICJmb28u
dHh0IiwKKyAgICAgICAgICAgIkZvb0NoYW5nZUxvZy5iYWsiLAorICAgICAgICAgICAiV2ViQ29y
ZS9DaGFuZ2VMb2ciLAorICAgICAgICAgICAiV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcyIsCisgICAgICAgICAgICJXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtp
dD1zdHlsZSIsCisgICAgICAgICAgICJXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvdGV4dF9z
dHlsZS5weSIsCisgICAgICAgICAgICBdCisKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydF90eXBlX3RleHQocGF0aCkKKworICAgICAgICAjIENoZWNr
IHByb2Nlc3NvciBhdHRyaWJ1dGVzLgorICAgICAgICBwcm9jZXNzb3IgPSBzZWxmLnByb2Nlc3Nv
cigiZm9vLmNzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvciwg
c2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
cHJvY2Vzc29yLmZpbGVfcGF0aCwgImZvby5jc3MiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhwcm9jZXNzb3IubGluZXMsIFsibGluZSJdKQorCisgICAgZGVmIHRlc3Rfc2tpcHBlZF93aXRo
X3dhcm5pbmdfcGF0aHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGF0aHMgdGhhdCBzaG91bGQg
bm90IGJlIGNoZWNrZWQgKGJ1dCBzdGlsbCB3YXJuKS4iIiIKKyAgICAgICAgcGF0aHMgPSBbCisg
ICAgICAgICAgICMgRXhlbXB0ZWQgZmlsZXMKKyAgICAgICAgICAgIldlYkNvcmUvcGxhdGZvcm0v
Z3RrL2d0azJkcmF3aW5nLmgiLAorICAgICAgICAgICAiV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3Rr
MmRyYXdpbmcuYyIsCisgICAgICAgICAgICMgRXhlbXB0ZWQgZm9sZGVycworICAgICAgICAgICAi
V2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oIiwKKyAgICAgICAgICAgIldlYktpdC9xdC90ZXN0cy9x
d2Vic2VjdXJpdHlvcmlnaW4vdHN0X3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAiLAorICAgICAgICAg
ICAgXQorCisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRfdHlwZV9za2lwcGVkX3dpdGhfd2FybmluZyhwYXRoKQorCisgICAgZGVmIHRlc3Rfc2tpcHBl
ZF93aXRob3V0X3dhcm5pbmdfcGF0aHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGF0aHMgdGhh
dCBzaG91bGQgbm90IGJlIGNoZWNrZWQgKGFuZCBub3Qgd2FybikuIiIiCisgICAgICAgIHBhdGhz
ID0gWworICAgICAgICAgICAiIiwKKyAgICAgICAgICAgImZvby5jL2Jhci5wbmciLAorICAgICAg
ICAgICAiZm9vLmNjIiwKKyAgICAgICAgICAgImZvby5jeHgiLAorICAgICAgICAgICAiZm9vLkMi
LAorICAgICAgICAgICAiZm9vLmhwcCIsCisgICAgICAgICAgICJmb28ucG5nIiwKKyAgICAgICAg
ICAgIkxheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlLXRlc3RzLmpzIiwKKyAgICAgICAgICAg
Im1tIiwKKyAgICAgICAgICAgIk1ha2VmaWxlIiwKKyAgICAgICAgICAgIldlYkNvcmUvQW5kcm9p
ZC5tayIsCisgICAgICAgICAgICJXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJp
bmdzIiwKKyAgICAgICAgICAgIldlYktpdFRvb2xzL1NjcmlwdHMiLAorICAgICAgICAgICAgXQor
CisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRfdHlw
ZV9za2lwcGVkX3dpdGhvdXRfd2FybmluZyhwYXRoKQorCisKIGNsYXNzIFN0eWxlQ2hlY2tlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGUgU3R5bGVDaGVja2VyIGNs
YXNzLgpAQCAtMzYyLDE1ICs1MjQsMTkgQEAgY2xhc3MgU3R5bGVDaGVja2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAKICAgICAiIiIKIAotICAgIGVycm9yX21lc3NhZ2UgPSAiIgorICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5lcnJvcl9tZXNzYWdlcyA9ICIiCisKKyAgICBk
ZWYgbW9ja19zdGRlcnJfd3JpdGUoc2VsZiwgZXJyb3JfbWVzc2FnZSk6CisgICAgICAgICIiIkEg
bW9jayBzeXMuc3RkZXJyLndyaXRlLiIiIgorICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0g
ZXJyb3JfbWVzc2FnZQorICAgICAgICBwYXNzCiAKLSAgICBkZWYgbW9ja193cml0ZV9lcnJvcihz
ZWxmLCBlcnJvcl9tZXNzYWdlKToKLSAgICAgICAgIiIiU3RvcmUgYW4gZXJyb3IgbWVzc2FnZSB3
aXRob3V0IHByaW50aW5nIGl0LiIiIgotICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2UgPSBlcnJv
cl9tZXNzYWdlCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgogICAgICAg
ICBwYXNzCiAKLSAgICBkZWYgc3R5bGVfY2hlY2tlcihzZWxmLCBvcHRpb25zKToKLSAgICAgICAg
cmV0dXJuIFN0eWxlQ2hlY2tlcihvcHRpb25zLCBzZWxmLm1vY2tfd3JpdGVfZXJyb3IpCisgICAg
ZGVmIHN0eWxlX2NoZWNrZXIoc2VsZiwgb3B0aW9ucywgZGlzcGF0Y2hlcj1Ob25lKToKKyAgICAg
ICAgcmV0dXJuIFN0eWxlQ2hlY2tlcihvcHRpb25zLCBzZWxmLm1vY2tfc3RkZXJyX3dyaXRlLCBk
aXNwYXRjaGVyKQogCiAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKICAgICAgICAgIiIiVGVzdCBf
X2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKQEAgLTM5NiwyMiArNTYyLDk3IEBAIGNsYXNzIFN0eWxl
Q2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAgICMgVmVyaWZ5IGluaXRp
YWxpemVkIHByb3Blcmx5LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdHlsZV9jaGVja2Vy
LmVycm9yX2NvdW50LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21l
c3NhZ2UsICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2Vz
LCAiIikKIAogICAgICAgICAjIENoZWNrIHRoYXQgc2hvdWxkX3ByaW50X2Vycm9yIGlzIGdldHRp
bmcgY2FsbGVkIGFwcHJvcHJpYXRlbHkuCiAgICAgICAgIHNlbGYud3JpdGVfc2FtcGxlX2Vycm9y
KHN0eWxlX2NoZWNrZXIsIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0eWxlX2NoZWNr
ZXIuZXJyb3JfY291bnQsIDApICMgRXJyb3IgY29uZmlkZW5jZSB0b28gbG93LgotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2UsICIiKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAiIikKIAogICAgICAgICBzZWxmLndyaXRl
X3NhbXBsZV9lcnJvcihzdHlsZV9jaGVja2VyLCAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhzdHlsZV9jaGVja2VyLmVycm9yX2NvdW50LCAxKSAjIEVycm9yIGNvbmZpZGVuY2UganVzdCBo
aWdoIGVub3VnaC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5lcnJvcl9tZXNzYWdl
LCAiZmlsZW5hbWU6MTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAiZmlsZW5hbWU6MTogIG1lc3NhZ2Ug
IFtjYXRlZ29yeV0gWzNdXG4iKQorCisgICAgICAgICMgQ2xlYXIgcHJldmlvdXMgZXJyb3JzLgor
ICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0gIiIKIAogICAgICAgICAjIENoZWNrICJ2czci
IG91dHB1dCBmb3JtYXQuCiAgICAgICAgIHN0eWxlX2NoZWNrZXIub3B0aW9ucy5vdXRwdXRfZm9y
bWF0ID0gInZzNyIKICAgICAgICAgc2VsZi53cml0ZV9zYW1wbGVfZXJyb3Ioc3R5bGVfY2hlY2tl
ciwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3R5bGVfY2hlY2tlci5lcnJvcl9jb3Vu
dCwgMikgIyBFcnJvciBjb25maWRlbmNlIGp1c3QgaGlnaCBlbm91Z2guCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVzc2FnZSwgImZpbGVuYW1lKDEpOiAgbWVzc2FnZSAg
W2NhdGVnb3J5XSBbM11cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3Jf
bWVzc2FnZXMsICJmaWxlbmFtZSgxKTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQorCisK
KyMgRklYTUU6IFdlIGNhbiBlbGltaW5hdGUgdGVzdGluZyB0aGlzIGludGVybmFsIG1ldGhvZCBv
bmNlIHdlIGhhdmUKKyMgICAgICAgIGFwcHJvcHJpYXRlIGVuZC10by1lbmQgdW5pdCB0ZXN0cyBv
ZiB0aGUgcHVibGljIG1ldGhvZHMgaW4KKyMgICAgICAgIHRoZSBTdHlsZUNoZWNrZXIgY2xhc3Mg
KHNpbmNlIHRlc3RpbmcgdGhpcyBtZXRob2QgaXMgYSBiaXQKKyMgICAgICAgIGNvbnZvbHV0ZWQp
LgorY2xhc3MgU3R5bGVDaGVja2VyUHJvY2Vzc0xpbmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CisKKyAgICAiIiJUZXN0IHRoZSBfcHJvY2Vzc19saW5lcygpIG1ldGhvZCBvZiB0aGUgU3R5bGVD
aGVja2VyIGNsYXNzLiIiIgorCisgICAgY2xhc3MgTW9ja1N0eWxlUHJvY2Vzc29yKG9iamVjdCk6
CisKKyAgICAgICAgIiIiQSBtb2NrIHN0eWxlIHByb2Nlc3NvciwgZm9yIGV4YW1wbGUgYSBtb2Nr
IENwcFByb2Nlc3Nvci4iIiIKKworICAgICAgICB3YXNfcHJvY2Vzc19jYWxsZWQgPSBGYWxzZQor
CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJvcj1Ob25lLCBmaWxlX3BhdGg9Tm9uZSwg
bGluZXM9Tm9uZSwgdmVyYm9zaXR5PU5vbmUpOgorICAgICAgICAgICAgc2VsZi5lcnJvciA9IGVy
cm9yCisgICAgICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IGZpbGVfcGF0aAorICAgICAgICAgICAg
c2VsZi5saW5lcyA9IGxpbmVzCisgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHZlcmJvc2l0
eQorCisgICAgICAgIGRlZiBwcm9jZXNzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi53YXNfcHJv
Y2Vzc19jYWxsZWQgPSBUcnVlCisKKyAgICBjbGFzcyBNb2NrUHJvY2Vzc29yRGlzcGF0Y2hlcihv
YmplY3QpOgorCisgICAgICAgICIiIkEgbW9jayBQcm9jZXNzb3JEaXNwYXRjaGVyLgorCisgICAg
ICAgIEF0dHJpYnV0ZXM6CisgICAgICAgICAgZGlzcGF0Y2hlZF9wcm9jZXNzb3I6IEEgTW9ja1N0
eWxlUHJvY2Vzc29yIGluc3RhbmNlIHRoYXQgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxhc3QgcHJvY2Vzc29yIHJldHVybmVkIGJ5IGRpc3BhdGNoX3Byb2Nlc3Nvcigp
LgorCisgICAgICAgICIiIgorCisgICAgICAgIGRpc3BhdGNoZWRfcHJvY2Vzc29yID0gTm9uZQor
CisgICAgICAgIGRlZiBkaXNwYXRjaF9wcm9jZXNzb3Ioc2VsZiwgZmlsZV9wYXRoLCBsaW5lcywg
ZXJyb3IsIHZlcmJvc2l0eSk6CisgICAgICAgICAgICAiIiJSZXR1cm4gdGhlIGFwcHJvcHJpYXRl
IHN0eWxlIHByb2Nlc3Nvci4iIiIKKyAgICAgICAgICAgIHByb2Nlc3NvciA9IFN0eWxlQ2hlY2tl
clByb2Nlc3NMaW5lc1Rlc3QuTW9ja1N0eWxlUHJvY2Vzc29yKGVycm9yLCBmaWxlX3BhdGgsIGxp
bmVzLCB2ZXJib3NpdHkpCisgICAgICAgICAgICAjIFdlIHN0b3JlIHRoZSBkaXNwYXRjaGVkIHBy
b2Nlc3NvciBhcyBhbiBhdHRyaWJ1dGUgc28gdGhlCisgICAgICAgICAgICAjIHRlc3QgbWV0aG9k
IGhhcyBhIHdheSB0byBhY2Nlc3MgaXQgYW5kIGluc3BlY3QgaXRzIGF0dHJpYnV0ZXMKKyAgICAg
ICAgICAgICMgYWZ0ZXIgZGlzcGF0Y2hfcHJvY2Vzc29yKCkgaXMgY2FsbGVkLgorICAgICAgICAg
ICAgc2VsZi5kaXNwYXRjaGVkX3Byb2Nlc3NvciA9IHByb2Nlc3NvcgorICAgICAgICAgICAgcmV0
dXJuIHByb2Nlc3NvcgorCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgor
ICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX2xpbmVzKHNlbGYpOgorICAgICAg
ICAiIiJUZXN0IF9wcm9jZXNzX2xpbmVzKCkuIiIiCisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNz
b3JPcHRpb25zKHZlcmJvc2l0eT0zKQorICAgICAgICBkaXNwYXRjaGVyID0gc2VsZi5Nb2NrUHJv
Y2Vzc29yRGlzcGF0Y2hlcigpCisgICAgICAgIHN0eWxlX2NoZWNrZXIgPSBTdHlsZUNoZWNrZXIo
b3B0aW9ucywgZGlzcGF0Y2hlcj1kaXNwYXRjaGVyKQorCisgICAgICAgICMgQ29uZmlybSB0aGF0
IGEgcHJvY2Vzc29yIHN0YXJ0cyBvdXQgYXMgIm5vdCBjYWxsZWQiLgorICAgICAgICBwcm9jZXNz
b3IgPSBzZWxmLk1vY2tTdHlsZVByb2Nlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cHJvY2Vzc29yLndhc19wcm9jZXNzX2NhbGxlZCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUo
ZGlzcGF0Y2hlci5kaXNwYXRjaGVkX3Byb2Nlc3NvciBpcyBOb25lKQorCisgICAgICAgIHN0eWxl
X2NoZWNrZXIuX3Byb2Nlc3NfbGluZXMoIkNoYW5nZWxvZyIsIFsibGluZSJdLCBzZWxmLm1vY2tf
aGFuZGxlX3N0eWxlX2Vycm9yKQorCisgICAgICAgIHByb2Nlc3NvciA9IGRpc3BhdGNoZXIuZGlz
cGF0Y2hlZF9wcm9jZXNzb3IKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLmRp
c3BhdGNoZWRfcHJvY2Vzc29yIGlzIE5vbmUpCisgICAgICAgICMgQ2hlY2sgdGhhdCBwcm9jZXNz
KCkgd2FzIGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci53YXNfcHJv
Y2Vzc19jYWxsZWQpCisgICAgICAgICMgQ2hlY2sgdGhhdCBhbGwgb2YgdGhlIHJpZ2h0IGluZm9y
bWF0aW9uIGlzIGdldHRpbmcgcGFzc2VkIHRocm91Z2guCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHByb2Nlc3Nvci5lcnJvciwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgIkNoYW5nZWxvZyIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5saW5lcywgWyJsaW5lIl0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci52ZXJib3NpdHksIDMpCiAKIAogaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jcHBfc3R5bGUucHkKaW5kZXggMmNmOGY3ZC4uZjM1NTQ4MiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGUucHkKQEAgLTQsNiArNCw3IEBA
CiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KICMgQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEw
IENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI4MTgsNyArMjgxOSw3IEBAIGRlZiBwcm9jZXNzX2xpbmUoZmls
ZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLAogICAgIGNoZWNrX2ludmFsaWRfaW5jcmVtZW50KGZpbGVu
YW1lLCBjbGVhbl9saW5lcywgbGluZSwgZXJyb3IpCiAKIAotZGVmIHByb2Nlc3NfZmlsZV9kYXRh
KGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorZGVm
IF9wcm9jZXNzX2xpbmVzKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2
ZXJib3NpdHkpOgogICAgICIiIlBlcmZvcm1zIGxpbnQgY2hlY2tzIGFuZCByZXBvcnRzIGFueSBl
cnJvcnMgdG8gdGhlIGdpdmVuIGVycm9yIGZ1bmN0aW9uLgogCiAgICAgQXJnczoKQEAgLTI4NTcs
ODkgKzI4NTgsMzEgQEAgZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVu
c2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgogICAgIGNoZWNrX2Zvcl9uZXdfbGluZV9h
dF9lb2YoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKIAogCi1kZWYgcHJvY2Vzc19maWxlKGZpbGVu
YW1lLCBlcnJvciwgdmVyYm9zaXR5KToKLSAgICAiIiJQZXJmb3JtcyBjcHBfc3R5bGUgb24gYSBz
aW5nbGUgZmlsZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhl
IGZpbGUgdG8gcGFyc2UuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBh
bnkgZXJyb3JzIGZvdW5kLgotICAgICAgdmVyYm9zaXR5OiBBbiBpbnRlZ2VyIHRoYXQgaXMgdGhl
IHZlcmJvc2l0eSBsZXZlbCB0byB1c2Ugd2hpbGUKLSAgICAgICAgICAgICAgICAgY2hlY2tpbmcg
c3R5bGUuCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICAjIFN1cHBvcnQgdGhlIFVOSVggY29u
dmVudGlvbiBvZiB1c2luZyAiLSIgZm9yIHN0ZGluLiAgTm90ZSB0aGF0Ci0gICAgICAgICMgd2Ug
YXJlIG5vdCBvcGVuaW5nIHRoZSBmaWxlIHdpdGggdW5pdmVyc2FsIG5ld2xpbmUgc3VwcG9ydAot
ICAgICAgICAjICh3aGljaCBjb2RlY3MgZG9lc24ndCBzdXBwb3J0IGFueXdheSksIHNvIHRoZSBy
ZXN1bHRpbmcgbGluZXMgZG8KLSAgICAgICAgIyBjb250YWluIHRyYWlsaW5nICdccicgY2hhcmFj
dGVycyBpZiB3ZSBhcmUgcmVhZGluZyBhIGZpbGUgdGhhdAotICAgICAgICAjIGhhcyBDUkxGIGVu
ZGluZ3MuCi0gICAgICAgICMgSWYgYWZ0ZXIgdGhlIHNwbGl0IGEgdHJhaWxpbmcgJ1xyJyBpcyBw
cmVzZW50LCBpdCBpcyByZW1vdmVkCi0gICAgICAgICMgYmVsb3cuIElmIGl0IGlzIG5vdCBleHBl
Y3RlZCB0byBiZSBwcmVzZW50IChpLmUuIG9zLmxpbmVzZXAgIT0KLSAgICAgICAgIyAnXHJcbicg
YXMgaW4gV2luZG93cyksIGEgd2FybmluZyBpcyBpc3N1ZWQgYmVsb3cgaWYgdGhpcyBmaWxlCi0g
ICAgICAgICMgaXMgcHJvY2Vzc2VkLgotCi0gICAgICAgIGlmIGZpbGVuYW1lID09ICctJzoKLSAg
ICAgICAgICAgIGxpbmVzID0gY29kZWNzLlN0cmVhbVJlYWRlcldyaXRlcihzeXMuc3RkaW4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHJl
YWRlcigndXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvZGVjcy5nZXR3cml0ZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgbGluZXMgPSBjb2RlY3Mub3BlbihmaWxlbmFtZSwgJ3InLCAn
dXRmOCcsICdyZXBsYWNlJykucmVhZCgpLnNwbGl0KCdcbicpCi0KLSAgICAgICAgY2FycmlhZ2Vf
cmV0dXJuX2ZvdW5kID0gRmFsc2UKLSAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ1xyJy4KLSAg
ICAgICAgZm9yIGxpbmVfbnVtYmVyIGluIHJhbmdlKGxlbihsaW5lcykpOgotICAgICAgICAgICAg
aWYgbGluZXNbbGluZV9udW1iZXJdLmVuZHN3aXRoKCdccicpOgotICAgICAgICAgICAgICAgIGxp
bmVzW2xpbmVfbnVtYmVyXSA9IGxpbmVzW2xpbmVfbnVtYmVyXS5yc3RyaXAoJ1xyJykKLSAgICAg
ICAgICAgICAgICBjYXJyaWFnZV9yZXR1cm5fZm91bmQgPSBUcnVlCi0KLSAgICBleGNlcHQgSU9F
cnJvcjoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKLSAgICAgICAgICAgICJTa2lwcGluZyBp
bnB1dCAnJXMnOiBDYW4ndCBvcGVuIGZvciByZWFkaW5nXG4iICUgZmlsZW5hbWUpCi0gICAgICAg
IHJldHVybgotCi0gICAgIyBOb3RlLCBpZiBubyBkb3QgaXMgZm91bmQsIHRoaXMgd2lsbCBnaXZl
IHRoZSBlbnRpcmUgZmlsZW5hbWUgYXMgdGhlIGV4dC4KLSAgICBmaWxlX2V4dGVuc2lvbiA9IGZp
bGVuYW1lW2ZpbGVuYW1lLnJmaW5kKCcuJykgKyAxOl0KK2NsYXNzIENwcFByb2Nlc3NvcihvYmpl
Y3QpOgogCi0gICAgIyBXaGVuIHJlYWRpbmcgZnJvbSBzdGRpbiwgdGhlIGV4dGVuc2lvbiBpcyB1
bmtub3duLCBzbyBubyBjcHBfc3R5bGUgdGVzdHMKLSAgICAjIHNob3VsZCByZWx5IG9uIHRoZSBl
eHRlbnNpb24uCi0gICAgaWYgKGZpbGVuYW1lICE9ICctJyBhbmQgbm90IGNhbl9oYW5kbGUoZmls
ZW5hbWUpKToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSWdub3JpbmcgJXM7IG5vdCBhIC5j
cHAsIC5jIG9yIC5oIGZpbGVcbicgJSBmaWxlbmFtZSkKLSAgICBlbGlmIGlzX2V4ZW1wdChmaWxl
bmFtZSk6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0lnbm9yaW5nICVzOyBUaGlzIGZpbGUg
aXMgZXhlbXB0IGZyb20gdGhlIHN0eWxlIGd1aWRlLlxuJyAlIGZpbGVuYW1lKQotICAgIGVsc2U6
Ci0gICAgICAgIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGlu
ZXMsIGVycm9yLCB2ZXJib3NpdHkpCi0gICAgICAgIGlmIGNhcnJpYWdlX3JldHVybl9mb3VuZCBh
bmQgb3MubGluZXNlcCAhPSAnXHJcbic6Ci0gICAgICAgICAgICAjIFVzZSAwIGZvciBsaW5lX251
bWJlciBzaW5jZSBvdXRwdXRpbmcgb25seSBvbmUgZXJyb3IgZm9yIHBvdGVudGlhbGx5Ci0gICAg
ICAgICAgICAjIHNldmVyYWwgbGluZXMuCi0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgMCwg
J3doaXRlc3BhY2UvbmV3bGluZScsIDEsCi0gICAgICAgICAgICAgICAgICAnT25lIG9yIG1vcmUg
dW5leHBlY3RlZCBcXHIgKF5NKSBmb3VuZDsnCi0gICAgICAgICAgICAgICAgICAnYmV0dGVyIHRv
IHVzZSBvbmx5IGEgXFxuJykKKyAgICAiIiJQcm9jZXNzZXMgQysrIGxpbmVzIGZvciBjaGVja2lu
ZyBzdHlsZS4iIiIKIAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGZpbGVfZXh0
ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHZlcmJvc2l0eSk6CisgICAgICAgICIiIkNyZWF0ZSBhIENw
cFByb2Nlc3NvciBpbnN0YW5jZS4KIAotZGVmIGNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICIi
IkNoZWNrcyBpZiB0aGlzIG1vZHVsZSBzdXBwb3J0cyBmb3IgdGhlIHNwZWNpZmllZCBmaWxlIHR5
cGUuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmlsZV9leHRlbnNpb246IEEgc3RyaW5nIHRo
YXQgaXMgdGhlIGZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0CisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoZSBsZWFkaW5nIGRvdC4KIAotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogQSBmaWxl
bmFtZS4gSXQgbWF5IGNvbnRhaW4gZGlyZWN0b3J5IG5hbWVzLgotICAgICAiIiIKLSAgICByZXR1
cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0gaW4gKCcuaCcsICcuY3BwJywgJy5jJykK
KyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZXJyb3IgPSBlcnJvcgorICAgICAgICBzZWxmLmZp
bGVfZXh0ZW5zaW9uID0gZmlsZV9leHRlbnNpb24KKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBm
aWxlX3BhdGgKKyAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzCisgICAgICAgIHNlbGYudmVyYm9z
aXR5ID0gdmVyYm9zaXR5CiAKKyAgICBkZWYgcHJvY2VzcyhzZWxmKToKKyAgICAgICAgX3Byb2Nl
c3NfbGluZXMoc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9leHRlbnNpb24sIHNlbGYubGluZXMs
CisgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IsIHNlbGYudmVyYm9zaXR5KQogCi1k
ZWYgaXNfZXhlbXB0KGZpbGVuYW1lKToKLSAgICAiIiJDaGVja3MgaWYgdGhlIGdpdmVuIGZpbGUg
aXMgZXhlbXB0IGZyb20gdGhlIHN0eWxlIGd1aWRlLiAgRm9yIGV4YW1wbGUsCi0gICAgc29tZSBm
aWxlcyBhcmUgcHVycG9zZWZ1bGx5IG1hbnRhaW5lZCBpbiBNb3ppbGxhIHN0eWxlIHRvIGVhc2Ug
ZnV0dXJlCi0gICAgbWVyZ2VzLgogCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBBIGZpbGVu
YW1lLiBJdCBtYXkgY29udGFpbiBkaXJlY3RvcnkgbmFtZXMuCi0gICAgICIiIgotICAgIGlmIChm
aWxlbmFtZS5maW5kKCdXZWJLaXQvcXQvQXBpLycpID49IDAKLSAgICAgICAgb3IgZmlsZW5hbWUu
ZmluZCgnV2ViS2l0L3F0L3Rlc3RzLycpID49IDApOgotICAgICAgICAjIFRoZSBRdCBBUEkgYW5k
IHRlc3RzIGRvIG5vdCBmb2xsb3cgV2ViS2l0IHN0eWxlLgotICAgICAgICAjIFRoZXkgZm9sbG93
IFF0IHN0eWxlLiA6KQotICAgICAgICByZXR1cm4gVHJ1ZQorIyBGSVhNRTogUmVtb3ZlIHRoaXMg
ZnVuY3Rpb24gKHJlcXVpcmVzIHJlZmFjdG9yaW5nIHVuaXQgdGVzdHMpLgorZGVmIHByb2Nlc3Nf
ZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3Np
dHkpOgorICAgIHByb2Nlc3NvciA9IENwcFByb2Nlc3NvcihmaWxlbmFtZSwgZmlsZV9leHRlbnNp
b24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KQorICAgIHByb2Nlc3Nvci5wcm9jZXNzKCkKIAot
ICAgIHJldHVybiBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSBpbiAoCi0gICAgICAgICdndGsy
ZHJhd2luZy5jJywKLSAgICAgICAgJ2d0azJkcmF3aW5nLmgnLAotICAgICkKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3Qu
cHkKaW5kZXggN2UxNjVhNi4uMzAzYWVkOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHkKQEAgLTQsNiArNCw3
IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KICMgQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTQxLDYgKzQyLDggQEAgaW1wb3J0IHJhbmRvbQogaW1wb3J0
IHJlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjcHBfc3R5bGUKK2Zyb20gY3BwX3N0eWxlIGlt
cG9ydCBDcHBQcm9jZXNzb3IKKwogIyBGSVhNRTogUmVtb3ZlIHRoZSBuZWVkIHRvIGltcG9ydCBh
bnl0aGluZyBmcm9tIGNoZWNrZXIuIFNlZSB0aGUKICMgICAgICAgIEZJWE1FIG5vdGVzIG5lYXIg
dGhlIFNUWUxFX0NBVEVHT1JJRVMgZGVmaW5pdGlvbiBmb3IgYQogIyAgICAgICAgc3VnZ2VzdGlv
biBvbiBob3cgdG8gYmVzdCBkbyB0aGlzLgpAQCAtMzU5OCwzMyArMzYwMSwyMiBAQCBjbGFzcyBX
ZWJLaXRTdHlsZVRlc3QoQ3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgIHBhc3MKIAogCi0gICAg
ZGVmIHRlc3RfY2FuX2hhbmRsZShzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgZm9yIGNwcF9zdHls
ZS5jYW5faGFuZGxlKCkuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNh
bl9oYW5kbGUoJycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmNhbl9oYW5kbGUo
J2Zvby5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUo
J2Zvby5ocHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5jYW5faGFuZGxlKCdm
b28uYycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5j
cHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuY2FuX2hhbmRsZSgnZm9v
LmNjJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zv
by5jeHgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuY2FuX2hhbmRsZSgn
Zm9vLkMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuY2FuX2hhbmRsZSgn
Zm9vLm1tJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUo
Jy0nKSkKLQotICAgIGRlZiB0ZXN0X2lzX2V4ZW1wdChzZWxmKToKLSAgICAgICAgIiIiVGVzdHMg
Zm9yIGNwcF9zdHlsZS5pc19leGVtcHQoKS4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBj
cHBfc3R5bGUuaXNfZXhlbXB0KCcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5
bGUuaXNfZXhlbXB0KCdmb28uaCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHls
ZS5pc19leGVtcHQoJ2Zvby5ocHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5
bGUuaXNfZXhlbXB0KCdmb28uYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHls
ZS5pc19leGVtcHQoJ2Zvby5jcHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5
bGUuaXNfZXhlbXB0KCctJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhl
bXB0KCdndGsyZHJhd2luZy5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNf
ZXhlbXB0KCdXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5oJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdndGsyZHJhd2luZy5jJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdXZWJDb3JlL3BsYXRmb3JtL2d0ay9n
dGsyZHJhd2luZy5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0
KCdXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9z
dHlsZS5pc19leGVtcHQoJ1dlYktpdC9xdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vdHN0X3F3
ZWJzZWN1cml0eW9yaWdpbi5jcHAnKSkKK2NsYXNzIENwcFByb2Nlc3NvclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgQ3BwUHJvY2Vzc29yIGNsYXNzLiIiIgorCisgICAg
ZGVmIG1vY2tfZXJyb3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXQo
c2VsZik6CisgICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3IuIiIiCisgICAgICAg
IHByb2Nlc3NvciA9IENwcFByb2Nlc3NvcigiZmlsZSIsICIuaCIsIFsibGluZSJdLCBzZWxmLm1v
Y2tfZXJyb3IsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvciwg
c2VsZi5tb2NrX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmls
ZV9leHRlbnNpb24sICIuaCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5m
aWxlX3BhdGgsICJmaWxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmxp
bmVzLCBbImxpbmUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLnZlcmJv
c2l0eSwgMykKKwogCiBkZWYgdGVhckRvd24oKToKICAgICAiIiJBIGdsb2JhbCBjaGVjayB0byBt
YWtlIHN1cmUgYWxsIGVycm9yLWNhdGVnb3JpZXMgaGF2ZSBiZWVuIHRlc3RlZC4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQppbmRleCAzODVi
YmFhLi44ZTc0NDkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL3RleHRfc3R5bGUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS90ZXh0X3N0eWxlLnB5CkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlz
IEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTI2LDUzICsyNywzMCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotIiIiRG9lcyBXZWJLaXQtbGludCBvbiB0ZXh0IGZpbGVzLgorIiIiQ2hlY2tzIFdlYktp
dCBzdHlsZSBmb3IgdGV4dCBmaWxlcy4iIiIKIAotVGhpcyBtb2R1bGUgc2hhcmVzIGVycm9yIGNv
dW50LCBmaWx0ZXIgc2V0dGluZywgb3V0cHV0IHNldHRpbmcsIGV0Yy4gd2l0aCBjcHBfc3R5bGUu
Ci0iIiIKIAotaW1wb3J0IGNvZGVjcwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzeXMKK2NsYXNz
IFRleHRQcm9jZXNzb3Iob2JqZWN0KToKIAotaW1wb3J0IGNwcF9zdHlsZQorICAgICIiIlByb2Nl
c3NlcyB0ZXh0IGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4iIiIKIAorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaWxlX3BhdGgsIGxpbmVzLCBlcnJvcik6CisgICAgICAgIHNlbGYuZmlsZV9wYXRo
ID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYubGluZXMgPSBsaW5lcworICAgICAgICBzZWxmLmVy
cm9yID0gZXJyb3IKIAotZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBsaW5lcywgZXJy
b3IpOgotICAgICIiIlBlcmZvcm1zIGxpbnQgY2hlY2sgZm9yIHRleHQgb24gdGhlIHNwZWNpZmll
ZCBsaW5lcy4KLQotICAgIEl0IHJlcG9ydHMgZXJyb3JzIHRvIHRoZSBnaXZlbiBlcnJvciBmdW5j
dGlvbi4KLSAgICAiIiIKLSAgICBsaW5lcyA9IChbJy8vIGFkanVzdCBsaW5lIG51bWJlcnMgdG8g
bWFrZSB0aGUgZmlyc3QgbGluZSAxLiddICsgbGluZXMpCi0KLSAgICAjIEZJWE1FOiBzaGFyZSB3
aXRoIGNwcF9zdHlsZS5jaGVja19zdHlsZSgpCi0gICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGlu
IGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgIGlmICdcdCcgaW4gbGluZToKLSAgICAgICAgICAg
IGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvdGFiJywgNSwgJ0xpbmUg
Y29udGFpbnMgdGFiIGNoYXJhY3Rlci4nKQorICAgIGRlZiBwcm9jZXNzKHNlbGYpOgorICAgICAg
ICBsaW5lcyA9IHNlbGYubGluZXMKKyAgICAgICAgbGluZXMgPSAoWycvLyBhZGp1c3QgbGluZSBu
dW1iZXJzIHRvIG1ha2UgdGhlIGZpcnN0IGxpbmUgMS4nXSArIGxpbmVzKQogCisgICAgICAgICMg
RklYTUU6IHNoYXJlIHdpdGggY3BwX3N0eWxlLgorICAgICAgICBmb3IgbGluZV9udW1iZXIsIGxp
bmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgIGlmICdcdCcgaW4gbGluZToKKyAg
ICAgICAgICAgICAgICBzZWxmLmVycm9yKHNlbGYuZmlsZV9wYXRoLCBsaW5lX251bWJlciwgJ3do
aXRlc3BhY2UvdGFiJywgNSwgJ0xpbmUgY29udGFpbnMgdGFiIGNoYXJhY3Rlci4nKQogCi1kZWYg
cHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcik6Ci0gICAgIiIiUGVyZm9ybXMgbGludCBjaGVj
ayBmb3IgdGV4dCBvbiBhIHNpbmdsZSBmaWxlLiIiIgotICAgIGlmIChub3QgY2FuX2hhbmRsZShm
aWxlbmFtZSkpOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJZ25vcmluZyAlczsgbm90IGEg
c3VwcG9ydGVkIGZpbGVcbicgJSBmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuCiAKLSAgICAjIEZJ
WE1FOiBzaGFyZSBjb2RlIHdpdGggY3BwX3N0eWxlLnByb2Nlc3NfZmlsZSgpLgotICAgIHRyeToK
LSAgICAgICAgIyBEbyBub3Qgc3VwcG9ydCBmb3IgZmlsZW5hbWU9Jy0nLiBjcHBfc3R5bGUgaGFu
ZGxlcyBpdC4KLSAgICAgICAgbGluZXMgPSBjb2RlY3Mub3BlbihmaWxlbmFtZSwgJ3InLCAndXRm
OCcsICdyZXBsYWNlJykucmVhZCgpLnNwbGl0KCdcbicpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0g
ICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4g
Zm9yIHJlYWRpbmdcbiIgJSBmaWxlbmFtZSkKLSAgICAgICAgcmV0dXJuCi0gICAgcHJvY2Vzc19m
aWxlX2RhdGEoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKLQotCi1kZWYgY2FuX2hhbmRsZShmaWxl
bmFtZSk6Ci0gICAgIiIiQ2hlY2tzIGlmIHRoaXMgbW9kdWxlIHN1cHBvcnRzIHRoZSBzcGVjaWZp
ZWQgZmlsZSB0eXBlLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gKHJlcXVpcmVzIHJl
ZmFjdG9yaW5nIHVuaXQgdGVzdHMpLgorZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBs
aW5lcywgZXJyb3IpOgorICAgIHByb2Nlc3NvciA9IFRleHRQcm9jZXNzb3IoZmlsZW5hbWUsIGxp
bmVzLCBlcnJvcikKKyAgICBwcm9jZXNzb3IucHJvY2VzcygpCiAKLSAgICBBcmdzOgotICAgICAg
ZmlsZW5hbWU6IEEgZmlsZW5hbWUuIEl0IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAg
ICAiIiIKLSAgICByZXR1cm4gKCJDaGFuZ2VMb2ciIGluIGZpbGVuYW1lCi0gICAgICAgICAgICBv
ciAiV2ViS2l0VG9vbHMvU2NyaXB0cy8iIGluIGZpbGVuYW1lCi0gICAgICAgICAgICBvciBvcy5w
YXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXSBpbiAoJy5jc3MnLCAnLmh0bWwnLCAnLmlkbCcsICcu
anMnLCAnLm1tJywgJy5waHAnLCAnLnBtJywgJy5weScsICcudHh0JykpIGFuZCBub3QgIkxheW91
dFRlc3RzLyIgaW4gZmlsZW5hbWUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weQppbmRleCBkOTExNWYwLi40MzM0
MDFkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRf
c3R5bGVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5CkBAIC0zMiw3ICszMiw3IEBACiBpbXBvcnQgdW5pdHRl
c3QKIAogaW1wb3J0IHRleHRfc3R5bGUKLQorZnJvbSB0ZXh0X3N0eWxlIGltcG9ydCBUZXh0UHJv
Y2Vzc29yCiAKIGNsYXNzIFRleHRTdHlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAiIiJUZXN0Q2FzZSBmb3IgdGV4dF9zdHlsZS5weSIiIgpAQCAtNzYsMzYgKzc2LDE5IEBAIGNs
YXNzIFRleHRTdHlsZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1x0UmV2aWV3ZWQgYnkgTk9CT0RZLiddLCAzKQogCiAKLSAgICBkZWYgdGVz
dF9jYW5faGFuZGxlKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyBmb3IgdGV4dF9zdHlsZS5jYW5f
aGFuZGxlKCkuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFu
ZGxlKCcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUo
Jy0nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnQ2hhbmdl
TG9nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYkNv
cmUvQ2hhbmdlTG9nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5k
bGUoJ0Zvb0NoYW5nZUxvZy5iYWsnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUu
Y2FuX2hhbmRsZSgnV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQ9c3R5bGUnKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL3RleHRfc3R5bGUucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0
ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYktpdFRvb2xzL1NjcmlwdHMnKSkKLQotICAgICAgICBz
ZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28uY3NzJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5odG1sJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5pZGwnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmpzJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hh
bmRsZSgnZm9vLm1tJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5k
bGUoJ2Zvby5waHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRs
ZSgnZm9vLnBtJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUo
J2Zvby5weScpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdm
b28udHh0JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxl
KCdmb28uYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRs
ZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0X3N0eWxlLmNhbl9oYW5k
bGUoJ2Zvby5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFu
ZGxlKCdmb28ucG5nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5f
aGFuZGxlKCdmb28uYy9iYXIucG5nJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9z
dHlsZS5jYW5faGFuZGxlKCdXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdNYWtl
ZmlsZScpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgn
V2ViQ29yZS9BbmRyb2lkLm1rJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHls
ZS5jYW5faGFuZGxlKCdMYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS10ZXN0cy5qcycpKQor
Y2xhc3MgVGV4dFByb2Nlc3NvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVz
dHMgVGV4dFByb2Nlc3NvciBjbGFzcy4iIiIKKworICAgIGRlZiBtb2NrX2Vycm9yKHNlbGYpOgor
ICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAiIiJUZXN0
IF9faW5pdF9fIGNvbnN0cnVjdG9yLiIiIgorICAgICAgICBwcm9jZXNzb3IgPSBUZXh0UHJvY2Vz
c29yKCJmaWxlIiwgWyJsaW5lIl0sIHNlbGYubW9ja19lcnJvcikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMocHJvY2Vzc29yLmVycm9yLCBzZWxmLm1vY2tfZXJyb3IpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX3BhdGgsICJmaWxlIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocHJvY2Vzc29yLmxpbmVzLCBbImxpbmUiXSkKIAogCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47102</attachid>
            <date>2010-01-21 01:11:53 -0800</date>
            <delta_ts>2010-01-21 12:42:59 -0800</delta_ts>
            <desc>Proposed patch 5</desc>
            <filename>_patch-33775-5.txt</filename>
            <type>text/plain</type>
            <size>48312</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4NGMyNjRjLi5kMWIzMGY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTAtMDEt
MTkgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JlZCB0byBtb3ZlIGZp
bGUgbmFtZSBhbmQgZmlsZS1yZWFkaW5nIHJlbGF0ZWQgY29kZQorICAgICAgICBmcm9tIGNwcF9z
dHlsZS5weSBhbmQgdGV4dF9zdHlsZS5weSB0byBjaGVja2VyLnB5LgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc3NQorCisgICAgICAgICogU2Ny
aXB0cy9jaGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBVcGRhdGVzIGNhdXNlZCBieSBj
aGFuZ2VzIHRvIGNoZWNrZXIucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBTS0lQUEVEX0ZJTEVTX1dJVEhfV0FSTklO
RyBsaXN0LgorICAgICAgICAgIC0gQWRkZWQgU0tJUFBFRF9GSUxFU19XSVRIT1VUX1dBUk5JTkcg
bGlzdC4KKyAgICAgICAgICAtIEFkZGVkIEZpbGVUeXBlIGNsYXNzLgorICAgICAgICAgIC0gQWRk
ZWQgUHJvY2Vzc29yRGlzcGF0Y2hlciBjbGFzcy4KKyAgICAgICAgICAtIEluIFN0eWxlQ2hlY2tl
ciBjbGFzczoKKyAgICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX3BhdGNoKCkgdG8gY2hlY2tf
cGF0Y2goKS4KKyAgICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX2ZpbGUoKSB0byBjaGVja19m
aWxlKCkuCisgICAgICAgICAgICAtIEFkZGVkIF9wcm9jZXNzX2ZpbGUoKS4KKyAgICAgICAgICAg
IC0gUmVsYXRlZCByZWZhY3RvcmluZy4KKyAgICAgICAgICAgIC0gQWRkcmVzc2VkIGNoZWNrX3Bh
dGNoKCkgRklYTUUgdG8gc2hhcmUgY29kZSB3aXRoIHByb2Nlc3NfZmlsZSgpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAg
IC0gQWRkZWQgUHJvY2Vzc29yRGlzcGF0Y2hlclNraXBUZXN0IGNsYXNzLgorICAgICAgICAgIC0g
QWRkZWQgUHJvY2Vzc29yRGlzcGF0Y2hlckRpc3BhdGNoVGVzdCBjbGFzcy4KKyAgICAgICAgICAt
IEFkZGVkIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QgY2xhc3MuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weToKKyAgICAgICAgICAtIFJlbmFtZWQgcHJv
Y2Vzc19maWxlX2RhdGEoKSB0byBfcHJvY2Vzc19saW5lcy4KKyAgICAgICAgICAtIFJlbW92ZWQg
cHJvY2Vzc19maWxlKCkgKG1vdmVkIGxvZ2ljIHRvIGNoZWNrZXIucHkpLgorICAgICAgICAgIC0g
UmVtb3ZlZCBjYW5faGFuZGxlKCkgKG1vdmVkIGxvZ2ljIHRvIGNoZWNrZXIucHkpLgorICAgICAg
ICAgIC0gQWRkZWQgQ3BwUHJvY2Vzc29yIGNsYXNzLgorICAgICAgICAgIC0gUmVtb3ZlZCBpc19l
eGVtcHQoKSAobW92ZWQgbG9naWMgdG8gY2hlY2tlci5weSkuCisgICAgICAgICAgLSBBZGRlZCBw
cm9jZXNzX2ZpbGVfZGF0YSgpIGJhY2sgYXMgYSB3cmFwcGVyIGZ1bmN0aW9uLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHk6CisgICAgICAg
ICAgLSBSZW1vdmVkIHRlc3RfY2FuX2hhbmRsZSgpLgorICAgICAgICAgIC0gUmVtb3ZlZCB0ZXN0
X2lzX2V4ZW1wdCgpLgorICAgICAgICAgIC0gQWRkZWQgQ3BwUHJvY2Vzc29yVGVzdCBjbGFzcy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weToKKyAgICAg
ICAgICAtIEFkZGVkIFRleHRQcm9jZXNzb3IgY2xhc3MuCisgICAgICAgICAgLSBSZW1vdmVkIHBy
b2Nlc3NfZmlsZSgpLgorICAgICAgICAgIC0gUmVtb3ZlZCBjYW5faGFuZGxlKCkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHk6CisgICAg
ICAgICAgLSBSZW1vdmVkIHRlc3RfY2FuX2hhbmRsZSgpLgorICAgICAgICAgIC0gQWRkZWQgVGV4
dFByb2Nlc3NvclRlc3QgY2xhc3MuCisKIDIwMTAtMDEtMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgcjUzNTkzLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQppbmRleCAxNDc1ZTZhLi5hMmI1ODRmIDEw
MDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQpAQCAtNjgsNyArNjgsNyBAQCBk
ZWYgbWFpbigpOgogCiAgICAgaWYgZmlsZXM6CiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxl
czoKLSAgICAgICAgICAgIHN0eWxlX2NoZWNrZXIucHJvY2Vzc19maWxlKGZpbGVuYW1lKQorICAg
ICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVja19maWxlKGZpbGVuYW1lKQogCiAgICAgZWxzZToK
ICAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRoKCcuJykKQEAgLTg0LDcgKzg0LDcgQEAgZGVm
IG1haW4oKToKICAgICAgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2Nh
bF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGF0Y2ggPSBzY20u
Y3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc3R5bGVfY2hlY2tlci5wcm9jZXNzX3BhdGNoKHBhdGNo
KQorICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX3BhdGNoKHBhdGNoKQogCiAgICAgc3lzLnN0
ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZFxuJyAlIHN0eWxlX2NoZWNrZXIuZXJy
b3JfY291bnQpCiAgICAgc3lzLmV4aXQoc3R5bGVfY2hlY2tlci5lcnJvcl9jb3VudCA+IDApCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggYzNm
NGRiMC4uMzk0ZjFiYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQpAQCAtMjksMTUgKzI5LDE0IEBACiAKICIiIkZyb250IGVuZCBvZiBzb21lIHN0
eWxlLWNoZWNrZXIgbW9kdWxlcy4iIiIKIAotIyBGSVhNRTogTW92ZSBtb3JlIGNvZGUgZnJvbSBj
cHBfc3R5bGUgdG8gaGVyZS4KLQoraW1wb3J0IGNvZGVjcwogaW1wb3J0IGdldG9wdAogaW1wb3J0
IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotaW1wb3J0IGNwcF9zdHlsZQotaW1wb3J0IHRleHRfc3R5
bGUKIGZyb20gZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gY3BwX3N0eWxlIGlt
cG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9zdHlsZSBpbXBvcnQgVGV4dFByb2Nlc3Nvcgog
CiAKICMgVGhlc2UgZGVmYXVsdHMgYXJlIHVzZWQgYnkgY2hlY2std2Via2l0LXN0eWxlLgpAQCAt
MTU4LDYgKzE1NywyNyBAQCBTVFlMRV9DQVRFR09SSUVTID0gWwogICAgIF0KIAogCisjIFNvbWUg
ZmlsZXMgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBjaGVja2luZyBzdHlsZS4gRm9yIGV4YW1wbGUs
CisjIFdlYktpdCBtYWludGFpbnMgc29tZSBmaWxlcyBpbiBNb3ppbGxhIHN0eWxlIG9uIHB1cnBv
c2UgdG8gZWFzZQorIyBmdXR1cmUgbWVyZ2VzLgorU0tJUFBFRF9GSUxFU19XSVRIT1VUX1dBUk5J
TkcgPSBbCisgICAgIkxheW91dFRlc3RzLyIKKyAgICBdCisKKworIyBJbmNsdWRlIGEgd2Fybmlu
ZyBmb3Igc2tpcHBlZCBmaWxlcyB0aGF0IGFyZSBsZXNzIG9idmlvdXMuCitTS0lQUEVEX0ZJTEVT
X1dJVEhfV0FSTklORyA9IFsKKyAgICAjIFRoZSBRdCBBUEkgYW5kIHRlc3RzIGRvIG5vdCBmb2xs
b3cgV2ViS2l0IHN0eWxlLgorICAgICMgVGhleSBmb2xsb3cgUXQgc3R5bGUuIDopCisgICAgImd0
azJkcmF3aW5nLmMiLCAjIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKKyAgICAi
Z3RrMmRyYXdpbmcuaCIsICMgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuaAorICAg
ICJKYXZhU2NyaXB0Q29yZS9xdC9hcGkvIiwKKyAgICAiV2ViS2l0L2d0ay90ZXN0cy8iLAorICAg
ICJXZWJLaXQvcXQvQXBpLyIsCisgICAgIldlYktpdC9xdC90ZXN0cy8iLAorICAgIF0KKworCiBk
ZWYgd2Via2l0X2FyZ3VtZW50X2RlZmF1bHRzKCk6CiAgICAgIiIiUmV0dXJuIHRoZSBEZWZhdWx0
QXJndW1lbnRzIGluc3RhbmNlIGZvciB1c2UgYnkgY2hlY2std2Via2l0LXN0eWxlLiIiIgogICAg
IHJldHVybiBBcmd1bWVudERlZmF1bHRzKFdFQktJVF9ERUZBVUxUX09VVFBVVF9GT1JNQVQsCkBA
IC02MTksNiArNjM5LDEwNCBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogICAgICAg
ICByZXR1cm4gKGZpbGVuYW1lcywgb3B0aW9ucykKIAogCisjIEVudW0tbGlrZSBpZGlvbQorY2xh
c3MgRmlsZVR5cGU6CisKKyAgICBOT05FID0gMQorICAgICMgQWxwaGFiZXRpemUgcmVtYWluaW5n
IHR5cGVzCisgICAgQ1BQID0gMgorICAgIFRFWFQgPSAzCisKKworY2xhc3MgUHJvY2Vzc29yRGlz
cGF0Y2hlcihvYmplY3QpOgorCisgICAgIiIiU3VwcG9ydHMgZGV0ZXJtaW5pbmcgd2hldGhlciBh
bmQgaG93IHRvIGNoZWNrIHN0eWxlLCBiYXNlZCBvbiBwYXRoLiIiIgorCisgICAgY3BwX2ZpbGVf
ZXh0ZW5zaW9ucyA9ICgKKyAgICAgICAgJ2MnLAorICAgICAgICAnY3BwJywKKyAgICAgICAgJ2gn
LAorICAgICAgICApCisKKyAgICB0ZXh0X2ZpbGVfZXh0ZW5zaW9ucyA9ICgKKyAgICAgICAgJ2Nz
cycsCisgICAgICAgICdodG1sJywKKyAgICAgICAgJ2lkbCcsCisgICAgICAgICdqcycsCisgICAg
ICAgICdtbScsCisgICAgICAgICdwaHAnLAorICAgICAgICAncG0nLAorICAgICAgICAncHknLAor
ICAgICAgICAndHh0JywKKyAgICAgICAgKQorCisgICAgZGVmIF9maWxlX2V4dGVuc2lvbihzZWxm
LCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgZXh0ZW5zaW9uIHdpdGhv
dXQgdGhlIGxlYWRpbmcgZG90LiIiIgorICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChm
aWxlX3BhdGgpWzFdLmxzdHJpcCgiLiIpCisKKyAgICBkZWYgc2hvdWxkX3NraXBfd2l0aF93YXJu
aW5nKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBnaXZl
biBmaWxlIHNob3VsZCBiZSBza2lwcGVkIHdpdGggYSB3YXJuaW5nLiIiIgorICAgICAgICBmb3Ig
c2tpcHBlZF9maWxlIGluIFNLSVBQRURfRklMRVNfV0lUSF9XQVJOSU5HOgorICAgICAgICAgICAg
aWYgZmlsZV9wYXRoLmZpbmQoc2tpcHBlZF9maWxlKSA+PSAwOgorICAgICAgICAgICAgICAgIHJl
dHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHNob3VsZF9za2lwX3dp
dGhvdXRfd2FybmluZyhzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhl
ciB0aGUgZ2l2ZW4gZmlsZSBzaG91bGQgYmUgc2tpcHBlZCB3aXRoIGEgd2FybmluZy4iIiIKKyAg
ICAgICAgZm9yIHNraXBwZWRfZmlsZSBpbiBTS0lQUEVEX0ZJTEVTX1dJVEhPVVRfV0FSTklORzoK
KyAgICAgICAgICAgIGlmIGZpbGVfcGF0aC5maW5kKHNraXBwZWRfZmlsZSkgPj0gMDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBf
ZmlsZV90eXBlKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgRmlsZVR5
cGUgZm9yIHRoZSBnaXZlIGZpbGUgcGF0aCBhbmQgZXh0ZW5zaW9uLiIiIgorICAgICAgICBmaWxl
X2V4dGVuc2lvbiA9IHNlbGYuX2ZpbGVfZXh0ZW5zaW9uKGZpbGVfcGF0aCkKKworICAgICAgICBp
ZiAoZmlsZV9leHRlbnNpb24gaW4gc2VsZi5jcHBfZmlsZV9leHRlbnNpb25zKSBvciAoZmlsZV9w
YXRoID09ICctJyk6CisgICAgICAgICAgICAjIEZJWE1FOiBEbyBzb21ldGhpbmcgYWJvdXQgdGhl
IGNvbW1lbnQgYmVsb3cgYW5kIHRoZSBpc3N1ZSBpdAorICAgICAgICAgICAgIyAgICAgICAgcmFp
c2VzIHNpbmNlIGNwcF9zdHlsZSBhbHJlYWR5IHJlbGllcyBvbiB0aGUgZXh0ZW5zaW9uLgorICAg
ICAgICAgICAgIworICAgICAgICAgICAgIyBUcmVhdCBzdGRpbiBhcyBDKysuIFNpbmNlIHRoZSBl
eHRlbnNpb24gaXMgdW5rbm93biB3aGVuCisgICAgICAgICAgICAjIHJlYWRpbmcgZnJvbSBzdGRp
biwgY3BwX3N0eWxlIHRlc3RzIHNob3VsZCBub3QgcmVseSBvbgorICAgICAgICAgICAgIyB0aGUg
ZXh0ZW5zaW9uLgorICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkNQUAorICAgICAgICBlbGlm
ICgiQ2hhbmdlTG9nIiBpbiBmaWxlX3BhdGgKKyAgICAgICAgICAgICAgb3IgIldlYktpdFRvb2xz
L1NjcmlwdHMvIiBpbiBmaWxlX3BhdGgKKyAgICAgICAgICAgICAgb3IgZmlsZV9leHRlbnNpb24g
aW4gc2VsZi50ZXh0X2ZpbGVfZXh0ZW5zaW9ucyk6CisgICAgICAgICAgICByZXR1cm4gRmlsZVR5
cGUuVEVYVAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLk5PTkUK
KworICAgIGRlZiBfY3JlYXRlX3Byb2Nlc3NvcihzZWxmLCBmaWxlX3R5cGUsIGZpbGVfcGF0aCwg
aGFuZGxlX3N0eWxlX2Vycm9yLCB2ZXJib3NpdHkpOgorICAgICAgICAiIiJJbnN0YW50aWF0ZSBh
IHN0eWxlIHByb2Nlc3NvciBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIEZpbGVUeXBlLiIiIgorICAg
ICAgICBpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUuTk9ORToKKyAgICAgICAgICAgIHByb2Nlc3Nv
ciA9IE5vbmUKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUuQ1BQOgorICAgICAg
ICAgICAgZmlsZV9leHRlbnNpb24gPSBzZWxmLl9maWxlX2V4dGVuc2lvbihmaWxlX3BhdGgpCisg
ICAgICAgICAgICBwcm9jZXNzb3IgPSBDcHBQcm9jZXNzb3IoZmlsZV9wYXRoLCBmaWxlX2V4dGVu
c2lvbiwgaGFuZGxlX3N0eWxlX2Vycm9yLCB2ZXJib3NpdHkpCisgICAgICAgIGVsaWYgZmlsZV90
eXBlID09IEZpbGVUeXBlLlRFWFQ6CisgICAgICAgICAgICBwcm9jZXNzb3IgPSBUZXh0UHJvY2Vz
c29yKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBmaWxlIHR5cGUgIiUoZmlsZV90eXBlKXMi
OiB0aGUgb25seSB2YWxpZCBmaWxlIHR5cGVzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImFyZSAlKE5PTkUpcywgJShDUFApcywgYW5kICUoVEVYVClzLiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSB7ImZpbGVfdHlwZSI6IGZpbGVfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk5PTkUiOiBGaWxlVHlwZS5OT05FLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ1BQIjogRmlsZVR5cGUuQ1BQLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiVEVYVCI6IEZpbGVUeXBlLlRFWFR9KQorCisgICAgICAgIHJldHVybiBw
cm9jZXNzb3IKKworICAgIGRlZiBkaXNwYXRjaF9wcm9jZXNzb3Ioc2VsZiwgZmlsZV9wYXRoLCBo
YW5kbGVfc3R5bGVfZXJyb3IsIHZlcmJvc2l0eSk6CisgICAgICAgICIiIkluc3RhbnRpYXRlIGEg
c3R5bGUgcHJvY2Vzc29yIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gRmlsZVR5cGUuIiIiCisgICAg
ICAgIGZpbGVfdHlwZSA9IHNlbGYuX2ZpbGVfdHlwZShmaWxlX3BhdGgpCisKKyAgICAgICAgcHJv
Y2Vzc29yID0gc2VsZi5fY3JlYXRlX3Byb2Nlc3NvcihmaWxlX3R5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9zdHlsZV9lcnJvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHkpCisgICAgICAgIHJl
dHVybiBwcm9jZXNzb3IKKworCiBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKIAogICAgICIi
IlN1cHBvcnRzIGNoZWNraW5nIHN0eWxlIGluIGZpbGVzIGFuZCBwYXRjaGVzLgpAQCAtNjMyLDIw
ICs3NTAsMjUgQEAgY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAKICAgICAiIiIKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCB3cml0ZV9lcnJvcj1zeXMuc3RkZXJyLndyaXRl
KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgc3RkZXJyX3dyaXRlPU5vbmUpOgog
ICAgICAgICAiIiJDcmVhdGUgYSBTdHlsZUNoZWNrZXIgaW5zdGFuY2UuCiAKICAgICAgICAgQXJn
czoKICAgICAgICAgICBvcHRpb25zOiBTZWUgb3B0aW9ucyBhdHRyaWJ1dGUuCiAgICAgICAgICAg
c3RkZXJyX3dyaXRlOiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBzdHJpbmcgYXMgYSBwYXJhbWV0
ZXIKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgc3R5
bGUgZXJyb3Igb2NjdXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gc3lz
LnN0ZGVyci53cml0ZS4gVGhpcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZWQgb25seSBmb3IgdW5pdCB0ZXN0cy4KIAogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fd3Jp
dGVfZXJyb3IgPSB3cml0ZV9lcnJvcgotICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisg
ICAgICAgIGlmIHN0ZGVycl93cml0ZSBpcyBOb25lOgorICAgICAgICAgICAgc3RkZXJyX3dyaXRl
ID0gc3lzLnN0ZGVyci53cml0ZQorCisgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSA9IHN0ZGVy
cl93cml0ZQogICAgICAgICBzZWxmLmVycm9yX2NvdW50ID0gMAorICAgICAgICBzZWxmLm9wdGlv
bnMgPSBvcHRpb25zCiAKLSAgICBkZWYgX2hhbmRsZV9lcnJvcihzZWxmLCBmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKKyAgICBkZWYgX2hhbmRs
ZV9zdHlsZV9lcnJvcihzZWxmLCBmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25m
aWRlbmNlLCBtZXNzYWdlKToKICAgICAgICAgIiIiSGFuZGxlIHRoZSBvY2N1cnJlbmNlIG9mIGEg
c3R5bGUgZXJyb3Igd2hpbGUgY2hlY2tpbmcuCiAKICAgICAgICAgQ2hlY2sgd2hldGhlciBhbiBl
cnJvciBzaG91bGQgYmUgcmVwb3J0ZWQuIElmIHNvLCBpbmNyZW1lbnQgdGhlCkBAIC02NzUsMzcg
Kzc5OCwxMDQgQEAgY2xhc3MgU3R5bGVDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gIiVzOiVzOiAgJXMgIFslc10gWyVkXVxuIgogCi0g
ICAgICAgIHNlbGYuX3dyaXRlX2Vycm9yKGZvcm1hdF9zdHJpbmcgJSAoZmlsZW5hbWUsIGxpbmVf
bnVtYmVyLCBtZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKKyAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlKGZv
cm1hdF9zdHJpbmcgJSAoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBtZXNzYWdlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5jZSkp
CiAKLSAgICBkZWYgcHJvY2Vzc19maWxlKHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgIiIiQ2hl
Y2tzIHN0eWxlIGZvciB0aGUgc3BlY2lmaWVkIGZpbGUuCisgICAgZGVmIF9wcm9jZXNzX2ZpbGUo
c2VsZiwgcHJvY2Vzc29yLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CisgICAgICAg
ICIiIkNoZWNrIHN0eWxlIGluIHRoZSBnaXZlbiBsaW5lcy4iIiIKKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgIyBTdXBwb3J0IHRoZSBVTklYIGNvbnZlbnRpb24gb2YgdXNpbmcgIi0iIGZvciBz
dGRpbi4gIE5vdGUgdGhhdAorICAgICAgICAgICAgIyB3ZSBhcmUgbm90IG9wZW5pbmcgdGhlIGZp
bGUgd2l0aCB1bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0CisgICAgICAgICAgICAjICh3aGljaCBj
b2RlY3MgZG9lc24ndCBzdXBwb3J0IGFueXdheSksIHNvIHRoZSByZXN1bHRpbmcgbGluZXMgZG8K
KyAgICAgICAgICAgICMgY29udGFpbiB0cmFpbGluZyAnXHInIGNoYXJhY3RlcnMgaWYgd2UgYXJl
IHJlYWRpbmcgYSBmaWxlIHRoYXQKKyAgICAgICAgICAgICMgaGFzIENSTEYgZW5kaW5ncy4KKyAg
ICAgICAgICAgICMgSWYgYWZ0ZXIgdGhlIHNwbGl0IGEgdHJhaWxpbmcgJ1xyJyBpcyBwcmVzZW50
LCBpdCBpcyByZW1vdmVkCisgICAgICAgICAgICAjIGJlbG93LiBJZiBpdCBpcyBub3QgZXhwZWN0
ZWQgdG8gYmUgcHJlc2VudCAoaS5lLiBvcy5saW5lc2VwICE9CisgICAgICAgICAgICAjICdcclxu
JyBhcyBpbiBXaW5kb3dzKSwgYSB3YXJuaW5nIGlzIGlzc3VlZCBiZWxvdyBpZiB0aGlzIGZpbGUK
KyAgICAgICAgICAgICMgaXMgcHJvY2Vzc2VkLgorICAgICAgICAgICAgaWYgZmlsZV9wYXRoID09
ICctJzoKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIo
c3lzLnN0ZGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5nZXR3cml0ZXIoJ3V0ZjgnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2UnKS5y
ZWFkKCkuc3BsaXQoJ1xuJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGlu
ZXMgPSBjb2RlY3Mub3BlbihmaWxlX3BhdGgsICdyJywgJ3V0ZjgnLCAncmVwbGFjZScpLnJlYWQo
KS5zcGxpdCgnXG4nKQorCisgICAgICAgICAgICBjYXJyaWFnZV9yZXR1cm5fZm91bmQgPSBGYWxz
ZQorICAgICAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ1xyJy4KKyAgICAgICAgICAgIGZvciBs
aW5lX251bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKKyAgICAgICAgICAgICAgICBpZiBsaW5l
c1tsaW5lX251bWJlcl0uZW5kc3dpdGgoJ1xyJyk6CisgICAgICAgICAgICAgICAgICAgIGxpbmVz
W2xpbmVfbnVtYmVyXSA9IGxpbmVzW2xpbmVfbnVtYmVyXS5yc3RyaXAoJ1xyJykKKyAgICAgICAg
ICAgICAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0gVHJ1ZQorCisgICAgICAgIGV4Y2Vw
dCBJT0Vycm9yOgorICAgICAgICAgICAgc2VsZi5fc3RkZXJyX3dyaXRlKCJTa2lwcGluZyBpbnB1
dCAnJXMnOiBDYW4ndCBvcGVuIGZvciByZWFkaW5nXG4iICUgZmlsZV9wYXRoKQorICAgICAgICAg
ICAgcmV0dXJuCiAKLSAgICAgICAgSWYgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSBpcyAnLScsIGFw
cGxpZXMgY3BwX3N0eWxlIHRvIHRoZSBzdGFuZGFyZCBpbnB1dC4KKyAgICAgICAgcHJvY2Vzc29y
LnByb2Nlc3MobGluZXMpCisKKyAgICAgICAgaWYgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kIGFuZCBv
cy5saW5lc2VwICE9ICdcclxuJzoKKyAgICAgICAgICAgICMgRklYTUU6IE1ha2Ugc3VyZSB0aGlz
IGVycm9yIGFsc28gc2hvd3MgdXAgd2hlbiBjaGVja2luZworICAgICAgICAgICAgIyAgICAgICAg
cGF0Y2hlcywgaWYgYXBwcm9wcmlhdGUuCisgICAgICAgICAgICAjCisgICAgICAgICAgICAjIFVz
ZSAwIGZvciBsaW5lX251bWJlciBzaW5jZSBvdXRwdXR0aW5nIG9ubHkgb25lIGVycm9yIGZvcgor
ICAgICAgICAgICAgIyBwb3RlbnRpYWxseSBzZXZlcmFsIGxpbmVzLgorICAgICAgICAgICAgaGFu
ZGxlX3N0eWxlX2Vycm9yKGZpbGVfcGF0aCwgMCwgJ3doaXRlc3BhY2UvbmV3bGluZScsIDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ09uZSBvciBtb3JlIHVuZXhwZWN0ZWQgXFxy
ICheTSkgZm91bmQ7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZXR0ZXIgdG8g
dXNlIG9ubHkgYSBcXG4nKQorCisgICAgZGVmIGNoZWNrX2ZpbGUoc2VsZiwgZmlsZV9wYXRoLCBo
YW5kbGVfc3R5bGVfZXJyb3I9Tm9uZSwgcHJvY2Vzc19maWxlPU5vbmUpOgorICAgICAgICAiIiJD
aGVjayBzdHlsZSB3aXRoaW4gYSBmaWxlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmls
ZV9wYXRoOiBBIHN0cmluZyB0aGF0IGlzIHRoZSBwYXRoIG9mIHRoZSBmaWxlIHRvIHByb2Nlc3Mu
CisgICAgICAgICAgaGFuZGxlX3N0eWxlX2Vycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVu
IGEgc3R5bGUgZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jY3Vycy4gVGhp
cyBwYXJhbWV0ZXIgaXMgbWVhbnQgZm9yIGludGVybmFsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2Ugd2l0aGluIHRoaXMgY2xhc3MuIERlZmF1bHRzIHRvIHRoZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3R5bGUgZXJyb3IgaGFuZGxpbmcgbWV0aG9kIG9mIHRoaXMg
Y2xhc3MuCisgICAgICAgICAgcHJvY2Vzc19maWxlOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB0byBw
cm9jZXNzIHRoZSBmaWxlLiBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIg
c2hvdWxkIGJlIHVzZWQgb25seSBmb3IgdW5pdCB0ZXN0cy4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIERlZmF1bHRzIHRvIHRoZSBmaWxlIHByb2Nlc3NpbmcgbWV0aG9kIG9mIHRoaXMgY2xhc3Mu
CiAKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGNwcF9zdHlsZS5jYW5faGFuZGxlKGZpbGVuYW1l
KSBvciBmaWxlbmFtZSA9PSAnLSc6Ci0gICAgICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxl
KGZpbGVuYW1lLCBzZWxmLl9oYW5kbGVfZXJyb3IsIHNlbGYub3B0aW9ucy52ZXJib3NpdHkpCi0g
ICAgICAgIGVsaWYgdGV4dF9zdHlsZS5jYW5faGFuZGxlKGZpbGVuYW1lKToKLSAgICAgICAgICAg
IHRleHRfc3R5bGUucHJvY2Vzc19maWxlKGZpbGVuYW1lLCBzZWxmLl9oYW5kbGVfZXJyb3IpCisg
ICAgICAgIGlmIGhhbmRsZV9zdHlsZV9lcnJvciBpcyBOb25lOgorICAgICAgICAgICAgaGFuZGxl
X3N0eWxlX2Vycm9yID0gc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yCiAKLSAgICBkZWYgcHJvY2Vz
c19wYXRjaChzZWxmLCBwYXRjaF9zdHJpbmcpOgotICAgICAgICAiIiJEb2VzIGxpbnQgb24gYSBz
aW5nbGUgcGF0Y2guCisgICAgICAgIGlmIHByb2Nlc3NfZmlsZSBpcyBOb25lOgorICAgICAgICAg
ICAgcHJvY2Vzc19maWxlID0gc2VsZi5fcHJvY2Vzc19maWxlCisKKyAgICAgICAgZGlzcGF0Y2hl
ciA9IFByb2Nlc3NvckRpc3BhdGNoZXIoKQorCisgICAgICAgIGlmIGRpc3BhdGNoZXIuc2hvdWxk
X3NraXBfd2l0aG91dF93YXJuaW5nKGZpbGVfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgaWYgZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRoX3dhcm5pbmcoZmlsZV9wYXRoKToK
KyAgICAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgnSWdub3JpbmcgIiVzIjogdGhpcyBmaWxl
IGlzIGV4ZW1wdCBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0
eWxlIGd1aWRlLlxuIiAlIGZpbGVfcGF0aCkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAg
IHZlcmJvc2l0eSA9IHNlbGYub3B0aW9ucy52ZXJib3NpdHkKKyAgICAgICAgcHJvY2Vzc29yID0g
ZGlzcGF0Y2hlci5kaXNwYXRjaF9wcm9jZXNzb3IoZmlsZV9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfc3R5bGVfZXJyb3IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0
eSkKKyAgICAgICAgcHJvY2Vzc19maWxlKHByb2Nlc3NvciwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5
bGVfZXJyb3IpCisKKyAgICBkZWYgY2hlY2tfcGF0Y2goc2VsZiwgcGF0Y2hfc3RyaW5nKToKKyAg
ICAgICAgIiIiQ2hlY2sgc3R5bGUgd2l0aGluIGEgcGF0Y2guCiAKICAgICAgICAgQXJnczoKLSAg
ICAgICAgICBwYXRjaF9zdHJpbmc6IEEgc3RyaW5nIG9mIGEgcGF0Y2guCisgICAgICAgICAgcGF0
Y2hfc3RyaW5nOiBBIHN0cmluZyB0aGF0IGlzIGEgcGF0Y2ggc3RyaW5nLgogCiAgICAgICAgICIi
IgogICAgICAgICBwYXRjaCA9IERpZmZQYXJzZXIocGF0Y2hfc3RyaW5nLnNwbGl0bGluZXMoKSkK
LSAgICAgICAgZm9yIGZpbGVuYW1lLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygpOgot
ICAgICAgICAgICAgZmlsZV9leHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsx
XQorICAgICAgICBmb3IgZmlsZV9wYXRoLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygp
OgogICAgICAgICAgICAgbGluZV9udW1iZXJzID0gc2V0KCkKIAotICAgICAgICAgICAgZGVmIGVy
cm9yX2Zvcl9wYXRjaChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNl
LCBtZXNzYWdlKToKKyAgICAgICAgICAgIGRlZiBlcnJvcl9mb3JfcGF0Y2goZmlsZV9wYXRoLCBs
aW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgogICAgICAgICAgICAg
ICAgICIiIldyYXBwZXIgZnVuY3Rpb24gb2YgY3BwX3N0eWxlLmVycm9yIGZvciBwYXRjaGVzLgog
CiAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBvdXRwdXRzIGVycm9ycyBvbmx5IGlmIHRo
ZSBsaW5lIG51bWJlcgogICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIGxpbmVzIHdoaWNo
IGFyZSBtb2RpZmllZCBvciBhZGRlZC4KKwogICAgICAgICAgICAgICAgICIiIgogICAgICAgICAg
ICAgICAgIGlmIG5vdCBsaW5lX251bWJlcnM6CiAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5l
IGluIGRpZmYubGluZXM6CkBAIC03MTQsMTEgKzkwNCwxMCBAQCBjbGFzcyBTdHlsZUNoZWNrZXIo
b2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lWzBdOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycy5hZGQobGluZVsxXSkKIAorICAgICAg
ICAgICAgICAgICMgRklYTUU6IE1ha2Ugc3VyZSBlcnJvcnMgaGF2aW5nIGxpbmUgbnVtYmVyIHpl
cm8gYXJlCisgICAgICAgICAgICAgICAgIyAgICAgICAgbG9nZ2VkIC0tIGxpa2UgY2FycmlhZ2Ut
cmV0dXJuIGVycm9ycy4KICAgICAgICAgICAgICAgICBpZiBsaW5lX251bWJlciBpbiBsaW5lX251
bWJlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9lcnJvcihmaWxlbmFtZSwg
bGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQorICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IoZmlsZV9wYXRoLCBsaW5lX251bWJlciwg
Y2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisKKyAgICAgICAgICAgIHNlbGYuY2hlY2tf
ZmlsZShmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcj1lcnJvcl9mb3JfcGF0Y2gpCiAKLSAg
ICAgICAgICAgICMgRklYTUU6IFNoYXJlIHRoaXMgY29kZSB3aXRoIHNlbGYucHJvY2Vzc19maWxl
KCkuCi0gICAgICAgICAgICBpZiBjcHBfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAg
ICAgICAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3JfZm9yX3Bh
dGNoLCBzZWxmLm9wdGlvbnMudmVyYm9zaXR5KQotICAgICAgICAgICAgZWxpZiB0ZXh0X3N0eWxl
LmNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIHRleHRfc3R5bGUucHJvY2Vz
c19maWxlKGZpbGVuYW1lLCBlcnJvcl9mb3JfcGF0Y2gpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXggNWE2ZTY1
MC4uYWQyNzJjYiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQpAQCAtMzgsOCArMzgsMTEgQEAgaW1wb3J0IHVuaXR0
ZXN0CiAKIGltcG9ydCBjaGVja2VyIGFzIHN0eWxlCiBmcm9tIGNoZWNrZXIgaW1wb3J0IENhdGVn
b3J5RmlsdGVyCitmcm9tIGNoZWNrZXIgaW1wb3J0IFByb2Nlc3NvckRpc3BhdGNoZXIKIGZyb20g
Y2hlY2tlciBpbXBvcnQgUHJvY2Vzc29yT3B0aW9ucwogZnJvbSBjaGVja2VyIGltcG9ydCBTdHls
ZUNoZWNrZXIKK2Zyb20gY3BwX3N0eWxlIGltcG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9z
dHlsZSBpbXBvcnQgVGV4dFByb2Nlc3NvcgogCiBjbGFzcyBDYXRlZ29yeUZpbHRlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCkBAIC0zNTIsNiArMzU1LDE2NSBAQCBjbGFzcyBBcmd1bWVudFBh
cnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhm
aWxlcywgWydmb28uY3BwJywgJ2Jhci5jcHAnXSkKIAogCitjbGFzcyBQcm9jZXNzb3JEaXNwYXRj
aGVyU2tpcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgc2tpcCBtZXRo
b2RzIG9mIFByb2Nlc3NvckRpc3BhdGNoZXIgY2xhc3MuIiIiCisKKyAgICBkZWYgdGVzdF9zaG91
bGRfc2tpcF93aXRoX3dhcm5pbmcoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc2hvdWxkX3NraXBf
d2l0aF93YXJuaW5nKCkuIiIiCisgICAgICAgIGRpc3BhdGNoZXIgPSBQcm9jZXNzb3JEaXNwYXRj
aGVyKCkKKworICAgICAgICAjIENoZWNrIGEgbm9uLXNraXBwZWQgZmlsZS4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLnNob3VsZF9za2lwX3dpdGhfd2FybmluZygiZm9vLnR4
dCIpKQorCisgICAgICAgICMgQ2hlY2sgc2tpcHBlZCBmaWxlcy4KKyAgICAgICAgcGF0aHNfdG9f
c2tpcCA9IFsKKyAgICAgICAgICAgImd0azJkcmF3aW5nLmMiLAorICAgICAgICAgICAiZ3RrMmRy
YXdpbmcuaCIsCisgICAgICAgICAgICJKYXZhU2NyaXB0Q29yZS9xdC9hcGkvcXNjcmlwdGVuZ2lu
ZV9wLmgiLAorICAgICAgICAgICAiV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYyIs
CisgICAgICAgICAgICJXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5oIiwKKyAgICAg
ICAgICAgIldlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jIiwKKyAgICAgICAgICAgIldlYktpdC9x
dC9BcGkvcXdlYnBhZ2UuaCIsCisgICAgICAgICAgICJXZWJLaXQvcXQvdGVzdHMvcXdlYnNlY3Vy
aXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIiwKKyAgICAgICAgICAgIF0KKwor
ICAgICAgICBmb3IgcGF0aCBpbiBwYXRoc190b19za2lwOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGRpc3BhdGNoZXIuc2hvdWxkX3NraXBfd2l0aF93YXJuaW5nKHBhdGgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJDaGVja2luZzogIiArIHBhdGgpCisKKyAgICBkZWYgdGVz
dF9zaG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc2hv
dWxkX3NraXBfd2l0aG91dF93YXJuaW5nKCkuIiIiCisgICAgICAgIGRpc3BhdGNoZXIgPSBQcm9j
ZXNzb3JEaXNwYXRjaGVyKCkKKworICAgICAgICAjIENoZWNrIGEgbm9uLXNraXBwZWQgZmlsZS4K
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLnNob3VsZF9za2lwX3dpdGhvdXRf
d2FybmluZygiZm9vLnR4dCIpKQorCisgICAgICAgICMgQ2hlY2sgc2tpcHBlZCBmaWxlcy4KKyAg
ICAgICAgcGF0aHNfdG9fc2tpcCA9IFsKKyAgICAgICAgICAgIyBMYXlvdXRUZXN0cyBmb2xkZXIK
KyAgICAgICAgICAgIkxheW91dFRlc3RzL2Zvby50eHQiLAorICAgICAgICAgICAgXQorCisgICAg
ICAgIGZvciBwYXRoIGluIHBhdGhzX3RvX3NraXA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUoZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcocGF0aCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkNoZWNraW5nOiAiICsgcGF0aCkKKworCitjbGFzcyBQcm9j
ZXNzb3JEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIi
IlRlc3RzIGRpc3BhdGNoX3Byb2Nlc3NvcigpIG1ldGhvZCBvZiBQcm9jZXNzb3JEaXNwYXRjaGVy
IGNsYXNzLiIiIgorCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgorICAg
ICAgICBwYXNzCisKKyAgICBkZWYgZGlzcGF0Y2hfcHJvY2Vzc29yKHNlbGYsIGZpbGVfcGF0aCk6
CisgICAgICAgICIiIkNhbGwgZGlzcGF0Y2hfcHJvY2Vzc29yKCkgd2l0aCB0aGUgZ2l2ZW4gZmls
ZSBwYXRoLiIiIgorICAgICAgICBkaXNwYXRjaGVyID0gUHJvY2Vzc29yRGlzcGF0Y2hlcigpCisg
ICAgICAgIHByb2Nlc3NvciA9IGRpc3BhdGNoZXIuZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTMpCisgICAgICAgIHJldHVybiBwcm9jZXNz
b3IKKworICAgIGRlZiBhc3NlcnRfcHJvY2Vzc29yX25vbmUoc2VsZiwgZmlsZV9wYXRoKToKKyAg
ICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlzIE5vbmUuIiIi
CisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCkK
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3NvciBpcyBOb25lLCAnQ2hlY2tpbmc6ICIl
cyInICUgZmlsZV9wYXRoKQorCisgICAgZGVmIGFzc2VydF9wcm9jZXNzb3Ioc2VsZiwgZmlsZV9w
YXRoLCBleHBlY3RlZF9jbGFzcyk6CisgICAgICAgICIiIkFzc2VydCB0aGUgZGlzcGF0Y2hlZCBw
cm9jZXNzb3IgdHlwZSBhbmQgcmV0dXJuIHRoZSBwcm9jZXNzb3IuIiIiCisgICAgICAgIHByb2Nl
c3NvciA9IHNlbGYuZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAgICAgZ290X2Ns
YXNzID0gcHJvY2Vzc29yLl9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhnb3Rf
Y2xhc3MsIGV4cGVjdGVkX2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnRm9yIHBh
dGggIiUoZmlsZV9wYXRoKXMiIGdvdCAlKGdvdF9jbGFzcylzIHdoZW4gJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXhwZWN0aW5nICUoZXhwZWN0ZWRfY2xhc3Mpcy4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICUgeyJmaWxlX3BhdGgiOiBmaWxlX3BhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJnb3RfY2xhc3MiOiBnb3RfY2xhc3MsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZF9jbGFzcyI6IGV4cGVjdGVkX2NsYXNzfSkKKworICAgIGRl
ZiBhc3NlcnRfcHJvY2Vzc29yX2NwcChzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJBc3Nl
cnQgdGhhdCB0aGUgZGlzcGF0Y2hlZCBwcm9jZXNzb3IgaXMgYSBDcHBQcm9jZXNzb3IuIiIiCisg
ICAgICAgIHNlbGYuYXNzZXJ0X3Byb2Nlc3NvcihmaWxlX3BhdGgsIENwcFByb2Nlc3NvcikKKwor
ICAgIGRlZiBhc3NlcnRfcHJvY2Vzc29yX3RleHQoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAg
IiIiQXNzZXJ0IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlzIGEgVGV4dFByb2Nlc3Nv
ci4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRfcHJvY2Vzc29yKGZpbGVfcGF0aCwgVGV4dFByb2Nl
c3NvcikKKworICAgIGRlZiB0ZXN0X2NwcF9wYXRocyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBw
YXRocyB0aGF0IHNob3VsZCBiZSBjaGVja2VkIGFzIEMrKy4iIiIKKyAgICAgICAgcGF0aHMgPSBb
CisgICAgICAgICAgICAiLSIsCisgICAgICAgICAgICAiZm9vLmMiLAorICAgICAgICAgICAgImZv
by5jcHAiLAorICAgICAgICAgICAgImZvby5oIiwKKyAgICAgICAgICAgIF0KKworICAgICAgICBm
b3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3Byb2Nlc3Nvcl9jcHAo
cGF0aCkKKworICAgICAgICAjIENoZWNrIHByb2Nlc3NvciBhdHRyaWJ1dGVzIG9uIGEgdHlwaWNh
bCBpbnB1dC4KKyAgICAgICAgZmlsZV9iYXNlID0gImZvbyIKKyAgICAgICAgZmlsZV9leHRlbnNp
b24gPSAiYyIKKyAgICAgICAgZmlsZV9wYXRoID0gZmlsZV9iYXNlICsgIi4iICsgZmlsZV9leHRl
bnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRfcHJvY2Vzc29yX2NwcChmaWxlX3BhdGgpCisgICAg
ICAgIHByb2Nlc3NvciA9IHNlbGYuZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCBmaWxlX2V4dGVu
c2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgZmls
ZV9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuaGFuZGxlX3N0eWxl
X2Vycm9yLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhwcm9jZXNzb3IudmVyYm9zaXR5LCAzKQorICAgICAgICAjIENoZWNrICItIiBmb3Ig
Z29vZCBtZWFzdXJlLgorICAgICAgICBmaWxlX2Jhc2UgPSAiLSIKKyAgICAgICAgZmlsZV9leHRl
bnNpb24gPSAiIgorICAgICAgICBmaWxlX3BhdGggPSBmaWxlX2Jhc2UKKyAgICAgICAgc2VsZi5h
c3NlcnRfcHJvY2Vzc29yX2NwcChmaWxlX3BhdGgpCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYu
ZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
cHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCBmaWxlX2V4dGVuc2lvbikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgZmlsZV9wYXRoKQorCisgICAgZGVmIHRl
c3RfdGV4dF9wYXRocyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwYXRocyB0aGF0IHNob3VsZCBi
ZSBjaGVja2VkIGFzIHRleHQuIiIiCisgICAgICAgIHBhdGhzID0gWworICAgICAgICAgICAiQ2hh
bmdlTG9nIiwKKyAgICAgICAgICAgImZvby5jc3MiLAorICAgICAgICAgICAiZm9vLmh0bWwiLAor
ICAgICAgICAgICAiZm9vLmlkbCIsCisgICAgICAgICAgICJmb28uanMiLAorICAgICAgICAgICAi
Zm9vLm1tIiwKKyAgICAgICAgICAgImZvby5waHAiLAorICAgICAgICAgICAiZm9vLnBtIiwKKyAg
ICAgICAgICAgImZvby5weSIsCisgICAgICAgICAgICJmb28udHh0IiwKKyAgICAgICAgICAgIkZv
b0NoYW5nZUxvZy5iYWsiLAorICAgICAgICAgICAiV2ViQ29yZS9DaGFuZ2VMb2ciLAorICAgICAg
ICAgICAiV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyIsCisgICAgICAg
ICAgICJXZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdD1zdHlsZSIsCisgICAgICAgICAg
ICJXZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvdGV4dF9zdHlsZS5weSIsCisgICAgICAgICAg
ICBdCisKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAgICBzZWxmLmFzc2Vy
dF9wcm9jZXNzb3JfdGV4dChwYXRoKQorCisgICAgICAgICMgQ2hlY2sgcHJvY2Vzc29yIGF0dHJp
YnV0ZXMgb24gYSB0eXBpY2FsIGlucHV0LgorICAgICAgICBmaWxlX2Jhc2UgPSAiZm9vIgorICAg
ICAgICBmaWxlX2V4dGVuc2lvbiA9ICJjc3MiCisgICAgICAgIGZpbGVfcGF0aCA9IGZpbGVfYmFz
ZSArICIuIiArIGZpbGVfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0X3Byb2Nlc3Nvcl90
ZXh0KGZpbGVfcGF0aCkKKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5kaXNwYXRjaF9wcm9jZXNz
b3IoZmlsZV9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9w
YXRoLCBmaWxlX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5oYW5k
bGVfc3R5bGVfZXJyb3IsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCisKKyAgICBkZWYg
dGVzdF9ub25lX3BhdGhzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHBhdGhzIHRoYXQgaGF2ZSBu
byBmaWxlIHR5cGUuLiIiIgorICAgICAgICBwYXRocyA9IFsKKyAgICAgICAgICAgIk1ha2VmaWxl
IiwKKyAgICAgICAgICAgImZvby5wbmciLAorICAgICAgICAgICAiZm9vLmV4ZSIsCisgICAgICAg
ICAgICBdCisKKyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAgICBzZWxmLmFz
c2VydF9wcm9jZXNzb3Jfbm9uZShwYXRoKQorCisKIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLgpA
QCAtMzYyLDE1ICs1MjQsMTkgQEAgY2xhc3MgU3R5bGVDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAKICAgICAiIiIKIAotICAgIGVycm9yX21lc3NhZ2UgPSAiIgorICAgIGRlZiBzZXRV
cChzZWxmKToKKyAgICAgICAgc2VsZi5lcnJvcl9tZXNzYWdlcyA9ICIiCiAKLSAgICBkZWYgbW9j
a193cml0ZV9lcnJvcihzZWxmLCBlcnJvcl9tZXNzYWdlKToKLSAgICAgICAgIiIiU3RvcmUgYW4g
ZXJyb3IgbWVzc2FnZSB3aXRob3V0IHByaW50aW5nIGl0LiIiIgotICAgICAgICBzZWxmLmVycm9y
X21lc3NhZ2UgPSBlcnJvcl9tZXNzYWdlCisgICAgZGVmIG1vY2tfc3RkZXJyX3dyaXRlKHNlbGYs
IGVycm9yX21lc3NhZ2UpOgorICAgICAgICAiIiJBIG1vY2sgc3lzLnN0ZGVyci53cml0ZS4iIiIK
KyAgICAgICAgc2VsZi5lcnJvcl9tZXNzYWdlcyA9IGVycm9yX21lc3NhZ2UKKyAgICAgICAgcGFz
cworCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgogICAgICAgICBwYXNz
CiAKICAgICBkZWYgc3R5bGVfY2hlY2tlcihzZWxmLCBvcHRpb25zKToKLSAgICAgICAgcmV0dXJu
IFN0eWxlQ2hlY2tlcihvcHRpb25zLCBzZWxmLm1vY2tfd3JpdGVfZXJyb3IpCisgICAgICAgIHJl
dHVybiBTdHlsZUNoZWNrZXIob3B0aW9ucywgc2VsZi5tb2NrX3N0ZGVycl93cml0ZSkKIAogICAg
IGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0
b3IuIiIiCkBAIC0zODIsMTEgKzU0OCwxMSBAQCBjbGFzcyBTdHlsZUNoZWNrZXJUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB3cml0ZV9zYW1wbGVfZXJyb3Ioc2VsZiwgc3R5bGVf
Y2hlY2tlciwgZXJyb3JfY29uZmlkZW5jZSk6CiAgICAgICAgICIiIldyaXRlIGFuIGVycm9yIHRv
IHRoZSBnaXZlbiBzdHlsZV9jaGVja2VyLiIiIgotICAgICAgICBzdHlsZV9jaGVja2VyLl9oYW5k
bGVfZXJyb3IoZmlsZW5hbWU9ImZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmVfbnVtYmVyPTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXRlZ29yeT0iY2F0ZWdvcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlkZW5jZT1lcnJvcl9jb25maWRlbmNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0ibWVzc2FnZSIpCisgICAgICAgIHN0eWxlX2NoZWNrZXIu
X2hhbmRsZV9zdHlsZV9lcnJvcihmaWxlbmFtZT0iZmlsZW5hbWUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXI9MSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJjYXRlZ29yeSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWRlbmNlPWVycm9yX2NvbmZp
ZGVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
PSJtZXNzYWdlIikKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9lcnJvcihzZWxmKToKICAgICAgICAg
IiIiVGVzdCBfaGFuZGxlcl9lcnJvcigpIGZ1bmN0aW9uLiIiIgpAQCAtMzk2LDI1ICs1NjIsMTU3
IEBAIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgICAg
ICMgVmVyaWZ5IGluaXRpYWxpemVkIHByb3Blcmx5LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhzdHlsZV9jaGVja2VyLmVycm9yX2NvdW50LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhzZWxmLmVycm9yX21lc3NhZ2UsICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxm
LmVycm9yX21lc3NhZ2VzLCAiIikKIAogICAgICAgICAjIENoZWNrIHRoYXQgc2hvdWxkX3ByaW50
X2Vycm9yIGlzIGdldHRpbmcgY2FsbGVkIGFwcHJvcHJpYXRlbHkuCiAgICAgICAgIHNlbGYud3Jp
dGVfc2FtcGxlX2Vycm9yKHN0eWxlX2NoZWNrZXIsIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQsIDApICMgRXJyb3IgY29uZmlkZW5jZSB0b28g
bG93LgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2UsICIiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAiIikKIAogICAg
ICAgICBzZWxmLndyaXRlX3NhbXBsZV9lcnJvcihzdHlsZV9jaGVja2VyLCAzKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhzdHlsZV9jaGVja2VyLmVycm9yX2NvdW50LCAxKSAjIEVycm9yIGNv
bmZpZGVuY2UganVzdCBoaWdoIGVub3VnaC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2Vs
Zi5lcnJvcl9tZXNzYWdlLCAiZmlsZW5hbWU6MTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4i
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAiZmlsZW5h
bWU6MTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQorCisgICAgICAgICMgQ2xlYXIgcHJl
dmlvdXMgZXJyb3JzLgorICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0gIiIKIAogICAgICAg
ICAjIENoZWNrICJ2czciIG91dHB1dCBmb3JtYXQuCiAgICAgICAgIHN0eWxlX2NoZWNrZXIub3B0
aW9ucy5vdXRwdXRfZm9ybWF0ID0gInZzNyIKICAgICAgICAgc2VsZi53cml0ZV9zYW1wbGVfZXJy
b3Ioc3R5bGVfY2hlY2tlciwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3R5bGVfY2hl
Y2tlci5lcnJvcl9jb3VudCwgMikgIyBFcnJvciBjb25maWRlbmNlIGp1c3QgaGlnaCBlbm91Z2gu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVzc2FnZSwgImZpbGVuYW1l
KDEpOiAgbWVzc2FnZSAgW2NhdGVnb3J5XSBbM11cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYuZXJyb3JfbWVzc2FnZXMsICJmaWxlbmFtZSgxKTogIG1lc3NhZ2UgIFtjYXRlZ29y
eV0gWzNdXG4iKQorCisKK2NsYXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgorCisgICAgIiIiVGVzdCB0aGUgY2hlY2tfZmlsZSgpIG1ldGhvZCBvZiB0aGUg
U3R5bGVDaGVja2VyIGNsYXNzLgorCisgICAgV2hlbiBnaXZlbiBhIGZpbGUgdGhhdCBzaG91bGQg
bm90IGJlIHNraXBwZWQsIHRoZSBjaGVja19maWxlKCkKKyAgICBtZXRob2QgY2FsbHMgdGhlIHBy
b2Nlc3NfZmlsZSBmdW5jdGlvbiB0aGF0IGlzIGEgcGFyYW1ldGVyIHRvCisgICAgY2hlY2tfZmls
ZSgpLiBUaGUgYXR0cmlidXRlcyBvZiB0aGlzIGNsYXNzIG9mIHRoZSBmb3JtIGdvdF8qIGFyZQor
ICAgIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byB0aGlzIHByb2Nlc3NfZmlsZSBmdW5jdGlvbiwg
aWYgdGhlCisgICAgbW9ja19wcm9jZXNzX2ZpbGUgZnVuY3Rpb24gb2YgdGhpcyBjbGFzcyBpcyBw
YXNzZWQgYXMgdGhlCisgICAgcHJvY2Vzc19maWxlIHBhcmFtZXRlci4KKworICAgIEF0dHJpYnV0
ZXM6CisgICAgICBnb3RfZmlsZV9wYXRoOiBUaGUgZmlsZV9wYXRoIHBhcmFtZXRlciBwYXNzZWQg
YnkgY2hlY2tfZmlsZSgpCisgICAgICAgICAgICAgICAgICAgICB0byBpdHMgcHJvY2Vzc19maWxl
IHBhcmFtZXRlci4KKyAgICAgIGdvdF9oYW5kbGVfc3R5bGVfZXJyb3I6IFRoZSBoYW5kbGVfc3R5
bGVfZXJyb3IgcGFyYW1ldGVyIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnkgY2hlY2tfZmlsZSgpIHRvIGl0cyBwcm9jZXNzX2ZpbGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtZXRlci4KKyAgICAgIGdvdF9wcm9jZXNzb3I6IFRoZSBwcm9jZXNzb3Ig
cGFyYW1ldGVyIHBhc3NlZCBieSBjaGVja19maWxlKCkgdG8KKyAgICAgICAgICAgICAgICAgICAg
IGl0cyBwcm9jZXNzX2ZpbGUgcGFyYW1ldGVyLgorICAgICAgd2FybmluZ19tZXNzYWdlczogQSBz
dHJpbmcgY29udGFpbmluZyBhbGwgb2YgdGhlIHdhcm5pbmcgbWVzc2FnZXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHdyaXR0ZW4gdG8gdGhlIG1vY2tfc3RkZXJyX3dyaXRlIG1ldGhvZCBvZgor
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBjbGFzcy4KKworICAgICIiIgorICAgIGRlZiBz
ZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5nb3RfZmlsZV9wYXRoID0gTm9uZQorICAgICAgICBz
ZWxmLmdvdF9oYW5kbGVfc3R5bGVfZXJyb3IgPSBOb25lCisgICAgICAgIHNlbGYuZ290X3Byb2Nl
c3NvciA9IE5vbmUKKyAgICAgICAgc2VsZi53YXJuaW5nX21lc3NhZ2VzID0gIiIKKworICAgIGRl
ZiBtb2NrX3N0ZGVycl93cml0ZShzZWxmLCB3YXJuaW5nX21lc3NhZ2UpOgorICAgICAgICBzZWxm
Lndhcm5pbmdfbWVzc2FnZXMgKz0gd2FybmluZ19tZXNzYWdlCisKKyAgICBkZWYgbW9ja19oYW5k
bGVfc3R5bGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBtb2NrX3Byb2Nl
c3NfZmlsZShzZWxmLCBwcm9jZXNzb3IsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToK
KyAgICAgICAgIiIiQSBtb2NrIF9wcm9jZXNzX2ZpbGUoKS4KKworICAgICAgICBTZWUgdGhlIGRv
Y3VtZW50YXRpb24gZm9yIHRoaXMgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAgICAg
b24gdGhpcyBmdW5jdGlvbi4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5nb3RfZmlsZV9w
YXRoID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYuZ290X2hhbmRsZV9zdHlsZV9lcnJvciA9IGhh
bmRsZV9zdHlsZV9lcnJvcgorICAgICAgICBzZWxmLmdvdF9wcm9jZXNzb3IgPSBwcm9jZXNzb3IK
KworICAgIGRlZiBhc3NlcnRfYXR0cmlidXRlcyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZF9maWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX2hhbmRsZV9zdHlsZV9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRfcHJvY2Vzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF93YXJuaW5n
X21lc3NhZ2VzKToKKyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhp
cyBjbGFzcyBlcXVhbCB0aGUgZ2l2ZW4gdmFsdWVzLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhzZWxmLmdvdF9maWxlX3BhdGgsIGV4cGVjdGVkX2ZpbGVfcGF0aCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2VsZi5nb3RfaGFuZGxlX3N0eWxlX2Vycm9yLCBleHBlY3RlZF9oYW5k
bGVfc3R5bGVfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZ290X3Byb2Nl
c3NvciwgZXhwZWN0ZWRfcHJvY2Vzc29yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxm
Lndhcm5pbmdfbWVzc2FnZXMsIGV4cGVjdGVkX3dhcm5pbmdfbWVzc2FnZXMpCisKKyAgICBkZWYg
Y2FsbF9jaGVja19maWxlKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIkNhbGwgdGhlIGNo
ZWNrX2ZpbGUoKSBtZXRob2Qgb2YgYSB0ZXN0IFN0eWxlQ2hlY2tlciBpbnN0YW5jZS4iIiIKKyAg
ICAgICAgIyBDb25maXJtIHRoYXQgdGhlIGF0dHJpYnV0ZXMgYXJlIHJlc2V0LgorICAgICAgICBz
ZWxmLmFzc2VydF9hdHRyaWJ1dGVzKE5vbmUsIE5vbmUsIE5vbmUsICIiKQorCisgICAgICAgICMg
Q3JlYXRlIGEgdGVzdCBTdHlsZUNoZWNrZXIgaW5zdGFuY2UuCisgICAgICAgICMKKyAgICAgICAg
IyBUaGUgdmVyYm9zaXR5IGF0dHJpYnV0ZSBpcyB0aGUgb25seSBQcm9jZXNzb3JPcHRpb25zCisg
ICAgICAgICMgYXR0cmlidXRlIHRoYXQgbmVlZHMgdG8gYmUgY2hlY2tlZCBpbiB0aGlzIHRlc3Qu
CisgICAgICAgICMgVGhpcyBpcyBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IG9wdGlvbiBpcyBkaXJl
Y3RseQorICAgICAgICAjIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3Igb2YgYSBzdHlsZSBwcm9j
ZXNzb3IuCisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNzb3JPcHRpb25zKHZlcmJvc2l0eT0zKQor
CisgICAgICAgIHN0eWxlX2NoZWNrZXIgPSBTdHlsZUNoZWNrZXIob3B0aW9ucywgc2VsZi5tb2Nr
X3N0ZGVycl93cml0ZSkKKworICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX2ZpbGUoZmlsZV9w
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2NrX2hhbmRsZV9z
dHlsZV9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9ja19w
cm9jZXNzX2ZpbGUpCisKKyAgICBkZWYgdGVzdF9jaGVja19maWxlX29uX3NraXBfd2l0aG91dF93
YXJuaW5nKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNoZWNrX2ZpbGUoKSBmb3IgYSBza2lwcGVk
LXdpdGhvdXQtd2FybmluZyBmaWxlLiIiIgorCisgICAgICAgIGZpbGVfcGF0aCA9ICJMYXlvdXRU
ZXN0cy9mb28udHh0IgorCisgICAgICAgIGRpc3BhdGNoZXIgPSBQcm9jZXNzb3JEaXNwYXRjaGVy
KCkKKyAgICAgICAgIyBDb25maXJtIHRoYXQgdGhlIGlucHV0IGZpbGUgaXMgdHJ1bHkgYSBza2lw
cGVkLXdpdGhvdXQtd2FybmluZyBmaWxlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlzcGF0
Y2hlci5zaG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcoZmlsZV9wYXRoKSkKKworICAgICAgICAj
IENoZWNrIHRoZSBvdXRjb21lLgorICAgICAgICBzZWxmLmNhbGxfY2hlY2tfZmlsZShmaWxlX3Bh
dGgpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJpYnV0ZXMoTm9uZSwgTm9uZSwgTm9uZSwgIiIp
CisKKyAgICBkZWYgdGVzdF9jaGVja19maWxlX29uX3NraXBfd2l0aF93YXJuaW5nKHNlbGYpOgor
ICAgICAgICAiIiJUZXN0IGNoZWNrX2ZpbGUoKSBmb3IgYSBza2lwcGVkLXdpdGgtd2FybmluZyBm
aWxlLiIiIgorCisgICAgICAgIGZpbGVfcGF0aCA9ICJndGsyZHJhd2luZy5jIgorCisgICAgICAg
IGRpc3BhdGNoZXIgPSBQcm9jZXNzb3JEaXNwYXRjaGVyKCkKKyAgICAgICAgIyBDaGVjayB0aGF0
IHRoZSBpbnB1dCBmaWxlIGlzIHRydWx5IGEgc2tpcHBlZC13aXRoLXdhcm5pbmcgZmlsZS4KKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpc3BhdGNoZXIuc2hvdWxkX3NraXBfd2l0aF93YXJuaW5n
KGZpbGVfcGF0aCkpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0Y29tZS4KKyAgICAgICAgc2Vs
Zi5jYWxsX2NoZWNrX2ZpbGUoZmlsZV9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRyaWJ1
dGVzKE5vbmUsIE5vbmUsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ln
bm9yaW5nICJndGsyZHJhd2luZy5jIjogdGhpcyBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRoZSBzdHls
ZSBndWlkZS5cbicpCisKKyAgICBkZWYgdGVzdF9jaGVja19maWxlX29uX25vbl9za2lwcGVkKHNl
bGYpOgorCisgICAgICAgICMgV2UgdXNlIGEgQysrIGZpbGUgc2luY2UgYnkgdXNpbmcgYSBDcHBQ
cm9jZXNzb3IsIHdlIGNhbiBjaGVjaworICAgICAgICAjIHRoYXQgYWxsIG9mIHRoZSBwb3NzaWJs
ZSBpbmZvcm1hdGlvbiBpcyBnZXR0aW5nIHBhc3NlZCB0bworICAgICAgICAjIHByb2Nlc3NfZmls
ZSAoaW4gcGFydGljdWxhciwgdGhlIHZlcmJvc2l0eSkuCisgICAgICAgIGZpbGVfYmFzZSA9ICJm
b28iCisgICAgICAgIGZpbGVfZXh0ZW5zaW9uID0gImNwcCIKKyAgICAgICAgZmlsZV9wYXRoID0g
ZmlsZV9iYXNlICsgIi4iICsgZmlsZV9leHRlbnNpb24KKworICAgICAgICBkaXNwYXRjaGVyID0g
UHJvY2Vzc29yRGlzcGF0Y2hlcigpCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgaW5wdXQgZmls
ZSBpcyB0cnVseSBhIEMrKyBmaWxlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkaXNwYXRj
aGVyLl9maWxlX3R5cGUoZmlsZV9wYXRoKSwgc3R5bGUuRmlsZVR5cGUuQ1BQKQorCisgICAgICAg
ICMgQ2hlY2sgdGhlIG91dGNvbWUuCisgICAgICAgIHNlbGYuY2FsbF9jaGVja19maWxlKGZpbGVf
cGF0aCkKKworICAgICAgICBleHBlY3RlZF9wcm9jZXNzb3IgPSBDcHBQcm9jZXNzb3IoZmlsZV9w
YXRoLCBmaWxlX2V4dGVuc2lvbiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgMykKKwor
ICAgICAgICBzZWxmLmFzc2VydF9hdHRyaWJ1dGVzKGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Byb2Nlc3NvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIikKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAg
IGltcG9ydCBzeXMKIAogICAgIHVuaXR0ZXN0Lm1haW4oKQorCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CmluZGV4IGQ1NGQ5ZTAuLmJlNjhmNzMg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxl
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5
CkBAIC00LDYgKzQsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAj
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAj
CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yODE5LDcgKzI4MjAsNyBAQCBkZWYg
cHJvY2Vzc19saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwKICAgICBjaGVja19pbnZhbGlk
X2luY3JlbWVudChmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQogCiAKLWRlZiBw
cm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwg
dmVyYm9zaXR5KToKK2RlZiBfcHJvY2Vzc19saW5lcyhmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24s
IGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKICAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrcyBh
bmQgcmVwb3J0cyBhbnkgZXJyb3JzIHRvIHRoZSBnaXZlbiBlcnJvciBmdW5jdGlvbi4KIAogICAg
IEFyZ3M6CkBAIC0yODU4LDkwICsyODU5LDQ5IEBAIGRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxl
bmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKICAgICBjaGVj
a19mb3JfbmV3X2xpbmVfYXRfZW9mKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCiAKIAotZGVmIHBy
b2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3IsIHZlcmJvc2l0eSk6Ci0gICAgIiIiUGVyZm9ybXMg
Y3BwX3N0eWxlIG9uIGEgc2luZ2xlIGZpbGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6
IFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHBhcnNlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlv
biB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAgIHZlcmJvc2l0eTogQW4gaW50
ZWdlciB0aGF0IGlzIHRoZSB2ZXJib3NpdHkgbGV2ZWwgdG8gdXNlIHdoaWxlCi0gICAgICAgICAg
ICAgICAgIGNoZWNraW5nIHN0eWxlLgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgIyBTdXBw
b3J0IHRoZSBVTklYIGNvbnZlbnRpb24gb2YgdXNpbmcgIi0iIGZvciBzdGRpbi4gIE5vdGUgdGhh
dAotICAgICAgICAjIHdlIGFyZSBub3Qgb3BlbmluZyB0aGUgZmlsZSB3aXRoIHVuaXZlcnNhbCBu
ZXdsaW5lIHN1cHBvcnQKLSAgICAgICAgIyAod2hpY2ggY29kZWNzIGRvZXNuJ3Qgc3VwcG9ydCBh
bnl3YXkpLCBzbyB0aGUgcmVzdWx0aW5nIGxpbmVzIGRvCi0gICAgICAgICMgY29udGFpbiB0cmFp
bGluZyAnXHInIGNoYXJhY3RlcnMgaWYgd2UgYXJlIHJlYWRpbmcgYSBmaWxlIHRoYXQKLSAgICAg
ICAgIyBoYXMgQ1JMRiBlbmRpbmdzLgotICAgICAgICAjIElmIGFmdGVyIHRoZSBzcGxpdCBhIHRy
YWlsaW5nICdccicgaXMgcHJlc2VudCwgaXQgaXMgcmVtb3ZlZAotICAgICAgICAjIGJlbG93LiBJ
ZiBpdCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCAoaS5lLiBvcy5saW5lc2VwICE9Ci0g
ICAgICAgICMgJ1xyXG4nIGFzIGluIFdpbmRvd3MpLCBhIHdhcm5pbmcgaXMgaXNzdWVkIGJlbG93
IGlmIHRoaXMgZmlsZQotICAgICAgICAjIGlzIHByb2Nlc3NlZC4KLQotICAgICAgICBpZiBmaWxl
bmFtZSA9PSAnLSc6Ci0gICAgICAgICAgICBsaW5lcyA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0
ZXIoc3lzLnN0ZGluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvZGVjcy5nZXRyZWFkZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4JyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2UnKS5yZWFkKCkuc3Bs
aXQoJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVzID0gY29kZWNzLm9wZW4o
ZmlsZW5hbWUsICdyJywgJ3V0ZjgnLCAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQorY2xh
c3MgQ3BwUHJvY2Vzc29yKG9iamVjdCk6CiAKLSAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5k
ID0gRmFsc2UKLSAgICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ1xyJy4KLSAgICAgICAgZm9yIGxp
bmVfbnVtYmVyIGluIHJhbmdlKGxlbihsaW5lcykpOgotICAgICAgICAgICAgaWYgbGluZXNbbGlu
ZV9udW1iZXJdLmVuZHN3aXRoKCdccicpOgotICAgICAgICAgICAgICAgIGxpbmVzW2xpbmVfbnVt
YmVyXSA9IGxpbmVzW2xpbmVfbnVtYmVyXS5yc3RyaXAoJ1xyJykKLSAgICAgICAgICAgICAgICBj
YXJyaWFnZV9yZXR1cm5fZm91bmQgPSBUcnVlCisgICAgIiIiUHJvY2Vzc2VzIEMrKyBsaW5lcyBm
b3IgY2hlY2tpbmcgc3R5bGUuIiIiCiAKLSAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgKLSAgICAgICAgICAgICJTa2lwcGluZyBpbnB1dCAnJXMnOiBDYW4ndCBv
cGVuIGZvciByZWFkaW5nXG4iICUgZmlsZW5hbWUpCi0gICAgICAgIHJldHVybgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9uLCBoYW5kbGVfc3R5bGVfZXJy
b3IsIHZlcmJvc2l0eSk6CisgICAgICAgICIiIkNyZWF0ZSBhIENwcFByb2Nlc3NvciBpbnN0YW5j
ZS4KIAotICAgICMgTm90ZSwgaWYgbm8gZG90IGlzIGZvdW5kLCB0aGlzIHdpbGwgZ2l2ZSB0aGUg
ZW50aXJlIGZpbGVuYW1lIGFzIHRoZSBleHQuCi0gICAgZmlsZV9leHRlbnNpb24gPSBmaWxlbmFt
ZVtmaWxlbmFtZS5yZmluZCgnLicpICsgMTpdCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmls
ZV9leHRlbnNpb246IEEgc3RyaW5nIHRoYXQgaXMgdGhlIGZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsZWFkaW5nIGRvdC4KIAotICAgICMgV2hl
biByZWFkaW5nIGZyb20gc3RkaW4sIHRoZSBleHRlbnNpb24gaXMgdW5rbm93biwgc28gbm8gY3Bw
X3N0eWxlIHRlc3RzCi0gICAgIyBzaG91bGQgcmVseSBvbiB0aGUgZXh0ZW5zaW9uLgotICAgIGlm
IChmaWxlbmFtZSAhPSAnLScgYW5kIG5vdCBjYW5faGFuZGxlKGZpbGVuYW1lKSk6Ci0gICAgICAg
IHN5cy5zdGRlcnIud3JpdGUoJ0lnbm9yaW5nICVzOyBub3QgYSAuY3BwLCAuYyBvciAuaCBmaWxl
XG4nICUgZmlsZW5hbWUpCi0gICAgZWxpZiBpc19leGVtcHQoZmlsZW5hbWUpOgotICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCdJZ25vcmluZyAlczsgVGhpcyBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRo
ZSBzdHlsZSBndWlkZS5cbicgJSBmaWxlbmFtZSkKLSAgICBlbHNlOgotICAgICAgICBwcm9jZXNz
X2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9z
aXR5KQotICAgICAgICBpZiBjYXJyaWFnZV9yZXR1cm5fZm91bmQgYW5kIG9zLmxpbmVzZXAgIT0g
J1xyXG4nOgotICAgICAgICAgICAgIyBVc2UgMCBmb3IgbGluZV9udW1iZXIgc2luY2Ugb3V0cHV0
aW5nIG9ubHkgb25lIGVycm9yIGZvciBwb3RlbnRpYWxseQotICAgICAgICAgICAgIyBzZXZlcmFs
IGxpbmVzLgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIDAsICd3aGl0ZXNwYWNlL25ld2xp
bmUnLCAxLAotICAgICAgICAgICAgICAgICAgJ09uZSBvciBtb3JlIHVuZXhwZWN0ZWQgXFxyIChe
TSkgZm91bmQ7JwotICAgICAgICAgICAgICAgICAgJ2JldHRlciB0byB1c2Ugb25seSBhIFxcbicp
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLmZpbGVfZXh0ZW5zaW9uID0gZmlsZV9leHRlbnNp
b24KKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5oYW5k
bGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKyAgICAgICAgc2VsZi52ZXJib3Np
dHkgPSB2ZXJib3NpdHkKIAorICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCisgICAgZGVm
IF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoaXMgQ3Bw
UHJvY2Vzc29yIGluc3RhbmNlIGlzIGVxdWFsIHRvIGFub3RoZXIuIiIiCisgICAgICAgIGlmIHNl
bGYuZmlsZV9leHRlbnNpb24gIT0gb3RoZXIuZmlsZV9leHRlbnNpb246CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5maWxlX3BhdGggIT0gb3RoZXIuZmlsZV9wYXRo
OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYuaGFuZGxlX3N0eWxl
X2Vycm9yICE9IG90aGVyLmhhbmRsZV9zdHlsZV9lcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSAhPSBvdGhlci52ZXJib3NpdHk6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKIAotZGVmIGNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICIi
IkNoZWNrcyBpZiB0aGlzIG1vZHVsZSBzdXBwb3J0cyBmb3IgdGhlIHNwZWNpZmllZCBmaWxlIHR5
cGUuCisgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IEEg
ZmlsZW5hbWUuIEl0IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAgICAgIiIiCi0gICAg
cmV0dXJuIG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzFdIGluICgnLmgnLCAnLmNwcCcsICcu
YycpCisgICAgIyBVc2VmdWwgZm9yIHVuaXQgdGVzdGluZy4KKyAgICBkZWYgX19uZV9fKHNlbGYs
IG90aGVyKToKKyAgICAgICAgIyBQeXRob24gZG9lcyBub3QgYXV0b21hdGljYWxseSBkZWR1Y2Ug
X19uZV9fKCkgZnJvbSBfX2VxX18oKS4KKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhv
dGhlcikKIAorICAgIGRlZiBwcm9jZXNzKHNlbGYsIGxpbmVzKToKKyAgICAgICAgX3Byb2Nlc3Nf
bGluZXMoc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9leHRlbnNpb24sIGxpbmVzLAorICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvciwgc2VsZi52ZXJib3NpdHkp
CiAKLWRlZiBpc19leGVtcHQoZmlsZW5hbWUpOgotICAgICIiIkNoZWNrcyBpZiB0aGUgZ2l2ZW4g
ZmlsZSBpcyBleGVtcHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuICBGb3IgZXhhbXBsZSwKLSAgICBz
b21lIGZpbGVzIGFyZSBwdXJwb3NlZnVsbHkgbWFudGFpbmVkIGluIE1vemlsbGEgc3R5bGUgdG8g
ZWFzZSBmdXR1cmUKLSAgICBtZXJnZXMuCiAKLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IEEg
ZmlsZW5hbWUuIEl0IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAgICAgIiIiCi0gICAg
aWYgKGZpbGVuYW1lLmZpbmQoJ1dlYktpdC9xdC9BcGkvJykgPj0gMAotICAgICAgICBvciBmaWxl
bmFtZS5maW5kKCdKYXZhU2NyaXB0Q29yZS9xdC9hcGkvJykgPj0gMAotICAgICAgICBvciBmaWxl
bmFtZS5maW5kKCdXZWJLaXQvcXQvdGVzdHMvJykgPj0gMAotICAgICAgICBvciBmaWxlbmFtZS5m
aW5kKCdXZWJLaXQvZ3RrL3Rlc3RzLycpID49IDApOgotICAgICAgICAjIFRoZSBRdCBBUEkgYW5k
IHRoZSBRdCBhbmQgR3RrIHRlc3RzIGRvIG5vdCBmb2xsb3cgV2ViS2l0IHN0eWxlLgotICAgICAg
ICByZXR1cm4gVHJ1ZQorIyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gKHJlcXVpcmVzIHJl
ZmFjdG9yaW5nIHVuaXQgdGVzdHMpLgorZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBm
aWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorICAgIHByb2Nlc3NvciA9
IENwcFByb2Nlc3NvcihmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGVycm9yLCB2ZXJib3NpdHkp
CisgICAgcHJvY2Vzc29yLnByb2Nlc3MobGluZXMpCiAKLSAgICByZXR1cm4gb3MucGF0aC5iYXNl
bmFtZShmaWxlbmFtZSkgaW4gKAotICAgICAgICAnZ3RrMmRyYXdpbmcuYycsCi0gICAgICAgICdn
dGsyZHJhd2luZy5oJywKLSAgICApCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NwcF9zdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5CmluZGV4IDU0YTk2MWQuLmUwYTYz
YWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0
eWxlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y3BwX3N0eWxlX3VuaXR0ZXN0LnB5CkBAIC00LDYgKzQsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5
IFRvcmNoIE1vYmlsZSBJbmMuCiAjIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2pl
cmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00
MSw2ICs0Miw4IEBAIGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiBp
bXBvcnQgY3BwX3N0eWxlCitmcm9tIGNwcF9zdHlsZSBpbXBvcnQgQ3BwUHJvY2Vzc29yCisKICMg
RklYTUU6IFJlbW92ZSB0aGUgbmVlZCB0byBpbXBvcnQgYW55dGhpbmcgZnJvbSBjaGVja2VyLiBT
ZWUgdGhlCiAjICAgICAgICBGSVhNRSBub3RlcyBuZWFyIHRoZSBTVFlMRV9DQVRFR09SSUVTIGRl
ZmluaXRpb24gZm9yIGEKICMgICAgICAgIHN1Z2dlc3Rpb24gb24gaG93IHRvIGJlc3QgZG8gdGhp
cy4KQEAgLTM2MDMsMzUgKzM2MDYsNTMgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxl
VGVzdEJhc2UpOgogICAgICAgICBwYXNzCiAKIAotICAgIGRlZiB0ZXN0X2Nhbl9oYW5kbGUoc2Vs
Zik6Ci0gICAgICAgICIiIlRlc3RzIGZvciBjcHBfc3R5bGUuY2FuX2hhbmRsZSgpLiIiIgotICAg
ICAgICBzZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5jYW5faGFuZGxlKCcnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5jYW5faGFuZGxlKCdmb28uaCcpKQotICAgICAgICBzZWxm
LmFzc2VydF8obm90IGNwcF9zdHlsZS5jYW5faGFuZGxlKCdmb28uaHBwJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0XyhjcHBfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRfKGNwcF9zdHlsZS5jYW5faGFuZGxlKCdmb28uY3BwJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jYycpKQotICAgICAgICBzZWxmLmFz
c2VydF8obm90IGNwcF9zdHlsZS5jYW5faGFuZGxlKCdmb28uY3h4JykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5DJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5tbScpKQotICAgICAgICBzZWxm
LmFzc2VydF8obm90IGNwcF9zdHlsZS5jYW5faGFuZGxlKCctJykpCi0KLSAgICBkZWYgdGVzdF9p
c19leGVtcHQoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGZvciBjcHBfc3R5bGUuaXNfZXhlbXB0
KCkuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmgnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNfZXhlbXB0KCdmb28uaHBwJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmMnKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNfZXhlbXB0KCdmb28uY3BwJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnLScpKQotICAg
ICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZ3RrMmRyYXdpbmcuaCcpKQot
ICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvZ3RrMmRyYXdpbmcuaCcpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlz
X2V4ZW1wdCgnZ3RrMmRyYXdpbmcuYycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxl
LmlzX2V4ZW1wdCgnV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYycpKQotICAgICAg
ICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdKYXZhU2Ny
aXB0Q29yZS9xdC9hcGkvcXNjcmlwdGVuZ2luZV9wLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
KGNwcF9zdHlsZS5pc19leGVtcHQoJ1dlYktpdC9xdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4v
dHN0X3F3ZWJzZWN1cml0eW9yaWdpbi5jcHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9z
dHlsZS5pc19leGVtcHQoJ1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jJykpCitjbGFzcyBDcHBQ
cm9jZXNzb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIENwcFByb2Nl
c3NvciBjbGFzcy4iIiIKKworICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxmKToK
KyAgICAgICAgcGFzcworCisgICAgZGVmIF9wcm9jZXNzb3Ioc2VsZik6CisgICAgICAgIHJldHVy
biBDcHBQcm9jZXNzb3IoImZvbyIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwg
MykKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgX19pbml0X18g
Y29uc3RydWN0b3IuIiIiCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuX3Byb2Nlc3NvcigpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX2V4dGVuc2lvbiwgImgiKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZm9vIikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmhhbmRsZV9zdHlsZV9lcnJvciwgc2Vs
Zi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJv
Y2Vzc29yLnZlcmJvc2l0eSwgMykKKworICAgIGRlZiB0ZXN0X2VxKHNlbGYpOgorICAgICAgICAi
IiJUZXN0IF9fZXFfXyBlcXVhbGl0eSBmdW5jdGlvbi4iIiIKKyAgICAgICAgcHJvY2Vzc29yMSA9
IHNlbGYuX3Byb2Nlc3NvcigpCisgICAgICAgIHByb2Nlc3NvcjIgPSBzZWxmLl9wcm9jZXNzb3Io
KQorCisgICAgICAgICMgPT0gY2FsbHMgX19lcV9fLgorICAgICAgICBzZWxmLmFzc2VydFRydWUo
cHJvY2Vzc29yMSA9PSBwcm9jZXNzb3IyKQorCisgICAgICAgIGRlZiBtb2NrX2hhbmRsZV9zdHls
ZV9lcnJvcjIoc2VsZik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBWZXJpZnkgdGhh
dCBhIGRpZmZlcmVuY2UgaW4gYW55IGFyZ3VtZW50IGNhdXNlIGVxdWFsaXR5IHRvIGZhaWwuCisg
ICAgICAgIHByb2Nlc3NvciA9IENwcFByb2Nlc3NvcigiZm9vIiwgImgiLCBzZWxmLm1vY2tfaGFu
ZGxlX3N0eWxlX2Vycm9yLCAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3NvciA9
PSBDcHBQcm9jZXNzb3IoImJhciIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwg
MykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yID09IENwcFByb2Nlc3Nvcigi
Zm9vIiwgImMiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCAzKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShwcm9jZXNzb3IgPT0gQ3BwUHJvY2Vzc29yKCJmb28iLCAiaCIsIG1vY2tf
aGFuZGxlX3N0eWxlX2Vycm9yMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vz
c29yID09IENwcFByb2Nlc3NvcigiZm9vIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vy
cm9yLCA0KSkKKworICAgIGRlZiB0ZXN0X25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9fbmVf
XyBpbmVxdWFsaXR5IGZ1bmN0aW9uLiIiIgorICAgICAgICBwcm9jZXNzb3IxID0gc2VsZi5fcHJv
Y2Vzc29yKCkKKyAgICAgICAgcHJvY2Vzc29yMiA9IHNlbGYuX3Byb2Nlc3NvcigpCisKKyAgICAg
ICAgIyAhPSBjYWxscyBfX25lX18uCisgICAgICAgICMgQnkgZGVmYXVsdCwgX19uZV9fIGFsd2F5
cyByZXR1cm5zIHRydWUgb24gZGlmZmVyZW50IG9iamVjdHMuCisgICAgICAgICMgVGh1cywganVz
dCBjaGVjayB0aGUgZGlzdGluZ3Vpc2hpbmcgY2FzZSB0byB2ZXJpZnkgdGhhdCB0aGUKKyAgICAg
ICAgIyBjb2RlIGRlZmluZXMgX19uZV9fLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nl
c3NvcjEgIT0gcHJvY2Vzc29yMikKKwogCiBkZWYgdGVhckRvd24oKToKICAgICAiIiJBIGdsb2Jh
bCBjaGVjayB0byBtYWtlIHN1cmUgYWxsIGVycm9yLWNhdGVnb3JpZXMgaGF2ZSBiZWVuIHRlc3Rl
ZC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9z
dHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5w
eQppbmRleCAzODViYmFhLi40Zjg2OWFmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlLnB5CkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChD
KSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI2LDUzICsyNywzMCBAQAogIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAotIiIiRG9lcyBXZWJLaXQtbGludCBvbiB0ZXh0IGZpbGVzLgorIiIi
Q2hlY2tzIFdlYktpdCBzdHlsZSBmb3IgdGV4dCBmaWxlcy4iIiIKIAotVGhpcyBtb2R1bGUgc2hh
cmVzIGVycm9yIGNvdW50LCBmaWx0ZXIgc2V0dGluZywgb3V0cHV0IHNldHRpbmcsIGV0Yy4gd2l0
aCBjcHBfc3R5bGUuCi0iIiIKIAotaW1wb3J0IGNvZGVjcwotaW1wb3J0IG9zLnBhdGgKLWltcG9y
dCBzeXMKK2NsYXNzIFRleHRQcm9jZXNzb3Iob2JqZWN0KToKIAotaW1wb3J0IGNwcF9zdHlsZQor
ICAgICIiIlByb2Nlc3NlcyB0ZXh0IGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4iIiIKIAorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CisgICAg
ICAgIHNlbGYuZmlsZV9wYXRoID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYuaGFuZGxlX3N0eWxl
X2Vycm9yID0gaGFuZGxlX3N0eWxlX2Vycm9yCiAKLWRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxl
bmFtZSwgbGluZXMsIGVycm9yKToKLSAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrIGZvciB0ZXh0
IG9uIHRoZSBzcGVjaWZpZWQgbGluZXMuCi0KLSAgICBJdCByZXBvcnRzIGVycm9ycyB0byB0aGUg
Z2l2ZW4gZXJyb3IgZnVuY3Rpb24uCi0gICAgIiIiCi0gICAgbGluZXMgPSAoWycvLyBhZGp1c3Qg
bGluZSBudW1iZXJzIHRvIG1ha2UgdGhlIGZpcnN0IGxpbmUgMS4nXSArIGxpbmVzKQotCi0gICAg
IyBGSVhNRTogc2hhcmUgd2l0aCBjcHBfc3R5bGUuY2hlY2tfc3R5bGUoKQotICAgIGZvciBsaW5l
X251bWJlciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAgICAgICBpZiAnXHQnIGluIGxp
bmU6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNl
L3RhYicsIDUsICdMaW5lIGNvbnRhaW5zIHRhYiBjaGFyYWN0ZXIuJykKKyAgICBkZWYgcHJvY2Vz
cyhzZWxmLCBsaW5lcyk6CisgICAgICAgIGxpbmVzID0gKFsiLy8gYWRqdXN0IGxpbmUgbnVtYmVy
cyB0byBtYWtlIHRoZSBmaXJzdCBsaW5lIDEuIl0gKyBsaW5lcykKIAorICAgICAgICAjIEZJWE1F
OiBzaGFyZSB3aXRoIGNwcF9zdHlsZS4KKyAgICAgICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGlu
IGVudW1lcmF0ZShsaW5lcyk6CisgICAgICAgICAgICBpZiAiXHQiIGluIGxpbmU6CisgICAgICAg
ICAgICAgICAgc2VsZi5oYW5kbGVfc3R5bGVfZXJyb3Ioc2VsZi5maWxlX3BhdGgsIGxpbmVfbnVt
YmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGl0ZXNwYWNl
L3RhYiIsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxpbmUg
Y29udGFpbnMgdGFiIGNoYXJhY3Rlci4iKQogCi1kZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBl
cnJvcik6Ci0gICAgIiIiUGVyZm9ybXMgbGludCBjaGVjayBmb3IgdGV4dCBvbiBhIHNpbmdsZSBm
aWxlLiIiIgotICAgIGlmIChub3QgY2FuX2hhbmRsZShmaWxlbmFtZSkpOgotICAgICAgICBzeXMu
c3RkZXJyLndyaXRlKCdJZ25vcmluZyAlczsgbm90IGEgc3VwcG9ydGVkIGZpbGVcbicgJSBmaWxl
bmFtZSkKLSAgICAgICAgcmV0dXJuCiAKLSAgICAjIEZJWE1FOiBzaGFyZSBjb2RlIHdpdGggY3Bw
X3N0eWxlLnByb2Nlc3NfZmlsZSgpLgotICAgIHRyeToKLSAgICAgICAgIyBEbyBub3Qgc3VwcG9y
dCBmb3IgZmlsZW5hbWU9Jy0nLiBjcHBfc3R5bGUgaGFuZGxlcyBpdC4KLSAgICAgICAgbGluZXMg
PSBjb2RlY3Mub3BlbihmaWxlbmFtZSwgJ3InLCAndXRmOCcsICdyZXBsYWNlJykucmVhZCgpLnNw
bGl0KCdcbicpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
IlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4gZm9yIHJlYWRpbmdcbiIgJSBmaWxlbmFt
ZSkKLSAgICAgICAgcmV0dXJuCi0gICAgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGxpbmVz
LCBlcnJvcikKLQotCi1kZWYgY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgIiIiQ2hlY2tzIGlm
IHRoaXMgbW9kdWxlIHN1cHBvcnRzIHRoZSBzcGVjaWZpZWQgZmlsZSB0eXBlLgorIyBGSVhNRTog
UmVtb3ZlIHRoaXMgZnVuY3Rpb24gKHJlcXVpcmVzIHJlZmFjdG9yaW5nIHVuaXQgdGVzdHMpLgor
ZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgorICAgIHByb2Nl
c3NvciA9IFRleHRQcm9jZXNzb3IoZmlsZW5hbWUsIGVycm9yKQorICAgIHByb2Nlc3Nvci5wcm9j
ZXNzKGxpbmVzKQogCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBBIGZpbGVuYW1lLiBJdCBt
YXkgY29udGFpbiBkaXJlY3RvcnkgbmFtZXMuCi0gICAgIiIiCi0gICAgcmV0dXJuICgiQ2hhbmdl
TG9nIiBpbiBmaWxlbmFtZQotICAgICAgICAgICAgb3IgIldlYktpdFRvb2xzL1NjcmlwdHMvIiBp
biBmaWxlbmFtZQotICAgICAgICAgICAgb3Igb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0g
aW4gKCcuY3NzJywgJy5odG1sJywgJy5pZGwnLCAnLmpzJywgJy5tbScsICcucGhwJywgJy5wbScs
ICcucHknLCAnLnR4dCcpKSBhbmQgbm90ICJMYXlvdXRUZXN0cy8iIGluIGZpbGVuYW1lCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVf
dW5pdHRlc3QucHkKaW5kZXggZDkxMTVmMC4uNGFlYjJmNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weQpA
QCAtMzIsNyArMzIsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0ZXh0X3N0eWxlCi0K
K2Zyb20gdGV4dF9zdHlsZSBpbXBvcnQgVGV4dFByb2Nlc3NvcgogCiBjbGFzcyBUZXh0U3R5bGVU
ZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdENhc2UgZm9yIHRleHRfc3R5
bGUucHkiIiIKQEAgLTc2LDM2ICs3NiwxOCBAQCBjbGFzcyBUZXh0U3R5bGVUZXN0Q2FzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdFJldmlld2VkIGJ5
IE5PQk9EWS4nXSwgMykKIAogCi0gICAgZGVmIHRlc3RfY2FuX2hhbmRsZShzZWxmKToKLSAgICAg
ICAgIiIiVGVzdHMgZm9yIHRleHRfc3R5bGUuY2FuX2hhbmRsZSgpLiIiIgotICAgICAgICBzZWxm
LmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCctJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ0NoYW5nZUxvZycpKQotICAgICAgICBzZWxmLmFzc2Vy
dF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJDb3JlL0NoYW5nZUxvZycpKQotICAgICAgICBz
ZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdGb29DaGFuZ2VMb2cuYmFrJykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYktpdFRvb2xzL1Nj
cmlwdHMvY2hlY2std2Via2l0PXN0eWxlJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0
eWxlLmNhbl9oYW5kbGUoJ1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy90ZXh0X3N0eWxlLnB5
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJL
aXRUb29scy9TY3JpcHRzJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2Fu
X2hhbmRsZSgnZm9vLmNzcycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5f
aGFuZGxlKCdmb28uaHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5f
aGFuZGxlKCdmb28uaWRsJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9o
YW5kbGUoJ2Zvby5qcycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFu
ZGxlKCdXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5tbScpKQotICAgICAgICBz
ZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28ucGhwJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5wbScpKQotICAgICAgICBzZWxm
LmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28ucHknKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLnR4dCcpKQotICAgICAgICBzZWxmLmFz
c2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRfKG5vdCB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28uYycpKQotICAgICAgICBzZWxm
LmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLnBuZycpKQotICAgICAgICBz
ZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmMvYmFyLnBuZycpKQot
ICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViS2l0L0Vu
Z2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncycpKQotICAgICAgICBzZWxmLmFzc2VydF8o
bm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnTWFrZWZpbGUnKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfKG5vdCB0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYkNvcmUvQW5kcm9pZC5taycpKQotICAg
ICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUtdGVzdHMuanMnKSkKK2NsYXNzIFRleHRQcm9jZXNzb3JUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIFRleHRQcm9jZXNzb3IgY2xhc3MuIiIi
CisKKyAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgX19pbml0X18gY29u
c3RydWN0b3IuIiIiCisgICAgICAgIHByb2Nlc3NvciA9IFRleHRQcm9jZXNzb3IoImZpbGUiLCBz
ZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw
cm9jZXNzb3IuZmlsZV9wYXRoLCAiZmlsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBy
b2Nlc3Nvci5oYW5kbGVfc3R5bGVfZXJyb3IsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3Ip
CiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47140</attachid>
            <date>2010-01-21 12:42:59 -0800</date>
            <delta_ts>2010-01-21 21:39:29 -0800</delta_ts>
            <desc>Proposed patch 6</desc>
            <filename>_patch-33775-6.txt</filename>
            <type>text/plain</type>
            <size>48990</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4NGMyNjRjLi5kMWIzMGY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTAtMDEt
MTkgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JlZCB0byBtb3ZlIGZp
bGUgbmFtZSBhbmQgZmlsZS1yZWFkaW5nIHJlbGF0ZWQgY29kZQorICAgICAgICBmcm9tIGNwcF9z
dHlsZS5weSBhbmQgdGV4dF9zdHlsZS5weSB0byBjaGVja2VyLnB5LgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzc3NQorCisgICAgICAgICogU2Ny
aXB0cy9jaGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICAgLSBVcGRhdGVzIGNhdXNlZCBieSBj
aGFuZ2VzIHRvIGNoZWNrZXIucHkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHk6CisgICAgICAgICAgLSBBZGRlZCBTS0lQUEVEX0ZJTEVTX1dJVEhfV0FSTklO
RyBsaXN0LgorICAgICAgICAgIC0gQWRkZWQgU0tJUFBFRF9GSUxFU19XSVRIT1VUX1dBUk5JTkcg
bGlzdC4KKyAgICAgICAgICAtIEFkZGVkIEZpbGVUeXBlIGNsYXNzLgorICAgICAgICAgIC0gQWRk
ZWQgUHJvY2Vzc29yRGlzcGF0Y2hlciBjbGFzcy4KKyAgICAgICAgICAtIEluIFN0eWxlQ2hlY2tl
ciBjbGFzczoKKyAgICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX3BhdGNoKCkgdG8gY2hlY2tf
cGF0Y2goKS4KKyAgICAgICAgICAgIC0gUmVuYW1lZCBwcm9jZXNzX2ZpbGUoKSB0byBjaGVja19m
aWxlKCkuCisgICAgICAgICAgICAtIEFkZGVkIF9wcm9jZXNzX2ZpbGUoKS4KKyAgICAgICAgICAg
IC0gUmVsYXRlZCByZWZhY3RvcmluZy4KKyAgICAgICAgICAgIC0gQWRkcmVzc2VkIGNoZWNrX3Bh
dGNoKCkgRklYTUUgdG8gc2hhcmUgY29kZSB3aXRoIHByb2Nlc3NfZmlsZSgpLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAg
IC0gQWRkZWQgUHJvY2Vzc29yRGlzcGF0Y2hlclNraXBUZXN0IGNsYXNzLgorICAgICAgICAgIC0g
QWRkZWQgUHJvY2Vzc29yRGlzcGF0Y2hlckRpc3BhdGNoVGVzdCBjbGFzcy4KKyAgICAgICAgICAt
IEFkZGVkIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QgY2xhc3MuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weToKKyAgICAgICAgICAtIFJlbmFtZWQgcHJv
Y2Vzc19maWxlX2RhdGEoKSB0byBfcHJvY2Vzc19saW5lcy4KKyAgICAgICAgICAtIFJlbW92ZWQg
cHJvY2Vzc19maWxlKCkgKG1vdmVkIGxvZ2ljIHRvIGNoZWNrZXIucHkpLgorICAgICAgICAgIC0g
UmVtb3ZlZCBjYW5faGFuZGxlKCkgKG1vdmVkIGxvZ2ljIHRvIGNoZWNrZXIucHkpLgorICAgICAg
ICAgIC0gQWRkZWQgQ3BwUHJvY2Vzc29yIGNsYXNzLgorICAgICAgICAgIC0gUmVtb3ZlZCBpc19l
eGVtcHQoKSAobW92ZWQgbG9naWMgdG8gY2hlY2tlci5weSkuCisgICAgICAgICAgLSBBZGRlZCBw
cm9jZXNzX2ZpbGVfZGF0YSgpIGJhY2sgYXMgYSB3cmFwcGVyIGZ1bmN0aW9uLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jcHBfc3R5bGVfdW5pdHRlc3QucHk6CisgICAgICAg
ICAgLSBSZW1vdmVkIHRlc3RfY2FuX2hhbmRsZSgpLgorICAgICAgICAgIC0gUmVtb3ZlZCB0ZXN0
X2lzX2V4ZW1wdCgpLgorICAgICAgICAgIC0gQWRkZWQgQ3BwUHJvY2Vzc29yVGVzdCBjbGFzcy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weToKKyAgICAg
ICAgICAtIEFkZGVkIFRleHRQcm9jZXNzb3IgY2xhc3MuCisgICAgICAgICAgLSBSZW1vdmVkIHBy
b2Nlc3NfZmlsZSgpLgorICAgICAgICAgIC0gUmVtb3ZlZCBjYW5faGFuZGxlKCkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHk6CisgICAg
ICAgICAgLSBSZW1vdmVkIHRlc3RfY2FuX2hhbmRsZSgpLgorICAgICAgICAgIC0gQWRkZWQgVGV4
dFByb2Nlc3NvclRlc3QgY2xhc3MuCisKIDIwMTAtMDEtMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3
ZWJraXQub3JnPgogCiAgICAgICAgIE5vIHJldmlldywgcm9sbGluZyBvdXQgcjUzNTkzLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQppbmRleCAxNDc1ZTZhLi5hMmI1ODRmIDEw
MDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQpAQCAtNjgsNyArNjgsNyBAQCBk
ZWYgbWFpbigpOgogCiAgICAgaWYgZmlsZXM6CiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxl
czoKLSAgICAgICAgICAgIHN0eWxlX2NoZWNrZXIucHJvY2Vzc19maWxlKGZpbGVuYW1lKQorICAg
ICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVja19maWxlKGZpbGVuYW1lKQogCiAgICAgZWxzZToK
ICAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRoKCcuJykKQEAgLTg0LDcgKzg0LDcgQEAgZGVm
IG1haW4oKToKICAgICAgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaF9zaW5jZV9sb2Nh
bF9jb21taXQoY29tbWl0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGF0Y2ggPSBzY20u
Y3JlYXRlX3BhdGNoKCkKLSAgICAgICAgc3R5bGVfY2hlY2tlci5wcm9jZXNzX3BhdGNoKHBhdGNo
KQorICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX3BhdGNoKHBhdGNoKQogCiAgICAgc3lzLnN0
ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZFxuJyAlIHN0eWxlX2NoZWNrZXIuZXJy
b3JfY291bnQpCiAgICAgc3lzLmV4aXQoc3R5bGVfY2hlY2tlci5lcnJvcl9jb3VudCA+IDApCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggYzNm
NGRiMC4uNjhjNWFiZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlci5weQpAQCAtMjksMTUgKzI5LDE0IEBACiAKICIiIkZyb250IGVuZCBvZiBzb21lIHN0
eWxlLWNoZWNrZXIgbW9kdWxlcy4iIiIKIAotIyBGSVhNRTogTW92ZSBtb3JlIGNvZGUgZnJvbSBj
cHBfc3R5bGUgdG8gaGVyZS4KLQoraW1wb3J0IGNvZGVjcwogaW1wb3J0IGdldG9wdAogaW1wb3J0
IG9zLnBhdGgKIGltcG9ydCBzeXMKIAotaW1wb3J0IGNwcF9zdHlsZQotaW1wb3J0IHRleHRfc3R5
bGUKIGZyb20gZGlmZl9wYXJzZXIgaW1wb3J0IERpZmZQYXJzZXIKK2Zyb20gY3BwX3N0eWxlIGlt
cG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9zdHlsZSBpbXBvcnQgVGV4dFByb2Nlc3Nvcgog
CiAKICMgVGhlc2UgZGVmYXVsdHMgYXJlIHVzZWQgYnkgY2hlY2std2Via2l0LXN0eWxlLgpAQCAt
MTU4LDYgKzE1NywzMCBAQCBTVFlMRV9DQVRFR09SSUVTID0gWwogICAgIF0KIAogCisjIFNvbWUg
ZmlsZXMgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBjaGVja2luZyBzdHlsZS4gRm9yIGV4YW1wbGUs
CisjIFdlYktpdCBtYWludGFpbnMgc29tZSBmaWxlcyBpbiBNb3ppbGxhIHN0eWxlIG9uIHB1cnBv
c2UgdG8gZWFzZQorIyBmdXR1cmUgbWVyZ2VzLgorIworIyBJbmNsdWRlIGEgd2FybmluZyBmb3Ig
c2tpcHBlZCBmaWxlcyB0aGF0IGFyZSBsZXNzIG9idmlvdXMuCitTS0lQUEVEX0ZJTEVTX1dJVEhf
V0FSTklORyA9IFsKKyAgICAjIFRoZSBRdCBBUEkgYW5kIHRlc3RzIGRvIG5vdCBmb2xsb3cgV2Vi
S2l0IHN0eWxlLgorICAgICMgVGhleSBmb2xsb3cgUXQgc3R5bGUuIDopCisgICAgImd0azJkcmF3
aW5nLmMiLCAjIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKKyAgICAiZ3RrMmRy
YXdpbmcuaCIsICMgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuaAorICAgICJKYXZh
U2NyaXB0Q29yZS9xdC9hcGkvIiwKKyAgICAiV2ViS2l0L2d0ay90ZXN0cy8iLAorICAgICJXZWJL
aXQvcXQvQXBpLyIsCisgICAgIldlYktpdC9xdC90ZXN0cy8iLAorICAgIF0KKworCisjIERvbid0
IGluY2x1ZGUgYSB3YXJuaW5nIGZvciBza2lwcGVkIGZpbGVzIHRoYXQgYXJlIG1vcmUgY29tbW9u
CisjIGFuZCBtb3JlIG9idmlvdXMuCitTS0lQUEVEX0ZJTEVTX1dJVEhPVVRfV0FSTklORyA9IFsK
KyAgICAiTGF5b3V0VGVzdHMvIgorICAgIF0KKworCiBkZWYgd2Via2l0X2FyZ3VtZW50X2RlZmF1
bHRzKCk6CiAgICAgIiIiUmV0dXJuIHRoZSBEZWZhdWx0QXJndW1lbnRzIGluc3RhbmNlIGZvciB1
c2UgYnkgY2hlY2std2Via2l0LXN0eWxlLiIiIgogICAgIHJldHVybiBBcmd1bWVudERlZmF1bHRz
KFdFQktJVF9ERUZBVUxUX09VVFBVVF9GT1JNQVQsCkBAIC02MTksNiArNjQyLDEwNCBAQCBjbGFz
cyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogICAgICAgICByZXR1cm4gKGZpbGVuYW1lcywgb3B0
aW9ucykKIAogCisjIEVudW0tbGlrZSBpZGlvbQorY2xhc3MgRmlsZVR5cGU6CisKKyAgICBOT05F
ID0gMQorICAgICMgQWxwaGFiZXRpemUgcmVtYWluaW5nIHR5cGVzCisgICAgQ1BQID0gMgorICAg
IFRFWFQgPSAzCisKKworY2xhc3MgUHJvY2Vzc29yRGlzcGF0Y2hlcihvYmplY3QpOgorCisgICAg
IiIiU3VwcG9ydHMgZGV0ZXJtaW5pbmcgd2hldGhlciBhbmQgaG93IHRvIGNoZWNrIHN0eWxlLCBi
YXNlZCBvbiBwYXRoLiIiIgorCisgICAgY3BwX2ZpbGVfZXh0ZW5zaW9ucyA9ICgKKyAgICAgICAg
J2MnLAorICAgICAgICAnY3BwJywKKyAgICAgICAgJ2gnLAorICAgICAgICApCisKKyAgICB0ZXh0
X2ZpbGVfZXh0ZW5zaW9ucyA9ICgKKyAgICAgICAgJ2NzcycsCisgICAgICAgICdodG1sJywKKyAg
ICAgICAgJ2lkbCcsCisgICAgICAgICdqcycsCisgICAgICAgICdtbScsCisgICAgICAgICdwaHAn
LAorICAgICAgICAncG0nLAorICAgICAgICAncHknLAorICAgICAgICAndHh0JywKKyAgICAgICAg
KQorCisgICAgZGVmIF9maWxlX2V4dGVuc2lvbihzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAi
IiJSZXR1cm4gdGhlIGZpbGUgZXh0ZW5zaW9uIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LiIiIgor
ICAgICAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlX3BhdGgpWzFdLmxzdHJpcCgiLiIp
CisKKyAgICBkZWYgc2hvdWxkX3NraXBfd2l0aF93YXJuaW5nKHNlbGYsIGZpbGVfcGF0aCk6Cisg
ICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBmaWxlIHNob3VsZCBiZSBza2lwcGVk
IHdpdGggYSB3YXJuaW5nLiIiIgorICAgICAgICBmb3Igc2tpcHBlZF9maWxlIGluIFNLSVBQRURf
RklMRVNfV0lUSF9XQVJOSU5HOgorICAgICAgICAgICAgaWYgZmlsZV9wYXRoLmZpbmQoc2tpcHBl
ZF9maWxlKSA+PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVy
biBGYWxzZQorCisgICAgZGVmIHNob3VsZF9za2lwX3dpdGhvdXRfd2FybmluZyhzZWxmLCBmaWxl
X3BhdGgpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gZmlsZSBzaG91bGQg
YmUgc2tpcHBlZCB3aXRob3V0IGEgd2FybmluZy4iIiIKKyAgICAgICAgZm9yIHNraXBwZWRfZmls
ZSBpbiBTS0lQUEVEX0ZJTEVTX1dJVEhPVVRfV0FSTklORzoKKyAgICAgICAgICAgIGlmIGZpbGVf
cGF0aC5maW5kKHNraXBwZWRfZmlsZSkgPj0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfZmlsZV90eXBlKHNlbGYsIGZpbGVf
cGF0aCk6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZSB0eXBlIGNvcnJlc3BvbmRpbmcgdG8g
dGhlIGdpdmVuIGZpbGUuIiIiCisgICAgICAgIGZpbGVfZXh0ZW5zaW9uID0gc2VsZi5fZmlsZV9l
eHRlbnNpb24oZmlsZV9wYXRoKQorCisgICAgICAgIGlmIChmaWxlX2V4dGVuc2lvbiBpbiBzZWxm
LmNwcF9maWxlX2V4dGVuc2lvbnMpIG9yIChmaWxlX3BhdGggPT0gJy0nKToKKyAgICAgICAgICAg
ICMgRklYTUU6IERvIHNvbWV0aGluZyBhYm91dCB0aGUgY29tbWVudCBiZWxvdyBhbmQgdGhlIGlz
c3VlIGl0CisgICAgICAgICAgICAjICAgICAgICByYWlzZXMgc2luY2UgY3BwX3N0eWxlIGFscmVh
ZHkgcmVsaWVzIG9uIHRoZSBleHRlbnNpb24uCisgICAgICAgICAgICAjCisgICAgICAgICAgICAj
IFRyZWF0IHN0ZGluIGFzIEMrKy4gU2luY2UgdGhlIGV4dGVuc2lvbiBpcyB1bmtub3duIHdoZW4K
KyAgICAgICAgICAgICMgcmVhZGluZyBmcm9tIHN0ZGluLCBjcHBfc3R5bGUgdGVzdHMgc2hvdWxk
IG5vdCByZWx5IG9uCisgICAgICAgICAgICAjIHRoZSBleHRlbnNpb24uCisgICAgICAgICAgICBy
ZXR1cm4gRmlsZVR5cGUuQ1BQCisgICAgICAgIGVsaWYgKCJDaGFuZ2VMb2ciIGluIGZpbGVfcGF0
aAorICAgICAgICAgICAgICBvciAiV2ViS2l0VG9vbHMvU2NyaXB0cy8iIGluIGZpbGVfcGF0aAor
ICAgICAgICAgICAgICBvciBmaWxlX2V4dGVuc2lvbiBpbiBzZWxmLnRleHRfZmlsZV9leHRlbnNp
b25zKToKKyAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5URVhUCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuTk9ORQorCisgICAgZGVmIF9jcmVhdGVfcHJvY2Vz
c29yKHNlbGYsIGZpbGVfdHlwZSwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IsIHZlcmJv
c2l0eSk6CisgICAgICAgICIiIkluc3RhbnRpYXRlIGFuZCByZXR1cm4gYSBzdHlsZSBwcm9jZXNz
b3IgYmFzZWQgb24gZmlsZSB0eXBlLiIiIgorICAgICAgICBpZiBmaWxlX3R5cGUgPT0gRmlsZVR5
cGUuTk9ORToKKyAgICAgICAgICAgIHByb2Nlc3NvciA9IE5vbmUKKyAgICAgICAgZWxpZiBmaWxl
X3R5cGUgPT0gRmlsZVR5cGUuQ1BQOgorICAgICAgICAgICAgZmlsZV9leHRlbnNpb24gPSBzZWxm
Ll9maWxlX2V4dGVuc2lvbihmaWxlX3BhdGgpCisgICAgICAgICAgICBwcm9jZXNzb3IgPSBDcHBQ
cm9jZXNzb3IoZmlsZV9wYXRoLCBmaWxlX2V4dGVuc2lvbiwgaGFuZGxlX3N0eWxlX2Vycm9yLCB2
ZXJib3NpdHkpCisgICAgICAgIGVsaWYgZmlsZV90eXBlID09IEZpbGVUeXBlLlRFWFQ6CisgICAg
ICAgICAgICBwcm9jZXNzb3IgPSBUZXh0UHJvY2Vzc29yKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxl
X2Vycm9yKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52
YWxpZCBmaWxlIHR5cGUgIiUoZmlsZV90eXBlKXMiOiB0aGUgb25seSB2YWxpZCBmaWxlIHR5cGVz
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZSAlKE5PTkUpcywgJShDUFApcywg
YW5kICUoVEVYVClzLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB7ImZpbGVfdHlw
ZSI6IGZpbGVfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5PTkUiOiBG
aWxlVHlwZS5OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ1BQIjogRmls
ZVR5cGUuQ1BQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEVYVCI6IEZpbGVU
eXBlLlRFWFR9KQorCisgICAgICAgIHJldHVybiBwcm9jZXNzb3IKKworICAgIGRlZiBkaXNwYXRj
aF9wcm9jZXNzb3Ioc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IsIHZlcmJvc2l0
eSk6CisgICAgICAgICIiIkluc3RhbnRpYXRlIGFuZCByZXR1cm4gYSBzdHlsZSBwcm9jZXNzb3Ig
YmFzZWQgb24gZmlsZSBwYXRoLiIiIgorICAgICAgICBmaWxlX3R5cGUgPSBzZWxmLl9maWxlX3R5
cGUoZmlsZV9wYXRoKQorCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuX2NyZWF0ZV9wcm9jZXNz
b3IoZmlsZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
YW5kbGVfc3R5bGVfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmVyYm9zaXR5KQorICAgICAgICByZXR1cm4gcHJvY2Vzc29yCisKKwogY2xhc3MgU3R5
bGVDaGVja2VyKG9iamVjdCk6CiAKICAgICAiIiJTdXBwb3J0cyBjaGVja2luZyBzdHlsZSBpbiBm
aWxlcyBhbmQgcGF0Y2hlcy4KQEAgLTYzMiwyMCArNzUzLDI1IEBAIGNsYXNzIFN0eWxlQ2hlY2tl
cihvYmplY3QpOgogCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywg
d3JpdGVfZXJyb3I9c3lzLnN0ZGVyci53cml0ZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9w
dGlvbnMsIHN0ZGVycl93cml0ZT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgU3R5bGVDaGVj
a2VyIGluc3RhbmNlLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgb3B0aW9uczogU2VlIG9w
dGlvbnMgYXR0cmlidXRlLgogICAgICAgICAgIHN0ZGVycl93cml0ZTogQSBmdW5jdGlvbiB0aGF0
IHRha2VzIGEgc3RyaW5nIGFzIGEgcGFyYW1ldGVyCiAgICAgICAgICAgICAgICAgICAgICAgICBh
bmQgdGhhdCBpcyBjYWxsZWQgd2hlbiBhIHN0eWxlIGVycm9yIG9jY3Vycy4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIERlZmF1bHRzIHRvIHN5cy5zdGRlcnIud3JpdGUuIFRoaXMgc2hvdWxkIGJl
CisgICAgICAgICAgICAgICAgICAgICAgICB1c2VkIG9ubHkgZm9yIHVuaXQgdGVzdHMuCiAKICAg
ICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3dyaXRlX2Vycm9yID0gd3JpdGVfZXJyb3IKLSAgICAg
ICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucworICAgICAgICBpZiBzdGRlcnJfd3JpdGUgaXMgTm9u
ZToKKyAgICAgICAgICAgIHN0ZGVycl93cml0ZSA9IHN5cy5zdGRlcnIud3JpdGUKKworICAgICAg
ICBzZWxmLl9zdGRlcnJfd3JpdGUgPSBzdGRlcnJfd3JpdGUKICAgICAgICAgc2VsZi5lcnJvcl9j
b3VudCA9IDAKKyAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogCi0gICAgZGVmIF9oYW5k
bGVfZXJyb3Ioc2VsZiwgZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5j
ZSwgbWVzc2FnZSk6CisgICAgZGVmIF9oYW5kbGVfc3R5bGVfZXJyb3Ioc2VsZiwgZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6CiAgICAgICAgICIi
IkhhbmRsZSB0aGUgb2NjdXJyZW5jZSBvZiBhIHN0eWxlIGVycm9yIHdoaWxlIGNoZWNraW5nLgog
CiAgICAgICAgIENoZWNrIHdoZXRoZXIgYW4gZXJyb3Igc2hvdWxkIGJlIHJlcG9ydGVkLiBJZiBz
bywgaW5jcmVtZW50IHRoZQpAQCAtNjc1LDM3ICs4MDEsMTA0IEBAIGNsYXNzIFN0eWxlQ2hlY2tl
cihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICIl
czolczogICVzICBbJXNdIFslZF1cbiIKIAotICAgICAgICBzZWxmLl93cml0ZV9lcnJvcihmb3Jt
YXRfc3RyaW5nICUgKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbWVzc2FnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCisg
ICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZShmb3JtYXRfc3RyaW5nICUgKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2F0ZWdvcnksIGNvbmZpZGVuY2UpKQogCi0gICAgZGVmIHByb2Nlc3NfZmlsZShzZWxm
LCBmaWxlbmFtZSk6Ci0gICAgICAgICIiIkNoZWNrcyBzdHlsZSBmb3IgdGhlIHNwZWNpZmllZCBm
aWxlLgorICAgIGRlZiBfcHJvY2Vzc19maWxlKHNlbGYsIHByb2Nlc3NvciwgZmlsZV9wYXRoLCBo
YW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICAiIiJQcm9jZXNzIHRoZSBmaWxlIHVzaW5nIHRo
ZSBnaXZlbiBwcm9jZXNzb3IuIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgU3VwcG9y
dCB0aGUgVU5JWCBjb252ZW50aW9uIG9mIHVzaW5nICItIiBmb3Igc3RkaW4uICBOb3RlIHRoYXQK
KyAgICAgICAgICAgICMgd2UgYXJlIG5vdCBvcGVuaW5nIHRoZSBmaWxlIHdpdGggdW5pdmVyc2Fs
IG5ld2xpbmUgc3VwcG9ydAorICAgICAgICAgICAgIyAod2hpY2ggY29kZWNzIGRvZXNuJ3Qgc3Vw
cG9ydCBhbnl3YXkpLCBzbyB0aGUgcmVzdWx0aW5nIGxpbmVzIGRvCisgICAgICAgICAgICAjIGNv
bnRhaW4gdHJhaWxpbmcgJ1xyJyBjaGFyYWN0ZXJzIGlmIHdlIGFyZSByZWFkaW5nIGEgZmlsZSB0
aGF0CisgICAgICAgICAgICAjIGhhcyBDUkxGIGVuZGluZ3MuCisgICAgICAgICAgICAjIElmIGFm
dGVyIHRoZSBzcGxpdCBhIHRyYWlsaW5nICdccicgaXMgcHJlc2VudCwgaXQgaXMgcmVtb3ZlZAor
ICAgICAgICAgICAgIyBiZWxvdy4gSWYgaXQgaXMgbm90IGV4cGVjdGVkIHRvIGJlIHByZXNlbnQg
KGkuZS4gb3MubGluZXNlcCAhPQorICAgICAgICAgICAgIyAnXHJcbicgYXMgaW4gV2luZG93cyks
IGEgd2FybmluZyBpcyBpc3N1ZWQgYmVsb3cgaWYgdGhpcyBmaWxlCisgICAgICAgICAgICAjIGlz
IHByb2Nlc3NlZC4KKyAgICAgICAgICAgIGlmIGZpbGVfcGF0aCA9PSAnLSc6CisgICAgICAgICAg
ICAgICAgbGluZXMgPSBjb2RlY3MuU3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHJl
YWRlcigndXRmOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlJykucmVhZCgpLnNwbGl0KCdcbicp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxpbmVzID0gY29kZWNzLm9wZW4o
ZmlsZV9wYXRoLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQoJ1xuJykKKwor
ICAgICAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgICAgICMg
UmVtb3ZlIHRyYWlsaW5nICdccicuCisgICAgICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFu
Z2UobGVuKGxpbmVzKSk6CisgICAgICAgICAgICAgICAgaWYgbGluZXNbbGluZV9udW1iZXJdLmVu
ZHN3aXRoKCdccicpOgorICAgICAgICAgICAgICAgICAgICBsaW5lc1tsaW5lX251bWJlcl0gPSBs
aW5lc1tsaW5lX251bWJlcl0ucnN0cmlwKCdccicpCisgICAgICAgICAgICAgICAgICAgIGNhcnJp
YWdlX3JldHVybl9mb3VuZCA9IFRydWUKKworICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAg
ICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgiU2tpcHBpbmcgaW5wdXQgJyVzJzogQ2FuJ3Qgb3Bl
biBmb3IgcmVhZGluZ1xuIiAlIGZpbGVfcGF0aCkKKyAgICAgICAgICAgIHJldHVybgogCi0gICAg
ICAgIElmIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUgaXMgJy0nLCBhcHBsaWVzIGNwcF9zdHlsZSB0
byB0aGUgc3RhbmRhcmQgaW5wdXQuCisgICAgICAgIHByb2Nlc3Nvci5wcm9jZXNzKGxpbmVzKQor
CisgICAgICAgIGlmIGNhcnJpYWdlX3JldHVybl9mb3VuZCBhbmQgb3MubGluZXNlcCAhPSAnXHJc
bic6CisgICAgICAgICAgICAjIEZJWE1FOiBNYWtlIHN1cmUgdGhpcyBlcnJvciBhbHNvIHNob3dz
IHVwIHdoZW4gY2hlY2tpbmcKKyAgICAgICAgICAgICMgICAgICAgIHBhdGNoZXMsIGlmIGFwcHJv
cHJpYXRlLgorICAgICAgICAgICAgIworICAgICAgICAgICAgIyBVc2UgMCBmb3IgbGluZV9udW1i
ZXIgc2luY2Ugb3V0cHV0dGluZyBvbmx5IG9uZSBlcnJvciBmb3IKKyAgICAgICAgICAgICMgcG90
ZW50aWFsbHkgc2V2ZXJhbCBsaW5lcy4KKyAgICAgICAgICAgIGhhbmRsZV9zdHlsZV9lcnJvcihm
aWxlX3BhdGgsIDAsICd3aGl0ZXNwYWNlL25ld2xpbmUnLCAxLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdPbmUgb3IgbW9yZSB1bmV4cGVjdGVkIFxcciAoXk0pIGZvdW5kOycKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmV0dGVyIHRvIHVzZSBvbmx5IGEgXFxuJykK
KworICAgIGRlZiBjaGVja19maWxlKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9y
PU5vbmUsIHByb2Nlc3NfZmlsZT1Ob25lKToKKyAgICAgICAgIiIiQ2hlY2sgc3R5bGUgaW4gdGhl
IGdpdmVuIGZpbGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBmaWxlX3BhdGg6IEEgc3Ry
aW5nIHRoYXQgaXMgdGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gcHJvY2Vzcy4KKyAgICAgICAgICBo
YW5kbGVfc3R5bGVfZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gYSBzdHlsZSBlcnJv
cgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2NjdXJzLiBUaGlzIHBhcmFtZXRlciBp
cyBtZWFudCBmb3IgaW50ZXJuYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB3
aXRoaW4gdGhpcyBjbGFzcy4gRGVmYXVsdHMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZSBlcnJvciBoYW5kbGluZyBtZXRob2Qgb2YgdGhpcyBjbGFzcy4KKyAgICAg
ICAgICBwcm9jZXNzX2ZpbGU6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHRvIHByb2Nlc3MgdGhlIGZp
bGUuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBzaG91bGQgYmUgdXNl
ZCBvbmx5IGZvciB1bml0IHRlc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMg
dG8gdGhlIGZpbGUgcHJvY2Vzc2luZyBtZXRob2Qgb2YgdGhpcyBjbGFzcy4KIAogICAgICAgICAi
IiIKLSAgICAgICAgaWYgY3BwX3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpIG9yIGZpbGVuYW1l
ID09ICctJzoKLSAgICAgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHNl
bGYuX2hhbmRsZV9lcnJvciwgc2VsZi5vcHRpb25zLnZlcmJvc2l0eSkKLSAgICAgICAgZWxpZiB0
ZXh0X3N0eWxlLmNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgdGV4dF9zdHlsZS5w
cm9jZXNzX2ZpbGUoZmlsZW5hbWUsIHNlbGYuX2hhbmRsZV9lcnJvcikKKyAgICAgICAgaWYgaGFu
ZGxlX3N0eWxlX2Vycm9yIGlzIE5vbmU6CisgICAgICAgICAgICBoYW5kbGVfc3R5bGVfZXJyb3Ig
PSBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IKIAotICAgIGRlZiBwcm9jZXNzX3BhdGNoKHNlbGYs
IHBhdGNoX3N0cmluZyk6Ci0gICAgICAgICIiIkRvZXMgbGludCBvbiBhIHNpbmdsZSBwYXRjaC4K
KyAgICAgICAgaWYgcHJvY2Vzc19maWxlIGlzIE5vbmU6CisgICAgICAgICAgICBwcm9jZXNzX2Zp
bGUgPSBzZWxmLl9wcm9jZXNzX2ZpbGUKKworICAgICAgICBkaXNwYXRjaGVyID0gUHJvY2Vzc29y
RGlzcGF0Y2hlcigpCisKKyAgICAgICAgaWYgZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRob3V0
X3dhcm5pbmcoZmlsZV9wYXRoKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBkaXNw
YXRjaGVyLnNob3VsZF9za2lwX3dpdGhfd2FybmluZyhmaWxlX3BhdGgpOgorICAgICAgICAgICAg
c2VsZi5fc3RkZXJyX3dyaXRlKCdJZ25vcmluZyAiJXMiOiB0aGlzIGZpbGUgaXMgZXhlbXB0IGZy
b20gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3R5bGUgZ3VpZGUuXG4i
ICUgZmlsZV9wYXRoKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgdmVyYm9zaXR5ID0g
c2VsZi5vcHRpb25zLnZlcmJvc2l0eQorICAgICAgICBwcm9jZXNzb3IgPSBkaXNwYXRjaGVyLmRp
c3BhdGNoX3Byb2Nlc3NvcihmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9zdHlsZV9lcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5KQorICAgICAgICBw
cm9jZXNzX2ZpbGUocHJvY2Vzc29yLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKKwor
ICAgIGRlZiBjaGVja19wYXRjaChzZWxmLCBwYXRjaF9zdHJpbmcpOgorICAgICAgICAiIiJDaGVj
ayBzdHlsZSBpbiB0aGUgZ2l2ZW4gcGF0Y2guCiAKICAgICAgICAgQXJnczoKLSAgICAgICAgICBw
YXRjaF9zdHJpbmc6IEEgc3RyaW5nIG9mIGEgcGF0Y2guCisgICAgICAgICAgcGF0Y2hfc3RyaW5n
OiBBIHN0cmluZyB0aGF0IGlzIGEgcGF0Y2ggc3RyaW5nLgogCiAgICAgICAgICIiIgogICAgICAg
ICBwYXRjaCA9IERpZmZQYXJzZXIocGF0Y2hfc3RyaW5nLnNwbGl0bGluZXMoKSkKLSAgICAgICAg
Zm9yIGZpbGVuYW1lLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygpOgotICAgICAgICAg
ICAgZmlsZV9leHRlbnNpb24gPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVsxXQorICAgICAg
ICBmb3IgZmlsZV9wYXRoLCBkaWZmIGluIHBhdGNoLmZpbGVzLml0ZXJpdGVtcygpOgogICAgICAg
ICAgICAgbGluZV9udW1iZXJzID0gc2V0KCkKIAotICAgICAgICAgICAgZGVmIGVycm9yX2Zvcl9w
YXRjaChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdl
KToKKyAgICAgICAgICAgIGRlZiBlcnJvcl9mb3JfcGF0Y2goZmlsZV9wYXRoLCBsaW5lX251bWJl
ciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgogICAgICAgICAgICAgICAgICIiIldy
YXBwZXIgZnVuY3Rpb24gb2YgY3BwX3N0eWxlLmVycm9yIGZvciBwYXRjaGVzLgogCiAgICAgICAg
ICAgICAgICAgVGhpcyBmdW5jdGlvbiBvdXRwdXRzIGVycm9ycyBvbmx5IGlmIHRoZSBsaW5lIG51
bWJlcgogICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIGxpbmVzIHdoaWNoIGFyZSBtb2Rp
ZmllZCBvciBhZGRlZC4KKwogICAgICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgICAgIGlm
IG5vdCBsaW5lX251bWJlcnM6CiAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGRpZmYu
bGluZXM6CkBAIC03MTQsMTEgKzkwNywxMCBAQCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lWzBdOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmVfbnVtYmVycy5hZGQobGluZVsxXSkKIAorICAgICAgICAgICAgICAg
ICMgRklYTUU6IE1ha2Ugc3VyZSBlcnJvcnMgaGF2aW5nIGxpbmUgbnVtYmVyIHplcm8gYXJlCisg
ICAgICAgICAgICAgICAgIyAgICAgICAgbG9nZ2VkIC0tIGxpa2UgY2FycmlhZ2UtcmV0dXJuIGVy
cm9ycy4KICAgICAgICAgICAgICAgICBpZiBsaW5lX251bWJlciBpbiBsaW5lX251bWJlcnM6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9lcnJvcihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IoZmlsZV9wYXRoLCBsaW5lX251bWJlciwgY2F0ZWdvcnks
IGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmlsZShmaWxl
X3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcj1lcnJvcl9mb3JfcGF0Y2gpCiAKLSAgICAgICAgICAg
ICMgRklYTUU6IFNoYXJlIHRoaXMgY29kZSB3aXRoIHNlbGYucHJvY2Vzc19maWxlKCkuCi0gICAg
ICAgICAgICBpZiBjcHBfc3R5bGUuY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgICAgICAgICAg
ICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3JfZm9yX3BhdGNoLCBzZWxm
Lm9wdGlvbnMudmVyYm9zaXR5KQotICAgICAgICAgICAgZWxpZiB0ZXh0X3N0eWxlLmNhbl9oYW5k
bGUoZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIHRleHRfc3R5bGUucHJvY2Vzc19maWxlKGZp
bGVuYW1lLCBlcnJvcl9mb3JfcGF0Y2gpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXggNWE2ZTY1MC4uMjg5MDRh
OSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcl91bml0dGVzdC5weQpAQCAtMzgsOCArMzgsMTEgQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGlt
cG9ydCBjaGVja2VyIGFzIHN0eWxlCiBmcm9tIGNoZWNrZXIgaW1wb3J0IENhdGVnb3J5RmlsdGVy
Citmcm9tIGNoZWNrZXIgaW1wb3J0IFByb2Nlc3NvckRpc3BhdGNoZXIKIGZyb20gY2hlY2tlciBp
bXBvcnQgUHJvY2Vzc29yT3B0aW9ucwogZnJvbSBjaGVja2VyIGltcG9ydCBTdHlsZUNoZWNrZXIK
K2Zyb20gY3BwX3N0eWxlIGltcG9ydCBDcHBQcm9jZXNzb3IKK2Zyb20gdGV4dF9zdHlsZSBpbXBv
cnQgVGV4dFByb2Nlc3NvcgogCiBjbGFzcyBDYXRlZ29yeUZpbHRlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCkBAIC0zNTIsMjUgKzM1NSwxODkgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmlsZXMsIFsn
Zm9vLmNwcCcsICdiYXIuY3BwJ10pCiAKIAorY2xhc3MgUHJvY2Vzc29yRGlzcGF0Y2hlclNraXBU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIHRoZSAic2hvdWxkIHNraXAi
IG1ldGhvZHMgb2YgdGhlIFByb2Nlc3NvckRpc3BhdGNoZXIgY2xhc3MuIiIiCisKKyAgICBkZWYg
dGVzdF9zaG91bGRfc2tpcF93aXRoX3dhcm5pbmcoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc2hv
dWxkX3NraXBfd2l0aF93YXJuaW5nKCkuIiIiCisgICAgICAgIGRpc3BhdGNoZXIgPSBQcm9jZXNz
b3JEaXNwYXRjaGVyKCkKKworICAgICAgICAjIENoZWNrIGEgbm9uLXNraXBwZWQgZmlsZS4KKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLnNob3VsZF9za2lwX3dpdGhfd2Fybmlu
ZygiZm9vLnR4dCIpKQorCisgICAgICAgICMgQ2hlY2sgc2tpcHBlZCBmaWxlcy4KKyAgICAgICAg
cGF0aHNfdG9fc2tpcCA9IFsKKyAgICAgICAgICAgImd0azJkcmF3aW5nLmMiLAorICAgICAgICAg
ICAiZ3RrMmRyYXdpbmcuaCIsCisgICAgICAgICAgICJKYXZhU2NyaXB0Q29yZS9xdC9hcGkvcXNj
cmlwdGVuZ2luZV9wLmgiLAorICAgICAgICAgICAiV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRy
YXdpbmcuYyIsCisgICAgICAgICAgICJXZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5o
IiwKKyAgICAgICAgICAgIldlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jIiwKKyAgICAgICAgICAg
IldlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaCIsCisgICAgICAgICAgICJXZWJLaXQvcXQvdGVzdHMv
cXdlYnNlY3VyaXR5b3JpZ2luL3RzdF9xd2Vic2VjdXJpdHlvcmlnaW4uY3BwIiwKKyAgICAgICAg
ICAgIF0KKworICAgICAgICBmb3IgcGF0aCBpbiBwYXRoc190b19za2lwOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKGRpc3BhdGNoZXIuc2hvdWxkX3NraXBfd2l0aF93YXJuaW5nKHBhdGgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGVja2luZzogIiArIHBhdGgpCisKKyAg
ICBkZWYgdGVzdF9zaG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcoc2VsZik6CisgICAgICAgICIi
IlRlc3Qgc2hvdWxkX3NraXBfd2l0aG91dF93YXJuaW5nKCkuIiIiCisgICAgICAgIGRpc3BhdGNo
ZXIgPSBQcm9jZXNzb3JEaXNwYXRjaGVyKCkKKworICAgICAgICAjIENoZWNrIGEgbm9uLXNraXBw
ZWQgZmlsZS4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLnNob3VsZF9za2lw
X3dpdGhvdXRfd2FybmluZygiZm9vLnR4dCIpKQorCisgICAgICAgICMgQ2hlY2sgc2tpcHBlZCBm
aWxlcy4KKyAgICAgICAgcGF0aHNfdG9fc2tpcCA9IFsKKyAgICAgICAgICAgIyBMYXlvdXRUZXN0
cyBmb2xkZXIKKyAgICAgICAgICAgIkxheW91dFRlc3RzL2Zvby50eHQiLAorICAgICAgICAgICAg
XQorCisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzX3RvX3NraXA6CisgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoZGlzcGF0Y2hlci5zaG91bGRfc2tpcF93aXRob3V0X3dhcm5pbmcocGF0aCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNraW5nOiAiICsgcGF0aCkKKworCitj
bGFzcyBQcm9jZXNzb3JEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KworICAgICIiIlRlc3RzIGRpc3BhdGNoX3Byb2Nlc3NvcigpIG1ldGhvZCBvZiBQcm9jZXNzb3JE
aXNwYXRjaGVyIGNsYXNzLiIiIgorCisgICAgZGVmIG1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNl
bGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgZGlzcGF0Y2hfcHJvY2Vzc29yKHNlbGYsIGZp
bGVfcGF0aCk6CisgICAgICAgICIiIkNhbGwgZGlzcGF0Y2hfcHJvY2Vzc29yKCkgd2l0aCB0aGUg
Z2l2ZW4gZmlsZSBwYXRoLiIiIgorICAgICAgICBkaXNwYXRjaGVyID0gUHJvY2Vzc29yRGlzcGF0
Y2hlcigpCisgICAgICAgIHByb2Nlc3NvciA9IGRpc3BhdGNoZXIuZGlzcGF0Y2hfcHJvY2Vzc29y
KGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTMpCisgICAgICAgIHJldHVy
biBwcm9jZXNzb3IKKworICAgIGRlZiBhc3NlcnRfcHJvY2Vzc29yX25vbmUoc2VsZiwgZmlsZV9w
YXRoKToKKyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlz
IE5vbmUuIiIiCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuZGlzcGF0Y2hfcHJvY2Vzc29yKGZp
bGVfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3NvciBpcyBOb25lLCAnQ2hl
Y2tpbmc6ICIlcyInICUgZmlsZV9wYXRoKQorCisgICAgZGVmIGFzc2VydF9wcm9jZXNzb3Ioc2Vs
ZiwgZmlsZV9wYXRoLCBleHBlY3RlZF9jbGFzcyk6CisgICAgICAgICIiIkFzc2VydCB0aGUgdHlw
ZSBvZiB0aGUgZGlzcGF0Y2hlZCBwcm9jZXNzb3IuIiIiCisgICAgICAgIHByb2Nlc3NvciA9IHNl
bGYuZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAgICAgZ290X2NsYXNzID0gcHJv
Y2Vzc29yLl9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhnb3RfY2xhc3MsIGV4
cGVjdGVkX2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnRm9yIHBhdGggIiUoZmls
ZV9wYXRoKXMiIGdvdCAlKGdvdF9jbGFzcylzIHdoZW4gJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZXhwZWN0aW5nICUoZXhwZWN0ZWRfY2xhc3Mpcy4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICUgeyJmaWxlX3BhdGgiOiBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJnb3RfY2xhc3MiOiBnb3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJleHBlY3RlZF9jbGFzcyI6IGV4cGVjdGVkX2NsYXNzfSkKKworICAgIGRlZiBhc3NlcnRf
cHJvY2Vzc29yX2NwcChzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJBc3NlcnQgdGhhdCB0
aGUgZGlzcGF0Y2hlZCBwcm9jZXNzb3IgaXMgYSBDcHBQcm9jZXNzb3IuIiIiCisgICAgICAgIHNl
bGYuYXNzZXJ0X3Byb2Nlc3NvcihmaWxlX3BhdGgsIENwcFByb2Nlc3NvcikKKworICAgIGRlZiBh
c3NlcnRfcHJvY2Vzc29yX3RleHQoc2VsZiwgZmlsZV9wYXRoKToKKyAgICAgICAgIiIiQXNzZXJ0
IHRoYXQgdGhlIGRpc3BhdGNoZWQgcHJvY2Vzc29yIGlzIGEgVGV4dFByb2Nlc3Nvci4iIiIKKyAg
ICAgICAgc2VsZi5hc3NlcnRfcHJvY2Vzc29yKGZpbGVfcGF0aCwgVGV4dFByb2Nlc3NvcikKKwor
ICAgIGRlZiB0ZXN0X2NwcF9wYXRocyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwYXRocyB0aGF0
IHNob3VsZCBiZSBjaGVja2VkIGFzIEMrKy4iIiIKKyAgICAgICAgcGF0aHMgPSBbCisgICAgICAg
ICAgICAiLSIsCisgICAgICAgICAgICAiZm9vLmMiLAorICAgICAgICAgICAgImZvby5jcHAiLAor
ICAgICAgICAgICAgImZvby5oIiwKKyAgICAgICAgICAgIF0KKworICAgICAgICBmb3IgcGF0aCBp
biBwYXRoczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X3Byb2Nlc3Nvcl9jcHAocGF0aCkKKwor
ICAgICAgICAjIENoZWNrIHByb2Nlc3NvciBhdHRyaWJ1dGVzIG9uIGEgdHlwaWNhbCBpbnB1dC4K
KyAgICAgICAgZmlsZV9iYXNlID0gImZvbyIKKyAgICAgICAgZmlsZV9leHRlbnNpb24gPSAiYyIK
KyAgICAgICAgZmlsZV9wYXRoID0gZmlsZV9iYXNlICsgIi4iICsgZmlsZV9leHRlbnNpb24KKyAg
ICAgICAgc2VsZi5hc3NlcnRfcHJvY2Vzc29yX2NwcChmaWxlX3BhdGgpCisgICAgICAgIHByb2Nl
c3NvciA9IHNlbGYuZGlzcGF0Y2hfcHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfZXh0ZW5zaW9uLCBmaWxlX2V4dGVuc2lvbikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgZmlsZV9wYXRoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuaGFuZGxlX3N0eWxlX2Vycm9yLCBz
ZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw
cm9jZXNzb3IudmVyYm9zaXR5LCAzKQorICAgICAgICAjIENoZWNrICItIiBmb3IgZ29vZCBtZWFz
dXJlLgorICAgICAgICBmaWxlX2Jhc2UgPSAiLSIKKyAgICAgICAgZmlsZV9leHRlbnNpb24gPSAi
IgorICAgICAgICBmaWxlX3BhdGggPSBmaWxlX2Jhc2UKKyAgICAgICAgc2VsZi5hc3NlcnRfcHJv
Y2Vzc29yX2NwcChmaWxlX3BhdGgpCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuZGlzcGF0Y2hf
cHJvY2Vzc29yKGZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29y
LmZpbGVfZXh0ZW5zaW9uLCBmaWxlX2V4dGVuc2lvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMocHJvY2Vzc29yLmZpbGVfcGF0aCwgZmlsZV9wYXRoKQorCisgICAgZGVmIHRlc3RfdGV4dF9w
YXRocyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwYXRocyB0aGF0IHNob3VsZCBiZSBjaGVja2Vk
IGFzIHRleHQuIiIiCisgICAgICAgIHBhdGhzID0gWworICAgICAgICAgICAiQ2hhbmdlTG9nIiwK
KyAgICAgICAgICAgImZvby5jc3MiLAorICAgICAgICAgICAiZm9vLmh0bWwiLAorICAgICAgICAg
ICAiZm9vLmlkbCIsCisgICAgICAgICAgICJmb28uanMiLAorICAgICAgICAgICAiZm9vLm1tIiwK
KyAgICAgICAgICAgImZvby5waHAiLAorICAgICAgICAgICAiZm9vLnBtIiwKKyAgICAgICAgICAg
ImZvby5weSIsCisgICAgICAgICAgICJmb28udHh0IiwKKyAgICAgICAgICAgIkZvb0NoYW5nZUxv
Zy5iYWsiLAorICAgICAgICAgICAiV2ViQ29yZS9DaGFuZ2VMb2ciLAorICAgICAgICAgICAiV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyIsCisgICAgICAgICAgICJXZWJL
aXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdD1zdHlsZSIsCisgICAgICAgICAgICJXZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvdGV4dF9zdHlsZS5weSIsCisgICAgICAgICAgICBdCisKKyAg
ICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydF9wcm9jZXNz
b3JfdGV4dChwYXRoKQorCisgICAgICAgICMgQ2hlY2sgcHJvY2Vzc29yIGF0dHJpYnV0ZXMgb24g
YSB0eXBpY2FsIGlucHV0LgorICAgICAgICBmaWxlX2Jhc2UgPSAiZm9vIgorICAgICAgICBmaWxl
X2V4dGVuc2lvbiA9ICJjc3MiCisgICAgICAgIGZpbGVfcGF0aCA9IGZpbGVfYmFzZSArICIuIiAr
IGZpbGVfZXh0ZW5zaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0X3Byb2Nlc3Nvcl90ZXh0KGZpbGVf
cGF0aCkKKyAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5kaXNwYXRjaF9wcm9jZXNzb3IoZmlsZV9w
YXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCBmaWxl
X3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5oYW5kbGVfc3R5bGVf
ZXJyb3IsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCisKKyAgICBkZWYgdGVzdF9ub25l
X3BhdGhzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHBhdGhzIHRoYXQgaGF2ZSBubyBmaWxlIHR5
cGUuLiIiIgorICAgICAgICBwYXRocyA9IFsKKyAgICAgICAgICAgIk1ha2VmaWxlIiwKKyAgICAg
ICAgICAgImZvby5wbmciLAorICAgICAgICAgICAiZm9vLmV4ZSIsCisgICAgICAgICAgICBdCisK
KyAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydF9wcm9j
ZXNzb3Jfbm9uZShwYXRoKQorCisKIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLgogCiAgICAgQXR0
cmlidXRlczoKLSAgICAgIGVycm9yX21lc3NhZ2U6IEEgc3RyaW5nIHRoYXQgaXMgdGhlIGxhc3Qg
ZXJyb3IgbWVzc2FnZSByZXBvcnRlZAotICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIHRlc3Qg
U3R5bGVDaGVja2VyIGluc3RhbmNlLgorICAgICAgZXJyb3JfbWVzc2FnZXM6IEEgc3RyaW5nIGNv
bnRhaW5pbmcgYWxsIG9mIHRoZSB3YXJuaW5nIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgICAg
ICAgd3JpdHRlbiB0byB0aGUgbW9ja19zdGRlcnJfd3JpdGUgbWV0aG9kIG9mCisgICAgICAgICAg
ICAgICAgICAgICAgdGhpcyBjbGFzcy4KIAogICAgICIiIgogCi0gICAgZXJyb3JfbWVzc2FnZSA9
ICIiCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0g
IiIKIAotICAgIGRlZiBtb2NrX3dyaXRlX2Vycm9yKHNlbGYsIGVycm9yX21lc3NhZ2UpOgotICAg
ICAgICAiIiJTdG9yZSBhbiBlcnJvciBtZXNzYWdlIHdpdGhvdXQgcHJpbnRpbmcgaXQuIiIiCi0g
ICAgICAgIHNlbGYuZXJyb3JfbWVzc2FnZSA9IGVycm9yX21lc3NhZ2UKKyAgICBkZWYgbW9ja19z
dGRlcnJfd3JpdGUoc2VsZiwgZXJyb3JfbWVzc2FnZSk6CisgICAgICAgICIiIkEgbW9jayBzeXMu
c3RkZXJyLndyaXRlLiIiIgorICAgICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0gZXJyb3JfbWVz
c2FnZQorICAgICAgICBwYXNzCisKKyAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJyb3Ioc2Vs
Zik6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBzdHlsZV9jaGVja2VyKHNlbGYsIG9wdGlvbnMp
OgotICAgICAgICByZXR1cm4gU3R5bGVDaGVja2VyKG9wdGlvbnMsIHNlbGYubW9ja193cml0ZV9l
cnJvcikKKyAgICAgICAgcmV0dXJuIFN0eWxlQ2hlY2tlcihvcHRpb25zLCBzZWxmLm1vY2tfc3Rk
ZXJyX3dyaXRlKQogCiAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKICAgICAgICAgIiIiVGVzdCBf
X2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKQEAgLTM4MSw0MCArNTQ4LDE3MyBAQCBjbGFzcyBTdHls
ZUNoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoc3R5bGVfY2hlY2tlci5vcHRpb25zLCBvcHRpb25zKQogCiAgICAgZGVmIHdyaXRlX3NhbXBs
ZV9lcnJvcihzZWxmLCBzdHlsZV9jaGVja2VyLCBlcnJvcl9jb25maWRlbmNlKToKLSAgICAgICAg
IiIiV3JpdGUgYW4gZXJyb3IgdG8gdGhlIGdpdmVuIHN0eWxlX2NoZWNrZXIuIiIiCi0gICAgICAg
IHN0eWxlX2NoZWNrZXIuX2hhbmRsZV9lcnJvcihmaWxlbmFtZT0iZmlsZW5hbWUiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXI9MSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PSJjYXRlZ29yeSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWRlbmNlPWVycm9yX2NvbmZpZGVuY2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSJtZXNzYWdlIikKLQot
ICAgIGRlZiB0ZXN0X2hhbmRsZV9lcnJvcihzZWxmKToKLSAgICAgICAgIiIiVGVzdCBfaGFuZGxl
cl9lcnJvcigpIGZ1bmN0aW9uLiIiIgorICAgICAgICAiIiJXcml0ZSBhbiBlcnJvciB0byB0aGUg
Z2l2ZW4gc3R5bGUgY2hlY2tlci4iIiIKKyAgICAgICAgc3R5bGVfY2hlY2tlci5faGFuZGxlX3N0
eWxlX2Vycm9yKGZpbGVuYW1lPSJmaWxlbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lX251bWJlcj0xLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk9ImNhdGVnb3J5IiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZGVuY2U9ZXJyb3JfY29uZmlkZW5jZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Im1lc3NhZ2Ui
KQorCisgICAgZGVmIHRlc3RfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgorICAgICAgICAiIiJU
ZXN0IF9oYW5kbGVfc3R5bGVfZXJyb3IoKSBmdW5jdGlvbi4iIiIKICAgICAgICAgb3B0aW9ucyA9
IFByb2Nlc3Nvck9wdGlvbnMob3V0cHV0X2Zvcm1hdD0iZW1hY3MiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MykKICAgICAgICAgc3R5bGVfY2hlY2tlciA9
IHNlbGYuc3R5bGVfY2hlY2tlcihvcHRpb25zKQogCiAgICAgICAgICMgVmVyaWZ5IGluaXRpYWxp
emVkIHByb3Blcmx5LgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzdHlsZV9jaGVja2VyLmVy
cm9yX2NvdW50LCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3Nh
Z2UsICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAi
IikKIAogICAgICAgICAjIENoZWNrIHRoYXQgc2hvdWxkX3ByaW50X2Vycm9yIGlzIGdldHRpbmcg
Y2FsbGVkIGFwcHJvcHJpYXRlbHkuCiAgICAgICAgIHNlbGYud3JpdGVfc2FtcGxlX2Vycm9yKHN0
eWxlX2NoZWNrZXIsIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0eWxlX2NoZWNrZXIu
ZXJyb3JfY291bnQsIDApICMgRXJyb3IgY29uZmlkZW5jZSB0b28gbG93LgotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2UsICIiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAiIikKIAogICAgICAgICBzZWxmLndyaXRlX3Nh
bXBsZV9lcnJvcihzdHlsZV9jaGVja2VyLCAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
dHlsZV9jaGVja2VyLmVycm9yX2NvdW50LCAxKSAjIEVycm9yIGNvbmZpZGVuY2UganVzdCBoaWdo
IGVub3VnaC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5lcnJvcl9tZXNzYWdlLCAi
ZmlsZW5hbWU6MTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhzZWxmLmVycm9yX21lc3NhZ2VzLCAiZmlsZW5hbWU6MTogIG1lc3NhZ2UgIFtj
YXRlZ29yeV0gWzNdXG4iKQorCisgICAgICAgICMgQ2xlYXIgcHJldmlvdXMgZXJyb3JzLgorICAg
ICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0gIiIKIAogICAgICAgICAjIENoZWNrICJ2czciIG91
dHB1dCBmb3JtYXQuCiAgICAgICAgIHN0eWxlX2NoZWNrZXIub3B0aW9ucy5vdXRwdXRfZm9ybWF0
ID0gInZzNyIKICAgICAgICAgc2VsZi53cml0ZV9zYW1wbGVfZXJyb3Ioc3R5bGVfY2hlY2tlciwg
MykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3R5bGVfY2hlY2tlci5lcnJvcl9jb3VudCwg
MikgIyBFcnJvciBjb25maWRlbmNlIGp1c3QgaGlnaCBlbm91Z2guCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVzc2FnZSwgImZpbGVuYW1lKDEpOiAgbWVzc2FnZSAgW2Nh
dGVnb3J5XSBbM11cbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVz
c2FnZXMsICJmaWxlbmFtZSgxKTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQorCisKK2Ns
YXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAg
IiIiVGVzdCB0aGUgY2hlY2tfZmlsZSgpIG1ldGhvZCBvZiB0aGUgU3R5bGVDaGVja2VyIGNsYXNz
LgorCisgICAgVGhlIGNoZWNrX2ZpbGUoKSBtZXRob2QgY2FsbHMgaXRzIHByb2Nlc3NfZmlsZSBw
YXJhbWV0ZXIgd2hlbgorICAgIGdpdmVuIGEgZmlsZSB0aGF0IHNob3VsZCBub3QgYmUgc2tpcHBl
ZC4KKworICAgIFRoZSAiZ290XyoiIGF0dHJpYnV0ZXMgb2YgdGhpcyBjbGFzcyBhcmUgdGhlIHBh
cmFtZXRlcnMgcGFzc2VkCisgICAgdG8gcHJvY2Vzc19maWxlIGJ5IGNhbGxzIHRvIGNoZWNrX2Zp
bGUoKSBtYWRlIGJ5IHRoaXMgdGVzdAorICAgIGNsYXNzLiBUaGVzZSBhdHRyaWJ1dGVzIGFsbG93
IHVzIHRvIGNoZWNrIHRoZSBwYXJhbWV0ZXIgdmFsdWVzCisgICAgcGFzc2VkIGludGVybmFsbHkg
dG8gdGhlIHByb2Nlc3NfZmlsZSBmdW5jdGlvbi4KKworICAgIEF0dHJpYnV0ZXM6CisgICAgICBn
b3RfZmlsZV9wYXRoOiBUaGUgZmlsZV9wYXRoIHBhcmFtZXRlciBwYXNzZWQgYnkgY2hlY2tfZmls
ZSgpCisgICAgICAgICAgICAgICAgICAgICB0byBpdHMgcHJvY2Vzc19maWxlIHBhcmFtZXRlci4K
KyAgICAgIGdvdF9oYW5kbGVfc3R5bGVfZXJyb3I6IFRoZSBoYW5kbGVfc3R5bGVfZXJyb3IgcGFy
YW1ldGVyIHBhc3NlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgY2hlY2tfZmls
ZSgpIHRvIGl0cyBwcm9jZXNzX2ZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtZXRlci4KKyAgICAgIGdvdF9wcm9jZXNzb3I6IFRoZSBwcm9jZXNzb3IgcGFyYW1ldGVyIHBh
c3NlZCBieSBjaGVja19maWxlKCkgdG8KKyAgICAgICAgICAgICAgICAgICAgIGl0cyBwcm9jZXNz
X2ZpbGUgcGFyYW1ldGVyLgorICAgICAgd2FybmluZ19tZXNzYWdlczogQSBzdHJpbmcgY29udGFp
bmluZyBhbGwgb2YgdGhlIHdhcm5pbmcgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAg
IHdyaXR0ZW4gdG8gdGhlIG1vY2tfc3RkZXJyX3dyaXRlIG1ldGhvZCBvZgorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcyBjbGFzcy4KKworICAgICIiIgorICAgIGRlZiBzZXRVcChzZWxmKToK
KyAgICAgICAgc2VsZi5nb3RfZmlsZV9wYXRoID0gTm9uZQorICAgICAgICBzZWxmLmdvdF9oYW5k
bGVfc3R5bGVfZXJyb3IgPSBOb25lCisgICAgICAgIHNlbGYuZ290X3Byb2Nlc3NvciA9IE5vbmUK
KyAgICAgICAgc2VsZi53YXJuaW5nX21lc3NhZ2VzID0gIiIKKworICAgIGRlZiBtb2NrX3N0ZGVy
cl93cml0ZShzZWxmLCB3YXJuaW5nX21lc3NhZ2UpOgorICAgICAgICBzZWxmLndhcm5pbmdfbWVz
c2FnZXMgKz0gd2FybmluZ19tZXNzYWdlCisKKyAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJy
b3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBtb2NrX3Byb2Nlc3NfZmlsZShzZWxm
LCBwcm9jZXNzb3IsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICAgICAgIiIi
QSBtb2NrIF9wcm9jZXNzX2ZpbGUoKS4KKworICAgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24g
Zm9yIHRoaXMgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAgICAgb24gdGhpcyBmdW5j
dGlvbi4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5nb3RfZmlsZV9wYXRoID0gZmlsZV9w
YXRoCisgICAgICAgIHNlbGYuZ290X2hhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9l
cnJvcgorICAgICAgICBzZWxmLmdvdF9wcm9jZXNzb3IgPSBwcm9jZXNzb3IKKworICAgIGRlZiBh
c3NlcnRfYXR0cmlidXRlcyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF9maWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2hhbmRsZV9z
dHlsZV9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcHJvY2Vzc29y
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF93YXJuaW5nX21lc3NhZ2VzKToK
KyAgICAgICAgIiIiQXNzZXJ0IHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2YgdGhpcyBjbGFzcyBlcXVh
bCB0aGUgZ2l2ZW4gdmFsdWVzLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmdv
dF9maWxlX3BhdGgsIGV4cGVjdGVkX2ZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoc2VsZi5nb3RfaGFuZGxlX3N0eWxlX2Vycm9yLCBleHBlY3RlZF9oYW5kbGVfc3R5bGVfZXJy
b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZ290X3Byb2Nlc3NvciwgZXhwZWN0
ZWRfcHJvY2Vzc29yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLndhcm5pbmdfbWVz
c2FnZXMsIGV4cGVjdGVkX3dhcm5pbmdfbWVzc2FnZXMpCisKKyAgICBkZWYgY2FsbF9jaGVja19m
aWxlKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIiIkNhbGwgdGhlIGNoZWNrX2ZpbGUoKSBt
ZXRob2Qgb2YgYSB0ZXN0IFN0eWxlQ2hlY2tlciBpbnN0YW5jZS4iIiIKKyAgICAgICAgIyBDb25m
aXJtIHRoYXQgdGhlIGF0dHJpYnV0ZXMgYXJlIHJlc2V0LgorICAgICAgICBzZWxmLmFzc2VydF9h
dHRyaWJ1dGVzKE5vbmUsIE5vbmUsIE5vbmUsICIiKQorCisgICAgICAgICMgQ3JlYXRlIGEgdGVz
dCBTdHlsZUNoZWNrZXIgaW5zdGFuY2UuCisgICAgICAgICMKKyAgICAgICAgIyBUaGUgdmVyYm9z
aXR5IGF0dHJpYnV0ZSBpcyB0aGUgb25seSBQcm9jZXNzb3JPcHRpb25zCisgICAgICAgICMgYXR0
cmlidXRlIHRoYXQgbmVlZHMgdG8gYmUgY2hlY2tlZCBpbiB0aGlzIHRlc3QuCisgICAgICAgICMg
VGhpcyBpcyBiZWNhdXNlIGl0IGlzIHRoZSBvbmx5IG9wdGlvbiBpcyBkaXJlY3RseQorICAgICAg
ICAjIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3Igb2YgYSBzdHlsZSBwcm9jZXNzb3IuCisgICAg
ICAgIG9wdGlvbnMgPSBQcm9jZXNzb3JPcHRpb25zKHZlcmJvc2l0eT0zKQorCisgICAgICAgIHN0
eWxlX2NoZWNrZXIgPSBTdHlsZUNoZWNrZXIob3B0aW9ucywgc2VsZi5tb2NrX3N0ZGVycl93cml0
ZSkKKworICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX2ZpbGUoZmlsZV9wYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubW9ja19wcm9jZXNzX2ZpbGUp
CisKKyAgICBkZWYgdGVzdF9jaGVja19maWxlX29uX3NraXBfd2l0aG91dF93YXJuaW5nKHNlbGYp
OgorICAgICAgICAiIiJUZXN0IGNoZWNrX2ZpbGUoKSBmb3IgYSBza2lwcGVkLXdpdGhvdXQtd2Fy
bmluZyBmaWxlLiIiIgorCisgICAgICAgIGZpbGVfcGF0aCA9ICJMYXlvdXRUZXN0cy9mb28udHh0
IgorCisgICAgICAgIGRpc3BhdGNoZXIgPSBQcm9jZXNzb3JEaXNwYXRjaGVyKCkKKyAgICAgICAg
IyBDb25maXJtIHRoYXQgdGhlIGlucHV0IGZpbGUgaXMgdHJ1bHkgYSBza2lwcGVkLXdpdGhvdXQt
d2FybmluZyBmaWxlLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlzcGF0Y2hlci5zaG91bGRf
c2tpcF93aXRob3V0X3dhcm5pbmcoZmlsZV9wYXRoKSkKKworICAgICAgICAjIENoZWNrIHRoZSBv
dXRjb21lLgorICAgICAgICBzZWxmLmNhbGxfY2hlY2tfZmlsZShmaWxlX3BhdGgpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2F0dHJpYnV0ZXMoTm9uZSwgTm9uZSwgTm9uZSwgIiIpCisKKyAgICBkZWYg
dGVzdF9jaGVja19maWxlX29uX3NraXBfd2l0aF93YXJuaW5nKHNlbGYpOgorICAgICAgICAiIiJU
ZXN0IGNoZWNrX2ZpbGUoKSBmb3IgYSBza2lwcGVkLXdpdGgtd2FybmluZyBmaWxlLiIiIgorCisg
ICAgICAgIGZpbGVfcGF0aCA9ICJndGsyZHJhd2luZy5jIgorCisgICAgICAgIGRpc3BhdGNoZXIg
PSBQcm9jZXNzb3JEaXNwYXRjaGVyKCkKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBpbnB1dCBm
aWxlIGlzIHRydWx5IGEgc2tpcHBlZC13aXRoLXdhcm5pbmcgZmlsZS4KKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGRpc3BhdGNoZXIuc2hvdWxkX3NraXBfd2l0aF93YXJuaW5nKGZpbGVfcGF0aCkp
CisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0Y29tZS4KKyAgICAgICAgc2VsZi5jYWxsX2NoZWNr
X2ZpbGUoZmlsZV9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRyaWJ1dGVzKE5vbmUsIE5v
bmUsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lnbm9yaW5nICJndGsy
ZHJhd2luZy5jIjogdGhpcyBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRoZSBzdHlsZSBndWlkZS5cbicp
CisKKyAgICBkZWYgdGVzdF9jaGVja19maWxlX29uX25vbl9za2lwcGVkKHNlbGYpOgorCisgICAg
ICAgICMgV2UgdXNlIGEgQysrIGZpbGUgc2luY2UgYnkgdXNpbmcgYSBDcHBQcm9jZXNzb3IsIHdl
IGNhbiBjaGVjaworICAgICAgICAjIHRoYXQgYWxsIG9mIHRoZSBwb3NzaWJsZSBpbmZvcm1hdGlv
biBpcyBnZXR0aW5nIHBhc3NlZCB0bworICAgICAgICAjIHByb2Nlc3NfZmlsZSAoaW4gcGFydGlj
dWxhciwgdGhlIHZlcmJvc2l0eSkuCisgICAgICAgIGZpbGVfYmFzZSA9ICJmb28iCisgICAgICAg
IGZpbGVfZXh0ZW5zaW9uID0gImNwcCIKKyAgICAgICAgZmlsZV9wYXRoID0gZmlsZV9iYXNlICsg
Ii4iICsgZmlsZV9leHRlbnNpb24KKworICAgICAgICBkaXNwYXRjaGVyID0gUHJvY2Vzc29yRGlz
cGF0Y2hlcigpCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgaW5wdXQgZmlsZSBpcyB0cnVseSBh
IEMrKyBmaWxlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkaXNwYXRjaGVyLl9maWxlX3R5
cGUoZmlsZV9wYXRoKSwgc3R5bGUuRmlsZVR5cGUuQ1BQKQorCisgICAgICAgICMgQ2hlY2sgdGhl
IG91dGNvbWUuCisgICAgICAgIHNlbGYuY2FsbF9jaGVja19maWxlKGZpbGVfcGF0aCkKKworICAg
ICAgICBleHBlY3RlZF9wcm9jZXNzb3IgPSBDcHBQcm9jZXNzb3IoZmlsZV9wYXRoLCBmaWxlX2V4
dGVuc2lvbiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgMykKKworICAgICAgICBzZWxm
LmFzc2VydF9hdHRyaWJ1dGVzKGZpbGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4cGVjdGVkX3Byb2Nlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiIikKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBzeXMK
IAogICAgIHVuaXR0ZXN0Lm1haW4oKQorCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NwcF9zdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY3BwX3N0eWxlLnB5CmluZGV4IGQ1NGQ5ZTAuLmJlNjhmNzMgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlLnB5CkBAIC00LDYgKzQs
NyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCiAjIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yODE5LDcgKzI4MjAsNyBAQCBkZWYgcHJvY2Vzc19saW5l
KGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwKICAgICBjaGVja19pbnZhbGlkX2luY3JlbWVudChm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQogCiAKLWRlZiBwcm9jZXNzX2ZpbGVf
ZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToK
K2RlZiBfcHJvY2Vzc19saW5lcyhmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJv
ciwgdmVyYm9zaXR5KToKICAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrcyBhbmQgcmVwb3J0cyBh
bnkgZXJyb3JzIHRvIHRoZSBnaXZlbiBlcnJvciBmdW5jdGlvbi4KIAogICAgIEFyZ3M6CkBAIC0y
ODU4LDkwICsyODU5LDQ5IEBAIGRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9l
eHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKICAgICBjaGVja19mb3JfbmV3X2xp
bmVfYXRfZW9mKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCiAKIAotZGVmIHByb2Nlc3NfZmlsZShm
aWxlbmFtZSwgZXJyb3IsIHZlcmJvc2l0eSk6Ci0gICAgIiIiUGVyZm9ybXMgY3BwX3N0eWxlIG9u
IGEgc2luZ2xlIGZpbGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9m
IHRoZSBmaWxlIHRvIHBhcnNlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdp
dGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAgIHZlcmJvc2l0eTogQW4gaW50ZWdlciB0aGF0IGlz
IHRoZSB2ZXJib3NpdHkgbGV2ZWwgdG8gdXNlIHdoaWxlCi0gICAgICAgICAgICAgICAgIGNoZWNr
aW5nIHN0eWxlLgotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgIyBTdXBwb3J0IHRoZSBVTklY
IGNvbnZlbnRpb24gb2YgdXNpbmcgIi0iIGZvciBzdGRpbi4gIE5vdGUgdGhhdAotICAgICAgICAj
IHdlIGFyZSBub3Qgb3BlbmluZyB0aGUgZmlsZSB3aXRoIHVuaXZlcnNhbCBuZXdsaW5lIHN1cHBv
cnQKLSAgICAgICAgIyAod2hpY2ggY29kZWNzIGRvZXNuJ3Qgc3VwcG9ydCBhbnl3YXkpLCBzbyB0
aGUgcmVzdWx0aW5nIGxpbmVzIGRvCi0gICAgICAgICMgY29udGFpbiB0cmFpbGluZyAnXHInIGNo
YXJhY3RlcnMgaWYgd2UgYXJlIHJlYWRpbmcgYSBmaWxlIHRoYXQKLSAgICAgICAgIyBoYXMgQ1JM
RiBlbmRpbmdzLgotICAgICAgICAjIElmIGFmdGVyIHRoZSBzcGxpdCBhIHRyYWlsaW5nICdccicg
aXMgcHJlc2VudCwgaXQgaXMgcmVtb3ZlZAotICAgICAgICAjIGJlbG93LiBJZiBpdCBpcyBub3Qg
ZXhwZWN0ZWQgdG8gYmUgcHJlc2VudCAoaS5lLiBvcy5saW5lc2VwICE9Ci0gICAgICAgICMgJ1xy
XG4nIGFzIGluIFdpbmRvd3MpLCBhIHdhcm5pbmcgaXMgaXNzdWVkIGJlbG93IGlmIHRoaXMgZmls
ZQotICAgICAgICAjIGlzIHByb2Nlc3NlZC4KLQotICAgICAgICBpZiBmaWxlbmFtZSA9PSAnLSc6
Ci0gICAgICAgICAgICBsaW5lcyA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGlu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5n
ZXRyZWFkZXIoJ3V0ZjgnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2RlY3MuZ2V0d3JpdGVyKCd1dGY4JyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQoJ1xuJykKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVzID0gY29kZWNzLm9wZW4oZmlsZW5hbWUsICdy
JywgJ3V0ZjgnLCAncmVwbGFjZScpLnJlYWQoKS5zcGxpdCgnXG4nKQorY2xhc3MgQ3BwUHJvY2Vz
c29yKG9iamVjdCk6CiAKLSAgICAgICAgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kID0gRmFsc2UKLSAg
ICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgJ1xyJy4KLSAgICAgICAgZm9yIGxpbmVfbnVtYmVyIGlu
IHJhbmdlKGxlbihsaW5lcykpOgotICAgICAgICAgICAgaWYgbGluZXNbbGluZV9udW1iZXJdLmVu
ZHN3aXRoKCdccicpOgotICAgICAgICAgICAgICAgIGxpbmVzW2xpbmVfbnVtYmVyXSA9IGxpbmVz
W2xpbmVfbnVtYmVyXS5yc3RyaXAoJ1xyJykKLSAgICAgICAgICAgICAgICBjYXJyaWFnZV9yZXR1
cm5fZm91bmQgPSBUcnVlCisgICAgIiIiUHJvY2Vzc2VzIEMrKyBsaW5lcyBmb3IgY2hlY2tpbmcg
c3R5bGUuIiIiCiAKLSAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0
ZSgKLSAgICAgICAgICAgICJTa2lwcGluZyBpbnB1dCAnJXMnOiBDYW4ndCBvcGVuIGZvciByZWFk
aW5nXG4iICUgZmlsZW5hbWUpCi0gICAgICAgIHJldHVybgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBmaWxlX3BhdGgsIGZpbGVfZXh0ZW5zaW9uLCBoYW5kbGVfc3R5bGVfZXJyb3IsIHZlcmJvc2l0
eSk6CisgICAgICAgICIiIkNyZWF0ZSBhIENwcFByb2Nlc3NvciBpbnN0YW5jZS4KIAotICAgICMg
Tm90ZSwgaWYgbm8gZG90IGlzIGZvdW5kLCB0aGlzIHdpbGwgZ2l2ZSB0aGUgZW50aXJlIGZpbGVu
YW1lIGFzIHRoZSBleHQuCi0gICAgZmlsZV9leHRlbnNpb24gPSBmaWxlbmFtZVtmaWxlbmFtZS5y
ZmluZCgnLicpICsgMTpdCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmlsZV9leHRlbnNpb246
IEEgc3RyaW5nIHRoYXQgaXMgdGhlIGZpbGUgZXh0ZW5zaW9uLCB3aXRob3V0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoZSBsZWFkaW5nIGRvdC4KIAotICAgICMgV2hlbiByZWFkaW5nIGZy
b20gc3RkaW4sIHRoZSBleHRlbnNpb24gaXMgdW5rbm93biwgc28gbm8gY3BwX3N0eWxlIHRlc3Rz
Ci0gICAgIyBzaG91bGQgcmVseSBvbiB0aGUgZXh0ZW5zaW9uLgotICAgIGlmIChmaWxlbmFtZSAh
PSAnLScgYW5kIG5vdCBjYW5faGFuZGxlKGZpbGVuYW1lKSk6Ci0gICAgICAgIHN5cy5zdGRlcnIu
d3JpdGUoJ0lnbm9yaW5nICVzOyBub3QgYSAuY3BwLCAuYyBvciAuaCBmaWxlXG4nICUgZmlsZW5h
bWUpCi0gICAgZWxpZiBpc19leGVtcHQoZmlsZW5hbWUpOgotICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCdJZ25vcmluZyAlczsgVGhpcyBmaWxlIGlzIGV4ZW1wdCBmcm9tIHRoZSBzdHlsZSBndWlk
ZS5cbicgJSBmaWxlbmFtZSkKLSAgICBlbHNlOgotICAgICAgICBwcm9jZXNzX2ZpbGVfZGF0YShm
aWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KQotICAgICAg
ICBpZiBjYXJyaWFnZV9yZXR1cm5fZm91bmQgYW5kIG9zLmxpbmVzZXAgIT0gJ1xyXG4nOgotICAg
ICAgICAgICAgIyBVc2UgMCBmb3IgbGluZV9udW1iZXIgc2luY2Ugb3V0cHV0aW5nIG9ubHkgb25l
IGVycm9yIGZvciBwb3RlbnRpYWxseQotICAgICAgICAgICAgIyBzZXZlcmFsIGxpbmVzLgotICAg
ICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIDAsICd3aGl0ZXNwYWNlL25ld2xpbmUnLCAxLAotICAg
ICAgICAgICAgICAgICAgJ09uZSBvciBtb3JlIHVuZXhwZWN0ZWQgXFxyICheTSkgZm91bmQ7Jwot
ICAgICAgICAgICAgICAgICAgJ2JldHRlciB0byB1c2Ugb25seSBhIFxcbicpCisgICAgICAgICIi
IgorICAgICAgICBzZWxmLmZpbGVfZXh0ZW5zaW9uID0gZmlsZV9leHRlbnNpb24KKyAgICAgICAg
c2VsZi5maWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5oYW5kbGVfc3R5bGVfZXJy
b3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKyAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3Np
dHkKIAorICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCisgICAgZGVmIF9fZXFfXyhzZWxm
LCBvdGhlcik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoaXMgQ3BwUHJvY2Vzc29yIGlu
c3RhbmNlIGlzIGVxdWFsIHRvIGFub3RoZXIuIiIiCisgICAgICAgIGlmIHNlbGYuZmlsZV9leHRl
bnNpb24gIT0gb3RoZXIuZmlsZV9leHRlbnNpb246CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgaWYgc2VsZi5maWxlX3BhdGggIT0gb3RoZXIuZmlsZV9wYXRoOgorICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yICE9IG90
aGVyLmhhbmRsZV9zdHlsZV9lcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAg
ICBpZiBzZWxmLnZlcmJvc2l0eSAhPSBvdGhlci52ZXJib3NpdHk6CisgICAgICAgICAgICByZXR1
cm4gRmFsc2UKIAotZGVmIGNhbl9oYW5kbGUoZmlsZW5hbWUpOgotICAgICIiIkNoZWNrcyBpZiB0
aGlzIG1vZHVsZSBzdXBwb3J0cyBmb3IgdGhlIHNwZWNpZmllZCBmaWxlIHR5cGUuCisgICAgICAg
IHJldHVybiBUcnVlCiAKLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IEEgZmlsZW5hbWUuIEl0
IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAgICAgIiIiCi0gICAgcmV0dXJuIG9zLnBh
dGguc3BsaXRleHQoZmlsZW5hbWUpWzFdIGluICgnLmgnLCAnLmNwcCcsICcuYycpCisgICAgIyBV
c2VmdWwgZm9yIHVuaXQgdGVzdGluZy4KKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAg
ICAgICAgIyBQeXRob24gZG9lcyBub3QgYXV0b21hdGljYWxseSBkZWR1Y2UgX19uZV9fKCkgZnJv
bSBfX2VxX18oKS4KKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKIAorICAg
IGRlZiBwcm9jZXNzKHNlbGYsIGxpbmVzKToKKyAgICAgICAgX3Byb2Nlc3NfbGluZXMoc2VsZi5m
aWxlX3BhdGgsIHNlbGYuZmlsZV9leHRlbnNpb24sIGxpbmVzLAorICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvciwgc2VsZi52ZXJib3NpdHkpCiAKLWRlZiBpc19l
eGVtcHQoZmlsZW5hbWUpOgotICAgICIiIkNoZWNrcyBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBleGVt
cHQgZnJvbSB0aGUgc3R5bGUgZ3VpZGUuICBGb3IgZXhhbXBsZSwKLSAgICBzb21lIGZpbGVzIGFy
ZSBwdXJwb3NlZnVsbHkgbWFudGFpbmVkIGluIE1vemlsbGEgc3R5bGUgdG8gZWFzZSBmdXR1cmUK
LSAgICBtZXJnZXMuCiAKLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IEEgZmlsZW5hbWUuIEl0
IG1heSBjb250YWluIGRpcmVjdG9yeSBuYW1lcy4KLSAgICAgIiIiCi0gICAgaWYgKGZpbGVuYW1l
LmZpbmQoJ1dlYktpdC9xdC9BcGkvJykgPj0gMAotICAgICAgICBvciBmaWxlbmFtZS5maW5kKCdK
YXZhU2NyaXB0Q29yZS9xdC9hcGkvJykgPj0gMAotICAgICAgICBvciBmaWxlbmFtZS5maW5kKCdX
ZWJLaXQvcXQvdGVzdHMvJykgPj0gMAotICAgICAgICBvciBmaWxlbmFtZS5maW5kKCdXZWJLaXQv
Z3RrL3Rlc3RzLycpID49IDApOgotICAgICAgICAjIFRoZSBRdCBBUEkgYW5kIHRoZSBRdCBhbmQg
R3RrIHRlc3RzIGRvIG5vdCBmb2xsb3cgV2ViS2l0IHN0eWxlLgotICAgICAgICByZXR1cm4gVHJ1
ZQorIyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gKHJlcXVpcmVzIHJlZmFjdG9yaW5nIHVu
aXQgdGVzdHMpLgorZGVmIHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lv
biwgbGluZXMsIGVycm9yLCB2ZXJib3NpdHkpOgorICAgIHByb2Nlc3NvciA9IENwcFByb2Nlc3Nv
cihmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGVycm9yLCB2ZXJib3NpdHkpCisgICAgcHJvY2Vz
c29yLnByb2Nlc3MobGluZXMpCiAKLSAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFt
ZSkgaW4gKAotICAgICAgICAnZ3RrMmRyYXdpbmcuYycsCi0gICAgICAgICdndGsyZHJhd2luZy5o
JywKLSAgICApCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NwcF9zdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5CmluZGV4IDU0YTk2MWQuLmUwYTYzYWQgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3VuaXR0ZXN0
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY3BwX3N0eWxlX3Vu
aXR0ZXN0LnB5CkBAIC00LDYgKzQsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmls
ZSBJbmMuCiAjIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtp
dC5vcmcpCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MSw2ICs0Miw4IEBA
IGltcG9ydCByYW5kb20KIGltcG9ydCByZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY3BwX3N0
eWxlCitmcm9tIGNwcF9zdHlsZSBpbXBvcnQgQ3BwUHJvY2Vzc29yCisKICMgRklYTUU6IFJlbW92
ZSB0aGUgbmVlZCB0byBpbXBvcnQgYW55dGhpbmcgZnJvbSBjaGVja2VyLiBTZWUgdGhlCiAjICAg
ICAgICBGSVhNRSBub3RlcyBuZWFyIHRoZSBTVFlMRV9DQVRFR09SSUVTIGRlZmluaXRpb24gZm9y
IGEKICMgICAgICAgIHN1Z2dlc3Rpb24gb24gaG93IHRvIGJlc3QgZG8gdGhpcy4KQEAgLTM2MDMs
MzUgKzM2MDYsNTMgQEAgY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgog
ICAgICAgICBwYXNzCiAKIAotICAgIGRlZiB0ZXN0X2Nhbl9oYW5kbGUoc2VsZik6Ci0gICAgICAg
ICIiIlRlc3RzIGZvciBjcHBfc3R5bGUuY2FuX2hhbmRsZSgpLiIiIgotICAgICAgICBzZWxmLmFz
c2VydF8obm90IGNwcF9zdHlsZS5jYW5faGFuZGxlKCcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
KGNwcF9zdHlsZS5jYW5faGFuZGxlKCdmb28uaCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90
IGNwcF9zdHlsZS5jYW5faGFuZGxlKCdmb28uaHBwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhj
cHBfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9z
dHlsZS5jYW5faGFuZGxlKCdmb28uY3BwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3Bw
X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IGNw
cF9zdHlsZS5jYW5faGFuZGxlKCdmb28uY3h4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
Y3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5DJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
Y3BwX3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5tbScpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90
IGNwcF9zdHlsZS5jYW5faGFuZGxlKCctJykpCi0KLSAgICBkZWYgdGVzdF9pc19leGVtcHQoc2Vs
Zik6Ci0gICAgICAgICIiIlRlc3RzIGZvciBjcHBfc3R5bGUuaXNfZXhlbXB0KCkuIiIiCi0gICAg
ICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmgnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNfZXhlbXB0KCdmb28uaHBwJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZm9vLmMnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfKG5vdCBjcHBfc3R5bGUuaXNfZXhlbXB0KCdmb28uY3BwJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2V4ZW1wdCgnLScpKQotICAgICAgICBzZWxmLmFz
c2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZ3RrMmRyYXdpbmcuaCcpKQotICAgICAgICBzZWxm
LmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnV2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRy
YXdpbmcuaCcpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnZ3Rr
MmRyYXdpbmcuYycpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgn
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYycpKQotICAgICAgICBzZWxmLmFzc2Vy
dF8oY3BwX3N0eWxlLmlzX2V4ZW1wdCgnV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0XyhjcHBfc3R5bGUuaXNfZXhlbXB0KCdKYXZhU2NyaXB0Q29yZS9xdC9h
cGkvcXNjcmlwdGVuZ2luZV9wLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5p
c19leGVtcHQoJ1dlYktpdC9xdC90ZXN0cy9xd2Vic2VjdXJpdHlvcmlnaW4vdHN0X3F3ZWJzZWN1
cml0eW9yaWdpbi5jcHAnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcF9zdHlsZS5pc19leGVt
cHQoJ1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jJykpCitjbGFzcyBDcHBQcm9jZXNzb3JUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIENwcFByb2Nlc3NvciBjbGFzcy4i
IiIKKworICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxmKToKKyAgICAgICAgcGFz
cworCisgICAgZGVmIF9wcm9jZXNzb3Ioc2VsZik6CisgICAgICAgIHJldHVybiBDcHBQcm9jZXNz
b3IoImZvbyIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgMykKKworICAgIGRl
ZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3Iu
IiIiCisgICAgICAgIHByb2Nlc3NvciA9IHNlbGYuX3Byb2Nlc3NvcigpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5maWxlX2V4dGVuc2lvbiwgImgiKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhwcm9jZXNzb3IuZmlsZV9wYXRoLCAiZm9vIikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMocHJvY2Vzc29yLmhhbmRsZV9zdHlsZV9lcnJvciwgc2VsZi5tb2NrX2hhbmRs
ZV9zdHlsZV9lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHJvY2Vzc29yLnZlcmJv
c2l0eSwgMykKKworICAgIGRlZiB0ZXN0X2VxKHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9fZXFf
XyBlcXVhbGl0eSBmdW5jdGlvbi4iIiIKKyAgICAgICAgcHJvY2Vzc29yMSA9IHNlbGYuX3Byb2Nl
c3NvcigpCisgICAgICAgIHByb2Nlc3NvcjIgPSBzZWxmLl9wcm9jZXNzb3IoKQorCisgICAgICAg
ICMgPT0gY2FsbHMgX19lcV9fLgorICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvY2Vzc29yMSA9
PSBwcm9jZXNzb3IyKQorCisgICAgICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcjIoc2Vs
Zik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBhIGRpZmZlcmVu
Y2UgaW4gYW55IGFyZ3VtZW50IGNhdXNlIGVxdWFsaXR5IHRvIGZhaWwuCisgICAgICAgIHByb2Nl
c3NvciA9IENwcFByb2Nlc3NvcigiZm9vIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vy
cm9yLCAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3NvciA9PSBDcHBQcm9jZXNz
b3IoImJhciIsICJoIiwgc2VsZi5tb2NrX2hhbmRsZV9zdHlsZV9lcnJvciwgMykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yID09IENwcFByb2Nlc3NvcigiZm9vIiwgImMiLCBz
ZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShwcm9jZXNzb3IgPT0gQ3BwUHJvY2Vzc29yKCJmb28iLCAiaCIsIG1vY2tfaGFuZGxlX3N0eWxl
X2Vycm9yMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocHJvY2Vzc29yID09IENwcFBy
b2Nlc3NvcigiZm9vIiwgImgiLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLCA0KSkKKwor
ICAgIGRlZiB0ZXN0X25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9fbmVfXyBpbmVxdWFsaXR5
IGZ1bmN0aW9uLiIiIgorICAgICAgICBwcm9jZXNzb3IxID0gc2VsZi5fcHJvY2Vzc29yKCkKKyAg
ICAgICAgcHJvY2Vzc29yMiA9IHNlbGYuX3Byb2Nlc3NvcigpCisKKyAgICAgICAgIyAhPSBjYWxs
cyBfX25lX18uCisgICAgICAgICMgQnkgZGVmYXVsdCwgX19uZV9fIGFsd2F5cyByZXR1cm5zIHRy
dWUgb24gZGlmZmVyZW50IG9iamVjdHMuCisgICAgICAgICMgVGh1cywganVzdCBjaGVjayB0aGUg
ZGlzdGluZ3Vpc2hpbmcgY2FzZSB0byB2ZXJpZnkgdGhhdCB0aGUKKyAgICAgICAgIyBjb2RlIGRl
ZmluZXMgX19uZV9fLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3NvcjEgIT0gcHJv
Y2Vzc29yMikKKwogCiBkZWYgdGVhckRvd24oKToKICAgICAiIiJBIGdsb2JhbCBjaGVjayB0byBt
YWtlIHN1cmUgYWxsIGVycm9yLWNhdGVnb3JpZXMgaGF2ZSBiZWVuIHRlc3RlZC4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZS5weQppbmRleCAzODVi
YmFhLi40Zjg2OWFmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL3RleHRfc3R5bGUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS90ZXh0X3N0eWxlLnB5CkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlz
IEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTI2LDUzICsyNywzMCBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAotIiIiRG9lcyBXZWJLaXQtbGludCBvbiB0ZXh0IGZpbGVzLgorIiIiQ2hlY2tzIFdlYktp
dCBzdHlsZSBmb3IgdGV4dCBmaWxlcy4iIiIKIAotVGhpcyBtb2R1bGUgc2hhcmVzIGVycm9yIGNv
dW50LCBmaWx0ZXIgc2V0dGluZywgb3V0cHV0IHNldHRpbmcsIGV0Yy4gd2l0aCBjcHBfc3R5bGUu
Ci0iIiIKIAotaW1wb3J0IGNvZGVjcwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzeXMKK2NsYXNz
IFRleHRQcm9jZXNzb3Iob2JqZWN0KToKIAotaW1wb3J0IGNwcF9zdHlsZQorICAgICIiIlByb2Nl
c3NlcyB0ZXh0IGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4iIiIKIAorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CisgICAgICAgIHNlbGYuZmls
ZV9wYXRoID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYuaGFuZGxlX3N0eWxlX2Vycm9yID0gaGFu
ZGxlX3N0eWxlX2Vycm9yCiAKLWRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgbGluZXMs
IGVycm9yKToKLSAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrIGZvciB0ZXh0IG9uIHRoZSBzcGVj
aWZpZWQgbGluZXMuCi0KLSAgICBJdCByZXBvcnRzIGVycm9ycyB0byB0aGUgZ2l2ZW4gZXJyb3Ig
ZnVuY3Rpb24uCi0gICAgIiIiCi0gICAgbGluZXMgPSAoWycvLyBhZGp1c3QgbGluZSBudW1iZXJz
IHRvIG1ha2UgdGhlIGZpcnN0IGxpbmUgMS4nXSArIGxpbmVzKQotCi0gICAgIyBGSVhNRTogc2hh
cmUgd2l0aCBjcHBfc3R5bGUuY2hlY2tfc3R5bGUoKQotICAgIGZvciBsaW5lX251bWJlciwgbGlu
ZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAgICAgICBpZiAnXHQnIGluIGxpbmU6Ci0gICAgICAg
ICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3RhYicsIDUsICdM
aW5lIGNvbnRhaW5zIHRhYiBjaGFyYWN0ZXIuJykKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBsaW5l
cyk6CisgICAgICAgIGxpbmVzID0gKFsiLy8gYWRqdXN0IGxpbmUgbnVtYmVycyB0byBtYWtlIHRo
ZSBmaXJzdCBsaW5lIDEuIl0gKyBsaW5lcykKIAorICAgICAgICAjIEZJWE1FOiBzaGFyZSB3aXRo
IGNwcF9zdHlsZS4KKyAgICAgICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1lcmF0ZShs
aW5lcyk6CisgICAgICAgICAgICBpZiAiXHQiIGluIGxpbmU6CisgICAgICAgICAgICAgICAgc2Vs
Zi5oYW5kbGVfc3R5bGVfZXJyb3Ioc2VsZi5maWxlX3BhdGgsIGxpbmVfbnVtYmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGl0ZXNwYWNlL3RhYiIsIDUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxpbmUgY29udGFpbnMgdGFi
IGNoYXJhY3Rlci4iKQogCi1kZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcik6Ci0gICAg
IiIiUGVyZm9ybXMgbGludCBjaGVjayBmb3IgdGV4dCBvbiBhIHNpbmdsZSBmaWxlLiIiIgotICAg
IGlmIChub3QgY2FuX2hhbmRsZShmaWxlbmFtZSkpOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCdJZ25vcmluZyAlczsgbm90IGEgc3VwcG9ydGVkIGZpbGVcbicgJSBmaWxlbmFtZSkKLSAgICAg
ICAgcmV0dXJuCiAKLSAgICAjIEZJWE1FOiBzaGFyZSBjb2RlIHdpdGggY3BwX3N0eWxlLnByb2Nl
c3NfZmlsZSgpLgotICAgIHRyeToKLSAgICAgICAgIyBEbyBub3Qgc3VwcG9ydCBmb3IgZmlsZW5h
bWU9Jy0nLiBjcHBfc3R5bGUgaGFuZGxlcyBpdC4KLSAgICAgICAgbGluZXMgPSBjb2RlY3Mub3Bl
bihmaWxlbmFtZSwgJ3InLCAndXRmOCcsICdyZXBsYWNlJykucmVhZCgpLnNwbGl0KCdcbicpCi0g
ICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNraXBwaW5nIGlu
cHV0ICclcyc6IENhbid0IG9wZW4gZm9yIHJlYWRpbmdcbiIgJSBmaWxlbmFtZSkKLSAgICAgICAg
cmV0dXJuCi0gICAgcHJvY2Vzc19maWxlX2RhdGEoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikKLQot
Ci1kZWYgY2FuX2hhbmRsZShmaWxlbmFtZSk6Ci0gICAgIiIiQ2hlY2tzIGlmIHRoaXMgbW9kdWxl
IHN1cHBvcnRzIHRoZSBzcGVjaWZpZWQgZmlsZSB0eXBlLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMg
ZnVuY3Rpb24gKHJlcXVpcmVzIHJlZmFjdG9yaW5nIHVuaXQgdGVzdHMpLgorZGVmIHByb2Nlc3Nf
ZmlsZV9kYXRhKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgorICAgIHByb2Nlc3NvciA9IFRleHRQ
cm9jZXNzb3IoZmlsZW5hbWUsIGVycm9yKQorICAgIHByb2Nlc3Nvci5wcm9jZXNzKGxpbmVzKQog
Ci0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBBIGZpbGVuYW1lLiBJdCBtYXkgY29udGFpbiBk
aXJlY3RvcnkgbmFtZXMuCi0gICAgIiIiCi0gICAgcmV0dXJuICgiQ2hhbmdlTG9nIiBpbiBmaWxl
bmFtZQotICAgICAgICAgICAgb3IgIldlYktpdFRvb2xzL1NjcmlwdHMvIiBpbiBmaWxlbmFtZQot
ICAgICAgICAgICAgb3Igb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0gaW4gKCcuY3NzJywg
Jy5odG1sJywgJy5pZGwnLCAnLmpzJywgJy5tbScsICcucGhwJywgJy5wbScsICcucHknLCAnLnR4
dCcpKSBhbmQgbm90ICJMYXlvdXRUZXN0cy8iIGluIGZpbGVuYW1lCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3RleHRfc3R5bGVfdW5pdHRlc3QucHkK
aW5kZXggZDkxMTVmMC4uMzliNDI1NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS90ZXh0X3N0eWxlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvdGV4dF9zdHlsZV91bml0dGVzdC5weQpAQCAtMzIsNyArMzIs
NyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0ZXh0X3N0eWxlCi0KK2Zyb20gdGV4dF9z
dHlsZSBpbXBvcnQgVGV4dFByb2Nlc3NvcgogCiBjbGFzcyBUZXh0U3R5bGVUZXN0Q2FzZSh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdENhc2UgZm9yIHRleHRfc3R5bGUucHkiIiIKQEAg
LTc2LDM2ICs3NiwxOCBAQCBjbGFzcyBUZXh0U3R5bGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICdcdFJldmlld2VkIGJ5IE5PQk9EWS4nXSwg
MykKIAogCi0gICAgZGVmIHRlc3RfY2FuX2hhbmRsZShzZWxmKToKLSAgICAgICAgIiIiVGVzdHMg
Zm9yIHRleHRfc3R5bGUuY2FuX2hhbmRsZSgpLiIiIgotICAgICAgICBzZWxmLmFzc2VydF8obm90
IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgdGV4
dF9zdHlsZS5jYW5faGFuZGxlKCctJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxl
LmNhbl9oYW5kbGUoJ0NoYW5nZUxvZycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHls
ZS5jYW5faGFuZGxlKCdXZWJDb3JlL0NoYW5nZUxvZycpKQotICAgICAgICBzZWxmLmFzc2VydF8o
dGV4dF9zdHlsZS5jYW5faGFuZGxlKCdGb29DaGFuZ2VMb2cuYmFrJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2st
d2Via2l0PXN0eWxlJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5k
bGUoJ1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy90ZXh0X3N0eWxlLnB5JykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0Xyhub3QgdGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJLaXRUb29scy9TY3Jp
cHRzJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9v
LmNzcycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28u
aHRtbCcpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28u
aWRsJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5q
cycpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4dF9zdHlsZS5jYW5faGFuZGxlKCdXZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
Xyh0ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5tbScpKQotICAgICAgICBzZWxmLmFzc2VydF8o
dGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28ucGhwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyh0
ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5wbScpKQotICAgICAgICBzZWxmLmFzc2VydF8odGV4
dF9zdHlsZS5jYW5faGFuZGxlKCdmb28ucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKHRleHRf
c3R5bGUuY2FuX2hhbmRsZSgnZm9vLnR4dCcpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRl
eHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0
ZXh0X3N0eWxlLmNhbl9oYW5kbGUoJ2Zvby5jJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3Qg
dGV4dF9zdHlsZS5jYW5faGFuZGxlKCdmb28uYycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90
IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLnBuZycpKQotICAgICAgICBzZWxmLmFzc2VydF8o
bm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnZm9vLmMvYmFyLnBuZycpKQotICAgICAgICBzZWxm
LmFzc2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnV2ViS2l0L0VuZ2xpc2gubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncycpKQotICAgICAgICBzZWxmLmFzc2VydF8obm90IHRleHRfc3R5
bGUuY2FuX2hhbmRsZSgnTWFrZWZpbGUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCB0ZXh0
X3N0eWxlLmNhbl9oYW5kbGUoJ1dlYkNvcmUvQW5kcm9pZC5taycpKQotICAgICAgICBzZWxmLmFz
c2VydF8obm90IHRleHRfc3R5bGUuY2FuX2hhbmRsZSgnTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nv
bnNvbGUtdGVzdHMuanMnKSkKK2NsYXNzIFRleHRQcm9jZXNzb3JUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKworICAgICIiIlRlc3RzIFRleHRQcm9jZXNzb3IgY2xhc3MuIiIiCisKKyAgICBkZWYg
bW9ja19oYW5kbGVfc3R5bGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0
ZXN0X2luaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3IuIiIi
CisgICAgICAgIHByb2Nlc3NvciA9IFRleHRQcm9jZXNzb3IoImZvby50eHQiLCBzZWxmLm1vY2tf
aGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3Iu
ZmlsZV9wYXRoLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nv
ci5oYW5kbGVfc3R5bGVfZXJyb3IsIHNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCiAKIAog
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>