<?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>51222</bug_id>
          
          <creation_ts>2010-12-16 16:54:12 -0800</creation_ts>
          <short_desc>new-run-webkit-tests : need to support more modifiers (gpu, x86-64, etc.)</short_desc>
          <delta_ts>2011-01-31 14:59:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>52304</dependson>
    
    <dependson>53040</dependson>
          <blocked>51548</blocked>
    
    <blocked>53129</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>koz</cc>
    
    <cc>levin</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>senorblanco</cc>
    
    <cc>thakis</cc>
    
    <cc>tony</cc>
    
    <cc>victorw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>323518</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-16 16:54:12 -0800</bug_when>
    <thetext>new-run-webkit-tests : need to support more modifiers (gpu, x86-64, etc.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323521</commentid>
    <comment_count>1</comment_count>
      <attachid>76829</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-16 16:57:56 -0800</bug_when>
    <thetext>Created attachment 76829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324515</commentid>
    <comment_count>2</comment_count>
      <attachid>76829</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-20 12:49:30 -0800</bug_when>
    <thetext>Comment on attachment 76829
Patch

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

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:939
&gt; +        &quot;&quot;&quot;Initialize a ModifierMatcher argument with the dict of values that

Can you elaborate on what the keys/values in modifiers_to_match_against are?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:947
&gt; +        self.shortcuts = self.DEFAULT_SHORTCUTS

Should you validate that the shortcuts expand to valid modifiers?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:950
&gt; +        self._all_modifiers = []

Make into a set()?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:953
&gt; +        # self.allowed_values.

I think you meant to say that this inverts self.allowed_modifiers.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:964
&gt; +        # Verify that the modifiers_to_check_against are legal. We

And here modifiers_to_check_against should be modifiers_to_match_against (you define modifiers_to_check_against in _count_matches, perhaps that should be modifiers_to_check_against too, for the sake of consistency).

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:971
&gt; +            if category not in self.allowed_modifiers.keys():

You don&apos;t need the .keys() call, checking for &quot;in&quot; in a dictionary checks for presence of a key.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:989
&gt; +        The results of the most recent match are available in the &apos;options&apos;,

Is there much benefit to having ModifierMatcher be mutable like this? Returning all this in a result object seems cleaner.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1038
&gt; +                more_mods, more_errors = self._expand_shortcut(option, options)

_update_regex_matching_state takes errors as a parameter and adds things to it, here you return a list of errors and use errors.extend. It seems like consistency is best.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1051
&gt; +    def _matches_a_regex(self, option):

Maybe call this _matches_an_ignore_regex to make its intention clearer?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1060
&gt; +                    errors.append(&quot;More than one option matching &apos;%s&apos;&quot; % regex_str)

You may want to make this into a warning, we currently have lines with multiple BUG modifiers:

https://www.google.com/codesearch?hl=en&amp;vert=chromium&amp;lr=&amp;q=bug.*bug.*\d%2B.*:+file:test_expectations.txt&amp;sbtn=Search

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1093
&gt; +        pairs = [(m, self._category(m)) for m in  modifiers]

Extra space after in.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1094
&gt; +        return _group_by(pairs, 1)

_group_by might be overkill in this case, you can also say:
modifiers_by_category = {}
for m in modifiers:
    modifiers_by_category.setdefault(self._category(m), []).append(m)
return modifiers_by_category</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324724</commentid>
    <comment_count>3</comment_count>
      <attachid>77072</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-20 19:34:45 -0800</bug_when>
    <thetext>Created attachment 77072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324727</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-20 19:39:10 -0800</bug_when>
    <thetext>Thanks for the feedback. It turned out that I kinda needed to do the second patch at the same time in order to be able to pass all of tests properly and without too many hacks. Let me know if this patch is too big and I can try to split it up into smaller chunks.

(In reply to comment #2)
&gt; (From update of attachment 76829 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76829&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:939
&gt; &gt; +        &quot;&quot;&quot;Initialize a ModifierMatcher argument with the dict of values that
&gt; 
&gt; Can you elaborate on what the keys/values in modifiers_to_match_against are?
&gt; 

This argument goes away, so, problem solved ;)

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:947
&gt; &gt; +        self.shortcuts = self.DEFAULT_SHORTCUTS
&gt; 
&gt; Should you validate that the shortcuts expand to valid modifiers?
&gt;

Now done.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:950
&gt; &gt; +        self._all_modifiers = []
&gt; 
&gt; Make into a set()?
&gt;

Done.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:953
&gt; &gt; +        # self.allowed_values.
&gt; 
&gt; I think you meant to say that this inverts self.allowed_modifiers.
&gt; 

Yes, but the logic is now slightly different.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:964
&gt; &gt; +        # Verify that the modifiers_to_check_against are legal. We
&gt; 
&gt; And here modifiers_to_check_against should be modifiers_to_match_against (you define modifiers_to_check_against in _count_matches, perhaps that should be modifiers_to_check_against too, for the sake of consistency).
&gt;

Fixed.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:971
&gt; &gt; +            if category not in self.allowed_modifiers.keys():
&gt; 
&gt; You don&apos;t need the .keys() call, checking for &quot;in&quot; in a dictionary checks for presence of a key.
&gt;

Done.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:989
&gt; &gt; +        The results of the most recent match are available in the &apos;options&apos;,
&gt; 
&gt; Is there much benefit to having ModifierMatcher be mutable like this? Returning all this in a result object seems cleaner.
&gt;

There isn&apos;t a huge benefit. Modified as per your suggestion.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1038
&gt; &gt; +                more_mods, more_errors = self._expand_shortcut(option, options)
&gt; 
&gt; _update_regex_matching_state takes errors as a parameter and adds things to it, here you return a list of errors and use errors.extend. It seems like consistency is best.
&gt;

Things should be consistent now.
 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1051
&gt; &gt; +    def _matches_a_regex(self, option):
&gt; 
&gt; Maybe call this _matches_an_ignore_regex to make its intention clearer?
&gt; 

The logic is slightly different now. Let me know if you think the new code is fine as is or needs a similar name change.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1060
&gt; &gt; +                    errors.append(&quot;More than one option matching &apos;%s&apos;&quot; % regex_str)
&gt; 
&gt; You may want to make this into a warning, we currently have lines with multiple BUG modifiers:
&gt;

Yeah, that was a bug. It shouldn&apos;t even be a warning. I had to add a whitelist of regexes that were okay to be repeated.
 
&gt; https://www.google.com/codesearch?hl=en&amp;vert=chromium&amp;lr=&amp;q=bug.*bug.*\d%2B.*:+file:test_expectations.txt&amp;sbtn=Search
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1093
&gt; &gt; +        pairs = [(m, self._category(m)) for m in  modifiers]
&gt; 
&gt; Extra space after in.
&gt; 

Fixed.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:1094
&gt; &gt; +        return _group_by(pairs, 1)
&gt; 
&gt; _group_by might be overkill in this case, you can also say:
&gt; modifiers_by_category = {}
&gt; for m in modifiers:
&gt;     modifiers_by_category.setdefault(self._category(m), []).append(m)
&gt; return modifiers_by_category

Good idea. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325851</commentid>
    <comment_count>5</comment_count>
      <attachid>77297</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-22 19:14:30 -0800</bug_when>
    <thetext>Created attachment 77297
rebase to head post webkittools -&gt; tools rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326195</commentid>
    <comment_count>6</comment_count>
      <attachid>77297</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-23 12:01:52 -0800</bug_when>
    <thetext>Comment on attachment 77297
rebase to head post webkittools -&gt; tools rename

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

I like the concept.  I&apos;m as of yet not clear on the execution.  I&apos;ll read through this a second time in a bit.  You probably want Ojan&apos;s view on this onion, given that I think he wrote a bunch of the original code here.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:201
&gt;      def __repr__(self):
&gt; -        return &apos;ParseError(fatal=%s, errors=%s)&apos; % (fatal, errors)
&gt; +        return &apos;ParseError(fatal=%s, errors=%s)&apos; % (self.fatal, self.errors)

I guess this didn&apos;t work before.  Do we have a test for it now?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:532
&gt; +        #if line.find(&quot;:&quot;) is -1:
&gt; +        #    test_and_expectation = line.split(&quot;=&quot;)
&gt; +        #else:
&gt; +        #    parts = line.split(&quot;:&quot;)
&gt; +        #    options = self._get_options_list(parts[0])
&gt; +        #    test_and_expectation = parts[1].split(&apos;=&apos;)

I don&apos;t think you meant to leave this in.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:626
&gt; +        if not self._full_test_list:
&gt; +            tests = [test_list_path]
&gt; +        else:
&gt; +            tests = self._expand_tests(test_list_path)

Should this just be a helper accessor?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:628
&gt; +        modifiers = [o for o in options if o in self.MODIFIERS]

This seems like set.intersection.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:671
&gt; +                has_bug = True

Looks like you&apos;re setting has_bug twice?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:675
&gt; +            self._log_non_fatal_error(lineno, &apos;Test lacks BUG modifier.&apos;,
&gt; +            test_list_path)

Strange indent.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:680
&gt; +            self._add_error(lineno,
&gt; +            &apos;REBASELINE should only be used for running rebaseline.py. &apos;
&gt; +            &apos;Cannot be checked in.&apos;, test_list_path)

Again here.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:695
&gt; +        # WebKit&apos;s way of skipping tests is to add a -disabled suffix.
&gt; +            # So we should consider the path existing if the path or the

Disabled is actually different from skipping.  We disable tests when the need to be skipped on all platforms.  I think using -disabled pre-dates this Skipped list. :)

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:697
&gt; +        if (not self._port.path_exists(full_path)

Why use port here and not filesystem?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:835
&gt; +        if len(prev_base_path) &gt; len(base_path):
&gt; +            # The previous path matched more of the test.
&gt; +            return True
&gt; +        elif len(prev_base_path) &lt; len(base_path):
&gt; +            # This path matches more of the test.
&gt; +            return False

Seems we could just write this:

if len(prev_base_path) != len(base_path):
   return len(prev_base_path) &gt; len(base_path)

with explanitory comment if necessary.

I&apos;m not quite sure what that check is for yet though.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:938
&gt; +                         TestExpectationsFile.MODIFIERS.keys()[:-1])

is -1 tryign to avoid &quot;none&quot;?  Seems fragile at best.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:939
&gt; +    DUPLICATE_REGEXES_ALLOWED = [&apos;bug\w+&apos;]

I think you want r&apos;foo&apos; when making regexp strings, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326196</commentid>
    <comment_count>7</comment_count>
      <attachid>77297</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-12-23 12:02:37 -0800</bug_when>
    <thetext>Comment on attachment 77297
rebase to head post webkittools -&gt; tools rename

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:97
&gt; +            test_config: specific values to check against when

Can you mention that this is a TestConfiguration instance (&quot;specific values&quot; made me think this was a list or a set).

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:527
&gt; +        #if line.find(&quot;:&quot;) is -1:

Did you mean to leave in this commented-out code?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:534
&gt; +        parts = line.split(&apos;:&apos;)

Though not a regression from your patch, should this be line.split(&apos;:&apos;, 1) since you only look at parts[0] and [1]?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:536
&gt; +        test_and_expectation = parts[1].split(&apos;=&apos;)

Same here.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:652
&gt; +    def _check_syntax(self, matcher, options, lineno, test_list_path):

Call this _check_options_syntax to make it clearer what it&apos;s checking?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:660
&gt; +    def _check_semantics(self, options, lineno, test_list_path):

Same here, call this _check_options_semantics.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:674
&gt; +            self._log_non_fatal_error(lineno, &apos;Test lacks BUG modifier.&apos;,

The error message should perhaps say &quot;Test with WONTFIX lacks BUG modifier&quot; to make the error state cleaner?

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:890
&gt; +        self.os = os or port.test_platform_name().replace(port_version, &apos;&apos;)

What if port is not passed in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326220</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-12-23 12:36:01 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:201
&gt; &gt;      def __repr__(self):
&gt; &gt; -        return &apos;ParseError(fatal=%s, errors=%s)&apos; % (fatal, errors)
&gt; &gt; +        return &apos;ParseError(fatal=%s, errors=%s)&apos; % (self.fatal, self.errors)
&gt; 
&gt; I guess this didn&apos;t work before.  Do we have a test for it now?
&gt;

Yes, but not an explicit one. I will add one.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:532
&gt; &gt; +        #if line.find(&quot;:&quot;) is -1:
&gt; &gt; +        #    test_and_expectation = line.split(&quot;=&quot;)
&gt; &gt; +        #else:
&gt; &gt; +        #    parts = line.split(&quot;:&quot;)
&gt; &gt; +        #    options = self._get_options_list(parts[0])
&gt; &gt; +        #    test_and_expectation = parts[1].split(&apos;=&apos;)
&gt; 
&gt; I don&apos;t think you meant to leave this in.
&gt;

Correct. I will remove it.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:626
&gt; &gt; +        if not self._full_test_list:
&gt; &gt; +            tests = [test_list_path]
&gt; &gt; +        else:
&gt; &gt; +            tests = self._expand_tests(test_list_path)
&gt; 
&gt; Should this just be a helper accessor?

I think I&apos;ll move it inside _expand_tests(); I don&apos;t think having another routine helps much.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:628
&gt; &gt; +        modifiers = [o for o in options if o in self.MODIFIERS]
&gt; 
&gt; This seems like set.intersection.
&gt;

It is, but options and self.MODIFERS are lists, and modifiers needs to end up being a list. I didn&apos;t think converting back and forth would help clarity or speed.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:671
&gt; &gt; +                has_bug = True
&gt; 
&gt; Looks like you&apos;re setting has_bug twice?
&gt; 

Whoops. Will fix.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:675
&gt; &gt; +            self._log_non_fatal_error(lineno, &apos;Test lacks BUG modifier.&apos;,
&gt; &gt; +            test_list_path)
&gt; 
&gt; Strange indent.

Fixed.

&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:680
&gt; &gt; +            self._add_error(lineno,
&gt; &gt; +            &apos;REBASELINE should only be used for running rebaseline.py. &apos;
&gt; &gt; +            &apos;Cannot be checked in.&apos;, test_list_path)
&gt; 
&gt; Again here.
&gt; 

Fixed. Wonder where those came from.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:695
&gt; &gt; +        # WebKit&apos;s way of skipping tests is to add a -disabled suffix.
&gt; &gt; +            # So we should consider the path existing if the path or the
&gt; 
&gt; Disabled is actually different from skipping.  We disable tests when the need to be skipped on all platforms.  I think using -disabled pre-dates this Skipped list. :)
&gt; 

Will updated the comment accordingly.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:697
&gt; &gt; +        if (not self._port.path_exists(full_path)
&gt; 
&gt; Why use port here and not filesystem?
&gt; 

I think this routine predates the filesystem concept. It will be updated when I remove all of the other direct references to the os module and route everything through the filesystem.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:835
&gt; &gt; +        if len(prev_base_path) &gt; len(base_path):
&gt; &gt; +            # The previous path matched more of the test.
&gt; &gt; +            return True
&gt; &gt; +        elif len(prev_base_path) &lt; len(base_path):
&gt; &gt; +            # This path matches more of the test.
&gt; &gt; +            return False
&gt; 
&gt; Seems we could just write this:
&gt; 
&gt; if len(prev_base_path) != len(base_path):
&gt;    return len(prev_base_path) &gt; len(base_path)
&gt; 
&gt; with explanitory comment if necessary.
&gt;

We could, but I&apos;m not sure that that is clearer.

The question is whether we have two expectations of the form:

BUGX : fast = PASS
 BUGX: fast/html = FAIL

or of the form:

BUGX : fast/html = FAIL
BUGX : fast = PASS

In the first case, the second line is the one that matters. In the second case, it is ignored.

&gt; I&apos;m not quite sure what that check is for yet though.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:938
&gt; &gt; +                         TestExpectationsFile.MODIFIERS.keys()[:-1])
&gt; 
&gt; is -1 tryign to avoid &quot;none&quot;?  Seems fragile at best.
&gt;

Yes, and I agree. I&apos;m open to a better way of trying to assign that to what should be a constant. Somehow breaking it into two statements feels wrong.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:939
&gt; &gt; +    DUPLICATE_REGEXES_ALLOWED = [&apos;bug\w+&apos;]
&gt; 
&gt; I think you want r&apos;foo&apos; when making regexp strings, no?

You don&apos;t have to use them. My understanding is that r&apos;&apos; means &quot;raw&quot; string, not &quot;regexp&quot; string, and all it does is disable the backslash escaping that normally happens. However, they&apos;re certainly most common as regexps, so I&apos;ll add it to make that a bit clearer (I wish python had followed perl and ruby and allowed for a separate literal syntax for regexps instead).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331748</commentid>
    <comment_count>9</comment_count>
      <attachid>77297</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-10 11:24:44 -0800</bug_when>
    <thetext>Comment on attachment 77297
rebase to head post webkittools -&gt; tools rename

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:527
&gt;&gt; +        #if line.find(&quot;:&quot;) is -1:
&gt; 
&gt; Did you mean to leave in this commented-out code?

Still seeing this commented out block.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:671
&gt;&gt; +                has_bug = True
&gt; 
&gt; Looks like you&apos;re setting has_bug twice?

has_bug is still being set twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331850</commentid>
    <comment_count>10</comment_count>
      <attachid>77297</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-01-10 12:46:24 -0800</bug_when>
    <thetext>Comment on attachment 77297
rebase to head post webkittools -&gt; tools rename

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

r- for my nits + mihaip and eric&apos;s unaddressed comments. Overall, this is much cleaner.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:534
&gt;&gt; +        parts = line.split(&apos;:&apos;)
&gt; 
&gt; Though not a regression from your patch, should this be line.split(&apos;:&apos;, 1) since you only look at parts[0] and [1]?

Here and below, it would be an error in the test_expectations.txt file if there were a line with more than one : or =. Maybe as a separate patch we should modify the error check above to check that there is exactly 1 : and 1 =?

In either case, seems better for a separate patch.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:599
&gt; +    def _read_line(self, line, lineno, matcher, overrides_allowed):

Nit: This does a lot more than just read the line. Maybe call this _process_line or something like that?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:827
&gt; +        prev_entry = self._test_list_paths[test]
&gt; +        prev_base_path, prev_num_matches, prev_lineno = prev_entry

Nit: this can just be 1 line since you don&apos;t use prev_entry elsewhere. Remember, we don&apos;t have an 80 col requirement. :)

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:839
&gt; +        if (not overrides_allowed or test in self._overridding_tests):

This would be easier to read if you inverted the if-statement as most of this wouldn&apos;t need to be so indented. It would be:

if (...):
    # We have seen this path ...
    # ...
    # ...
    return False

...

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:890
&gt; +class ModifierMatcher(object):

This is a fairly involved class. Perhaps it should go in it&apos;s own file? ModifierMatchResult should probably go in that file as well?

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:879
&gt; +class TestConfiguration(object):

This is also a pretty involved class. Put it in it&apos;s own file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331875</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 13:10:22 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 77297 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77297&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:527
&gt; &gt;&gt; +        #if line.find(&quot;:&quot;) is -1:
&gt; &gt; 
&gt; &gt; Did you mean to leave in this commented-out code?
&gt; 
&gt; Still seeing this commented out block.
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:671
&gt; &gt;&gt; +                has_bug = True
&gt; &gt; 
&gt; &gt; Looks like you&apos;re setting has_bug twice?
&gt; 
&gt; has_bug is still being set twice.

Ah, yeah, I got interrupted with something on 12/22 and forgot to upload the last few changes. I will roll them in to the next patch. Sorry!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331920</commentid>
    <comment_count>12</comment_count>
      <attachid>77297</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-01-10 13:51:54 -0800</bug_when>
    <thetext>Comment on attachment 77297
rebase to head post webkittools -&gt; tools rename

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:922
&gt; +    BUG1 RELEASE : foo.html = FAIL
&gt; +    BUG1 WIN RELEASE : foo.html = PASS
&gt; +    BUG2 WIN : bar.html = FAIL
&gt; +    BUG2 DEBUG : bar.html = PASS
&gt; +
&gt; +    the expectation for foo.html on a Win XP Release bot would be PASS since
&gt; +    the scores for the first two lines are 1 and 2, respectively. However,
&gt; +    lines three and four would produce a duplicate expectation on  a Win
&gt; +    Debug bot since both the &apos;win&apos; and the &apos;debug&apos; expectations would apply.

I&apos;m confused. Shouldn&apos;t all of these be duplicates except lines 1 and 4? I thought we had agreed that more modifiers doesn&apos;t override fewer modifiers, they still conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331924</commentid>
    <comment_count>13</comment_count>
      <attachid>78447</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 13:57:28 -0800</bug_when>
    <thetext>Created attachment 78447
Update w/ more review feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331926</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 13:58:21 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 77297 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77297&amp;action=review
&gt; 
&gt; r- for my nits + mihaip and eric&apos;s unaddressed comments. Overall, this is much cleaner.
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:534
&gt; &gt;&gt; +        parts = line.split(&apos;:&apos;)
&gt; &gt; 
&gt; &gt; Though not a regression from your patch, should this be line.split(&apos;:&apos;, 1) since you only look at parts[0] and [1]?
&gt; 
&gt; Here and below, it would be an error in the test_expectations.txt file if there were a line with more than one : or =. Maybe as a separate patch we should modify the error check above to check that there is exactly 1 : and 1 =?
&gt; 
&gt; In either case, seems better for a separate patch.
&gt; 

Will add better tests in a separate patch. Note that multiple &apos;=&apos; is caught now, although with a confusing error message.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:599
&gt; &gt; +    def _read_line(self, line, lineno, matcher, overrides_allowed):
&gt; 
&gt; Nit: This does a lot more than just read the line. Maybe call this _process_line or something like that?
&gt; 

Done.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:827
&gt; &gt; +        prev_entry = self._test_list_paths[test]
&gt; &gt; +        prev_base_path, prev_num_matches, prev_lineno = prev_entry
&gt; 
&gt; Nit: this can just be 1 line since you don&apos;t use prev_entry elsewhere. Remember, we don&apos;t have an 80 col requirement. :)
&gt;

Done.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:839
&gt; &gt; +        if (not overrides_allowed or test in self._overridding_tests):
&gt; 
&gt; This would be easier to read if you inverted the if-statement as most of this wouldn&apos;t need to be so indented. It would be:
&gt; 
&gt; if (...):
&gt;     # We have seen this path ...
&gt;     # ...
&gt;     # ...
&gt;     return False
&gt; 
&gt; ...
&gt;

Done.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:890
&gt; &gt; +class ModifierMatcher(object):
&gt; 
&gt; This is a fairly involved class. Perhaps it should go in it&apos;s own file? ModifierMatchResult should probably go in that file as well?
&gt;

I don&apos;t really want to do this, because ModifierMatcher is only used by the test expectations classes and is logically a part of that module. Make sense?

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:879
&gt; &gt; +class TestConfiguration(object):
&gt; 
&gt; This is also a pretty involved class. Put it in it&apos;s own file?

I put this in the same file as the Port and Driver classes because ports may want to override one or more of these classes, but never need to override any of the other classes in other files. So, I think they logically belong together. Does that make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331948</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 14:35:47 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 77297 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77297&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:922
&gt; &gt; +    BUG1 RELEASE : foo.html = FAIL
&gt; &gt; +    BUG1 WIN RELEASE : foo.html = PASS
&gt; &gt; +    BUG2 WIN : bar.html = FAIL
&gt; &gt; +    BUG2 DEBUG : bar.html = PASS
&gt; &gt; +
&gt; &gt; +    the expectation for foo.html on a Win XP Release bot would be PASS since
&gt; &gt; +    the scores for the first two lines are 1 and 2, respectively. However,
&gt; &gt; +    lines three and four would produce a duplicate expectation on  a Win
&gt; &gt; +    Debug bot since both the &apos;win&apos; and the &apos;debug&apos; expectations would apply.
&gt; 
&gt; I&apos;m confused. Shouldn&apos;t all of these be duplicates except lines 1 and 4? I thought we had agreed that more modifiers doesn&apos;t override fewer modifiers, they still conflict.

No, I don&apos;t think we agreed to that. If we had, then you would have to update old expectations every time we added new expectations for one particular configuration, which could be really annoying.

E.g.:

BUG1 : foo.html = FAIL

Now foo starts to pass on WIN-XP.

BUG1 : foo.html = FAIL
BUG2 WIN XP GPU : foo.html = PASS

If more modifiers doesn&apos;t override fewer modifiers, we&apos;d have to change line 1 to something like:

BUG1 MAC LINUX : foo.html = FAIL
BUG1 WIN VISTA WIN7 : foo.html = FAIL
BUG1 WIN XP CPU: foo.html = FAIL
BUG1 WIN XP GPU: foo.html = PASS

That seems less good to me, especially when you consider the original motivation.

In particular, the GPU tests skip a whole bunch of directories. If more modifiers didn&apos;t override fewer, we would have to explicitly whitelist those directories in the CPU case, which is essentially adding noise to the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331956</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 14:38:40 -0800</bug_when>
    <thetext>thinking about it a bit more, it seems like if we allow more modifiers to override fewer modifiers, then it is possible for a good citizen to produce a smaller, cleaner file than otherwise. It is also possible to allow a bad citizen to just add cruft (though not errors) to the file.

I&apos;m not generally in favor of languages that protect you from yourself without offering other benefits, so I think I&apos;m still on the side of the code as written (although more modifiers probably shouldn&apos;t even produce a warning).

I will generate a couple of merged expectations files either way and maybe seeing what the resulting files will look like will be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331969</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-01-10 14:58:41 -0800</bug_when>
    <thetext>I am concerned about the following case:

BUG1 : foo.html = FAIL
BUG2 WIN : foo.html = PASS

Turning into:

BUG1 : foo.html = FAIL
BUG2 WIN : foo.html = PASS
...
BUG3 LINUX MAC : foo.html = PASS

because someone didn&apos;t see the BUG1 somewhere else in the file.

Also, in your example, instead of:

BUG1 MAC LINUX : foo.html = FAIL
BUG1 WIN VISTA WIN7 : foo.html = FAIL
BUG1 WIN XP CPU: foo.html = FAIL
BUG1 WIN XP GPU: foo.html = PASS

couldn&apos;t I just write:

BUG1 MAC LINUX WIN VISTA WIN7 : foo.html = FAIL
BUG1 WIN XP CPU: foo.html = FAIL

In general, I&apos;m skeptical of times where use put PASS in the test_expectations.txt unless it&apos;s for flakey results or slow tests.

How many tests are passing with gpu enabled that are failing without gpu?  It&apos;s not really that many, is it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332031</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 16:23:08 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I am concerned about the following case:
&gt; 
&gt; BUG1 : foo.html = FAIL
&gt; BUG2 WIN : foo.html = PASS
&gt; 
&gt; Turning into:
&gt; 
&gt; BUG1 : foo.html = FAIL
&gt; BUG2 WIN : foo.html = PASS
&gt; ...
&gt; BUG3 LINUX MAC : foo.html = PASS
&gt; 
&gt; because someone didn&apos;t see the BUG1 somewhere else in the file.
&gt; 

Yes. That is a risk. The risk could be offset, as I discussed with Ojan over IM, by building a &quot;deduplicating&quot; script that identified opportunities for simplification. Alternatively, the lint warnings would be sufficient here (although as I mentioned to Ojan, if there&apos;s no good way to distinguish between a valid warning and a warning that should be suppressed, the lint warning may not be useful).

&gt; Also, in your example, instead of:
&gt; 
&gt; BUG1 MAC LINUX : foo.html = FAIL
&gt; BUG1 WIN VISTA WIN7 : foo.html = FAIL
&gt; BUG1 WIN XP CPU: foo.html = FAIL
&gt; BUG1 WIN XP GPU: foo.html = PASS
&gt; 
&gt; couldn&apos;t I just write:
&gt; 
&gt; BUG1 MAC LINUX WIN VISTA WIN7 : foo.html = FAIL
&gt; BUG1 WIN XP CPU: foo.html = FAIL
&gt; 

No. MAC VISTA is not a valid combination and would keep *any* Mac or Linux configuration from matching.

&gt; In general, I&apos;m skeptical of times where use put PASS in the test_expectations.txt unless it&apos;s for flakey results or slow tests.
&gt; 

I agree. We don&apos;t want to specify PASSes. My worry is that we end up having to add them to distinguish the axes that pass from the axes that fail. It is perhaps an unfounded worry.

One problem that we&apos;re looking at here is that there&apos;s no good way to say &quot;not X&quot; for a given configuration X. In the past, &quot;not X&quot; usually meant a single &quot;Y&quot;. With the increase in axes of configuration, it&apos;s more cumbersome to get that, which is why I ended up with the &quot;most matches win&quot; algorithm instead.

&gt; How many tests are passing with gpu enabled that are failing without gpu?  It&apos;s not really that many, is it?

That is a good question. I don&apos;t know, but posting the merged test expectations files should tell us. 

Of course, the cases could also be that they fail differently in the two configs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332056</commentid>
    <comment_count>19</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-10 16:55:40 -0800</bug_when>
    <thetext>&gt; How many tests are passing with gpu enabled that are failing without gpu?  It&apos;s not really that many, is it?

In canvas, it&apos;s about 3 (and about 5 the reverse).  Compositing and WebGL, I&apos;m not sure.  Probably low double digits at worst.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332070</commentid>
    <comment_count>20</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 17:27:10 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; How many tests are passing with gpu enabled that are failing without gpu?  It&apos;s not really that many, is it?
&gt; 
&gt; In canvas, it&apos;s about 3 (and about 5 the reverse).  Compositing and WebGL, I&apos;m not sure.  Probably low double digits at worst.

There&apos;s 158 tests in compositing and 78 in fast/canvas/webgl. All of the compositing tests fail, but that&apos;s one line. There&apos;s about 10 webgl tests that fail using Mesa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332077</commentid>
    <comment_count>21</comment_count>
      <attachid>78479</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 17:43:36 -0800</bug_when>
    <thetext>Created attachment 78479
sample merged test_expectations file where conflicting modifiers are not allowed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332087</commentid>
    <comment_count>22</comment_count>
      <attachid>78483</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 17:58:20 -0800</bug_when>
    <thetext>Created attachment 78483
sample merged test_expectations file where conflicting modifiers are allowed if they&apos;re unambiguous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332090</commentid>
    <comment_count>23</comment_count>
      <attachid>78484</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 18:04:42 -0800</bug_when>
    <thetext>Created attachment 78484
diff of the two test expectations files (and the code)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332093</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-10 18:09:28 -0800</bug_when>
    <thetext>Okay, I&apos;ve posted samples of what the files would look like if (a) we didn&apos;t allow conflicting sets of expectations, (b) we did allow them and didn&apos;t report warnings about the overrides, and (c) the diff between the two.

It&apos;s pretty much a wash. The overrides-allowed version is slightly terser, and the merge can be done w/o modifying the existing main file, but the number of mods needed is minimal in either case.

Given that, I don&apos;t feel strongly about what we do here. I think we all agree that there are plusses and minuses to either design. If y&apos;all would prefer to raise conflicts in any case, which is arguably safer to start off with, I&apos;m okay with that.

A third option would be to allow overrides but to generate warnings or errors unless the override was explicitly noted via something like an OVERRIDE modifier. This would probably add a couple lines of code, but I doubt it&apos;s worth the effort and added complexity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332095</commentid>
    <comment_count>25</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-01-10 18:15:28 -0800</bug_when>
    <thetext>I&apos;d prefer the former (w/CPU modifier added).  It&apos;s only a few extra lines in text_expectations, and if nothing else, it&apos;s less education required for the WebKit sheriffs (since it behaves more like other modifiers do currently).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332726</commentid>
    <comment_count>26</comment_count>
      <attachid>78609</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 15:25:58 -0800</bug_when>
    <thetext>Created attachment 78609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332728</commentid>
    <comment_count>27</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 15:27:44 -0800</bug_when>
    <thetext>I&apos;ll take the lack of any further comments as having reached consensus that if there are multiple lines in the file that match the given config, we should raise errors instead of allowing a more specific line to override a less specific line. 

I&apos;ve updated the code and tests accordingly and re-uploaded the patch. Can someone please review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332774</commentid>
    <comment_count>28</comment_count>
      <attachid>78609</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-01-11 16:23:04 -0800</bug_when>
    <thetext>Comment on attachment 78609
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:927
&gt; +    BUG1 RELEASE : foo.html = FAIL
&gt; +    BUG1 WIN RELEASE : foo.html = PASS
&gt; +    BUG2 WIN : bar.html = FAIL
&gt; +    BUG2 DEBUG : bar.html = PASS
&gt; +
&gt; +    the expectation for foo.html on a Win XP Release bot would be PASS since
&gt; +    the scores for the first two lines are 1 and 2, respectively. However,
&gt; +    lines three and four would produce a duplicate expectation on  a Win
&gt; +    Debug bot since both the &apos;win&apos; and the &apos;debug&apos; expectations would apply.

This comment is no longer accurate, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332793</commentid>
    <comment_count>29</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 16:41:46 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 78609 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78609&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:927
&gt; &gt; +    BUG1 RELEASE : foo.html = FAIL
&gt; &gt; +    BUG1 WIN RELEASE : foo.html = PASS
&gt; &gt; +    BUG2 WIN : bar.html = FAIL
&gt; &gt; +    BUG2 DEBUG : bar.html = PASS
&gt; &gt; +
&gt; &gt; +    the expectation for foo.html on a Win XP Release bot would be PASS since
&gt; &gt; +    the scores for the first two lines are 1 and 2, respectively. However,
&gt; &gt; +    lines three and four would produce a duplicate expectation on  a Win
&gt; &gt; +    Debug bot since both the &apos;win&apos; and the &apos;debug&apos; expectations would apply.
&gt; 
&gt; This comment is no longer accurate, right?

Duh. Good catch. I&apos;ll update the comments on this as I land the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332813</commentid>
    <comment_count>30</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 17:15:57 -0800</bug_when>
    <thetext>Committed r75576: &lt;http://trac.webkit.org/changeset/75576&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333109</commentid>
    <comment_count>31</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-01-12 09:04:49 -0800</bug_when>
    <thetext>Hi,

this broke rebaseline-chromium-webkit-tests. Repro:

1. add &quot;BUGTHAKIS REBASELINE WIN : svg/custom/js-late-gradient-and-object-creation.svg = IMAGE&quot; to the test_expectations.txt file and run r-c-w-t -w. It should rebaseline that one test, instead it does nothing.

2. add &quot;BUGTHAKIS REBASELINE : svg/custom/js-late-gradient-and-object-creation.svg = IMAGE&quot; (i.e. no &quot;WIN&quot;) to test_expectations.txt and run r-c-w-t -w. This correctly tries to rebaseline on mac and then dies with

110112 08:58:58 test_expectations.py:367 ERROR Line:3090 Can&apos;t specify both modifier &apos;win&apos; and macro &apos;win-xp&apos; svg/custom/js-late-gradient-and-object-creation.svg

If I revert this patch locally, both these problems disappear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333110</commentid>
    <comment_count>32</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-01-12 09:05:12 -0800</bug_when>
    <thetext>(see previous comment)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333987</commentid>
    <comment_count>33</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-13 15:39:54 -0800</bug_when>
    <thetext>Ugh. It turns out there are (at least?) two bugs that this patch introduces to the rebaselining tool, which of course is very poorly covered by unit tests.

The first is a simple typo; when I change the constructor for the test expectations object, I didn&apos;t update the r-c-w-t code correctly and passed in the &quot;target&quot; port instead of the &quot;rebaselining&quot; port. That explains why your first repro case wasn&apos;t finding any files.

The second bug (and the second repro case) is much worse, and has to do with the feature that allows us to rebaseline &quot;every&quot; port. Prior to this change, there was a 1:1 mapping between the values returned by port.test_platform_names() and the list of identifiers that would uniquely describe every port that might need to be rebaselined. The way the rebaselining code works is that if you have an expectation that is marked for rebaselining that doesn&apos;t contain any test platforms (like in your second example), we first rebaseline the file for the rebaselining port, and then we replace that line with a line that contains every platform name except for the name of the rebaselining port (*).

There are two problems introduced by the patch. The first is that we can no longer capture &quot;every port but one&quot; in a single test expectation line. This is the conflict that we&apos;re tripping over in your second repro case, and it&apos;s easy to fix (just generate N lines instead of 1). The second is that it&apos;s much less clear what the N need to be. test_platform_names() as a whole probably needs to be revamped, because we don&apos;t have a set of identifiers that uniquely describes every variant (e.g., there&apos;s no GPU-WIN-XP).

I think we can get around this by having test_platform_name() return a string containing a list of modifiers that will uniquely identify the port variant. We also need to replace the code that figures out the list of platforms to check for rebaselines against. I will be working on what that patch will look like now.

(*) - We actually also have a hard-coded whitelist of ports that shouldn&apos;t be rebaselined automatically (&apos;win-vista&apos;, &apos;win-7&apos;) because the bots on those ports aren&apos;t reliable enough to trust. We may need to support this in some way as well.

Mihai suggests that the whole logic of &quot;rebaseline every port&quot; is somewhat questionable to begin with. Given that the way we rebaseline things is to push a change to a set of bots and run the change and then pull down files, perhaps the logic should be &quot;rebaseline every failing port&quot; instead, and determine the list of directories to update from the bots themselves, rather than a priori assuming that every bot should fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339403</commentid>
    <comment_count>34</comment_count>
      <attachid>79996</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-24 17:38:58 -0800</bug_when>
    <thetext>Created attachment 79996
update w/ more unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339410</commentid>
    <comment_count>35</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-24 17:44:26 -0800</bug_when>
    <thetext>Right ... okay, after a two-week detour to shave some yaks, we&apos;re ready with this again.

Changes to note from the previous version:

1) we&apos;ve added a bunch more logic to port/test.py to better simulate the cases that come up with chromium (there are now &apos;mac&apos;, &apos;win&apos;, and &apos;win-xp&apos; versions of the test port)

2) we&apos;ve added unit tests to rebaseline-chromium-webkit-tests that catch the features that the patch broke before

3) In test_expectations.TestExpectationsFile.remove_platform_from_expectations(), instead of cramming all of the platform modifiers onto one line, we create one new line with each modifier. This is a change in lines 491-506. The new way of handling platform configurations doesn&apos;t support the old behavior. This shouldn&apos;t break anyone in practice, since I doubt anyone was really rebaselining multiple version-specific sets of files at once using the rebaselining tool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342779</commentid>
    <comment_count>36</comment_count>
      <attachid>80673</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 13:11:42 -0800</bug_when>
    <thetext>Created attachment 80673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342795</commentid>
    <comment_count>37</comment_count>
      <attachid>80676</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 13:55:20 -0800</bug_when>
    <thetext>Created attachment 80676
This is the diff between what was checked in w/ r75576, and the new version (ignoring the ChangeLog deltas, which got confused)

Things to note in the new version of this patch:

1) The actual bug that broke the rebaselining tool is fixed in test_expectations.py, in the patch near line 498. Instead of putting all of the ports that need rebaselining onto one line, we create multiple lines containing one port each (the new configuration matching logic can&apos;t won&apos;t accept conflicting sets of modifiers on the same line).

2) I added a &apos;test-win-xp&apos; version to test that we handle the version conflicts while rebaselining correctly.

3) I changed all of the &quot;mac snowleopard&quot; references in test_expectations_unittest.py to &quot;win xp&quot; because there is no test-mac-snowleopard configuration (this just makes things somewhat more consistent).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342796</commentid>
    <comment_count>38</comment_count>
      <attachid>80677</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 13:56:40 -0800</bug_when>
    <thetext>Created attachment 80677
rebase to r73176, make work with rebaselining changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342818</commentid>
    <comment_count>39</comment_count>
      <attachid>80677</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-31 14:35:09 -0800</bug_when>
    <thetext>Comment on attachment 80677
rebase to r73176, make work with rebaselining changes

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

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:668
&gt; +            test_list_path)

The wrapped line should be indented more.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:672
&gt; +            &apos;REBASELINE should only be used for running rebaseline.py. &apos;

Same here.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:679
&gt; +                &apos;A test can not be both slow and timeout. If it times out &apos;

Capitalize both SLOW and TIMEOUT in the message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342836</commentid>
    <comment_count>40</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-31 14:59:23 -0800</bug_when>
    <thetext>Committed r77163: &lt;http://trac.webkit.org/changeset/77163&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76829</attachid>
            <date>2010-12-16 16:57:56 -0800</date>
            <delta_ts>2010-12-20 19:34:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51222-20101216165755.patch</filename>
            <type>text/plain</type>
            <size>17042</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzYWM2YzY2NWU0MWYyNGVlMGI3YWNkNDY2YjlmZjQwYmQ2ZjZkNGE5Li4wMDZkZTlj
NTBkZjFmOWQ2M2FlNmE2YmQzOWM1ZjliNzRiMzc3MzUxIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTAtMTItMTYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9k
aWZpZXIgcGFyc2luZyBjb2RlIGluIHRlc3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdp
bGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9n
aWMKKyAgICAgICAgb3IgZWFzaWx5IGFkZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQ
VSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAgICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQg
dnMuIDY0LWJpdCBkaWZmZXJlbmNlcykuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2Yg
dGhyZWUgcGF0Y2hlcyB0aGF0IHdpbGwgYWRkIGluIG1vcmUgZ2VuZXJpYworICAgICAgICBzdXBw
b3J0IGFuZCB0aGVuIGVsaW1pbmF0ZSB0aGUgR1BVLXNwZWNpZmljIHRlc3QgZXhwZWN0YXRpb25z
CisgICAgICAgIGZpbGVzIGZvciBDaHJvbWl1bS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMg
YSBzdGFuZGFsb25lIG9iamVjdCBmb3IgaGFuZGxpbmcgbW9kaWZpZXJzLiBUaGUKKyAgICAgICAg
cnVsZXMgZm9yIGludGVycHJldGluZyBtb2RpZmllcnMsIHByZWNlZGVuY2UsIGFuZCBjb25mbGlj
dHMgYXJlCisgICAgICAgIGdpdmVuIGluIHRoZSBkb2NzdHJpbmcgdG8gdGhlIE1vZGlmaWVyTWF0
Y2hlciBjbGFzcy4KKworICAgICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIGludGVncmF0ZSB0aGlz
IGludG8gdGhlIG1haW4gY2xhc3NlcywgYW5kIHRoZQorICAgICAgICB0aGlyZCB3aWxsIHJlbW92
ZSB0aGUgc2VwYXJhdGUgR1BVIGV4cGVjdGF0aW9ucyBmaWxlLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTIyMgorCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTItMTQgIFBoaWxpcHBl
IE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9q
YW4gVmFmYWkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0
YXRpb25zLnB5CmluZGV4IGEyMzc4NjMxYzA5ZGE0MDIxNDQ2ZTM3MDQyZmRiYTFjNWJhZTg2MmYu
LjhlNDYyNDZlODQxMDU4MDUwZjQ4NDVjZGI4YjJiNWY5MDIzYWExOWEgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rl
c3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC0zMSw2ICsz
MSw3IEBACiBmb3IgbGF5b3V0IHRlc3RzLgogIiIiCiAKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9y
dCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtODYzLDMgKzg2NCwyNjIgQEAgY2xh
c3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICIiIlJlcG9ydHMgYW4gZXJyb3IgdGhh
dCB3aWxsIG5vdCBwcmV2ZW50IHJ1bm5pbmcgdGhlIHRlc3RzLiBUaGVzZSBhcmUKICAgICAgICAg
c3RpbGwgZXJyb3JzLCBidXQgbm90IGJhZCBlbm91Z2ggdG8gd2FycmFudCBicmVha2luZyB0ZXN0
IHJ1bm5pbmcuIiIiCiAgICAgICAgIHNlbGYuX25vbl9mYXRhbF9lcnJvcnMuYXBwZW5kKCdMaW5l
OiVzICVzICVzJyAlIChsaW5lbm8sIG1zZywgcGF0aCkpCisKKworY2xhc3MgTW9kaWZpZXJNYXRj
aGVyKG9iamVjdCk6CisKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIG1hbmFnZXMgdGhlIGludGVy
cHJldGF0aW9uIG9mIHRoZSAibW9kaWZpZXJzIiBmb3IgYSBnaXZlbgorICAgIGxpbmUgaW4gdGhl
IGV4cGVjdGF0aW9ucyBmaWxlLiBNb2RpZmllcnMgYXJlIHRoZSB0b2tlbnMgdGhhdCBhcHBlYXIg
dG8gdGhlCisgICAgbGVmdCBvZiB0aGUgY29sb24gb24gYSBsaW5lLiBGb3IgZXhhbXBsZSwgIkJV
RzEyMzQiLCAiREVCVUciLCBhbmQgIldJTiIgYXJlCisgICAgYWxsIG1vZGlmaWVycy4gVGhpcyBj
bGFzcyBkZWZpbmVzIHdoYXQgdGhlIHZhbGlkIG1vZGlmaWVycyBhcmUsIGFuZCB3aGljaAorICAg
IG1vZGlmaWVycyBhcmUgYWxsb3dlZCB0byBleGlzdCB0b2dldGhlciBvbiBhIGxpbmUuIFRoaXMg
Y2xhc3MgZGV0ZWN0cworICAgICppbnRyYSotbGluZSBlcnJvcnMgbGlrZSB1bmtub3duIG1vZGlm
aWVycywgYnV0IGRvZXMgbm90IGRldGVjdAorICAgICppbnRlciotbGluZSBtb2RpZmllcnMgbGlr
ZSBkdXBsaWNhdGUgZXhwZWN0YXRpb25zLgorCisgICAgTW9yZSBpbXBvcnRhbnRseSwgdGhpcyBj
bGFzcyBpcyBhbHNvIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gbGluZQorICAgIG1hdGNo
ZXMgdGhlIHBvcnQgaW4gcXVlc3Rpb24uIE1hdGNoZXMgYXJlIHJhbmtlZCBhY2NvcmRpbmcgdG8g
dGhlIG51bWJlcgorICAgIG9mIG1vZGlmaWVycyB0aGF0IG1hdGNoIG9uIGEgbGluZS4gQSBsaW5l
IHdpdGggbm8gbW9kaWZpZXJzIG1hdGNoZXMKKyAgICBldmVyeXRoaW5nIGFuZCBoYXMgYSBzY29y
ZSBvZiB6ZXJvLiBBIGxpbmUgd2l0aCBvbmUgbW9kaWZpZXIgbWF0Y2hlcyBvbmx5CisgICAgcG9y
dHMgdGhhdCBoYXZlIHRoYXQgbW9kaWZpZXIgYW5kIGdldHMgYSBzY29yZSBvZiAxLCBhbmQgc28g
b25lLiBQb3J0cworICAgIHRoYXQgZG9uJ3QgbWF0Y2ggYXQgYWxsIGdldCBhIHNjb3JlIG9mIC0x
LgorCisgICAgR2l2ZW4gdHdvIGxpbmVzIGluIGEgZmlsZSB0aGF0IGFwcGx5IHRvIHRoZSBzYW1l
IGZpbGUsIGEgaGlnaGVyIHNjb3JlCisgICAgYmVhdHMgYSBsb3dlciBvbmUsIGFuZCB0d28gbGlu
ZXMgd2l0aCB0aGUgc2FtZSBzY29yZSBhcmUgY29uc2lkZXJlZAorICAgIGFtYmlndW91cyAoaW5k
ZXBlbmRlbnQgb2YgdGhlIG9yZGVyIG9mIGxpbmVzIGluIHRoZSBmaWxlKS4gRm9yIGV4YW1wbGUs
IGluOgorCisgICAgQlVHMSBSRUxFQVNFIDogZm9vLmh0bWwgPSBGQUlMCisgICAgQlVHMSBXSU4g
UkVMRUFTRSA6IGZvby5odG1sID0gUEFTUworICAgIEJVRzIgV0lOIDogYmFyLmh0bWwgPSBGQUlM
CisgICAgQlVHMiBERUJVRyA6IGJhci5odG1sID0gUEFTUworCisgICAgdGhlIGV4cGVjdGF0aW9u
IGZvciBmb28uaHRtbCBvbiBhIFdpbiBYUCBSZWxlYXNlIGJvdCB3b3VsZCBiZSBQQVNTIHNpbmNl
CisgICAgdGhlIHNjb3JlcyBmb3IgdGhlIGZpcnN0IHR3byBsaW5lcyBhcmUgMSBhbmQgMiwgcmVz
cGVjdGl2ZWx5LiBIb3dldmVyLAorICAgIGxpbmVzIHRocmVlIGFuZCBmb3VyIHdvdWxkIHByb2R1
Y2UgYSBkdXBsaWNhdGUgZXhwZWN0YXRpb24gb24gIGEgV2luCisgICAgRGVidWcgYm90IHNpbmNl
IGJvdGggdGhlICd3aW4nIGFuZCB0aGUgJ2RlYnVnJyBleHBlY3RhdGlvbnMgd291bGQgYXBwbHku
CisKKyAgICBJbiBhZGRpdGlvbiB0byB0aGUgZGVmaW5pdGlvbnMgb2YgYWxsIG9mIHRoZSBtb2Rp
ZmllcnMsIHRoZSBjbGFzcworICAgIHN1cHBvcnRzICJtYWNyb3MiIHRoYXQgYXJlIGV4cGFuZGVk
IHByaW9yIHRvIGludGVycHJldGF0aW9uLCBhbmQgImlnbm9yZQorICAgIHJlZ2V4ZXMiIHRoYXQg
Y2FuIGJlIHVzZWQgdG8gc2tpcCBvdmVyIG1vZGlmaWVycyBsaWtlIHRoZSBCVUcqIG1vZGlmaWVy
cy4KKyAgICAiIiIKKworICAgICMgRklYTUU6IE1lcmdlIGluIGFsbCB0aGlzIGRhdGEgd2l0aCB0
aGUgZGF0YSBkZWZpbmVkIGhpZ2hlciB1cCBpbiB0aGUgZmlsZS4KKworICAgICMgRklYTUU6IEF0
IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2FudCB0aGVzZSBkZWZpbml0aW9ucyB0byBlaXRoZXIgYmUK
KyAgICAjIHB1bGxlZCBmcm9tIHRoZSBQb3J0IG9iamVjdHMsIG9yIGF0IGxlYXN0IG92ZXJyaWRh
YmxlIGJ5IHRoZW0uCisKKyAgICAjIEZJWE1FOiBUaGUgY29kZSBjdXJyZW50bHkgZG9lc24ndCBk
ZXRlY3QgY29tYmluYXRpb25zIG9mIG1vZGlmaWVycworICAgICMgdGhhdCBhcmUgc3ludGFjdGlj
YWxseSB2YWxpZCBidXQgc2VtYW50aWNhbGx5IGludmFsaWQsIGxpa2UKKyAgICAjICdNQUMgWFAn
LiBTZWUgTW9kaWZpZXJNYXRjaFRlc3QudGVzdF9pbnZhbGlkX2NvbWJpbmF0aW9ucygpIGluIHRo
ZQorICAgICMgX3VuaXR0ZXN0LnB5IGZpbGUuCisKKyAgICBERUZBVUxUX0FMTE9XRURfTU9ESUZJ
RVJTID0geworICAgICAgICAnby9zJzogWydtYWMnLCAnd2luJywgJ2xpbnV4J10sCisgICAgICAg
ICd2ZXJzaW9uJzogWworICAgICAgICAgICAgJ2xlb3BhcmQnLCAnc25vd2xlb3BhcmQnLAorICAg
ICAgICAgICAgJ3hwJywgJ3Zpc3RhJywgJ3dpbjcnLAorICAgICAgICAgICAgJ2hhcmR5JywKKyAg
ICAgICAgXSwKKyAgICAgICAgJ2NvbmZpZ3VyYXRpb24nOiBbJ2RlYnVnJywgJ3JlbGVhc2UnXSwK
KyAgICAgICAgJ2dyYXBoaWNzX3R5cGUnOiBbJ2NwdScsICdncHUnXSwKKyAgICAgICAgJ2FyY2hp
dGVjdHVyZSc6IFsneDg2JywgJ3g4Ni02NCddLAorICAgIH0KKworICAgIERFRkFVTFRfU0hPUlRD
VVRTID0geworICAgICAgICAnbWFjLXNub3dsZW9wYXJkJzogWydtYWMnLCAnc25vd2xlb3BhcmQn
XSwKKyAgICAgICAgJ21hYy1sZW9wYXJkJzogWydtYWMnLCAnbGVvcGFyZCddLAorICAgICAgICAn
d2luLXhwJzogWyd3aW4nLCAneHAnXSwKKyAgICAgICAgJ3dpbi12aXN0YSc6IFsnd2luJywgJ3Zp
c3RhJ10sCisgICAgICAgICd3aW4tNyc6IFsnd2luJywgJ3dpbjcnXSwKKyAgICB9CisKKyAgICBE
RUZBVUxUX1JFR0VYRVNfVE9fSUdOT1JFID0gWydidWdcdysnLCAncmViYXNlbGluZScsICd3b250
Zml4J10KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RpZmllcnNfdG9fbWF0Y2hfYWdhaW5z
dCk6CisgICAgICAgICIiIkluaXRpYWxpemUgYSBNb2RpZmllck1hdGNoZXIgYXJndW1lbnQgd2l0
aCB0aGUgZGljdCBvZiB2YWx1ZXMgdGhhdAorICAgICAgICBzaG91bGQgYmUgbWF0Y2hlZCBhZ2Fp
bnN0LiIiIgorCisgICAgICAgICMgRklYTUU6IFdoZW4gaW50ZWdyYXRlZCwgdGhlIGxpc3Qgd2ls
bCBjb21lIGZyb20gdGhlIHBvcnQgb2JqZWN0CisgICAgICAgICMgcGFzc2VkIHRvIHRoZSBUZXN0
RXhwZWN0YXRpb25zRmlsZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgc2VsZi5jbGVhcigpCisKKyAg
ICAgICAgc2VsZi5hbGxvd2VkX21vZGlmaWVycyA9IHNlbGYuREVGQVVMVF9BTExPV0VEX01PRElG
SUVSUworICAgICAgICBzZWxmLnNob3J0Y3V0cyA9IHNlbGYuREVGQVVMVF9TSE9SVENVVFMKKwor
ICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIGFsbCBvZiB0aGUgbGVnYWwgbW9kaWZpZXJzIGZvciBx
dWljayBjaGVja2luZy4KKyAgICAgICAgc2VsZi5fYWxsX21vZGlmaWVycyA9IFtdCisKKyAgICAg
ICAgIyBLZWVwIGEgZGljdCBtYXBwaW5nIHZhbHVlcyBiYWNrIHRvIHRoZWlyIGNhdGVnb3JpZXMu
IFRoaXMgaW52ZXJ0cworICAgICAgICAjIHNlbGYuYWxsb3dlZF92YWx1ZXMuCisgICAgICAgIHNl
bGYuX2NhdGVnb3JpZXNfZm9yX21vZGlmaWVycyA9IHt9CisgICAgICAgIGZvciBjYXRlZ29yeSwg
bW9kaWZpZXJzIGluIHNlbGYuYWxsb3dlZF9tb2RpZmllcnMuaXRlcml0ZW1zKCk6CisgICAgICAg
ICAgICBmb3IgbW9kaWZpZXIgaW4gbW9kaWZpZXJzOgorICAgICAgICAgICAgICAgIHNlbGYuX2Nh
dGVnb3JpZXNfZm9yX21vZGlmaWVyc1ttb2RpZmllcl0gPSBjYXRlZ29yeQorICAgICAgICAgICAg
ICAgIHNlbGYuX2FsbF9tb2RpZmllcnMuYXBwZW5kKG1vZGlmaWVyKQorCisgICAgICAgIHNlbGYu
cmVnZXhlc190b19pZ25vcmUgPSB7fQorICAgICAgICBmb3IgcmVnZXhfc3RyIGluIHNlbGYuREVG
QVVMVF9SRUdFWEVTX1RPX0lHTk9SRToKKyAgICAgICAgICAgIHNlbGYucmVnZXhlc190b19pZ25v
cmVbcmVnZXhfc3RyXSA9IHJlLmNvbXBpbGUocmVnZXhfc3RyKQorCisgICAgICAgICMgVmVyaWZ5
IHRoYXQgdGhlIG1vZGlmaWVyc190b19jaGVja19hZ2FpbnN0IGFyZSBsZWdhbC4gV2UKKyAgICAg
ICAgIyBhbHNvIGJ1aWxkIHVwIGEgbG93ZXJjYXNlZCB2ZXJzaW9uIG9mIHRoZSBkaWN0IGF0IHRo
ZSBzYW1lIHRpbWUuCisgICAgICAgIG1vZGlmaWVycyA9IHt9CisKKyAgICAgICAgZm9yIGNhdGVn
b3J5LCBtb2RpZmllciBpbiBtb2RpZmllcnNfdG9fbWF0Y2hfYWdhaW5zdC5pdGVtcygpOgorICAg
ICAgICAgICAgY2F0ZWdvcnkgPSBjYXRlZ29yeS5sb3dlcigpCisgICAgICAgICAgICBtb2RpZmll
ciA9IG1vZGlmaWVyLmxvd2VyKCkKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5IG5vdCBpbiBzZWxm
LmFsbG93ZWRfbW9kaWZpZXJzLmtleXMoKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJVbmtub3duIG1vZGlmaWVyIGNhdGVnb3J5ICclcyciICUgY2F0ZWdvcnkpCisgICAgICAg
ICAgICBpZiBtb2RpZmllciBub3QgaW4gc2VsZi5hbGxvd2VkX21vZGlmaWVyc1tjYXRlZ29yeV06
CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBtb2RpZmllciAnJXMn
IiAlIG1vZGlmaWVycykKKyAgICAgICAgICAgIG1vZGlmaWVyc1tjYXRlZ29yeV0gPSBtb2RpZmll
cgorICAgICAgICBzZWxmLm1vZGlmaWVyc190b19tYXRjaF9hZ2FpbnN0ID0gbW9kaWZpZXJzCisK
KyAgICBkZWYgbWF0Y2goc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIkNoZWNrcyBhIGxpc3Qg
b2Ygb3B0aW9ucyBhZ2FpbnN0IHRoZSBtb2RpZmllcnMgc2V0IGluIHRoZSBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgT3B0aW9ucyBtYXkgYmUgZWl0aGVyIGFjdHVhbCBtb2RpZmllciBzdHJpbmdzLCAi
c2hvcnRjdXQiIHN0cmluZ3MKKyAgICAgICAgdGhhdCBnZXQgZXhwYW5kZWQgdG8gYSBsaXN0IG9m
IG1vZGlmaWVycywgb3Igc3RyaW5ncyB0aGF0IGFyZSBhbGxvd2VkCisgICAgICAgIHRvIGJlIGln
bm9yZWQuIFRoZSBjaGVja2luZyBpcyBjYXNlLWluc2Vuc2l0aXZlLgorCisgICAgICAgIFJldHVy
bnMgdGhlIG51bWJlciBvZiBtYXRjaGluZyBjYXRlZ29yaWVzLCBvciAtMSBpZiBpdCBkb2Vzbid0
IG1hdGNoCisgICAgICAgIG9yIHRoZXJlIHdlcmUgZXJyb3JzIGZvdW5kLiBNYXRjaGVzIGFyZSBw
cmlvcml0aXplZCBieSB0aGUgbnVtYmVyIG9mCisgICAgICAgIG1hdGNoaW5nIGNhdGVnb3JpZXMs
IGJlY2F1c2UgdGhlIG1vcmUgc3BlY2lmaWMgdGhlIG9wdGlvbnMgbGlzdCwKKyAgICAgICAgdGhl
IG1vcmUgY2F0ZWdvcmllcyB3aWxsIG1hdGNoLgorCisgICAgICAgIFRoZSByZXN1bHRzIG9mIHRo
ZSBtb3N0IHJlY2VudCBtYXRjaCBhcmUgYXZhaWxhYmxlIGluIHRoZSAnb3B0aW9ucycsCisgICAg
ICAgICdtb2RpZmllcnMnLCAnbnVtX21hdGNoZXMnLCAnZXJyb3JzJywgYW5kICd3YXJuaW5ncycg
cHJvcGVydGllcy4KKyAgICAgICAgIiIiCisgICAgICAgICMgVGhpcyBpc24ndCBuZWNlc3Nhcnkg
aW4gdGhlIGNvbW1vbiBjYXNlIGJlY2F1c2Ugd2Ugb3ZlcndyaXRlIGV2ZXJ5CisgICAgICAgICMg
ZmllbGQsIGJ1dCBqdXN0IGluIGNhc2UgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCB3ZSBtYWtlIHN1
cmUgd2UKKyAgICAgICAgIyBkb24ndCBoYXZlIGFueSBzdGFsZSBkYXRhIGx5aW5nIGFyb3VuZCBm
cm9tIGEgcHJldmlvdXMgbWF0Y2guCisgICAgICAgIHNlbGYuY2xlYXIoKQorCisgICAgICAgIHNl
bGYub3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgb3B0aW9ucyA9IG1hcChsYW1iZGEgeDogeC5s
b3dlcigpLCBvcHRpb25zKQorICAgICAgICBzZWxmLm1vZGlmaWVycywgc2VsZi5lcnJvcnMsIHNl
bGYud2FybmluZ3MgPSBzZWxmLl9wYXJzZShvcHRpb25zKQorICAgICAgICBpZiBzZWxmLmVycm9y
czoKKyAgICAgICAgICAgIHNlbGYubnVtX21hdGNoZXMgPSAtMQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgc2VsZi5udW1fbWF0Y2hlcyA9IHNlbGYuX2NvdW50X21hdGNoZXMoc2VsZi5tb2Rp
ZmllcnMsCisgICAgICAgICAgICAgICAgc2VsZi5tb2RpZmllcnNfdG9fbWF0Y2hfYWdhaW5zdCkK
KyAgICAgICAgcmV0dXJuIHNlbGYubnVtX21hdGNoZXMKKworICAgIGRlZiBjbGVhcihzZWxmKToK
KyAgICAgICAgIiIiQ2xlYXJzIHRoZSByZXN1bHRzIG9mIHRoZSBsYXN0IG1hdGNoLiIiIgorICAg
ICAgICBzZWxmLm9wdGlvbnMgPSBbXQorICAgICAgICBzZWxmLm1vZGlmaWVycyA9IFtdCisgICAg
ICAgIHNlbGYubnVtX21hdGNoZXMgPSAtMQorICAgICAgICBzZWxmLmVycm9ycyA9IFtdCisgICAg
ICAgIHNlbGYud2FybmluZ3MgPSBbXQorCisgICAgZGVmIF9wYXJzZShzZWxmLCBvcHRpb25zKToK
KyAgICAgICAgIiIiUGFyc2UgYSBsaXN0IG9mIG9wdGlvbnMgYW5kIHJldHVybiB0aGUgbW9kaWZp
ZXJzCisKKyAgICAgICAgUmV0dXJuczogYSB0dXBsZSBvZiB0aHJlZSBpdGVtczoKKyAgICAgICAg
ICAgIC0gYSBzZXF1ZW5jZSBvZiB2YWxpZCBtb2RpZmllcnMKKyAgICAgICAgICAgIC0gYSBzZXF1
ZW5jZSBvZiBlcnJvcnMKKyAgICAgICAgICAgIC0gYSBzZXF1ZW5jZSBvZiB3YXJuaW5ncworICAg
ICAgICAiIiIKKyAgICAgICAgbW9kaWZpZXJzID0gW10KKyAgICAgICAgZXJyb3JzID0gW10KKyAg
ICAgICAgd2FybmluZ3MgPSBbXQorCisgICAgICAgICMgQ2hlY2sgZm9yIGR1cGxpY2F0ZXMuCisg
ICAgICAgIGZvciBkdXAgaW4gX2ZpbmRfZHVwbGljYXRlcyhvcHRpb25zKToKKyAgICAgICAgICAg
IGVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBkdXApCisKKyAgICAgICAgcmVn
ZXhlc19hbHJlYWR5X3NlZW4gPSBzZXQoKQorICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6
CisgICAgICAgICAgICBpZiBzZWxmLl9tYXRjaGVzX2FfcmVnZXgob3B0aW9uKToKKyAgICAgICAg
ICAgICAgICBzZWxmLl91cGRhdGVfcmVnZXhfbWF0Y2hpbmdfc3RhdGUocmVnZXhlc19hbHJlYWR5
X3NlZW4sIGVycm9ycywgb3B0aW9uKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAg
ICAgICAgIGlmIG9wdGlvbiBpbiBzZWxmLnNob3J0Y3V0czoKKyAgICAgICAgICAgICAgICBtb3Jl
X21vZHMsIG1vcmVfZXJyb3JzID0gc2VsZi5fZXhwYW5kX3Nob3J0Y3V0KG9wdGlvbiwgb3B0aW9u
cykKKyAgICAgICAgICAgICAgICBtb2RpZmllcnMuZXh0ZW5kKG1vcmVfbW9kcykKKyAgICAgICAg
ICAgICAgICBlcnJvcnMuZXh0ZW5kKG1vcmVfZXJyb3JzKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgIGlmIG9wdGlvbiBpbiBzZWxmLl9hbGxfbW9kaWZpZXJzOgorICAg
ICAgICAgICAgICAgIG1vZGlmaWVycy5hcHBlbmQob3B0aW9uKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCJVbnJlY29nbml6ZWQgb3B0aW9uICclcyci
ICUgb3B0aW9uKQorCisgICAgICAgICMgRklYTUU6IFdhcm4gYWJvdXQgbGluZXMgY29udGFpbmlu
ZyBldmVyeSB2YWx1ZSBpbiBhIGNhdGVnb3J5PworICAgICAgICByZXR1cm4gKG1vZGlmaWVycywg
ZXJyb3JzLCBbXSkKKworICAgIGRlZiBfbWF0Y2hlc19hX3JlZ2V4KHNlbGYsIG9wdGlvbik6Cisg
ICAgICAgICIiIkNoZWNrcyBhZ2FpbnN0IHRoZSBpZ25vcmUgbGlzdCBhbmQgcmV0dXJucyBUcnVl
IGlmIHRoaXMKKyAgICAgICAgb3B0aW9uIHNob3VsZCBiZSBza2lwcGVkIG92ZXIuIiIiCisgICAg
ICAgIHJldHVybiBhbnkoW3BhdHRlcm4ubWF0Y2gob3B0aW9uKSBmb3IgcGF0dGVybiBpbiBzZWxm
LnJlZ2V4ZXNfdG9faWdub3JlLnZhbHVlcygpXSkKKworICAgIGRlZiBfdXBkYXRlX3JlZ2V4X21h
dGNoaW5nX3N0YXRlKHNlbGYsIHJlZ2V4ZXNfYWxyZWFkeV9zZWVuLCBlcnJvcnMsIG9wdGlvbik6
CisgICAgICAgIGZvciByZWdleF9zdHIsIHBhdHRlcm4gaW4gc2VsZi5yZWdleGVzX3RvX2lnbm9y
ZS5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHBhdHRlcm4ubWF0Y2gob3B0aW9uKToKKyAg
ICAgICAgICAgICAgICBpZiByZWdleF9zdHIgaW4gcmVnZXhlc19hbHJlYWR5X3NlZW46CisgICAg
ICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNo
aW5nICclcyciICUgcmVnZXhfc3RyKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgIHJlZ2V4ZXNfYWxyZWFkeV9zZWVuLmFkZChyZWdleF9zdHIpCisKKyAgICBkZWYg
X2V4cGFuZF9zaG9ydGN1dChzZWxmLCBzaG9ydGN1dCwgb3B0aW9ucyk6CisgICAgICAgICIiIlJl
dHVybiB0aGUgbGlzdCBvZiBtb2RpZmllcnMgYW5kIGFueSBlcnJvcnMgZm91bmQgd2hpbGUgZXhw
YW5kaW5nLiIiIgorICAgICAgICBtb2RpZmllcnMgPSBbXQorICAgICAgICBlcnJvcnMgPSBbXQor
ICAgICAgICBmb3IgbW9kaWZpZXIgaW4gc2VsZi5zaG9ydGN1dHNbc2hvcnRjdXRdOgorICAgICAg
ICAgICAgaWYgbW9kaWZpZXIgaW4gb3B0aW9uczoKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBw
ZW5kKCJDYW4ndCBzcGVjaWZ5IGJvdGggbW9kaWZpZXIgJyVzJyBhbmQgc2hvcnRjdXQgJyVzJyAo
b25lIGlzIGluY2x1ZGVkIGluIHRoZSBvdGhlcikiICUgKG1vZGlmaWVyLCBzaG9ydGN1dCkpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1vZGlmaWVycy5hcHBlbmQobW9kaWZp
ZXIpCisgICAgICAgIHJldHVybiAobW9kaWZpZXJzLCBlcnJvcnMpCisKKyAgICBkZWYgX2NvdW50
X21hdGNoZXMoc2VsZiwgYWN0dWFsX21vZGlmaWVycywgbW9kaWZpZXJzX3RvX2NoZWNrX2FnYWlu
c3QpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgb2YgbW9kaWZpZXJzIHRoYXQgbWF0
Y2ggdGhlIGFjdHVhbCB2YWx1ZXMuIiIiCisgICAgICAgIGNhdGVnb3JpemVkX21vZGlmaWVycyA9
IHNlbGYuX2dyb3VwX2J5X2NhdGVnb3J5KGFjdHVhbF9tb2RpZmllcnMpCisgICAgICAgIG51bV9t
YXRjaGVzID0gMAorICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlmaWVyIGluIG1vZGlmaWVyc190
b19jaGVja19hZ2FpbnN0Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjYXRlZ29yeSBub3QgaW4g
Y2F0ZWdvcml6ZWRfbW9kaWZpZXJzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
ICAgICBpZiBtb2RpZmllciBpbiBjYXRlZ29yaXplZF9tb2RpZmllcnNbY2F0ZWdvcnldOgorICAg
ICAgICAgICAgICAgIG51bV9tYXRjaGVzICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgIyBCYWlsIG91dCwgb25lIG9mIHRoZSBtb2RpZmllcnMgZGlkbid0IG1hdGNoLgor
ICAgICAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICByZXR1cm4gbnVtX21hdGNoZXMKKwor
ICAgIGRlZiBfZ3JvdXBfYnlfY2F0ZWdvcnkoc2VsZiwgbW9kaWZpZXJzKToKKyAgICAgICAgIiIi
VGFrZXMgYSBsaXN0IG9mIG9wdGlvbnMgYW5kIGdyb3VwIHRoZW0gYnkgY2F0ZWdvcnkuCisKKyAg
ICAgICAgUmV0dXJucyBhIGRpY3Qgb2YgY2F0ZWdvcnkgbmFtZSAtPiBsaXN0IG9mIG1vZGlmaWVy
cy4iIiIKKyAgICAgICAgcGFpcnMgPSBbKG0sIHNlbGYuX2NhdGVnb3J5KG0pKSBmb3IgbSBpbiAg
bW9kaWZpZXJzXQorICAgICAgICByZXR1cm4gX2dyb3VwX2J5KHBhaXJzLCAxKQorCisgICAgZGVm
IF9jYXRlZ29yeShzZWxmLCBtb2RpZmllcik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYXRlZ29y
aWVzX2Zvcl9tb2RpZmllcnNbbW9kaWZpZXJdCisKKworZGVmIF9maW5kX2R1cGxpY2F0ZXMoc2Vx
KToKKyAgICAiIiJSZXR1cm4gYSB0dXBsZSBvZiBhbnkgaXRlbXMgdGhhdCBhcHBlYXIgbW9yZSB0
aGFuIG9uY2UgaW4gdGhlIHNlcXVlbmNlLiIiIgorICAgIGR1cHMgPSBzZXQoKQorICAgIHNlZW4g
PSBzZXQoKQorICAgIGZvciBpdGVtIGluIHNlcToKKyAgICAgICAgaWYgaXRlbSBpbiBzZWVuOgor
ICAgICAgICAgICAgZHVwcy5hZGQoaXRlbSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
ZW4uYWRkKGl0ZW0pCisgICAgcmV0dXJuIHR1cGxlKGR1cHMpCisKKworZGVmIF9ncm91cF9ieShw
YWlycywgY29sdW1uX251bWJlcik6CisgICAgIiIiVGFrZXMgYSBsaXN0IG9mIHBhaXJzIGFuZCBy
ZXR1cm5zIGEgZGljdCBtYXBwaW5nIGVhY2ggdmFsdWUgaW4gb25lIGNvbHVtbiB0byB0aGUgbGlz
dCBvZiB2YWx1ZXMgaW4gdGhlIG90aGVyLgorCisgICAgRm9yIGV4YW1wbGUsIF9ncm91cF9ieSgo
KDEsMSksICgyLCAxKSwgKDIsMiksICgzLDEpKSwgMCkgcmV0dXJucworICAgICAgICB7IDE6IFsx
XSwgMjogWzEsIDJdLCAzOiAxIH0uIiIiCisgICAgYXNzZXJ0IGNvbHVtbl9udW1iZXIgaW4gKDAs
IDEpCisKKyAgICBrZXkgPSBsYW1iZGEgeDogeFtjb2x1bW5fbnVtYmVyXQorICAgIHNvcnRlZF9w
YWlycyA9IHNvcnRlZChwYWlycywga2V5PWtleSkKKyAgICBncm91cGVkX3BhaXJzID0gaXRlcnRv
b2xzLmdyb3VwYnkoc29ydGVkX3BhaXJzLCBrZXkpCisgICAgcmVzdWx0ID0ge30KKyAgICBmb3Ig
a2V5LCBncm91cCBpbiBncm91cGVkX3BhaXJzOgorICAgICAgICByZXN1bHRba2V5XSA9IG1hcChs
YW1iZGEgeDogeFsxIC0gY29sdW1uX251bWJlcl0sIGdyb3VwKQorICAgIHJldHVybiByZXN1bHQK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3Rh
dGlvbnNfdW5pdHRlc3QucHkKaW5kZXggMzQ3NzFmMzAzOWFmZjEwYTBmZDIyMGVmYTQ4MzY3NTVj
NzcyOGVlMy4uOGQ1OTNjMTJhMDY1MGJmOThlNTVlMWY2OGM2OGU3ZTI4NTk2ODA0NyAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnNfdW5pdHRlc3QucHkKQEAgLTM0Niw1ICszNDYsOTYgQEAgQlVHX1RFU1QgUkVCQVNFTElORSA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKICAgICAgICAgICAgICdcblxuJykK
IAogCitjbGFzcyBUZXN0TW9kaWZpZXJNYXRjaGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBk
ZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2xfZGVidWcgPSB7J28vcyc6ICdtYWMnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ3Nub3dsZW9wYXJkJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbic6ICdkZWJ1ZycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2dyYXBoaWNzX3R5cGUnOiAnY3B1JywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXJjaGl0ZWN0dXJlJzogJ3g4Nid9CisgICAgICAgIHNlbGYuc2xfbWF0Y2hlciA9
IE1vZGlmaWVyTWF0Y2hlcihzZWxmLnNsX2RlYnVnKQorCisgICAgZGVmIG1hdGNoKHNlbGYsIG1v
ZGlmaWVycywgZXhwZWN0ZWRfY291bnQ9LTEsIG1vZGlmaWVyc190b19tYXRjaD1Ob25lLCBudW1f
ZXJyb3JzPTApOgorICAgICAgICBtYXRjaGVyID0gc2VsZi5zbF9tYXRjaGVyCisgICAgICAgIGlm
IG1vZGlmaWVyc190b19tYXRjaDoKKyAgICAgICAgICAgIG1hdGNoZXIgPSBNb2RpZmllck1hdGNo
ZXIobW9kaWZpZXJzX3RvX21hdGNoKQorCisgICAgICAgIGFjdHVhbF9jb3VudCA9IG1hdGNoZXIu
bWF0Y2gobW9kaWZpZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYXRjaGVyLndh
cm5pbmdzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWF0Y2hlci5lcnJvcnMp
LCBudW1fZXJyb3JzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9jb3VudCwgZXhw
ZWN0ZWRfY291bnQsCisgICAgICAgICAgICAgJ21hdGNoKCVzLCAlcykgcmV0dXJuZWQgLT4gJWQs
IGV4cGVjdGVkICVkJyAlCisgICAgICAgICAgICAgKG1vZGlmaWVycywgc3RyKG1hdGNoZXIubW9k
aWZpZXJzX3RvX21hdGNoX2FnYWluc3QudmFsdWVzKCkpLAorICAgICAgICAgICAgICBhY3R1YWxf
Y291bnQsIGV4cGVjdGVkX2NvdW50KSkKKworICAgIGRlZiB0ZXN0X2JhZF9tYXRjaF9jYXRlZ29y
eShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5tYXRj
aCwgWydmb28nXSwgLTEsIHsnZm9vJzogJ2Jhcid9KQorCisgICAgZGVmIHRlc3RfYmFkX21hdGNo
X21vZGlmaWVyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBz
ZWxmLm1hdGNoLCBbJ2ZvbyddLCAtMSwgeydvL3MnOiAndm1zJ30pCisKKyAgICBkZWYgdGVzdF9u
b25lKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFtdLCAwKQorCisgICAgZGVmIHRlc3Rfb25l
KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnXSwgMSkKKyAgICAgICAg
c2VsZi5tYXRjaChbJ21hYyddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsnZGVidWcnXSwgMSkK
KyAgICAgICAgc2VsZi5tYXRjaChbJ2NwdSddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsneDg2
J10sIDEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRj
aChbJ2dwdSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3JlbGVhc2UnXSwgLTEpCisgICAg
ICAgIHNlbGYubWF0Y2goWyd4ODYtNjQnXSwgLTEpCisKKyAgICBkZWYgdGVzdF90d28oc2VsZik6
CisgICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICdkZWJ1ZyddLCAyKQorICAgICAg
ICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChb
J3hwJywgJ2RlYnVnJ10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnLCAn
bGVvcGFyZCddLCAxKQorCisgICAgZGVmIHRlc3RfdGhyZWUoc2VsZik6CisgICAgICAgIHNlbGYu
bWF0Y2goWydzbm93bGVvcGFyZCcsICdsZW9wYXJkJywgJ2RlYnVnJ10sIDIpCisgICAgICAgIHNl
bGYubWF0Y2goWydsZW9wYXJkJywgJ2RlYnVnJywgJ3g4NiddLCAtMSkKKyAgICAgICAgc2VsZi5t
YXRjaChbJ3Nub3dsZW9wYXJkJywgJ2RlYnVnJywgJ3g4NiddLCAzKQorICAgICAgICBzZWxmLm1h
dGNoKFsnc25vd2xlb3BhcmQnLCAnY3B1JywgJ2RlYnVnJ10sIDMpCisKKyAgICBkZWYgdGVzdF9m
b3VyKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnLCAnZGVidWcnLCAn
Y3B1JywgJ3g4NiddLCA0KQorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnLCAnbGVv
cGFyZCcsICdkZWJ1ZycsICdjcHUnXSwgMykKKyAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9w
YXJkJywgJ2xlb3BhcmQnLCAncmVsZWFzZScsICdjcHUnXSwgLTEpCisKKyAgICBkZWYgdGVzdF9j
YXNlX2luc2Vuc2l0aXZpdHkoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydNYWMnXSwgMSkK
KyAgICAgICAgc2VsZi5tYXRjaChbJ01BQyddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsnbWFj
J10sIDEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVfb3B0aW9ucyhzZWxmKToKKyAgICAgICAg
c2VsZi5tYXRjaChbJ2RlYnVnJywgJ2RlYnVnJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2Vs
Zi5tYXRjaChbJ21hYy1zbm93bGVvcGFyZCcsICdzbm93bGVvcGFyZCddLCBudW1fZXJyb3JzPTEp
CisgICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdkZWJ1ZycsICd4cCcsICdkZWJ1ZyddLCBudW1f
ZXJyb3JzPTIpCisKKyAgICBkZWYgdGVzdF91bmtub3duX29wdGlvbihzZWxmKToKKyAgICAgICAg
c2VsZi5tYXRjaChbJ3ZtcyddLCBudW1fZXJyb3JzPTEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNh
dGVfcmVnZXhlcyhzZWxmKToKKyAgICAgICAgIyBBIGdpdmVuIHJlZ2V4IGNhbiBvbmx5IGFwcGVh
ciBvbmNlLgorICAgICAgICBzZWxmLm1hdGNoKFsnQlVHRk9PJywgJ0JVR0JBUiddLCBudW1fZXJy
b3JzPTEpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NvbWJpbmF0aW9ucyhzZWxmKToKKyAgICAg
ICAgIyBGSVhNRTogVGhlIGNvZGUgZG9lc24ndCByZWFsaXplIHRoaXMgaXNuJ3QgYSB2YWxpZCBj
b21iaW5hdGlvbiwKKyAgICAgICAgIyBidXQgYXQgbGVhc3QgaXQgZG9lc24ndCBtYXRjaC4KKyAg
ICAgICAgc2VsZi5tYXRjaChbJ21hYycsICd4cCddLCAtMSkKKworICAgIGRlZiB0ZXN0X3JlYmFz
ZWxpbmVfaXNfaWdub3JlZChzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ1JFQkFTRUxJTkUn
XSwgMCkKKworICAgIGRlZiB0ZXN0X2J1Z19pc19pZ25vcmVkKHNlbGYpOgorICAgICAgICBzZWxm
Lm1hdGNoKFsnQlVHMTIzNCddLCAwKQorCisgICAgZGVmIHRlc3Rfd29udGZpeF9pc19pZ25vcmVk
KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnV09OVEZJWCcsICdYUCcsICdWSVNUQSddLCAt
MSkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77072</attachid>
            <date>2010-12-20 19:34:45 -0800</date>
            <delta_ts>2010-12-22 19:14:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51222-20101220193443.patch</filename>
            <type>text/plain</type>
            <size>62170</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzYWM2YzY2NWU0MWYyNGVlMGI3YWNkNDY2YjlmZjQwYmQ2ZjZkNGE5Li5kZjQyMjcz
MjRiNTE0OGEzNjc4YzJiMTE2Y2FjN2E2NWQ5MGQ1NjBhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAK
KzIwMTAtMTItMTYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9k
aWZpZXIgcGFyc2luZyBjb2RlIGluIHRlc3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdp
bGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9n
aWMKKyAgICAgICAgb3IgZWFzaWx5IGFkZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQ
VSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAgICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQg
dnMuIDY0LWJpdCBkaWZmZXJlbmNlcykuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2Yg
dHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFkZCBpbiBtb3JlIGdlbmVyaWMKKyAgICAgICAgc3VwcG9y
dCBhbmQgdGhlbiBlbGltaW5hdGUgdGhlIEdQVS1zcGVjaWZpYyB0ZXN0IGV4cGVjdGF0aW9ucwor
ICAgICAgICBmaWxlcyBmb3IgQ2hyb21pdW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3
byBzdGFuZGFsb25lIG9iamVjdHMgZm9yIGhhbmRsaW5nIG1vZGlmaWVycy4gVGhlCisgICAgICAg
IHJ1bGVzIGZvciBpbnRlcnByZXRpbmcgbW9kaWZpZXJzLCBwcmVjZWRlbmNlLCBhbmQgY29uZmxp
Y3RzIGFyZQorICAgICAgICBnaXZlbiBpbiB0aGUgZG9jc3RyaW5nIHRvIHRoZSBNb2RpZmllck1h
dGNoZXIgY2xhc3MsIHdoaWNoCisgICAgICAgIHJldHVybnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBv
YmplY3RzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgcm91dGluZXMg
dG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFuZCBhCisgICAgICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVl
cyBpbiB0aGUgYmFzZSBvYmplY3QsIGluIG9yZGVyIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFs
dWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRlc3QgcnVuLiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFz
c2VkCisgICAgICAgIHRvIHRoZSBleHBlY3RhdGlvbiBwYXJzZXIuIFRoaXMgYWxzbyBhbGxvd3Mg
dXMgdG8gY2xlYW4gdXAgdGhlCisgICAgICAgIGxvZ2ljIHVzZWQgdG8gbGludCBhbGwgb2YgdGhl
IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBpbiBhCisgICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVj
dGF0aW9ucy50eHQgZmlsZS4KKworICAgICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIG1lcmdlIGlu
IHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0YXRpb25zIGZpbGUuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMjIyCisKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0u
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rl
c3RjYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHk6CisKIDIwMTAtMTItMTQgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFm
YWkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0
LnB5CmluZGV4IDI3YTZhMjliZTVjOWE3YTNmMDczZjAwZTYzMGM1YjA0NTI3NmRiYzAuLmJkYWIz
OTk0Zjc0MGI5ODg4ZjYxNjAyMzczNTUwMzk5MmZlZmFjZTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5n
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5CkBAIC0zMSw3ICszMSw2IEBA
CiAKIGltcG9ydCBvcwogaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgcGRiCiBpbXBvcnQgc3lzCiBp
bXBvcnQgdW5pdHRlc3QKIGltcG9ydCBsb2dnaW5nCkBAIC0xNDYsNyArMTQ1LDcgQEAgY2xhc3Mg
IFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0IGluIHRlc3RzXQogICAgICAgICBleHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5U
ZXN0RXhwZWN0YXRpb25zKAogICAgICAgICAgICAgc2VsZi5fcG9ydCwgdGVzdF9wYXRocywgZXhw
ZWN0YXRpb25zX3N0ciwKLSAgICAgICAgICAgIHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1l
KCksIGlzX2RlYnVnX21vZGU9RmFsc2UsCisgICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfY29u
ZmlndXJhdGlvbigpLAogICAgICAgICAgICAgaXNfbGludF9tb2RlPUZhbHNlKQogCiAgICAgICAg
IHJzID0gcnVuX3dlYmtpdF90ZXN0cy5SZXN1bHRTdW1tYXJ5KGV4cGVjdGF0aW9ucywgdGVzdF9w
YXRocykKQEAgLTM2NSw3ICszNjQsNyBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgIGRlZiB0ZXN0X3ByaW50X3Byb2dyZXNzX19kZXRhaWxlZChzZWxmKToKICAg
ICAgICAgdGVzdHMgPSBbJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQvdGlt
ZW91dC5odG1sJywKICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0
bWwnXQotICAgICAgICBleHBlY3RhdGlvbnMgPSAnZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5o
dG1sID0gVElNRU9VVCcKKyAgICAgICAgZXhwZWN0YXRpb25zID0gJ0JVR1ggOiBmYWlsdXJlcy9l
eHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUJwogCiAgICAgICAgICMgZmlyc3QsIHRlc3Qg
dGhhdCBpdCBpcyBkaXNhYmxlZCBwcm9wZXJseQogICAgICAgICAjIHNob3VsZCBzdGlsbCBwcmlu
dCBvbmUtbGluZS1wcm9ncmVzcwpAQCAtNTcxLDggKzU3MCw4IEBAIGNsYXNzICBUZXN0cHJpbnRl
cih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVtcHR5
KCkpCiAKICAgICAgICAgZXhwZWN0YXRpb25zID0gIiIiCi1mYWlsdXJlcy9leHBlY3RlZC9jcmFz
aC5odG1sID0gQ1JBU0gKLWZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQK
K0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sID0gQ1JBU0gKK0JVR1ggOiBmYWls
dXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCiAiIiIKICAgICAgICAgZXJyLnJl
c2V0KCkKICAgICAgICAgb3V0LnJlc2V0KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggYTIzNzg2MzFjMDlkYTQwMjE0NDZlMzcw
NDJmZGJhMWM1YmFlODYyZi4uMDQyYTY1YTU3MDQ2Zjc5MTNkNTNmODVkN2MzYWVkZDU3NGViNzll
NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnMucHkKQEAgLTMxLDYgKzMxLDcgQEAKIGZvciBsYXlvdXQgdGVzdHMuCiAiIiIKIAoraW1wb3J0
IGl0ZXJ0b29scwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC04Niwx
OCArODcsMTYgQEAgZGVmIHJlbW92ZV9waXhlbF9mYWlsdXJlcyhleHBlY3RlZF9yZXN1bHRzKToK
IGNsYXNzIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgVEVTVF9MSVNUID0gInRlc3RfZXhwZWN0YXRp
b25zLnR4dCIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB0ZXN0cywgZXhwZWN0YXRp
b25zLCB0ZXN0X3BsYXRmb3JtX25hbWUsCi0gICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGUs
IGlzX2xpbnRfbW9kZSwgb3ZlcnJpZGVzPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
b3J0LCB0ZXN0cywgZXhwZWN0YXRpb25zLCB0ZXN0X2NvbmZpZywKKyAgICAgICAgICAgICAgICAg
aXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6CiAgICAgICAgICIiIkxvYWRzIGFuZCBwYXJz
ZXMgdGhlIHRlc3QgZXhwZWN0YXRpb25zIGdpdmVuIGluIHRoZSBzdHJpbmcuCiAgICAgICAgIEFy
Z3M6CiAgICAgICAgICAgICBwb3J0OiBoYW5kbGUgdG8gb2JqZWN0IGNvbnRhaW5pbmcgcGxhdGZv
cm0tc3BlY2lmaWMgZnVuY3Rpb25hbGl0eQogICAgICAgICAgICAgdGVzdDogbGlzdCBvZiBhbGwg
b2YgdGhlIHRlc3QgZmlsZXMKICAgICAgICAgICAgIGV4cGVjdGF0aW9uczogdGVzdCBleHBlY3Rh
dGlvbnMgYXMgYSBzdHJpbmcKLSAgICAgICAgICAgIHRlc3RfcGxhdGZvcm1fbmFtZTogbmFtZSBv
ZiB0aGUgcGxhdGZvcm0gdG8gbWF0Y2ggZXhwZWN0YXRpb25zCi0gICAgICAgICAgICAgICAgYWdh
aW5zdC4gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGRpZmZlcmVudCB0aGFuCi0gICAgICAgICAgICAg
ICAgcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSB3aGVuIGlzX2xpbnRfbW9kZSBpcyBUcnVlLgot
ICAgICAgICAgICAgaXNfZGVidWdfbW9kZTogd2hldGhlciB0byB1c2UgdGhlIERFQlVHIG9yIFJF
TEVBU0UgbW9kaWZpZXJzCi0gICAgICAgICAgICAgICAgaW4gdGhlIGV4cGVjdGF0aW9ucworICAg
ICAgICAgICAgdGVzdF9jb25maWc6IHNwZWNpZmljIHZhbHVlcyB0byBjaGVjayBhZ2FpbnN0IHdo
ZW4KKyAgICAgICAgICAgICAgICBwYXJzaW5nIHRoZSBmaWxlICh1c3VhbGx5IHBvcnQudGVzdF9j
b25maWcoKSwKKyAgICAgICAgICAgICAgICBidXQgbWF5IGJlIGRpZmZlcmVudCB3aGVuIGxpbnRp
bmcgb3IgZG9pbmcgb3RoZXIgdGhpbmdzKS4KICAgICAgICAgICAgIGlzX2xpbnRfbW9kZTogSWYg
VHJ1ZSwganVzdCBwYXJzZSB0aGUgZXhwZWN0YXRpb25zIHN0cmluZwogICAgICAgICAgICAgICAg
IGxvb2tpbmcgZm9yIGVycm9ycy4KICAgICAgICAgICAgIG92ZXJyaWRlczogdGVzdCBleHBlY3Rh
dGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSBhbnkKQEAgLTEwNiw3ICsxMDUsNyBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zOgogICAgICAgICAgICAgICAgIGFuZCBkb3duc3RyZWFt
IGV4cGVjdGF0aW9ucykuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9leHBlY3RlZF9mYWls
dXJlcyA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlKHBvcnQsIGV4cGVjdGF0aW9ucywKLSAgICAgICAg
ICAgIHRlc3RzLCB0ZXN0X3BsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGUsIGlzX2xpbnRfbW9k
ZSwKKyAgICAgICAgICAgIHRlc3RzLCB0ZXN0X2NvbmZpZywgaXNfbGludF9tb2RlLAogICAgICAg
ICAgICAgb3ZlcnJpZGVzPW92ZXJyaWRlcykKIAogICAgICMgVE9ETyhvamFuKTogQWxsb3cgZm9y
IHJlbW92aW5nIHNraXBwZWQgdGVzdHMgd2hlbiBnZXR0aW5nIHRoZSBsaXN0IG9mCkBAIC0xOTks
NyArMTk4LDcgQEAgY2xhc3MgUGFyc2VFcnJvcihFeGNlcHRpb24pOgogICAgICAgICByZXR1cm4g
J1xuJy5qb2luKG1hcChzdHIsIHNlbGYuZXJyb3JzKSkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICdQYXJzZUVycm9yKGZhdGFsPSVzLCBlcnJvcnM9JXMpJyAlIChm
YXRhbCwgZXJyb3JzKQorICAgICAgICByZXR1cm4gJ1BhcnNlRXJyb3IoZmF0YWw9JXMsIGVycm9y
cz0lcyknICUgKHNlbGYuZmF0YWwsIHNlbGYuZXJyb3JzKQogCiAKIGNsYXNzIE1vZGlmaWVyc0Fu
ZEV4cGVjdGF0aW9uczoKQEAgLTMwNCwyOCArMzAzLDE0IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlv
bnNGaWxlOgogICAgICAgICAgICAgICAgICAgICAnZmFpbCc6IEZBSUwsCiAgICAgICAgICAgICAg
ICAgICAgICdmbGFreSc6IEZMQUtZfQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGV4
cGVjdGF0aW9ucywgZnVsbF90ZXN0X2xpc3QsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAg
aXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6Ci0gICAgICAgICIi
IgotICAgICAgICBleHBlY3RhdGlvbnM6IENvbnRlbnRzIG9mIHRoZSBleHBlY3RhdGlvbnMgZmls
ZQotICAgICAgICBmdWxsX3Rlc3RfbGlzdDogVGhlIGxpc3Qgb2YgYWxsIHRlc3RzIHRvIGJlIHJ1
biBwZW5kaW5nIHByb2Nlc3Npbmcgb2YKLSAgICAgICAgICAgIHRoZSBleHBlY3Rpb25zIGZvciB0
aG9zZSB0ZXN0cy4KLSAgICAgICAgdGVzdF9wbGF0Zm9ybV9uYW1lOiBuYW1lIG9mIHRoZSBwbGF0
Zm9ybSB0byBtYXRjaCBleHBlY3RhdGlvbnMKLSAgICAgICAgICAgIGFnYWluc3QuIE5vdGUgdGhh
dCB0aGlzIG1heSBiZSBkaWZmZXJlbnQgdGhhbgotICAgICAgICAgICAgcG9ydC50ZXN0X3BsYXRm
b3JtX25hbWUoKSB3aGVuIGlzX2xpbnRfbW9kZSBpcyBUcnVlLgotICAgICAgICBpc19kZWJ1Z19t
b2RlOiBXaGV0aGVyIHdlIHRlc3RpbmcgYSB0ZXN0X3NoZWxsIGJ1aWx0IGRlYnVnIG1vZGUuCi0g
ICAgICAgIGlzX2xpbnRfbW9kZTogV2hldGhlciB0aGlzIGlzIGp1c3QgbGludGluZyB0ZXN0X2V4
cGVjYXRhdGlvbnMudHh0LgotICAgICAgICBvdmVycmlkZXM6IHRlc3QgZXhwZWN0YXRpb25zIHRo
YXQgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgYW55Ci0gICAgICAgICAgICBlbnRyaWVzIGluIHxl
eHBlY3RhdGlvbnN8LiBUaGlzIGlzIHVzZWQgYnkgY2FsbGVycwotICAgICAgICAgICAgdGhhdCBu
ZWVkIHRvIG1hbmFnZSB0d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVwc3RyZWFtCi0g
ICAgICAgICAgICBhbmQgZG93bnN0cmVhbSBleHBlY3RhdGlvbnMpLgotICAgICAgICAiIiIKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rlc3RfbGlzdCwK
KyAgICAgICAgICAgICAgICAgdGVzdF9jb25maWcsIGlzX2xpbnRfbW9kZSwgb3ZlcnJpZGVzPU5v
bmUpOgorICAgICAgICAjIFNlZSBhcmd1bWVudCBkb2N1bWVudGF0aW9uIGluIFRlc3RFeHBlY3Rh
dGlvbigpLCBhYm92ZS4KIAogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxm
Ll9leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKICAgICAgICAgc2VsZi5fZnVsbF90ZXN0X2xp
c3QgPSBmdWxsX3Rlc3RfbGlzdAotICAgICAgICBzZWxmLl90ZXN0X3BsYXRmb3JtX25hbWUgPSB0
ZXN0X3BsYXRmb3JtX25hbWUKLSAgICAgICAgc2VsZi5faXNfZGVidWdfbW9kZSA9IGlzX2RlYnVn
X21vZGUKKyAgICAgICAgc2VsZi5fdGVzdF9jb25maWcgPSB0ZXN0X2NvbmZpZwogICAgICAgICBz
ZWxmLl9pc19saW50X21vZGUgPSBpc19saW50X21vZGUKICAgICAgICAgc2VsZi5fb3ZlcnJpZGVz
ID0gb3ZlcnJpZGVzCiAgICAgICAgIHNlbGYuX2Vycm9ycyA9IFtdCkBAIC0zMzMsNyArMzE4LDkg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICAgICAgIyBNYXBzIHJlbGF0aXZl
IHRlc3QgcGF0aHMgYXMgbGlzdGVkIGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZSB0byBhCiAgICAg
ICAgICMgbGlzdCBvZiBtYXBzIGNvbnRhaW5pbmcgbW9kaWZpZXJzIGFuZCBleHBlY3RhdGlvbnMg
Zm9yIGVhY2ggdGltZQotICAgICAgICAjIHRoZSB0ZXN0IGlzIGxpc3RlZCBpbiB0aGUgZXhwZWN0
YXRpb25zIGZpbGUuCisgICAgICAgICMgdGhlIHRlc3QgaXMgbGlzdGVkIGluIHRoZSBleHBlY3Rh
dGlvbnMgZmlsZS4gV2UgdXNlIHRoaXMgdG8KKyAgICAgICAgIyBrZWVwIGEgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGVudGlyZSBsaXN0IG9mIGV4cGVjdGF0aW9ucywgZXZlbgorICAgICAgICAjIGlu
dmFsaWQgb25lcy4KICAgICAgICAgc2VsZi5fYWxsX2V4cGVjdGF0aW9ucyA9IHt9CiAKICAgICAg
ICAgIyBNYXBzIGEgdGVzdCB0byBpdHMgbGlzdCBvZiBleHBlY3RhdGlvbnMuCkBAIC0zNDYsNyAr
MzMzLDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICMgdGhlIG9wdGlv
bnMgbWludXMgYW55IGJ1ZyBvciBwbGF0Zm9ybSBzdHJpbmdzCiAgICAgICAgIHNlbGYuX3Rlc3Rf
dG9fbW9kaWZpZXJzID0ge30KIAotICAgICAgICAjIE1hcHMgYSB0ZXN0IHRvIHRoZSBiYXNlIHBh
dGggdGhhdCBpdCB3YXMgbGlzdGVkIHdpdGggaW4gdGhlIGxpc3QuCisgICAgICAgICMgTWFwcyBh
IHRlc3QgdG8gdGhlIGJhc2UgcGF0aCB0aGF0IGl0IHdhcyBsaXN0ZWQgd2l0aCBpbiB0aGUgbGlz
dCBhbmQKKyAgICAgICAgIyB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgdGhhdCBiYXNlIHBhdGggaGFk
LgogICAgICAgICBzZWxmLl90ZXN0X2xpc3RfcGF0aHMgPSB7fQogCiAgICAgICAgIHNlbGYuX21v
ZGlmaWVyX3RvX3Rlc3RzID0gc2VsZi5fZGljdF9vZl9zZXRzKHNlbGYuTU9ESUZJRVJTKQpAQCAt
MzczLDEzICszNjEsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAogICAgIGRlZiBf
aGFuZGxlX2FueV9yZWFkX2Vycm9ycyhzZWxmKToKICAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9y
cykgb3IgbGVuKHNlbGYuX25vbl9mYXRhbF9lcnJvcnMpOgotICAgICAgICAgICAgaWYgc2VsZi5f
aXNfZGVidWdfbW9kZToKLSAgICAgICAgICAgICAgICBidWlsZF90eXBlID0gJ0RFQlVHJwotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBidWlsZF90eXBlID0gJ1JFTEVBU0UnCi0g
ICAgICAgICAgICBfbG9nLmVycm9yKCcnKQotICAgICAgICAgICAgX2xvZy5lcnJvcigiRkFJTFVS
RVMgRk9SIFBMQVRGT1JNOiAlcywgQlVJTERfVFlQRTogJXMiICUKLSAgICAgICAgICAgICAgICAg
ICAgICAgKHNlbGYuX3Rlc3RfcGxhdGZvcm1fbmFtZS51cHBlcigpLCBidWlsZF90eXBlKSkKKyAg
ICAgICAgICAgIF9sb2cuZXJyb3IoIkZBSUxVUkVTIEZPUiAlcyIgJSBzdHIoc2VsZi5fdGVzdF9j
b25maWcpKQogCiAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gc2VsZi5fZXJyb3JzOgogICAgICAg
ICAgICAgICAgIF9sb2cuZXJyb3IoZXJyb3IpCkBAIC0zOTUsMTEgKzM3NywxMiBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgZXhwZWN0YXRpb25zID0gc2V0KFtQQVNTXSkK
ICAgICAgICAgb3B0aW9ucyA9IFtdCiAgICAgICAgIG1vZGlmaWVycyA9IFtdCisgICAgICAgIG51
bV9tYXRjaGVzID0gMAogICAgICAgICBpZiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKICAgICAgICAg
ICAgIGZvciB0ZXN0IGluIHNlbGYuX2Z1bGxfdGVzdF9saXN0OgogICAgICAgICAgICAgICAgIGlm
IG5vdCB0ZXN0IGluIHNlbGYuX3Rlc3RfbGlzdF9wYXRoczoKLSAgICAgICAgICAgICAgICAgICAg
c2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZD1GYWxzZSkKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywg
ZXhwZWN0YXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25z
LCBvdmVycmlkZXNfYWxsb3dlZD1GYWxzZSkKIAogICAgIGRlZiBfZGljdF9vZl9zZXRzKHNlbGYs
IHN0cmluZ3NfdG9fY29uc3RhbnRzKToKICAgICAgICAgIiIiVGFrZXMgYSBkaWN0IG9mIHN0cmlu
Z3MtPmNvbnN0YW50cyBhbmQgcmV0dXJucyBhIGRpY3QgbWFwcGluZwpAQCAtNTM4LDEyICs1MjEs
MTkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICAgICAgb3B0aW9ucyA9IFtd
CiAgICAgICAgIGlmIGxpbmUuZmluZCgiOiIpIGlzIC0xOgotICAgICAgICAgICAgdGVzdF9hbmRf
ZXhwZWN0YXRpb24gPSBsaW5lLnNwbGl0KCI9IikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHBhcnRzID0gbGluZS5zcGxpdCgiOiIpCi0gICAgICAgICAgICBvcHRpb25zID0gc2VsZi5fZ2V0
X29wdGlvbnNfbGlzdChwYXJ0c1swXSkKLSAgICAgICAgICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9u
ID0gcGFydHNbMV0uc3BsaXQoJz0nKQorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVu
bywgIk1pc3NpbmcgYSAnOiciLCBsaW5lKQorICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25l
LCBOb25lKQogCisgICAgICAgICNpZiBsaW5lLmZpbmQoIjoiKSBpcyAtMToKKyAgICAgICAgIyAg
ICB0ZXN0X2FuZF9leHBlY3RhdGlvbiA9IGxpbmUuc3BsaXQoIj0iKQorICAgICAgICAjZWxzZToK
KyAgICAgICAgIyAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoIjoiKQorICAgICAgICAjICAgIG9wdGlv
bnMgPSBzZWxmLl9nZXRfb3B0aW9uc19saXN0KHBhcnRzWzBdKQorICAgICAgICAjICAgIHRlc3Rf
YW5kX2V4cGVjdGF0aW9uID0gcGFydHNbMV0uc3BsaXQoJz0nKQorCisgICAgICAgIHBhcnRzID0g
bGluZS5zcGxpdCgnOicpCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9uc19saXN0
KHBhcnRzWzBdKQorICAgICAgICB0ZXN0X2FuZF9leHBlY3RhdGlvbiA9IHBhcnRzWzFdLnNwbGl0
KCc9JykKICAgICAgICAgdGVzdCA9IHRlc3RfYW5kX2V4cGVjdGF0aW9uWzBdLnN0cmlwKCkKICAg
ICAgICAgaWYgKGxlbih0ZXN0X2FuZF9leHBlY3RhdGlvbikgaXMgbm90IDIpOgogICAgICAgICAg
ICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywgIk1pc3NpbmcgZXhwZWN0YXRpb25zLiIsCkBAIC01
ODksNyArNTc5LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICAgICAgcmV0
dXJuIFJFTU9WRV9URVNUCiAKLSAgICBkZWYgX2hhc192YWxpZF9tb2RpZmllcnNfZm9yX2N1cnJl
bnRfcGxhdGZvcm0oc2VsZiwgb3B0aW9ucywgbGluZW5vLAorICAgIGRlZiBfX21vZGlmaWVyc19m
b3JfY3VycmVudF9wbGF0Zm9ybShzZWxmLCBvcHRpb25zLCBsaW5lbm8sCiAgICAgICAgIHRlc3Rf
YW5kX2V4cGVjdGF0aW9ucywgbW9kaWZpZXJzKToKICAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlm
IHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIGluIHRoZSBvcHRpb25zIGxpc3Qgb3IgaWYKICAgICAg
ICAgbm8gcGxhdGZvcm1zIGFyZSBsaXN0ZWQgYW5kIGlmIHRoZXJlIGFyZSBubyBmYXRhbCBlcnJv
cnMgaW4gdGhlCkBAIC02MDMsNTIgKzU5Myw4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxl
OgogICAgICAgICAiIiIKICAgICAgICAgaGFzX2FueV9wbGF0Zm9ybSA9IEZhbHNlCiAgICAgICAg
IGhhc19idWdfaWQgPSBGYWxzZQotICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6Ci0gICAg
ICAgICAgICBpZiBvcHRpb24gaW4gc2VsZi5NT0RJRklFUlM6Ci0gICAgICAgICAgICAgICAgbW9k
aWZpZXJzLmFkZChvcHRpb24pCi0gICAgICAgICAgICBlbGlmIG9wdGlvbiBpbiBzZWxmLl9wb3J0
LnRlc3RfcGxhdGZvcm1fbmFtZXMoKToKLSAgICAgICAgICAgICAgICBoYXNfYW55X3BsYXRmb3Jt
ID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBvcHRpb24uc3RhcnRzd2l0aCgnYnVnJyk6Ci0gICAg
ICAgICAgICAgICAgaGFzX2J1Z19pZCA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgb3B0aW9uIG5v
dCBpbiBzZWxmLkJVSUxEX1RZUEVTOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihs
aW5lbm8sICdJbnZhbGlkIG1vZGlmaWVyIGZvciB0ZXN0OiAlcycgJQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcHRpb24sIHRlc3RfYW5kX2V4cGVjdGF0aW9ucykKLQotICAgICAg
ICBpZiBoYXNfYW55X3BsYXRmb3JtIGFuZCBub3Qgc2VsZi5fbWF0Y2hfcGxhdGZvcm0ob3B0aW9u
cyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBub3QgaGFzX2J1Z19p
ZCBhbmQgJ3dvbnRmaXgnIG5vdCBpbiBvcHRpb25zOgotICAgICAgICAgICAgIyBUT0RPKG9qYW4p
OiBUdXJuIHRoaXMgaW50byBhbiBBZGRFcnJvciBjYWxsIG9uY2UgYWxsIHRoZQotICAgICAgICAg
ICAgIyB0ZXN0cyBoYXZlIEJVRyBpZGVudGlmaWVycy4KLSAgICAgICAgICAgIHNlbGYuX2xvZ19u
b25fZmF0YWxfZXJyb3IobGluZW5vLCAnVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuJywKLSAgICAg
ICAgICAgICAgICB0ZXN0X2FuZF9leHBlY3RhdGlvbnMpCi0KLSAgICAgICAgaWYgJ3JlbGVhc2Un
IGluIG9wdGlvbnMgb3IgJ2RlYnVnJyBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgc2VsZi5f
aXNfZGVidWdfbW9kZSBhbmQgJ2RlYnVnJyBub3QgaW4gb3B0aW9uczoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19kZWJ1Z19tb2RlIGFu
ZCAncmVsZWFzZScgbm90IGluIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICAgICAgaWYgc2VsZi5faXNfbGludF9tb2RlIGFuZCAncmViYXNlbGluZScgaW4gb3B0
aW9uczoKLSAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCi0gICAgICAgICAgICAg
ICAgJ1JFQkFTRUxJTkUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5l
LnB5LiAnCi0gICAgICAgICAgICAgICAgJ0Nhbm5vdCBiZSBjaGVja2VkIGluLicsIHRlc3RfYW5k
X2V4cGVjdGF0aW9ucykKLQogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIF9tYXRjaF9w
bGF0Zm9ybShzZWxmLCBvcHRpb25zKToKLSAgICAgICAgIiIiTWF0Y2ggdGhlIGxpc3Qgb2Ygb3B0
aW9ucyBhZ2FpbnN0IG91ciBzcGVjaWZpZWQgcGxhdGZvcm0uIElmIGFueQotICAgICAgICBvZiB0
aGUgb3B0aW9ucyBwcmVmaXgtbWF0Y2ggc2VsZi5fcGxhdGZvcm0sIHJldHVybiBUcnVlLiBUaGlz
IGhhbmRsZXMKLSAgICAgICAgdGhlIGNhc2Ugd2hlcmUgYSB0ZXN0IGlzIG1hcmtlZCBXSU4gYW5k
IHRoZSBwbGF0Zm9ybSBpcyBXSU4tVklTVEEuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBv
cHRpb25zOiBsaXN0IG9mIG9wdGlvbnMKLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBvcHQgaW4g
b3B0aW9uczoKLSAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcGxhdGZvcm1fbmFtZS5zdGFydHN3
aXRoKG9wdCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZh
bHNlCi0KICAgICBkZWYgX2FkZF90b19hbGxfZXhwZWN0YXRpb25zKHNlbGYsIHRlc3QsIG9wdGlv
bnMsIGV4cGVjdGF0aW9ucyk6CiAgICAgICAgICMgTWFrZSBhbGwgcGF0aHMgdW5peC1zdHlsZSBz
byB0aGUgZGFzaGJvYXJkIGRvZXNuJ3QgbmVlZCB0by4KICAgICAgICAgdGVzdCA9IHRlc3QucmVw
bGFjZSgnXFwnLCAnLycpCkBAIC02NjEsNTQgKzYwNyw0MyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRp
b25zRmlsZToKICAgICAgICAgIiIiRm9yIGVhY2ggdGVzdCBpbiBhbiBleHBlY3RhdGlvbnMgaXRl
cmFibGUsIGdlbmVyYXRlIHRoZQogICAgICAgICBleHBlY3RhdGlvbnMgZm9yIGl0LiIiIgogICAg
ICAgICBsaW5lbm8gPSAwCisgICAgICAgIG1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIoc2VsZi5f
dGVzdF9jb25maWcpCiAgICAgICAgIGZvciBsaW5lIGluIGV4cGVjdGF0aW9uczoKICAgICAgICAg
ICAgIGxpbmVubyArPSAxCisgICAgICAgICAgICBzZWxmLl9yZWFkX2xpbmUobGluZSwgbGluZW5v
LCBtYXRjaGVyLCBvdmVycmlkZXNfYWxsb3dlZCkKIAotICAgICAgICAgICAgdGVzdF9saXN0X3Bh
dGgsIG9wdGlvbnMsIGV4cGVjdGF0aW9ucyA9IFwKLSAgICAgICAgICAgICAgICBzZWxmLnBhcnNl
X2V4cGVjdGF0aW9uc19saW5lKGxpbmUsIGxpbmVubykKLSAgICAgICAgICAgIGlmIG5vdCBleHBl
Y3RhdGlvbnM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICBkZWYgX3JlYWRfbGluZShz
ZWxmLCBsaW5lLCBsaW5lbm8sIG1hdGNoZXIsIG92ZXJyaWRlc19hbGxvd2VkKToKKyAgICAgICAg
dGVzdF9saXN0X3BhdGgsIG9wdGlvbnMsIGV4cGVjdGF0aW9ucyA9IFwKKyAgICAgICAgICAgIHNl
bGYucGFyc2VfZXhwZWN0YXRpb25zX2xpbmUobGluZSwgbGluZW5vKQorICAgICAgICBpZiBub3Qg
ZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAgIHNlbGYuX2Fk
ZF90b19hbGxfZXhwZWN0YXRpb25zKHRlc3RfbGlzdF9wYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4ob3B0aW9ucykudXBwZXIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2luKGV4cGVjdGF0aW9u
cykudXBwZXIoKSkKKyAgICAgICAgc2VsZi5fYWRkX3RvX2FsbF9leHBlY3RhdGlvbnModGVzdF9s
aXN0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpv
aW4ob3B0aW9ucykudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICIuam9pbihleHBlY3RhdGlvbnMpLnVwcGVyKCkpCiAKLSAgICAgICAgICAgIG1vZGlm
aWVycyA9IHNldCgpCi0gICAgICAgICAgICBpZiBvcHRpb25zIGFuZCBub3Qgc2VsZi5faGFzX3Zh
bGlkX21vZGlmaWVyc19mb3JfY3VycmVudF9wbGF0Zm9ybSgKLSAgICAgICAgICAgICAgICBvcHRp
b25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoLCBtb2RpZmllcnMpOgotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgIG51bV9tYXRjaGVzID0gc2VsZi5fY2hlY2tfb3B0aW9ucyhtYXRj
aGVyLCBvcHRpb25zLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgaWYgbnVtX21hdGNoZXMgPT0gTW9kaWZp
ZXJNYXRjaGVyLk5PX01BVENIOgorICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAgIGV4
cGVjdGF0aW9ucyA9IHNlbGYuX3BhcnNlX2V4cGVjdGF0aW9ucyhleHBlY3RhdGlvbnMsIGxpbmVu
bywKLSAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZXhwZWN0YXRpb25z
ID0gc2VsZi5fcGFyc2VfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9ucywgbGluZW5vLAorICAgICAg
ICAgICAgdGVzdF9saXN0X3BhdGgpCiAKLSAgICAgICAgICAgIGlmICdzbG93JyBpbiBvcHRpb25z
IGFuZCBUSU1FT1VUIGluIGV4cGVjdGF0aW9uczoKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRf
ZXJyb3IobGluZW5vLAotICAgICAgICAgICAgICAgICAgICAnQSB0ZXN0IGNhbiBub3QgYmUgYm90
aCBzbG93IGFuZCB0aW1lb3V0LiBJZiBpdCB0aW1lcyBvdXQgJwotICAgICAgICAgICAgICAgICAg
ICAnaW5kZWZpbml0ZWx5LCB0aGVuIGl0IHNob3VsZCBiZSBqdXN0IHRpbWVvdXQuJywKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIHNlbGYuX2NoZWNrX29wdGlv
bnNfYWdhaW5zdF9leHBlY3RhdGlvbnMob3B0aW9ucywgZXhwZWN0YXRpb25zLAorICAgICAgICAg
ICAgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCkKIAotICAgICAgICAgICAgZnVsbF9wYXRoID0gb3Mu
cGF0aC5qb2luKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQotICAgICAgICAgICAgZnVsbF9w
YXRoID0gb3MucGF0aC5ub3JtcGF0aChmdWxsX3BhdGgpCi0gICAgICAgICAgICAjIFdlYktpdCdz
IHdheSBvZiBza2lwcGluZyB0ZXN0cyBpcyB0byBhZGQgYSAtZGlzYWJsZWQgc3VmZml4LgotICAg
ICAgICAgICAgIyBTbyB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIHBhdGggZXhpc3RpbmcgaWYgdGhl
IHBhdGggb3IgdGhlCi0gICAgICAgICAgICAjIC1kaXNhYmxlZCB2ZXJzaW9uIGV4aXN0cy4KLSAg
ICAgICAgICAgIGlmIChub3Qgc2VsZi5fcG9ydC5wYXRoX2V4aXN0cyhmdWxsX3BhdGgpCi0gICAg
ICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9wb3J0LnBhdGhfZXhpc3RzKGZ1bGxfcGF0aCArICct
ZGlzYWJsZWQnKSk6Ci0gICAgICAgICAgICAgICAgIyBMb2cgYSBub24gZmF0YWwgZXJyb3IgaGVy
ZSBzaW5jZSB5b3UgaGl0IHRoaXMgY2FzZSBhbnkKLSAgICAgICAgICAgICAgICAjIHRpbWUgeW91
IHVwZGF0ZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgd2l0aG91dCBzeW5jaW5nCi0gICAgICAgICAg
ICAgICAgIyB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgc2VsZi5f
bG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdQYXRoIGRvZXMgbm90IGV4aXN0LicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBzZWxmLl9jaGVja19wYXRoX2RvZXNfbm90
X2V4aXN0KGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuCiAKLSAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKLSAgICAgICAgICAgICAgICB0
ZXN0cyA9IFt0ZXN0X2xpc3RfcGF0aF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgdGVzdHMgPSBzZWxmLl9leHBhbmRfdGVzdHModGVzdF9saXN0X3BhdGgpCisgICAgICAgIGlm
IG5vdCBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKKyAgICAgICAgICAgIHRlc3RzID0gW3Rlc3RfbGlz
dF9wYXRoXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMgPSBzZWxmLl9leHBhbmRf
dGVzdHModGVzdF9saXN0X3BhdGgpCiAKLSAgICAgICAgICAgIHNlbGYuX2FkZF90ZXN0cyh0ZXN0
cywgZXhwZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXJzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCkKKyAgICAg
ICAgbW9kaWZpZXJzID0gW28gZm9yIG8gaW4gb3B0aW9ucyBpZiBvIGluIHNlbGYuTU9ESUZJRVJT
XQorICAgICAgICBzZWxmLl9hZGRfdGVzdHModGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0
X3BhdGgsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgbnVtX21h
dGNoZXMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKQogCiAgICAgZGVmIF9nZXRfb3B0aW9u
c19saXN0KHNlbGYsIGxpc3RTdHJpbmcpOgogICAgICAgICByZXR1cm4gW3BhcnQuc3RyaXAoKS5s
b3dlcigpIGZvciBwYXJ0IGluIGxpc3RTdHJpbmcuc3RyaXAoKS5zcGxpdCgnICcpXQpAQCAtNzI0
LDYgKzY1OSw0NiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgIHJl
c3VsdC5hZGQoZXhwZWN0YXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBf
Y2hlY2tfb3B0aW9ucyhzZWxmLCBtYXRjaGVyLCBvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9w
YXRoKToKKyAgICAgICAgbWF0Y2hfcmVzdWx0ID0gbWF0Y2hlci5tYXRjaChvcHRpb25zKQorICAg
ICAgICBmb3IgZXJyb3IgaW4gbWF0Y2hfcmVzdWx0LmVycm9yczoKKyAgICAgICAgICAgIHNlbGYu
X2FkZF9lcnJvcihsaW5lbm8sIGVycm9yLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZm9yIHdh
cm5pbmcgaW4gbWF0Y2hfcmVzdWx0Lndhcm5pbmdzOgorICAgICAgICAgICAgc2VsZi5fbG9nX25v
bl9mYXRhbF9lcnJvcihsaW5lbm8sIHdhcm5pbmcsIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBp
ZiBub3QgYW55KFtvcHQuc3RhcnRzd2l0aCgnYnVnJykgZm9yIG9wdCBpbiBvcHRpb25zXSkgYW5k
IG5vdCAnd29udGZpeCcgaW4gb3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX2xvZ19ub25fZmF0
YWxfZXJyb3IobGluZW5vLCAnVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuJywKKyAgICAgICAgICAg
IHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBpZiBzZWxmLl9pc19saW50X21vZGUgYW5kICdyZWJh
c2VsaW5lJyBpbiBvcHRpb25zOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywK
KyAgICAgICAgICAgICdSRUJBU0VMSU5FIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHJ1bm5pbmcg
cmViYXNlbGluZS5weS4gJworICAgICAgICAgICAgJ0Nhbm5vdCBiZSBjaGVja2VkIGluLicsIHRl
c3RfbGlzdF9wYXRoKQorICAgICAgICByZXR1cm4gbWF0Y2hfcmVzdWx0Lm51bV9tYXRjaGVzCisK
KyAgICBkZWYgX2NoZWNrX29wdGlvbnNfYWdhaW5zdF9leHBlY3RhdGlvbnMoc2VsZiwgb3B0aW9u
cywgZXhwZWN0YXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgaWYgJ3Nsb3cnIGluIG9wdGlv
bnMgYW5kIFRJTUVPVVQgaW4gZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vy
cm9yKGxpbmVubywKKyAgICAgICAgICAgICAgICAnQSB0ZXN0IGNhbiBub3QgYmUgYm90aCBzbG93
IGFuZCB0aW1lb3V0LiBJZiBpdCB0aW1lcyBvdXQgJworICAgICAgICAgICAgICAgICdpbmRlZmlu
aXRlbHksIHRoZW4gaXQgc2hvdWxkIGJlIGp1c3QgdGltZW91dC4nLAorICAgICAgICAgICAgICAg
IHRlc3RfbGlzdF9wYXRoKQorCisgICAgZGVmIF9jaGVja19wYXRoX2RvZXNfbm90X2V4aXN0KHNl
bGYsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRo
LmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZnVsbF9wYXRoID0gb3Mu
cGF0aC5ub3JtcGF0aChmdWxsX3BhdGgpCisgICAgICAgICMgV2ViS2l0J3Mgd2F5IG9mIHNraXBw
aW5nIHRlc3RzIGlzIHRvIGFkZCBhIC1kaXNhYmxlZCBzdWZmaXguCisgICAgICAgICAgICAjIFNv
IHdlIHNob3VsZCBjb25zaWRlciB0aGUgcGF0aCBleGlzdGluZyBpZiB0aGUgcGF0aCBvciB0aGUK
KyAgICAgICAgIyAtZGlzYWJsZWQgdmVyc2lvbiBleGlzdHMuCisgICAgICAgIGlmIChub3Qgc2Vs
Zi5fcG9ydC5wYXRoX2V4aXN0cyhmdWxsX3BhdGgpCisgICAgICAgICAgICBhbmQgbm90IHNlbGYu
X3BvcnQucGF0aF9leGlzdHMoZnVsbF9wYXRoICsgJy1kaXNhYmxlZCcpKToKKyAgICAgICAgICAg
ICMgTG9nIGEgbm9uIGZhdGFsIGVycm9yIGhlcmUgc2luY2UgeW91IGhpdCB0aGlzIGNhc2UgYW55
CisgICAgICAgICAgICAjIHRpbWUgeW91IHVwZGF0ZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgd2l0
aG91dCBzeW5jaW5nCisgICAgICAgICAgICAjIHRoZSBMYXlvdXRUZXN0cyBkaXJlY3RvcnkKKyAg
ICAgICAgICAgIHNlbGYuX2xvZ19ub25fZmF0YWxfZXJyb3IobGluZW5vLCAnUGF0aCBkb2VzIG5v
dCBleGlzdC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0
X3BhdGgpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwog
ICAgIGRlZiBfZXhwYW5kX3Rlc3RzKHNlbGYsIHRlc3RfbGlzdF9wYXRoKToKICAgICAgICAgIiIi
Q29udmVydCB0aGUgdGVzdCBzcGVjaWZpY2F0aW9uIHRvIGFuIGFic29sdXRlLCBub3JtYWxpemVk
CiAgICAgICAgIHBhdGggYW5kIG1ha2Ugc3VyZSBkaXJlY3RvcmllcyBlbmQgd2l0aCB0aGUgT1Mg
cGF0aCBzZXBhcmF0b3IuIiIiCkBAIC03NDksMTcgKzcyNCwxOSBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zRmlsZToKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9hZGRfdGVzdHMo
c2VsZiwgdGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAgICAg
ICAgICAgICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKToKKyAg
ICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG51bV9tYXRjaGVzLCBvcHRpb25zLCBvdmVycmlk
ZXNfYWxsb3dlZCk6CiAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgaWYg
c2VsZi5fYWxyZWFkeV9zZWVuX3Rlc3QodGVzdCwgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19hbGxvd2VkKToK
KyAgICAgICAgICAgIGlmIHNlbGYuX2FscmVhZHlfc2Vlbl9iZXR0ZXJfbWF0Y2godGVzdCwgdGVz
dF9saXN0X3BhdGgsCisgICAgICAgICAgICAgICAgbnVtX21hdGNoZXMsIGxpbmVubywgb3ZlcnJp
ZGVzX2FsbG93ZWQpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIHNl
bGYuX2NsZWFyX2V4cGVjdGF0aW9uc19mb3JfdGVzdCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCkKLSAg
ICAgICAgICAgIHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBv
cHRpb25zLAorICAgICAgICAgICAgc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdID0gKG9zLnBh
dGgubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpLAorICAgICAgICAgICAgICAgIG51bV9tYXRjaGVz
LCBsaW5lbm8pCisgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmllcnMsIG51
bV9tYXRjaGVzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvdmVycmlkZXNfYWxsb3dlZCkKIAotICAgIGRlZiBfYWRkX3Rlc3Qoc2VsZiwgdGVzdCwg
bW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCisgICAgZGVmIF9hZGRfdGVzdChzZWxm
LCB0ZXN0LCBtb2RpZmllcnMsIG51bV9tYXRjaGVzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCiAg
ICAgICAgICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZCk6CiAgICAgICAgICIiIlNldHMgdGhl
IGV4cGVjdGVkIHN0YXRlIGZvciBhIGdpdmVuIHRlc3QuCiAKQEAgLTc3MCw2ICs3NDcsNyBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgQXJnczoKICAgICAgICAgICB0ZXN0
OiB0ZXN0IHRvIGFkZAogICAgICAgICAgIG1vZGlmaWVyczogc2VxdWVuY2Ugb2YgbW9kaWZpZXIg
a2V5d29yZHMgKCd3b250Zml4JywgJ3Nsb3cnLCBldGMuKQorICAgICAgICAgIG51bV9tYXRjaGVz
OiBudW1iZXIgb2YgbW9kaWZpZXJzIHRoYXQgbWF0Y2hlZCB0aGUgY29uZmlndXJhdGlvbgogICAg
ICAgICAgIGV4cGVjdGF0aW9uczogc2VxdWVuY2Ugb2YgZXhwZWN0YXRpb25zIChQQVNTLCBJTUFH
RSwgZXRjLikKICAgICAgICAgICBvcHRpb25zOiBzZXF1ZW5jZSBvZiBrZXl3b3JkcyBhbmQgYnVn
IGlkZW50aWZpZXJzLgogICAgICAgICAgIG92ZXJyaWRlc19hbGxvd2VkOiB3aGV0aGVyIHdlJ3Jl
IHBhcnNpbmcgdGhlIHJlZ3VsYXIgZXhwZWN0YXRpb25zCkBAIC04MDgsMTMgKzc4NiwxMyBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgdGhhbiBhIHByZXZpb3VzIGxpc3Rp
bmcuCiAgICAgICAgICIiIgogICAgICAgICBpZiB0ZXN0IGluIHNlbGYuX3Rlc3RfbGlzdF9wYXRo
czoKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25zLnBvcCh0ZXN0LCAnJykK
LSAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2VsZi5fZXhwZWN0YXRp
b25fdG9fdGVzdHMpCi0gICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNl
bGYuX21vZGlmaWVyX3RvX3Rlc3RzKQotICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0
cyh0ZXN0LCBzZWxmLl90aW1lbGluZV90b190ZXN0cykKLSAgICAgICAgICAgIHNlbGYuX3JlbW92
ZV9mcm9tX3NldHModGVzdCwgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHMpCisgICAgICAgICAg
ICBiYXNlX3BhdGggPSBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF1bMF0KKyAgICAgICAgICAg
IHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25zLnBvcChiYXNlX3BhdGgsICcnKQorICAgICAgICAg
ICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyhiYXNlX3BhdGgsIHNlbGYuX2V4cGVjdGF0aW9uX3Rv
X3Rlc3RzKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyhiYXNlX3BhdGgsIHNl
bGYuX21vZGlmaWVyX3RvX3Rlc3RzKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0
cyhiYXNlX3BhdGgsIHNlbGYuX3RpbWVsaW5lX3RvX3Rlc3RzKQorICAgICAgICAgICAgc2VsZi5f
cmVtb3ZlX2Zyb21fc2V0cyhiYXNlX3BhdGgsIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzKQog
Ci0gICAgICAgIHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IG9zLnBhdGgubm9ybXBhdGgo
dGVzdF9saXN0X3BhdGgpCiAKICAgICBkZWYgX3JlbW92ZV9mcm9tX3NldHMoc2VsZiwgdGVzdCwg
ZGljdCk6CiAgICAgICAgICIiIlJlbW92ZXMgdGhlIGdpdmVuIHRlc3QgZnJvbSB0aGUgc2V0cyBp
biB0aGUgZGljdGlvbmFyeS4KQEAgLTgyNiwzMiArODA0LDYwIEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNGaWxlOgogICAgICAgICAgICAgaWYgdGVzdCBpbiBzZXRfb2ZfdGVzdHM6CiAgICAgICAg
ICAgICAgICAgc2V0X29mX3Rlc3RzLnJlbW92ZSh0ZXN0KQogCi0gICAgZGVmIF9hbHJlYWR5X3Nl
ZW5fdGVzdChzZWxmLCB0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWxsb3dfb3ZlcnJpZGVzKToKLSAgICAgICAgIiIiUmV0dXJucyB0cnVl
IGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBhIG1vcmUgcHJlY2lzZSBwYXRoIGZvciB0aGlzIHRlc3QK
LSAgICAgICAgdGhhbiB0aGUgdGVzdF9saXN0X3BhdGguCisgICAgZGVmIF9hbHJlYWR5X3NlZW5f
YmV0dGVyX21hdGNoKHNlbGYsIHRlc3QsIHRlc3RfbGlzdF9wYXRoLCBudW1fbWF0Y2hlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBvdmVycmlkZXNfYWxsb3dl
ZCk6CisgICAgICAgICIiIlJldHVybnMgd2hldGhlciB3ZSd2ZSBzZWVuIGEgYmV0dGVyIG1hdGNo
IGFscmVhZHkgaW4gdGhlIGZpbGUuCisKKyAgICAgICAgUmV0dXJucyBUcnVlIGlmOgorICAgICAg
ICAoMSkgV2UndmUgYWxyZWFkeSBzZWVuIGEgdGVzdF9saXN0X3BhdGggdGhhdCBtYXRjaGVzIG1v
cmUgb2YgdGhlIHRlc3QKKyAgICAgICAgICAgIHRoYW4gdGhpcyBwYXRoIGRvZXMsIG9yCisgICAg
ICAgICgyKSBXZSd2ZSBzZWVuIGEgbGluZSB0aGF0IG1hdGNoZWQgbW9yZSBvZiB0aGUgdGVzdCBj
b25maWcgdGhhbgorICAgICAgICAgICAgdGhpcyBvbmUgZG9lcy4KICAgICAgICAgIiIiCiAgICAg
ICAgIGlmIG5vdCB0ZXN0IGluIHNlbGYuX3Rlc3RfbGlzdF9wYXRoczoKKyAgICAgICAgICAgICMg
V2UndmUgbmV2ZXIgc2VlbiB0aGlzIHRlc3QgYmVmb3JlLgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKLSAgICAgICAgcHJldl9iYXNlX3BhdGggPSBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVz
dF0KLSAgICAgICAgaWYgKHByZXZfYmFzZV9wYXRoID09IG9zLnBhdGgubm9ybXBhdGgodGVzdF9s
aXN0X3BhdGgpKToKLSAgICAgICAgICAgIGlmIChub3QgYWxsb3dfb3ZlcnJpZGVzIG9yIHRlc3Qg
aW4gc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHMpOgotICAgICAgICAgICAgICAgIGlmIGFsbG93X292
ZXJyaWRlczoKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gIm92ZXJy
aWRlIgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0
aW9uX3NvdXJjZSA9ICJleHBlY3RhdGlvbiIKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRfZXJy
b3IobGluZW5vLCAnRHVwbGljYXRlICVzLicgJSBleHBlY3RhdGlvbl9zb3VyY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IFRydWUKKyAgICAgICAgcHJldl9lbnRyeSA9IHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XQor
ICAgICAgICBwcmV2X2Jhc2VfcGF0aCwgcHJldl9udW1fbWF0Y2hlcywgcHJldl9saW5lbm8gPSBw
cmV2X2VudHJ5CisgICAgICAgIGJhc2VfcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgodGVzdF9saXN0
X3BhdGgpCisKKyAgICAgICAgaWYgbGVuKHByZXZfYmFzZV9wYXRoKSA+IGxlbihiYXNlX3BhdGgp
OgorICAgICAgICAgICAgIyBUaGUgcHJldmlvdXMgcGF0aCBtYXRjaGVkIG1vcmUgb2YgdGhlIHRl
c3QuCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbGlmIGxlbihwcmV2X2Jhc2Vf
cGF0aCkgPCBsZW4oYmFzZV9wYXRoKToKKyAgICAgICAgICAgICMgVGhpcyBwYXRoIG1hdGNoZXMg
bW9yZSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMg
V2UndmUgc2VlbiBhbiBlbnRyeSB0aGF0IG1hdGNoZXMgdGhpcyBiYXNlIHBhdGggZXhhY3RseQor
ICAgICAgICAjIChjb3VsZCBiZSBlaXRoZXIgYSBmaWxlIG9yIGEgZGlyZWN0b3J5KS4KKyAgICAg
ICAgaWYgKG5vdCBvdmVycmlkZXNfYWxsb3dlZCBvciB0ZXN0IGluIHNlbGYuX292ZXJyaWRkaW5n
X3Rlc3RzKToKKyAgICAgICAgICAgIGlmIG92ZXJyaWRlc19hbGxvd2VkOgorICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9uX3NvdXJjZSA9ICJvdmVycmlkZSIKICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgIyBXZSBoYXZlIHNlZW4gdGhpcyBwYXRoLCBidXQgdGhhdCdzIG9rYXkg
YmVjYXVzZSBpdHMKLSAgICAgICAgICAgICAgICAjIGluIHRoZSBvdmVycmlkZXMgYW5kIHRoZSBl
YXJsaWVyIHBhdGggd2FzIGluIHRoZQotICAgICAgICAgICAgICAgICMgZXhwZWN0YXRpb25zLgot
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9u
X3NvdXJjZSA9ICJleHBlY3RhdGlvbiIKIAotICAgICAgICAjIENoZWNrIGlmIHdlJ3ZlIGFscmVh
ZHkgc2VlbiBhIG1vcmUgcHJlY2lzZSBwYXRoLgotICAgICAgICByZXR1cm4gcHJldl9iYXNlX3Bh
dGguc3RhcnRzd2l0aChvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSkKKyAgICAgICAg
ICAgIGlmIHByZXZfbnVtX21hdGNoZXMgPT0gbnVtX21hdGNoZXM6CisgICAgICAgICAgICAgICAg
c2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgJ0R1cGxpY2F0ZSBv
ciBhbWJpZ3VvdXMgJXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSwKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBpZiBw
cmV2X251bV9tYXRjaGVzIDwgbnVtX21hdGNoZXM6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9n
X25vbl9mYXRhbF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICdNb3JlIHNwZWNp
ZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUKKyAgICAgICAgICAgICAg
ICAgICAgKGxpbmVubywgcHJldl9saW5lbm8pLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICdNb3Jl
IHNwZWNpZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUKKyAgICAgICAg
ICAgICAgICAgICAgKHByZXZfbGluZW5vLCBsaW5lbm8pLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBXZSBo
YXZlIHNlZW4gdGhpcyBwYXRoLCBidXQgdGhhdCdzIG9rYXkgYmVjYXVzZSBpdHMKKyAgICAgICAg
ICAgICMgaW4gdGhlIG92ZXJyaWRlcyBhbmQgdGhlIGVhcmxpZXIgcGF0aCB3YXMgaW4gdGhlCisg
ICAgICAgICAgICAjIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAg
ICAgZGVmIF9hZGRfZXJyb3Ioc2VsZiwgbGluZW5vLCBtc2csIHBhdGgpOgogICAgICAgICAiIiJS
ZXBvcnRzIGFuIGVycm9yIHRoYXQgd2lsbCBwcmV2ZW50IHJ1bm5pbmcgdGhlIHRlc3RzLiBEb2Vz
IG5vdApAQCAtODYzLDMgKzg2OSwxODcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAg
ICAgICAgICIiIlJlcG9ydHMgYW4gZXJyb3IgdGhhdCB3aWxsIG5vdCBwcmV2ZW50IHJ1bm5pbmcg
dGhlIHRlc3RzLiBUaGVzZSBhcmUKICAgICAgICAgc3RpbGwgZXJyb3JzLCBidXQgbm90IGJhZCBl
bm91Z2ggdG8gd2FycmFudCBicmVha2luZyB0ZXN0IHJ1bm5pbmcuIiIiCiAgICAgICAgIHNlbGYu
X25vbl9mYXRhbF9lcnJvcnMuYXBwZW5kKCdMaW5lOiVzICVzICVzJyAlIChsaW5lbm8sIG1zZywg
cGF0aCkpCisKKworY2xhc3MgTW9kaWZpZXJNYXRjaFJlc3VsdChvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5udW1fbWF0Y2hlcyA9IE1vZGlm
aWVyTWF0Y2hlci5OT19NQVRDSAorICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAg
ICAgIHNlbGYuZXJyb3JzID0gW10KKyAgICAgICAgc2VsZi53YXJuaW5ncyA9IFtdCisgICAgICAg
IHNlbGYubW9kaWZpZXJzID0gW10KKyAgICAgICAgc2VsZi5fbWF0Y2hlZF9yZWdleGVzID0gc2V0
KCkKKyAgICAgICAgc2VsZi5fbWF0Y2hlZF9tYWNyb3MgPSBzZXQoKQorCisKK2NsYXNzIE1vZGlm
aWVyTWF0Y2hlcihvYmplY3QpOgorCisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRo
ZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgIm1vZGlmaWVycyIgZm9yIGEgZ2l2ZW4KKyAgICBsaW5l
IGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZS4gTW9kaWZpZXJzIGFyZSB0aGUgdG9rZW5zIHRoYXQg
YXBwZWFyIHRvIHRoZQorICAgIGxlZnQgb2YgdGhlIGNvbG9uIG9uIGEgbGluZS4gRm9yIGV4YW1w
bGUsICJCVUcxMjM0IiwgIkRFQlVHIiwgYW5kICJXSU4iIGFyZQorICAgIGFsbCBtb2RpZmllcnMu
IFRoaXMgY2xhc3MgZ2V0cyB3aGF0IHRoZSB2YWxpZCBtb2RpZmllcnMgYXJlLCBhbmQgd2hpY2gK
KyAgICBtb2RpZmllcnMgYXJlIGFsbG93ZWQgdG8gZXhpc3QgdG9nZXRoZXIgb24gYSBsaW5lLCBm
cm9tIHRoZQorICAgIFRlc3RDb25maWd1cmF0aW9uIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbiB0
byB0aGUgY2FsbC4KKworICAgIFRoaXMgY2xhc3MgZGV0ZWN0cyAqaW50cmEqLWxpbmUgZXJyb3Jz
IGxpa2UgdW5rbm93biBtb2RpZmllcnMsIGJ1dAorICAgIGRvZXMgbm90IGRldGVjdCAqaW50ZXIq
LWxpbmUgbW9kaWZpZXJzIGxpa2UgZHVwbGljYXRlIGV4cGVjdGF0aW9ucy4KKworICAgIE1vcmUg
aW1wb3J0YW50bHksIHRoaXMgY2xhc3MgaXMgYWxzbyB1c2VkIHRvIGRldGVybWluZSBpZiBhIGdp
dmVuIGxpbmUKKyAgICBtYXRjaGVzIHRoZSBwb3J0IGluIHF1ZXN0aW9uLiBNYXRjaGVzIGFyZSBy
YW5rZWQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIKKyAgICBvZiBtb2RpZmllcnMgdGhhdCBtYXRj
aCBvbiBhIGxpbmUuIEEgbGluZSB3aXRoIG5vIG1vZGlmaWVycyBtYXRjaGVzCisgICAgZXZlcnl0
aGluZyBhbmQgaGFzIGEgc2NvcmUgb2YgemVyby4gQSBsaW5lIHdpdGggb25lIG1vZGlmaWVyIG1h
dGNoZXMgb25seQorICAgIHBvcnRzIHRoYXQgaGF2ZSB0aGF0IG1vZGlmaWVyIGFuZCBnZXRzIGEg
c2NvcmUgb2YgMSwgYW5kIHNvIG9uZS4gUG9ydHMKKyAgICB0aGF0IGRvbid0IG1hdGNoIGF0IGFs
bCBnZXQgYSBzY29yZSBvZiAtMS4KKworICAgIEdpdmVuIHR3byBsaW5lcyBpbiBhIGZpbGUgdGhh
dCBhcHBseSB0byB0aGUgc2FtZSBmaWxlLCBhIGhpZ2hlciBzY29yZQorICAgIGJlYXRzIGEgbG93
ZXIgb25lLCBhbmQgdHdvIGxpbmVzIHdpdGggdGhlIHNhbWUgc2NvcmUgYXJlIGNvbnNpZGVyZWQK
KyAgICBhbWJpZ3VvdXMgKGluZGVwZW5kZW50IG9mIHRoZSBvcmRlciBvZiBsaW5lcyBpbiB0aGUg
ZmlsZSkuIEZvciBleGFtcGxlLCBpbjoKKworICAgIEJVRzEgUkVMRUFTRSA6IGZvby5odG1sID0g
RkFJTAorICAgIEJVRzEgV0lOIFJFTEVBU0UgOiBmb28uaHRtbCA9IFBBU1MKKyAgICBCVUcyIFdJ
TiA6IGJhci5odG1sID0gRkFJTAorICAgIEJVRzIgREVCVUcgOiBiYXIuaHRtbCA9IFBBU1MKKwor
ICAgIHRoZSBleHBlY3RhdGlvbiBmb3IgZm9vLmh0bWwgb24gYSBXaW4gWFAgUmVsZWFzZSBib3Qg
d291bGQgYmUgUEFTUyBzaW5jZQorICAgIHRoZSBzY29yZXMgZm9yIHRoZSBmaXJzdCB0d28gbGlu
ZXMgYXJlIDEgYW5kIDIsIHJlc3BlY3RpdmVseS4gSG93ZXZlciwKKyAgICBsaW5lcyB0aHJlZSBh
bmQgZm91ciB3b3VsZCBwcm9kdWNlIGEgZHVwbGljYXRlIGV4cGVjdGF0aW9uIG9uICBhIFdpbgor
ICAgIERlYnVnIGJvdCBzaW5jZSBib3RoIHRoZSAnd2luJyBhbmQgdGhlICdkZWJ1ZycgZXhwZWN0
YXRpb25zIHdvdWxkIGFwcGx5LgorCisgICAgSW4gYWRkaXRpb24gdG8gdGhlIGRlZmluaXRpb25z
IG9mIGFsbCBvZiB0aGUgbW9kaWZpZXJzLCB0aGUgY2xhc3MKKyAgICBzdXBwb3J0cyAibWFjcm9z
IiB0aGF0IGFyZSBleHBhbmRlZCBwcmlvciB0byBpbnRlcnByZXRhdGlvbiwgYW5kICJpZ25vcmUK
KyAgICByZWdleGVzIiB0aGF0IGNhbiBiZSB1c2VkIHRvIHNraXAgb3ZlciBtb2RpZmllcnMgbGlr
ZSB0aGUgQlVHKiBtb2RpZmllcnMuCisgICAgIiIiCisgICAgTUFDUk9TID0geworICAgICAgICAn
bWFjLXNub3dsZW9wYXJkJzogWydtYWMnLCAnc25vd2xlb3BhcmQnXSwKKyAgICAgICAgJ21hYy1s
ZW9wYXJkJzogWydtYWMnLCAnbGVvcGFyZCddLAorICAgICAgICAnd2luLXhwJzogWyd3aW4nLCAn
eHAnXSwKKyAgICAgICAgJ3dpbi12aXN0YSc6IFsnd2luJywgJ3Zpc3RhJ10sCisgICAgICAgICd3
aW4tNyc6IFsnd2luJywgJ3dpbjcnXSwKKyAgICB9CisKKyAgICAjIFdlIGRvbid0IGluY2x1ZGUg
dGhlICJub25lIiBtb2RpZmllciBiZWNhdXNlIGl0IGlzbid0IGFjdHVhbGx5IGxlZ2FsLgorICAg
IFJFR0VYRVNfVE9fSUdOT1JFID0gKFsnYnVnXHcrJ10gKworICAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1PRElGSUVSUy5rZXlzKClbOi0xXSkKKyAgICBEVVBM
SUNBVEVfUkVHRVhFU19BTExPV0VEID0gWydidWdcdysnXQorCisgICAgIyBNYWdpYyB2YWx1ZSBy
ZXR1cm5lZCB3aGVuIHRoZSBvcHRpb25zIGRvbid0IG1hdGNoLgorICAgIE5PX01BVENIID0gLTEK
KworICAgICMgRklYTUU6IFRoZSBjb2RlIGN1cnJlbnRseSBkb2Vzbid0IGRldGVjdCBjb21iaW5h
dGlvbnMgb2YgbW9kaWZpZXJzCisgICAgIyB0aGF0IGFyZSBzeW50YWN0aWNhbGx5IHZhbGlkIGJ1
dCBzZW1hbnRpY2FsbHkgaW52YWxpZCwgbGlrZQorICAgICMgJ01BQyBYUCcuIFNlZSBNb2RpZmll
ck1hdGNoVGVzdC50ZXN0X2ludmFsaWRfY29tYmluYXRpb25zKCkgaW4gdGhlCisgICAgIyBfdW5p
dHRlc3QucHkgZmlsZS4KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X2NvbmZpZyk6Cisg
ICAgICAgICIiIkluaXRpYWxpemUgYSBNb2RpZmllck1hdGNoZXIgYXJndW1lbnQgd2l0aCB0aGUg
VGVzdENvbmZpZ3VyYXRpb24gaXQKKyAgICAgICAgc2hvdWxkIGJlIG1hdGNoZWQgYWdhaW5zdC4i
IiIKKyAgICAgICAgc2VsZi50ZXN0X2NvbmZpZyA9IHRlc3RfY29uZmlnCisgICAgICAgIHNlbGYu
YWxsb3dlZF9jb25maWd1cmF0aW9ucyA9IHRlc3RfY29uZmlnLmFsbF90ZXN0X2NvbmZpZ3VyYXRp
b25zKCkKKyAgICAgICAgc2VsZi5tYWNyb3MgPSBzZWxmLk1BQ1JPUworCisgICAgICAgIHNlbGYu
cmVnZXhlc190b19pZ25vcmUgPSB7fQorICAgICAgICBmb3IgcmVnZXhfc3RyIGluIHNlbGYuUkVH
RVhFU19UT19JR05PUkU6CisgICAgICAgICAgICBzZWxmLnJlZ2V4ZXNfdG9faWdub3JlW3JlZ2V4
X3N0cl0gPSByZS5jb21waWxlKHJlZ2V4X3N0cikKKworICAgICAgICAjIEtlZXAgYSBzZXQgb2Yg
YWxsIG9mIHRoZSBsZWdhbCBtb2RpZmllcnMgZm9yIHF1aWNrIGNoZWNraW5nLgorICAgICAgICBz
ZWxmLl9hbGxfbW9kaWZpZXJzID0gc2V0KCkKKworICAgICAgICAjIEtlZXAgYSBkaWN0IG1hcHBp
bmcgdmFsdWVzIGJhY2sgdG8gdGhlaXIgY2F0ZWdvcmllcy4KKyAgICAgICAgc2VsZi5fY2F0ZWdv
cmllc19mb3JfbW9kaWZpZXJzID0ge30KKyAgICAgICAgZm9yIGNvbmZpZyBpbiBzZWxmLmFsbG93
ZWRfY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlmaWVyIGlu
IGNvbmZpZy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuX2NhdGVnb3JpZXNfZm9yX21v
ZGlmaWVyc1ttb2RpZmllcl0gPSBjYXRlZ29yeQorICAgICAgICAgICAgICAgIHNlbGYuX2FsbF9t
b2RpZmllcnMuYWRkKG1vZGlmaWVyKQorCisgICAgZGVmIG1hdGNoKHNlbGYsIG9wdGlvbnMpOgor
ICAgICAgICAiIiJDaGVja3MgYSBsaXN0IG9mIG9wdGlvbnMgYWdhaW5zdCB0aGUgY29uZmlnIHNl
dCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIE9wdGlvbnMgbWF5IGJlIGVpdGhlciBhY3R1
YWwgbW9kaWZpZXIgc3RyaW5ncywgIm1hY3JvIiBzdHJpbmdzCisgICAgICAgIHRoYXQgZ2V0IGV4
cGFuZGVkIHRvIGEgbGlzdCBvZiBtb2RpZmllcnMsIG9yIHN0cmluZ3MgdGhhdCBhcmUgYWxsb3dl
ZAorICAgICAgICB0byBiZSBpZ25vcmVkLiBBbGwgb2YgdGhlIG9wdGlvbnMgbXVzdCBiZSBwYXNz
ZWQgaW4gaW4gbG93ZXIgY2FzZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgbWF0
Y2hpbmcgY2F0ZWdvcmllcywgb3IgTk9fTUFUQ0ggKC0xKSBpZiBpdAorICAgICAgICBkb2Vzbid0
IG1hdGNoIG9yIHRoZXJlIHdlcmUgZXJyb3JzIGZvdW5kLiBNYXRjaGVzIGFyZSBwcmlvcml0aXpl
ZAorICAgICAgICBieSB0aGUgbnVtYmVyIG9mIG1hdGNoaW5nIGNhdGVnb3JpZXMsIGJlY2F1c2Ug
dGhlIG1vcmUgc3BlY2lmaWMKKyAgICAgICAgdGhlIG9wdGlvbnMgbGlzdCwgdGhlIG1vcmUgY2F0
ZWdvcmllcyB3aWxsIG1hdGNoLgorCisgICAgICAgIFRoZSByZXN1bHRzIG9mIHRoZSBtb3N0IHJl
Y2VudCBtYXRjaCBhcmUgYXZhaWxhYmxlIGluIHRoZSAnb3B0aW9ucycsCisgICAgICAgICdtb2Rp
ZmllcnMnLCAnbnVtX21hdGNoZXMnLCAnZXJyb3JzJywgYW5kICd3YXJuaW5ncycgcHJvcGVydGll
cy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IE1vZGlmaWVyTWF0Y2hSZXN1bHQob3B0
aW9ucykKKyAgICAgICAgc2VsZi5fcGFyc2UocmVzdWx0KQorICAgICAgICBpZiByZXN1bHQuZXJy
b3JzOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBzZWxmLl9jb3VudF9tYXRj
aGVzKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIF9wYXJzZShzZWxm
LCByZXN1bHQpOgorICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2Ugd2FybiBhYm91dCBsaW5lcyBo
YXZpbmcgZXZlcnkgdmFsdWUgaW4gYSBjYXRlZ29yeT8KKyAgICAgICAgZm9yIG9wdGlvbiBpbiBy
ZXN1bHQub3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlX29uZShvcHRpb24sIHJlc3Vs
dCkKKworICAgIGRlZiBfcGFyc2Vfb25lKHNlbGYsIG9wdGlvbiwgcmVzdWx0KToKKyAgICAgICAg
aWYgb3B0aW9uIGluIHNlbGYuX2FsbF9tb2RpZmllcnM6CisgICAgICAgICAgICBzZWxmLl9hZGRf
bW9kaWZpZXIob3B0aW9uLCByZXN1bHQpCisgICAgICAgIGVsaWYgb3B0aW9uIGluIHNlbGYubWFj
cm9zOgorICAgICAgICAgICAgc2VsZi5fZXhwYW5kX21hY3JvKG9wdGlvbiwgcmVzdWx0KQorICAg
ICAgICBlbGlmIG5vdCBzZWxmLl9tYXRjaGVzX2FueV9yZWdleChvcHRpb24sIHJlc3VsdCk6Cisg
ICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiVW5yZWNvZ25pemVkIG9wdGlvbiAnJXMn
IiAlIG9wdGlvbikKKworICAgIGRlZiBfYWRkX21vZGlmaWVyKHNlbGYsIG9wdGlvbiwgcmVzdWx0
KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHJlc3VsdC5tb2RpZmllcnM6CisgICAgICAgICAgICBy
ZXN1bHQuZXJyb3JzLmFwcGVuZCgiTW9yZSB0aGFuIG9uZSAnJXMnIiAlIG9wdGlvbikKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllcnMuYXBwZW5kKG9wdGlvbikKKwor
ICAgIGRlZiBfZXhwYW5kX21hY3JvKHNlbGYsIG1hY3JvLCByZXN1bHQpOgorICAgICAgICBpZiBt
YWNybyBpbiByZXN1bHQuX21hdGNoZWRfbWFjcm9zOgorICAgICAgICAgICAgcmVzdWx0LmVycm9y
cy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBtYWNybykKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIG1vZHMgPSBbXQorICAgICAgICBmb3IgbW9kaWZpZXIgaW4gc2VsZi5tYWNy
b3NbbWFjcm9dOgorICAgICAgICAgICAgaWYgbW9kaWZpZXIgaW4gcmVzdWx0Lm9wdGlvbnM6Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIkNhbid0IHNwZWNpZnkgYm90aCBt
b2RpZmllciAnJXMnIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im1hY3JvICclcyciICUgKG1vZGlmaWVyLCBtYWNybykpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZGlmaWVyKQorICAgICAgICByZXN1bHQuX21hdGNo
ZWRfbWFjcm9zLmFkZChtYWNybykKKyAgICAgICAgcmVzdWx0Lm1vZGlmaWVycy5leHRlbmQobW9k
cykKKworICAgIGRlZiBfbWF0Y2hlc19hbnlfcmVnZXgoc2VsZiwgb3B0aW9uLCByZXN1bHQpOgor
ICAgICAgICBmb3IgcmVnZXhfc3RyLCBwYXR0ZXJuIGluIHNlbGYucmVnZXhlc190b19pZ25vcmUu
aXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYXR0ZXJuLm1hdGNoKG9wdGlvbik6CisgICAg
ICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlZ2V4X21hdGNoKHJlZ2V4X3N0ciwgcmVzdWx0KQor
ICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ZGVmIF9oYW5kbGVfcmVnZXhfbWF0Y2goc2VsZiwgcmVnZXhfc3RyLCByZXN1bHQpOgorICAgICAg
ICBpZiAocmVnZXhfc3RyIGluIHJlc3VsdC5fbWF0Y2hlZF9yZWdleGVzIGFuZAorICAgICAgICAg
ICAgcmVnZXhfc3RyIG5vdCBpbiBzZWxmLkRVUExJQ0FURV9SRUdFWEVTX0FMTE9XRUQpOgorICAg
ICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNo
aW5nICclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4X3N0cikK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5fbWF0Y2hlZF9yZWdleGVzLmFkZChy
ZWdleF9zdHIpCisKKyAgICBkZWYgX2NvdW50X21hdGNoZXMoc2VsZiwgcmVzdWx0KToKKyAgICAg
ICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1vZGlmaWVycyB0aGF0IG1hdGNoIHRoZSB0ZXN0
IGNvbmZpZy4iIiIKKyAgICAgICAgY2F0ZWdvcml6ZWRfbW9kaWZpZXJzID0gc2VsZi5fZ3JvdXBf
YnlfY2F0ZWdvcnkocmVzdWx0Lm1vZGlmaWVycykKKyAgICAgICAgcmVzdWx0Lm51bV9tYXRjaGVz
ID0gMAorICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlmaWVyIGluIHNlbGYudGVzdF9jb25maWcu
aXRlbXMoKToKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5IGluIGNhdGVnb3JpemVkX21vZGlmaWVy
czoKKyAgICAgICAgICAgICAgICBpZiBtb2RpZmllciBpbiBjYXRlZ29yaXplZF9tb2RpZmllcnNb
Y2F0ZWdvcnldOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQubnVtX21hdGNoZXMgKz0gMQor
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5udW1fbWF0
Y2hlcyA9IHNlbGYuTk9fTUFUQ0gKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICBk
ZWYgX2dyb3VwX2J5X2NhdGVnb3J5KHNlbGYsIG1vZGlmaWVycyk6CisgICAgICAgICMgUmV0dXJu
cyBhIGRpY3Qgb2YgY2F0ZWdvcnkgbmFtZSAtPiBsaXN0IG9mIG1vZGlmaWVycy4KKyAgICAgICAg
bW9kaWZpZXJzX2J5X2NhdGVnb3J5ID0ge30KKyAgICAgICAgZm9yIG0gaW4gbW9kaWZpZXJzOgor
ICAgICAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5LnNldGRlZmF1bHQoc2VsZi5fY2F0ZWdv
cnkobSksIFtdKS5hcHBlbmQobSkKKyAgICAgICAgcmV0dXJuIG1vZGlmaWVyc19ieV9jYXRlZ29y
eQorCisgICAgZGVmIF9jYXRlZ29yeShzZWxmLCBtb2RpZmllcik6CisgICAgICAgIHJldHVybiBz
ZWxmLl9jYXRlZ29yaWVzX2Zvcl9tb2RpZmllcnNbbW9kaWZpZXJdCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
CmluZGV4IDM0NzcxZjMwMzlhZmYxMGEwZmQyMjBlZmE0ODM2NzU1Yzc3MjhlZTMuLjlmM2QxNDZl
ZWM4MDdkZDQ2Y2E1MmZiNjcyNWU4MzYyYzhkZDMyNmUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBA
IC0zNCw2ICszNCw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydCBpbXBvcnQgYmFzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2th
Z2UudGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0ICoKIAogY2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CkBAIC04MCw2ICs4MSw5IEBAIGNsYXNzIEZ1bmN0aW9uc1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAKIGNsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAg
ICMgTm90ZSB0aGF0IGFsbCBvZiB0aGVzZSB0ZXN0cyBhcmUgd3JpdHRlbiBhc3N1bWluZyB0aGUg
Y29uZmlndXJhdGlvbgorICAgICMgYmVpbmcgdGVzdGVkIGlzIE1hYyBMZW9wYXJkLCBSZWxlYXNl
IGJ1aWxkLgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RGdW5jLCBzZXRVcD1Ob25lLCB0
ZWFyRG93bj1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBv
cnQuZ2V0KCd0ZXN0JywgTm9uZSkKICAgICAgICAgc2VsZi5fZXhwID0gTm9uZQpAQCAtMTA1LDEz
ICsxMDksMTIgQEAgQlVHX1RFU1QgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2No
ZWNrc3VtLmh0bWwgPSBJTUFHRQogQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBl
Y3RlZC9pbWFnZS5odG1sID0gSU1BR0UKICIiIgogCi0gICAgZGVmIHBhcnNlX2V4cChzZWxmLCBl
eHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICBpc19kZWJ1Z19tb2RlPUZhbHNlKToKKyAgICBkZWYgcGFyc2VfZXhwKHNlbGYs
IGV4cGVjdGF0aW9ucywgb3ZlcnJpZGVzPU5vbmUsIGlzX2xpbnRfbW9kZT1GYWxzZSk6CisgICAg
ICAgIHRlc3RfY29uZmlnID0gc2VsZi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKQogICAgICAg
ICBzZWxmLl9leHAgPSBUZXN0RXhwZWN0YXRpb25zKHNlbGYuX3BvcnQsCiAgICAgICAgICAgICAg
dGVzdHM9c2VsZi5nZXRfYmFzaWNfdGVzdHMoKSwKICAgICAgICAgICAgICBleHBlY3RhdGlvbnM9
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgIHRlc3RfcGxhdGZvcm1fbmFtZT1zZWxmLl9wb3J0
LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9aXNfZGVi
dWdfbW9kZSwKKyAgICAgICAgICAgICB0ZXN0X2NvbmZpZz10ZXN0X2NvbmZpZywKICAgICAgICAg
ICAgICBpc19saW50X21vZGU9aXNfbGludF9tb2RlLAogICAgICAgICAgICAgIG92ZXJyaWRlcz1v
dmVycmlkZXMpCiAKQEAgLTEyMCw3ICsxMjMsNyBAQCBCVUdfVEVTVCBXT05URklYIFdJTiA6IGZh
aWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBJTUFHRQogICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXQoW3Jlc3VsdF0pKQogCiAKLWNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0KEJhc2Up
OgorY2xhc3MgQmFzaWNUZXN0cyhCYXNlKToKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAg
ICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkK
QEAgLTEyOCwyMyArMTMxLDE0IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0KEJhc2UpOgog
ICAgICAgICBzZWxmLmFzc2VydF9leHAoJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBQQVNTKQogICAgICAg
ICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwnLCBQQVNTKQog
CisKK2NsYXNzIE1pc2NUZXN0cyhCYXNlKToKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9yZXN1bHRz
KHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQgQ1JBU0gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
X2V4cC5nZXRfZXhwZWN0YXRpb25zKAogICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJykpLAogICAgICAgICAgICAgc2V0KFtURVhULCBDUkFTSF0p
KQogCi0gICAgZGVmIHRlc3RfcHJlY2VkZW5jZShzZWxmKToKLSAgICAgICAgIyBUaGlzIHRlc3Rz
IGhhbmRsaW5nIHByZWNlZGVuY2Ugb2Ygc3BlY2lmaWMgbGluZXMgb3ZlciBkaXJlY3Rvcmllcwot
ICAgICAgICAjIGFuZCB0ZXN0cyBleHBlY3RhdGlvbnMgY292ZXJpbmcgZW50aXJlIGRpcmVjdG9y
aWVzLgotICAgICAgICBleHBfc3RyID0gIiIiCi1CVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVAotQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQot
IiIiCi0gICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKLSAgICAgICAgc2VsZi5h
c3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCi0KICAgICBk
ZWYgdGVzdF9jYXRlZ29yeV9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0
IGNoZWNrcyB1bmtub3duIHRlc3RzIGFyZSBub3QgcHJlc2VudCBpbiB0aGUKICAgICAgICAgIyBl
eHBlY3RhdGlvbnMgYW5kIHRoYXQga25vd24gdGVzdCBwYXJ0IG9mIGEgdGVzdCBjYXRlZ29yeSBp
cwpAQCAtMTU5LDIwICsxNTMsNiBAQCBCVUdYIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZCA9
IElNQUdFCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25fdGVzdCkKICAgICAgICAg
c2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCiAK
LSAgICBkZWYgdGVzdF9yZWxlYXNlX21vZGUoc2VsZik6Ci0gICAgICAgIHNlbGYucGFyc2VfZXhw
KCdCVUdYIERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhUKQotICAgICAgICBzZWxm
LnBhcnNlX2V4cCgnQlVHWCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9VHJ1ZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBQQVNTKQot
ICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPUZh
bHNlKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCcsIFBBU1MpCi0gICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdYIFJFTEVBU0UgOiBmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAgICAgICAgICAgICAgICAgICAgaXNf
ZGVidWdfbW9kZT1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwnLCBURVhUKQotCiAgICAgZGVmIHRlc3RfZ2V0X29wdGlvbnMoc2VsZik6
CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2V4cC5nZXRfb3B0aW9ucygKQEAgLTIxNyw3
ICsxOTcsNyBAQCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCIiIikKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVHJ1ZSwgIlBhcnNlRXJyb3Igd2Fzbid0IHJhaXNlZCIp
CiAgICAgICAgIGV4Y2VwdCBQYXJzZUVycm9yLCBlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGUuZmF0YWwpCi0gICAgICAgICAgICBleHBfZXJyb3JzID0gW3UnTGluZToxIEludmFsaWQg
bW9kaWZpZXIgZm9yIHRlc3Q6IGZvbyBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLAorICAg
ICAgICAgICAgZXhwX2Vycm9ycyA9IFt1IkxpbmU6MSBVbnJlY29nbml6ZWQgb3B0aW9uICdmb28n
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IHUiTGluZToyIE1pc3NpbmcgZXhwZWN0YXRpb25zLiBbJyBmYWlsdXJlcy9leHBlY3RlZC9pbWFn
ZS5odG1sJ10iXQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICdcbicuam9p
bihtYXAoc3RyLCBleHBfZXJyb3JzKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUu
ZXJyb3JzLCBleHBfZXJyb3JzKQpAQCAtMjMzLDc3ICsyMTMsMTI1IEBAIFNLSVAgOiBmYWlsdXJl
cy9leHBlY3RlZC9pbWFnZS5odG1sIiIiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHIoZSksICdcbicuam9pbihtYXAoc3RyLCBleHBfZXJyb3JzKSkpCiAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGUuZXJyb3JzLCBleHBfZXJyb3JzKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4
X21pc3NpbmdfZXhwZWN0YXRpb24oc2VsZik6CisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVzKHNlbGYp
OgorICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwg
IiIiCitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIi
IikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwn
LCBJTUFHRSkKKworICAgIGRlZiB0ZXN0X3BpeGVsX3Rlc3RzX2ZsYWcoc2VsZik6CisgICAgICAg
IGRlZiBtYXRjaCh0ZXN0LCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpOgorICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX2V4cC5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKKyAgICAgICAg
ICAgICAgICBzZWxmLmdldF90ZXN0KHRlc3QpLCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQp
CisKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sJywgVEVYVCwgVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBDUkFTSCwgVHJ1ZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcsIENSQVNILCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFp
bHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIElNQUdFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgn
ZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIFBBU1MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRj
aCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIFNLSVAsIEZhbHNlKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUywgRmFsc2UpKQor
CisKK2NsYXNzIEV4cGVjdGF0aW9uU3ludGF4VGVzdHMoQmFzZSk6CisgICAgZGVmIHRlc3RfbWlz
c2luZ19leHBlY3RhdGlvbihzZWxmKToKICAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIGV4
cGVjdGF0aW9uLgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBh
cnNlX2V4cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19t
b2RlPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJykKIAotICAgIGRlZiB0ZXN0X3N5bnRheF9pbnZhbGlkX29wdGlv
bihzZWxmKToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2NvbG9uKHNlbGYpOgorICAgICAgICAjIFRo
aXMgaXMgbWlzc2luZyB0aGUgbW9kaWZpZXJzIGFuZCB0aGUgJzonCiAgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAnQlVHX1RFU1QgRk9POiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBQQVNT
JykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCA9IFRFWFQnKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4X2ludmFsaWRfZXhwZWN0YXRpb24oc2Vs
Zik6Ci0gICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBleHBlY3RhdGlvbi4KLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
Rk9PJykKIAotICAgIGRlZiB0ZXN0X3N5bnRheF9taXNzaW5nX2J1Z2lkKHNlbGYpOgorY2xhc3Mg
U2VtYW50aWNUZXN0cyhCYXNlKToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2J1Z2lkKHNlbGYpOgog
ICAgICAgICAjIFRoaXMgc2hvdWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KICAgICAgICAgc2Vs
Zi5wYXJzZV9leHAoJ1NMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGxlbihzZWxmLl9leHAuX2V4
cGVjdGVkX2ZhaWx1cmVzLmdldF9ub25fZmF0YWxfZXJyb3JzKCkpLCAxKQogCi0gICAgZGVmIHRl
c3Rfc2VtYW50aWNfc2xvd19hbmRfdGltZW91dChzZWxmKToKKyAgICBkZWYgdGVzdF9zbG93X2Fu
ZF90aW1lb3V0KHNlbGYpOgogICAgICAgICAjIEEgdGVzdCBjYW5ub3QgYmUgU0xPVyBhbmQgZXhw
ZWN0ZWQgdG8gVElNRU9VVC4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwg
c2VsZi5wYXJzZV9leHAsCiAgICAgICAgICAgICAnQlVHX1RFU1QgU0xPVyA6IGZhaWx1cmVzL2V4
cGVjdGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQnKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNf
cmViYXNlbGluZShzZWxmKToKKyAgICBkZWYgdGVzdF9yZWJhc2VsaW5lKHNlbGYpOgogICAgICAg
ICAjIENhbid0IGxpbnQgYSBmaWxlIHcvICdSRUJBU0VMSU5FJyBpbiBpdC4KICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCiAgICAgICAgICAgICAn
QlVHX1RFU1QgUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQn
LAogICAgICAgICAgICAgaXNfbGludF9tb2RlPVRydWUpCiAKLSAgICBkZWYgdGVzdF9zZW1hbnRp
Y19kdXBsaWNhdGVzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKLUJV
R19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAotQlVHX1RFU1QgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIikKK0JVR19FWFAgOiBmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCitCVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gSU1BR0UiIiIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VF
cnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3Rh
dGlvbnMoKSwgIiIiCi1CVUdfVEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRF
WFQKLUJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCisg
ICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgb3ZlcnJpZGVzPSIiIgor
QlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHX09W
RVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIsICkKIAotICAg
IGRlZiB0ZXN0X3NlbWFudGljX21pc3NpbmdfZmlsZShzZWxmKToKKyAgICBkZWYgdGVzdF9taXNz
aW5nX2ZpbGUoc2VsZik6CiAgICAgICAgICMgVGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVy
cm9yLgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHX1RFU1QgOiBtaXNzaW5nX2ZpbGUuaHRt
bCA9IFRFWFQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgbGVuKHNl
bGYuX2V4cC5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X25vbl9mYXRhbF9lcnJvcnMoKSksIDEpCiAK
IAotICAgIGRlZiB0ZXN0X292ZXJyaWRlcyhzZWxmKToKLSAgICAgICAgc2VsZi5wYXJzZV9leHAo
c2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCksICIiIgotQlVHX09WRVJSSURFIDogZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgSU1BR0UpCitjbGFzcyBQcmVjZWRlbmNl
VGVzdHMoQmFzZSk6CisgICAgZGVmIHRlc3RfZmlsZV9vdmVyX2RpcmVjdG9yeShzZWxmKToKKyAg
ICAgICAgIyBUaGlzIHRlc3RzIGhhbmRsaW5nIHByZWNlZGVuY2Ugb2Ygc3BlY2lmaWMgbGluZXMg
b3ZlciBkaXJlY3RvcmllcworICAgICAgICAjIGFuZCB0ZXN0cyBleHBlY3RhdGlvbnMgY292ZXJp
bmcgZW50aXJlIGRpcmVjdG9yaWVzLgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdYIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHWCBXT05URklYIDogZmFpbHVyZXMv
ZXhwZWN0ZWQgPSBJTUFHRQorIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVY
VCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1s
JywgSU1BR0UpCiAKLSAgICBkZWYgdGVzdF9tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdChzZWxm
KToKKyAgICBkZWYgdGVzdF9hbWJpZ3VvdXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKK0JVR19URVNUIFJFTEVBU0UgOiBw
YXNzZXMvdGV4dC5odG1sID0gUEFTUworQlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9
IEZBSUwKKyIiIikKIAotICAgICAgICBkZWYgbWF0Y2godGVzdCwgcmVzdWx0LCBwaXhlbF90ZXN0
c19lbmFibGVkKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHAubWF0Y2hlc19hbl9leHBl
Y3RlZF9yZXN1bHQoCi0gICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCh0ZXN0KSwgcmVzdWx0
LCBwaXhlbF90ZXN0c19lbmFibGVkKQorICAgIGRlZiB0ZXN0X21vcmVfd2lucyhzZWxmKToKKyAg
ICAgICAgZXhwX3N0ciA9ICIiIgorQlVHX1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwg
PSBQQVNTCitCVUdfVEVTVCBNQUMgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBURVhUCisi
IiIKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRf
ZXhwKCdwYXNzZXMvdGV4dC5odG1sJywgVEVYVCkKIAotICAgICAgICBzZWxmLnBhcnNlX2V4cChz
ZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1h
dGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhU
LCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCcsIENSQVNILCBUcnVlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSht
YXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1
bS5odG1sJywgSU1BR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVj
a3N1bS5odG1sJywgUEFTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5o
dG1sJywgU0tJUCwgRmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nl
cy90ZXh0Lmh0bWwnLCBQQVNTLCBGYWxzZSkpCisgICAgZGVmIHRlc3Rfb3JkZXJfaW5fZmlsZV9k
b2VzX25vdF9tYXR0ZXIoc2VsZik6CisgICAgICAgIGV4cF9zdHIgPSAiIiIKK0JVR19URVNUIE1B
QyBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKK0JVR19URVNUIFJFTEVBU0UgOiBw
YXNzZXMvdGV4dC5odG1sID0gUEFTUworIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9z
dHIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgncGFzc2VzL3RleHQuaHRtbCcsIFRFWFQpCisK
KyAgICBkZWYgdGVzdF92ZXJzaW9uX3dpbnMoc2VsZik6CisgICAgICAgIGV4cF9zdHIgPSAiIiIK
K0JVR19URVNUIE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCitCVUdfVEVTVCBNQUMgTEVP
UEFSRCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBURVhUCisiIiIKKyAgICAgICAgc2VsZi5wYXJzZV9l
eHAoZXhwX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdwYXNzZXMvdGV4dC5odG1sJywg
VEVYVCkKKworICAgIGRlZiB0ZXN0X21hY3JvKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIi
CitCVUdfVEVTVCBNQUMgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUworQlVHX1RFU1QgTUFDLUxF
T1BBUkQgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAorIiIiCisgICAgICAgIHNlbGYucGFyc2Vf
ZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgncGFzc2VzL3RleHQuaHRtbCcs
IFRFWFQpCiAKIAogY2xhc3MgUmViYXNlbGluaW5nVGVzdChCYXNlKToKQEAgLTM0Niw1ICszNzQs
ODUgQEAgQlVHX1RFU1QgUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IFRFWFQKICAgICAgICAgICAgICdcblxuJykKIAogCitjbGFzcyBNb2RpZmllclRlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHBvcnRfb2JqID0g
cG9ydC5nZXQoJ3Rlc3QnLCBOb25lKQorICAgICAgICBzZWxmLmNvbmZpZyA9IHBvcnRfb2JqLnRl
c3RfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYubWF0Y2hlciA9IE1vZGlmaWVyTWF0Y2hl
cihzZWxmLmNvbmZpZykKKworICAgIGRlZiBtYXRjaChzZWxmLCBtb2RpZmllcnMsIGV4cGVjdGVk
X251bV9tYXRjaGVzPS0xLCB2YWx1ZXM9Tm9uZSwgbnVtX2Vycm9ycz0wKToKKyAgICAgICAgbWF0
Y2hlciA9IHNlbGYubWF0Y2hlcgorICAgICAgICBpZiB2YWx1ZXM6CisgICAgICAgICAgICBtYXRj
aGVyID0gTW9kaWZpZXJNYXRjaGVyKHNlbGYuRmFrZVRlc3RDb25maWd1cmF0aW9uKHZhbHVlcykp
CisgICAgICAgIG1hdGNoX3Jlc3VsdCA9IG1hdGNoZXIubWF0Y2gobW9kaWZpZXJzKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYXRjaF9yZXN1bHQud2FybmluZ3MpLCAwKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYXRjaF9yZXN1bHQuZXJyb3JzKSwgbnVtX2Vycm9ycykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRjaF9yZXN1bHQubnVtX21hdGNoZXMsIGV4cGVj
dGVkX251bV9tYXRjaGVzLAorICAgICAgICAgICAgICdtYXRjaCglcywgJXMpIHJldHVybmVkIC0+
ICVkLCBleHBlY3RlZCAlZCcgJQorICAgICAgICAgICAgIChtb2RpZmllcnMsIHN0cihzZWxmLmNv
bmZpZy52YWx1ZXMoKSksCisgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdC5udW1fbWF0Y2hlcywg
ZXhwZWN0ZWRfbnVtX21hdGNoZXMpKQorCisgICAgZGVmIHRlc3RfYmFkX21hdGNoX21vZGlmaWVy
KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnZm9vJ10sIG51bV9lcnJvcnM9MSkKKworICAg
IGRlZiB0ZXN0X25vbmUoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goW10sIDApCisKKyAgICBk
ZWYgdGVzdF9vbmUoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydsZW9wYXJkJ10sIDEpCisg
ICAgICAgIHNlbGYubWF0Y2goWydtYWMnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3JlbGVh
c2UnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ2NwdSddLCAxKQorICAgICAgICBzZWxmLm1h
dGNoKFsneDg2J10sIDEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCddLCAtMSkKKyAgICAgICAg
c2VsZi5tYXRjaChbJ2dwdSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ2RlYnVnJ10sIC0x
KQorCisgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFy
ZCcsICdyZWxlYXNlJ10sIDIpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdyZWxlYXNlJ10s
IC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZSddLCAtMSkKKyAgICAgICAg
c2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJkJywgJ2xlb3BhcmQnXSwgMSkKKworICAgIGRlZiB0ZXN0
X3RocmVlKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnLCAnbGVvcGFy
ZCcsICdyZWxlYXNlJ10sIDIpCisgICAgICAgIHNlbGYubWF0Y2goWydsZW9wYXJkJywgJ2RlYnVn
JywgJ3g4NiddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnLCAncmVsZWFzZScs
ICd4ODYnXSwgMykKKyAgICAgICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnLCAnY3B1JywgJ3JlbGVh
c2UnXSwgMykKKworICAgIGRlZiB0ZXN0X2ZvdXIoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2go
WydsZW9wYXJkJywgJ3JlbGVhc2UnLCAnY3B1JywgJ3g4NiddLCA0KQorICAgICAgICBzZWxmLm1h
dGNoKFsnc25vd2xlb3BhcmQnLCAnbGVvcGFyZCcsICdyZWxlYXNlJywgJ2NwdSddLCAzKQorICAg
ICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnLCAnbGVvcGFyZCcsICdkZWJ1ZycsICdjcHUn
XSwgLTEpCisKKyAgICBkZWYgdGVzdF9jYXNlX2luc2Vuc2l0aXZpdHkoc2VsZik6CisgICAgICAg
IHNlbGYubWF0Y2goWydNYWMnXSwgbnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxmLm1hdGNoKFsn
TUFDJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ21hYyddLCAxKQorCisg
ICAgZGVmIHRlc3RfZHVwbGljYXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ3JlbGVh
c2UnLCAncmVsZWFzZSddLCBudW1fZXJyb3JzPTEpCisgICAgICAgIHNlbGYubWF0Y2goWydtYWMt
bGVvcGFyZCcsICdsZW9wYXJkJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChb
J3hwJywgJ3JlbGVhc2UnLCAneHAnLCAncmVsZWFzZSddLCBudW1fZXJyb3JzPTIpCisgICAgICAg
IHNlbGYubWF0Y2goWydyZWJhc2VsaW5lJywgJ3JlYmFzZWxpbmUnXSwgbnVtX2Vycm9ycz0xKQor
CisgICAgZGVmIHRlc3RfdW5rbm93bl9vcHRpb24oc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2go
Wyd2bXMnXSwgbnVtX2Vycm9ycz0xKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2J1Z3Moc2Vs
Zik6CisgICAgICAgICMgQlVHKiByZWdleGVzIGNhbiBhcHBlYXIgbXVsdGlwbGUgdGltZXMuCisg
ICAgICAgIHNlbGYubWF0Y2goWydidWdmb28nLCAnYnVnYmFyJ10sIDApCisKKyAgICBkZWYgdGVz
dF9pbnZhbGlkX2NvbWJpbmF0aW9ucyhzZWxmKToKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgcHJvYmFibHkgcmFpc2UgYW4gZXJyb3IgaW5zdGVhZCBvZiBOT19NQVRDSC4KKyAgICAgICAg
c2VsZi5tYXRjaChbJ21hYycsICd4cCddLCBudW1fZXJyb3JzPTApCisKKyAgICBkZWYgdGVzdF9y
ZWdleGVzX2FyZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnYnVnMTIzeHkn
LCAncmViYXNlbGluZScsICd3b250Zml4JywgJ3Nsb3cnLCAnc2tpcCddLCAwKQorCisgICAgZGVm
IHRlc3Rfbm9uZV9pc19pbnZhbGlkKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnbm9uZSdd
LCBudW1fZXJyb3JzPTEpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0
dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCBiYzVhOWFhM2U0ZDI1NWMxZjc0OTIxMjlkMDRj
ZDI2NjRjODc2MjA4Li42NmZkNzYzNzAyY2VmNzMwNGE5ZjVkMTYxMzhhYjNkOWJiYjE4MjVmIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5CkBAIC0xMjEsNiArMTIxLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
ICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgnY29uZmlndXJhdGlvbicsIE5vbmUpCiAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiBpcyBOb25lOgogICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID0gc2VsZi5kZWZhdWx0X2NvbmZpZ3VyYXRpb24o
KQorICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24gPSBOb25lCiAKICAgICBkZWYgZGVm
YXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVy
IG9mIER1bXBSZW5kZXJUcmVlIGluc3RhbmNlcyB0byB1c2UgZm9yIHRoaXMKQEAgLTU3Myw2ICs1
NzQsMTkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBpZiBzZWxmLl9odHRwX2xvY2s6
CiAgICAgICAgICAgICBzZWxmLl9odHRwX2xvY2suY2xlYW51cF9odHRwX2xvY2soKQogCisgICAg
IworICAgICMgVEVTVCBFWFBFQ1RBVElPTi1SRUxBVEVEIE1FVEhPRFMKKyAgICAjCisKKyAgICBk
ZWYgdGVzdF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBjdXJy
ZW50IFRlc3RDb25maWd1cmF0aW9uIGZvciB0aGUgcG9ydC4iIiIKKyAgICAgICAgaWYgbm90IHNl
bGYuX3Rlc3RfY29uZmlndXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfY29uZmlndXJh
dGlvbiA9IFRlc3RDb25maWd1cmF0aW9uKHNlbGYpCisgICAgICAgIHJldHVybiBzZWxmLl90ZXN0
X2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBhbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9jb25maWd1cmF0aW9uKCkuYWxsX3Rlc3RfY29uZmln
dXJhdGlvbnMoKQorCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICAi
IiJSZXR1cm5zIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhpcyBwb3J0LgogCkBAIC04NTks
MyArODczLDY4IEBAIGNsYXNzIERyaXZlcjoKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdEcml2ZXIuc3RvcCcpCisKKworY2xhc3MgVGVz
dENvbmZpZ3VyYXRpb24ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydD1Ob25l
LCBvcz1Ob25lLCB2ZXJzaW9uPU5vbmUsIGFyY2hpdGVjdHVyZT1Ob25lLAorICAgICAgICAgICAg
ICAgICBidWlsZF90eXBlPU5vbmUsIGdyYXBoaWNzX3R5cGU9Tm9uZSk6CisKKyAgICAgICAgIyBG
SVhNRTogV2UgY2FuIGdldCB0aGUgTy9TIGFuZCB2ZXJzaW9uIGZyb20gdGVzdF9wbGF0Zm9ybV9u
YW1lKCkKKyAgICAgICAgIyBhbmQgdmVyc2lvbigpIGZvciBub3csIGJ1dCB0aG9zZSBzaG91bGQg
Z28gYXdheSBhbmQgYmUgY2xlYW5lZCB1cAorICAgICAgICAjIHdpdGggbW9yZSBnZW5lcmljIG1l
dGhvZHMgbGlrZSBvcGVyYXRpb25fc3lzdGVtKCkgYW5kIG9zX3ZlcnNpb24oKQorICAgICAgICAj
IG9yIHNvbWV0aGluZy4gTm90ZSB0aGF0IHdlIG5lZWQgdG8gc3RyaXAgdGhlIGxlYWRpbmcgJy0n
IG9mZiB0aGUKKyAgICAgICAgIyB2ZXJzaW9uIHN0cmluZyBpZiBpdCBpcyBwcmVzZW50LgorICAg
ICAgICBpZiBwb3J0OgorICAgICAgICAgICAgcG9ydF92ZXJzaW9uID0gcG9ydC52ZXJzaW9uKCkK
KyAgICAgICAgc2VsZi5vcyA9IG9zIG9yIHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCkucmVwbGFj
ZShwb3J0X3ZlcnNpb24sICcnKQorICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uIG9yIHBv
cnRfdmVyc2lvblsxOl0KKyAgICAgICAgc2VsZi5hcmNoaXRlY3R1cmUgPSBhcmNoaXRlY3R1cmUg
b3IgJ3g4NicKKyAgICAgICAgc2VsZi5idWlsZF90eXBlID0gYnVpbGRfdHlwZSBvciBwb3J0Ll9v
cHRpb25zLmNvbmZpZ3VyYXRpb24ubG93ZXIoKQorICAgICAgICBzZWxmLmdyYXBoaWNzX3R5cGUg
PSBncmFwaGljc190eXBlIG9yICdjcHUnCisKKyAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl9fZGljdF9fLml0ZW1zKCkKKworICAgIGRlZiBrZXlzKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy5rZXlzKCkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYp
OgorICAgICAgICByZXR1cm4gKCI8JSh2ZXJzaW9uKXMsICUoYnVpbGRfdHlwZSlzLCAlKGdyYXBo
aWNzX3R5cGUpcz4iICUKKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fKQorCisgICAgZGVm
IF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIlRlc3RDb25maWcob3M9JyUob3Mpcycs
IHZlcnNpb249JyUodmVyc2lvbilzJywgYXJjaGl0ZWN0dXJlPSclKGFyY2hpdGVjdHVyZSlzJywg
YnVpbGRfdHlwZT0nJShidWlsZF90eXBlKXMnLCBncmFwaGljc190eXBlPSclKGdyYXBoaWNzX3R5
cGUpcycpIiAlIHNlbGYuX19kaWN0X18KKworICAgIGRlZiB2YWx1ZXMoc2VsZik6CisgICAgICAg
ICIiIlJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gdmFsdWVzIG9mIHRoaXMgaW5zdGFuY2UgYXMg
YSB0dXBsZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18udmFsdWVzKCkKKworICAg
IGRlZiBhbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBh
IHNlcXVlbmNlIG9mIHRoZSBUZXN0Q29uZmlndXJhdGlvbnMgdGhlIHBvcnQgc3VwcG9ydHMuIiIi
CisgICAgICAgICMgQnkgZGVmYXVsdCwgd2UgYXNzdW1lIHdlIHdhbnQgdG8gdGVzdCBldmVyeSBn
cmFwaGljcyB0eXBlIGluCisgICAgICAgICMgZXZlcnkgY29uZmlndXJhdGlvbiBvbiBldmVyeSBz
eXN0ZW0uCisgICAgICAgIHRlc3RfY29uZmlndXJhdGlvbnMgPSBbXQorICAgICAgICBmb3Igc3lz
dGVtIGluIHNlbGYuYWxsX3N5c3RlbXMoKToKKyAgICAgICAgICAgIGZvciBidWlsZF90eXBlIGlu
IHNlbGYuYWxsX2J1aWxkX3R5cGVzKCk6CisgICAgICAgICAgICAgICAgZm9yIGdyYXBoaWNzX3R5
cGUgaW4gc2VsZi5hbGxfZ3JhcGhpY3NfdHlwZXMoKToKKyAgICAgICAgICAgICAgICAgICAgdGVz
dF9jb25maWd1cmF0aW9ucy5hcHBlbmQoVGVzdENvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICAg
ICAgICAgICAgICBvcz1zeXN0ZW1bMF0sCisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9u
PXN5c3RlbVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZT1zeXN0ZW1b
Ml0sCisgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF90eXBlPWJ1aWxkX3R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICBncmFwaGljc190eXBlPWdyYXBoaWNzX3R5cGUpKQorICAgICAg
ICByZXR1cm4gdGVzdF9jb25maWd1cmF0aW9ucworCisgICAgZGVmIGFsbF9zeXN0ZW1zKHNlbGYp
OgorICAgICAgICByZXR1cm4gKCgnbWFjJywgJ2xlb3BhcmQnLCAneDg2JyksCisgICAgICAgICAg
ICAgICAgKCdtYWMnLCAnc25vd2xlb3BhcmQnLCAneDg2JyksCisgICAgICAgICAgICAgICAgKCd3
aW4nLCAneHAnLCAneDg2JyksCisgICAgICAgICAgICAgICAgKCd3aW4nLCAndmlzdGEnLCAneDg2
JyksCisgICAgICAgICAgICAgICAgKCd3aW4nLCAnd2luNycsICd4ODYnKSwKKyAgICAgICAgICAg
ICAgICAoJ2xpbnV4JywgJ2hhcmR5JywgJ3g4NicpKQorCisgICAgZGVmIGFsbF9idWlsZF90eXBl
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgnZGVidWcnLCAncmVsZWFzZScpCisKKyAgICBkZWYg
YWxsX2dyYXBoaWNzX3R5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gKCdjcHUnLCAnZ3B1JykK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW0ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDY0OGIyYzllMjc3YWIxMDMxYzkyYzJkNjk0NDJhZTgy
MTdhMGEyZjMuLmM0NjVkOGJhZDA2NTgyYTEzNDg4ZmY1MjRlODI4ZTlmODMxMzdmYzYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bS5weQpAQCAtMjc0LDggKzI3NCw4IEBAIGNsYXNzIENocm9taXVtUG9ydChi
YXNlLlBvcnQpOgogICAgICAgICAgICAgYWxsX3Rlc3RfZmlsZXMudXBkYXRlKGV4dHJhX3Rlc3Rf
ZmlsZXMpCiAKICAgICAgICAgZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4
cGVjdGF0aW9ucygKLSAgICAgICAgICAgIHNlbGYsIGFsbF90ZXN0X2ZpbGVzLCBleHBlY3RhdGlv
bnNfc3RyLCB0ZXN0X3BsYXRmb3JtX25hbWUsCi0gICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBp
c19saW50X21vZGU9RmFsc2UsIG92ZXJyaWRlcz1vdmVycmlkZXNfc3RyKQorICAgICAgICAgICAg
c2VsZiwgYWxsX3Rlc3RfZmlsZXMsIGV4cGVjdGF0aW9uc19zdHIsIHNlbGYudGVzdF9jb25maWd1
cmF0aW9uKCksCisgICAgICAgICAgICBpc19saW50X21vZGU9RmFsc2UsIG92ZXJyaWRlcz1vdmVy
cmlkZXNfc3RyKQogICAgICAgICB0ZXN0c19kaXIgPSBzZWxmLmxheW91dF90ZXN0c19kaXIoKQog
ICAgICAgICByZXR1cm4gW3NlbGYucmVsYXRpdmVfdGVzdF9maWxlbmFtZSh0ZXN0KQogICAgICAg
ICAgICAgICAgIGZvciB0ZXN0IGluIGV4cGVjdGF0aW9ucy5nZXRfdGVzdHNfd2l0aF9yZXN1bHRf
dHlwZSh0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQKV0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5w
eQppbmRleCBjNGIzNmFjZDkwNzlmZDJmYmU5MDkwMTIwMmQ1ZjljMDI1ZTM4N2U1Li4wNGVjYTYz
MDI4MzY4Yjg4Y2Q3NjViMmJiYTVjM2NiZDAwMjY0NWVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rl
c3RjYXNlLnB5CkBAIC05NSwzICs5NSwxNSBAQCBjbGFzcyBQb3J0VGVzdENhc2UodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHBvcnQuc3RhcnRfd2Vic29j
a2V0X3NlcnZlcigpCiAgICAgICAgIHBvcnQuc3RvcF93ZWJzb2NrZXRfc2VydmVyKCkKKworICAg
IGRlZiB0ZXN0X3Rlc3RfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgcG9ydCA9IHNlbGYu
bWFrZV9wb3J0KCkKKyAgICAgICAgaWYgbm90IHBvcnQ6CisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvcnQudGVzdF9jb25maWd1cmF0aW9uKCkpCisKKyAgICBk
ZWYgdGVzdF9hbGxfdGVzdF9jb25maWd1cmF0aW9ucyhzZWxmKToKKyAgICAgICAgcG9ydCA9IHNl
bGYubWFrZV9wb3J0KCkKKyAgICAgICAgaWYgbm90IHBvcnQ6CisgICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihwb3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
KCkpID4gMCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weQppbmRleCA5ZTc5NjY3OWZkMmY3NjQyYWNmZDAxODMyYTQ2OGE3
NDFhZTQ4NmU0Li5lZGY3NTE5MTkwMjI5Njc0NmI1ZWI5OGQxNmZkYTUzNzQ4NmNiMWY4IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5CkBAIC0xMzgsNiArMTM4LDkgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJldHVybiBU
cnVlCiAKKyAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICByZXR1
cm4gJ1JlbGVhc2UnCisKICAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50
cywgYWN0dWFsX2NvbnRlbnRzLAogICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWU9Tm9u
ZSk6CiAgICAgICAgIGRpZmZlZCA9IGFjdHVhbF9jb250ZW50cyAhPSBleHBlY3RlZF9jb250ZW50
cwpAQCAtMjkwLDcgKzI5Myw3IEBAIFdPTlRGSVggU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2V4
Y2VwdGlvbi5odG1sID0gQ1JBU0gKICAgICAgICAgcmV0dXJuIHRlc3RfcGxhdGZvcm1fbmFtZQog
CiAgICAgZGVmIHZlcnNpb24oc2VsZik6Ci0gICAgICAgIHJldHVybiAnJworICAgICAgICByZXR1
cm4gJy1sZW9wYXJkJwogCiAKIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQppbmRleCA1
NWM0NTU4ZmRkYTdiYzFjZDE2Zjk5N2Q2ZWU1NTU1NTViZGZmZmZlLi5hYzY1ODQyNTA4M2Y4Nzk1
NGZlNWU0MTIzNGEzNzJiOWVlZWUxMDEyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQpAQCAtMTgzLDggKzE4Myw3IEBAIGNsYXNzIFJl
YmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhw
ZWN0YXRpb25zKHNlbGYuX3JlYmFzZWxpbmVfcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25zX3N0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGxhdGZvcm0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQu
dGVzdF9jb25maWd1cmF0aW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZhbHNlKQogICAgICAgICBzZWxmLl9zY20gPSBzY20uZGVmYXVsdF9zY20o
KQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCA1MWFkZjY3ZmNhMjlkOWFiMzEwOTMx
OTY1MDdlZGMzNzZmZDJhNTgwLi42NDYyNDk5NGNjZGQ2NDAzZjY4NmZjNzc5ODI5MjM4YjE4ZWRi
MzVmIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTI4NSwyMSArMjg1LDEzIEBAIGNs
YXNzIFRlc3RSdW5uZXI6CiAKICAgICBkZWYgbGludChzZWxmKToKICAgICAgICAgbGludF9mYWls
ZWQgPSBGYWxzZQotCi0gICAgICAgICMgQ3JlYXRpbmcgdGhlIGV4cGVjYXRpb25zIGZvciBlYWNo
IHBsYXRmb3JtL2NvbmZpZ3VyYXRpb24gcGFpciBkb2VzCi0gICAgICAgICMgYWxsIHRoZSB0ZXN0
IGxpc3QgcGFyc2luZyBhbmQgZW5zdXJlcyBpdCdzIGNvcnJlY3Qgc3ludGF4IChlLmcuIG5vCi0g
ICAgICAgICMgZHVwZXMpLgotICAgICAgICBmb3IgcGxhdGZvcm1fbmFtZSBpbiBzZWxmLl9wb3J0
LnRlc3RfcGxhdGZvcm1fbmFtZXMoKToKKyAgICAgICAgZm9yIHRlc3RfY29uZmlndXJhdGlvbiBp
biBzZWxmLl9wb3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCk6CiAgICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm1fbmFtZSwg
aXNfZGVidWdfbW9kZT1UcnVlKQotICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25z
LlBhcnNlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCi0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZv
cm1fbmFtZSwgaXNfZGVidWdfbW9kZT1GYWxzZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxpbnRf
ZXhwZWN0YXRpb25zKHRlc3RfY29uZmlndXJhdGlvbikKICAgICAgICAgICAgIGV4Y2VwdCB0ZXN0
X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yOgogICAgICAgICAgICAgICAgIGxpbnRfZmFpbGVkID0g
VHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIpCiAKLSAgICAgICAg
c2VsZi5fcHJpbnRlci53cml0ZSgiIikKICAgICAgICAgaWYgbGludF9mYWlsZWQ6CiAgICAgICAg
ICAgICBfbG9nLmVycm9yKCJMaW50IGZhaWxlZC4iKQogICAgICAgICAgICAgcmV0dXJuIC0xCkBA
IC0zMDcsMjMgKzI5OSwyOCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICBfbG9nLmluZm8o
IkxpbnQgc3VjY2VlZGVkLiIpCiAgICAgICAgIHJldHVybiAwCiAKLSAgICBkZWYgcGFyc2VfZXhw
ZWN0YXRpb25zKHNlbGYsIHRlc3RfcGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZSk6CisgICAg
ZGVmIHBhcnNlX2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIiIiUGFyc2UgdGhlIGV4cGVj
dGF0aW9ucyBmcm9tIHRoZSB0ZXN0X2xpc3QgZmlsZXMgYW5kIHJldHVybiBhIGRhdGEKICAgICAg
ICAgc3RydWN0dXJlIGhvbGRpbmcgdGhlbS4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0ZXN0X2xp
c3QgZmlsZXMgaGF2ZQogICAgICAgICBpbnZhbGlkIHN5bnRheC4iIiIKLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVzID0gTm9u
ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdF9maWxlcyA9IHNlbGYuX3Rlc3RfZmls
ZXMKLQotICAgICAgICBleHBlY3RhdGlvbnNfc3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0
aW9ucygpCi0gICAgICAgIG92ZXJyaWRlc19zdHIgPSBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRp
b25zX292ZXJyaWRlcygpCisgICAgICAgIHBvcnQgPSBzZWxmLl9wb3J0CiAgICAgICAgIHNlbGYu
X2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAg
ICAgICAgICBzZWxmLl9wb3J0LCB0ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNfc3RyLCB0ZXN0X3Bs
YXRmb3JtX25hbWUsCi0gICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBzZWxmLl9vcHRpb25zLmxp
bnRfdGVzdF9maWxlcywKLSAgICAgICAgICAgIG92ZXJyaWRlcz1vdmVycmlkZXNfc3RyKQotICAg
ICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zCi0KKyAgICAgICAgICAgIHBvcnQsCisgICAg
ICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0
aW9ucygpLAorICAgICAgICAgICAgcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKKyAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgcG9ydC50ZXN0
X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKKworICAgIGRlZiBsaW50X2V4cGVjdGF0aW9ucyhz
ZWxmLCBjb25maWcpOgorICAgICAgICBwb3J0ID0gc2VsZi5fcG9ydAorICAgICAgICB0ZXN0X2V4
cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAorICAgICAgICAgICAgcG9ydCwKKyAgICAgICAg
ICAgIE5vbmUsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zKCksCisgICAgICAg
ICAgICBjb25maWcsCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywK
KyAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkpCiAKICAgICBk
ZWYgcHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KHNlbGYpOgogICAgICAgICAiIiJDcmVh
dGUgYXBwcm9wcmlhdGUgc3Vic2V0cyBvZiB0ZXN0IGxpc3RzIGFuZCByZXR1cm5zIGEKQEAgLTQz
MCw5ICs0MjcsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgc2VsZi5fdGVzdF9m
aWxlc19saXN0ID0gZmlsZXMgKyBza2lwX2NodW5rX2xpc3QKICAgICAgICAgICAgIHNlbGYuX3Rl
c3RfZmlsZXMgPSBzZXQoc2VsZi5fdGVzdF9maWxlc19saXN0KQogCi0gICAgICAgICAgICBzZWxm
Ll9leHBlY3RhdGlvbnMgPSBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucygKLSAgICAgICAgICAgICAg
ICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMuY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKQorICAgICAgICAgICAgc2VsZi5wYXJz
ZV9leHBlY3RhdGlvbnMoKQogCiAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KGZp
bGVzKQogICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMKQEAgLTEzMTks
MTEgKzEzMTQsMTEgQEAgZGVmIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCByZWd1bGFyX291dHB1
dD1zeXMuc3RkZXJyLAogICAgICAgICAgICAgICAgIHJldHVybiAtMQogICAgICAgICAgICAgcmFp
c2UKIAotICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiUGFyc2luZyBleHBlY3RhdGlvbnMg
Li4uIikKICAgICAgICAgaWYgb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6CiAgICAgICAgICAgICBy
ZXR1cm4gdGVzdF9ydW5uZXIubGludCgpCi0gICAgICAgIHRlc3RfcnVubmVyLnBhcnNlX2V4cGVj
dGF0aW9ucyhwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9ucy5jb25maWd1cmF0aW9uID09ICdEZWJ1ZycpCisKKyAg
ICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25zIC4uLiIpCisg
ICAgICAgIHRlc3RfcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgcHJpbnRl
ci5wcmludF91cGRhdGUoIkNoZWNraW5nIGJ1aWxkIC4uLiIpCiAgICAgICAgIGlmIG5vdCBwb3J0
LmNoZWNrX2J1aWxkKHRlc3RfcnVubmVyLm5lZWRzX2h0dHAoKSk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77297</attachid>
            <date>2010-12-22 19:14:30 -0800</date>
            <delta_ts>2011-01-10 13:57:24 -0800</delta_ts>
            <desc>rebase to head post webkittools -&gt; tools rename</desc>
            <filename>bug-51222-20101222191429.patch</filename>
            <type>text/plain</type>
            <size>69041</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NWFh
YTcwZjc4Mzg2ZTQwYjc3NzBiZDYzMzllOWJmYzA3YjM3Y2I1Li5jMDY4NzgyYWNiZGE0ZmI3OTYw
NGFmZjdkN2E0NWZmNmJkOTkyMGRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTAtMTItMTYgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9kaWZpZXIgcGFyc2luZyBjb2RlIGluIHRl
c3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdpbGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0
J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMKKyAgICAgICAgb3IgZWFzaWx5IGFk
ZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQVSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAg
ICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQgdnMuIDY0LWJpdCBkaWZmZXJlbmNlcyku
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgdHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFk
ZCBpbiBtb3JlIGdlbmVyaWMKKyAgICAgICAgc3VwcG9ydCBhbmQgdGhlbiBlbGltaW5hdGUgdGhl
IEdQVS1zcGVjaWZpYyB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBmaWxlcyBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBzdGFuZGFsb25lIG9iamVjdHMgZm9y
IGhhbmRsaW5nIG1vZGlmaWVycy4gVGhlCisgICAgICAgIHJ1bGVzIGZvciBpbnRlcnByZXRpbmcg
bW9kaWZpZXJzLCBwcmVjZWRlbmNlLCBhbmQgY29uZmxpY3RzIGFyZQorICAgICAgICBnaXZlbiBp
biB0aGUgZG9jc3RyaW5nIHRvIHRoZSBNb2RpZmllck1hdGNoZXIgY2xhc3MsIHdoaWNoCisgICAg
ICAgIHJldHVybnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBvYmplY3RzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgcm91dGluZXMgdG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFu
ZCBhCisgICAgICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVlcyBpbiB0aGUgYmFzZSBvYmplY3QsIGlu
IG9yZGVyIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRl
c3QgcnVuLiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFzc2VkCisgICAgICAgIHRvIHRoZSBleHBl
Y3RhdGlvbiBwYXJzZXIuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gY2xlYW4gdXAgdGhlCisgICAg
ICAgIGxvZ2ljIHVzZWQgdG8gbGludCBhbGwgb2YgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
cyBpbiBhCisgICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmlsZS4KKworICAg
ICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIG1lcmdlIGluIHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0
YXRpb25zIGZpbGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMjIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHk6CisKIDIwMTAtMTItMjIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
cHJpbnRpbmdfdW5pdHRlc3QucHkKaW5kZXggMGU0NzhjOGRjNDNmZGRjNGVhNTdlYjc5YTVkZjg0
YmE5YjQ1NDk4NS4uZGY2OWE5MDE0YmMyMThlNmI0NDc4ZWVjYjhmNmYxMzI0N2NmNjYxNiAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkKQEAgLTMxLDcgKzMx
LDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBwZGIKIGltcG9ydCBz
eXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGxvZ2dpbmcKQEAgLTE0OCw3ICsxNDcsNyBAQCBj
bGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAg
ICAgIHRlc3QgaW4gdGVzdHNdCiAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRp
b25zLlRlc3RFeHBlY3RhdGlvbnMoCiAgICAgICAgICAgICBzZWxmLl9wb3J0LCB0ZXN0X3BhdGhz
LCBleHBlY3RhdGlvbnNfc3RyLAotICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0X3BsYXRmb3Jt
X25hbWUoKSwgaXNfZGVidWdfbW9kZT1GYWxzZSwKKyAgICAgICAgICAgIHNlbGYuX3BvcnQudGVz
dF9jb25maWd1cmF0aW9uKCksCiAgICAgICAgICAgICBpc19saW50X21vZGU9RmFsc2UpCiAKICAg
ICAgICAgcnMgPSByZXN1bHRfc3VtbWFyeS5SZXN1bHRTdW1tYXJ5KGV4cGVjdGF0aW9ucywgdGVz
dF9wYXRocykKQEAgLTM2Nyw3ICszNjYsNyBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3ByaW50X3Byb2dyZXNzX19kZXRhaWxlZChzZWxmKToK
ICAgICAgICAgdGVzdHMgPSBbJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCAnZmFpbHVyZXMvZXhwZWN0ZWQv
dGltZW91dC5odG1sJywKICAgICAgICAgICAgICAgICAgJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNo
Lmh0bWwnXQotICAgICAgICBleHBlY3RhdGlvbnMgPSAnZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91
dC5odG1sID0gVElNRU9VVCcKKyAgICAgICAgZXhwZWN0YXRpb25zID0gJ0JVR1ggOiBmYWlsdXJl
cy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUJwogCiAgICAgICAgICMgZmlyc3QsIHRl
c3QgdGhhdCBpdCBpcyBkaXNhYmxlZCBwcm9wZXJseQogICAgICAgICAjIHNob3VsZCBzdGlsbCBw
cmludCBvbmUtbGluZS1wcm9ncmVzcwpAQCAtNTczLDggKzU3Miw4IEBAIGNsYXNzICBUZXN0cHJp
bnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3V0LmVt
cHR5KCkpCiAKICAgICAgICAgZXhwZWN0YXRpb25zID0gIiIiCi1mYWlsdXJlcy9leHBlY3RlZC9j
cmFzaC5odG1sID0gQ1JBU0gKLWZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVP
VVQKK0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sID0gQ1JBU0gKK0JVR1ggOiBm
YWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUCiAiIiIKICAgICAgICAgZXJy
LnJlc2V0KCkKICAgICAgICAgb3V0LnJlc2V0KCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9leHBlY3RhdGlvbnMucHkKaW5kZXggODY0NWZjMWRjMTg3ZDZkYzA2Y2ZmZWZjN2U0Yjk4NjZi
NGU1MGU3Yy4uZGM4NTZkODkwNGVlZTI2MGQzYjU3ODY4ZGQyMjYyZWZkNzEyM2M0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTMxLDYgKzMxLDcg
QEAKIGZvciBsYXlvdXQgdGVzdHMuCiAiIiIKIAoraW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxv
Z2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC04NiwxOCArODcsMTYgQEAgZGVmIHJlbW92
ZV9waXhlbF9mYWlsdXJlcyhleHBlY3RlZF9yZXN1bHRzKToKIGNsYXNzIFRlc3RFeHBlY3RhdGlv
bnM6CiAgICAgVEVTVF9MSVNUID0gInRlc3RfZXhwZWN0YXRpb25zLnR4dCIKIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwb3J0LCB0ZXN0cywgZXhwZWN0YXRpb25zLCB0ZXN0X3BsYXRmb3JtX25h
bWUsCi0gICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGUsIGlzX2xpbnRfbW9kZSwgb3ZlcnJp
ZGVzPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB0ZXN0cywgZXhwZWN0YXRp
b25zLCB0ZXN0X2NvbmZpZywKKyAgICAgICAgICAgICAgICAgaXNfbGludF9tb2RlLCBvdmVycmlk
ZXM9Tm9uZSk6CiAgICAgICAgICIiIkxvYWRzIGFuZCBwYXJzZXMgdGhlIHRlc3QgZXhwZWN0YXRp
b25zIGdpdmVuIGluIHRoZSBzdHJpbmcuCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBwb3J0
OiBoYW5kbGUgdG8gb2JqZWN0IGNvbnRhaW5pbmcgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25h
bGl0eQogICAgICAgICAgICAgdGVzdDogbGlzdCBvZiBhbGwgb2YgdGhlIHRlc3QgZmlsZXMKICAg
ICAgICAgICAgIGV4cGVjdGF0aW9uczogdGVzdCBleHBlY3RhdGlvbnMgYXMgYSBzdHJpbmcKLSAg
ICAgICAgICAgIHRlc3RfcGxhdGZvcm1fbmFtZTogbmFtZSBvZiB0aGUgcGxhdGZvcm0gdG8gbWF0
Y2ggZXhwZWN0YXRpb25zCi0gICAgICAgICAgICAgICAgYWdhaW5zdC4gTm90ZSB0aGF0IHRoaXMg
bWF5IGJlIGRpZmZlcmVudCB0aGFuCi0gICAgICAgICAgICAgICAgcG9ydC50ZXN0X3BsYXRmb3Jt
X25hbWUoKSB3aGVuIGlzX2xpbnRfbW9kZSBpcyBUcnVlLgotICAgICAgICAgICAgaXNfZGVidWdf
bW9kZTogd2hldGhlciB0byB1c2UgdGhlIERFQlVHIG9yIFJFTEVBU0UgbW9kaWZpZXJzCi0gICAg
ICAgICAgICAgICAgaW4gdGhlIGV4cGVjdGF0aW9ucworICAgICAgICAgICAgdGVzdF9jb25maWc6
IHNwZWNpZmljIHZhbHVlcyB0byBjaGVjayBhZ2FpbnN0IHdoZW4KKyAgICAgICAgICAgICAgICBw
YXJzaW5nIHRoZSBmaWxlICh1c3VhbGx5IHBvcnQudGVzdF9jb25maWcoKSwKKyAgICAgICAgICAg
ICAgICBidXQgbWF5IGJlIGRpZmZlcmVudCB3aGVuIGxpbnRpbmcgb3IgZG9pbmcgb3RoZXIgdGhp
bmdzKS4KICAgICAgICAgICAgIGlzX2xpbnRfbW9kZTogSWYgVHJ1ZSwganVzdCBwYXJzZSB0aGUg
ZXhwZWN0YXRpb25zIHN0cmluZwogICAgICAgICAgICAgICAgIGxvb2tpbmcgZm9yIGVycm9ycy4K
ICAgICAgICAgICAgIG92ZXJyaWRlczogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dl
ZCB0byBvdmVycmlkZSBhbnkKQEAgLTEwNiw3ICsxMDUsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRp
b25zOgogICAgICAgICAgICAgICAgIGFuZCBkb3duc3RyZWFtIGV4cGVjdGF0aW9ucykuCiAgICAg
ICAgICIiIgogICAgICAgICBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcyA9IFRlc3RFeHBlY3RhdGlv
bnNGaWxlKHBvcnQsIGV4cGVjdGF0aW9ucywKLSAgICAgICAgICAgIHRlc3RzLCB0ZXN0X3BsYXRm
b3JtX25hbWUsIGlzX2RlYnVnX21vZGUsIGlzX2xpbnRfbW9kZSwKKyAgICAgICAgICAgIHRlc3Rz
LCB0ZXN0X2NvbmZpZywgaXNfbGludF9tb2RlLAogICAgICAgICAgICAgb3ZlcnJpZGVzPW92ZXJy
aWRlcykKIAogICAgICMgVE9ETyhvamFuKTogQWxsb3cgZm9yIHJlbW92aW5nIHNraXBwZWQgdGVz
dHMgd2hlbiBnZXR0aW5nIHRoZSBsaXN0IG9mCkBAIC0xOTksNyArMTk4LDcgQEAgY2xhc3MgUGFy
c2VFcnJvcihFeGNlcHRpb24pOgogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKG1hcChzdHIsIHNl
bGYuZXJyb3JzKSkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQ
YXJzZUVycm9yKGZhdGFsPSVzLCBlcnJvcnM9JXMpJyAlIChmYXRhbCwgZXJyb3JzKQorICAgICAg
ICByZXR1cm4gJ1BhcnNlRXJyb3IoZmF0YWw9JXMsIGVycm9ycz0lcyknICUgKHNlbGYuZmF0YWws
IHNlbGYuZXJyb3JzKQogCiAKIGNsYXNzIE1vZGlmaWVyc0FuZEV4cGVjdGF0aW9uczoKQEAgLTMw
NCwyOCArMzAzLDE0IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAg
ICAgICAgICAnZmFpbCc6IEZBSUwsCiAgICAgICAgICAgICAgICAgICAgICdmbGFreSc6IEZMQUtZ
fQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGV4cGVjdGF0aW9ucywgZnVsbF90ZXN0
X2xpc3QsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGlu
dF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6Ci0gICAgICAgICIiIgotICAgICAgICBleHBlY3RhdGlv
bnM6IENvbnRlbnRzIG9mIHRoZSBleHBlY3RhdGlvbnMgZmlsZQotICAgICAgICBmdWxsX3Rlc3Rf
bGlzdDogVGhlIGxpc3Qgb2YgYWxsIHRlc3RzIHRvIGJlIHJ1biBwZW5kaW5nIHByb2Nlc3Npbmcg
b2YKLSAgICAgICAgICAgIHRoZSBleHBlY3Rpb25zIGZvciB0aG9zZSB0ZXN0cy4KLSAgICAgICAg
dGVzdF9wbGF0Zm9ybV9uYW1lOiBuYW1lIG9mIHRoZSBwbGF0Zm9ybSB0byBtYXRjaCBleHBlY3Rh
dGlvbnMKLSAgICAgICAgICAgIGFnYWluc3QuIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBkaWZmZXJl
bnQgdGhhbgotICAgICAgICAgICAgcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSB3aGVuIGlzX2xp
bnRfbW9kZSBpcyBUcnVlLgotICAgICAgICBpc19kZWJ1Z19tb2RlOiBXaGV0aGVyIHdlIHRlc3Rp
bmcgYSB0ZXN0X3NoZWxsIGJ1aWx0IGRlYnVnIG1vZGUuCi0gICAgICAgIGlzX2xpbnRfbW9kZTog
V2hldGhlciB0aGlzIGlzIGp1c3QgbGludGluZyB0ZXN0X2V4cGVjYXRhdGlvbnMudHh0LgotICAg
ICAgICBvdmVycmlkZXM6IHRlc3QgZXhwZWN0YXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gb3Zl
cnJpZGUgYW55Ci0gICAgICAgICAgICBlbnRyaWVzIGluIHxleHBlY3RhdGlvbnN8LiBUaGlzIGlz
IHVzZWQgYnkgY2FsbGVycwotICAgICAgICAgICAgdGhhdCBuZWVkIHRvIG1hbmFnZSB0d28gc2V0
cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVwc3RyZWFtCi0gICAgICAgICAgICBhbmQgZG93bnN0
cmVhbSBleHBlY3RhdGlvbnMpLgotICAgICAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rlc3RfbGlzdCwKKyAgICAgICAgICAgICAgICAgdGVz
dF9jb25maWcsIGlzX2xpbnRfbW9kZSwgb3ZlcnJpZGVzPU5vbmUpOgorICAgICAgICAjIFNlZSBh
cmd1bWVudCBkb2N1bWVudGF0aW9uIGluIFRlc3RFeHBlY3RhdGlvbigpLCBhYm92ZS4KIAogICAg
ICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBleHBl
Y3RhdGlvbnMKICAgICAgICAgc2VsZi5fZnVsbF90ZXN0X2xpc3QgPSBmdWxsX3Rlc3RfbGlzdAot
ICAgICAgICBzZWxmLl90ZXN0X3BsYXRmb3JtX25hbWUgPSB0ZXN0X3BsYXRmb3JtX25hbWUKLSAg
ICAgICAgc2VsZi5faXNfZGVidWdfbW9kZSA9IGlzX2RlYnVnX21vZGUKKyAgICAgICAgc2VsZi5f
dGVzdF9jb25maWcgPSB0ZXN0X2NvbmZpZwogICAgICAgICBzZWxmLl9pc19saW50X21vZGUgPSBp
c19saW50X21vZGUKICAgICAgICAgc2VsZi5fb3ZlcnJpZGVzID0gb3ZlcnJpZGVzCiAgICAgICAg
IHNlbGYuX2Vycm9ycyA9IFtdCkBAIC0zMzMsNyArMzE4LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uc0ZpbGU6CiAKICAgICAgICAgIyBNYXBzIHJlbGF0aXZlIHRlc3QgcGF0aHMgYXMgbGlzdGVk
IGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZSB0byBhCiAgICAgICAgICMgbGlzdCBvZiBtYXBzIGNv
bnRhaW5pbmcgbW9kaWZpZXJzIGFuZCBleHBlY3RhdGlvbnMgZm9yIGVhY2ggdGltZQotICAgICAg
ICAjIHRoZSB0ZXN0IGlzIGxpc3RlZCBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUuCisgICAgICAg
ICMgdGhlIHRlc3QgaXMgbGlzdGVkIGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZS4gV2UgdXNlIHRo
aXMgdG8KKyAgICAgICAgIyBrZWVwIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVudGlyZSBsaXN0
IG9mIGV4cGVjdGF0aW9ucywgZXZlbgorICAgICAgICAjIGludmFsaWQgb25lcy4KICAgICAgICAg
c2VsZi5fYWxsX2V4cGVjdGF0aW9ucyA9IHt9CiAKICAgICAgICAgIyBNYXBzIGEgdGVzdCB0byBp
dHMgbGlzdCBvZiBleHBlY3RhdGlvbnMuCkBAIC0zNDYsNyArMzMzLDggQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICMgdGhlIG9wdGlvbnMgbWludXMgYW55IGJ1ZyBvciBw
bGF0Zm9ybSBzdHJpbmdzCiAgICAgICAgIHNlbGYuX3Rlc3RfdG9fbW9kaWZpZXJzID0ge30KIAot
ICAgICAgICAjIE1hcHMgYSB0ZXN0IHRvIHRoZSBiYXNlIHBhdGggdGhhdCBpdCB3YXMgbGlzdGVk
IHdpdGggaW4gdGhlIGxpc3QuCisgICAgICAgICMgTWFwcyBhIHRlc3QgdG8gdGhlIGJhc2UgcGF0
aCB0aGF0IGl0IHdhcyBsaXN0ZWQgd2l0aCBpbiB0aGUgbGlzdCBhbmQKKyAgICAgICAgIyB0aGUg
bnVtYmVyIG9mIG1hdGNoZXMgdGhhdCBiYXNlIHBhdGggaGFkLgogICAgICAgICBzZWxmLl90ZXN0
X2xpc3RfcGF0aHMgPSB7fQogCiAgICAgICAgIHNlbGYuX21vZGlmaWVyX3RvX3Rlc3RzID0gc2Vs
Zi5fZGljdF9vZl9zZXRzKHNlbGYuTU9ESUZJRVJTKQpAQCAtMzczLDEzICszNjEsNyBAQCBjbGFz
cyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAogICAgIGRlZiBfaGFuZGxlX2FueV9yZWFkX2Vycm9y
cyhzZWxmKToKICAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9ycykgb3IgbGVuKHNlbGYuX25vbl9m
YXRhbF9lcnJvcnMpOgotICAgICAgICAgICAgaWYgc2VsZi5faXNfZGVidWdfbW9kZToKLSAgICAg
ICAgICAgICAgICBidWlsZF90eXBlID0gJ0RFQlVHJwotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBidWlsZF90eXBlID0gJ1JFTEVBU0UnCi0gICAgICAgICAgICBfbG9nLmVycm9y
KCcnKQotICAgICAgICAgICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9SIFBMQVRGT1JNOiAlcywg
QlVJTERfVFlQRTogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3Rlc3RfcGxh
dGZvcm1fbmFtZS51cHBlcigpLCBidWlsZF90eXBlKSkKKyAgICAgICAgICAgIF9sb2cuZXJyb3Io
IkZBSUxVUkVTIEZPUiAlcyIgJSBzdHIoc2VsZi5fdGVzdF9jb25maWcpKQogCiAgICAgICAgICAg
ICBmb3IgZXJyb3IgaW4gc2VsZi5fZXJyb3JzOgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
ZXJyb3IpCkBAIC0zOTUsMTEgKzM3NywxMiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
ICAgICAgICAgZXhwZWN0YXRpb25zID0gc2V0KFtQQVNTXSkKICAgICAgICAgb3B0aW9ucyA9IFtd
CiAgICAgICAgIG1vZGlmaWVycyA9IFtdCisgICAgICAgIG51bV9tYXRjaGVzID0gMAogICAgICAg
ICBpZiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKICAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYu
X2Z1bGxfdGVzdF9saXN0OgogICAgICAgICAgICAgICAgIGlmIG5vdCB0ZXN0IGluIHNlbGYuX3Rl
c3RfbGlzdF9wYXRoczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwg
bW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBvdmVycmlkZXNfYWxsb3dlZD1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRk
X3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywgZXhwZWN0YXRpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZD1G
YWxzZSkKIAogICAgIGRlZiBfZGljdF9vZl9zZXRzKHNlbGYsIHN0cmluZ3NfdG9fY29uc3RhbnRz
KToKICAgICAgICAgIiIiVGFrZXMgYSBkaWN0IG9mIHN0cmluZ3MtPmNvbnN0YW50cyBhbmQgcmV0
dXJucyBhIGRpY3QgbWFwcGluZwpAQCAtNTM4LDEyICs1MjEsMTkgQEAgY2xhc3MgVGVzdEV4cGVj
dGF0aW9uc0ZpbGU6CiAKICAgICAgICAgb3B0aW9ucyA9IFtdCiAgICAgICAgIGlmIGxpbmUuZmlu
ZCgiOiIpIGlzIC0xOgotICAgICAgICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBsaW5lLnNw
bGl0KCI9IikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgi
OiIpCi0gICAgICAgICAgICBvcHRpb25zID0gc2VsZi5fZ2V0X29wdGlvbnNfbGlzdChwYXJ0c1sw
XSkKLSAgICAgICAgICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9uID0gcGFydHNbMV0uc3BsaXQoJz0n
KQorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywgIk1pc3NpbmcgYSAnOiciLCBs
aW5lKQorICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lLCBOb25lKQorCisgICAgICAgICNp
ZiBsaW5lLmZpbmQoIjoiKSBpcyAtMToKKyAgICAgICAgIyAgICB0ZXN0X2FuZF9leHBlY3RhdGlv
biA9IGxpbmUuc3BsaXQoIj0iKQorICAgICAgICAjZWxzZToKKyAgICAgICAgIyAgICBwYXJ0cyA9
IGxpbmUuc3BsaXQoIjoiKQorICAgICAgICAjICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9u
c19saXN0KHBhcnRzWzBdKQorICAgICAgICAjICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9uID0gcGFy
dHNbMV0uc3BsaXQoJz0nKQogCisgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgnOicpCisgICAg
ICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9uc19saXN0KHBhcnRzWzBdKQorICAgICAgICB0
ZXN0X2FuZF9leHBlY3RhdGlvbiA9IHBhcnRzWzFdLnNwbGl0KCc9JykKICAgICAgICAgdGVzdCA9
IHRlc3RfYW5kX2V4cGVjdGF0aW9uWzBdLnN0cmlwKCkKICAgICAgICAgaWYgKGxlbih0ZXN0X2Fu
ZF9leHBlY3RhdGlvbikgaXMgbm90IDIpOgogICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxp
bmVubywgIk1pc3NpbmcgZXhwZWN0YXRpb25zLiIsCkBAIC01ODksNjkgKzU3OSw2IEBAIGNsYXNz
IFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgICAgIHJldHVybiBSRU1PVkVfVEVTVAogCi0g
ICAgZGVmIF9oYXNfdmFsaWRfbW9kaWZpZXJzX2Zvcl9jdXJyZW50X3BsYXRmb3JtKHNlbGYsIG9w
dGlvbnMsIGxpbmVubywKLSAgICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb25zLCBtb2RpZmllcnMp
OgotICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaXMgaW4g
dGhlIG9wdGlvbnMgbGlzdCBvciBpZgotICAgICAgICBubyBwbGF0Zm9ybXMgYXJlIGxpc3RlZCBh
bmQgaWYgdGhlcmUgYXJlIG5vIGZhdGFsIGVycm9ycyBpbiB0aGUKLSAgICAgICAgb3B0aW9ucyBs
aXN0LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgb3B0aW9uczogTGlzdCBvZiBsb3dlcmNh
c2Ugb3B0aW9ucy4KLSAgICAgICAgICBsaW5lbm86IFRoZSBsaW5lIGluIHRoZSBmaWxlIHdoZXJl
IHRoZSB0ZXN0IGlzIGxpc3RlZC4KLSAgICAgICAgICB0ZXN0X2FuZF9leHBlY3RhdGlvbnM6IFRo
ZSBwYXRoIGFuZCBleHBlY3RhdGlvbnMgZm9yIHRoZSB0ZXN0LgotICAgICAgICAgIG1vZGlmaWVy
czogVGhlIHNldCB0byBwb3B1bGF0ZSB3aXRoIG1vZGlmaWVycy4KLSAgICAgICAgIiIiCi0gICAg
ICAgIGhhc19hbnlfcGxhdGZvcm0gPSBGYWxzZQotICAgICAgICBoYXNfYnVnX2lkID0gRmFsc2UK
LSAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgb3B0aW9uIGlu
IHNlbGYuTU9ESUZJRVJTOgotICAgICAgICAgICAgICAgIG1vZGlmaWVycy5hZGQob3B0aW9uKQot
ICAgICAgICAgICAgZWxpZiBvcHRpb24gaW4gc2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWVz
KCk6Ci0gICAgICAgICAgICAgICAgaGFzX2FueV9wbGF0Zm9ybSA9IFRydWUKLSAgICAgICAgICAg
IGVsaWYgcmUubWF0Y2gocididWdcZCcsIG9wdGlvbikgIT0gTm9uZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAnQnVnIG11c3QgYmUgZWl0aGVyIEJVR0NSLCBCVUdX
Sywgb3IgQlVHVjhfIGZvciB0ZXN0OiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcHRpb24sIHRlc3RfYW5kX2V4cGVjdGF0aW9ucykKLSAgICAgICAgICAgIGVsaWYgb3B0
aW9uLnN0YXJ0c3dpdGgoJ2J1ZycpOgotICAgICAgICAgICAgICAgIGhhc19idWdfaWQgPSBUcnVl
Ci0gICAgICAgICAgICBlbGlmIG9wdGlvbiBub3QgaW4gc2VsZi5CVUlMRF9UWVBFUzoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAnSW52YWxpZCBtb2RpZmllciBmb3Ig
dGVzdDogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB0ZXN0
X2FuZF9leHBlY3RhdGlvbnMpCi0KLSAgICAgICAgaWYgaGFzX2FueV9wbGF0Zm9ybSBhbmQgbm90
IHNlbGYuX21hdGNoX3BsYXRmb3JtKG9wdGlvbnMpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICAgICAgaWYgbm90IGhhc19idWdfaWQgYW5kICd3b250Zml4JyBub3QgaW4gb3B0aW9u
czoKLSAgICAgICAgICAgICMgVE9ETyhvamFuKTogVHVybiB0aGlzIGludG8gYW4gQWRkRXJyb3Ig
Y2FsbCBvbmNlIGFsbCB0aGUKLSAgICAgICAgICAgICMgdGVzdHMgaGF2ZSBCVUcgaWRlbnRpZmll
cnMuCi0gICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1Rlc3Qg
bGFja3MgQlVHIG1vZGlmaWVyLicsCi0gICAgICAgICAgICAgICAgdGVzdF9hbmRfZXhwZWN0YXRp
b25zKQotCi0gICAgICAgIGlmICdyZWxlYXNlJyBpbiBvcHRpb25zIG9yICdkZWJ1ZycgaW4gb3B0
aW9uczoKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX2RlYnVnX21vZGUgYW5kICdkZWJ1Zycgbm90
IGluIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBp
ZiBub3Qgc2VsZi5faXNfZGVidWdfbW9kZSBhbmQgJ3JlbGVhc2UnIG5vdCBpbiBvcHRpb25zOgot
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIHNlbGYuX2lzX2xpbnRf
bW9kZSBhbmQgJ3JlYmFzZWxpbmUnIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBzZWxmLl9hZGRf
ZXJyb3IobGluZW5vLAotICAgICAgICAgICAgICAgICdSRUJBU0VMSU5FIHNob3VsZCBvbmx5IGJl
IHVzZWQgZm9yIHJ1bm5pbmcgcmViYXNlbGluZS5weS4gJwotICAgICAgICAgICAgICAgICdDYW5u
b3QgYmUgY2hlY2tlZCBpbi4nLCB0ZXN0X2FuZF9leHBlY3RhdGlvbnMpCi0KLSAgICAgICAgcmV0
dXJuIFRydWUKLQotICAgIGRlZiBfbWF0Y2hfcGxhdGZvcm0oc2VsZiwgb3B0aW9ucyk6Ci0gICAg
ICAgICIiIk1hdGNoIHRoZSBsaXN0IG9mIG9wdGlvbnMgYWdhaW5zdCBvdXIgc3BlY2lmaWVkIHBs
YXRmb3JtLiBJZiBhbnkKLSAgICAgICAgb2YgdGhlIG9wdGlvbnMgcHJlZml4LW1hdGNoIHNlbGYu
X3BsYXRmb3JtLCByZXR1cm4gVHJ1ZS4gVGhpcyBoYW5kbGVzCi0gICAgICAgIHRoZSBjYXNlIHdo
ZXJlIGEgdGVzdCBpcyBtYXJrZWQgV0lOIGFuZCB0aGUgcGxhdGZvcm0gaXMgV0lOLVZJU1RBLgot
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgb3B0aW9uczogbGlzdCBvZiBvcHRpb25zCi0gICAg
ICAgICIiIgotICAgICAgICBmb3Igb3B0IGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll90ZXN0X3BsYXRmb3JtX25hbWUuc3RhcnRzd2l0aChvcHQpOgotICAgICAgICAgICAgICAgIHJl
dHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCiAgICAgZGVmIF9hZGRfdG9fYWxsX2V4
cGVjdGF0aW9ucyhzZWxmLCB0ZXN0LCBvcHRpb25zLCBleHBlY3RhdGlvbnMpOgogICAgICAgICAj
IE1ha2UgYWxsIHBhdGhzIHVuaXgtc3R5bGUgc28gdGhlIGRhc2hib2FyZCBkb2Vzbid0IG5lZWQg
dG8uCiAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoJ1xcJywgJy8nKQpAQCAtNjY0LDU0ICs1
OTEsNDMgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICIiIkZvciBlYWNo
IHRlc3QgaW4gYW4gZXhwZWN0YXRpb25zIGl0ZXJhYmxlLCBnZW5lcmF0ZSB0aGUKICAgICAgICAg
ZXhwZWN0YXRpb25zIGZvciBpdC4iIiIKICAgICAgICAgbGluZW5vID0gMAorICAgICAgICBtYXRj
aGVyID0gTW9kaWZpZXJNYXRjaGVyKHNlbGYuX3Rlc3RfY29uZmlnKQogICAgICAgICBmb3IgbGlu
ZSBpbiBleHBlY3RhdGlvbnM6CiAgICAgICAgICAgICBsaW5lbm8gKz0gMQorICAgICAgICAgICAg
c2VsZi5fcmVhZF9saW5lKGxpbmUsIGxpbmVubywgbWF0Y2hlciwgb3ZlcnJpZGVzX2FsbG93ZWQp
CiAKLSAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoLCBvcHRpb25zLCBleHBlY3RhdGlvbnMgPSBc
Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnNfbGluZShsaW5lLCBsaW5l
bm8pCi0gICAgICAgICAgICBpZiBub3QgZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisgICAgZGVmIF9yZWFkX2xpbmUoc2VsZiwgbGluZSwgbGluZW5vLCBtYXRjaGVyLCBv
dmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgIHRlc3RfbGlzdF9wYXRoLCBvcHRpb25zLCBleHBl
Y3RhdGlvbnMgPSBcCisgICAgICAgICAgICBzZWxmLnBhcnNlX2V4cGVjdGF0aW9uc19saW5lKGxp
bmUsIGxpbmVubykKKyAgICAgICAgaWYgbm90IGV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIHJl
dHVybgogCi0gICAgICAgICAgICBzZWxmLl9hZGRfdG9fYWxsX2V4cGVjdGF0aW9ucyh0ZXN0X2xp
c3RfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIi5q
b2luKG9wdGlvbnMpLnVwcGVyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICIuam9pbihleHBlY3RhdGlvbnMpLnVwcGVyKCkpCisgICAgICAgIHNlbGYuX2Fk
ZF90b19hbGxfZXhwZWN0YXRpb25zKHRlc3RfbGlzdF9wYXRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2luKG9wdGlvbnMpLnVwcGVyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4oZXhwZWN0YXRpb25zKS51
cHBlcigpKQogCi0gICAgICAgICAgICBtb2RpZmllcnMgPSBzZXQoKQotICAgICAgICAgICAgaWYg
b3B0aW9ucyBhbmQgbm90IHNlbGYuX2hhc192YWxpZF9tb2RpZmllcnNfZm9yX2N1cnJlbnRfcGxh
dGZvcm0oCi0gICAgICAgICAgICAgICAgb3B0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCwg
bW9kaWZpZXJzKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBudW1fbWF0Y2hl
cyA9IHNlbGYuX2NoZWNrX29wdGlvbnMobWF0Y2hlciwgb3B0aW9ucywgbGluZW5vLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAg
ICAgIGlmIG51bV9tYXRjaGVzID09IE1vZGlmaWVyTWF0Y2hlci5OT19NQVRDSDoKKyAgICAgICAg
ICAgIHJldHVybgogCi0gICAgICAgICAgICBleHBlY3RhdGlvbnMgPSBzZWxmLl9wYXJzZV9leHBl
Y3RhdGlvbnMoZXhwZWN0YXRpb25zLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgdGVzdF9saXN0
X3BhdGgpCisgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNlbGYuX3BhcnNlX2V4cGVjdGF0aW9ucyhl
eHBlY3RhdGlvbnMsIGxpbmVubywKKyAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQogCi0gICAg
ICAgICAgICBpZiAnc2xvdycgaW4gb3B0aW9ucyBhbmQgVElNRU9VVCBpbiBleHBlY3RhdGlvbnM6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKLSAgICAgICAgICAgICAg
ICAgICAgJ0EgdGVzdCBjYW4gbm90IGJlIGJvdGggc2xvdyBhbmQgdGltZW91dC4gSWYgaXQgdGlt
ZXMgb3V0ICcKLSAgICAgICAgICAgICAgICAgICAgJ2luZGVmaW5pdGVseSwgdGhlbiBpdCBzaG91
bGQgYmUganVzdCB0aW1lb3V0LicsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRo
KQorICAgICAgICBzZWxmLl9jaGVja19vcHRpb25zX2FnYWluc3RfZXhwZWN0YXRpb25zKG9wdGlv
bnMsIGV4cGVjdGF0aW9ucywKKyAgICAgICAgICAgIGxpbmVubywgdGVzdF9saXN0X3BhdGgpCiAK
LSAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90
ZXN0c19kaXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xp
c3RfcGF0aCkKLSAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgoZnVsbF9w
YXRoKQotICAgICAgICAgICAgIyBXZWJLaXQncyB3YXkgb2Ygc2tpcHBpbmcgdGVzdHMgaXMgdG8g
YWRkIGEgLWRpc2FibGVkIHN1ZmZpeC4KLSAgICAgICAgICAgICMgU28gd2Ugc2hvdWxkIGNvbnNp
ZGVyIHRoZSBwYXRoIGV4aXN0aW5nIGlmIHRoZSBwYXRoIG9yIHRoZQotICAgICAgICAgICAgIyAt
ZGlzYWJsZWQgdmVyc2lvbiBleGlzdHMuCi0gICAgICAgICAgICBpZiAobm90IHNlbGYuX3BvcnQu
cGF0aF9leGlzdHMoZnVsbF9wYXRoKQotICAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fcG9y
dC5wYXRoX2V4aXN0cyhmdWxsX3BhdGggKyAnLWRpc2FibGVkJykpOgotICAgICAgICAgICAgICAg
ICMgTG9nIGEgbm9uIGZhdGFsIGVycm9yIGhlcmUgc2luY2UgeW91IGhpdCB0aGlzIGNhc2UgYW55
Ci0gICAgICAgICAgICAgICAgIyB0aW1lIHlvdSB1cGRhdGUgdGVzdF9leHBlY3RhdGlvbnMudHh0
IHdpdGhvdXQgc3luY2luZwotICAgICAgICAgICAgICAgICMgdGhlIExheW91dFRlc3RzIGRpcmVj
dG9yeQotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ19ub25fZmF0YWxfZXJyb3IobGluZW5vLCAn
UGF0aCBkb2VzIG5vdCBleGlzdC4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
aWYgc2VsZi5fY2hlY2tfcGF0aF9kb2VzX25vdF9leGlzdChsaW5lbm8sIHRlc3RfbGlzdF9wYXRo
KToKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fZnVsbF90
ZXN0X2xpc3Q6Ci0gICAgICAgICAgICAgICAgdGVzdHMgPSBbdGVzdF9saXN0X3BhdGhdCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fZXhwYW5kX3Rlc3Rz
KHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBpZiBub3Qgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6Cisg
ICAgICAgICAgICB0ZXN0cyA9IFt0ZXN0X2xpc3RfcGF0aF0KKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHRlc3RzID0gc2VsZi5fZXhwYW5kX3Rlc3RzKHRlc3RfbGlzdF9wYXRoKQogCi0gICAg
ICAgICAgICBzZWxmLl9hZGRfdGVzdHModGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0X3Bh
dGgsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgb3B0aW9u
cywgb3ZlcnJpZGVzX2FsbG93ZWQpCisgICAgICAgIG1vZGlmaWVycyA9IFtvIGZvciBvIGluIG9w
dGlvbnMgaWYgbyBpbiBzZWxmLk1PRElGSUVSU10KKyAgICAgICAgc2VsZi5fYWRkX3Rlc3RzKHRl
c3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCisgICAgICAgICAgICAg
ICAgICAgICAgICBtb2RpZmllcnMsIG51bV9tYXRjaGVzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxs
b3dlZCkKIAogICAgIGRlZiBfZ2V0X29wdGlvbnNfbGlzdChzZWxmLCBsaXN0U3RyaW5nKToKICAg
ICAgICAgcmV0dXJuIFtwYXJ0LnN0cmlwKCkubG93ZXIoKSBmb3IgcGFydCBpbiBsaXN0U3RyaW5n
LnN0cmlwKCkuc3BsaXQoJyAnKV0KQEAgLTcyNyw2ICs2NDMsNjcgQEAgY2xhc3MgVGVzdEV4cGVj
dGF0aW9uc0ZpbGU6CiAgICAgICAgICAgICByZXN1bHQuYWRkKGV4cGVjdGF0aW9uKQogICAgICAg
ICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgX2NoZWNrX29wdGlvbnMoc2VsZiwgbWF0Y2hlciwg
b3B0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIG1hdGNoX3Jlc3VsdCA9
IHNlbGYuX2NoZWNrX3N5bnRheChtYXRjaGVyLCBvcHRpb25zLCBsaW5lbm8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAg
c2VsZi5fY2hlY2tfc2VtYW50aWNzKG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpCisg
ICAgICAgIHJldHVybiBtYXRjaF9yZXN1bHQubnVtX21hdGNoZXMKKworICAgIGRlZiBfY2hlY2tf
c3ludGF4KHNlbGYsIG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgor
ICAgICAgICBtYXRjaF9yZXN1bHQgPSBtYXRjaGVyLm1hdGNoKG9wdGlvbnMpCisgICAgICAgIGZv
ciBlcnJvciBpbiBtYXRjaF9yZXN1bHQuZXJyb3JzOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vy
cm9yKGxpbmVubywgZXJyb3IsIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBmb3Igd2FybmluZyBp
biBtYXRjaF9yZXN1bHQud2FybmluZ3M6CisgICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFs
X2Vycm9yKGxpbmVubywgd2FybmluZywgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIHJldHVybiBt
YXRjaF9yZXN1bHQKKworICAgIGRlZiBfY2hlY2tfc2VtYW50aWNzKHNlbGYsIG9wdGlvbnMsIGxp
bmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICBoYXNfd29udGZpeCA9ICd3b250Zml4JyBp
biBvcHRpb25zCisgICAgICAgIGhhc19idWcgPSBGYWxzZQorICAgICAgICBmb3Igb3B0IGluIG9w
dGlvbnM6CisgICAgICAgICAgICBpZiBvcHQuc3RhcnRzd2l0aCgnYnVnJyk6CisgICAgICAgICAg
ICAgICAgaGFzX2J1ZyA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiByZS5tYXRjaCgnYnVnXGQr
Jywgb3B0KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICdCVUdcZCsgaXMgbm90IGFsbG93ZWQsIG11c3QgYmUgb25l
IG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdCVUdDUlxkKywgQlVHV0tcZCssIEJVR1Y4
X1xkKywgJworICAgICAgICAgICAgICAgICAgICAgICAgJ29yIGEgbm9uLW51bWVyaWMgYnVnIGlk
ZW50aWZpZXIuJywgdGVzdF9saXN0X3BhdGgpCisgICAgICAgICAgICAgICAgaGFzX2J1ZyA9IFRy
dWUKKworICAgICAgICBpZiBub3QgaGFzX2J1ZyBhbmQgbm90IGhhc193b250Zml4OgorICAgICAg
ICAgICAgc2VsZi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdUZXN0IGxhY2tzIEJVRyBt
b2RpZmllci4nLAorICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisKKyAgICAgICAgaWYgc2Vs
Zi5faXNfbGludF9tb2RlIGFuZCAncmViYXNlbGluZScgaW4gb3B0aW9uczoKKyAgICAgICAgICAg
IHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAnUkVCQVNFTElORSBzaG91bGQg
b25seSBiZSB1c2VkIGZvciBydW5uaW5nIHJlYmFzZWxpbmUucHkuICcKKyAgICAgICAgICAgICdD
YW5ub3QgYmUgY2hlY2tlZCBpbi4nLCB0ZXN0X2xpc3RfcGF0aCkKKworICAgIGRlZiBfY2hlY2tf
b3B0aW9uc19hZ2FpbnN0X2V4cGVjdGF0aW9ucyhzZWxmLCBvcHRpb25zLCBleHBlY3RhdGlvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgdGVz
dF9saXN0X3BhdGgpOgorICAgICAgICBpZiAnc2xvdycgaW4gb3B0aW9ucyBhbmQgVElNRU9VVCBp
biBleHBlY3RhdGlvbnM6CisgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAg
ICAgICAgICAgICAgICdBIHRlc3QgY2FuIG5vdCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuIElm
IGl0IHRpbWVzIG91dCAnCisgICAgICAgICAgICAgICAgJ2luZGVmaW5pdGVseSwgdGhlbiBpdCBz
aG91bGQgYmUganVzdCB0aW1lb3V0LicsCisgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgp
CisKKyAgICBkZWYgX2NoZWNrX3BhdGhfZG9lc19ub3RfZXhpc3Qoc2VsZiwgbGluZW5vLCB0ZXN0
X2xpc3RfcGF0aCk6CisgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLl9wb3J0
LmxheW91dF90ZXN0c19kaXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGZ1
bGxfcGF0aCkKKyAgICAgICAgIyBXZWJLaXQncyB3YXkgb2Ygc2tpcHBpbmcgdGVzdHMgaXMgdG8g
YWRkIGEgLWRpc2FibGVkIHN1ZmZpeC4KKyAgICAgICAgICAgICMgU28gd2Ugc2hvdWxkIGNvbnNp
ZGVyIHRoZSBwYXRoIGV4aXN0aW5nIGlmIHRoZSBwYXRoIG9yIHRoZQorICAgICAgICAjIC1kaXNh
YmxlZCB2ZXJzaW9uIGV4aXN0cy4KKyAgICAgICAgaWYgKG5vdCBzZWxmLl9wb3J0LnBhdGhfZXhp
c3RzKGZ1bGxfcGF0aCkKKyAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fcG9ydC5wYXRoX2V4aXN0
cyhmdWxsX3BhdGggKyAnLWRpc2FibGVkJykpOgorICAgICAgICAgICAgIyBMb2cgYSBub24gZmF0
YWwgZXJyb3IgaGVyZSBzaW5jZSB5b3UgaGl0IHRoaXMgY2FzZSBhbnkKKyAgICAgICAgICAgICMg
dGltZSB5b3UgdXBkYXRlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCB3aXRob3V0IHN5bmNpbmcKKyAg
ICAgICAgICAgICMgdGhlIExheW91dFRlc3RzIGRpcmVjdG9yeQorICAgICAgICAgICAgc2VsZi5f
bG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdQYXRoIGRvZXMgbm90IGV4aXN0LicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAg
ICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIF9leHBhbmRf
dGVzdHMoc2VsZiwgdGVzdF9saXN0X3BhdGgpOgogICAgICAgICAiIiJDb252ZXJ0IHRoZSB0ZXN0
IHNwZWNpZmljYXRpb24gdG8gYW4gYWJzb2x1dGUsIG5vcm1hbGl6ZWQKICAgICAgICAgcGF0aCBh
bmQgbWFrZSBzdXJlIGRpcmVjdG9yaWVzIGVuZCB3aXRoIHRoZSBPUyBwYXRoIHNlcGFyYXRvci4i
IiIKQEAgLTc1MiwxNyArNzI5LDE5IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAg
ICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgX2FkZF90ZXN0cyhzZWxmLCB0ZXN0cywgZXhw
ZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVycywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVycywgbnVtX21hdGNoZXMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKToKICAg
ICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICBpZiBzZWxmLl9hbHJlYWR5X3Nl
ZW5fdGVzdCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICAgICAgaWYg
c2VsZi5fYWxyZWFkeV9zZWVuX2JldHRlcl9tYXRjaCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwKKyAg
ICAgICAgICAgICAgICBudW1fbWF0Y2hlcywgbGluZW5vLCBvdmVycmlkZXNfYWxsb3dlZCk6CiAg
ICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgc2VsZi5fY2xlYXJfZXhwZWN0
YXRpb25zX2Zvcl90ZXN0KHRlc3QsIHRlc3RfbGlzdF9wYXRoKQotICAgICAgICAgICAgc2VsZi5f
YWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCisgICAgICAg
ICAgICBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0gPSAob3MucGF0aC5ub3JtcGF0aCh0ZXN0
X2xpc3RfcGF0aCksCisgICAgICAgICAgICAgICAgbnVtX21hdGNoZXMsIGxpbmVubykKKyAgICAg
ICAgICAgIHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgbnVtX21hdGNoZXMsIGV4cGVj
dGF0aW9ucywgb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19h
bGxvd2VkKQogCi0gICAgZGVmIF9hZGRfdGVzdChzZWxmLCB0ZXN0LCBtb2RpZmllcnMsIGV4cGVj
dGF0aW9ucywgb3B0aW9ucywKKyAgICBkZWYgX2FkZF90ZXN0KHNlbGYsIHRlc3QsIG1vZGlmaWVy
cywgbnVtX21hdGNoZXMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucywKICAgICAgICAgICAgICAgICAg
IG92ZXJyaWRlc19hbGxvd2VkKToKICAgICAgICAgIiIiU2V0cyB0aGUgZXhwZWN0ZWQgc3RhdGUg
Zm9yIGEgZ2l2ZW4gdGVzdC4KIApAQCAtNzczLDYgKzc1Miw3IEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNGaWxlOgogICAgICAgICBBcmdzOgogICAgICAgICAgIHRlc3Q6IHRlc3QgdG8gYWRkCiAg
ICAgICAgICAgbW9kaWZpZXJzOiBzZXF1ZW5jZSBvZiBtb2RpZmllciBrZXl3b3JkcyAoJ3dvbnRm
aXgnLCAnc2xvdycsIGV0Yy4pCisgICAgICAgICAgbnVtX21hdGNoZXM6IG51bWJlciBvZiBtb2Rp
ZmllcnMgdGhhdCBtYXRjaGVkIHRoZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgZXhwZWN0YXRp
b25zOiBzZXF1ZW5jZSBvZiBleHBlY3RhdGlvbnMgKFBBU1MsIElNQUdFLCBldGMuKQogICAgICAg
ICAgIG9wdGlvbnM6IHNlcXVlbmNlIG9mIGtleXdvcmRzIGFuZCBidWcgaWRlbnRpZmllcnMuCiAg
ICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ6IHdoZXRoZXIgd2UncmUgcGFyc2luZyB0aGUgcmVn
dWxhciBleHBlY3RhdGlvbnMKQEAgLTgxMSwxMyArNzkxLDEzIEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNGaWxlOgogICAgICAgICB0aGFuIGEgcHJldmlvdXMgbGlzdGluZy4KICAgICAgICAgIiIi
CiAgICAgICAgIGlmIHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0X3BhdGhzOgotICAgICAgICAgICAg
c2VsZi5fdGVzdF90b19leHBlY3RhdGlvbnMucG9wKHRlc3QsICcnKQotICAgICAgICAgICAgc2Vs
Zi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl9leHBlY3RhdGlvbl90b190ZXN0cykKLSAg
ICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2VsZi5fbW9kaWZpZXJfdG9f
dGVzdHMpCi0gICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX3Rp
bWVsaW5lX3RvX3Rlc3RzKQotICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0
LCBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0cykKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IHNl
bGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XVswXQorICAgICAgICAgICAgc2VsZi5fdGVzdF90b19l
eHBlY3RhdGlvbnMucG9wKGJhc2VfcGF0aCwgJycpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVf
ZnJvbV9zZXRzKGJhc2VfcGF0aCwgc2VsZi5fZXhwZWN0YXRpb25fdG9fdGVzdHMpCisgICAgICAg
ICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKGJhc2VfcGF0aCwgc2VsZi5fbW9kaWZpZXJfdG9f
dGVzdHMpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKGJhc2VfcGF0aCwgc2Vs
Zi5fdGltZWxpbmVfdG9fdGVzdHMpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRz
KGJhc2VfcGF0aCwgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHMpCiAKLSAgICAgICAgc2VsZi5f
dGVzdF9saXN0X3BhdGhzW3Rlc3RdID0gb3MucGF0aC5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkK
IAogICAgIGRlZiBfcmVtb3ZlX2Zyb21fc2V0cyhzZWxmLCB0ZXN0LCBkaWN0KToKICAgICAgICAg
IiIiUmVtb3ZlcyB0aGUgZ2l2ZW4gdGVzdCBmcm9tIHRoZSBzZXRzIGluIHRoZSBkaWN0aW9uYXJ5
LgpAQCAtODI5LDMyICs4MDksNjAgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAg
ICAgICAgICBpZiB0ZXN0IGluIHNldF9vZl90ZXN0czoKICAgICAgICAgICAgICAgICBzZXRfb2Zf
dGVzdHMucmVtb3ZlKHRlc3QpCiAKLSAgICBkZWYgX2FscmVhZHlfc2Vlbl90ZXN0KHNlbGYsIHRl
c3QsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBh
bGxvd19vdmVycmlkZXMpOgotICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWYgd2UndmUgYWxyZWFk
eSBzZWVuIGEgbW9yZSBwcmVjaXNlIHBhdGggZm9yIHRoaXMgdGVzdAotICAgICAgICB0aGFuIHRo
ZSB0ZXN0X2xpc3RfcGF0aC4KKyAgICBkZWYgX2FscmVhZHlfc2Vlbl9iZXR0ZXJfbWF0Y2goc2Vs
ZiwgdGVzdCwgdGVzdF9saXN0X3BhdGgsIG51bV9tYXRjaGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5lbm8sIG92ZXJyaWRlc19hbGxvd2VkKToKKyAgICAgICAgIiIi
UmV0dXJucyB3aGV0aGVyIHdlJ3ZlIHNlZW4gYSBiZXR0ZXIgbWF0Y2ggYWxyZWFkeSBpbiB0aGUg
ZmlsZS4KKworICAgICAgICBSZXR1cm5zIFRydWUgaWY6CisgICAgICAgICgxKSBXZSd2ZSBhbHJl
YWR5IHNlZW4gYSB0ZXN0X2xpc3RfcGF0aCB0aGF0IG1hdGNoZXMgbW9yZSBvZiB0aGUgdGVzdAor
ICAgICAgICAgICAgdGhhbiB0aGlzIHBhdGggZG9lcywgb3IKKyAgICAgICAgKDIpIFdlJ3ZlIHNl
ZW4gYSBsaW5lIHRoYXQgbWF0Y2hlZCBtb3JlIG9mIHRoZSB0ZXN0IGNvbmZpZyB0aGFuCisgICAg
ICAgICAgICB0aGlzIG9uZSBkb2VzLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IHRlc3Qg
aW4gc2VsZi5fdGVzdF9saXN0X3BhdGhzOgorICAgICAgICAgICAgIyBXZSd2ZSBuZXZlciBzZWVu
IHRoaXMgdGVzdCBiZWZvcmUuCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICBw
cmV2X2Jhc2VfcGF0aCA9IHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XQotICAgICAgICBpZiAo
cHJldl9iYXNlX3BhdGggPT0gb3MucGF0aC5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkpOgotICAg
ICAgICAgICAgaWYgKG5vdCBhbGxvd19vdmVycmlkZXMgb3IgdGVzdCBpbiBzZWxmLl9vdmVycmlk
ZGluZ190ZXN0cyk6Ci0gICAgICAgICAgICAgICAgaWYgYWxsb3dfb3ZlcnJpZGVzOgotICAgICAg
ICAgICAgICAgICAgICBleHBlY3RhdGlvbl9zb3VyY2UgPSAib3ZlcnJpZGUiCi0gICAgICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gImV4
cGVjdGF0aW9uIgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICdEdXBs
aWNhdGUgJXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBw
cmV2X2VudHJ5ID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdCisgICAgICAgIHByZXZfYmFz
ZV9wYXRoLCBwcmV2X251bV9tYXRjaGVzLCBwcmV2X2xpbmVubyA9IHByZXZfZW50cnkKKyAgICAg
ICAgYmFzZV9wYXRoID0gb3MucGF0aC5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkKKworICAgICAg
ICBpZiBsZW4ocHJldl9iYXNlX3BhdGgpID4gbGVuKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAj
IFRoZSBwcmV2aW91cyBwYXRoIG1hdGNoZWQgbW9yZSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAg
IHJldHVybiBUcnVlCisgICAgICAgIGVsaWYgbGVuKHByZXZfYmFzZV9wYXRoKSA8IGxlbihiYXNl
X3BhdGgpOgorICAgICAgICAgICAgIyBUaGlzIHBhdGggbWF0Y2hlcyBtb3JlIG9mIHRoZSB0ZXN0
LgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBXZSd2ZSBzZWVuIGFuIGVu
dHJ5IHRoYXQgbWF0Y2hlcyB0aGlzIGJhc2UgcGF0aCBleGFjdGx5CisgICAgICAgICMgKGNvdWxk
IGJlIGVpdGhlciBhIGZpbGUgb3IgYSBkaXJlY3RvcnkpLgorICAgICAgICBpZiAobm90IG92ZXJy
aWRlc19hbGxvd2VkIG9yIHRlc3QgaW4gc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHMpOgorICAgICAg
ICAgICAgaWYgb3ZlcnJpZGVzX2FsbG93ZWQ6CisgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25f
c291cmNlID0gIm92ZXJyaWRlIgogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAj
IFdlIGhhdmUgc2VlbiB0aGlzIHBhdGgsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNlIGl0cwotICAg
ICAgICAgICAgICAgICMgaW4gdGhlIG92ZXJyaWRlcyBhbmQgdGhlIGVhcmxpZXIgcGF0aCB3YXMg
aW4gdGhlCi0gICAgICAgICAgICAgICAgIyBleHBlY3RhdGlvbnMuCi0gICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gImV4cGVj
dGF0aW9uIgogCi0gICAgICAgICMgQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBzZWVuIGEgbW9yZSBw
cmVjaXNlIHBhdGguCi0gICAgICAgIHJldHVybiBwcmV2X2Jhc2VfcGF0aC5zdGFydHN3aXRoKG9z
LnBhdGgubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpKQorICAgICAgICAgICAgaWYgcHJldl9udW1f
bWF0Y2hlcyA9PSBudW1fbWF0Y2hlczoKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3Io
bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAnRHVwbGljYXRlIG9yIGFtYmlndW91cyAlcy4n
ICUgZXhwZWN0YXRpb25fc291cmNlLAorICAgICAgICAgICAgICAgICAgICB0ZXN0KQorICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIGlmIHByZXZfbnVtX21hdGNoZXMg
PCBudW1fbWF0Y2hlczoKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9y
KGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgJ01vcmUgc3BlY2lmaWMgZW50cnkgb24gbGlu
ZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJQorICAgICAgICAgICAgICAgICAgICAobGluZW5vLCBw
cmV2X2xpbmVubyksIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFs
X2Vycm9yKGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgJ01vcmUgc3BlY2lmaWMgZW50cnkg
b24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJQorICAgICAgICAgICAgICAgICAgICAocHJl
dl9saW5lbm8sIGxpbmVubyksIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdlIGhhdmUgc2VlbiB0aGlzIHBh
dGgsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNlIGl0cworICAgICAgICAgICAgIyBpbiB0aGUgb3Zl
cnJpZGVzIGFuZCB0aGUgZWFybGllciBwYXRoIHdhcyBpbiB0aGUKKyAgICAgICAgICAgICMgZXhw
ZWN0YXRpb25zLgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgX2FkZF9lcnJv
cihzZWxmLCBsaW5lbm8sIG1zZywgcGF0aCk6CiAgICAgICAgICIiIlJlcG9ydHMgYW4gZXJyb3Ig
dGhhdCB3aWxsIHByZXZlbnQgcnVubmluZyB0aGUgdGVzdHMuIERvZXMgbm90CkBAIC04NjYsMyAr
ODc0LDE4NyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgIiIiUmVwb3J0
cyBhbiBlcnJvciB0aGF0IHdpbGwgbm90IHByZXZlbnQgcnVubmluZyB0aGUgdGVzdHMuIFRoZXNl
IGFyZQogICAgICAgICBzdGlsbCBlcnJvcnMsIGJ1dCBub3QgYmFkIGVub3VnaCB0byB3YXJyYW50
IGJyZWFraW5nIHRlc3QgcnVubmluZy4iIiIKICAgICAgICAgc2VsZi5fbm9uX2ZhdGFsX2Vycm9y
cy5hcHBlbmQoJ0xpbmU6JXMgJXMgJXMnICUgKGxpbmVubywgbXNnLCBwYXRoKSkKKworCitjbGFz
cyBNb2RpZmllck1hdGNoUmVzdWx0KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9w
dGlvbnMpOgorICAgICAgICBzZWxmLm51bV9tYXRjaGVzID0gTW9kaWZpZXJNYXRjaGVyLk5PX01B
VENICisgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5lcnJvcnMg
PSBbXQorICAgICAgICBzZWxmLndhcm5pbmdzID0gW10KKyAgICAgICAgc2VsZi5tb2RpZmllcnMg
PSBbXQorICAgICAgICBzZWxmLl9tYXRjaGVkX3JlZ2V4ZXMgPSBzZXQoKQorICAgICAgICBzZWxm
Ll9tYXRjaGVkX21hY3JvcyA9IHNldCgpCisKKworY2xhc3MgTW9kaWZpZXJNYXRjaGVyKG9iamVj
dCk6CisKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIG1hbmFnZXMgdGhlIGludGVycHJldGF0aW9u
IG9mIHRoZSAibW9kaWZpZXJzIiBmb3IgYSBnaXZlbgorICAgIGxpbmUgaW4gdGhlIGV4cGVjdGF0
aW9ucyBmaWxlLiBNb2RpZmllcnMgYXJlIHRoZSB0b2tlbnMgdGhhdCBhcHBlYXIgdG8gdGhlCisg
ICAgbGVmdCBvZiB0aGUgY29sb24gb24gYSBsaW5lLiBGb3IgZXhhbXBsZSwgIkJVRzEyMzQiLCAi
REVCVUciLCBhbmQgIldJTiIgYXJlCisgICAgYWxsIG1vZGlmaWVycy4gVGhpcyBjbGFzcyBnZXRz
IHdoYXQgdGhlIHZhbGlkIG1vZGlmaWVycyBhcmUsIGFuZCB3aGljaAorICAgIG1vZGlmaWVycyBh
cmUgYWxsb3dlZCB0byBleGlzdCB0b2dldGhlciBvbiBhIGxpbmUsIGZyb20gdGhlCisgICAgVGVz
dENvbmZpZ3VyYXRpb24gb2JqZWN0IHRoYXQgaXMgcGFzc2VkIGluIHRvIHRoZSBjYWxsLgorCisg
ICAgVGhpcyBjbGFzcyBkZXRlY3RzICppbnRyYSotbGluZSBlcnJvcnMgbGlrZSB1bmtub3duIG1v
ZGlmaWVycywgYnV0CisgICAgZG9lcyBub3QgZGV0ZWN0ICppbnRlciotbGluZSBtb2RpZmllcnMg
bGlrZSBkdXBsaWNhdGUgZXhwZWN0YXRpb25zLgorCisgICAgTW9yZSBpbXBvcnRhbnRseSwgdGhp
cyBjbGFzcyBpcyBhbHNvIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gbGluZQorICAgIG1h
dGNoZXMgdGhlIHBvcnQgaW4gcXVlc3Rpb24uIE1hdGNoZXMgYXJlIHJhbmtlZCBhY2NvcmRpbmcg
dG8gdGhlIG51bWJlcgorICAgIG9mIG1vZGlmaWVycyB0aGF0IG1hdGNoIG9uIGEgbGluZS4gQSBs
aW5lIHdpdGggbm8gbW9kaWZpZXJzIG1hdGNoZXMKKyAgICBldmVyeXRoaW5nIGFuZCBoYXMgYSBz
Y29yZSBvZiB6ZXJvLiBBIGxpbmUgd2l0aCBvbmUgbW9kaWZpZXIgbWF0Y2hlcyBvbmx5CisgICAg
cG9ydHMgdGhhdCBoYXZlIHRoYXQgbW9kaWZpZXIgYW5kIGdldHMgYSBzY29yZSBvZiAxLCBhbmQg
c28gb25lLiBQb3J0cworICAgIHRoYXQgZG9uJ3QgbWF0Y2ggYXQgYWxsIGdldCBhIHNjb3JlIG9m
IC0xLgorCisgICAgR2l2ZW4gdHdvIGxpbmVzIGluIGEgZmlsZSB0aGF0IGFwcGx5IHRvIHRoZSBz
YW1lIGZpbGUsIGEgaGlnaGVyIHNjb3JlCisgICAgYmVhdHMgYSBsb3dlciBvbmUsIGFuZCB0d28g
bGluZXMgd2l0aCB0aGUgc2FtZSBzY29yZSBhcmUgY29uc2lkZXJlZAorICAgIGFtYmlndW91cyAo
aW5kZXBlbmRlbnQgb2YgdGhlIG9yZGVyIG9mIGxpbmVzIGluIHRoZSBmaWxlKS4gRm9yIGV4YW1w
bGUsIGluOgorCisgICAgQlVHMSBSRUxFQVNFIDogZm9vLmh0bWwgPSBGQUlMCisgICAgQlVHMSBX
SU4gUkVMRUFTRSA6IGZvby5odG1sID0gUEFTUworICAgIEJVRzIgV0lOIDogYmFyLmh0bWwgPSBG
QUlMCisgICAgQlVHMiBERUJVRyA6IGJhci5odG1sID0gUEFTUworCisgICAgdGhlIGV4cGVjdGF0
aW9uIGZvciBmb28uaHRtbCBvbiBhIFdpbiBYUCBSZWxlYXNlIGJvdCB3b3VsZCBiZSBQQVNTIHNp
bmNlCisgICAgdGhlIHNjb3JlcyBmb3IgdGhlIGZpcnN0IHR3byBsaW5lcyBhcmUgMSBhbmQgMiwg
cmVzcGVjdGl2ZWx5LiBIb3dldmVyLAorICAgIGxpbmVzIHRocmVlIGFuZCBmb3VyIHdvdWxkIHBy
b2R1Y2UgYSBkdXBsaWNhdGUgZXhwZWN0YXRpb24gb24gIGEgV2luCisgICAgRGVidWcgYm90IHNp
bmNlIGJvdGggdGhlICd3aW4nIGFuZCB0aGUgJ2RlYnVnJyBleHBlY3RhdGlvbnMgd291bGQgYXBw
bHkuCisKKyAgICBJbiBhZGRpdGlvbiB0byB0aGUgZGVmaW5pdGlvbnMgb2YgYWxsIG9mIHRoZSBt
b2RpZmllcnMsIHRoZSBjbGFzcworICAgIHN1cHBvcnRzICJtYWNyb3MiIHRoYXQgYXJlIGV4cGFu
ZGVkIHByaW9yIHRvIGludGVycHJldGF0aW9uLCBhbmQgImlnbm9yZQorICAgIHJlZ2V4ZXMiIHRo
YXQgY2FuIGJlIHVzZWQgdG8gc2tpcCBvdmVyIG1vZGlmaWVycyBsaWtlIHRoZSBCVUcqIG1vZGlm
aWVycy4KKyAgICAiIiIKKyAgICBNQUNST1MgPSB7CisgICAgICAgICdtYWMtc25vd2xlb3BhcmQn
OiBbJ21hYycsICdzbm93bGVvcGFyZCddLAorICAgICAgICAnbWFjLWxlb3BhcmQnOiBbJ21hYycs
ICdsZW9wYXJkJ10sCisgICAgICAgICd3aW4teHAnOiBbJ3dpbicsICd4cCddLAorICAgICAgICAn
d2luLXZpc3RhJzogWyd3aW4nLCAndmlzdGEnXSwKKyAgICAgICAgJ3dpbi03JzogWyd3aW4nLCAn
d2luNyddLAorICAgIH0KKworICAgICMgV2UgZG9uJ3QgaW5jbHVkZSB0aGUgIm5vbmUiIG1vZGlm
aWVyIGJlY2F1c2UgaXQgaXNuJ3QgYWN0dWFsbHkgbGVnYWwuCisgICAgUkVHRVhFU19UT19JR05P
UkUgPSAoWydidWdcdysnXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdEV4cGVjdGF0
aW9uc0ZpbGUuTU9ESUZJRVJTLmtleXMoKVs6LTFdKQorICAgIERVUExJQ0FURV9SRUdFWEVTX0FM
TE9XRUQgPSBbJ2J1Z1x3KyddCisKKyAgICAjIE1hZ2ljIHZhbHVlIHJldHVybmVkIHdoZW4gdGhl
IG9wdGlvbnMgZG9uJ3QgbWF0Y2guCisgICAgTk9fTUFUQ0ggPSAtMQorCisgICAgIyBGSVhNRTog
VGhlIGNvZGUgY3VycmVudGx5IGRvZXNuJ3QgZGV0ZWN0IGNvbWJpbmF0aW9ucyBvZiBtb2RpZmll
cnMKKyAgICAjIHRoYXQgYXJlIHN5bnRhY3RpY2FsbHkgdmFsaWQgYnV0IHNlbWFudGljYWxseSBp
bnZhbGlkLCBsaWtlCisgICAgIyAnTUFDIFhQJy4gU2VlIE1vZGlmaWVyTWF0Y2hUZXN0LnRlc3Rf
aW52YWxpZF9jb21iaW5hdGlvbnMoKSBpbiB0aGUKKyAgICAjIF91bml0dGVzdC5weSBmaWxlLgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfY29uZmlnKToKKyAgICAgICAgIiIiSW5pdGlh
bGl6ZSBhIE1vZGlmaWVyTWF0Y2hlciBhcmd1bWVudCB3aXRoIHRoZSBUZXN0Q29uZmlndXJhdGlv
biBpdAorICAgICAgICBzaG91bGQgYmUgbWF0Y2hlZCBhZ2FpbnN0LiIiIgorICAgICAgICBzZWxm
LnRlc3RfY29uZmlnID0gdGVzdF9jb25maWcKKyAgICAgICAgc2VsZi5hbGxvd2VkX2NvbmZpZ3Vy
YXRpb25zID0gdGVzdF9jb25maWcuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKQorICAgICAgICBz
ZWxmLm1hY3JvcyA9IHNlbGYuTUFDUk9TCisKKyAgICAgICAgc2VsZi5yZWdleGVzX3RvX2lnbm9y
ZSA9IHt9CisgICAgICAgIGZvciByZWdleF9zdHIgaW4gc2VsZi5SRUdFWEVTX1RPX0lHTk9SRToK
KyAgICAgICAgICAgIHNlbGYucmVnZXhlc190b19pZ25vcmVbcmVnZXhfc3RyXSA9IHJlLmNvbXBp
bGUocmVnZXhfc3RyKQorCisgICAgICAgICMgS2VlcCBhIHNldCBvZiBhbGwgb2YgdGhlIGxlZ2Fs
IG1vZGlmaWVycyBmb3IgcXVpY2sgY2hlY2tpbmcuCisgICAgICAgIHNlbGYuX2FsbF9tb2RpZmll
cnMgPSBzZXQoKQorCisgICAgICAgICMgS2VlcCBhIGRpY3QgbWFwcGluZyB2YWx1ZXMgYmFjayB0
byB0aGVpciBjYXRlZ29yaWVzLgorICAgICAgICBzZWxmLl9jYXRlZ29yaWVzX2Zvcl9tb2RpZmll
cnMgPSB7fQorICAgICAgICBmb3IgY29uZmlnIGluIHNlbGYuYWxsb3dlZF9jb25maWd1cmF0aW9u
czoKKyAgICAgICAgICAgIGZvciBjYXRlZ29yeSwgbW9kaWZpZXIgaW4gY29uZmlnLml0ZW1zKCk6
CisgICAgICAgICAgICAgICAgc2VsZi5fY2F0ZWdvcmllc19mb3JfbW9kaWZpZXJzW21vZGlmaWVy
XSA9IGNhdGVnb3J5CisgICAgICAgICAgICAgICAgc2VsZi5fYWxsX21vZGlmaWVycy5hZGQobW9k
aWZpZXIpCisKKyAgICBkZWYgbWF0Y2goc2VsZiwgb3B0aW9ucyk6CisgICAgICAgICIiIkNoZWNr
cyBhIGxpc3Qgb2Ygb3B0aW9ucyBhZ2FpbnN0IHRoZSBjb25maWcgc2V0IGluIHRoZSBjb25zdHJ1
Y3Rvci4KKyAgICAgICAgT3B0aW9ucyBtYXkgYmUgZWl0aGVyIGFjdHVhbCBtb2RpZmllciBzdHJp
bmdzLCAibWFjcm8iIHN0cmluZ3MKKyAgICAgICAgdGhhdCBnZXQgZXhwYW5kZWQgdG8gYSBsaXN0
IG9mIG1vZGlmaWVycywgb3Igc3RyaW5ncyB0aGF0IGFyZSBhbGxvd2VkCisgICAgICAgIHRvIGJl
IGlnbm9yZWQuIEFsbCBvZiB0aGUgb3B0aW9ucyBtdXN0IGJlIHBhc3NlZCBpbiBpbiBsb3dlciBj
YXNlLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBtYXRjaGluZyBjYXRlZ29yaWVz
LCBvciBOT19NQVRDSCAoLTEpIGlmIGl0CisgICAgICAgIGRvZXNuJ3QgbWF0Y2ggb3IgdGhlcmUg
d2VyZSBlcnJvcnMgZm91bmQuIE1hdGNoZXMgYXJlIHByaW9yaXRpemVkCisgICAgICAgIGJ5IHRo
ZSBudW1iZXIgb2YgbWF0Y2hpbmcgY2F0ZWdvcmllcywgYmVjYXVzZSB0aGUgbW9yZSBzcGVjaWZp
YworICAgICAgICB0aGUgb3B0aW9ucyBsaXN0LCB0aGUgbW9yZSBjYXRlZ29yaWVzIHdpbGwgbWF0
Y2guCisKKyAgICAgICAgVGhlIHJlc3VsdHMgb2YgdGhlIG1vc3QgcmVjZW50IG1hdGNoIGFyZSBh
dmFpbGFibGUgaW4gdGhlICdvcHRpb25zJywKKyAgICAgICAgJ21vZGlmaWVycycsICdudW1fbWF0
Y2hlcycsICdlcnJvcnMnLCBhbmQgJ3dhcm5pbmdzJyBwcm9wZXJ0aWVzLgorICAgICAgICAiIiIK
KyAgICAgICAgcmVzdWx0ID0gTW9kaWZpZXJNYXRjaFJlc3VsdChvcHRpb25zKQorICAgICAgICBz
ZWxmLl9wYXJzZShyZXN1bHQpCisgICAgICAgIGlmIHJlc3VsdC5lcnJvcnM6CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0CisgICAgICAgIHNlbGYuX2NvdW50X21hdGNoZXMocmVzdWx0KQorICAg
ICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX3BhcnNlKHNlbGYsIHJlc3VsdCk6CisgICAg
ICAgICMgRklYTUU6IFNob3VsZCB3ZSB3YXJuIGFib3V0IGxpbmVzIGhhdmluZyBldmVyeSB2YWx1
ZSBpbiBhIGNhdGVnb3J5PworICAgICAgICBmb3Igb3B0aW9uIGluIHJlc3VsdC5vcHRpb25zOgor
ICAgICAgICAgICAgc2VsZi5fcGFyc2Vfb25lKG9wdGlvbiwgcmVzdWx0KQorCisgICAgZGVmIF9w
YXJzZV9vbmUoc2VsZiwgb3B0aW9uLCByZXN1bHQpOgorICAgICAgICBpZiBvcHRpb24gaW4gc2Vs
Zi5fYWxsX21vZGlmaWVyczoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9tb2RpZmllcihvcHRpb24s
IHJlc3VsdCkKKyAgICAgICAgZWxpZiBvcHRpb24gaW4gc2VsZi5tYWNyb3M6CisgICAgICAgICAg
ICBzZWxmLl9leHBhbmRfbWFjcm8ob3B0aW9uLCByZXN1bHQpCisgICAgICAgIGVsaWYgbm90IHNl
bGYuX21hdGNoZXNfYW55X3JlZ2V4KG9wdGlvbiwgcmVzdWx0KToKKyAgICAgICAgICAgIHJlc3Vs
dC5lcnJvcnMuYXBwZW5kKCJVbnJlY29nbml6ZWQgb3B0aW9uICclcyciICUgb3B0aW9uKQorCisg
ICAgZGVmIF9hZGRfbW9kaWZpZXIoc2VsZiwgb3B0aW9uLCByZXN1bHQpOgorICAgICAgICBpZiBv
cHRpb24gaW4gcmVzdWx0Lm1vZGlmaWVyczoKKyAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMuYXBw
ZW5kKCJNb3JlIHRoYW4gb25lICclcyciICUgb3B0aW9uKQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcmVzdWx0Lm1vZGlmaWVycy5hcHBlbmQob3B0aW9uKQorCisgICAgZGVmIF9leHBhbmRf
bWFjcm8oc2VsZiwgbWFjcm8sIHJlc3VsdCk6CisgICAgICAgIGlmIG1hY3JvIGluIHJlc3VsdC5f
bWF0Y2hlZF9tYWNyb3M6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiTW9yZSB0
aGFuIG9uZSAnJXMnIiAlIG1hY3JvKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgbW9k
cyA9IFtdCisgICAgICAgIGZvciBtb2RpZmllciBpbiBzZWxmLm1hY3Jvc1ttYWNyb106CisgICAg
ICAgICAgICBpZiBtb2RpZmllciBpbiByZXN1bHQub3B0aW9uczoKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuZXJyb3JzLmFwcGVuZCgiQ2FuJ3Qgc3BlY2lmeSBib3RoIG1vZGlmaWVyICclcycgYW5k
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWFjcm8gJyVzJyIgJSAo
bW9kaWZpZXIsIG1hY3JvKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbW9k
cy5hcHBlbmQobW9kaWZpZXIpCisgICAgICAgIHJlc3VsdC5fbWF0Y2hlZF9tYWNyb3MuYWRkKG1h
Y3JvKQorICAgICAgICByZXN1bHQubW9kaWZpZXJzLmV4dGVuZChtb2RzKQorCisgICAgZGVmIF9t
YXRjaGVzX2FueV9yZWdleChzZWxmLCBvcHRpb24sIHJlc3VsdCk6CisgICAgICAgIGZvciByZWdl
eF9zdHIsIHBhdHRlcm4gaW4gc2VsZi5yZWdleGVzX3RvX2lnbm9yZS5pdGVyaXRlbXMoKToKKyAg
ICAgICAgICAgIGlmIHBhdHRlcm4ubWF0Y2gob3B0aW9uKToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9oYW5kbGVfcmVnZXhfbWF0Y2gocmVnZXhfc3RyLCByZXN1bHQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX2hhbmRsZV9yZWdl
eF9tYXRjaChzZWxmLCByZWdleF9zdHIsIHJlc3VsdCk6CisgICAgICAgIGlmIChyZWdleF9zdHIg
aW4gcmVzdWx0Ll9tYXRjaGVkX3JlZ2V4ZXMgYW5kCisgICAgICAgICAgICByZWdleF9zdHIgbm90
IGluIHNlbGYuRFVQTElDQVRFX1JFR0VYRVNfQUxMT1dFRCk6CisgICAgICAgICAgICByZXN1bHQu
ZXJyb3JzLmFwcGVuZCgiTW9yZSB0aGFuIG9uZSBvcHRpb24gbWF0Y2hpbmcgJyVzJyIgJQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfc3RyKQorICAgICAgICBlbHNlOgor
ICAgICAgICAgICAgcmVzdWx0Ll9tYXRjaGVkX3JlZ2V4ZXMuYWRkKHJlZ2V4X3N0cikKKworICAg
IGRlZiBfY291bnRfbWF0Y2hlcyhzZWxmLCByZXN1bHQpOgorICAgICAgICAiIiJSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgbW9kaWZpZXJzIHRoYXQgbWF0Y2ggdGhlIHRlc3QgY29uZmlnLiIiIgorICAg
ICAgICBjYXRlZ29yaXplZF9tb2RpZmllcnMgPSBzZWxmLl9ncm91cF9ieV9jYXRlZ29yeShyZXN1
bHQubW9kaWZpZXJzKQorICAgICAgICByZXN1bHQubnVtX21hdGNoZXMgPSAwCisgICAgICAgIGZv
ciBjYXRlZ29yeSwgbW9kaWZpZXIgaW4gc2VsZi50ZXN0X2NvbmZpZy5pdGVtcygpOgorICAgICAg
ICAgICAgaWYgY2F0ZWdvcnkgaW4gY2F0ZWdvcml6ZWRfbW9kaWZpZXJzOgorICAgICAgICAgICAg
ICAgIGlmIG1vZGlmaWVyIGluIGNhdGVnb3JpemVkX21vZGlmaWVyc1tjYXRlZ29yeV06CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5udW1fbWF0Y2hlcyArPSAxCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm51bV9tYXRjaGVzID0gc2VsZi5OT19N
QVRDSAorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKworICAgIGRlZiBfZ3JvdXBfYnlfY2F0
ZWdvcnkoc2VsZiwgbW9kaWZpZXJzKToKKyAgICAgICAgIyBSZXR1cm5zIGEgZGljdCBvZiBjYXRl
Z29yeSBuYW1lIC0+IGxpc3Qgb2YgbW9kaWZpZXJzLgorICAgICAgICBtb2RpZmllcnNfYnlfY2F0
ZWdvcnkgPSB7fQorICAgICAgICBmb3IgbSBpbiBtb2RpZmllcnM6CisgICAgICAgICAgICBtb2Rp
ZmllcnNfYnlfY2F0ZWdvcnkuc2V0ZGVmYXVsdChzZWxmLl9jYXRlZ29yeShtKSwgW10pLmFwcGVu
ZChtKQorICAgICAgICByZXR1cm4gbW9kaWZpZXJzX2J5X2NhdGVnb3J5CisKKyAgICBkZWYgX2Nh
dGVnb3J5KHNlbGYsIG1vZGlmaWVyKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhdGVnb3JpZXNf
Zm9yX21vZGlmaWVyc1ttb2RpZmllcl0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggMzQ3NzFmMzAzOWFmZjEwYTBmZDIy
MGVmYTQ4MzY3NTVjNzcyOGVlMy4uYmZhYzU3ZjQwNTUxZmQ5YjUwODhjMDM2ZmVjOGU3ZjNjNGNi
NTE3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnNfdW5pdHRlc3QucHkKQEAgLTM0LDYgKzM0LDcgQEAgaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0
ZXN0CiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Citmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgKgogCiBjbGFzcyBG
dW5jdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTgwLDYgKzgxLDkgQEAgY2xhc3Mg
RnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIAogY2xhc3MgQmFzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgIyBOb3RlIHRoYXQgYWxsIG9mIHRoZXNlIHRlc3RzIGFyZSB3cml0
dGVuIGFzc3VtaW5nIHRoZSBjb25maWd1cmF0aW9uCisgICAgIyBiZWluZyB0ZXN0ZWQgaXMgTWFj
IExlb3BhcmQsIFJlbGVhc2UgYnVpbGQuCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdEZ1
bmMsIHNldFVwPU5vbmUsIHRlYXJEb3duPU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUpOgogICAgICAg
ICBzZWxmLl9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3QnLCBOb25lKQogICAgICAgICBzZWxmLl9leHAg
PSBOb25lCkBAIC0xMDUsMTMgKzEwOSwxMiBAQCBCVUdfVEVTVCBXT05URklYIDogZmFpbHVyZXMv
ZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCA9IElNQUdFCiBCVUdfVEVTVCBXT05URklYIFdJ
TiA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBJTUFHRQogIiIiCiAKLSAgICBkZWYg
cGFyc2VfZXhwKHNlbGYsIGV4cGVjdGF0aW9ucywgb3ZlcnJpZGVzPU5vbmUsIGlzX2xpbnRfbW9k
ZT1GYWxzZSwKLSAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9RmFsc2UpOgorICAgIGRl
ZiBwYXJzZV9leHAoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVycmlkZXM9Tm9uZSwgaXNfbGludF9t
b2RlPUZhbHNlKToKKyAgICAgICAgdGVzdF9jb25maWcgPSBzZWxmLl9wb3J0LnRlc3RfY29uZmln
dXJhdGlvbigpCiAgICAgICAgIHNlbGYuX2V4cCA9IFRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcG9y
dCwKICAgICAgICAgICAgICB0ZXN0cz1zZWxmLmdldF9iYXNpY190ZXN0cygpLAogICAgICAgICAg
ICAgIGV4cGVjdGF0aW9ucz1leHBlY3RhdGlvbnMsCi0gICAgICAgICAgICAgdGVzdF9wbGF0Zm9y
bV9uYW1lPXNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCksCi0gICAgICAgICAgICAgaXNf
ZGVidWdfbW9kZT1pc19kZWJ1Z19tb2RlLAorICAgICAgICAgICAgIHRlc3RfY29uZmlnPXRlc3Rf
Y29uZmlnLAogICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1pc19saW50X21vZGUsCiAgICAgICAg
ICAgICAgb3ZlcnJpZGVzPW92ZXJyaWRlcykKIApAQCAtMTIwLDcgKzEyMyw3IEBAIEJVR19URVNU
IFdPTlRGSVggV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNldChbcmVzdWx0XSkpCiAKIAotY2xhc3MgVGVzdEV4cGVj
dGF0aW9uc1Rlc3QoQmFzZSk6CitjbGFzcyBCYXNpY1Rlc3RzKEJhc2UpOgogICAgIGRlZiB0ZXN0
X2Jhc2ljKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBl
Y3RhdGlvbnMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwnLCBURVhUKQpAQCAtMTI4LDIzICsxMzEsMTQgQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uc1Rlc3QoQmFzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgncGFzc2VzL3RleHQuaHRt
bCcsIFBBU1MpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1h
Z2UuaHRtbCcsIFBBU1MpCiAKKworY2xhc3MgTWlzY1Rlc3RzKEJhc2UpOgogICAgIGRlZiB0ZXN0
X211bHRpcGxlX3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdYIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCBDUkFTSCcpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5fZXhwLmdldF9leHBlY3RhdGlvbnMoCiAgICAgICAgICAgICBzZWxm
LmdldF90ZXN0KCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKSksCiAgICAgICAgICAgICBz
ZXQoW1RFWFQsIENSQVNIXSkpCiAKLSAgICBkZWYgdGVzdF9wcmVjZWRlbmNlKHNlbGYpOgotICAg
ICAgICAjIFRoaXMgdGVzdHMgaGFuZGxpbmcgcHJlY2VkZW5jZSBvZiBzcGVjaWZpYyBsaW5lcyBv
dmVyIGRpcmVjdG9yaWVzCi0gICAgICAgICMgYW5kIHRlc3RzIGV4cGVjdGF0aW9ucyBjb3Zlcmlu
ZyBlbnRpcmUgZGlyZWN0b3JpZXMuCi0gICAgICAgIGV4cF9zdHIgPSAiIiIKLUJVR1ggOiBmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCi1CVUdYIFdPTlRGSVggOiBmYWlsdXJlcy9l
eHBlY3RlZCA9IElNQUdFCi0iIiIKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0cikKLSAg
ICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhU
KQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwn
LCBJTUFHRSkKLQogICAgIGRlZiB0ZXN0X2NhdGVnb3J5X2V4cGVjdGF0aW9ucyhzZWxmKToKICAg
ICAgICAgIyBUaGlzIHRlc3QgY2hlY2tzIHVua25vd24gdGVzdHMgYXJlIG5vdCBwcmVzZW50IGlu
IHRoZQogICAgICAgICAjIGV4cGVjdGF0aW9ucyBhbmQgdGhhdCBrbm93biB0ZXN0IHBhcnQgb2Yg
YSB0ZXN0IGNhdGVnb3J5IGlzCkBAIC0xNTksMjAgKzE1Myw2IEBAIEJVR1ggV09OVEZJWCA6IGZh
aWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93
bl90ZXN0KQogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2NyYXNo
Lmh0bWwnLCBJTUFHRSkKIAotICAgIGRlZiB0ZXN0X3JlbGVhc2VfbW9kZShzZWxmKToKLSAgICAg
ICAgc2VsZi5wYXJzZV9leHAoJ0JVR1ggREVCVUcgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwgPSBURVhUJywKLSAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1UcnVlKQot
ICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRF
WFQpCi0gICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdYIFJFTEVBU0UgOiBmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVidWdf
bW9kZT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCcsIFBBU1MpCi0gICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdYIERFQlVHIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcsCi0gICAgICAgICAgICAgICAgICAgICAg
IGlzX2RlYnVnX21vZGU9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywgUEFTUykKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1gg
UkVMRUFTRSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAg
ICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydF9l
eHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCi0KICAgICBkZWYgdGVzdF9n
ZXRfb3B0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNf
ZXhwZWN0YXRpb25zKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZXhwLmdldF9v
cHRpb25zKApAQCAtMjE3LDcgKzE5Nyw3IEBAIFNLSVAgOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFn
ZS5odG1sIiIiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShUcnVlLCAiUGFyc2VFcnJv
ciB3YXNuJ3QgcmFpc2VkIikKICAgICAgICAgZXhjZXB0IFBhcnNlRXJyb3IsIGU6CiAgICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZS5mYXRhbCkKLSAgICAgICAgICAgIGV4cF9lcnJvcnMgPSBb
dSdMaW5lOjEgSW52YWxpZCBtb2RpZmllciBmb3IgdGVzdDogZm9vIGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCcsCisgICAgICAgICAgICBleHBfZXJyb3JzID0gW3UiTGluZToxIFVucmVjb2du
aXplZCBvcHRpb24gJ2ZvbycgZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sIiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdSJMaW5lOjIgTWlzc2luZyBleHBlY3RhdGlvbnMuIFsnIGZhaWx1
cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwnXSJdCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cihlKSwgJ1xuJy5qb2luKG1hcChzdHIsIGV4cF9lcnJvcnMpKSkKICAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZS5lcnJvcnMsIGV4cF9lcnJvcnMpCkBAIC0yMzMsNzcgKzIxMywxMjgg
QEAgU0tJUCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJ1xuJy5qb2luKG1hcChzdHIsIGV4cF9lcnJvcnMpKSkK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJvcnMsIGV4cF9lcnJvcnMpCiAKLSAg
ICBkZWYgdGVzdF9zeW50YXhfbWlzc2luZ19leHBlY3RhdGlvbihzZWxmKToKKyAgICBkZWYgdGVz
dF9vdmVycmlkZXMoc2VsZik6CisgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2lj
X2V4cGVjdGF0aW9ucygpLCAiIiIKK0JVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IElNQUdFIiIiKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsIElNQUdFKQorCisgICAgZGVmIHRlc3RfcGl4ZWxfdGVzdHNfZmxh
ZyhzZWxmKToKKyAgICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5h
YmxlZCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0ZWRf
cmVzdWx0KAorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwgcGl4
ZWxfdGVzdHNfZW5hYmxlZCkKKworICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNp
Y19leHBlY3RhdGlvbnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBGYWxzZSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCcsIENSQVNILCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywgSU1B
R0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywg
UEFTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgU0tJUCwg
RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nlcy90ZXh0Lmh0bWwn
LCBQQVNTLCBGYWxzZSkpCisKKworY2xhc3MgRXhwZWN0YXRpb25TeW50YXhUZXN0cyhCYXNlKToK
KyAgICBkZWYgdGVzdF9taXNzaW5nX2V4cGVjdGF0aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMg
aXMgbWlzc2luZyB0aGUgZXhwZWN0YXRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBh
cnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVH
X1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzX2RlYnVnX21vZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JV
R19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKQogCi0gICAgZGVmIHRlc3Rfc3lu
dGF4X2ludmFsaWRfb3B0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X21pc3NpbmdfY29sb24oc2Vs
Zik6CisgICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMgYW5kIHRoZSAnOicK
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVCBGT086IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFBBU1MnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgdGVzdF9zeW50YXhfaW52YWxp
ZF9leHBlY3RhdGlvbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIGV4cGVj
dGF0aW9uLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNl
X2V4cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwgPSBGT08nKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4X21pc3NpbmdfYnVn
aWQoc2VsZik6CitjbGFzcyBTZW1hbnRpY1Rlc3RzKEJhc2UpOgorICAgIGRlZiB0ZXN0X2J1Z19m
b3JtYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYu
cGFyc2VfZXhwLCAnQlVHMTIzNCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQn
KQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19idWdpZChzZWxmKToKICAgICAgICAgIyBUaGlzIHNo
b3VsZCBsb2cgYSBub24tZmF0YWwgZXJyb3IuCiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCdTTE9X
IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCiAgICAgICAgICAgICBsZW4oc2VsZi5fZXhwLl9leHBlY3RlZF9mYWlsdXJlcy5n
ZXRfbm9uX2ZhdGFsX2Vycm9ycygpKSwgMSkKIAotICAgIGRlZiB0ZXN0X3NlbWFudGljX3Nsb3df
YW5kX3RpbWVvdXQoc2VsZik6CisgICAgZGVmIHRlc3Rfc2xvd19hbmRfdGltZW91dChzZWxmKToK
ICAgICAgICAgIyBBIHRlc3QgY2Fubm90IGJlIFNMT1cgYW5kIGV4cGVjdGVkIHRvIFRJTUVPVVQu
CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAog
ICAgICAgICAgICAgJ0JVR19URVNUIFNMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0
bWwgPSBUSU1FT1VUJykKIAotICAgIGRlZiB0ZXN0X3NlbWFudGljX3JlYmFzZWxpbmUoc2VsZik6
CisgICAgZGVmIHRlc3RfcmViYXNlbGluZShzZWxmKToKICAgICAgICAgIyBDYW4ndCBsaW50IGEg
ZmlsZSB3LyAnUkVCQVNFTElORScgaW4gaXQuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBh
cnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAogICAgICAgICAgICAgJ0JVR19URVNUIFJFQkFTRUxJ
TkUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKICAgICAgICAgICAgIGlz
X2xpbnRfbW9kZT1UcnVlKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfZHVwbGljYXRlcyhzZWxm
KToKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgIiIiCi1CVUdfVEVTVCA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gSU1BR0UiIiIpCitCVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVAorQlVHX0VYUCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdF
IiIiKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2Vf
ZXhwLAotICAgICAgICAgICAgc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCksICIiIgotQlVH
X1RFU1QgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCi1CVUdfVEVTVCA6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIiIiKQorICAgICAgICAgICAgc2VsZi5n
ZXRfYmFzaWNfZXhwZWN0YXRpb25zKCksIG92ZXJyaWRlcz0iIiIKK0JVR19PVkVSUklERSA6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKK0JVR19PVkVSUklERSA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIiIiLCApCiAKLSAgICBkZWYgdGVzdF9zZW1hbnRp
Y19taXNzaW5nX2ZpbGUoc2VsZik6CisgICAgZGVmIHRlc3RfbWlzc2luZ19maWxlKHNlbGYpOgog
ICAgICAgICAjIFRoaXMgc2hvdWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KICAgICAgICAgc2Vs
Zi5wYXJzZV9leHAoJ0JVR19URVNUIDogbWlzc2luZ19maWxlLmh0bWwgPSBURVhUJykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGxlbihzZWxmLl9leHAuX2V4cGVjdGVk
X2ZhaWx1cmVzLmdldF9ub25fZmF0YWxfZXJyb3JzKCkpLCAxKQogCiAKLSAgICBkZWYgdGVzdF9v
dmVycmlkZXMoc2VsZik6Ci0gICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4
cGVjdGF0aW9ucygpLCAiIiIKLUJVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCA9IElNQUdFIiIiKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCcsIElNQUdFKQorY2xhc3MgUHJlY2VkZW5jZVRlc3RzKEJhc2UpOgorICAg
IGRlZiB0ZXN0X2ZpbGVfb3Zlcl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXN0
cyBoYW5kbGluZyBwcmVjZWRlbmNlIG9mIHNwZWNpZmljIGxpbmVzIG92ZXIgZGlyZWN0b3JpZXMK
KyAgICAgICAgIyBhbmQgdGVzdHMgZXhwZWN0YXRpb25zIGNvdmVyaW5nIGVudGlyZSBkaXJlY3Rv
cmllcy4KKyAgICAgICAgZXhwX3N0ciA9ICIiIgorQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IFRFWFQKK0JVR1ggV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UK
KyIiIgorICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFzc2Vy
dF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAg
ZGVmIHRlc3RfbWF0Y2hlc19hbl9leHBlY3RlZF9yZXN1bHQoc2VsZik6CisgICAgZGVmIHRlc3Rf
YW1iaWd1b3VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBz
ZWxmLnBhcnNlX2V4cCwgIiIiCitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9
IFBBU1MKK0JVR19URVNUIE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMCisiIiIpCiAKLSAg
ICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5hYmxlZCk6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAotICAg
ICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5h
YmxlZCkKKyAgICBkZWYgdGVzdF9tb3JlX3dpbnMoc2VsZik6CisgICAgICAgIGV4cF9zdHIgPSAi
IiIKK0JVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUworQlVHX1RFU1Qg
TUFDIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAorIiIiCisgICAgICAgIHNlbGYu
cGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgncGFzc2VzL3RleHQu
aHRtbCcsIFRFWFQpCiAKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhw
ZWN0YXRpb25zKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sJywgVEVYVCwgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSht
YXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCwgRmFsc2UpKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBD
UkFTSCwgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsIENSQVNILCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIElNQUdFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIFBBU1Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIFNLSVAsIEZhbHNl
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdwYXNzZXMvdGV4dC5odG1sJywgUEFT
UywgRmFsc2UpKQorICAgIGRlZiB0ZXN0X29yZGVyX2luX2ZpbGVfZG9lc19ub3RfbWF0dGVyKHNl
bGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBNQUMgUkVMRUFTRSA6IHBhc3Nl
cy90ZXh0Lmh0bWwgPSBURVhUCitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9
IFBBU1MKKyIiIgorICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxm
LmFzc2VydF9leHAoJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBURVhUKQorCisgICAgZGVmIHRlc3RfdmVy
c2lvbl93aW5zKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBNQUMgOiBw
YXNzZXMvdGV4dC5odG1sID0gUEFTUworQlVHX1RFU1QgTUFDIExFT1BBUkQgOiBwYXNzZXMvdGV4
dC5odG1sID0gVEVYVAorIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2V4cCgncGFzc2VzL3RleHQuaHRtbCcsIFRFWFQpCisKKyAgICBkZWYg
dGVzdF9tYWNybyhzZWxmKToKKyAgICAgICAgZXhwX3N0ciA9ICIiIgorQlVHX1RFU1QgTUFDIDog
cGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNUIE1BQy1MRU9QQVJEIDogcGFzc2VzL3Rl
eHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAg
ICAgICBzZWxmLmFzc2VydF9leHAoJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBURVhUKQogCiAKIGNsYXNz
IFJlYmFzZWxpbmluZ1Rlc3QoQmFzZSk6CkBAIC0zNDYsNSArMzc3LDg1IEBAIEJVR19URVNUIFJF
QkFTRUxJTkUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCiAgICAgICAgICAg
ICAnXG5cbicpCiAKIAorY2xhc3MgTW9kaWZpZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Cisg
ICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0Jywg
Tm9uZSkKKyAgICAgICAgc2VsZi5jb25maWcgPSBwb3J0X29iai50ZXN0X2NvbmZpZ3VyYXRpb24o
KQorICAgICAgICBzZWxmLm1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIoc2VsZi5jb25maWcpCisK
KyAgICBkZWYgbWF0Y2goc2VsZiwgbW9kaWZpZXJzLCBleHBlY3RlZF9udW1fbWF0Y2hlcz0tMSwg
dmFsdWVzPU5vbmUsIG51bV9lcnJvcnM9MCk6CisgICAgICAgIG1hdGNoZXIgPSBzZWxmLm1hdGNo
ZXIKKyAgICAgICAgaWYgdmFsdWVzOgorICAgICAgICAgICAgbWF0Y2hlciA9IE1vZGlmaWVyTWF0
Y2hlcihzZWxmLkZha2VUZXN0Q29uZmlndXJhdGlvbih2YWx1ZXMpKQorICAgICAgICBtYXRjaF9y
ZXN1bHQgPSBtYXRjaGVyLm1hdGNoKG1vZGlmaWVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4obWF0Y2hfcmVzdWx0Lndhcm5pbmdzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChsZW4obWF0Y2hfcmVzdWx0LmVycm9ycyksIG51bV9lcnJvcnMpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwobWF0Y2hfcmVzdWx0Lm51bV9tYXRjaGVzLCBleHBlY3RlZF9udW1fbWF0Y2hlcywK
KyAgICAgICAgICAgICAnbWF0Y2goJXMsICVzKSByZXR1cm5lZCAtPiAlZCwgZXhwZWN0ZWQgJWQn
ICUKKyAgICAgICAgICAgICAobW9kaWZpZXJzLCBzdHIoc2VsZi5jb25maWcudmFsdWVzKCkpLAor
ICAgICAgICAgICAgICBtYXRjaF9yZXN1bHQubnVtX21hdGNoZXMsIGV4cGVjdGVkX251bV9tYXRj
aGVzKSkKKworICAgIGRlZiB0ZXN0X2JhZF9tYXRjaF9tb2RpZmllcihzZWxmKToKKyAgICAgICAg
c2VsZi5tYXRjaChbJ2ZvbyddLCBudW1fZXJyb3JzPTEpCisKKyAgICBkZWYgdGVzdF9ub25lKHNl
bGYpOgorICAgICAgICBzZWxmLm1hdGNoKFtdLCAwKQorCisgICAgZGVmIHRlc3Rfb25lKHNlbGYp
OgorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFyZCddLCAxKQorICAgICAgICBzZWxmLm1hdGNo
KFsnbWFjJ10sIDEpCisgICAgICAgIHNlbGYubWF0Y2goWydyZWxlYXNlJ10sIDEpCisgICAgICAg
IHNlbGYubWF0Y2goWydjcHUnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3g4NiddLCAxKQor
ICAgICAgICBzZWxmLm1hdGNoKFsneHAnXSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWydncHUn
XSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWydkZWJ1ZyddLCAtMSkKKworICAgIGRlZiB0ZXN0
X3R3byhzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnLCAncmVsZWFzZSddLCAy
KQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZSddLCAtMSkKKyAgICAgICAgc2Vs
Zi5tYXRjaChbJ3hwJywgJ3JlbGVhc2UnXSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWydzbm93
bGVvcGFyZCcsICdsZW9wYXJkJ10sIDEpCisKKyAgICBkZWYgdGVzdF90aHJlZShzZWxmKToKKyAg
ICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJkJywgJ2xlb3BhcmQnLCAncmVsZWFzZSddLCAy
KQorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFyZCcsICdkZWJ1ZycsICd4ODYnXSwgLTEpCisg
ICAgICAgIHNlbGYubWF0Y2goWydsZW9wYXJkJywgJ3JlbGVhc2UnLCAneDg2J10sIDMpCisgICAg
ICAgIHNlbGYubWF0Y2goWydsZW9wYXJkJywgJ2NwdScsICdyZWxlYXNlJ10sIDMpCisKKyAgICBk
ZWYgdGVzdF9mb3VyKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFyZCcsICdyZWxl
YXNlJywgJ2NwdScsICd4ODYnXSwgNCkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJk
JywgJ2xlb3BhcmQnLCAncmVsZWFzZScsICdjcHUnXSwgMykKKyAgICAgICAgc2VsZi5tYXRjaChb
J3Nub3dsZW9wYXJkJywgJ2xlb3BhcmQnLCAnZGVidWcnLCAnY3B1J10sIC0xKQorCisgICAgZGVm
IHRlc3RfY2FzZV9pbnNlbnNpdGl2aXR5KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnTWFj
J10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ01BQyddLCBudW1fZXJyb3Jz
PTEpCisgICAgICAgIHNlbGYubWF0Y2goWydtYWMnXSwgMSkKKworICAgIGRlZiB0ZXN0X2R1cGxp
Y2F0ZXMoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydyZWxlYXNlJywgJ3JlbGVhc2UnXSwg
bnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnbWFjLWxlb3BhcmQnLCAnbGVvcGFy
ZCddLCBudW1fZXJyb3JzPTEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdyZWxlYXNlJywg
J3hwJywgJ3JlbGVhc2UnXSwgbnVtX2Vycm9ycz0yKQorICAgICAgICBzZWxmLm1hdGNoKFsncmVi
YXNlbGluZScsICdyZWJhc2VsaW5lJ10sIG51bV9lcnJvcnM9MSkKKworICAgIGRlZiB0ZXN0X3Vu
a25vd25fb3B0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsndm1zJ10sIG51bV9lcnJv
cnM9MSkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9idWdzKHNlbGYpOgorICAgICAgICAjIEJV
RyogcmVnZXhlcyBjYW4gYXBwZWFyIG11bHRpcGxlIHRpbWVzLgorICAgICAgICBzZWxmLm1hdGNo
KFsnYnVnZm9vJywgJ2J1Z2JhciddLCAwKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb21iaW5h
dGlvbnMoc2VsZik6CisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJhaXNl
IGFuIGVycm9yIGluc3RlYWQgb2YgTk9fTUFUQ0guCisgICAgICAgIHNlbGYubWF0Y2goWydtYWMn
LCAneHAnXSwgbnVtX2Vycm9ycz0wKQorCisgICAgZGVmIHRlc3RfcmVnZXhlc19hcmVfaWdub3Jl
ZChzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ2J1ZzEyM3h5JywgJ3JlYmFzZWxpbmUnLCAn
d29udGZpeCcsICdzbG93JywgJ3NraXAnXSwgMCkKKworICAgIGRlZiB0ZXN0X25vbmVfaXNfaW52
YWxpZChzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ25vbmUnXSwgbnVtX2Vycm9ycz0xKQor
CisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CmluZGV4IDI0ZDA0Y2EwMWQxZjExYmExYWIwMzQx
YWUxMTc0OTkzNWM4MmEwN2IuLjkxNjc3N2Y3OTE1NzVhYWE1MjRhZTQ0NDU5MmY1OTc1NmRjYWEw
NzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CkBAIC0yMTIsMjEgKzIxMiwx
MyBAQCBjbGFzcyBUZXN0UnVubmVyOgogCiAgICAgZGVmIGxpbnQoc2VsZik6CiAgICAgICAgIGxp
bnRfZmFpbGVkID0gRmFsc2UKLQotICAgICAgICAjIENyZWF0aW5nIHRoZSBleHBlY2F0aW9ucyBm
b3IgZWFjaCBwbGF0Zm9ybS9jb25maWd1cmF0aW9uIHBhaXIgZG9lcwotICAgICAgICAjIGFsbCB0
aGUgdGVzdCBsaXN0IHBhcnNpbmcgYW5kIGVuc3VyZXMgaXQncyBjb3JyZWN0IHN5bnRheCAoZS5n
LiBubwotICAgICAgICAjIGR1cGVzKS4KLSAgICAgICAgZm9yIHBsYXRmb3JtX25hbWUgaW4gc2Vs
Zi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWVzKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm1fbmFtZSwgaXNfZGVidWdf
bW9kZT1UcnVlKQotICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJy
b3I6Ci0gICAgICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCisgICAgICAgIGZvciB0ZXN0
X2NvbmZpZ3VyYXRpb24gaW4gc2VsZi5fcG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpOgog
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25z
KHBsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGU9RmFsc2UpCisgICAgICAgICAgICAgICAgc2Vs
Zi5saW50X2V4cGVjdGF0aW9ucyh0ZXN0X2NvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICBleGNl
cHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoKICAgICAgICAgICAgICAgICBsaW50X2Zh
aWxlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIiKQogCi0g
ICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIpCiAgICAgICAgIGlmIGxpbnRfZmFpbGVkOgog
ICAgICAgICAgICAgX2xvZy5lcnJvcigiTGludCBmYWlsZWQuIikKICAgICAgICAgICAgIHJldHVy
biAtMQpAQCAtMjM0LDIyICsyMjYsMjggQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgX2xv
Zy5pbmZvKCJMaW50IHN1Y2NlZWRlZC4iKQogICAgICAgICByZXR1cm4gMAogCi0gICAgZGVmIHBh
cnNlX2V4cGVjdGF0aW9ucyhzZWxmLCB0ZXN0X3BsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGUp
OgorICAgIGRlZiBsaW50X2V4cGVjdGF0aW9ucyhzZWxmLCBjb25maWcpOgorICAgICAgICBwb3J0
ID0gc2VsZi5fcG9ydAorICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25z
KAorICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBwb3J0
LnRlc3RfZXhwZWN0YXRpb25zKCksCisgICAgICAgICAgICBjb25maWcsCisgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKKyAgICAgICAgICAgIHBvcnQudGVzdF9leHBl
Y3RhdGlvbnNfb3ZlcnJpZGVzKCkpCisKKyAgICBkZWYgcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYp
OgogICAgICAgICAiIiJQYXJzZSB0aGUgZXhwZWN0YXRpb25zIGZyb20gdGhlIHRlc3RfbGlzdCBm
aWxlcyBhbmQgcmV0dXJuIGEgZGF0YQogICAgICAgICBzdHJ1Y3R1cmUgaG9sZGluZyB0aGVtLiBU
aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHRlc3RfbGlzdCBmaWxlcyBoYXZlCiAgICAgICAgIGludmFs
aWQgc3ludGF4LiIiIgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlczoK
LSAgICAgICAgICAgIHRlc3RfZmlsZXMgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICB0ZXN0X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxlcwotCi0gICAgICAgIGV4cGVjdGF0aW9uc19z
dHIgPSBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25zKCkKLSAgICAgICAgb3ZlcnJpZGVzX3N0
ciA9IHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkKKyAgICAgICAgcG9y
dCA9IHNlbGYuX3BvcnQKICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3Rh
dGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKLSAgICAgICAgICAgIHNlbGYuX3BvcnQsIHRlc3RfZmls
ZXMsIGV4cGVjdGF0aW9uc19zdHIsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgIGlz
X2RlYnVnX21vZGUsIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAotICAgICAgICAgICAg
b3ZlcnJpZGVzPW92ZXJyaWRlc19zdHIpCi0gICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlv
bnMKKyAgICAgICAgICAgIHBvcnQsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzLAorICAg
ICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAorICAgICAgICAgICAgcG9ydC50ZXN0
X2NvbmZpZ3VyYXRpb24oKSwKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2Zp
bGVzLAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKIAog
ICAgIGRlZiBwcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQoc2VsZik6CiAgICAgICAgICIi
IkNyZWF0ZSBhcHByb3ByaWF0ZSBzdWJzZXRzIG9mIHRlc3QgbGlzdHMgYW5kIHJldHVybnMgYQpA
QCAtMzU2LDkgKzM1NCw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICBzZWxmLl90
ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcyArIHNraXBfY2h1bmtfbGlzdAogICAgICAgICAgICAgc2Vs
Zi5fdGVzdF9maWxlcyA9IHNldChzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCiAKLSAgICAgICAgICAg
IHNlbGYuX2V4cGVjdGF0aW9ucyA9IHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKAotICAgICAgICAg
ICAgICAgIHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCksCi0gICAgICAgICAgICAgICAg
c2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID09ICdEZWJ1ZycpCisgICAgICAgICAgICBzZWxm
LnBhcnNlX2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBz
ZXQoZmlsZXMpCiAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4
IDk3YjU0Yzk3ZDgxZmZmOTM5OTkxZTZhZWIyYTMzMzE2MDg4ODgxNTIuLjA2MjI1N2Q1OGQ3ZmFj
MGRlODM0NWYyOGQyMmY3MDIwNmFkZTFlY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTEyMSw2ICsxMjEsNyBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCdjb25maWd1cmF0
aW9uJywgTm9uZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIGlzIE5v
bmU6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRlZmF1
bHRfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbiA9IE5v
bmUKIAogICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgIiIi
UmV0dXJuIHRoZSBudW1iZXIgb2YgRHVtcFJlbmRlclRyZWUgaW5zdGFuY2VzIHRvIHVzZSBmb3Ig
dGhpcwpAQCAtNTc0LDYgKzU3NSwxOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGlm
IHNlbGYuX2h0dHBfbG9jazoKICAgICAgICAgICAgIHNlbGYuX2h0dHBfbG9jay5jbGVhbnVwX2h0
dHBfbG9jaygpCiAKKyAgICAjCisgICAgIyBURVNUIEVYUEVDVEFUSU9OLVJFTEFURUQgTUVUSE9E
UworICAgICMKKworICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgICIi
IlJldHVybnMgdGhlIGN1cnJlbnQgVGVzdENvbmZpZ3VyYXRpb24gZm9yIHRoZSBwb3J0LiIiIgor
ICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uOgorICAgICAgICAgICAgc2Vs
Zi5fdGVzdF9jb25maWd1cmF0aW9uID0gVGVzdENvbmZpZ3VyYXRpb24oc2VsZikKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbgorCisgICAgZGVmIGFsbF90ZXN0X2NvbmZp
Z3VyYXRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24o
KS5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpCisKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnMo
c2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGlz
IHBvcnQuCiAKQEAgLTg2MCwzICs4NzQsNjggQEAgY2xhc3MgRHJpdmVyOgogCiAgICAgZGVmIHN0
b3Aoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ0RyaXZlci5zdG9w
JykKKworCitjbGFzcyBUZXN0Q29uZmlndXJhdGlvbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwb3J0PU5vbmUsIG9zPU5vbmUsIHZlcnNpb249Tm9uZSwgYXJjaGl0ZWN0dXJlPU5v
bmUsCisgICAgICAgICAgICAgICAgIGJ1aWxkX3R5cGU9Tm9uZSwgZ3JhcGhpY3NfdHlwZT1Ob25l
KToKKworICAgICAgICAjIEZJWE1FOiBXZSBjYW4gZ2V0IHRoZSBPL1MgYW5kIHZlcnNpb24gZnJv
bSB0ZXN0X3BsYXRmb3JtX25hbWUoKQorICAgICAgICAjIGFuZCB2ZXJzaW9uKCkgZm9yIG5vdywg
YnV0IHRob3NlIHNob3VsZCBnbyBhd2F5IGFuZCBiZSBjbGVhbmVkIHVwCisgICAgICAgICMgd2l0
aCBtb3JlIGdlbmVyaWMgbWV0aG9kcyBsaWtlIG9wZXJhdGlvbl9zeXN0ZW0oKSBhbmQgb3NfdmVy
c2lvbigpCisgICAgICAgICMgb3Igc29tZXRoaW5nLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBzdHJp
cCB0aGUgbGVhZGluZyAnLScgb2ZmIHRoZQorICAgICAgICAjIHZlcnNpb24gc3RyaW5nIGlmIGl0
IGlzIHByZXNlbnQuCisgICAgICAgIGlmIHBvcnQ6CisgICAgICAgICAgICBwb3J0X3ZlcnNpb24g
PSBwb3J0LnZlcnNpb24oKQorICAgICAgICBzZWxmLm9zID0gb3Mgb3IgcG9ydC50ZXN0X3BsYXRm
b3JtX25hbWUoKS5yZXBsYWNlKHBvcnRfdmVyc2lvbiwgJycpCisgICAgICAgIHNlbGYudmVyc2lv
biA9IHZlcnNpb24gb3IgcG9ydF92ZXJzaW9uWzE6XQorICAgICAgICBzZWxmLmFyY2hpdGVjdHVy
ZSA9IGFyY2hpdGVjdHVyZSBvciAneDg2JworICAgICAgICBzZWxmLmJ1aWxkX3R5cGUgPSBidWls
ZF90eXBlIG9yIHBvcnQuX29wdGlvbnMuY29uZmlndXJhdGlvbi5sb3dlcigpCisgICAgICAgIHNl
bGYuZ3JhcGhpY3NfdHlwZSA9IGdyYXBoaWNzX3R5cGUgb3IgJ2NwdScKKworICAgIGRlZiBpdGVt
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18uaXRlbXMoKQorCisgICAgZGVm
IGtleXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fLmtleXMoKQorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAoIjwlKHZlcnNpb24pcywgJShidWls
ZF90eXBlKXMsICUoZ3JhcGhpY3NfdHlwZSlzPiIgJQorICAgICAgICAgICAgICAgIHNlbGYuX19k
aWN0X18pCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiVGVzdENv
bmZpZyhvcz0nJShvcylzJywgdmVyc2lvbj0nJSh2ZXJzaW9uKXMnLCBhcmNoaXRlY3R1cmU9JyUo
YXJjaGl0ZWN0dXJlKXMnLCBidWlsZF90eXBlPSclKGJ1aWxkX3R5cGUpcycsIGdyYXBoaWNzX3R5
cGU9JyUoZ3JhcGhpY3NfdHlwZSlzJykiICUgc2VsZi5fX2RpY3RfXworCisgICAgZGVmIHZhbHVl
cyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiB2YWx1ZXMgb2Yg
dGhpcyBpbnN0YW5jZSBhcyBhIHR1cGxlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3Rf
Xy52YWx1ZXMoKQorCisgICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgorICAg
ICAgICAiIiJSZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIFRlc3RDb25maWd1cmF0aW9ucyB0aGUg
cG9ydCBzdXBwb3J0cy4iIiIKKyAgICAgICAgIyBCeSBkZWZhdWx0LCB3ZSBhc3N1bWUgd2Ugd2Fu
dCB0byB0ZXN0IGV2ZXJ5IGdyYXBoaWNzIHR5cGUgaW4KKyAgICAgICAgIyBldmVyeSBjb25maWd1
cmF0aW9uIG9uIGV2ZXJ5IHN5c3RlbS4KKyAgICAgICAgdGVzdF9jb25maWd1cmF0aW9ucyA9IFtd
CisgICAgICAgIGZvciBzeXN0ZW0gaW4gc2VsZi5hbGxfc3lzdGVtcygpOgorICAgICAgICAgICAg
Zm9yIGJ1aWxkX3R5cGUgaW4gc2VsZi5hbGxfYnVpbGRfdHlwZXMoKToKKyAgICAgICAgICAgICAg
ICBmb3IgZ3JhcGhpY3NfdHlwZSBpbiBzZWxmLmFsbF9ncmFwaGljc190eXBlcygpOgorICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2NvbmZpZ3VyYXRpb25zLmFwcGVuZChUZXN0Q29uZmlndXJhdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zPXN5c3RlbVswXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb249c3lzdGVtWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgYXJj
aGl0ZWN0dXJlPXN5c3RlbVsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkX3R5cGU9
YnVpbGRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzX3R5cGU9Z3JhcGhp
Y3NfdHlwZSkpCisgICAgICAgIHJldHVybiB0ZXN0X2NvbmZpZ3VyYXRpb25zCisKKyAgICBkZWYg
YWxsX3N5c3RlbXMoc2VsZik6CisgICAgICAgIHJldHVybiAoKCdtYWMnLCAnbGVvcGFyZCcsICd4
ODYnKSwKKyAgICAgICAgICAgICAgICAoJ21hYycsICdzbm93bGVvcGFyZCcsICd4ODYnKSwKKyAg
ICAgICAgICAgICAgICAoJ3dpbicsICd4cCcsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dp
bicsICd2aXN0YScsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dpbicsICd3aW43JywgJ3g4
NicpLAorICAgICAgICAgICAgICAgICgnbGludXgnLCAnaGFyZHknLCAneDg2JykpCisKKyAgICBk
ZWYgYWxsX2J1aWxkX3R5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gKCdkZWJ1ZycsICdyZWxl
YXNlJykKKworICAgIGRlZiBhbGxfZ3JhcGhpY3NfdHlwZXMoc2VsZik6CisgICAgICAgIHJldHVy
biAoJ2NwdScsICdncHUnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggMDEyZTljYzRmNzY1YmUyNzc3ZmZmMjRhNDI3
ODczODRiMmE5NGQ4ZC4uZWU4ZDJlYzMwNGQ0OTgyNjk1YTliYjlkOTJhYzU2YjM2MDA1YzE1NyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2No
cm9taXVtLnB5CkBAIC0yNzQsOCArMjc0LDggQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9y
dCk6CiAgICAgICAgICAgICBhbGxfdGVzdF9maWxlcy51cGRhdGUoZXh0cmFfdGVzdF9maWxlcykK
IAogICAgICAgICBleHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRp
b25zKAotICAgICAgICAgICAgc2VsZiwgYWxsX3Rlc3RfZmlsZXMsIGV4cGVjdGF0aW9uc19zdHIs
IHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgIGlzX2RlYnVnX21vZGUsIGlzX2xpbnRf
bW9kZT1GYWxzZSwgb3ZlcnJpZGVzPW92ZXJyaWRlc19zdHIpCisgICAgICAgICAgICBzZWxmLCBh
bGxfdGVzdF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24o
KSwKKyAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSwgb3ZlcnJpZGVzPW92ZXJyaWRlc19z
dHIpCiAgICAgICAgIHRlc3RzX2RpciA9IHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAg
IHJldHVybiBbc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3QpCiAgICAgICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBlKHRl
c3RfZXhwZWN0YXRpb25zLlNLSVApXQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4IGM0YjM2YWNkOTA3
OWZkMmZiZTkwOTAxMjAyZDVmOWMwMjVlMzg3ZTUuLjA0ZWNhNjMwMjgzNjhiODhjZDc2NWIyYmJh
NWMzY2JkMDAyNjQ1ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTk1LDMgKzk1LDE1IEBAIGNs
YXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICByZXR1cm4K
ICAgICAgICAgcG9ydC5zdGFydF93ZWJzb2NrZXRfc2VydmVyKCkKICAgICAgICAgcG9ydC5zdG9w
X3dlYnNvY2tldF9zZXJ2ZXIoKQorCisgICAgZGVmIHRlc3RfdGVzdF9jb25maWd1cmF0aW9uKHNl
bGYpOgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBpZiBub3QgcG9y
dDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC50ZXN0
X2NvbmZpZ3VyYXRpb24oKSkKKworICAgIGRlZiB0ZXN0X2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
KHNlbGYpOgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBpZiBub3Qg
cG9ydDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHBv
cnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKSkgPiAwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDkzNTg4MWMyNzZhMjc2NDU1
NjJlNDNlNTExYjJmNGY2ZTFjY2U5MTEuLjY3ZTY4N2MwOTMzMDQ3NmY4MTBjM2Q3ODViMDY1MzA4
ZWFjMjg1NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3Rlc3QucHkKQEAgLTE1MSw2ICsxNTEsOSBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQp
OgogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmV0dXJu
IFRydWUKIAorICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgIHJl
dHVybiAnUmVsZWFzZScKKwogICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2NvbnRl
bnRzLCBhY3R1YWxfY29udGVudHMsCiAgICAgICAgICAgICAgICAgICAgZGlmZl9maWxlbmFtZT1O
b25lKToKICAgICAgICAgZGlmZmVkID0gYWN0dWFsX2NvbnRlbnRzICE9IGV4cGVjdGVkX2NvbnRl
bnRzCkBAIC0zMDYsNyArMzA5LDcgQEAgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQv
ZXhjZXB0aW9uLmh0bWwgPSBDUkFTSAogICAgICAgICByZXR1cm4gdGVzdF9wbGF0Zm9ybV9uYW1l
CiAKICAgICBkZWYgdmVyc2lvbihzZWxmKToKLSAgICAgICAgcmV0dXJuICcnCisgICAgICAgIHJl
dHVybiAnLWxlb3BhcmQnCiAKIAogY2xhc3MgVGVzdERyaXZlcihiYXNlLkRyaXZlcik6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDRkOGI3YzlmNWEy
YmQ0Yzc0ZWQ1NmZkNjMxMmJhMTk1YzE2YzhhNmQuLmI1YTRlZjVlZGZiNmEwZWVlYzkxZWFjY2E2
OTI2ODc0ZDExOTc3ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLnB5CkBAIC0xODMsOCArMTgzLDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAg
ICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcmViYXNl
bGluZV9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RhdGlvbnNfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wbGF0Zm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0LnRlc3RfY29uZmlndXJhdGlvbigpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKICAgICAg
ICAgc2VsZi5fc2NtID0gc2NtLmRlZmF1bHRfc2NtKCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggZjdl
NTMzMDMzMGM0N2IzMGE3ZDRiZWM0ZDExN2I5NTg3MGZmNTZjMC4uM2Q2ZjYzMGI2ZjAxNDZjMmY3
MGZiMDNjZjBmMDUzYWYxYjhjZDYzYSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0xMDEsMTEgKzEwMSwx
MSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRl
cnIsCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAgICByYWlzZQogCi0gICAg
ICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJQYXJzaW5nIGV4cGVjdGF0aW9ucyAuLi4iKQogICAg
ICAgICBpZiBvcHRpb25zLmxpbnRfdGVzdF9maWxlczoKICAgICAgICAgICAgIHJldHVybiBydW5u
ZXIubGludCgpCi0gICAgICAgIHJ1bm5lci5wYXJzZV9leHBlY3RhdGlvbnMocG9ydC50ZXN0X3Bs
YXRmb3JtX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25z
LmNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJykKKworICAgICAgICBwcmludGVyLnByaW50X3VwZGF0
ZSgiUGFyc2luZyBleHBlY3RhdGlvbnMgLi4uIikKKyAgICAgICAgcnVubmVyLnBhcnNlX2V4cGVj
dGF0aW9ucygpCiAKICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIkNoZWNraW5nIGJ1aWxk
IC4uLiIpCiAgICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2J1aWxkKHJ1bm5lci5uZWVkc19odHRw
KCkpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90
ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggYzg2YjMyY2U1NjU3MjQ1ZGY3ZDNmMjgwOTM2
OTMzNTllNTk4NmJhNS4uZTM3ZjkwOGI2NGU3ZDVjZDIyMDNlNjU5YzdiNTg4NDBjYjVjZjZlYiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4
cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC03NSw3ICs3NSw2IEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgIlVzaW5nICd0ZXN0
JyBwb3J0LCBidXQgcGxhdGZvcm0tc3BlY2lmaWMgZXhwZWN0YXRpb25zICIKICAgICAgICAgICAg
ICAgICAgICAgICAid2lsbCBmYWlsIHRoZSBjaGVjay4iICUgc2VsZi5fZmlsZV9wYXRoKQogICAg
ICAgICAgICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcpCi0gICAgICAgIHNlbGYu
X3BvcnRfdG9fY2hlY2sgPSBzZWxmLl9wb3J0X29iai50ZXN0X3BsYXRmb3JtX25hbWUoKQogICAg
ICAgICAjIFN1cHByZXNzIGVycm9yIG1lc3NhZ2VzIG9mIHRlc3RfZXhwZWN0YXRpb25zIG1vZHVs
ZSBzaW5jZSB0aGV5IHdpbGwgYmUKICAgICAgICAgIyByZXBvcnRlZCBsYXRlci4KICAgICAgICAg
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFj
a2FnZS4iCkBAIC05MSw3ICs5MCw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKG9i
amVjdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHRlc3RfZXhw
ZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnNGaWxlKAogICAgICAgICAgICAgICAgIHBvcnQ9c2Vs
Zi5fcG9ydF9vYmosIGV4cGVjdGF0aW9ucz1leHBlY3RhdGlvbnNfc3RyLCBmdWxsX3Rlc3RfbGlz
dD10ZXN0cywKLSAgICAgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtX25hbWU9c2VsZi5fcG9ydF90
b19jaGVjaywgaXNfZGVidWdfbW9kZT1GYWxzZSwKKyAgICAgICAgICAgICAgICB0ZXN0X2NvbmZp
Zz1zZWxmLl9wb3J0X29iai50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKICAgICAgICAgICAgICAgICBp
c19saW50X21vZGU9VHJ1ZSwgb3ZlcnJpZGVzPW92ZXJyaWRlcykKICAgICAgICAgZXhjZXB0IHRl
c3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3IsIGVycm9yOgogICAgICAgICAgICAgZXJyID0gZXJy
b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CmluZGV4IDk4MTdjNWQ3MDJk
M2U2NjFlMDZjYjZhZjc2Yzc4YTc1ZTg3YzA3MmQuLjg2OTE1NTdlNzE3YzZmOTU5OTQ4MjI0NjFk
ZmU0NDFkYTQ3MTkyYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpA
QCAtODQsMTUgKzg0LDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3ZhbGlkX2V4cGVjdGF0aW9ucyhzZWxmKToKICAg
ICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsicGFzc2VzL3RleHQu
aHRtbCA9IFBBU1MiXSwKLSAgICAgICAgICAgICIiKQotICAgICAgICBzZWxmLmFzc2VydF9saW5l
c19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gRkFJTCBQQVNTIl0sCi0g
ICAgICAgICAgICAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAg
ICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IENSQVNIIFRJTUVPVVQgRkFJTCBQQVNTIl0sCi0gICAg
ICAgICAgICAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAg
IFsiQlVHQ1IxMjM0IE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIEZBSUwiXSwKICAgICAg
ICAgICAgICIiKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KApAQCAtMTIwLDEyICsx
MTEsMTIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgdGVzdF9tb2RpZmllcl9lcnJvcnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbmVzX2xpbnQoCiAgICAgICAgICAgICBbIkJVRzEyMzQgOiBwYXNzZXMvdGV4dC5odG1s
ID0gRkFJTCJdLAotICAgICAgICAgICAgJ0J1ZyBtdXN0IGJlIGVpdGhlciBCVUdDUiwgQlVHV0ss
IG9yIEJVR1Y4XyBmb3IgdGVzdDogYnVnMTIzNCBwYXNzZXMvdGV4dC5odG1sICBbdGVzdC9leHBl
Y3RhdGlvbnNdIFs1XScpCisgICAgICAgICAgICAiQlVHXFxkKyBpcyBub3QgYWxsb3dlZCwgbXVz
dCBiZSBvbmUgb2YgQlVHQ1JcXGQrLCBCVUdXS1xcZCssIEJVR1Y4X1xcZCssIG9yIGEgbm9uLW51
bWVyaWMgYnVnIGlkZW50aWZpZXIuIHBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9u
c10gWzVdIikKIAogICAgIGRlZiB0ZXN0X3ZhbGlkX21vZGlmaWVycyhzZWxmKToKICAgICAgICAg
c2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiSU5WQUxJRC1NT0RJRklFUiA6
IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCi0gICAgICAgICAgICAiSW52YWxpZCBtb2RpZmll
ciBmb3IgdGVzdDogaW52YWxpZC1tb2RpZmllciAiCisgICAgICAgICAgICAiVW5yZWNvZ25pemVk
IG9wdGlvbiAnaW52YWxpZC1tb2RpZmllcicgIgogICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0
bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNf
bGludCgKICAgICAgICAgICAgIFsiU0tJUCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCkBA
IC0xMzUsMzggKzEyNiwzOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdENhc2UodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uX2Vycm9ycyhzZWxmKToKICAg
ICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsibWlzc2luZyBleHBl
Y3RhdGlvbnMiXSwKLSAgICAgICAgICAgICJNaXNzaW5nIGV4cGVjdGF0aW9ucy4gWydtaXNzaW5n
IGV4cGVjdGF0aW9ucyddICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XSIpCisgICAgICAgICAgICAi
TWlzc2luZyBhICc6JyBtaXNzaW5nIGV4cGVjdGF0aW9ucyAgW3Rlc3QvZXhwZWN0YXRpb25zXSBb
NV0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAgICAgICAgICAgWyJTTE9X
IDogcGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQiXSwKICAgICAgICAgICAgICJBIHRlc3QgY2Fu
IG5vdCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuICIKICAgICAgICAgICAgICJJZiBpdCB0aW1l
cyBvdXQgaW5kZWZpbml0ZWx5LCB0aGVuIGl0IHNob3VsZCBiZSBqdXN0IHRpbWVvdXQuICIKICAg
ICAgICAgICAgICJwYXNzZXMvdGV4dC5odG1sICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XSIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbImRvZXMvbm90L2V4
aXN0Lmh0bWwgPSBGQUlMIl0sCisgICAgICAgICAgICBbIkJVR1dLMSA6IGRvZXMvbm90L2V4aXN0
Lmh0bWwgPSBGQUlMIl0sCiAgICAgICAgICAgICAiUGF0aCBkb2VzIG5vdCBleGlzdC4gZG9lcy9u
b3QvZXhpc3QuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbMl0iKQogCiAgICAgZGVmIHRlc3Rf
cGFyc2VfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50
KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAorICAgICAgICAgICAg
WyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAogICAgICAgICAgICAgIiIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbInBhc3Nlcy90ZXh0
Lmh0bWwgPSBVTlNVUFBPUlRFRCJdLAorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4
dC5odG1sID0gVU5TVVBQT1JURUQiXSwKICAgICAgICAgICAgICJVbnN1cHBvcnRlZCBleHBlY3Rh
dGlvbjogdW5zdXBwb3J0ZWQgIgogICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0
L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAg
ICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IFBBU1MgVU5TVVBQT1JURUQiXSwKKyAgICAg
ICAgICAgIFsiQlVHV0sxIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MgVU5TVVBQT1JURUQiXSwK
ICAgICAgICAgICAgICJVbnN1cHBvcnRlZCBleHBlY3RhdGlvbjogdW5zdXBwb3J0ZWQgIgogICAg
ICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKIAog
ICAgIGRlZiB0ZXN0X2FscmVhZHlfc2Vlbl90ZXN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2Vy
dF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gUEFTUyIsCi0g
ICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VUIl0sCi0gICAgICAgICAgICAi
RHVwbGljYXRlIGV4cGVjdGF0aW9uLiAlcyAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iICUgc2Vs
Zi5fdGVzdF9maWxlKQorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0g
UEFTUyIsCisgICAgICAgICAgICAgIkJVR1dLMSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VU
Il0sCisgICAgICAgICAgICAiRHVwbGljYXRlIG9yIGFtYmlndW91cyBleHBlY3RhdGlvbi4gJXMg
IFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIiAlIHNlbGYuX3Rlc3RfZmlsZSkKIAogICAgIGRlZiB0
ZXN0X3RhYihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAg
ICAgIFsiXHRwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAorICAgICAgICAgICAgWyJcdEJVR1dL
MSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCiAgICAgICAgICAgICAiTGluZSBjb250YWlu
cyB0YWIgY2hhcmFjdGVyLiAgW3doaXRlc3BhY2UvdGFiXSBbNV0iKQogCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78447</attachid>
            <date>2011-01-10 13:57:28 -0800</date>
            <delta_ts>2011-01-11 15:25:39 -0800</delta_ts>
            <desc>Update w/ more review feedback.</desc>
            <filename>bug-51222-20110110135727.patch</filename>
            <type>text/plain</type>
            <size>69961</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MGI5
Nzg5Y2U5ZDFmNjYzYWNhNzY4OTgxZmYyNDdjNWJhNDMyYWRjLi40OWZlMWFjYWVjZTM1OTQ0NDI3
ODVlNDg2ZTg4YWQ2MDEwOTg4ODAyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDEtMTAgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9kaWZpZXIgcGFyc2luZyBjb2RlIGluIHRl
c3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdpbGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0
J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMKKyAgICAgICAgb3IgZWFzaWx5IGFk
ZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQVSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAg
ICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQgdnMuIDY0LWJpdCBkaWZmZXJlbmNlcyku
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgdHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFk
ZCBpbiBtb3JlIGdlbmVyaWMKKyAgICAgICAgc3VwcG9ydCBhbmQgdGhlbiBlbGltaW5hdGUgdGhl
IEdQVS1zcGVjaWZpYyB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBmaWxlcyBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBzdGFuZGFsb25lIG9iamVjdHMgZm9y
IGhhbmRsaW5nIG1vZGlmaWVycy4gVGhlCisgICAgICAgIHJ1bGVzIGZvciBpbnRlcnByZXRpbmcg
bW9kaWZpZXJzLCBwcmVjZWRlbmNlLCBhbmQgY29uZmxpY3RzIGFyZQorICAgICAgICBnaXZlbiBp
biB0aGUgZG9jc3RyaW5nIHRvIHRoZSBNb2RpZmllck1hdGNoZXIgY2xhc3MsIHdoaWNoCisgICAg
ICAgIHJldHVybnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBvYmplY3RzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgcm91dGluZXMgdG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFu
ZCBhCisgICAgICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVlcyBpbiB0aGUgYmFzZSBvYmplY3QsIGlu
IG9yZGVyIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRl
c3QgcnVuLiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFzc2VkCisgICAgICAgIHRvIHRoZSBleHBl
Y3RhdGlvbiBwYXJzZXIuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gY2xlYW4gdXAgdGhlCisgICAg
ICAgIGxvZ2ljIHVzZWQgdG8gbGludCBhbGwgb2YgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
cyBpbiBhCisgICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmlsZS4KKworICAg
ICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIG1lcmdlIGluIHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0
YXRpb25zIGZpbGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMjIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHk6CisKIDIwMTEtMDEtMTAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJvbGwgb3V0IHI3NTM5MgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0
dGVzdC5weQppbmRleCA5MjgwYjAyNTNkN2MyNWU4NzhjNzMwMTgzZWYxZTllNWE3NjE3MTFkLi5k
MDI3ZTYwMTEyZDRhZThmMGIxNjVkNzA5MmExYzU0YzA5MTJhYjNhIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQpAQCAtMzEsNyArMzEsNiBAQAogCiBpbXBv
cnQgb3MKIGltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHBkYgogaW1wb3J0IHN5cwogaW1wb3J0IHVu
aXR0ZXN0CiBpbXBvcnQgbG9nZ2luZwpAQCAtMTQ2LDcgKzE0NSw3IEBAIGNsYXNzICBUZXN0cHJp
bnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBpbiB0
ZXN0c10KICAgICAgICAgZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVj
dGF0aW9ucygKICAgICAgICAgICAgIHNlbGYuX3BvcnQsIHRlc3RfcGF0aHMsIGV4cGVjdGF0aW9u
c19zdHIsCi0gICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLCBpc19k
ZWJ1Z19tb2RlPUZhbHNlLAorICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRp
b24oKSwKICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSkKIAogICAgICAgICBycyA9IHJl
c3VsdF9zdW1tYXJ5LlJlc3VsdFN1bW1hcnkoZXhwZWN0YXRpb25zLCB0ZXN0X3BhdGhzKQpAQCAt
MzY1LDcgKzM2NCw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIHRlc3RfcHJpbnRfcHJvZ3Jlc3NfX2RldGFpbGVkKHNlbGYpOgogICAgICAgICB0ZXN0
cyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwn
LAogICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCddCi0gICAg
ICAgIGV4cGVjdGF0aW9ucyA9ICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1F
T1VUJworICAgICAgICBleHBlY3RhdGlvbnMgPSAnQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rp
bWVvdXQuaHRtbCA9IFRJTUVPVVQnCiAKICAgICAgICAgIyBmaXJzdCwgdGVzdCB0aGF0IGl0IGlz
IGRpc2FibGVkIHByb3Blcmx5CiAgICAgICAgICMgc2hvdWxkIHN0aWxsIHByaW50IG9uZS1saW5l
LXByb2dyZXNzCkBAIC01NzEsOCArNTcwLDggQEAgY2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkKIAogICAg
ICAgICBleHBlY3RhdGlvbnMgPSAiIiIKLWZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBD
UkFTSAotZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVAorQlVHWCA6IGZh
aWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAorQlVHWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQKICIiIgogICAgICAgICBlcnIucmVzZXQoKQogICAg
ICAgICBvdXQucmVzZXQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9u
cy5weQppbmRleCA4NjQ1ZmMxZGMxODdkNmRjMDZjZmZlZmM3ZTRiOTg2NmI0ZTUwZTdjLi5hNWRl
OGE4MzY4OTdmZGE5YTQwZTZkODUyNGRhYzE4NjEyNWM5Mzg2IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtMzEsNiArMzEsNyBAQAogZm9yIGxheW91
dCB0ZXN0cy4KICIiIgogCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0
IG9zCiBpbXBvcnQgcmUKQEAgLTg2LDE4ICs4NywxNiBAQCBkZWYgcmVtb3ZlX3BpeGVsX2ZhaWx1
cmVzKGV4cGVjdGVkX3Jlc3VsdHMpOgogY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKICAgICBURVNU
X0xJU1QgPSAidGVzdF9leHBlY3RhdGlvbnMudHh0IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAg
ICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfY29u
ZmlnLAorICAgICAgICAgICAgICAgICBpc19saW50X21vZGUsIG92ZXJyaWRlcz1Ob25lKToKICAg
ICAgICAgIiIiTG9hZHMgYW5kIHBhcnNlcyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZ2l2ZW4gaW4g
dGhlIHN0cmluZy4KICAgICAgICAgQXJnczoKICAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBv
YmplY3QgY29udGFpbmluZyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5CiAgICAgICAg
ICAgICB0ZXN0OiBsaXN0IG9mIGFsbCBvZiB0aGUgdGVzdCBmaWxlcwogICAgICAgICAgICAgZXhw
ZWN0YXRpb25zOiB0ZXN0IGV4cGVjdGF0aW9ucyBhcyBhIHN0cmluZwotICAgICAgICAgICAgdGVz
dF9wbGF0Zm9ybV9uYW1lOiBuYW1lIG9mIHRoZSBwbGF0Zm9ybSB0byBtYXRjaCBleHBlY3RhdGlv
bnMKLSAgICAgICAgICAgICAgICBhZ2FpbnN0LiBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgZGlmZmVy
ZW50IHRoYW4KLSAgICAgICAgICAgICAgICBwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpIHdoZW4g
aXNfbGludF9tb2RlIGlzIFRydWUuCi0gICAgICAgICAgICBpc19kZWJ1Z19tb2RlOiB3aGV0aGVy
IHRvIHVzZSB0aGUgREVCVUcgb3IgUkVMRUFTRSBtb2RpZmllcnMKLSAgICAgICAgICAgICAgICBp
biB0aGUgZXhwZWN0YXRpb25zCisgICAgICAgICAgICB0ZXN0X2NvbmZpZzogc3BlY2lmaWMgdmFs
dWVzIHRvIGNoZWNrIGFnYWluc3Qgd2hlbgorICAgICAgICAgICAgICAgIHBhcnNpbmcgdGhlIGZp
bGUgKHVzdWFsbHkgcG9ydC50ZXN0X2NvbmZpZygpLAorICAgICAgICAgICAgICAgIGJ1dCBtYXkg
YmUgZGlmZmVyZW50IHdoZW4gbGludGluZyBvciBkb2luZyBvdGhlciB0aGluZ3MpLgogICAgICAg
ICAgICAgaXNfbGludF9tb2RlOiBJZiBUcnVlLCBqdXN0IHBhcnNlIHRoZSBleHBlY3RhdGlvbnMg
c3RyaW5nCiAgICAgICAgICAgICAgICAgbG9va2luZyBmb3IgZXJyb3JzLgogICAgICAgICAgICAg
b3ZlcnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG92ZXJyaWRl
IGFueQpAQCAtMTA2LDcgKzEwNSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAg
ICAgICAgICAgYW5kIGRvd25zdHJlYW0gZXhwZWN0YXRpb25zKS4KICAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUocG9ydCwg
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgdGVzdHMsIHRlc3RfcGxhdGZvcm1fbmFtZSwgaXNf
ZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLAorICAgICAgICAgICAgdGVzdHMsIHRlc3RfY29uZmln
LCBpc19saW50X21vZGUsCiAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQogCiAgICAg
IyBUT0RPKG9qYW4pOiBBbGxvdyBmb3IgcmVtb3Zpbmcgc2tpcHBlZCB0ZXN0cyB3aGVuIGdldHRp
bmcgdGhlIGxpc3Qgb2YKQEAgLTE5OSw3ICsxOTgsNyBAQCBjbGFzcyBQYXJzZUVycm9yKEV4Y2Vw
dGlvbik6CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obWFwKHN0ciwgc2VsZi5lcnJvcnMpKQog
CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ1BhcnNlRXJyb3IoZmF0
YWw9JXMsIGVycm9ycz0lcyknICUgKGZhdGFsLCBlcnJvcnMpCisgICAgICAgIHJldHVybiAnUGFy
c2VFcnJvcihmYXRhbD0lcywgZXJyb3JzPSVzKScgJSAoc2VsZi5mYXRhbCwgc2VsZi5lcnJvcnMp
CiAKIAogY2xhc3MgTW9kaWZpZXJzQW5kRXhwZWN0YXRpb25zOgpAQCAtMzA0LDI4ICszMDMsMTQg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAgICAgICAgICAgICdmYWls
JzogRkFJTCwKICAgICAgICAgICAgICAgICAgICAgJ2ZsYWt5JzogRkxBS1l9CiAKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rlc3RfbGlzdCwgdGVzdF9w
bGF0Zm9ybV9uYW1lLAotICAgICAgICBpc19kZWJ1Z19tb2RlLCBpc19saW50X21vZGUsIG92ZXJy
aWRlcz1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIGV4cGVjdGF0aW9uczogQ29udGVudHMg
b2YgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAgICAgIGZ1bGxfdGVzdF9saXN0OiBUaGUgbGlz
dCBvZiBhbGwgdGVzdHMgdG8gYmUgcnVuIHBlbmRpbmcgcHJvY2Vzc2luZyBvZgotICAgICAgICAg
ICAgdGhlIGV4cGVjdGlvbnMgZm9yIHRob3NlIHRlc3RzLgotICAgICAgICB0ZXN0X3BsYXRmb3Jt
X25hbWU6IG5hbWUgb2YgdGhlIHBsYXRmb3JtIHRvIG1hdGNoIGV4cGVjdGF0aW9ucwotICAgICAg
ICAgICAgYWdhaW5zdC4gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGRpZmZlcmVudCB0aGFuCi0gICAg
ICAgICAgICBwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpIHdoZW4gaXNfbGludF9tb2RlIGlzIFRy
dWUuCi0gICAgICAgIGlzX2RlYnVnX21vZGU6IFdoZXRoZXIgd2UgdGVzdGluZyBhIHRlc3Rfc2hl
bGwgYnVpbHQgZGVidWcgbW9kZS4KLSAgICAgICAgaXNfbGludF9tb2RlOiBXaGV0aGVyIHRoaXMg
aXMganVzdCBsaW50aW5nIHRlc3RfZXhwZWNhdGF0aW9ucy50eHQuCi0gICAgICAgIG92ZXJyaWRl
czogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSBhbnkKLSAg
ICAgICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0aW9uc3wuIFRoaXMgaXMgdXNlZCBieSBjYWxs
ZXJzCi0gICAgICAgICAgICB0aGF0IG5lZWQgdG8gbWFuYWdlIHR3byBzZXRzIG9mIGV4cGVjdGF0
aW9ucyAoZS5nLiwgdXBzdHJlYW0KLSAgICAgICAgICAgIGFuZCBkb3duc3RyZWFtIGV4cGVjdGF0
aW9ucykuCi0gICAgICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBleHBlY3Rh
dGlvbnMsIGZ1bGxfdGVzdF9saXN0LAorICAgICAgICAgICAgICAgICB0ZXN0X2NvbmZpZywgaXNf
bGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6CisgICAgICAgICMgU2VlIGFyZ3VtZW50IGRvY3Vt
ZW50YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9uKCksIGFib3ZlLgogCiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucwogICAg
ICAgICBzZWxmLl9mdWxsX3Rlc3RfbGlzdCA9IGZ1bGxfdGVzdF9saXN0Ci0gICAgICAgIHNlbGYu
X3Rlc3RfcGxhdGZvcm1fbmFtZSA9IHRlc3RfcGxhdGZvcm1fbmFtZQotICAgICAgICBzZWxmLl9p
c19kZWJ1Z19tb2RlID0gaXNfZGVidWdfbW9kZQorICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZyA9
IHRlc3RfY29uZmlnCiAgICAgICAgIHNlbGYuX2lzX2xpbnRfbW9kZSA9IGlzX2xpbnRfbW9kZQog
ICAgICAgICBzZWxmLl9vdmVycmlkZXMgPSBvdmVycmlkZXMKICAgICAgICAgc2VsZi5fZXJyb3Jz
ID0gW10KQEAgLTMzMyw3ICszMTgsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAog
ICAgICAgICAjIE1hcHMgcmVsYXRpdmUgdGVzdCBwYXRocyBhcyBsaXN0ZWQgaW4gdGhlIGV4cGVj
dGF0aW9ucyBmaWxlIHRvIGEKICAgICAgICAgIyBsaXN0IG9mIG1hcHMgY29udGFpbmluZyBtb2Rp
ZmllcnMgYW5kIGV4cGVjdGF0aW9ucyBmb3IgZWFjaCB0aW1lCi0gICAgICAgICMgdGhlIHRlc3Qg
aXMgbGlzdGVkIGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZS4KKyAgICAgICAgIyB0aGUgdGVzdCBp
cyBsaXN0ZWQgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxlLiBXZSB1c2UgdGhpcyB0bworICAgICAg
ICAjIGtlZXAgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW50aXJlIGxpc3Qgb2YgZXhwZWN0YXRp
b25zLCBldmVuCisgICAgICAgICMgaW52YWxpZCBvbmVzLgogICAgICAgICBzZWxmLl9hbGxfZXhw
ZWN0YXRpb25zID0ge30KIAogICAgICAgICAjIE1hcHMgYSB0ZXN0IHRvIGl0cyBsaXN0IG9mIGV4
cGVjdGF0aW9ucy4KQEAgLTM0Niw3ICszMzMsOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmls
ZToKICAgICAgICAgIyB0aGUgb3B0aW9ucyBtaW51cyBhbnkgYnVnIG9yIHBsYXRmb3JtIHN0cmlu
Z3MKICAgICAgICAgc2VsZi5fdGVzdF90b19tb2RpZmllcnMgPSB7fQogCi0gICAgICAgICMgTWFw
cyBhIHRlc3QgdG8gdGhlIGJhc2UgcGF0aCB0aGF0IGl0IHdhcyBsaXN0ZWQgd2l0aCBpbiB0aGUg
bGlzdC4KKyAgICAgICAgIyBNYXBzIGEgdGVzdCB0byB0aGUgYmFzZSBwYXRoIHRoYXQgaXQgd2Fz
IGxpc3RlZCB3aXRoIGluIHRoZSBsaXN0IGFuZAorICAgICAgICAjIHRoZSBudW1iZXIgb2YgbWF0
Y2hlcyB0aGF0IGJhc2UgcGF0aCBoYWQuCiAgICAgICAgIHNlbGYuX3Rlc3RfbGlzdF9wYXRocyA9
IHt9CiAKICAgICAgICAgc2VsZi5fbW9kaWZpZXJfdG9fdGVzdHMgPSBzZWxmLl9kaWN0X29mX3Nl
dHMoc2VsZi5NT0RJRklFUlMpCkBAIC0zNzMsMTMgKzM2MSw3IEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNGaWxlOgogCiAgICAgZGVmIF9oYW5kbGVfYW55X3JlYWRfZXJyb3JzKHNlbGYpOgogICAg
ICAgICBpZiBsZW4oc2VsZi5fZXJyb3JzKSBvciBsZW4oc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycyk6
Ci0gICAgICAgICAgICBpZiBzZWxmLl9pc19kZWJ1Z19tb2RlOgotICAgICAgICAgICAgICAgIGJ1
aWxkX3R5cGUgPSAnREVCVUcnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1
aWxkX3R5cGUgPSAnUkVMRUFTRScKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAg
ICAgICBfbG9nLmVycm9yKCJGQUlMVVJFUyBGT1IgUExBVEZPUk06ICVzLCBCVUlMRF9UWVBFOiAl
cyIgJQotICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lLnVw
cGVyKCksIGJ1aWxkX3R5cGUpKQorICAgICAgICAgICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9S
ICVzIiAlIHN0cihzZWxmLl90ZXN0X2NvbmZpZykpCiAKICAgICAgICAgICAgIGZvciBlcnJvciBp
biBzZWxmLl9lcnJvcnM6CiAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikKQEAgLTM5
NSwxMSArMzc3LDEyIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICBleHBl
Y3RhdGlvbnMgPSBzZXQoW1BBU1NdKQogICAgICAgICBvcHRpb25zID0gW10KICAgICAgICAgbW9k
aWZpZXJzID0gW10KKyAgICAgICAgbnVtX21hdGNoZXMgPSAwCiAgICAgICAgIGlmIHNlbGYuX2Z1
bGxfdGVzdF9saXN0OgogICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5fZnVsbF90ZXN0X2xp
c3Q6CiAgICAgICAgICAgICAgICAgaWYgbm90IHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0X3BhdGhz
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmllcnMsIGV4
cGVjdGF0aW9ucywgb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19h
bGxvd2VkPUZhbHNlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBt
b2RpZmllcnMsIG51bV9tYXRjaGVzLCBleHBlY3RhdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNlKQogCiAgICAg
ZGVmIF9kaWN0X29mX3NldHMoc2VsZiwgc3RyaW5nc190b19jb25zdGFudHMpOgogICAgICAgICAi
IiJUYWtlcyBhIGRpY3Qgb2Ygc3RyaW5ncy0+Y29uc3RhbnRzIGFuZCByZXR1cm5zIGEgZGljdCBt
YXBwaW5nCkBAIC01MzgsMTIgKzUyMSwxNSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
IAogICAgICAgICBvcHRpb25zID0gW10KICAgICAgICAgaWYgbGluZS5maW5kKCI6IikgaXMgLTE6
Ci0gICAgICAgICAgICB0ZXN0X2FuZF9leHBlY3RhdGlvbiA9IGxpbmUuc3BsaXQoIj0iKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCI6IikKLSAgICAgICAg
ICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9uc19saXN0KHBhcnRzWzBdKQotICAgICAgICAg
ICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0c1sxXS5zcGxpdCgnPScpCisgICAgICAgICAg
ICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAiTWlzc2luZyBhICc6JyIsIGxpbmUpCisgICAgICAg
ICAgICByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpCisKKyAgICAgICAgcGFydHMgPSBsaW5lLnNw
bGl0KCc6JykKIAorICAgICAgICAjIEZJWE1FOiB2ZXJpZnkgdGhhdCB0aGVyZSBpcyBleGFjdGx5
IG9uZSBjb2xvbiBpbiB0aGUgbGluZS4KKworICAgICAgICBvcHRpb25zID0gc2VsZi5fZ2V0X29w
dGlvbnNfbGlzdChwYXJ0c1swXSkKKyAgICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0
c1sxXS5zcGxpdCgnPScpCiAgICAgICAgIHRlc3QgPSB0ZXN0X2FuZF9leHBlY3RhdGlvblswXS5z
dHJpcCgpCiAgICAgICAgIGlmIChsZW4odGVzdF9hbmRfZXhwZWN0YXRpb24pIGlzIG5vdCAyKToK
ICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICJNaXNzaW5nIGV4cGVjdGF0aW9u
cy4iLApAQCAtNTg5LDY5ICs1NzUsNiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAog
ICAgICAgICByZXR1cm4gUkVNT1ZFX1RFU1QKIAotICAgIGRlZiBfaGFzX3ZhbGlkX21vZGlmaWVy
c19mb3JfY3VycmVudF9wbGF0Zm9ybShzZWxmLCBvcHRpb25zLCBsaW5lbm8sCi0gICAgICAgIHRl
c3RfYW5kX2V4cGVjdGF0aW9ucywgbW9kaWZpZXJzKToKLSAgICAgICAgIiIiUmV0dXJucyB0cnVl
IGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIGluIHRoZSBvcHRpb25zIGxpc3Qgb3IgaWYKLSAg
ICAgICAgbm8gcGxhdGZvcm1zIGFyZSBsaXN0ZWQgYW5kIGlmIHRoZXJlIGFyZSBubyBmYXRhbCBl
cnJvcnMgaW4gdGhlCi0gICAgICAgIG9wdGlvbnMgbGlzdC4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgIG9wdGlvbnM6IExpc3Qgb2YgbG93ZXJjYXNlIG9wdGlvbnMuCi0gICAgICAgICAgbGlu
ZW5vOiBUaGUgbGluZSBpbiB0aGUgZmlsZSB3aGVyZSB0aGUgdGVzdCBpcyBsaXN0ZWQuCi0gICAg
ICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb25zOiBUaGUgcGF0aCBhbmQgZXhwZWN0YXRpb25zIGZv
ciB0aGUgdGVzdC4KLSAgICAgICAgICBtb2RpZmllcnM6IFRoZSBzZXQgdG8gcG9wdWxhdGUgd2l0
aCBtb2RpZmllcnMuCi0gICAgICAgICIiIgotICAgICAgICBoYXNfYW55X3BsYXRmb3JtID0gRmFs
c2UKLSAgICAgICAgaGFzX2J1Z19pZCA9IEZhbHNlCi0gICAgICAgIGZvciBvcHRpb24gaW4gb3B0
aW9uczoKLSAgICAgICAgICAgIGlmIG9wdGlvbiBpbiBzZWxmLk1PRElGSUVSUzoKLSAgICAgICAg
ICAgICAgICBtb2RpZmllcnMuYWRkKG9wdGlvbikKLSAgICAgICAgICAgIGVsaWYgb3B0aW9uIGlu
IHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lcygpOgotICAgICAgICAgICAgICAgIGhhc19h
bnlfcGxhdGZvcm0gPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHJlLm1hdGNoKHInYnVnXGQnLCBv
cHRpb24pICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywg
J0J1ZyBtdXN0IGJlIGVpdGhlciBCVUdDUiwgQlVHV0ssIG9yIEJVR1Y4XyBmb3IgdGVzdDogJXMn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB0ZXN0X2FuZF9leHBl
Y3RhdGlvbnMpCi0gICAgICAgICAgICBlbGlmIG9wdGlvbi5zdGFydHN3aXRoKCdidWcnKToKLSAg
ICAgICAgICAgICAgICBoYXNfYnVnX2lkID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBvcHRpb24g
bm90IGluIHNlbGYuQlVJTERfVFlQRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9y
KGxpbmVubywgJ0ludmFsaWQgbW9kaWZpZXIgZm9yIHRlc3Q6ICVzJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdGVzdF9hbmRfZXhwZWN0YXRpb25zKQotCi0gICAg
ICAgIGlmIGhhc19hbnlfcGxhdGZvcm0gYW5kIG5vdCBzZWxmLl9tYXRjaF9wbGF0Zm9ybShvcHRp
b25zKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIG5vdCBoYXNfYnVn
X2lkIGFuZCAnd29udGZpeCcgbm90IGluIG9wdGlvbnM6Ci0gICAgICAgICAgICAjIFRPRE8ob2ph
bik6IFR1cm4gdGhpcyBpbnRvIGFuIEFkZEVycm9yIGNhbGwgb25jZSBhbGwgdGhlCi0gICAgICAg
ICAgICAjIHRlc3RzIGhhdmUgQlVHIGlkZW50aWZpZXJzLgotICAgICAgICAgICAgc2VsZi5fbG9n
X25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdUZXN0IGxhY2tzIEJVRyBtb2RpZmllci4nLAotICAg
ICAgICAgICAgICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9ucykKLQotICAgICAgICBpZiAncmVsZWFz
ZScgaW4gb3B0aW9ucyBvciAnZGVidWcnIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9pc19kZWJ1Z19tb2RlIGFuZCAnZGVidWcnIG5vdCBpbiBvcHRpb25zOgotICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2RlYnVnX21vZGUg
YW5kICdyZWxlYXNlJyBub3QgaW4gb3B0aW9uczoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICBpZiBzZWxmLl9pc19saW50X21vZGUgYW5kICdyZWJhc2VsaW5lJyBpbiBv
cHRpb25zOgotICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKLSAgICAgICAgICAg
ICAgICAnUkVCQVNFTElORSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBydW5uaW5nIHJlYmFzZWxp
bmUucHkuICcKLSAgICAgICAgICAgICAgICAnQ2Fubm90IGJlIGNoZWNrZWQgaW4uJywgdGVzdF9h
bmRfZXhwZWN0YXRpb25zKQotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX21hdGNo
X3BsYXRmb3JtKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICAiIiJNYXRjaCB0aGUgbGlzdCBvZiBv
cHRpb25zIGFnYWluc3Qgb3VyIHNwZWNpZmllZCBwbGF0Zm9ybS4gSWYgYW55Ci0gICAgICAgIG9m
IHRoZSBvcHRpb25zIHByZWZpeC1tYXRjaCBzZWxmLl9wbGF0Zm9ybSwgcmV0dXJuIFRydWUuIFRo
aXMgaGFuZGxlcwotICAgICAgICB0aGUgY2FzZSB3aGVyZSBhIHRlc3QgaXMgbWFya2VkIFdJTiBh
bmQgdGhlIHBsYXRmb3JtIGlzIFdJTi1WSVNUQS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
IG9wdGlvbnM6IGxpc3Qgb2Ygb3B0aW9ucwotICAgICAgICAiIiIKLSAgICAgICAgZm9yIG9wdCBp
biBvcHRpb25zOgotICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lLnN0YXJ0
c3dpdGgob3B0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4g
RmFsc2UKLQogICAgIGRlZiBfYWRkX3RvX2FsbF9leHBlY3RhdGlvbnMoc2VsZiwgdGVzdCwgb3B0
aW9ucywgZXhwZWN0YXRpb25zKToKICAgICAgICAgIyBNYWtlIGFsbCBwYXRocyB1bml4LXN0eWxl
IHNvIHRoZSBkYXNoYm9hcmQgZG9lc24ndCBuZWVkIHRvLgogICAgICAgICB0ZXN0ID0gdGVzdC5y
ZXBsYWNlKCdcXCcsICcvJykKQEAgLTY2NCw1NCArNTg3LDQzIEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNGaWxlOgogICAgICAgICAiIiJGb3IgZWFjaCB0ZXN0IGluIGFuIGV4cGVjdGF0aW9ucyBp
dGVyYWJsZSwgZ2VuZXJhdGUgdGhlCiAgICAgICAgIGV4cGVjdGF0aW9ucyBmb3IgaXQuIiIiCiAg
ICAgICAgIGxpbmVubyA9IDAKKyAgICAgICAgbWF0Y2hlciA9IE1vZGlmaWVyTWF0Y2hlcihzZWxm
Ll90ZXN0X2NvbmZpZykKICAgICAgICAgZm9yIGxpbmUgaW4gZXhwZWN0YXRpb25zOgogICAgICAg
ICAgICAgbGluZW5vICs9IDEKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfbGluZShsaW5lLCBs
aW5lbm8sIG1hdGNoZXIsIG92ZXJyaWRlc19hbGxvd2VkKQogCi0gICAgICAgICAgICB0ZXN0X2xp
c3RfcGF0aCwgb3B0aW9ucywgZXhwZWN0YXRpb25zID0gXAotICAgICAgICAgICAgICAgIHNlbGYu
cGFyc2VfZXhwZWN0YXRpb25zX2xpbmUobGluZSwgbGluZW5vKQotICAgICAgICAgICAgaWYgbm90
IGV4cGVjdGF0aW9uczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgIGRlZiBfcHJvY2Vz
c19saW5lKHNlbGYsIGxpbmUsIGxpbmVubywgbWF0Y2hlciwgb3ZlcnJpZGVzX2FsbG93ZWQpOgor
ICAgICAgICB0ZXN0X2xpc3RfcGF0aCwgb3B0aW9ucywgZXhwZWN0YXRpb25zID0gXAorICAgICAg
ICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnNfbGluZShsaW5lLCBsaW5lbm8pCisgICAgICAg
IGlmIG5vdCBleHBlY3RhdGlvbnM6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAg
c2VsZi5fYWRkX3RvX2FsbF9leHBlY3RhdGlvbnModGVzdF9saXN0X3BhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIuam9pbihvcHRpb25zKS51cHBlcigp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4oZXhw
ZWN0YXRpb25zKS51cHBlcigpKQorICAgICAgICBzZWxmLl9hZGRfdG9fYWxsX2V4cGVjdGF0aW9u
cyh0ZXN0X2xpc3RfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICIuam9pbihvcHRpb25zKS51cHBlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgIi5qb2luKGV4cGVjdGF0aW9ucykudXBwZXIoKSkKIAotICAgICAgICAg
ICAgbW9kaWZpZXJzID0gc2V0KCkKLSAgICAgICAgICAgIGlmIG9wdGlvbnMgYW5kIG5vdCBzZWxm
Ll9oYXNfdmFsaWRfbW9kaWZpZXJzX2Zvcl9jdXJyZW50X3BsYXRmb3JtKAotICAgICAgICAgICAg
ICAgIG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgsIG1vZGlmaWVycyk6Ci0gICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgbnVtX21hdGNoZXMgPSBzZWxmLl9jaGVja19vcHRp
b25zKG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBpZiBudW1fbWF0Y2hlcyA9
PSBNb2RpZmllck1hdGNoZXIuTk9fTUFUQ0g6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAg
ICAgICAgZXhwZWN0YXRpb25zID0gc2VsZi5fcGFyc2VfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9u
cywgbGluZW5vLAotICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBleHBl
Y3RhdGlvbnMgPSBzZWxmLl9wYXJzZV9leHBlY3RhdGlvbnMoZXhwZWN0YXRpb25zLCBsaW5lbm8s
CisgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKIAotICAgICAgICAgICAgaWYgJ3Nsb3cnIGlu
IG9wdGlvbnMgYW5kIFRJTUVPVVQgaW4gZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgICAgIHNl
bGYuX2FkZF9lcnJvcihsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICdBIHRlc3QgY2FuIG5v
dCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuIElmIGl0IHRpbWVzIG91dCAnCi0gICAgICAgICAg
ICAgICAgICAgICdpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxkIGJlIGp1c3QgdGltZW91dC4n
LAotICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgc2VsZi5fY2hl
Y2tfb3B0aW9uc19hZ2FpbnN0X2V4cGVjdGF0aW9ucyhvcHRpb25zLCBleHBlY3RhdGlvbnMsCisg
ICAgICAgICAgICBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKQogCi0gICAgICAgICAgICBmdWxsX3Bh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAg
ICBmdWxsX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICMg
V2ViS2l0J3Mgd2F5IG9mIHNraXBwaW5nIHRlc3RzIGlzIHRvIGFkZCBhIC1kaXNhYmxlZCBzdWZm
aXguCi0gICAgICAgICAgICAjIFNvIHdlIHNob3VsZCBjb25zaWRlciB0aGUgcGF0aCBleGlzdGlu
ZyBpZiB0aGUgcGF0aCBvciB0aGUKLSAgICAgICAgICAgICMgLWRpc2FibGVkIHZlcnNpb24gZXhp
c3RzLgotICAgICAgICAgICAgaWYgKG5vdCBzZWxmLl9wb3J0LnBhdGhfZXhpc3RzKGZ1bGxfcGF0
aCkKLSAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3BvcnQucGF0aF9leGlzdHMoZnVsbF9w
YXRoICsgJy1kaXNhYmxlZCcpKToKLSAgICAgICAgICAgICAgICAjIExvZyBhIG5vbiBmYXRhbCBl
cnJvciBoZXJlIHNpbmNlIHlvdSBoaXQgdGhpcyBjYXNlIGFueQotICAgICAgICAgICAgICAgICMg
dGltZSB5b3UgdXBkYXRlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCB3aXRob3V0IHN5bmNpbmcKLSAg
ICAgICAgICAgICAgICAjIHRoZSBMYXlvdXRUZXN0cyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1BhdGggZG9lcyBub3QgZXhpc3Qu
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRo
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHNlbGYuX2NoZWNrX3BhdGhf
ZG9lc19ub3RfZXhpc3QobGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgICAgICByZXR1
cm4KIAotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Z1bGxfdGVzdF9saXN0OgotICAgICAgICAg
ICAgICAgIHRlc3RzID0gW3Rlc3RfbGlzdF9wYXRoXQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2V4cGFuZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkKKyAg
ICAgICAgaWYgbm90IHNlbGYuX2Z1bGxfdGVzdF9saXN0OgorICAgICAgICAgICAgdGVzdHMgPSBb
dGVzdF9saXN0X3BhdGhdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0cyA9IHNlbGYu
X2V4cGFuZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkKIAotICAgICAgICAgICAgc2VsZi5fYWRkX3Rl
c3RzKHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2Vk
KQorICAgICAgICBtb2RpZmllcnMgPSBbbyBmb3IgbyBpbiBvcHRpb25zIGlmIG8gaW4gc2VsZi5N
T0RJRklFUlNdCisgICAgICAgIHNlbGYuX2FkZF90ZXN0cyh0ZXN0cywgZXhwZWN0YXRpb25zLCB0
ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJz
LCBudW1fbWF0Y2hlcywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpCiAKICAgICBkZWYgX2dl
dF9vcHRpb25zX2xpc3Qoc2VsZiwgbGlzdFN0cmluZyk6CiAgICAgICAgIHJldHVybiBbcGFydC5z
dHJpcCgpLmxvd2VyKCkgZm9yIHBhcnQgaW4gbGlzdFN0cmluZy5zdHJpcCgpLnNwbGl0KCcgJyld
CkBAIC03MjcsNiArNjM5LDY2IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAg
ICAgICAgcmVzdWx0LmFkZChleHBlY3RhdGlvbikKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisg
ICAgZGVmIF9jaGVja19vcHRpb25zKHNlbGYsIG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywgdGVz
dF9saXN0X3BhdGgpOgorICAgICAgICBtYXRjaF9yZXN1bHQgPSBzZWxmLl9jaGVja19zeW50YXgo
bWF0Y2hlciwgb3B0aW9ucywgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIHNlbGYuX2NoZWNrX3NlbWFudGlj
cyhvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICByZXR1cm4gbWF0Y2hf
cmVzdWx0Lm51bV9tYXRjaGVzCisKKyAgICBkZWYgX2NoZWNrX3N5bnRheChzZWxmLCBtYXRjaGVy
LCBvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgbWF0Y2hfcmVzdWx0
ID0gbWF0Y2hlci5tYXRjaChvcHRpb25zKQorICAgICAgICBmb3IgZXJyb3IgaW4gbWF0Y2hfcmVz
dWx0LmVycm9yczoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sIGVycm9yLCB0
ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZm9yIHdhcm5pbmcgaW4gbWF0Y2hfcmVzdWx0Lndhcm5p
bmdzOgorICAgICAgICAgICAgc2VsZi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sIHdhcm5p
bmcsIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICByZXR1cm4gbWF0Y2hfcmVzdWx0CisKKyAgICBk
ZWYgX2NoZWNrX3NlbWFudGljcyhzZWxmLCBvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRo
KToKKyAgICAgICAgaGFzX3dvbnRmaXggPSAnd29udGZpeCcgaW4gb3B0aW9ucworICAgICAgICBo
YXNfYnVnID0gRmFsc2UKKyAgICAgICAgZm9yIG9wdCBpbiBvcHRpb25zOgorICAgICAgICAgICAg
aWYgb3B0LnN0YXJ0c3dpdGgoJ2J1ZycpOgorICAgICAgICAgICAgICAgIGhhc19idWcgPSBUcnVl
CisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goJ2J1Z1xkKycsIG9wdCk6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAnQlVHXGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0IGJlIG9uZSBvZiAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAnQlVHQ1JcZCssIEJVR1dLXGQrLCBCVUdWOF9cZCssICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdvciBhIG5vbi1udW1lcmljIGJ1ZyBpZGVudGlmaWVyLicsIHRlc3RfbGlz
dF9wYXRoKQorCisgICAgICAgIGlmIG5vdCBoYXNfYnVnIGFuZCBub3QgaGFzX3dvbnRmaXg6Cisg
ICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1Rlc3QgbGFja3Mg
QlVHIG1vZGlmaWVyLicsCisgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKworICAgICAgICBp
ZiBzZWxmLl9pc19saW50X21vZGUgYW5kICdyZWJhc2VsaW5lJyBpbiBvcHRpb25zOgorICAgICAg
ICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAgICAgICAgICAgICdSRUJBU0VMSU5FIHNo
b3VsZCBvbmx5IGJlIHVzZWQgZm9yIHJ1bm5pbmcgcmViYXNlbGluZS5weS4gJworICAgICAgICAg
ICAgJ0Nhbm5vdCBiZSBjaGVja2VkIGluLicsIHRlc3RfbGlzdF9wYXRoKQorCisgICAgZGVmIF9j
aGVja19vcHRpb25zX2FnYWluc3RfZXhwZWN0YXRpb25zKHNlbGYsIG9wdGlvbnMsIGV4cGVjdGF0
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5v
LCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIGlmICdzbG93JyBpbiBvcHRpb25zIGFuZCBUSU1F
T1VUIGluIGV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8s
CisgICAgICAgICAgICAgICAgJ0EgdGVzdCBjYW4gbm90IGJlIGJvdGggc2xvdyBhbmQgdGltZW91
dC4gSWYgaXQgdGltZXMgb3V0ICcKKyAgICAgICAgICAgICAgICAnaW5kZWZpbml0ZWx5LCB0aGVu
IGl0IHNob3VsZCBiZSBqdXN0IHRpbWVvdXQuJywKKyAgICAgICAgICAgICAgICB0ZXN0X2xpc3Rf
cGF0aCkKKworICAgIGRlZiBfY2hlY2tfcGF0aF9kb2VzX25vdF9leGlzdChzZWxmLCBsaW5lbm8s
IHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYu
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGgubm9ybXBh
dGgoZnVsbF9wYXRoKQorICAgICAgICAjIFdlYktpdCdzIHdheSBvZiBza2lwcGluZyB0ZXN0cyBp
cyB0byBhZGQgYSAtZGlzYWJsZWQgc3VmZml4LgorICAgICAgICAgICAgIyBTbyB3ZSBzaG91bGQg
Y29uc2lkZXIgdGhlIHBhdGggZXhpc3RpbmcgaWYgdGhlIHBhdGggb3IgdGhlCisgICAgICAgICMg
LWRpc2FibGVkIHZlcnNpb24gZXhpc3RzLgorICAgICAgICBpZiAobm90IHNlbGYuX3BvcnQucGF0
aF9leGlzdHMoZnVsbF9wYXRoKQorICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9wb3J0LnBhdGhf
ZXhpc3RzKGZ1bGxfcGF0aCArICctZGlzYWJsZWQnKSk6CisgICAgICAgICAgICAjIExvZyBhIG5v
biBmYXRhbCBlcnJvciBoZXJlIHNpbmNlIHlvdSBoaXQgdGhpcyBjYXNlIGFueQorICAgICAgICAg
ICAgIyB0aW1lIHlvdSB1cGRhdGUgdGVzdF9leHBlY3RhdGlvbnMudHh0IHdpdGhvdXQgc3luY2lu
ZworICAgICAgICAgICAgIyB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5CisgICAgICAgICAgICBz
ZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1BhdGggZG9lcyBub3QgZXhpc3QuJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAg
ICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgX2V4
cGFuZF90ZXN0cyhzZWxmLCB0ZXN0X2xpc3RfcGF0aCk6CiAgICAgICAgICIiIkNvbnZlcnQgdGhl
IHRlc3Qgc3BlY2lmaWNhdGlvbiB0byBhbiBhYnNvbHV0ZSwgbm9ybWFsaXplZAogICAgICAgICBw
YXRoIGFuZCBtYWtlIHN1cmUgZGlyZWN0b3JpZXMgZW5kIHdpdGggdGhlIE9TIHBhdGggc2VwYXJh
dG9yLiIiIgpAQCAtNzUyLDE3ICs3MjQsMTkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3Rz
LCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgICAgICAg
ICAgICAgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQp
OgogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgIGlmIHNlbGYuX2FscmVh
ZHlfc2Vlbl90ZXN0KHRlc3QsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgICAg
ICBpZiBzZWxmLl9hbHJlYWR5X3NlZW5fYmV0dGVyX21hdGNoKHRlc3QsIHRlc3RfbGlzdF9wYXRo
LAorICAgICAgICAgICAgICAgIG51bV9tYXRjaGVzLCBsaW5lbm8sIG92ZXJyaWRlc19hbGxvd2Vk
KToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBzZWxmLl9jbGVhcl9l
eHBlY3RhdGlvbnNfZm9yX3Rlc3QodGVzdCwgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAgICBz
ZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmllcnMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucywKKyAg
ICAgICAgICAgIHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IChvcy5wYXRoLm5vcm1wYXRo
KHRlc3RfbGlzdF9wYXRoKSwKKyAgICAgICAgICAgICAgICBudW1fbWF0Y2hlcywgbGluZW5vKQor
ICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywg
ZXhwZWN0YXRpb25zLCBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJp
ZGVzX2FsbG93ZWQpCiAKLSAgICBkZWYgX2FkZF90ZXN0KHNlbGYsIHRlc3QsIG1vZGlmaWVycywg
ZXhwZWN0YXRpb25zLCBvcHRpb25zLAorICAgIGRlZiBfYWRkX3Rlc3Qoc2VsZiwgdGVzdCwgbW9k
aWZpZXJzLCBudW1fbWF0Y2hlcywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAogICAgICAgICAgICAg
ICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICAiIiJTZXRzIHRoZSBleHBlY3RlZCBz
dGF0ZSBmb3IgYSBnaXZlbiB0ZXN0LgogCkBAIC03NzMsNiArNzQ3LDcgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgdGVzdDogdGVzdCB0byBh
ZGQKICAgICAgICAgICBtb2RpZmllcnM6IHNlcXVlbmNlIG9mIG1vZGlmaWVyIGtleXdvcmRzICgn
d29udGZpeCcsICdzbG93JywgZXRjLikKKyAgICAgICAgICBudW1fbWF0Y2hlczogbnVtYmVyIG9m
IG1vZGlmaWVycyB0aGF0IG1hdGNoZWQgdGhlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICBleHBl
Y3RhdGlvbnM6IHNlcXVlbmNlIG9mIGV4cGVjdGF0aW9ucyAoUEFTUywgSU1BR0UsIGV0Yy4pCiAg
ICAgICAgICAgb3B0aW9uczogc2VxdWVuY2Ugb2Yga2V5d29yZHMgYW5kIGJ1ZyBpZGVudGlmaWVy
cy4KICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZDogd2hldGhlciB3ZSdyZSBwYXJzaW5nIHRo
ZSByZWd1bGFyIGV4cGVjdGF0aW9ucwpAQCAtODExLDEzICs3ODYsMTMgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIHRoYW4gYSBwcmV2aW91cyBsaXN0aW5nLgogICAgICAg
ICAiIiIKICAgICAgICAgaWYgdGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6Ci0gICAgICAg
ICAgICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9ucy5wb3AodGVzdCwgJycpCi0gICAgICAgICAg
ICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX2V4cGVjdGF0aW9uX3RvX3Rlc3Rz
KQotICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl9tb2RpZmll
cl90b190ZXN0cykKLSAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2Vs
Zi5fdGltZWxpbmVfdG9fdGVzdHMpCi0gICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRz
KHRlc3QsIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzKQorICAgICAgICAgICAgYmFzZV9wYXRo
ID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdWzBdCisgICAgICAgICAgICBzZWxmLl90ZXN0
X3RvX2V4cGVjdGF0aW9ucy5wb3AoYmFzZV9wYXRoLCAnJykKKyAgICAgICAgICAgIHNlbGYuX3Jl
bW92ZV9mcm9tX3NldHMoYmFzZV9wYXRoLCBzZWxmLl9leHBlY3RhdGlvbl90b190ZXN0cykKKyAg
ICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHMoYmFzZV9wYXRoLCBzZWxmLl9tb2RpZmll
cl90b190ZXN0cykKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHMoYmFzZV9wYXRo
LCBzZWxmLl90aW1lbGluZV90b190ZXN0cykKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9t
X3NldHMoYmFzZV9wYXRoLCBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0cykKIAotICAgICAgICBz
ZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0gPSBvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9w
YXRoKQogCiAgICAgZGVmIF9yZW1vdmVfZnJvbV9zZXRzKHNlbGYsIHRlc3QsIGRpY3QpOgogICAg
ICAgICAiIiJSZW1vdmVzIHRoZSBnaXZlbiB0ZXN0IGZyb20gdGhlIHNldHMgaW4gdGhlIGRpY3Rp
b25hcnkuCkBAIC04MjksMzIgKzgwNCw2MSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
ICAgICAgICAgICAgIGlmIHRlc3QgaW4gc2V0X29mX3Rlc3RzOgogICAgICAgICAgICAgICAgIHNl
dF9vZl90ZXN0cy5yZW1vdmUodGVzdCkKIAotICAgIGRlZiBfYWxyZWFkeV9zZWVuX3Rlc3Qoc2Vs
ZiwgdGVzdCwgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFsbG93X292ZXJyaWRlcyk6Ci0gICAgICAgICIiIlJldHVybnMgdHJ1ZSBpZiB3ZSd2ZSBh
bHJlYWR5IHNlZW4gYSBtb3JlIHByZWNpc2UgcGF0aCBmb3IgdGhpcyB0ZXN0Ci0gICAgICAgIHRo
YW4gdGhlIHRlc3RfbGlzdF9wYXRoLgorICAgIGRlZiBfYWxyZWFkeV9zZWVuX2JldHRlcl9tYXRj
aChzZWxmLCB0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbnVtX21hdGNoZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAg
ICAiIiJSZXR1cm5zIHdoZXRoZXIgd2UndmUgc2VlbiBhIGJldHRlciBtYXRjaCBhbHJlYWR5IGlu
IHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZjoKKyAgICAgICAgKDEpIFdlJ3Zl
IGFscmVhZHkgc2VlbiBhIHRlc3RfbGlzdF9wYXRoIHRoYXQgbWF0Y2hlcyBtb3JlIG9mIHRoZSB0
ZXN0CisgICAgICAgICAgICB0aGFuIHRoaXMgcGF0aCBkb2VzLCBvcgorICAgICAgICAoMikgV2Un
dmUgc2VlbiBhIGxpbmUgdGhhdCBtYXRjaGVkIG1vcmUgb2YgdGhlIHRlc3QgY29uZmlnIHRoYW4K
KyAgICAgICAgICAgIHRoaXMgb25lIGRvZXMuCiAgICAgICAgICIiIgogICAgICAgICBpZiBub3Qg
dGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6CisgICAgICAgICAgICAjIFdlJ3ZlIG5ldmVy
IHNlZW4gdGhpcyB0ZXN0IGJlZm9yZS4KICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAg
ICAgIHByZXZfYmFzZV9wYXRoID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdCi0gICAgICAg
IGlmIChwcmV2X2Jhc2VfcGF0aCA9PSBvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSk6
Ci0gICAgICAgICAgICBpZiAobm90IGFsbG93X292ZXJyaWRlcyBvciB0ZXN0IGluIHNlbGYuX292
ZXJyaWRkaW5nX3Rlc3RzKToKLSAgICAgICAgICAgICAgICBpZiBhbGxvd19vdmVycmlkZXM6Ci0g
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3NvdXJjZSA9ICJvdmVycmlkZSIKLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbl9zb3VyY2Ug
PSAiZXhwZWN0YXRpb24iCi0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywg
J0R1cGxpY2F0ZSAlcy4nICUgZXhwZWN0YXRpb25fc291cmNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0KQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBzZWVuIHRoaXMgcGF0aCwg
YnV0IHRoYXQncyBva2F5IGJlY2F1c2UgaXRzCi0gICAgICAgICAgICAgICAgIyBpbiB0aGUgb3Zl
cnJpZGVzIGFuZCB0aGUgZWFybGllciBwYXRoIHdhcyBpbiB0aGUKLSAgICAgICAgICAgICAgICAj
IGV4cGVjdGF0aW9ucy4KLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcHJl
dl9iYXNlX3BhdGgsIHByZXZfbnVtX21hdGNoZXMsIHByZXZfbGluZW5vID0gc2VsZi5fdGVzdF9s
aXN0X3BhdGhzW3Rlc3RdCisgICAgICAgIGJhc2VfcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgodGVz
dF9saXN0X3BhdGgpCisKKyAgICAgICAgaWYgbGVuKHByZXZfYmFzZV9wYXRoKSA+IGxlbihiYXNl
X3BhdGgpOgorICAgICAgICAgICAgIyBUaGUgcHJldmlvdXMgcGF0aCBtYXRjaGVkIG1vcmUgb2Yg
dGhlIHRlc3QuCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGlmIGxlbihwcmV2
X2Jhc2VfcGF0aCkgPCBsZW4oYmFzZV9wYXRoKToKKyAgICAgICAgICAgICMgVGhpcyBwYXRoIG1h
dGNoZXMgbW9yZSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAg
ICAgIGlmIG92ZXJyaWRlc19hbGxvd2VkIGFuZCB0ZXN0IG5vdCBpbiBzZWxmLl9vdmVycmlkZGlu
Z190ZXN0czoKKyAgICAgICAgICAgICMgV2UgaGF2ZSBzZWVuIHRoaXMgcGF0aCwgYnV0IHRoYXQn
cyBva2F5IGJlY2F1c2UgaXQgaXMKKyAgICAgICAgICAgICMgaW4gdGhlIG92ZXJyaWRlcyBhbmQg
dGhlIGVhcmxpZXIgcGF0aCB3YXMgaW4gdGhlCisgICAgICAgICAgICAjIGV4cGVjdGF0aW9ucyAo
bm90IHRoZSBvdmVycmlkZXMpLgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAg
IyBBdCB0aGlzIHBvaW50IHdlIGtub3cgd2UgaGF2ZSBzZWVuIGEgcHJldmlvdXMgZXhhY3QgbWF0
Y2ggb24gdGhpcworICAgICAgICAjIGJhc2UgcGF0aCwgc28gd2UgbmVlZCB0byBjaGVjayB0aGUg
dHdvIHNldHMgb2YgbW9kaWZpZXJzLgorCisgICAgICAgIGlmIG92ZXJyaWRlc19hbGxvd2VkOgor
ICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gIm92ZXJyaWRlIgorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gImV4cGVjdGF0aW9uIgogCi0gICAg
ICAgICMgQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBzZWVuIGEgbW9yZSBwcmVjaXNlIHBhdGguCi0g
ICAgICAgIHJldHVybiBwcmV2X2Jhc2VfcGF0aC5zdGFydHN3aXRoKG9zLnBhdGgubm9ybXBhdGgo
dGVzdF9saXN0X3BhdGgpKQorICAgICAgICBpZiBwcmV2X251bV9tYXRjaGVzID09IG51bV9tYXRj
aGVzOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAgICAgICAgICAgICAg
ICAnRHVwbGljYXRlIG9yIGFtYmlndW91cyAlcy4nICUgZXhwZWN0YXRpb25fc291cmNlLAorICAg
ICAgICAgICAgICAgIHRlc3QpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGlm
IHByZXZfbnVtX21hdGNoZXMgPCBudW1fbWF0Y2hlczoKKyAgICAgICAgICAgIHNlbGYuX2xvZ19u
b25fZmF0YWxfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgICAgICdNb3JlIHNwZWNpZmljIGVu
dHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQnICUKKyAgICAgICAgICAgICAgICAobGlu
ZW5vLCBwcmV2X2xpbmVubyksIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICAgICAgc2VsZi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sCisgICAgICAg
ICAgICAnTW9yZSBzcGVjaWZpYyBlbnRyeSBvbiBsaW5lICVkIG92ZXJyaWRlcyBsaW5lICVkJyAl
CisgICAgICAgICAgICAocHJldl9saW5lbm8sIGxpbmVubyksIHRlc3RfbGlzdF9wYXRoKQorICAg
ICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIF9hZGRfZXJyb3Ioc2VsZiwgbGluZW5vLCBtc2cs
IHBhdGgpOgogICAgICAgICAiIiJSZXBvcnRzIGFuIGVycm9yIHRoYXQgd2lsbCBwcmV2ZW50IHJ1
bm5pbmcgdGhlIHRlc3RzLiBEb2VzIG5vdApAQCAtODY2LDMgKzg3MCwxODcgQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICIiIlJlcG9ydHMgYW4gZXJyb3IgdGhhdCB3aWxs
IG5vdCBwcmV2ZW50IHJ1bm5pbmcgdGhlIHRlc3RzLiBUaGVzZSBhcmUKICAgICAgICAgc3RpbGwg
ZXJyb3JzLCBidXQgbm90IGJhZCBlbm91Z2ggdG8gd2FycmFudCBicmVha2luZyB0ZXN0IHJ1bm5p
bmcuIiIiCiAgICAgICAgIHNlbGYuX25vbl9mYXRhbF9lcnJvcnMuYXBwZW5kKCdMaW5lOiVzICVz
ICVzJyAlIChsaW5lbm8sIG1zZywgcGF0aCkpCisKKworY2xhc3MgTW9kaWZpZXJNYXRjaFJlc3Vs
dChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc2Vs
Zi5udW1fbWF0Y2hlcyA9IE1vZGlmaWVyTWF0Y2hlci5OT19NQVRDSAorICAgICAgICBzZWxmLm9w
dGlvbnMgPSBvcHRpb25zCisgICAgICAgIHNlbGYuZXJyb3JzID0gW10KKyAgICAgICAgc2VsZi53
YXJuaW5ncyA9IFtdCisgICAgICAgIHNlbGYubW9kaWZpZXJzID0gW10KKyAgICAgICAgc2VsZi5f
bWF0Y2hlZF9yZWdleGVzID0gc2V0KCkKKyAgICAgICAgc2VsZi5fbWF0Y2hlZF9tYWNyb3MgPSBz
ZXQoKQorCisKK2NsYXNzIE1vZGlmaWVyTWF0Y2hlcihvYmplY3QpOgorCisgICAgIiIiCisgICAg
VGhpcyBjbGFzcyBtYW5hZ2VzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgIm1vZGlmaWVycyIg
Zm9yIGEgZ2l2ZW4KKyAgICBsaW5lIGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZS4gTW9kaWZpZXJz
IGFyZSB0aGUgdG9rZW5zIHRoYXQgYXBwZWFyIHRvIHRoZQorICAgIGxlZnQgb2YgdGhlIGNvbG9u
IG9uIGEgbGluZS4gRm9yIGV4YW1wbGUsICJCVUcxMjM0IiwgIkRFQlVHIiwgYW5kICJXSU4iIGFy
ZQorICAgIGFsbCBtb2RpZmllcnMuIFRoaXMgY2xhc3MgZ2V0cyB3aGF0IHRoZSB2YWxpZCBtb2Rp
ZmllcnMgYXJlLCBhbmQgd2hpY2gKKyAgICBtb2RpZmllcnMgYXJlIGFsbG93ZWQgdG8gZXhpc3Qg
dG9nZXRoZXIgb24gYSBsaW5lLCBmcm9tIHRoZQorICAgIFRlc3RDb25maWd1cmF0aW9uIG9iamVj
dCB0aGF0IGlzIHBhc3NlZCBpbiB0byB0aGUgY2FsbC4KKworICAgIFRoaXMgY2xhc3MgZGV0ZWN0
cyAqaW50cmEqLWxpbmUgZXJyb3JzIGxpa2UgdW5rbm93biBtb2RpZmllcnMsIGJ1dAorICAgIGRv
ZXMgbm90IGRldGVjdCAqaW50ZXIqLWxpbmUgbW9kaWZpZXJzIGxpa2UgZHVwbGljYXRlIGV4cGVj
dGF0aW9ucy4KKworICAgIE1vcmUgaW1wb3J0YW50bHksIHRoaXMgY2xhc3MgaXMgYWxzbyB1c2Vk
IHRvIGRldGVybWluZSBpZiBhIGdpdmVuIGxpbmUKKyAgICBtYXRjaGVzIHRoZSBwb3J0IGluIHF1
ZXN0aW9uLiBNYXRjaGVzIGFyZSByYW5rZWQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIKKyAgICBv
ZiBtb2RpZmllcnMgdGhhdCBtYXRjaCBvbiBhIGxpbmUuIEEgbGluZSB3aXRoIG5vIG1vZGlmaWVy
cyBtYXRjaGVzCisgICAgZXZlcnl0aGluZyBhbmQgaGFzIGEgc2NvcmUgb2YgemVyby4gQSBsaW5l
IHdpdGggb25lIG1vZGlmaWVyIG1hdGNoZXMgb25seQorICAgIHBvcnRzIHRoYXQgaGF2ZSB0aGF0
IG1vZGlmaWVyIGFuZCBnZXRzIGEgc2NvcmUgb2YgMSwgYW5kIHNvIG9uZS4gUG9ydHMKKyAgICB0
aGF0IGRvbid0IG1hdGNoIGF0IGFsbCBnZXQgYSBzY29yZSBvZiAtMS4KKworICAgIEdpdmVuIHR3
byBsaW5lcyBpbiBhIGZpbGUgdGhhdCBhcHBseSB0byB0aGUgc2FtZSBmaWxlLCBhIGhpZ2hlciBz
Y29yZQorICAgIGJlYXRzIGEgbG93ZXIgb25lLCBhbmQgdHdvIGxpbmVzIHdpdGggdGhlIHNhbWUg
c2NvcmUgYXJlIGNvbnNpZGVyZWQKKyAgICBhbWJpZ3VvdXMgKGluZGVwZW5kZW50IG9mIHRoZSBv
cmRlciBvZiBsaW5lcyBpbiB0aGUgZmlsZSkuIEZvciBleGFtcGxlLCBpbjoKKworICAgIEJVRzEg
UkVMRUFTRSA6IGZvby5odG1sID0gRkFJTAorICAgIEJVRzEgV0lOIFJFTEVBU0UgOiBmb28uaHRt
bCA9IFBBU1MKKyAgICBCVUcyIFdJTiA6IGJhci5odG1sID0gRkFJTAorICAgIEJVRzIgREVCVUcg
OiBiYXIuaHRtbCA9IFBBU1MKKworICAgIHRoZSBleHBlY3RhdGlvbiBmb3IgZm9vLmh0bWwgb24g
YSBXaW4gWFAgUmVsZWFzZSBib3Qgd291bGQgYmUgUEFTUyBzaW5jZQorICAgIHRoZSBzY29yZXMg
Zm9yIHRoZSBmaXJzdCB0d28gbGluZXMgYXJlIDEgYW5kIDIsIHJlc3BlY3RpdmVseS4gSG93ZXZl
ciwKKyAgICBsaW5lcyB0aHJlZSBhbmQgZm91ciB3b3VsZCBwcm9kdWNlIGEgZHVwbGljYXRlIGV4
cGVjdGF0aW9uIG9uICBhIFdpbgorICAgIERlYnVnIGJvdCBzaW5jZSBib3RoIHRoZSAnd2luJyBh
bmQgdGhlICdkZWJ1ZycgZXhwZWN0YXRpb25zIHdvdWxkIGFwcGx5LgorCisgICAgSW4gYWRkaXRp
b24gdG8gdGhlIGRlZmluaXRpb25zIG9mIGFsbCBvZiB0aGUgbW9kaWZpZXJzLCB0aGUgY2xhc3MK
KyAgICBzdXBwb3J0cyAibWFjcm9zIiB0aGF0IGFyZSBleHBhbmRlZCBwcmlvciB0byBpbnRlcnBy
ZXRhdGlvbiwgYW5kICJpZ25vcmUKKyAgICByZWdleGVzIiB0aGF0IGNhbiBiZSB1c2VkIHRvIHNr
aXAgb3ZlciBtb2RpZmllcnMgbGlrZSB0aGUgQlVHKiBtb2RpZmllcnMuCisgICAgIiIiCisgICAg
TUFDUk9TID0geworICAgICAgICAnbWFjLXNub3dsZW9wYXJkJzogWydtYWMnLCAnc25vd2xlb3Bh
cmQnXSwKKyAgICAgICAgJ21hYy1sZW9wYXJkJzogWydtYWMnLCAnbGVvcGFyZCddLAorICAgICAg
ICAnd2luLXhwJzogWyd3aW4nLCAneHAnXSwKKyAgICAgICAgJ3dpbi12aXN0YSc6IFsnd2luJywg
J3Zpc3RhJ10sCisgICAgICAgICd3aW4tNyc6IFsnd2luJywgJ3dpbjcnXSwKKyAgICB9CisKKyAg
ICAjIFdlIGRvbid0IGluY2x1ZGUgdGhlICJub25lIiBtb2RpZmllciBiZWNhdXNlIGl0IGlzbid0
IGFjdHVhbGx5IGxlZ2FsLgorICAgIFJFR0VYRVNfVE9fSUdOT1JFID0gKFsnYnVnXHcrJ10gKwor
ICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1PRElGSUVSUy5r
ZXlzKClbOi0xXSkKKyAgICBEVVBMSUNBVEVfUkVHRVhFU19BTExPV0VEID0gWydidWdcdysnXQor
CisgICAgIyBNYWdpYyB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBvcHRpb25zIGRvbid0IG1hdGNo
LgorICAgIE5PX01BVENIID0gLTEKKworICAgICMgRklYTUU6IFRoZSBjb2RlIGN1cnJlbnRseSBk
b2Vzbid0IGRldGVjdCBjb21iaW5hdGlvbnMgb2YgbW9kaWZpZXJzCisgICAgIyB0aGF0IGFyZSBz
eW50YWN0aWNhbGx5IHZhbGlkIGJ1dCBzZW1hbnRpY2FsbHkgaW52YWxpZCwgbGlrZQorICAgICMg
J01BQyBYUCcuIFNlZSBNb2RpZmllck1hdGNoVGVzdC50ZXN0X2ludmFsaWRfY29tYmluYXRpb25z
KCkgaW4gdGhlCisgICAgIyBfdW5pdHRlc3QucHkgZmlsZS4KKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB0ZXN0X2NvbmZpZyk6CisgICAgICAgICIiIkluaXRpYWxpemUgYSBNb2RpZmllck1hdGNo
ZXIgYXJndW1lbnQgd2l0aCB0aGUgVGVzdENvbmZpZ3VyYXRpb24gaXQKKyAgICAgICAgc2hvdWxk
IGJlIG1hdGNoZWQgYWdhaW5zdC4iIiIKKyAgICAgICAgc2VsZi50ZXN0X2NvbmZpZyA9IHRlc3Rf
Y29uZmlnCisgICAgICAgIHNlbGYuYWxsb3dlZF9jb25maWd1cmF0aW9ucyA9IHRlc3RfY29uZmln
LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCkKKyAgICAgICAgc2VsZi5tYWNyb3MgPSBzZWxmLk1B
Q1JPUworCisgICAgICAgIHNlbGYucmVnZXhlc190b19pZ25vcmUgPSB7fQorICAgICAgICBmb3Ig
cmVnZXhfc3RyIGluIHNlbGYuUkVHRVhFU19UT19JR05PUkU6CisgICAgICAgICAgICBzZWxmLnJl
Z2V4ZXNfdG9faWdub3JlW3JlZ2V4X3N0cl0gPSByZS5jb21waWxlKHJlZ2V4X3N0cikKKworICAg
ICAgICAjIEtlZXAgYSBzZXQgb2YgYWxsIG9mIHRoZSBsZWdhbCBtb2RpZmllcnMgZm9yIHF1aWNr
IGNoZWNraW5nLgorICAgICAgICBzZWxmLl9hbGxfbW9kaWZpZXJzID0gc2V0KCkKKworICAgICAg
ICAjIEtlZXAgYSBkaWN0IG1hcHBpbmcgdmFsdWVzIGJhY2sgdG8gdGhlaXIgY2F0ZWdvcmllcy4K
KyAgICAgICAgc2VsZi5fY2F0ZWdvcmllc19mb3JfbW9kaWZpZXJzID0ge30KKyAgICAgICAgZm9y
IGNvbmZpZyBpbiBzZWxmLmFsbG93ZWRfY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICBmb3Ig
Y2F0ZWdvcnksIG1vZGlmaWVyIGluIGNvbmZpZy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNl
bGYuX2NhdGVnb3JpZXNfZm9yX21vZGlmaWVyc1ttb2RpZmllcl0gPSBjYXRlZ29yeQorICAgICAg
ICAgICAgICAgIHNlbGYuX2FsbF9tb2RpZmllcnMuYWRkKG1vZGlmaWVyKQorCisgICAgZGVmIG1h
dGNoKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICAiIiJDaGVja3MgYSBsaXN0IG9mIG9wdGlvbnMg
YWdhaW5zdCB0aGUgY29uZmlnIHNldCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIE9wdGlv
bnMgbWF5IGJlIGVpdGhlciBhY3R1YWwgbW9kaWZpZXIgc3RyaW5ncywgIm1hY3JvIiBzdHJpbmdz
CisgICAgICAgIHRoYXQgZ2V0IGV4cGFuZGVkIHRvIGEgbGlzdCBvZiBtb2RpZmllcnMsIG9yIHN0
cmluZ3MgdGhhdCBhcmUgYWxsb3dlZAorICAgICAgICB0byBiZSBpZ25vcmVkLiBBbGwgb2YgdGhl
IG9wdGlvbnMgbXVzdCBiZSBwYXNzZWQgaW4gaW4gbG93ZXIgY2FzZS4KKworICAgICAgICBSZXR1
cm5zIHRoZSBudW1iZXIgb2YgbWF0Y2hpbmcgY2F0ZWdvcmllcywgb3IgTk9fTUFUQ0ggKC0xKSBp
ZiBpdAorICAgICAgICBkb2Vzbid0IG1hdGNoIG9yIHRoZXJlIHdlcmUgZXJyb3JzIGZvdW5kLiBN
YXRjaGVzIGFyZSBwcmlvcml0aXplZAorICAgICAgICBieSB0aGUgbnVtYmVyIG9mIG1hdGNoaW5n
IGNhdGVnb3JpZXMsIGJlY2F1c2UgdGhlIG1vcmUgc3BlY2lmaWMKKyAgICAgICAgdGhlIG9wdGlv
bnMgbGlzdCwgdGhlIG1vcmUgY2F0ZWdvcmllcyB3aWxsIG1hdGNoLgorCisgICAgICAgIFRoZSBy
ZXN1bHRzIG9mIHRoZSBtb3N0IHJlY2VudCBtYXRjaCBhcmUgYXZhaWxhYmxlIGluIHRoZSAnb3B0
aW9ucycsCisgICAgICAgICdtb2RpZmllcnMnLCAnbnVtX21hdGNoZXMnLCAnZXJyb3JzJywgYW5k
ICd3YXJuaW5ncycgcHJvcGVydGllcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IE1v
ZGlmaWVyTWF0Y2hSZXN1bHQob3B0aW9ucykKKyAgICAgICAgc2VsZi5fcGFyc2UocmVzdWx0KQor
ICAgICAgICBpZiByZXN1bHQuZXJyb3JzOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAg
ICAgICBzZWxmLl9jb3VudF9tYXRjaGVzKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAor
CisgICAgZGVmIF9wYXJzZShzZWxmLCByZXN1bHQpOgorICAgICAgICAjIEZJWE1FOiBTaG91bGQg
d2Ugd2FybiBhYm91dCBsaW5lcyBoYXZpbmcgZXZlcnkgdmFsdWUgaW4gYSBjYXRlZ29yeT8KKyAg
ICAgICAgZm9yIG9wdGlvbiBpbiByZXN1bHQub3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX3Bh
cnNlX29uZShvcHRpb24sIHJlc3VsdCkKKworICAgIGRlZiBfcGFyc2Vfb25lKHNlbGYsIG9wdGlv
biwgcmVzdWx0KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHNlbGYuX2FsbF9tb2RpZmllcnM6Cisg
ICAgICAgICAgICBzZWxmLl9hZGRfbW9kaWZpZXIob3B0aW9uLCByZXN1bHQpCisgICAgICAgIGVs
aWYgb3B0aW9uIGluIHNlbGYubWFjcm9zOgorICAgICAgICAgICAgc2VsZi5fZXhwYW5kX21hY3Jv
KG9wdGlvbiwgcmVzdWx0KQorICAgICAgICBlbGlmIG5vdCBzZWxmLl9tYXRjaGVzX2FueV9yZWdl
eChvcHRpb24sIHJlc3VsdCk6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiVW5y
ZWNvZ25pemVkIG9wdGlvbiAnJXMnIiAlIG9wdGlvbikKKworICAgIGRlZiBfYWRkX21vZGlmaWVy
KHNlbGYsIG9wdGlvbiwgcmVzdWx0KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHJlc3VsdC5tb2Rp
ZmllcnM6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiTW9yZSB0aGFuIG9uZSAn
JXMnIiAlIG9wdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5tb2RpZmll
cnMuYXBwZW5kKG9wdGlvbikKKworICAgIGRlZiBfZXhwYW5kX21hY3JvKHNlbGYsIG1hY3JvLCBy
ZXN1bHQpOgorICAgICAgICBpZiBtYWNybyBpbiByZXN1bHQuX21hdGNoZWRfbWFjcm9zOgorICAg
ICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBtYWNy
bykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIG1vZHMgPSBbXQorICAgICAgICBmb3Ig
bW9kaWZpZXIgaW4gc2VsZi5tYWNyb3NbbWFjcm9dOgorICAgICAgICAgICAgaWYgbW9kaWZpZXIg
aW4gcmVzdWx0Lm9wdGlvbnM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQo
IkNhbid0IHNwZWNpZnkgYm90aCBtb2RpZmllciAnJXMnIGFuZCAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIm1hY3JvICclcyciICUgKG1vZGlmaWVyLCBtYWNybykpCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZGlmaWVyKQor
ICAgICAgICByZXN1bHQuX21hdGNoZWRfbWFjcm9zLmFkZChtYWNybykKKyAgICAgICAgcmVzdWx0
Lm1vZGlmaWVycy5leHRlbmQobW9kcykKKworICAgIGRlZiBfbWF0Y2hlc19hbnlfcmVnZXgoc2Vs
Ziwgb3B0aW9uLCByZXN1bHQpOgorICAgICAgICBmb3IgcmVnZXhfc3RyLCBwYXR0ZXJuIGluIHNl
bGYucmVnZXhlc190b19pZ25vcmUuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYXR0ZXJu
Lm1hdGNoKG9wdGlvbik6CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlZ2V4X21hdGNo
KHJlZ2V4X3N0ciwgcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgZGVmIF9oYW5kbGVfcmVnZXhfbWF0Y2goc2VsZiwgcmVnZXhf
c3RyLCByZXN1bHQpOgorICAgICAgICBpZiAocmVnZXhfc3RyIGluIHJlc3VsdC5fbWF0Y2hlZF9y
ZWdleGVzIGFuZAorICAgICAgICAgICAgcmVnZXhfc3RyIG5vdCBpbiBzZWxmLkRVUExJQ0FURV9S
RUdFWEVTX0FMTE9XRUQpOgorICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUg
dGhhbiBvbmUgb3B0aW9uIG1hdGNoaW5nICclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlZ2V4X3N0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5f
bWF0Y2hlZF9yZWdleGVzLmFkZChyZWdleF9zdHIpCisKKyAgICBkZWYgX2NvdW50X21hdGNoZXMo
c2VsZiwgcmVzdWx0KToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1vZGlmaWVy
cyB0aGF0IG1hdGNoIHRoZSB0ZXN0IGNvbmZpZy4iIiIKKyAgICAgICAgY2F0ZWdvcml6ZWRfbW9k
aWZpZXJzID0gc2VsZi5fZ3JvdXBfYnlfY2F0ZWdvcnkocmVzdWx0Lm1vZGlmaWVycykKKyAgICAg
ICAgcmVzdWx0Lm51bV9tYXRjaGVzID0gMAorICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlmaWVy
IGluIHNlbGYudGVzdF9jb25maWcuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5IGlu
IGNhdGVnb3JpemVkX21vZGlmaWVyczoKKyAgICAgICAgICAgICAgICBpZiBtb2RpZmllciBpbiBj
YXRlZ29yaXplZF9tb2RpZmllcnNbY2F0ZWdvcnldOgorICAgICAgICAgICAgICAgICAgICByZXN1
bHQubnVtX21hdGNoZXMgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5udW1fbWF0Y2hlcyA9IHNlbGYuTk9fTUFUQ0gKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICBkZWYgX2dyb3VwX2J5X2NhdGVnb3J5KHNlbGYsIG1vZGlmaWVy
cyk6CisgICAgICAgICMgUmV0dXJucyBhIGRpY3Qgb2YgY2F0ZWdvcnkgbmFtZSAtPiBsaXN0IG9m
IG1vZGlmaWVycy4KKyAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5ID0ge30KKyAgICAgICAg
Zm9yIG0gaW4gbW9kaWZpZXJzOgorICAgICAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5LnNl
dGRlZmF1bHQoc2VsZi5fY2F0ZWdvcnkobSksIFtdKS5hcHBlbmQobSkKKyAgICAgICAgcmV0dXJu
IG1vZGlmaWVyc19ieV9jYXRlZ29yeQorCisgICAgZGVmIF9jYXRlZ29yeShzZWxmLCBtb2RpZmll
cik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYXRlZ29yaWVzX2Zvcl9tb2RpZmllcnNbbW9kaWZp
ZXJdCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5CmluZGV4IDM0NzcxZjMwMzlhZmYxMGEwZmQyMjBlZmE0ODM2NzU1Yzc3MjhlZTMu
LjJiNWVhOWUxZWI1NzgzNDg0NDZmZmVmYjEyMzgwYjZkYzg0N2Y5NTQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0z
NCw2ICszNCw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9y
dCBpbXBvcnQgYmFzZQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2Uu
dGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0ICoKIAogY2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CkBAIC04MCw2ICs4MSw5IEBAIGNsYXNzIEZ1bmN0aW9uc1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogCiAKIGNsYXNzIEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMg
Tm90ZSB0aGF0IGFsbCBvZiB0aGVzZSB0ZXN0cyBhcmUgd3JpdHRlbiBhc3N1bWluZyB0aGUgY29u
ZmlndXJhdGlvbgorICAgICMgYmVpbmcgdGVzdGVkIGlzIE1hYyBMZW9wYXJkLCBSZWxlYXNlIGJ1
aWxkLgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RGdW5jLCBzZXRVcD1Ob25lLCB0ZWFy
RG93bj1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQu
Z2V0KCd0ZXN0JywgTm9uZSkKICAgICAgICAgc2VsZi5fZXhwID0gTm9uZQpAQCAtMTA1LDEzICsx
MDksMTIgQEAgQlVHX1RFU1QgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNr
c3VtLmh0bWwgPSBJTUFHRQogQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3Rl
ZC9pbWFnZS5odG1sID0gSU1BR0UKICIiIgogCi0gICAgZGVmIHBhcnNlX2V4cChzZWxmLCBleHBl
Y3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICBpc19kZWJ1Z19tb2RlPUZhbHNlKToKKyAgICBkZWYgcGFyc2VfZXhwKHNlbGYsIGV4
cGVjdGF0aW9ucywgb3ZlcnJpZGVzPU5vbmUsIGlzX2xpbnRfbW9kZT1GYWxzZSk6CisgICAgICAg
IHRlc3RfY29uZmlnID0gc2VsZi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKQogICAgICAgICBz
ZWxmLl9leHAgPSBUZXN0RXhwZWN0YXRpb25zKHNlbGYuX3BvcnQsCiAgICAgICAgICAgICAgdGVz
dHM9c2VsZi5nZXRfYmFzaWNfdGVzdHMoKSwKICAgICAgICAgICAgICBleHBlY3RhdGlvbnM9ZXhw
ZWN0YXRpb25zLAotICAgICAgICAgICAgIHRlc3RfcGxhdGZvcm1fbmFtZT1zZWxmLl9wb3J0LnRl
c3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9aXNfZGVidWdf
bW9kZSwKKyAgICAgICAgICAgICB0ZXN0X2NvbmZpZz10ZXN0X2NvbmZpZywKICAgICAgICAgICAg
ICBpc19saW50X21vZGU9aXNfbGludF9tb2RlLAogICAgICAgICAgICAgIG92ZXJyaWRlcz1vdmVy
cmlkZXMpCiAKQEAgLTEyMCw3ICsxMjMsNyBAQCBCVUdfVEVTVCBXT05URklYIFdJTiA6IGZhaWx1
cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBJTUFHRQogICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXQoW3Jlc3VsdF0pKQogCiAKLWNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0KEJhc2UpOgor
Y2xhc3MgQmFzaWNUZXN0cyhCYXNlKToKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKICAgICAg
ICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCiAgICAgICAg
IHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKQEAg
LTEyOCwyMyArMTMxLDE0IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0KEJhc2UpOgogICAg
ICAgICBzZWxmLmFzc2VydF9leHAoJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBQQVNTKQogICAgICAgICBz
ZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwnLCBQQVNTKQogCisK
K2NsYXNzIE1pc2NUZXN0cyhCYXNlKToKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9yZXN1bHRzKHNl
bGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IFRFWFQgQ1JBU0gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2V4
cC5nZXRfZXhwZWN0YXRpb25zKAogICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJykpLAogICAgICAgICAgICAgc2V0KFtURVhULCBDUkFTSF0pKQog
Ci0gICAgZGVmIHRlc3RfcHJlY2VkZW5jZShzZWxmKToKLSAgICAgICAgIyBUaGlzIHRlc3RzIGhh
bmRsaW5nIHByZWNlZGVuY2Ugb2Ygc3BlY2lmaWMgbGluZXMgb3ZlciBkaXJlY3RvcmllcwotICAg
ICAgICAjIGFuZCB0ZXN0cyBleHBlY3RhdGlvbnMgY292ZXJpbmcgZW50aXJlIGRpcmVjdG9yaWVz
LgotICAgICAgICBleHBfc3RyID0gIiIiCi1CVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVAotQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQotIiIi
Ci0gICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCi0KICAgICBkZWYg
dGVzdF9jYXRlZ29yeV9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGNo
ZWNrcyB1bmtub3duIHRlc3RzIGFyZSBub3QgcHJlc2VudCBpbiB0aGUKICAgICAgICAgIyBleHBl
Y3RhdGlvbnMgYW5kIHRoYXQga25vd24gdGVzdCBwYXJ0IG9mIGEgdGVzdCBjYXRlZ29yeSBpcwpA
QCAtMTU5LDIwICsxNTMsNiBAQCBCVUdYIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZCA9IElN
QUdFCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25fdGVzdCkKICAgICAgICAgc2Vs
Zi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCiAKLSAg
ICBkZWYgdGVzdF9yZWxlYXNlX21vZGUoc2VsZik6Ci0gICAgICAgIHNlbGYucGFyc2VfZXhwKCdC
VUdYIERFQlVHIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRf
ZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhUKQotICAgICAgICBzZWxmLnBh
cnNlX2V4cCgnQlVHWCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVY
VCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9VHJ1ZSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBQQVNTKQotICAg
ICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPUZhbHNl
KQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcs
IFBBU1MpCi0gICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdYIFJFTEVBU0UgOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVi
dWdfbW9kZT1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3Rl
ZC90ZXh0Lmh0bWwnLCBURVhUKQotCiAgICAgZGVmIHRlc3RfZ2V0X29wdGlvbnMoc2VsZik6CiAg
ICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2V4cC5nZXRfb3B0aW9ucygKQEAgLTIxNyw3ICsx
OTcsNyBAQCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCIiIikKICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoVHJ1ZSwgIlBhcnNlRXJyb3Igd2Fzbid0IHJhaXNlZCIpCiAg
ICAgICAgIGV4Y2VwdCBQYXJzZUVycm9yLCBlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGUuZmF0YWwpCi0gICAgICAgICAgICBleHBfZXJyb3JzID0gW3UnTGluZToxIEludmFsaWQgbW9k
aWZpZXIgZm9yIHRlc3Q6IGZvbyBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLAorICAgICAg
ICAgICAgZXhwX2Vycm9ycyA9IFt1IkxpbmU6MSBVbnJlY29nbml6ZWQgb3B0aW9uICdmb28nIGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHUi
TGluZToyIE1pc3NpbmcgZXhwZWN0YXRpb25zLiBbJyBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5o
dG1sJ10iXQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICdcbicuam9pbiht
YXAoc3RyLCBleHBfZXJyb3JzKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJy
b3JzLCBleHBfZXJyb3JzKQpAQCAtMjMzLDc3ICsyMTMsMTU3IEBAIFNLSVAgOiBmYWlsdXJlcy9l
eHBlY3RlZC9pbWFnZS5odG1sIiIiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIo
ZSksICdcbicuam9pbihtYXAoc3RyLCBleHBfZXJyb3JzKSkpCiAgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGUuZXJyb3JzLCBleHBfZXJyb3JzKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4X21p
c3NpbmdfZXhwZWN0YXRpb24oc2VsZik6CisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVzKHNlbGYpOgor
ICAgICAgICBzZWxmLnBhcnNlX2V4cCgiQlVHX0VYUDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVCIsCisgICAgICAgICAgICAgICAgICAgICAgICJCVUdfT1ZFUlJJREUgOiBmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgSU1BR0UpCisKKyAgICBkZWYgdGVzdF9v
dmVycmlkZXNfX2R1cGxpY2F0ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFy
c2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCisgICAgICAgICAgICAgIkJVR19FWFA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAorICAgICAgICAgICAgICIiIgorQlVHX09WRVJS
SURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UKK0JVR19PVkVSUklERSA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IENSQVNICisiIiIpCisKKyAgICBkZWYgdGVz
dF9waXhlbF90ZXN0c19mbGFnKHNlbGYpOgorICAgICAgICBkZWYgbWF0Y2godGVzdCwgcmVzdWx0
LCBwaXhlbF90ZXN0c19lbmFibGVkKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHAubWF0
Y2hlc19hbl9leHBlY3RlZF9yZXN1bHQoCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCh0
ZXN0KSwgcmVzdWx0LCBwaXhlbF90ZXN0c19lbmFibGVkKQorCisgICAgICAgIHNlbGYucGFyc2Vf
ZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQorICAgICAgICBzZWxmLmFzc2VydFRy
dWUobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQsIFRydWUpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcs
IFRFWFQsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBDUkFTSCwgRmFsc2UpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2No
ZWNrc3VtLmh0bWwnLCBJTUFHRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUp
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdl
X2NoZWNrc3VtLmh0bWwnLCBQQVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFs
c2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL2Ny
YXNoLmh0bWwnLCBTS0lQLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgn
cGFzc2VzL3RleHQuaHRtbCcsIFBBU1MsIEZhbHNlKSkKKworCitjbGFzcyBFeHBlY3RhdGlvblN5
bnRheFRlc3RzKEJhc2UpOgorICAgIGRlZiB0ZXN0X21pc3NpbmdfZXhwZWN0YXRpb24oc2VsZik6
CiAgICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBleHBlY3RhdGlvbi4KICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1UcnVlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpCiAK
LSAgICBkZWYgdGVzdF9zeW50YXhfaW52YWxpZF9vcHRpb24oc2VsZik6CisgICAgZGVmIHRlc3Rf
bWlzc2luZ19jb2xvbihzZWxmKToKKyAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIG1vZGlm
aWVycyBhbmQgdGhlICc6JwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBz
ZWxmLnBhcnNlX2V4cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUIEZPTzog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gUEFTUycpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKIAotICAgIGRlZiB0
ZXN0X3N5bnRheF9pbnZhbGlkX2V4cGVjdGF0aW9uKHNlbGYpOgotICAgICAgICAjIFRoaXMgaXMg
bWlzc2luZyB0aGUgZXhwZWN0YXRpb24uCisgICAgZGVmIGRpc2FibGVkX3Rlc3RfdG9vX21hbnlf
Y29sb25zKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBFbmFibGUgdGhpcyB0ZXN0IGFuZCBmaXgg
dGhlIHVuZGVybHlpbmcgYnVnLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9y
LCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBQQVNTIDonKQorCisgICAgZGVmIHRlc3RfdG9v
X21hbnlfZXF1YWxzX3NpZ25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJz
ZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19U
RVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUID0gSU1BR0UnKQorCisgICAg
ZGVmIHRlc3RfdW5yZWNvZ25pemVkX2V4cGVjdGF0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBGT08nKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IFVOS05PV04nKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4X21pc3NpbmdfYnVnaWQo
c2VsZik6CisKK2NsYXNzIFNlbWFudGljVGVzdHMoQmFzZSk6CisgICAgZGVmIHRlc3RfYnVnX2Zv
cm1hdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5w
YXJzZV9leHAsICdCVUcxMjM0IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcp
CisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2J1Z2lkKHNlbGYpOgogICAgICAgICAjIFRoaXMgc2hv
dWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KICAgICAgICAgc2VsZi5wYXJzZV9leHAoJ1NMT1cg
OiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKICAgICAgICAgICAgIGxlbihzZWxmLl9leHAuX2V4cGVjdGVkX2ZhaWx1cmVzLmdl
dF9ub25fZmF0YWxfZXJyb3JzKCkpLCAxKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfc2xvd19h
bmRfdGltZW91dChzZWxmKToKKyAgICBkZWYgdGVzdF9zbG93X2FuZF90aW1lb3V0KHNlbGYpOgog
ICAgICAgICAjIEEgdGVzdCBjYW5ub3QgYmUgU0xPVyBhbmQgZXhwZWN0ZWQgdG8gVElNRU9VVC4K
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCiAg
ICAgICAgICAgICAnQlVHX1RFU1QgU0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRt
bCA9IFRJTUVPVVQnKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfcmViYXNlbGluZShzZWxmKToK
KyAgICBkZWYgdGVzdF9yZWJhc2VsaW5lKHNlbGYpOgogICAgICAgICAjIENhbid0IGxpbnQgYSBm
aWxlIHcvICdSRUJBU0VMSU5FJyBpbiBpdC4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFy
c2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCiAgICAgICAgICAgICAnQlVHX1RFU1QgUkVCQVNFTElO
RSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAogICAgICAgICAgICAgaXNf
bGludF9tb2RlPVRydWUpCiAKLSAgICBkZWYgdGVzdF9zZW1hbnRpY19kdXBsaWNhdGVzKHNlbGYp
OgorICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKLUJVR19URVNUIDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAotQlVHX1RFU1QgOiBmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwgPSBJTUFHRSIiIikKK0JVR19FWFAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwgPSBURVhUCitCVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0Ui
IiIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9l
eHAsCi0gICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgIiIiCi1CVUdf
VEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR19URVNUIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCisgICAgICAgICAgICBzZWxmLmdl
dF9iYXNpY19leHBlY3RhdGlvbnMoKSwgb3ZlcnJpZGVzPSIiIgorQlVHX09WRVJSSURFIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHX09WRVJSSURFIDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIsICkKIAotICAgIGRlZiB0ZXN0X3NlbWFudGlj
X21pc3NpbmdfZmlsZShzZWxmKToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2ZpbGUoc2VsZik6CiAg
ICAgICAgICMgVGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVycm9yLgogICAgICAgICBzZWxm
LnBhcnNlX2V4cCgnQlVHX1RFU1QgOiBtaXNzaW5nX2ZpbGUuaHRtbCA9IFRFWFQnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgbGVuKHNlbGYuX2V4cC5fZXhwZWN0ZWRf
ZmFpbHVyZXMuZ2V0X25vbl9mYXRhbF9lcnJvcnMoKSksIDEpCiAKIAotICAgIGRlZiB0ZXN0X292
ZXJyaWRlcyhzZWxmKToKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhw
ZWN0YXRpb25zKCksICIiIgotQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gSU1BR0UiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sJywgSU1BR0UpCitjbGFzcyBQcmVjZWRlbmNlVGVzdHMoQmFzZSk6CisgICAg
ZGVmIHRlc3RfZmlsZV9vdmVyX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3Rz
IGhhbmRsaW5nIHByZWNlZGVuY2Ugb2Ygc3BlY2lmaWMgbGluZXMgb3ZlciBkaXJlY3Rvcmllcwor
ICAgICAgICAjIGFuZCB0ZXN0cyBleHBlY3RhdGlvbnMgY292ZXJpbmcgZW50aXJlIGRpcmVjdG9y
aWVzLgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVAorQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQor
IiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKKyAgICAgICAgc2VsZi5h
c3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCiAKLSAgICBk
ZWYgdGVzdF9tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdChzZWxmKToKKyAgICAgICAgZXhwX3N0
ciA9ICIiIgorQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQorQlVHWCA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLnBh
cnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCcsIFRFWFQpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAgICAgIGRlZiBtYXRjaCh0ZXN0LCBy
ZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4
cC5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90
ZXN0KHRlc3QpLCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpCisgICAgZGVmIHRlc3RfYW1i
aWd1b3VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxm
LnBhcnNlX2V4cCwgIiIiCitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBB
U1MKK0JVR19URVNUIE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMCisiIiIpCiAKLSAgICAg
ICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVY
VCwgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sJywgVEVYVCwgRmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1h
dGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBDUkFTSCwgVHJ1ZSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIENS
QVNILCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIElNQUdFLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIFBBU1MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIFNLSVAsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1hdGNoKCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUywgRmFsc2UpKQorICAgIGRlZiB0
ZXN0X21vcmVfd2lucyhzZWxmKToKKyAgICAgICAgZXhwX3N0ciA9ICIiIgorQlVHX1RFU1QgUkVM
RUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCitCVUdfVEVTVCBNQUMgUkVMRUFTRSA6IHBh
c3Nlcy90ZXh0Lmh0bWwgPSBURVhUCisiIiIKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0
cikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdwYXNzZXMvdGV4dC5odG1sJywgVEVYVCkKKwor
ICAgIGRlZiB0ZXN0X29yZGVyX2luX2ZpbGVfZG9lc19ub3RfbWF0dGVyKHNlbGYpOgorICAgICAg
ICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBNQUMgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwg
PSBURVhUCitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKKyIiIgor
ICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFzc2VydF9leHAo
J3Bhc3Nlcy90ZXh0Lmh0bWwnLCBURVhUKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl93aW5zKHNl
bGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBNQUMgOiBwYXNzZXMvdGV4dC5o
dG1sID0gUEFTUworQlVHX1RFU1QgTUFDIExFT1BBUkQgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVY
VAorIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2V4cCgncGFzc2VzL3RleHQuaHRtbCcsIFRFWFQpCisKKyAgICBkZWYgdGVzdF9tYWNybyhz
ZWxmKToKKyAgICAgICAgZXhwX3N0ciA9ICIiIgorQlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQu
aHRtbCA9IFBBU1MKK0JVR19URVNUIE1BQy1MRU9QQVJEIDogcGFzc2VzL3RleHQuaHRtbCA9IFRF
WFQKKyIiIgorICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBURVhUKQogCiAKIGNsYXNzIFJlYmFzZWxpbmlu
Z1Rlc3QoQmFzZSk6CkBAIC0zNDYsNSArNDA2LDg2IEBAIEJVR19URVNUIFJFQkFTRUxJTkUgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCiAgICAgICAgICAgICAnXG5cbicpCiAK
IAorY2xhc3MgTW9kaWZpZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICBwb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0JywgTm9uZSkKKyAgICAg
ICAgc2VsZi5jb25maWcgPSBwb3J0X29iai50ZXN0X2NvbmZpZ3VyYXRpb24oKQorICAgICAgICBz
ZWxmLm1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIoc2VsZi5jb25maWcpCisKKyAgICBkZWYgbWF0
Y2goc2VsZiwgbW9kaWZpZXJzLCBleHBlY3RlZF9udW1fbWF0Y2hlcz0tMSwgdmFsdWVzPU5vbmUs
IG51bV9lcnJvcnM9MCk6CisgICAgICAgIG1hdGNoZXIgPSBzZWxmLm1hdGNoZXIKKyAgICAgICAg
aWYgdmFsdWVzOgorICAgICAgICAgICAgbWF0Y2hlciA9IE1vZGlmaWVyTWF0Y2hlcihzZWxmLkZh
a2VUZXN0Q29uZmlndXJhdGlvbih2YWx1ZXMpKQorICAgICAgICBtYXRjaF9yZXN1bHQgPSBtYXRj
aGVyLm1hdGNoKG1vZGlmaWVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWF0Y2hf
cmVzdWx0Lndhcm5pbmdzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWF0Y2hf
cmVzdWx0LmVycm9ycyksIG51bV9lcnJvcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0
Y2hfcmVzdWx0Lm51bV9tYXRjaGVzLCBleHBlY3RlZF9udW1fbWF0Y2hlcywKKyAgICAgICAgICAg
ICAnbWF0Y2goJXMsICVzKSByZXR1cm5lZCAtPiAlZCwgZXhwZWN0ZWQgJWQnICUKKyAgICAgICAg
ICAgICAobW9kaWZpZXJzLCBzdHIoc2VsZi5jb25maWcudmFsdWVzKCkpLAorICAgICAgICAgICAg
ICBtYXRjaF9yZXN1bHQubnVtX21hdGNoZXMsIGV4cGVjdGVkX251bV9tYXRjaGVzKSkKKworICAg
IGRlZiB0ZXN0X2JhZF9tYXRjaF9tb2RpZmllcihzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChb
J2ZvbyddLCBudW1fZXJyb3JzPTEpCisKKyAgICBkZWYgdGVzdF9ub25lKHNlbGYpOgorICAgICAg
ICBzZWxmLm1hdGNoKFtdLCAwKQorCisgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAgICAgICBz
ZWxmLm1hdGNoKFsnbGVvcGFyZCddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsnbWFjJ10sIDEp
CisgICAgICAgIHNlbGYubWF0Y2goWydyZWxlYXNlJ10sIDEpCisgICAgICAgIHNlbGYubWF0Y2go
WydjcHUnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3g4NiddLCAxKQorICAgICAgICBzZWxm
Lm1hdGNoKFsneHAnXSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWydncHUnXSwgLTEpCisgICAg
ICAgIHNlbGYubWF0Y2goWydkZWJ1ZyddLCAtMSkKKworICAgIGRlZiB0ZXN0X3R3byhzZWxmKToK
KyAgICAgICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnLCAncmVsZWFzZSddLCAyKQorICAgICAgICBz
ZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hw
JywgJ3JlbGVhc2UnXSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICds
ZW9wYXJkJ10sIDEpCisKKyAgICBkZWYgdGVzdF90aHJlZShzZWxmKToKKyAgICAgICAgc2VsZi5t
YXRjaChbJ3Nub3dsZW9wYXJkJywgJ2xlb3BhcmQnLCAncmVsZWFzZSddLCAyKQorICAgICAgICBz
ZWxmLm1hdGNoKFsnbGVvcGFyZCcsICdkZWJ1ZycsICd4ODYnXSwgLTEpCisgICAgICAgIHNlbGYu
bWF0Y2goWydsZW9wYXJkJywgJ3JlbGVhc2UnLCAneDg2J10sIDMpCisgICAgICAgIHNlbGYubWF0
Y2goWydsZW9wYXJkJywgJ2NwdScsICdyZWxlYXNlJ10sIDMpCisKKyAgICBkZWYgdGVzdF9mb3Vy
KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFyZCcsICdyZWxlYXNlJywgJ2NwdScs
ICd4ODYnXSwgNCkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJkJywgJ2xlb3BhcmQn
LCAncmVsZWFzZScsICdjcHUnXSwgMykKKyAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJk
JywgJ2xlb3BhcmQnLCAnZGVidWcnLCAnY3B1J10sIC0xKQorCisgICAgZGVmIHRlc3RfY2FzZV9p
bnNlbnNpdGl2aXR5KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnTWFjJ10sIG51bV9lcnJv
cnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ01BQyddLCBudW1fZXJyb3JzPTEpCisgICAgICAg
IHNlbGYubWF0Y2goWydtYWMnXSwgMSkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6
CisgICAgICAgIHNlbGYubWF0Y2goWydyZWxlYXNlJywgJ3JlbGVhc2UnXSwgbnVtX2Vycm9ycz0x
KQorICAgICAgICBzZWxmLm1hdGNoKFsnbWFjLWxlb3BhcmQnLCAnbGVvcGFyZCddLCBudW1fZXJy
b3JzPTEpCisgICAgICAgIHNlbGYubWF0Y2goWydtYWMtbGVvcGFyZCcsICdtYWMtbGVvcGFyZCdd
LCBudW1fZXJyb3JzPTEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdyZWxlYXNlJywgJ3hw
JywgJ3JlbGVhc2UnXSwgbnVtX2Vycm9ycz0yKQorICAgICAgICBzZWxmLm1hdGNoKFsncmViYXNl
bGluZScsICdyZWJhc2VsaW5lJ10sIG51bV9lcnJvcnM9MSkKKworICAgIGRlZiB0ZXN0X3Vua25v
d25fb3B0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsndm1zJ10sIG51bV9lcnJvcnM9
MSkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9idWdzKHNlbGYpOgorICAgICAgICAjIEJVRyog
cmVnZXhlcyBjYW4gYXBwZWFyIG11bHRpcGxlIHRpbWVzLgorICAgICAgICBzZWxmLm1hdGNoKFsn
YnVnZm9vJywgJ2J1Z2JhciddLCAwKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb21iaW5hdGlv
bnMoc2VsZik6CisgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHJhaXNlIGFu
IGVycm9yIGluc3RlYWQgb2YgTk9fTUFUQ0guCisgICAgICAgIHNlbGYubWF0Y2goWydtYWMnLCAn
eHAnXSwgbnVtX2Vycm9ycz0wKQorCisgICAgZGVmIHRlc3RfcmVnZXhlc19hcmVfaWdub3JlZChz
ZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ2J1ZzEyM3h5JywgJ3JlYmFzZWxpbmUnLCAnd29u
dGZpeCcsICdzbG93JywgJ3NraXAnXSwgMCkKKworICAgIGRlZiB0ZXN0X25vbmVfaXNfaW52YWxp
ZChzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ25vbmUnXSwgbnVtX2Vycm9ycz0xKQorCisK
IGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CmluZGV4IDViMDJhMDA2ZDk4YzUwNDI0ZmI1Nzc0OTli
OTEwMzg2ODg5OTk1OWEuLjJmNDg3NzdjNGIzZTZlYTcwM2Q5NTUwZTgzNTk0OTg4NzQ2MjRhZGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CkBAIC0yMTIsMjEgKzIxMiwxMyBA
QCBjbGFzcyBUZXN0UnVubmVyOgogCiAgICAgZGVmIGxpbnQoc2VsZik6CiAgICAgICAgIGxpbnRf
ZmFpbGVkID0gRmFsc2UKLQotICAgICAgICAjIENyZWF0aW5nIHRoZSBleHBlY2F0aW9ucyBmb3Ig
ZWFjaCBwbGF0Zm9ybS9jb25maWd1cmF0aW9uIHBhaXIgZG9lcwotICAgICAgICAjIGFsbCB0aGUg
dGVzdCBsaXN0IHBhcnNpbmcgYW5kIGVuc3VyZXMgaXQncyBjb3JyZWN0IHN5bnRheCAoZS5nLiBu
bwotICAgICAgICAjIGR1cGVzKS4KLSAgICAgICAgZm9yIHBsYXRmb3JtX25hbWUgaW4gc2VsZi5f
cG9ydC50ZXN0X3BsYXRmb3JtX25hbWVzKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9k
ZT1UcnVlKQotICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3I6
Ci0gICAgICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCisgICAgICAgIGZvciB0ZXN0X2Nv
bmZpZ3VyYXRpb24gaW4gc2VsZi5fcG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpOgogICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKHBs
YXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGU9RmFsc2UpCisgICAgICAgICAgICAgICAgc2VsZi5s
aW50X2V4cGVjdGF0aW9ucyh0ZXN0X2NvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICBleGNlcHQg
dGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoKICAgICAgICAgICAgICAgICBsaW50X2ZhaWxl
ZCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIiKQogCi0gICAg
ICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIpCiAgICAgICAgIGlmIGxpbnRfZmFpbGVkOgogICAg
ICAgICAgICAgX2xvZy5lcnJvcigiTGludCBmYWlsZWQuIikKICAgICAgICAgICAgIHJldHVybiAt
MQpAQCAtMjM0LDIyICsyMjYsMjggQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgX2xvZy5p
bmZvKCJMaW50IHN1Y2NlZWRlZC4iKQogICAgICAgICByZXR1cm4gMAogCi0gICAgZGVmIHBhcnNl
X2V4cGVjdGF0aW9ucyhzZWxmLCB0ZXN0X3BsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGUpOgor
ICAgIGRlZiBsaW50X2V4cGVjdGF0aW9ucyhzZWxmLCBjb25maWcpOgorICAgICAgICBwb3J0ID0g
c2VsZi5fcG9ydAorICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAor
ICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBwb3J0LnRl
c3RfZXhwZWN0YXRpb25zKCksCisgICAgICAgICAgICBjb25maWcsCisgICAgICAgICAgICBzZWxm
Ll9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKKyAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3Rh
dGlvbnNfb3ZlcnJpZGVzKCkpCisKKyAgICBkZWYgcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYpOgog
ICAgICAgICAiIiJQYXJzZSB0aGUgZXhwZWN0YXRpb25zIGZyb20gdGhlIHRlc3RfbGlzdCBmaWxl
cyBhbmQgcmV0dXJuIGEgZGF0YQogICAgICAgICBzdHJ1Y3R1cmUgaG9sZGluZyB0aGVtLiBUaHJv
d3MgYW4gZXJyb3IgaWYgdGhlIHRlc3RfbGlzdCBmaWxlcyBoYXZlCiAgICAgICAgIGludmFsaWQg
c3ludGF4LiIiIgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlczoKLSAg
ICAgICAgICAgIHRlc3RfZmlsZXMgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0
ZXN0X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxlcwotCi0gICAgICAgIGV4cGVjdGF0aW9uc19zdHIg
PSBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25zKCkKLSAgICAgICAgb3ZlcnJpZGVzX3N0ciA9
IHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkKKyAgICAgICAgcG9ydCA9
IHNlbGYuX3BvcnQKICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlv
bnMuVGVzdEV4cGVjdGF0aW9ucygKLSAgICAgICAgICAgIHNlbGYuX3BvcnQsIHRlc3RfZmlsZXMs
IGV4cGVjdGF0aW9uc19zdHIsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgIGlzX2Rl
YnVnX21vZGUsIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAotICAgICAgICAgICAgb3Zl
cnJpZGVzPW92ZXJyaWRlc19zdHIpCi0gICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMK
KyAgICAgICAgICAgIHBvcnQsCisgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzLAorICAgICAg
ICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAorICAgICAgICAgICAgcG9ydC50ZXN0X2Nv
bmZpZ3VyYXRpb24oKSwKKyAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVz
LAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKIAogICAg
ICMgRklYTUU6IFRoaXMgbWV0aG9kIGlzIHdheSB0b28gbG9uZyBhbmQgbmVlZHMgdG8gYmUgYnJv
a2VuIGludG8gcGllY2VzLgogICAgIGRlZiBwcmVwYXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQo
c2VsZik6CkBAIC0zNTcsOSArMzU1LDcgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVzICsgc2tpcF9jaHVua19saXN0CiAgICAgICAg
ICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCkKIAotICAg
ICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0gc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMoCi0g
ICAgICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSwKLSAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJykKKyAgICAgICAg
ICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKCkKIAogICAgICAgICAgICAgc2VsZi5fdGVzdF9m
aWxlcyA9IHNldChmaWxlcykKICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZp
bGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2Uu
cHkKaW5kZXggOTdiNTRjOTdkODFmZmY5Mzk5OTFlNmFlYjJhMzMzMTYwODg4ODE1Mi4uMDYyMjU3
ZDU4ZDdmYWMwZGU4MzQ1ZjI4ZDIyZjcwMjA2YWRlMWVjZSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtMTIxLDYgKzEyMSw3IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1bHQoJ2Nv
bmZpZ3VyYXRpb24nLCBOb25lKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRp
b24gaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiA9IHNl
bGYuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkKKyAgICAgICAgc2VsZi5fdGVzdF9jb25maWd1cmF0
aW9uID0gTm9uZQogCiAgICAgZGVmIGRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgogICAg
ICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBEdW1wUmVuZGVyVHJlZSBpbnN0YW5jZXMgdG8g
dXNlIGZvciB0aGlzCkBAIC01NzQsNiArNTc1LDE5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgaWYgc2VsZi5faHR0cF9sb2NrOgogICAgICAgICAgICAgc2VsZi5faHR0cF9sb2NrLmNs
ZWFudXBfaHR0cF9sb2NrKCkKIAorICAgICMKKyAgICAjIFRFU1QgRVhQRUNUQVRJT04tUkVMQVRF
RCBNRVRIT0RTCisgICAgIworCisgICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbihzZWxmKToKKyAg
ICAgICAgIiIiUmV0dXJucyB0aGUgY3VycmVudCBUZXN0Q29uZmlndXJhdGlvbiBmb3IgdGhlIHBv
cnQuIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb246CisgICAgICAg
ICAgICBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24gPSBUZXN0Q29uZmlndXJhdGlvbihzZWxmKQor
ICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uCisKKyAgICBkZWYgYWxsX3Rl
c3RfY29uZmlndXJhdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnRlc3RfY29uZmln
dXJhdGlvbigpLmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCkKKwogICAgIGRlZiB0ZXN0X2V4cGVj
dGF0aW9ucyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgdGVzdCBleHBlY3RhdGlvbnMg
Zm9yIHRoaXMgcG9ydC4KIApAQCAtODYwLDMgKzg3NCw2OCBAQCBjbGFzcyBEcml2ZXI6CiAKICAg
ICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignRHJp
dmVyLnN0b3AnKQorCisKK2NsYXNzIFRlc3RDb25maWd1cmF0aW9uKG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBvcnQ9Tm9uZSwgb3M9Tm9uZSwgdmVyc2lvbj1Ob25lLCBhcmNoaXRl
Y3R1cmU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYnVpbGRfdHlwZT1Ob25lLCBncmFwaGljc190
eXBlPU5vbmUpOgorCisgICAgICAgICMgRklYTUU6IFdlIGNhbiBnZXQgdGhlIE8vUyBhbmQgdmVy
c2lvbiBmcm9tIHRlc3RfcGxhdGZvcm1fbmFtZSgpCisgICAgICAgICMgYW5kIHZlcnNpb24oKSBm
b3Igbm93LCBidXQgdGhvc2Ugc2hvdWxkIGdvIGF3YXkgYW5kIGJlIGNsZWFuZWQgdXAKKyAgICAg
ICAgIyB3aXRoIG1vcmUgZ2VuZXJpYyBtZXRob2RzIGxpa2Ugb3BlcmF0aW9uX3N5c3RlbSgpIGFu
ZCBvc192ZXJzaW9uKCkKKyAgICAgICAgIyBvciBzb21ldGhpbmcuIE5vdGUgdGhhdCB3ZSBuZWVk
IHRvIHN0cmlwIHRoZSBsZWFkaW5nICctJyBvZmYgdGhlCisgICAgICAgICMgdmVyc2lvbiBzdHJp
bmcgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgICAgaWYgcG9ydDoKKyAgICAgICAgICAgIHBvcnRf
dmVyc2lvbiA9IHBvcnQudmVyc2lvbigpCisgICAgICAgIHNlbGYub3MgPSBvcyBvciBwb3J0LnRl
c3RfcGxhdGZvcm1fbmFtZSgpLnJlcGxhY2UocG9ydF92ZXJzaW9uLCAnJykKKyAgICAgICAgc2Vs
Zi52ZXJzaW9uID0gdmVyc2lvbiBvciBwb3J0X3ZlcnNpb25bMTpdCisgICAgICAgIHNlbGYuYXJj
aGl0ZWN0dXJlID0gYXJjaGl0ZWN0dXJlIG9yICd4ODYnCisgICAgICAgIHNlbGYuYnVpbGRfdHlw
ZSA9IGJ1aWxkX3R5cGUgb3IgcG9ydC5fb3B0aW9ucy5jb25maWd1cmF0aW9uLmxvd2VyKCkKKyAg
ICAgICAgc2VsZi5ncmFwaGljc190eXBlID0gZ3JhcGhpY3NfdHlwZSBvciAnY3B1JworCisgICAg
ZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy5pdGVtcygpCisK
KyAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18ua2V5cygp
CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgiPCUodmVyc2lvbilz
LCAlKGJ1aWxkX3R5cGUpcywgJShncmFwaGljc190eXBlKXM+IiAlCisgICAgICAgICAgICAgICAg
c2VsZi5fX2RpY3RfXykKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJu
ICJUZXN0Q29uZmlnKG9zPSclKG9zKXMnLCB2ZXJzaW9uPSclKHZlcnNpb24pcycsIGFyY2hpdGVj
dHVyZT0nJShhcmNoaXRlY3R1cmUpcycsIGJ1aWxkX3R5cGU9JyUoYnVpbGRfdHlwZSlzJywgZ3Jh
cGhpY3NfdHlwZT0nJShncmFwaGljc190eXBlKXMnKSIgJSBzZWxmLl9fZGljdF9fCisKKyAgICBk
ZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIHZh
bHVlcyBvZiB0aGlzIGluc3RhbmNlIGFzIGEgdHVwbGUuIiIiCisgICAgICAgIHJldHVybiBzZWxm
Ll9fZGljdF9fLnZhbHVlcygpCisKKyAgICBkZWYgYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2Vs
Zik6CisgICAgICAgICIiIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgVGVzdENvbmZpZ3VyYXRp
b25zIHRoZSBwb3J0IHN1cHBvcnRzLiIiIgorICAgICAgICAjIEJ5IGRlZmF1bHQsIHdlIGFzc3Vt
ZSB3ZSB3YW50IHRvIHRlc3QgZXZlcnkgZ3JhcGhpY3MgdHlwZSBpbgorICAgICAgICAjIGV2ZXJ5
IGNvbmZpZ3VyYXRpb24gb24gZXZlcnkgc3lzdGVtLgorICAgICAgICB0ZXN0X2NvbmZpZ3VyYXRp
b25zID0gW10KKyAgICAgICAgZm9yIHN5c3RlbSBpbiBzZWxmLmFsbF9zeXN0ZW1zKCk6CisgICAg
ICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBzZWxmLmFsbF9idWlsZF90eXBlcygpOgorICAgICAg
ICAgICAgICAgIGZvciBncmFwaGljc190eXBlIGluIHNlbGYuYWxsX2dyYXBoaWNzX3R5cGVzKCk6
CisgICAgICAgICAgICAgICAgICAgIHRlc3RfY29uZmlndXJhdGlvbnMuYXBwZW5kKFRlc3RDb25m
aWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgb3M9c3lzdGVtWzBdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgdmVyc2lvbj1zeXN0ZW1bMV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICBhcmNoaXRlY3R1cmU9c3lzdGVtWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgYnVp
bGRfdHlwZT1idWlsZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3NfdHlw
ZT1ncmFwaGljc190eXBlKSkKKyAgICAgICAgcmV0dXJuIHRlc3RfY29uZmlndXJhdGlvbnMKKwor
ICAgIGRlZiBhbGxfc3lzdGVtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgoJ21hYycsICdsZW9w
YXJkJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnbWFjJywgJ3Nub3dsZW9wYXJkJywgJ3g4
NicpLAorICAgICAgICAgICAgICAgICgnd2luJywgJ3hwJywgJ3g4NicpLAorICAgICAgICAgICAg
ICAgICgnd2luJywgJ3Zpc3RhJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnd2luJywgJ3dp
bjcnLCAneDg2JyksCisgICAgICAgICAgICAgICAgKCdsaW51eCcsICdoYXJkeScsICd4ODYnKSkK
KworICAgIGRlZiBhbGxfYnVpbGRfdHlwZXMoc2VsZik6CisgICAgICAgIHJldHVybiAoJ2RlYnVn
JywgJ3JlbGVhc2UnKQorCisgICAgZGVmIGFsbF9ncmFwaGljc190eXBlcyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuICgnY3B1JywgJ2dwdScpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCBiOTA0MjFhZGZlYjA4YjA5NDMw
MTE5ZmYyZWZiZGUyODQ4NWMzMjhmLi41ZjJjMTVmOGMwZDBmZGI2ZWM2YWIyMzU4MjZiN2U0NjBh
YTU3YzY1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW0ucHkKQEAgLTI3NCw4ICsyNzQsOCBAQCBjbGFzcyBDaHJvbWl1bVBvcnQo
YmFzZS5Qb3J0KToKICAgICAgICAgICAgIGFsbF90ZXN0X2ZpbGVzLnVwZGF0ZShleHRyYV90ZXN0
X2ZpbGVzKQogCiAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RF
eHBlY3RhdGlvbnMoCi0gICAgICAgICAgICBzZWxmLCBhbGxfdGVzdF9maWxlcywgZXhwZWN0YXRp
b25zX3N0ciwgdGVzdF9wbGF0Zm9ybV9uYW1lLAotICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwg
aXNfbGludF9tb2RlPUZhbHNlLCBvdmVycmlkZXM9b3ZlcnJpZGVzX3N0cikKKyAgICAgICAgICAg
IHNlbGYsIGFsbF90ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNfc3RyLCBzZWxmLnRlc3RfY29uZmln
dXJhdGlvbigpLAorICAgICAgICAgICAgaXNfbGludF9tb2RlPUZhbHNlLCBvdmVycmlkZXM9b3Zl
cnJpZGVzX3N0cikKICAgICAgICAgdGVzdHNfZGlyID0gc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkK
ICAgICAgICAgcmV0dXJuIFtzZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdCkKICAgICAg
ICAgICAgICAgICBmb3IgdGVzdCBpbiBleHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0
X3R5cGUodGVzdF9leHBlY3RhdGlvbnMuU0tJUCldCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKaW5kZXggYzRi
MzZhY2Q5MDc5ZmQyZmJlOTA5MDEyMDJkNWY5YzAyNWUzODdlNS4uMDRlY2E2MzAyODM2OGI4OGNk
NzY1YjJiYmE1YzNjYmQwMDI2NDVlYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpAQCAtOTUsMyArOTUs
MTUgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IHJldHVybgogICAgICAgICBwb3J0LnN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoKQogICAgICAgICBw
b3J0LnN0b3Bfd2Vic29ja2V0X3NlcnZlcigpCisKKyAgICBkZWYgdGVzdF90ZXN0X2NvbmZpZ3Vy
YXRpb24oc2VsZik6CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIGlm
IG5vdCBwb3J0OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShw
b3J0LnRlc3RfY29uZmlndXJhdGlvbigpKQorCisgICAgZGVmIHRlc3RfYWxsX3Rlc3RfY29uZmln
dXJhdGlvbnMoc2VsZik6CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAg
IGlmIG5vdCBwb3J0OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShsZW4ocG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpKSA+IDApCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggOTM1ODgxYzI3
NmEyNzY0NTU2MmU0M2U1MTFiMmY0ZjZlMWNjZTkxMS4uNjdlNjg3YzA5MzMwNDc2ZjgxMGMzZDc4
NWIwNjUzMDhlYWMyODU2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMTUxLDYgKzE1MSw5IEBAIGNsYXNzIFRlc3RQb3J0KGJh
c2UuUG9ydCk6CiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0dHApOgogICAgICAg
ICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGRlZmF1bHRfY29uZmlndXJhdGlvbihzZWxmKToKKyAg
ICAgICAgcmV0dXJuICdSZWxlYXNlJworCiAgICAgZGVmIGRpZmZfaW1hZ2Uoc2VsZiwgZXhwZWN0
ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywKICAgICAgICAgICAgICAgICAgICBkaWZmX2Zp
bGVuYW1lPU5vbmUpOgogICAgICAgICBkaWZmZWQgPSBhY3R1YWxfY29udGVudHMgIT0gZXhwZWN0
ZWRfY29udGVudHMKQEAgLTMwNiw3ICszMDksNyBAQCBXT05URklYIFNLSVAgOiBmYWlsdXJlcy9l
eHBlY3RlZC9leGNlcHRpb24uaHRtbCA9IENSQVNICiAgICAgICAgIHJldHVybiB0ZXN0X3BsYXRm
b3JtX25hbWUKIAogICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gJycKKyAg
ICAgICAgcmV0dXJuICctbGVvcGFyZCcKIAogCiBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVy
KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggNGQ4
YjdjOWY1YTJiZDRjNzRlZDU2ZmQ2MzEyYmExOTVjMTZjOGE2ZC4uYjVhNGVmNWVkZmI2YTBlZWVj
OTFlYWNjYTY5MjY4NzRkMTE5NzdmOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93
ZWJraXRfdGVzdHMucHkKQEAgLTE4Myw4ICsxODMsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxm
Ll9yZWJhc2VsaW5lX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGF0aW9uc19zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQudGVzdF9jb25maWd1cmF0aW9u
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNl
KQogICAgICAgICBzZWxmLl9zY20gPSBzY20uZGVmYXVsdF9zY20oKQogCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpp
bmRleCBjNDMxNzY1YWUyY2ZkOWM3MDcxMGQ4M2M5ZDU5OWE5NzhiNTJlMzE2Li40YTkzZGIxNzhk
NWQ2MTk3NzU3ODY3MDkyZTk4YWRkMTY5ZGU4ZTZhIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTEwMSwx
MSArMTAxLDExIEBAIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywgcmVndWxhcl9vdXRwdXQ9
c3lzLnN0ZGVyciwKICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAgICAgICAgICAgIHJhaXNl
CiAKLSAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIlBhcnNpbmcgZXhwZWN0YXRpb25zIC4u
LiIpCiAgICAgICAgIGlmIG9wdGlvbnMubGludF90ZXN0X2ZpbGVzOgogICAgICAgICAgICAgcmV0
dXJuIHJ1bm5lci5saW50KCkKLSAgICAgICAgcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucyhwb3J0
LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnMuY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKQorCisgICAgICAgIHByaW50ZXIucHJp
bnRfdXBkYXRlKCJQYXJzaW5nIGV4cGVjdGF0aW9ucyAuLi4iKQorICAgICAgICBydW5uZXIucGFy
c2VfZXhwZWN0YXRpb25zKCkKIAogICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiQ2hlY2tp
bmcgYnVpbGQgLi4uIikKICAgICAgICAgaWYgbm90IHBvcnQuY2hlY2tfYnVpbGQocnVubmVyLm5l
ZWRzX2h0dHAoKSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBjODZiMzJjZTU2NTcyNDVkZjdk
M2YyODA5MzY5MzM1OWU1OTg2YmE1Li5lMzdmOTA4YjY0ZTdkNWNkMjIwM2U2NTljN2I1ODg0MGNi
NWNmNmViIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTc1LDcgKzc1LDYgQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uc0NoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAiVXNp
bmcgJ3Rlc3QnIHBvcnQsIGJ1dCBwbGF0Zm9ybS1zcGVjaWZpYyBleHBlY3RhdGlvbnMgIgogICAg
ICAgICAgICAgICAgICAgICAgICJ3aWxsIGZhaWwgdGhlIGNoZWNrLiIgJSBzZWxmLl9maWxlX3Bh
dGgpCiAgICAgICAgICAgICBzZWxmLl9wb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0JykKLSAgICAg
ICAgc2VsZi5fcG9ydF90b19jaGVjayA9IHNlbGYuX3BvcnRfb2JqLnRlc3RfcGxhdGZvcm1fbmFt
ZSgpCiAgICAgICAgICMgU3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgb2YgdGVzdF9leHBlY3RhdGlv
bnMgbW9kdWxlIHNpbmNlIHRoZXkgd2lsbCBiZQogICAgICAgICAjIHJlcG9ydGVkIGxhdGVyLgog
ICAgICAgICBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkubGF5b3V0X3Rlc3RzLmxh
eW91dF9wYWNrYWdlLiIKQEAgLTkxLDcgKzkwLDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0No
ZWNrZXIob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhwZWN0YXRpb25zID0g
dGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9uc0ZpbGUoCiAgICAgICAgICAgICAgICAg
cG9ydD1zZWxmLl9wb3J0X29iaiwgZXhwZWN0YXRpb25zPWV4cGVjdGF0aW9uc19zdHIsIGZ1bGxf
dGVzdF9saXN0PXRlc3RzLAotICAgICAgICAgICAgICAgIHRlc3RfcGxhdGZvcm1fbmFtZT1zZWxm
Ll9wb3J0X3RvX2NoZWNrLCBpc19kZWJ1Z19tb2RlPUZhbHNlLAorICAgICAgICAgICAgICAgIHRl
c3RfY29uZmlnPXNlbGYuX3BvcnRfb2JqLnRlc3RfY29uZmlndXJhdGlvbigpLAogICAgICAgICAg
ICAgICAgIGlzX2xpbnRfbW9kZT1UcnVlLCBvdmVycmlkZXM9b3ZlcnJpZGVzKQogICAgICAgICBl
eGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvciwgZXJyb3I6CiAgICAgICAgICAgICBl
cnIgPSBlcnJvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKaW5kZXggOTgx
N2M1ZDcwMmQzZTY2MWUwNmNiNmFmNzZjNzhhNzVlODdjMDcyZC4uODY5MTU1N2U3MTdjNmY5NTk5
NDgyMjQ2MWRmZTQ0MWRhNDcxOTJiNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5CkBAIC04NCwxNSArODQsNiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdENhc2Uo
dW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdmFsaWRfZXhwZWN0YXRpb25zKHNl
bGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNz
ZXMvdGV4dC5odG1sID0gUEFTUyJdLAotICAgICAgICAgICAgIiIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbInBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMIFBB
U1MiXSwKLSAgICAgICAgICAgICIiKQotICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAot
ICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gQ1JBU0ggVElNRU9VVCBGQUlMIFBBU1Mi
XSwKLSAgICAgICAgICAgICIiKQotICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAg
ICAgICAgICAgWyJCVUdDUjEyMzQgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MgRkFJTCJd
LAogICAgICAgICAgICAgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCkBAIC0x
MjAsMTIgKzExMSwxMiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdENhc2UodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X21vZGlmaWVyX2Vycm9ycyhzZWxmKToKICAgICAgICAg
c2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiQlVHMTIzNCA6IHBhc3Nlcy90
ZXh0Lmh0bWwgPSBGQUlMIl0sCi0gICAgICAgICAgICAnQnVnIG11c3QgYmUgZWl0aGVyIEJVR0NS
LCBCVUdXSywgb3IgQlVHVjhfIGZvciB0ZXN0OiBidWcxMjM0IHBhc3Nlcy90ZXh0Lmh0bWwgIFt0
ZXN0L2V4cGVjdGF0aW9uc10gWzVdJykKKyAgICAgICAgICAgICJCVUdcXGQrIGlzIG5vdCBhbGxv
d2VkLCBtdXN0IGJlIG9uZSBvZiBCVUdDUlxcZCssIEJVR1dLXFxkKywgQlVHVjhfXFxkKywgb3Ig
YSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmllci4gcGFzc2VzL3RleHQuaHRtbCAgW3Rlc3QvZXhw
ZWN0YXRpb25zXSBbNV0iKQogCiAgICAgZGVmIHRlc3RfdmFsaWRfbW9kaWZpZXJzKHNlbGYpOgog
ICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAgICAgICAgICAgWyJJTlZBTElELU1P
RElGSUVSIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MiXSwKLSAgICAgICAgICAgICJJbnZhbGlk
IG1vZGlmaWVyIGZvciB0ZXN0OiBpbnZhbGlkLW1vZGlmaWVyICIKKyAgICAgICAgICAgICJVbnJl
Y29nbml6ZWQgb3B0aW9uICdpbnZhbGlkLW1vZGlmaWVyJyAiCiAgICAgICAgICAgICAicGFzc2Vz
L3RleHQuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxmLmFzc2Vy
dF9saW5lc19saW50KAogICAgICAgICAgICAgWyJTS0lQIDogcGFzc2VzL3RleHQuaHRtbCA9IFBB
U1MiXSwKQEAgLTEzNSwzOCArMTI2LDM4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0Q2Fz
ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25fZXJyb3JzKHNl
bGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAgICAgICAgICAgWyJtaXNz
aW5nIGV4cGVjdGF0aW9ucyJdLAotICAgICAgICAgICAgIk1pc3NpbmcgZXhwZWN0YXRpb25zLiBb
J21pc3NpbmcgZXhwZWN0YXRpb25zJ10gIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKKyAgICAg
ICAgICAgICJNaXNzaW5nIGEgJzonIG1pc3NpbmcgZXhwZWN0YXRpb25zICBbdGVzdC9leHBlY3Rh
dGlvbnNdIFs1XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCiAgICAgICAgICAg
ICBbIlNMT1cgOiBwYXNzZXMvdGV4dC5odG1sID0gVElNRU9VVCJdLAogICAgICAgICAgICAgIkEg
dGVzdCBjYW4gbm90IGJlIGJvdGggc2xvdyBhbmQgdGltZW91dC4gIgogICAgICAgICAgICAgIklm
IGl0IHRpbWVzIG91dCBpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxkIGJlIGp1c3QgdGltZW91
dC4gIgogICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10g
WzVdIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsiZG9l
cy9ub3QvZXhpc3QuaHRtbCA9IEZBSUwiXSwKKyAgICAgICAgICAgIFsiQlVHV0sxIDogZG9lcy9u
b3QvZXhpc3QuaHRtbCA9IEZBSUwiXSwKICAgICAgICAgICAgICJQYXRoIGRvZXMgbm90IGV4aXN0
LiBkb2VzL25vdC9leGlzdC5odG1sICBbdGVzdC9leHBlY3RhdGlvbnNdIFsyXSIpCiAKICAgICBk
ZWYgdGVzdF9wYXJzZV9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bmVzX2xpbnQoCi0gICAgICAgICAgICBbInBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCisgICAg
ICAgICAgICBbIkJVR1dLMSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCiAgICAgICAgICAg
ICAiIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsicGFz
c2VzL3RleHQuaHRtbCA9IFVOU1VQUE9SVEVEIl0sCisgICAgICAgICAgICBbIkJVR1dLMSA6IHBh
c3Nlcy90ZXh0Lmh0bWwgPSBVTlNVUFBPUlRFRCJdLAogICAgICAgICAgICAgIlVuc3VwcG9ydGVk
IGV4cGVjdGF0aW9uOiB1bnN1cHBvcnRlZCAiCiAgICAgICAgICAgICAicGFzc2VzL3RleHQuaHRt
bCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19s
aW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gUEFTUyBVTlNVUFBPUlRFRCJd
LAorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyBVTlNVUFBP
UlRFRCJdLAogICAgICAgICAgICAgIlVuc3VwcG9ydGVkIGV4cGVjdGF0aW9uOiB1bnN1cHBvcnRl
ZCAiCiAgICAgICAgICAgICAicGFzc2VzL3RleHQuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBb
NV0iKQogCiAgICAgZGVmIHRlc3RfYWxyZWFkeV9zZWVuX3Rlc3Qoc2VsZik6CiAgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbInBhc3Nlcy90ZXh0Lmh0bWwgPSBQ
QVNTIiwKLSAgICAgICAgICAgICAicGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQiXSwKLSAgICAg
ICAgICAgICJEdXBsaWNhdGUgZXhwZWN0YXRpb24uICVzICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1
XSIgJSBzZWxmLl90ZXN0X2ZpbGUpCisgICAgICAgICAgICBbIkJVR1dLMSA6IHBhc3Nlcy90ZXh0
Lmh0bWwgPSBQQVNTIiwKKyAgICAgICAgICAgICAiQlVHV0sxIDogcGFzc2VzL3RleHQuaHRtbCA9
IFRJTUVPVVQiXSwKKyAgICAgICAgICAgICJEdXBsaWNhdGUgb3IgYW1iaWd1b3VzIGV4cGVjdGF0
aW9uLiAlcyAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iICUgc2VsZi5fdGVzdF9maWxlKQogCiAg
ICAgZGVmIHRlc3RfdGFiKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAot
ICAgICAgICAgICAgWyJcdHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCisgICAgICAgICAgICBb
Ilx0QlVHV0sxIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MiXSwKICAgICAgICAgICAgICJMaW5l
IGNvbnRhaW5zIHRhYiBjaGFyYWN0ZXIuICBbd2hpdGVzcGFjZS90YWJdIFs1XSIpCiAKIGlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>78479</attachid>
            <date>2011-01-10 17:43:36 -0800</date>
            <delta_ts>2011-01-11 15:26:01 -0800</delta_ts>
            <desc>sample merged test_expectations file where conflicting modifiers are not allowed</desc>
            <filename>bug-51222-20110110174334.patch</filename>
            <type>text/plain</type>
            <size>16721</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCBmMmU0NTY5ZTY1NTdmM2UzN2Y2OWE5OTQ4YzJmOTIwNGQxOTRkYjIwLi5jYTJj
YWZkNWNiYjg2ZThhZTQwZDQ1ZGZiNDdlZjE4YTcwMGMwODg0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yNTgsOCAr
MjU4LDggQEAgQlVHQ1IxMDM5NSBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3dlYmFyY2hpdmUg
PSBGQUlMIFBBU1MKIAogLy8gQ29tcG9zaXRpbmcgdGVzdHMgYXJlIHJ1biBzZXBhcmF0ZWx5IG9u
IG1hY2hpbmVzIHdpdGggR1BVczsgc2VlCiAvLyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1ncHUuCi1CVUdDUjE1NzMzIFdPTlRGSVggU0tJUCA6IGNvbXBvc2l0aW5nID0gRkFJTCBQQVNT
IFRJTUVPVVQKLUJVR0NSMTU3MzMgV09OVEZJWCBTS0lQIDogcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcgPSBGQUlMIFBBU1MgVElNRU9VVAorQlVHQ1IxNTczMyBXT05URklYIFNLSVAgQ1BV
IDogY29tcG9zaXRpbmcgPSBGQUlMIFBBU1MgVElNRU9VVAorQlVHQ1IxNTczMyBXT05URklYIFNL
SVAgQ1BVIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcgPSBGQUlMIFBBU1MgVElNRU9V
VAogCiAvLyBSdW4gdGhlIE1hYy1zcGVjaWZpYyBwbGF0Zm9ybSB0ZXN0cywgYnV0IG9ubHkgdG8g
Y2hlY2sgZm9yIGNyYXNoZXMuCiBXT05URklYIDogcGxhdGZvcm0vZ3RrID0gRkFJTCBQQVNTCkBA
IC02MjMsMTIgKzYyMywxMiBAQCBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zLWhlYWRlcnMuaHRtbCA9IEZBSUwKIAogLy8gSW5zcGVjdG9yIHRlc3RzIGluIERl
YnVnIGJ1aWxkIGFyZSB2ZXJ5IHNsb3cuICBJZiB3ZSByZW1vdmUgU0xPVywgd2UnbGwgc2VlCiAv
LyByYW5kb20gVElNRU9VVHMuICBJcyB0aGlzIGlzc3VlIERSVC1zcGVjaWZpYz8KLUJVR19EUlQg
V0lOIERFQlVHIFNMT1cgOiBpbnNwZWN0b3IgPSBQQVNTCitCVUdfRFJUIFdJTiBERUJVRyBTTE9X
IENQVSA6IGluc3BlY3RvciA9IFBBU1MKIEJVR19EUlQgV0lOIERFQlVHIFNMT1cgOiBodHRwL3Rl
c3RzL2luc3BlY3RvciA9IFBBU1MKIEJVR19EUlQgV0lOIERFQlVHIFNMT1cgOiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkID0gUEFTUwogCiAvLyBBZGQgc3VwcG9ydCBmb3IgaW5zcGVjdG9y
IGxheW91dCB0ZXN0cyBvbiBub24tV2luZG93cy4KLUJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAg
OiBpbnNwZWN0b3IgPSBQQVNTCitCVUdDUjI2NzM0IExJTlVYIE1BQyBTS0lQIENQVSA6IGluc3Bl
Y3RvciA9IFBBU1MKIEJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAgOiBodHRwL3Rlc3RzL2luc3Bl
Y3RvciA9IFBBU1MKIEJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAgOiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci1lbmFibGVkID0gUEFTUwogCkBAIC0xMDQxLDcgKzEwNDEsNyBAQCBCVUdDUjEwMzE3IExJ
TlVYIDogZmFzdC9jc3Mvc2hhZG93LW11bHRpcGxlLmh0bWwgPSBGQUlMCiAvLyBQcm9ibGVtcyB3
aXRoIGdldEltYWdlRGF0YSBhbmQgdG9EYXRhVVJMLgogLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIHVz
IHRvIGRvIGFscGhhIGJsZW5kaW5nIGV4YWN0bHkgdGhlIHdheSBDRyBkb2VzIGl0LAogLy8gd2hp
Y2ggU2tpYSBtYXkgbmV2ZXIgZG8gKHNlZSBidWcpLgotQlVHQ1IyMjcwMCBMSU5VWCBXSU4gOiBm
YXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwgPSBGQUlMCitCVUdDUjIyNzAwIExJ
TlVYIFdJTiBDUFUgOiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwgPSBGQUlM
CiAKIC8vIFdlJ3JlIG11Y2ggY2xvc2VyIG5vdy4gVG8gZnVsbHkgcGFzcyB0aGlzIHdlIG5lZWQg
ZW5jb2RlcnMgZm9yIGpwZwogLy8gYW5kIGdpZiwgd2hpY2ggaXMgYSBsb3cgcHJpb3JpdHkuCkBA
IC0yMDY2LDkgKzIwNjYsOSBAQCBCVUdDUjQ0MTUwIExJTlVYIDogZmFzdC9mb3Jtcy9pbnB1dC10
ZXh0LXBhc3RlLW1heGxlbmd0aC5odG1sID0gQ1JBU0ggUEFTUwogLy8gVGhlIGZvbGxvd2luZyB0
ZXN0cyBmYWlsIG9uIGFsbCBwbGF0Zm9ybXMgYW5kIG5lZWQgZnVydGhlciBpbnZlc3RpZ2F0aW9u
LgogLy8gTWFueSBvZiB0aGVzZSBhcmUgc2tpcHBlZCBvbiB0aGUgTWFjIHBsYXRmb3JtCiBCVUdX
SzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UuYnJva2VuLmh0bWwgPSBU
RVhUCi1CVUdXSzQ1OTkxIE1BQyBXSU4gOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50
LnJhZGlhbC5jb25lLnRvcC5odG1sID0gVEVYVAotQlVHV0s0NTk5MSBMSU5VWCBSRUxFQVNFIDog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbCA9IFRF
WFQKLUJVR1dLNDU5OTEgTElOVVggREVCVUcgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRp
ZW50LnJhZGlhbC5jb25lLnRvcC5odG1sID0gVEVYVCBUSU1FT1VUCitCVUdXSzQ1OTkxIE1BQyBX
SU4gQ1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3Au
aHRtbCA9IFRFWFQKK0JVR1dLNDU5OTEgTElOVVggUkVMRUFTRSBDUFUgOiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLnRvcC5odG1sID0gVEVYVAorQlVHV0s0NTk5
MSBMSU5VWCBERUJVRyBDUFUgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlh
bC5jb25lLnRvcC5odG1sID0gVEVYVCBUSU1FT1VUCiBCVUdXSzM5MjEyIDogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5pbWFnZURhdGEuY3JlYXRlMS50eXBlLmh0bWwgPSBURVhUCiBCVUdXSzM5MjEy
IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5pbWFnZURhdGEuY3JlYXRlMi50eXBlLmh0bWwgPSBU
RVhUCiBCVUdXSzM5MjEyIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5pbWFnZURhdGEuZ2V0LnR5
cGUuaHRtbCA9IFRFWFQKQEAgLTI0ODgsNyArMjQ4OCw3IEBAIEJVR0NSNTI1NzIgV0lOIExJTlVY
IERFQlVHIDogaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5odG1sID0g
UEFTCiAvLyBTdGFydGVkIHRvIGNyYXNoIGFyb3VuZCBDaHJvbWl1bSByNTY0MDguCiBCVUdDUjUy
NTczIExJTlVYIFJFTEVBU0UgOiBmYXN0L2pzL2FycmF5LWV2ZXJ5Lmh0bWwgPSBQQVNTIENSQVNI
CiAKLUJVR1dLNDQxOTkgOiBwZXJmID0gUEFTUyBURVhUCitCVUdXSzQ0MTk5IENQVSA6IHBlcmYg
PSBQQVNTIFRFWFQKIEJVR1dLNDQxOTkgREVCVUcgOiBwZXJmL2FycmF5LWJpbmFyeS1zZWFyY2gu
aHRtbCA9IFBBU1MgVEVYVCBUSU1FT1VUCiAKIC8vIEZhaWxpbmcgYWZ0ZXIgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU2NjUvCkBAIC0yNTgyLDEwICsyNTgyLDEwIEBAIEJVR1dF
QkdMIDogZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6ZS5odG1sID0gVEVYVAogQlVHV0VCR0wg
OiBmYXN0L2NhbnZhcy93ZWJnbC9nbHNsLWNvbmZvcm1hbmNlLmh0bWwgPSBDUkFTSAogCiAvLyBU
aGVzZSB3ZXJlIG5vdCBmaXhlZCBieSB0aGUgTWVzYSA3LjkgdXBncmFkZS4gTmVlZCB0byBpbnZl
c3RpZ2F0ZS4KLUJVR0NSNjA2NTEgV0lOIDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdl
dC1jYWxscy5odG1sID0gVElNRU9VVCBQQVNTCitCVUdDUjYwNjUxIFdJTiBDUFUgOiBmYXN0L2Nh
bnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgPSBUSU1FT1VUIFBBU1MKIC8vIEJV
R0NSNjA2NTEgV0lOIDogZmFzdC9jYW52YXMvd2ViZ2wvZ2xzbC1jb25mb3JtYW5jZS5odG1sID0g
VElNRU9VVCBGQUlMCiBCVUdDUjYwNjUxIFdJTiA6IGZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0t
bG9jYXRpb24uaHRtbCA9IFRJTUVPVVQgQ1JBU0gKLUJVR0NSNjA2NTEgTElOVVggTUFDIDogZmFz
dC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sID0gVEVYVAorQlVHQ1I2MDY1MSBM
SU5VWCBNQUMgQ1BVIDogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sID0g
VEVYVAogCiBCVUdfQVVUTyBMSU5VWCBXSU4gREVCVUcgOiBhbmltYXRpb25zL3N1c3BlbmQtcmVz
dW1lLWFuaW1hdGlvbi5odG1sID0gUEFTUyBURVhUCiBCVUdfQVVUTyBMSU5VWCBSRUxFQVNFIDog
YW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1sID0gUEFTUyBU
RVhUCkBAIC0zMTU1LDMgKzMxNTUsMjA2IEBAIEJVR1dLNTIwNjEgREVCVUcgOiB0cmFuc2l0aW9u
cy90cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbi5odG1sID0gUEFTUyBURVhUCiAvLyBGYWlsaW5n
IHNpbmNlIGNyZWF0aW9uIGluIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzc1MzA4
CiBCVUdfQUJBUlRIIDogc3ZnL3RleHQvY2FyZXQtaW4tc3ZnLXRleHQueGh0bWwgPSBURVhUCiAK
Ky8vIFRoaXMgbmV4dCBzZWN0aW9uIGNvbnRhaW5zIEdQVS1zcGVjaWZpYyBleHBlY3RhdGlvbnMu
CisvLyBXZSBza2lwIG1vc3Qgb2YgdGhlIHRlc3RzIGluIHRoZSByZXBvc2l0b3J5IGJlY2F1c2Ug
dGhleSBkb24ndCB0cmlnZ2VyCisvLyB0aGUgYWNjZWxlcmF0ZWQgY29kZSBwYXRocy4gV2UgYWN0
dWFsbHkgb25seSBydW4gc29tZSBvZiB0aGUgY2FudmFzIGFuZAorLy8gY29tcG9zaXRpbmcgdGVz
dHMgKGFzIGxpc3RlZCBiZWxvdykuCitXT05URklYIFNLSVAgR1BVIDogYW5pbWF0aW9ucyA9IFBB
U1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGNhbnZhcyA9IFBBU1MgRkFJTAorV09OVEZJWCBT
S0lQIEdQVSA6IGNzczEgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCBHUFUgOiBjc3MyLjEgPSBQ
QVNTIEZBSUwKK1dPTlRGSVggU0tJUCBHUFUgOiBjc3MzID0gUEFTUyBGQUlMCitXT05URklYIFNL
SVAgR1BVIDogZG9tID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogZWRpdGluZyA9IFBB
U1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGZhc3QgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJ
UCBHUFUgOiBmb250cyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGh0bWw1bGliID0g
UEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogaHR0cCA9IFBBU1MgRkFJTAorV09OVEZJWCBT
S0lQIEdQVSA6IGlldGVzdGNlbnRlciA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGlu
c3BlY3RvciA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGxvYWRlciA9IFBBU1MgRkFJ
TAorV09OVEZJWCBTS0lQIEdQVSA6IG1lZGlhID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BV
IDogcGVyZiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IHBsYXRmb3JtID0gUEFTUyBG
QUlMCitXT05URklYIFNLSVAgR1BVIDogcGx1Z2lucyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQ
IEdQVSA6IHByaW50aW5nID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogcmVzb3VyY2Vz
ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogc2Nyb2xsYmFycyA9IFBBU1MgRkFJTAor
V09OVEZJWCBTS0lQIEdQVSA6IHNlY3VyaXR5ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BV
IDogc3RvcmFnZSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IHN2ZyA9IFBBU1MgRkFJ
TAorV09OVEZJWCBTS0lQIEdQVSA6IHRhYmxlcyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQ
VSA6IHRyYW5zZm9ybXMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCBHUFUgOiB0cmFuc2l0aW9u
cyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IHRyYXZlcnNhbCA9IFBBU1MgRkFJTAor
V09OVEZJWCBTS0lQIEdQVSA6IHVzZXJzY3JpcHRzID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAg
R1BVIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQgPSBQQVNTIEZBSUwKKworLy8gKFRoZXNlIGFyZSB0
aGUgdGVzdHMgd2UgYWN0dWFsbHkgcnVuIGFuZCBleHBlY3QgdG8gcGFzcykKKy8vIFdlIG5lZWQg
dG8gZXhwbGljaXRseSBsaXN0IGZhc3QvY2FudmFzIGFuZCBjYW52YXMvcGhpbGlwIGJlY2F1c2Ug
dGhlCisvLyBwYXJlbnQgZGlyZWN0b3JpZXMgYXJlIG90aGVyd2lzZSBTS0lQUGVkLiBXZSBsaXN0
IGNvbXBvc2l0aW5nIGZvciBjb21wbGV0ZW5lc3MuCisvLyBGSVhNRTogcmVtb3ZlIHRoZSBGQUlM
IGZyb20gdGhlIGZvbGxvd2luZyBsaW5lLgorQlVHTk9ORSBHUFUgOiBjb21wb3NpdGluZyA9IFBB
U1MgRkFJTAorQlVHTk9ORSBHUFUgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZyA9IFBB
U1MKKworLy8gVW5za2lwIHRoZSBjYW52YXMgdGVzdHMgb24gV2luIGFuZCBMaW51eCBvbmx5IChz
aW5jZSBNYWMgZG9lcyBub3Qgc3VwcG9ydAorLy8gYWNjZWxlcmF0ZWQgMkQgY2FudmFzIHlldCku
CitCVUdOT05FIFdJTiBMSU5VWCBHUFUgOiBmYXN0L2NhbnZhcyA9IFBBU1MKK0JVR05PTkUgV0lO
IExJTlVYIEdQVSA6IGNhbnZhcy9waGlsaXAgPSBQQVNTCisKK0JVR0NSMjI3MDAgREVCVUcgV0lO
IFNMT1cgR1BVIDogZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS5odG1sID0gUEFTUwor
QlVHV0s0NTk5MSBMSU5VWCBXSU4gREVCVUcgR1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5n
cmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbCA9IFRFWFQgVElNRU9VVAorCisvLyBQYXNzZXMg
b24gdGhlIEdQVSwgYnV0IGxlYXZpbmcgdGhpcyBoZXJlIGZvciByZWZlcmVuY2UuCitCVUdDUjYw
NjUxIFJFTEVBU0UgR1BVIDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5o
dG1sID0gVEVYVCBQQVNTCitCVUdDUjYwNjUxIE1BQyBMSU5VWCBERUJVRyBHUFUgOiBmYXN0L2Nh
bnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgPSBURVhUIFBBU1MKK0JVR1dLNDcy
NDMgV0lOIERFQlVHIEdQVSA6IGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMu
aHRtbCA9IFBBU1MgQ1JBU0gKK0JVR0NSNjA2NTEgTElOVVggR1BVIDogZmFzdC9jYW52YXMvd2Vi
Z2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sID0gVElNRU9VVCBURVhUCitCVUdfQVVUTyBXSU4gREVC
VUcgR1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYWxpZ24uY2VudGVyLmh0
bWwgPSBQQVNTIFRFWFQKKworLy8gQWxsICg/KSB2aWRlby1yZWxhdGVkIGNvbXBvc2l0b3IgdGVz
dHMgYXJlIGZhaWxpbmcgaW4KKy8vIER1bXBSZW5kZXJUcmVlIHJpZ2h0IG5vdy4KK0JVR1dLNDcy
MzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9jbGlwcGVkLXZpZGVvLWNvbnRyb2xs
ZXIuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9nZW9t
ZXRyeS92aWRlby1maXhlZC1zY3JvbGxpbmcuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJ
UCBHUFUgOiBjb21wb3NpdGluZy9nZW9tZXRyeS92aWRlby1vcGFjaXR5LW92ZXJsYXkuaHRtbCA9
IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9sYXllcnMtaW5zaWRl
LW92ZXJmbG93LXNjcm9sbC5odG1sID0gVElNRU9VVAorQlVHV0s0NzIzMSBTS0lQIEdQVSA6IGNv
bXBvc2l0aW5nL292ZXJmbG93L292ZXJmbG93LWNvbXBvc2l0aW5nLWRlc2NlbmRhbnQuaHRtbCA9
IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9vdmVyZmxvdy9zY3Jv
bGwtYW5jZXN0b3ItdXBkYXRlLmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3MjMxIFNLSVAgR1BVIDog
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbG9hZC12aWRlby1pbi1yZWZsZWN0aW9uLmh0bWwgPSBU
SU1FT1VUCitCVUdXSzQ3MjMxIFNLSVAgR1BVIDogY29tcG9zaXRpbmcvc2VsZi1wYWludGluZy1s
YXllcnMuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9z
ZWxmLXBhaW50aW5nLWxheWVyczIuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUg
OiBjb21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwgPSBUSU1FT1VU
CitCVUdXSzQ3MjMxIFNLSVAgR1BVIDogY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tcG9zdGVyLmh0
bWwgPSBUSU1FT1VUCisKKy8vIFRoZSBmb2xsb3dpbmcgY29tcG9zaXRvciB0ZXN0cyBhcmUgY3Vy
cmVudGx5IHRpbWluZyBvdXQuIE5lZWQgdG8KKy8vIGludmVzdGlnYXRlIHdoeS4KK0JVR1dLNDc5
MjMgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9jaGVja2VyYm9hcmQuaHRtbCA9IFRJTUVPVVQKK0JV
R1dLNDc5MjMgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9jb2xvci1tYXRjaGluZy9pbWFnZS1jb2xv
ci1tYXRjaGluZy5odG1sID0gVElNRU9VVAorQlVHV0s0NzkyMyBTS0lQIEdQVSA6IGNvbXBvc2l0
aW5nL2dlb21ldHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUtb3BhY2l0eS5odG1sID0gVElNRU9VVAor
QlVHV0s0NzkyMyBTS0lQIEdQVSA6IGNvbXBvc2l0aW5nL2lmcmFtZXMvYmVjb21lLW92ZXJsYXBw
ZWQtaWZyYW1lLmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDogY29tcG9zaXRp
bmcvbWFza3MvZGlyZWN0LWltYWdlLW1hc2suaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDc5MjMgU0tJ
UCBHUFUgOiBjb21wb3NpdGluZy9vdmVyZmxvdy9hbmNlc3Rvci1vdmVyZmxvdy5odG1sID0gVElN
RU9VVAorQlVHV0s0NzkyMyBTS0lQIEdQVSA6IGNvbXBvc2l0aW5nL3JlcGFpbnQvY29tcG9zaXRl
ZC1kb2N1bWVudC1lbGVtZW50Lmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDog
Y29tcG9zaXRpbmcvc2hhZG93cy9zaGFkb3ctZHJhd2luZy5odG1sID0gVElNRU9VVAorQlVHV0s0
NzkyMyBTS0lQIEdQVSA6IGNvbXBvc2l0aW5nL3RpbGluZy9jb25zdHJhaW5lZC1sYXllci1zaXpl
Lmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDogY29tcG9zaXRpbmcvei1vcmRl
ci9uZWdhdGl2ZS16LWluZGV4Lmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDog
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW9wYWNpdHktdHJhbnNpdGlv
bi5odG1sID0gVElNRU9VVAorCisvLyBUaGUgZm9sbG93aW5nIHRlc3QgaXMgZmxha3k7IGl0IG9j
Y2FzaW9uYWxseSB0aW1lcyBvdXQsIGJ1dCBub3QgYWx3YXlzLgorQlVHV0s0NzkyNCBXSU4gTElO
VVggR1BVIDogY29tcG9zaXRpbmcvaWZyYW1lcy9jb21wb3NpdGVkLWlmcmFtZS1hbGlnbm1lbnQu
aHRtbCA9IFRJTUVPVVQgUEFTUworQlVHV0s0NzkyNCBNQUMgR1BVIDogY29tcG9zaXRpbmcvaWZy
YW1lcy9jb21wb3NpdGVkLWlmcmFtZS1hbGlnbm1lbnQuaHRtbCA9IFRJTUVPVVQgSU1BR0UKKwor
Ly8gQ2hyb21pdW0gZG9lcyBub3Qgc3VwcG9ydCBQREYgY29udGVudCBpbiA8aW1nPiB0YWdzLgor
V09OVEZJWCBHUFUgOiBjb21wb3NpdGluZy9jb2xvci1tYXRjaGluZy9wZGYtaW1hZ2UtbWF0Y2gu
aHRtbCA9IEZBSUwKK1dPTlRGSVggR1BVIDogY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1wZGYt
aW1hZ2UuaHRtbCA9IEZBSUwKKworLy8gQ2hyb21pdW0gZG9lcyBub3Qgc3VwcG9ydCBQREYgb3Ig
cGx1Z2luIGNvbnRlbnQgaW4gbGF5ZXJzIHJpZ2h0IG5vdy4KK0JVR1dLNDc5MjUgV0lOIExJTlVY
IEdQVSA6IGNvbXBvc2l0aW5nL3BsdWdpbnMvY29tcG9zaXRlZC1wbHVnaW4uaHRtbCA9IEZBSUwK
K0JVR1dLNDc5MjUgTUFDIEdQVSA6IGNvbXBvc2l0aW5nL3BsdWdpbnMvY29tcG9zaXRlZC1wbHVn
aW4uaHRtbCA9IENSQVNICitCVUdXSzQ3OTI1IE1BQyBHUFUgOiBjb21wb3NpdGluZy9wbHVnaW5z
L3NtYWxsLXRvLWxhcmdlLWNvbXBvc2l0ZWQtcGx1Z2luLmh0bWwgPSBDUkFTSAorQlVHV0s0Nzky
NSBNQUMgR1BVIDogY29tcG9zaXRpbmcvcGx1Z2lucy8xeDEtY29tcG9zaXRlZC1wbHVnaW4uaHRt
bCA9IENSQVNICitCVUdXSzQ3OTI1IE1BQyBHUFUgOiBjb21wb3NpdGluZy9wbHVnaW5zL2xhcmdl
LXRvLXNtYWxsLWNvbXBvc2l0ZWQtcGx1Z2luLmh0bWwgPSBDUkFTSAorCisvLyBUaGUgd29yZCAi
Y29tcG9zaXRpbmciIGFwcGVhcnMgaW4gQ2hyb21pdW0ncyBwaXhlbCByZXN1bHRzIGFuZCBub3QK
Ky8vIGluIFNhZmFyaSdzOyB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBmaXhlZC4KK0JVR1dLNDc5
MjYgR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvY29tcG9zaXRlZC1odG1sLXNpemUuaHRtbCA9
IEZBSUwKKworLy8gVGhlc2UgdGVzdHMgYXJlIG1pc3NpbmcgYW4gZW50aXJlIGxheWVyIGluIHRo
ZSBsYXllciB0cmVlIG91dHB1dC4KK0JVR1dLNDc5MjcgV0lOIExJTlVYIEdQVSA6IGNvbXBvc2l0
aW5nL2dlb21ldHJ5L2xpbWl0LWxheWVyLWJvdW5kcy1jbGlwcGluZy1hbmNlc3Rvci5odG1sID0g
VEVYVAorQlVHQ1I2MDk2MiBXSU4gR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5
ZXItYm91bmRzLW92ZXJmbG93LXJlcGFpbnQuaHRtbCA9IFRJTUVPVVQgUEFTUworQlVHQ1I2MDk2
MiBNQUMgR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW92ZXJm
bG93LXJlcGFpbnQuaHRtbCA9IFRJTUVPVVQgSU1BR0UKK0JVR0NSNjA5NjIgTElOVVggR1BVIDog
Y29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW92ZXJmbG93LXJlcGFpbnQu
aHRtbCA9IFRJTUVPVVQgSU1BR0UgUEFTUworCisvLyBUaGUgZm9sbG93aW5nIGZhaWx1cmUgc2Vl
bXMgc3VzcGljaW91cyBiZWNhdXNlIGl0IGRvZXMgbm90IGNvbnRhaW4KKy8vIGFueSB0ZXh0OyBp
dCBzZWVtcyB0aGF0IHRoZSBsYXllciB0cmVlIHNob3VsZCBwcmVjaXNlbHkgbWF0Y2gKKy8vIFNh
ZmFyaSdzLgorQlVHV0s0Nzk0NCBXSU4gTElOVVggR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkv
bGltaXQtbGF5ZXItYm91bmRzLW92ZXJmbG93LXJvb3QuaHRtbCA9IFRFWFQKKworLy8gVGhlIGZv
bGxvd2luZyBmYWlsdXJlIGlzIG1pc3NpbmcgYSB0aWxlZCBsYXllciB3aGVyZSBTYWZhcmkgaGFz
CisvLyBvbmUsIGluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGxheWVyIHBvc2l0aW9uZWQgZGlmZmVy
ZW50bHkgdGhhbiBpbgorLy8gU2FmYXJpLgorQlVHV0s0Nzk0NiBHUFUgOiBjb21wb3NpdGluZy9n
ZW9tZXRyeS9saW1pdC1sYXllci1ib3VuZHMtdHJhbnNmb3JtZWQtb3ZlcmZsb3cuaHRtbCA9IFRJ
TUVPVVQgVEVYVAorCisvLyBBbGwgb2YgdGhlIHRlc3RzIGludm9sdmluZyBtYXNrcyBhcHBlYXIg
dG8gYmUgZmFpbGluZyByaWdodCBub3cuCitCVUdXSzQ3OTQ3IExJTlVYIFdJTiBHUFUgOiBjb21w
b3NpdGluZy9tYXNrcy9tYXNrZWQtYW5jZXN0b3IuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDcgTElO
VVggV0lOIEdQVSA6IGNvbXBvc2l0aW5nL21hc2tzL211bHRpcGxlLW1hc2tzLmh0bWwgPSBGQUlM
CitCVUdXSzQ3OTQ3IExJTlVYIFdJTiBHUFUgOiBjb21wb3NpdGluZy9tYXNrcy9zaW1wbGUtY29t
cG9zaXRlZC1tYXNrLmh0bWwgPSBGQUlMCisKKy8vIE5lYXJseSBhbGwgdGVzdHMgaW52b2x2aW5n
IHJlZmxlY3Rpb25zIGFyZSBmYWlsaW5nIHJpZ2h0IG5vdy4KK0JVR1dLNDc5NDkgR1BVIDogY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvYW5pbWF0aW9uLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwgPSBG
QUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2NvbXBvc2l0aW5n
LWNoYW5nZS1pbnNpZGUtcmVmbGVjdGlvbi5odG1sID0gRkFJTAorQlVHV0s0Nzk0OSBHUFUgOiBj
b21wb3NpdGluZy9yZWZsZWN0aW9ucy9kZWVwbHktbmVzdGVkLXJlZmxlY3Rpb25zLmh0bWwgPSBG
QUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL21hc2tlZC1yZWZs
ZWN0aW9uLW9uLWNvbXBvc2l0ZWQuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9z
aXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tYW5jaG9yLXBvaW50Lmh0bWwgPSBG
QUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZs
ZWN0aW9uLWFuaW1hdGVkLmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5n
L3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW1hc2stY2hhbmdlLmh0bWwgPSBGQUlMCitC
VUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9u
LW9uLW92ZXJmbG93Lmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3Jl
ZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW9wYWNpdHkuaHRtbCA9IEZBSUwKK0JVR1dLNDc5
NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tc2l6ZS1j
aGFuZ2UuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlv
bnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNmb3JtZWQuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkg
R1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNmb3Jt
ZWQyLmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25z
L25lc3RlZC1yZWZsZWN0aW9uLXRyYW5zaXRpb24uaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BV
IDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24uaHRtbCA9IEZBSUwK
K0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vbi1j
b21wb3NpdGVkLmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxl
Y3Rpb25zL3JlZmxlY3Rpb24tb3BhY2l0eS5odG1sID0gRkFJTAorQlVHV0s0Nzk0OSBHUFUgOiBj
b21wb3NpdGluZy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLW9yZGVyaW5nLmh0bWwgPSBGQUlMCitC
VUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tcG9zaXRp
b25pbmcuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlv
bnMvcmVmbGVjdGlvbi1wb3NpdGlvbmluZzIuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDog
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0ZWQtcmVmbGVjdGlvbnMuaHRt
bCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvdHJhbnNm
b3JtLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwgPSBGQUlMCisKKy8vIE1vc3Qgb2YgdGhlIHRpbGlu
ZyB0ZXN0cyBhcmUgbWlzYmVoYXZpbmcgaW4gQ2hyb21lIGV2ZW4gdGhvdWdoIHRoZQorLy8gRFJU
IG91dHB1dCBsb29rcyBzaW1pbGFyIHRvIFNhZmFyaSdzLiBUaGVzZSBuZWVkIHRvIGJlIGludmVz
dGlnYXRlZC4KK0JVR1dLNDc5NTEgR1BVIDogY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXIt
YWRkLXJlbW92ZS1jaGlsZC5odG1sID0gRkFJTAorQlVHV0s0Nzk1MSBHUFUgOiBjb21wb3NpdGlu
Zy90aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVyLWNoaWxkcmVuLmh0bWwgPSBGQUlMCitCVUdX
SzQ3OTUxIEdQVSA6IGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLmh0bWwgPSBGQUlMCisK
Ky8vIFRoZXNlIHRlc3RzIGFyZSBmbGFreSBvbiBMaW51eC4KK0JVR1dLNDgwMTIgTElOVVggR1BV
IDogY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItd2l0aC1sYXllci1jaGlsZHJlbi1yZXNp
emUuaHRtbCA9IEZBSUwgUEFTUworQlVHV0s0ODAxMiBMSU5VWCBHUFUgOiBjb21wb3NpdGluZy9y
ZXBhaW50L29wYWNpdHktYmV0d2Vlbi1hYnNvbHV0ZTIuaHRtbCA9IEZBSUwgUEFTUworQlVHV0s0
ODAxMiBMSU5VWCBHUFUgOiBjb21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1zY3JvbGwuaHRt
bCA9IEZBSUwgUEFTUworQlVHV0s0Nzk1MiBHUFUgOiBjb21wb3NpdGluZy90cmFuc2l0aW9ucy9z
Y2FsZS10cmFuc2l0aW9uLW5vLXN0YXJ0Lmh0bWwgPSBGQUlMCisKKy8vIFRoZXNlIGNvbXBvc2l0
b3IgV2ViR0wgdGVzdHMgZmFpbC4KK0JVR1dLNDc5NTMgR1BVIDogY29tcG9zaXRpbmcvd2ViZ2wv
d2ViZ2wtYmFja2dyb3VuZC1jb2xvci5odG1sID0gRkFJTAorQlVHV0s0Nzk1MyBHUFUgOiBjb21w
b3NpdGluZy93ZWJnbC93ZWJnbC1yZWZsZWN0aW9uLmh0bWwgPSBGQUlMCisKKy8vIFRoZXNlIHRl
c3RzIGFyZSBmYWlsaW5nIG9uIExpbnV4IGJlY2F1c2UgdGhlIGxheWVycyBhcmUgZGlmZmVyZW50
bHkKKy8vIHNpemVkIHRoYW4gb24gV2luZG93cy4gSXQgaXMgdW5jbGVhciB3aHkgdGhpcyBpcyBo
YXBwZW5pbmcgYW5kIGl0CisvLyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWQuCisvLyBCZWNhbWUg
Zmxha3kgb24gYWxsIHBsYXRmb3JtcyBhZnRlciB0aGUgc3dpdGNoIHRvIERSVC4KK0JVR1dLNDgw
MTYgR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLXBvc2l0aW9u
ZWQtdHJhbnNpdGlvbi5odG1sID0gVEVYVCBQQVNTCitCVUdXSzQ4MDE2IExJTlVYIEdQVSA6IGNv
bXBvc2l0aW5nL2dlb21ldHJ5L3ZlcnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLmh0bWwgPSBGQUlM
CisKKy8vIFRoaXMgdGVzdCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gRFJULCBidXQg
YXBwYXJlbnRseSBub3QKKy8vIHdoZW4gRFJUIGlzIHJ1biBtYW51YWxseS4KK0JVR1dLNDgwMTgg
TElOVVggREVCVUcgR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvb3V0bGluZS1jaGFuZ2UuaHRt
bCA9IEZBSUwgUEFTUworCisvLyBMaW51eCByZXN1bHQgY29udGFpbnMgZXh0cmEgb3V0cHV0IHdo
aWNoIGxvb2tzIGxpa2UgZGVidWdnaW5nCisvLyBvdXRwdXQgZnJvbSBzb21ld2hlcmUuCitCVUdX
SzQ4MDIwIExJTlVYIERFQlVHIEdQVSA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L29iamVjdC1jbGlw
LXJlY3RzLWFzc2VydGlvbi5odG1sID0gRkFJTAorCisvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFy
ZSBmYWlsaW5nIG9uIE1hYy4KKy8vQlVHV0s0ODAyOSBNQUMgR1BVIDogY29tcG9zaXRpbmcvcGx1
Z2lucy9zbWFsbC10by1sYXJnZS1jb21wb3NpdGVkLXBsdWdpbi5odG1sID0gVEVYVAorQlVHV0s0
ODAyOSBNQUMgR1BVIDogY29tcG9zaXRpbmcvdGlsaW5nL2NyYXNoLXJlcGFyZW50LXRpbGVkLWxh
eWVyLmh0bWwgPSBURVhUCitCVUdXSzQ4MDI5IE1BQyBHUFUgOiBjb21wb3NpdGluZy90aWxpbmcv
aHVnZS1sYXllci1pbWcuaHRtbCA9IFRFWFQKK0JVR1dLNDgwMjkgV0lOIERFQlVHIEdQVSA6IGNv
bXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sID0gVEVYVCBUSU1FT1VUCitCVUdX
SzQ4MDI5IE1BQyBHUFUgOiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1yZXNpemUuaHRt
bCA9IFRFWFQKK0JVR1dLNDgwMjkgTUFDIEdQVSA6IGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxh
eWVyLXdpdGgtbGF5ZXItY2hpbGRyZW4tcmVzaXplLmh0bWwgPSBURVhUCisKKy8vIE5ldyB0ZXN0
LCBuZWVkcyB3aW5kb3dzIGFuZCBtYWMgc3BlY2lmaWMgYmFzZWxpbmVzLgorQlVHSkFNRVNSIFdJ
TiBNQUMgR1BVIDogY29tcG9zaXRpbmcvdGV4dC1vbi1sYXJnZS1sYXllci5odG1sID0gUEFTUyBG
QUlMCisKKy8vIFRoZXNlIHRlc3RzIGFyZSB0b28gc2xvdyB3aXRoIG91ciBNRVNBIGJhY2tlbmQu
ICBXZSBjYW4gcmUtZW5hYmxlIHdoZW4gd2UgaGF2ZQorLy8gYm90cyBydW5uaW5nIHRlc3RzIG9u
IHJlYWwgaGFyZHdhcmUuCitCVUdXSzQ5NjI5IFNLSVAgR1BVIDogcGxhdGZvcm0vY2hyb21pdW0v
Y29tcG9zaXRpbmcvbG90cy1vZi1pbWctbGF5ZXJzLmh0bWwgPSBQQVNTCitCVUdXSzQ5NjI5IFNL
SVAgR1BVIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbG90cy1vZi1pbWctbGF5ZXJz
LXdpdGgtb3BhY2l0eS5odG1sID0gUEFTUworQlVHQ1I1NzQzMSBXSU4gTElOVVggR1BVIDogZmFz
dC9jYW52YXMvY2FudmFzLXN0cm9rZVJlY3QuaHRtbCA9IFRFWFQKK0JVR0NSNTc0MzIgV0lOIExJ
TlVYIEdQVSA6IGZhc3QvY2FudmFzL2RyYXdJbWFnZS13aXRoLW5lZ2F0aXZlLXNvdXJjZS1kZXN0
aW5hdGlvbi5odG1sID0gVEVYVAorQlVHQ1I1ODUzNCBXSU4gTElOVVggR1BVIDogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEuZmlsbC5odG1sID0gVEVYVAorQlVH
Q1I1ODUzNiBXSU4gTElOVVggR1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5pbWFnZURhdGEu
cHV0LmFscGhhLmh0bWwgPSBURVhUCitCVUdDUjYwOTY1IFdJTiBMSU5VWCBHUFUgOiBmYXN0L2Nh
bnZhcy9zZXRXaWR0aFJlc2V0QWZ0ZXJGb3JjZWRSZW5kZXIuaHRtbCA9IElNQUdFK1RFWFQKKwor
Ly8gSGFzIGJlZW4gdGltaW5nIG91dCBvbiB3aW4gZGVidWcgZm9yIGEgd2hpbGUuCitCVUdXRUJH
TCBXSU4gREVCVUcgR1BVIDogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFs
cGhhLWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwgPSBUSU1FT1VUCisvLyBUaGlzIHdhcyBp
bnRyb2R1Y2VkIGJ5IHI3NTEzOQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>78483</attachid>
            <date>2011-01-10 17:58:20 -0800</date>
            <delta_ts>2011-01-11 15:26:12 -0800</delta_ts>
            <desc>sample merged test_expectations file where conflicting modifiers are allowed if they&apos;re unambiguous.</desc>
            <filename>bug-51222-20110110175819.patch</filename>
            <type>text/plain</type>
            <size>13690</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCBmMmU0NTY5ZTY1NTdmM2UzN2Y2OWE5OTQ4YzJmOTIwNGQxOTRkYjIwLi5mMDQ4
ZTE1Mjg2NGYwMTE1ODM1YzY3YThmNTZjOWI0MTVlMzhmYjZlIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0zMTU1LDMg
KzMxNTUsMjA3IEBAIEJVR1dLNTIwNjEgREVCVUcgOiB0cmFuc2l0aW9ucy90cmFuc2l0aW9uLXRp
bWluZy1mdW5jdGlvbi5odG1sID0gUEFTUyBURVhUCiAvLyBGYWlsaW5nIHNpbmNlIGNyZWF0aW9u
IGluIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzc1MzA4CiBCVUdfQUJBUlRIIDog
c3ZnL3RleHQvY2FyZXQtaW4tc3ZnLXRleHQueGh0bWwgPSBURVhUCiAKKy8vIFRoaXMgbmV4dCBz
ZWN0aW9uIGNvbnRhaW5zIEdQVS1zcGVjaWZpYyBleHBlY3RhdGlvbnMuCisvLyBXZSBza2lwIG1v
c3Qgb2YgdGhlIHRlc3RzIGluIHRoZSByZXBvc2l0b3J5IGJlY2F1c2UgdGhleSBkb24ndCB0cmln
Z2VyCisvLyB0aGUgYWNjZWxlcmF0ZWQgY29kZSBwYXRocy4gV2UgYWN0dWFsbHkgb25seSBydW4g
c29tZSBvZiB0aGUgY2FudmFzIGFuZAorLy8gY29tcG9zaXRpbmcgdGVzdHMgKGFzIGxpc3RlZCBi
ZWxvdykuCitXT05URklYIFNLSVAgR1BVIDogYW5pbWF0aW9ucyA9IFBBU1MgRkFJTAorV09OVEZJ
WCBTS0lQIEdQVSA6IGNhbnZhcyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGNzczEg
PSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCBHUFUgOiBjc3MyLjEgPSBQQVNTIEZBSUwKK1dPTlRG
SVggU0tJUCBHUFUgOiBjc3MzID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogZG9tID0g
UEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogZWRpdGluZyA9IFBBU1MgRkFJTAorV09OVEZJ
WCBTS0lQIEdQVSA6IGZhc3QgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCBHUFUgOiBmb250cyA9
IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGh0bWw1bGliID0gUEFTUyBGQUlMCitXT05U
RklYIFNLSVAgR1BVIDogaHR0cCA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGlldGVz
dGNlbnRlciA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIFdJTiBSRUxFQVNFIEdQVSA6IGluc3Bl
Y3RvciA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIFdJTiBERUJVRyBTTE9XIEdQVSA6IGluc3Bl
Y3RvciA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IGxvYWRlciA9IFBBU1MgRkFJTAor
V09OVEZJWCBTS0lQIEdQVSA6IG1lZGlhID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDog
cGVyZiA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IHBsYXRmb3JtID0gUEFTUyBGQUlM
CitXT05URklYIFNLSVAgR1BVIDogcGx1Z2lucyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQ
VSA6IHByaW50aW5nID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogcmVzb3VyY2VzID0g
UEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDogc2Nyb2xsYmFycyA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIEdQVSA6IHNlY3VyaXR5ID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BVIDog
c3RvcmFnZSA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IHN2ZyA9IFBBU1MgRkFJTAor
V09OVEZJWCBTS0lQIEdQVSA6IHRhYmxlcyA9IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6
IHRyYW5zZm9ybXMgPSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCBHUFUgOiB0cmFuc2l0aW9ucyA9
IFBBU1MgRkFJTAorV09OVEZJWCBTS0lQIEdQVSA6IHRyYXZlcnNhbCA9IFBBU1MgRkFJTAorV09O
VEZJWCBTS0lQIEdQVSA6IHVzZXJzY3JpcHRzID0gUEFTUyBGQUlMCitXT05URklYIFNLSVAgR1BV
IDogaHR0cC90ZXN0cy93ZWJzb2NrZXQgPSBQQVNTIEZBSUwKKworLy8gKFRoZXNlIGFyZSB0aGUg
dGVzdHMgd2UgYWN0dWFsbHkgcnVuIGFuZCBleHBlY3QgdG8gcGFzcykKKy8vIFdlIG5lZWQgdG8g
ZXhwbGljaXRseSBsaXN0IGZhc3QvY2FudmFzIGFuZCBjYW52YXMvcGhpbGlwIGJlY2F1c2UgdGhl
CisvLyBwYXJlbnQgZGlyZWN0b3JpZXMgYXJlIG90aGVyd2lzZSBTS0lQUGVkLiBXZSBsaXN0IGNv
bXBvc2l0aW5nIGZvciBjb21wbGV0ZW5lc3MuCisvLyBGSVhNRTogcmVtb3ZlIHRoZSBGQUlMIGZy
b20gdGhlIGZvbGxvd2luZyBsaW5lLgorQlVHTk9ORSBHUFUgOiBjb21wb3NpdGluZyA9IFBBU1Mg
RkFJTAorQlVHTk9ORSBHUFUgOiBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZyA9IFBBU1MK
KworLy8gVW5za2lwIHRoZSBjYW52YXMgdGVzdHMgb24gV2luIGFuZCBMaW51eCBvbmx5IChzaW5j
ZSBNYWMgZG9lcyBub3Qgc3VwcG9ydAorLy8gYWNjZWxlcmF0ZWQgMkQgY2FudmFzIHlldCkuCitC
VUdOT05FIFdJTiBMSU5VWCBHUFUgOiBmYXN0L2NhbnZhcyA9IFBBU1MKK0JVR05PTkUgV0lOIExJ
TlVYIEdQVSA6IGNhbnZhcy9waGlsaXAgPSBQQVNTCisKK0JVR0NSMjI3MDAgREVCVUcgV0lOIFNM
T1cgR1BVIDogZmFzdC9jYW52YXMvY2FudmFzLWdldEltYWdlRGF0YS5odG1sID0gUEFTUworQlVH
V0s0NTk5MSBMSU5VWCBXSU4gREVCVUcgR1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFk
aWVudC5yYWRpYWwuY29uZS50b3AuaHRtbCA9IFRFWFQgVElNRU9VVAorCisvLyBQYXNzZXMgb24g
dGhlIEdQVSwgYnV0IGxlYXZpbmcgdGhpcyBoZXJlIGZvciByZWZlcmVuY2UuCitCVUdDUjYwNjUx
IFJFTEVBU0UgR1BVIDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdldC1jYWxscy5odG1s
ID0gVEVYVCBQQVNTCitCVUdDUjYwNjUxIE1BQyBMSU5VWCBERUJVRyBHUFUgOiBmYXN0L2NhbnZh
cy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgPSBURVhUIFBBU1MKK0JVR1dLNDcyNDMg
V0lOIERFQlVHIEdQVSA6IGZhc3QvY2FudmFzL3dlYmdsL2dsLW9iamVjdC1nZXQtY2FsbHMuaHRt
bCA9IFBBU1MgQ1JBU0gKK0JVR0NSNjA2NTEgTElOVVggR1BVIDogZmFzdC9jYW52YXMvd2ViZ2wv
dW5pZm9ybS1sb2NhdGlvbi5odG1sID0gVElNRU9VVCBURVhUCitCVUdfQVVUTyBXSU4gREVCVUcg
R1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYWxpZ24uY2VudGVyLmh0bWwg
PSBQQVNTIFRFWFQKKworLy8gQWxsICg/KSB2aWRlby1yZWxhdGVkIGNvbXBvc2l0b3IgdGVzdHMg
YXJlIGZhaWxpbmcgaW4KKy8vIER1bXBSZW5kZXJUcmVlIHJpZ2h0IG5vdy4KK0JVR1dLNDcyMzEg
U0tJUCBHUFUgOiBjb21wb3NpdGluZy9nZW9tZXRyeS9jbGlwcGVkLXZpZGVvLWNvbnRyb2xsZXIu
aHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9nZW9tZXRy
eS92aWRlby1maXhlZC1zY3JvbGxpbmcuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBH
UFUgOiBjb21wb3NpdGluZy9nZW9tZXRyeS92aWRlby1vcGFjaXR5LW92ZXJsYXkuaHRtbCA9IFRJ
TUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9sYXllcnMtaW5zaWRlLW92
ZXJmbG93LXNjcm9sbC5odG1sID0gVElNRU9VVAorQlVHV0s0NzIzMSBTS0lQIEdQVSA6IGNvbXBv
c2l0aW5nL292ZXJmbG93L292ZXJmbG93LWNvbXBvc2l0aW5nLWRlc2NlbmRhbnQuaHRtbCA9IFRJ
TUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9vdmVyZmxvdy9zY3JvbGwt
YW5jZXN0b3ItdXBkYXRlLmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3MjMxIFNLSVAgR1BVIDogY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvbG9hZC12aWRlby1pbi1yZWZsZWN0aW9uLmh0bWwgPSBUSU1F
T1VUCitCVUdXSzQ3MjMxIFNLSVAgR1BVIDogY29tcG9zaXRpbmcvc2VsZi1wYWludGluZy1sYXll
cnMuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9zZWxm
LXBhaW50aW5nLWxheWVyczIuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDcyMzEgU0tJUCBHUFUgOiBj
b21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwgPSBUSU1FT1VUCitC
VUdXSzQ3MjMxIFNLSVAgR1BVIDogY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tcG9zdGVyLmh0bWwg
PSBUSU1FT1VUCisKKy8vIFRoZSBmb2xsb3dpbmcgY29tcG9zaXRvciB0ZXN0cyBhcmUgY3VycmVu
dGx5IHRpbWluZyBvdXQuIE5lZWQgdG8KKy8vIGludmVzdGlnYXRlIHdoeS4KK0JVR1dLNDc5MjMg
U0tJUCBHUFUgOiBjb21wb3NpdGluZy9jaGVja2VyYm9hcmQuaHRtbCA9IFRJTUVPVVQKK0JVR1dL
NDc5MjMgU0tJUCBHUFUgOiBjb21wb3NpdGluZy9jb2xvci1tYXRjaGluZy9pbWFnZS1jb2xvci1t
YXRjaGluZy5odG1sID0gVElNRU9VVAorQlVHV0s0NzkyMyBTS0lQIEdQVSA6IGNvbXBvc2l0aW5n
L2dlb21ldHJ5L2Ficy1wb3NpdGlvbi1pbnNpZGUtb3BhY2l0eS5odG1sID0gVElNRU9VVAorQlVH
V0s0NzkyMyBTS0lQIEdQVSA6IGNvbXBvc2l0aW5nL2lmcmFtZXMvYmVjb21lLW92ZXJsYXBwZWQt
aWZyYW1lLmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDogY29tcG9zaXRpbmcv
bWFza3MvZGlyZWN0LWltYWdlLW1hc2suaHRtbCA9IFRJTUVPVVQKK0JVR1dLNDc5MjMgU0tJUCBH
UFUgOiBjb21wb3NpdGluZy9vdmVyZmxvdy9hbmNlc3Rvci1vdmVyZmxvdy5odG1sID0gVElNRU9V
VAorQlVHV0s0NzkyMyBTS0lQIEdQVSA6IGNvbXBvc2l0aW5nL3JlcGFpbnQvY29tcG9zaXRlZC1k
b2N1bWVudC1lbGVtZW50Lmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDogY29t
cG9zaXRpbmcvc2hhZG93cy9zaGFkb3ctZHJhd2luZy5odG1sID0gVElNRU9VVAorQlVHV0s0Nzky
MyBTS0lQIEdQVSA6IGNvbXBvc2l0aW5nL3RpbGluZy9jb25zdHJhaW5lZC1sYXllci1zaXplLmh0
bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDogY29tcG9zaXRpbmcvei1vcmRlci9u
ZWdhdGl2ZS16LWluZGV4Lmh0bWwgPSBUSU1FT1VUCitCVUdXSzQ3OTIzIFNLSVAgR1BVIDogY29t
cG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW9wYWNpdHktdHJhbnNpdGlvbi5o
dG1sID0gVElNRU9VVAorCisvLyBUaGUgZm9sbG93aW5nIHRlc3QgaXMgZmxha3k7IGl0IG9jY2Fz
aW9uYWxseSB0aW1lcyBvdXQsIGJ1dCBub3QgYWx3YXlzLgorQlVHV0s0NzkyNCBXSU4gTElOVVgg
R1BVIDogY29tcG9zaXRpbmcvaWZyYW1lcy9jb21wb3NpdGVkLWlmcmFtZS1hbGlnbm1lbnQuaHRt
bCA9IFRJTUVPVVQgUEFTUworQlVHV0s0NzkyNCBNQUMgR1BVIDogY29tcG9zaXRpbmcvaWZyYW1l
cy9jb21wb3NpdGVkLWlmcmFtZS1hbGlnbm1lbnQuaHRtbCA9IFRJTUVPVVQgSU1BR0UKKworLy8g
Q2hyb21pdW0gZG9lcyBub3Qgc3VwcG9ydCBQREYgY29udGVudCBpbiA8aW1nPiB0YWdzLgorV09O
VEZJWCBHUFUgOiBjb21wb3NpdGluZy9jb2xvci1tYXRjaGluZy9wZGYtaW1hZ2UtbWF0Y2guaHRt
bCA9IEZBSUwKK1dPTlRGSVggR1BVIDogY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1wZGYtaW1h
Z2UuaHRtbCA9IEZBSUwKKworLy8gQ2hyb21pdW0gZG9lcyBub3Qgc3VwcG9ydCBQREYgb3IgcGx1
Z2luIGNvbnRlbnQgaW4gbGF5ZXJzIHJpZ2h0IG5vdy4KK0JVR1dLNDc5MjUgV0lOIExJTlVYIEdQ
VSA6IGNvbXBvc2l0aW5nL3BsdWdpbnMvY29tcG9zaXRlZC1wbHVnaW4uaHRtbCA9IEZBSUwKK0JV
R1dLNDc5MjUgTUFDIEdQVSA6IGNvbXBvc2l0aW5nL3BsdWdpbnMvY29tcG9zaXRlZC1wbHVnaW4u
aHRtbCA9IENSQVNICitCVUdXSzQ3OTI1IE1BQyBHUFUgOiBjb21wb3NpdGluZy9wbHVnaW5zL3Nt
YWxsLXRvLWxhcmdlLWNvbXBvc2l0ZWQtcGx1Z2luLmh0bWwgPSBDUkFTSAorQlVHV0s0NzkyNSBN
QUMgR1BVIDogY29tcG9zaXRpbmcvcGx1Z2lucy8xeDEtY29tcG9zaXRlZC1wbHVnaW4uaHRtbCA9
IENSQVNICitCVUdXSzQ3OTI1IE1BQyBHUFUgOiBjb21wb3NpdGluZy9wbHVnaW5zL2xhcmdlLXRv
LXNtYWxsLWNvbXBvc2l0ZWQtcGx1Z2luLmh0bWwgPSBDUkFTSAorCisvLyBUaGUgd29yZCAiY29t
cG9zaXRpbmciIGFwcGVhcnMgaW4gQ2hyb21pdW0ncyBwaXhlbCByZXN1bHRzIGFuZCBub3QKKy8v
IGluIFNhZmFyaSdzOyB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBmaXhlZC4KK0JVR1dLNDc5MjYg
R1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvY29tcG9zaXRlZC1odG1sLXNpemUuaHRtbCA9IEZB
SUwKKworLy8gVGhlc2UgdGVzdHMgYXJlIG1pc3NpbmcgYW4gZW50aXJlIGxheWVyIGluIHRoZSBs
YXllciB0cmVlIG91dHB1dC4KK0JVR1dLNDc5MjcgV0lOIExJTlVYIEdQVSA6IGNvbXBvc2l0aW5n
L2dlb21ldHJ5L2xpbWl0LWxheWVyLWJvdW5kcy1jbGlwcGluZy1hbmNlc3Rvci5odG1sID0gVEVY
VAorQlVHQ1I2MDk2MiBXSU4gR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXIt
Ym91bmRzLW92ZXJmbG93LXJlcGFpbnQuaHRtbCA9IFRJTUVPVVQgUEFTUworQlVHQ1I2MDk2MiBN
QUMgR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW92ZXJmbG93
LXJlcGFpbnQuaHRtbCA9IFRJTUVPVVQgSU1BR0UKK0JVR0NSNjA5NjIgTElOVVggR1BVIDogY29t
cG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLW92ZXJmbG93LXJlcGFpbnQuaHRt
bCA9IFRJTUVPVVQgSU1BR0UgUEFTUworCisvLyBUaGUgZm9sbG93aW5nIGZhaWx1cmUgc2VlbXMg
c3VzcGljaW91cyBiZWNhdXNlIGl0IGRvZXMgbm90IGNvbnRhaW4KKy8vIGFueSB0ZXh0OyBpdCBz
ZWVtcyB0aGF0IHRoZSBsYXllciB0cmVlIHNob3VsZCBwcmVjaXNlbHkgbWF0Y2gKKy8vIFNhZmFy
aSdzLgorQlVHV0s0Nzk0NCBXSU4gTElOVVggR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGlt
aXQtbGF5ZXItYm91bmRzLW92ZXJmbG93LXJvb3QuaHRtbCA9IFRFWFQKKworLy8gVGhlIGZvbGxv
d2luZyBmYWlsdXJlIGlzIG1pc3NpbmcgYSB0aWxlZCBsYXllciB3aGVyZSBTYWZhcmkgaGFzCisv
LyBvbmUsIGluIGFkZGl0aW9uIHRvIGhhdmluZyBhIGxheWVyIHBvc2l0aW9uZWQgZGlmZmVyZW50
bHkgdGhhbiBpbgorLy8gU2FmYXJpLgorQlVHV0s0Nzk0NiBHUFUgOiBjb21wb3NpdGluZy9nZW9t
ZXRyeS9saW1pdC1sYXllci1ib3VuZHMtdHJhbnNmb3JtZWQtb3ZlcmZsb3cuaHRtbCA9IFRJTUVP
VVQgVEVYVAorCisvLyBBbGwgb2YgdGhlIHRlc3RzIGludm9sdmluZyBtYXNrcyBhcHBlYXIgdG8g
YmUgZmFpbGluZyByaWdodCBub3cuCitCVUdXSzQ3OTQ3IExJTlVYIFdJTiBHUFUgOiBjb21wb3Np
dGluZy9tYXNrcy9tYXNrZWQtYW5jZXN0b3IuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDcgTElOVVgg
V0lOIEdQVSA6IGNvbXBvc2l0aW5nL21hc2tzL211bHRpcGxlLW1hc2tzLmh0bWwgPSBGQUlMCitC
VUdXSzQ3OTQ3IExJTlVYIFdJTiBHUFUgOiBjb21wb3NpdGluZy9tYXNrcy9zaW1wbGUtY29tcG9z
aXRlZC1tYXNrLmh0bWwgPSBGQUlMCisKKy8vIE5lYXJseSBhbGwgdGVzdHMgaW52b2x2aW5nIHJl
ZmxlY3Rpb25zIGFyZSBmYWlsaW5nIHJpZ2h0IG5vdy4KK0JVR1dLNDc5NDkgR1BVIDogY29tcG9z
aXRpbmcvcmVmbGVjdGlvbnMvYW5pbWF0aW9uLWluc2lkZS1yZWZsZWN0aW9uLmh0bWwgPSBGQUlM
CitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL2NvbXBvc2l0aW5nLWNo
YW5nZS1pbnNpZGUtcmVmbGVjdGlvbi5odG1sID0gRkFJTAorQlVHV0s0Nzk0OSBHUFUgOiBjb21w
b3NpdGluZy9yZWZsZWN0aW9ucy9kZWVwbHktbmVzdGVkLXJlZmxlY3Rpb25zLmh0bWwgPSBGQUlM
CitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL21hc2tlZC1yZWZsZWN0
aW9uLW9uLWNvbXBvc2l0ZWQuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRp
bmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tYW5jaG9yLXBvaW50Lmh0bWwgPSBGQUlM
CitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0
aW9uLWFuaW1hdGVkLmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3Jl
ZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW1hc2stY2hhbmdlLmh0bWwgPSBGQUlMCitCVUdX
SzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW9u
LW92ZXJmbG93Lmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxl
Y3Rpb25zL25lc3RlZC1yZWZsZWN0aW9uLW9wYWNpdHkuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkg
R1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tc2l6ZS1jaGFu
Z2UuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMv
bmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNmb3JtZWQuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BV
IDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24tdHJhbnNmb3JtZWQy
Lmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL25l
c3RlZC1yZWZsZWN0aW9uLXRyYW5zaXRpb24uaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDog
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvbmVzdGVkLXJlZmxlY3Rpb24uaHRtbCA9IEZBSUwKK0JV
R1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vbi1jb21w
b3NpdGVkLmh0bWwgPSBGQUlMCitCVUdXSzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rp
b25zL3JlZmxlY3Rpb24tb3BhY2l0eS5odG1sID0gRkFJTAorQlVHV0s0Nzk0OSBHUFUgOiBjb21w
b3NpdGluZy9yZWZsZWN0aW9ucy9yZWZsZWN0aW9uLW9yZGVyaW5nLmh0bWwgPSBGQUlMCitCVUdX
SzQ3OTQ5IEdQVSA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tcG9zaXRpb25p
bmcuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMv
cmVmbGVjdGlvbi1wb3NpdGlvbmluZzIuaHRtbCA9IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29t
cG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0ZWQtcmVmbGVjdGlvbnMuaHRtbCA9
IEZBSUwKK0JVR1dLNDc5NDkgR1BVIDogY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvdHJhbnNmb3Jt
LWluc2lkZS1yZWZsZWN0aW9uLmh0bWwgPSBGQUlMCisKKy8vIE1vc3Qgb2YgdGhlIHRpbGluZyB0
ZXN0cyBhcmUgbWlzYmVoYXZpbmcgaW4gQ2hyb21lIGV2ZW4gdGhvdWdoIHRoZQorLy8gRFJUIG91
dHB1dCBsb29rcyBzaW1pbGFyIHRvIFNhZmFyaSdzLiBUaGVzZSBuZWVkIHRvIGJlIGludmVzdGln
YXRlZC4KK0JVR1dLNDc5NTEgR1BVIDogY29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItYWRk
LXJlbW92ZS1jaGlsZC5odG1sID0gRkFJTAorQlVHV0s0Nzk1MSBHUFUgOiBjb21wb3NpdGluZy90
aWxpbmcvaHVnZS1sYXllci13aXRoLWxheWVyLWNoaWxkcmVuLmh0bWwgPSBGQUlMCitCVUdXSzQ3
OTUxIEdQVSA6IGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVyLmh0bWwgPSBGQUlMCisKKy8v
IFRoZXNlIHRlc3RzIGFyZSBmbGFreSBvbiBMaW51eC4KK0JVR1dLNDgwMTIgTElOVVggR1BVIDog
Y29tcG9zaXRpbmcvdGlsaW5nL2h1Z2UtbGF5ZXItd2l0aC1sYXllci1jaGlsZHJlbi1yZXNpemUu
aHRtbCA9IEZBSUwgUEFTUworQlVHV0s0ODAxMiBMSU5VWCBHUFUgOiBjb21wb3NpdGluZy9yZXBh
aW50L29wYWNpdHktYmV0d2Vlbi1hYnNvbHV0ZTIuaHRtbCA9IEZBSUwgUEFTUworQlVHV0s0ODAx
MiBMSU5VWCBHUFUgOiBjb21wb3NpdGluZy9vdmVyZmxvdy9vdmVyZmxvdy1zY3JvbGwuaHRtbCA9
IEZBSUwgUEFTUworQlVHV0s0Nzk1MiBHUFUgOiBjb21wb3NpdGluZy90cmFuc2l0aW9ucy9zY2Fs
ZS10cmFuc2l0aW9uLW5vLXN0YXJ0Lmh0bWwgPSBGQUlMCisKKy8vIFRoZXNlIGNvbXBvc2l0b3Ig
V2ViR0wgdGVzdHMgZmFpbC4KK0JVR1dLNDc5NTMgR1BVIDogY29tcG9zaXRpbmcvd2ViZ2wvd2Vi
Z2wtYmFja2dyb3VuZC1jb2xvci5odG1sID0gRkFJTAorQlVHV0s0Nzk1MyBHUFUgOiBjb21wb3Np
dGluZy93ZWJnbC93ZWJnbC1yZWZsZWN0aW9uLmh0bWwgPSBGQUlMCisKKy8vIFRoZXNlIHRlc3Rz
IGFyZSBmYWlsaW5nIG9uIExpbnV4IGJlY2F1c2UgdGhlIGxheWVycyBhcmUgZGlmZmVyZW50bHkK
Ky8vIHNpemVkIHRoYW4gb24gV2luZG93cy4gSXQgaXMgdW5jbGVhciB3aHkgdGhpcyBpcyBoYXBw
ZW5pbmcgYW5kIGl0CisvLyBuZWVkcyB0byBiZSBpbnZlc3RpZ2F0ZWQuCisvLyBCZWNhbWUgZmxh
a3kgb24gYWxsIHBsYXRmb3JtcyBhZnRlciB0aGUgc3dpdGNoIHRvIERSVC4KK0JVR1dLNDgwMTYg
R1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvbGltaXQtbGF5ZXItYm91bmRzLXBvc2l0aW9uZWQt
dHJhbnNpdGlvbi5odG1sID0gVEVYVCBQQVNTCitCVUdXSzQ4MDE2IExJTlVYIEdQVSA6IGNvbXBv
c2l0aW5nL2dlb21ldHJ5L3ZlcnRpY2FsLXNjcm9sbC1jb21wb3NpdGVkLmh0bWwgPSBGQUlMCisK
Ky8vIFRoaXMgdGVzdCBjYXVzZXMgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gRFJULCBidXQgYXBw
YXJlbnRseSBub3QKKy8vIHdoZW4gRFJUIGlzIHJ1biBtYW51YWxseS4KK0JVR1dLNDgwMTggTElO
VVggREVCVUcgR1BVIDogY29tcG9zaXRpbmcvZ2VvbWV0cnkvb3V0bGluZS1jaGFuZ2UuaHRtbCA9
IEZBSUwgUEFTUworCisvLyBMaW51eCByZXN1bHQgY29udGFpbnMgZXh0cmEgb3V0cHV0IHdoaWNo
IGxvb2tzIGxpa2UgZGVidWdnaW5nCisvLyBvdXRwdXQgZnJvbSBzb21ld2hlcmUuCitCVUdXSzQ4
MDIwIExJTlVYIERFQlVHIEdQVSA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5L29iamVjdC1jbGlwLXJl
Y3RzLWFzc2VydGlvbi5odG1sID0gRkFJTAorCisvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBm
YWlsaW5nIG9uIE1hYy4KKy8vQlVHV0s0ODAyOSBNQUMgR1BVIDogY29tcG9zaXRpbmcvcGx1Z2lu
cy9zbWFsbC10by1sYXJnZS1jb21wb3NpdGVkLXBsdWdpbi5odG1sID0gVEVYVAorQlVHV0s0ODAy
OSBNQUMgR1BVIDogY29tcG9zaXRpbmcvdGlsaW5nL2NyYXNoLXJlcGFyZW50LXRpbGVkLWxheWVy
Lmh0bWwgPSBURVhUCitCVUdXSzQ4MDI5IE1BQyBHUFUgOiBjb21wb3NpdGluZy90aWxpbmcvaHVn
ZS1sYXllci1pbWcuaHRtbCA9IFRFWFQKK0JVR1dLNDgwMjkgV0lOIERFQlVHIEdQVSA6IGNvbXBv
c2l0aW5nL3RpbGluZy9odWdlLWxheWVyLWltZy5odG1sID0gVEVYVCBUSU1FT1VUCitCVUdXSzQ4
MDI5IE1BQyBHUFUgOiBjb21wb3NpdGluZy90aWxpbmcvaHVnZS1sYXllci1yZXNpemUuaHRtbCA9
IFRFWFQKK0JVR1dLNDgwMjkgTUFDIEdQVSA6IGNvbXBvc2l0aW5nL3RpbGluZy9odWdlLWxheWVy
LXdpdGgtbGF5ZXItY2hpbGRyZW4tcmVzaXplLmh0bWwgPSBURVhUCisKKy8vIE5ldyB0ZXN0LCBu
ZWVkcyB3aW5kb3dzIGFuZCBtYWMgc3BlY2lmaWMgYmFzZWxpbmVzLgorQlVHSkFNRVNSIFdJTiBN
QUMgR1BVIDogY29tcG9zaXRpbmcvdGV4dC1vbi1sYXJnZS1sYXllci5odG1sID0gUEFTUyBGQUlM
CisKKy8vIFRoZXNlIHRlc3RzIGFyZSB0b28gc2xvdyB3aXRoIG91ciBNRVNBIGJhY2tlbmQuICBX
ZSBjYW4gcmUtZW5hYmxlIHdoZW4gd2UgaGF2ZQorLy8gYm90cyBydW5uaW5nIHRlc3RzIG9uIHJl
YWwgaGFyZHdhcmUuCitCVUdXSzQ5NjI5IFNLSVAgR1BVIDogcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcvbG90cy1vZi1pbWctbGF5ZXJzLmh0bWwgPSBQQVNTCitCVUdXSzQ5NjI5IFNLSVAg
R1BVIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcvbG90cy1vZi1pbWctbGF5ZXJzLXdp
dGgtb3BhY2l0eS5odG1sID0gUEFTUworQlVHQ1I1NzQzMSBXSU4gTElOVVggR1BVIDogZmFzdC9j
YW52YXMvY2FudmFzLXN0cm9rZVJlY3QuaHRtbCA9IFRFWFQKK0JVR0NSNTc0MzIgV0lOIExJTlVY
IEdQVSA6IGZhc3QvY2FudmFzL2RyYXdJbWFnZS13aXRoLW5lZ2F0aXZlLXNvdXJjZS1kZXN0aW5h
dGlvbi5odG1sID0gVEVYVAorQlVHQ1I1ODUzNCBXSU4gTElOVVggR1BVIDogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEuZmlsbC5odG1sID0gVEVYVAorQlVHQ1I1
ODUzNiBXSU4gTElOVVggR1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5pbWFnZURhdGEucHV0
LmFscGhhLmh0bWwgPSBURVhUCitCVUdDUjYwOTY1IFdJTiBMSU5VWCBHUFUgOiBmYXN0L2NhbnZh
cy9zZXRXaWR0aFJlc2V0QWZ0ZXJGb3JjZWRSZW5kZXIuaHRtbCA9IElNQUdFK1RFWFQKKworLy8g
SGFzIGJlZW4gdGltaW5nIG91dCBvbiB3aW4gZGVidWcgZm9yIGEgd2hpbGUuCitCVUdXRUJHTCBX
SU4gREVCVUcgR1BVIDogZmFzdC9jYW52YXMvd2ViZ2wvY29udGV4dC1hdHRyaWJ1dGVzLWFscGhh
LWRlcHRoLXN0ZW5jaWwtYW50aWFsaWFzLmh0bWwgPSBUSU1FT1VUCisvLyBUaGlzIHdhcyBpbnRy
b2R1Y2VkIGJ5IHI3NTEzOQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9u
cy5weQppbmRleCBhNWRlOGE4MzY4OTdmZGE5YTQwZTZkODUyNGRhYzE4NjEyNWM5Mzg2Li4xNGQw
NmVhYmMyMWRiYzIxMmM5ZjI4ZDQzZjkwY2RmZGZjOWUyNmQzIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtODUwLDE0ICs4NTAsOCBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICAgICAg
aWYgcHJldl9udW1fbWF0Y2hlcyA8IG51bV9tYXRjaGVzOgotICAgICAgICAgICAgc2VsZi5fbG9n
X25vbl9mYXRhbF9lcnJvcihsaW5lbm8sCi0gICAgICAgICAgICAgICAgJ01vcmUgc3BlY2lmaWMg
ZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJQotICAgICAgICAgICAgICAgIChs
aW5lbm8sIHByZXZfbGluZW5vKSwgdGVzdF9saXN0X3BhdGgpCiAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKIAotICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywKLSAgICAg
ICAgICAgICdNb3JlIHNwZWNpZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQn
ICUKLSAgICAgICAgICAgIChwcmV2X2xpbmVubywgbGluZW5vKSwgdGVzdF9saXN0X3BhdGgpCiAg
ICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2FkZF9lcnJvcihzZWxmLCBsaW5lbm8sIG1z
ZywgcGF0aCk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>78484</attachid>
            <date>2011-01-10 18:04:42 -0800</date>
            <delta_ts>2011-01-11 15:26:24 -0800</delta_ts>
            <desc>diff of the two test expectations files (and the code)</desc>
            <filename>bug-51222-20110110180441.patch</filename>
            <type>text/plain</type>
            <size>5784</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCBmMDQ4ZTE1Mjg2NGYwMTE1ODM1YzY3YThmNTZjOWI0MTVlMzhmYjZlLi5jYTJj
YWZkNWNiYjg2ZThhZTQwZDQ1ZGZiNDdlZjE4YTcwMGMwODg0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0yNTgsOCAr
MjU4LDggQEAgQlVHQ1IxMDM5NSBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3dlYmFyY2hpdmUg
PSBGQUlMIFBBU1MKIAogLy8gQ29tcG9zaXRpbmcgdGVzdHMgYXJlIHJ1biBzZXBhcmF0ZWx5IG9u
IG1hY2hpbmVzIHdpdGggR1BVczsgc2VlCiAvLyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1ncHUuCi1CVUdDUjE1NzMzIFdPTlRGSVggU0tJUCA6IGNvbXBvc2l0aW5nID0gRkFJTCBQQVNT
IFRJTUVPVVQKLUJVR0NSMTU3MzMgV09OVEZJWCBTS0lQIDogcGxhdGZvcm0vY2hyb21pdW0vY29t
cG9zaXRpbmcgPSBGQUlMIFBBU1MgVElNRU9VVAorQlVHQ1IxNTczMyBXT05URklYIFNLSVAgQ1BV
IDogY29tcG9zaXRpbmcgPSBGQUlMIFBBU1MgVElNRU9VVAorQlVHQ1IxNTczMyBXT05URklYIFNL
SVAgQ1BVIDogcGxhdGZvcm0vY2hyb21pdW0vY29tcG9zaXRpbmcgPSBGQUlMIFBBU1MgVElNRU9V
VAogCiAvLyBSdW4gdGhlIE1hYy1zcGVjaWZpYyBwbGF0Zm9ybSB0ZXN0cywgYnV0IG9ubHkgdG8g
Y2hlY2sgZm9yIGNyYXNoZXMuCiBXT05URklYIDogcGxhdGZvcm0vZ3RrID0gRkFJTCBQQVNTCkBA
IC02MjMsMTIgKzYyMywxMiBAQCBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL2luc3BlY3Rvci9l
eHRlbnNpb25zLWhlYWRlcnMuaHRtbCA9IEZBSUwKIAogLy8gSW5zcGVjdG9yIHRlc3RzIGluIERl
YnVnIGJ1aWxkIGFyZSB2ZXJ5IHNsb3cuICBJZiB3ZSByZW1vdmUgU0xPVywgd2UnbGwgc2VlCiAv
LyByYW5kb20gVElNRU9VVHMuICBJcyB0aGlzIGlzc3VlIERSVC1zcGVjaWZpYz8KLUJVR19EUlQg
V0lOIERFQlVHIFNMT1cgOiBpbnNwZWN0b3IgPSBQQVNTCitCVUdfRFJUIFdJTiBERUJVRyBTTE9X
IENQVSA6IGluc3BlY3RvciA9IFBBU1MKIEJVR19EUlQgV0lOIERFQlVHIFNMT1cgOiBodHRwL3Rl
c3RzL2luc3BlY3RvciA9IFBBU1MKIEJVR19EUlQgV0lOIERFQlVHIFNMT1cgOiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkID0gUEFTUwogCiAvLyBBZGQgc3VwcG9ydCBmb3IgaW5zcGVjdG9y
IGxheW91dCB0ZXN0cyBvbiBub24tV2luZG93cy4KLUJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAg
OiBpbnNwZWN0b3IgPSBQQVNTCitCVUdDUjI2NzM0IExJTlVYIE1BQyBTS0lQIENQVSA6IGluc3Bl
Y3RvciA9IFBBU1MKIEJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAgOiBodHRwL3Rlc3RzL2luc3Bl
Y3RvciA9IFBBU1MKIEJVR0NSMjY3MzQgTElOVVggTUFDIFNLSVAgOiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci1lbmFibGVkID0gUEFTUwogCkBAIC0xMDQxLDcgKzEwNDEsNyBAQCBCVUdDUjEwMzE3IExJ
TlVYIDogZmFzdC9jc3Mvc2hhZG93LW11bHRpcGxlLmh0bWwgPSBGQUlMCiAvLyBQcm9ibGVtcyB3
aXRoIGdldEltYWdlRGF0YSBhbmQgdG9EYXRhVVJMLgogLy8gVGhpcyB0ZXN0IHJlcXVpcmVzIHVz
IHRvIGRvIGFscGhhIGJsZW5kaW5nIGV4YWN0bHkgdGhlIHdheSBDRyBkb2VzIGl0LAogLy8gd2hp
Y2ggU2tpYSBtYXkgbmV2ZXIgZG8gKHNlZSBidWcpLgotQlVHQ1IyMjcwMCBMSU5VWCBXSU4gOiBm
YXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwgPSBGQUlMCitCVUdDUjIyNzAwIExJ
TlVYIFdJTiBDUFUgOiBmYXN0L2NhbnZhcy9jYW52YXMtZ2V0SW1hZ2VEYXRhLmh0bWwgPSBGQUlM
CiAKIC8vIFdlJ3JlIG11Y2ggY2xvc2VyIG5vdy4gVG8gZnVsbHkgcGFzcyB0aGlzIHdlIG5lZWQg
ZW5jb2RlcnMgZm9yIGpwZwogLy8gYW5kIGdpZiwgd2hpY2ggaXMgYSBsb3cgcHJpb3JpdHkuCkBA
IC0yMDY2LDkgKzIwNjYsOSBAQCBCVUdDUjQ0MTUwIExJTlVYIDogZmFzdC9mb3Jtcy9pbnB1dC10
ZXh0LXBhc3RlLW1heGxlbmd0aC5odG1sID0gQ1JBU0ggUEFTUwogLy8gVGhlIGZvbGxvd2luZyB0
ZXN0cyBmYWlsIG9uIGFsbCBwbGF0Zm9ybXMgYW5kIG5lZWQgZnVydGhlciBpbnZlc3RpZ2F0aW9u
LgogLy8gTWFueSBvZiB0aGVzZSBhcmUgc2tpcHBlZCBvbiB0aGUgTWFjIHBsYXRmb3JtCiBCVUdX
SzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5kcmF3SW1hZ2UuYnJva2VuLmh0bWwgPSBU
RVhUCi1CVUdXSzQ1OTkxIE1BQyBXSU4gOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50
LnJhZGlhbC5jb25lLnRvcC5odG1sID0gVEVYVAotQlVHV0s0NTk5MSBMSU5VWCBSRUxFQVNFIDog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3AuaHRtbCA9IFRF
WFQKLUJVR1dLNDU5OTEgTElOVVggREVCVUcgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRp
ZW50LnJhZGlhbC5jb25lLnRvcC5odG1sID0gVEVYVCBUSU1FT1VUCitCVUdXSzQ1OTkxIE1BQyBX
SU4gQ1BVIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5yYWRpYWwuY29uZS50b3Au
aHRtbCA9IFRFWFQKK0JVR1dLNDU5OTEgTElOVVggUkVMRUFTRSBDUFUgOiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlhbC5jb25lLnRvcC5odG1sID0gVEVYVAorQlVHV0s0NTk5
MSBMSU5VWCBERUJVRyBDUFUgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmdyYWRpZW50LnJhZGlh
bC5jb25lLnRvcC5odG1sID0gVEVYVCBUSU1FT1VUCiBCVUdXSzM5MjEyIDogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5pbWFnZURhdGEuY3JlYXRlMS50eXBlLmh0bWwgPSBURVhUCiBCVUdXSzM5MjEy
IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5pbWFnZURhdGEuY3JlYXRlMi50eXBlLmh0bWwgPSBU
RVhUCiBCVUdXSzM5MjEyIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5pbWFnZURhdGEuZ2V0LnR5
cGUuaHRtbCA9IFRFWFQKQEAgLTI0ODgsNyArMjQ4OCw3IEBAIEJVR0NSNTI1NzIgV0lOIExJTlVY
IERFQlVHIDogaHR0cC90ZXN0cy9taXNjL2ltYWdlLWJsb2NrZWQtc3JjLWNoYW5nZS5odG1sID0g
UEFTCiAvLyBTdGFydGVkIHRvIGNyYXNoIGFyb3VuZCBDaHJvbWl1bSByNTY0MDguCiBCVUdDUjUy
NTczIExJTlVYIFJFTEVBU0UgOiBmYXN0L2pzL2FycmF5LWV2ZXJ5Lmh0bWwgPSBQQVNTIENSQVNI
CiAKLUJVR1dLNDQxOTkgOiBwZXJmID0gUEFTUyBURVhUCitCVUdXSzQ0MTk5IENQVSA6IHBlcmYg
PSBQQVNTIFRFWFQKIEJVR1dLNDQxOTkgREVCVUcgOiBwZXJmL2FycmF5LWJpbmFyeS1zZWFyY2gu
aHRtbCA9IFBBU1MgVEVYVCBUSU1FT1VUCiAKIC8vIEZhaWxpbmcgYWZ0ZXIgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjU2NjUvCkBAIC0yNTgyLDEwICsyNTgyLDEwIEBAIEJVR1dF
QkdMIDogZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6ZS5odG1sID0gVEVYVAogQlVHV0VCR0wg
OiBmYXN0L2NhbnZhcy93ZWJnbC9nbHNsLWNvbmZvcm1hbmNlLmh0bWwgPSBDUkFTSAogCiAvLyBU
aGVzZSB3ZXJlIG5vdCBmaXhlZCBieSB0aGUgTWVzYSA3LjkgdXBncmFkZS4gTmVlZCB0byBpbnZl
c3RpZ2F0ZS4KLUJVR0NSNjA2NTEgV0lOIDogZmFzdC9jYW52YXMvd2ViZ2wvZ2wtb2JqZWN0LWdl
dC1jYWxscy5odG1sID0gVElNRU9VVCBQQVNTCitCVUdDUjYwNjUxIFdJTiBDUFUgOiBmYXN0L2Nh
bnZhcy93ZWJnbC9nbC1vYmplY3QtZ2V0LWNhbGxzLmh0bWwgPSBUSU1FT1VUIFBBU1MKIC8vIEJV
R0NSNjA2NTEgV0lOIDogZmFzdC9jYW52YXMvd2ViZ2wvZ2xzbC1jb25mb3JtYW5jZS5odG1sID0g
VElNRU9VVCBGQUlMCiBCVUdDUjYwNjUxIFdJTiA6IGZhc3QvY2FudmFzL3dlYmdsL3VuaWZvcm0t
bG9jYXRpb24uaHRtbCA9IFRJTUVPVVQgQ1JBU0gKLUJVR0NSNjA2NTEgTElOVVggTUFDIDogZmFz
dC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sID0gVEVYVAorQlVHQ1I2MDY1MSBM
SU5VWCBNQUMgQ1BVIDogZmFzdC9jYW52YXMvd2ViZ2wvdW5pZm9ybS1sb2NhdGlvbi5odG1sID0g
VEVYVAogCiBCVUdfQVVUTyBMSU5VWCBXSU4gREVCVUcgOiBhbmltYXRpb25zL3N1c3BlbmQtcmVz
dW1lLWFuaW1hdGlvbi5odG1sID0gUEFTUyBURVhUCiBCVUdfQVVUTyBMSU5VWCBSRUxFQVNFIDog
YW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tb3JpZ2luLXZzLWZ1bmN0aW9ucy5odG1sID0gUEFTUyBU
RVhUCkBAIC0zMTcxLDggKzMxNzEsNyBAQCBXT05URklYIFNLSVAgR1BVIDogZm9udHMgPSBQQVNT
IEZBSUwKIFdPTlRGSVggU0tJUCBHUFUgOiBodG1sNWxpYiA9IFBBU1MgRkFJTAogV09OVEZJWCBT
S0lQIEdQVSA6IGh0dHAgPSBQQVNTIEZBSUwKIFdPTlRGSVggU0tJUCBHUFUgOiBpZXRlc3RjZW50
ZXIgPSBQQVNTIEZBSUwKLVdPTlRGSVggU0tJUCBXSU4gUkVMRUFTRSBHUFUgOiBpbnNwZWN0b3Ig
PSBQQVNTIEZBSUwKLVdPTlRGSVggU0tJUCBXSU4gREVCVUcgU0xPVyBHUFUgOiBpbnNwZWN0b3Ig
PSBQQVNTIEZBSUwKK1dPTlRGSVggU0tJUCBHUFUgOiBpbnNwZWN0b3IgPSBQQVNTIEZBSUwKIFdP
TlRGSVggU0tJUCBHUFUgOiBsb2FkZXIgPSBQQVNTIEZBSUwKIFdPTlRGSVggU0tJUCBHUFUgOiBt
ZWRpYSA9IFBBU1MgRkFJTAogV09OVEZJWCBTS0lQIEdQVSA6IHBlcmYgPSBQQVNTIEZBSUwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggYWNiYWVjMjFj
ZWQxNWI3YmUzZTQ2NTRlNWZkZjY4MDM0NGQyMDc3ZC4uYzM3YmI4OGY1Y2I5YjBhMzU2MjVmMWY3
MTdhOWNjOGI0YWRlZDdiOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3Rh
dGlvbnMucHkKQEAgLTg1MCw4ICs4NTAsMTQgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlmIHByZXZfbnVtX21hdGNoZXMg
PCBudW1fbWF0Y2hlczoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAg
ICAgICAgICAgICAgJ01vcmUgc3BlY2lmaWMgZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGlu
ZSAlZCcgJQorICAgICAgICAgICAgICAgIChsaW5lbm8sIHByZXZfbGluZW5vKSwgdGVzdF9saXN0
X3BhdGgpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAorICAgICAgICBzZWxmLl9hZGRfZXJy
b3IobGluZW5vLAorICAgICAgICAgICAgJ01vcmUgc3BlY2lmaWMgZW50cnkgb24gbGluZSAlZCBv
dmVycmlkZXMgbGluZSAlZCcgJQorICAgICAgICAgICAgKHByZXZfbGluZW5vLCBsaW5lbm8pLCB0
ZXN0X2xpc3RfcGF0aCkKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBfYWRkX2Vycm9y
KHNlbGYsIGxpbmVubywgbXNnLCBwYXRoKToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78609</attachid>
            <date>2011-01-11 15:25:58 -0800</date>
            <delta_ts>2011-01-24 17:38:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51222-20110111152557.patch</filename>
            <type>text/plain</type>
            <size>70652</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5MGI5
Nzg5Y2U5ZDFmNjYzYWNhNzY4OTgxZmYyNDdjNWJhNDMyYWRjLi40OWZlMWFjYWVjZTM1OTQ0NDI3
ODVlNDg2ZTg4YWQ2MDEwOTg4ODAyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDEtMTAgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9kaWZpZXIgcGFyc2luZyBjb2RlIGluIHRl
c3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdpbGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0
J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMKKyAgICAgICAgb3IgZWFzaWx5IGFk
ZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQVSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAg
ICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQgdnMuIDY0LWJpdCBkaWZmZXJlbmNlcyku
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgdHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFk
ZCBpbiBtb3JlIGdlbmVyaWMKKyAgICAgICAgc3VwcG9ydCBhbmQgdGhlbiBlbGltaW5hdGUgdGhl
IEdQVS1zcGVjaWZpYyB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBmaWxlcyBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBzdGFuZGFsb25lIG9iamVjdHMgZm9y
IGhhbmRsaW5nIG1vZGlmaWVycy4gVGhlCisgICAgICAgIHJ1bGVzIGZvciBpbnRlcnByZXRpbmcg
bW9kaWZpZXJzLCBwcmVjZWRlbmNlLCBhbmQgY29uZmxpY3RzIGFyZQorICAgICAgICBnaXZlbiBp
biB0aGUgZG9jc3RyaW5nIHRvIHRoZSBNb2RpZmllck1hdGNoZXIgY2xhc3MsIHdoaWNoCisgICAg
ICAgIHJldHVybnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBvYmplY3RzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgcm91dGluZXMgdG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFu
ZCBhCisgICAgICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVlcyBpbiB0aGUgYmFzZSBvYmplY3QsIGlu
IG9yZGVyIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRl
c3QgcnVuLiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFzc2VkCisgICAgICAgIHRvIHRoZSBleHBl
Y3RhdGlvbiBwYXJzZXIuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gY2xlYW4gdXAgdGhlCisgICAg
ICAgIGxvZ2ljIHVzZWQgdG8gbGludCBhbGwgb2YgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
cyBpbiBhCisgICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmlsZS4KKworICAg
ICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIG1lcmdlIGluIHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0
YXRpb25zIGZpbGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMjIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHk6CisKIDIwMTEtMDEtMTAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJvbGwgb3V0IHI3NTM5MgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0
dGVzdC5weQppbmRleCA5MjgwYjAyNTNkN2MyNWU4NzhjNzMwMTgzZWYxZTllNWE3NjE3MTFkLi5k
MDI3ZTYwMTEyZDRhZThmMGIxNjVkNzA5MmExYzU0YzA5MTJhYjNhIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191
bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQpAQCAtMzEsNyArMzEsNiBAQAogCiBpbXBv
cnQgb3MKIGltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHBkYgogaW1wb3J0IHN5cwogaW1wb3J0IHVu
aXR0ZXN0CiBpbXBvcnQgbG9nZ2luZwpAQCAtMTQ2LDcgKzE0NSw3IEBAIGNsYXNzICBUZXN0cHJp
bnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBpbiB0
ZXN0c10KICAgICAgICAgZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVj
dGF0aW9ucygKICAgICAgICAgICAgIHNlbGYuX3BvcnQsIHRlc3RfcGF0aHMsIGV4cGVjdGF0aW9u
c19zdHIsCi0gICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLCBpc19k
ZWJ1Z19tb2RlPUZhbHNlLAorICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRp
b24oKSwKICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSkKIAogICAgICAgICBycyA9IHJl
c3VsdF9zdW1tYXJ5LlJlc3VsdFN1bW1hcnkoZXhwZWN0YXRpb25zLCB0ZXN0X3BhdGhzKQpAQCAt
MzY1LDcgKzM2NCw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIHRlc3RfcHJpbnRfcHJvZ3Jlc3NfX2RldGFpbGVkKHNlbGYpOgogICAgICAgICB0ZXN0
cyA9IFsncGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwn
LAogICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCddCi0gICAg
ICAgIGV4cGVjdGF0aW9ucyA9ICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1F
T1VUJworICAgICAgICBleHBlY3RhdGlvbnMgPSAnQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rp
bWVvdXQuaHRtbCA9IFRJTUVPVVQnCiAKICAgICAgICAgIyBmaXJzdCwgdGVzdCB0aGF0IGl0IGlz
IGRpc2FibGVkIHByb3Blcmx5CiAgICAgICAgICMgc2hvdWxkIHN0aWxsIHByaW50IG9uZS1saW5l
LXByb2dyZXNzCkBAIC01NzEsOCArNTcwLDggQEAgY2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkKIAogICAg
ICAgICBleHBlY3RhdGlvbnMgPSAiIiIKLWZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBD
UkFTSAotZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVAorQlVHWCA6IGZh
aWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAorQlVHWCA6IGZhaWx1cmVzL2V4cGVj
dGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQKICIiIgogICAgICAgICBlcnIucmVzZXQoKQogICAg
ICAgICBvdXQucmVzZXQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9u
cy5weQppbmRleCA4NjQ1ZmMxZGMxODdkNmRjMDZjZmZlZmM3ZTRiOTg2NmI0ZTUwZTdjLi42MjRj
ZDZiYjU2YWRjZDU3YWUwY2M0ZGYwNDY5NGY3MDkzMGE3MzQ3IDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtMzEsNiArMzEsNyBAQAogZm9yIGxheW91
dCB0ZXN0cy4KICIiIgogCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0
IG9zCiBpbXBvcnQgcmUKQEAgLTg2LDE4ICs4NywxNiBAQCBkZWYgcmVtb3ZlX3BpeGVsX2ZhaWx1
cmVzKGV4cGVjdGVkX3Jlc3VsdHMpOgogY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKICAgICBURVNU
X0xJU1QgPSAidGVzdF9leHBlY3RhdGlvbnMudHh0IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAg
ICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfY29u
ZmlnLAorICAgICAgICAgICAgICAgICBpc19saW50X21vZGUsIG92ZXJyaWRlcz1Ob25lKToKICAg
ICAgICAgIiIiTG9hZHMgYW5kIHBhcnNlcyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZ2l2ZW4gaW4g
dGhlIHN0cmluZy4KICAgICAgICAgQXJnczoKICAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBv
YmplY3QgY29udGFpbmluZyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5CiAgICAgICAg
ICAgICB0ZXN0OiBsaXN0IG9mIGFsbCBvZiB0aGUgdGVzdCBmaWxlcwogICAgICAgICAgICAgZXhw
ZWN0YXRpb25zOiB0ZXN0IGV4cGVjdGF0aW9ucyBhcyBhIHN0cmluZwotICAgICAgICAgICAgdGVz
dF9wbGF0Zm9ybV9uYW1lOiBuYW1lIG9mIHRoZSBwbGF0Zm9ybSB0byBtYXRjaCBleHBlY3RhdGlv
bnMKLSAgICAgICAgICAgICAgICBhZ2FpbnN0LiBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgZGlmZmVy
ZW50IHRoYW4KLSAgICAgICAgICAgICAgICBwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpIHdoZW4g
aXNfbGludF9tb2RlIGlzIFRydWUuCi0gICAgICAgICAgICBpc19kZWJ1Z19tb2RlOiB3aGV0aGVy
IHRvIHVzZSB0aGUgREVCVUcgb3IgUkVMRUFTRSBtb2RpZmllcnMKLSAgICAgICAgICAgICAgICBp
biB0aGUgZXhwZWN0YXRpb25zCisgICAgICAgICAgICB0ZXN0X2NvbmZpZzogc3BlY2lmaWMgdmFs
dWVzIHRvIGNoZWNrIGFnYWluc3Qgd2hlbgorICAgICAgICAgICAgICAgIHBhcnNpbmcgdGhlIGZp
bGUgKHVzdWFsbHkgcG9ydC50ZXN0X2NvbmZpZygpLAorICAgICAgICAgICAgICAgIGJ1dCBtYXkg
YmUgZGlmZmVyZW50IHdoZW4gbGludGluZyBvciBkb2luZyBvdGhlciB0aGluZ3MpLgogICAgICAg
ICAgICAgaXNfbGludF9tb2RlOiBJZiBUcnVlLCBqdXN0IHBhcnNlIHRoZSBleHBlY3RhdGlvbnMg
c3RyaW5nCiAgICAgICAgICAgICAgICAgbG9va2luZyBmb3IgZXJyb3JzLgogICAgICAgICAgICAg
b3ZlcnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIHRvIG92ZXJyaWRl
IGFueQpAQCAtMTA2LDcgKzEwNSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAg
ICAgICAgICAgYW5kIGRvd25zdHJlYW0gZXhwZWN0YXRpb25zKS4KICAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUocG9ydCwg
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgdGVzdHMsIHRlc3RfcGxhdGZvcm1fbmFtZSwgaXNf
ZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLAorICAgICAgICAgICAgdGVzdHMsIHRlc3RfY29uZmln
LCBpc19saW50X21vZGUsCiAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQogCiAgICAg
IyBUT0RPKG9qYW4pOiBBbGxvdyBmb3IgcmVtb3Zpbmcgc2tpcHBlZCB0ZXN0cyB3aGVuIGdldHRp
bmcgdGhlIGxpc3Qgb2YKQEAgLTE5OSw3ICsxOTgsNyBAQCBjbGFzcyBQYXJzZUVycm9yKEV4Y2Vw
dGlvbik6CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obWFwKHN0ciwgc2VsZi5lcnJvcnMpKQog
CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJ1BhcnNlRXJyb3IoZmF0
YWw9JXMsIGVycm9ycz0lcyknICUgKGZhdGFsLCBlcnJvcnMpCisgICAgICAgIHJldHVybiAnUGFy
c2VFcnJvcihmYXRhbD0lcywgZXJyb3JzPSVzKScgJSAoc2VsZi5mYXRhbCwgc2VsZi5lcnJvcnMp
CiAKIAogY2xhc3MgTW9kaWZpZXJzQW5kRXhwZWN0YXRpb25zOgpAQCAtMzA0LDI4ICszMDMsMTQg
QEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAgICAgICAgICAgICdmYWls
JzogRkFJTCwKICAgICAgICAgICAgICAgICAgICAgJ2ZsYWt5JzogRkxBS1l9CiAKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rlc3RfbGlzdCwgdGVzdF9w
bGF0Zm9ybV9uYW1lLAotICAgICAgICBpc19kZWJ1Z19tb2RlLCBpc19saW50X21vZGUsIG92ZXJy
aWRlcz1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIGV4cGVjdGF0aW9uczogQ29udGVudHMg
b2YgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAgICAgIGZ1bGxfdGVzdF9saXN0OiBUaGUgbGlz
dCBvZiBhbGwgdGVzdHMgdG8gYmUgcnVuIHBlbmRpbmcgcHJvY2Vzc2luZyBvZgotICAgICAgICAg
ICAgdGhlIGV4cGVjdGlvbnMgZm9yIHRob3NlIHRlc3RzLgotICAgICAgICB0ZXN0X3BsYXRmb3Jt
X25hbWU6IG5hbWUgb2YgdGhlIHBsYXRmb3JtIHRvIG1hdGNoIGV4cGVjdGF0aW9ucwotICAgICAg
ICAgICAgYWdhaW5zdC4gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGRpZmZlcmVudCB0aGFuCi0gICAg
ICAgICAgICBwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpIHdoZW4gaXNfbGludF9tb2RlIGlzIFRy
dWUuCi0gICAgICAgIGlzX2RlYnVnX21vZGU6IFdoZXRoZXIgd2UgdGVzdGluZyBhIHRlc3Rfc2hl
bGwgYnVpbHQgZGVidWcgbW9kZS4KLSAgICAgICAgaXNfbGludF9tb2RlOiBXaGV0aGVyIHRoaXMg
aXMganVzdCBsaW50aW5nIHRlc3RfZXhwZWNhdGF0aW9ucy50eHQuCi0gICAgICAgIG92ZXJyaWRl
czogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSBhbnkKLSAg
ICAgICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0aW9uc3wuIFRoaXMgaXMgdXNlZCBieSBjYWxs
ZXJzCi0gICAgICAgICAgICB0aGF0IG5lZWQgdG8gbWFuYWdlIHR3byBzZXRzIG9mIGV4cGVjdGF0
aW9ucyAoZS5nLiwgdXBzdHJlYW0KLSAgICAgICAgICAgIGFuZCBkb3duc3RyZWFtIGV4cGVjdGF0
aW9ucykuCi0gICAgICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBleHBlY3Rh
dGlvbnMsIGZ1bGxfdGVzdF9saXN0LAorICAgICAgICAgICAgICAgICB0ZXN0X2NvbmZpZywgaXNf
bGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6CisgICAgICAgICMgU2VlIGFyZ3VtZW50IGRvY3Vt
ZW50YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9uKCksIGFib3ZlLgogCiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IGV4cGVjdGF0aW9ucwogICAg
ICAgICBzZWxmLl9mdWxsX3Rlc3RfbGlzdCA9IGZ1bGxfdGVzdF9saXN0Ci0gICAgICAgIHNlbGYu
X3Rlc3RfcGxhdGZvcm1fbmFtZSA9IHRlc3RfcGxhdGZvcm1fbmFtZQotICAgICAgICBzZWxmLl9p
c19kZWJ1Z19tb2RlID0gaXNfZGVidWdfbW9kZQorICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZyA9
IHRlc3RfY29uZmlnCiAgICAgICAgIHNlbGYuX2lzX2xpbnRfbW9kZSA9IGlzX2xpbnRfbW9kZQog
ICAgICAgICBzZWxmLl9vdmVycmlkZXMgPSBvdmVycmlkZXMKICAgICAgICAgc2VsZi5fZXJyb3Jz
ID0gW10KQEAgLTMzMyw3ICszMTgsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAog
ICAgICAgICAjIE1hcHMgcmVsYXRpdmUgdGVzdCBwYXRocyBhcyBsaXN0ZWQgaW4gdGhlIGV4cGVj
dGF0aW9ucyBmaWxlIHRvIGEKICAgICAgICAgIyBsaXN0IG9mIG1hcHMgY29udGFpbmluZyBtb2Rp
ZmllcnMgYW5kIGV4cGVjdGF0aW9ucyBmb3IgZWFjaCB0aW1lCi0gICAgICAgICMgdGhlIHRlc3Qg
aXMgbGlzdGVkIGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZS4KKyAgICAgICAgIyB0aGUgdGVzdCBp
cyBsaXN0ZWQgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxlLiBXZSB1c2UgdGhpcyB0bworICAgICAg
ICAjIGtlZXAgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW50aXJlIGxpc3Qgb2YgZXhwZWN0YXRp
b25zLCBldmVuCisgICAgICAgICMgaW52YWxpZCBvbmVzLgogICAgICAgICBzZWxmLl9hbGxfZXhw
ZWN0YXRpb25zID0ge30KIAogICAgICAgICAjIE1hcHMgYSB0ZXN0IHRvIGl0cyBsaXN0IG9mIGV4
cGVjdGF0aW9ucy4KQEAgLTM0Niw3ICszMzMsOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmls
ZToKICAgICAgICAgIyB0aGUgb3B0aW9ucyBtaW51cyBhbnkgYnVnIG9yIHBsYXRmb3JtIHN0cmlu
Z3MKICAgICAgICAgc2VsZi5fdGVzdF90b19tb2RpZmllcnMgPSB7fQogCi0gICAgICAgICMgTWFw
cyBhIHRlc3QgdG8gdGhlIGJhc2UgcGF0aCB0aGF0IGl0IHdhcyBsaXN0ZWQgd2l0aCBpbiB0aGUg
bGlzdC4KKyAgICAgICAgIyBNYXBzIGEgdGVzdCB0byB0aGUgYmFzZSBwYXRoIHRoYXQgaXQgd2Fz
IGxpc3RlZCB3aXRoIGluIHRoZSBsaXN0IGFuZAorICAgICAgICAjIHRoZSBudW1iZXIgb2YgbWF0
Y2hlcyB0aGF0IGJhc2UgcGF0aCBoYWQuCiAgICAgICAgIHNlbGYuX3Rlc3RfbGlzdF9wYXRocyA9
IHt9CiAKICAgICAgICAgc2VsZi5fbW9kaWZpZXJfdG9fdGVzdHMgPSBzZWxmLl9kaWN0X29mX3Nl
dHMoc2VsZi5NT0RJRklFUlMpCkBAIC0zNzMsMTMgKzM2MSw3IEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNGaWxlOgogCiAgICAgZGVmIF9oYW5kbGVfYW55X3JlYWRfZXJyb3JzKHNlbGYpOgogICAg
ICAgICBpZiBsZW4oc2VsZi5fZXJyb3JzKSBvciBsZW4oc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycyk6
Ci0gICAgICAgICAgICBpZiBzZWxmLl9pc19kZWJ1Z19tb2RlOgotICAgICAgICAgICAgICAgIGJ1
aWxkX3R5cGUgPSAnREVCVUcnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1
aWxkX3R5cGUgPSAnUkVMRUFTRScKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAg
ICAgICBfbG9nLmVycm9yKCJGQUlMVVJFUyBGT1IgUExBVEZPUk06ICVzLCBCVUlMRF9UWVBFOiAl
cyIgJQotICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lLnVw
cGVyKCksIGJ1aWxkX3R5cGUpKQorICAgICAgICAgICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9S
ICVzIiAlIHN0cihzZWxmLl90ZXN0X2NvbmZpZykpCiAKICAgICAgICAgICAgIGZvciBlcnJvciBp
biBzZWxmLl9lcnJvcnM6CiAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikKQEAgLTM5
NSwxMSArMzc3LDEyIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICBleHBl
Y3RhdGlvbnMgPSBzZXQoW1BBU1NdKQogICAgICAgICBvcHRpb25zID0gW10KICAgICAgICAgbW9k
aWZpZXJzID0gW10KKyAgICAgICAgbnVtX21hdGNoZXMgPSAwCiAgICAgICAgIGlmIHNlbGYuX2Z1
bGxfdGVzdF9saXN0OgogICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5fZnVsbF90ZXN0X2xp
c3Q6CiAgICAgICAgICAgICAgICAgaWYgbm90IHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0X3BhdGhz
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmllcnMsIGV4
cGVjdGF0aW9ucywgb3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19h
bGxvd2VkPUZhbHNlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBt
b2RpZmllcnMsIG51bV9tYXRjaGVzLCBleHBlY3RhdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNlKQogCiAgICAg
ZGVmIF9kaWN0X29mX3NldHMoc2VsZiwgc3RyaW5nc190b19jb25zdGFudHMpOgogICAgICAgICAi
IiJUYWtlcyBhIGRpY3Qgb2Ygc3RyaW5ncy0+Y29uc3RhbnRzIGFuZCByZXR1cm5zIGEgZGljdCBt
YXBwaW5nCkBAIC01MzgsMTIgKzUyMSwxNSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
IAogICAgICAgICBvcHRpb25zID0gW10KICAgICAgICAgaWYgbGluZS5maW5kKCI6IikgaXMgLTE6
Ci0gICAgICAgICAgICB0ZXN0X2FuZF9leHBlY3RhdGlvbiA9IGxpbmUuc3BsaXQoIj0iKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCI6IikKLSAgICAgICAg
ICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9uc19saXN0KHBhcnRzWzBdKQotICAgICAgICAg
ICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0c1sxXS5zcGxpdCgnPScpCisgICAgICAgICAg
ICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAiTWlzc2luZyBhICc6JyIsIGxpbmUpCisgICAgICAg
ICAgICByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpCisKKyAgICAgICAgcGFydHMgPSBsaW5lLnNw
bGl0KCc6JykKIAorICAgICAgICAjIEZJWE1FOiB2ZXJpZnkgdGhhdCB0aGVyZSBpcyBleGFjdGx5
IG9uZSBjb2xvbiBpbiB0aGUgbGluZS4KKworICAgICAgICBvcHRpb25zID0gc2VsZi5fZ2V0X29w
dGlvbnNfbGlzdChwYXJ0c1swXSkKKyAgICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0
c1sxXS5zcGxpdCgnPScpCiAgICAgICAgIHRlc3QgPSB0ZXN0X2FuZF9leHBlY3RhdGlvblswXS5z
dHJpcCgpCiAgICAgICAgIGlmIChsZW4odGVzdF9hbmRfZXhwZWN0YXRpb24pIGlzIG5vdCAyKToK
ICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICJNaXNzaW5nIGV4cGVjdGF0aW9u
cy4iLApAQCAtNTg5LDY5ICs1NzUsNiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAog
ICAgICAgICByZXR1cm4gUkVNT1ZFX1RFU1QKIAotICAgIGRlZiBfaGFzX3ZhbGlkX21vZGlmaWVy
c19mb3JfY3VycmVudF9wbGF0Zm9ybShzZWxmLCBvcHRpb25zLCBsaW5lbm8sCi0gICAgICAgIHRl
c3RfYW5kX2V4cGVjdGF0aW9ucywgbW9kaWZpZXJzKToKLSAgICAgICAgIiIiUmV0dXJucyB0cnVl
IGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIGluIHRoZSBvcHRpb25zIGxpc3Qgb3IgaWYKLSAg
ICAgICAgbm8gcGxhdGZvcm1zIGFyZSBsaXN0ZWQgYW5kIGlmIHRoZXJlIGFyZSBubyBmYXRhbCBl
cnJvcnMgaW4gdGhlCi0gICAgICAgIG9wdGlvbnMgbGlzdC4KLQotICAgICAgICBBcmdzOgotICAg
ICAgICAgIG9wdGlvbnM6IExpc3Qgb2YgbG93ZXJjYXNlIG9wdGlvbnMuCi0gICAgICAgICAgbGlu
ZW5vOiBUaGUgbGluZSBpbiB0aGUgZmlsZSB3aGVyZSB0aGUgdGVzdCBpcyBsaXN0ZWQuCi0gICAg
ICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb25zOiBUaGUgcGF0aCBhbmQgZXhwZWN0YXRpb25zIGZv
ciB0aGUgdGVzdC4KLSAgICAgICAgICBtb2RpZmllcnM6IFRoZSBzZXQgdG8gcG9wdWxhdGUgd2l0
aCBtb2RpZmllcnMuCi0gICAgICAgICIiIgotICAgICAgICBoYXNfYW55X3BsYXRmb3JtID0gRmFs
c2UKLSAgICAgICAgaGFzX2J1Z19pZCA9IEZhbHNlCi0gICAgICAgIGZvciBvcHRpb24gaW4gb3B0
aW9uczoKLSAgICAgICAgICAgIGlmIG9wdGlvbiBpbiBzZWxmLk1PRElGSUVSUzoKLSAgICAgICAg
ICAgICAgICBtb2RpZmllcnMuYWRkKG9wdGlvbikKLSAgICAgICAgICAgIGVsaWYgb3B0aW9uIGlu
IHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lcygpOgotICAgICAgICAgICAgICAgIGhhc19h
bnlfcGxhdGZvcm0gPSBUcnVlCi0gICAgICAgICAgICBlbGlmIHJlLm1hdGNoKHInYnVnXGQnLCBv
cHRpb24pICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywg
J0J1ZyBtdXN0IGJlIGVpdGhlciBCVUdDUiwgQlVHV0ssIG9yIEJVR1Y4XyBmb3IgdGVzdDogJXMn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLCB0ZXN0X2FuZF9leHBl
Y3RhdGlvbnMpCi0gICAgICAgICAgICBlbGlmIG9wdGlvbi5zdGFydHN3aXRoKCdidWcnKToKLSAg
ICAgICAgICAgICAgICBoYXNfYnVnX2lkID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiBvcHRpb24g
bm90IGluIHNlbGYuQlVJTERfVFlQRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9y
KGxpbmVubywgJ0ludmFsaWQgbW9kaWZpZXIgZm9yIHRlc3Q6ICVzJyAlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdGVzdF9hbmRfZXhwZWN0YXRpb25zKQotCi0gICAg
ICAgIGlmIGhhc19hbnlfcGxhdGZvcm0gYW5kIG5vdCBzZWxmLl9tYXRjaF9wbGF0Zm9ybShvcHRp
b25zKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGlmIG5vdCBoYXNfYnVn
X2lkIGFuZCAnd29udGZpeCcgbm90IGluIG9wdGlvbnM6Ci0gICAgICAgICAgICAjIFRPRE8ob2ph
bik6IFR1cm4gdGhpcyBpbnRvIGFuIEFkZEVycm9yIGNhbGwgb25jZSBhbGwgdGhlCi0gICAgICAg
ICAgICAjIHRlc3RzIGhhdmUgQlVHIGlkZW50aWZpZXJzLgotICAgICAgICAgICAgc2VsZi5fbG9n
X25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdUZXN0IGxhY2tzIEJVRyBtb2RpZmllci4nLAotICAg
ICAgICAgICAgICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9ucykKLQotICAgICAgICBpZiAncmVsZWFz
ZScgaW4gb3B0aW9ucyBvciAnZGVidWcnIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBpZiBzZWxm
Ll9pc19kZWJ1Z19tb2RlIGFuZCAnZGVidWcnIG5vdCBpbiBvcHRpb25zOgotICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2lzX2RlYnVnX21vZGUg
YW5kICdyZWxlYXNlJyBub3QgaW4gb3B0aW9uczoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICBpZiBzZWxmLl9pc19saW50X21vZGUgYW5kICdyZWJhc2VsaW5lJyBpbiBv
cHRpb25zOgotICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKLSAgICAgICAgICAg
ICAgICAnUkVCQVNFTElORSBzaG91bGQgb25seSBiZSB1c2VkIGZvciBydW5uaW5nIHJlYmFzZWxp
bmUucHkuICcKLSAgICAgICAgICAgICAgICAnQ2Fubm90IGJlIGNoZWNrZWQgaW4uJywgdGVzdF9h
bmRfZXhwZWN0YXRpb25zKQotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX21hdGNo
X3BsYXRmb3JtKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICAiIiJNYXRjaCB0aGUgbGlzdCBvZiBv
cHRpb25zIGFnYWluc3Qgb3VyIHNwZWNpZmllZCBwbGF0Zm9ybS4gSWYgYW55Ci0gICAgICAgIG9m
IHRoZSBvcHRpb25zIHByZWZpeC1tYXRjaCBzZWxmLl9wbGF0Zm9ybSwgcmV0dXJuIFRydWUuIFRo
aXMgaGFuZGxlcwotICAgICAgICB0aGUgY2FzZSB3aGVyZSBhIHRlc3QgaXMgbWFya2VkIFdJTiBh
bmQgdGhlIHBsYXRmb3JtIGlzIFdJTi1WSVNUQS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
IG9wdGlvbnM6IGxpc3Qgb2Ygb3B0aW9ucwotICAgICAgICAiIiIKLSAgICAgICAgZm9yIG9wdCBp
biBvcHRpb25zOgotICAgICAgICAgICAgaWYgc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lLnN0YXJ0
c3dpdGgob3B0KToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4g
RmFsc2UKLQogICAgIGRlZiBfYWRkX3RvX2FsbF9leHBlY3RhdGlvbnMoc2VsZiwgdGVzdCwgb3B0
aW9ucywgZXhwZWN0YXRpb25zKToKICAgICAgICAgIyBNYWtlIGFsbCBwYXRocyB1bml4LXN0eWxl
IHNvIHRoZSBkYXNoYm9hcmQgZG9lc24ndCBuZWVkIHRvLgogICAgICAgICB0ZXN0ID0gdGVzdC5y
ZXBsYWNlKCdcXCcsICcvJykKQEAgLTY2NCw1NCArNTg3LDQzIEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNGaWxlOgogICAgICAgICAiIiJGb3IgZWFjaCB0ZXN0IGluIGFuIGV4cGVjdGF0aW9ucyBp
dGVyYWJsZSwgZ2VuZXJhdGUgdGhlCiAgICAgICAgIGV4cGVjdGF0aW9ucyBmb3IgaXQuIiIiCiAg
ICAgICAgIGxpbmVubyA9IDAKKyAgICAgICAgbWF0Y2hlciA9IE1vZGlmaWVyTWF0Y2hlcihzZWxm
Ll90ZXN0X2NvbmZpZykKICAgICAgICAgZm9yIGxpbmUgaW4gZXhwZWN0YXRpb25zOgogICAgICAg
ICAgICAgbGluZW5vICs9IDEKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfbGluZShsaW5lLCBs
aW5lbm8sIG1hdGNoZXIsIG92ZXJyaWRlc19hbGxvd2VkKQogCi0gICAgICAgICAgICB0ZXN0X2xp
c3RfcGF0aCwgb3B0aW9ucywgZXhwZWN0YXRpb25zID0gXAotICAgICAgICAgICAgICAgIHNlbGYu
cGFyc2VfZXhwZWN0YXRpb25zX2xpbmUobGluZSwgbGluZW5vKQotICAgICAgICAgICAgaWYgbm90
IGV4cGVjdGF0aW9uczoKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgIGRlZiBfcHJvY2Vz
c19saW5lKHNlbGYsIGxpbmUsIGxpbmVubywgbWF0Y2hlciwgb3ZlcnJpZGVzX2FsbG93ZWQpOgor
ICAgICAgICB0ZXN0X2xpc3RfcGF0aCwgb3B0aW9ucywgZXhwZWN0YXRpb25zID0gXAorICAgICAg
ICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnNfbGluZShsaW5lLCBsaW5lbm8pCisgICAgICAg
IGlmIG5vdCBleHBlY3RhdGlvbnM6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAg
c2VsZi5fYWRkX3RvX2FsbF9leHBlY3RhdGlvbnModGVzdF9saXN0X3BhdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIuam9pbihvcHRpb25zKS51cHBlcigp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4oZXhw
ZWN0YXRpb25zKS51cHBlcigpKQorICAgICAgICBzZWxmLl9hZGRfdG9fYWxsX2V4cGVjdGF0aW9u
cyh0ZXN0X2xpc3RfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICIuam9pbihvcHRpb25zKS51cHBlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgIi5qb2luKGV4cGVjdGF0aW9ucykudXBwZXIoKSkKIAotICAgICAgICAg
ICAgbW9kaWZpZXJzID0gc2V0KCkKLSAgICAgICAgICAgIGlmIG9wdGlvbnMgYW5kIG5vdCBzZWxm
Ll9oYXNfdmFsaWRfbW9kaWZpZXJzX2Zvcl9jdXJyZW50X3BsYXRmb3JtKAotICAgICAgICAgICAg
ICAgIG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgsIG1vZGlmaWVycyk6Ci0gICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgbnVtX21hdGNoZXMgPSBzZWxmLl9jaGVja19vcHRp
b25zKG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBpZiBudW1fbWF0Y2hlcyA9
PSBNb2RpZmllck1hdGNoZXIuTk9fTUFUQ0g6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAg
ICAgICAgZXhwZWN0YXRpb25zID0gc2VsZi5fcGFyc2VfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9u
cywgbGluZW5vLAotICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBleHBl
Y3RhdGlvbnMgPSBzZWxmLl9wYXJzZV9leHBlY3RhdGlvbnMoZXhwZWN0YXRpb25zLCBsaW5lbm8s
CisgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKIAotICAgICAgICAgICAgaWYgJ3Nsb3cnIGlu
IG9wdGlvbnMgYW5kIFRJTUVPVVQgaW4gZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgICAgIHNl
bGYuX2FkZF9lcnJvcihsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICdBIHRlc3QgY2FuIG5v
dCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuIElmIGl0IHRpbWVzIG91dCAnCi0gICAgICAgICAg
ICAgICAgICAgICdpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxkIGJlIGp1c3QgdGltZW91dC4n
LAotICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgc2VsZi5fY2hl
Y2tfb3B0aW9uc19hZ2FpbnN0X2V4cGVjdGF0aW9ucyhvcHRpb25zLCBleHBlY3RhdGlvbnMsCisg
ICAgICAgICAgICBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKQogCi0gICAgICAgICAgICBmdWxsX3Bh
dGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAg
ICBmdWxsX3BhdGggPSBvcy5wYXRoLm5vcm1wYXRoKGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICMg
V2ViS2l0J3Mgd2F5IG9mIHNraXBwaW5nIHRlc3RzIGlzIHRvIGFkZCBhIC1kaXNhYmxlZCBzdWZm
aXguCi0gICAgICAgICAgICAjIFNvIHdlIHNob3VsZCBjb25zaWRlciB0aGUgcGF0aCBleGlzdGlu
ZyBpZiB0aGUgcGF0aCBvciB0aGUKLSAgICAgICAgICAgICMgLWRpc2FibGVkIHZlcnNpb24gZXhp
c3RzLgotICAgICAgICAgICAgaWYgKG5vdCBzZWxmLl9wb3J0LnBhdGhfZXhpc3RzKGZ1bGxfcGF0
aCkKLSAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuX3BvcnQucGF0aF9leGlzdHMoZnVsbF9w
YXRoICsgJy1kaXNhYmxlZCcpKToKLSAgICAgICAgICAgICAgICAjIExvZyBhIG5vbiBmYXRhbCBl
cnJvciBoZXJlIHNpbmNlIHlvdSBoaXQgdGhpcyBjYXNlIGFueQotICAgICAgICAgICAgICAgICMg
dGltZSB5b3UgdXBkYXRlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCB3aXRob3V0IHN5bmNpbmcKLSAg
ICAgICAgICAgICAgICAjIHRoZSBMYXlvdXRUZXN0cyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1BhdGggZG9lcyBub3QgZXhpc3Qu
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRo
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHNlbGYuX2NoZWNrX3BhdGhf
ZG9lc19ub3RfZXhpc3QobGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgICAgICByZXR1
cm4KIAotICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Z1bGxfdGVzdF9saXN0OgotICAgICAgICAg
ICAgICAgIHRlc3RzID0gW3Rlc3RfbGlzdF9wYXRoXQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2V4cGFuZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkKKyAg
ICAgICAgaWYgbm90IHNlbGYuX2Z1bGxfdGVzdF9saXN0OgorICAgICAgICAgICAgdGVzdHMgPSBb
dGVzdF9saXN0X3BhdGhdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZXN0cyA9IHNlbGYu
X2V4cGFuZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkKIAotICAgICAgICAgICAgc2VsZi5fYWRkX3Rl
c3RzKHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2Vk
KQorICAgICAgICBtb2RpZmllcnMgPSBbbyBmb3IgbyBpbiBvcHRpb25zIGlmIG8gaW4gc2VsZi5N
T0RJRklFUlNdCisgICAgICAgIHNlbGYuX2FkZF90ZXN0cyh0ZXN0cywgZXhwZWN0YXRpb25zLCB0
ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJz
LCBudW1fbWF0Y2hlcywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpCiAKICAgICBkZWYgX2dl
dF9vcHRpb25zX2xpc3Qoc2VsZiwgbGlzdFN0cmluZyk6CiAgICAgICAgIHJldHVybiBbcGFydC5z
dHJpcCgpLmxvd2VyKCkgZm9yIHBhcnQgaW4gbGlzdFN0cmluZy5zdHJpcCgpLnNwbGl0KCcgJyld
CkBAIC03MjcsNiArNjM5LDY2IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAg
ICAgICAgcmVzdWx0LmFkZChleHBlY3RhdGlvbikKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisg
ICAgZGVmIF9jaGVja19vcHRpb25zKHNlbGYsIG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywgdGVz
dF9saXN0X3BhdGgpOgorICAgICAgICBtYXRjaF9yZXN1bHQgPSBzZWxmLl9jaGVja19zeW50YXgo
bWF0Y2hlciwgb3B0aW9ucywgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIHNlbGYuX2NoZWNrX3NlbWFudGlj
cyhvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICByZXR1cm4gbWF0Y2hf
cmVzdWx0Lm51bV9tYXRjaGVzCisKKyAgICBkZWYgX2NoZWNrX3N5bnRheChzZWxmLCBtYXRjaGVy
LCBvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgbWF0Y2hfcmVzdWx0
ID0gbWF0Y2hlci5tYXRjaChvcHRpb25zKQorICAgICAgICBmb3IgZXJyb3IgaW4gbWF0Y2hfcmVz
dWx0LmVycm9yczoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sIGVycm9yLCB0
ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZm9yIHdhcm5pbmcgaW4gbWF0Y2hfcmVzdWx0Lndhcm5p
bmdzOgorICAgICAgICAgICAgc2VsZi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sIHdhcm5p
bmcsIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICByZXR1cm4gbWF0Y2hfcmVzdWx0CisKKyAgICBk
ZWYgX2NoZWNrX3NlbWFudGljcyhzZWxmLCBvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRo
KToKKyAgICAgICAgaGFzX3dvbnRmaXggPSAnd29udGZpeCcgaW4gb3B0aW9ucworICAgICAgICBo
YXNfYnVnID0gRmFsc2UKKyAgICAgICAgZm9yIG9wdCBpbiBvcHRpb25zOgorICAgICAgICAgICAg
aWYgb3B0LnN0YXJ0c3dpdGgoJ2J1ZycpOgorICAgICAgICAgICAgICAgIGhhc19idWcgPSBUcnVl
CisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goJ2J1Z1xkKycsIG9wdCk6CisgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAnQlVHXGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0IGJlIG9uZSBvZiAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAnQlVHQ1JcZCssIEJVR1dLXGQrLCBCVUdWOF9cZCssICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdvciBhIG5vbi1udW1lcmljIGJ1ZyBpZGVudGlmaWVyLicsIHRlc3RfbGlz
dF9wYXRoKQorCisgICAgICAgIGlmIG5vdCBoYXNfYnVnIGFuZCBub3QgaGFzX3dvbnRmaXg6Cisg
ICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1Rlc3QgbGFja3Mg
QlVHIG1vZGlmaWVyLicsCisgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKworICAgICAgICBp
ZiBzZWxmLl9pc19saW50X21vZGUgYW5kICdyZWJhc2VsaW5lJyBpbiBvcHRpb25zOgorICAgICAg
ICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAgICAgICAgICAgICdSRUJBU0VMSU5FIHNo
b3VsZCBvbmx5IGJlIHVzZWQgZm9yIHJ1bm5pbmcgcmViYXNlbGluZS5weS4gJworICAgICAgICAg
ICAgJ0Nhbm5vdCBiZSBjaGVja2VkIGluLicsIHRlc3RfbGlzdF9wYXRoKQorCisgICAgZGVmIF9j
aGVja19vcHRpb25zX2FnYWluc3RfZXhwZWN0YXRpb25zKHNlbGYsIG9wdGlvbnMsIGV4cGVjdGF0
aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5v
LCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIGlmICdzbG93JyBpbiBvcHRpb25zIGFuZCBUSU1F
T1VUIGluIGV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8s
CisgICAgICAgICAgICAgICAgJ0EgdGVzdCBjYW4gbm90IGJlIGJvdGggc2xvdyBhbmQgdGltZW91
dC4gSWYgaXQgdGltZXMgb3V0ICcKKyAgICAgICAgICAgICAgICAnaW5kZWZpbml0ZWx5LCB0aGVu
IGl0IHNob3VsZCBiZSBqdXN0IHRpbWVvdXQuJywKKyAgICAgICAgICAgICAgICB0ZXN0X2xpc3Rf
cGF0aCkKKworICAgIGRlZiBfY2hlY2tfcGF0aF9kb2VzX25vdF9leGlzdChzZWxmLCBsaW5lbm8s
IHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYu
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGgubm9ybXBh
dGgoZnVsbF9wYXRoKQorICAgICAgICAjIFdlYktpdCdzIHdheSBvZiBza2lwcGluZyB0ZXN0cyBp
cyB0byBhZGQgYSAtZGlzYWJsZWQgc3VmZml4LgorICAgICAgICAgICAgIyBTbyB3ZSBzaG91bGQg
Y29uc2lkZXIgdGhlIHBhdGggZXhpc3RpbmcgaWYgdGhlIHBhdGggb3IgdGhlCisgICAgICAgICMg
LWRpc2FibGVkIHZlcnNpb24gZXhpc3RzLgorICAgICAgICBpZiAobm90IHNlbGYuX3BvcnQucGF0
aF9leGlzdHMoZnVsbF9wYXRoKQorICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9wb3J0LnBhdGhf
ZXhpc3RzKGZ1bGxfcGF0aCArICctZGlzYWJsZWQnKSk6CisgICAgICAgICAgICAjIExvZyBhIG5v
biBmYXRhbCBlcnJvciBoZXJlIHNpbmNlIHlvdSBoaXQgdGhpcyBjYXNlIGFueQorICAgICAgICAg
ICAgIyB0aW1lIHlvdSB1cGRhdGUgdGVzdF9leHBlY3RhdGlvbnMudHh0IHdpdGhvdXQgc3luY2lu
ZworICAgICAgICAgICAgIyB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5CisgICAgICAgICAgICBz
ZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1BhdGggZG9lcyBub3QgZXhpc3QuJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAg
ICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgX2V4
cGFuZF90ZXN0cyhzZWxmLCB0ZXN0X2xpc3RfcGF0aCk6CiAgICAgICAgICIiIkNvbnZlcnQgdGhl
IHRlc3Qgc3BlY2lmaWNhdGlvbiB0byBhbiBhYnNvbHV0ZSwgbm9ybWFsaXplZAogICAgICAgICBw
YXRoIGFuZCBtYWtlIHN1cmUgZGlyZWN0b3JpZXMgZW5kIHdpdGggdGhlIE9TIHBhdGggc2VwYXJh
dG9yLiIiIgpAQCAtNzUyLDE3ICs3MjQsMTkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3Rz
LCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAg
ICAgbW9kaWZpZXJzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgICAgICAg
ICAgICAgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQp
OgogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgIGlmIHNlbGYuX2FscmVh
ZHlfc2Vlbl90ZXN0KHRlc3QsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgICAg
ICBpZiBzZWxmLl9hbHJlYWR5X3NlZW5fYmV0dGVyX21hdGNoKHRlc3QsIHRlc3RfbGlzdF9wYXRo
LAorICAgICAgICAgICAgICAgIG51bV9tYXRjaGVzLCBsaW5lbm8sIG92ZXJyaWRlc19hbGxvd2Vk
KToKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBzZWxmLl9jbGVhcl9l
eHBlY3RhdGlvbnNfZm9yX3Rlc3QodGVzdCwgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAgICBz
ZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmllcnMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucywKKyAg
ICAgICAgICAgIHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IChvcy5wYXRoLm5vcm1wYXRo
KHRlc3RfbGlzdF9wYXRoKSwKKyAgICAgICAgICAgICAgICBudW1fbWF0Y2hlcywgbGluZW5vKQor
ICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywg
ZXhwZWN0YXRpb25zLCBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJp
ZGVzX2FsbG93ZWQpCiAKLSAgICBkZWYgX2FkZF90ZXN0KHNlbGYsIHRlc3QsIG1vZGlmaWVycywg
ZXhwZWN0YXRpb25zLCBvcHRpb25zLAorICAgIGRlZiBfYWRkX3Rlc3Qoc2VsZiwgdGVzdCwgbW9k
aWZpZXJzLCBudW1fbWF0Y2hlcywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAogICAgICAgICAgICAg
ICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICAiIiJTZXRzIHRoZSBleHBlY3RlZCBz
dGF0ZSBmb3IgYSBnaXZlbiB0ZXN0LgogCkBAIC03NzMsNiArNzQ3LDcgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgdGVzdDogdGVzdCB0byBh
ZGQKICAgICAgICAgICBtb2RpZmllcnM6IHNlcXVlbmNlIG9mIG1vZGlmaWVyIGtleXdvcmRzICgn
d29udGZpeCcsICdzbG93JywgZXRjLikKKyAgICAgICAgICBudW1fbWF0Y2hlczogbnVtYmVyIG9m
IG1vZGlmaWVycyB0aGF0IG1hdGNoZWQgdGhlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICBleHBl
Y3RhdGlvbnM6IHNlcXVlbmNlIG9mIGV4cGVjdGF0aW9ucyAoUEFTUywgSU1BR0UsIGV0Yy4pCiAg
ICAgICAgICAgb3B0aW9uczogc2VxdWVuY2Ugb2Yga2V5d29yZHMgYW5kIGJ1ZyBpZGVudGlmaWVy
cy4KICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZDogd2hldGhlciB3ZSdyZSBwYXJzaW5nIHRo
ZSByZWd1bGFyIGV4cGVjdGF0aW9ucwpAQCAtODExLDEzICs3ODYsMTMgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIHRoYW4gYSBwcmV2aW91cyBsaXN0aW5nLgogICAgICAg
ICAiIiIKICAgICAgICAgaWYgdGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6Ci0gICAgICAg
ICAgICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9ucy5wb3AodGVzdCwgJycpCi0gICAgICAgICAg
ICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX2V4cGVjdGF0aW9uX3RvX3Rlc3Rz
KQotICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl9tb2RpZmll
cl90b190ZXN0cykKLSAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2Vs
Zi5fdGltZWxpbmVfdG9fdGVzdHMpCi0gICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRz
KHRlc3QsIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzKQorICAgICAgICAgICAgYmFzZV9wYXRo
ID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdWzBdCisgICAgICAgICAgICBzZWxmLl90ZXN0
X3RvX2V4cGVjdGF0aW9ucy5wb3AoYmFzZV9wYXRoLCAnJykKKyAgICAgICAgICAgIHNlbGYuX3Jl
bW92ZV9mcm9tX3NldHMoYmFzZV9wYXRoLCBzZWxmLl9leHBlY3RhdGlvbl90b190ZXN0cykKKyAg
ICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHMoYmFzZV9wYXRoLCBzZWxmLl9tb2RpZmll
cl90b190ZXN0cykKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHMoYmFzZV9wYXRo
LCBzZWxmLl90aW1lbGluZV90b190ZXN0cykKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9t
X3NldHMoYmFzZV9wYXRoLCBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0cykKIAotICAgICAgICBz
ZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0gPSBvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9w
YXRoKQogCiAgICAgZGVmIF9yZW1vdmVfZnJvbV9zZXRzKHNlbGYsIHRlc3QsIGRpY3QpOgogICAg
ICAgICAiIiJSZW1vdmVzIHRoZSBnaXZlbiB0ZXN0IGZyb20gdGhlIHNldHMgaW4gdGhlIGRpY3Rp
b25hcnkuCkBAIC04MjksMzIgKzgwNCw3MCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
ICAgICAgICAgICAgIGlmIHRlc3QgaW4gc2V0X29mX3Rlc3RzOgogICAgICAgICAgICAgICAgIHNl
dF9vZl90ZXN0cy5yZW1vdmUodGVzdCkKIAotICAgIGRlZiBfYWxyZWFkeV9zZWVuX3Rlc3Qoc2Vs
ZiwgdGVzdCwgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFsbG93X292ZXJyaWRlcyk6Ci0gICAgICAgICIiIlJldHVybnMgdHJ1ZSBpZiB3ZSd2ZSBh
bHJlYWR5IHNlZW4gYSBtb3JlIHByZWNpc2UgcGF0aCBmb3IgdGhpcyB0ZXN0Ci0gICAgICAgIHRo
YW4gdGhlIHRlc3RfbGlzdF9wYXRoLgorICAgIGRlZiBfYWxyZWFkeV9zZWVuX2JldHRlcl9tYXRj
aChzZWxmLCB0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbnVtX21hdGNoZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAg
ICAiIiJSZXR1cm5zIHdoZXRoZXIgd2UndmUgc2VlbiBhIGJldHRlciBtYXRjaCBhbHJlYWR5IGlu
IHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiB3ZSd2ZSBhbHJlYWR5IHNlZW4g
YSB0ZXN0X2xpc3RfcGF0aCB0aGF0IG1hdGNoZXMgbW9yZSBvZiB0aGUgdGVzdAorICAgICAgICAg
ICAgdGhhbiB0aGlzIHBhdGggZG9lcwogICAgICAgICAiIiIKKyAgICAgICAgIyBGSVhNRTogU2Vl
IGNvbW1lbnQgYmVsb3cgYWJvdXQgbWF0Y2hpbmcgdGVzdCBjb25maWdzIGFuZCBudW1fbWF0Y2hl
cy4KKwogICAgICAgICBpZiBub3QgdGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6CisgICAg
ICAgICAgICAjIFdlJ3ZlIG5ldmVyIHNlZW4gdGhpcyB0ZXN0IGJlZm9yZS4KICAgICAgICAgICAg
IHJldHVybiBGYWxzZQogCi0gICAgICAgIHByZXZfYmFzZV9wYXRoID0gc2VsZi5fdGVzdF9saXN0
X3BhdGhzW3Rlc3RdCi0gICAgICAgIGlmIChwcmV2X2Jhc2VfcGF0aCA9PSBvcy5wYXRoLm5vcm1w
YXRoKHRlc3RfbGlzdF9wYXRoKSk6Ci0gICAgICAgICAgICBpZiAobm90IGFsbG93X292ZXJyaWRl
cyBvciB0ZXN0IGluIHNlbGYuX292ZXJyaWRkaW5nX3Rlc3RzKToKLSAgICAgICAgICAgICAgICBp
ZiBhbGxvd19vdmVycmlkZXM6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3NvdXJj
ZSA9ICJvdmVycmlkZSIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICBleHBlY3RhdGlvbl9zb3VyY2UgPSAiZXhwZWN0YXRpb24iCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fYWRkX2Vycm9yKGxpbmVubywgJ0R1cGxpY2F0ZSAlcy4nICUgZXhwZWN0YXRpb25fc291cmNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0KQotICAgICAgICAgICAg
ICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgV2Ug
aGF2ZSBzZWVuIHRoaXMgcGF0aCwgYnV0IHRoYXQncyBva2F5IGJlY2F1c2UgaXRzCi0gICAgICAg
ICAgICAgICAgIyBpbiB0aGUgb3ZlcnJpZGVzIGFuZCB0aGUgZWFybGllciBwYXRoIHdhcyBpbiB0
aGUKLSAgICAgICAgICAgICAgICAjIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKKyAgICAgICAgcHJldl9iYXNlX3BhdGgsIHByZXZfbnVtX21hdGNoZXMsIHByZXZf
bGluZW5vID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdCisgICAgICAgIGJhc2VfcGF0aCA9
IG9zLnBhdGgubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpCisKKyAgICAgICAgaWYgbGVuKHByZXZf
YmFzZV9wYXRoKSA+IGxlbihiYXNlX3BhdGgpOgorICAgICAgICAgICAgIyBUaGUgcHJldmlvdXMg
cGF0aCBtYXRjaGVkIG1vcmUgb2YgdGhlIHRlc3QuCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
CisgICAgICAgIGlmIGxlbihwcmV2X2Jhc2VfcGF0aCkgPCBsZW4oYmFzZV9wYXRoKToKKyAgICAg
ICAgICAgICMgVGhpcyBwYXRoIG1hdGNoZXMgbW9yZSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAg
IHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIG92ZXJyaWRlc19hbGxvd2VkIGFuZCB0ZXN0IG5v
dCBpbiBzZWxmLl9vdmVycmlkZGluZ190ZXN0czoKKyAgICAgICAgICAgICMgV2UgaGF2ZSBzZWVu
IHRoaXMgcGF0aCwgYnV0IHRoYXQncyBva2F5IGJlY2F1c2UgaXQgaXMKKyAgICAgICAgICAgICMg
aW4gdGhlIG92ZXJyaWRlcyBhbmQgdGhlIGVhcmxpZXIgcGF0aCB3YXMgaW4gdGhlCisgICAgICAg
ICAgICAjIGV4cGVjdGF0aW9ucyAobm90IHRoZSBvdmVycmlkZXMpLgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisKKyAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3cgd2UgaGF2ZSBzZWVu
IGEgcHJldmlvdXMgZXhhY3QgbWF0Y2ggb24gdGhpcworICAgICAgICAjIGJhc2UgcGF0aCwgc28g
d2UgbmVlZCB0byBjaGVjayB0aGUgdHdvIHNldHMgb2YgbW9kaWZpZXJzLgorCisgICAgICAgIGlm
IG92ZXJyaWRlc19hbGxvd2VkOgorICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gIm92
ZXJyaWRlIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0g
ImV4cGVjdGF0aW9uIgorCisgICAgICAgICMgRklYTUU6IFRoaXMgY29kZSB3YXMgb3JpZ2luYWxs
eSBkZXNpZ25lZCB0byBhbGxvdyBsaW5lcyB0aGF0IG1hdGNoZWQKKyAgICAgICAgIyBtb3JlIG1v
ZGlmaWVycyB0byBvdmVycmlkZSBsaW5lcyB0aGF0IG1hdGNoZWQgZmV3ZXIgbW9kaWZpZXJzLgor
ICAgICAgICAjIEhvd2V2ZXIsIHdlIGN1cnJlbnRseSB2aWV3IHRoZXNlIGFzIGVycm9ycy4gSWYg
d2UgZGVjaWRlIHRvIG1ha2UKKyAgICAgICAgIyB0aGlzIHBvbGljeSBwZXJtYW5lbnQsIHdlIGNh
biBwcm9iYWJseSBzaW1wbGlmeSB0aGlzIGNvZGUKKyAgICAgICAgIyBhbmQgdGhlIE1vZGlmaWVy
TWF0Y2hlciBjb2RlIGEgZmFpciBhbW91bnQuCisgICAgICAgICMKKyAgICAgICAgIyBUbyB1c2Ug
dGhlICJtb3JlIG1vZGlmaWVycyB3aW5zIiBwb2xpY3ksIGNoYW5nZSB0aGUgIl9hZGRfZXJyb3Ii
IGxpbmVzIGZvciBvdmVycmlkZXMKKyAgICAgICAgIyB0byBfbG9nX25vbl9mYXRhbF9lcnJvcigp
IGFuZCBjaGFuZ2UgdGhlIGNvbW1lbnRlZC1vdXQgInJldHVybiBGYWxzZSIuCisKKyAgICAgICAg
aWYgcHJldl9udW1fbWF0Y2hlcyA9PSBudW1fbWF0Y2hlczoKKyAgICAgICAgICAgIHNlbGYuX2Fk
ZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgJ0R1cGxpY2F0ZSBvciBhbWJpZ3VvdXMg
JXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSwKKyAgICAgICAgICAgICAgICB0ZXN0KQorICAgICAg
ICAgICAgcmV0dXJuIFRydWUKIAotICAgICAgICAjIENoZWNrIGlmIHdlJ3ZlIGFscmVhZHkgc2Vl
biBhIG1vcmUgcHJlY2lzZSBwYXRoLgotICAgICAgICByZXR1cm4gcHJldl9iYXNlX3BhdGguc3Rh
cnRzd2l0aChvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSkKKyAgICAgICAgaWYgcHJl
dl9udW1fbWF0Y2hlcyA8IG51bV9tYXRjaGVzOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9y
KGxpbmVubywKKyAgICAgICAgICAgICAgICAnTW9yZSBzcGVjaWZpYyBlbnRyeSBvbiBsaW5lICVk
IG92ZXJyaWRlcyBsaW5lICVkJyAlCisgICAgICAgICAgICAgICAgKGxpbmVubywgcHJldl9saW5l
bm8pLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgICAgICMgRklYTUU6IHJldHVybiBGYWxzZSBp
ZiB3ZSB3YW50IG1vcmUgc3BlY2lmaWMgdG8gd2luLgorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KworICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgJ01vcmUgc3Bl
Y2lmaWMgZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJQorICAgICAgICAgICAg
KHByZXZfbGluZW5vLCBsaW5lbm8pLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgcmV0dXJuIFRy
dWUKIAogICAgIGRlZiBfYWRkX2Vycm9yKHNlbGYsIGxpbmVubywgbXNnLCBwYXRoKToKICAgICAg
ICAgIiIiUmVwb3J0cyBhbiBlcnJvciB0aGF0IHdpbGwgcHJldmVudCBydW5uaW5nIHRoZSB0ZXN0
cy4gRG9lcyBub3QKQEAgLTg2NiwzICs4NzksMTg3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNG
aWxlOgogICAgICAgICAiIiJSZXBvcnRzIGFuIGVycm9yIHRoYXQgd2lsbCBub3QgcHJldmVudCBy
dW5uaW5nIHRoZSB0ZXN0cy4gVGhlc2UgYXJlCiAgICAgICAgIHN0aWxsIGVycm9ycywgYnV0IG5v
dCBiYWQgZW5vdWdoIHRvIHdhcnJhbnQgYnJlYWtpbmcgdGVzdCBydW5uaW5nLiIiIgogICAgICAg
ICBzZWxmLl9ub25fZmF0YWxfZXJyb3JzLmFwcGVuZCgnTGluZTolcyAlcyAlcycgJSAobGluZW5v
LCBtc2csIHBhdGgpKQorCisKK2NsYXNzIE1vZGlmaWVyTWF0Y2hSZXN1bHQob2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYubnVtX21hdGNoZXMg
PSBNb2RpZmllck1hdGNoZXIuTk9fTUFUQ0gKKyAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9u
cworICAgICAgICBzZWxmLmVycm9ycyA9IFtdCisgICAgICAgIHNlbGYud2FybmluZ3MgPSBbXQor
ICAgICAgICBzZWxmLm1vZGlmaWVycyA9IFtdCisgICAgICAgIHNlbGYuX21hdGNoZWRfcmVnZXhl
cyA9IHNldCgpCisgICAgICAgIHNlbGYuX21hdGNoZWRfbWFjcm9zID0gc2V0KCkKKworCitjbGFz
cyBNb2RpZmllck1hdGNoZXIob2JqZWN0KToKKworICAgICIiIgorICAgIFRoaXMgY2xhc3MgbWFu
YWdlcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJtb2RpZmllcnMiIGZvciBhIGdpdmVuCisg
ICAgbGluZSBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUuIE1vZGlmaWVycyBhcmUgdGhlIHRva2Vu
cyB0aGF0IGFwcGVhciB0byB0aGUKKyAgICBsZWZ0IG9mIHRoZSBjb2xvbiBvbiBhIGxpbmUuIEZv
ciBleGFtcGxlLCAiQlVHMTIzNCIsICJERUJVRyIsIGFuZCAiV0lOIiBhcmUKKyAgICBhbGwgbW9k
aWZpZXJzLiBUaGlzIGNsYXNzIGdldHMgd2hhdCB0aGUgdmFsaWQgbW9kaWZpZXJzIGFyZSwgYW5k
IHdoaWNoCisgICAgbW9kaWZpZXJzIGFyZSBhbGxvd2VkIHRvIGV4aXN0IHRvZ2V0aGVyIG9uIGEg
bGluZSwgZnJvbSB0aGUKKyAgICBUZXN0Q29uZmlndXJhdGlvbiBvYmplY3QgdGhhdCBpcyBwYXNz
ZWQgaW4gdG8gdGhlIGNhbGwuCisKKyAgICBUaGlzIGNsYXNzIGRldGVjdHMgKmludHJhKi1saW5l
IGVycm9ycyBsaWtlIHVua25vd24gbW9kaWZpZXJzLCBidXQKKyAgICBkb2VzIG5vdCBkZXRlY3Qg
KmludGVyKi1saW5lIG1vZGlmaWVycyBsaWtlIGR1cGxpY2F0ZSBleHBlY3RhdGlvbnMuCisKKyAg
ICBNb3JlIGltcG9ydGFudGx5LCB0aGlzIGNsYXNzIGlzIGFsc28gdXNlZCB0byBkZXRlcm1pbmUg
aWYgYSBnaXZlbiBsaW5lCisgICAgbWF0Y2hlcyB0aGUgcG9ydCBpbiBxdWVzdGlvbi4gTWF0Y2hl
cyBhcmUgcmFua2VkIGFjY29yZGluZyB0byB0aGUgbnVtYmVyCisgICAgb2YgbW9kaWZpZXJzIHRo
YXQgbWF0Y2ggb24gYSBsaW5lLiBBIGxpbmUgd2l0aCBubyBtb2RpZmllcnMgbWF0Y2hlcworICAg
IGV2ZXJ5dGhpbmcgYW5kIGhhcyBhIHNjb3JlIG9mIHplcm8uIEEgbGluZSB3aXRoIG9uZSBtb2Rp
ZmllciBtYXRjaGVzIG9ubHkKKyAgICBwb3J0cyB0aGF0IGhhdmUgdGhhdCBtb2RpZmllciBhbmQg
Z2V0cyBhIHNjb3JlIG9mIDEsIGFuZCBzbyBvbmUuIFBvcnRzCisgICAgdGhhdCBkb24ndCBtYXRj
aCBhdCBhbGwgZ2V0IGEgc2NvcmUgb2YgLTEuCisKKyAgICBHaXZlbiB0d28gbGluZXMgaW4gYSBm
aWxlIHRoYXQgYXBwbHkgdG8gdGhlIHNhbWUgZmlsZSwgYSBoaWdoZXIgc2NvcmUKKyAgICBiZWF0
cyBhIGxvd2VyIG9uZSwgYW5kIHR3byBsaW5lcyB3aXRoIHRoZSBzYW1lIHNjb3JlIGFyZSBjb25z
aWRlcmVkCisgICAgYW1iaWd1b3VzIChpbmRlcGVuZGVudCBvZiB0aGUgb3JkZXIgb2YgbGluZXMg
aW4gdGhlIGZpbGUpLiBGb3IgZXhhbXBsZSwgaW46CisKKyAgICBCVUcxIFJFTEVBU0UgOiBmb28u
aHRtbCA9IEZBSUwKKyAgICBCVUcxIFdJTiBSRUxFQVNFIDogZm9vLmh0bWwgPSBQQVNTCisgICAg
QlVHMiBXSU4gOiBiYXIuaHRtbCA9IEZBSUwKKyAgICBCVUcyIERFQlVHIDogYmFyLmh0bWwgPSBQ
QVNTCisKKyAgICB0aGUgZXhwZWN0YXRpb24gZm9yIGZvby5odG1sIG9uIGEgV2luIFhQIFJlbGVh
c2UgYm90IHdvdWxkIGJlIFBBU1Mgc2luY2UKKyAgICB0aGUgc2NvcmVzIGZvciB0aGUgZmlyc3Qg
dHdvIGxpbmVzIGFyZSAxIGFuZCAyLCByZXNwZWN0aXZlbHkuIEhvd2V2ZXIsCisgICAgbGluZXMg
dGhyZWUgYW5kIGZvdXIgd291bGQgcHJvZHVjZSBhIGR1cGxpY2F0ZSBleHBlY3RhdGlvbiBvbiAg
YSBXaW4KKyAgICBEZWJ1ZyBib3Qgc2luY2UgYm90aCB0aGUgJ3dpbicgYW5kIHRoZSAnZGVidWcn
IGV4cGVjdGF0aW9ucyB3b3VsZCBhcHBseS4KKworICAgIEluIGFkZGl0aW9uIHRvIHRoZSBkZWZp
bml0aW9ucyBvZiBhbGwgb2YgdGhlIG1vZGlmaWVycywgdGhlIGNsYXNzCisgICAgc3VwcG9ydHMg
Im1hY3JvcyIgdGhhdCBhcmUgZXhwYW5kZWQgcHJpb3IgdG8gaW50ZXJwcmV0YXRpb24sIGFuZCAi
aWdub3JlCisgICAgcmVnZXhlcyIgdGhhdCBjYW4gYmUgdXNlZCB0byBza2lwIG92ZXIgbW9kaWZp
ZXJzIGxpa2UgdGhlIEJVRyogbW9kaWZpZXJzLgorICAgICIiIgorICAgIE1BQ1JPUyA9IHsKKyAg
ICAgICAgJ21hYy1zbm93bGVvcGFyZCc6IFsnbWFjJywgJ3Nub3dsZW9wYXJkJ10sCisgICAgICAg
ICdtYWMtbGVvcGFyZCc6IFsnbWFjJywgJ2xlb3BhcmQnXSwKKyAgICAgICAgJ3dpbi14cCc6IFsn
d2luJywgJ3hwJ10sCisgICAgICAgICd3aW4tdmlzdGEnOiBbJ3dpbicsICd2aXN0YSddLAorICAg
ICAgICAnd2luLTcnOiBbJ3dpbicsICd3aW43J10sCisgICAgfQorCisgICAgIyBXZSBkb24ndCBp
bmNsdWRlIHRoZSAibm9uZSIgbW9kaWZpZXIgYmVjYXVzZSBpdCBpc24ndCBhY3R1YWxseSBsZWdh
bC4KKyAgICBSRUdFWEVTX1RPX0lHTk9SRSA9IChbJ2J1Z1x3KyddICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlMua2V5cygpWzotMV0pCisg
ICAgRFVQTElDQVRFX1JFR0VYRVNfQUxMT1dFRCA9IFsnYnVnXHcrJ10KKworICAgICMgTWFnaWMg
dmFsdWUgcmV0dXJuZWQgd2hlbiB0aGUgb3B0aW9ucyBkb24ndCBtYXRjaC4KKyAgICBOT19NQVRD
SCA9IC0xCisKKyAgICAjIEZJWE1FOiBUaGUgY29kZSBjdXJyZW50bHkgZG9lc24ndCBkZXRlY3Qg
Y29tYmluYXRpb25zIG9mIG1vZGlmaWVycworICAgICMgdGhhdCBhcmUgc3ludGFjdGljYWxseSB2
YWxpZCBidXQgc2VtYW50aWNhbGx5IGludmFsaWQsIGxpa2UKKyAgICAjICdNQUMgWFAnLiBTZWUg
TW9kaWZpZXJNYXRjaFRlc3QudGVzdF9pbnZhbGlkX2NvbWJpbmF0aW9ucygpIGluIHRoZQorICAg
ICMgX3VuaXR0ZXN0LnB5IGZpbGUuCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9jb25m
aWcpOgorICAgICAgICAiIiJJbml0aWFsaXplIGEgTW9kaWZpZXJNYXRjaGVyIGFyZ3VtZW50IHdp
dGggdGhlIFRlc3RDb25maWd1cmF0aW9uIGl0CisgICAgICAgIHNob3VsZCBiZSBtYXRjaGVkIGFn
YWluc3QuIiIiCisgICAgICAgIHNlbGYudGVzdF9jb25maWcgPSB0ZXN0X2NvbmZpZworICAgICAg
ICBzZWxmLmFsbG93ZWRfY29uZmlndXJhdGlvbnMgPSB0ZXN0X2NvbmZpZy5hbGxfdGVzdF9jb25m
aWd1cmF0aW9ucygpCisgICAgICAgIHNlbGYubWFjcm9zID0gc2VsZi5NQUNST1MKKworICAgICAg
ICBzZWxmLnJlZ2V4ZXNfdG9faWdub3JlID0ge30KKyAgICAgICAgZm9yIHJlZ2V4X3N0ciBpbiBz
ZWxmLlJFR0VYRVNfVE9fSUdOT1JFOgorICAgICAgICAgICAgc2VsZi5yZWdleGVzX3RvX2lnbm9y
ZVtyZWdleF9zdHJdID0gcmUuY29tcGlsZShyZWdleF9zdHIpCisKKyAgICAgICAgIyBLZWVwIGEg
c2V0IG9mIGFsbCBvZiB0aGUgbGVnYWwgbW9kaWZpZXJzIGZvciBxdWljayBjaGVja2luZy4KKyAg
ICAgICAgc2VsZi5fYWxsX21vZGlmaWVycyA9IHNldCgpCisKKyAgICAgICAgIyBLZWVwIGEgZGlj
dCBtYXBwaW5nIHZhbHVlcyBiYWNrIHRvIHRoZWlyIGNhdGVnb3JpZXMuCisgICAgICAgIHNlbGYu
X2NhdGVnb3JpZXNfZm9yX21vZGlmaWVycyA9IHt9CisgICAgICAgIGZvciBjb25maWcgaW4gc2Vs
Zi5hbGxvd2VkX2NvbmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgZm9yIGNhdGVnb3J5LCBtb2Rp
ZmllciBpbiBjb25maWcuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9jYXRlZ29yaWVz
X2Zvcl9tb2RpZmllcnNbbW9kaWZpZXJdID0gY2F0ZWdvcnkKKyAgICAgICAgICAgICAgICBzZWxm
Ll9hbGxfbW9kaWZpZXJzLmFkZChtb2RpZmllcikKKworICAgIGRlZiBtYXRjaChzZWxmLCBvcHRp
b25zKToKKyAgICAgICAgIiIiQ2hlY2tzIGEgbGlzdCBvZiBvcHRpb25zIGFnYWluc3QgdGhlIGNv
bmZpZyBzZXQgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBPcHRpb25zIG1heSBiZSBlaXRo
ZXIgYWN0dWFsIG1vZGlmaWVyIHN0cmluZ3MsICJtYWNybyIgc3RyaW5ncworICAgICAgICB0aGF0
IGdldCBleHBhbmRlZCB0byBhIGxpc3Qgb2YgbW9kaWZpZXJzLCBvciBzdHJpbmdzIHRoYXQgYXJl
IGFsbG93ZWQKKyAgICAgICAgdG8gYmUgaWdub3JlZC4gQWxsIG9mIHRoZSBvcHRpb25zIG11c3Qg
YmUgcGFzc2VkIGluIGluIGxvd2VyIGNhc2UuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVy
IG9mIG1hdGNoaW5nIGNhdGVnb3JpZXMsIG9yIE5PX01BVENIICgtMSkgaWYgaXQKKyAgICAgICAg
ZG9lc24ndCBtYXRjaCBvciB0aGVyZSB3ZXJlIGVycm9ycyBmb3VuZC4gTWF0Y2hlcyBhcmUgcHJp
b3JpdGl6ZWQKKyAgICAgICAgYnkgdGhlIG51bWJlciBvZiBtYXRjaGluZyBjYXRlZ29yaWVzLCBi
ZWNhdXNlIHRoZSBtb3JlIHNwZWNpZmljCisgICAgICAgIHRoZSBvcHRpb25zIGxpc3QsIHRoZSBt
b3JlIGNhdGVnb3JpZXMgd2lsbCBtYXRjaC4KKworICAgICAgICBUaGUgcmVzdWx0cyBvZiB0aGUg
bW9zdCByZWNlbnQgbWF0Y2ggYXJlIGF2YWlsYWJsZSBpbiB0aGUgJ29wdGlvbnMnLAorICAgICAg
ICAnbW9kaWZpZXJzJywgJ251bV9tYXRjaGVzJywgJ2Vycm9ycycsIGFuZCAnd2FybmluZ3MnIHBy
b3BlcnRpZXMuCisgICAgICAgICIiIgorICAgICAgICByZXN1bHQgPSBNb2RpZmllck1hdGNoUmVz
dWx0KG9wdGlvbnMpCisgICAgICAgIHNlbGYuX3BhcnNlKHJlc3VsdCkKKyAgICAgICAgaWYgcmVz
dWx0LmVycm9yczoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgc2VsZi5fY291
bnRfbWF0Y2hlcyhyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcGFy
c2Uoc2VsZiwgcmVzdWx0KToKKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIHdlIHdhcm4gYWJvdXQg
bGluZXMgaGF2aW5nIGV2ZXJ5IHZhbHVlIGluIGEgY2F0ZWdvcnk/CisgICAgICAgIGZvciBvcHRp
b24gaW4gcmVzdWx0Lm9wdGlvbnM6CisgICAgICAgICAgICBzZWxmLl9wYXJzZV9vbmUob3B0aW9u
LCByZXN1bHQpCisKKyAgICBkZWYgX3BhcnNlX29uZShzZWxmLCBvcHRpb24sIHJlc3VsdCk6Cisg
ICAgICAgIGlmIG9wdGlvbiBpbiBzZWxmLl9hbGxfbW9kaWZpZXJzOgorICAgICAgICAgICAgc2Vs
Zi5fYWRkX21vZGlmaWVyKG9wdGlvbiwgcmVzdWx0KQorICAgICAgICBlbGlmIG9wdGlvbiBpbiBz
ZWxmLm1hY3JvczoKKyAgICAgICAgICAgIHNlbGYuX2V4cGFuZF9tYWNybyhvcHRpb24sIHJlc3Vs
dCkKKyAgICAgICAgZWxpZiBub3Qgc2VsZi5fbWF0Y2hlc19hbnlfcmVnZXgob3B0aW9uLCByZXN1
bHQpOgorICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIlVucmVjb2duaXplZCBvcHRp
b24gJyVzJyIgJSBvcHRpb24pCisKKyAgICBkZWYgX2FkZF9tb2RpZmllcihzZWxmLCBvcHRpb24s
IHJlc3VsdCk6CisgICAgICAgIGlmIG9wdGlvbiBpbiByZXN1bHQubW9kaWZpZXJzOgorICAgICAg
ICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBvcHRpb24p
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQubW9kaWZpZXJzLmFwcGVuZChvcHRp
b24pCisKKyAgICBkZWYgX2V4cGFuZF9tYWNybyhzZWxmLCBtYWNybywgcmVzdWx0KToKKyAgICAg
ICAgaWYgbWFjcm8gaW4gcmVzdWx0Ll9tYXRjaGVkX21hY3JvczoKKyAgICAgICAgICAgIHJlc3Vs
dC5lcnJvcnMuYXBwZW5kKCJNb3JlIHRoYW4gb25lICclcyciICUgbWFjcm8pCisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBtb2RzID0gW10KKyAgICAgICAgZm9yIG1vZGlmaWVyIGluIHNl
bGYubWFjcm9zW21hY3JvXToKKyAgICAgICAgICAgIGlmIG1vZGlmaWVyIGluIHJlc3VsdC5vcHRp
b25zOgorICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMuYXBwZW5kKCJDYW4ndCBzcGVjaWZ5
IGJvdGggbW9kaWZpZXIgJyVzJyBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJtYWNybyAnJXMnIiAlIChtb2RpZmllciwgbWFjcm8pKQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICBtb2RzLmFwcGVuZChtb2RpZmllcikKKyAgICAgICAgcmVzdWx0
Ll9tYXRjaGVkX21hY3Jvcy5hZGQobWFjcm8pCisgICAgICAgIHJlc3VsdC5tb2RpZmllcnMuZXh0
ZW5kKG1vZHMpCisKKyAgICBkZWYgX21hdGNoZXNfYW55X3JlZ2V4KHNlbGYsIG9wdGlvbiwgcmVz
dWx0KToKKyAgICAgICAgZm9yIHJlZ2V4X3N0ciwgcGF0dGVybiBpbiBzZWxmLnJlZ2V4ZXNfdG9f
aWdub3JlLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgaWYgcGF0dGVybi5tYXRjaChvcHRpb24p
OgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZWdleF9tYXRjaChyZWdleF9zdHIsIHJl
c3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgIGRlZiBfaGFuZGxlX3JlZ2V4X21hdGNoKHNlbGYsIHJlZ2V4X3N0ciwgcmVzdWx0KToK
KyAgICAgICAgaWYgKHJlZ2V4X3N0ciBpbiByZXN1bHQuX21hdGNoZWRfcmVnZXhlcyBhbmQKKyAg
ICAgICAgICAgIHJlZ2V4X3N0ciBub3QgaW4gc2VsZi5EVVBMSUNBVEVfUkVHRVhFU19BTExPV0VE
KToKKyAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMuYXBwZW5kKCJNb3JlIHRoYW4gb25lIG9wdGlv
biBtYXRjaGluZyAnJXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdl
eF9zdHIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuX21hdGNoZWRfcmVnZXhl
cy5hZGQocmVnZXhfc3RyKQorCisgICAgZGVmIF9jb3VudF9tYXRjaGVzKHNlbGYsIHJlc3VsdCk6
CisgICAgICAgICIiIlJldHVybnMgdGhlIG51bWJlciBvZiBtb2RpZmllcnMgdGhhdCBtYXRjaCB0
aGUgdGVzdCBjb25maWcuIiIiCisgICAgICAgIGNhdGVnb3JpemVkX21vZGlmaWVycyA9IHNlbGYu
X2dyb3VwX2J5X2NhdGVnb3J5KHJlc3VsdC5tb2RpZmllcnMpCisgICAgICAgIHJlc3VsdC5udW1f
bWF0Y2hlcyA9IDAKKyAgICAgICAgZm9yIGNhdGVnb3J5LCBtb2RpZmllciBpbiBzZWxmLnRlc3Rf
Y29uZmlnLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjYXRlZ29yeSBpbiBjYXRlZ29yaXplZF9t
b2RpZmllcnM6CisgICAgICAgICAgICAgICAgaWYgbW9kaWZpZXIgaW4gY2F0ZWdvcml6ZWRfbW9k
aWZpZXJzW2NhdGVnb3J5XToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm51bV9tYXRjaGVz
ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQu
bnVtX21hdGNoZXMgPSBzZWxmLk5PX01BVENICisgICAgICAgICAgICAgICAgICAgIHJldHVybgor
CisgICAgZGVmIF9ncm91cF9ieV9jYXRlZ29yeShzZWxmLCBtb2RpZmllcnMpOgorICAgICAgICAj
IFJldHVybnMgYSBkaWN0IG9mIGNhdGVnb3J5IG5hbWUgLT4gbGlzdCBvZiBtb2RpZmllcnMuCisg
ICAgICAgIG1vZGlmaWVyc19ieV9jYXRlZ29yeSA9IHt9CisgICAgICAgIGZvciBtIGluIG1vZGlm
aWVyczoKKyAgICAgICAgICAgIG1vZGlmaWVyc19ieV9jYXRlZ29yeS5zZXRkZWZhdWx0KHNlbGYu
X2NhdGVnb3J5KG0pLCBbXSkuYXBwZW5kKG0pCisgICAgICAgIHJldHVybiBtb2RpZmllcnNfYnlf
Y2F0ZWdvcnkKKworICAgIGRlZiBfY2F0ZWdvcnkoc2VsZiwgbW9kaWZpZXIpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5fY2F0ZWdvcmllc19mb3JfbW9kaWZpZXJzW21vZGlmaWVyXQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQppbmRl
eCAzNDc3MWYzMDM5YWZmMTBhMGZkMjIwZWZhNDgzNjc1NWM3NzI4ZWUzLi5jNzRjZjMxNDhhOWE3
NTBhZGU3YjdkNGRkY2E3OWQ3NGEwZWMyMDhmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtMzQsNiArMzQsNyBAQCBp
bXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMg
aW1wb3J0IHBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3RfZXhwZWN0YXRp
b25zIGltcG9ydCAqCiAKIGNsYXNzIEZ1bmN0aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpA
QCAtODAsNiArODEsOSBAQCBjbGFzcyBGdW5jdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
IAogCiBjbGFzcyBCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIE5vdGUgdGhhdCBhbGwg
b2YgdGhlc2UgdGVzdHMgYXJlIHdyaXR0ZW4gYXNzdW1pbmcgdGhlIGNvbmZpZ3VyYXRpb24KKyAg
ICAjIGJlaW5nIHRlc3RlZCBpcyBNYWMgTGVvcGFyZCwgUmVsZWFzZSBidWlsZC4KKwogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYywgc2V0VXA9Tm9uZSwgdGVhckRvd249Tm9uZSwgZGVz
Y3JpcHRpb249Tm9uZSk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0LmdldCgndGVzdCcsIE5v
bmUpCiAgICAgICAgIHNlbGYuX2V4cCA9IE5vbmUKQEAgLTEwNSwxMyArMTA5LDEyIEBAIEJVR19U
RVNUIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sID0gSU1B
R0UKIEJVR19URVNUIFdPTlRGSVggV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9
IElNQUdFCiAiIiIKIAotICAgIGRlZiBwYXJzZV9leHAoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVy
cmlkZXM9Tm9uZSwgaXNfbGludF9tb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgaXNfZGVi
dWdfbW9kZT1GYWxzZSk6CisgICAgZGVmIHBhcnNlX2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92
ZXJyaWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFsc2UpOgorICAgICAgICB0ZXN0X2NvbmZpZyA9
IHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCkKICAgICAgICAgc2VsZi5fZXhwID0gVGVz
dEV4cGVjdGF0aW9ucyhzZWxmLl9wb3J0LAogICAgICAgICAgICAgIHRlc3RzPXNlbGYuZ2V0X2Jh
c2ljX3Rlc3RzKCksCiAgICAgICAgICAgICAgZXhwZWN0YXRpb25zPWV4cGVjdGF0aW9ucywKLSAg
ICAgICAgICAgICB0ZXN0X3BsYXRmb3JtX25hbWU9c2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25h
bWUoKSwKLSAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPWlzX2RlYnVnX21vZGUsCisgICAgICAg
ICAgICAgdGVzdF9jb25maWc9dGVzdF9jb25maWcsCiAgICAgICAgICAgICAgaXNfbGludF9tb2Rl
PWlzX2xpbnRfbW9kZSwKICAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQogCkBAIC0x
MjAsNyArMTIzLDcgQEAgQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sID0gSU1BR0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFtyZXN1bHRd
KSkKIAogCi1jbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdChCYXNlKToKK2NsYXNzIEJhc2ljVGVz
dHMoQmFzZSk6CiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2Vf
ZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQogICAgICAgICBzZWxmLmFzc2VydF9l
eHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCkBAIC0xMjgsMjMgKzEzMSwx
NCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdChCYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRfZXhwKCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUykKICAgICAgICAgc2VsZi5hc3NlcnRfZXhw
KCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJywgUEFTUykKIAorCitjbGFzcyBNaXNjVGVz
dHMoQmFzZSk6CiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVzdWx0cyhzZWxmKToKICAgICAgICAg
c2VsZi5wYXJzZV9leHAoJ0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
IENSQVNIJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9leHAuZ2V0X2V4cGVjdGF0
aW9ucygKICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcpKSwKICAgICAgICAgICAgIHNldChbVEVYVCwgQ1JBU0hdKSkKIAotICAgIGRlZiB0ZXN0
X3ByZWNlZGVuY2Uoc2VsZik6Ci0gICAgICAgICMgVGhpcyB0ZXN0cyBoYW5kbGluZyBwcmVjZWRl
bmNlIG9mIHNwZWNpZmljIGxpbmVzIG92ZXIgZGlyZWN0b3JpZXMKLSAgICAgICAgIyBhbmQgdGVz
dHMgZXhwZWN0YXRpb25zIGNvdmVyaW5nIGVudGlyZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgZXhw
X3N0ciA9ICIiIgotQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJV
R1ggV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKLSIiIgotICAgICAgICBzZWxm
LnBhcnNlX2V4cChleHBfc3RyKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQotCiAgICAgZGVmIHRlc3RfY2F0ZWdvcnlf
ZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdCBjaGVja3MgdW5rbm93biB0
ZXN0cyBhcmUgbm90IHByZXNlbnQgaW4gdGhlCiAgICAgICAgICMgZXhwZWN0YXRpb25zIGFuZCB0
aGF0IGtub3duIHRlc3QgcGFydCBvZiBhIHRlc3QgY2F0ZWdvcnkgaXMKQEAgLTE1OSwyMCArMTUz
LDYgQEAgQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmtub3duX3Rlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgn
ZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAgZGVmIHRlc3RfcmVs
ZWFzZV9tb2RlKHNlbGYpOgotICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAg
ICBpc19kZWJ1Z19tb2RlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1gg
UkVMRUFTRSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAg
ICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgUEFTUykKLSAgICAgICAgc2VsZi5wYXJz
ZV9leHAoJ0JVR1ggREVCVUcgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywK
LSAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1GYWxzZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBQQVNTKQotICAgICAg
ICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9RmFsc2Up
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywg
VEVYVCkKLQogICAgIGRlZiB0ZXN0X2dldF9vcHRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLnBh
cnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLl9leHAuZ2V0X29wdGlvbnMoCkBAIC0yMTcsNyArMTk3LDcgQEAgU0tJUCA6
IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKFRydWUsICJQYXJzZUVycm9yIHdhc24ndCByYWlzZWQiKQogICAgICAgICBleGNlcHQg
UGFyc2VFcnJvciwgZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmZhdGFsKQotICAg
ICAgICAgICAgZXhwX2Vycm9ycyA9IFt1J0xpbmU6MSBJbnZhbGlkIG1vZGlmaWVyIGZvciB0ZXN0
OiBmb28gZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywKKyAgICAgICAgICAgIGV4cF9lcnJv
cnMgPSBbdSJMaW5lOjEgVW5yZWNvZ25pemVkIG9wdGlvbiAnZm9vJyBmYWlsdXJlcy9leHBlY3Rl
ZC90ZXh0Lmh0bWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MiBNaXNzaW5n
IGV4cGVjdGF0aW9ucy4gWycgZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddIl0KICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhwX2Vy
cm9ycykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vycm9y
cykKQEAgLTIzMyw3NyArMjEzLDE2MCBAQCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2Uu
aHRtbCIiIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4o
bWFwKHN0ciwgZXhwX2Vycm9ycykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVy
cm9ycywgZXhwX2Vycm9ycykKIAotICAgIGRlZiB0ZXN0X3N5bnRheF9taXNzaW5nX2V4cGVjdGF0
aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5w
YXJzZV9leHAoIkJVR19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAiQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gSU1BR0UiKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsIElNQUdFKQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVzX19kdXBs
aWNhdGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYu
cGFyc2VfZXhwLAorICAgICAgICAgICAgICJCVUdfRVhQOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0
Lmh0bWwgPSBURVhUIiwKKyAgICAgICAgICAgICAiIiIKK0JVR19PVkVSUklERSA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFCitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwgPSBDUkFTSAorIiIiKQorCisgICAgZGVmIHRlc3RfcGl4ZWxfdGVzdHNf
ZmxhZyhzZWxmKToKKyAgICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNf
ZW5hYmxlZCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0
ZWRfcmVzdWx0KAorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwg
cGl4ZWxfdGVzdHNfZW5hYmxlZCkKKworICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9i
YXNpY19leHBlY3RhdGlvbnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBGYWxzZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcsIENSQVNILCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywg
SU1BR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1s
JywgUEFTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgU0tJ
UCwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nlcy90ZXh0Lmh0
bWwnLCBQQVNTLCBGYWxzZSkpCisKKworY2xhc3MgRXhwZWN0YXRpb25TeW50YXhUZXN0cyhCYXNl
KToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2V4cGVjdGF0aW9uKHNlbGYpOgogICAgICAgICAjIFRo
aXMgaXMgbWlzc2luZyB0aGUgZXhwZWN0YXRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAn
QlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzX2RlYnVnX21vZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKQogCi0gICAgZGVmIHRlc3Rf
c3ludGF4X2ludmFsaWRfb3B0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X21pc3NpbmdfY29sb24o
c2VsZik6CisgICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMgYW5kIHRoZSAn
OicKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVCBGT086IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFBBU1MnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgdGVzdF9zeW50YXhfaW52
YWxpZF9leHBlY3RhdGlvbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIGV4
cGVjdGF0aW9uLgorICAgIGRlZiBkaXNhYmxlZF90ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToK
KyAgICAgICAgIyBGSVhNRTogRW5hYmxlIHRoaXMgdGVzdCBhbmQgZml4IHRoZSB1bmRlcmx5aW5n
IGJ1Zy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9l
eHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sID0gUEFTUyA6JykKKworICAgIGRlZiB0ZXN0X3Rvb19tYW55X2VxdWFsc19z
aWducyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5w
YXJzZV9leHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gRk9PJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JV
R19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUID0gSU1BR0UnKQorCisg
ICAgZGVmIHRlc3RfdW5yZWNvZ25pemVkX2V4cGVjdGF0aW9uKHNlbGYpOgorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBVTktO
T1dOJykKKworICAgIGRlZiB0ZXN0X21hY3JvKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIi
CitCVUdfVEVTVCBNQUMtTEVPUEFSRCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRF
WFQKKyIiIgorICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFz
c2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCisKKworY2xhc3Mg
U2VtYW50aWNUZXN0cyhCYXNlKToKKyAgICBkZWYgdGVzdF9idWdfZm9ybWF0KHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgJ0JVRzEy
MzQgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKIAotICAgIGRlZiB0ZXN0
X3N5bnRheF9taXNzaW5nX2J1Z2lkKHNlbGYpOgorICAgIGRlZiB0ZXN0X21pc3NpbmdfYnVnaWQo
c2VsZik6CiAgICAgICAgICMgVGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVycm9yLgogICAg
ICAgICBzZWxmLnBhcnNlX2V4cCgnU0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IFRFWFQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgbGVuKHNlbGYu
X2V4cC5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X25vbl9mYXRhbF9lcnJvcnMoKSksIDEpCiAKLSAg
ICBkZWYgdGVzdF9zZW1hbnRpY19zbG93X2FuZF90aW1lb3V0KHNlbGYpOgorICAgIGRlZiB0ZXN0
X3Nsb3dfYW5kX3RpbWVvdXQoc2VsZik6CiAgICAgICAgICMgQSB0ZXN0IGNhbm5vdCBiZSBTTE9X
IGFuZCBleHBlY3RlZCB0byBUSU1FT1VULgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJz
ZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKICAgICAgICAgICAgICdCVUdfVEVTVCBTTE9XIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVCcpCiAKLSAgICBkZWYgdGVzdF9z
ZW1hbnRpY19yZWJhc2VsaW5lKHNlbGYpOgorICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmUoc2VsZik6
CiAgICAgICAgICMgQ2FuJ3QgbGludCBhIGZpbGUgdy8gJ1JFQkFTRUxJTkUnIGluIGl0LgogICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKICAgICAg
ICAgICAgICdCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gVEVYVCcsCiAgICAgICAgICAgICBpc19saW50X21vZGU9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0
X3NlbWFudGljX2R1cGxpY2F0ZXMoc2VsZik6CisgICAgZGVmIHRlc3RfZHVwbGljYXRlcyhzZWxm
KToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAs
ICIiIgotQlVHX1RFU1QgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCi1CVUdf
VEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIiIiKQorQlVHX0VYUCA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKK0JVR19FWFAgOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIikKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKLSAgICAgICAgICAgIHNlbGYuZ2V0X2Jhc2lj
X2V4cGVjdGF0aW9ucygpLCAiIiIKLUJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVAotQlVHX1RFU1QgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFH
RSIiIikKKyAgICAgICAgICAgIHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpLCBvdmVycmlk
ZXM9IiIiCitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
CitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIiwg
KQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfbWlzc2luZ19maWxlKHNlbGYpOgorICAgIGRlZiB0
ZXN0X21pc3NpbmdfZmlsZShzZWxmKToKICAgICAgICAgIyBUaGlzIHNob3VsZCBsb2cgYSBub24t
ZmF0YWwgZXJyb3IuCiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdfVEVTVCA6IG1pc3Npbmdf
ZmlsZS5odG1sID0gVEVYVCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAg
ICBsZW4oc2VsZi5fZXhwLl9leHBlY3RlZF9mYWlsdXJlcy5nZXRfbm9uX2ZhdGFsX2Vycm9ycygp
KSwgMSkKIAogCi0gICAgZGVmIHRlc3Rfb3ZlcnJpZGVzKHNlbGYpOgotICAgICAgICBzZWxmLnBh
cnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgIiIiCi1CVUdfT1ZFUlJJREUg
OiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIikKLSAgICAgICAgc2VsZi5h
c3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBJTUFHRSkKK2NsYXNzIFBy
ZWNlZGVuY2VUZXN0cyhCYXNlKToKKyAgICBkZWYgdGVzdF9maWxlX292ZXJfZGlyZWN0b3J5KHNl
bGYpOgorICAgICAgICAjIFRoaXMgdGVzdHMgaGFuZGxpbmcgcHJlY2VkZW5jZSBvZiBzcGVjaWZp
YyBsaW5lcyBvdmVyIGRpcmVjdG9yaWVzCisgICAgICAgICMgYW5kIHRlc3RzIGV4cGVjdGF0aW9u
cyBjb3ZlcmluZyBlbnRpcmUgZGlyZWN0b3JpZXMuCisgICAgICAgIGV4cF9zdHIgPSAiIiIKK0JV
R1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCitCVUdYIFdPTlRGSVggOiBm
YWlsdXJlcy9leHBlY3RlZCA9IElNQUdFCisiIiIKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoZXhw
X3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwnLCBURVhUKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2Ny
YXNoLmh0bWwnLCBJTUFHRSkKIAotICAgIGRlZiB0ZXN0X21hdGNoZXNfYW5fZXhwZWN0ZWRfcmVz
dWx0KHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdYIFdPTlRGSVggOiBmYWlsdXJl
cy9leHBlY3RlZCA9IElNQUdFCitCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVAorIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKKyAgICAgICAg
c2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCiAK
LSAgICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5hYmxlZCk6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAot
ICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwgcGl4ZWxfdGVzdHNf
ZW5hYmxlZCkKKyAgICBkZWYgdGVzdF9hbWJpZ3VvdXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKK0JVR19URVNUIFJFTEVB
U0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUworQlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQu
aHRtbCA9IEZBSUwKKyIiIikKIAotICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNp
Y19leHBlY3RhdGlvbnMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBGYWxzZSkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCcsIENSQVNILCBUcnVlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywgSU1B
R0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywg
UEFTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgU0tJUCwg
RmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nlcy90ZXh0Lmh0bWwn
LCBQQVNTLCBGYWxzZSkpCisgICAgZGVmIHRlc3RfbW9yZV9tb2RpZmllcnMoc2VsZik6CisgICAg
ICAgIGV4cF9zdHIgPSAiIiIKK0JVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0g
UEFTUworQlVHX1RFU1QgTUFDIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAorIiIi
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCBl
eHBfc3RyKQorCisgICAgZGVmIHRlc3Rfb3JkZXJfaW5fZmlsZShzZWxmKToKKyAgICAgICAgZXhw
X3N0ciA9ICIiIgorQlVHX1RFU1QgTUFDIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVY
VAorQlVHX1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCisiIiIKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsIGV4cF9zdHIp
CisKKyAgICBkZWYgdGVzdF92ZXJzaW9uX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgZXhwX3N0
ciA9ICIiIgorQlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNU
IE1BQyBMRU9QQVJEIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKworICAg
IGRlZiB0ZXN0X21hY3JvX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgZXhwX3N0ciA9ICIiIgor
QlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNUIE1BQy1MRU9Q
QVJEIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKIAogCiBjbGFzcyBSZWJh
c2VsaW5pbmdUZXN0KEJhc2UpOgpAQCAtMzQ2LDUgKzQwOSw4NiBAQCBCVUdfVEVTVCBSRUJBU0VM
SU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAogICAgICAgICAgICAgJ1xu
XG4nKQogCiAKK2NsYXNzIE1vZGlmaWVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIE5vbmUp
CisgICAgICAgIHNlbGYuY29uZmlnID0gcG9ydF9vYmoudGVzdF9jb25maWd1cmF0aW9uKCkKKyAg
ICAgICAgc2VsZi5tYXRjaGVyID0gTW9kaWZpZXJNYXRjaGVyKHNlbGYuY29uZmlnKQorCisgICAg
ZGVmIG1hdGNoKHNlbGYsIG1vZGlmaWVycywgZXhwZWN0ZWRfbnVtX21hdGNoZXM9LTEsIHZhbHVl
cz1Ob25lLCBudW1fZXJyb3JzPTApOgorICAgICAgICBtYXRjaGVyID0gc2VsZi5tYXRjaGVyCisg
ICAgICAgIGlmIHZhbHVlczoKKyAgICAgICAgICAgIG1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIo
c2VsZi5GYWtlVGVzdENvbmZpZ3VyYXRpb24odmFsdWVzKSkKKyAgICAgICAgbWF0Y2hfcmVzdWx0
ID0gbWF0Y2hlci5tYXRjaChtb2RpZmllcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KG1hdGNoX3Jlc3VsdC53YXJuaW5ncyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KG1hdGNoX3Jlc3VsdC5lcnJvcnMpLCBudW1fZXJyb3JzKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG1hdGNoX3Jlc3VsdC5udW1fbWF0Y2hlcywgZXhwZWN0ZWRfbnVtX21hdGNoZXMsCisgICAg
ICAgICAgICAgJ21hdGNoKCVzLCAlcykgcmV0dXJuZWQgLT4gJWQsIGV4cGVjdGVkICVkJyAlCisg
ICAgICAgICAgICAgKG1vZGlmaWVycywgc3RyKHNlbGYuY29uZmlnLnZhbHVlcygpKSwKKyAgICAg
ICAgICAgICAgbWF0Y2hfcmVzdWx0Lm51bV9tYXRjaGVzLCBleHBlY3RlZF9udW1fbWF0Y2hlcykp
CisKKyAgICBkZWYgdGVzdF9iYWRfbWF0Y2hfbW9kaWZpZXIoc2VsZik6CisgICAgICAgIHNlbGYu
bWF0Y2goWydmb28nXSwgbnVtX2Vycm9ycz0xKQorCisgICAgZGVmIHRlc3Rfbm9uZShzZWxmKToK
KyAgICAgICAgc2VsZi5tYXRjaChbXSwgMCkKKworICAgIGRlZiB0ZXN0X29uZShzZWxmKToKKyAg
ICAgICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ21h
YyddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsncmVsZWFzZSddLCAxKQorICAgICAgICBzZWxm
Lm1hdGNoKFsnY3B1J10sIDEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4ODYnXSwgMSkKKyAgICAg
ICAgc2VsZi5tYXRjaChbJ3hwJ10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnZ3B1J10sIC0x
KQorICAgICAgICBzZWxmLm1hdGNoKFsnZGVidWcnXSwgLTEpCisKKyAgICBkZWYgdGVzdF90d28o
c2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydsZW9wYXJkJywgJ3JlbGVhc2UnXSwgMikKKyAg
ICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3JlbGVhc2UnXSwgLTEpCisgICAgICAgIHNlbGYubWF0
Y2goWyd4cCcsICdyZWxlYXNlJ10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3Bh
cmQnLCAnbGVvcGFyZCddLCAxKQorCisgICAgZGVmIHRlc3RfdGhyZWUoc2VsZik6CisgICAgICAg
IHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICdsZW9wYXJkJywgJ3JlbGVhc2UnXSwgMikKKyAg
ICAgICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnLCAnZGVidWcnLCAneDg2J10sIC0xKQorICAgICAg
ICBzZWxmLm1hdGNoKFsnbGVvcGFyZCcsICdyZWxlYXNlJywgJ3g4NiddLCAzKQorICAgICAgICBz
ZWxmLm1hdGNoKFsnbGVvcGFyZCcsICdjcHUnLCAncmVsZWFzZSddLCAzKQorCisgICAgZGVmIHRl
c3RfZm91cihzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnLCAncmVsZWFzZScs
ICdjcHUnLCAneDg2J10sIDQpCisgICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICds
ZW9wYXJkJywgJ3JlbGVhc2UnLCAnY3B1J10sIDMpCisgICAgICAgIHNlbGYubWF0Y2goWydzbm93
bGVvcGFyZCcsICdsZW9wYXJkJywgJ2RlYnVnJywgJ2NwdSddLCAtMSkKKworICAgIGRlZiB0ZXN0
X2Nhc2VfaW5zZW5zaXRpdml0eShzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ01hYyddLCBu
dW1fZXJyb3JzPTEpCisgICAgICAgIHNlbGYubWF0Y2goWydNQUMnXSwgbnVtX2Vycm9ycz0xKQor
ICAgICAgICBzZWxmLm1hdGNoKFsnbWFjJ10sIDEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVz
KHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsncmVsZWFzZScsICdyZWxlYXNlJ10sIG51bV9l
cnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ21hYy1sZW9wYXJkJywgJ2xlb3BhcmQnXSwg
bnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnbWFjLWxlb3BhcmQnLCAnbWFjLWxl
b3BhcmQnXSwgbnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFz
ZScsICd4cCcsICdyZWxlYXNlJ10sIG51bV9lcnJvcnM9MikKKyAgICAgICAgc2VsZi5tYXRjaChb
J3JlYmFzZWxpbmUnLCAncmViYXNlbGluZSddLCBudW1fZXJyb3JzPTEpCisKKyAgICBkZWYgdGVz
dF91bmtub3duX29wdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ3ZtcyddLCBudW1f
ZXJyb3JzPTEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVfYnVncyhzZWxmKToKKyAgICAgICAg
IyBCVUcqIHJlZ2V4ZXMgY2FuIGFwcGVhciBtdWx0aXBsZSB0aW1lcy4KKyAgICAgICAgc2VsZi5t
YXRjaChbJ2J1Z2ZvbycsICdidWdiYXInXSwgMCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY29t
YmluYXRpb25zKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBy
YWlzZSBhbiBlcnJvciBpbnN0ZWFkIG9mIE5PX01BVENILgorICAgICAgICBzZWxmLm1hdGNoKFsn
bWFjJywgJ3hwJ10sIG51bV9lcnJvcnM9MCkKKworICAgIGRlZiB0ZXN0X3JlZ2V4ZXNfYXJlX2ln
bm9yZWQoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydidWcxMjN4eScsICdyZWJhc2VsaW5l
JywgJ3dvbnRmaXgnLCAnc2xvdycsICdza2lwJ10sIDApCisKKyAgICBkZWYgdGVzdF9ub25lX2lz
X2ludmFsaWQoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydub25lJ10sIG51bV9lcnJvcnM9
MSkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9ydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weQppbmRleCA1YjAyYTAwNmQ5OGM1MDQyNGZi
NTc3NDk5YjkxMDM4Njg4OTk5NTlhLi4yZjQ4Nzc3YzRiM2U2ZWE3MDNkOTU1MGU4MzU5NDk4ODc0
NjI0YWRmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weQpAQCAtMjEyLDIxICsy
MTIsMTMgQEAgY2xhc3MgVGVzdFJ1bm5lcjoKIAogICAgIGRlZiBsaW50KHNlbGYpOgogICAgICAg
ICBsaW50X2ZhaWxlZCA9IEZhbHNlCi0KLSAgICAgICAgIyBDcmVhdGluZyB0aGUgZXhwZWNhdGlv
bnMgZm9yIGVhY2ggcGxhdGZvcm0vY29uZmlndXJhdGlvbiBwYWlyIGRvZXMKLSAgICAgICAgIyBh
bGwgdGhlIHRlc3QgbGlzdCBwYXJzaW5nIGFuZCBlbnN1cmVzIGl0J3MgY29ycmVjdCBzeW50YXgg
KGUuZy4gbm8KLSAgICAgICAgIyBkdXBlcykuCi0gICAgICAgIGZvciBwbGF0Zm9ybV9uYW1lIGlu
IHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lcygpOgotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKHBsYXRmb3JtX25hbWUsIGlzX2Rl
YnVnX21vZGU9VHJ1ZSkKLSAgICAgICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJz
ZUVycm9yOgotICAgICAgICAgICAgICAgIGxpbnRfZmFpbGVkID0gVHJ1ZQorICAgICAgICBmb3Ig
dGVzdF9jb25maWd1cmF0aW9uIGluIHNlbGYuX3BvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMo
KToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnBhcnNlX2V4cGVjdGF0
aW9ucyhwbGF0Zm9ybV9uYW1lLCBpc19kZWJ1Z19tb2RlPUZhbHNlKQorICAgICAgICAgICAgICAg
IHNlbGYubGludF9leHBlY3RhdGlvbnModGVzdF9jb25maWd1cmF0aW9uKQogICAgICAgICAgICAg
ZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3I6CiAgICAgICAgICAgICAgICAgbGlu
dF9mYWlsZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiIikK
IAotICAgICAgICBzZWxmLl9wcmludGVyLndyaXRlKCIiKQogICAgICAgICBpZiBsaW50X2ZhaWxl
ZDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkxpbnQgZmFpbGVkLiIpCiAgICAgICAgICAgICBy
ZXR1cm4gLTEKQEAgLTIzNCwyMiArMjI2LDI4IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAg
IF9sb2cuaW5mbygiTGludCBzdWNjZWVkZWQuIikKICAgICAgICAgcmV0dXJuIDAKIAotICAgIGRl
ZiBwYXJzZV9leHBlY3RhdGlvbnMoc2VsZiwgdGVzdF9wbGF0Zm9ybV9uYW1lLCBpc19kZWJ1Z19t
b2RlKToKKyAgICBkZWYgbGludF9leHBlY3RhdGlvbnMoc2VsZiwgY29uZmlnKToKKyAgICAgICAg
cG9ydCA9IHNlbGYuX3BvcnQKKyAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0
aW9ucygKKyAgICAgICAgICAgIHBvcnQsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAg
cG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpLAorICAgICAgICAgICAgY29uZmlnLAorICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMsCisgICAgICAgICAgICBwb3J0LnRlc3Rf
ZXhwZWN0YXRpb25zX292ZXJyaWRlcygpKQorCisgICAgZGVmIHBhcnNlX2V4cGVjdGF0aW9ucyhz
ZWxmKToKICAgICAgICAgIiIiUGFyc2UgdGhlIGV4cGVjdGF0aW9ucyBmcm9tIHRoZSB0ZXN0X2xp
c3QgZmlsZXMgYW5kIHJldHVybiBhIGRhdGEKICAgICAgICAgc3RydWN0dXJlIGhvbGRpbmcgdGhl
bS4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0ZXN0X2xpc3QgZmlsZXMgaGF2ZQogICAgICAgICBp
bnZhbGlkIHN5bnRheC4iIiIKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmls
ZXM6Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVzID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgdGVzdF9maWxlcyA9IHNlbGYuX3Rlc3RfZmlsZXMKLQotICAgICAgICBleHBlY3RhdGlv
bnNfc3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpCi0gICAgICAgIG92ZXJyaWRl
c19zdHIgPSBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpCisgICAgICAg
IHBvcnQgPSBzZWxmLl9wb3J0CiAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhw
ZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAgICAgICAgICBzZWxmLl9wb3J0LCB0ZXN0
X2ZpbGVzLCBleHBlY3RhdGlvbnNfc3RyLCB0ZXN0X3BsYXRmb3JtX25hbWUsCi0gICAgICAgICAg
ICBpc19kZWJ1Z19tb2RlLCBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKLSAgICAgICAg
ICAgIG92ZXJyaWRlcz1vdmVycmlkZXNfc3RyKQotICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0
YXRpb25zCisgICAgICAgICAgICBwb3J0LAorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcywK
KyAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwKKyAgICAgICAgICAgIHBvcnQu
dGVzdF9jb25maWd1cmF0aW9uKCksCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpbnRfdGVz
dF9maWxlcywKKyAgICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkp
CiAKICAgICAjIEZJWE1FOiBUaGlzIG1ldGhvZCBpcyB3YXkgdG9vIGxvbmcgYW5kIG5lZWRzIHRv
IGJlIGJyb2tlbiBpbnRvIHBpZWNlcy4KICAgICBkZWYgcHJlcGFyZV9saXN0c19hbmRfcHJpbnRf
b3V0cHV0KHNlbGYpOgpAQCAtMzU3LDkgKzM1NSw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAg
ICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcyArIHNraXBfY2h1bmtfbGlzdAog
ICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChzZWxmLl90ZXN0X2ZpbGVzX2xpc3Qp
CiAKLSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHNlbGYucGFyc2VfZXhwZWN0YXRp
b25zKAotICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCksCi0g
ICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID09ICdEZWJ1ZycpCisg
ICAgICAgICAgICBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgICAgIHNlbGYu
X3Rlc3RfZmlsZXMgPSBzZXQoZmlsZXMpCiAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xp
c3QgPSBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CmluZGV4IDk3YjU0Yzk3ZDgxZmZmOTM5OTkxZTZhZWIyYTMzMzE2MDg4ODgxNTIu
LjA2MjI1N2Q1OGQ3ZmFjMGRlODM0NWYyOGQyMmY3MDIwNmFkZTFlY2UgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTEyMSw2ICsx
MjEsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZh
dWx0KCdjb25maWd1cmF0aW9uJywgTm9uZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb25m
aWd1cmF0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRp
b24gPSBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYuX3Rlc3RfY29u
ZmlndXJhdGlvbiA9IE5vbmUKIAogICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxm
KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIgb2YgRHVtcFJlbmRlclRyZWUgaW5zdGFu
Y2VzIHRvIHVzZSBmb3IgdGhpcwpAQCAtNTc0LDYgKzU3NSwxOSBAQCBjbGFzcyBQb3J0KG9iamVj
dCk6CiAgICAgICAgIGlmIHNlbGYuX2h0dHBfbG9jazoKICAgICAgICAgICAgIHNlbGYuX2h0dHBf
bG9jay5jbGVhbnVwX2h0dHBfbG9jaygpCiAKKyAgICAjCisgICAgIyBURVNUIEVYUEVDVEFUSU9O
LVJFTEFURUQgTUVUSE9EUworICAgICMKKworICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2Vs
Zik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGN1cnJlbnQgVGVzdENvbmZpZ3VyYXRpb24gZm9y
IHRoZSBwb3J0LiIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uOgor
ICAgICAgICAgICAgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uID0gVGVzdENvbmZpZ3VyYXRpb24o
c2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbgorCisgICAgZGVm
IGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0
X2NvbmZpZ3VyYXRpb24oKS5hbGxfdGVzdF9jb25maWd1cmF0aW9ucygpCisKICAgICBkZWYgdGVz
dF9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIHRlc3QgZXhwZWN0
YXRpb25zIGZvciB0aGlzIHBvcnQuCiAKQEAgLTg2MCwzICs4NzQsNjggQEAgY2xhc3MgRHJpdmVy
OgogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IoJ0RyaXZlci5zdG9wJykKKworCitjbGFzcyBUZXN0Q29uZmlndXJhdGlvbihvYmplY3QpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0PU5vbmUsIG9zPU5vbmUsIHZlcnNpb249Tm9uZSwg
YXJjaGl0ZWN0dXJlPU5vbmUsCisgICAgICAgICAgICAgICAgIGJ1aWxkX3R5cGU9Tm9uZSwgZ3Jh
cGhpY3NfdHlwZT1Ob25lKToKKworICAgICAgICAjIEZJWE1FOiBXZSBjYW4gZ2V0IHRoZSBPL1Mg
YW5kIHZlcnNpb24gZnJvbSB0ZXN0X3BsYXRmb3JtX25hbWUoKQorICAgICAgICAjIGFuZCB2ZXJz
aW9uKCkgZm9yIG5vdywgYnV0IHRob3NlIHNob3VsZCBnbyBhd2F5IGFuZCBiZSBjbGVhbmVkIHVw
CisgICAgICAgICMgd2l0aCBtb3JlIGdlbmVyaWMgbWV0aG9kcyBsaWtlIG9wZXJhdGlvbl9zeXN0
ZW0oKSBhbmQgb3NfdmVyc2lvbigpCisgICAgICAgICMgb3Igc29tZXRoaW5nLiBOb3RlIHRoYXQg
d2UgbmVlZCB0byBzdHJpcCB0aGUgbGVhZGluZyAnLScgb2ZmIHRoZQorICAgICAgICAjIHZlcnNp
b24gc3RyaW5nIGlmIGl0IGlzIHByZXNlbnQuCisgICAgICAgIGlmIHBvcnQ6CisgICAgICAgICAg
ICBwb3J0X3ZlcnNpb24gPSBwb3J0LnZlcnNpb24oKQorICAgICAgICBzZWxmLm9zID0gb3Mgb3Ig
cG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKS5yZXBsYWNlKHBvcnRfdmVyc2lvbiwgJycpCisgICAg
ICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24gb3IgcG9ydF92ZXJzaW9uWzE6XQorICAgICAgICBz
ZWxmLmFyY2hpdGVjdHVyZSA9IGFyY2hpdGVjdHVyZSBvciAneDg2JworICAgICAgICBzZWxmLmJ1
aWxkX3R5cGUgPSBidWlsZF90eXBlIG9yIHBvcnQuX29wdGlvbnMuY29uZmlndXJhdGlvbi5sb3dl
cigpCisgICAgICAgIHNlbGYuZ3JhcGhpY3NfdHlwZSA9IGdyYXBoaWNzX3R5cGUgb3IgJ2NwdScK
KworICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18uaXRl
bXMoKQorCisgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9f
LmtleXMoKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAoIjwlKHZl
cnNpb24pcywgJShidWlsZF90eXBlKXMsICUoZ3JhcGhpY3NfdHlwZSlzPiIgJQorICAgICAgICAg
ICAgICAgIHNlbGYuX19kaWN0X18pCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAg
IHJldHVybiAiVGVzdENvbmZpZyhvcz0nJShvcylzJywgdmVyc2lvbj0nJSh2ZXJzaW9uKXMnLCBh
cmNoaXRlY3R1cmU9JyUoYXJjaGl0ZWN0dXJlKXMnLCBidWlsZF90eXBlPSclKGJ1aWxkX3R5cGUp
cycsIGdyYXBoaWNzX3R5cGU9JyUoZ3JhcGhpY3NfdHlwZSlzJykiICUgc2VsZi5fX2RpY3RfXwor
CisgICAgZGVmIHZhbHVlcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgY29uZmlndXJh
dGlvbiB2YWx1ZXMgb2YgdGhpcyBpbnN0YW5jZSBhcyBhIHR1cGxlLiIiIgorICAgICAgICByZXR1
cm4gc2VsZi5fX2RpY3RfXy52YWx1ZXMoKQorCisgICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3VyYXRp
b25zKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgc2VxdWVuY2Ugb2YgdGhlIFRlc3RDb25m
aWd1cmF0aW9ucyB0aGUgcG9ydCBzdXBwb3J0cy4iIiIKKyAgICAgICAgIyBCeSBkZWZhdWx0LCB3
ZSBhc3N1bWUgd2Ugd2FudCB0byB0ZXN0IGV2ZXJ5IGdyYXBoaWNzIHR5cGUgaW4KKyAgICAgICAg
IyBldmVyeSBjb25maWd1cmF0aW9uIG9uIGV2ZXJ5IHN5c3RlbS4KKyAgICAgICAgdGVzdF9jb25m
aWd1cmF0aW9ucyA9IFtdCisgICAgICAgIGZvciBzeXN0ZW0gaW4gc2VsZi5hbGxfc3lzdGVtcygp
OgorICAgICAgICAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gc2VsZi5hbGxfYnVpbGRfdHlwZXMoKToK
KyAgICAgICAgICAgICAgICBmb3IgZ3JhcGhpY3NfdHlwZSBpbiBzZWxmLmFsbF9ncmFwaGljc190
eXBlcygpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbmZpZ3VyYXRpb25zLmFwcGVuZChU
ZXN0Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zPXN5c3RlbVswXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249c3lzdGVtWzFdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPXN5c3RlbVsyXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJ1aWxkX3R5cGU9YnVpbGRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBo
aWNzX3R5cGU9Z3JhcGhpY3NfdHlwZSkpCisgICAgICAgIHJldHVybiB0ZXN0X2NvbmZpZ3VyYXRp
b25zCisKKyAgICBkZWYgYWxsX3N5c3RlbXMoc2VsZik6CisgICAgICAgIHJldHVybiAoKCdtYWMn
LCAnbGVvcGFyZCcsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ21hYycsICdzbm93bGVvcGFy
ZCcsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dpbicsICd4cCcsICd4ODYnKSwKKyAgICAg
ICAgICAgICAgICAoJ3dpbicsICd2aXN0YScsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dp
bicsICd3aW43JywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnbGludXgnLCAnaGFyZHknLCAn
eDg2JykpCisKKyAgICBkZWYgYWxsX2J1aWxkX3R5cGVzKHNlbGYpOgorICAgICAgICByZXR1cm4g
KCdkZWJ1ZycsICdyZWxlYXNlJykKKworICAgIGRlZiBhbGxfZ3JhcGhpY3NfdHlwZXMoc2VsZik6
CisgICAgICAgIHJldHVybiAoJ2NwdScsICdncHUnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5kZXggYjkwNDIxYWRmZWIw
OGIwOTQzMDExOWZmMmVmYmRlMjg0ODVjMzI4Zi4uNWYyYzE1ZjhjMGQwZmRiNmVjNmFiMjM1ODI2
YjdlNDYwYWE1N2M2NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC0yNzQsOCArMjc0LDggQEAgY2xhc3MgQ2hyb21p
dW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBhbGxfdGVzdF9maWxlcy51cGRhdGUoZXh0
cmFfdGVzdF9maWxlcykKIAogICAgICAgICBleHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9u
cy5UZXN0RXhwZWN0YXRpb25zKAotICAgICAgICAgICAgc2VsZiwgYWxsX3Rlc3RfZmlsZXMsIGV4
cGVjdGF0aW9uc19zdHIsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgIGlzX2RlYnVn
X21vZGUsIGlzX2xpbnRfbW9kZT1GYWxzZSwgb3ZlcnJpZGVzPW92ZXJyaWRlc19zdHIpCisgICAg
ICAgICAgICBzZWxmLCBhbGxfdGVzdF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgc2VsZi50ZXN0
X2NvbmZpZ3VyYXRpb24oKSwKKyAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSwgb3ZlcnJp
ZGVzPW92ZXJyaWRlc19zdHIpCiAgICAgICAgIHRlc3RzX2RpciA9IHNlbGYubGF5b3V0X3Rlc3Rz
X2RpcigpCiAgICAgICAgIHJldHVybiBbc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3Qp
CiAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRo
X3Jlc3VsdF90eXBlKHRlc3RfZXhwZWN0YXRpb25zLlNLSVApXQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cmlu
ZGV4IGM0YjM2YWNkOTA3OWZkMmZiZTkwOTAxMjAyZDVmOWMwMjVlMzg3ZTUuLjA0ZWNhNjMwMjgz
NjhiODhjZDc2NWIyYmJhNWMzY2JkMDAyNjQ1ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTk1
LDMgKzk1LDE1IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgICAgICByZXR1cm4KICAgICAgICAgcG9ydC5zdGFydF93ZWJzb2NrZXRfc2VydmVyKCkKICAg
ICAgICAgcG9ydC5zdG9wX3dlYnNvY2tldF9zZXJ2ZXIoKQorCisgICAgZGVmIHRlc3RfdGVzdF9j
b25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAg
ICAgICBpZiBub3QgcG9ydDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSkKKworICAgIGRlZiB0ZXN0X2FsbF90ZXN0
X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQor
ICAgICAgICBpZiBub3QgcG9ydDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFz
c2VydFRydWUobGVuKHBvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKSkgPiAwKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDkz
NTg4MWMyNzZhMjc2NDU1NjJlNDNlNTExYjJmNGY2ZTFjY2U5MTEuLjY3ZTY4N2MwOTMzMDQ3NmY4
MTBjM2Q3ODViMDY1MzA4ZWFjMjg1NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTE1MSw2ICsxNTEsOSBAQCBjbGFzcyBUZXN0
UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBjaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKToK
ICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBkZWZhdWx0X2NvbmZpZ3VyYXRpb24oc2Vs
Zik6CisgICAgICAgIHJldHVybiAnUmVsZWFzZScKKwogICAgIGRlZiBkaWZmX2ltYWdlKHNlbGYs
IGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMsCiAgICAgICAgICAgICAgICAgICAg
ZGlmZl9maWxlbmFtZT1Ob25lKToKICAgICAgICAgZGlmZmVkID0gYWN0dWFsX2NvbnRlbnRzICE9
IGV4cGVjdGVkX2NvbnRlbnRzCkBAIC0zMDYsNyArMzA5LDcgQEAgV09OVEZJWCBTS0lQIDogZmFp
bHVyZXMvZXhwZWN0ZWQvZXhjZXB0aW9uLmh0bWwgPSBDUkFTSAogICAgICAgICByZXR1cm4gdGVz
dF9wbGF0Zm9ybV9uYW1lCiAKICAgICBkZWYgdmVyc2lvbihzZWxmKToKLSAgICAgICAgcmV0dXJu
ICcnCisgICAgICAgIHJldHVybiAnLWxlb3BhcmQnCiAKIAogY2xhc3MgVGVzdERyaXZlcihiYXNl
LkRyaXZlcik6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5Cmlu
ZGV4IDRkOGI3YzlmNWEyYmQ0Yzc0ZWQ1NmZkNjMxMmJhMTk1YzE2YzhhNmQuLmI1YTRlZjVlZGZi
NmEwZWVlYzkxZWFjY2E2OTI2ODc0ZDExOTc3ZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hy
b21pdW1fd2Via2l0X3Rlc3RzLnB5CkBAIC0xODMsOCArMTgzLDcgQEAgY2xhc3MgUmViYXNlbGlu
ZXIob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlv
bnMoc2VsZi5fcmViYXNlbGluZV9wb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHBlY3RhdGlvbnNfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0LnRlc3RfY29uZmln
dXJhdGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGYWxzZSkKICAgICAgICAgc2VsZi5fc2NtID0gc2NtLmRlZmF1bHRfc2NtKCkKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKaW5kZXggYzQzMTc2NWFlMmNmZDljNzA3MTBkODNjOWQ1OTlhOTc4YjUyZTMxNi4uNGE5
M2RiMTc4ZDVkNjE5Nzc1Nzg2NzA5MmU5OGFkZDE2OWRlOGU2YSAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBA
IC0xMDEsMTEgKzEwMSwxMSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJf
b3V0cHV0PXN5cy5zdGRlcnIsCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAgICAg
ICByYWlzZQogCi0gICAgICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJQYXJzaW5nIGV4cGVjdGF0
aW9ucyAuLi4iKQogICAgICAgICBpZiBvcHRpb25zLmxpbnRfdGVzdF9maWxlczoKICAgICAgICAg
ICAgIHJldHVybiBydW5uZXIubGludCgpCi0gICAgICAgIHJ1bm5lci5wYXJzZV9leHBlY3RhdGlv
bnMocG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLmNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJykKKworICAgICAgICBwcmlu
dGVyLnByaW50X3VwZGF0ZSgiUGFyc2luZyBleHBlY3RhdGlvbnMgLi4uIikKKyAgICAgICAgcnVu
bmVyLnBhcnNlX2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUo
IkNoZWNraW5nIGJ1aWxkIC4uLiIpCiAgICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2J1aWxkKHJ1
bm5lci5uZWVkc19odHRwKCkpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggYzg2YjMyY2U1NjU3
MjQ1ZGY3ZDNmMjgwOTM2OTMzNTllNTk4NmJhNS4uZTM3ZjkwOGI2NGU3ZDVjZDIyMDNlNjU5Yzdi
NTg4NDBjYjVjZjZlYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC03NSw3ICs3NSw2IEBAIGNs
YXNzIFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgIlVzaW5nICd0ZXN0JyBwb3J0LCBidXQgcGxhdGZvcm0tc3BlY2lmaWMgZXhwZWN0YXRpb25z
ICIKICAgICAgICAgICAgICAgICAgICAgICAid2lsbCBmYWlsIHRoZSBjaGVjay4iICUgc2VsZi5f
ZmlsZV9wYXRoKQogICAgICAgICAgICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcp
Ci0gICAgICAgIHNlbGYuX3BvcnRfdG9fY2hlY2sgPSBzZWxmLl9wb3J0X29iai50ZXN0X3BsYXRm
b3JtX25hbWUoKQogICAgICAgICAjIFN1cHByZXNzIGVycm9yIG1lc3NhZ2VzIG9mIHRlc3RfZXhw
ZWN0YXRpb25zIG1vZHVsZSBzaW5jZSB0aGV5IHdpbGwgYmUKICAgICAgICAgIyByZXBvcnRlZCBs
YXRlci4KICAgICAgICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90
ZXN0cy5sYXlvdXRfcGFja2FnZS4iCkBAIC05MSw3ICs5MCw3IEBAIGNsYXNzIFRlc3RFeHBlY3Rh
dGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGV4cGVjdGF0
aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnNGaWxlKAogICAgICAgICAg
ICAgICAgIHBvcnQ9c2VsZi5fcG9ydF9vYmosIGV4cGVjdGF0aW9ucz1leHBlY3RhdGlvbnNfc3Ry
LCBmdWxsX3Rlc3RfbGlzdD10ZXN0cywKLSAgICAgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtX25h
bWU9c2VsZi5fcG9ydF90b19jaGVjaywgaXNfZGVidWdfbW9kZT1GYWxzZSwKKyAgICAgICAgICAg
ICAgICB0ZXN0X2NvbmZpZz1zZWxmLl9wb3J0X29iai50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKICAg
ICAgICAgICAgICAgICBpc19saW50X21vZGU9VHJ1ZSwgb3ZlcnJpZGVzPW92ZXJyaWRlcykKICAg
ICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3IsIGVycm9yOgogICAgICAg
ICAgICAgZXJyID0gZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDk4MTdjNWQ3MDJkM2U2NjFlMDZjYjZhZjc2Yzc4YTc1ZTg3YzA3MmQuLjg2OTE1NTdlNzE3
YzZmOTU5OTQ4MjI0NjFkZmU0NDFkYTQ3MTkyYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9u
c191bml0dGVzdC5weQpAQCAtODQsMTUgKzg0LDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rl
c3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3ZhbGlkX2V4cGVjdGF0
aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAg
IFsicGFzc2VzL3RleHQuaHRtbCA9IFBBU1MiXSwKLSAgICAgICAgICAgICIiKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0g
RkFJTCBQQVNTIl0sCi0gICAgICAgICAgICAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNf
bGludCgKLSAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IENSQVNIIFRJTUVPVVQgRkFJ
TCBQQVNTIl0sCi0gICAgICAgICAgICAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGlu
dCgKICAgICAgICAgICAgIFsiQlVHQ1IxMjM0IE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNT
IEZBSUwiXSwKICAgICAgICAgICAgICIiKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50
KApAQCAtMTIwLDEyICsxMTEsMTIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9tb2RpZmllcl9lcnJvcnMoc2VsZik6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCiAgICAgICAgICAgICBbIkJVRzEyMzQgOiBw
YXNzZXMvdGV4dC5odG1sID0gRkFJTCJdLAotICAgICAgICAgICAgJ0J1ZyBtdXN0IGJlIGVpdGhl
ciBCVUdDUiwgQlVHV0ssIG9yIEJVR1Y4XyBmb3IgdGVzdDogYnVnMTIzNCBwYXNzZXMvdGV4dC5o
dG1sICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XScpCisgICAgICAgICAgICAiQlVHXFxkKyBpcyBu
b3QgYWxsb3dlZCwgbXVzdCBiZSBvbmUgb2YgQlVHQ1JcXGQrLCBCVUdXS1xcZCssIEJVR1Y4X1xc
ZCssIG9yIGEgbm9uLW51bWVyaWMgYnVnIGlkZW50aWZpZXIuIHBhc3Nlcy90ZXh0Lmh0bWwgIFt0
ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X3ZhbGlkX21vZGlmaWVycyhz
ZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiSU5W
QUxJRC1NT0RJRklFUiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCi0gICAgICAgICAgICAi
SW52YWxpZCBtb2RpZmllciBmb3IgdGVzdDogaW52YWxpZC1tb2RpZmllciAiCisgICAgICAgICAg
ICAiVW5yZWNvZ25pemVkIG9wdGlvbiAnaW52YWxpZC1tb2RpZmllcicgIgogICAgICAgICAgICAg
InBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiU0tJUCA6IHBhc3Nlcy90ZXh0Lmh0
bWwgPSBQQVNTIl0sCkBAIC0xMzUsMzggKzEyNiwzOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25z
VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uX2Vy
cm9ycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAg
IFsibWlzc2luZyBleHBlY3RhdGlvbnMiXSwKLSAgICAgICAgICAgICJNaXNzaW5nIGV4cGVjdGF0
aW9ucy4gWydtaXNzaW5nIGV4cGVjdGF0aW9ucyddICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XSIp
CisgICAgICAgICAgICAiTWlzc2luZyBhICc6JyBtaXNzaW5nIGV4cGVjdGF0aW9ucyAgW3Rlc3Qv
ZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAg
ICAgICAgICAgWyJTTE9XIDogcGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQiXSwKICAgICAgICAg
ICAgICJBIHRlc3QgY2FuIG5vdCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuICIKICAgICAgICAg
ICAgICJJZiBpdCB0aW1lcyBvdXQgaW5kZWZpbml0ZWx5LCB0aGVuIGl0IHNob3VsZCBiZSBqdXN0
IHRpbWVvdXQuICIKICAgICAgICAgICAgICJwYXNzZXMvdGV4dC5odG1sICBbdGVzdC9leHBlY3Rh
dGlvbnNdIFs1XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAg
ICBbImRvZXMvbm90L2V4aXN0Lmh0bWwgPSBGQUlMIl0sCisgICAgICAgICAgICBbIkJVR1dLMSA6
IGRvZXMvbm90L2V4aXN0Lmh0bWwgPSBGQUlMIl0sCiAgICAgICAgICAgICAiUGF0aCBkb2VzIG5v
dCBleGlzdC4gZG9lcy9ub3QvZXhpc3QuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbMl0iKQog
CiAgICAgZGVmIHRlc3RfcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFz
c2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJd
LAorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAogICAg
ICAgICAgICAgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAg
ICBbInBhc3Nlcy90ZXh0Lmh0bWwgPSBVTlNVUFBPUlRFRCJdLAorICAgICAgICAgICAgWyJCVUdX
SzEgOiBwYXNzZXMvdGV4dC5odG1sID0gVU5TVVBQT1JURUQiXSwKICAgICAgICAgICAgICJVbnN1
cHBvcnRlZCBleHBlY3RhdGlvbjogdW5zdXBwb3J0ZWQgIgogICAgICAgICAgICAgInBhc3Nlcy90
ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAgc2VsZi5hc3NlcnRf
bGluZXNfbGludCgKLSAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IFBBU1MgVU5TVVBQ
T1JURUQiXSwKKyAgICAgICAgICAgIFsiQlVHV0sxIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1Mg
VU5TVVBQT1JURUQiXSwKICAgICAgICAgICAgICJVbnN1cHBvcnRlZCBleHBlY3RhdGlvbjogdW5z
dXBwb3J0ZWQgIgogICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0
aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X2FscmVhZHlfc2Vlbl90ZXN0KHNlbGYpOgogICAg
ICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5o
dG1sID0gUEFTUyIsCi0gICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VUIl0s
Ci0gICAgICAgICAgICAiRHVwbGljYXRlIGV4cGVjdGF0aW9uLiAlcyAgW3Rlc3QvZXhwZWN0YXRp
b25zXSBbNV0iICUgc2VsZi5fdGVzdF9maWxlKQorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNz
ZXMvdGV4dC5odG1sID0gUEFTUyIsCisgICAgICAgICAgICAgIkJVR1dLMSA6IHBhc3Nlcy90ZXh0
Lmh0bWwgPSBUSU1FT1VUIl0sCisgICAgICAgICAgICAiRHVwbGljYXRlIG9yIGFtYmlndW91cyBl
eHBlY3RhdGlvbi4gJXMgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIiAlIHNlbGYuX3Rlc3RfZmls
ZSkKIAogICAgIGRlZiB0ZXN0X3RhYihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNf
bGludCgKLSAgICAgICAgICAgIFsiXHRwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAorICAgICAg
ICAgICAgWyJcdEJVR1dLMSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCiAgICAgICAgICAg
ICAiTGluZSBjb250YWlucyB0YWIgY2hhcmFjdGVyLiAgW3doaXRlc3BhY2UvdGFiXSBbNV0iKQog
CiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79996</attachid>
            <date>2011-01-24 17:38:58 -0800</date>
            <delta_ts>2011-01-31 13:11:38 -0800</delta_ts>
            <desc>update w/ more unit tests</desc>
            <filename>bug-51222-20110124173857.patch</filename>
            <type>text/plain</type>
            <size>81713</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MzNk
ODA0ZjU3NWE4ODJlYmM2MTVhMTI1YzExYmZiZWExOWQyMjA2Li5lOTllMTA2ZDMyMmRlNGE5Mjkw
YzE3NjQ4MzhmZDViYTQ3M2ViZjM1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMDEtMTAgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9kaWZpZXIgcGFyc2luZyBjb2RlIGluIHRl
c3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdpbGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0
J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMKKyAgICAgICAgb3IgZWFzaWx5IGFk
ZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQVSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAg
ICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQgdnMuIDY0LWJpdCBkaWZmZXJlbmNlcyku
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgdHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFk
ZCBpbiBtb3JlIGdlbmVyaWMKKyAgICAgICAgc3VwcG9ydCBhbmQgdGhlbiBlbGltaW5hdGUgdGhl
IEdQVS1zcGVjaWZpYyB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBmaWxlcyBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBzdGFuZGFsb25lIG9iamVjdHMgZm9y
IGhhbmRsaW5nIG1vZGlmaWVycy4gVGhlCisgICAgICAgIHJ1bGVzIGZvciBpbnRlcnByZXRpbmcg
bW9kaWZpZXJzLCBwcmVjZWRlbmNlLCBhbmQgY29uZmxpY3RzIGFyZQorICAgICAgICBnaXZlbiBp
biB0aGUgZG9jc3RyaW5nIHRvIHRoZSBNb2RpZmllck1hdGNoZXIgY2xhc3MsIHdoaWNoCisgICAg
ICAgIHJldHVybnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBvYmplY3RzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgcm91dGluZXMgdG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFu
ZCBhCisgICAgICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVlcyBpbiB0aGUgYmFzZSBvYmplY3QsIGlu
IG9yZGVyIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRl
c3QgcnVuLiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFzc2VkCisgICAgICAgIHRvIHRoZSBleHBl
Y3RhdGlvbiBwYXJzZXIuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gY2xlYW4gdXAgdGhlCisgICAg
ICAgIGxvZ2ljIHVzZWQgdG8gbGludCBhbGwgb2YgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
cyBpbiBhCisgICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmlsZS4KKworICAg
ICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIG1lcmdlIGluIHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0
YXRpb25zIGZpbGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMjIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfdW5pdHRlc3Qu
cHk6CisKIDIwMTEtMDEtMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5CmluZGV4IDEyYTc4NmU5MDc1YzcxOTdmOTNmYjI4OGE3
N2Q5ZDQzOGZiMDcyNjUuLjdhYjZkYTgxYzE4N2JkY2FlZGRlMTNjYzIzNTUwM2NkNDQ2NmE1YjAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5CkBAIC0xNDQs
NyArMTQ0LDcgQEAgY2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0IGluIHRlc3RzXQogICAgICAgICBleHBlY3RhdGlvbnMgPSB0
ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAogICAgICAgICAgICAgc2VsZi5fcG9y
dCwgdGVzdF9wYXRocywgZXhwZWN0YXRpb25zX3N0ciwKLSAgICAgICAgICAgIHNlbGYuX3BvcnQu
dGVzdF9wbGF0Zm9ybV9uYW1lKCksIGlzX2RlYnVnX21vZGU9RmFsc2UsCisgICAgICAgICAgICBz
ZWxmLl9wb3J0LnRlc3RfY29uZmlndXJhdGlvbigpLAogICAgICAgICAgICAgaXNfbGludF9tb2Rl
PUZhbHNlKQogCiAgICAgICAgIHJzID0gcmVzdWx0X3N1bW1hcnkuUmVzdWx0U3VtbWFyeShleHBl
Y3RhdGlvbnMsIHRlc3RfcGF0aHMpCkBAIC0zNjMsNyArMzYzLDcgQEAgY2xhc3MgIFRlc3Rwcmlu
dGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9wcmludF9wcm9ncmVzc19fZGV0
YWlsZWQoc2VsZik6CiAgICAgICAgIHRlc3RzID0gWydwYXNzZXMvdGV4dC5odG1sJywgJ2ZhaWx1
cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRtbCcsCiAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9l
eHBlY3RlZC9jcmFzaC5odG1sJ10KLSAgICAgICAgZXhwZWN0YXRpb25zID0gJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RpbWVvdXQuaHRtbCA9IFRJTUVPVVQnCisgICAgICAgIGV4cGVjdGF0aW9ucyA9ICdC
VUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVCcKIAogICAgICAg
ICAjIGZpcnN0LCB0ZXN0IHRoYXQgaXQgaXMgZGlzYWJsZWQgcHJvcGVybHkKICAgICAgICAgIyBz
aG91bGQgc3RpbGwgcHJpbnQgb25lLWxpbmUtcHJvZ3Jlc3MKQEAgLTU2OSw4ICs1NjksOCBAQCBj
bGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG91dC5lbXB0eSgpKQogCiAgICAgICAgIGV4cGVjdGF0aW9ucyA9ICIiIgotZmFpbHVy
ZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCA9IENSQVNICi1mYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0
Lmh0bWwgPSBUSU1FT1VUCitCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCA9IENS
QVNICitCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVAogIiIi
CiAgICAgICAgIGVyci5yZXNldCgpCiAgICAgICAgIG91dC5yZXNldCgpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4
cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CmluZGV4IGFjYWRjYjNmYWUxZDVjY2YwNTI5
MGNiYWM5Y2Q2ZTQyZjk3NTM2NzQuLjUyMTc4ZjY0MmY5ZjY1Nzg3OGViNDBkYTk1MDY5YWNjYzJj
Mzk2OTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBA
IC0zMSw2ICszMSw3IEBACiBmb3IgbGF5b3V0IHRlc3RzLgogIiIiCiAKK2ltcG9ydCBpdGVydG9v
bHMKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcmUKIApAQCAtODQsMTggKzg1LDE2IEBAIGRlZiBy
ZW1vdmVfcGl4ZWxfZmFpbHVyZXMoZXhwZWN0ZWRfcmVzdWx0cyk6CiBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zOgogICAgIFRFU1RfTElTVCA9ICJ0ZXN0X2V4cGVjdGF0aW9ucy50eHQiCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydCwgdGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9wbGF0Zm9y
bV9uYW1lLAotICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBpc19saW50X21vZGUsIG92
ZXJyaWRlcz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgdGVzdHMsIGV4cGVj
dGF0aW9ucywgdGVzdF9jb25maWcsCisgICAgICAgICAgICAgICAgIGlzX2xpbnRfbW9kZSwgb3Zl
cnJpZGVzPU5vbmUpOgogICAgICAgICAiIiJMb2FkcyBhbmQgcGFyc2VzIHRoZSB0ZXN0IGV4cGVj
dGF0aW9ucyBnaXZlbiBpbiB0aGUgc3RyaW5nLgogICAgICAgICBBcmdzOgogICAgICAgICAgICAg
cG9ydDogaGFuZGxlIHRvIG9iamVjdCBjb250YWluaW5nIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0
aW9uYWxpdHkKICAgICAgICAgICAgIHRlc3RzOiBsaXN0IG9mIGFsbCBvZiB0aGUgdGVzdCBmaWxl
cwogICAgICAgICAgICAgZXhwZWN0YXRpb25zOiB0ZXN0IGV4cGVjdGF0aW9ucyBhcyBhIHN0cmlu
ZwotICAgICAgICAgICAgdGVzdF9wbGF0Zm9ybV9uYW1lOiBuYW1lIG9mIHRoZSBwbGF0Zm9ybSB0
byBtYXRjaCBleHBlY3RhdGlvbnMKLSAgICAgICAgICAgICAgICBhZ2FpbnN0LiBOb3RlIHRoYXQg
dGhpcyBtYXkgYmUgZGlmZmVyZW50IHRoYW4KLSAgICAgICAgICAgICAgICBwb3J0LnRlc3RfcGxh
dGZvcm1fbmFtZSgpIHdoZW4gaXNfbGludF9tb2RlIGlzIFRydWUuCi0gICAgICAgICAgICBpc19k
ZWJ1Z19tb2RlOiB3aGV0aGVyIHRvIHVzZSB0aGUgREVCVUcgb3IgUkVMRUFTRSBtb2RpZmllcnMK
LSAgICAgICAgICAgICAgICBpbiB0aGUgZXhwZWN0YXRpb25zCisgICAgICAgICAgICB0ZXN0X2Nv
bmZpZzogc3BlY2lmaWMgdmFsdWVzIHRvIGNoZWNrIGFnYWluc3Qgd2hlbgorICAgICAgICAgICAg
ICAgIHBhcnNpbmcgdGhlIGZpbGUgKHVzdWFsbHkgcG9ydC50ZXN0X2NvbmZpZygpLAorICAgICAg
ICAgICAgICAgIGJ1dCBtYXkgYmUgZGlmZmVyZW50IHdoZW4gbGludGluZyBvciBkb2luZyBvdGhl
ciB0aGluZ3MpLgogICAgICAgICAgICAgaXNfbGludF9tb2RlOiBJZiBUcnVlLCBqdXN0IHBhcnNl
IHRoZSBleHBlY3RhdGlvbnMgc3RyaW5nCiAgICAgICAgICAgICAgICAgbG9va2luZyBmb3IgZXJy
b3JzLgogICAgICAgICAgICAgb3ZlcnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0IGFyZSBh
bGxvd2VkIHRvIG92ZXJyaWRlIGFueQpAQCAtMTA0LDcgKzEwMyw3IEBAIGNsYXNzIFRlc3RFeHBl
Y3RhdGlvbnM6CiAgICAgICAgICAgICAgICAgYW5kIGRvd25zdHJlYW0gZXhwZWN0YXRpb25zKS4K
ICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzID0gVGVzdEV4cGVj
dGF0aW9uc0ZpbGUocG9ydCwgZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgdGVzdHMsIHRlc3Rf
cGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLAorICAgICAgICAgICAg
dGVzdHMsIHRlc3RfY29uZmlnLCBpc19saW50X21vZGUsCiAgICAgICAgICAgICBvdmVycmlkZXM9
b3ZlcnJpZGVzKQogCiAgICAgIyBUT0RPKG9qYW4pOiBBbGxvdyBmb3IgcmVtb3Zpbmcgc2tpcHBl
ZCB0ZXN0cyB3aGVuIGdldHRpbmcgdGhlIGxpc3Qgb2YKQEAgLTE5Nyw3ICsxOTYsNyBAQCBjbGFz
cyBQYXJzZUVycm9yKEV4Y2VwdGlvbik6CiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obWFwKHN0
ciwgc2VsZi5lcnJvcnMpKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1
cm4gJ1BhcnNlRXJyb3IoZmF0YWw9JXMsIGVycm9ycz0lcyknICUgKGZhdGFsLCBlcnJvcnMpCisg
ICAgICAgIHJldHVybiAnUGFyc2VFcnJvcihmYXRhbD0lcywgZXJyb3JzPSVzKScgJSAoc2VsZi5m
YXRhbCwgc2VsZi5lcnJvcnMpCiAKIAogY2xhc3MgTW9kaWZpZXJzQW5kRXhwZWN0YXRpb25zOgpA
QCAtMzAyLDI5ICszMDEsMTUgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAg
ICAgICAgICAgICAgICdmYWlsJzogRkFJTCwKICAgICAgICAgICAgICAgICAgICAgJ2ZsYWt5Jzog
RkxBS1l9CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxs
X3Rlc3RfbGlzdCwgdGVzdF9wbGF0Zm9ybV9uYW1lLAotICAgICAgICBpc19kZWJ1Z19tb2RlLCBp
c19saW50X21vZGUsIG92ZXJyaWRlcz1Ob25lKToKLSAgICAgICAgIiIiCi0gICAgICAgIGV4cGVj
dGF0aW9uczogQ29udGVudHMgb2YgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAgICAgIGZ1bGxf
dGVzdF9saXN0OiBUaGUgbGlzdCBvZiBhbGwgdGVzdHMgdG8gYmUgcnVuIHBlbmRpbmcgcHJvY2Vz
c2luZyBvZgotICAgICAgICAgICAgdGhlIGV4cGVjdGlvbnMgZm9yIHRob3NlIHRlc3RzLgotICAg
ICAgICB0ZXN0X3BsYXRmb3JtX25hbWU6IG5hbWUgb2YgdGhlIHBsYXRmb3JtIHRvIG1hdGNoIGV4
cGVjdGF0aW9ucwotICAgICAgICAgICAgYWdhaW5zdC4gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGRp
ZmZlcmVudCB0aGFuCi0gICAgICAgICAgICBwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpIHdoZW4g
aXNfbGludF9tb2RlIGlzIFRydWUuCi0gICAgICAgIGlzX2RlYnVnX21vZGU6IFdoZXRoZXIgd2Ug
dGVzdGluZyBhIHRlc3Rfc2hlbGwgYnVpbHQgZGVidWcgbW9kZS4KLSAgICAgICAgaXNfbGludF9t
b2RlOiBXaGV0aGVyIHRoaXMgaXMganVzdCBsaW50aW5nIHRlc3RfZXhwZWNhdGF0aW9ucy50eHQu
Ci0gICAgICAgIG92ZXJyaWRlczogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0
byBvdmVycmlkZSBhbnkKLSAgICAgICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0aW9uc3wuIFRo
aXMgaXMgdXNlZCBieSBjYWxsZXJzCi0gICAgICAgICAgICB0aGF0IG5lZWQgdG8gbWFuYWdlIHR3
byBzZXRzIG9mIGV4cGVjdGF0aW9ucyAoZS5nLiwgdXBzdHJlYW0KLSAgICAgICAgICAgIGFuZCBk
b3duc3RyZWFtIGV4cGVjdGF0aW9ucykuCi0gICAgICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwb3J0LCBleHBlY3RhdGlvbnMsIGZ1bGxfdGVzdF9saXN0LAorICAgICAgICAgICAgICAg
ICB0ZXN0X2NvbmZpZywgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6CisgICAgICAgICMg
U2VlIGFyZ3VtZW50IGRvY3VtZW50YXRpb24gaW4gVGVzdEV4cGVjdGF0aW9uKCksIGFib3ZlLgog
CiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX2ZzID0gcG9ydC5fZmls
ZXN5c3RlbQogICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBleHBlY3RhdGlvbnMKICAgICAg
ICAgc2VsZi5fZnVsbF90ZXN0X2xpc3QgPSBmdWxsX3Rlc3RfbGlzdAotICAgICAgICBzZWxmLl90
ZXN0X3BsYXRmb3JtX25hbWUgPSB0ZXN0X3BsYXRmb3JtX25hbWUKLSAgICAgICAgc2VsZi5faXNf
ZGVidWdfbW9kZSA9IGlzX2RlYnVnX21vZGUKKyAgICAgICAgc2VsZi5fdGVzdF9jb25maWcgPSB0
ZXN0X2NvbmZpZwogICAgICAgICBzZWxmLl9pc19saW50X21vZGUgPSBpc19saW50X21vZGUKICAg
ICAgICAgc2VsZi5fb3ZlcnJpZGVzID0gb3ZlcnJpZGVzCiAgICAgICAgIHNlbGYuX2Vycm9ycyA9
IFtdCkBAIC0zMzIsNyArMzE3LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAg
ICAgICAgIyBNYXBzIHJlbGF0aXZlIHRlc3QgcGF0aHMgYXMgbGlzdGVkIGluIHRoZSBleHBlY3Rh
dGlvbnMgZmlsZSB0byBhCiAgICAgICAgICMgbGlzdCBvZiBtYXBzIGNvbnRhaW5pbmcgbW9kaWZp
ZXJzIGFuZCBleHBlY3RhdGlvbnMgZm9yIGVhY2ggdGltZQotICAgICAgICAjIHRoZSB0ZXN0IGlz
IGxpc3RlZCBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUuCisgICAgICAgICMgdGhlIHRlc3QgaXMg
bGlzdGVkIGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZS4gV2UgdXNlIHRoaXMgdG8KKyAgICAgICAg
IyBrZWVwIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVudGlyZSBsaXN0IG9mIGV4cGVjdGF0aW9u
cywgZXZlbgorICAgICAgICAjIGludmFsaWQgb25lcy4KICAgICAgICAgc2VsZi5fYWxsX2V4cGVj
dGF0aW9ucyA9IHt9CiAKICAgICAgICAgIyBNYXBzIGEgdGVzdCB0byBpdHMgbGlzdCBvZiBleHBl
Y3RhdGlvbnMuCkBAIC0zNDUsNyArMzMyLDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgICMgdGhlIG9wdGlvbnMgbWludXMgYW55IGJ1ZyBvciBwbGF0Zm9ybSBzdHJpbmdz
CiAgICAgICAgIHNlbGYuX3Rlc3RfdG9fbW9kaWZpZXJzID0ge30KIAotICAgICAgICAjIE1hcHMg
YSB0ZXN0IHRvIHRoZSBiYXNlIHBhdGggdGhhdCBpdCB3YXMgbGlzdGVkIHdpdGggaW4gdGhlIGxp
c3QuCisgICAgICAgICMgTWFwcyBhIHRlc3QgdG8gdGhlIGJhc2UgcGF0aCB0aGF0IGl0IHdhcyBs
aXN0ZWQgd2l0aCBpbiB0aGUgbGlzdCBhbmQKKyAgICAgICAgIyB0aGUgbnVtYmVyIG9mIG1hdGNo
ZXMgdGhhdCBiYXNlIHBhdGggaGFkLgogICAgICAgICBzZWxmLl90ZXN0X2xpc3RfcGF0aHMgPSB7
fQogCiAgICAgICAgIHNlbGYuX21vZGlmaWVyX3RvX3Rlc3RzID0gc2VsZi5fZGljdF9vZl9zZXRz
KHNlbGYuTU9ESUZJRVJTKQpAQCAtMzcyLDEzICszNjAsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRp
b25zRmlsZToKIAogICAgIGRlZiBfaGFuZGxlX2FueV9yZWFkX2Vycm9ycyhzZWxmKToKICAgICAg
ICAgaWYgbGVuKHNlbGYuX2Vycm9ycykgb3IgbGVuKHNlbGYuX25vbl9mYXRhbF9lcnJvcnMpOgot
ICAgICAgICAgICAgaWYgc2VsZi5faXNfZGVidWdfbW9kZToKLSAgICAgICAgICAgICAgICBidWls
ZF90eXBlID0gJ0RFQlVHJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBidWls
ZF90eXBlID0gJ1JFTEVBU0UnCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcnKQotICAgICAgICAg
ICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9SIFBMQVRGT1JNOiAlcywgQlVJTERfVFlQRTogJXMi
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3Rlc3RfcGxhdGZvcm1fbmFtZS51cHBl
cigpLCBidWlsZF90eXBlKSkKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZBSUxVUkVTIEZPUiAl
cyIgJSBzdHIoc2VsZi5fdGVzdF9jb25maWcpKQogCiAgICAgICAgICAgICBmb3IgZXJyb3IgaW4g
c2VsZi5fZXJyb3JzOgogICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoZXJyb3IpCkBAIC0zOTQs
MTEgKzM3NiwxMiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgZXhwZWN0
YXRpb25zID0gc2V0KFtQQVNTXSkKICAgICAgICAgb3B0aW9ucyA9IFtdCiAgICAgICAgIG1vZGlm
aWVycyA9IFtdCisgICAgICAgIG51bV9tYXRjaGVzID0gMAogICAgICAgICBpZiBzZWxmLl9mdWxs
X3Rlc3RfbGlzdDoKICAgICAgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuX2Z1bGxfdGVzdF9saXN0
OgogICAgICAgICAgICAgICAgIGlmIG5vdCB0ZXN0IGluIHNlbGYuX3Rlc3RfbGlzdF9wYXRoczoK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBleHBl
Y3RhdGlvbnMsIG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXNfYWxs
b3dlZD1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9k
aWZpZXJzLCBudW1fbWF0Y2hlcywgZXhwZWN0YXRpb25zLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZD1GYWxzZSkKIAogICAgIGRl
ZiBfZGljdF9vZl9zZXRzKHNlbGYsIHN0cmluZ3NfdG9fY29uc3RhbnRzKToKICAgICAgICAgIiIi
VGFrZXMgYSBkaWN0IG9mIHN0cmluZ3MtPmNvbnN0YW50cyBhbmQgcmV0dXJucyBhIGRpY3QgbWFw
cGluZwpAQCAtNTA1LDcgKzQ4OCw4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAg
ICAgICAgICAgICAgIF9sb2cuaW5mbygnICBuZXc6ICVzJywgbmV3X2xpbmUpCiAgICAgICAgICAg
ICBlbGlmIGFjdGlvbiA9PSBBRERfUExBVEZPUk1TX0VYQ0VQVF9USElTOgogICAgICAgICAgICAg
ICAgIHBhcnRzID0gbGluZS5zcGxpdCgnOicpCi0gICAgICAgICAgICAgICAgbmV3X29wdGlvbnMg
PSBwYXJ0c1swXQorICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnVGVzdCB1cGRhdGVkOiAnKQor
ICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnICBvbGQ6ICVzJywgbGluZSkKICAgICAgICAgICAg
ICAgICBmb3IgcCBpbiBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZXMoKToKICAgICAgICAg
ICAgICAgICAgICAgcCA9IHAudXBwZXIoKQogICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMg
YSB0ZW1wIHNvbHV0aW9uIGZvciByZWJhc2VsaW5pbmcgdG9vbC4KQEAgLTUxNSwxMyArNDk5LDEx
IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAgICAgICAjIFRP
RE8odmljdG9ydyk6IFJlbW92ZSBXSU4tVklTVEEgYW5kIFdJTi03IG9uY2Ugd2UgaGF2ZQogICAg
ICAgICAgICAgICAgICAgICAjIHJlbGlhYmxlIFdpbiA3IGFuZCBXaW4gVmlzdGEgYnVpbGRib3Rz
IHNldHVwLgogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcCBpbiAocGxhdGZvcm0udXBwZXIo
KSwgJ1dJTi1WSVNUQScsICdXSU4tNycpOgotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X29w
dGlvbnMgKz0gcCArICcgJwotICAgICAgICAgICAgICAgIG5ld19saW5lID0gKCclczolcycgJSAo
bmV3X29wdGlvbnMsIHBhcnRzWzFdKSkKLSAgICAgICAgICAgICAgICBmX25ldy5hcHBlbmQobmV3
X2xpbmUpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdfb3B0aW9ucyA9IHBhcnRzWzBdICsg
cCArICcgJworICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2xpbmUgPSAoJyVzOiVzJyAlIChu
ZXdfb3B0aW9ucywgcGFydHNbMV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgZl9uZXcuYXBw
ZW5kKG5ld19saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcgIG5ldzog
JXMnLCBuZXdfbGluZSkKICAgICAgICAgICAgICAgICB0ZXN0c191cGRhdGVkICs9IDEKLSAgICAg
ICAgICAgICAgICBfbG9nLmluZm8oJ1Rlc3QgdXBkYXRlZDogJykKLSAgICAgICAgICAgICAgICBf
bG9nLmluZm8oJyAgb2xkOiAlcycsIGxpbmUpCi0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcg
IG5ldzogJXMnLCBuZXdfbGluZSkKIAogICAgICAgICBfbG9nLmluZm8oJ1RvdGFsIHRlc3RzIHJl
bW92ZWQ6ICVkJywgdGVzdHNfcmVtb3ZlZCkKICAgICAgICAgX2xvZy5pbmZvKCdUb3RhbCB0ZXN0
cyB1cGRhdGVkOiAlZCcsIHRlc3RzX3VwZGF0ZWQpCkBAIC01MzcsMTIgKzUxOSwxNSBAQCBjbGFz
cyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAogICAgICAgICBvcHRpb25zID0gW10KICAgICAgICAg
aWYgbGluZS5maW5kKCI6IikgaXMgLTE6Ci0gICAgICAgICAgICB0ZXN0X2FuZF9leHBlY3RhdGlv
biA9IGxpbmUuc3BsaXQoIj0iKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFydHMgPSBs
aW5lLnNwbGl0KCI6IikKLSAgICAgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9uc19s
aXN0KHBhcnRzWzBdKQotICAgICAgICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0c1sx
XS5zcGxpdCgnPScpCisgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAiTWlzc2lu
ZyBhICc6JyIsIGxpbmUpCisgICAgICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpCiAK
KyAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCc6JykKKworICAgICAgICAjIEZJWE1FOiB2ZXJp
ZnkgdGhhdCB0aGVyZSBpcyBleGFjdGx5IG9uZSBjb2xvbiBpbiB0aGUgbGluZS4KKworICAgICAg
ICBvcHRpb25zID0gc2VsZi5fZ2V0X29wdGlvbnNfbGlzdChwYXJ0c1swXSkKKyAgICAgICAgdGVz
dF9hbmRfZXhwZWN0YXRpb24gPSBwYXJ0c1sxXS5zcGxpdCgnPScpCiAgICAgICAgIHRlc3QgPSB0
ZXN0X2FuZF9leHBlY3RhdGlvblswXS5zdHJpcCgpCiAgICAgICAgIGlmIChsZW4odGVzdF9hbmRf
ZXhwZWN0YXRpb24pIGlzIG5vdCAyKToKICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5l
bm8sICJNaXNzaW5nIGV4cGVjdGF0aW9ucy4iLApAQCAtNTg4LDY5ICs1NzMsNiBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zRmlsZToKIAogICAgICAgICByZXR1cm4gUkVNT1ZFX1RFU1QKIAotICAg
IGRlZiBfaGFzX3ZhbGlkX21vZGlmaWVyc19mb3JfY3VycmVudF9wbGF0Zm9ybShzZWxmLCBvcHRp
b25zLCBsaW5lbm8sCi0gICAgICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9ucywgbW9kaWZpZXJzKToK
LSAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IHBsYXRmb3JtIGlzIGluIHRo
ZSBvcHRpb25zIGxpc3Qgb3IgaWYKLSAgICAgICAgbm8gcGxhdGZvcm1zIGFyZSBsaXN0ZWQgYW5k
IGlmIHRoZXJlIGFyZSBubyBmYXRhbCBlcnJvcnMgaW4gdGhlCi0gICAgICAgIG9wdGlvbnMgbGlz
dC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIG9wdGlvbnM6IExpc3Qgb2YgbG93ZXJjYXNl
IG9wdGlvbnMuCi0gICAgICAgICAgbGluZW5vOiBUaGUgbGluZSBpbiB0aGUgZmlsZSB3aGVyZSB0
aGUgdGVzdCBpcyBsaXN0ZWQuCi0gICAgICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb25zOiBUaGUg
cGF0aCBhbmQgZXhwZWN0YXRpb25zIGZvciB0aGUgdGVzdC4KLSAgICAgICAgICBtb2RpZmllcnM6
IFRoZSBzZXQgdG8gcG9wdWxhdGUgd2l0aCBtb2RpZmllcnMuCi0gICAgICAgICIiIgotICAgICAg
ICBoYXNfYW55X3BsYXRmb3JtID0gRmFsc2UKLSAgICAgICAgaGFzX2J1Z19pZCA9IEZhbHNlCi0g
ICAgICAgIGZvciBvcHRpb24gaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGlmIG9wdGlvbiBpbiBz
ZWxmLk1PRElGSUVSUzoKLSAgICAgICAgICAgICAgICBtb2RpZmllcnMuYWRkKG9wdGlvbikKLSAg
ICAgICAgICAgIGVsaWYgb3B0aW9uIGluIHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lcygp
OgotICAgICAgICAgICAgICAgIGhhc19hbnlfcGxhdGZvcm0gPSBUcnVlCi0gICAgICAgICAgICBl
bGlmIHJlLm1hdGNoKHInYnVnXGQnLCBvcHRpb24pICE9IE5vbmU6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fYWRkX2Vycm9yKGxpbmVubywgJ0J1ZyBtdXN0IGJlIGVpdGhlciBCVUdDUiwgQlVHV0ss
IG9yIEJVR1Y4XyBmb3IgdGVzdDogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9uLCB0ZXN0X2FuZF9leHBlY3RhdGlvbnMpCi0gICAgICAgICAgICBlbGlmIG9wdGlv
bi5zdGFydHN3aXRoKCdidWcnKToKLSAgICAgICAgICAgICAgICBoYXNfYnVnX2lkID0gVHJ1ZQot
ICAgICAgICAgICAgZWxpZiBvcHRpb24gbm90IGluIHNlbGYuQlVJTERfVFlQRVM6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywgJ0ludmFsaWQgbW9kaWZpZXIgZm9yIHRl
c3Q6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdGVzdF9h
bmRfZXhwZWN0YXRpb25zKQotCi0gICAgICAgIGlmIGhhc19hbnlfcGxhdGZvcm0gYW5kIG5vdCBz
ZWxmLl9tYXRjaF9wbGF0Zm9ybShvcHRpb25zKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgICAgIGlmIG5vdCBoYXNfYnVnX2lkIGFuZCAnd29udGZpeCcgbm90IGluIG9wdGlvbnM6
Ci0gICAgICAgICAgICAjIFRPRE8ob2phbik6IFR1cm4gdGhpcyBpbnRvIGFuIEFkZEVycm9yIGNh
bGwgb25jZSBhbGwgdGhlCi0gICAgICAgICAgICAjIHRlc3RzIGhhdmUgQlVHIGlkZW50aWZpZXJz
LgotICAgICAgICAgICAgc2VsZi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdUZXN0IGxh
Y2tzIEJVRyBtb2RpZmllci4nLAotICAgICAgICAgICAgICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9u
cykKLQotICAgICAgICBpZiAncmVsZWFzZScgaW4gb3B0aW9ucyBvciAnZGVidWcnIGluIG9wdGlv
bnM6Ci0gICAgICAgICAgICBpZiBzZWxmLl9pc19kZWJ1Z19tb2RlIGFuZCAnZGVidWcnIG5vdCBp
biBvcHRpb25zOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYg
bm90IHNlbGYuX2lzX2RlYnVnX21vZGUgYW5kICdyZWxlYXNlJyBub3QgaW4gb3B0aW9uczoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBzZWxmLl9pc19saW50X21v
ZGUgYW5kICdyZWJhc2VsaW5lJyBpbiBvcHRpb25zOgotICAgICAgICAgICAgc2VsZi5fYWRkX2Vy
cm9yKGxpbmVubywKLSAgICAgICAgICAgICAgICAnUkVCQVNFTElORSBzaG91bGQgb25seSBiZSB1
c2VkIGZvciBydW5uaW5nIHJlYmFzZWxpbmUucHkuICcKLSAgICAgICAgICAgICAgICAnQ2Fubm90
IGJlIGNoZWNrZWQgaW4uJywgdGVzdF9hbmRfZXhwZWN0YXRpb25zKQotCi0gICAgICAgIHJldHVy
biBUcnVlCi0KLSAgICBkZWYgX21hdGNoX3BsYXRmb3JtKHNlbGYsIG9wdGlvbnMpOgotICAgICAg
ICAiIiJNYXRjaCB0aGUgbGlzdCBvZiBvcHRpb25zIGFnYWluc3Qgb3VyIHNwZWNpZmllZCBwbGF0
Zm9ybS4gSWYgYW55Ci0gICAgICAgIG9mIHRoZSBvcHRpb25zIHByZWZpeC1tYXRjaCBzZWxmLl9w
bGF0Zm9ybSwgcmV0dXJuIFRydWUuIFRoaXMgaGFuZGxlcwotICAgICAgICB0aGUgY2FzZSB3aGVy
ZSBhIHRlc3QgaXMgbWFya2VkIFdJTiBhbmQgdGhlIHBsYXRmb3JtIGlzIFdJTi1WSVNUQS4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgIG9wdGlvbnM6IGxpc3Qgb2Ygb3B0aW9ucwotICAgICAg
ICAiIiIKLSAgICAgICAgZm9yIG9wdCBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgc2VsZi5f
dGVzdF9wbGF0Zm9ybV9uYW1lLnN0YXJ0c3dpdGgob3B0KToKLSAgICAgICAgICAgICAgICByZXR1
cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQogICAgIGRlZiBfYWRkX3RvX2FsbF9leHBl
Y3RhdGlvbnMoc2VsZiwgdGVzdCwgb3B0aW9ucywgZXhwZWN0YXRpb25zKToKICAgICAgICAgIyBN
YWtlIGFsbCBwYXRocyB1bml4LXN0eWxlIHNvIHRoZSBkYXNoYm9hcmQgZG9lc24ndCBuZWVkIHRv
LgogICAgICAgICB0ZXN0ID0gdGVzdC5yZXBsYWNlKCdcXCcsICcvJykKQEAgLTY2Myw1NCArNTg1
LDQzIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAiIiJGb3IgZWFjaCB0
ZXN0IGluIGFuIGV4cGVjdGF0aW9ucyBpdGVyYWJsZSwgZ2VuZXJhdGUgdGhlCiAgICAgICAgIGV4
cGVjdGF0aW9ucyBmb3IgaXQuIiIiCiAgICAgICAgIGxpbmVubyA9IDAKKyAgICAgICAgbWF0Y2hl
ciA9IE1vZGlmaWVyTWF0Y2hlcihzZWxmLl90ZXN0X2NvbmZpZykKICAgICAgICAgZm9yIGxpbmUg
aW4gZXhwZWN0YXRpb25zOgogICAgICAgICAgICAgbGluZW5vICs9IDEKKyAgICAgICAgICAgIHNl
bGYuX3Byb2Nlc3NfbGluZShsaW5lLCBsaW5lbm8sIG1hdGNoZXIsIG92ZXJyaWRlc19hbGxvd2Vk
KQogCi0gICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCwgb3B0aW9ucywgZXhwZWN0YXRpb25zID0g
XAotICAgICAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zX2xpbmUobGluZSwgbGlu
ZW5vKQotICAgICAgICAgICAgaWYgbm90IGV4cGVjdGF0aW9uczoKLSAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgIGRlZiBfcHJvY2Vzc19saW5lKHNlbGYsIGxpbmUsIGxpbmVubywgbWF0Y2hl
ciwgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICB0ZXN0X2xpc3RfcGF0aCwgb3B0aW9ucywg
ZXhwZWN0YXRpb25zID0gXAorICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnNfbGlu
ZShsaW5lLCBsaW5lbm8pCisgICAgICAgIGlmIG5vdCBleHBlY3RhdGlvbnM6CisgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICAgICAgc2VsZi5fYWRkX3RvX2FsbF9leHBlY3RhdGlvbnModGVz
dF9saXN0X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICIuam9pbihvcHRpb25zKS51cHBlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAiLmpvaW4oZXhwZWN0YXRpb25zKS51cHBlcigpKQorICAgICAgICBzZWxm
Ll9hZGRfdG9fYWxsX2V4cGVjdGF0aW9ucyh0ZXN0X2xpc3RfcGF0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICIuam9pbihvcHRpb25zKS51cHBlcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2luKGV4cGVjdGF0aW9u
cykudXBwZXIoKSkKIAotICAgICAgICAgICAgbW9kaWZpZXJzID0gc2V0KCkKLSAgICAgICAgICAg
IGlmIG9wdGlvbnMgYW5kIG5vdCBzZWxmLl9oYXNfdmFsaWRfbW9kaWZpZXJzX2Zvcl9jdXJyZW50
X3BsYXRmb3JtKAotICAgICAgICAgICAgICAgIG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3Bh
dGgsIG1vZGlmaWVycyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgbnVtX21h
dGNoZXMgPSBzZWxmLl9jaGVja19vcHRpb25zKG1hdGNoZXIsIG9wdGlvbnMsIGxpbmVubywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQor
ICAgICAgICBpZiBudW1fbWF0Y2hlcyA9PSBNb2RpZmllck1hdGNoZXIuTk9fTUFUQ0g6CisgICAg
ICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAgZXhwZWN0YXRpb25zID0gc2VsZi5fcGFyc2Vf
ZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9ucywgbGluZW5vLAotICAgICAgICAgICAgICAgIHRlc3Rf
bGlzdF9wYXRoKQorICAgICAgICBleHBlY3RhdGlvbnMgPSBzZWxmLl9wYXJzZV9leHBlY3RhdGlv
bnMoZXhwZWN0YXRpb25zLCBsaW5lbm8sCisgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKIAot
ICAgICAgICAgICAgaWYgJ3Nsb3cnIGluIG9wdGlvbnMgYW5kIFRJTUVPVVQgaW4gZXhwZWN0YXRp
b25zOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCi0gICAgICAgICAg
ICAgICAgICAgICdBIHRlc3QgY2FuIG5vdCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuIElmIGl0
IHRpbWVzIG91dCAnCi0gICAgICAgICAgICAgICAgICAgICdpbmRlZmluaXRlbHksIHRoZW4gaXQg
c2hvdWxkIGJlIGp1c3QgdGltZW91dC4nLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3Rf
cGF0aCkKKyAgICAgICAgc2VsZi5fY2hlY2tfb3B0aW9uc19hZ2FpbnN0X2V4cGVjdGF0aW9ucyhv
cHRpb25zLCBleHBlY3RhdGlvbnMsCisgICAgICAgICAgICBsaW5lbm8sIHRlc3RfbGlzdF9wYXRo
KQogCi0gICAgICAgICAgICBmdWxsX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3BvcnQubGF5
b3V0X3Rlc3RzX2RpcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X2xpc3RfcGF0aCkKLSAgICAgICAgICAgIGZ1bGxfcGF0aCA9IHNlbGYuX2ZzLm5vcm1wYXRo
KGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICMgV2ViS2l0J3Mgd2F5IG9mIHNraXBwaW5nIHRlc3Rz
IGlzIHRvIGFkZCBhIC1kaXNhYmxlZCBzdWZmaXguCi0gICAgICAgICAgICAjIFNvIHdlIHNob3Vs
ZCBjb25zaWRlciB0aGUgcGF0aCBleGlzdGluZyBpZiB0aGUgcGF0aCBvciB0aGUKLSAgICAgICAg
ICAgICMgLWRpc2FibGVkIHZlcnNpb24gZXhpc3RzLgotICAgICAgICAgICAgaWYgKG5vdCBzZWxm
Ll9wb3J0LnBhdGhfZXhpc3RzKGZ1bGxfcGF0aCkKLSAgICAgICAgICAgICAgICBhbmQgbm90IHNl
bGYuX3BvcnQucGF0aF9leGlzdHMoZnVsbF9wYXRoICsgJy1kaXNhYmxlZCcpKToKLSAgICAgICAg
ICAgICAgICAjIExvZyBhIG5vbiBmYXRhbCBlcnJvciBoZXJlIHNpbmNlIHlvdSBoaXQgdGhpcyBj
YXNlIGFueQotICAgICAgICAgICAgICAgICMgdGltZSB5b3UgdXBkYXRlIHRlc3RfZXhwZWN0YXRp
b25zLnR4dCB3aXRob3V0IHN5bmNpbmcKLSAgICAgICAgICAgICAgICAjIHRoZSBMYXlvdXRUZXN0
cyBkaXJlY3RvcnkKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxp
bmVubywgJ1BhdGggZG9lcyBub3QgZXhpc3QuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIGlmIHNlbGYuX2NoZWNrX3BhdGhfZG9lc19ub3RfZXhpc3QobGluZW5vLCB0ZXN0X2xp
c3RfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAgaWYgbm90IHNlbGYu
X2Z1bGxfdGVzdF9saXN0OgotICAgICAgICAgICAgICAgIHRlc3RzID0gW3Rlc3RfbGlzdF9wYXRo
XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2V4cGFu
ZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgaWYgbm90IHNlbGYuX2Z1bGxfdGVzdF9s
aXN0OgorICAgICAgICAgICAgdGVzdHMgPSBbdGVzdF9saXN0X3BhdGhdCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICB0ZXN0cyA9IHNlbGYuX2V4cGFuZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkK
IAotICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3RzKHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3Rf
bGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMs
IG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKQorICAgICAgICBtb2RpZmllcnMgPSBbbyBmb3Ig
byBpbiBvcHRpb25zIGlmIG8gaW4gc2VsZi5NT0RJRklFUlNdCisgICAgICAgIHNlbGYuX2FkZF90
ZXN0cyh0ZXN0cywgZXhwZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAorICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywgb3B0aW9ucywgb3ZlcnJp
ZGVzX2FsbG93ZWQpCiAKICAgICBkZWYgX2dldF9vcHRpb25zX2xpc3Qoc2VsZiwgbGlzdFN0cmlu
Zyk6CiAgICAgICAgIHJldHVybiBbcGFydC5zdHJpcCgpLmxvd2VyKCkgZm9yIHBhcnQgaW4gbGlz
dFN0cmluZy5zdHJpcCgpLnNwbGl0KCcgJyldCkBAIC03MjYsOSArNjM3LDY4IEBAIGNsYXNzIFRl
c3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgcmVzdWx0LmFkZChleHBlY3RhdGlvbikK
ICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisgICAgZGVmIF9jaGVja19vcHRpb25zKHNlbGYsIG1h
dGNoZXIsIG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICBtYXRjaF9y
ZXN1bHQgPSBzZWxmLl9jaGVja19zeW50YXgobWF0Y2hlciwgb3B0aW9ucywgbGluZW5vLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisg
ICAgICAgIHNlbGYuX2NoZWNrX3NlbWFudGljcyhvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9w
YXRoKQorICAgICAgICByZXR1cm4gbWF0Y2hfcmVzdWx0Lm51bV9tYXRjaGVzCisKKyAgICBkZWYg
X2NoZWNrX3N5bnRheChzZWxmLCBtYXRjaGVyLCBvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlzdF9w
YXRoKToKKyAgICAgICAgbWF0Y2hfcmVzdWx0ID0gbWF0Y2hlci5tYXRjaChvcHRpb25zKQorICAg
ICAgICBmb3IgZXJyb3IgaW4gbWF0Y2hfcmVzdWx0LmVycm9yczoKKyAgICAgICAgICAgIHNlbGYu
X2FkZF9lcnJvcihsaW5lbm8sIGVycm9yLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZm9yIHdh
cm5pbmcgaW4gbWF0Y2hfcmVzdWx0Lndhcm5pbmdzOgorICAgICAgICAgICAgc2VsZi5fbG9nX25v
bl9mYXRhbF9lcnJvcihsaW5lbm8sIHdhcm5pbmcsIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBy
ZXR1cm4gbWF0Y2hfcmVzdWx0CisKKyAgICBkZWYgX2NoZWNrX3NlbWFudGljcyhzZWxmLCBvcHRp
b25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgaGFzX3dvbnRmaXggPSAnd29u
dGZpeCcgaW4gb3B0aW9ucworICAgICAgICBoYXNfYnVnID0gRmFsc2UKKyAgICAgICAgZm9yIG9w
dCBpbiBvcHRpb25zOgorICAgICAgICAgICAgaWYgb3B0LnN0YXJ0c3dpdGgoJ2J1ZycpOgorICAg
ICAgICAgICAgICAgIGhhc19idWcgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2go
J2J1Z1xkKycsIG9wdCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5l
bm8sCisgICAgICAgICAgICAgICAgICAgICAgICAnQlVHXGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0
IGJlIG9uZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnQlVHQ1JcZCssIEJVR1dLXGQr
LCBCVUdWOF9cZCssICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdvciBhIG5vbi1udW1lcmlj
IGJ1ZyBpZGVudGlmaWVyLicsIHRlc3RfbGlzdF9wYXRoKQorCisgICAgICAgIGlmIG5vdCBoYXNf
YnVnIGFuZCBub3QgaGFzX3dvbnRmaXg6CisgICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFs
X2Vycm9yKGxpbmVubywgJ1Rlc3QgbGFja3MgQlVHIG1vZGlmaWVyLicsCisgICAgICAgICAgICB0
ZXN0X2xpc3RfcGF0aCkKKworICAgICAgICBpZiBzZWxmLl9pc19saW50X21vZGUgYW5kICdyZWJh
c2VsaW5lJyBpbiBvcHRpb25zOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywK
KyAgICAgICAgICAgICdSRUJBU0VMSU5FIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHJ1bm5pbmcg
cmViYXNlbGluZS5weS4gJworICAgICAgICAgICAgJ0Nhbm5vdCBiZSBjaGVja2VkIGluLicsIHRl
c3RfbGlzdF9wYXRoKQorCisgICAgZGVmIF9jaGVja19vcHRpb25zX2FnYWluc3RfZXhwZWN0YXRp
b25zKHNlbGYsIG9wdGlvbnMsIGV4cGVjdGF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIGlm
ICdzbG93JyBpbiBvcHRpb25zIGFuZCBUSU1FT1VUIGluIGV4cGVjdGF0aW9uczoKKyAgICAgICAg
ICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgJ0EgdGVzdCBjYW4g
bm90IGJlIGJvdGggc2xvdyBhbmQgdGltZW91dC4gSWYgaXQgdGltZXMgb3V0ICcKKyAgICAgICAg
ICAgICAgICAnaW5kZWZpbml0ZWx5LCB0aGVuIGl0IHNob3VsZCBiZSBqdXN0IHRpbWVvdXQuJywK
KyAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKworICAgIGRlZiBfY2hlY2tfcGF0aF9k
b2VzX25vdF9leGlzdChzZWxmLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgZnVs
bF9wYXRoID0gc2VsZi5fZnMuam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwgdGVz
dF9saXN0X3BhdGgpCisgICAgICAgIGZ1bGxfcGF0aCA9IHNlbGYuX2ZzLm5vcm1wYXRoKGZ1bGxf
cGF0aCkKKyAgICAgICAgIyBXZWJLaXQncyB3YXkgb2Ygc2tpcHBpbmcgdGVzdHMgaXMgdG8gYWRk
IGEgLWRpc2FibGVkIHN1ZmZpeC4KKyAgICAgICAgICAgICMgU28gd2Ugc2hvdWxkIGNvbnNpZGVy
IHRoZSBwYXRoIGV4aXN0aW5nIGlmIHRoZSBwYXRoIG9yIHRoZQorICAgICAgICAjIC1kaXNhYmxl
ZCB2ZXJzaW9uIGV4aXN0cy4KKyAgICAgICAgaWYgKG5vdCBzZWxmLl9wb3J0LnBhdGhfZXhpc3Rz
KGZ1bGxfcGF0aCkKKyAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fcG9ydC5wYXRoX2V4aXN0cyhm
dWxsX3BhdGggKyAnLWRpc2FibGVkJykpOgorICAgICAgICAgICAgIyBMb2cgYSBub24gZmF0YWwg
ZXJyb3IgaGVyZSBzaW5jZSB5b3UgaGl0IHRoaXMgY2FzZSBhbnkKKyAgICAgICAgICAgICMgdGlt
ZSB5b3UgdXBkYXRlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCB3aXRob3V0IHN5bmNpbmcKKyAgICAg
ICAgICAgICMgdGhlIExheW91dFRlc3RzIGRpcmVjdG9yeQorICAgICAgICAgICAgc2VsZi5fbG9n
X25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdQYXRoIGRvZXMgbm90IGV4aXN0LicsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgICAg
IHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIF9leHBhbmRfdGVz
dHMoc2VsZiwgdGVzdF9saXN0X3BhdGgpOgogICAgICAgICAiIiJDb252ZXJ0IHRoZSB0ZXN0IHNw
ZWNpZmljYXRpb24gdG8gYW4gYWJzb2x1dGUsIG5vcm1hbGl6ZWQKLSAgICAgICAgcGF0aCBhbmQg
bWFrZSBzdXJlIGRpcmVjdG9yaWVzIGVuZCB3aXRoIHRoZSBPUyBwYXRoIHNlcGFyYXRvci4iIiIK
KyAgICAgICAgcGF0aCBhbmQgbWFrZSBzdXJlIGRpcmVjdG9yaWVzIGVuZCB3aXRoIHRoZSBwYXRo
IHNlcGFyYXRvci4iIiIKICAgICAgICAgIyBGSVhNRTogZnVsbF90ZXN0X2xpc3QgY2FuIHF1aWNr
bHkgY29udGFpbiBhIGJpZyBhbW91bnQgb2YKICAgICAgICAgIyBlbGVtZW50cy4gV2Ugc2hvdWxk
IGNvbnNpZGVyIGF0IHNvbWUgcG9pbnQgdG8gdXNlIGEgbW9yZQogICAgICAgICAjIGVmZmljaWVu
dCBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiBhIGxpc3QuIE1heWJlIGEgZGljdGlvbmFyeSBvZgpAQCAt
NzUxLDE3ICs3MjEsMTkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIHJl
dHVybiByZXN1bHQKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3RzLCBleHBlY3RhdGlv
bnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgbW9kaWZpZXJz
LCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZXJzLCBudW1fbWF0Y2hlcywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICBm
b3IgdGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgIGlmIHNlbGYuX2FscmVhZHlfc2Vlbl90ZXN0
KHRlc3QsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgICAgICBpZiBzZWxmLl9h
bHJlYWR5X3NlZW5fYmV0dGVyX21hdGNoKHRlc3QsIHRlc3RfbGlzdF9wYXRoLAorICAgICAgICAg
ICAgICAgIG51bV9tYXRjaGVzLCBsaW5lbm8sIG92ZXJyaWRlc19hbGxvd2VkKToKICAgICAgICAg
ICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBzZWxmLl9jbGVhcl9leHBlY3RhdGlvbnNf
Zm9yX3Rlc3QodGVzdCwgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAgICBzZWxmLl9hZGRfdGVz
dCh0ZXN0LCBtb2RpZmllcnMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucywKKyAgICAgICAgICAgIHNl
bGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IChzZWxmLl9mcy5ub3JtcGF0aCh0ZXN0X2xpc3Rf
cGF0aCksCisgICAgICAgICAgICAgICAgbnVtX21hdGNoZXMsIGxpbmVubykKKyAgICAgICAgICAg
IHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgbnVtX21hdGNoZXMsIGV4cGVjdGF0aW9u
cywgb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19hbGxvd2Vk
KQogCi0gICAgZGVmIF9hZGRfdGVzdChzZWxmLCB0ZXN0LCBtb2RpZmllcnMsIGV4cGVjdGF0aW9u
cywgb3B0aW9ucywKKyAgICBkZWYgX2FkZF90ZXN0KHNlbGYsIHRlc3QsIG1vZGlmaWVycywgbnVt
X21hdGNoZXMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucywKICAgICAgICAgICAgICAgICAgIG92ZXJy
aWRlc19hbGxvd2VkKToKICAgICAgICAgIiIiU2V0cyB0aGUgZXhwZWN0ZWQgc3RhdGUgZm9yIGEg
Z2l2ZW4gdGVzdC4KIApAQCAtNzcyLDYgKzc0NCw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNG
aWxlOgogICAgICAgICBBcmdzOgogICAgICAgICAgIHRlc3Q6IHRlc3QgdG8gYWRkCiAgICAgICAg
ICAgbW9kaWZpZXJzOiBzZXF1ZW5jZSBvZiBtb2RpZmllciBrZXl3b3JkcyAoJ3dvbnRmaXgnLCAn
c2xvdycsIGV0Yy4pCisgICAgICAgICAgbnVtX21hdGNoZXM6IG51bWJlciBvZiBtb2RpZmllcnMg
dGhhdCBtYXRjaGVkIHRoZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgZXhwZWN0YXRpb25zOiBz
ZXF1ZW5jZSBvZiBleHBlY3RhdGlvbnMgKFBBU1MsIElNQUdFLCBldGMuKQogICAgICAgICAgIG9w
dGlvbnM6IHNlcXVlbmNlIG9mIGtleXdvcmRzIGFuZCBidWcgaWRlbnRpZmllcnMuCiAgICAgICAg
ICAgb3ZlcnJpZGVzX2FsbG93ZWQ6IHdoZXRoZXIgd2UncmUgcGFyc2luZyB0aGUgcmVndWxhciBl
eHBlY3RhdGlvbnMKQEAgLTgxMCwxMyArNzgzLDEyIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNG
aWxlOgogICAgICAgICB0aGFuIGEgcHJldmlvdXMgbGlzdGluZy4KICAgICAgICAgIiIiCiAgICAg
ICAgIGlmIHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0X3BhdGhzOgotICAgICAgICAgICAgc2VsZi5f
dGVzdF90b19leHBlY3RhdGlvbnMucG9wKHRlc3QsICcnKQotICAgICAgICAgICAgc2VsZi5fcmVt
b3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl9leHBlY3RhdGlvbl90b190ZXN0cykKLSAgICAgICAg
ICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2VsZi5fbW9kaWZpZXJfdG9fdGVzdHMp
Ci0gICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX3RpbWVsaW5l
X3RvX3Rlc3RzKQotICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxm
Ll9yZXN1bHRfdHlwZV90b190ZXN0cykKLQotICAgICAgICBzZWxmLl90ZXN0X2xpc3RfcGF0aHNb
dGVzdF0gPSBzZWxmLl9mcy5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgICAgIGJh
c2VfcGF0aCA9IHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XVswXQorICAgICAgICAgICAgc2Vs
Zi5fdGVzdF90b19leHBlY3RhdGlvbnMucG9wKGJhc2VfcGF0aCwgJycpCisgICAgICAgICAgICBz
ZWxmLl9yZW1vdmVfZnJvbV9zZXRzKGJhc2VfcGF0aCwgc2VsZi5fZXhwZWN0YXRpb25fdG9fdGVz
dHMpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKGJhc2VfcGF0aCwgc2VsZi5f
bW9kaWZpZXJfdG9fdGVzdHMpCisgICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKGJh
c2VfcGF0aCwgc2VsZi5fdGltZWxpbmVfdG9fdGVzdHMpCisgICAgICAgICAgICBzZWxmLl9yZW1v
dmVfZnJvbV9zZXRzKGJhc2VfcGF0aCwgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHMpCiAKICAg
ICBkZWYgX3JlbW92ZV9mcm9tX3NldHMoc2VsZiwgdGVzdCwgZGljdCk6CiAgICAgICAgICIiIlJl
bW92ZXMgdGhlIGdpdmVuIHRlc3QgZnJvbSB0aGUgc2V0cyBpbiB0aGUgZGljdGlvbmFyeS4KQEAg
LTgyOCwzMiArODAwLDcwIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAg
ICAgaWYgdGVzdCBpbiBzZXRfb2ZfdGVzdHM6CiAgICAgICAgICAgICAgICAgc2V0X29mX3Rlc3Rz
LnJlbW92ZSh0ZXN0KQogCi0gICAgZGVmIF9hbHJlYWR5X3NlZW5fdGVzdChzZWxmLCB0ZXN0LCB0
ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3df
b3ZlcnJpZGVzKToKLSAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmIHdlJ3ZlIGFscmVhZHkgc2Vl
biBhIG1vcmUgcHJlY2lzZSBwYXRoIGZvciB0aGlzIHRlc3QKLSAgICAgICAgdGhhbiB0aGUgdGVz
dF9saXN0X3BhdGguCisgICAgZGVmIF9hbHJlYWR5X3NlZW5fYmV0dGVyX21hdGNoKHNlbGYsIHRl
c3QsIHRlc3RfbGlzdF9wYXRoLCBudW1fbWF0Y2hlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGluZW5vLCBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgICIiIlJldHVy
bnMgd2hldGhlciB3ZSd2ZSBzZWVuIGEgYmV0dGVyIG1hdGNoIGFscmVhZHkgaW4gdGhlIGZpbGUu
CisKKyAgICAgICAgUmV0dXJucyBUcnVlIGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBhIHRlc3RfbGlz
dF9wYXRoIHRoYXQgbWF0Y2hlcyBtb3JlIG9mIHRoZSB0ZXN0CisgICAgICAgICAgICB0aGFuIHRo
aXMgcGF0aCBkb2VzCiAgICAgICAgICIiIgorICAgICAgICAjIEZJWE1FOiBTZWUgY29tbWVudCBi
ZWxvdyBhYm91dCBtYXRjaGluZyB0ZXN0IGNvbmZpZ3MgYW5kIG51bV9tYXRjaGVzLgorCiAgICAg
ICAgIGlmIG5vdCB0ZXN0IGluIHNlbGYuX3Rlc3RfbGlzdF9wYXRoczoKKyAgICAgICAgICAgICMg
V2UndmUgbmV2ZXIgc2VlbiB0aGlzIHRlc3QgYmVmb3JlLgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCiAKLSAgICAgICAgcHJldl9iYXNlX3BhdGggPSBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVz
dF0KLSAgICAgICAgaWYgKHByZXZfYmFzZV9wYXRoID09IHNlbGYuX2ZzLm5vcm1wYXRoKHRlc3Rf
bGlzdF9wYXRoKSk6Ci0gICAgICAgICAgICBpZiAobm90IGFsbG93X292ZXJyaWRlcyBvciB0ZXN0
IGluIHNlbGYuX292ZXJyaWRkaW5nX3Rlc3RzKToKLSAgICAgICAgICAgICAgICBpZiBhbGxvd19v
dmVycmlkZXM6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3NvdXJjZSA9ICJvdmVy
cmlkZSIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBleHBlY3Rh
dGlvbl9zb3VyY2UgPSAiZXhwZWN0YXRpb24iCi0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vy
cm9yKGxpbmVubywgJ0R1cGxpY2F0ZSAlcy4nICUgZXhwZWN0YXRpb25fc291cmNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0KQotICAgICAgICAgICAgICAgIHJldHVy
biBUcnVlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBzZWVu
IHRoaXMgcGF0aCwgYnV0IHRoYXQncyBva2F5IGJlY2F1c2UgaXRzCi0gICAgICAgICAgICAgICAg
IyBpbiB0aGUgb3ZlcnJpZGVzIGFuZCB0aGUgZWFybGllciBwYXRoIHdhcyBpbiB0aGUKLSAgICAg
ICAgICAgICAgICAjIGV4cGVjdGF0aW9ucy4KLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KyAgICAgICAgcHJldl9iYXNlX3BhdGgsIHByZXZfbnVtX21hdGNoZXMsIHByZXZfbGluZW5vID0g
c2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdCisgICAgICAgIGJhc2VfcGF0aCA9IHNlbGYuX2Zz
Lm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKQorCisgICAgICAgIGlmIGxlbihwcmV2X2Jhc2VfcGF0
aCkgPiBsZW4oYmFzZV9wYXRoKToKKyAgICAgICAgICAgICMgVGhlIHByZXZpb3VzIHBhdGggbWF0
Y2hlZCBtb3JlIG9mIHRoZSB0ZXN0LgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAg
ICBpZiBsZW4ocHJldl9iYXNlX3BhdGgpIDwgbGVuKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAj
IFRoaXMgcGF0aCBtYXRjaGVzIG1vcmUgb2YgdGhlIHRlc3QuCisgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKworICAgICAgICBpZiBvdmVycmlkZXNfYWxsb3dlZCBhbmQgdGVzdCBub3QgaW4gc2Vs
Zi5fb3ZlcnJpZGRpbmdfdGVzdHM6CisgICAgICAgICAgICAjIFdlIGhhdmUgc2VlbiB0aGlzIHBh
dGgsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNlIGl0IGlzCisgICAgICAgICAgICAjIGluIHRoZSBv
dmVycmlkZXMgYW5kIHRoZSBlYXJsaWVyIHBhdGggd2FzIGluIHRoZQorICAgICAgICAgICAgIyBl
eHBlY3RhdGlvbnMgKG5vdCB0aGUgb3ZlcnJpZGVzKS4KKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgICAgICMgQXQgdGhpcyBwb2ludCB3ZSBrbm93IHdlIGhhdmUgc2VlbiBhIHByZXZp
b3VzIGV4YWN0IG1hdGNoIG9uIHRoaXMKKyAgICAgICAgIyBiYXNlIHBhdGgsIHNvIHdlIG5lZWQg
dG8gY2hlY2sgdGhlIHR3byBzZXRzIG9mIG1vZGlmaWVycy4KIAotICAgICAgICAjIENoZWNrIGlm
IHdlJ3ZlIGFscmVhZHkgc2VlbiBhIG1vcmUgcHJlY2lzZSBwYXRoLgotICAgICAgICByZXR1cm4g
cHJldl9iYXNlX3BhdGguc3RhcnRzd2l0aChzZWxmLl9mcy5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0
aCkpCisgICAgICAgIGlmIG92ZXJyaWRlc19hbGxvd2VkOgorICAgICAgICAgICAgZXhwZWN0YXRp
b25fc291cmNlID0gIm92ZXJyaWRlIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhwZWN0
YXRpb25fc291cmNlID0gImV4cGVjdGF0aW9uIgorCisgICAgICAgICMgRklYTUU6IFRoaXMgY29k
ZSB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCB0byBhbGxvdyBsaW5lcyB0aGF0IG1hdGNoZWQKKyAg
ICAgICAgIyBtb3JlIG1vZGlmaWVycyB0byBvdmVycmlkZSBsaW5lcyB0aGF0IG1hdGNoZWQgZmV3
ZXIgbW9kaWZpZXJzLgorICAgICAgICAjIEhvd2V2ZXIsIHdlIGN1cnJlbnRseSB2aWV3IHRoZXNl
IGFzIGVycm9ycy4gSWYgd2UgZGVjaWRlIHRvIG1ha2UKKyAgICAgICAgIyB0aGlzIHBvbGljeSBw
ZXJtYW5lbnQsIHdlIGNhbiBwcm9iYWJseSBzaW1wbGlmeSB0aGlzIGNvZGUKKyAgICAgICAgIyBh
bmQgdGhlIE1vZGlmaWVyTWF0Y2hlciBjb2RlIGEgZmFpciBhbW91bnQuCisgICAgICAgICMKKyAg
ICAgICAgIyBUbyB1c2UgdGhlICJtb3JlIG1vZGlmaWVycyB3aW5zIiBwb2xpY3ksIGNoYW5nZSB0
aGUgIl9hZGRfZXJyb3IiIGxpbmVzIGZvciBvdmVycmlkZXMKKyAgICAgICAgIyB0byBfbG9nX25v
bl9mYXRhbF9lcnJvcigpIGFuZCBjaGFuZ2UgdGhlIGNvbW1lbnRlZC1vdXQgInJldHVybiBGYWxz
ZSIuCisKKyAgICAgICAgaWYgcHJldl9udW1fbWF0Y2hlcyA9PSBudW1fbWF0Y2hlczoKKyAgICAg
ICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgJ0R1cGxpY2F0
ZSBvciBhbWJpZ3VvdXMgJXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSwKKyAgICAgICAgICAgICAg
ICB0ZXN0KQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBpZiBwcmV2X251bV9t
YXRjaGVzIDwgbnVtX21hdGNoZXM6CisgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5v
LAorICAgICAgICAgICAgICAgICdNb3JlIHNwZWNpZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJp
ZGVzIGxpbmUgJWQnICUKKyAgICAgICAgICAgICAgICAobGluZW5vLCBwcmV2X2xpbmVubyksIHRl
c3RfbGlzdF9wYXRoKQorICAgICAgICAgICAgIyBGSVhNRTogcmV0dXJuIEZhbHNlIGlmIHdlIHdh
bnQgbW9yZSBzcGVjaWZpYyB0byB3aW4uCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg
ICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAnTW9yZSBzcGVjaWZpYyBl
bnRyeSBvbiBsaW5lICVkIG92ZXJyaWRlcyBsaW5lICVkJyAlCisgICAgICAgICAgICAocHJldl9s
aW5lbm8sIGxpbmVubyksIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICByZXR1cm4gVHJ1ZQogCiAg
ICAgZGVmIF9hZGRfZXJyb3Ioc2VsZiwgbGluZW5vLCBtc2csIHBhdGgpOgogICAgICAgICAiIiJS
ZXBvcnRzIGFuIGVycm9yIHRoYXQgd2lsbCBwcmV2ZW50IHJ1bm5pbmcgdGhlIHRlc3RzLiBEb2Vz
IG5vdApAQCAtODY1LDMgKzg3NSwxODYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAg
ICAgICAgICIiIlJlcG9ydHMgYW4gZXJyb3IgdGhhdCB3aWxsIG5vdCBwcmV2ZW50IHJ1bm5pbmcg
dGhlIHRlc3RzLiBUaGVzZSBhcmUKICAgICAgICAgc3RpbGwgZXJyb3JzLCBidXQgbm90IGJhZCBl
bm91Z2ggdG8gd2FycmFudCBicmVha2luZyB0ZXN0IHJ1bm5pbmcuIiIiCiAgICAgICAgIHNlbGYu
X25vbl9mYXRhbF9lcnJvcnMuYXBwZW5kKCdMaW5lOiVzICVzICVzJyAlIChsaW5lbm8sIG1zZywg
cGF0aCkpCisKKworY2xhc3MgTW9kaWZpZXJNYXRjaFJlc3VsdChvYmplY3QpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5udW1fbWF0Y2hlcyA9IE1vZGlm
aWVyTWF0Y2hlci5OT19NQVRDSAorICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRpb25zCisgICAg
ICAgIHNlbGYuZXJyb3JzID0gW10KKyAgICAgICAgc2VsZi53YXJuaW5ncyA9IFtdCisgICAgICAg
IHNlbGYubW9kaWZpZXJzID0gW10KKyAgICAgICAgc2VsZi5fbWF0Y2hlZF9yZWdleGVzID0gc2V0
KCkKKyAgICAgICAgc2VsZi5fbWF0Y2hlZF9tYWNyb3MgPSBzZXQoKQorCisKK2NsYXNzIE1vZGlm
aWVyTWF0Y2hlcihvYmplY3QpOgorCisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBtYW5hZ2VzIHRo
ZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgIm1vZGlmaWVycyIgZm9yIGEgZ2l2ZW4KKyAgICBsaW5l
IGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZS4gTW9kaWZpZXJzIGFyZSB0aGUgdG9rZW5zIHRoYXQg
YXBwZWFyIHRvIHRoZQorICAgIGxlZnQgb2YgdGhlIGNvbG9uIG9uIGEgbGluZS4gRm9yIGV4YW1w
bGUsICJCVUcxMjM0IiwgIkRFQlVHIiwgYW5kICJXSU4iIGFyZQorICAgIGFsbCBtb2RpZmllcnMu
IFRoaXMgY2xhc3MgZ2V0cyB3aGF0IHRoZSB2YWxpZCBtb2RpZmllcnMgYXJlLCBhbmQgd2hpY2gK
KyAgICBtb2RpZmllcnMgYXJlIGFsbG93ZWQgdG8gZXhpc3QgdG9nZXRoZXIgb24gYSBsaW5lLCBm
cm9tIHRoZQorICAgIFRlc3RDb25maWd1cmF0aW9uIG9iamVjdCB0aGF0IGlzIHBhc3NlZCBpbiB0
byB0aGUgY2FsbC4KKworICAgIFRoaXMgY2xhc3MgZGV0ZWN0cyAqaW50cmEqLWxpbmUgZXJyb3Jz
IGxpa2UgdW5rbm93biBtb2RpZmllcnMsIGJ1dAorICAgIGRvZXMgbm90IGRldGVjdCAqaW50ZXIq
LWxpbmUgbW9kaWZpZXJzIGxpa2UgZHVwbGljYXRlIGV4cGVjdGF0aW9ucy4KKworICAgIE1vcmUg
aW1wb3J0YW50bHksIHRoaXMgY2xhc3MgaXMgYWxzbyB1c2VkIHRvIGRldGVybWluZSBpZiBhIGdp
dmVuIGxpbmUKKyAgICBtYXRjaGVzIHRoZSBwb3J0IGluIHF1ZXN0aW9uLiBNYXRjaGVzIGFyZSBy
YW5rZWQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIKKyAgICBvZiBtb2RpZmllcnMgdGhhdCBtYXRj
aCBvbiBhIGxpbmUuIEEgbGluZSB3aXRoIG5vIG1vZGlmaWVycyBtYXRjaGVzCisgICAgZXZlcnl0
aGluZyBhbmQgaGFzIGEgc2NvcmUgb2YgemVyby4gQSBsaW5lIHdpdGggb25lIG1vZGlmaWVyIG1h
dGNoZXMgb25seQorICAgIHBvcnRzIHRoYXQgaGF2ZSB0aGF0IG1vZGlmaWVyIGFuZCBnZXRzIGEg
c2NvcmUgb2YgMSwgYW5kIHNvIG9uZS4gUG9ydHMKKyAgICB0aGF0IGRvbid0IG1hdGNoIGF0IGFs
bCBnZXQgYSBzY29yZSBvZiAtMS4KKworICAgIEdpdmVuIHR3byBsaW5lcyBpbiBhIGZpbGUgdGhh
dCBhcHBseSB0byB0aGUgc2FtZSB0ZXN0LCBpZiBib3RoIGV4cGVjdGF0aW9ucworICAgIG1hdGNo
IHRoZSBjdXJyZW50IGNvbmZpZywgdGhlbiB0aGUgZXhwZWN0YXRpb24gaXMgY29uc2lkZXJlZCBh
bWJpZ3VvdXMsIGV2ZW4gaWYKKyAgICBvbmUgZXhwZWN0YXRpb24gbWF0Y2hlcyBtb3JlIG9mIHRo
ZSBjb25maWcgdGhhbiB0aGUgb3RoZXIuIEZvciBleGFtcGxlLCBpbjoKKworICAgIEJVRzEgUkVM
RUFTRSA6IGZvby5odG1sID0gRkFJTAorICAgIEJVRzEgV0lOIFJFTEVBU0UgOiBmb28uaHRtbCA9
IFBBU1MKKyAgICBCVUcyIFdJTiA6IGJhci5odG1sID0gRkFJTAorICAgIEJVRzIgREVCVUcgOiBi
YXIuaHRtbCA9IFBBU1MKKworICAgIGxpbmVzIDEgYW5kIDIgd291bGQgcHJvZHVjZSBhbiBlcnJv
ciBvbiBhIFdpbiBYUCBSZWxlYXNlIGJvdCAodGhlIHNjb3JlcyB3b3VsZCBiZSAxIGFuZAorICAg
IDIsIHJlc3BlY3RpdmVseSksIGFuZCBsaW5lcyB0aHJlZSBhbmQgZm91ciB3b3VsZCBwcm9kdWNl
IGEgZHVwbGljYXRlIGV4cGVjdGF0aW9uIG9uIGEgV2luCisgICAgRGVidWcgYm90IHNpbmNlIGJv
dGggdGhlICd3aW4nIGFuZCB0aGUgJ2RlYnVnJyBleHBlY3RhdGlvbnMgd291bGQgYXBwbHkgKGJv
dGggaGFkIHNjb3JlcyBvZiAxKS4KKworICAgIEluIGFkZGl0aW9uIHRvIHRoZSBkZWZpbml0aW9u
cyBvZiBhbGwgb2YgdGhlIG1vZGlmaWVycywgdGhlIGNsYXNzCisgICAgc3VwcG9ydHMgIm1hY3Jv
cyIgdGhhdCBhcmUgZXhwYW5kZWQgcHJpb3IgdG8gaW50ZXJwcmV0YXRpb24sIGFuZCAiaWdub3Jl
CisgICAgcmVnZXhlcyIgdGhhdCBjYW4gYmUgdXNlZCB0byBza2lwIG92ZXIgbW9kaWZpZXJzIGxp
a2UgdGhlIEJVRyogbW9kaWZpZXJzLgorICAgICIiIgorICAgIE1BQ1JPUyA9IHsKKyAgICAgICAg
J21hYy1zbm93bGVvcGFyZCc6IFsnbWFjJywgJ3Nub3dsZW9wYXJkJ10sCisgICAgICAgICdtYWMt
bGVvcGFyZCc6IFsnbWFjJywgJ2xlb3BhcmQnXSwKKyAgICAgICAgJ3dpbi14cCc6IFsnd2luJywg
J3hwJ10sCisgICAgICAgICd3aW4tdmlzdGEnOiBbJ3dpbicsICd2aXN0YSddLAorICAgICAgICAn
d2luLTcnOiBbJ3dpbicsICd3aW43J10sCisgICAgfQorCisgICAgIyBXZSBkb24ndCBpbmNsdWRl
IHRoZSAibm9uZSIgbW9kaWZpZXIgYmVjYXVzZSBpdCBpc24ndCBhY3R1YWxseSBsZWdhbC4KKyAg
ICBSRUdFWEVTX1RPX0lHTk9SRSA9IChbJ2J1Z1x3KyddICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXN0RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlMua2V5cygpWzotMV0pCisgICAgRFVQ
TElDQVRFX1JFR0VYRVNfQUxMT1dFRCA9IFsnYnVnXHcrJ10KKworICAgICMgTWFnaWMgdmFsdWUg
cmV0dXJuZWQgd2hlbiB0aGUgb3B0aW9ucyBkb24ndCBtYXRjaC4KKyAgICBOT19NQVRDSCA9IC0x
CisKKyAgICAjIEZJWE1FOiBUaGUgY29kZSBjdXJyZW50bHkgZG9lc24ndCBkZXRlY3QgY29tYmlu
YXRpb25zIG9mIG1vZGlmaWVycworICAgICMgdGhhdCBhcmUgc3ludGFjdGljYWxseSB2YWxpZCBi
dXQgc2VtYW50aWNhbGx5IGludmFsaWQsIGxpa2UKKyAgICAjICdNQUMgWFAnLiBTZWUgTW9kaWZp
ZXJNYXRjaFRlc3QudGVzdF9pbnZhbGlkX2NvbWJpbmF0aW9ucygpIGluIHRoZQorICAgICMgX3Vu
aXR0ZXN0LnB5IGZpbGUuCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9jb25maWcpOgor
ICAgICAgICAiIiJJbml0aWFsaXplIGEgTW9kaWZpZXJNYXRjaGVyIGFyZ3VtZW50IHdpdGggdGhl
IFRlc3RDb25maWd1cmF0aW9uIGl0CisgICAgICAgIHNob3VsZCBiZSBtYXRjaGVkIGFnYWluc3Qu
IiIiCisgICAgICAgIHNlbGYudGVzdF9jb25maWcgPSB0ZXN0X2NvbmZpZworICAgICAgICBzZWxm
LmFsbG93ZWRfY29uZmlndXJhdGlvbnMgPSB0ZXN0X2NvbmZpZy5hbGxfdGVzdF9jb25maWd1cmF0
aW9ucygpCisgICAgICAgIHNlbGYubWFjcm9zID0gc2VsZi5NQUNST1MKKworICAgICAgICBzZWxm
LnJlZ2V4ZXNfdG9faWdub3JlID0ge30KKyAgICAgICAgZm9yIHJlZ2V4X3N0ciBpbiBzZWxmLlJF
R0VYRVNfVE9fSUdOT1JFOgorICAgICAgICAgICAgc2VsZi5yZWdleGVzX3RvX2lnbm9yZVtyZWdl
eF9zdHJdID0gcmUuY29tcGlsZShyZWdleF9zdHIpCisKKyAgICAgICAgIyBLZWVwIGEgc2V0IG9m
IGFsbCBvZiB0aGUgbGVnYWwgbW9kaWZpZXJzIGZvciBxdWljayBjaGVja2luZy4KKyAgICAgICAg
c2VsZi5fYWxsX21vZGlmaWVycyA9IHNldCgpCisKKyAgICAgICAgIyBLZWVwIGEgZGljdCBtYXBw
aW5nIHZhbHVlcyBiYWNrIHRvIHRoZWlyIGNhdGVnb3JpZXMuCisgICAgICAgIHNlbGYuX2NhdGVn
b3JpZXNfZm9yX21vZGlmaWVycyA9IHt9CisgICAgICAgIGZvciBjb25maWcgaW4gc2VsZi5hbGxv
d2VkX2NvbmZpZ3VyYXRpb25zOgorICAgICAgICAgICAgZm9yIGNhdGVnb3J5LCBtb2RpZmllciBp
biBjb25maWcuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9jYXRlZ29yaWVzX2Zvcl9t
b2RpZmllcnNbbW9kaWZpZXJdID0gY2F0ZWdvcnkKKyAgICAgICAgICAgICAgICBzZWxmLl9hbGxf
bW9kaWZpZXJzLmFkZChtb2RpZmllcikKKworICAgIGRlZiBtYXRjaChzZWxmLCBvcHRpb25zKToK
KyAgICAgICAgIiIiQ2hlY2tzIGEgbGlzdCBvZiBvcHRpb25zIGFnYWluc3QgdGhlIGNvbmZpZyBz
ZXQgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBPcHRpb25zIG1heSBiZSBlaXRoZXIgYWN0
dWFsIG1vZGlmaWVyIHN0cmluZ3MsICJtYWNybyIgc3RyaW5ncworICAgICAgICB0aGF0IGdldCBl
eHBhbmRlZCB0byBhIGxpc3Qgb2YgbW9kaWZpZXJzLCBvciBzdHJpbmdzIHRoYXQgYXJlIGFsbG93
ZWQKKyAgICAgICAgdG8gYmUgaWdub3JlZC4gQWxsIG9mIHRoZSBvcHRpb25zIG11c3QgYmUgcGFz
c2VkIGluIGluIGxvd2VyIGNhc2UuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1h
dGNoaW5nIGNhdGVnb3JpZXMsIG9yIE5PX01BVENIICgtMSkgaWYgaXQKKyAgICAgICAgZG9lc24n
dCBtYXRjaCBvciB0aGVyZSB3ZXJlIGVycm9ycyBmb3VuZC4gTWF0Y2hlcyBhcmUgcHJpb3JpdGl6
ZWQKKyAgICAgICAgYnkgdGhlIG51bWJlciBvZiBtYXRjaGluZyBjYXRlZ29yaWVzLCBiZWNhdXNl
IHRoZSBtb3JlIHNwZWNpZmljCisgICAgICAgIHRoZSBvcHRpb25zIGxpc3QsIHRoZSBtb3JlIGNh
dGVnb3JpZXMgd2lsbCBtYXRjaC4KKworICAgICAgICBUaGUgcmVzdWx0cyBvZiB0aGUgbW9zdCBy
ZWNlbnQgbWF0Y2ggYXJlIGF2YWlsYWJsZSBpbiB0aGUgJ29wdGlvbnMnLAorICAgICAgICAnbW9k
aWZpZXJzJywgJ251bV9tYXRjaGVzJywgJ2Vycm9ycycsIGFuZCAnd2FybmluZ3MnIHByb3BlcnRp
ZXMuCisgICAgICAgICIiIgorICAgICAgICByZXN1bHQgPSBNb2RpZmllck1hdGNoUmVzdWx0KG9w
dGlvbnMpCisgICAgICAgIHNlbGYuX3BhcnNlKHJlc3VsdCkKKyAgICAgICAgaWYgcmVzdWx0LmVy
cm9yczoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgc2VsZi5fY291bnRfbWF0
Y2hlcyhyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfcGFyc2Uoc2Vs
ZiwgcmVzdWx0KToKKyAgICAgICAgIyBGSVhNRTogU2hvdWxkIHdlIHdhcm4gYWJvdXQgbGluZXMg
aGF2aW5nIGV2ZXJ5IHZhbHVlIGluIGEgY2F0ZWdvcnk/CisgICAgICAgIGZvciBvcHRpb24gaW4g
cmVzdWx0Lm9wdGlvbnM6CisgICAgICAgICAgICBzZWxmLl9wYXJzZV9vbmUob3B0aW9uLCByZXN1
bHQpCisKKyAgICBkZWYgX3BhcnNlX29uZShzZWxmLCBvcHRpb24sIHJlc3VsdCk6CisgICAgICAg
IGlmIG9wdGlvbiBpbiBzZWxmLl9hbGxfbW9kaWZpZXJzOgorICAgICAgICAgICAgc2VsZi5fYWRk
X21vZGlmaWVyKG9wdGlvbiwgcmVzdWx0KQorICAgICAgICBlbGlmIG9wdGlvbiBpbiBzZWxmLm1h
Y3JvczoKKyAgICAgICAgICAgIHNlbGYuX2V4cGFuZF9tYWNybyhvcHRpb24sIHJlc3VsdCkKKyAg
ICAgICAgZWxpZiBub3Qgc2VsZi5fbWF0Y2hlc19hbnlfcmVnZXgob3B0aW9uLCByZXN1bHQpOgor
ICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIlVucmVjb2duaXplZCBvcHRpb24gJyVz
JyIgJSBvcHRpb24pCisKKyAgICBkZWYgX2FkZF9tb2RpZmllcihzZWxmLCBvcHRpb24sIHJlc3Vs
dCk6CisgICAgICAgIGlmIG9wdGlvbiBpbiByZXN1bHQubW9kaWZpZXJzOgorICAgICAgICAgICAg
cmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBvcHRpb24pCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQubW9kaWZpZXJzLmFwcGVuZChvcHRpb24pCisK
KyAgICBkZWYgX2V4cGFuZF9tYWNybyhzZWxmLCBtYWNybywgcmVzdWx0KToKKyAgICAgICAgaWYg
bWFjcm8gaW4gcmVzdWx0Ll9tYXRjaGVkX21hY3JvczoKKyAgICAgICAgICAgIHJlc3VsdC5lcnJv
cnMuYXBwZW5kKCJNb3JlIHRoYW4gb25lICclcyciICUgbWFjcm8pCisgICAgICAgICAgICByZXR1
cm4KKworICAgICAgICBtb2RzID0gW10KKyAgICAgICAgZm9yIG1vZGlmaWVyIGluIHNlbGYubWFj
cm9zW21hY3JvXToKKyAgICAgICAgICAgIGlmIG1vZGlmaWVyIGluIHJlc3VsdC5vcHRpb25zOgor
ICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMuYXBwZW5kKCJDYW4ndCBzcGVjaWZ5IGJvdGgg
bW9kaWZpZXIgJyVzJyBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJtYWNybyAnJXMnIiAlIChtb2RpZmllciwgbWFjcm8pKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBtb2RzLmFwcGVuZChtb2RpZmllcikKKyAgICAgICAgcmVzdWx0Ll9tYXRj
aGVkX21hY3Jvcy5hZGQobWFjcm8pCisgICAgICAgIHJlc3VsdC5tb2RpZmllcnMuZXh0ZW5kKG1v
ZHMpCisKKyAgICBkZWYgX21hdGNoZXNfYW55X3JlZ2V4KHNlbGYsIG9wdGlvbiwgcmVzdWx0KToK
KyAgICAgICAgZm9yIHJlZ2V4X3N0ciwgcGF0dGVybiBpbiBzZWxmLnJlZ2V4ZXNfdG9faWdub3Jl
Lml0ZXJpdGVtcygpOgorICAgICAgICAgICAgaWYgcGF0dGVybi5tYXRjaChvcHRpb24pOgorICAg
ICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9yZWdleF9tYXRjaChyZWdleF9zdHIsIHJlc3VsdCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGRlZiBfaGFuZGxlX3JlZ2V4X21hdGNoKHNlbGYsIHJlZ2V4X3N0ciwgcmVzdWx0KToKKyAgICAg
ICAgaWYgKHJlZ2V4X3N0ciBpbiByZXN1bHQuX21hdGNoZWRfcmVnZXhlcyBhbmQKKyAgICAgICAg
ICAgIHJlZ2V4X3N0ciBub3QgaW4gc2VsZi5EVVBMSUNBVEVfUkVHRVhFU19BTExPV0VEKToKKyAg
ICAgICAgICAgIHJlc3VsdC5lcnJvcnMuYXBwZW5kKCJNb3JlIHRoYW4gb25lIG9wdGlvbiBtYXRj
aGluZyAnJXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleF9zdHIp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQuX21hdGNoZWRfcmVnZXhlcy5hZGQo
cmVnZXhfc3RyKQorCisgICAgZGVmIF9jb3VudF9tYXRjaGVzKHNlbGYsIHJlc3VsdCk6CisgICAg
ICAgICIiIlJldHVybnMgdGhlIG51bWJlciBvZiBtb2RpZmllcnMgdGhhdCBtYXRjaCB0aGUgdGVz
dCBjb25maWcuIiIiCisgICAgICAgIGNhdGVnb3JpemVkX21vZGlmaWVycyA9IHNlbGYuX2dyb3Vw
X2J5X2NhdGVnb3J5KHJlc3VsdC5tb2RpZmllcnMpCisgICAgICAgIHJlc3VsdC5udW1fbWF0Y2hl
cyA9IDAKKyAgICAgICAgZm9yIGNhdGVnb3J5LCBtb2RpZmllciBpbiBzZWxmLnRlc3RfY29uZmln
Lml0ZW1zKCk6CisgICAgICAgICAgICBpZiBjYXRlZ29yeSBpbiBjYXRlZ29yaXplZF9tb2RpZmll
cnM6CisgICAgICAgICAgICAgICAgaWYgbW9kaWZpZXIgaW4gY2F0ZWdvcml6ZWRfbW9kaWZpZXJz
W2NhdGVnb3J5XToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm51bV9tYXRjaGVzICs9IDEK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQubnVtX21h
dGNoZXMgPSBzZWxmLk5PX01BVENICisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAg
ZGVmIF9ncm91cF9ieV9jYXRlZ29yeShzZWxmLCBtb2RpZmllcnMpOgorICAgICAgICAjIFJldHVy
bnMgYSBkaWN0IG9mIGNhdGVnb3J5IG5hbWUgLT4gbGlzdCBvZiBtb2RpZmllcnMuCisgICAgICAg
IG1vZGlmaWVyc19ieV9jYXRlZ29yeSA9IHt9CisgICAgICAgIGZvciBtIGluIG1vZGlmaWVyczoK
KyAgICAgICAgICAgIG1vZGlmaWVyc19ieV9jYXRlZ29yeS5zZXRkZWZhdWx0KHNlbGYuX2NhdGVn
b3J5KG0pLCBbXSkuYXBwZW5kKG0pCisgICAgICAgIHJldHVybiBtb2RpZmllcnNfYnlfY2F0ZWdv
cnkKKworICAgIGRlZiBfY2F0ZWdvcnkoc2VsZiwgbW9kaWZpZXIpOgorICAgICAgICByZXR1cm4g
c2VsZi5fY2F0ZWdvcmllc19mb3JfbW9kaWZpZXJzW21vZGlmaWVyXQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBl
Y3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQppbmRleCA4Zjll
NWRkMGFhYTVjNjM4YmM0MzM3MWFmNWM5MDU5YmRhZTUyNjgzLi5mZDcxM2VjNjFjYTkzNjk1Yjg2
MmJiNmY2YmFkNTg1MzZiZDk5ZTg0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtMzIsNiArMzIsNyBAQAogaW1wb3J0
IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0Citmcm9t
IHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBiYXNlCiBmcm9tIHdlYmtpdHB5Lmxh
eW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgKgogCiBj
bGFzcyBGdW5jdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTc4LDYgKzc5LDkgQEAg
Y2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIAogY2xhc3MgQmFzZSh1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBOb3RlIHRoYXQgYWxsIG9mIHRoZXNlIHRlc3RzIGFy
ZSB3cml0dGVuIGFzc3VtaW5nIHRoZSBjb25maWd1cmF0aW9uCisgICAgIyBiZWluZyB0ZXN0ZWQg
aXMgTWFjIExlb3BhcmQsIFJlbGVhc2UgYnVpbGQuCisKICAgICBkZWYgX19pbml0X18oc2VsZiwg
dGVzdEZ1bmMsIHNldFVwPU5vbmUsIHRlYXJEb3duPU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUpOgog
ICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3QnLCBOb25lKQogICAgICAgICBzZWxm
Ll9mcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KQEAgLTEwNCwxMyArMTA4LDEyIEBAIEJVR19U
RVNUIFdPTlRGSVggOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sID0gSU1B
R0UKIEJVR19URVNUIFdPTlRGSVggV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9
IElNQUdFCiAiIiIKIAotICAgIGRlZiBwYXJzZV9leHAoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVy
cmlkZXM9Tm9uZSwgaXNfbGludF9tb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgaXNfZGVi
dWdfbW9kZT1GYWxzZSk6CisgICAgZGVmIHBhcnNlX2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92
ZXJyaWRlcz1Ob25lLCBpc19saW50X21vZGU9RmFsc2UpOgorICAgICAgICB0ZXN0X2NvbmZpZyA9
IHNlbGYuX3BvcnQudGVzdF9jb25maWd1cmF0aW9uKCkKICAgICAgICAgc2VsZi5fZXhwID0gVGVz
dEV4cGVjdGF0aW9ucyhzZWxmLl9wb3J0LAogICAgICAgICAgICAgIHRlc3RzPXNlbGYuZ2V0X2Jh
c2ljX3Rlc3RzKCksCiAgICAgICAgICAgICAgZXhwZWN0YXRpb25zPWV4cGVjdGF0aW9ucywKLSAg
ICAgICAgICAgICB0ZXN0X3BsYXRmb3JtX25hbWU9c2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25h
bWUoKSwKLSAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPWlzX2RlYnVnX21vZGUsCisgICAgICAg
ICAgICAgdGVzdF9jb25maWc9dGVzdF9jb25maWcsCiAgICAgICAgICAgICAgaXNfbGludF9tb2Rl
PWlzX2xpbnRfbW9kZSwKICAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQogCkBAIC0x
MTksNyArMTIyLDcgQEAgQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sID0gSU1BR0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFtyZXN1bHRd
KSkKIAogCi1jbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdChCYXNlKToKK2NsYXNzIEJhc2ljVGVz
dHMoQmFzZSk6CiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2Vf
ZXhwKHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQogICAgICAgICBzZWxmLmFzc2VydF9l
eHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCkBAIC0xMjcsMjMgKzEzMCwx
NCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVzdChCYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRfZXhwKCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUykKICAgICAgICAgc2VsZi5hc3NlcnRfZXhw
KCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sJywgUEFTUykKIAorCitjbGFzcyBNaXNjVGVz
dHMoQmFzZSk6CiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVzdWx0cyhzZWxmKToKICAgICAgICAg
c2VsZi5wYXJzZV9leHAoJ0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
IENSQVNIJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9leHAuZ2V0X2V4cGVjdGF0
aW9ucygKICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcpKSwKICAgICAgICAgICAgIHNldChbVEVYVCwgQ1JBU0hdKSkKIAotICAgIGRlZiB0ZXN0
X3ByZWNlZGVuY2Uoc2VsZik6Ci0gICAgICAgICMgVGhpcyB0ZXN0cyBoYW5kbGluZyBwcmVjZWRl
bmNlIG9mIHNwZWNpZmljIGxpbmVzIG92ZXIgZGlyZWN0b3JpZXMKLSAgICAgICAgIyBhbmQgdGVz
dHMgZXhwZWN0YXRpb25zIGNvdmVyaW5nIGVudGlyZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgZXhw
X3N0ciA9ICIiIgotQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJV
R1ggV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKLSIiIgotICAgICAgICBzZWxm
LnBhcnNlX2V4cChleHBfc3RyKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQotCiAgICAgZGVmIHRlc3RfY2F0ZWdvcnlf
ZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdCBjaGVja3MgdW5rbm93biB0
ZXN0cyBhcmUgbm90IHByZXNlbnQgaW4gdGhlCiAgICAgICAgICMgZXhwZWN0YXRpb25zIGFuZCB0
aGF0IGtub3duIHRlc3QgcGFydCBvZiBhIHRlc3QgY2F0ZWdvcnkgaXMKQEAgLTE1OCwyMCArMTUy
LDYgQEAgQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmtub3duX3Rlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgn
ZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAgZGVmIHRlc3RfcmVs
ZWFzZV9tb2RlKHNlbGYpOgotICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAg
ICBpc19kZWJ1Z19tb2RlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1gg
UkVMRUFTRSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAg
ICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgUEFTUykKLSAgICAgICAgc2VsZi5wYXJz
ZV9leHAoJ0JVR1ggREVCVUcgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywK
LSAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1GYWxzZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBQQVNTKQotICAgICAg
ICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9RmFsc2Up
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywg
VEVYVCkKLQogICAgIGRlZiB0ZXN0X2dldF9vcHRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLnBh
cnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLl9leHAuZ2V0X29wdGlvbnMoCkBAIC0yMTYsNyArMTk2LDcgQEAgU0tJUCA6
IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKFRydWUsICJQYXJzZUVycm9yIHdhc24ndCByYWlzZWQiKQogICAgICAgICBleGNlcHQg
UGFyc2VFcnJvciwgZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmZhdGFsKQotICAg
ICAgICAgICAgZXhwX2Vycm9ycyA9IFt1J0xpbmU6MSBJbnZhbGlkIG1vZGlmaWVyIGZvciB0ZXN0
OiBmb28gZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywKKyAgICAgICAgICAgIGV4cF9lcnJv
cnMgPSBbdSJMaW5lOjEgVW5yZWNvZ25pemVkIG9wdGlvbiAnZm9vJyBmYWlsdXJlcy9leHBlY3Rl
ZC90ZXh0Lmh0bWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MiBNaXNzaW5n
IGV4cGVjdGF0aW9ucy4gWycgZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddIl0KICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhwX2Vy
cm9ycykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vycm9y
cykKQEAgLTIzMiw3NyArMjEyLDE2MCBAQCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2Uu
aHRtbCIiIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4o
bWFwKHN0ciwgZXhwX2Vycm9ycykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVy
cm9ycywgZXhwX2Vycm9ycykKIAotICAgIGRlZiB0ZXN0X3N5bnRheF9taXNzaW5nX2V4cGVjdGF0
aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5w
YXJzZV9leHAoIkJVR19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAiQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gSU1BR0UiKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsIElNQUdFKQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVzX19kdXBs
aWNhdGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYu
cGFyc2VfZXhwLAorICAgICAgICAgICAgICJCVUdfRVhQOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0
Lmh0bWwgPSBURVhUIiwKKyAgICAgICAgICAgICAiIiIKK0JVR19PVkVSUklERSA6IGZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFCitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwgPSBDUkFTSAorIiIiKQorCisgICAgZGVmIHRlc3RfcGl4ZWxfdGVzdHNf
ZmxhZyhzZWxmKToKKyAgICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNf
ZW5hYmxlZCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0
ZWRfcmVzdWx0KAorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwg
cGl4ZWxfdGVzdHNfZW5hYmxlZCkKKworICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9i
YXNpY19leHBlY3RhdGlvbnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBGYWxzZSkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcsIENSQVNILCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywg
SU1BR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1s
JywgUEFTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgU0tJ
UCwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nlcy90ZXh0Lmh0
bWwnLCBQQVNTLCBGYWxzZSkpCisKKworY2xhc3MgRXhwZWN0YXRpb25TeW50YXhUZXN0cyhCYXNl
KToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2V4cGVjdGF0aW9uKHNlbGYpOgogICAgICAgICAjIFRo
aXMgaXMgbWlzc2luZyB0aGUgZXhwZWN0YXRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAn
QlVHX1RFU1Q6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGlzX2RlYnVnX21vZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKQogCi0gICAgZGVmIHRlc3Rf
c3ludGF4X2ludmFsaWRfb3B0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X21pc3NpbmdfY29sb24o
c2VsZik6CisgICAgICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMgYW5kIHRoZSAn
OicKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVCBGT086IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFBBU1MnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgdGVzdF9zeW50YXhfaW52
YWxpZF9leHBlY3RhdGlvbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIGV4
cGVjdGF0aW9uLgorICAgIGRlZiBkaXNhYmxlZF90ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToK
KyAgICAgICAgIyBGSVhNRTogRW5hYmxlIHRoaXMgdGVzdCBhbmQgZml4IHRoZSB1bmRlcmx5aW5n
IGJ1Zy4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9l
eHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sID0gRk9PJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNU
OiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBQQVNTIDonKQogCi0gICAgZGVmIHRlc3Rf
c3ludGF4X21pc3NpbmdfYnVnaWQoc2VsZik6CisgICAgZGVmIHRlc3RfdG9vX21hbnlfZXF1YWxz
X3NpZ25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxm
LnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUID0gSU1BR0UnKQorCisgICAgZGVmIHRlc3RfdW5y
ZWNvZ25pemVkX2V4cGVjdGF0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQ
YXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JV
R19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBVTktOT1dOJykKKworICAgIGRl
ZiB0ZXN0X21hY3JvKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBNQUMt
TEVPUEFSRCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAg
ICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCisKKworY2xhc3MgU2VtYW50aWNUZXN0cyhC
YXNlKToKKyAgICBkZWYgdGVzdF9idWdfZm9ybWF0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgJ0JVRzEyMzQgOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfYnVnaWQo
c2VsZik6CiAgICAgICAgICMgVGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVycm9yLgogICAg
ICAgICBzZWxmLnBhcnNlX2V4cCgnU0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IFRFWFQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgbGVuKHNlbGYu
X2V4cC5fZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X25vbl9mYXRhbF9lcnJvcnMoKSksIDEpCiAKLSAg
ICBkZWYgdGVzdF9zZW1hbnRpY19zbG93X2FuZF90aW1lb3V0KHNlbGYpOgorICAgIGRlZiB0ZXN0
X3Nsb3dfYW5kX3RpbWVvdXQoc2VsZik6CiAgICAgICAgICMgQSB0ZXN0IGNhbm5vdCBiZSBTTE9X
IGFuZCBleHBlY3RlZCB0byBUSU1FT1VULgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJz
ZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKICAgICAgICAgICAgICdCVUdfVEVTVCBTTE9XIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVCcpCiAKLSAgICBkZWYgdGVzdF9z
ZW1hbnRpY19yZWJhc2VsaW5lKHNlbGYpOgorICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmUoc2VsZik6
CiAgICAgICAgICMgQ2FuJ3QgbGludCBhIGZpbGUgdy8gJ1JFQkFTRUxJTkUnIGluIGl0LgogICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKICAgICAg
ICAgICAgICdCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gVEVYVCcsCiAgICAgICAgICAgICBpc19saW50X21vZGU9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0
X3NlbWFudGljX2R1cGxpY2F0ZXMoc2VsZik6CisgICAgZGVmIHRlc3RfZHVwbGljYXRlcyhzZWxm
KToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAs
ICIiIgotQlVHX1RFU1QgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCi1CVUdf
VEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IElNQUdFIiIiKQorQlVHX0VYUCA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKK0JVR19FWFAgOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIikKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKLSAgICAgICAgICAgIHNlbGYuZ2V0X2Jhc2lj
X2V4cGVjdGF0aW9ucygpLCAiIiIKLUJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gVEVYVAotQlVHX1RFU1QgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFH
RSIiIikKKyAgICAgICAgICAgIHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpLCBvdmVycmlk
ZXM9IiIiCitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
CitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIiwg
KQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfbWlzc2luZ19maWxlKHNlbGYpOgorICAgIGRlZiB0
ZXN0X21pc3NpbmdfZmlsZShzZWxmKToKICAgICAgICAgIyBUaGlzIHNob3VsZCBsb2cgYSBub24t
ZmF0YWwgZXJyb3IuCiAgICAgICAgIHNlbGYucGFyc2VfZXhwKCdCVUdfVEVTVCA6IG1pc3Npbmdf
ZmlsZS5odG1sID0gVEVYVCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAg
ICBsZW4oc2VsZi5fZXhwLl9leHBlY3RlZF9mYWlsdXJlcy5nZXRfbm9uX2ZhdGFsX2Vycm9ycygp
KSwgMSkKIAogCi0gICAgZGVmIHRlc3Rfb3ZlcnJpZGVzKHNlbGYpOgotICAgICAgICBzZWxmLnBh
cnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgIiIiCi1CVUdfT1ZFUlJJREUg
OiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIikKLSAgICAgICAgc2VsZi5h
c3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBJTUFHRSkKK2NsYXNzIFBy
ZWNlZGVuY2VUZXN0cyhCYXNlKToKKyAgICBkZWYgdGVzdF9maWxlX292ZXJfZGlyZWN0b3J5KHNl
bGYpOgorICAgICAgICAjIFRoaXMgdGVzdHMgaGFuZGxpbmcgcHJlY2VkZW5jZSBvZiBzcGVjaWZp
YyBsaW5lcyBvdmVyIGRpcmVjdG9yaWVzCisgICAgICAgICMgYW5kIHRlc3RzIGV4cGVjdGF0aW9u
cyBjb3ZlcmluZyBlbnRpcmUgZGlyZWN0b3JpZXMuCisgICAgICAgIGV4cF9zdHIgPSAiIiIKK0JV
R1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCitCVUdYIFdPTlRGSVggOiBm
YWlsdXJlcy9leHBlY3RlZCA9IElNQUdFCisiIiIKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoZXhw
X3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwnLCBURVhUKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL2Ny
YXNoLmh0bWwnLCBJTUFHRSkKIAotICAgIGRlZiB0ZXN0X21hdGNoZXNfYW5fZXhwZWN0ZWRfcmVz
dWx0KHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdYIFdPTlRGSVggOiBmYWlsdXJl
cy9leHBlY3RlZCA9IElNQUdFCitCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVAorIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKKyAgICAgICAg
c2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCiAK
LSAgICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5hYmxlZCk6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAot
ICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwgcGl4ZWxfdGVzdHNf
ZW5hYmxlZCkKKyAgICBkZWYgdGVzdF9hbWJpZ3VvdXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKK0JVR19URVNUIFJFTEVB
U0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUworQlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQu
aHRtbCA9IEZBSUwKKyIiIikKIAotICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNp
Y19leHBlY3RhdGlvbnMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBGYWxzZSkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCcsIENSQVNILCBUcnVlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywgSU1B
R0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywg
UEFTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgU0tJUCwg
RmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nlcy90ZXh0Lmh0bWwn
LCBQQVNTLCBGYWxzZSkpCisgICAgZGVmIHRlc3RfbW9yZV9tb2RpZmllcnMoc2VsZik6CisgICAg
ICAgIGV4cF9zdHIgPSAiIiIKK0JVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0g
UEFTUworQlVHX1RFU1QgTUFDIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAorIiIi
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCBl
eHBfc3RyKQorCisgICAgZGVmIHRlc3Rfb3JkZXJfaW5fZmlsZShzZWxmKToKKyAgICAgICAgZXhw
X3N0ciA9ICIiIgorQlVHX1RFU1QgTUFDIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVY
VAorQlVHX1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCisiIiIKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsIGV4cF9zdHIp
CisKKyAgICBkZWYgdGVzdF92ZXJzaW9uX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgZXhwX3N0
ciA9ICIiIgorQlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNU
IE1BQyBMRU9QQVJEIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKworICAg
IGRlZiB0ZXN0X21hY3JvX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgZXhwX3N0ciA9ICIiIgor
QlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNUIE1BQy1MRU9Q
QVJEIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKIAogCiBjbGFzcyBSZWJh
c2VsaW5pbmdUZXN0KEJhc2UpOgpAQCAtMzI3LDcgKzM5MCw5IEBAIEJVR19URVNUIFJFQkFTRUxJ
TkUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCiAgICAgZGVmIHRlc3RfcmVt
b3ZlX2V4cGFuZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSZW1vdmUoJ21hYycsCiAgICAg
ICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVFxuJywKLSAgICAgICAgICAgICdCVUdYIFJFQkFTRUxJTkUgV0lOIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuJykKKyIiIkJVR1ggUkVCQVNFTElORSBXSU4gOiBmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCitCVUdYIFJFQkFTRUxJTkUgV0lOLVhQIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorIiIiKQogCiAgICAgZGVmIHRlc3Rf
cmVtb3ZlX21hY193aW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCdtYWMnLApA
QCAtMzQ1LDUgKzQxMCw4NiBAQCBCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sID0gVEVYVAogICAgICAgICAgICAgJ1xuXG4nKQogCiAKK2NsYXNzIE1vZGlm
aWVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAg
ICAgcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIE5vbmUpCisgICAgICAgIHNlbGYuY29uZmln
ID0gcG9ydF9vYmoudGVzdF9jb25maWd1cmF0aW9uKCkKKyAgICAgICAgc2VsZi5tYXRjaGVyID0g
TW9kaWZpZXJNYXRjaGVyKHNlbGYuY29uZmlnKQorCisgICAgZGVmIG1hdGNoKHNlbGYsIG1vZGlm
aWVycywgZXhwZWN0ZWRfbnVtX21hdGNoZXM9LTEsIHZhbHVlcz1Ob25lLCBudW1fZXJyb3JzPTAp
OgorICAgICAgICBtYXRjaGVyID0gc2VsZi5tYXRjaGVyCisgICAgICAgIGlmIHZhbHVlczoKKyAg
ICAgICAgICAgIG1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIoc2VsZi5GYWtlVGVzdENvbmZpZ3Vy
YXRpb24odmFsdWVzKSkKKyAgICAgICAgbWF0Y2hfcmVzdWx0ID0gbWF0Y2hlci5tYXRjaChtb2Rp
ZmllcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1hdGNoX3Jlc3VsdC53YXJuaW5n
cyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1hdGNoX3Jlc3VsdC5lcnJvcnMp
LCBudW1fZXJyb3JzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGNoX3Jlc3VsdC5udW1f
bWF0Y2hlcywgZXhwZWN0ZWRfbnVtX21hdGNoZXMsCisgICAgICAgICAgICAgJ21hdGNoKCVzLCAl
cykgcmV0dXJuZWQgLT4gJWQsIGV4cGVjdGVkICVkJyAlCisgICAgICAgICAgICAgKG1vZGlmaWVy
cywgc3RyKHNlbGYuY29uZmlnLnZhbHVlcygpKSwKKyAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0
Lm51bV9tYXRjaGVzLCBleHBlY3RlZF9udW1fbWF0Y2hlcykpCisKKyAgICBkZWYgdGVzdF9iYWRf
bWF0Y2hfbW9kaWZpZXIoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydmb28nXSwgbnVtX2Vy
cm9ycz0xKQorCisgICAgZGVmIHRlc3Rfbm9uZShzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChb
XSwgMCkKKworICAgIGRlZiB0ZXN0X29uZShzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ2xl
b3BhcmQnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ21hYyddLCAxKQorICAgICAgICBzZWxm
Lm1hdGNoKFsncmVsZWFzZSddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsnY3B1J10sIDEpCisg
ICAgICAgIHNlbGYubWF0Y2goWyd4ODYnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJ10s
IC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnZ3B1J10sIC0xKQorICAgICAgICBzZWxmLm1hdGNo
KFsnZGVidWcnXSwgLTEpCisKKyAgICBkZWYgdGVzdF90d28oc2VsZik6CisgICAgICAgIHNlbGYu
bWF0Y2goWydsZW9wYXJkJywgJ3JlbGVhc2UnXSwgMikKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hw
JywgJ3JlbGVhc2UnXSwgLTEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdyZWxlYXNlJ10s
IC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnLCAnbGVvcGFyZCddLCAxKQor
CisgICAgZGVmIHRlc3RfdGhyZWUoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVv
cGFyZCcsICdsZW9wYXJkJywgJ3JlbGVhc2UnXSwgMikKKyAgICAgICAgc2VsZi5tYXRjaChbJ2xl
b3BhcmQnLCAnZGVidWcnLCAneDg2J10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFy
ZCcsICdyZWxlYXNlJywgJ3g4NiddLCAzKQorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFyZCcs
ICdjcHUnLCAncmVsZWFzZSddLCAzKQorCisgICAgZGVmIHRlc3RfZm91cihzZWxmKToKKyAgICAg
ICAgc2VsZi5tYXRjaChbJ2xlb3BhcmQnLCAncmVsZWFzZScsICdjcHUnLCAneDg2J10sIDQpCisg
ICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICdsZW9wYXJkJywgJ3JlbGVhc2UnLCAn
Y3B1J10sIDMpCisgICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICdsZW9wYXJkJywg
J2RlYnVnJywgJ2NwdSddLCAtMSkKKworICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdml0eShz
ZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ01hYyddLCBudW1fZXJyb3JzPTEpCisgICAgICAg
IHNlbGYubWF0Y2goWydNQUMnXSwgbnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxmLm1hdGNoKFsn
bWFjJ10sIDEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVzKHNlbGYpOgorICAgICAgICBzZWxm
Lm1hdGNoKFsncmVsZWFzZScsICdyZWxlYXNlJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2Vs
Zi5tYXRjaChbJ21hYy1sZW9wYXJkJywgJ2xlb3BhcmQnXSwgbnVtX2Vycm9ycz0xKQorICAgICAg
ICBzZWxmLm1hdGNoKFsnbWFjLWxlb3BhcmQnLCAnbWFjLWxlb3BhcmQnXSwgbnVtX2Vycm9ycz0x
KQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZScsICd4cCcsICdyZWxlYXNlJ10s
IG51bV9lcnJvcnM9MikKKyAgICAgICAgc2VsZi5tYXRjaChbJ3JlYmFzZWxpbmUnLCAncmViYXNl
bGluZSddLCBudW1fZXJyb3JzPTEpCisKKyAgICBkZWYgdGVzdF91bmtub3duX29wdGlvbihzZWxm
KToKKyAgICAgICAgc2VsZi5tYXRjaChbJ3ZtcyddLCBudW1fZXJyb3JzPTEpCisKKyAgICBkZWYg
dGVzdF9kdXBsaWNhdGVfYnVncyhzZWxmKToKKyAgICAgICAgIyBCVUcqIHJlZ2V4ZXMgY2FuIGFw
cGVhciBtdWx0aXBsZSB0aW1lcy4KKyAgICAgICAgc2VsZi5tYXRjaChbJ2J1Z2ZvbycsICdidWdi
YXInXSwgMCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY29tYmluYXRpb25zKHNlbGYpOgorICAg
ICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSByYWlzZSBhbiBlcnJvciBpbnN0ZWFk
IG9mIE5PX01BVENILgorICAgICAgICBzZWxmLm1hdGNoKFsnbWFjJywgJ3hwJ10sIG51bV9lcnJv
cnM9MCkKKworICAgIGRlZiB0ZXN0X3JlZ2V4ZXNfYXJlX2lnbm9yZWQoc2VsZik6CisgICAgICAg
IHNlbGYubWF0Y2goWydidWcxMjN4eScsICdyZWJhc2VsaW5lJywgJ3dvbnRmaXgnLCAnc2xvdycs
ICdza2lwJ10sIDApCisKKyAgICBkZWYgdGVzdF9ub25lX2lzX2ludmFsaWQoc2VsZik6CisgICAg
ICAgIHNlbGYubWF0Y2goWydub25lJ10sIG51bV9lcnJvcnM9MSkKKworCiBpZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X3J1bm5lci5weQppbmRleCA2YzA3ODUwMGVhZWI3YTk4ODg4NWIyMTg0OWQwYTY1ZWJiMjBmMjAy
Li5lYWQ3MDU4MDFmZDgyMzJjZTkxODUxNmI4NjU1OGUyNWFhOTRmNTE1IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1
bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X3J1bm5lci5weQpAQCAtMjE0LDIxICsyMTQsMTMgQEAgY2xhc3MgVGVzdFJ1
bm5lcjoKIAogICAgIGRlZiBsaW50KHNlbGYpOgogICAgICAgICBsaW50X2ZhaWxlZCA9IEZhbHNl
Ci0KLSAgICAgICAgIyBDcmVhdGluZyB0aGUgZXhwZWNhdGlvbnMgZm9yIGVhY2ggcGxhdGZvcm0v
Y29uZmlndXJhdGlvbiBwYWlyIGRvZXMKLSAgICAgICAgIyBhbGwgdGhlIHRlc3QgbGlzdCBwYXJz
aW5nIGFuZCBlbnN1cmVzIGl0J3MgY29ycmVjdCBzeW50YXggKGUuZy4gbm8KLSAgICAgICAgIyBk
dXBlcykuCi0gICAgICAgIGZvciBwbGF0Zm9ybV9uYW1lIGluIHNlbGYuX3BvcnQudGVzdF9wbGF0
Zm9ybV9uYW1lcygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYucGFy
c2VfZXhwZWN0YXRpb25zKHBsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGU9VHJ1ZSkKLSAgICAg
ICAgICAgIGV4Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yOgotICAgICAgICAgICAg
ICAgIGxpbnRfZmFpbGVkID0gVHJ1ZQorICAgICAgICBmb3IgdGVzdF9jb25maWd1cmF0aW9uIGlu
IHNlbGYuX3BvcnQuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKToKICAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucyhwbGF0Zm9ybV9uYW1lLCBp
c19kZWJ1Z19tb2RlPUZhbHNlKQorICAgICAgICAgICAgICAgIHNlbGYubGludF9leHBlY3RhdGlv
bnModGVzdF9jb25maWd1cmF0aW9uKQogICAgICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRp
b25zLlBhcnNlRXJyb3I6CiAgICAgICAgICAgICAgICAgbGludF9mYWlsZWQgPSBUcnVlCisgICAg
ICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiIikKIAotICAgICAgICBzZWxmLl9wcmlu
dGVyLndyaXRlKCIiKQogICAgICAgICBpZiBsaW50X2ZhaWxlZDoKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIkxpbnQgZmFpbGVkLiIpCiAgICAgICAgICAgICByZXR1cm4gLTEKQEAgLTIzNiwyMiAr
MjI4LDI4IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgIF9sb2cuaW5mbygiTGludCBzdWNj
ZWVkZWQuIikKICAgICAgICAgcmV0dXJuIDAKIAotICAgIGRlZiBwYXJzZV9leHBlY3RhdGlvbnMo
c2VsZiwgdGVzdF9wbGF0Zm9ybV9uYW1lLCBpc19kZWJ1Z19tb2RlKToKKyAgICBkZWYgbGludF9l
eHBlY3RhdGlvbnMoc2VsZiwgY29uZmlnKToKKyAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKKyAg
ICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKKyAgICAgICAgICAgIHBv
cnQsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9u
cygpLAorICAgICAgICAgICAgY29uZmlnLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saW50
X3Rlc3RfZmlsZXMsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRl
cygpKQorCisgICAgZGVmIHBhcnNlX2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIiIiUGFy
c2UgdGhlIGV4cGVjdGF0aW9ucyBmcm9tIHRoZSB0ZXN0X2xpc3QgZmlsZXMgYW5kIHJldHVybiBh
IGRhdGEKICAgICAgICAgc3RydWN0dXJlIGhvbGRpbmcgdGhlbS4gVGhyb3dzIGFuIGVycm9yIGlm
IHRoZSB0ZXN0X2xpc3QgZmlsZXMgaGF2ZQogICAgICAgICBpbnZhbGlkIHN5bnRheC4iIiIKLSAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXM6Ci0gICAgICAgICAgICB0ZXN0
X2ZpbGVzID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdF9maWxlcyA9IHNl
bGYuX3Rlc3RfZmlsZXMKLQotICAgICAgICBleHBlY3RhdGlvbnNfc3RyID0gc2VsZi5fcG9ydC50
ZXN0X2V4cGVjdGF0aW9ucygpCi0gICAgICAgIG92ZXJyaWRlc19zdHIgPSBzZWxmLl9wb3J0LnRl
c3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygpCisgICAgICAgIHBvcnQgPSBzZWxmLl9wb3J0CiAg
ICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3Rh
dGlvbnMoCi0gICAgICAgICAgICBzZWxmLl9wb3J0LCB0ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNf
c3RyLCB0ZXN0X3BsYXRmb3JtX25hbWUsCi0gICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBzZWxm
Ll9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKLSAgICAgICAgICAgIG92ZXJyaWRlcz1vdmVycmlk
ZXNfc3RyKQotICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zCisgICAgICAgICAgICBw
b3J0LAorICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcywKKyAgICAgICAgICAgIHBvcnQudGVz
dF9leHBlY3RhdGlvbnMoKSwKKyAgICAgICAgICAgIHBvcnQudGVzdF9jb25maWd1cmF0aW9uKCks
CisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKKyAgICAgICAgICAg
IHBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkpCiAKICAgICAjIEZJWE1FOiBUaGlz
IG1ldGhvZCBpcyB3YXkgdG9vIGxvbmcgYW5kIG5lZWRzIHRvIGJlIGJyb2tlbiBpbnRvIHBpZWNl
cy4KICAgICBkZWYgcHJlcGFyZV9saXN0c19hbmRfcHJpbnRfb3V0cHV0KHNlbGYpOgpAQCAtMzU4
LDkgKzM1Niw3IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICBzZWxmLl90ZXN0X2Zp
bGVzX2xpc3QgPSBmaWxlcyArIHNraXBfY2h1bmtfbGlzdAogICAgICAgICAgICAgc2VsZi5fdGVz
dF9maWxlcyA9IHNldChzZWxmLl90ZXN0X2ZpbGVzX2xpc3QpCiAKLSAgICAgICAgICAgIHNlbGYu
X2V4cGVjdGF0aW9ucyA9IHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKAotICAgICAgICAgICAgICAg
IHNlbGYuX3BvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKCksCi0gICAgICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5jb25maWd1cmF0aW9uID09ICdEZWJ1ZycpCisgICAgICAgICAgICBzZWxmLnBhcnNl
X2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoZmls
ZXMpCiAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzX2xpc3QgPSBmaWxlcwpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IGFlZWJj
NjY4Njg4MjEwYzhlMDNhMWM2MDI4OGQ4OWJiNWEwMmJkZTcuLjU2YTI0NTdhYzJiNjkxYTdiOTRi
NmI4YjgwMTA0MzI1OTc5OTRlYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBQb3J0KG9i
amVjdCk6CiAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCdjb25maWd1cmF0aW9uJywg
Tm9uZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIGlzIE5vbmU6CiAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRlZmF1bHRfY29u
ZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbiA9IE5vbmUKIAog
ICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJu
IHRoZSBudW1iZXIgb2YgRHVtcFJlbmRlclRyZWUgaW5zdGFuY2VzIHRvIHVzZSBmb3IgdGhpcwpA
QCAtNTc3LDYgKzU3OCwxOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYu
X2h0dHBfbG9jazoKICAgICAgICAgICAgIHNlbGYuX2h0dHBfbG9jay5jbGVhbnVwX2h0dHBfbG9j
aygpCiAKKyAgICAjCisgICAgIyBURVNUIEVYUEVDVEFUSU9OLVJFTEFURUQgTUVUSE9EUworICAg
ICMKKworICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgICIiIlJldHVy
bnMgdGhlIGN1cnJlbnQgVGVzdENvbmZpZ3VyYXRpb24gZm9yIHRoZSBwb3J0LiIiIgorICAgICAg
ICBpZiBub3Qgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uOgorICAgICAgICAgICAgc2VsZi5fdGVz
dF9jb25maWd1cmF0aW9uID0gVGVzdENvbmZpZ3VyYXRpb24oc2VsZikKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbgorCisgICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3VyYXRp
b25zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24oKS5hbGxf
dGVzdF9jb25maWd1cmF0aW9ucygpCisKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6
CiAgICAgICAgICIiIlJldHVybnMgdGhlIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGlzIHBvcnQu
CiAKQEAgLTU5MywxOCArNjA3LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzeW5j
IHVwIHRoZSB0d28gcmVwb3MuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgdGVz
dF9iYXNlX3BsYXRmb3JtX25hbWVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9m
IHRoZSAnYmFzZScgcGxhdGZvcm1zIG9uIHlvdXIgcG9ydC4gVGhlIGJhc2UKLSAgICAgICAgcGxh
dGZvcm1zIHJlcHJlc2VudCBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcywgb3BlcmF0aW5nIHN5c3Rl
bXMsCi0gICAgICAgIG9yIGltcGxlbWVudGF0aW9ucyAoYXMgb3Bwb3NlZCB0byBkaWZmZXJlbnQg
dmVyc2lvbnMgb2YgYSBzaW5nbGUKLSAgICAgICAgcGxhdGZvcm0pLiBGb3IgZXhhbXBsZSwgJ21h
YycgYW5kICd3aW4nIG1pZ2h0IGJlIGRpZmZlcmVudCBiYXNlCi0gICAgICAgIHBsYXRmb3Jtcywg
d2hlcmVhc2UgJ21hYy10aWdlcicgYW5kICdtYWMtbGVvcGFyZCcgbWlnaHQgYmUKLSAgICAgICAg
ZGlmZmVyZW50IHBsYXRmb3Jtcy4gVGhpcyByb3V0aW5lIGlzIHVzZWQgYnkgdGhlIHJlYmFzZWxp
bmluZyB0b29sCi0gICAgICAgIGFuZCB0aGUgZGFzaGJvYXJkcywgYW5kIHRoZSBzdHJpbmdzIGNv
cnJlc3BvbmQgdG8gdGhlIGlkZW50aWZpZXJzCi0gICAgICAgIGluIHlvdXIgdGVzdCBleHBlY3Rh
dGlvbnMgKCpub3QqIG5lY2Vzc2FyaWx5IHRoZSBwbGF0Zm9ybSBuYW1lcwotICAgICAgICB0aGVt
c2VsdmVzKS4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5iYXNl
X3Rlc3RfcGxhdGZvcm1zJykKLQogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX25hbWUoc2VsZik6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIHN0cmluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZl
biBwbGF0Zm9ybSBuYW1lCiAgICAgICAgIGluIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucy4gVGhpcyBt
YXkgYmUgdGhlIHNhbWUgYXMgbmFtZSgpLCBvciBpdApAQCAtODYzLDMgKzg2NSw2OCBAQCBjbGFz
cyBEcml2ZXI6CiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcignRHJpdmVyLnN0b3AnKQorCisKK2NsYXNzIFRlc3RDb25maWd1cmF0aW9uKG9i
amVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQ9Tm9uZSwgb3M9Tm9uZSwgdmVyc2lv
bj1Ob25lLCBhcmNoaXRlY3R1cmU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYnVpbGRfdHlwZT1O
b25lLCBncmFwaGljc190eXBlPU5vbmUpOgorCisgICAgICAgICMgRklYTUU6IFdlIGNhbiBnZXQg
dGhlIE8vUyBhbmQgdmVyc2lvbiBmcm9tIHRlc3RfcGxhdGZvcm1fbmFtZSgpCisgICAgICAgICMg
YW5kIHZlcnNpb24oKSBmb3Igbm93LCBidXQgdGhvc2Ugc2hvdWxkIGdvIGF3YXkgYW5kIGJlIGNs
ZWFuZWQgdXAKKyAgICAgICAgIyB3aXRoIG1vcmUgZ2VuZXJpYyBtZXRob2RzIGxpa2Ugb3BlcmF0
aW9uX3N5c3RlbSgpIGFuZCBvc192ZXJzaW9uKCkKKyAgICAgICAgIyBvciBzb21ldGhpbmcuIE5v
dGUgdGhhdCB3ZSBuZWVkIHRvIHN0cmlwIHRoZSBsZWFkaW5nICctJyBvZmYgdGhlCisgICAgICAg
ICMgdmVyc2lvbiBzdHJpbmcgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgICAgaWYgcG9ydDoKKyAg
ICAgICAgICAgIHBvcnRfdmVyc2lvbiA9IHBvcnQudmVyc2lvbigpCisgICAgICAgIHNlbGYub3Mg
PSBvcyBvciBwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLnJlcGxhY2UocG9ydF92ZXJzaW9uLCAn
JykKKyAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbiBvciBwb3J0X3ZlcnNpb25bMTpdCisg
ICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0gYXJjaGl0ZWN0dXJlIG9yICd4ODYnCisgICAgICAg
IHNlbGYuYnVpbGRfdHlwZSA9IGJ1aWxkX3R5cGUgb3IgcG9ydC5fb3B0aW9ucy5jb25maWd1cmF0
aW9uLmxvd2VyKCkKKyAgICAgICAgc2VsZi5ncmFwaGljc190eXBlID0gZ3JhcGhpY3NfdHlwZSBv
ciAnY3B1JworCisgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2Rp
Y3RfXy5pdGVtcygpCisKKyAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X19kaWN0X18ua2V5cygpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJu
ICgiPCUodmVyc2lvbilzLCAlKGJ1aWxkX3R5cGUpcywgJShncmFwaGljc190eXBlKXM+IiAlCisg
ICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfXykKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
KyAgICAgICAgcmV0dXJuICJUZXN0Q29uZmlnKG9zPSclKG9zKXMnLCB2ZXJzaW9uPSclKHZlcnNp
b24pcycsIGFyY2hpdGVjdHVyZT0nJShhcmNoaXRlY3R1cmUpcycsIGJ1aWxkX3R5cGU9JyUoYnVp
bGRfdHlwZSlzJywgZ3JhcGhpY3NfdHlwZT0nJShncmFwaGljc190eXBlKXMnKSIgJSBzZWxmLl9f
ZGljdF9fCisKKyAgICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBj
b25maWd1cmF0aW9uIHZhbHVlcyBvZiB0aGlzIGluc3RhbmNlIGFzIGEgdHVwbGUuIiIiCisgICAg
ICAgIHJldHVybiBzZWxmLl9fZGljdF9fLnZhbHVlcygpCisKKyAgICBkZWYgYWxsX3Rlc3RfY29u
ZmlndXJhdGlvbnMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUg
VGVzdENvbmZpZ3VyYXRpb25zIHRoZSBwb3J0IHN1cHBvcnRzLiIiIgorICAgICAgICAjIEJ5IGRl
ZmF1bHQsIHdlIGFzc3VtZSB3ZSB3YW50IHRvIHRlc3QgZXZlcnkgZ3JhcGhpY3MgdHlwZSBpbgor
ICAgICAgICAjIGV2ZXJ5IGNvbmZpZ3VyYXRpb24gb24gZXZlcnkgc3lzdGVtLgorICAgICAgICB0
ZXN0X2NvbmZpZ3VyYXRpb25zID0gW10KKyAgICAgICAgZm9yIHN5c3RlbSBpbiBzZWxmLmFsbF9z
eXN0ZW1zKCk6CisgICAgICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBzZWxmLmFsbF9idWlsZF90
eXBlcygpOgorICAgICAgICAgICAgICAgIGZvciBncmFwaGljc190eXBlIGluIHNlbGYuYWxsX2dy
YXBoaWNzX3R5cGVzKCk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RfY29uZmlndXJhdGlvbnMu
YXBwZW5kKFRlc3RDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgb3M9c3lz
dGVtWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1zeXN0ZW1bMV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmU9c3lzdGVtWzJdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgYnVpbGRfdHlwZT1idWlsZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgZ3JhcGhpY3NfdHlwZT1ncmFwaGljc190eXBlKSkKKyAgICAgICAgcmV0dXJuIHRlc3RfY29u
ZmlndXJhdGlvbnMKKworICAgIGRlZiBhbGxfc3lzdGVtcyhzZWxmKToKKyAgICAgICAgcmV0dXJu
ICgoJ21hYycsICdsZW9wYXJkJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnbWFjJywgJ3Nu
b3dsZW9wYXJkJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnd2luJywgJ3hwJywgJ3g4Nicp
LAorICAgICAgICAgICAgICAgICgnd2luJywgJ3Zpc3RhJywgJ3g4NicpLAorICAgICAgICAgICAg
ICAgICgnd2luJywgJ3dpbjcnLCAneDg2JyksCisgICAgICAgICAgICAgICAgKCdsaW51eCcsICdo
YXJkeScsICd4ODYnKSkKKworICAgIGRlZiBhbGxfYnVpbGRfdHlwZXMoc2VsZik6CisgICAgICAg
IHJldHVybiAoJ2RlYnVnJywgJ3JlbGVhc2UnKQorCisgICAgZGVmIGFsbF9ncmFwaGljc190eXBl
cyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgnY3B1JywgJ2dwdScpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkK
aW5kZXggNzJmMmQwNWE0MmFkZTljYWNmYzk3MTA4OGIxOTM5NzA1OGE3ZDUzOC4uNGQ0YjY2ZmE0
NzlmMjIxMTkyMzZmODJjMTE2YWQ1MGQzY2YwODczYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAt
MjYzLDcgKzI2Myw2IEBAIGNsYXNzIFZpcnR1YWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKQogICAgICAg
ICBzZWxmLmFzc2VydFZpcnR1YWwocG9ydC5yZXN1bHRzX2RpcmVjdG9yeSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9leHBlY3RhdGlvbnMpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VmlydHVhbChwb3J0LnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcykKICAgICAgICAgc2VsZi5h
c3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKQogICAgICAgICBzZWxmLmFzc2Vy
dFZpcnR1YWwocG9ydC50ZXN0X3BsYXRmb3JtcykKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFs
KHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUsIE5vbmUpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCBhZDFi
ZWE2NTg4ODE5YTFkNWQ3M2Q3YTdhZTUzN2MzNDVjOTY0Y2RiLi4xNzlhOWE2ODRiOTgzZGMwZjY1
NWQzMTNhOWUxYTEwNTAyYzQ1YzU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTI0MSw5ICsyNDEsNiBAQCBjbGFz
cyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0
aG9uLm9yZy9pc3N1ZTE3MzE3MTcKICAgICAgICAgICAgIHNlbGYuX2hlbHBlci53YWl0KCkKIAot
ICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiAo
J2xpbnV4JywgJ21hYycsICd3aW4nKQotCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zKHNlbGYp
OgogICAgICAgICAiIiJSZXR1cm5zIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhpcyBwb3J0
LgogCkBAIC0yNzMsMTUgKzI3MCwxNCBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToK
ICAgICAgICAgICAgIGFsbF90ZXN0X2ZpbGVzLnVwZGF0ZShleHRyYV90ZXN0X2ZpbGVzKQogCiAg
ICAgICAgIGV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMo
Ci0gICAgICAgICAgICBzZWxmLCBhbGxfdGVzdF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgdGVz
dF9wbGF0Zm9ybV9uYW1lLAotICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2Rl
PUZhbHNlLCBvdmVycmlkZXM9b3ZlcnJpZGVzX3N0cikKKyAgICAgICAgICAgIHNlbGYsIGFsbF90
ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNfc3RyLCBzZWxmLnRlc3RfY29uZmlndXJhdGlvbigpLAor
ICAgICAgICAgICAgaXNfbGludF9tb2RlPUZhbHNlLCBvdmVycmlkZXM9b3ZlcnJpZGVzX3N0cikK
ICAgICAgICAgdGVzdHNfZGlyID0gc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgcmV0
dXJuIFtzZWxmLnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdCkKICAgICAgICAgICAgICAgICBm
b3IgdGVzdCBpbiBleHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUodGVzdF9l
eHBlY3RhdGlvbnMuU0tJUCldCiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lcyhzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKCkgKyAoJ3dpbi14
cCcsCi0gICAgICAgICAgICAnd2luLXZpc3RhJywgJ3dpbi03JykKKyAgICAgICAgcmV0dXJuICgn
bWFjJywgJ3dpbicsICdsaW51eCcsICd3aW4teHAnLCAnd2luLXZpc3RhJywgJ3dpbi03JykKIAog
ICAgIGRlZiB0ZXN0X3BsYXRmb3JtX25hbWVfdG9fbmFtZShzZWxmLCB0ZXN0X3BsYXRmb3JtX25h
bWUpOgogICAgICAgICBpZiB0ZXN0X3BsYXRmb3JtX25hbWUgaW4gc2VsZi50ZXN0X3BsYXRmb3Jt
X25hbWVzKCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKaW5kZXggMGIwM2I0YzBhMDJmYjg4OWM2ZTcyM2Qy
NmQxMmMzODQxMjhhMWU3MS4uNDE0NmQ0MDhhMTVhNjc4OTVhYTgxZGY5NzJiZTc0YjAzYTY1YzM1
OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9w
b3J0X3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpAQCAtODgsMyArODgsMTUgQEAgY2xhc3MgUG9ydFRlc3RD
YXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBwb3J0
LnN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoKQogICAgICAgICBwb3J0LnN0b3Bfd2Vic29ja2V0X3Nl
cnZlcigpCisKKyAgICBkZWYgdGVzdF90ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAg
IHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIGlmIG5vdCBwb3J0OgorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnRlc3RfY29uZmlndXJhdGlv
bigpKQorCisgICAgZGVmIHRlc3RfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6CisgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIGlmIG5vdCBwb3J0OgorICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocG9ydC5hbGxfdGVzdF9j
b25maWd1cmF0aW9ucygpKSA+IDApCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3Rlc3QucHkKaW5kZXggYTlkNTg4NDA4NTFiMTZiYjYwN2E4NWY3ZTU1MWU2
YmUwZTMwZjI1ZC4uMGM1NzJmNjU4YTMxYjM0MTQzNjlkMjA2MzVmYmU2Zjc5ZDQ2YTQ5ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpA
QCAtMjExLDggKzIxMSw4IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqKmt3YXJncykKIAogICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3Rz
X2RpcigpLCAncGxhdGZvcm0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYubmFtZSgpICsgc2VsZi52ZXJzaW9uKCkpCisgICAgICAgICMgTm90ZSB0aGF0IHdlIGRv
bid0IGhhdmUgdmVyc2lvbi1zcGVjaWZpYyBiYXNlbGluZXMuCisgICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdwbGF0Zm9ybScsIHNl
bGYubmFtZSgpKQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgogICAgICAg
ICByZXR1cm4gW3NlbGYuYmFzZWxpbmVfcGF0aCgpXQpAQCAtMjIwLDYgKzIyMCw5IEBAIGNsYXNz
IFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIGNoZWNrX2J1aWxkKHNlbGYsIG5lZWRzX2h0
dHApOgogICAgICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGRlZmF1bHRfY29uZmlndXJhdGlv
bihzZWxmKToKKyAgICAgICAgcmV0dXJuICdSZWxlYXNlJworCiAgICAgZGVmIGRpZmZfaW1hZ2Uo
c2VsZiwgZXhwZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywKICAgICAgICAgICAgICAg
ICAgICBkaWZmX2ZpbGVuYW1lPU5vbmUpOgogICAgICAgICBkaWZmZWQgPSBhY3R1YWxfY29udGVu
dHMgIT0gZXhwZWN0ZWRfY29udGVudHMKQEAgLTI1OCwyOSArMjYxLDQwIEBAIGNsYXNzIFRlc3RQ
b3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIHN0b3Bfd2Vic29ja2V0X3NlcnZlcihzZWxmKToKICAg
ICAgICAgcGFzcwogCi0gICAgZGVmIHRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuICgnbWFjJywgJ3dpbicpCi0KICAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVj
dGF0aW9uc19maWxlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zX3Bh
dGgKIAogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX25hbWUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
X25hbWUgPT0gJ3Rlc3Qtd2luJzoKLSAgICAgICAgICAgIHJldHVybiAnd2luJwotICAgICAgICBy
ZXR1cm4gJ21hYycKKyAgICAgICAgbmFtZV9tYXAgPSB7CisgICAgICAgICAgICAndGVzdC1tYWMn
OiAnbWFjJywKKyAgICAgICAgICAgICd0ZXN0LXdpbic6ICd3aW4nLAorICAgICAgICAgICAgJ3Rl
c3Qtd2luLXhwJzogJ3dpbi14cCcsCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5hbWVfbWFw
W3NlbGYuX25hbWVdCiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYudGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKCkKKyAgICAgICAgcmV0dXJu
ICgnbWFjJywgJ3dpbicsICd3aW4teHAnKQogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFtZV90
b19uYW1lKHNlbGYsIHRlc3RfcGxhdGZvcm1fbmFtZSk6CiAgICAgICAgIG5hbWVfbWFwID0gewog
ICAgICAgICAgICAgJ21hYyc6ICd0ZXN0LW1hYycsCiAgICAgICAgICAgICAnd2luJzogJ3Rlc3Qt
d2luJywKKyAgICAgICAgICAgICd3aW4teHAnOiAndGVzdC13aW4teHAnLAogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBuYW1lX21hcFt0ZXN0X3BsYXRmb3JtX25hbWVdCiAKICAgICBkZWYgdmVy
c2lvbihzZWxmKToKLSAgICAgICAgcmV0dXJuICcnCisgICAgICAgIHZlcnNpb25fbWFwID0gewor
ICAgICAgICAgICAgJ3Rlc3Qtd2luLXhwJzogJy14cCcsCisgICAgICAgICAgICAndGVzdC13aW4n
OiAnLTcnLAorICAgICAgICAgICAgJ3Rlc3QtbWFjJzogJy1sZW9wYXJkJywKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdmVyc2lvbl9tYXBbc2VsZi5fbmFtZV0KKworICAgIGRlZiB0ZXN0X2Nv
bmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRp
b246CisgICAgICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24gPSBUZXN0VGVzdENvbmZp
Z3VyYXRpb24oc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbgog
CiAKIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2ZXIpOgpAQCAtMzE1LDMgKzMyOSwxMSBAQCBj
bGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAg
ICAgICBwYXNzCisKKworY2xhc3MgVGVzdFRlc3RDb25maWd1cmF0aW9uKGJhc2UuVGVzdENvbmZp
Z3VyYXRpb24pOgorICAgIGRlZiBhbGxfc3lzdGVtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgo
J21hYycsICdsZW9wYXJkJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnbWFjJywgJ3Nub3ds
ZW9wYXJkJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnd2luJywgJ3hwJywgJ3g4NicpLAor
ICAgICAgICAgICAgICAgICgnd2luJywgJzcnLCAneDg2JykpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDQ3NjU1NWM1YTI5
YzA5OWIwMmNhZjRiY2E0Y2Q4Mzk3OWRjZDc4MzcuLjI0NDhkODJkMGI5MTE4ZDI1MjEwNDYxYjlj
MDg4NzBiYjc2ZTMwMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC0xNzksMTEgKzE3OSw2IEBAIGNsYXNzIFdlYktpdFBv
cnQoYmFzZS5Qb3J0KToKICAgICBkZWYgY3JlYXRlX2RyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVy
KToKICAgICAgICAgcmV0dXJuIFdlYktpdERyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVyKQogCi0g
ICAgZGVmIHRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKLSAgICAgICAgIyBBdCB0aGUg
bW9tZW50IHdlIGRvbid0IHVzZSB0ZXN0IHBsYXRmb3JtIG5hbWVzLCBidXQgd2UgaGF2ZQotICAg
ICAgICAjIHRvIHJldHVybiBzb21ldGhpbmcuCi0gICAgICAgIHJldHVybiAoJ21hYycsICd3aW4n
KQotCiAgICAgZGVmIF90ZXN0c19mb3Jfb3RoZXJfcGxhdGZvcm1zKHNlbGYpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdXZWJLaXRQb3J0Ll90ZXN0c19mb3Jfb3RoZXJfcGxh
dGZvcm1zJykKICAgICAgICAgIyBUaGUgb3JpZ2luYWwgcnVuLXdlYmtpdC10ZXN0cyBidWlsZHMg
dXAgYSAid2hpdGVsaXN0IiBvZiB0ZXN0cyB0bwpAQCAtMzM2LDggKzMzMSw3IEBAIGNsYXNzIFdl
YktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUgKyBzZWxmLnZl
cnNpb24oKQogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcygpICsgKAotICAgICAgICAgICAgJ21h
Yy10aWdlcicsICdtYWMtbGVvcGFyZCcsICdtYWMtc25vd2xlb3BhcmQnKQorICAgICAgICByZXR1
cm4gKCdtYWMnLCAnd2luJywgJ21hYy10aWdlcicsICdtYWMtbGVvcGFyZCcsICdtYWMtc25vd2xl
b3BhcmQnKQogCiAgICAgZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fY29uZmlnLmJ1aWxkX2RpcmVjdG9yeSgK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxp
bmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggNzhkZjU3
OWFiZDhkM2ZlYmU3MTdmNTkxMWFlNjY5Y2M5OTFjZjI2ZC4uN2VlNThjZTk5MjFmY2Y3MjY1YmQ1
MmJjMTI4MmI1Yzk4ZjMzNmYyNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJr
aXRfdGVzdHMucHkKQEAgLTE3OCw4ICsxNzgsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3Qp
OgogICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxmLl9y
ZWJhc2VsaW5lX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGF0aW9uc19zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3BsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRlc3RfY29uZmlndXJhdGlv
bigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxz
ZSkKICAgICAgICAgc2VsZi5fc2NtID0gc2NtCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggNzNkZTRhNjI0ZGZlZTk2
ODdiYzM4N2UwMmM4NjA4OWQ3OTJkNjgyNi4uZjdmMDFhYmY4ZWMwOTA2YmI3NWZkMzc0NWMyNjQ2
ZWJhNWMxZGMxMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJr
aXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTcwLDcgKzcwLDcgQEAgZGVmIHRlc3Rfb3B0aW9ucygp
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGxhdGZvcm09J2Nocm9t
aXVtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZT1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBsYXRmb3Jtcz0nbWFjLHdpbicpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBsYXRmb3Jtcz0nbWFjLHdpbix3aW4teHAnKQogCiAKIGRlZiB0ZXN0
X2hvc3RfcG9ydF9hbmRfZmlsZXN5c3RlbShvcHRpb25zLCBleHBlY3RhdGlvbnMpOgpAQCAtMTA1
LDYgKzEwNSwxMSBAQCBkZWYgdGVzdF91bnppcHBlcl9jbHMoKToKICAgICAgICAgICAgICdsYXlv
dXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLWFjdHVhbC5jaGVja3N1bSc6
ICd3aW4taW1hZ2UtY2hlY2tzdW0nLAogICAgICAgICAgICAgJ2xheW91dC10ZXN0LXJlc3VsdHMv
ZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtYWN0dWFsLnBuZyc6ICd3aW4taW1hZ2UtcG5nJywKICAg
ICAgICAgfSwKKyAgICAgICAgJy9fX2ltX3RtcC90bXBfOF9tb2NrZmV0Y2hlcic6IHsKKyAgICAg
ICAgICAgICdsYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLWFjdHVh
bC50eHQnOiAnd2luLXhwLWltYWdlLXR4dCcsCisgICAgICAgICAgICAnbGF5b3V0LXRlc3QtcmVz
dWx0cy9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1hY3R1YWwuY2hlY2tzdW0nOiAnd2luLXhwLWlt
YWdlLWNoZWNrc3VtJywKKyAgICAgICAgICAgICdsYXlvdXQtdGVzdC1yZXN1bHRzL2ZhaWx1cmVz
L2V4cGVjdGVkL2ltYWdlLWFjdHVhbC5wbmcnOiAnd2luLXhwLWltYWdlLXBuZycsCisgICAgICAg
IH0sCiAgICAgfQogICAgIHJldHVybiB6aXBwZXJfbW9jay5tYWtlX3VuemlwcGVyKHppcGhhc2hl
cykKIApAQCAtMjAwLDcgKzIwNSwxMCBAQCBjbGFzcyBUZXN0UmViYXNlbGluZXIodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICAjIE5vdGUgdGhhdCBldmVuIHRob3VnaCB0aGUgcmViYXNlbGlu
ZSBpcyBtYXJrZWQgZm9yIGFsbCBwbGF0Zm9ybXMsIGVhY2gKICAgICAgICAgIyByZWJhc2VsaW5l
ciBvbmx5IGV2ZXIgZG9lcyBvbmUuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVz
eXN0ZW0ud3JpdHRlbl9maWxlcyksIDEzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVz
eXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QvdGVz
dF9leHBlY3RhdGlvbnMudHh0J10sICdCVUdYIFJFQkFTRUxJTkUgV0lOIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZp
bGVzeXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3Qv
dGVzdF9leHBlY3RhdGlvbnMudHh0J10sCisgICAgICAgICIiIkJVR1ggUkVCQVNFTElORSBXSU4g
OiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1BR0UKK0JVR1ggUkVCQVNFTElORSBX
SU4tWFAgOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1BR0UKKyIiIikKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291dC9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS90ZXN0LW1hYy9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1leHBlY3Rl
ZC5jaGVja3N1bSddLCAnbmV3LWltYWdlLWNoZWNrc3VtJykKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS90ZXN0LW1hYy9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1leHBlY3RlZC5wbmcnXSwgJ25ldy1p
bWFnZS1wbmcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0uZmlsZXNbJy90
ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QtbWFjL2ZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlLWV4cGVjdGVkLnR4dCddLCAnbmV3LWltYWdlLXR4dCcpCkBAIC0yMzgsOSArMjQ2
LDkgQEAgY2xhc3MgVGVzdFJlYWxNYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAg
IGhvc3RfcG9ydF9vYmosIGZldGNoZXIsIHVuemlwcGVyX2NscywgbW9ja19zY20pCiAgICAgICAg
IG9jLnJlc3RvcmVfb3V0cHV0KCkKIAotICAgICAgICAjIFdlIGV4cGVjdCB0byBoYXZlIHdyaXR0
ZW4gMjYgZmlsZXMgb3ZlciB0aGUgY291cnNlIG9mIHRoaXMgcmViYXNlbGluZToKLSAgICAgICAg
IyAyICogdGVzdF9hbGxfcGxhdGZvcm1zLCBhYm92ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGxlbihmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMpLCAyNikKKyAgICAgICAgIyBXZSBleHBlY3Qg
dG8gaGF2ZSB3cml0dGVuIDM4IGZpbGVzIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGlzIHJlYmFzZWxp
bmU6CisgICAgICAgICMgMyAqIHRlc3RfYWxsX3BsYXRmb3JtcywgYWJvdmUKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzKSwgMzgpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnXSwgJycpCiAKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkKaW5kZXggMTdiNmU4OTk4Njg3OTE5NWNkY2VhMzUwYTViOGExMDFkYTc3YWRiMC4u
OTFlNDM3OThmMTYwNjczMzFmZDg2NGRkZTc5MmE4NGVhYjk4NjI5MSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CkBAIC0xMDAsMTEgKzEwMCwxMSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3Vs
YXJfb3V0cHV0PXN5cy5zdGRlcnIsCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xCiAgICAgICAg
ICAgICByYWlzZQogCi0gICAgICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJQYXJzaW5nIGV4cGVj
dGF0aW9ucyAuLi4iKQogICAgICAgICBpZiBvcHRpb25zLmxpbnRfdGVzdF9maWxlczoKICAgICAg
ICAgICAgIHJldHVybiBydW5uZXIubGludCgpCi0gICAgICAgIHJ1bm5lci5wYXJzZV9leHBlY3Rh
dGlvbnMocG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcHRpb25zLmNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJykKKworICAgICAgICBw
cmludGVyLnByaW50X3VwZGF0ZSgiUGFyc2luZyBleHBlY3RhdGlvbnMgLi4uIikKKyAgICAgICAg
cnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgcHJpbnRlci5wcmludF91cGRh
dGUoIkNoZWNraW5nIGJ1aWxkIC4uLiIpCiAgICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2J1aWxk
KHJ1bm5lci5uZWVkc19odHRwKCkpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggYzg2YjMyY2U1
NjU3MjQ1ZGY3ZDNmMjgwOTM2OTMzNTllNTk4NmJhNS4uZTM3ZjkwOGI2NGU3ZDVjZDIyMDNlNjU5
YzdiNTg4NDBjYjVjZjZlYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC03NSw3ICs3NSw2IEBA
IGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAg
ICAgICAgIlVzaW5nICd0ZXN0JyBwb3J0LCBidXQgcGxhdGZvcm0tc3BlY2lmaWMgZXhwZWN0YXRp
b25zICIKICAgICAgICAgICAgICAgICAgICAgICAid2lsbCBmYWlsIHRoZSBjaGVjay4iICUgc2Vs
Zi5fZmlsZV9wYXRoKQogICAgICAgICAgICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0LmdldCgndGVz
dCcpCi0gICAgICAgIHNlbGYuX3BvcnRfdG9fY2hlY2sgPSBzZWxmLl9wb3J0X29iai50ZXN0X3Bs
YXRmb3JtX25hbWUoKQogICAgICAgICAjIFN1cHByZXNzIGVycm9yIG1lc3NhZ2VzIG9mIHRlc3Rf
ZXhwZWN0YXRpb25zIG1vZHVsZSBzaW5jZSB0aGV5IHdpbGwgYmUKICAgICAgICAgIyByZXBvcnRl
ZCBsYXRlci4KICAgICAgICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91
dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCkBAIC05MSw3ICs5MCw3IEBAIGNsYXNzIFRlc3RFeHBl
Y3RhdGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGV4cGVj
dGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnNGaWxlKAogICAgICAg
ICAgICAgICAgIHBvcnQ9c2VsZi5fcG9ydF9vYmosIGV4cGVjdGF0aW9ucz1leHBlY3RhdGlvbnNf
c3RyLCBmdWxsX3Rlc3RfbGlzdD10ZXN0cywKLSAgICAgICAgICAgICAgICB0ZXN0X3BsYXRmb3Jt
X25hbWU9c2VsZi5fcG9ydF90b19jaGVjaywgaXNfZGVidWdfbW9kZT1GYWxzZSwKKyAgICAgICAg
ICAgICAgICB0ZXN0X2NvbmZpZz1zZWxmLl9wb3J0X29iai50ZXN0X2NvbmZpZ3VyYXRpb24oKSwK
ICAgICAgICAgICAgICAgICBpc19saW50X21vZGU9VHJ1ZSwgb3ZlcnJpZGVzPW92ZXJyaWRlcykK
ICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3IsIGVycm9yOgogICAg
ICAgICAgICAgZXJyID0gZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5
CmluZGV4IDk4MTdjNWQ3MDJkM2U2NjFlMDZjYjZhZjc2Yzc4YTc1ZTg3YzA3MmQuLjg2OTE1NTdl
NzE3YzZmOTU5OTQ4MjI0NjFkZmU0NDFkYTQ3MTkyYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0
aW9uc191bml0dGVzdC5weQpAQCAtODQsMTUgKzg0LDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9u
c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3ZhbGlkX2V4cGVj
dGF0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAg
ICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IFBBU1MiXSwKLSAgICAgICAgICAgICIiKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1s
ID0gRkFJTCBQQVNTIl0sCi0gICAgICAgICAgICAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
ZXNfbGludCgKLSAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IENSQVNIIFRJTUVPVVQg
RkFJTCBQQVNTIl0sCi0gICAgICAgICAgICAiIikKLSAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNf
bGludCgKICAgICAgICAgICAgIFsiQlVHQ1IxMjM0IE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQ
QVNTIEZBSUwiXSwKICAgICAgICAgICAgICIiKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19s
aW50KApAQCAtMTIwLDEyICsxMTEsMTIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNl
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9tb2RpZmllcl9lcnJvcnMoc2VsZik6
CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCiAgICAgICAgICAgICBbIkJVRzEyMzQg
OiBwYXNzZXMvdGV4dC5odG1sID0gRkFJTCJdLAotICAgICAgICAgICAgJ0J1ZyBtdXN0IGJlIGVp
dGhlciBCVUdDUiwgQlVHV0ssIG9yIEJVR1Y4XyBmb3IgdGVzdDogYnVnMTIzNCBwYXNzZXMvdGV4
dC5odG1sICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XScpCisgICAgICAgICAgICAiQlVHXFxkKyBp
cyBub3QgYWxsb3dlZCwgbXVzdCBiZSBvbmUgb2YgQlVHQ1JcXGQrLCBCVUdXS1xcZCssIEJVR1Y4
X1xcZCssIG9yIGEgbm9uLW51bWVyaWMgYnVnIGlkZW50aWZpZXIuIHBhc3Nlcy90ZXh0Lmh0bWwg
IFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X3ZhbGlkX21vZGlmaWVy
cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsi
SU5WQUxJRC1NT0RJRklFUiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCi0gICAgICAgICAg
ICAiSW52YWxpZCBtb2RpZmllciBmb3IgdGVzdDogaW52YWxpZC1tb2RpZmllciAiCisgICAgICAg
ICAgICAiVW5yZWNvZ25pemVkIG9wdGlvbiAnaW52YWxpZC1tb2RpZmllcicgIgogICAgICAgICAg
ICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAg
c2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiU0tJUCA6IHBhc3Nlcy90ZXh0
Lmh0bWwgPSBQQVNTIl0sCkBAIC0xMzUsMzggKzEyNiwzOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRp
b25zVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9u
X2Vycm9ycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAg
ICAgIFsibWlzc2luZyBleHBlY3RhdGlvbnMiXSwKLSAgICAgICAgICAgICJNaXNzaW5nIGV4cGVj
dGF0aW9ucy4gWydtaXNzaW5nIGV4cGVjdGF0aW9ucyddICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1
XSIpCisgICAgICAgICAgICAiTWlzc2luZyBhICc6JyBtaXNzaW5nIGV4cGVjdGF0aW9ucyAgW3Rl
c3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAog
ICAgICAgICAgICAgWyJTTE9XIDogcGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQiXSwKICAgICAg
ICAgICAgICJBIHRlc3QgY2FuIG5vdCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuICIKICAgICAg
ICAgICAgICJJZiBpdCB0aW1lcyBvdXQgaW5kZWZpbml0ZWx5LCB0aGVuIGl0IHNob3VsZCBiZSBq
dXN0IHRpbWVvdXQuICIKICAgICAgICAgICAgICJwYXNzZXMvdGV4dC5odG1sICBbdGVzdC9leHBl
Y3RhdGlvbnNdIFs1XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAg
ICAgICBbImRvZXMvbm90L2V4aXN0Lmh0bWwgPSBGQUlMIl0sCisgICAgICAgICAgICBbIkJVR1dL
MSA6IGRvZXMvbm90L2V4aXN0Lmh0bWwgPSBGQUlMIl0sCiAgICAgICAgICAgICAiUGF0aCBkb2Vz
IG5vdCBleGlzdC4gZG9lcy9ub3QvZXhpc3QuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbMl0i
KQogCiAgICAgZGVmIHRlc3RfcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICBzZWxm
LmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gUEFT
UyJdLAorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAog
ICAgICAgICAgICAgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAg
ICAgICBbInBhc3Nlcy90ZXh0Lmh0bWwgPSBVTlNVUFBPUlRFRCJdLAorICAgICAgICAgICAgWyJC
VUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0gVU5TVVBQT1JURUQiXSwKICAgICAgICAgICAgICJV
bnN1cHBvcnRlZCBleHBlY3RhdGlvbjogdW5zdXBwb3J0ZWQgIgogICAgICAgICAgICAgInBhc3Nl
cy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAgc2VsZi5hc3Nl
cnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IFBBU1MgVU5T
VVBQT1JURUQiXSwKKyAgICAgICAgICAgIFsiQlVHV0sxIDogcGFzc2VzL3RleHQuaHRtbCA9IFBB
U1MgVU5TVVBQT1JURUQiXSwKICAgICAgICAgICAgICJVbnN1cHBvcnRlZCBleHBlY3RhdGlvbjog
dW5zdXBwb3J0ZWQgIgogICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVj
dGF0aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X2FscmVhZHlfc2Vlbl90ZXN0KHNlbGYpOgog
ICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4
dC5odG1sID0gUEFTUyIsCi0gICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VU
Il0sCi0gICAgICAgICAgICAiRHVwbGljYXRlIGV4cGVjdGF0aW9uLiAlcyAgW3Rlc3QvZXhwZWN0
YXRpb25zXSBbNV0iICUgc2VsZi5fdGVzdF9maWxlKQorICAgICAgICAgICAgWyJCVUdXSzEgOiBw
YXNzZXMvdGV4dC5odG1sID0gUEFTUyIsCisgICAgICAgICAgICAgIkJVR1dLMSA6IHBhc3Nlcy90
ZXh0Lmh0bWwgPSBUSU1FT1VUIl0sCisgICAgICAgICAgICAiRHVwbGljYXRlIG9yIGFtYmlndW91
cyBleHBlY3RhdGlvbi4gJXMgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIiAlIHNlbGYuX3Rlc3Rf
ZmlsZSkKIAogICAgIGRlZiB0ZXN0X3RhYihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGlu
ZXNfbGludCgKLSAgICAgICAgICAgIFsiXHRwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAorICAg
ICAgICAgICAgWyJcdEJVR1dLMSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCiAgICAgICAg
ICAgICAiTGluZSBjb250YWlucyB0YWIgY2hhcmFjdGVyLiAgW3doaXRlc3BhY2UvdGFiXSBbNV0i
KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80673</attachid>
            <date>2011-01-31 13:11:42 -0800</date>
            <delta_ts>2011-01-31 13:22:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51222-20110131131141.patch</filename>
            <type>text/plain</type>
            <size>83827</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NTY4
MzdkMjBjNGNjNzM2Yzc4YzMzYWRjNmYzZGNiMzFhNjk1ZTc0Li41ZDIwODU5OTJiY2VjNGMwMDgz
MzVjYTJmYWI1YzAwMjVlNTk3MWNlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9kaWZpZXIgcGFyc2luZyBjb2RlIGluIHRl
c3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdpbGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0
J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMKKyAgICAgICAgb3IgZWFzaWx5IGFk
ZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQVSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAg
ICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQgdnMuIDY0LWJpdCBkaWZmZXJlbmNlcyku
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgdHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFk
ZCBpbiBtb3JlIGdlbmVyaWMKKyAgICAgICAgc3VwcG9ydCBhbmQgdGhlbiBlbGltaW5hdGUgdGhl
IEdQVS1zcGVjaWZpYyB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBmaWxlcyBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBzdGFuZGFsb25lIG9iamVjdHMgZm9y
IGhhbmRsaW5nIG1vZGlmaWVycy4gVGhlCisgICAgICAgIHJ1bGVzIGZvciBpbnRlcnByZXRpbmcg
bW9kaWZpZXJzLCBwcmVjZWRlbmNlLCBhbmQgY29uZmxpY3RzIGFyZQorICAgICAgICBnaXZlbiBp
biB0aGUgZG9jc3RyaW5nIHRvIHRoZSBNb2RpZmllck1hdGNoZXIgY2xhc3MsIHdoaWNoCisgICAg
ICAgIHJldHVybnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBvYmplY3RzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgcm91dGluZXMgdG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFu
ZCBhCisgICAgICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVlcyBpbiB0aGUgYmFzZSBvYmplY3QsIGlu
IG9yZGVyIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRl
c3QgcnVuLiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFzc2VkCisgICAgICAgIHRvIHRoZSBleHBl
Y3RhdGlvbiBwYXJzZXIuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gY2xlYW4gdXAgdGhlCisgICAg
ICAgIGxvZ2ljIHVzZWQgdG8gbGludCBhbGwgb2YgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
cyBpbiBhCisgICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmlsZS4KKworICAg
ICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIG1lcmdlIGluIHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0
YXRpb25zIGZpbGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMjIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9t
aXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Ogor
ICAgICAgICAqIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBl
Y3RhdGlvbnMucHk6CisgICAgICAgICogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKwogMjAxMS0wMS0zMSAgVG9ueSBD
aGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQppbmRleCAx
MmE3ODZlOTA3NWM3MTk3ZjkzZmIyODhhNzdkOWQ0MzhmYjA3MjY1Li43YWI2ZGE4MWMxODdiZGNh
ZWRkZTEzY2MyMzU1MDNjZDQ0NjZhNWIwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmlu
dGluZ191bml0dGVzdC5weQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBpbiB0ZXN0c10K
ICAgICAgICAgZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9u
cygKICAgICAgICAgICAgIHNlbGYuX3BvcnQsIHRlc3RfcGF0aHMsIGV4cGVjdGF0aW9uc19zdHIs
Ci0gICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLCBpc19kZWJ1Z19t
b2RlPUZhbHNlLAorICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwK
ICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSkKIAogICAgICAgICBycyA9IHJlc3VsdF9z
dW1tYXJ5LlJlc3VsdFN1bW1hcnkoZXhwZWN0YXRpb25zLCB0ZXN0X3BhdGhzKQpAQCAtMzYzLDcg
KzM2Myw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHRlc3RfcHJpbnRfcHJvZ3Jlc3NfX2RldGFpbGVkKHNlbGYpOgogICAgICAgICB0ZXN0cyA9IFsn
cGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwnLAogICAg
ICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCddCi0gICAgICAgIGV4
cGVjdGF0aW9ucyA9ICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUJwor
ICAgICAgICBleHBlY3RhdGlvbnMgPSAnQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQu
aHRtbCA9IFRJTUVPVVQnCiAKICAgICAgICAgIyBmaXJzdCwgdGVzdCB0aGF0IGl0IGlzIGRpc2Fi
bGVkIHByb3Blcmx5CiAgICAgICAgICMgc2hvdWxkIHN0aWxsIHByaW50IG9uZS1saW5lLXByb2dy
ZXNzCkBAIC01NjksOCArNTY5LDggQEAgY2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkKIAogICAgICAgICBl
eHBlY3RhdGlvbnMgPSAiIiIKLWZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAot
ZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVAorQlVHWCA6IGZhaWx1cmVz
L2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAorQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rp
bWVvdXQuaHRtbCA9IFRJTUVPVVQKICIiIgogICAgICAgICBlcnIucmVzZXQoKQogICAgICAgICBv
dXQucmVzZXQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpp
bmRleCBhY2FkY2IzZmFlMWQ1Y2NmMDUyOTBjYmFjOWNkNmU0MmY5NzUzNjc0Li42ZjhhZmE0YTBh
Njk0YWMzNDI2ZTc4YzQ0OGI3YTdiMTRjZTgxZTI5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtMzEsNiArMzEsNyBAQAogZm9yIGxheW91dCB0ZXN0
cy4KICIiIgogCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiAK
QEAgLTg0LDE4ICs4NSwxNiBAQCBkZWYgcmVtb3ZlX3BpeGVsX2ZhaWx1cmVzKGV4cGVjdGVkX3Jl
c3VsdHMpOgogY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKICAgICBURVNUX0xJU1QgPSAidGVzdF9l
eHBlY3RhdGlvbnMudHh0IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHRlc3RzLCBl
eHBlY3RhdGlvbnMsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgICAgICAgaXNfZGVi
dWdfbW9kZSwgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfY29uZmlnLAorICAgICAgICAg
ICAgICAgICBpc19saW50X21vZGUsIG92ZXJyaWRlcz1Ob25lKToKICAgICAgICAgIiIiTG9hZHMg
YW5kIHBhcnNlcyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZ2l2ZW4gaW4gdGhlIHN0cmluZy4KICAg
ICAgICAgQXJnczoKICAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBvYmplY3QgY29udGFpbmlu
ZyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5CiAgICAgICAgICAgICB0ZXN0czogbGlz
dCBvZiBhbGwgb2YgdGhlIHRlc3QgZmlsZXMKICAgICAgICAgICAgIGV4cGVjdGF0aW9uczogdGVz
dCBleHBlY3RhdGlvbnMgYXMgYSBzdHJpbmcKLSAgICAgICAgICAgIHRlc3RfcGxhdGZvcm1fbmFt
ZTogbmFtZSBvZiB0aGUgcGxhdGZvcm0gdG8gbWF0Y2ggZXhwZWN0YXRpb25zCi0gICAgICAgICAg
ICAgICAgYWdhaW5zdC4gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGRpZmZlcmVudCB0aGFuCi0gICAg
ICAgICAgICAgICAgcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSB3aGVuIGlzX2xpbnRfbW9kZSBp
cyBUcnVlLgotICAgICAgICAgICAgaXNfZGVidWdfbW9kZTogd2hldGhlciB0byB1c2UgdGhlIERF
QlVHIG9yIFJFTEVBU0UgbW9kaWZpZXJzCi0gICAgICAgICAgICAgICAgaW4gdGhlIGV4cGVjdGF0
aW9ucworICAgICAgICAgICAgdGVzdF9jb25maWc6IHNwZWNpZmljIHZhbHVlcyB0byBjaGVjayBh
Z2FpbnN0IHdoZW4KKyAgICAgICAgICAgICAgICBwYXJzaW5nIHRoZSBmaWxlICh1c3VhbGx5IHBv
cnQudGVzdF9jb25maWcoKSwKKyAgICAgICAgICAgICAgICBidXQgbWF5IGJlIGRpZmZlcmVudCB3
aGVuIGxpbnRpbmcgb3IgZG9pbmcgb3RoZXIgdGhpbmdzKS4KICAgICAgICAgICAgIGlzX2xpbnRf
bW9kZTogSWYgVHJ1ZSwganVzdCBwYXJzZSB0aGUgZXhwZWN0YXRpb25zIHN0cmluZwogICAgICAg
ICAgICAgICAgIGxvb2tpbmcgZm9yIGVycm9ycy4KICAgICAgICAgICAgIG92ZXJyaWRlczogdGVz
dCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSBhbnkKQEAgLTEwNCw3
ICsxMDMsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zOgogICAgICAgICAgICAgICAgIGFuZCBk
b3duc3RyZWFtIGV4cGVjdGF0aW9ucykuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9leHBl
Y3RlZF9mYWlsdXJlcyA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlKHBvcnQsIGV4cGVjdGF0aW9ucywK
LSAgICAgICAgICAgIHRlc3RzLCB0ZXN0X3BsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGUsIGlz
X2xpbnRfbW9kZSwKKyAgICAgICAgICAgIHRlc3RzLCB0ZXN0X2NvbmZpZywgaXNfbGludF9tb2Rl
LAogICAgICAgICAgICAgb3ZlcnJpZGVzPW92ZXJyaWRlcykKIAogICAgICMgVE9ETyhvamFuKTog
QWxsb3cgZm9yIHJlbW92aW5nIHNraXBwZWQgdGVzdHMgd2hlbiBnZXR0aW5nIHRoZSBsaXN0IG9m
CkBAIC0xOTcsNyArMTk2LDcgQEAgY2xhc3MgUGFyc2VFcnJvcihFeGNlcHRpb24pOgogICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKG1hcChzdHIsIHNlbGYuZXJyb3JzKSkKIAogICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQYXJzZUVycm9yKGZhdGFsPSVzLCBlcnJvcnM9
JXMpJyAlIChmYXRhbCwgZXJyb3JzKQorICAgICAgICByZXR1cm4gJ1BhcnNlRXJyb3IoZmF0YWw9
JXMsIGVycm9ycz0lcyknICUgKHNlbGYuZmF0YWwsIHNlbGYuZXJyb3JzKQogCiAKIGNsYXNzIE1v
ZGlmaWVyc0FuZEV4cGVjdGF0aW9uczoKQEAgLTMwMiwyOSArMzAxLDE1IEBAIGNsYXNzIFRlc3RF
eHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAgICAgICAnZmFpbCc6IEZBSUwsCiAgICAg
ICAgICAgICAgICAgICAgICdmbGFreSc6IEZMQUtZfQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIGV4cGVjdGF0aW9ucywgZnVsbF90ZXN0X2xpc3QsIHRlc3RfcGxhdGZvcm1fbmFtZSwK
LSAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6Ci0g
ICAgICAgICIiIgotICAgICAgICBleHBlY3RhdGlvbnM6IENvbnRlbnRzIG9mIHRoZSBleHBlY3Rh
dGlvbnMgZmlsZQotICAgICAgICBmdWxsX3Rlc3RfbGlzdDogVGhlIGxpc3Qgb2YgYWxsIHRlc3Rz
IHRvIGJlIHJ1biBwZW5kaW5nIHByb2Nlc3Npbmcgb2YKLSAgICAgICAgICAgIHRoZSBleHBlY3Rp
b25zIGZvciB0aG9zZSB0ZXN0cy4KLSAgICAgICAgdGVzdF9wbGF0Zm9ybV9uYW1lOiBuYW1lIG9m
IHRoZSBwbGF0Zm9ybSB0byBtYXRjaCBleHBlY3RhdGlvbnMKLSAgICAgICAgICAgIGFnYWluc3Qu
IE5vdGUgdGhhdCB0aGlzIG1heSBiZSBkaWZmZXJlbnQgdGhhbgotICAgICAgICAgICAgcG9ydC50
ZXN0X3BsYXRmb3JtX25hbWUoKSB3aGVuIGlzX2xpbnRfbW9kZSBpcyBUcnVlLgotICAgICAgICBp
c19kZWJ1Z19tb2RlOiBXaGV0aGVyIHdlIHRlc3RpbmcgYSB0ZXN0X3NoZWxsIGJ1aWx0IGRlYnVn
IG1vZGUuCi0gICAgICAgIGlzX2xpbnRfbW9kZTogV2hldGhlciB0aGlzIGlzIGp1c3QgbGludGlu
ZyB0ZXN0X2V4cGVjYXRhdGlvbnMudHh0LgotICAgICAgICBvdmVycmlkZXM6IHRlc3QgZXhwZWN0
YXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgYW55Ci0gICAgICAgICAgICBlbnRy
aWVzIGluIHxleHBlY3RhdGlvbnN8LiBUaGlzIGlzIHVzZWQgYnkgY2FsbGVycwotICAgICAgICAg
ICAgdGhhdCBuZWVkIHRvIG1hbmFnZSB0d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVw
c3RyZWFtCi0gICAgICAgICAgICBhbmQgZG93bnN0cmVhbSBleHBlY3RhdGlvbnMpLgotICAgICAg
ICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rl
c3RfbGlzdCwKKyAgICAgICAgICAgICAgICAgdGVzdF9jb25maWcsIGlzX2xpbnRfbW9kZSwgb3Zl
cnJpZGVzPU5vbmUpOgorICAgICAgICAjIFNlZSBhcmd1bWVudCBkb2N1bWVudGF0aW9uIGluIFRl
c3RFeHBlY3RhdGlvbigpLCBhYm92ZS4KIAogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAg
ICAgICBzZWxmLl9mcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zID0gZXhwZWN0YXRpb25zCiAgICAgICAgIHNlbGYuX2Z1bGxfdGVzdF9saXN0ID0gZnVsbF90
ZXN0X2xpc3QKLSAgICAgICAgc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lID0gdGVzdF9wbGF0Zm9y
bV9uYW1lCi0gICAgICAgIHNlbGYuX2lzX2RlYnVnX21vZGUgPSBpc19kZWJ1Z19tb2RlCisgICAg
ICAgIHNlbGYuX3Rlc3RfY29uZmlnID0gdGVzdF9jb25maWcKICAgICAgICAgc2VsZi5faXNfbGlu
dF9tb2RlID0gaXNfbGludF9tb2RlCiAgICAgICAgIHNlbGYuX292ZXJyaWRlcyA9IG92ZXJyaWRl
cwogICAgICAgICBzZWxmLl9lcnJvcnMgPSBbXQpAQCAtMzMyLDcgKzMxNyw5IEBAIGNsYXNzIFRl
c3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgICAgICMgTWFwcyByZWxhdGl2ZSB0ZXN0IHBhdGhz
IGFzIGxpc3RlZCBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUgdG8gYQogICAgICAgICAjIGxpc3Qg
b2YgbWFwcyBjb250YWluaW5nIG1vZGlmaWVycyBhbmQgZXhwZWN0YXRpb25zIGZvciBlYWNoIHRp
bWUKLSAgICAgICAgIyB0aGUgdGVzdCBpcyBsaXN0ZWQgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxl
LgorICAgICAgICAjIHRoZSB0ZXN0IGlzIGxpc3RlZCBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUu
IFdlIHVzZSB0aGlzIHRvCisgICAgICAgICMga2VlcCBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBl
bnRpcmUgbGlzdCBvZiBleHBlY3RhdGlvbnMsIGV2ZW4KKyAgICAgICAgIyBpbnZhbGlkIG9uZXMu
CiAgICAgICAgIHNlbGYuX2FsbF9leHBlY3RhdGlvbnMgPSB7fQogCiAgICAgICAgICMgTWFwcyBh
IHRlc3QgdG8gaXRzIGxpc3Qgb2YgZXhwZWN0YXRpb25zLgpAQCAtMzQ1LDcgKzMzMiw4IEBAIGNs
YXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAjIHRoZSBvcHRpb25zIG1pbnVzIGFu
eSBidWcgb3IgcGxhdGZvcm0gc3RyaW5ncwogICAgICAgICBzZWxmLl90ZXN0X3RvX21vZGlmaWVy
cyA9IHt9CiAKLSAgICAgICAgIyBNYXBzIGEgdGVzdCB0byB0aGUgYmFzZSBwYXRoIHRoYXQgaXQg
d2FzIGxpc3RlZCB3aXRoIGluIHRoZSBsaXN0LgorICAgICAgICAjIE1hcHMgYSB0ZXN0IHRvIHRo
ZSBiYXNlIHBhdGggdGhhdCBpdCB3YXMgbGlzdGVkIHdpdGggaW4gdGhlIGxpc3QgYW5kCisgICAg
ICAgICMgdGhlIG51bWJlciBvZiBtYXRjaGVzIHRoYXQgYmFzZSBwYXRoIGhhZC4KICAgICAgICAg
c2VsZi5fdGVzdF9saXN0X3BhdGhzID0ge30KIAogICAgICAgICBzZWxmLl9tb2RpZmllcl90b190
ZXN0cyA9IHNlbGYuX2RpY3Rfb2Zfc2V0cyhzZWxmLk1PRElGSUVSUykKQEAgLTM3MiwxMyArMzYw
LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICBkZWYgX2hhbmRsZV9hbnlf
cmVhZF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpIG9yIGxlbihz
ZWxmLl9ub25fZmF0YWxfZXJyb3JzKToKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX2RlYnVnX21v
ZGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRfdHlwZSA9ICdERUJVRycKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgYnVpbGRfdHlwZSA9ICdSRUxFQVNFJwotICAgICAgICAgICAg
X2xvZy5lcnJvcignJykKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZBSUxVUkVTIEZPUiBQTEFU
Rk9STTogJXMsIEJVSUxEX1RZUEU6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgIChzZWxm
Ll90ZXN0X3BsYXRmb3JtX25hbWUudXBwZXIoKSwgYnVpbGRfdHlwZSkpCisgICAgICAgICAgICBf
bG9nLmVycm9yKCJGQUlMVVJFUyBGT1IgJXMiICUgc3RyKHNlbGYuX3Rlc3RfY29uZmlnKSkKIAog
ICAgICAgICAgICAgZm9yIGVycm9yIGluIHNlbGYuX2Vycm9yczoKICAgICAgICAgICAgICAgICBf
bG9nLmVycm9yKGVycm9yKQpAQCAtMzk0LDExICszNzYsMTIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uc0ZpbGU6CiAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNldChbUEFTU10pCiAgICAgICAgIG9w
dGlvbnMgPSBbXQogICAgICAgICBtb2RpZmllcnMgPSBbXQorICAgICAgICBudW1fbWF0Y2hlcyA9
IDAKICAgICAgICAgaWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CiAgICAgICAgICAgICBmb3IgdGVz
dCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKICAgICAgICAgICAgICAgICBpZiBub3QgdGVzdCBp
biBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF90
ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ9RmFsc2UpCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgbnVtX21hdGNoZXMsIGV4cGVjdGF0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgb3ZlcnJpZGVz
X2FsbG93ZWQ9RmFsc2UpCiAKICAgICBkZWYgX2RpY3Rfb2Zfc2V0cyhzZWxmLCBzdHJpbmdzX3Rv
X2NvbnN0YW50cyk6CiAgICAgICAgICIiIlRha2VzIGEgZGljdCBvZiBzdHJpbmdzLT5jb25zdGFu
dHMgYW5kIHJldHVybnMgYSBkaWN0IG1hcHBpbmcKQEAgLTUwNSw3ICs0ODgsOCBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJyAgbmV3OiAl
cycsIG5ld19saW5lKQogICAgICAgICAgICAgZWxpZiBhY3Rpb24gPT0gQUREX1BMQVRGT1JNU19F
WENFUFRfVEhJUzoKICAgICAgICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKQotICAg
ICAgICAgICAgICAgIG5ld19vcHRpb25zID0gcGFydHNbMF0KKyAgICAgICAgICAgICAgICBfbG9n
LmluZm8oJ1Rlc3QgdXBkYXRlZDogJykKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oJyAgb2xk
OiAlcycsIGxpbmUpCiAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5fcG9ydC50ZXN0X3Bs
YXRmb3JtX25hbWVzKCk6CiAgICAgICAgICAgICAgICAgICAgIHAgPSBwLnVwcGVyKCkKICAgICAg
ICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgdGVtcCBzb2x1dGlvbiBmb3IgcmViYXNlbGluaW5n
IHRvb2wuCkBAIC01MTUsMTMgKzQ5OSwxMSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
ICAgICAgICAgICAgICAgICAgICAgIyBUT0RPKHZpY3RvcncpOiBSZW1vdmUgV0lOLVZJU1RBIGFu
ZCBXSU4tNyBvbmNlIHdlIGhhdmUKICAgICAgICAgICAgICAgICAgICAgIyByZWxpYWJsZSBXaW4g
NyBhbmQgV2luIFZpc3RhIGJ1aWxkYm90cyBzZXR1cC4KICAgICAgICAgICAgICAgICAgICAgaWYg
bm90IHAgaW4gKHBsYXRmb3JtLnVwcGVyKCksICdXSU4tVklTVEEnLCAnV0lOLTcnKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld19vcHRpb25zICs9IHAgKyAnICcKLSAgICAgICAgICAgICAg
ICBuZXdfbGluZSA9ICgnJXM6JXMnICUgKG5ld19vcHRpb25zLCBwYXJ0c1sxXSkpCi0gICAgICAg
ICAgICAgICAgZl9uZXcuYXBwZW5kKG5ld19saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAg
bmV3X29wdGlvbnMgPSBwYXJ0c1swXSArIHAgKyAnICcKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5ld19saW5lID0gKCclczolcycgJSAobmV3X29wdGlvbnMsIHBhcnRzWzFdKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZfbmV3LmFwcGVuZChuZXdfbGluZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIF9sb2cuaW5mbygnICBuZXc6ICVzJywgbmV3X2xpbmUpCiAgICAgICAgICAgICAgICAg
dGVzdHNfdXBkYXRlZCArPSAxCi0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdUZXN0IHVwZGF0
ZWQ6ICcpCi0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcgIG9sZDogJXMnLCBsaW5lKQotICAg
ICAgICAgICAgICAgIF9sb2cuaW5mbygnICBuZXc6ICVzJywgbmV3X2xpbmUpCiAKICAgICAgICAg
X2xvZy5pbmZvKCdUb3RhbCB0ZXN0cyByZW1vdmVkOiAlZCcsIHRlc3RzX3JlbW92ZWQpCiAgICAg
ICAgIF9sb2cuaW5mbygnVG90YWwgdGVzdHMgdXBkYXRlZDogJWQnLCB0ZXN0c191cGRhdGVkKQpA
QCAtNTM3LDEyICs1MTksMTYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICAg
ICAgb3B0aW9ucyA9IFtdCiAgICAgICAgIGlmIGxpbmUuZmluZCgiOiIpIGlzIC0xOgotICAgICAg
ICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBsaW5lLnNwbGl0KCI9IikKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgiOiIpCi0gICAgICAgICAgICBvcHRp
b25zID0gc2VsZi5fZ2V0X29wdGlvbnNfbGlzdChwYXJ0c1swXSkKLSAgICAgICAgICAgIHRlc3Rf
YW5kX2V4cGVjdGF0aW9uID0gcGFydHNbMV0uc3BsaXQoJz0nKQorICAgICAgICAgICAgc2VsZi5f
YWRkX2Vycm9yKGxpbmVubywgIk1pc3NpbmcgYSAnOiciLCBsaW5lKQorICAgICAgICAgICAgcmV0
dXJuIChOb25lLCBOb25lLCBOb25lKQogCisgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgnOicp
CisgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gMjoKKyAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJv
cihsaW5lbm8sICJUb28gbWFueSAnOiciLCBsaW5lKQorICAgICAgICAgICAgcmV0dXJuIChOb25l
LCBOb25lLCBOb25lKQorCisgICAgICAgIG9wdGlvbnMgPSBzZWxmLl9nZXRfb3B0aW9uc19saXN0
KHBhcnRzWzBdKQorICAgICAgICB0ZXN0X2FuZF9leHBlY3RhdGlvbiA9IHBhcnRzWzFdLnNwbGl0
KCc9JykKICAgICAgICAgdGVzdCA9IHRlc3RfYW5kX2V4cGVjdGF0aW9uWzBdLnN0cmlwKCkKICAg
ICAgICAgaWYgKGxlbih0ZXN0X2FuZF9leHBlY3RhdGlvbikgaXMgbm90IDIpOgogICAgICAgICAg
ICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywgIk1pc3NpbmcgZXhwZWN0YXRpb25zLiIsCkBAIC01
ODgsNjkgKzU3NCw2IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgICAgIHJl
dHVybiBSRU1PVkVfVEVTVAogCi0gICAgZGVmIF9oYXNfdmFsaWRfbW9kaWZpZXJzX2Zvcl9jdXJy
ZW50X3BsYXRmb3JtKHNlbGYsIG9wdGlvbnMsIGxpbmVubywKLSAgICAgICAgdGVzdF9hbmRfZXhw
ZWN0YXRpb25zLCBtb2RpZmllcnMpOgotICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWYgdGhlIGN1
cnJlbnQgcGxhdGZvcm0gaXMgaW4gdGhlIG9wdGlvbnMgbGlzdCBvciBpZgotICAgICAgICBubyBw
bGF0Zm9ybXMgYXJlIGxpc3RlZCBhbmQgaWYgdGhlcmUgYXJlIG5vIGZhdGFsIGVycm9ycyBpbiB0
aGUKLSAgICAgICAgb3B0aW9ucyBsaXN0LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgb3B0
aW9uczogTGlzdCBvZiBsb3dlcmNhc2Ugb3B0aW9ucy4KLSAgICAgICAgICBsaW5lbm86IFRoZSBs
aW5lIGluIHRoZSBmaWxlIHdoZXJlIHRoZSB0ZXN0IGlzIGxpc3RlZC4KLSAgICAgICAgICB0ZXN0
X2FuZF9leHBlY3RhdGlvbnM6IFRoZSBwYXRoIGFuZCBleHBlY3RhdGlvbnMgZm9yIHRoZSB0ZXN0
LgotICAgICAgICAgIG1vZGlmaWVyczogVGhlIHNldCB0byBwb3B1bGF0ZSB3aXRoIG1vZGlmaWVy
cy4KLSAgICAgICAgIiIiCi0gICAgICAgIGhhc19hbnlfcGxhdGZvcm0gPSBGYWxzZQotICAgICAg
ICBoYXNfYnVnX2lkID0gRmFsc2UKLSAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25zOgotICAg
ICAgICAgICAgaWYgb3B0aW9uIGluIHNlbGYuTU9ESUZJRVJTOgotICAgICAgICAgICAgICAgIG1v
ZGlmaWVycy5hZGQob3B0aW9uKQotICAgICAgICAgICAgZWxpZiBvcHRpb24gaW4gc2VsZi5fcG9y
dC50ZXN0X3BsYXRmb3JtX25hbWVzKCk6Ci0gICAgICAgICAgICAgICAgaGFzX2FueV9wbGF0Zm9y
bSA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgcmUubWF0Y2gocididWdcZCcsIG9wdGlvbikgIT0g
Tm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAnQnVnIG11c3Qg
YmUgZWl0aGVyIEJVR0NSLCBCVUdXSywgb3IgQlVHVjhfIGZvciB0ZXN0OiAlcycgJQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24sIHRlc3RfYW5kX2V4cGVjdGF0aW9ucykK
LSAgICAgICAgICAgIGVsaWYgb3B0aW9uLnN0YXJ0c3dpdGgoJ2J1ZycpOgotICAgICAgICAgICAg
ICAgIGhhc19idWdfaWQgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIG9wdGlvbiBub3QgaW4gc2Vs
Zi5CVUlMRF9UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAn
SW52YWxpZCBtb2RpZmllciBmb3IgdGVzdDogJXMnICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9uLCB0ZXN0X2FuZF9leHBlY3RhdGlvbnMpCi0KLSAgICAgICAgaWYgaGFz
X2FueV9wbGF0Zm9ybSBhbmQgbm90IHNlbGYuX21hdGNoX3BsYXRmb3JtKG9wdGlvbnMpOgotICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgbm90IGhhc19idWdfaWQgYW5kICd3
b250Zml4JyBub3QgaW4gb3B0aW9uczoKLSAgICAgICAgICAgICMgVE9ETyhvamFuKTogVHVybiB0
aGlzIGludG8gYW4gQWRkRXJyb3IgY2FsbCBvbmNlIGFsbCB0aGUKLSAgICAgICAgICAgICMgdGVz
dHMgaGF2ZSBCVUcgaWRlbnRpZmllcnMuCi0gICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFs
X2Vycm9yKGxpbmVubywgJ1Rlc3QgbGFja3MgQlVHIG1vZGlmaWVyLicsCi0gICAgICAgICAgICAg
ICAgdGVzdF9hbmRfZXhwZWN0YXRpb25zKQotCi0gICAgICAgIGlmICdyZWxlYXNlJyBpbiBvcHRp
b25zIG9yICdkZWJ1ZycgaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX2RlYnVn
X21vZGUgYW5kICdkZWJ1Zycgbm90IGluIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfZGVidWdfbW9kZSBhbmQgJ3JlbGVh
c2UnIG5vdCBpbiBvcHRpb25zOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAg
ICAgIGlmIHNlbGYuX2lzX2xpbnRfbW9kZSBhbmQgJ3JlYmFzZWxpbmUnIGluIG9wdGlvbnM6Ci0g
ICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAotICAgICAgICAgICAgICAgICdSRUJB
U0VMSU5FIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHJ1bm5pbmcgcmViYXNlbGluZS5weS4gJwot
ICAgICAgICAgICAgICAgICdDYW5ub3QgYmUgY2hlY2tlZCBpbi4nLCB0ZXN0X2FuZF9leHBlY3Rh
dGlvbnMpCi0KLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfbWF0Y2hfcGxhdGZvcm0o
c2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgICIiIk1hdGNoIHRoZSBsaXN0IG9mIG9wdGlvbnMgYWdh
aW5zdCBvdXIgc3BlY2lmaWVkIHBsYXRmb3JtLiBJZiBhbnkKLSAgICAgICAgb2YgdGhlIG9wdGlv
bnMgcHJlZml4LW1hdGNoIHNlbGYuX3BsYXRmb3JtLCByZXR1cm4gVHJ1ZS4gVGhpcyBoYW5kbGVz
Ci0gICAgICAgIHRoZSBjYXNlIHdoZXJlIGEgdGVzdCBpcyBtYXJrZWQgV0lOIGFuZCB0aGUgcGxh
dGZvcm0gaXMgV0lOLVZJU1RBLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgb3B0aW9uczog
bGlzdCBvZiBvcHRpb25zCi0gICAgICAgICIiIgotICAgICAgICBmb3Igb3B0IGluIG9wdGlvbnM6
Ci0gICAgICAgICAgICBpZiBzZWxmLl90ZXN0X3BsYXRmb3JtX25hbWUuc3RhcnRzd2l0aChvcHQp
OgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCiAg
ICAgZGVmIF9hZGRfdG9fYWxsX2V4cGVjdGF0aW9ucyhzZWxmLCB0ZXN0LCBvcHRpb25zLCBleHBl
Y3RhdGlvbnMpOgogICAgICAgICAjIE1ha2UgYWxsIHBhdGhzIHVuaXgtc3R5bGUgc28gdGhlIGRh
c2hib2FyZCBkb2Vzbid0IG5lZWQgdG8uCiAgICAgICAgIHRlc3QgPSB0ZXN0LnJlcGxhY2UoJ1xc
JywgJy8nKQpAQCAtNjYzLDU0ICs1ODYsNDMgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgICIiIkZvciBlYWNoIHRlc3QgaW4gYW4gZXhwZWN0YXRpb25zIGl0ZXJhYmxlLCBn
ZW5lcmF0ZSB0aGUKICAgICAgICAgZXhwZWN0YXRpb25zIGZvciBpdC4iIiIKICAgICAgICAgbGlu
ZW5vID0gMAorICAgICAgICBtYXRjaGVyID0gTW9kaWZpZXJNYXRjaGVyKHNlbGYuX3Rlc3RfY29u
ZmlnKQogICAgICAgICBmb3IgbGluZSBpbiBleHBlY3RhdGlvbnM6CiAgICAgICAgICAgICBsaW5l
bm8gKz0gMQorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19saW5lKGxpbmUsIGxpbmVubywgbWF0
Y2hlciwgb3ZlcnJpZGVzX2FsbG93ZWQpCiAKLSAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoLCBv
cHRpb25zLCBleHBlY3RhdGlvbnMgPSBcCi0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBl
Y3RhdGlvbnNfbGluZShsaW5lLCBsaW5lbm8pCi0gICAgICAgICAgICBpZiBub3QgZXhwZWN0YXRp
b25zOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgZGVmIF9wcm9jZXNzX2xpbmUoc2Vs
ZiwgbGluZSwgbGluZW5vLCBtYXRjaGVyLCBvdmVycmlkZXNfYWxsb3dlZCk6CisgICAgICAgIHRl
c3RfbGlzdF9wYXRoLCBvcHRpb25zLCBleHBlY3RhdGlvbnMgPSBcCisgICAgICAgICAgICBzZWxm
LnBhcnNlX2V4cGVjdGF0aW9uc19saW5lKGxpbmUsIGxpbmVubykKKyAgICAgICAgaWYgbm90IGV4
cGVjdGF0aW9uczoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICAgICBzZWxmLl9hZGRf
dG9fYWxsX2V4cGVjdGF0aW9ucyh0ZXN0X2xpc3RfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2luKG9wdGlvbnMpLnVwcGVyKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIuam9pbihleHBlY3RhdGlvbnMp
LnVwcGVyKCkpCisgICAgICAgIHNlbGYuX2FkZF90b19hbGxfZXhwZWN0YXRpb25zKHRlc3RfbGlz
dF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2lu
KG9wdGlvbnMpLnVwcGVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAiLmpvaW4oZXhwZWN0YXRpb25zKS51cHBlcigpKQogCi0gICAgICAgICAgICBtb2RpZmll
cnMgPSBzZXQoKQotICAgICAgICAgICAgaWYgb3B0aW9ucyBhbmQgbm90IHNlbGYuX2hhc192YWxp
ZF9tb2RpZmllcnNfZm9yX2N1cnJlbnRfcGxhdGZvcm0oCi0gICAgICAgICAgICAgICAgb3B0aW9u
cywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCwgbW9kaWZpZXJzKToKLSAgICAgICAgICAgICAgICBj
b250aW51ZQorICAgICAgICBudW1fbWF0Y2hlcyA9IHNlbGYuX2NoZWNrX29wdGlvbnMobWF0Y2hl
ciwgb3B0aW9ucywgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIGlmIG51bV9tYXRjaGVzID09IE1vZGlmaWVy
TWF0Y2hlci5OT19NQVRDSDoKKyAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgICAgICBleHBl
Y3RhdGlvbnMgPSBzZWxmLl9wYXJzZV9leHBlY3RhdGlvbnMoZXhwZWN0YXRpb25zLCBsaW5lbm8s
Ci0gICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIGV4cGVjdGF0aW9ucyA9
IHNlbGYuX3BhcnNlX2V4cGVjdGF0aW9ucyhleHBlY3RhdGlvbnMsIGxpbmVubywKKyAgICAgICAg
ICAgIHRlc3RfbGlzdF9wYXRoKQogCi0gICAgICAgICAgICBpZiAnc2xvdycgaW4gb3B0aW9ucyBh
bmQgVElNRU9VVCBpbiBleHBlY3RhdGlvbnM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkX2Vy
cm9yKGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgJ0EgdGVzdCBjYW4gbm90IGJlIGJvdGgg
c2xvdyBhbmQgdGltZW91dC4gSWYgaXQgdGltZXMgb3V0ICcKLSAgICAgICAgICAgICAgICAgICAg
J2luZGVmaW5pdGVseSwgdGhlbiBpdCBzaG91bGQgYmUganVzdCB0aW1lb3V0LicsCi0gICAgICAg
ICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBzZWxmLl9jaGVja19vcHRpb25z
X2FnYWluc3RfZXhwZWN0YXRpb25zKG9wdGlvbnMsIGV4cGVjdGF0aW9ucywKKyAgICAgICAgICAg
IGxpbmVubywgdGVzdF9saXN0X3BhdGgpCiAKLSAgICAgICAgICAgIGZ1bGxfcGF0aCA9IHNlbGYu
X2ZzLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQotICAgICAgICAgICAgZnVsbF9w
YXRoID0gc2VsZi5fZnMubm9ybXBhdGgoZnVsbF9wYXRoKQotICAgICAgICAgICAgIyBXZWJLaXQn
cyB3YXkgb2Ygc2tpcHBpbmcgdGVzdHMgaXMgdG8gYWRkIGEgLWRpc2FibGVkIHN1ZmZpeC4KLSAg
ICAgICAgICAgICMgU28gd2Ugc2hvdWxkIGNvbnNpZGVyIHRoZSBwYXRoIGV4aXN0aW5nIGlmIHRo
ZSBwYXRoIG9yIHRoZQotICAgICAgICAgICAgIyAtZGlzYWJsZWQgdmVyc2lvbiBleGlzdHMuCi0g
ICAgICAgICAgICBpZiAobm90IHNlbGYuX3BvcnQucGF0aF9leGlzdHMoZnVsbF9wYXRoKQotICAg
ICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fcG9ydC5wYXRoX2V4aXN0cyhmdWxsX3BhdGggKyAn
LWRpc2FibGVkJykpOgotICAgICAgICAgICAgICAgICMgTG9nIGEgbm9uIGZhdGFsIGVycm9yIGhl
cmUgc2luY2UgeW91IGhpdCB0aGlzIGNhc2UgYW55Ci0gICAgICAgICAgICAgICAgIyB0aW1lIHlv
dSB1cGRhdGUgdGVzdF9leHBlY3RhdGlvbnMudHh0IHdpdGhvdXQgc3luY2luZwotICAgICAgICAg
ICAgICAgICMgdGhlIExheW91dFRlc3RzIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ19ub25fZmF0YWxfZXJyb3IobGluZW5vLCAnUGF0aCBkb2VzIG5vdCBleGlzdC4nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCi0gICAg
ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgc2VsZi5fY2hlY2tfcGF0aF9kb2VzX25v
dF9leGlzdChsaW5lbm8sIHRlc3RfbGlzdF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybgogCi0g
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6Ci0gICAgICAgICAgICAgICAg
dGVzdHMgPSBbdGVzdF9saXN0X3BhdGhdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHRlc3RzID0gc2VsZi5fZXhwYW5kX3Rlc3RzKHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBp
ZiBub3Qgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CisgICAgICAgICAgICB0ZXN0cyA9IFt0ZXN0X2xp
c3RfcGF0aF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RzID0gc2VsZi5fZXhwYW5k
X3Rlc3RzKHRlc3RfbGlzdF9wYXRoKQogCi0gICAgICAgICAgICBzZWxmLl9hZGRfdGVzdHModGVz
dHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1vZGlmaWVycywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpCisgICAg
ICAgIG1vZGlmaWVycyA9IFtvIGZvciBvIGluIG9wdGlvbnMgaWYgbyBpbiBzZWxmLk1PRElGSUVS
U10KKyAgICAgICAgc2VsZi5fYWRkX3Rlc3RzKHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlz
dF9wYXRoLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG51bV9t
YXRjaGVzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCkKIAogICAgIGRlZiBfZ2V0X29wdGlv
bnNfbGlzdChzZWxmLCBsaXN0U3RyaW5nKToKICAgICAgICAgcmV0dXJuIFtwYXJ0LnN0cmlwKCku
bG93ZXIoKSBmb3IgcGFydCBpbiBsaXN0U3RyaW5nLnN0cmlwKCkuc3BsaXQoJyAnKV0KQEAgLTcy
Niw5ICs2MzgsNjggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAgICBy
ZXN1bHQuYWRkKGV4cGVjdGF0aW9uKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYg
X2NoZWNrX29wdGlvbnMoc2VsZiwgbWF0Y2hlciwgb3B0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3Rf
cGF0aCk6CisgICAgICAgIG1hdGNoX3Jlc3VsdCA9IHNlbGYuX2NoZWNrX3N5bnRheChtYXRjaGVy
LCBvcHRpb25zLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgc2VsZi5fY2hlY2tfc2VtYW50aWNzKG9wdGlv
bnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIHJldHVybiBtYXRjaF9yZXN1bHQu
bnVtX21hdGNoZXMKKworICAgIGRlZiBfY2hlY2tfc3ludGF4KHNlbGYsIG1hdGNoZXIsIG9wdGlv
bnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICBtYXRjaF9yZXN1bHQgPSBtYXRj
aGVyLm1hdGNoKG9wdGlvbnMpCisgICAgICAgIGZvciBlcnJvciBpbiBtYXRjaF9yZXN1bHQuZXJy
b3JzOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywgZXJyb3IsIHRlc3RfbGlz
dF9wYXRoKQorICAgICAgICBmb3Igd2FybmluZyBpbiBtYXRjaF9yZXN1bHQud2FybmluZ3M6Cisg
ICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgd2FybmluZywgdGVz
dF9saXN0X3BhdGgpCisgICAgICAgIHJldHVybiBtYXRjaF9yZXN1bHQKKworICAgIGRlZiBfY2hl
Y2tfc2VtYW50aWNzKHNlbGYsIG9wdGlvbnMsIGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAg
ICAgICBoYXNfd29udGZpeCA9ICd3b250Zml4JyBpbiBvcHRpb25zCisgICAgICAgIGhhc19idWcg
PSBGYWxzZQorICAgICAgICBmb3Igb3B0IGluIG9wdGlvbnM6CisgICAgICAgICAgICBpZiBvcHQu
c3RhcnRzd2l0aCgnYnVnJyk6CisgICAgICAgICAgICAgICAgaGFzX2J1ZyA9IFRydWUKKyAgICAg
ICAgICAgICAgICBpZiByZS5tYXRjaCgnYnVnXGQrJywgb3B0KToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICdCVUdc
ZCsgaXMgbm90IGFsbG93ZWQsIG11c3QgYmUgb25lIG9mICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdCVUdDUlxkKywgQlVHV0tcZCssIEJVR1Y4X1xkKywgJworICAgICAgICAgICAgICAgICAg
ICAgICAgJ29yIGEgbm9uLW51bWVyaWMgYnVnIGlkZW50aWZpZXIuJywgdGVzdF9saXN0X3BhdGgp
CisKKyAgICAgICAgaWYgbm90IGhhc19idWcgYW5kIG5vdCBoYXNfd29udGZpeDoKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ19ub25fZmF0YWxfZXJyb3IobGluZW5vLCAnVGVzdCBsYWNrcyBCVUcgbW9k
aWZpZXIuJywKKyAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQorCisgICAgICAgIGlmIHNlbGYu
X2lzX2xpbnRfbW9kZSBhbmQgJ3JlYmFzZWxpbmUnIGluIG9wdGlvbnM6CisgICAgICAgICAgICBz
ZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgJ1JFQkFTRUxJTkUgc2hvdWxkIG9u
bHkgYmUgdXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5lLnB5LiAnCisgICAgICAgICAgICAnQ2Fu
bm90IGJlIGNoZWNrZWQgaW4uJywgdGVzdF9saXN0X3BhdGgpCisKKyAgICBkZWYgX2NoZWNrX29w
dGlvbnNfYWdhaW5zdF9leHBlY3RhdGlvbnMoc2VsZiwgb3B0aW9ucywgZXhwZWN0YXRpb25zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIHRlc3Rf
bGlzdF9wYXRoKToKKyAgICAgICAgaWYgJ3Nsb3cnIGluIG9wdGlvbnMgYW5kIFRJTUVPVVQgaW4g
ZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAgICAg
ICAgICAgICAgICAnQSB0ZXN0IGNhbiBub3QgYmUgYm90aCBzbG93IGFuZCB0aW1lb3V0LiBJZiBp
dCB0aW1lcyBvdXQgJworICAgICAgICAgICAgICAgICdpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hv
dWxkIGJlIGp1c3QgdGltZW91dC4nLAorICAgICAgICAgICAgICAgIHRlc3RfbGlzdF9wYXRoKQor
CisgICAgZGVmIF9jaGVja19wYXRoX2RvZXNfbm90X2V4aXN0KHNlbGYsIGxpbmVubywgdGVzdF9s
aXN0X3BhdGgpOgorICAgICAgICBmdWxsX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3BvcnQu
bGF5b3V0X3Rlc3RzX2RpcigpLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZnVsbF9wYXRoID0g
c2VsZi5fZnMubm9ybXBhdGgoZnVsbF9wYXRoKQorICAgICAgICAjIFdlYktpdCdzIHdheSBvZiBz
a2lwcGluZyB0ZXN0cyBpcyB0byBhZGQgYSAtZGlzYWJsZWQgc3VmZml4LgorICAgICAgICAgICAg
IyBTbyB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIHBhdGggZXhpc3RpbmcgaWYgdGhlIHBhdGggb3Ig
dGhlCisgICAgICAgICMgLWRpc2FibGVkIHZlcnNpb24gZXhpc3RzLgorICAgICAgICBpZiAobm90
IHNlbGYuX3BvcnQucGF0aF9leGlzdHMoZnVsbF9wYXRoKQorICAgICAgICAgICAgYW5kIG5vdCBz
ZWxmLl9wb3J0LnBhdGhfZXhpc3RzKGZ1bGxfcGF0aCArICctZGlzYWJsZWQnKSk6CisgICAgICAg
ICAgICAjIExvZyBhIG5vbiBmYXRhbCBlcnJvciBoZXJlIHNpbmNlIHlvdSBoaXQgdGhpcyBjYXNl
IGFueQorICAgICAgICAgICAgIyB0aW1lIHlvdSB1cGRhdGUgdGVzdF9leHBlY3RhdGlvbnMudHh0
IHdpdGhvdXQgc3luY2luZworICAgICAgICAgICAgIyB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5
CisgICAgICAgICAgICBzZWxmLl9sb2dfbm9uX2ZhdGFsX2Vycm9yKGxpbmVubywgJ1BhdGggZG9l
cyBub3QgZXhpc3QuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rf
bGlzdF9wYXRoKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisKICAgICBkZWYgX2V4cGFuZF90ZXN0cyhzZWxmLCB0ZXN0X2xpc3RfcGF0aCk6CiAgICAgICAg
ICIiIkNvbnZlcnQgdGhlIHRlc3Qgc3BlY2lmaWNhdGlvbiB0byBhbiBhYnNvbHV0ZSwgbm9ybWFs
aXplZAotICAgICAgICBwYXRoIGFuZCBtYWtlIHN1cmUgZGlyZWN0b3JpZXMgZW5kIHdpdGggdGhl
IE9TIHBhdGggc2VwYXJhdG9yLiIiIgorICAgICAgICBwYXRoIGFuZCBtYWtlIHN1cmUgZGlyZWN0
b3JpZXMgZW5kIHdpdGggdGhlIHBhdGggc2VwYXJhdG9yLiIiIgogICAgICAgICAjIEZJWE1FOiBm
dWxsX3Rlc3RfbGlzdCBjYW4gcXVpY2tseSBjb250YWluIGEgYmlnIGFtb3VudCBvZgogICAgICAg
ICAjIGVsZW1lbnRzLiBXZSBzaG91bGQgY29uc2lkZXIgYXQgc29tZSBwb2ludCB0byB1c2UgYSBt
b3JlCiAgICAgICAgICMgZWZmaWNpZW50IHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGEgbGlzdC4gTWF5
YmUgYSBkaWN0aW9uYXJ5IG9mCkBAIC03NTEsMTcgKzcyMiwxOSBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zRmlsZToKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIF9hZGRfdGVzdHMo
c2VsZiwgdGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAgICAg
ICAgICAgICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKToKKyAg
ICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG51bV9tYXRjaGVzLCBvcHRpb25zLCBvdmVycmlk
ZXNfYWxsb3dlZCk6CiAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgaWYg
c2VsZi5fYWxyZWFkeV9zZWVuX3Rlc3QodGVzdCwgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19hbGxvd2VkKToK
KyAgICAgICAgICAgIGlmIHNlbGYuX2FscmVhZHlfc2Vlbl9iZXR0ZXJfbWF0Y2godGVzdCwgdGVz
dF9saXN0X3BhdGgsCisgICAgICAgICAgICAgICAgbnVtX21hdGNoZXMsIGxpbmVubywgb3ZlcnJp
ZGVzX2FsbG93ZWQpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIHNl
bGYuX2NsZWFyX2V4cGVjdGF0aW9uc19mb3JfdGVzdCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCkKLSAg
ICAgICAgICAgIHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBv
cHRpb25zLAorICAgICAgICAgICAgc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdID0gKHNlbGYu
X2ZzLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSwKKyAgICAgICAgICAgICAgICBudW1fbWF0Y2hl
cywgbGluZW5vKQorICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBu
dW1fbWF0Y2hlcywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpCiAKLSAgICBkZWYgX2FkZF90ZXN0KHNlbGYsIHRlc3Qs
IG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAorICAgIGRlZiBfYWRkX3Rlc3Qoc2Vs
ZiwgdGVzdCwgbW9kaWZpZXJzLCBudW1fbWF0Y2hlcywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAog
ICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICAiIiJTZXRzIHRo
ZSBleHBlY3RlZCBzdGF0ZSBmb3IgYSBnaXZlbiB0ZXN0LgogCkBAIC03NzIsNiArNzQ1LDcgQEAg
Y2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgdGVz
dDogdGVzdCB0byBhZGQKICAgICAgICAgICBtb2RpZmllcnM6IHNlcXVlbmNlIG9mIG1vZGlmaWVy
IGtleXdvcmRzICgnd29udGZpeCcsICdzbG93JywgZXRjLikKKyAgICAgICAgICBudW1fbWF0Y2hl
czogbnVtYmVyIG9mIG1vZGlmaWVycyB0aGF0IG1hdGNoZWQgdGhlIGNvbmZpZ3VyYXRpb24KICAg
ICAgICAgICBleHBlY3RhdGlvbnM6IHNlcXVlbmNlIG9mIGV4cGVjdGF0aW9ucyAoUEFTUywgSU1B
R0UsIGV0Yy4pCiAgICAgICAgICAgb3B0aW9uczogc2VxdWVuY2Ugb2Yga2V5d29yZHMgYW5kIGJ1
ZyBpZGVudGlmaWVycy4KICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dlZDogd2hldGhlciB3ZSdy
ZSBwYXJzaW5nIHRoZSByZWd1bGFyIGV4cGVjdGF0aW9ucwpAQCAtODEwLDEzICs3ODQsMTIgQEAg
Y2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIHRoYW4gYSBwcmV2aW91cyBsaXN0
aW5nLgogICAgICAgICAiIiIKICAgICAgICAgaWYgdGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0
aHM6Ci0gICAgICAgICAgICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9ucy5wb3AodGVzdCwgJycp
Ci0gICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX2V4cGVjdGF0
aW9uX3RvX3Rlc3RzKQotICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBz
ZWxmLl9tb2RpZmllcl90b190ZXN0cykKLSAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3Nl
dHModGVzdCwgc2VsZi5fdGltZWxpbmVfdG9fdGVzdHMpCi0gICAgICAgICAgICBzZWxmLl9yZW1v
dmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzKQotCi0gICAgICAg
IHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IHNlbGYuX2ZzLm5vcm1wYXRoKHRlc3RfbGlz
dF9wYXRoKQorICAgICAgICAgICAgYmFzZV9wYXRoID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rl
c3RdWzBdCisgICAgICAgICAgICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9ucy5wb3AoYmFzZV9w
YXRoLCAnJykKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHMoYmFzZV9wYXRoLCBz
ZWxmLl9leHBlY3RhdGlvbl90b190ZXN0cykKKyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9t
X3NldHMoYmFzZV9wYXRoLCBzZWxmLl9tb2RpZmllcl90b190ZXN0cykKKyAgICAgICAgICAgIHNl
bGYuX3JlbW92ZV9mcm9tX3NldHMoYmFzZV9wYXRoLCBzZWxmLl90aW1lbGluZV90b190ZXN0cykK
KyAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHMoYmFzZV9wYXRoLCBzZWxmLl9yZXN1
bHRfdHlwZV90b190ZXN0cykKIAogICAgIGRlZiBfcmVtb3ZlX2Zyb21fc2V0cyhzZWxmLCB0ZXN0
LCBkaWN0KToKICAgICAgICAgIiIiUmVtb3ZlcyB0aGUgZ2l2ZW4gdGVzdCBmcm9tIHRoZSBzZXRz
IGluIHRoZSBkaWN0aW9uYXJ5LgpAQCAtODI4LDMyICs4MDEsNzAgQEAgY2xhc3MgVGVzdEV4cGVj
dGF0aW9uc0ZpbGU6CiAgICAgICAgICAgICBpZiB0ZXN0IGluIHNldF9vZl90ZXN0czoKICAgICAg
ICAgICAgICAgICBzZXRfb2ZfdGVzdHMucmVtb3ZlKHRlc3QpCiAKLSAgICBkZWYgX2FscmVhZHlf
c2Vlbl90ZXN0KHNlbGYsIHRlc3QsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbGxvd19vdmVycmlkZXMpOgotICAgICAgICAiIiJSZXR1cm5zIHRy
dWUgaWYgd2UndmUgYWxyZWFkeSBzZWVuIGEgbW9yZSBwcmVjaXNlIHBhdGggZm9yIHRoaXMgdGVz
dAotICAgICAgICB0aGFuIHRoZSB0ZXN0X2xpc3RfcGF0aC4KKyAgICBkZWYgX2FscmVhZHlfc2Vl
bl9iZXR0ZXJfbWF0Y2goc2VsZiwgdGVzdCwgdGVzdF9saXN0X3BhdGgsIG51bV9tYXRjaGVzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIG92ZXJyaWRlc19hbGxv
d2VkKToKKyAgICAgICAgIiIiUmV0dXJucyB3aGV0aGVyIHdlJ3ZlIHNlZW4gYSBiZXR0ZXIgbWF0
Y2ggYWxyZWFkeSBpbiB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIFRydWUgaWYgd2UndmUg
YWxyZWFkeSBzZWVuIGEgdGVzdF9saXN0X3BhdGggdGhhdCBtYXRjaGVzIG1vcmUgb2YgdGhlIHRl
c3QKKyAgICAgICAgICAgIHRoYW4gdGhpcyBwYXRoIGRvZXMKICAgICAgICAgIiIiCisgICAgICAg
ICMgRklYTUU6IFNlZSBjb21tZW50IGJlbG93IGFib3V0IG1hdGNoaW5nIHRlc3QgY29uZmlncyBh
bmQgbnVtX21hdGNoZXMuCisKICAgICAgICAgaWYgbm90IHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0
X3BhdGhzOgorICAgICAgICAgICAgIyBXZSd2ZSBuZXZlciBzZWVuIHRoaXMgdGVzdCBiZWZvcmUu
CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAgICBwcmV2X2Jhc2VfcGF0aCA9IHNl
bGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XQotICAgICAgICBpZiAocHJldl9iYXNlX3BhdGggPT0g
c2VsZi5fZnMubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpKToKLSAgICAgICAgICAgIGlmIChub3Qg
YWxsb3dfb3ZlcnJpZGVzIG9yIHRlc3QgaW4gc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHMpOgotICAg
ICAgICAgICAgICAgIGlmIGFsbG93X292ZXJyaWRlczoKLSAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0YXRpb25fc291cmNlID0gIm92ZXJyaWRlIgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3NvdXJjZSA9ICJleHBlY3RhdGlvbiIKLSAgICAg
ICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAnRHVwbGljYXRlICVzLicgJSBleHBl
Y3RhdGlvbl9zb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgIyBXZSBoYXZlIHNlZW4gdGhpcyBwYXRoLCBidXQgdGhhdCdzIG9rYXkgYmVjYXVz
ZSBpdHMKLSAgICAgICAgICAgICAgICAjIGluIHRoZSBvdmVycmlkZXMgYW5kIHRoZSBlYXJsaWVy
IHBhdGggd2FzIGluIHRoZQotICAgICAgICAgICAgICAgICMgZXhwZWN0YXRpb25zLgotICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBwcmV2X2Jhc2VfcGF0aCwgcHJldl9udW1f
bWF0Y2hlcywgcHJldl9saW5lbm8gPSBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0KKyAgICAg
ICAgYmFzZV9wYXRoID0gc2VsZi5fZnMubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpCisKKyAgICAg
ICAgaWYgbGVuKHByZXZfYmFzZV9wYXRoKSA+IGxlbihiYXNlX3BhdGgpOgorICAgICAgICAgICAg
IyBUaGUgcHJldmlvdXMgcGF0aCBtYXRjaGVkIG1vcmUgb2YgdGhlIHRlc3QuCisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGlmIGxlbihwcmV2X2Jhc2VfcGF0aCkgPCBsZW4oYmFz
ZV9wYXRoKToKKyAgICAgICAgICAgICMgVGhpcyBwYXRoIG1hdGNoZXMgbW9yZSBvZiB0aGUgdGVz
dC4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGlmIG92ZXJyaWRlc19hbGxv
d2VkIGFuZCB0ZXN0IG5vdCBpbiBzZWxmLl9vdmVycmlkZGluZ190ZXN0czoKKyAgICAgICAgICAg
ICMgV2UgaGF2ZSBzZWVuIHRoaXMgcGF0aCwgYnV0IHRoYXQncyBva2F5IGJlY2F1c2UgaXQgaXMK
KyAgICAgICAgICAgICMgaW4gdGhlIG92ZXJyaWRlcyBhbmQgdGhlIGVhcmxpZXIgcGF0aCB3YXMg
aW4gdGhlCisgICAgICAgICAgICAjIGV4cGVjdGF0aW9ucyAobm90IHRoZSBvdmVycmlkZXMpLgor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtu
b3cgd2UgaGF2ZSBzZWVuIGEgcHJldmlvdXMgZXhhY3QgbWF0Y2ggb24gdGhpcworICAgICAgICAj
IGJhc2UgcGF0aCwgc28gd2UgbmVlZCB0byBjaGVjayB0aGUgdHdvIHNldHMgb2YgbW9kaWZpZXJz
LgogCi0gICAgICAgICMgQ2hlY2sgaWYgd2UndmUgYWxyZWFkeSBzZWVuIGEgbW9yZSBwcmVjaXNl
IHBhdGguCi0gICAgICAgIHJldHVybiBwcmV2X2Jhc2VfcGF0aC5zdGFydHN3aXRoKHNlbGYuX2Zz
Lm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSkKKyAgICAgICAgaWYgb3ZlcnJpZGVzX2FsbG93ZWQ6
CisgICAgICAgICAgICBleHBlY3RhdGlvbl9zb3VyY2UgPSAib3ZlcnJpZGUiCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBleHBlY3RhdGlvbl9zb3VyY2UgPSAiZXhwZWN0YXRpb24iCisKKyAg
ICAgICAgIyBGSVhNRTogVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIHRvIGFsbG93
IGxpbmVzIHRoYXQgbWF0Y2hlZAorICAgICAgICAjIG1vcmUgbW9kaWZpZXJzIHRvIG92ZXJyaWRl
IGxpbmVzIHRoYXQgbWF0Y2hlZCBmZXdlciBtb2RpZmllcnMuCisgICAgICAgICMgSG93ZXZlciwg
d2UgY3VycmVudGx5IHZpZXcgdGhlc2UgYXMgZXJyb3JzLiBJZiB3ZSBkZWNpZGUgdG8gbWFrZQor
ICAgICAgICAjIHRoaXMgcG9saWN5IHBlcm1hbmVudCwgd2UgY2FuIHByb2JhYmx5IHNpbXBsaWZ5
IHRoaXMgY29kZQorICAgICAgICAjIGFuZCB0aGUgTW9kaWZpZXJNYXRjaGVyIGNvZGUgYSBmYWly
IGFtb3VudC4KKyAgICAgICAgIworICAgICAgICAjIFRvIHVzZSB0aGUgIm1vcmUgbW9kaWZpZXJz
IHdpbnMiIHBvbGljeSwgY2hhbmdlIHRoZSAiX2FkZF9lcnJvciIgbGluZXMgZm9yIG92ZXJyaWRl
cworICAgICAgICAjIHRvIF9sb2dfbm9uX2ZhdGFsX2Vycm9yKCkgYW5kIGNoYW5nZSB0aGUgY29t
bWVudGVkLW91dCAicmV0dXJuIEZhbHNlIi4KKworICAgICAgICBpZiBwcmV2X251bV9tYXRjaGVz
ID09IG51bV9tYXRjaGVzOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAg
ICAgICAgICAgICAgICAnRHVwbGljYXRlIG9yIGFtYmlndW91cyAlcy4nICUgZXhwZWN0YXRpb25f
c291cmNlLAorICAgICAgICAgICAgICAgIHRlc3QpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
CisgICAgICAgIGlmIHByZXZfbnVtX21hdGNoZXMgPCBudW1fbWF0Y2hlczoKKyAgICAgICAgICAg
IHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAgICAgJ01vcmUgc3BlY2lmaWMg
ZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJQorICAgICAgICAgICAgICAgIChs
aW5lbm8sIHByZXZfbGluZW5vKSwgdGVzdF9saXN0X3BhdGgpCisgICAgICAgICAgICAjIEZJWE1F
OiByZXR1cm4gRmFsc2UgaWYgd2Ugd2FudCBtb3JlIHNwZWNpZmljIHRvIHdpbi4KKyAgICAgICAg
ICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgc2VsZi5fYWRkX2Vycm9yKGxpbmVubywKKyAgICAg
ICAgICAgICdNb3JlIHNwZWNpZmljIGVudHJ5IG9uIGxpbmUgJWQgb3ZlcnJpZGVzIGxpbmUgJWQn
ICUKKyAgICAgICAgICAgIChwcmV2X2xpbmVubywgbGluZW5vKSwgdGVzdF9saXN0X3BhdGgpCisg
ICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgX2FkZF9lcnJvcihzZWxmLCBsaW5lbm8sIG1z
ZywgcGF0aCk6CiAgICAgICAgICIiIlJlcG9ydHMgYW4gZXJyb3IgdGhhdCB3aWxsIHByZXZlbnQg
cnVubmluZyB0aGUgdGVzdHMuIERvZXMgbm90CkBAIC04NjUsMyArODc2LDE4NiBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgIiIiUmVwb3J0cyBhbiBlcnJvciB0aGF0IHdp
bGwgbm90IHByZXZlbnQgcnVubmluZyB0aGUgdGVzdHMuIFRoZXNlIGFyZQogICAgICAgICBzdGls
bCBlcnJvcnMsIGJ1dCBub3QgYmFkIGVub3VnaCB0byB3YXJyYW50IGJyZWFraW5nIHRlc3QgcnVu
bmluZy4iIiIKICAgICAgICAgc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycy5hcHBlbmQoJ0xpbmU6JXMg
JXMgJXMnICUgKGxpbmVubywgbXNnLCBwYXRoKSkKKworCitjbGFzcyBNb2RpZmllck1hdGNoUmVz
dWx0KG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBz
ZWxmLm51bV9tYXRjaGVzID0gTW9kaWZpZXJNYXRjaGVyLk5PX01BVENICisgICAgICAgIHNlbGYu
b3B0aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBbXQorICAgICAgICBzZWxm
Lndhcm5pbmdzID0gW10KKyAgICAgICAgc2VsZi5tb2RpZmllcnMgPSBbXQorICAgICAgICBzZWxm
Ll9tYXRjaGVkX3JlZ2V4ZXMgPSBzZXQoKQorICAgICAgICBzZWxmLl9tYXRjaGVkX21hY3JvcyA9
IHNldCgpCisKKworY2xhc3MgTW9kaWZpZXJNYXRjaGVyKG9iamVjdCk6CisKKyAgICAiIiIKKyAg
ICBUaGlzIGNsYXNzIG1hbmFnZXMgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAibW9kaWZpZXJz
IiBmb3IgYSBnaXZlbgorICAgIGxpbmUgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxlLiBNb2RpZmll
cnMgYXJlIHRoZSB0b2tlbnMgdGhhdCBhcHBlYXIgdG8gdGhlCisgICAgbGVmdCBvZiB0aGUgY29s
b24gb24gYSBsaW5lLiBGb3IgZXhhbXBsZSwgIkJVRzEyMzQiLCAiREVCVUciLCBhbmQgIldJTiIg
YXJlCisgICAgYWxsIG1vZGlmaWVycy4gVGhpcyBjbGFzcyBnZXRzIHdoYXQgdGhlIHZhbGlkIG1v
ZGlmaWVycyBhcmUsIGFuZCB3aGljaAorICAgIG1vZGlmaWVycyBhcmUgYWxsb3dlZCB0byBleGlz
dCB0b2dldGhlciBvbiBhIGxpbmUsIGZyb20gdGhlCisgICAgVGVzdENvbmZpZ3VyYXRpb24gb2Jq
ZWN0IHRoYXQgaXMgcGFzc2VkIGluIHRvIHRoZSBjYWxsLgorCisgICAgVGhpcyBjbGFzcyBkZXRl
Y3RzICppbnRyYSotbGluZSBlcnJvcnMgbGlrZSB1bmtub3duIG1vZGlmaWVycywgYnV0CisgICAg
ZG9lcyBub3QgZGV0ZWN0ICppbnRlciotbGluZSBtb2RpZmllcnMgbGlrZSBkdXBsaWNhdGUgZXhw
ZWN0YXRpb25zLgorCisgICAgTW9yZSBpbXBvcnRhbnRseSwgdGhpcyBjbGFzcyBpcyBhbHNvIHVz
ZWQgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gbGluZQorICAgIG1hdGNoZXMgdGhlIHBvcnQgaW4g
cXVlc3Rpb24uIE1hdGNoZXMgYXJlIHJhbmtlZCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlcgorICAg
IG9mIG1vZGlmaWVycyB0aGF0IG1hdGNoIG9uIGEgbGluZS4gQSBsaW5lIHdpdGggbm8gbW9kaWZp
ZXJzIG1hdGNoZXMKKyAgICBldmVyeXRoaW5nIGFuZCBoYXMgYSBzY29yZSBvZiB6ZXJvLiBBIGxp
bmUgd2l0aCBvbmUgbW9kaWZpZXIgbWF0Y2hlcyBvbmx5CisgICAgcG9ydHMgdGhhdCBoYXZlIHRo
YXQgbW9kaWZpZXIgYW5kIGdldHMgYSBzY29yZSBvZiAxLCBhbmQgc28gb25lLiBQb3J0cworICAg
IHRoYXQgZG9uJ3QgbWF0Y2ggYXQgYWxsIGdldCBhIHNjb3JlIG9mIC0xLgorCisgICAgR2l2ZW4g
dHdvIGxpbmVzIGluIGEgZmlsZSB0aGF0IGFwcGx5IHRvIHRoZSBzYW1lIHRlc3QsIGlmIGJvdGgg
ZXhwZWN0YXRpb25zCisgICAgbWF0Y2ggdGhlIGN1cnJlbnQgY29uZmlnLCB0aGVuIHRoZSBleHBl
Y3RhdGlvbiBpcyBjb25zaWRlcmVkIGFtYmlndW91cywgZXZlbiBpZgorICAgIG9uZSBleHBlY3Rh
dGlvbiBtYXRjaGVzIG1vcmUgb2YgdGhlIGNvbmZpZyB0aGFuIHRoZSBvdGhlci4gRm9yIGV4YW1w
bGUsIGluOgorCisgICAgQlVHMSBSRUxFQVNFIDogZm9vLmh0bWwgPSBGQUlMCisgICAgQlVHMSBX
SU4gUkVMRUFTRSA6IGZvby5odG1sID0gUEFTUworICAgIEJVRzIgV0lOIDogYmFyLmh0bWwgPSBG
QUlMCisgICAgQlVHMiBERUJVRyA6IGJhci5odG1sID0gUEFTUworCisgICAgbGluZXMgMSBhbmQg
MiB3b3VsZCBwcm9kdWNlIGFuIGVycm9yIG9uIGEgV2luIFhQIFJlbGVhc2UgYm90ICh0aGUgc2Nv
cmVzIHdvdWxkIGJlIDEgYW5kCisgICAgMiwgcmVzcGVjdGl2ZWx5KSwgYW5kIGxpbmVzIHRocmVl
IGFuZCBmb3VyIHdvdWxkIHByb2R1Y2UgYSBkdXBsaWNhdGUgZXhwZWN0YXRpb24gb24gYSBXaW4K
KyAgICBEZWJ1ZyBib3Qgc2luY2UgYm90aCB0aGUgJ3dpbicgYW5kIHRoZSAnZGVidWcnIGV4cGVj
dGF0aW9ucyB3b3VsZCBhcHBseSAoYm90aCBoYWQgc2NvcmVzIG9mIDEpLgorCisgICAgSW4gYWRk
aXRpb24gdG8gdGhlIGRlZmluaXRpb25zIG9mIGFsbCBvZiB0aGUgbW9kaWZpZXJzLCB0aGUgY2xh
c3MKKyAgICBzdXBwb3J0cyAibWFjcm9zIiB0aGF0IGFyZSBleHBhbmRlZCBwcmlvciB0byBpbnRl
cnByZXRhdGlvbiwgYW5kICJpZ25vcmUKKyAgICByZWdleGVzIiB0aGF0IGNhbiBiZSB1c2VkIHRv
IHNraXAgb3ZlciBtb2RpZmllcnMgbGlrZSB0aGUgQlVHKiBtb2RpZmllcnMuCisgICAgIiIiCisg
ICAgTUFDUk9TID0geworICAgICAgICAnbWFjLXNub3dsZW9wYXJkJzogWydtYWMnLCAnc25vd2xl
b3BhcmQnXSwKKyAgICAgICAgJ21hYy1sZW9wYXJkJzogWydtYWMnLCAnbGVvcGFyZCddLAorICAg
ICAgICAnd2luLXhwJzogWyd3aW4nLCAneHAnXSwKKyAgICAgICAgJ3dpbi12aXN0YSc6IFsnd2lu
JywgJ3Zpc3RhJ10sCisgICAgICAgICd3aW4tNyc6IFsnd2luJywgJ3dpbjcnXSwKKyAgICB9CisK
KyAgICAjIFdlIGRvbid0IGluY2x1ZGUgdGhlICJub25lIiBtb2RpZmllciBiZWNhdXNlIGl0IGlz
bid0IGFjdHVhbGx5IGxlZ2FsLgorICAgIFJFR0VYRVNfVE9fSUdOT1JFID0gKFsnYnVnXHcrJ10g
KworICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1PRElGSUVS
Uy5rZXlzKClbOi0xXSkKKyAgICBEVVBMSUNBVEVfUkVHRVhFU19BTExPV0VEID0gWydidWdcdysn
XQorCisgICAgIyBNYWdpYyB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBvcHRpb25zIGRvbid0IG1h
dGNoLgorICAgIE5PX01BVENIID0gLTEKKworICAgICMgRklYTUU6IFRoZSBjb2RlIGN1cnJlbnRs
eSBkb2Vzbid0IGRldGVjdCBjb21iaW5hdGlvbnMgb2YgbW9kaWZpZXJzCisgICAgIyB0aGF0IGFy
ZSBzeW50YWN0aWNhbGx5IHZhbGlkIGJ1dCBzZW1hbnRpY2FsbHkgaW52YWxpZCwgbGlrZQorICAg
ICMgJ01BQyBYUCcuIFNlZSBNb2RpZmllck1hdGNoVGVzdC50ZXN0X2ludmFsaWRfY29tYmluYXRp
b25zKCkgaW4gdGhlCisgICAgIyBfdW5pdHRlc3QucHkgZmlsZS4KKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB0ZXN0X2NvbmZpZyk6CisgICAgICAgICIiIkluaXRpYWxpemUgYSBNb2RpZmllck1h
dGNoZXIgYXJndW1lbnQgd2l0aCB0aGUgVGVzdENvbmZpZ3VyYXRpb24gaXQKKyAgICAgICAgc2hv
dWxkIGJlIG1hdGNoZWQgYWdhaW5zdC4iIiIKKyAgICAgICAgc2VsZi50ZXN0X2NvbmZpZyA9IHRl
c3RfY29uZmlnCisgICAgICAgIHNlbGYuYWxsb3dlZF9jb25maWd1cmF0aW9ucyA9IHRlc3RfY29u
ZmlnLmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKCkKKyAgICAgICAgc2VsZi5tYWNyb3MgPSBzZWxm
Lk1BQ1JPUworCisgICAgICAgIHNlbGYucmVnZXhlc190b19pZ25vcmUgPSB7fQorICAgICAgICBm
b3IgcmVnZXhfc3RyIGluIHNlbGYuUkVHRVhFU19UT19JR05PUkU6CisgICAgICAgICAgICBzZWxm
LnJlZ2V4ZXNfdG9faWdub3JlW3JlZ2V4X3N0cl0gPSByZS5jb21waWxlKHJlZ2V4X3N0cikKKwor
ICAgICAgICAjIEtlZXAgYSBzZXQgb2YgYWxsIG9mIHRoZSBsZWdhbCBtb2RpZmllcnMgZm9yIHF1
aWNrIGNoZWNraW5nLgorICAgICAgICBzZWxmLl9hbGxfbW9kaWZpZXJzID0gc2V0KCkKKworICAg
ICAgICAjIEtlZXAgYSBkaWN0IG1hcHBpbmcgdmFsdWVzIGJhY2sgdG8gdGhlaXIgY2F0ZWdvcmll
cy4KKyAgICAgICAgc2VsZi5fY2F0ZWdvcmllc19mb3JfbW9kaWZpZXJzID0ge30KKyAgICAgICAg
Zm9yIGNvbmZpZyBpbiBzZWxmLmFsbG93ZWRfY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICBm
b3IgY2F0ZWdvcnksIG1vZGlmaWVyIGluIGNvbmZpZy5pdGVtcygpOgorICAgICAgICAgICAgICAg
IHNlbGYuX2NhdGVnb3JpZXNfZm9yX21vZGlmaWVyc1ttb2RpZmllcl0gPSBjYXRlZ29yeQorICAg
ICAgICAgICAgICAgIHNlbGYuX2FsbF9tb2RpZmllcnMuYWRkKG1vZGlmaWVyKQorCisgICAgZGVm
IG1hdGNoKHNlbGYsIG9wdGlvbnMpOgorICAgICAgICAiIiJDaGVja3MgYSBsaXN0IG9mIG9wdGlv
bnMgYWdhaW5zdCB0aGUgY29uZmlnIHNldCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIE9w
dGlvbnMgbWF5IGJlIGVpdGhlciBhY3R1YWwgbW9kaWZpZXIgc3RyaW5ncywgIm1hY3JvIiBzdHJp
bmdzCisgICAgICAgIHRoYXQgZ2V0IGV4cGFuZGVkIHRvIGEgbGlzdCBvZiBtb2RpZmllcnMsIG9y
IHN0cmluZ3MgdGhhdCBhcmUgYWxsb3dlZAorICAgICAgICB0byBiZSBpZ25vcmVkLiBBbGwgb2Yg
dGhlIG9wdGlvbnMgbXVzdCBiZSBwYXNzZWQgaW4gaW4gbG93ZXIgY2FzZS4KKworICAgICAgICBS
ZXR1cm5zIHRoZSBudW1iZXIgb2YgbWF0Y2hpbmcgY2F0ZWdvcmllcywgb3IgTk9fTUFUQ0ggKC0x
KSBpZiBpdAorICAgICAgICBkb2Vzbid0IG1hdGNoIG9yIHRoZXJlIHdlcmUgZXJyb3JzIGZvdW5k
LiBNYXRjaGVzIGFyZSBwcmlvcml0aXplZAorICAgICAgICBieSB0aGUgbnVtYmVyIG9mIG1hdGNo
aW5nIGNhdGVnb3JpZXMsIGJlY2F1c2UgdGhlIG1vcmUgc3BlY2lmaWMKKyAgICAgICAgdGhlIG9w
dGlvbnMgbGlzdCwgdGhlIG1vcmUgY2F0ZWdvcmllcyB3aWxsIG1hdGNoLgorCisgICAgICAgIFRo
ZSByZXN1bHRzIG9mIHRoZSBtb3N0IHJlY2VudCBtYXRjaCBhcmUgYXZhaWxhYmxlIGluIHRoZSAn
b3B0aW9ucycsCisgICAgICAgICdtb2RpZmllcnMnLCAnbnVtX21hdGNoZXMnLCAnZXJyb3JzJywg
YW5kICd3YXJuaW5ncycgcHJvcGVydGllcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9
IE1vZGlmaWVyTWF0Y2hSZXN1bHQob3B0aW9ucykKKyAgICAgICAgc2VsZi5fcGFyc2UocmVzdWx0
KQorICAgICAgICBpZiByZXN1bHQuZXJyb3JzOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAor
ICAgICAgICBzZWxmLl9jb3VudF9tYXRjaGVzKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dAorCisgICAgZGVmIF9wYXJzZShzZWxmLCByZXN1bHQpOgorICAgICAgICAjIEZJWE1FOiBTaG91
bGQgd2Ugd2FybiBhYm91dCBsaW5lcyBoYXZpbmcgZXZlcnkgdmFsdWUgaW4gYSBjYXRlZ29yeT8K
KyAgICAgICAgZm9yIG9wdGlvbiBpbiByZXN1bHQub3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYu
X3BhcnNlX29uZShvcHRpb24sIHJlc3VsdCkKKworICAgIGRlZiBfcGFyc2Vfb25lKHNlbGYsIG9w
dGlvbiwgcmVzdWx0KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHNlbGYuX2FsbF9tb2RpZmllcnM6
CisgICAgICAgICAgICBzZWxmLl9hZGRfbW9kaWZpZXIob3B0aW9uLCByZXN1bHQpCisgICAgICAg
IGVsaWYgb3B0aW9uIGluIHNlbGYubWFjcm9zOgorICAgICAgICAgICAgc2VsZi5fZXhwYW5kX21h
Y3JvKG9wdGlvbiwgcmVzdWx0KQorICAgICAgICBlbGlmIG5vdCBzZWxmLl9tYXRjaGVzX2FueV9y
ZWdleChvcHRpb24sIHJlc3VsdCk6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgi
VW5yZWNvZ25pemVkIG9wdGlvbiAnJXMnIiAlIG9wdGlvbikKKworICAgIGRlZiBfYWRkX21vZGlm
aWVyKHNlbGYsIG9wdGlvbiwgcmVzdWx0KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHJlc3VsdC5t
b2RpZmllcnM6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiTW9yZSB0aGFuIG9u
ZSAnJXMnIiAlIG9wdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5tb2Rp
ZmllcnMuYXBwZW5kKG9wdGlvbikKKworICAgIGRlZiBfZXhwYW5kX21hY3JvKHNlbGYsIG1hY3Jv
LCByZXN1bHQpOgorICAgICAgICBpZiBtYWNybyBpbiByZXN1bHQuX21hdGNoZWRfbWFjcm9zOgor
ICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBt
YWNybykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIG1vZHMgPSBbXQorICAgICAgICBm
b3IgbW9kaWZpZXIgaW4gc2VsZi5tYWNyb3NbbWFjcm9dOgorICAgICAgICAgICAgaWYgbW9kaWZp
ZXIgaW4gcmVzdWx0Lm9wdGlvbnM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBl
bmQoIkNhbid0IHNwZWNpZnkgYm90aCBtb2RpZmllciAnJXMnIGFuZCAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm1hY3JvICclcyciICUgKG1vZGlmaWVyLCBtYWNybykp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZGlmaWVy
KQorICAgICAgICByZXN1bHQuX21hdGNoZWRfbWFjcm9zLmFkZChtYWNybykKKyAgICAgICAgcmVz
dWx0Lm1vZGlmaWVycy5leHRlbmQobW9kcykKKworICAgIGRlZiBfbWF0Y2hlc19hbnlfcmVnZXgo
c2VsZiwgb3B0aW9uLCByZXN1bHQpOgorICAgICAgICBmb3IgcmVnZXhfc3RyLCBwYXR0ZXJuIGlu
IHNlbGYucmVnZXhlc190b19pZ25vcmUuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYXR0
ZXJuLm1hdGNoKG9wdGlvbik6CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlZ2V4X21h
dGNoKHJlZ2V4X3N0ciwgcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAg
ICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9oYW5kbGVfcmVnZXhfbWF0Y2goc2VsZiwgcmVn
ZXhfc3RyLCByZXN1bHQpOgorICAgICAgICBpZiAocmVnZXhfc3RyIGluIHJlc3VsdC5fbWF0Y2hl
ZF9yZWdleGVzIGFuZAorICAgICAgICAgICAgcmVnZXhfc3RyIG5vdCBpbiBzZWxmLkRVUExJQ0FU
RV9SRUdFWEVTX0FMTE9XRUQpOgorICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1v
cmUgdGhhbiBvbmUgb3B0aW9uIG1hdGNoaW5nICclcyciICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ2V4X3N0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3Vs
dC5fbWF0Y2hlZF9yZWdleGVzLmFkZChyZWdleF9zdHIpCisKKyAgICBkZWYgX2NvdW50X21hdGNo
ZXMoc2VsZiwgcmVzdWx0KToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1vZGlm
aWVycyB0aGF0IG1hdGNoIHRoZSB0ZXN0IGNvbmZpZy4iIiIKKyAgICAgICAgY2F0ZWdvcml6ZWRf
bW9kaWZpZXJzID0gc2VsZi5fZ3JvdXBfYnlfY2F0ZWdvcnkocmVzdWx0Lm1vZGlmaWVycykKKyAg
ICAgICAgcmVzdWx0Lm51bV9tYXRjaGVzID0gMAorICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlm
aWVyIGluIHNlbGYudGVzdF9jb25maWcuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5
IGluIGNhdGVnb3JpemVkX21vZGlmaWVyczoKKyAgICAgICAgICAgICAgICBpZiBtb2RpZmllciBp
biBjYXRlZ29yaXplZF9tb2RpZmllcnNbY2F0ZWdvcnldOgorICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQubnVtX21hdGNoZXMgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5udW1fbWF0Y2hlcyA9IHNlbGYuTk9fTUFUQ0gKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgX2dyb3VwX2J5X2NhdGVnb3J5KHNlbGYsIG1vZGlm
aWVycyk6CisgICAgICAgICMgUmV0dXJucyBhIGRpY3Qgb2YgY2F0ZWdvcnkgbmFtZSAtPiBsaXN0
IG9mIG1vZGlmaWVycy4KKyAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5ID0ge30KKyAgICAg
ICAgZm9yIG0gaW4gbW9kaWZpZXJzOgorICAgICAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5
LnNldGRlZmF1bHQoc2VsZi5fY2F0ZWdvcnkobSksIFtdKS5hcHBlbmQobSkKKyAgICAgICAgcmV0
dXJuIG1vZGlmaWVyc19ieV9jYXRlZ29yeQorCisgICAgZGVmIF9jYXRlZ29yeShzZWxmLCBtb2Rp
Zmllcik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYXRlZ29yaWVzX2Zvcl9tb2RpZmllcnNbbW9k
aWZpZXJdCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
X3VuaXR0ZXN0LnB5CmluZGV4IDhmOWU1ZGQwYWFhNWM2MzhiYzQzMzcxYWY1YzkwNTliZGFlNTI2
ODMuLjVhNTZhMzczMWY2ZTg5ZWExNmMxYjNhYjEzOTI0YzVlNjY1MjQ0MzkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3Rf
ZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBA
IC0zMiw2ICszMiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMgaW1wb3J0IHBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0
IGJhc2UKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3RfZXhw
ZWN0YXRpb25zIGltcG9ydCAqCiAKIGNsYXNzIEZ1bmN0aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgpAQCAtNzgsOCArNzksMTEgQEAgY2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAKIAogY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBOb3RlIHRo
YXQgYWxsIG9mIHRoZXNlIHRlc3RzIGFyZSB3cml0dGVuIGFzc3VtaW5nIHRoZSBjb25maWd1cmF0
aW9uCisgICAgIyBiZWluZyB0ZXN0ZWQgaXMgTWFjIFNub3cgTGVvcGFyZCwgUmVsZWFzZSBidWls
ZC4KKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYywgc2V0VXA9Tm9uZSwgdGVhckRv
d249Tm9uZSwgZGVzY3JpcHRpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0Lmdl
dCgndGVzdCcsIE5vbmUpCisgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0LmdldCgndGVzdC1tYWMn
LCBOb25lKQogICAgICAgICBzZWxmLl9mcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAg
ICAgc2VsZi5fZXhwID0gTm9uZQogICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhz
ZWxmLCB0ZXN0RnVuYykKQEAgLTEwNCwxMyArMTA4LDEyIEBAIEJVR19URVNUIFdPTlRGSVggOiBm
YWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sID0gSU1BR0UKIEJVR19URVNUIFdP
TlRGSVggV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFCiAiIiIKIAot
ICAgIGRlZiBwYXJzZV9leHAoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVycmlkZXM9Tm9uZSwgaXNf
bGludF9tb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1GYWxzZSk6
CisgICAgZGVmIHBhcnNlX2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lLCBp
c19saW50X21vZGU9RmFsc2UpOgorICAgICAgICB0ZXN0X2NvbmZpZyA9IHNlbGYuX3BvcnQudGVz
dF9jb25maWd1cmF0aW9uKCkKICAgICAgICAgc2VsZi5fZXhwID0gVGVzdEV4cGVjdGF0aW9ucyhz
ZWxmLl9wb3J0LAogICAgICAgICAgICAgIHRlc3RzPXNlbGYuZ2V0X2Jhc2ljX3Rlc3RzKCksCiAg
ICAgICAgICAgICAgZXhwZWN0YXRpb25zPWV4cGVjdGF0aW9ucywKLSAgICAgICAgICAgICB0ZXN0
X3BsYXRmb3JtX25hbWU9c2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSwKLSAgICAgICAg
ICAgICBpc19kZWJ1Z19tb2RlPWlzX2RlYnVnX21vZGUsCisgICAgICAgICAgICAgdGVzdF9jb25m
aWc9dGVzdF9jb25maWcsCiAgICAgICAgICAgICAgaXNfbGludF9tb2RlPWlzX2xpbnRfbW9kZSwK
ICAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQogCkBAIC0xMTksNyArMTIyLDcgQEAg
QlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1B
R0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFtyZXN1bHRdKSkKIAogCi1jbGFzcyBU
ZXN0RXhwZWN0YXRpb25zVGVzdChCYXNlKToKK2NsYXNzIEJhc2ljVGVzdHMoQmFzZSk6CiAgICAg
ZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0X2Jh
c2ljX2V4cGVjdGF0aW9ucygpKQogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4
cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCkBAIC0xMjcsMjMgKzEzMCwxNCBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25zVGVzdChCYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdwYXNzZXMv
dGV4dC5odG1sJywgUEFTUykKICAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBl
Y3RlZC9pbWFnZS5odG1sJywgUEFTUykKIAorCitjbGFzcyBNaXNjVGVzdHMoQmFzZSk6CiAgICAg
ZGVmIHRlc3RfbXVsdGlwbGVfcmVzdWx0cyhzZWxmKToKICAgICAgICAgc2VsZi5wYXJzZV9leHAo
J0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUIENSQVNIJykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9leHAuZ2V0X2V4cGVjdGF0aW9ucygKICAgICAgICAg
ICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpKSwKICAgICAg
ICAgICAgIHNldChbVEVYVCwgQ1JBU0hdKSkKIAotICAgIGRlZiB0ZXN0X3ByZWNlZGVuY2Uoc2Vs
Zik6Ci0gICAgICAgICMgVGhpcyB0ZXN0cyBoYW5kbGluZyBwcmVjZWRlbmNlIG9mIHNwZWNpZmlj
IGxpbmVzIG92ZXIgZGlyZWN0b3JpZXMKLSAgICAgICAgIyBhbmQgdGVzdHMgZXhwZWN0YXRpb25z
IGNvdmVyaW5nIGVudGlyZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgZXhwX3N0ciA9ICIiIgotQlVH
WCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR1ggV09OVEZJWCA6IGZh
aWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKLSIiIgotICAgICAgICBzZWxmLnBhcnNlX2V4cChleHBf
c3RyKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCcsIFRFWFQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jh
c2guaHRtbCcsIElNQUdFKQotCiAgICAgZGVmIHRlc3RfY2F0ZWdvcnlfZXhwZWN0YXRpb25zKHNl
bGYpOgogICAgICAgICAjIFRoaXMgdGVzdCBjaGVja3MgdW5rbm93biB0ZXN0cyBhcmUgbm90IHBy
ZXNlbnQgaW4gdGhlCiAgICAgICAgICMgZXhwZWN0YXRpb25zIGFuZCB0aGF0IGtub3duIHRlc3Qg
cGFydCBvZiBhIHRlc3QgY2F0ZWdvcnkgaXMKQEAgLTE1OCwyMCArMTUyLDYgQEAgQlVHWCBXT05U
RklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bmtub3duX3Rlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0
ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAgZGVmIHRlc3RfcmVsZWFzZV9tb2RlKHNlbGYp
OgotICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2Rl
PVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sJywgVEVYVCkKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1ggUkVMRUFTRSA6IGZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAgICBp
c19kZWJ1Z19tb2RlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sJywgUEFTUykKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1ggREVC
VUcgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgaXNfZGVidWdfbW9kZT1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBQQVNTKQotICAgICAgICBzZWxmLnBhcnNlX2V4
cCgnQlVHWCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9RmFsc2UpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKLQogICAgIGRl
ZiB0ZXN0X2dldF9vcHRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdl
dF9iYXNpY19leHBlY3RhdGlvbnMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9l
eHAuZ2V0X29wdGlvbnMoCkBAIC0yMTYsNyArMTk2LDcgQEAgU0tJUCA6IGZhaWx1cmVzL2V4cGVj
dGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFRydWUsICJQ
YXJzZUVycm9yIHdhc24ndCByYWlzZWQiKQogICAgICAgICBleGNlcHQgUGFyc2VFcnJvciwgZToK
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmZhdGFsKQotICAgICAgICAgICAgZXhwX2Vy
cm9ycyA9IFt1J0xpbmU6MSBJbnZhbGlkIG1vZGlmaWVyIGZvciB0ZXN0OiBmb28gZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywKKyAgICAgICAgICAgIGV4cF9lcnJvcnMgPSBbdSJMaW5lOjEg
VW5yZWNvZ25pemVkIG9wdGlvbiAnZm9vJyBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MiBNaXNzaW5nIGV4cGVjdGF0aW9ucy4g
WycgZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddIl0KICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhwX2Vycm9ycykpKQogICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vycm9ycykKQEAgLTIzMiw3NyAr
MjEyLDE1OSBAQCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCIiIikKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhwX2Vy
cm9ycykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vycm9y
cykKIAotICAgIGRlZiB0ZXN0X3N5bnRheF9taXNzaW5nX2V4cGVjdGF0aW9uKHNlbGYpOgorICAg
IGRlZiB0ZXN0X292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoIkJVR19F
WFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAorICAgICAgICAgICAgICAg
ICAgICAgICAiQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1B
R0UiKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCcsIElNQUdFKQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVzX19kdXBsaWNhdGUoc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAorICAg
ICAgICAgICAgICJCVUdfRVhQOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUIiwK
KyAgICAgICAgICAgICAiIiIKK0JVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCA9IElNQUdFCitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwg
PSBDUkFTSAorIiIiKQorCisgICAgZGVmIHRlc3RfcGl4ZWxfdGVzdHNfZmxhZyhzZWxmKToKKyAg
ICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5hYmxlZCk6CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAorICAg
ICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5h
YmxlZCkKKworICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3RhdGlv
bnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBGYWxzZSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIENSQVNILCBU
cnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNo
KCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywgSU1BR0UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1h
dGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywgUEFTUywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgU0tJUCwgRmFsc2UpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBQQVNTLCBGYWxz
ZSkpCisKKworY2xhc3MgRXhwZWN0YXRpb25TeW50YXhUZXN0cyhCYXNlKToKKyAgICBkZWYgdGVz
dF9taXNzaW5nX2V4cGVjdGF0aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMgbWlzc2luZyB0
aGUgZXhwZWN0YXRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNl
bGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2Rl
YnVnX21vZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4X2ludmFsaWRf
b3B0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X21pc3NpbmdfY29sb24oc2VsZik6CisgICAgICAg
ICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMgYW5kIHRoZSAnOicKICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICdCVUdfVEVTVCBGT086IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9
IFBBU1MnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgdGVzdF9zeW50YXhfaW52YWxpZF9leHBlY3RhdGlv
bihzZWxmKToKLSAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIGV4cGVjdGF0aW9uLgorICAg
IGRlZiB0ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gRk9PJykKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwg
PSBQQVNTIDonKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4X21pc3NpbmdfYnVnaWQoc2VsZik6Cisg
ICAgZGVmIHRlc3RfdG9vX21hbnlfZXF1YWxzX3NpZ25zKHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUID0g
SU1BR0UnKQorCisgICAgZGVmIHRlc3RfdW5yZWNvZ25pemVkX2V4cGVjdGF0aW9uKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0
Lmh0bWwgPSBVTktOT1dOJykKKworICAgIGRlZiB0ZXN0X21hY3JvKHNlbGYpOgorICAgICAgICBl
eHBfc3RyID0gIiIiCitCVUdfVEVTVCBNQUMtU05PV0xFT1BBUkQgOiBmYWlsdXJlcy9leHBlY3Rl
ZC90ZXh0Lmh0bWwgPSBURVhUCisiIiIKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoZXhwX3N0cikK
KyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBU
RVhUKQorCisKK2NsYXNzIFNlbWFudGljVGVzdHMoQmFzZSk6CisgICAgZGVmIHRlc3RfYnVnX2Zv
cm1hdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5w
YXJzZV9leHAsICdCVUcxMjM0IDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcp
CisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2J1Z2lkKHNlbGYpOgogICAgICAgICAjIFRoaXMgc2hv
dWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KICAgICAgICAgc2VsZi5wYXJzZV9leHAoJ1NMT1cg
OiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKICAgICAgICAgICAgIGxlbihzZWxmLl9leHAuX2V4cGVjdGVkX2ZhaWx1cmVzLmdl
dF9ub25fZmF0YWxfZXJyb3JzKCkpLCAxKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfc2xvd19h
bmRfdGltZW91dChzZWxmKToKKyAgICBkZWYgdGVzdF9zbG93X2FuZF90aW1lb3V0KHNlbGYpOgog
ICAgICAgICAjIEEgdGVzdCBjYW5ub3QgYmUgU0xPVyBhbmQgZXhwZWN0ZWQgdG8gVElNRU9VVC4K
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCiAg
ICAgICAgICAgICAnQlVHX1RFU1QgU0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQuaHRt
bCA9IFRJTUVPVVQnKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfcmViYXNlbGluZShzZWxmKToK
KyAgICBkZWYgdGVzdF9yZWJhc2VsaW5lKHNlbGYpOgogICAgICAgICAjIENhbid0IGxpbnQgYSBm
aWxlIHcvICdSRUJBU0VMSU5FJyBpbiBpdC4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFy
c2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCiAgICAgICAgICAgICAnQlVHX1RFU1QgUkVCQVNFTElO
RSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAogICAgICAgICAgICAgaXNf
bGludF9tb2RlPVRydWUpCiAKLSAgICBkZWYgdGVzdF9zZW1hbnRpY19kdXBsaWNhdGVzKHNlbGYp
OgorICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKLUJVR19URVNUIDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAotQlVHX1RFU1QgOiBmYWlsdXJlcy9leHBlY3RlZC90
ZXh0Lmh0bWwgPSBJTUFHRSIiIikKK0JVR19FWFAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwgPSBURVhUCitCVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0Ui
IiIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9l
eHAsCi0gICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgIiIiCi1CVUdf
VEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR19URVNUIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCisgICAgICAgICAgICBzZWxmLmdl
dF9iYXNpY19leHBlY3RhdGlvbnMoKSwgb3ZlcnJpZGVzPSIiIgorQlVHX09WRVJSSURFIDogZmFp
bHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHX09WRVJSSURFIDogZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIsICkKIAotICAgIGRlZiB0ZXN0X3NlbWFudGlj
X21pc3NpbmdfZmlsZShzZWxmKToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2ZpbGUoc2VsZik6CiAg
ICAgICAgICMgVGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVycm9yLgogICAgICAgICBzZWxm
LnBhcnNlX2V4cCgnQlVHX1RFU1QgOiBtaXNzaW5nX2ZpbGUuaHRtbCA9IFRFWFQnKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgbGVuKHNlbGYuX2V4cC5fZXhwZWN0ZWRf
ZmFpbHVyZXMuZ2V0X25vbl9mYXRhbF9lcnJvcnMoKSksIDEpCiAKIAotICAgIGRlZiB0ZXN0X292
ZXJyaWRlcyhzZWxmKToKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhw
ZWN0YXRpb25zKCksICIiIgotQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sID0gSU1BR0UiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sJywgSU1BR0UpCitjbGFzcyBQcmVjZWRlbmNlVGVzdHMoQmFzZSk6CisgICAg
ZGVmIHRlc3RfZmlsZV9vdmVyX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3Rz
IGhhbmRsaW5nIHByZWNlZGVuY2Ugb2Ygc3BlY2lmaWMgbGluZXMgb3ZlciBkaXJlY3Rvcmllcwor
ICAgICAgICAjIGFuZCB0ZXN0cyBleHBlY3RhdGlvbnMgY292ZXJpbmcgZW50aXJlIGRpcmVjdG9y
aWVzLgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdYIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVAorQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQor
IiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKKyAgICAgICAgc2VsZi5h
c3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0UpCiAKLSAgICBk
ZWYgdGVzdF9tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdChzZWxmKToKKyAgICAgICAgZXhwX3N0
ciA9ICIiIgorQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQorQlVHWCA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLnBh
cnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCcsIFRFWFQpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAgICAgIGRlZiBtYXRjaCh0ZXN0LCBy
ZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4
cC5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90
ZXN0KHRlc3QpLCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpCisgICAgZGVmIHRlc3RfYW1i
aWd1b3VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxm
LnBhcnNlX2V4cCwgIiIiCitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBB
U1MKK0JVR19URVNUIE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMCisiIiIpCiAKLSAgICAg
ICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVY
VCwgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sJywgVEVYVCwgRmFsc2UpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1h
dGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBDUkFTSCwgVHJ1ZSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIENS
QVNILCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIElNQUdFLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIFBBU1MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIFNLSVAsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG1hdGNoKCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUywgRmFsc2UpKQorICAgIGRlZiB0
ZXN0X21vcmVfbW9kaWZpZXJzKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVT
VCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNUIE1BQyBSRUxFQVNF
IDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKworICAgIGRlZiB0ZXN0X29y
ZGVyX2luX2ZpbGUoc2VsZik6CisgICAgICAgIGV4cF9zdHIgPSAiIiIKK0JVR19URVNUIE1BQyBS
RUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKK0JVR19URVNUIFJFTEVBU0UgOiBwYXNz
ZXMvdGV4dC5odG1sID0gUEFTUworIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNl
RXJyb3IsIHNlbGYucGFyc2VfZXhwLCBleHBfc3RyKQorCisgICAgZGVmIHRlc3RfdmVyc2lvbl9v
dmVycmlkZXMoc2VsZik6CisgICAgICAgIGV4cF9zdHIgPSAiIiIKK0JVR19URVNUIE1BQyA6IHBh
c3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCitCVUdfVEVTVCBNQUMgU05PV0xFT1BBUkQgOiBwYXNzZXMv
dGV4dC5odG1sID0gVEVYVAorIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJy
b3IsIHNlbGYucGFyc2VfZXhwLCBleHBfc3RyKQorCisgICAgZGVmIHRlc3RfbWFjcm9fb3ZlcnJp
ZGVzKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBNQUMgOiBwYXNzZXMv
dGV4dC5odG1sID0gUEFTUworQlVHX1RFU1QgTUFDLVNOT1dMRU9QQVJEIDogcGFzc2VzL3RleHQu
aHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBz
ZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKIAogCiBjbGFzcyBSZWJhc2VsaW5pbmdUZXN0KEJhc2Up
OgpAQCAtMzI3LDcgKzM4OSw5IEBAIEJVR19URVNUIFJFQkFTRUxJTkUgOiBmYWlsdXJlcy9leHBl
Y3RlZC90ZXh0Lmh0bWwgPSBURVhUCiAgICAgZGVmIHRlc3RfcmVtb3ZlX2V4cGFuZChzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRSZW1vdmUoJ21hYycsCiAgICAgICAgICAgICAnQlVHWCBSRUJB
U0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuJywKLSAgICAgICAg
ICAgICdCVUdYIFJFQkFTRUxJTkUgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
VEVYVFxuJykKKyIiIkJVR1ggUkVCQVNFTElORSBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0
Lmh0bWwgPSBURVhUCitCVUdYIFJFQkFTRUxJTkUgV0lOLVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gVEVYVAorIiIiKQogCiAgICAgZGVmIHRlc3RfcmVtb3ZlX21hY193aW4oc2Vs
Zik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCdtYWMnLApAQCAtMzQ1LDUgKzQwOSw4NiBA
QCBCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVY
VAogICAgICAgICAgICAgJ1xuXG4nKQogCiAKK2NsYXNzIE1vZGlmaWVyVGVzdHModW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcG9ydF9vYmogPSBwb3J0
LmdldCgndGVzdCcsIE5vbmUpCisgICAgICAgIHNlbGYuY29uZmlnID0gcG9ydF9vYmoudGVzdF9j
b25maWd1cmF0aW9uKCkKKyAgICAgICAgc2VsZi5tYXRjaGVyID0gTW9kaWZpZXJNYXRjaGVyKHNl
bGYuY29uZmlnKQorCisgICAgZGVmIG1hdGNoKHNlbGYsIG1vZGlmaWVycywgZXhwZWN0ZWRfbnVt
X21hdGNoZXM9LTEsIHZhbHVlcz1Ob25lLCBudW1fZXJyb3JzPTApOgorICAgICAgICBtYXRjaGVy
ID0gc2VsZi5tYXRjaGVyCisgICAgICAgIGlmIHZhbHVlczoKKyAgICAgICAgICAgIG1hdGNoZXIg
PSBNb2RpZmllck1hdGNoZXIoc2VsZi5GYWtlVGVzdENvbmZpZ3VyYXRpb24odmFsdWVzKSkKKyAg
ICAgICAgbWF0Y2hfcmVzdWx0ID0gbWF0Y2hlci5tYXRjaChtb2RpZmllcnMpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKG1hdGNoX3Jlc3VsdC53YXJuaW5ncyksIDApCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwobGVuKG1hdGNoX3Jlc3VsdC5lcnJvcnMpLCBudW1fZXJyb3JzKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGNoX3Jlc3VsdC5udW1fbWF0Y2hlcywgZXhwZWN0ZWRf
bnVtX21hdGNoZXMsCisgICAgICAgICAgICAgJ21hdGNoKCVzLCAlcykgcmV0dXJuZWQgLT4gJWQs
IGV4cGVjdGVkICVkJyAlCisgICAgICAgICAgICAgKG1vZGlmaWVycywgc3RyKHNlbGYuY29uZmln
LnZhbHVlcygpKSwKKyAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0Lm51bV9tYXRjaGVzLCBleHBl
Y3RlZF9udW1fbWF0Y2hlcykpCisKKyAgICBkZWYgdGVzdF9iYWRfbWF0Y2hfbW9kaWZpZXIoc2Vs
Zik6CisgICAgICAgIHNlbGYubWF0Y2goWydmb28nXSwgbnVtX2Vycm9ycz0xKQorCisgICAgZGVm
IHRlc3Rfbm9uZShzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbXSwgMCkKKworICAgIGRlZiB0
ZXN0X29uZShzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJkJ10sIDEpCisg
ICAgICAgIHNlbGYubWF0Y2goWydtYWMnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3JlbGVh
c2UnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ2NwdSddLCAxKQorICAgICAgICBzZWxmLm1h
dGNoKFsneDg2J10sIDEpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCddLCAtMSkKKyAgICAgICAg
c2VsZi5tYXRjaChbJ2dwdSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ2RlYnVnJ10sIC0x
KQorCisgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xl
b3BhcmQnLCAncmVsZWFzZSddLCAyKQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFz
ZSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3JlbGVhc2UnXSwgLTEpCisgICAg
ICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICdsZW9wYXJkJ10sIDEpCisKKyAgICBkZWYg
dGVzdF90aHJlZShzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJkJywgJ2xl
b3BhcmQnLCAncmVsZWFzZSddLCAyKQorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQn
LCAnZGVidWcnLCAneDg2J10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQn
LCAncmVsZWFzZScsICd4ODYnXSwgMykKKyAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJk
JywgJ2NwdScsICdyZWxlYXNlJ10sIDMpCisKKyAgICBkZWYgdGVzdF9mb3VyKHNlbGYpOgorICAg
ICAgICBzZWxmLm1hdGNoKFsnc25vd2xlb3BhcmQnLCAncmVsZWFzZScsICdjcHUnLCAneDg2J10s
IDQpCisgICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICdsZW9wYXJkJywgJ3JlbGVh
c2UnLCAnY3B1J10sIDMpCisgICAgICAgIHNlbGYubWF0Y2goWydzbm93bGVvcGFyZCcsICdsZW9w
YXJkJywgJ2RlYnVnJywgJ2NwdSddLCAtMSkKKworICAgIGRlZiB0ZXN0X2Nhc2VfaW5zZW5zaXRp
dml0eShzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ01hYyddLCBudW1fZXJyb3JzPTEpCisg
ICAgICAgIHNlbGYubWF0Y2goWydNQUMnXSwgbnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxmLm1h
dGNoKFsnbWFjJ10sIDEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVzKHNlbGYpOgorICAgICAg
ICBzZWxmLm1hdGNoKFsncmVsZWFzZScsICdyZWxlYXNlJ10sIG51bV9lcnJvcnM9MSkKKyAgICAg
ICAgc2VsZi5tYXRjaChbJ21hYy1zbm93bGVvcGFyZCcsICdzbm93bGVvcGFyZCddLCBudW1fZXJy
b3JzPTEpCisgICAgICAgIHNlbGYubWF0Y2goWydtYWMtc25vd2xlb3BhcmQnLCAnbWFjLXNub3ds
ZW9wYXJkJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3JlbGVh
c2UnLCAneHAnLCAncmVsZWFzZSddLCBudW1fZXJyb3JzPTIpCisgICAgICAgIHNlbGYubWF0Y2go
WydyZWJhc2VsaW5lJywgJ3JlYmFzZWxpbmUnXSwgbnVtX2Vycm9ycz0xKQorCisgICAgZGVmIHRl
c3RfdW5rbm93bl9vcHRpb24oc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWyd2bXMnXSwgbnVt
X2Vycm9ycz0xKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2J1Z3Moc2VsZik6CisgICAgICAg
ICMgQlVHKiByZWdleGVzIGNhbiBhcHBlYXIgbXVsdGlwbGUgdGltZXMuCisgICAgICAgIHNlbGYu
bWF0Y2goWydidWdmb28nLCAnYnVnYmFyJ10sIDApCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2Nv
bWJpbmF0aW9ucyhzZWxmKToKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
cmFpc2UgYW4gZXJyb3IgaW5zdGVhZCBvZiBOT19NQVRDSC4KKyAgICAgICAgc2VsZi5tYXRjaChb
J21hYycsICd4cCddLCBudW1fZXJyb3JzPTApCisKKyAgICBkZWYgdGVzdF9yZWdleGVzX2FyZV9p
Z25vcmVkKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnYnVnMTIzeHknLCAncmViYXNlbGlu
ZScsICd3b250Zml4JywgJ3Nsb3cnLCAnc2tpcCddLCAwKQorCisgICAgZGVmIHRlc3Rfbm9uZV9p
c19pbnZhbGlkKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnbm9uZSddLCBudW1fZXJyb3Jz
PTEpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKaW5kZXggYjNmMDgyODA1ODAxYmFhODc2
NmJhY2ExNGM2MGIyMzdiMjZmN2ExNi4uNmU0ZjhjNDY1MmRhMDllMGZiMzVkZDQ4YTU1N2U3MGRk
MTAwMGI5MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKQEAgLTIxNCwyMSAr
MjE0LDEzIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAKICAgICBkZWYgbGludChzZWxmKToKICAgICAg
ICAgbGludF9mYWlsZWQgPSBGYWxzZQotCi0gICAgICAgICMgQ3JlYXRpbmcgdGhlIGV4cGVjYXRp
b25zIGZvciBlYWNoIHBsYXRmb3JtL2NvbmZpZ3VyYXRpb24gcGFpciBkb2VzCi0gICAgICAgICMg
YWxsIHRoZSB0ZXN0IGxpc3QgcGFyc2luZyBhbmQgZW5zdXJlcyBpdCdzIGNvcnJlY3Qgc3ludGF4
IChlLmcuIG5vCi0gICAgICAgICMgZHVwZXMpLgotICAgICAgICBmb3IgcGxhdGZvcm1fbmFtZSBp
biBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZXMoKToKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBzZWxmLnBhcnNlX2V4cGVjdGF0aW9ucyhwbGF0Zm9ybV9uYW1lLCBpc19k
ZWJ1Z19tb2RlPVRydWUpCi0gICAgICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFy
c2VFcnJvcjoKLSAgICAgICAgICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUKKyAgICAgICAgZm9y
IHRlc3RfY29uZmlndXJhdGlvbiBpbiBzZWxmLl9wb3J0LmFsbF90ZXN0X2NvbmZpZ3VyYXRpb25z
KCk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3Rh
dGlvbnMocGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZT1GYWxzZSkKKyAgICAgICAgICAgICAg
ICBzZWxmLmxpbnRfZXhwZWN0YXRpb25zKHRlc3RfY29uZmlndXJhdGlvbikKICAgICAgICAgICAg
IGV4Y2VwdCB0ZXN0X2V4cGVjdGF0aW9ucy5QYXJzZUVycm9yOgogICAgICAgICAgICAgICAgIGxp
bnRfZmFpbGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIp
CiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci53cml0ZSgiIikKICAgICAgICAgaWYgbGludF9mYWls
ZWQ6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJMaW50IGZhaWxlZC4iKQogICAgICAgICAgICAg
cmV0dXJuIC0xCkBAIC0yMzYsMjIgKzIyOCwyOCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAg
ICBfbG9nLmluZm8oIkxpbnQgc3VjY2VlZGVkLiIpCiAgICAgICAgIHJldHVybiAwCiAKLSAgICBk
ZWYgcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYsIHRlc3RfcGxhdGZvcm1fbmFtZSwgaXNfZGVidWdf
bW9kZSk6CisgICAgZGVmIGxpbnRfZXhwZWN0YXRpb25zKHNlbGYsIGNvbmZpZyk6CisgICAgICAg
IHBvcnQgPSBzZWxmLl9wb3J0CisgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3Rh
dGlvbnMoCisgICAgICAgICAgICBwb3J0LAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAg
IHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwKKyAgICAgICAgICAgIGNvbmZpZywKKyAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgcG9ydC50ZXN0
X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKSkKKworICAgIGRlZiBwYXJzZV9leHBlY3RhdGlvbnMo
c2VsZik6CiAgICAgICAgICIiIlBhcnNlIHRoZSBleHBlY3RhdGlvbnMgZnJvbSB0aGUgdGVzdF9s
aXN0IGZpbGVzIGFuZCByZXR1cm4gYSBkYXRhCiAgICAgICAgIHN0cnVjdHVyZSBob2xkaW5nIHRo
ZW0uIFRocm93cyBhbiBlcnJvciBpZiB0aGUgdGVzdF9saXN0IGZpbGVzIGhhdmUKICAgICAgICAg
aW52YWxpZCBzeW50YXguIiIiCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2Zp
bGVzOgotICAgICAgICAgICAgdGVzdF9maWxlcyA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHRlc3RfZmlsZXMgPSBzZWxmLl90ZXN0X2ZpbGVzCi0KLSAgICAgICAgZXhwZWN0YXRp
b25zX3N0ciA9IHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnMoKQotICAgICAgICBvdmVycmlk
ZXNfc3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKQorICAgICAg
ICBwb3J0ID0gc2VsZi5fcG9ydAogICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSB0ZXN0X2V4
cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAotICAgICAgICAgICAgc2VsZi5fcG9ydCwgdGVz
dF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgdGVzdF9wbGF0Zm9ybV9uYW1lLAotICAgICAgICAg
ICAgaXNfZGVidWdfbW9kZSwgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMsCi0gICAgICAg
ICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzX3N0cikKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVj
dGF0aW9ucworICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMs
CisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zKCksCisgICAgICAgICAgICBwb3J0
LnRlc3RfY29uZmlndXJhdGlvbigpLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saW50X3Rl
c3RfZmlsZXMsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcygp
KQogCiAgICAgIyBGSVhNRTogVGhpcyBtZXRob2QgaXMgd2F5IHRvbyBsb25nIGFuZCBuZWVkcyB0
byBiZSBicm9rZW4gaW50byBwaWVjZXMuCiAgICAgZGVmIHByZXBhcmVfbGlzdHNfYW5kX3ByaW50
X291dHB1dChzZWxmKToKQEAgLTM1OCw5ICszNTYsNyBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAg
ICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19saXN0ID0gZmlsZXMgKyBza2lwX2NodW5rX2xpc3QK
ICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgPSBzZXQoc2VsZi5fdGVzdF9maWxlc19saXN0
KQogCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMgPSBzZWxmLnBhcnNlX2V4cGVjdGF0
aW9ucygKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAot
ICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKQor
ICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMoKQogCiAgICAgICAgICAgICBzZWxm
Ll90ZXN0X2ZpbGVzID0gc2V0KGZpbGVzKQogICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlc19s
aXN0ID0gZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weQppbmRleCBlMjI1N2NlYjc1YTI3NTY2YWJiZWNiNzBmMTM3NzExMzRmZTA5ODQw
Li4wNWQ3MzdkOWRlYWU3ZTVhNzYzN2ViMWM2YjdhYTRhNzRhZDA4MmI1IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC0xMjMsNiAr
MTIzLDcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hf
YXZhaWxhYmxlID0gc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5fcHJldHR5X3BhdGNoX3Bh
dGgpCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuX29wdGlvbnMsICdjb25maWd1cmF0aW9u
Jykgb3Igc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLmNvbmZpZ3VyYXRpb24gPSBzZWxmLmRlZmF1bHRfY29uZmlndXJhdGlvbigp
CisgICAgICAgIHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbiA9IE5vbmUKIAogICAgIGRlZiBkZWZh
dWx0X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBudW1iZXIg
b2YgRHVtcFJlbmRlclRyZWUgaW5zdGFuY2VzIHRvIHVzZSBmb3IgdGhpcwpAQCAtNTc5LDYgKzU4
MCwxOSBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYuX2h0dHBfbG9jazoK
ICAgICAgICAgICAgIHNlbGYuX2h0dHBfbG9jay5jbGVhbnVwX2h0dHBfbG9jaygpCiAKKyAgICAj
CisgICAgIyBURVNUIEVYUEVDVEFUSU9OLVJFTEFURUQgTUVUSE9EUworICAgICMKKworICAgIGRl
ZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGN1cnJl
bnQgVGVzdENvbmZpZ3VyYXRpb24gZm9yIHRoZSBwb3J0LiIiIgorICAgICAgICBpZiBub3Qgc2Vs
Zi5fdGVzdF9jb25maWd1cmF0aW9uOgorICAgICAgICAgICAgc2VsZi5fdGVzdF9jb25maWd1cmF0
aW9uID0gVGVzdENvbmZpZ3VyYXRpb24oc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3Rf
Y29uZmlndXJhdGlvbgorCisgICAgZGVmIGFsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24oKS5hbGxfdGVzdF9jb25maWd1
cmF0aW9ucygpCisKICAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAgICIi
IlJldHVybnMgdGhlIHRlc3QgZXhwZWN0YXRpb25zIGZvciB0aGlzIHBvcnQuCiAKQEAgLTU5NSwx
OCArNjA5LDYgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBzeW5jIHVwIHRoZSB0d28g
cmVwb3MuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBkZWYgdGVzdF9iYXNlX3BsYXRm
b3JtX25hbWVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIHRoZSAnYmFzZScg
cGxhdGZvcm1zIG9uIHlvdXIgcG9ydC4gVGhlIGJhc2UKLSAgICAgICAgcGxhdGZvcm1zIHJlcHJl
c2VudCBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcywgb3BlcmF0aW5nIHN5c3RlbXMsCi0gICAgICAg
IG9yIGltcGxlbWVudGF0aW9ucyAoYXMgb3Bwb3NlZCB0byBkaWZmZXJlbnQgdmVyc2lvbnMgb2Yg
YSBzaW5nbGUKLSAgICAgICAgcGxhdGZvcm0pLiBGb3IgZXhhbXBsZSwgJ21hYycgYW5kICd3aW4n
IG1pZ2h0IGJlIGRpZmZlcmVudCBiYXNlCi0gICAgICAgIHBsYXRmb3Jtcywgd2hlcmVhc2UgJ21h
Yy10aWdlcicgYW5kICdtYWMtbGVvcGFyZCcgbWlnaHQgYmUKLSAgICAgICAgZGlmZmVyZW50IHBs
YXRmb3Jtcy4gVGhpcyByb3V0aW5lIGlzIHVzZWQgYnkgdGhlIHJlYmFzZWxpbmluZyB0b29sCi0g
ICAgICAgIGFuZCB0aGUgZGFzaGJvYXJkcywgYW5kIHRoZSBzdHJpbmdzIGNvcnJlc3BvbmQgdG8g
dGhlIGlkZW50aWZpZXJzCi0gICAgICAgIGluIHlvdXIgdGVzdCBleHBlY3RhdGlvbnMgKCpub3Qq
IG5lY2Vzc2FyaWx5IHRoZSBwbGF0Zm9ybSBuYW1lcwotICAgICAgICB0aGVtc2VsdmVzKS4iIiIK
LSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC5iYXNlX3Rlc3RfcGxhdGZv
cm1zJykKLQogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX25hbWUoc2VsZik6CiAgICAgICAgICIiIlJl
dHVybnMgdGhlIHN0cmluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBwbGF0Zm9ybSBu
YW1lCiAgICAgICAgIGluIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucy4gVGhpcyBtYXkgYmUgdGhlIHNh
bWUgYXMgbmFtZSgpLCBvciBpdApAQCAtODY1LDMgKzg2Nyw2OCBAQCBjbGFzcyBEcml2ZXI6CiAK
ICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcign
RHJpdmVyLnN0b3AnKQorCisKK2NsYXNzIFRlc3RDb25maWd1cmF0aW9uKG9iamVjdCk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQ9Tm9uZSwgb3M9Tm9uZSwgdmVyc2lvbj1Ob25lLCBhcmNo
aXRlY3R1cmU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgYnVpbGRfdHlwZT1Ob25lLCBncmFwaGlj
c190eXBlPU5vbmUpOgorCisgICAgICAgICMgRklYTUU6IFdlIGNhbiBnZXQgdGhlIE8vUyBhbmQg
dmVyc2lvbiBmcm9tIHRlc3RfcGxhdGZvcm1fbmFtZSgpCisgICAgICAgICMgYW5kIHZlcnNpb24o
KSBmb3Igbm93LCBidXQgdGhvc2Ugc2hvdWxkIGdvIGF3YXkgYW5kIGJlIGNsZWFuZWQgdXAKKyAg
ICAgICAgIyB3aXRoIG1vcmUgZ2VuZXJpYyBtZXRob2RzIGxpa2Ugb3BlcmF0aW9uX3N5c3RlbSgp
IGFuZCBvc192ZXJzaW9uKCkKKyAgICAgICAgIyBvciBzb21ldGhpbmcuIE5vdGUgdGhhdCB3ZSBu
ZWVkIHRvIHN0cmlwIHRoZSBsZWFkaW5nICctJyBvZmYgdGhlCisgICAgICAgICMgdmVyc2lvbiBz
dHJpbmcgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgICAgaWYgcG9ydDoKKyAgICAgICAgICAgIHBv
cnRfdmVyc2lvbiA9IHBvcnQudmVyc2lvbigpCisgICAgICAgIHNlbGYub3MgPSBvcyBvciBwb3J0
LnRlc3RfcGxhdGZvcm1fbmFtZSgpLnJlcGxhY2UocG9ydF92ZXJzaW9uLCAnJykKKyAgICAgICAg
c2VsZi52ZXJzaW9uID0gdmVyc2lvbiBvciBwb3J0X3ZlcnNpb25bMTpdCisgICAgICAgIHNlbGYu
YXJjaGl0ZWN0dXJlID0gYXJjaGl0ZWN0dXJlIG9yICd4ODYnCisgICAgICAgIHNlbGYuYnVpbGRf
dHlwZSA9IGJ1aWxkX3R5cGUgb3IgcG9ydC5fb3B0aW9ucy5jb25maWd1cmF0aW9uLmxvd2VyKCkK
KyAgICAgICAgc2VsZi5ncmFwaGljc190eXBlID0gZ3JhcGhpY3NfdHlwZSBvciAnY3B1JworCisg
ICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy5pdGVtcygp
CisKKyAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X18ua2V5
cygpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgiPCUodmVyc2lv
bilzLCAlKGJ1aWxkX3R5cGUpcywgJShncmFwaGljc190eXBlKXM+IiAlCisgICAgICAgICAgICAg
ICAgc2VsZi5fX2RpY3RfXykKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0
dXJuICJUZXN0Q29uZmlnKG9zPSclKG9zKXMnLCB2ZXJzaW9uPSclKHZlcnNpb24pcycsIGFyY2hp
dGVjdHVyZT0nJShhcmNoaXRlY3R1cmUpcycsIGJ1aWxkX3R5cGU9JyUoYnVpbGRfdHlwZSlzJywg
Z3JhcGhpY3NfdHlwZT0nJShncmFwaGljc190eXBlKXMnKSIgJSBzZWxmLl9fZGljdF9fCisKKyAg
ICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9u
IHZhbHVlcyBvZiB0aGlzIGluc3RhbmNlIGFzIGEgdHVwbGUuIiIiCisgICAgICAgIHJldHVybiBz
ZWxmLl9fZGljdF9fLnZhbHVlcygpCisKKyAgICBkZWYgYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMo
c2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBzZXF1ZW5jZSBvZiB0aGUgVGVzdENvbmZpZ3Vy
YXRpb25zIHRoZSBwb3J0IHN1cHBvcnRzLiIiIgorICAgICAgICAjIEJ5IGRlZmF1bHQsIHdlIGFz
c3VtZSB3ZSB3YW50IHRvIHRlc3QgZXZlcnkgZ3JhcGhpY3MgdHlwZSBpbgorICAgICAgICAjIGV2
ZXJ5IGNvbmZpZ3VyYXRpb24gb24gZXZlcnkgc3lzdGVtLgorICAgICAgICB0ZXN0X2NvbmZpZ3Vy
YXRpb25zID0gW10KKyAgICAgICAgZm9yIHN5c3RlbSBpbiBzZWxmLmFsbF9zeXN0ZW1zKCk6Cisg
ICAgICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBzZWxmLmFsbF9idWlsZF90eXBlcygpOgorICAg
ICAgICAgICAgICAgIGZvciBncmFwaGljc190eXBlIGluIHNlbGYuYWxsX2dyYXBoaWNzX3R5cGVz
KCk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RfY29uZmlndXJhdGlvbnMuYXBwZW5kKFRlc3RD
b25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgb3M9c3lzdGVtWzBdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1zeXN0ZW1bMV0sCisgICAgICAgICAgICAgICAg
ICAgICAgICBhcmNoaXRlY3R1cmU9c3lzdGVtWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
YnVpbGRfdHlwZT1idWlsZF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGhpY3Nf
dHlwZT1ncmFwaGljc190eXBlKSkKKyAgICAgICAgcmV0dXJuIHRlc3RfY29uZmlndXJhdGlvbnMK
KworICAgIGRlZiBhbGxfc3lzdGVtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgoJ21hYycsICds
ZW9wYXJkJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnbWFjJywgJ3Nub3dsZW9wYXJkJywg
J3g4NicpLAorICAgICAgICAgICAgICAgICgnd2luJywgJ3hwJywgJ3g4NicpLAorICAgICAgICAg
ICAgICAgICgnd2luJywgJ3Zpc3RhJywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnd2luJywg
J3dpbjcnLCAneDg2JyksCisgICAgICAgICAgICAgICAgKCdsaW51eCcsICdoYXJkeScsICd4ODYn
KSkKKworICAgIGRlZiBhbGxfYnVpbGRfdHlwZXMoc2VsZik6CisgICAgICAgIHJldHVybiAoJ2Rl
YnVnJywgJ3JlbGVhc2UnKQorCisgICAgZGVmIGFsbF9ncmFwaGljc190eXBlcyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuICgnY3B1JywgJ2dwdScpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3QucHkKaW5kZXggMThiNTY4
Yzg5M2U2YzkwNjJiNzI4NjJkYjk3NzBiMWQ2ZGM5MDgwYi4uZWY5MDQ4NGNhODNiMTcxNzk0MzAy
MGIxZDQzYzkyZDcxNjgwMzA4MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMjUwLDcgKzI1MCw2
IEBAIGNsYXNzIFZpcnR1YWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5h
c3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKQogICAgICAgICBzZWxmLmFzc2Vy
dFZpcnR1YWwocG9ydC5yZXN1bHRzX2RpcmVjdG9yeSkKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0
dWFsKHBvcnQudGVzdF9leHBlY3RhdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VmlydHVhbChw
b3J0LnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcykKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFs
KHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFZpcnR1YWwocG9y
dC50ZXN0X3BsYXRmb3JtcykKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9w
bGF0Zm9ybV9uYW1lX3RvX25hbWUsIE5vbmUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCBhZDFiZWE2NTg4ODE5YTFk
NWQ3M2Q3YTdhZTUzN2MzNDVjOTY0Y2RiLi4xNzlhOWE2ODRiOTgzZGMwZjY1NWQzMTNhOWUxYTEw
NTAyYzQ1YzU5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTI0MSw5ICsyNDEsNiBAQCBjbGFzcyBDaHJvbWl1bVBv
cnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1
ZTE3MzE3MTcKICAgICAgICAgICAgIHNlbGYuX2hlbHBlci53YWl0KCkKIAotICAgIGRlZiB0ZXN0
X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiAoJ2xpbnV4JywgJ21h
YycsICd3aW4nKQotCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICAi
IiJSZXR1cm5zIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhpcyBwb3J0LgogCkBAIC0yNzMs
MTUgKzI3MCwxNCBAQCBjbGFzcyBDaHJvbWl1bVBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAg
IGFsbF90ZXN0X2ZpbGVzLnVwZGF0ZShleHRyYV90ZXN0X2ZpbGVzKQogCiAgICAgICAgIGV4cGVj
dGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCi0gICAgICAgICAg
ICBzZWxmLCBhbGxfdGVzdF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgdGVzdF9wbGF0Zm9ybV9u
YW1lLAotICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlPUZhbHNlLCBvdmVy
cmlkZXM9b3ZlcnJpZGVzX3N0cikKKyAgICAgICAgICAgIHNlbGYsIGFsbF90ZXN0X2ZpbGVzLCBl
eHBlY3RhdGlvbnNfc3RyLCBzZWxmLnRlc3RfY29uZmlndXJhdGlvbigpLAorICAgICAgICAgICAg
aXNfbGludF9tb2RlPUZhbHNlLCBvdmVycmlkZXM9b3ZlcnJpZGVzX3N0cikKICAgICAgICAgdGVz
dHNfZGlyID0gc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgcmV0dXJuIFtzZWxmLnJl
bGF0aXZlX3Rlc3RfZmlsZW5hbWUodGVzdCkKICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiBl
eHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfcmVzdWx0X3R5cGUodGVzdF9leHBlY3RhdGlvbnMu
U0tJUCldCiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYudGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKCkgKyAoJ3dpbi14cCcsCi0gICAgICAg
ICAgICAnd2luLXZpc3RhJywgJ3dpbi03JykKKyAgICAgICAgcmV0dXJuICgnbWFjJywgJ3dpbics
ICdsaW51eCcsICd3aW4teHAnLCAnd2luLXZpc3RhJywgJ3dpbi03JykKIAogICAgIGRlZiB0ZXN0
X3BsYXRmb3JtX25hbWVfdG9fbmFtZShzZWxmLCB0ZXN0X3BsYXRmb3JtX25hbWUpOgogICAgICAg
ICBpZiB0ZXN0X3BsYXRmb3JtX25hbWUgaW4gc2VsZi50ZXN0X3BsYXRmb3JtX25hbWVzKCk6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRf
dGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Bv
cnRfdGVzdGNhc2UucHkKaW5kZXggMGIwM2I0YzBhMDJmYjg4OWM2ZTcyM2QyNmQxMmMzODQxMjhh
MWU3MS4uNDE0NmQ0MDhhMTVhNjc4OTVhYTgxZGY5NzJiZTc0YjAzYTY1YzM1OCAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNl
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90
ZXN0Y2FzZS5weQpAQCAtODgsMyArODgsMTUgQEAgY2xhc3MgUG9ydFRlc3RDYXNlKHVuaXR0ZXN0
LlRlc3RDYXNlKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBwb3J0LnN0YXJ0X3dlYnNv
Y2tldF9zZXJ2ZXIoKQogICAgICAgICBwb3J0LnN0b3Bfd2Vic29ja2V0X3NlcnZlcigpCisKKyAg
ICBkZWYgdGVzdF90ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydCgpCisgICAgICAgIGlmIG5vdCBwb3J0OgorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LnRlc3RfY29uZmlndXJhdGlvbigpKQorCisgICAg
ZGVmIHRlc3RfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6CisgICAgICAgIHBvcnQgPSBz
ZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIGlmIG5vdCBwb3J0OgorICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocG9ydC5hbGxfdGVzdF9jb25maWd1cmF0aW9u
cygpKSA+IDApCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3Rlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3Rlc3QucHkKaW5kZXggNjY2MThhNTJiYTRjY2U4OTJmMmYxNWNmNzBiMmI1NzZmZGY3OWQ0NC4u
MWJjNTAwZDY5YWY5N2U5ZWVhNTYzZjJkYWNiMTJlZmZkNDZiZDUyYyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQpAQCAtMjE1LDggKzIx
NSw4IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVybiAnanVuaycK
IAogICAgIGRlZiBiYXNlbGluZV9wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAncGxhdGZvcm0nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSgpICsgc2VsZi52ZXJzaW9u
KCkpCisgICAgICAgICMgV2UgZG9uJ3QgYm90aGVyIHdpdGggYSBmYWxsYmFjayBwYXRoLgorICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rpcigp
LCAncGxhdGZvcm0nLCBzZWxmLm5hbWUoKSkKIAogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0
aChzZWxmKToKICAgICAgICAgcmV0dXJuIFtzZWxmLmJhc2VsaW5lX3BhdGgoKV0KQEAgLTIyNCw2
ICsyMjQsOSBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBjaGVja19idWls
ZChzZWxmLCBuZWVkc19odHRwKToKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBkZWZh
dWx0X2NvbmZpZ3VyYXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiAnUmVsZWFzZScKKwogICAg
IGRlZiBkaWZmX2ltYWdlKHNlbGYsIGV4cGVjdGVkX2NvbnRlbnRzLCBhY3R1YWxfY29udGVudHMs
CiAgICAgICAgICAgICAgICAgICAgZGlmZl9maWxlbmFtZT1Ob25lKToKICAgICAgICAgZGlmZmVk
ID0gYWN0dWFsX2NvbnRlbnRzICE9IGV4cGVjdGVkX2NvbnRlbnRzCkBAIC0yNjIsMjQgKzI2NSwy
NiBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBzdG9wX3dlYnNvY2tldF9z
ZXJ2ZXIoc2VsZik6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1f
bmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiAoJ21hYycsICd3aW4nKQotCiAgICAgZGVmIHBh
dGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYu
X2V4cGVjdGF0aW9uc19wYXRoCiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lKHNlbGYpOgot
ICAgICAgICBpZiBzZWxmLl9uYW1lID09ICd0ZXN0LXdpbic6Ci0gICAgICAgICAgICByZXR1cm4g
J3dpbicKLSAgICAgICAgcmV0dXJuICdtYWMnCisgICAgICAgIG5hbWVfbWFwID0geworICAgICAg
ICAgICAgJ3Rlc3QtbWFjJzogJ21hYycsCisgICAgICAgICAgICAndGVzdC13aW4nOiAnd2luJywK
KyAgICAgICAgICAgICd0ZXN0LXdpbi14cCc6ICd3aW4teHAnLAorICAgICAgICB9CisgICAgICAg
IHJldHVybiBuYW1lX21hcFtzZWxmLl9uYW1lXQogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFt
ZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcygp
CisgICAgICAgIHJldHVybiAoJ21hYycsICd3aW4nLCAnd2luLXhwJykKIAogICAgIGRlZiB0ZXN0
X3BsYXRmb3JtX25hbWVfdG9fbmFtZShzZWxmLCB0ZXN0X3BsYXRmb3JtX25hbWUpOgogICAgICAg
ICBuYW1lX21hcCA9IHsKICAgICAgICAgICAgICdtYWMnOiAndGVzdC1tYWMnLAorICAgICAgICAg
ICAgJ21hYy1sZW9wYXJkJzogJ3Rlc3QtbWFjLWxlb3BhcmQnLAogICAgICAgICAgICAgJ3dpbic6
ICd0ZXN0LXdpbicsCisgICAgICAgICAgICAnd2luLXhwJzogJ3Rlc3Qtd2luLXhwJywKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gbmFtZV9tYXBbdGVzdF9wbGF0Zm9ybV9uYW1lXQogCkBAIC0z
NDEsOSArMzQ2LDE5IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5rbm93biB1cmwgdHlwZTogJXMnICUgdXJpKQogCi0K
ICAgICBkZWYgdmVyc2lvbihzZWxmKToKLSAgICAgICAgcmV0dXJuICcnCisgICAgICAgIHZlcnNp
b25fbWFwID0geworICAgICAgICAgICAgJ3Rlc3Qtd2luLXhwJzogJy14cCcsCisgICAgICAgICAg
ICAndGVzdC13aW4nOiAnLTcnLAorICAgICAgICAgICAgJ3Rlc3QtbWFjJzogJy1zbm93bGVvcGFy
ZCcsCisgICAgICAgICAgICAndGVzdC1tYWMtbGVvcGFyZCc6ICctbGVvcGFyZCcsCisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIHZlcnNpb25fbWFwW3NlbGYuX25hbWVdCisKKyAgICBkZWYgdGVz
dF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdF9jb25maWd1
cmF0aW9uOgorICAgICAgICAgICAgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uID0gVGVzdFRlc3RD
b25maWd1cmF0aW9uKHNlbGYpCisgICAgICAgIHJldHVybiBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRp
b24KIAogCiBjbGFzcyBUZXN0RHJpdmVyKGJhc2UuRHJpdmVyKToKQEAgLTM3OCwzICszOTMsMTEg
QEAgY2xhc3MgVGVzdERyaXZlcihiYXNlLkRyaXZlcik6CiAKICAgICBkZWYgc3RvcChzZWxmKToK
ICAgICAgICAgcGFzcworCisKK2NsYXNzIFRlc3RUZXN0Q29uZmlndXJhdGlvbihiYXNlLlRlc3RD
b25maWd1cmF0aW9uKToKKyAgICBkZWYgYWxsX3N5c3RlbXMoc2VsZik6CisgICAgICAgIHJldHVy
biAoKCdtYWMnLCAnc25vd2xlb3BhcmQnLCAneDg2JyksCisgICAgICAgICAgICAgICAgKCdtYWMn
LCAnbGVvcGFyZCcsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dpbicsICd4cCcsICd4ODYn
KSwKKyAgICAgICAgICAgICAgICAoJ3dpbicsICc3JywgJ3g4NicpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCAzZjAwOTI3
ZTNiZGYwMjQzN2U2ZjE1NTQxMDk5NDhjOGJiOWE2ODc3Li4wYWRlNzU1ZjIwMzdiOTM5MGU5MmNk
N2NlMzE1NDJkYmQwZTQ0MDk1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMTgwLDExICsxODAsNiBAQCBjbGFzcyBXZWJL
aXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgd29ya2VyX251
bWJlcik6CiAgICAgICAgIHJldHVybiBXZWJLaXREcml2ZXIoc2VsZiwgd29ya2VyX251bWJlcikK
IAotICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgICMgQXQg
dGhlIG1vbWVudCB3ZSBkb24ndCB1c2UgdGVzdCBwbGF0Zm9ybSBuYW1lcywgYnV0IHdlIGhhdmUK
LSAgICAgICAgIyB0byByZXR1cm4gc29tZXRoaW5nLgotICAgICAgICByZXR1cm4gKCdtYWMnLCAn
d2luJykKLQogICAgIGRlZiBfdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcyhzZWxmKToKICAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignV2ViS2l0UG9ydC5fdGVzdHNfZm9yX290aGVy
X3BsYXRmb3JtcycpCiAgICAgICAgICMgVGhlIG9yaWdpbmFsIHJ1bi13ZWJraXQtdGVzdHMgYnVp
bGRzIHVwIGEgIndoaXRlbGlzdCIgb2YgdGVzdHMgdG8KQEAgLTMzNyw4ICszMzIsNyBAQCBjbGFz
cyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lICsgc2Vs
Zi52ZXJzaW9uKCkKIAogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX25hbWVzKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi50ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoKSArICgKLSAgICAgICAgICAg
ICdtYWMtdGlnZXInLCAnbWFjLWxlb3BhcmQnLCAnbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAg
cmV0dXJuICgnbWFjJywgJ3dpbicsICdtYWMtdGlnZXInLCAnbWFjLWxlb3BhcmQnLCAnbWFjLXNu
b3dsZW9wYXJkJykKIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgogICAgICAg
ICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX2NvbmZpZy5idWlsZF9kaXJlY3Rv
cnkoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJh
c2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDIx
YTE3NjBmNjcwMTFlMTk5MTNjYmQyNzEzM2RmMzE5ZjMyY2ZkYjguLjU2Nzk3NWNhNzFmZDZhYzM3
ZDgyZTNhMmViZDM1NmJjODQyYjQxODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLnB5CkBAIC0xNTksNiArMTU5LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5fcG9ydCA9IHJ1bm5pbmdfcG9ydAogICAgICAgICBzZWxmLl9m
aWxlc3lzdGVtID0gcnVubmluZ19wb3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX3Rhcmdl
dF9wb3J0ID0gdGFyZ2V0X3BvcnQKKwogICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQgPSBw
b3J0LmdldCgKICAgICAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0LnRlc3RfcGxhdGZvcm1fbmFt
ZV90b19uYW1lKHBsYXRmb3JtKSwgb3B0aW9ucywKICAgICAgICAgICAgIGZpbGVzeXN0ZW09c2Vs
Zi5fZmlsZXN5c3RlbSkKQEAgLTE3NCw4ICsxNzUsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmpl
Y3QpOgogICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxm
Ll9yZWJhc2VsaW5lX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGF0aW9uc19zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRlc3RfY29uZmlndXJh
dGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
YWxzZSkKICAgICAgICAgc2VsZi5fdXJsX2ZldGNoZXIgPSB1cmxfZmV0Y2hlcgogICAgICAgICBz
ZWxmLl96aXBfZmFjdG9yeSA9IHppcF9mYWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxp
bmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGFhY2UwMzZmZTUyMDg3
Mjg1ZDIyYjkxMjE2Y2NiY2RiZGFiZDI2YWMuLjZjNTEyODJiYzg4MWQzNTc1YjYxMTJkYzY4ZTIz
NzFlZDQ2YTk1NjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Vi
a2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC02MCw2ICs2MCw3IEBAIEFSQ0hJVkVfVVJMID0gJ2h0
dHA6Ly9sb2NhbGhvc3QvbGF5b3V0X3Rlc3RfcmVzdWx0cycKIAogCiBkZWYgdGVzdF9vcHRpb25z
KCk6CisgICAgIyBGSVhNRTogQWRkIGluIG1hYy1sZW9wYXJkIHdoZW4gU25vd0xlb3BhcmQgaXMg
c3VwcG9ydGVkIHByb3Blcmx5LgogICAgIHJldHVybiBtb2NrdG9vbC5Nb2NrT3B0aW9ucyhjb25m
aWd1cmF0aW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t1cD1G
YWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbF9kaXJlY3Rvcnk9Jy90
bXAnLApAQCAtNzAsNyArNzEsNyBAQCBkZWYgdGVzdF9vcHRpb25zKCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRhcmdldF9wbGF0Zm9ybT0nY2hyb21pdW0nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NlPUZhbHNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBxdWlldD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGxhdGZvcm1zPSdtYWMsd2luJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGxhdGZvcm1zPSdtYWMsbWFjLHdpbix3aW4teHAnKQogCiAKIGRlZiB0ZXN0X2hvc3RfcG9ydF9h
bmRfZmlsZXN5c3RlbShvcHRpb25zLCBleHBlY3RhdGlvbnMpOgpAQCAtMTgwLDkgKzE4MSwxMSBA
QCBjbGFzcyBUZXN0UmViYXNlbGluZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIFdl
IGV4cGVjdCB0byBoYXZlIHdyaXR0ZW4gMTIgZmlsZXMgb3ZlciB0aGUgY291cnNlIG9mIHRoaXMg
cmViYXNlbGluZToKICAgICAgICAgIyAqKSAzIGZpbGVzIGluIC9fX2ltX3RtcCBmb3IgdGhlIGV4
dHJhY3RlZCBhcmNoaXZlIG1lbWJlcnMKICAgICAgICAgIyAqKSAzIG5ldyBiYXNlbGluZXMgdW5k
ZXIgJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzJwotICAgICAgICAjICopIDEgdXBkYXRlZCB0
ZXN0X2V4cGVjdGF0aW9ucyBmaWxlCiAgICAgICAgICMgKikgNCBmaWxlcyBpbiAvdG1wIGZvciB0
aGUgbmV3IGFuZCBvbGQgYmFzZWxpbmVzIGluIHRoZSByZXN1bHQgZmlsZQotICAgICAgICAjICop
IDEgdGV4dCBkaWZmIGluIC90bXAgZm9yIHRoZSByZXN1bHQgZmlsZQorICAgICAgICAjICAgICgt
e29sZCxuZXd9Lnt0eHQscG5nfQorICAgICAgICAjICopIDEgdGV4dCBkaWZmIGluIC90bXAgZm9y
IHRoZSByZXN1bHQgZmlsZSAoLWRpZmYudHh0KS4gV2UgZG9uJ3QKKyAgICAgICAgIyAgICBjcmVh
dGUgaW1hZ2UgZGlmZnMgKEZJWE1FPykgYW5kIGRvbid0IGRpc3BsYXkgdGhlIGNoZWNrc3Vtcy4K
KyAgICAgICAgIyAqKSAxIHVwZGF0ZWQgdGVzdF9leHBlY3RhdGlvbnMgZmlsZQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMpLCAxMikKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291dC9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddLCAnJykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291dC9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS90ZXN0LW1hYy9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1leHBlY3Rl
ZC5jaGVja3N1bSddLCAnbmV3LWltYWdlLWNoZWNrc3VtJykKQEAgLTE5Nyw3ICsyMDAsOSBAQCBj
bGFzcyBUZXN0UmViYXNlbGluZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIE5vdGUg
dGhhdCBldmVuIHRob3VnaCB0aGUgcmViYXNlbGluZSBpcyBtYXJrZWQgZm9yIGFsbCBwbGF0Zm9y
bXMsIGVhY2gKICAgICAgICAgIyByZWJhc2VsaW5lciBvbmx5IGV2ZXIgZG9lcyBvbmUuCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcyksIDEyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0J10sICdCVUdY
IFJFQkFTRUxJTkUgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFXG4n
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNr
b3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0J10sCisg
ICAgICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdl
Lmh0bWwgPSBJTUFHRVxuJworICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSBXSU4tWFAgOiBm
YWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1BR0VcbicpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vdGVzdC1tYWMvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW0n
XSwgJ25ldy1pbWFnZS1jaGVja3N1bScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5
c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdC1tYWMv
ZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQucG5nJ10sICduZXctaW1hZ2UtcG5nJykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291
dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0LW1hYy9mYWlsdXJlcy9leHBlY3RlZC9pbWFnZS1l
eHBlY3RlZC50eHQnXSwgJ25ldy1pbWFnZS10eHQnKQpAQCAtMjM1LDkgKzI0MCwxMiBAQCBjbGFz
cyBUZXN0UmVhbE1haW4odW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgaG9zdF9wb3J0
X29iaiwgdXJsX2ZldGNoZXIsIHppcF9mYWN0b3J5LCBtb2NrX3NjbSkKICAgICAgICAgb2MucmVz
dG9yZV9vdXRwdXQoKQogCi0gICAgICAgICMgV2UgZXhwZWN0IHRvIGhhdmUgd3JpdHRlbiAyNCBm
aWxlcyBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhpcyByZWJhc2VsaW5lOgotICAgICAgICAjIDIgKiB0
ZXN0X2FsbF9wbGF0Zm9ybXMsIGFib3ZlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZp
bGVzeXN0ZW0ud3JpdHRlbl9maWxlcyksIDI0KQorICAgICAgICAjIFdlIGV4cGVjdCB0byBoYXZl
IHdyaXR0ZW4gMzUgZmlsZXMgb3ZlciB0aGUgY291cnNlIG9mIHRoaXMgcmViYXNlbGluZToKKyAg
ICAgICAgIyAqKSAxMSBmaWxlcyAqIDMgcG9ydHMgZm9yIHRoZSBuZXcgYmFzZWxpbmVzIGFuZCB0
aGUgZGlmZnMgKHNlZSBicmVha2Rvd24KKyAgICAgICAgIyAgICB1bmRlciB0ZXN0X29uZV9wbGF0
Zm9ybSwgYWJvdmUpCisgICAgICAgICMgKikgdGhlIHVwZGF0ZWQgdGVzdF9leHBlY3RhdGlvbnMg
ZmlsZQorICAgICAgICAjICopIHRoZSByZWJhc2VsaW5lIHJlc3VsdHMgaHRtbCBmaWxlCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZpbGVzeXN0ZW0ud3JpdHRlbl9maWxlcyksIDM1KQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QvdGVzdF9leHBlY3RhdGlvbnMudHh0J10sICcnKQog
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5CmluZGV4IDEzNmU5OTVkZjZkNzhmMTY1OTc0NWM2Y2M4YzRjMDhmMTg5
MmRiNzIuLjA3NGQ5YzQ2ZGIzNTI5MzA4NThjYzhlYTQ4NTlkYjNjYmJjYjUwNTQgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weQpAQCAtOTgsMTEgKzk4LDExIEBAIGRlZiBydW4ocG9ydCwgb3B0aW9ucywgYXJncywg
cmVndWxhcl9vdXRwdXQ9c3lzLnN0ZGVyciwKICAgICAgICAgICAgICAgICByZXR1cm4gLTEKICAg
ICAgICAgICAgIHJhaXNlCiAKLSAgICAgICAgcHJpbnRlci5wcmludF91cGRhdGUoIlBhcnNpbmcg
ZXhwZWN0YXRpb25zIC4uLiIpCiAgICAgICAgIGlmIG9wdGlvbnMubGludF90ZXN0X2ZpbGVzOgog
ICAgICAgICAgICAgcmV0dXJuIHJ1bm5lci5saW50KCkKLSAgICAgICAgcnVubmVyLnBhcnNlX2V4
cGVjdGF0aW9ucyhwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuY29uZmlndXJhdGlvbiA9PSAnRGVidWcnKQorCisgICAg
ICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJQYXJzaW5nIGV4cGVjdGF0aW9ucyAuLi4iKQorICAg
ICAgICBydW5uZXIucGFyc2VfZXhwZWN0YXRpb25zKCkKIAogICAgICAgICBwcmludGVyLnByaW50
X3VwZGF0ZSgiQ2hlY2tpbmcgYnVpbGQgLi4uIikKICAgICAgICAgaWYgbm90IHBvcnQuY2hlY2tf
YnVpbGQocnVubmVyLm5lZWRzX2h0dHAoKSk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRleCBjODZi
MzJjZTU2NTcyNDVkZjdkM2YyODA5MzY5MzM1OWU1OTg2YmE1Li5lMzdmOTA4YjY0ZTdkNWNkMjIw
M2U2NTljN2I1ODg0MGNiNWNmNmViIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTc1LDcgKzc1
LDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0NoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgICAiVXNpbmcgJ3Rlc3QnIHBvcnQsIGJ1dCBwbGF0Zm9ybS1zcGVjaWZpYyBleHBl
Y3RhdGlvbnMgIgogICAgICAgICAgICAgICAgICAgICAgICJ3aWxsIGZhaWwgdGhlIGNoZWNrLiIg
JSBzZWxmLl9maWxlX3BhdGgpCiAgICAgICAgICAgICBzZWxmLl9wb3J0X29iaiA9IHBvcnQuZ2V0
KCd0ZXN0JykKLSAgICAgICAgc2VsZi5fcG9ydF90b19jaGVjayA9IHNlbGYuX3BvcnRfb2JqLnRl
c3RfcGxhdGZvcm1fbmFtZSgpCiAgICAgICAgICMgU3VwcHJlc3MgZXJyb3IgbWVzc2FnZXMgb2Yg
dGVzdF9leHBlY3RhdGlvbnMgbW9kdWxlIHNpbmNlIHRoZXkgd2lsbCBiZQogICAgICAgICAjIHJl
cG9ydGVkIGxhdGVyLgogICAgICAgICBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHku
bGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLiIKQEAgLTkxLDcgKzkwLDcgQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uc0NoZWNrZXIob2JqZWN0KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
ZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9uc0ZpbGUoCiAg
ICAgICAgICAgICAgICAgcG9ydD1zZWxmLl9wb3J0X29iaiwgZXhwZWN0YXRpb25zPWV4cGVjdGF0
aW9uc19zdHIsIGZ1bGxfdGVzdF9saXN0PXRlc3RzLAotICAgICAgICAgICAgICAgIHRlc3RfcGxh
dGZvcm1fbmFtZT1zZWxmLl9wb3J0X3RvX2NoZWNrLCBpc19kZWJ1Z19tb2RlPUZhbHNlLAorICAg
ICAgICAgICAgICAgIHRlc3RfY29uZmlnPXNlbGYuX3BvcnRfb2JqLnRlc3RfY29uZmlndXJhdGlv
bigpLAogICAgICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1UcnVlLCBvdmVycmlkZXM9b3ZlcnJp
ZGVzKQogICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvciwgZXJyb3I6
CiAgICAgICAgICAgICBlcnIgPSBlcnJvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRl
c3QucHkKaW5kZXggOTgxN2M1ZDcwMmQzZTY2MWUwNmNiNmFmNzZjNzhhNzVlODdjMDcyZC4uODY5
MTU1N2U3MTdjNmY5NTk5NDgyMjQ2MWRmZTQ0MWRhNDcxOTJiNiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhw
ZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC04NCwxNSArODQsNiBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdmFsaWRf
ZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAg
ICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gUEFTUyJdLAotICAgICAgICAgICAgIiIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbInBhc3Nlcy90ZXh0
Lmh0bWwgPSBGQUlMIFBBU1MiXSwKLSAgICAgICAgICAgICIiKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gQ1JBU0ggVElN
RU9VVCBGQUlMIFBBU1MiXSwKLSAgICAgICAgICAgICIiKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW5lc19saW50KAogICAgICAgICAgICAgWyJCVUdDUjEyMzQgTUFDIDogcGFzc2VzL3RleHQuaHRt
bCA9IFBBU1MgRkFJTCJdLAogICAgICAgICAgICAgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bmVzX2xpbnQoCkBAIC0xMjAsMTIgKzExMSwxMiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zVGVz
dENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X21vZGlmaWVyX2Vycm9ycyhz
ZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiQlVH
MTIzNCA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMIl0sCi0gICAgICAgICAgICAnQnVnIG11c3Qg
YmUgZWl0aGVyIEJVR0NSLCBCVUdXSywgb3IgQlVHVjhfIGZvciB0ZXN0OiBidWcxMjM0IHBhc3Nl
cy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdJykKKyAgICAgICAgICAgICJCVUdc
XGQrIGlzIG5vdCBhbGxvd2VkLCBtdXN0IGJlIG9uZSBvZiBCVUdDUlxcZCssIEJVR1dLXFxkKywg
QlVHVjhfXFxkKywgb3IgYSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmllci4gcGFzc2VzL3RleHQu
aHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogCiAgICAgZGVmIHRlc3RfdmFsaWRfbW9k
aWZpZXJzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAgICAgICAg
ICAgWyJJTlZBTElELU1PRElGSUVSIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MiXSwKLSAgICAg
ICAgICAgICJJbnZhbGlkIG1vZGlmaWVyIGZvciB0ZXN0OiBpbnZhbGlkLW1vZGlmaWVyICIKKyAg
ICAgICAgICAgICJVbnJlY29nbml6ZWQgb3B0aW9uICdpbnZhbGlkLW1vZGlmaWVyJyAiCiAgICAg
ICAgICAgICAicGFzc2VzL3RleHQuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAg
ICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAgICAgICAgICAgWyJTS0lQIDogcGFzc2Vz
L3RleHQuaHRtbCA9IFBBU1MiXSwKQEAgLTEzNSwzOCArMTI2LDM4IEBAIGNsYXNzIFRlc3RFeHBl
Y3RhdGlvbnNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZXhwZWN0
YXRpb25fZXJyb3JzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAogICAg
ICAgICAgICAgWyJtaXNzaW5nIGV4cGVjdGF0aW9ucyJdLAotICAgICAgICAgICAgIk1pc3Npbmcg
ZXhwZWN0YXRpb25zLiBbJ21pc3NpbmcgZXhwZWN0YXRpb25zJ10gIFt0ZXN0L2V4cGVjdGF0aW9u
c10gWzVdIikKKyAgICAgICAgICAgICJNaXNzaW5nIGEgJzonIG1pc3NpbmcgZXhwZWN0YXRpb25z
ICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xp
bnQoCiAgICAgICAgICAgICBbIlNMT1cgOiBwYXNzZXMvdGV4dC5odG1sID0gVElNRU9VVCJdLAog
ICAgICAgICAgICAgIkEgdGVzdCBjYW4gbm90IGJlIGJvdGggc2xvdyBhbmQgdGltZW91dC4gIgog
ICAgICAgICAgICAgIklmIGl0IHRpbWVzIG91dCBpbmRlZmluaXRlbHksIHRoZW4gaXQgc2hvdWxk
IGJlIGp1c3QgdGltZW91dC4gIgogICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0
L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAg
ICAgICAgICAgIFsiZG9lcy9ub3QvZXhpc3QuaHRtbCA9IEZBSUwiXSwKKyAgICAgICAgICAgIFsi
QlVHV0sxIDogZG9lcy9ub3QvZXhpc3QuaHRtbCA9IEZBSUwiXSwKICAgICAgICAgICAgICJQYXRo
IGRvZXMgbm90IGV4aXN0LiBkb2VzL25vdC9leGlzdC5odG1sICBbdGVzdC9leHBlY3RhdGlvbnNd
IFsyXSIpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9leHBlY3RhdGlvbnMoc2VsZik6CiAgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbInBhc3Nlcy90ZXh0Lmh0bWwg
PSBQQVNTIl0sCisgICAgICAgICAgICBbIkJVR1dLMSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNT
Il0sCiAgICAgICAgICAgICAiIikKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAg
ICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IFVOU1VQUE9SVEVEIl0sCisgICAgICAgICAg
ICBbIkJVR1dLMSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBVTlNVUFBPUlRFRCJdLAogICAgICAgICAg
ICAgIlVuc3VwcG9ydGVkIGV4cGVjdGF0aW9uOiB1bnN1cHBvcnRlZCAiCiAgICAgICAgICAgICAi
cGFzc2VzL3RleHQuaHRtbCAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxm
LmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5odG1sID0gUEFT
UyBVTlNVUFBPUlRFRCJdLAorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1s
ID0gUEFTUyBVTlNVUFBPUlRFRCJdLAogICAgICAgICAgICAgIlVuc3VwcG9ydGVkIGV4cGVjdGF0
aW9uOiB1bnN1cHBvcnRlZCAiCiAgICAgICAgICAgICAicGFzc2VzL3RleHQuaHRtbCAgW3Rlc3Qv
ZXhwZWN0YXRpb25zXSBbNV0iKQogCiAgICAgZGVmIHRlc3RfYWxyZWFkeV9zZWVuX3Rlc3Qoc2Vs
Zik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCi0gICAgICAgICAgICBbInBhc3Nl
cy90ZXh0Lmh0bWwgPSBQQVNTIiwKLSAgICAgICAgICAgICAicGFzc2VzL3RleHQuaHRtbCA9IFRJ
TUVPVVQiXSwKLSAgICAgICAgICAgICJEdXBsaWNhdGUgZXhwZWN0YXRpb24uICVzICBbdGVzdC9l
eHBlY3RhdGlvbnNdIFs1XSIgJSBzZWxmLl90ZXN0X2ZpbGUpCisgICAgICAgICAgICBbIkJVR1dL
MSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIiwKKyAgICAgICAgICAgICAiQlVHV0sxIDogcGFz
c2VzL3RleHQuaHRtbCA9IFRJTUVPVVQiXSwKKyAgICAgICAgICAgICJEdXBsaWNhdGUgb3IgYW1i
aWd1b3VzIGV4cGVjdGF0aW9uLiAlcyAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iICUgc2VsZi5f
dGVzdF9maWxlKQogCiAgICAgZGVmIHRlc3RfdGFiKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2Vy
dF9saW5lc19saW50KAotICAgICAgICAgICAgWyJcdHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0s
CisgICAgICAgICAgICBbIlx0QlVHV0sxIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MiXSwKICAg
ICAgICAgICAgICJMaW5lIGNvbnRhaW5zIHRhYiBjaGFyYWN0ZXIuICBbd2hpdGVzcGFjZS90YWJd
IFs1XSIpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80676</attachid>
            <date>2011-01-31 13:55:20 -0800</date>
            <delta_ts>2011-01-31 13:56:36 -0800</delta_ts>
            <desc>This is the diff between what was checked in w/ r75576, and the new version (ignoring the ChangeLog deltas, which got confused)</desc>
            <filename>diff_from_r75576.diff</filename>
            <type>text/plain</type>
            <size>23938</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZDhj
OGM3Li41ZDIwODU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtlICA8ZHByYW5r
ZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhlIGN1cnJlbnQgbW9kaWZpZXIgcGFyc2luZyBjb2RlIGluIHRlc3RfZXhwZWN0
YXRpb25zIGlzCisgICAgICAgIGZyYWdpbGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0J3Mgbm90IGVh
c3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMKKyAgICAgICAgb3IgZWFzaWx5IGFkZCBuZXcgdHlw
ZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQVSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAgICAgZm9yIGdy
YXBoaWNzIHRlc3RzLCBvciAzMi1iaXQgdnMuIDY0LWJpdCBkaWZmZXJlbmNlcykuCisKKyAgICAg
ICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgdHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFkZCBpbiBtb3Jl
IGdlbmVyaWMKKyAgICAgICAgc3VwcG9ydCBhbmQgdGhlbiBlbGltaW5hdGUgdGhlIEdQVS1zcGVj
aWZpYyB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBmaWxlcyBmb3IgQ2hyb21pdW0uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBzdGFuZGFsb25lIG9iamVjdHMgZm9yIGhhbmRsaW5n
IG1vZGlmaWVycy4gVGhlCisgICAgICAgIHJ1bGVzIGZvciBpbnRlcnByZXRpbmcgbW9kaWZpZXJz
LCBwcmVjZWRlbmNlLCBhbmQgY29uZmxpY3RzIGFyZQorICAgICAgICBnaXZlbiBpbiB0aGUgZG9j
c3RyaW5nIHRvIHRoZSBNb2RpZmllck1hdGNoZXIgY2xhc3MsIHdoaWNoCisgICAgICAgIHJldHVy
bnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBvYmplY3RzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIGFkZHMgcm91dGluZXMgdG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFuZCBhCisgICAg
ICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVlcyBpbiB0aGUgYmFzZSBvYmplY3QsIGluIG9yZGVyIHRv
IG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRlc3QgcnVuLiBU
aGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFzc2VkCisgICAgICAgIHRvIHRoZSBleHBlY3RhdGlvbiBw
YXJzZXIuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gY2xlYW4gdXAgdGhlCisgICAgICAgIGxvZ2lj
IHVzZWQgdG8gbGludCBhbGwgb2YgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBpbiBhCisg
ICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmlsZS4KKworICAgICAgICBUaGUg
bmV4dCBwYXRjaCB3aWxsIG1lcmdlIGluIHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0YXRpb25zIGZp
bGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUx
MjIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVj
dGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJh
c2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAq
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMu
cHk6CisgICAgICAgICogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0
X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKwogMjAxMS0wMS0zMSAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpAQCAt
MjA4OCw2ICsyMTMzLDI4IEBACiAgICAgICAgIChDcHBTdHlsZVRlc3QudGVzdF9jbG9zZV9leHBy
ZXNzaW9uKTogQWRkZWQgdGVzdHMgdG8gY2F0Y2ggdGhlIGlzc3VlcwogICAgICAgICB0aGF0IHdl
cmUgZml4ZWQuCiAKKzIwMTEtMDEtMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NTU3Ni4KKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzU1NzYKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMzA0CisKKyAgICAgICAgYnJv
a2UgcmViYXNlbGluZS1jaHJvbWl1bS13ZWJraXQtdGVzdCAoUmVxdWVzdGVkIGJ5IHRoYWtpcyBv
bgorICAgICAgICAjd2Via2l0KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRp
b25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJv
bWl1bV93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisKIDIw
MTEtMDEtMTIgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBl
Y3RhdGlvbnMucHkKaW5kZXggMzk5NmEzNS4uOGUyNGUzMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlv
bnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3Bh
Y2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKQEAgLTQ4OCw3ICs0ODgsOCBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJyAgbmV3OiAlcycs
IG5ld19saW5lKQogICAgICAgICAgICAgZWxpZiBhY3Rpb24gPT0gQUREX1BMQVRGT1JNU19FWENF
UFRfVEhJUzoKICAgICAgICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKQotICAgICAg
ICAgICAgICAgIG5ld19vcHRpb25zID0gcGFydHNbMF0KKyAgICAgICAgICAgICAgICBfbG9nLmlu
Zm8oJ1Rlc3QgdXBkYXRlZDogJykKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oJyAgb2xkOiAl
cycsIGxpbmUpCiAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5fcG9ydC50ZXN0X3BsYXRm
b3JtX25hbWVzKCk6CiAgICAgICAgICAgICAgICAgICAgIHAgPSBwLnVwcGVyKCkKICAgICAgICAg
ICAgICAgICAgICAgIyBUaGlzIGlzIGEgdGVtcCBzb2x1dGlvbiBmb3IgcmViYXNlbGluaW5nIHRv
b2wuCkBAIC00OTgsMTMgKzQ5OSwxMSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAg
ICAgICAgICAgICAgICAgICAgIyBUT0RPKHZpY3RvcncpOiBSZW1vdmUgV0lOLVZJU1RBIGFuZCBX
SU4tNyBvbmNlIHdlIGhhdmUKICAgICAgICAgICAgICAgICAgICAgIyByZWxpYWJsZSBXaW4gNyBh
bmQgV2luIFZpc3RhIGJ1aWxkYm90cyBzZXR1cC4KICAgICAgICAgICAgICAgICAgICAgaWYgbm90
IHAgaW4gKHBsYXRmb3JtLnVwcGVyKCksICdXSU4tVklTVEEnLCAnV0lOLTcnKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld19vcHRpb25zICs9IHAgKyAnICcKLSAgICAgICAgICAgICAgICBu
ZXdfbGluZSA9ICgnJXM6JXMnICUgKG5ld19vcHRpb25zLCBwYXJ0c1sxXSkpCi0gICAgICAgICAg
ICAgICAgZl9uZXcuYXBwZW5kKG5ld19saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
X29wdGlvbnMgPSBwYXJ0c1swXSArIHAgKyAnICcKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d19saW5lID0gKCclczolcycgJSAobmV3X29wdGlvbnMsIHBhcnRzWzFdKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZfbmV3LmFwcGVuZChuZXdfbGluZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIF9sb2cuaW5mbygnICBuZXc6ICVzJywgbmV3X2xpbmUpCiAgICAgICAgICAgICAgICAgdGVz
dHNfdXBkYXRlZCArPSAxCi0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdUZXN0IHVwZGF0ZWQ6
ICcpCi0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcgIG9sZDogJXMnLCBsaW5lKQotICAgICAg
ICAgICAgICAgIF9sb2cuaW5mbygnICBuZXc6ICVzJywgbmV3X2xpbmUpCiAKICAgICAgICAgX2xv
Zy5pbmZvKCdUb3RhbCB0ZXN0cyByZW1vdmVkOiAlZCcsIHRlc3RzX3JlbW92ZWQpCiAgICAgICAg
IF9sb2cuaW5mbygnVG90YWwgdGVzdHMgdXBkYXRlZDogJWQnLCB0ZXN0c191cGRhdGVkKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eQppbmRleCBhNDNjZGI1Li5mZDk5ZDZiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVz
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFj
a2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtODAsMTAgKzgwLDEwIEBAIGNs
YXNzIEZ1bmN0aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiBjbGFzcyBCYXNlKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAjIE5vdGUgdGhhdCBhbGwgb2YgdGhlc2UgdGVzdHMgYXJlIHdy
aXR0ZW4gYXNzdW1pbmcgdGhlIGNvbmZpZ3VyYXRpb24KLSAgICAjIGJlaW5nIHRlc3RlZCBpcyBN
YWMgTGVvcGFyZCwgUmVsZWFzZSBidWlsZC4KKyAgICAjIGJlaW5nIHRlc3RlZCBpcyBXaW5kb3dz
IFhQLCBSZWxlYXNlIGJ1aWxkLgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RGdW5jLCBz
ZXRVcD1Ob25lLCB0ZWFyRG93bj1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lKToKLSAgICAgICAgc2Vs
Zi5fcG9ydCA9IHBvcnQuZ2V0KCd0ZXN0JywgTm9uZSkKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBv
cnQuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCiAgICAgICAgIHNlbGYuX2ZzID0gc2VsZi5fcG9y
dC5fZmlsZXN5c3RlbQogICAgICAgICBzZWxmLl9leHAgPSBOb25lCiAgICAgICAgIHVuaXR0ZXN0
LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5jKQpAQCAtMTA1LDcgKzEwNSw3IEBAIEJV
R19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAogQlVHX1RFU1QgV09O
VEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCA9IENSQVNICiBCVUdfVEVT
VCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sID0gTUlT
U0lORwogQlVHX1RFU1QgV09OVEZJWCA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3Vt
Lmh0bWwgPSBJTUFHRQotQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sID0gSU1BR0UKK0JVR19URVNUIFdPTlRGSVggTUFDIDogZmFpbHVyZXMvZXhwZWN0
ZWQvaW1hZ2UuaHRtbCA9IElNQUdFCiAiIiIKIAogICAgIGRlZiBwYXJzZV9leHAoc2VsZiwgZXhw
ZWN0YXRpb25zLCBvdmVycmlkZXM9Tm9uZSwgaXNfbGludF9tb2RlPUZhbHNlKToKQEAgLTI2OSw3
ICsyNjksNyBAQCBjbGFzcyBFeHBlY3RhdGlvblN5bnRheFRlc3RzKEJhc2UpOgogCiAgICAgZGVm
IHRlc3RfbWFjcm8oc2VsZik6CiAgICAgICAgIGV4cF9zdHIgPSAiIiIKLUJVR19URVNUIE1BQy1M
RU9QQVJEIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHX1RFU1QgV0lO
LVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAogIiIiCiAgICAgICAgIHNl
bGYucGFyc2VfZXhwKGV4cF9zdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKQEAgLTMzNiwzNCArMzM2LDM0IEBAIEJVR1ggOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCiAgICAgZGVmIHRlc3RfYW1iaWd1b3Vz
KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNl
X2V4cCwgIiIiCiBCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKLUJV
R19URVNUIE1BQyA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMCitCVUdfVEVTVCBXSU4gOiBwYXNz
ZXMvdGV4dC5odG1sID0gRkFJTAogIiIiKQogCiAgICAgZGVmIHRlc3RfbW9yZV9tb2RpZmllcnMo
c2VsZik6CiAgICAgICAgIGV4cF9zdHIgPSAiIiIKIEJVR19URVNUIFJFTEVBU0UgOiBwYXNzZXMv
dGV4dC5odG1sID0gUEFTUwotQlVHX1RFU1QgTUFDIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1s
ID0gVEVYVAorQlVHX1RFU1QgV0lOIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAog
IiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhw
LCBleHBfc3RyKQogCiAgICAgZGVmIHRlc3Rfb3JkZXJfaW5fZmlsZShzZWxmKToKICAgICAgICAg
ZXhwX3N0ciA9ICIiIgotQlVHX1RFU1QgTUFDIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0g
VEVYVAorQlVHX1RFU1QgV0lOIFJFTEVBU0UgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAogQlVH
X1RFU1QgUkVMRUFTRSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCiAiIiIKICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsIGV4cF9zdHIpCiAKICAg
ICBkZWYgdGVzdF92ZXJzaW9uX292ZXJyaWRlcyhzZWxmKToKICAgICAgICAgZXhwX3N0ciA9ICIi
IgotQlVHX1RFU1QgTUFDIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKLUJVR19URVNUIE1BQyBM
RU9QQVJEIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKK0JVR19URVNUIFdJTiA6IHBhc3Nlcy90
ZXh0Lmh0bWwgPSBQQVNTCitCVUdfVEVTVCBXSU4gWFAgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVY
VAogIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2Vf
ZXhwLCBleHBfc3RyKQogCiAgICAgZGVmIHRlc3RfbWFjcm9fb3ZlcnJpZGVzKHNlbGYpOgogICAg
ICAgICBleHBfc3RyID0gIiIiCi1CVUdfVEVTVCBNQUMgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFT
UwotQlVHX1RFU1QgTUFDLUxFT1BBUkQgOiBwYXNzZXMvdGV4dC5odG1sID0gVEVYVAorQlVHX1RF
U1QgV0lOIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNUIFdJTi1YUCA6IHBhc3Nl
cy90ZXh0Lmh0bWwgPSBURVhUCiAiIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VF
cnJvciwgc2VsZi5wYXJzZV9leHAsIGV4cF9zdHIpCiAKQEAgLTM5MCw3ICszOTAsOCBAQCBCVUdf
VEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAogICAg
IGRlZiB0ZXN0X3JlbW92ZV9leHBhbmQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmVtb3Zl
KCdtYWMnLAogICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVk
L3RleHQuaHRtbCA9IFRFWFRcbicsCi0gICAgICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIFdJTiA6
IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFRcbicpCisgICAgICAgICAgICAnQlVH
WCBSRUJBU0VMSU5FIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFRcbicK
KyAgICAgICAgICAgICdCVUdYIFJFQkFTRUxJTkUgV0lOLVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gVEVYVFxuJykKIAogICAgIGRlZiB0ZXN0X3JlbW92ZV9tYWNfd2luKHNlbGYp
OgogICAgICAgICBzZWxmLmFzc2VydFJlbW92ZSgnbWFjJywKQEAgLTQxMCw3ICs0MTEsNyBAQCBC
VUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAog
CiBjbGFzcyBNb2RpZmllclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAo
c2VsZik6Ci0gICAgICAgIHBvcnRfb2JqID0gcG9ydC5nZXQoJ3Rlc3QnLCBOb25lKQorICAgICAg
ICBwb3J0X29iaiA9IHBvcnQuZ2V0KCd0ZXN0LXdpbi14cCcsIE5vbmUpCiAgICAgICAgIHNlbGYu
Y29uZmlnID0gcG9ydF9vYmoudGVzdF9jb25maWd1cmF0aW9uKCkKICAgICAgICAgc2VsZi5tYXRj
aGVyID0gTW9kaWZpZXJNYXRjaGVyKHNlbGYuY29uZmlnKQogCkBAIC00MzMsNDEgKzQzNCw0MCBA
QCBjbGFzcyBNb2RpZmllclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5t
YXRjaChbXSwgMCkKIAogICAgIGRlZiB0ZXN0X29uZShzZWxmKToKLSAgICAgICAgc2VsZi5tYXRj
aChbJ2xlb3BhcmQnXSwgMSkKLSAgICAgICAgc2VsZi5tYXRjaChbJ21hYyddLCAxKQorICAgICAg
ICBzZWxmLm1hdGNoKFsneHAnXSwgMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3dpbiddLCAxKQog
ICAgICAgICBzZWxmLm1hdGNoKFsncmVsZWFzZSddLCAxKQogICAgICAgICBzZWxmLm1hdGNoKFsn
Y3B1J10sIDEpCiAgICAgICAgIHNlbGYubWF0Y2goWyd4ODYnXSwgMSkKLSAgICAgICAgc2VsZi5t
YXRjaChbJ3hwJ10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFyZCddLCAtMSkKICAg
ICAgICAgc2VsZi5tYXRjaChbJ2dwdSddLCAtMSkKICAgICAgICAgc2VsZi5tYXRjaChbJ2RlYnVn
J10sIC0xKQogCiAgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgotICAgICAgICBzZWxmLm1hdGNoKFsn
bGVvcGFyZCcsICdyZWxlYXNlJ10sIDIpCi0gICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdyZWxl
YXNlJ10sIC0xKQotICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZSddLCAtMSkKLSAg
ICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9wYXJkJywgJ2xlb3BhcmQnXSwgMSkKKyAgICAgICAg
c2VsZi5tYXRjaChbJ3hwJywgJ3JlbGVhc2UnXSwgMikKKyAgICAgICAgc2VsZi5tYXRjaChbJ3dp
bjcnLCAncmVsZWFzZSddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3dpbjcnLCAneHAnXSwg
MSkKIAogICAgIGRlZiB0ZXN0X3RocmVlKHNlbGYpOgotICAgICAgICBzZWxmLm1hdGNoKFsnc25v
d2xlb3BhcmQnLCAnbGVvcGFyZCcsICdyZWxlYXNlJ10sIDIpCi0gICAgICAgIHNlbGYubWF0Y2go
WydsZW9wYXJkJywgJ2RlYnVnJywgJ3g4NiddLCAtMSkKLSAgICAgICAgc2VsZi5tYXRjaChbJ2xl
b3BhcmQnLCAncmVsZWFzZScsICd4ODYnXSwgMykKLSAgICAgICAgc2VsZi5tYXRjaChbJ2xlb3Bh
cmQnLCAnY3B1JywgJ3JlbGVhc2UnXSwgMykKKyAgICAgICAgc2VsZi5tYXRjaChbJ3dpbjcnLCAn
eHAnLCAncmVsZWFzZSddLCAyKQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAnZGVidWcnLCAn
eDg2J10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZScsICd4ODYnXSwg
MykKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ2NwdScsICdyZWxlYXNlJ10sIDMpCiAKICAg
ICBkZWYgdGVzdF9mb3VyKHNlbGYpOgotICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFyZCcsICdy
ZWxlYXNlJywgJ2NwdScsICd4ODYnXSwgNCkKLSAgICAgICAgc2VsZi5tYXRjaChbJ3Nub3dsZW9w
YXJkJywgJ2xlb3BhcmQnLCAncmVsZWFzZScsICdjcHUnXSwgMykKLSAgICAgICAgc2VsZi5tYXRj
aChbJ3Nub3dsZW9wYXJkJywgJ2xlb3BhcmQnLCAnZGVidWcnLCAnY3B1J10sIC0xKQorICAgICAg
ICBzZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZScsICdjcHUnLCAneDg2J10sIDQpCisgICAgICAg
IHNlbGYubWF0Y2goWyd3aW43JywgJ3hwJywgJ3JlbGVhc2UnLCAnY3B1J10sIDMpCisgICAgICAg
IHNlbGYubWF0Y2goWyd3aW43JywgJ3hwJywgJ2RlYnVnJywgJ2NwdSddLCAtMSkKIAogICAgIGRl
ZiB0ZXN0X2Nhc2VfaW5zZW5zaXRpdml0eShzZWxmKToKLSAgICAgICAgc2VsZi5tYXRjaChbJ01h
YyddLCBudW1fZXJyb3JzPTEpCi0gICAgICAgIHNlbGYubWF0Y2goWydNQUMnXSwgbnVtX2Vycm9y
cz0xKQotICAgICAgICBzZWxmLm1hdGNoKFsnbWFjJ10sIDEpCisgICAgICAgIHNlbGYubWF0Y2go
WydXaW4nXSwgbnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnV0lOJ10sIG51bV9l
cnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3dpbiddLCAxKQogCiAgICAgZGVmIHRlc3Rf
ZHVwbGljYXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5tYXRjaChbJ3JlbGVhc2UnLCAncmVsZWFz
ZSddLCBudW1fZXJyb3JzPTEpCi0gICAgICAgIHNlbGYubWF0Y2goWydtYWMtbGVvcGFyZCcsICds
ZW9wYXJkJ10sIG51bV9lcnJvcnM9MSkKLSAgICAgICAgc2VsZi5tYXRjaChbJ21hYy1sZW9wYXJk
JywgJ21hYy1sZW9wYXJkJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3dp
bi14cCcsICd4cCddLCBudW1fZXJyb3JzPTEpCisgICAgICAgIHNlbGYubWF0Y2goWyd3aW4teHAn
LCAnd2luLXhwJ10sIG51bV9lcnJvcnM9MSkKICAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3Jl
bGVhc2UnLCAneHAnLCAncmVsZWFzZSddLCBudW1fZXJyb3JzPTIpCiAgICAgICAgIHNlbGYubWF0
Y2goWydyZWJhc2VsaW5lJywgJ3JlYmFzZWxpbmUnXSwgbnVtX2Vycm9ycz0xKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggYTgz
ZTZhOS4uMDVkNzM3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYmFzZS5weQpAQCAtNjA5LDE4ICs2MDksNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6
CiAgICAgICAgIHN5bmMgdXAgdGhlIHR3byByZXBvcy4iIiIKICAgICAgICAgcmV0dXJuIE5vbmUK
IAotICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgICIiIlJl
dHVybiBhIGxpc3Qgb2YgdGhlICdiYXNlJyBwbGF0Zm9ybXMgb24geW91ciBwb3J0LiBUaGUgYmFz
ZQotICAgICAgICBwbGF0Zm9ybXMgcmVwcmVzZW50IGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLCBv
cGVyYXRpbmcgc3lzdGVtcywKLSAgICAgICAgb3IgaW1wbGVtZW50YXRpb25zIChhcyBvcHBvc2Vk
IHRvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBhIHNpbmdsZQotICAgICAgICBwbGF0Zm9ybSkuIEZv
ciBleGFtcGxlLCAnbWFjJyBhbmQgJ3dpbicgbWlnaHQgYmUgZGlmZmVyZW50IGJhc2UKLSAgICAg
ICAgcGxhdGZvcm1zLCB3aGVyZWFzZSAnbWFjLXRpZ2VyJyBhbmQgJ21hYy1sZW9wYXJkJyBtaWdo
dCBiZQotICAgICAgICBkaWZmZXJlbnQgcGxhdGZvcm1zLiBUaGlzIHJvdXRpbmUgaXMgdXNlZCBi
eSB0aGUgcmViYXNlbGluaW5nIHRvb2wKLSAgICAgICAgYW5kIHRoZSBkYXNoYm9hcmRzLCBhbmQg
dGhlIHN0cmluZ3MgY29ycmVzcG9uZCB0byB0aGUgaWRlbnRpZmllcnMKLSAgICAgICAgaW4geW91
ciB0ZXN0IGV4cGVjdGF0aW9ucyAoKm5vdCogbmVjZXNzYXJpbHkgdGhlIHBsYXRmb3JtIG5hbWVz
Ci0gICAgICAgIHRoZW1zZWx2ZXMpLiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yKCdQb3J0LmJhc2VfdGVzdF9wbGF0Zm9ybXMnKQotCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1f
bmFtZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgc3RyaW5nIHRoYXQgY29ycmVzcG9u
ZHMgdG8gdGhlIGdpdmVuIHBsYXRmb3JtIG5hbWUKICAgICAgICAgaW4gdGhlIHRlc3QgZXhwZWN0
YXRpb25zLiBUaGlzIG1heSBiZSB0aGUgc2FtZSBhcyBuYW1lKCksIG9yIGl0CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRl
c3QucHkKaW5kZXggMThiNTY4Yy4uZWY5MDQ4NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQpAQCAtMjUw
LDcgKzI1MCw2IEBAIGNsYXNzIFZpcnR1YWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKQogICAgICAgICBz
ZWxmLmFzc2VydFZpcnR1YWwocG9ydC5yZXN1bHRzX2RpcmVjdG9yeSkKICAgICAgICAgc2VsZi5h
c3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9leHBlY3RhdGlvbnMpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VmlydHVhbChwb3J0LnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcykKICAgICAgICAgc2VsZi5hc3Nl
cnRWaXJ0dWFsKHBvcnQudGVzdF9wbGF0Zm9ybV9uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFZp
cnR1YWwocG9ydC50ZXN0X3BsYXRmb3JtcykKICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBv
cnQudGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUsIE5vbmUpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQppbmRleCAzNThkNjJi
Li4xNzlhOWE2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkKQEAgLTI0MSw5ICsyNDEsNiBAQCBjbGFzcyBDaHJvbWl1bVBv
cnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1
ZTE3MzE3MTcKICAgICAgICAgICAgIHNlbGYuX2hlbHBlci53YWl0KCkKIAotICAgIGRlZiB0ZXN0
X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiAoJ2xpbnV4JywgJ21h
YycsICd3aW4nKQotCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICAi
IiJSZXR1cm5zIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhpcyBwb3J0LgogCkBAIC0yODAs
OCArMjc3LDcgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBlKHRl
c3RfZXhwZWN0YXRpb25zLlNLSVApXQogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFtZXMoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcygpICsgKCd3
aW4teHAnLAotICAgICAgICAgICAgJ3dpbi12aXN0YScsICd3aW4tNycpCisgICAgICAgIHJldHVy
biAoJ21hYycsICd3aW4nLCAnbGludXgnLCAnd2luLXhwJywgJ3dpbi12aXN0YScsICd3aW4tNycp
CiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUoc2VsZiwgdGVzdF9wbGF0Zm9y
bV9uYW1lKToKICAgICAgICAgaWYgdGVzdF9wbGF0Zm9ybV9uYW1lIGluIHNlbGYudGVzdF9wbGF0
Zm9ybV9uYW1lcygpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC90ZXN0LnB5CmluZGV4IGMzNDRkYzQuLjZkNzFhOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTIxNSw4ICsyMTUsOCBA
QCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgICAgICByZXR1cm4gJ2p1bmsnCiAKICAg
ICBkZWYgYmFzZWxpbmVfcGF0aChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0
ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ3BsYXRmb3JtJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUoKSArIHNlbGYudmVyc2lvbigpKQor
ICAgICAgICAjIFdlIGRvbid0IGJvdGhlciB3aXRoIGEgZmFsbGJhY2sgcGF0aC4KKyAgICAgICAg
cmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ3Bs
YXRmb3JtJywgc2VsZi5uYW1lKCkpCiAKICAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBbc2VsZi5iYXNlbGluZV9wYXRoKCldCkBAIC0yNjUsMjQgKzI2
NSwyNSBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAgIGRlZiBzdG9wX3dlYnNvY2tl
dF9zZXJ2ZXIoc2VsZik6CiAgICAgICAgIHBhc3MKIAotICAgIGRlZiB0ZXN0X2Jhc2VfcGxhdGZv
cm1fbmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiAoJ21hYycsICd3aW4nKQotCiAgICAgZGVm
IHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNl
bGYuX2V4cGVjdGF0aW9uc19wYXRoCiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lKHNlbGYp
OgotICAgICAgICBpZiBzZWxmLl9uYW1lID09ICd0ZXN0LXdpbic6Ci0gICAgICAgICAgICByZXR1
cm4gJ3dpbicKLSAgICAgICAgcmV0dXJuICdtYWMnCisgICAgICAgIG5hbWVfbWFwID0geworICAg
ICAgICAgICAgJ3Rlc3QtbWFjJzogJ21hYycsCisgICAgICAgICAgICAndGVzdC13aW4nOiAnd2lu
JywKKyAgICAgICAgICAgICd0ZXN0LXdpbi14cCc6ICd3aW4teHAnLAorICAgICAgICB9CisgICAg
ICAgIHJldHVybiBuYW1lX21hcFtzZWxmLl9uYW1lXQogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1f
bmFtZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1l
cygpCisgICAgICAgIHJldHVybiAoJ21hYycsICd3aW4nLCAnd2luLXhwJykKIAogICAgIGRlZiB0
ZXN0X3BsYXRmb3JtX25hbWVfdG9fbmFtZShzZWxmLCB0ZXN0X3BsYXRmb3JtX25hbWUpOgogICAg
ICAgICBuYW1lX21hcCA9IHsKICAgICAgICAgICAgICdtYWMnOiAndGVzdC1tYWMnLAogICAgICAg
ICAgICAgJ3dpbic6ICd0ZXN0LXdpbicsCisgICAgICAgICAgICAnd2luLXhwJzogJ3Rlc3Qtd2lu
LXhwJywKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbmFtZV9tYXBbdGVzdF9wbGF0Zm9ybV9u
YW1lXQogCkBAIC0zNDQsOSArMzQ1LDE4IEBAIGNsYXNzIFRlc3RQb3J0KGJhc2UuUG9ydCk6CiAK
ICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigndW5rbm93biB1cmwgdHlwZTogJXMn
ICUgdXJpKQogCi0KICAgICBkZWYgdmVyc2lvbihzZWxmKToKLSAgICAgICAgcmV0dXJuICctbGVv
cGFyZCcKKyAgICAgICAgdmVyc2lvbl9tYXAgPSB7CisgICAgICAgICAgICAndGVzdC13aW4teHAn
OiAnLXhwJywKKyAgICAgICAgICAgICd0ZXN0LXdpbic6ICctNycsCisgICAgICAgICAgICAndGVz
dC1tYWMnOiAnLWxlb3BhcmQnLAorICAgICAgICB9CisgICAgICAgIHJldHVybiB2ZXJzaW9uX21h
cFtzZWxmLl9uYW1lXQorCisgICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAg
ICAgaWYgbm90IHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYuX3Rl
c3RfY29uZmlndXJhdGlvbiA9IFRlc3RUZXN0Q29uZmlndXJhdGlvbihzZWxmKQorICAgICAgICBy
ZXR1cm4gc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uCiAKIAogY2xhc3MgVGVzdERyaXZlcihiYXNl
LkRyaXZlcik6CkBAIC0zODEsMyArMzkxLDEwIEBAIGNsYXNzIFRlc3REcml2ZXIoYmFzZS5Ecml2
ZXIpOgogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHBhc3MKKworCitjbGFzcyBUZXN0
VGVzdENvbmZpZ3VyYXRpb24oYmFzZS5UZXN0Q29uZmlndXJhdGlvbik6CisgICAgZGVmIGFsbF9z
eXN0ZW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gKCgnbWFjJywgJ2xlb3BhcmQnLCAneDg2Jyks
CisgICAgICAgICAgICAgICAgKCd3aW4nLCAneHAnLCAneDg2JyksCisgICAgICAgICAgICAgICAg
KCd3aW4nLCAnd2luNycsICd4ODYnKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggM2YwMDkyNy4uMGFkZTc1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkK
QEAgLTE4MCwxMSArMTgwLDYgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgIGRl
ZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpOgogICAgICAgICByZXR1cm4gV2Vi
S2l0RHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIpCiAKLSAgICBkZWYgdGVzdF9iYXNlX3BsYXRm
b3JtX25hbWVzKHNlbGYpOgotICAgICAgICAjIEF0IHRoZSBtb21lbnQgd2UgZG9uJ3QgdXNlIHRl
c3QgcGxhdGZvcm0gbmFtZXMsIGJ1dCB3ZSBoYXZlCi0gICAgICAgICMgdG8gcmV0dXJuIHNvbWV0
aGluZy4KLSAgICAgICAgcmV0dXJuICgnbWFjJywgJ3dpbicpCi0KICAgICBkZWYgX3Rlc3RzX2Zv
cl9vdGhlcl9wbGF0Zm9ybXMoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJy
b3IoJ1dlYktpdFBvcnQuX3Rlc3RzX2Zvcl9vdGhlcl9wbGF0Zm9ybXMnKQogICAgICAgICAjIFRo
ZSBvcmlnaW5hbCBydW4td2Via2l0LXRlc3RzIGJ1aWxkcyB1cCBhICJ3aGl0ZWxpc3QiIG9mIHRl
c3RzIHRvCkBAIC0zMzcsOCArMzMyLDcgQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fbmFtZSArIHNlbGYudmVyc2lvbigpCiAKICAgICBkZWYgdGVz
dF9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9iYXNlX3Bs
YXRmb3JtX25hbWVzKCkgKyAoCi0gICAgICAgICAgICAnbWFjLXRpZ2VyJywgJ21hYy1sZW9wYXJk
JywgJ21hYy1zbm93bGVvcGFyZCcpCisgICAgICAgIHJldHVybiAoJ21hYycsICd3aW4nLCAnbWFj
LXRpZ2VyJywgJ21hYy1sZW9wYXJkJywgJ21hYy1zbm93bGVvcGFyZCcpCiAKICAgICBkZWYgX2J1
aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihzZWxmLl9jb25maWcuYnVpbGRfZGlyZWN0b3J5KApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weQppbmRleCBiOTFmOWQ4Li41Njc5NzVjIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVt
X3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weQpAQCAtMTU5LDYgKzE1OSw3IEBA
IGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BvcnQgPSBydW5uaW5n
X3BvcnQKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IHJ1bm5pbmdfcG9ydC5fZmlsZXN5c3Rl
bQogICAgICAgICBzZWxmLl90YXJnZXRfcG9ydCA9IHRhcmdldF9wb3J0CisKICAgICAgICAgc2Vs
Zi5fcmViYXNlbGluZV9wb3J0ID0gcG9ydC5nZXQoCiAgICAgICAgICAgICBzZWxmLl90YXJnZXRf
cG9ydC50ZXN0X3BsYXRmb3JtX25hbWVfdG9fbmFtZShwbGF0Zm9ybSksIG9wdGlvbnMsCiAgICAg
ICAgICAgICBmaWxlc3lzdGVtPXNlbGYuX2ZpbGVzeXN0ZW0pCkBAIC0xNzQsNyArMTc1LDcgQEAg
Y2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25z
LlRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcmViYXNlbGluZV9wb3J0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnNfc3RyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90YXJnZXRfcG9ydC50
ZXN0X2NvbmZpZ3VyYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRlc3RfY29uZmlndXJhdGlvbigpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKICAg
ICAgICAgc2VsZi5fdXJsX2ZldGNoZXIgPSB1cmxfZmV0Y2hlcgogICAgICAgICBzZWxmLl96aXBf
ZmFjdG9yeSA9IHppcF9mYWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGFhY2UwMzYuLjczMDIyMGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hy
b21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5CkBAIC03MCw3ICs3MCw3IEBAIGRlZiB0ZXN0X29wdGlvbnMoKToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BsYXRmb3JtPSdjaHJvbWl1bScsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2U9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHF1aWV0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwbGF0Zm9ybXM9J21hYyx3aW4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
bGF0Zm9ybXM9J21hYyx3aW4sd2luLXhwJykKIAogCiBkZWYgdGVzdF9ob3N0X3BvcnRfYW5kX2Zp
bGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKToKQEAgLTE4MCw5ICsxODAsMTEgQEAgY2xh
c3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBXZSBleHBl
Y3QgdG8gaGF2ZSB3cml0dGVuIDEyIGZpbGVzIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGlzIHJlYmFz
ZWxpbmU6CiAgICAgICAgICMgKikgMyBmaWxlcyBpbiAvX19pbV90bXAgZm9yIHRoZSBleHRyYWN0
ZWQgYXJjaGl2ZSBtZW1iZXJzCiAgICAgICAgICMgKikgMyBuZXcgYmFzZWxpbmVzIHVuZGVyICcv
dGVzdC5jaGVja291dC9MYXlvdXRUZXN0cycKLSAgICAgICAgIyAqKSAxIHVwZGF0ZWQgdGVzdF9l
eHBlY3RhdGlvbnMgZmlsZQogICAgICAgICAjICopIDQgZmlsZXMgaW4gL3RtcCBmb3IgdGhlIG5l
dyBhbmQgb2xkIGJhc2VsaW5lcyBpbiB0aGUgcmVzdWx0IGZpbGUKLSAgICAgICAgIyAqKSAxIHRl
eHQgZGlmZiBpbiAvdG1wIGZvciB0aGUgcmVzdWx0IGZpbGUKKyAgICAgICAgIyAgICAoLXtvbGQs
bmV3fS57dHh0LHBuZ30KKyAgICAgICAgIyAqKSAxIHRleHQgZGlmZiBpbiAvdG1wIGZvciB0aGUg
cmVzdWx0IGZpbGUgKC1kaWZmLnR4dCkuIFdlIGRvbid0CisgICAgICAgICMgICAgY3JlYXRlIGlt
YWdlIGRpZmZzIChGSVhNRT8pIGFuZCBkb24ndCBkaXNwbGF5IHRoZSBjaGVja3N1bXMuCisgICAg
ICAgICMgKikgMSB1cGRhdGVkIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChsZW4oZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzKSwgMTIpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnXSwgJycpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vdGVzdC1tYWMvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0ZWQuY2hl
Y2tzdW0nXSwgJ25ldy1pbWFnZS1jaGVja3N1bScpCkBAIC0xOTcsNyArMTk5LDkgQEAgY2xhc3Mg
VGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBOb3RlIHRoYXQg
ZXZlbiB0aG91Z2ggdGhlIHJlYmFzZWxpbmUgaXMgbWFya2VkIGZvciBhbGwgcGxhdGZvcm1zLCBl
YWNoCiAgICAgICAgICMgcmViYXNlbGluZXIgb25seSBldmVyIGRvZXMgb25lLgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMpLCAxMikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291dC9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddLCAnQlVHWCBSRUJB
U0VMSU5FIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBJTUFHRVxuJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291dC9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddLAorICAgICAg
ICAgICAgJ0JVR1ggUkVCQVNFTElORSBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1s
ID0gSU1BR0VcbicKKyAgICAgICAgICAgICdCVUdYIFJFQkFTRUxJTkUgV0lOLVhQIDogZmFpbHVy
ZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGZpbGVzeXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3Jt
L3Rlc3QtbWFjL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLWV4cGVjdGVkLmNoZWNrc3VtJ10sICdu
ZXctaW1hZ2UtY2hlY2tzdW0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0u
ZmlsZXNbJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3QtbWFjL2ZhaWx1
cmVzL2V4cGVjdGVkL2ltYWdlLWV4cGVjdGVkLnBuZyddLCAnbmV3LWltYWdlLXBuZycpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vdGVzdC1tYWMvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhwZWN0
ZWQudHh0J10sICduZXctaW1hZ2UtdHh0JykKQEAgLTIzNSw5ICsyMzksMTIgQEAgY2xhc3MgVGVz
dFJlYWxNYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGhvc3RfcG9ydF9vYmos
IHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgbW9ja19zY20pCiAgICAgICAgIG9jLnJlc3RvcmVf
b3V0cHV0KCkKIAotICAgICAgICAjIFdlIGV4cGVjdCB0byBoYXZlIHdyaXR0ZW4gMjQgZmlsZXMg
b3ZlciB0aGUgY291cnNlIG9mIHRoaXMgcmViYXNlbGluZToKLSAgICAgICAgIyAyICogdGVzdF9h
bGxfcGxhdGZvcm1zLCBhYm92ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmaWxlc3lz
dGVtLndyaXR0ZW5fZmlsZXMpLCAyNCkKKyAgICAgICAgIyBXZSBleHBlY3QgdG8gaGF2ZSB3cml0
dGVuIDM1IGZpbGVzIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGlzIHJlYmFzZWxpbmU6CisgICAgICAg
ICMgKikgMTEgZmlsZXMgKiAzIHBvcnRzIGZvciB0aGUgbmV3IGJhc2VsaW5lcyBhbmQgdGhlIGRp
ZmZzIChzZWUgYnJlYWtkb3duCisgICAgICAgICMgICAgdW5kZXIgdGVzdF9vbmVfcGxhdGZvcm0s
IGFib3ZlKQorICAgICAgICAjICopIHRoZSB1cGRhdGVkIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUK
KyAgICAgICAgIyAqKSB0aGUgcmViYXNlbGluZSByZXN1bHRzIGh0bWwgZmlsZQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMpLCAzNSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVja291dC9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddLCAnJykKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80677</attachid>
            <date>2011-01-31 13:56:40 -0800</date>
            <delta_ts>2011-01-31 14:35:09 -0800</delta_ts>
            <desc>rebase to r73176, make work with rebaselining changes</desc>
            <filename>bug-51222-20110131135639.patch</filename>
            <type>text/plain</type>
            <size>83090</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NTY4
MzdkMjBjNGNjNzM2Yzc4YzMzYWRjNmYzZGNiMzFhNjk1ZTc0Li41ZDIwODU5OTJiY2VjNGMwMDgz
MzVjYTJmYWI1YzAwMjVlNTk3MWNlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDEtMzEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgbW9kaWZpZXIgcGFyc2luZyBjb2RlIGluIHRl
c3RfZXhwZWN0YXRpb25zIGlzCisgICAgICAgIGZyYWdpbGUgYW5kIGhhcmQtY29kZWQsIHNvIGl0
J3Mgbm90IGVhc3kgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMKKyAgICAgICAgb3IgZWFzaWx5IGFk
ZCBuZXcgdHlwZXMgb2YgbW9kaWZpZXJzIChsaWtlIEdQVSB2cy4gQ1BVIHRlc3RpbmcKKyAgICAg
ICAgZm9yIGdyYXBoaWNzIHRlc3RzLCBvciAzMi1iaXQgdnMuIDY0LWJpdCBkaWZmZXJlbmNlcyku
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2YgdHdvIHBhdGNoZXMgdGhhdCB3aWxsIGFk
ZCBpbiBtb3JlIGdlbmVyaWMKKyAgICAgICAgc3VwcG9ydCBhbmQgdGhlbiBlbGltaW5hdGUgdGhl
IEdQVS1zcGVjaWZpYyB0ZXN0IGV4cGVjdGF0aW9ucworICAgICAgICBmaWxlcyBmb3IgQ2hyb21p
dW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIHR3byBzdGFuZGFsb25lIG9iamVjdHMgZm9y
IGhhbmRsaW5nIG1vZGlmaWVycy4gVGhlCisgICAgICAgIHJ1bGVzIGZvciBpbnRlcnByZXRpbmcg
bW9kaWZpZXJzLCBwcmVjZWRlbmNlLCBhbmQgY29uZmxpY3RzIGFyZQorICAgICAgICBnaXZlbiBp
biB0aGUgZG9jc3RyaW5nIHRvIHRoZSBNb2RpZmllck1hdGNoZXIgY2xhc3MsIHdoaWNoCisgICAg
ICAgIHJldHVybnMgTW9kaWZpZXJNYXRjaFJlc3VsdCBvYmplY3RzLgorICAgICAgICAKKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgcm91dGluZXMgdG8gdGhlIFBvcnQgaW50ZXJmYWNlIGFu
ZCBhCisgICAgICAgIGRlZmF1bHQgc2V0IG9mIHZhbHVlcyBpbiB0aGUgYmFzZSBvYmplY3QsIGlu
IG9yZGVyIHRvIG9idGFpbiB0aGUKKyAgICAgICAgdmFsdWVzIG5lZWRlZCBvbiBhIGdpdmVuIHRl
c3QgcnVuLiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gcGFzc2VkCisgICAgICAgIHRvIHRoZSBleHBl
Y3RhdGlvbiBwYXJzZXIuIFRoaXMgYWxzbyBhbGxvd3MgdXMgdG8gY2xlYW4gdXAgdGhlCisgICAg
ICAgIGxvZ2ljIHVzZWQgdG8gbGludCBhbGwgb2YgdGhlIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
cyBpbiBhCisgICAgICAgIHNpbmdsZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgZmlsZS4KKworICAg
ICAgICBUaGUgbmV4dCBwYXRjaCB3aWxsIG1lcmdlIGluIHRoZSBzZXBhcmF0ZSBHUFUgZXhwZWN0
YXRpb25zIGZpbGUuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMjIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9s
YXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9t
aXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5Ogor
ICAgICAgICAqIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBl
Y3RhdGlvbnMucHk6CisgICAgICAgICogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weToKKwogMjAxMS0wMS0zMSAgVG9ueSBD
aGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvcHJpbnRpbmdfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQppbmRleCAx
MmE3ODZlOTA3NWM3MTk3ZjkzZmIyODhhNzdkOWQ0MzhmYjA3MjY1Li43YWI2ZGE4MWMxODdiZGNh
ZWRkZTEzY2MyMzU1MDNjZDQ0NjZhNWIwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZ191bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmlu
dGluZ191bml0dGVzdC5weQpAQCAtMTQ0LDcgKzE0NCw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgdGVzdCBpbiB0ZXN0c10K
ICAgICAgICAgZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9u
cygKICAgICAgICAgICAgIHNlbGYuX3BvcnQsIHRlc3RfcGF0aHMsIGV4cGVjdGF0aW9uc19zdHIs
Ci0gICAgICAgICAgICBzZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLCBpc19kZWJ1Z19t
b2RlPUZhbHNlLAorICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwK
ICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSkKIAogICAgICAgICBycyA9IHJlc3VsdF9z
dW1tYXJ5LlJlc3VsdFN1bW1hcnkoZXhwZWN0YXRpb25zLCB0ZXN0X3BhdGhzKQpAQCAtMzYzLDcg
KzM2Myw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHRlc3RfcHJpbnRfcHJvZ3Jlc3NfX2RldGFpbGVkKHNlbGYpOgogICAgICAgICB0ZXN0cyA9IFsn
cGFzc2VzL3RleHQuaHRtbCcsICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwnLAogICAg
ICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCddCi0gICAgICAgIGV4
cGVjdGF0aW9ucyA9ICdmYWlsdXJlcy9leHBlY3RlZC90aW1lb3V0Lmh0bWwgPSBUSU1FT1VUJwor
ICAgICAgICBleHBlY3RhdGlvbnMgPSAnQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RpbWVvdXQu
aHRtbCA9IFRJTUVPVVQnCiAKICAgICAgICAgIyBmaXJzdCwgdGVzdCB0aGF0IGl0IGlzIGRpc2Fi
bGVkIHByb3Blcmx5CiAgICAgICAgICMgc2hvdWxkIHN0aWxsIHByaW50IG9uZS1saW5lLXByb2dy
ZXNzCkBAIC01NjksOCArNTY5LDggQEAgY2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXQuZW1wdHkoKSkKIAogICAgICAgICBl
eHBlY3RhdGlvbnMgPSAiIiIKLWZhaWx1cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAot
ZmFpbHVyZXMvZXhwZWN0ZWQvdGltZW91dC5odG1sID0gVElNRU9VVAorQlVHWCA6IGZhaWx1cmVz
L2V4cGVjdGVkL2NyYXNoLmh0bWwgPSBDUkFTSAorQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rp
bWVvdXQuaHRtbCA9IFRJTUVPVVQKICIiIgogICAgICAgICBlcnIucmVzZXQoKQogICAgICAgICBv
dXQucmVzZXQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpp
bmRleCBhY2FkY2IzZmFlMWQ1Y2NmMDUyOTBjYmFjOWNkNmU0MmY5NzUzNjc0Li44ZTI0ZTMxNTNm
NjFiMWE5YjNlNDc0MWI4NjMzMDAzNzVjZDc1ZTc4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtMzEsNiArMzEsNyBAQAogZm9yIGxheW91dCB0ZXN0
cy4KICIiIgogCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHJlCiAK
QEAgLTg0LDE4ICs4NSwxNiBAQCBkZWYgcmVtb3ZlX3BpeGVsX2ZhaWx1cmVzKGV4cGVjdGVkX3Jl
c3VsdHMpOgogY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKICAgICBURVNUX0xJU1QgPSAidGVzdF9l
eHBlY3RhdGlvbnMudHh0IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIHRlc3RzLCBl
eHBlY3RhdGlvbnMsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgICAgICAgaXNfZGVi
dWdfbW9kZSwgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfY29uZmlnLAorICAgICAgICAg
ICAgICAgICBpc19saW50X21vZGUsIG92ZXJyaWRlcz1Ob25lKToKICAgICAgICAgIiIiTG9hZHMg
YW5kIHBhcnNlcyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZ2l2ZW4gaW4gdGhlIHN0cmluZy4KICAg
ICAgICAgQXJnczoKICAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBvYmplY3QgY29udGFpbmlu
ZyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5CiAgICAgICAgICAgICB0ZXN0czogbGlz
dCBvZiBhbGwgb2YgdGhlIHRlc3QgZmlsZXMKICAgICAgICAgICAgIGV4cGVjdGF0aW9uczogdGVz
dCBleHBlY3RhdGlvbnMgYXMgYSBzdHJpbmcKLSAgICAgICAgICAgIHRlc3RfcGxhdGZvcm1fbmFt
ZTogbmFtZSBvZiB0aGUgcGxhdGZvcm0gdG8gbWF0Y2ggZXhwZWN0YXRpb25zCi0gICAgICAgICAg
ICAgICAgYWdhaW5zdC4gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGRpZmZlcmVudCB0aGFuCi0gICAg
ICAgICAgICAgICAgcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSB3aGVuIGlzX2xpbnRfbW9kZSBp
cyBUcnVlLgotICAgICAgICAgICAgaXNfZGVidWdfbW9kZTogd2hldGhlciB0byB1c2UgdGhlIERF
QlVHIG9yIFJFTEVBU0UgbW9kaWZpZXJzCi0gICAgICAgICAgICAgICAgaW4gdGhlIGV4cGVjdGF0
aW9ucworICAgICAgICAgICAgdGVzdF9jb25maWc6IHNwZWNpZmljIHZhbHVlcyB0byBjaGVjayBh
Z2FpbnN0IHdoZW4KKyAgICAgICAgICAgICAgICBwYXJzaW5nIHRoZSBmaWxlICh1c3VhbGx5IHBv
cnQudGVzdF9jb25maWcoKSwKKyAgICAgICAgICAgICAgICBidXQgbWF5IGJlIGRpZmZlcmVudCB3
aGVuIGxpbnRpbmcgb3IgZG9pbmcgb3RoZXIgdGhpbmdzKS4KICAgICAgICAgICAgIGlzX2xpbnRf
bW9kZTogSWYgVHJ1ZSwganVzdCBwYXJzZSB0aGUgZXhwZWN0YXRpb25zIHN0cmluZwogICAgICAg
ICAgICAgICAgIGxvb2tpbmcgZm9yIGVycm9ycy4KICAgICAgICAgICAgIG92ZXJyaWRlczogdGVz
dCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSBhbnkKQEAgLTEwNCw3
ICsxMDMsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zOgogICAgICAgICAgICAgICAgIGFuZCBk
b3duc3RyZWFtIGV4cGVjdGF0aW9ucykuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9leHBl
Y3RlZF9mYWlsdXJlcyA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlKHBvcnQsIGV4cGVjdGF0aW9ucywK
LSAgICAgICAgICAgIHRlc3RzLCB0ZXN0X3BsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGUsIGlz
X2xpbnRfbW9kZSwKKyAgICAgICAgICAgIHRlc3RzLCB0ZXN0X2NvbmZpZywgaXNfbGludF9tb2Rl
LAogICAgICAgICAgICAgb3ZlcnJpZGVzPW92ZXJyaWRlcykKIAogICAgICMgVE9ETyhvamFuKTog
QWxsb3cgZm9yIHJlbW92aW5nIHNraXBwZWQgdGVzdHMgd2hlbiBnZXR0aW5nIHRoZSBsaXN0IG9m
CkBAIC0xOTcsNyArMTk2LDcgQEAgY2xhc3MgUGFyc2VFcnJvcihFeGNlcHRpb24pOgogICAgICAg
ICByZXR1cm4gJ1xuJy5qb2luKG1hcChzdHIsIHNlbGYuZXJyb3JzKSkKIAogICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQYXJzZUVycm9yKGZhdGFsPSVzLCBlcnJvcnM9
JXMpJyAlIChmYXRhbCwgZXJyb3JzKQorICAgICAgICByZXR1cm4gJ1BhcnNlRXJyb3IoZmF0YWw9
JXMsIGVycm9ycz0lcyknICUgKHNlbGYuZmF0YWwsIHNlbGYuZXJyb3JzKQogCiAKIGNsYXNzIE1v
ZGlmaWVyc0FuZEV4cGVjdGF0aW9uczoKQEAgLTMwMiwyOSArMzAxLDE1IEBAIGNsYXNzIFRlc3RF
eHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgICAgICAgICAnZmFpbCc6IEZBSUwsCiAgICAg
ICAgICAgICAgICAgICAgICdmbGFreSc6IEZMQUtZfQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBvcnQsIGV4cGVjdGF0aW9ucywgZnVsbF90ZXN0X2xpc3QsIHRlc3RfcGxhdGZvcm1fbmFtZSwK
LSAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCBvdmVycmlkZXM9Tm9uZSk6Ci0g
ICAgICAgICIiIgotICAgICAgICBleHBlY3RhdGlvbnM6IENvbnRlbnRzIG9mIHRoZSBleHBlY3Rh
dGlvbnMgZmlsZQotICAgICAgICBmdWxsX3Rlc3RfbGlzdDogVGhlIGxpc3Qgb2YgYWxsIHRlc3Rz
IHRvIGJlIHJ1biBwZW5kaW5nIHByb2Nlc3Npbmcgb2YKLSAgICAgICAgICAgIHRoZSBleHBlY3Rp
b25zIGZvciB0aG9zZSB0ZXN0cy4KLSAgICAgICAgdGVzdF9wbGF0Zm9ybV9uYW1lOiBuYW1lIG9m
IHRoZSBwbGF0Zm9ybSB0byBtYXRjaCBleHBlY3RhdGlvbnMKLSAgICAgICAgICAgIGFnYWluc3Qu
IE5vdGUgdGhhdCB0aGlzIG1heSBiZSBkaWZmZXJlbnQgdGhhbgotICAgICAgICAgICAgcG9ydC50
ZXN0X3BsYXRmb3JtX25hbWUoKSB3aGVuIGlzX2xpbnRfbW9kZSBpcyBUcnVlLgotICAgICAgICBp
c19kZWJ1Z19tb2RlOiBXaGV0aGVyIHdlIHRlc3RpbmcgYSB0ZXN0X3NoZWxsIGJ1aWx0IGRlYnVn
IG1vZGUuCi0gICAgICAgIGlzX2xpbnRfbW9kZTogV2hldGhlciB0aGlzIGlzIGp1c3QgbGludGlu
ZyB0ZXN0X2V4cGVjYXRhdGlvbnMudHh0LgotICAgICAgICBvdmVycmlkZXM6IHRlc3QgZXhwZWN0
YXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgYW55Ci0gICAgICAgICAgICBlbnRy
aWVzIGluIHxleHBlY3RhdGlvbnN8LiBUaGlzIGlzIHVzZWQgYnkgY2FsbGVycwotICAgICAgICAg
ICAgdGhhdCBuZWVkIHRvIG1hbmFnZSB0d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVw
c3RyZWFtCi0gICAgICAgICAgICBhbmQgZG93bnN0cmVhbSBleHBlY3RhdGlvbnMpLgotICAgICAg
ICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rl
c3RfbGlzdCwKKyAgICAgICAgICAgICAgICAgdGVzdF9jb25maWcsIGlzX2xpbnRfbW9kZSwgb3Zl
cnJpZGVzPU5vbmUpOgorICAgICAgICAjIFNlZSBhcmd1bWVudCBkb2N1bWVudGF0aW9uIGluIFRl
c3RFeHBlY3RhdGlvbigpLCBhYm92ZS4KIAogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAogICAg
ICAgICBzZWxmLl9mcyA9IHBvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5fZXhwZWN0YXRp
b25zID0gZXhwZWN0YXRpb25zCiAgICAgICAgIHNlbGYuX2Z1bGxfdGVzdF9saXN0ID0gZnVsbF90
ZXN0X2xpc3QKLSAgICAgICAgc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lID0gdGVzdF9wbGF0Zm9y
bV9uYW1lCi0gICAgICAgIHNlbGYuX2lzX2RlYnVnX21vZGUgPSBpc19kZWJ1Z19tb2RlCisgICAg
ICAgIHNlbGYuX3Rlc3RfY29uZmlnID0gdGVzdF9jb25maWcKICAgICAgICAgc2VsZi5faXNfbGlu
dF9tb2RlID0gaXNfbGludF9tb2RlCiAgICAgICAgIHNlbGYuX292ZXJyaWRlcyA9IG92ZXJyaWRl
cwogICAgICAgICBzZWxmLl9lcnJvcnMgPSBbXQpAQCAtMzMyLDcgKzMxNyw5IEBAIGNsYXNzIFRl
c3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgICAgICMgTWFwcyByZWxhdGl2ZSB0ZXN0IHBhdGhz
IGFzIGxpc3RlZCBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUgdG8gYQogICAgICAgICAjIGxpc3Qg
b2YgbWFwcyBjb250YWluaW5nIG1vZGlmaWVycyBhbmQgZXhwZWN0YXRpb25zIGZvciBlYWNoIHRp
bWUKLSAgICAgICAgIyB0aGUgdGVzdCBpcyBsaXN0ZWQgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxl
LgorICAgICAgICAjIHRoZSB0ZXN0IGlzIGxpc3RlZCBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUu
IFdlIHVzZSB0aGlzIHRvCisgICAgICAgICMga2VlcCBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBl
bnRpcmUgbGlzdCBvZiBleHBlY3RhdGlvbnMsIGV2ZW4KKyAgICAgICAgIyBpbnZhbGlkIG9uZXMu
CiAgICAgICAgIHNlbGYuX2FsbF9leHBlY3RhdGlvbnMgPSB7fQogCiAgICAgICAgICMgTWFwcyBh
IHRlc3QgdG8gaXRzIGxpc3Qgb2YgZXhwZWN0YXRpb25zLgpAQCAtMzQ1LDcgKzMzMiw4IEBAIGNs
YXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAjIHRoZSBvcHRpb25zIG1pbnVzIGFu
eSBidWcgb3IgcGxhdGZvcm0gc3RyaW5ncwogICAgICAgICBzZWxmLl90ZXN0X3RvX21vZGlmaWVy
cyA9IHt9CiAKLSAgICAgICAgIyBNYXBzIGEgdGVzdCB0byB0aGUgYmFzZSBwYXRoIHRoYXQgaXQg
d2FzIGxpc3RlZCB3aXRoIGluIHRoZSBsaXN0LgorICAgICAgICAjIE1hcHMgYSB0ZXN0IHRvIHRo
ZSBiYXNlIHBhdGggdGhhdCBpdCB3YXMgbGlzdGVkIHdpdGggaW4gdGhlIGxpc3QgYW5kCisgICAg
ICAgICMgdGhlIG51bWJlciBvZiBtYXRjaGVzIHRoYXQgYmFzZSBwYXRoIGhhZC4KICAgICAgICAg
c2VsZi5fdGVzdF9saXN0X3BhdGhzID0ge30KIAogICAgICAgICBzZWxmLl9tb2RpZmllcl90b190
ZXN0cyA9IHNlbGYuX2RpY3Rfb2Zfc2V0cyhzZWxmLk1PRElGSUVSUykKQEAgLTM3MiwxMyArMzYw
LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICBkZWYgX2hhbmRsZV9hbnlf
cmVhZF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMpIG9yIGxlbihz
ZWxmLl9ub25fZmF0YWxfZXJyb3JzKToKLSAgICAgICAgICAgIGlmIHNlbGYuX2lzX2RlYnVnX21v
ZGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRfdHlwZSA9ICdERUJVRycKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgYnVpbGRfdHlwZSA9ICdSRUxFQVNFJwotICAgICAgICAgICAg
X2xvZy5lcnJvcignJykKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZBSUxVUkVTIEZPUiBQTEFU
Rk9STTogJXMsIEJVSUxEX1RZUEU6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgIChzZWxm
Ll90ZXN0X3BsYXRmb3JtX25hbWUudXBwZXIoKSwgYnVpbGRfdHlwZSkpCisgICAgICAgICAgICBf
bG9nLmVycm9yKCJGQUlMVVJFUyBGT1IgJXMiICUgc3RyKHNlbGYuX3Rlc3RfY29uZmlnKSkKIAog
ICAgICAgICAgICAgZm9yIGVycm9yIGluIHNlbGYuX2Vycm9yczoKICAgICAgICAgICAgICAgICBf
bG9nLmVycm9yKGVycm9yKQpAQCAtMzk0LDExICszNzYsMTIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0
aW9uc0ZpbGU6CiAgICAgICAgIGV4cGVjdGF0aW9ucyA9IHNldChbUEFTU10pCiAgICAgICAgIG9w
dGlvbnMgPSBbXQogICAgICAgICBtb2RpZmllcnMgPSBbXQorICAgICAgICBudW1fbWF0Y2hlcyA9
IDAKICAgICAgICAgaWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CiAgICAgICAgICAgICBmb3IgdGVz
dCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKICAgICAgICAgICAgICAgICBpZiBub3QgdGVzdCBp
biBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF90
ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ9RmFsc2UpCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgbnVtX21hdGNoZXMsIGV4cGVjdGF0aW9u
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucywgb3ZlcnJpZGVz
X2FsbG93ZWQ9RmFsc2UpCiAKICAgICBkZWYgX2RpY3Rfb2Zfc2V0cyhzZWxmLCBzdHJpbmdzX3Rv
X2NvbnN0YW50cyk6CiAgICAgICAgICIiIlRha2VzIGEgZGljdCBvZiBzdHJpbmdzLT5jb25zdGFu
dHMgYW5kIHJldHVybnMgYSBkaWN0IG1hcHBpbmcKQEAgLTUwNSw3ICs0ODgsOCBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJyAgbmV3OiAl
cycsIG5ld19saW5lKQogICAgICAgICAgICAgZWxpZiBhY3Rpb24gPT0gQUREX1BMQVRGT1JNU19F
WENFUFRfVEhJUzoKICAgICAgICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKQotICAg
ICAgICAgICAgICAgIG5ld19vcHRpb25zID0gcGFydHNbMF0KKyAgICAgICAgICAgICAgICBfbG9n
LmluZm8oJ1Rlc3QgdXBkYXRlZDogJykKKyAgICAgICAgICAgICAgICBfbG9nLmluZm8oJyAgb2xk
OiAlcycsIGxpbmUpCiAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5fcG9ydC50ZXN0X3Bs
YXRmb3JtX25hbWVzKCk6CiAgICAgICAgICAgICAgICAgICAgIHAgPSBwLnVwcGVyKCkKICAgICAg
ICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgdGVtcCBzb2x1dGlvbiBmb3IgcmViYXNlbGluaW5n
IHRvb2wuCkBAIC01MTUsMTMgKzQ5OSwxMSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToK
ICAgICAgICAgICAgICAgICAgICAgIyBUT0RPKHZpY3RvcncpOiBSZW1vdmUgV0lOLVZJU1RBIGFu
ZCBXSU4tNyBvbmNlIHdlIGhhdmUKICAgICAgICAgICAgICAgICAgICAgIyByZWxpYWJsZSBXaW4g
NyBhbmQgV2luIFZpc3RhIGJ1aWxkYm90cyBzZXR1cC4KICAgICAgICAgICAgICAgICAgICAgaWYg
bm90IHAgaW4gKHBsYXRmb3JtLnVwcGVyKCksICdXSU4tVklTVEEnLCAnV0lOLTcnKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld19vcHRpb25zICs9IHAgKyAnICcKLSAgICAgICAgICAgICAg
ICBuZXdfbGluZSA9ICgnJXM6JXMnICUgKG5ld19vcHRpb25zLCBwYXJ0c1sxXSkpCi0gICAgICAg
ICAgICAgICAgZl9uZXcuYXBwZW5kKG5ld19saW5lKQorICAgICAgICAgICAgICAgICAgICAgICAg
bmV3X29wdGlvbnMgPSBwYXJ0c1swXSArIHAgKyAnICcKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5ld19saW5lID0gKCclczolcycgJSAobmV3X29wdGlvbnMsIHBhcnRzWzFdKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGZfbmV3LmFwcGVuZChuZXdfbGluZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIF9sb2cuaW5mbygnICBuZXc6ICVzJywgbmV3X2xpbmUpCiAgICAgICAgICAgICAgICAg
dGVzdHNfdXBkYXRlZCArPSAxCi0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCdUZXN0IHVwZGF0
ZWQ6ICcpCi0gICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcgIG9sZDogJXMnLCBsaW5lKQotICAg
ICAgICAgICAgICAgIF9sb2cuaW5mbygnICBuZXc6ICVzJywgbmV3X2xpbmUpCiAKICAgICAgICAg
X2xvZy5pbmZvKCdUb3RhbCB0ZXN0cyByZW1vdmVkOiAlZCcsIHRlc3RzX3JlbW92ZWQpCiAgICAg
ICAgIF9sb2cuaW5mbygnVG90YWwgdGVzdHMgdXBkYXRlZDogJWQnLCB0ZXN0c191cGRhdGVkKQpA
QCAtNTM3LDEyICs1MTksMTUgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICAg
ICAgb3B0aW9ucyA9IFtdCiAgICAgICAgIGlmIGxpbmUuZmluZCgiOiIpIGlzIC0xOgotICAgICAg
ICAgICAgdGVzdF9hbmRfZXhwZWN0YXRpb24gPSBsaW5lLnNwbGl0KCI9IikKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgiOiIpCi0gICAgICAgICAgICBvcHRp
b25zID0gc2VsZi5fZ2V0X29wdGlvbnNfbGlzdChwYXJ0c1swXSkKLSAgICAgICAgICAgIHRlc3Rf
YW5kX2V4cGVjdGF0aW9uID0gcGFydHNbMV0uc3BsaXQoJz0nKQorICAgICAgICAgICAgc2VsZi5f
YWRkX2Vycm9yKGxpbmVubywgIk1pc3NpbmcgYSAnOiciLCBsaW5lKQorICAgICAgICAgICAgcmV0
dXJuIChOb25lLCBOb25lLCBOb25lKQogCisgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgnOicp
CisKKyAgICAgICAgIyBGSVhNRTogdmVyaWZ5IHRoYXQgdGhlcmUgaXMgZXhhY3RseSBvbmUgY29s
b24gaW4gdGhlIGxpbmUuCisKKyAgICAgICAgb3B0aW9ucyA9IHNlbGYuX2dldF9vcHRpb25zX2xp
c3QocGFydHNbMF0pCisgICAgICAgIHRlc3RfYW5kX2V4cGVjdGF0aW9uID0gcGFydHNbMV0uc3Bs
aXQoJz0nKQogICAgICAgICB0ZXN0ID0gdGVzdF9hbmRfZXhwZWN0YXRpb25bMF0uc3RyaXAoKQog
ICAgICAgICBpZiAobGVuKHRlc3RfYW5kX2V4cGVjdGF0aW9uKSBpcyBub3QgMik6CiAgICAgICAg
ICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAiTWlzc2luZyBleHBlY3RhdGlvbnMuIiwKQEAg
LTU4OCw2OSArNTczLDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICAgICAg
cmV0dXJuIFJFTU9WRV9URVNUCiAKLSAgICBkZWYgX2hhc192YWxpZF9tb2RpZmllcnNfZm9yX2N1
cnJlbnRfcGxhdGZvcm0oc2VsZiwgb3B0aW9ucywgbGluZW5vLAotICAgICAgICB0ZXN0X2FuZF9l
eHBlY3RhdGlvbnMsIG1vZGlmaWVycyk6Ci0gICAgICAgICIiIlJldHVybnMgdHJ1ZSBpZiB0aGUg
Y3VycmVudCBwbGF0Zm9ybSBpcyBpbiB0aGUgb3B0aW9ucyBsaXN0IG9yIGlmCi0gICAgICAgIG5v
IHBsYXRmb3JtcyBhcmUgbGlzdGVkIGFuZCBpZiB0aGVyZSBhcmUgbm8gZmF0YWwgZXJyb3JzIGlu
IHRoZQotICAgICAgICBvcHRpb25zIGxpc3QuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBv
cHRpb25zOiBMaXN0IG9mIGxvd2VyY2FzZSBvcHRpb25zLgotICAgICAgICAgIGxpbmVubzogVGhl
IGxpbmUgaW4gdGhlIGZpbGUgd2hlcmUgdGhlIHRlc3QgaXMgbGlzdGVkLgotICAgICAgICAgIHRl
c3RfYW5kX2V4cGVjdGF0aW9uczogVGhlIHBhdGggYW5kIGV4cGVjdGF0aW9ucyBmb3IgdGhlIHRl
c3QuCi0gICAgICAgICAgbW9kaWZpZXJzOiBUaGUgc2V0IHRvIHBvcHVsYXRlIHdpdGggbW9kaWZp
ZXJzLgotICAgICAgICAiIiIKLSAgICAgICAgaGFzX2FueV9wbGF0Zm9ybSA9IEZhbHNlCi0gICAg
ICAgIGhhc19idWdfaWQgPSBGYWxzZQotICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6Ci0g
ICAgICAgICAgICBpZiBvcHRpb24gaW4gc2VsZi5NT0RJRklFUlM6Ci0gICAgICAgICAgICAgICAg
bW9kaWZpZXJzLmFkZChvcHRpb24pCi0gICAgICAgICAgICBlbGlmIG9wdGlvbiBpbiBzZWxmLl9w
b3J0LnRlc3RfcGxhdGZvcm1fbmFtZXMoKToKLSAgICAgICAgICAgICAgICBoYXNfYW55X3BsYXRm
b3JtID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiByZS5tYXRjaChyJ2J1Z1xkJywgb3B0aW9uKSAh
PSBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICdCdWcgbXVz
dCBiZSBlaXRoZXIgQlVHQ1IsIEJVR1dLLCBvciBCVUdWOF8gZm9yIHRlc3Q6ICVzJyAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiwgdGVzdF9hbmRfZXhwZWN0YXRpb25z
KQotICAgICAgICAgICAgZWxpZiBvcHRpb24uc3RhcnRzd2l0aCgnYnVnJyk6Ci0gICAgICAgICAg
ICAgICAgaGFzX2J1Z19pZCA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgb3B0aW9uIG5vdCBpbiBz
ZWxmLkJVSUxEX1RZUEVTOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8s
ICdJbnZhbGlkIG1vZGlmaWVyIGZvciB0ZXN0OiAlcycgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcHRpb24sIHRlc3RfYW5kX2V4cGVjdGF0aW9ucykKLQotICAgICAgICBpZiBo
YXNfYW55X3BsYXRmb3JtIGFuZCBub3Qgc2VsZi5fbWF0Y2hfcGxhdGZvcm0ob3B0aW9ucyk6Ci0g
ICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBpZiBub3QgaGFzX2J1Z19pZCBhbmQg
J3dvbnRmaXgnIG5vdCBpbiBvcHRpb25zOgotICAgICAgICAgICAgIyBUT0RPKG9qYW4pOiBUdXJu
IHRoaXMgaW50byBhbiBBZGRFcnJvciBjYWxsIG9uY2UgYWxsIHRoZQotICAgICAgICAgICAgIyB0
ZXN0cyBoYXZlIEJVRyBpZGVudGlmaWVycy4KLSAgICAgICAgICAgIHNlbGYuX2xvZ19ub25fZmF0
YWxfZXJyb3IobGluZW5vLCAnVGVzdCBsYWNrcyBCVUcgbW9kaWZpZXIuJywKLSAgICAgICAgICAg
ICAgICB0ZXN0X2FuZF9leHBlY3RhdGlvbnMpCi0KLSAgICAgICAgaWYgJ3JlbGVhc2UnIGluIG9w
dGlvbnMgb3IgJ2RlYnVnJyBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgc2VsZi5faXNfZGVi
dWdfbW9kZSBhbmQgJ2RlYnVnJyBub3QgaW4gb3B0aW9uczoKLSAgICAgICAgICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19kZWJ1Z19tb2RlIGFuZCAncmVs
ZWFzZScgbm90IGluIG9wdGlvbnM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICAgICAgaWYgc2VsZi5faXNfbGludF9tb2RlIGFuZCAncmViYXNlbGluZScgaW4gb3B0aW9uczoK
LSAgICAgICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCi0gICAgICAgICAgICAgICAgJ1JF
QkFTRUxJTkUgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgcnVubmluZyByZWJhc2VsaW5lLnB5LiAn
Ci0gICAgICAgICAgICAgICAgJ0Nhbm5vdCBiZSBjaGVja2VkIGluLicsIHRlc3RfYW5kX2V4cGVj
dGF0aW9ucykKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9tYXRjaF9wbGF0Zm9y
bShzZWxmLCBvcHRpb25zKToKLSAgICAgICAgIiIiTWF0Y2ggdGhlIGxpc3Qgb2Ygb3B0aW9ucyBh
Z2FpbnN0IG91ciBzcGVjaWZpZWQgcGxhdGZvcm0uIElmIGFueQotICAgICAgICBvZiB0aGUgb3B0
aW9ucyBwcmVmaXgtbWF0Y2ggc2VsZi5fcGxhdGZvcm0sIHJldHVybiBUcnVlLiBUaGlzIGhhbmRs
ZXMKLSAgICAgICAgdGhlIGNhc2Ugd2hlcmUgYSB0ZXN0IGlzIG1hcmtlZCBXSU4gYW5kIHRoZSBw
bGF0Zm9ybSBpcyBXSU4tVklTVEEuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBvcHRpb25z
OiBsaXN0IG9mIG9wdGlvbnMKLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBvcHQgaW4gb3B0aW9u
czoKLSAgICAgICAgICAgIGlmIHNlbGYuX3Rlc3RfcGxhdGZvcm1fbmFtZS5zdGFydHN3aXRoKG9w
dCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0K
ICAgICBkZWYgX2FkZF90b19hbGxfZXhwZWN0YXRpb25zKHNlbGYsIHRlc3QsIG9wdGlvbnMsIGV4
cGVjdGF0aW9ucyk6CiAgICAgICAgICMgTWFrZSBhbGwgcGF0aHMgdW5peC1zdHlsZSBzbyB0aGUg
ZGFzaGJvYXJkIGRvZXNuJ3QgbmVlZCB0by4KICAgICAgICAgdGVzdCA9IHRlc3QucmVwbGFjZSgn
XFwnLCAnLycpCkBAIC02NjMsNTQgKzU4NSw0MyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmls
ZToKICAgICAgICAgIiIiRm9yIGVhY2ggdGVzdCBpbiBhbiBleHBlY3RhdGlvbnMgaXRlcmFibGUs
IGdlbmVyYXRlIHRoZQogICAgICAgICBleHBlY3RhdGlvbnMgZm9yIGl0LiIiIgogICAgICAgICBs
aW5lbm8gPSAwCisgICAgICAgIG1hdGNoZXIgPSBNb2RpZmllck1hdGNoZXIoc2VsZi5fdGVzdF9j
b25maWcpCiAgICAgICAgIGZvciBsaW5lIGluIGV4cGVjdGF0aW9uczoKICAgICAgICAgICAgIGxp
bmVubyArPSAxCisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2xpbmUobGluZSwgbGluZW5vLCBt
YXRjaGVyLCBvdmVycmlkZXNfYWxsb3dlZCkKIAotICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgs
IG9wdGlvbnMsIGV4cGVjdGF0aW9ucyA9IFwKLSAgICAgICAgICAgICAgICBzZWxmLnBhcnNlX2V4
cGVjdGF0aW9uc19saW5lKGxpbmUsIGxpbmVubykKLSAgICAgICAgICAgIGlmIG5vdCBleHBlY3Rh
dGlvbnM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICBkZWYgX3Byb2Nlc3NfbGluZShz
ZWxmLCBsaW5lLCBsaW5lbm8sIG1hdGNoZXIsIG92ZXJyaWRlc19hbGxvd2VkKToKKyAgICAgICAg
dGVzdF9saXN0X3BhdGgsIG9wdGlvbnMsIGV4cGVjdGF0aW9ucyA9IFwKKyAgICAgICAgICAgIHNl
bGYucGFyc2VfZXhwZWN0YXRpb25zX2xpbmUobGluZSwgbGluZW5vKQorICAgICAgICBpZiBub3Qg
ZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAgIHNlbGYuX2Fk
ZF90b19hbGxfZXhwZWN0YXRpb25zKHRlc3RfbGlzdF9wYXRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4ob3B0aW9ucykudXBwZXIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIi5qb2luKGV4cGVjdGF0aW9u
cykudXBwZXIoKSkKKyAgICAgICAgc2VsZi5fYWRkX3RvX2FsbF9leHBlY3RhdGlvbnModGVzdF9s
aXN0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpv
aW4ob3B0aW9ucykudXBwZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICIuam9pbihleHBlY3RhdGlvbnMpLnVwcGVyKCkpCiAKLSAgICAgICAgICAgIG1vZGlm
aWVycyA9IHNldCgpCi0gICAgICAgICAgICBpZiBvcHRpb25zIGFuZCBub3Qgc2VsZi5faGFzX3Zh
bGlkX21vZGlmaWVyc19mb3JfY3VycmVudF9wbGF0Zm9ybSgKLSAgICAgICAgICAgICAgICBvcHRp
b25zLCBsaW5lbm8sIHRlc3RfbGlzdF9wYXRoLCBtb2RpZmllcnMpOgotICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgIG51bV9tYXRjaGVzID0gc2VsZi5fY2hlY2tfb3B0aW9ucyhtYXRj
aGVyLCBvcHRpb25zLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgaWYgbnVtX21hdGNoZXMgPT0gTW9kaWZp
ZXJNYXRjaGVyLk5PX01BVENIOgorICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAgIGV4
cGVjdGF0aW9ucyA9IHNlbGYuX3BhcnNlX2V4cGVjdGF0aW9ucyhleHBlY3RhdGlvbnMsIGxpbmVu
bywKLSAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgZXhwZWN0YXRpb25z
ID0gc2VsZi5fcGFyc2VfZXhwZWN0YXRpb25zKGV4cGVjdGF0aW9ucywgbGluZW5vLAorICAgICAg
ICAgICAgdGVzdF9saXN0X3BhdGgpCiAKLSAgICAgICAgICAgIGlmICdzbG93JyBpbiBvcHRpb25z
IGFuZCBUSU1FT1VUIGluIGV4cGVjdGF0aW9uczoKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRf
ZXJyb3IobGluZW5vLAotICAgICAgICAgICAgICAgICAgICAnQSB0ZXN0IGNhbiBub3QgYmUgYm90
aCBzbG93IGFuZCB0aW1lb3V0LiBJZiBpdCB0aW1lcyBvdXQgJwotICAgICAgICAgICAgICAgICAg
ICAnaW5kZWZpbml0ZWx5LCB0aGVuIGl0IHNob3VsZCBiZSBqdXN0IHRpbWVvdXQuJywKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisgICAgICAgIHNlbGYuX2NoZWNrX29wdGlv
bnNfYWdhaW5zdF9leHBlY3RhdGlvbnMob3B0aW9ucywgZXhwZWN0YXRpb25zLAorICAgICAgICAg
ICAgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCkKIAotICAgICAgICAgICAgZnVsbF9wYXRoID0gc2Vs
Zi5fZnMuam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAgICBmdWxs
X3BhdGggPSBzZWxmLl9mcy5ub3JtcGF0aChmdWxsX3BhdGgpCi0gICAgICAgICAgICAjIFdlYktp
dCdzIHdheSBvZiBza2lwcGluZyB0ZXN0cyBpcyB0byBhZGQgYSAtZGlzYWJsZWQgc3VmZml4Lgot
ICAgICAgICAgICAgIyBTbyB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIHBhdGggZXhpc3RpbmcgaWYg
dGhlIHBhdGggb3IgdGhlCi0gICAgICAgICAgICAjIC1kaXNhYmxlZCB2ZXJzaW9uIGV4aXN0cy4K
LSAgICAgICAgICAgIGlmIChub3Qgc2VsZi5fcG9ydC5wYXRoX2V4aXN0cyhmdWxsX3BhdGgpCi0g
ICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLl9wb3J0LnBhdGhfZXhpc3RzKGZ1bGxfcGF0aCAr
ICctZGlzYWJsZWQnKSk6Ci0gICAgICAgICAgICAgICAgIyBMb2cgYSBub24gZmF0YWwgZXJyb3Ig
aGVyZSBzaW5jZSB5b3UgaGl0IHRoaXMgY2FzZSBhbnkKLSAgICAgICAgICAgICAgICAjIHRpbWUg
eW91IHVwZGF0ZSB0ZXN0X2V4cGVjdGF0aW9ucy50eHQgd2l0aG91dCBzeW5jaW5nCi0gICAgICAg
ICAgICAgICAgIyB0aGUgTGF5b3V0VGVzdHMgZGlyZWN0b3J5Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdQYXRoIGRvZXMgbm90IGV4aXN0LicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBzZWxmLl9jaGVja19wYXRoX2RvZXNf
bm90X2V4aXN0KGxpbmVubywgdGVzdF9saXN0X3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuCiAK
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKLSAgICAgICAgICAgICAg
ICB0ZXN0cyA9IFt0ZXN0X2xpc3RfcGF0aF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgdGVzdHMgPSBzZWxmLl9leHBhbmRfdGVzdHModGVzdF9saXN0X3BhdGgpCisgICAgICAg
IGlmIG5vdCBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKKyAgICAgICAgICAgIHRlc3RzID0gW3Rlc3Rf
bGlzdF9wYXRoXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMgPSBzZWxmLl9leHBh
bmRfdGVzdHModGVzdF9saXN0X3BhdGgpCiAKLSAgICAgICAgICAgIHNlbGYuX2FkZF90ZXN0cyh0
ZXN0cywgZXhwZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbW9kaWZpZXJzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCkKKyAg
ICAgICAgbW9kaWZpZXJzID0gW28gZm9yIG8gaW4gb3B0aW9ucyBpZiBvIGluIHNlbGYuTU9ESUZJ
RVJTXQorICAgICAgICBzZWxmLl9hZGRfdGVzdHModGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9s
aXN0X3BhdGgsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgbnVt
X21hdGNoZXMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKQogCiAgICAgZGVmIF9nZXRfb3B0
aW9uc19saXN0KHNlbGYsIGxpc3RTdHJpbmcpOgogICAgICAgICByZXR1cm4gW3BhcnQuc3RyaXAo
KS5sb3dlcigpIGZvciBwYXJ0IGluIGxpc3RTdHJpbmcuc3RyaXAoKS5zcGxpdCgnICcpXQpAQCAt
NzI2LDYgKzYzNyw2NiBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAg
IHJlc3VsdC5hZGQoZXhwZWN0YXRpb24pCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRl
ZiBfY2hlY2tfb3B0aW9ucyhzZWxmLCBtYXRjaGVyLCBvcHRpb25zLCBsaW5lbm8sIHRlc3RfbGlz
dF9wYXRoKToKKyAgICAgICAgbWF0Y2hfcmVzdWx0ID0gc2VsZi5fY2hlY2tfc3ludGF4KG1hdGNo
ZXIsIG9wdGlvbnMsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfbGlzdF9wYXRoKQorICAgICAgICBzZWxmLl9jaGVja19zZW1hbnRpY3Mob3B0
aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgcmV0dXJuIG1hdGNoX3Jlc3Vs
dC5udW1fbWF0Y2hlcworCisgICAgZGVmIF9jaGVja19zeW50YXgoc2VsZiwgbWF0Y2hlciwgb3B0
aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6CisgICAgICAgIG1hdGNoX3Jlc3VsdCA9IG1h
dGNoZXIubWF0Y2gob3B0aW9ucykKKyAgICAgICAgZm9yIGVycm9yIGluIG1hdGNoX3Jlc3VsdC5l
cnJvcnM6CisgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCBlcnJvciwgdGVzdF9s
aXN0X3BhdGgpCisgICAgICAgIGZvciB3YXJuaW5nIGluIG1hdGNoX3Jlc3VsdC53YXJuaW5nczoK
KyAgICAgICAgICAgIHNlbGYuX2xvZ19ub25fZmF0YWxfZXJyb3IobGluZW5vLCB3YXJuaW5nLCB0
ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgcmV0dXJuIG1hdGNoX3Jlc3VsdAorCisgICAgZGVmIF9j
aGVja19zZW1hbnRpY3Moc2VsZiwgb3B0aW9ucywgbGluZW5vLCB0ZXN0X2xpc3RfcGF0aCk6Cisg
ICAgICAgIGhhc193b250Zml4ID0gJ3dvbnRmaXgnIGluIG9wdGlvbnMKKyAgICAgICAgaGFzX2J1
ZyA9IEZhbHNlCisgICAgICAgIGZvciBvcHQgaW4gb3B0aW9uczoKKyAgICAgICAgICAgIGlmIG9w
dC5zdGFydHN3aXRoKCdidWcnKToKKyAgICAgICAgICAgICAgICBoYXNfYnVnID0gVHJ1ZQorICAg
ICAgICAgICAgICAgIGlmIHJlLm1hdGNoKCdidWdcZCsnLCBvcHQpOgorICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0JV
R1xkKyBpcyBub3QgYWxsb3dlZCwgbXVzdCBiZSBvbmUgb2YgJworICAgICAgICAgICAgICAgICAg
ICAgICAgJ0JVR0NSXGQrLCBCVUdXS1xkKywgQlVHVjhfXGQrLCAnCisgICAgICAgICAgICAgICAg
ICAgICAgICAnb3IgYSBub24tbnVtZXJpYyBidWcgaWRlbnRpZmllci4nLCB0ZXN0X2xpc3RfcGF0
aCkKKworICAgICAgICBpZiBub3QgaGFzX2J1ZyBhbmQgbm90IGhhc193b250Zml4OgorICAgICAg
ICAgICAgc2VsZi5fbG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdUZXN0IGxhY2tzIEJVRyBt
b2RpZmllci4nLAorICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgpCisKKyAgICAgICAgaWYgc2Vs
Zi5faXNfbGludF9tb2RlIGFuZCAncmViYXNlbGluZScgaW4gb3B0aW9uczoKKyAgICAgICAgICAg
IHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sCisgICAgICAgICAgICAnUkVCQVNFTElORSBzaG91bGQg
b25seSBiZSB1c2VkIGZvciBydW5uaW5nIHJlYmFzZWxpbmUucHkuICcKKyAgICAgICAgICAgICdD
YW5ub3QgYmUgY2hlY2tlZCBpbi4nLCB0ZXN0X2xpc3RfcGF0aCkKKworICAgIGRlZiBfY2hlY2tf
b3B0aW9uc19hZ2FpbnN0X2V4cGVjdGF0aW9ucyhzZWxmLCBvcHRpb25zLCBleHBlY3RhdGlvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgdGVz
dF9saXN0X3BhdGgpOgorICAgICAgICBpZiAnc2xvdycgaW4gb3B0aW9ucyBhbmQgVElNRU9VVCBp
biBleHBlY3RhdGlvbnM6CisgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAg
ICAgICAgICAgICAgICdBIHRlc3QgY2FuIG5vdCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQuIElm
IGl0IHRpbWVzIG91dCAnCisgICAgICAgICAgICAgICAgJ2luZGVmaW5pdGVseSwgdGhlbiBpdCBz
aG91bGQgYmUganVzdCB0aW1lb3V0LicsCisgICAgICAgICAgICAgICAgdGVzdF9saXN0X3BhdGgp
CisKKyAgICBkZWYgX2NoZWNrX3BhdGhfZG9lc19ub3RfZXhpc3Qoc2VsZiwgbGluZW5vLCB0ZXN0
X2xpc3RfcGF0aCk6CisgICAgICAgIGZ1bGxfcGF0aCA9IHNlbGYuX2ZzLmpvaW4oc2VsZi5fcG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdF9saXN0X3BhdGgpCisgICAgICAgIGZ1bGxfcGF0aCA9IHNlbGYuX2ZzLm5vcm1wYXRoKGZ1
bGxfcGF0aCkKKyAgICAgICAgIyBXZWJLaXQncyB3YXkgb2Ygc2tpcHBpbmcgdGVzdHMgaXMgdG8g
YWRkIGEgLWRpc2FibGVkIHN1ZmZpeC4KKyAgICAgICAgICAgICMgU28gd2Ugc2hvdWxkIGNvbnNp
ZGVyIHRoZSBwYXRoIGV4aXN0aW5nIGlmIHRoZSBwYXRoIG9yIHRoZQorICAgICAgICAjIC1kaXNh
YmxlZCB2ZXJzaW9uIGV4aXN0cy4KKyAgICAgICAgaWYgKG5vdCBzZWxmLl9wb3J0LnBhdGhfZXhp
c3RzKGZ1bGxfcGF0aCkKKyAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5fcG9ydC5wYXRoX2V4aXN0
cyhmdWxsX3BhdGggKyAnLWRpc2FibGVkJykpOgorICAgICAgICAgICAgIyBMb2cgYSBub24gZmF0
YWwgZXJyb3IgaGVyZSBzaW5jZSB5b3UgaGl0IHRoaXMgY2FzZSBhbnkKKyAgICAgICAgICAgICMg
dGltZSB5b3UgdXBkYXRlIHRlc3RfZXhwZWN0YXRpb25zLnR4dCB3aXRob3V0IHN5bmNpbmcKKyAg
ICAgICAgICAgICMgdGhlIExheW91dFRlc3RzIGRpcmVjdG9yeQorICAgICAgICAgICAgc2VsZi5f
bG9nX25vbl9mYXRhbF9lcnJvcihsaW5lbm8sICdQYXRoIGRvZXMgbm90IGV4aXN0LicsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAg
ICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgZGVmIF9leHBhbmRf
dGVzdHMoc2VsZiwgdGVzdF9saXN0X3BhdGgpOgogICAgICAgICAiIiJDb252ZXJ0IHRoZSB0ZXN0
IHNwZWNpZmljYXRpb24gdG8gYW4gYWJzb2x1dGUsIG5vcm1hbGl6ZWQKICAgICAgICAgcGF0aCBh
bmQgbWFrZSBzdXJlIGRpcmVjdG9yaWVzIGVuZCB3aXRoIHRoZSBPUyBwYXRoIHNlcGFyYXRvci4i
IiIKQEAgLTc1MSwxNyArNzIyLDE5IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAg
ICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgX2FkZF90ZXN0cyhzZWxmLCB0ZXN0cywgZXhw
ZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVycywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICAgICAgICAgICAg
IG1vZGlmaWVycywgbnVtX21hdGNoZXMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKToKICAg
ICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICBpZiBzZWxmLl9hbHJlYWR5X3Nl
ZW5fdGVzdCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICAgICAgaWYg
c2VsZi5fYWxyZWFkeV9zZWVuX2JldHRlcl9tYXRjaCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwKKyAg
ICAgICAgICAgICAgICBudW1fbWF0Y2hlcywgbGluZW5vLCBvdmVycmlkZXNfYWxsb3dlZCk6CiAg
ICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgc2VsZi5fY2xlYXJfZXhwZWN0
YXRpb25zX2Zvcl90ZXN0KHRlc3QsIHRlc3RfbGlzdF9wYXRoKQotICAgICAgICAgICAgc2VsZi5f
YWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCisgICAgICAg
ICAgICBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0gPSAoc2VsZi5fZnMubm9ybXBhdGgodGVz
dF9saXN0X3BhdGgpLAorICAgICAgICAgICAgICAgIG51bV9tYXRjaGVzLCBsaW5lbm8pCisgICAg
ICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmllcnMsIG51bV9tYXRjaGVzLCBleHBl
Y3RhdGlvbnMsIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZXNf
YWxsb3dlZCkKIAotICAgIGRlZiBfYWRkX3Rlc3Qoc2VsZiwgdGVzdCwgbW9kaWZpZXJzLCBleHBl
Y3RhdGlvbnMsIG9wdGlvbnMsCisgICAgZGVmIF9hZGRfdGVzdChzZWxmLCB0ZXN0LCBtb2RpZmll
cnMsIG51bV9tYXRjaGVzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCiAgICAgICAgICAgICAgICAg
ICBvdmVycmlkZXNfYWxsb3dlZCk6CiAgICAgICAgICIiIlNldHMgdGhlIGV4cGVjdGVkIHN0YXRl
IGZvciBhIGdpdmVuIHRlc3QuCiAKQEAgLTc3Miw2ICs3NDUsNyBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zRmlsZToKICAgICAgICAgQXJnczoKICAgICAgICAgICB0ZXN0OiB0ZXN0IHRvIGFkZAog
ICAgICAgICAgIG1vZGlmaWVyczogc2VxdWVuY2Ugb2YgbW9kaWZpZXIga2V5d29yZHMgKCd3b250
Zml4JywgJ3Nsb3cnLCBldGMuKQorICAgICAgICAgIG51bV9tYXRjaGVzOiBudW1iZXIgb2YgbW9k
aWZpZXJzIHRoYXQgbWF0Y2hlZCB0aGUgY29uZmlndXJhdGlvbgogICAgICAgICAgIGV4cGVjdGF0
aW9uczogc2VxdWVuY2Ugb2YgZXhwZWN0YXRpb25zIChQQVNTLCBJTUFHRSwgZXRjLikKICAgICAg
ICAgICBvcHRpb25zOiBzZXF1ZW5jZSBvZiBrZXl3b3JkcyBhbmQgYnVnIGlkZW50aWZpZXJzLgog
ICAgICAgICAgIG92ZXJyaWRlc19hbGxvd2VkOiB3aGV0aGVyIHdlJ3JlIHBhcnNpbmcgdGhlIHJl
Z3VsYXIgZXhwZWN0YXRpb25zCkBAIC04MTAsMTEgKzc4NCwxMiBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zRmlsZToKICAgICAgICAgdGhhbiBhIHByZXZpb3VzIGxpc3RpbmcuCiAgICAgICAgICIi
IgogICAgICAgICBpZiB0ZXN0IGluIHNlbGYuX3Rlc3RfbGlzdF9wYXRoczoKLSAgICAgICAgICAg
IHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25zLnBvcCh0ZXN0LCAnJykKLSAgICAgICAgICAgIHNl
bGYuX3JlbW92ZV9mcm9tX3NldHModGVzdCwgc2VsZi5fZXhwZWN0YXRpb25fdG9fdGVzdHMpCi0g
ICAgICAgICAgICBzZWxmLl9yZW1vdmVfZnJvbV9zZXRzKHRlc3QsIHNlbGYuX21vZGlmaWVyX3Rv
X3Rlc3RzKQotICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyh0ZXN0LCBzZWxmLl90
aW1lbGluZV90b190ZXN0cykKLSAgICAgICAgICAgIHNlbGYuX3JlbW92ZV9mcm9tX3NldHModGVz
dCwgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHMpCisgICAgICAgICAgICBiYXNlX3BhdGggPSBz
ZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF1bMF0KKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfdG9f
ZXhwZWN0YXRpb25zLnBvcChiYXNlX3BhdGgsICcnKQorICAgICAgICAgICAgc2VsZi5fcmVtb3Zl
X2Zyb21fc2V0cyhiYXNlX3BhdGgsIHNlbGYuX2V4cGVjdGF0aW9uX3RvX3Rlc3RzKQorICAgICAg
ICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyhiYXNlX3BhdGgsIHNlbGYuX21vZGlmaWVyX3Rv
X3Rlc3RzKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0cyhiYXNlX3BhdGgsIHNl
bGYuX3RpbWVsaW5lX3RvX3Rlc3RzKQorICAgICAgICAgICAgc2VsZi5fcmVtb3ZlX2Zyb21fc2V0
cyhiYXNlX3BhdGgsIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzKQogCiAgICAgICAgIHNlbGYu
X3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XSA9IHNlbGYuX2ZzLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRo
KQogCkBAIC04MjgsMzIgKzgwMyw3MCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAg
ICAgICAgICAgIGlmIHRlc3QgaW4gc2V0X29mX3Rlc3RzOgogICAgICAgICAgICAgICAgIHNldF9v
Zl90ZXN0cy5yZW1vdmUodGVzdCkKIAotICAgIGRlZiBfYWxyZWFkeV9zZWVuX3Rlc3Qoc2VsZiwg
dGVzdCwgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFsbG93X292ZXJyaWRlcyk6Ci0gICAgICAgICIiIlJldHVybnMgdHJ1ZSBpZiB3ZSd2ZSBhbHJl
YWR5IHNlZW4gYSBtb3JlIHByZWNpc2UgcGF0aCBmb3IgdGhpcyB0ZXN0Ci0gICAgICAgIHRoYW4g
dGhlIHRlc3RfbGlzdF9wYXRoLgorICAgIGRlZiBfYWxyZWFkeV9zZWVuX2JldHRlcl9tYXRjaChz
ZWxmLCB0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbnVtX21hdGNoZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVubywgb3ZlcnJpZGVzX2FsbG93ZWQpOgorICAgICAgICAi
IiJSZXR1cm5zIHdoZXRoZXIgd2UndmUgc2VlbiBhIGJldHRlciBtYXRjaCBhbHJlYWR5IGluIHRo
ZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiB3ZSd2ZSBhbHJlYWR5IHNlZW4gYSB0
ZXN0X2xpc3RfcGF0aCB0aGF0IG1hdGNoZXMgbW9yZSBvZiB0aGUgdGVzdAorICAgICAgICAgICAg
dGhhbiB0aGlzIHBhdGggZG9lcwogICAgICAgICAiIiIKKyAgICAgICAgIyBGSVhNRTogU2VlIGNv
bW1lbnQgYmVsb3cgYWJvdXQgbWF0Y2hpbmcgdGVzdCBjb25maWdzIGFuZCBudW1fbWF0Y2hlcy4K
KwogICAgICAgICBpZiBub3QgdGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6CisgICAgICAg
ICAgICAjIFdlJ3ZlIG5ldmVyIHNlZW4gdGhpcyB0ZXN0IGJlZm9yZS4KICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQogCi0gICAgICAgIHByZXZfYmFzZV9wYXRoID0gc2VsZi5fdGVzdF9saXN0X3Bh
dGhzW3Rlc3RdCi0gICAgICAgIGlmIChwcmV2X2Jhc2VfcGF0aCA9PSBzZWxmLl9mcy5ub3JtcGF0
aCh0ZXN0X2xpc3RfcGF0aCkpOgotICAgICAgICAgICAgaWYgKG5vdCBhbGxvd19vdmVycmlkZXMg
b3IgdGVzdCBpbiBzZWxmLl9vdmVycmlkZGluZ190ZXN0cyk6Ci0gICAgICAgICAgICAgICAgaWYg
YWxsb3dfb3ZlcnJpZGVzOgotICAgICAgICAgICAgICAgICAgICBleHBlY3RhdGlvbl9zb3VyY2Ug
PSAib3ZlcnJpZGUiCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0YXRpb25fc291cmNlID0gImV4cGVjdGF0aW9uIgotICAgICAgICAgICAgICAgIHNlbGYu
X2FkZF9lcnJvcihsaW5lbm8sICdEdXBsaWNhdGUgJXMuJyAlIGV4cGVjdGF0aW9uX3NvdXJjZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFdlIGhh
dmUgc2VlbiB0aGlzIHBhdGgsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNlIGl0cwotICAgICAgICAg
ICAgICAgICMgaW4gdGhlIG92ZXJyaWRlcyBhbmQgdGhlIGVhcmxpZXIgcGF0aCB3YXMgaW4gdGhl
Ci0gICAgICAgICAgICAgICAgIyBleHBlY3RhdGlvbnMuCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgICAgIHByZXZfYmFzZV9wYXRoLCBwcmV2X251bV9tYXRjaGVzLCBwcmV2X2xp
bmVubyA9IHNlbGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XQorICAgICAgICBiYXNlX3BhdGggPSBz
ZWxmLl9mcy5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkKKworICAgICAgICBpZiBsZW4ocHJldl9i
YXNlX3BhdGgpID4gbGVuKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAjIFRoZSBwcmV2aW91cyBw
YXRoIG1hdGNoZWQgbW9yZSBvZiB0aGUgdGVzdC4KKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAK
LSAgICAgICAgIyBDaGVjayBpZiB3ZSd2ZSBhbHJlYWR5IHNlZW4gYSBtb3JlIHByZWNpc2UgcGF0
aC4KLSAgICAgICAgcmV0dXJuIHByZXZfYmFzZV9wYXRoLnN0YXJ0c3dpdGgoc2VsZi5fZnMubm9y
bXBhdGgodGVzdF9saXN0X3BhdGgpKQorICAgICAgICBpZiBsZW4ocHJldl9iYXNlX3BhdGgpIDwg
bGVuKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAjIFRoaXMgcGF0aCBtYXRjaGVzIG1vcmUgb2Yg
dGhlIHRlc3QuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBpZiBvdmVycmlk
ZXNfYWxsb3dlZCBhbmQgdGVzdCBub3QgaW4gc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHM6CisgICAg
ICAgICAgICAjIFdlIGhhdmUgc2VlbiB0aGlzIHBhdGgsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNl
IGl0IGlzCisgICAgICAgICAgICAjIGluIHRoZSBvdmVycmlkZXMgYW5kIHRoZSBlYXJsaWVyIHBh
dGggd2FzIGluIHRoZQorICAgICAgICAgICAgIyBleHBlY3RhdGlvbnMgKG5vdCB0aGUgb3ZlcnJp
ZGVzKS4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgQXQgdGhpcyBwb2lu
dCB3ZSBrbm93IHdlIGhhdmUgc2VlbiBhIHByZXZpb3VzIGV4YWN0IG1hdGNoIG9uIHRoaXMKKyAg
ICAgICAgIyBiYXNlIHBhdGgsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhlIHR3byBzZXRzIG9mIG1v
ZGlmaWVycy4KKworICAgICAgICBpZiBvdmVycmlkZXNfYWxsb3dlZDoKKyAgICAgICAgICAgIGV4
cGVjdGF0aW9uX3NvdXJjZSA9ICJvdmVycmlkZSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGV4cGVjdGF0aW9uX3NvdXJjZSA9ICJleHBlY3RhdGlvbiIKKworICAgICAgICAjIEZJWE1FOiBU
aGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgdG8gYWxsb3cgbGluZXMgdGhhdCBtYXRj
aGVkCisgICAgICAgICMgbW9yZSBtb2RpZmllcnMgdG8gb3ZlcnJpZGUgbGluZXMgdGhhdCBtYXRj
aGVkIGZld2VyIG1vZGlmaWVycy4KKyAgICAgICAgIyBIb3dldmVyLCB3ZSBjdXJyZW50bHkgdmll
dyB0aGVzZSBhcyBlcnJvcnMuIElmIHdlIGRlY2lkZSB0byBtYWtlCisgICAgICAgICMgdGhpcyBw
b2xpY3kgcGVybWFuZW50LCB3ZSBjYW4gcHJvYmFibHkgc2ltcGxpZnkgdGhpcyBjb2RlCisgICAg
ICAgICMgYW5kIHRoZSBNb2RpZmllck1hdGNoZXIgY29kZSBhIGZhaXIgYW1vdW50LgorICAgICAg
ICAjCisgICAgICAgICMgVG8gdXNlIHRoZSAibW9yZSBtb2RpZmllcnMgd2lucyIgcG9saWN5LCBj
aGFuZ2UgdGhlICJfYWRkX2Vycm9yIiBsaW5lcyBmb3Igb3ZlcnJpZGVzCisgICAgICAgICMgdG8g
X2xvZ19ub25fZmF0YWxfZXJyb3IoKSBhbmQgY2hhbmdlIHRoZSBjb21tZW50ZWQtb3V0ICJyZXR1
cm4gRmFsc2UiLgorCisgICAgICAgIGlmIHByZXZfbnVtX21hdGNoZXMgPT0gbnVtX21hdGNoZXM6
CisgICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgICAgICdE
dXBsaWNhdGUgb3IgYW1iaWd1b3VzICVzLicgJSBleHBlY3RhdGlvbl9zb3VyY2UsCisgICAgICAg
ICAgICAgICAgdGVzdCkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaWYgcHJl
dl9udW1fbWF0Y2hlcyA8IG51bV9tYXRjaGVzOgorICAgICAgICAgICAgc2VsZi5fYWRkX2Vycm9y
KGxpbmVubywKKyAgICAgICAgICAgICAgICAnTW9yZSBzcGVjaWZpYyBlbnRyeSBvbiBsaW5lICVk
IG92ZXJyaWRlcyBsaW5lICVkJyAlCisgICAgICAgICAgICAgICAgKGxpbmVubywgcHJldl9saW5l
bm8pLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgICAgICMgRklYTUU6IHJldHVybiBGYWxzZSBp
ZiB3ZSB3YW50IG1vcmUgc3BlY2lmaWMgdG8gd2luLgorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KworICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLAorICAgICAgICAgICAgJ01vcmUgc3Bl
Y2lmaWMgZW50cnkgb24gbGluZSAlZCBvdmVycmlkZXMgbGluZSAlZCcgJQorICAgICAgICAgICAg
KHByZXZfbGluZW5vLCBsaW5lbm8pLCB0ZXN0X2xpc3RfcGF0aCkKKyAgICAgICAgcmV0dXJuIFRy
dWUKIAogICAgIGRlZiBfYWRkX2Vycm9yKHNlbGYsIGxpbmVubywgbXNnLCBwYXRoKToKICAgICAg
ICAgIiIiUmVwb3J0cyBhbiBlcnJvciB0aGF0IHdpbGwgcHJldmVudCBydW5uaW5nIHRoZSB0ZXN0
cy4gRG9lcyBub3QKQEAgLTg2NSwzICs4NzgsMTg4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNG
aWxlOgogICAgICAgICAiIiJSZXBvcnRzIGFuIGVycm9yIHRoYXQgd2lsbCBub3QgcHJldmVudCBy
dW5uaW5nIHRoZSB0ZXN0cy4gVGhlc2UgYXJlCiAgICAgICAgIHN0aWxsIGVycm9ycywgYnV0IG5v
dCBiYWQgZW5vdWdoIHRvIHdhcnJhbnQgYnJlYWtpbmcgdGVzdCBydW5uaW5nLiIiIgogICAgICAg
ICBzZWxmLl9ub25fZmF0YWxfZXJyb3JzLmFwcGVuZCgnTGluZTolcyAlcyAlcycgJSAobGluZW5v
LCBtc2csIHBhdGgpKQorCisKK2NsYXNzIE1vZGlmaWVyTWF0Y2hSZXN1bHQob2JqZWN0KToKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6CisgICAgICAgIHNlbGYubnVtX21hdGNoZXMg
PSBNb2RpZmllck1hdGNoZXIuTk9fTUFUQ0gKKyAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9u
cworICAgICAgICBzZWxmLmVycm9ycyA9IFtdCisgICAgICAgIHNlbGYud2FybmluZ3MgPSBbXQor
ICAgICAgICBzZWxmLm1vZGlmaWVycyA9IFtdCisgICAgICAgIHNlbGYuX21hdGNoZWRfcmVnZXhl
cyA9IHNldCgpCisgICAgICAgIHNlbGYuX21hdGNoZWRfbWFjcm9zID0gc2V0KCkKKworCitjbGFz
cyBNb2RpZmllck1hdGNoZXIob2JqZWN0KToKKworICAgICIiIgorICAgIFRoaXMgY2xhc3MgbWFu
YWdlcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJtb2RpZmllcnMiIGZvciBhIGdpdmVuCisg
ICAgbGluZSBpbiB0aGUgZXhwZWN0YXRpb25zIGZpbGUuIE1vZGlmaWVycyBhcmUgdGhlIHRva2Vu
cyB0aGF0IGFwcGVhciB0byB0aGUKKyAgICBsZWZ0IG9mIHRoZSBjb2xvbiBvbiBhIGxpbmUuIEZv
ciBleGFtcGxlLCAiQlVHMTIzNCIsICJERUJVRyIsIGFuZCAiV0lOIiBhcmUKKyAgICBhbGwgbW9k
aWZpZXJzLiBUaGlzIGNsYXNzIGdldHMgd2hhdCB0aGUgdmFsaWQgbW9kaWZpZXJzIGFyZSwgYW5k
IHdoaWNoCisgICAgbW9kaWZpZXJzIGFyZSBhbGxvd2VkIHRvIGV4aXN0IHRvZ2V0aGVyIG9uIGEg
bGluZSwgZnJvbSB0aGUKKyAgICBUZXN0Q29uZmlndXJhdGlvbiBvYmplY3QgdGhhdCBpcyBwYXNz
ZWQgaW4gdG8gdGhlIGNhbGwuCisKKyAgICBUaGlzIGNsYXNzIGRldGVjdHMgKmludHJhKi1saW5l
IGVycm9ycyBsaWtlIHVua25vd24gbW9kaWZpZXJzLCBidXQKKyAgICBkb2VzIG5vdCBkZXRlY3Qg
KmludGVyKi1saW5lIG1vZGlmaWVycyBsaWtlIGR1cGxpY2F0ZSBleHBlY3RhdGlvbnMuCisKKyAg
ICBNb3JlIGltcG9ydGFudGx5LCB0aGlzIGNsYXNzIGlzIGFsc28gdXNlZCB0byBkZXRlcm1pbmUg
aWYgYSBnaXZlbiBsaW5lCisgICAgbWF0Y2hlcyB0aGUgcG9ydCBpbiBxdWVzdGlvbi4gTWF0Y2hl
cyBhcmUgcmFua2VkIGFjY29yZGluZyB0byB0aGUgbnVtYmVyCisgICAgb2YgbW9kaWZpZXJzIHRo
YXQgbWF0Y2ggb24gYSBsaW5lLiBBIGxpbmUgd2l0aCBubyBtb2RpZmllcnMgbWF0Y2hlcworICAg
IGV2ZXJ5dGhpbmcgYW5kIGhhcyBhIHNjb3JlIG9mIHplcm8uIEEgbGluZSB3aXRoIG9uZSBtb2Rp
ZmllciBtYXRjaGVzIG9ubHkKKyAgICBwb3J0cyB0aGF0IGhhdmUgdGhhdCBtb2RpZmllciBhbmQg
Z2V0cyBhIHNjb3JlIG9mIDEsIGFuZCBzbyBvbmUuIFBvcnRzCisgICAgdGhhdCBkb24ndCBtYXRj
aCBhdCBhbGwgZ2V0IGEgc2NvcmUgb2YgLTEuCisKKyAgICBHaXZlbiB0d28gbGluZXMgaW4gYSBm
aWxlIHRoYXQgYXBwbHkgdG8gdGhlIHNhbWUgdGVzdCwgaWYgYm90aCBleHBlY3RhdGlvbnMKKyAg
ICBtYXRjaCB0aGUgY3VycmVudCBjb25maWcsIHRoZW4gdGhlIGV4cGVjdGF0aW9uIGlzIGNvbnNp
ZGVyZWQgYW1iaWd1b3VzLAorICAgIGV2ZW4gaWYgb25lIGV4cGVjdGF0aW9uIG1hdGNoZXMgbW9y
ZSBvZiB0aGUgY29uZmlnIHRoYW4gdGhlIG90aGVyLiBGb3IKKyAgICBleGFtcGxlLCBpbjoKKwor
ICAgIEJVRzEgUkVMRUFTRSA6IGZvby5odG1sID0gRkFJTAorICAgIEJVRzEgV0lOIFJFTEVBU0Ug
OiBmb28uaHRtbCA9IFBBU1MKKyAgICBCVUcyIFdJTiA6IGJhci5odG1sID0gRkFJTAorICAgIEJV
RzIgREVCVUcgOiBiYXIuaHRtbCA9IFBBU1MKKworICAgIGxpbmVzIDEgYW5kIDIgd291bGQgcHJv
ZHVjZSBhbiBlcnJvciBvbiBhIFdpbiBYUCBSZWxlYXNlIGJvdCAodGhlIHNjb3JlcworICAgIHdv
dWxkIGJlIDEgYW5kIDIsIHJlc3BlY3RpdmVseSksIGFuZCBsaW5lcyB0aHJlZSBhbmQgZm91ciB3
b3VsZCBwcm9kdWNlCisgICAgYSBkdXBsaWNhdGUgZXhwZWN0YXRpb24gb24gYSBXaW4gRGVidWcg
Ym90IHNpbmNlIGJvdGggdGhlICd3aW4nIGFuZCB0aGUKKyAgICAnZGVidWcnIGV4cGVjdGF0aW9u
cyB3b3VsZCBhcHBseSAoYm90aCBoYWQgc2NvcmVzIG9mIDEpLgorCisgICAgSW4gYWRkaXRpb24g
dG8gdGhlIGRlZmluaXRpb25zIG9mIGFsbCBvZiB0aGUgbW9kaWZpZXJzLCB0aGUgY2xhc3MKKyAg
ICBzdXBwb3J0cyAibWFjcm9zIiB0aGF0IGFyZSBleHBhbmRlZCBwcmlvciB0byBpbnRlcnByZXRh
dGlvbiwgYW5kICJpZ25vcmUKKyAgICByZWdleGVzIiB0aGF0IGNhbiBiZSB1c2VkIHRvIHNraXAg
b3ZlciBtb2RpZmllcnMgbGlrZSB0aGUgQlVHKiBtb2RpZmllcnMuCisgICAgIiIiCisgICAgTUFD
Uk9TID0geworICAgICAgICAnbWFjLXNub3dsZW9wYXJkJzogWydtYWMnLCAnc25vd2xlb3BhcmQn
XSwKKyAgICAgICAgJ21hYy1sZW9wYXJkJzogWydtYWMnLCAnbGVvcGFyZCddLAorICAgICAgICAn
d2luLXhwJzogWyd3aW4nLCAneHAnXSwKKyAgICAgICAgJ3dpbi12aXN0YSc6IFsnd2luJywgJ3Zp
c3RhJ10sCisgICAgICAgICd3aW4tNyc6IFsnd2luJywgJ3dpbjcnXSwKKyAgICB9CisKKyAgICAj
IFdlIGRvbid0IGluY2x1ZGUgdGhlICJub25lIiBtb2RpZmllciBiZWNhdXNlIGl0IGlzbid0IGFj
dHVhbGx5IGxlZ2FsLgorICAgIFJFR0VYRVNfVE9fSUdOT1JFID0gKFsnYnVnXHcrJ10gKworICAg
ICAgICAgICAgICAgICAgICAgICAgIFRlc3RFeHBlY3RhdGlvbnNGaWxlLk1PRElGSUVSUy5rZXlz
KClbOi0xXSkKKyAgICBEVVBMSUNBVEVfUkVHRVhFU19BTExPV0VEID0gWydidWdcdysnXQorCisg
ICAgIyBNYWdpYyB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBvcHRpb25zIGRvbid0IG1hdGNoLgor
ICAgIE5PX01BVENIID0gLTEKKworICAgICMgRklYTUU6IFRoZSBjb2RlIGN1cnJlbnRseSBkb2Vz
bid0IGRldGVjdCBjb21iaW5hdGlvbnMgb2YgbW9kaWZpZXJzCisgICAgIyB0aGF0IGFyZSBzeW50
YWN0aWNhbGx5IHZhbGlkIGJ1dCBzZW1hbnRpY2FsbHkgaW52YWxpZCwgbGlrZQorICAgICMgJ01B
QyBYUCcuIFNlZSBNb2RpZmllck1hdGNoVGVzdC50ZXN0X2ludmFsaWRfY29tYmluYXRpb25zKCkg
aW4gdGhlCisgICAgIyBfdW5pdHRlc3QucHkgZmlsZS4KKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCB0ZXN0X2NvbmZpZyk6CisgICAgICAgICIiIkluaXRpYWxpemUgYSBNb2RpZmllck1hdGNoZXIg
YXJndW1lbnQgd2l0aCB0aGUgVGVzdENvbmZpZ3VyYXRpb24gaXQKKyAgICAgICAgc2hvdWxkIGJl
IG1hdGNoZWQgYWdhaW5zdC4iIiIKKyAgICAgICAgc2VsZi50ZXN0X2NvbmZpZyA9IHRlc3RfY29u
ZmlnCisgICAgICAgIHNlbGYuYWxsb3dlZF9jb25maWd1cmF0aW9ucyA9IHRlc3RfY29uZmlnLmFs
bF90ZXN0X2NvbmZpZ3VyYXRpb25zKCkKKyAgICAgICAgc2VsZi5tYWNyb3MgPSBzZWxmLk1BQ1JP
UworCisgICAgICAgIHNlbGYucmVnZXhlc190b19pZ25vcmUgPSB7fQorICAgICAgICBmb3IgcmVn
ZXhfc3RyIGluIHNlbGYuUkVHRVhFU19UT19JR05PUkU6CisgICAgICAgICAgICBzZWxmLnJlZ2V4
ZXNfdG9faWdub3JlW3JlZ2V4X3N0cl0gPSByZS5jb21waWxlKHJlZ2V4X3N0cikKKworICAgICAg
ICAjIEtlZXAgYSBzZXQgb2YgYWxsIG9mIHRoZSBsZWdhbCBtb2RpZmllcnMgZm9yIHF1aWNrIGNo
ZWNraW5nLgorICAgICAgICBzZWxmLl9hbGxfbW9kaWZpZXJzID0gc2V0KCkKKworICAgICAgICAj
IEtlZXAgYSBkaWN0IG1hcHBpbmcgdmFsdWVzIGJhY2sgdG8gdGhlaXIgY2F0ZWdvcmllcy4KKyAg
ICAgICAgc2VsZi5fY2F0ZWdvcmllc19mb3JfbW9kaWZpZXJzID0ge30KKyAgICAgICAgZm9yIGNv
bmZpZyBpbiBzZWxmLmFsbG93ZWRfY29uZmlndXJhdGlvbnM6CisgICAgICAgICAgICBmb3IgY2F0
ZWdvcnksIG1vZGlmaWVyIGluIGNvbmZpZy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYu
X2NhdGVnb3JpZXNfZm9yX21vZGlmaWVyc1ttb2RpZmllcl0gPSBjYXRlZ29yeQorICAgICAgICAg
ICAgICAgIHNlbGYuX2FsbF9tb2RpZmllcnMuYWRkKG1vZGlmaWVyKQorCisgICAgZGVmIG1hdGNo
KHNlbGYsIG9wdGlvbnMpOgorICAgICAgICAiIiJDaGVja3MgYSBsaXN0IG9mIG9wdGlvbnMgYWdh
aW5zdCB0aGUgY29uZmlnIHNldCBpbiB0aGUgY29uc3RydWN0b3IuCisgICAgICAgIE9wdGlvbnMg
bWF5IGJlIGVpdGhlciBhY3R1YWwgbW9kaWZpZXIgc3RyaW5ncywgIm1hY3JvIiBzdHJpbmdzCisg
ICAgICAgIHRoYXQgZ2V0IGV4cGFuZGVkIHRvIGEgbGlzdCBvZiBtb2RpZmllcnMsIG9yIHN0cmlu
Z3MgdGhhdCBhcmUgYWxsb3dlZAorICAgICAgICB0byBiZSBpZ25vcmVkLiBBbGwgb2YgdGhlIG9w
dGlvbnMgbXVzdCBiZSBwYXNzZWQgaW4gaW4gbG93ZXIgY2FzZS4KKworICAgICAgICBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgbWF0Y2hpbmcgY2F0ZWdvcmllcywgb3IgTk9fTUFUQ0ggKC0xKSBpZiBp
dAorICAgICAgICBkb2Vzbid0IG1hdGNoIG9yIHRoZXJlIHdlcmUgZXJyb3JzIGZvdW5kLiBNYXRj
aGVzIGFyZSBwcmlvcml0aXplZAorICAgICAgICBieSB0aGUgbnVtYmVyIG9mIG1hdGNoaW5nIGNh
dGVnb3JpZXMsIGJlY2F1c2UgdGhlIG1vcmUgc3BlY2lmaWMKKyAgICAgICAgdGhlIG9wdGlvbnMg
bGlzdCwgdGhlIG1vcmUgY2F0ZWdvcmllcyB3aWxsIG1hdGNoLgorCisgICAgICAgIFRoZSByZXN1
bHRzIG9mIHRoZSBtb3N0IHJlY2VudCBtYXRjaCBhcmUgYXZhaWxhYmxlIGluIHRoZSAnb3B0aW9u
cycsCisgICAgICAgICdtb2RpZmllcnMnLCAnbnVtX21hdGNoZXMnLCAnZXJyb3JzJywgYW5kICd3
YXJuaW5ncycgcHJvcGVydGllcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IE1vZGlm
aWVyTWF0Y2hSZXN1bHQob3B0aW9ucykKKyAgICAgICAgc2VsZi5fcGFyc2UocmVzdWx0KQorICAg
ICAgICBpZiByZXN1bHQuZXJyb3JzOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAg
ICBzZWxmLl9jb3VudF9tYXRjaGVzKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisg
ICAgZGVmIF9wYXJzZShzZWxmLCByZXN1bHQpOgorICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2Ug
d2FybiBhYm91dCBsaW5lcyBoYXZpbmcgZXZlcnkgdmFsdWUgaW4gYSBjYXRlZ29yeT8KKyAgICAg
ICAgZm9yIG9wdGlvbiBpbiByZXN1bHQub3B0aW9uczoKKyAgICAgICAgICAgIHNlbGYuX3BhcnNl
X29uZShvcHRpb24sIHJlc3VsdCkKKworICAgIGRlZiBfcGFyc2Vfb25lKHNlbGYsIG9wdGlvbiwg
cmVzdWx0KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHNlbGYuX2FsbF9tb2RpZmllcnM6CisgICAg
ICAgICAgICBzZWxmLl9hZGRfbW9kaWZpZXIob3B0aW9uLCByZXN1bHQpCisgICAgICAgIGVsaWYg
b3B0aW9uIGluIHNlbGYubWFjcm9zOgorICAgICAgICAgICAgc2VsZi5fZXhwYW5kX21hY3JvKG9w
dGlvbiwgcmVzdWx0KQorICAgICAgICBlbGlmIG5vdCBzZWxmLl9tYXRjaGVzX2FueV9yZWdleChv
cHRpb24sIHJlc3VsdCk6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiVW5yZWNv
Z25pemVkIG9wdGlvbiAnJXMnIiAlIG9wdGlvbikKKworICAgIGRlZiBfYWRkX21vZGlmaWVyKHNl
bGYsIG9wdGlvbiwgcmVzdWx0KToKKyAgICAgICAgaWYgb3B0aW9uIGluIHJlc3VsdC5tb2RpZmll
cnM6CisgICAgICAgICAgICByZXN1bHQuZXJyb3JzLmFwcGVuZCgiTW9yZSB0aGFuIG9uZSAnJXMn
IiAlIG9wdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5tb2RpZmllcnMu
YXBwZW5kKG9wdGlvbikKKworICAgIGRlZiBfZXhwYW5kX21hY3JvKHNlbGYsIG1hY3JvLCByZXN1
bHQpOgorICAgICAgICBpZiBtYWNybyBpbiByZXN1bHQuX21hdGNoZWRfbWFjcm9zOgorICAgICAg
ICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhhbiBvbmUgJyVzJyIgJSBtYWNybykK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIG1vZHMgPSBbXQorICAgICAgICBmb3IgbW9k
aWZpZXIgaW4gc2VsZi5tYWNyb3NbbWFjcm9dOgorICAgICAgICAgICAgaWYgbW9kaWZpZXIgaW4g
cmVzdWx0Lm9wdGlvbnM6CisgICAgICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIkNh
bid0IHNwZWNpZnkgYm90aCBtb2RpZmllciAnJXMnIGFuZCAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIm1hY3JvICclcyciICUgKG1vZGlmaWVyLCBtYWNybykpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZGlmaWVyKQorICAg
ICAgICByZXN1bHQuX21hdGNoZWRfbWFjcm9zLmFkZChtYWNybykKKyAgICAgICAgcmVzdWx0Lm1v
ZGlmaWVycy5leHRlbmQobW9kcykKKworICAgIGRlZiBfbWF0Y2hlc19hbnlfcmVnZXgoc2VsZiwg
b3B0aW9uLCByZXN1bHQpOgorICAgICAgICBmb3IgcmVnZXhfc3RyLCBwYXR0ZXJuIGluIHNlbGYu
cmVnZXhlc190b19pZ25vcmUuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBpZiBwYXR0ZXJuLm1h
dGNoKG9wdGlvbik6CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3JlZ2V4X21hdGNoKHJl
Z2V4X3N0ciwgcmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIF9oYW5kbGVfcmVnZXhfbWF0Y2goc2VsZiwgcmVnZXhfc3Ry
LCByZXN1bHQpOgorICAgICAgICBpZiAocmVnZXhfc3RyIGluIHJlc3VsdC5fbWF0Y2hlZF9yZWdl
eGVzIGFuZAorICAgICAgICAgICAgcmVnZXhfc3RyIG5vdCBpbiBzZWxmLkRVUExJQ0FURV9SRUdF
WEVTX0FMTE9XRUQpOgorICAgICAgICAgICAgcmVzdWx0LmVycm9ycy5hcHBlbmQoIk1vcmUgdGhh
biBvbmUgb3B0aW9uIG1hdGNoaW5nICclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZ2V4X3N0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdC5fbWF0
Y2hlZF9yZWdleGVzLmFkZChyZWdleF9zdHIpCisKKyAgICBkZWYgX2NvdW50X21hdGNoZXMoc2Vs
ZiwgcmVzdWx0KToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1vZGlmaWVycyB0
aGF0IG1hdGNoIHRoZSB0ZXN0IGNvbmZpZy4iIiIKKyAgICAgICAgY2F0ZWdvcml6ZWRfbW9kaWZp
ZXJzID0gc2VsZi5fZ3JvdXBfYnlfY2F0ZWdvcnkocmVzdWx0Lm1vZGlmaWVycykKKyAgICAgICAg
cmVzdWx0Lm51bV9tYXRjaGVzID0gMAorICAgICAgICBmb3IgY2F0ZWdvcnksIG1vZGlmaWVyIGlu
IHNlbGYudGVzdF9jb25maWcuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5IGluIGNh
dGVnb3JpemVkX21vZGlmaWVyczoKKyAgICAgICAgICAgICAgICBpZiBtb2RpZmllciBpbiBjYXRl
Z29yaXplZF9tb2RpZmllcnNbY2F0ZWdvcnldOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQu
bnVtX21hdGNoZXMgKz0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdC5udW1fbWF0Y2hlcyA9IHNlbGYuTk9fTUFUQ0gKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuCisKKyAgICBkZWYgX2dyb3VwX2J5X2NhdGVnb3J5KHNlbGYsIG1vZGlmaWVycyk6
CisgICAgICAgICMgUmV0dXJucyBhIGRpY3Qgb2YgY2F0ZWdvcnkgbmFtZSAtPiBsaXN0IG9mIG1v
ZGlmaWVycy4KKyAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5ID0ge30KKyAgICAgICAgZm9y
IG0gaW4gbW9kaWZpZXJzOgorICAgICAgICAgICAgbW9kaWZpZXJzX2J5X2NhdGVnb3J5LnNldGRl
ZmF1bHQoc2VsZi5fY2F0ZWdvcnkobSksIFtdKS5hcHBlbmQobSkKKyAgICAgICAgcmV0dXJuIG1v
ZGlmaWVyc19ieV9jYXRlZ29yeQorCisgICAgZGVmIF9jYXRlZ29yeShzZWxmLCBtb2RpZmllcik6
CisgICAgICAgIHJldHVybiBzZWxmLl9jYXRlZ29yaWVzX2Zvcl9tb2RpZmllcnNbbW9kaWZpZXJd
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRf
cGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0
ZXN0LnB5CmluZGV4IDhmOWU1ZGQwYWFhNWM2MzhiYzQzMzcxYWY1YzkwNTliZGFlNTI2ODMuLmZk
OTlkNmI1MWQzYTc4ZmViMWE0MjNhNTU0ODEwNjkwYTFkYjEyMzIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0
YXRpb25zX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CkBAIC0zMiw2
ICszMiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMg
aW1wb3J0IHBvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJhc2UK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlLnRlc3RfZXhwZWN0YXRp
b25zIGltcG9ydCAqCiAKIGNsYXNzIEZ1bmN0aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpA
QCAtNzgsOCArNzksMTEgQEAgY2xhc3MgRnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKIAogY2xhc3MgQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBOb3RlIHRoYXQgYWxs
IG9mIHRoZXNlIHRlc3RzIGFyZSB3cml0dGVuIGFzc3VtaW5nIHRoZSBjb25maWd1cmF0aW9uCisg
ICAgIyBiZWluZyB0ZXN0ZWQgaXMgV2luZG93cyBYUCwgUmVsZWFzZSBidWlsZC4KKwogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCB0ZXN0RnVuYywgc2V0VXA9Tm9uZSwgdGVhckRvd249Tm9uZSwgZGVz
Y3JpcHRpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0LmdldCgndGVzdCcsIE5v
bmUpCisgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0LmdldCgndGVzdC13aW4teHAnLCBOb25lKQog
ICAgICAgICBzZWxmLl9mcyA9IHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0KICAgICAgICAgc2VsZi5f
ZXhwID0gTm9uZQogICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmLCB0ZXN0
RnVuYykKQEAgLTEwMSwxNiArMTA1LDE1IEBAIEJVR19URVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gVEVYVAogQlVHX1RFU1QgV09OVEZJWCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0
ZWQvY3Jhc2guaHRtbCA9IENSQVNICiBCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvbWlzc2luZ19pbWFnZS5odG1sID0gTUlTU0lORwogQlVHX1RFU1QgV09OVEZJWCA6IGZh
aWx1cmVzL2V4cGVjdGVkL2ltYWdlX2NoZWNrc3VtLmh0bWwgPSBJTUFHRQotQlVHX1RFU1QgV09O
VEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0gSU1BR0UKK0JVR19URVNU
IFdPTlRGSVggTUFDIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFCiAiIiIK
IAotICAgIGRlZiBwYXJzZV9leHAoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVycmlkZXM9Tm9uZSwg
aXNfbGludF9tb2RlPUZhbHNlLAotICAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1GYWxz
ZSk6CisgICAgZGVmIHBhcnNlX2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25l
LCBpc19saW50X21vZGU9RmFsc2UpOgorICAgICAgICB0ZXN0X2NvbmZpZyA9IHNlbGYuX3BvcnQu
dGVzdF9jb25maWd1cmF0aW9uKCkKICAgICAgICAgc2VsZi5fZXhwID0gVGVzdEV4cGVjdGF0aW9u
cyhzZWxmLl9wb3J0LAogICAgICAgICAgICAgIHRlc3RzPXNlbGYuZ2V0X2Jhc2ljX3Rlc3RzKCks
CiAgICAgICAgICAgICAgZXhwZWN0YXRpb25zPWV4cGVjdGF0aW9ucywKLSAgICAgICAgICAgICB0
ZXN0X3BsYXRmb3JtX25hbWU9c2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSwKLSAgICAg
ICAgICAgICBpc19kZWJ1Z19tb2RlPWlzX2RlYnVnX21vZGUsCisgICAgICAgICAgICAgdGVzdF9j
b25maWc9dGVzdF9jb25maWcsCiAgICAgICAgICAgICAgaXNfbGludF9tb2RlPWlzX2xpbnRfbW9k
ZSwKICAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQogCkBAIC0xMTksNyArMTIyLDcg
QEAgQlVHX1RFU1QgV09OVEZJWCBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9pbWFnZS5odG1sID0g
SU1BR0UKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFtyZXN1bHRdKSkKIAogCi1jbGFz
cyBUZXN0RXhwZWN0YXRpb25zVGVzdChCYXNlKToKK2NsYXNzIEJhc2ljVGVzdHMoQmFzZSk6CiAg
ICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYuZ2V0
X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQogICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVz
L2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCkBAIC0xMjcsMjMgKzEzMCwxNCBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zVGVzdChCYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdwYXNz
ZXMvdGV4dC5odG1sJywgUEFTUykKICAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9l
eHBlY3RlZC9pbWFnZS5odG1sJywgUEFTUykKIAorCitjbGFzcyBNaXNjVGVzdHMoQmFzZSk6CiAg
ICAgZGVmIHRlc3RfbXVsdGlwbGVfcmVzdWx0cyhzZWxmKToKICAgICAgICAgc2VsZi5wYXJzZV9l
eHAoJ0JVR1ggOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUIENSQVNIJykKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9leHAuZ2V0X2V4cGVjdGF0aW9ucygKICAgICAg
ICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpKSwKICAg
ICAgICAgICAgIHNldChbVEVYVCwgQ1JBU0hdKSkKIAotICAgIGRlZiB0ZXN0X3ByZWNlZGVuY2Uo
c2VsZik6Ci0gICAgICAgICMgVGhpcyB0ZXN0cyBoYW5kbGluZyBwcmVjZWRlbmNlIG9mIHNwZWNp
ZmljIGxpbmVzIG92ZXIgZGlyZWN0b3JpZXMKLSAgICAgICAgIyBhbmQgdGVzdHMgZXhwZWN0YXRp
b25zIGNvdmVyaW5nIGVudGlyZSBkaXJlY3Rvcmllcy4KLSAgICAgICAgZXhwX3N0ciA9ICIiIgot
QlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR1ggV09OVEZJWCA6
IGZhaWx1cmVzL2V4cGVjdGVkID0gSU1BR0UKLSIiIgotICAgICAgICBzZWxmLnBhcnNlX2V4cChl
eHBfc3RyKQotICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcsIFRFWFQpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQv
Y3Jhc2guaHRtbCcsIElNQUdFKQotCiAgICAgZGVmIHRlc3RfY2F0ZWdvcnlfZXhwZWN0YXRpb25z
KHNlbGYpOgogICAgICAgICAjIFRoaXMgdGVzdCBjaGVja3MgdW5rbm93biB0ZXN0cyBhcmUgbm90
IHByZXNlbnQgaW4gdGhlCiAgICAgICAgICMgZXhwZWN0YXRpb25zIGFuZCB0aGF0IGtub3duIHRl
c3QgcGFydCBvZiBhIHRlc3QgY2F0ZWdvcnkgaXMKQEAgLTE1OCwyMCArMTUyLDYgQEAgQlVHWCBX
T05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFHRQogICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bmtub3duX3Rlc3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhw
ZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAgZGVmIHRlc3RfcmVsZWFzZV9tb2RlKHNl
bGYpOgotICAgICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHWCBERUJVRyA6IGZhaWx1cmVzL2V4cGVj
dGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAgICBpc19kZWJ1Z19t
b2RlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sJywgVEVYVCkKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1ggUkVMRUFTRSA6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAotICAgICAgICAgICAgICAgICAgICAg
ICBpc19kZWJ1Z19tb2RlPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMv
ZXhwZWN0ZWQvdGV4dC5odG1sJywgUEFTUykKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoJ0JVR1gg
REVCVUcgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZXhw
KCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBQQVNTKQotICAgICAgICBzZWxmLnBhcnNl
X2V4cCgnQlVHWCBSRUxFQVNFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGU9RmFsc2UpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKLQogICAg
IGRlZiB0ZXN0X2dldF9vcHRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxm
LmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
Ll9leHAuZ2V0X29wdGlvbnMoCkBAIC0yMTYsNyArMTk2LDcgQEAgU0tJUCA6IGZhaWx1cmVzL2V4
cGVjdGVkL2ltYWdlLmh0bWwiIiIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFRydWUs
ICJQYXJzZUVycm9yIHdhc24ndCByYWlzZWQiKQogICAgICAgICBleGNlcHQgUGFyc2VFcnJvciwg
ZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmZhdGFsKQotICAgICAgICAgICAgZXhw
X2Vycm9ycyA9IFt1J0xpbmU6MSBJbnZhbGlkIG1vZGlmaWVyIGZvciB0ZXN0OiBmb28gZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywKKyAgICAgICAgICAgIGV4cF9lcnJvcnMgPSBbdSJMaW5l
OjEgVW5yZWNvZ25pemVkIG9wdGlvbiAnZm9vJyBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwi
LAogICAgICAgICAgICAgICAgICAgICAgICAgICB1IkxpbmU6MiBNaXNzaW5nIGV4cGVjdGF0aW9u
cy4gWycgZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCddIl0KICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhwX2Vycm9ycykpKQogICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vycm9ycykKQEAgLTIzMiw3
NyArMjEyLDE2MCBAQCBTS0lQIDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCIiIikKICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnXG4nLmpvaW4obWFwKHN0ciwgZXhw
X2Vycm9ycykpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmVycm9ycywgZXhwX2Vy
cm9ycykKIAotICAgIGRlZiB0ZXN0X3N5bnRheF9taXNzaW5nX2V4cGVjdGF0aW9uKHNlbGYpOgor
ICAgIGRlZiB0ZXN0X292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5wYXJzZV9leHAoIkJV
R19FWFA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAiQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0g
SU1BR0UiKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcsIElNQUdFKQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVzX19kdXBsaWNhdGUoc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLAor
ICAgICAgICAgICAgICJCVUdfRVhQOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhU
IiwKKyAgICAgICAgICAgICAiIiIKK0JVR19PVkVSUklERSA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rl
eHQuaHRtbCA9IElNQUdFCitCVUdfT1ZFUlJJREUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0
bWwgPSBDUkFTSAorIiIiKQorCisgICAgZGVmIHRlc3RfcGl4ZWxfdGVzdHNfZmxhZyhzZWxmKToK
KyAgICAgICAgZGVmIG1hdGNoKHRlc3QsIHJlc3VsdCwgcGl4ZWxfdGVzdHNfZW5hYmxlZCk6Cisg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fZXhwLm1hdGNoZXNfYW5fZXhwZWN0ZWRfcmVzdWx0KAor
ICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QodGVzdCksIHJlc3VsdCwgcGl4ZWxfdGVzdHNf
ZW5hYmxlZCkKKworICAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3Rh
dGlvbnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3Rl
ZC90ZXh0Lmh0bWwnLCBURVhULCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNo
KCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhULCBGYWxzZSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIENSQVNI
LCBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sJywgQ1JBU0gsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1h
dGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywgSU1BR0UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9pbWFnZV9jaGVja3N1bS5odG1sJywgUEFTUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgU0tJUCwgRmFsc2UpKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2goJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCBQQVNTLCBG
YWxzZSkpCisKKworY2xhc3MgRXhwZWN0YXRpb25TeW50YXhUZXN0cyhCYXNlKToKKyAgICBkZWYg
dGVzdF9taXNzaW5nX2V4cGVjdGF0aW9uKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMgbWlzc2lu
ZyB0aGUgZXhwZWN0YXRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3Is
IHNlbGYucGFyc2VfZXhwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnQlVHX1RFU1Q6IGZh
aWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlz
X2RlYnVnX21vZGU9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnKQogCi0gICAgZGVmIHRlc3Rfc3ludGF4X2ludmFs
aWRfb3B0aW9uKHNlbGYpOgorICAgIGRlZiB0ZXN0X21pc3NpbmdfY29sb24oc2VsZik6CisgICAg
ICAgICMgVGhpcyBpcyBtaXNzaW5nIHRoZSBtb2RpZmllcnMgYW5kIHRoZSAnOicKICAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICdCVUdfVEVTVCBGT086IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRt
bCA9IFBBU1MnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgdGVzdF9zeW50YXhfaW52YWxpZF9leHBlY3Rh
dGlvbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGlzIG1pc3NpbmcgdGhlIGV4cGVjdGF0aW9uLgor
ICAgIGRlZiBkaXNhYmxlZF90ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKKyAgICAgICAgIyBG
SVhNRTogRW5hYmxlIHRoaXMgdGVzdCBhbmQgZml4IHRoZSB1bmRlcmx5aW5nIGJ1Zy4KKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gUEFTUyA6JykKKworICAgIGRlZiB0ZXN0X3Rvb19tYW55X2VxdWFsc19zaWducyhzZWxmKToK
ICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdCVUdfVEVTVDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gRk9PJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JVR19URVNUOiBmYWls
dXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUID0gSU1BR0UnKQorCisgICAgZGVmIHRlc3Rf
dW5yZWNvZ25pemVkX2V4cGVjdGF0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
J0JVR19URVNUOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBVTktOT1dOJykKKworICAg
IGRlZiB0ZXN0X21hY3JvKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBX
SU4tWFAgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUCisiIiIKKyAgICAgICAg
c2VsZi5wYXJzZV9leHAoZXhwX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJl
cy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBURVhUKQorCisKK2NsYXNzIFNlbWFudGljVGVzdHMoQmFz
ZSk6CisgICAgZGVmIHRlc3RfYnVnX2Zvcm1hdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsICdCVUcxMjM0IDogZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVEVYVCcpCiAKLSAgICBkZWYgdGVzdF9zeW50YXhfbWlzc2luZ19i
dWdpZChzZWxmKToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2J1Z2lkKHNlbGYpOgogICAgICAgICAj
IFRoaXMgc2hvdWxkIGxvZyBhIG5vbi1mYXRhbCBlcnJvci4KICAgICAgICAgc2VsZi5wYXJzZV9l
eHAoJ1NMT1cgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUJykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIGxlbihzZWxmLl9leHAuX2V4cGVjdGVkX2Zh
aWx1cmVzLmdldF9ub25fZmF0YWxfZXJyb3JzKCkpLCAxKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50
aWNfc2xvd19hbmRfdGltZW91dChzZWxmKToKKyAgICBkZWYgdGVzdF9zbG93X2FuZF90aW1lb3V0
KHNlbGYpOgogICAgICAgICAjIEEgdGVzdCBjYW5ub3QgYmUgU0xPVyBhbmQgZXhwZWN0ZWQgdG8g
VElNRU9VVC4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJz
ZV9leHAsCiAgICAgICAgICAgICAnQlVHX1RFU1QgU0xPVyA6IGZhaWx1cmVzL2V4cGVjdGVkL3Rp
bWVvdXQuaHRtbCA9IFRJTUVPVVQnKQogCi0gICAgZGVmIHRlc3Rfc2VtYW50aWNfcmViYXNlbGlu
ZShzZWxmKToKKyAgICBkZWYgdGVzdF9yZWJhc2VsaW5lKHNlbGYpOgogICAgICAgICAjIENhbid0
IGxpbnQgYSBmaWxlIHcvICdSRUJBU0VMSU5FJyBpbiBpdC4KICAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoUGFyc2VFcnJvciwgc2VsZi5wYXJzZV9leHAsCiAgICAgICAgICAgICAnQlVHX1RFU1Qg
UkVCQVNFTElORSA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQnLAogICAgICAg
ICAgICAgaXNfbGludF9tb2RlPVRydWUpCiAKLSAgICBkZWYgdGVzdF9zZW1hbnRpY19kdXBsaWNh
dGVzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCAiIiIKLUJVR19URVNUIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAotQlVHX1RFU1QgOiBmYWlsdXJlcy9l
eHBlY3RlZC90ZXh0Lmh0bWwgPSBJTUFHRSIiIikKK0JVR19FWFAgOiBmYWlsdXJlcy9leHBlY3Rl
ZC90ZXh0Lmh0bWwgPSBURVhUCitCVUdfRVhQIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
ID0gSU1BR0UiIiIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUGFyc2VFcnJvciwgc2Vs
Zi5wYXJzZV9leHAsCi0gICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwg
IiIiCi1CVUdfVEVTVCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKLUJVR19U
RVNUIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCisgICAgICAgICAg
ICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwgb3ZlcnJpZGVzPSIiIgorQlVHX09WRVJS
SURFIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHX09WRVJSSURFIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIsICkKIAotICAgIGRlZiB0ZXN0
X3NlbWFudGljX21pc3NpbmdfZmlsZShzZWxmKToKKyAgICBkZWYgdGVzdF9taXNzaW5nX2ZpbGUo
c2VsZik6CiAgICAgICAgICMgVGhpcyBzaG91bGQgbG9nIGEgbm9uLWZhdGFsIGVycm9yLgogICAg
ICAgICBzZWxmLnBhcnNlX2V4cCgnQlVHX1RFU1QgOiBtaXNzaW5nX2ZpbGUuaHRtbCA9IFRFWFQn
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgbGVuKHNlbGYuX2V4cC5f
ZXhwZWN0ZWRfZmFpbHVyZXMuZ2V0X25vbl9mYXRhbF9lcnJvcnMoKSksIDEpCiAKIAotICAgIGRl
ZiB0ZXN0X292ZXJyaWRlcyhzZWxmKToKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRf
YmFzaWNfZXhwZWN0YXRpb25zKCksICIiIgotQlVHX09WRVJSSURFIDogZmFpbHVyZXMvZXhwZWN0
ZWQvdGV4dC5odG1sID0gSU1BR0UiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgSU1BR0UpCitjbGFzcyBQcmVjZWRlbmNlVGVzdHMoQmFz
ZSk6CisgICAgZGVmIHRlc3RfZmlsZV9vdmVyX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgIyBU
aGlzIHRlc3RzIGhhbmRsaW5nIHByZWNlZGVuY2Ugb2Ygc3BlY2lmaWMgbGluZXMgb3ZlciBkaXJl
Y3RvcmllcworICAgICAgICAjIGFuZCB0ZXN0cyBleHBlY3RhdGlvbnMgY292ZXJpbmcgZW50aXJl
IGRpcmVjdG9yaWVzLgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdYIDogZmFpbHVyZXMvZXhw
ZWN0ZWQvdGV4dC5odG1sID0gVEVYVAorQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQg
PSBJTUFHRQorIiIiCisgICAgICAgIHNlbGYucGFyc2VfZXhwKGV4cF9zdHIpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2V4cCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRfZXhwKCdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5odG1sJywgSU1BR0Up
CiAKLSAgICBkZWYgdGVzdF9tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdChzZWxmKToKKyAgICAg
ICAgZXhwX3N0ciA9ICIiIgorQlVHWCBXT05URklYIDogZmFpbHVyZXMvZXhwZWN0ZWQgPSBJTUFH
RQorQlVHWCA6IGZhaWx1cmVzL2V4cGVjdGVkL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAg
ICBzZWxmLnBhcnNlX2V4cChleHBfc3RyKQorICAgICAgICBzZWxmLmFzc2VydF9leHAoJ2ZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcsIFRFWFQpCisgICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgn
ZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIElNQUdFKQogCi0gICAgICAgIGRlZiBtYXRj
aCh0ZXN0LCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX2V4cC5tYXRjaGVzX2FuX2V4cGVjdGVkX3Jlc3VsdCgKLSAgICAgICAgICAgICAgICBz
ZWxmLmdldF90ZXN0KHRlc3QpLCByZXN1bHQsIHBpeGVsX3Rlc3RzX2VuYWJsZWQpCisgICAgZGVm
IHRlc3RfYW1iaWd1b3VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVy
cm9yLCBzZWxmLnBhcnNlX2V4cCwgIiIiCitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQu
aHRtbCA9IFBBU1MKK0JVR19URVNUIFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBGQUlMCisiIiIp
CiAKLSAgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25zKCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5o
dG1sJywgVEVYVCwgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFpbHVy
ZXMvZXhwZWN0ZWQvdGV4dC5odG1sJywgVEVYVCwgRmFsc2UpKQotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKG1hdGNoKCdmYWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwnLCBDUkFTSCwgVHJ1ZSkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2goJ2ZhaWx1cmVzL2V4cGVjdGVkL3RleHQu
aHRtbCcsIENSQVNILCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgnZmFp
bHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIElNQUdFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaCgn
ZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2VfY2hlY2tzdW0uaHRtbCcsIFBBU1MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRj
aCgnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jhc2guaHRtbCcsIFNLSVAsIEZhbHNlKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1hdGNoKCdwYXNzZXMvdGV4dC5odG1sJywgUEFTUywgRmFsc2UpKQor
ICAgIGRlZiB0ZXN0X21vcmVfbW9kaWZpZXJzKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIi
CitCVUdfVEVTVCBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFBBU1MKK0JVR19URVNUIFdJ
TiBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKKyIiIgorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNlX2V4cCwgZXhwX3N0cikKKworICAgIGRl
ZiB0ZXN0X29yZGVyX2luX2ZpbGUoc2VsZik6CisgICAgICAgIGV4cF9zdHIgPSAiIiIKK0JVR19U
RVNUIFdJTiBSRUxFQVNFIDogcGFzc2VzL3RleHQuaHRtbCA9IFRFWFQKK0JVR19URVNUIFJFTEVB
U0UgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUworIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFBhcnNlRXJyb3IsIHNlbGYucGFyc2VfZXhwLCBleHBfc3RyKQorCisgICAgZGVmIHRlc3Rf
dmVyc2lvbl9vdmVycmlkZXMoc2VsZik6CisgICAgICAgIGV4cF9zdHIgPSAiIiIKK0JVR19URVNU
IFdJTiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTCitCVUdfVEVTVCBXSU4gWFAgOiBwYXNzZXMv
dGV4dC5odG1sID0gVEVYVAorIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFBhcnNlRXJy
b3IsIHNlbGYucGFyc2VfZXhwLCBleHBfc3RyKQorCisgICAgZGVmIHRlc3RfbWFjcm9fb3ZlcnJp
ZGVzKHNlbGYpOgorICAgICAgICBleHBfc3RyID0gIiIiCitCVUdfVEVTVCBXSU4gOiBwYXNzZXMv
dGV4dC5odG1sID0gUEFTUworQlVHX1RFU1QgV0lOLVhQIDogcGFzc2VzL3RleHQuaHRtbCA9IFRF
WFQKKyIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhQYXJzZUVycm9yLCBzZWxmLnBhcnNl
X2V4cCwgZXhwX3N0cikKIAogCiBjbGFzcyBSZWJhc2VsaW5pbmdUZXN0KEJhc2UpOgpAQCAtMzI3
LDcgKzM5MCw4IEBAIEJVR19URVNUIFJFQkFTRUxJTkUgOiBmYWlsdXJlcy9leHBlY3RlZC90ZXh0
Lmh0bWwgPSBURVhUCiAgICAgZGVmIHRlc3RfcmVtb3ZlX2V4cGFuZChzZWxmKToKICAgICAgICAg
c2VsZi5hc3NlcnRSZW1vdmUoJ21hYycsCiAgICAgICAgICAgICAnQlVHWCBSRUJBU0VMSU5FIDog
ZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuJywKLSAgICAgICAgICAgICdCVUdY
IFJFQkFTRUxJTkUgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1sID0gVEVYVFxuJykK
KyAgICAgICAgICAgICdCVUdYIFJFQkFTRUxJTkUgV0lOIDogZmFpbHVyZXMvZXhwZWN0ZWQvdGV4
dC5odG1sID0gVEVYVFxuJworICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSBXSU4tWFAgOiBm
YWlsdXJlcy9leHBlY3RlZC90ZXh0Lmh0bWwgPSBURVhUXG4nKQogCiAgICAgZGVmIHRlc3RfcmVt
b3ZlX21hY193aW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmVtb3ZlKCdtYWMnLApAQCAt
MzQ1LDUgKzQwOSw4NSBAQCBCVUdfVEVTVCBSRUJBU0VMSU5FIDogZmFpbHVyZXMvZXhwZWN0ZWQv
dGV4dC5odG1sID0gVEVYVAogICAgICAgICAgICAgJ1xuXG4nKQogCiAKK2NsYXNzIE1vZGlmaWVy
VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAg
cG9ydF9vYmogPSBwb3J0LmdldCgndGVzdC13aW4teHAnLCBOb25lKQorICAgICAgICBzZWxmLmNv
bmZpZyA9IHBvcnRfb2JqLnRlc3RfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYubWF0Y2hl
ciA9IE1vZGlmaWVyTWF0Y2hlcihzZWxmLmNvbmZpZykKKworICAgIGRlZiBtYXRjaChzZWxmLCBt
b2RpZmllcnMsIGV4cGVjdGVkX251bV9tYXRjaGVzPS0xLCB2YWx1ZXM9Tm9uZSwgbnVtX2Vycm9y
cz0wKToKKyAgICAgICAgbWF0Y2hlciA9IHNlbGYubWF0Y2hlcgorICAgICAgICBpZiB2YWx1ZXM6
CisgICAgICAgICAgICBtYXRjaGVyID0gTW9kaWZpZXJNYXRjaGVyKHNlbGYuRmFrZVRlc3RDb25m
aWd1cmF0aW9uKHZhbHVlcykpCisgICAgICAgIG1hdGNoX3Jlc3VsdCA9IG1hdGNoZXIubWF0Y2go
bW9kaWZpZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYXRjaF9yZXN1bHQud2Fy
bmluZ3MpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYXRjaF9yZXN1bHQuZXJy
b3JzKSwgbnVtX2Vycm9ycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRjaF9yZXN1bHQu
bnVtX21hdGNoZXMsIGV4cGVjdGVkX251bV9tYXRjaGVzLAorICAgICAgICAgICAgICdtYXRjaCgl
cywgJXMpIHJldHVybmVkIC0+ICVkLCBleHBlY3RlZCAlZCcgJQorICAgICAgICAgICAgIChtb2Rp
ZmllcnMsIHN0cihzZWxmLmNvbmZpZy52YWx1ZXMoKSksCisgICAgICAgICAgICAgIG1hdGNoX3Jl
c3VsdC5udW1fbWF0Y2hlcywgZXhwZWN0ZWRfbnVtX21hdGNoZXMpKQorCisgICAgZGVmIHRlc3Rf
YmFkX21hdGNoX21vZGlmaWVyKHNlbGYpOgorICAgICAgICBzZWxmLm1hdGNoKFsnZm9vJ10sIG51
bV9lcnJvcnM9MSkKKworICAgIGRlZiB0ZXN0X25vbmUoc2VsZik6CisgICAgICAgIHNlbGYubWF0
Y2goW10sIDApCisKKyAgICBkZWYgdGVzdF9vbmUoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2go
Wyd4cCddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsnd2luJ10sIDEpCisgICAgICAgIHNlbGYu
bWF0Y2goWydyZWxlYXNlJ10sIDEpCisgICAgICAgIHNlbGYubWF0Y2goWydjcHUnXSwgMSkKKyAg
ICAgICAgc2VsZi5tYXRjaChbJ3g4NiddLCAxKQorICAgICAgICBzZWxmLm1hdGNoKFsnbGVvcGFy
ZCddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ2dwdSddLCAtMSkKKyAgICAgICAgc2VsZi5t
YXRjaChbJ2RlYnVnJ10sIC0xKQorCisgICAgZGVmIHRlc3RfdHdvKHNlbGYpOgorICAgICAgICBz
ZWxmLm1hdGNoKFsneHAnLCAncmVsZWFzZSddLCAyKQorICAgICAgICBzZWxmLm1hdGNoKFsnd2lu
NycsICdyZWxlYXNlJ10sIC0xKQorICAgICAgICBzZWxmLm1hdGNoKFsnd2luNycsICd4cCddLCAx
KQorCisgICAgZGVmIHRlc3RfdGhyZWUoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWyd3aW43
JywgJ3hwJywgJ3JlbGVhc2UnXSwgMikKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ2RlYnVn
JywgJ3g4NiddLCAtMSkKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3JlbGVhc2UnLCAneDg2
J10sIDMpCisgICAgICAgIHNlbGYubWF0Y2goWyd4cCcsICdjcHUnLCAncmVsZWFzZSddLCAzKQor
CisgICAgZGVmIHRlc3RfZm91cihzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ3hwJywgJ3Jl
bGVhc2UnLCAnY3B1JywgJ3g4NiddLCA0KQorICAgICAgICBzZWxmLm1hdGNoKFsnd2luNycsICd4
cCcsICdyZWxlYXNlJywgJ2NwdSddLCAzKQorICAgICAgICBzZWxmLm1hdGNoKFsnd2luNycsICd4
cCcsICdkZWJ1ZycsICdjcHUnXSwgLTEpCisKKyAgICBkZWYgdGVzdF9jYXNlX2luc2Vuc2l0aXZp
dHkoc2VsZik6CisgICAgICAgIHNlbGYubWF0Y2goWydXaW4nXSwgbnVtX2Vycm9ycz0xKQorICAg
ICAgICBzZWxmLm1hdGNoKFsnV0lOJ10sIG51bV9lcnJvcnM9MSkKKyAgICAgICAgc2VsZi5tYXRj
aChbJ3dpbiddLCAxKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlcyhzZWxmKToKKyAgICAgICAg
c2VsZi5tYXRjaChbJ3JlbGVhc2UnLCAncmVsZWFzZSddLCBudW1fZXJyb3JzPTEpCisgICAgICAg
IHNlbGYubWF0Y2goWyd3aW4teHAnLCAneHAnXSwgbnVtX2Vycm9ycz0xKQorICAgICAgICBzZWxm
Lm1hdGNoKFsnd2luLXhwJywgJ3dpbi14cCddLCBudW1fZXJyb3JzPTEpCisgICAgICAgIHNlbGYu
bWF0Y2goWyd4cCcsICdyZWxlYXNlJywgJ3hwJywgJ3JlbGVhc2UnXSwgbnVtX2Vycm9ycz0yKQor
ICAgICAgICBzZWxmLm1hdGNoKFsncmViYXNlbGluZScsICdyZWJhc2VsaW5lJ10sIG51bV9lcnJv
cnM9MSkKKworICAgIGRlZiB0ZXN0X3Vua25vd25fb3B0aW9uKHNlbGYpOgorICAgICAgICBzZWxm
Lm1hdGNoKFsndm1zJ10sIG51bV9lcnJvcnM9MSkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9i
dWdzKHNlbGYpOgorICAgICAgICAjIEJVRyogcmVnZXhlcyBjYW4gYXBwZWFyIG11bHRpcGxlIHRp
bWVzLgorICAgICAgICBzZWxmLm1hdGNoKFsnYnVnZm9vJywgJ2J1Z2JhciddLCAwKQorCisgICAg
ZGVmIHRlc3RfaW52YWxpZF9jb21iaW5hdGlvbnMoc2VsZik6CisgICAgICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIHByb2JhYmx5IHJhaXNlIGFuIGVycm9yIGluc3RlYWQgb2YgTk9fTUFUQ0guCisg
ICAgICAgIHNlbGYubWF0Y2goWydtYWMnLCAneHAnXSwgbnVtX2Vycm9ycz0wKQorCisgICAgZGVm
IHRlc3RfcmVnZXhlc19hcmVfaWdub3JlZChzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChbJ2J1
ZzEyM3h5JywgJ3JlYmFzZWxpbmUnLCAnd29udGZpeCcsICdzbG93JywgJ3NraXAnXSwgMCkKKwor
ICAgIGRlZiB0ZXN0X25vbmVfaXNfaW52YWxpZChzZWxmKToKKyAgICAgICAgc2VsZi5tYXRjaChb
J25vbmUnXSwgbnVtX2Vycm9ycz0xKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg
ICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CmluZGV4
IGIzZjA4MjgwNTgwMWJhYTg3NjZiYWNhMTRjNjBiMjM3YjI2ZjdhMTYuLjZlNGY4YzQ2NTJkYTA5
ZTBmYjM1ZGQ0OGE1NTdlNzBkZDEwMDBiOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVu
bmVyLnB5CkBAIC0yMTQsMjEgKzIxNCwxMyBAQCBjbGFzcyBUZXN0UnVubmVyOgogCiAgICAgZGVm
IGxpbnQoc2VsZik6CiAgICAgICAgIGxpbnRfZmFpbGVkID0gRmFsc2UKLQotICAgICAgICAjIENy
ZWF0aW5nIHRoZSBleHBlY2F0aW9ucyBmb3IgZWFjaCBwbGF0Zm9ybS9jb25maWd1cmF0aW9uIHBh
aXIgZG9lcwotICAgICAgICAjIGFsbCB0aGUgdGVzdCBsaXN0IHBhcnNpbmcgYW5kIGVuc3VyZXMg
aXQncyBjb3JyZWN0IHN5bnRheCAoZS5nLiBubwotICAgICAgICAjIGR1cGVzKS4KLSAgICAgICAg
Zm9yIHBsYXRmb3JtX25hbWUgaW4gc2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWVzKCk6Ci0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZV9leHBlY3RhdGlvbnMo
cGxhdGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZT1UcnVlKQotICAgICAgICAgICAgZXhjZXB0IHRl
c3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbGludF9mYWlsZWQg
PSBUcnVlCisgICAgICAgIGZvciB0ZXN0X2NvbmZpZ3VyYXRpb24gaW4gc2VsZi5fcG9ydC5hbGxf
dGVzdF9jb25maWd1cmF0aW9ucygpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
IHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKHBsYXRmb3JtX25hbWUsIGlzX2RlYnVnX21vZGU9RmFs
c2UpCisgICAgICAgICAgICAgICAgc2VsZi5saW50X2V4cGVjdGF0aW9ucyh0ZXN0X2NvbmZpZ3Vy
YXRpb24pCiAgICAgICAgICAgICBleGNlcHQgdGVzdF9leHBlY3RhdGlvbnMuUGFyc2VFcnJvcjoK
ICAgICAgICAgICAgICAgICBsaW50X2ZhaWxlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxm
Ll9wcmludGVyLndyaXRlKCIiKQogCi0gICAgICAgIHNlbGYuX3ByaW50ZXIud3JpdGUoIiIpCiAg
ICAgICAgIGlmIGxpbnRfZmFpbGVkOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiTGludCBmYWls
ZWQuIikKICAgICAgICAgICAgIHJldHVybiAtMQpAQCAtMjM2LDIyICsyMjgsMjggQEAgY2xhc3Mg
VGVzdFJ1bm5lcjoKICAgICAgICAgX2xvZy5pbmZvKCJMaW50IHN1Y2NlZWRlZC4iKQogICAgICAg
ICByZXR1cm4gMAogCi0gICAgZGVmIHBhcnNlX2V4cGVjdGF0aW9ucyhzZWxmLCB0ZXN0X3BsYXRm
b3JtX25hbWUsIGlzX2RlYnVnX21vZGUpOgorICAgIGRlZiBsaW50X2V4cGVjdGF0aW9ucyhzZWxm
LCBjb25maWcpOgorICAgICAgICBwb3J0ID0gc2VsZi5fcG9ydAorICAgICAgICB0ZXN0X2V4cGVj
dGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zKAorICAgICAgICAgICAgcG9ydCwKKyAgICAgICAgICAg
IE5vbmUsCisgICAgICAgICAgICBwb3J0LnRlc3RfZXhwZWN0YXRpb25zKCksCisgICAgICAgICAg
ICBjb25maWcsCisgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlcywKKyAg
ICAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkpCisKKyAgICBkZWYg
cGFyc2VfZXhwZWN0YXRpb25zKHNlbGYpOgogICAgICAgICAiIiJQYXJzZSB0aGUgZXhwZWN0YXRp
b25zIGZyb20gdGhlIHRlc3RfbGlzdCBmaWxlcyBhbmQgcmV0dXJuIGEgZGF0YQogICAgICAgICBz
dHJ1Y3R1cmUgaG9sZGluZyB0aGVtLiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIHRlc3RfbGlzdCBm
aWxlcyBoYXZlCiAgICAgICAgIGludmFsaWQgc3ludGF4LiIiIgotICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLmxpbnRfdGVzdF9maWxlczoKLSAgICAgICAgICAgIHRlc3RfZmlsZXMgPSBOb25lCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0X2ZpbGVzID0gc2VsZi5fdGVzdF9maWxlcwot
Ci0gICAgICAgIGV4cGVjdGF0aW9uc19zdHIgPSBzZWxmLl9wb3J0LnRlc3RfZXhwZWN0YXRpb25z
KCkKLSAgICAgICAgb3ZlcnJpZGVzX3N0ciA9IHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnNf
b3ZlcnJpZGVzKCkKKyAgICAgICAgcG9ydCA9IHNlbGYuX3BvcnQKICAgICAgICAgc2VsZi5fZXhw
ZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucygKLSAgICAgICAg
ICAgIHNlbGYuX3BvcnQsIHRlc3RfZmlsZXMsIGV4cGVjdGF0aW9uc19zdHIsIHRlc3RfcGxhdGZv
cm1fbmFtZSwKLSAgICAgICAgICAgIGlzX2RlYnVnX21vZGUsIHNlbGYuX29wdGlvbnMubGludF90
ZXN0X2ZpbGVzLAotICAgICAgICAgICAgb3ZlcnJpZGVzPW92ZXJyaWRlc19zdHIpCi0gICAgICAg
IHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnMKKyAgICAgICAgICAgIHBvcnQsCisgICAgICAgICAg
ICBzZWxmLl90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygp
LAorICAgICAgICAgICAgcG9ydC50ZXN0X2NvbmZpZ3VyYXRpb24oKSwKKyAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgcG9ydC50ZXN0X2V4cGVj
dGF0aW9uc19vdmVycmlkZXMoKSkKIAogICAgICMgRklYTUU6IFRoaXMgbWV0aG9kIGlzIHdheSB0
b28gbG9uZyBhbmQgbmVlZHMgdG8gYmUgYnJva2VuIGludG8gcGllY2VzLgogICAgIGRlZiBwcmVw
YXJlX2xpc3RzX2FuZF9wcmludF9vdXRwdXQoc2VsZik6CkBAIC0zNTgsOSArMzU2LDcgQEAgY2xh
c3MgVGVzdFJ1bm5lcjoKICAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVz
ICsgc2tpcF9jaHVua19saXN0CiAgICAgICAgICAgICBzZWxmLl90ZXN0X2ZpbGVzID0gc2V0KHNl
bGYuX3Rlc3RfZmlsZXNfbGlzdCkKIAotICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zID0g
c2VsZi5wYXJzZV9leHBlY3RhdGlvbnMoCi0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC50ZXN0
X3BsYXRmb3JtX25hbWUoKSwKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNvbmZpZ3Vy
YXRpb24gPT0gJ0RlYnVnJykKKyAgICAgICAgICAgIHNlbGYucGFyc2VfZXhwZWN0YXRpb25zKCkK
IAogICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyA9IHNldChmaWxlcykKICAgICAgICAgICAg
IHNlbGYuX3Rlc3RfZmlsZXNfbGlzdCA9IGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZTIyNTdjZWI3NWEyNzU2NmFiYmVj
YjcwZjEzNzcxMTM0ZmUwOTg0MC4uMDVkNzM3ZDlkZWFlN2U1YTc2MzdlYjFjNmI3YWE0YTc0YWQw
ODJiNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQpAQCAtMTIzLDYgKzEyMyw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
c2VsZi5fcHJldHR5X3BhdGNoX2F2YWlsYWJsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKHNl
bGYuX3ByZXR0eV9wYXRjaF9wYXRoKQogICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLl9vcHRp
b25zLCAnY29uZmlndXJhdGlvbicpIG9yIHNlbGYuX29wdGlvbnMuY29uZmlndXJhdGlvbiBpcyBO
b25lOgogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jb25maWd1cmF0aW9uID0gc2VsZi5kZWZh
dWx0X2NvbmZpZ3VyYXRpb24oKQorICAgICAgICBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24gPSBO
b25lCiAKICAgICBkZWYgZGVmYXVsdF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgICIi
IlJldHVybiB0aGUgbnVtYmVyIG9mIER1bXBSZW5kZXJUcmVlIGluc3RhbmNlcyB0byB1c2UgZm9y
IHRoaXMKQEAgLTU3OSw2ICs1ODAsMTkgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICBp
ZiBzZWxmLl9odHRwX2xvY2s6CiAgICAgICAgICAgICBzZWxmLl9odHRwX2xvY2suY2xlYW51cF9o
dHRwX2xvY2soKQogCisgICAgIworICAgICMgVEVTVCBFWFBFQ1RBVElPTi1SRUxBVEVEIE1FVEhP
RFMKKyAgICAjCisKKyAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICAi
IiJSZXR1cm5zIHRoZSBjdXJyZW50IFRlc3RDb25maWd1cmF0aW9uIGZvciB0aGUgcG9ydC4iIiIK
KyAgICAgICAgaWYgbm90IHNlbGYuX3Rlc3RfY29uZmlndXJhdGlvbjoKKyAgICAgICAgICAgIHNl
bGYuX3Rlc3RfY29uZmlndXJhdGlvbiA9IFRlc3RDb25maWd1cmF0aW9uKHNlbGYpCisgICAgICAg
IHJldHVybiBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24KKworICAgIGRlZiBhbGxfdGVzdF9jb25m
aWd1cmF0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGVzdF9jb25maWd1cmF0aW9u
KCkuYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoKQorCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25z
KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgdGhp
cyBwb3J0LgogCkBAIC01OTUsMTggKzYwOSw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAg
ICAgc3luYyB1cCB0aGUgdHdvIHJlcG9zLiIiIgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAg
ZGVmIHRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEg
bGlzdCBvZiB0aGUgJ2Jhc2UnIHBsYXRmb3JtcyBvbiB5b3VyIHBvcnQuIFRoZSBiYXNlCi0gICAg
ICAgIHBsYXRmb3JtcyByZXByZXNlbnQgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMsIG9wZXJhdGlu
ZyBzeXN0ZW1zLAotICAgICAgICBvciBpbXBsZW1lbnRhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZGlm
ZmVyZW50IHZlcnNpb25zIG9mIGEgc2luZ2xlCi0gICAgICAgIHBsYXRmb3JtKS4gRm9yIGV4YW1w
bGUsICdtYWMnIGFuZCAnd2luJyBtaWdodCBiZSBkaWZmZXJlbnQgYmFzZQotICAgICAgICBwbGF0
Zm9ybXMsIHdoZXJlYXNlICdtYWMtdGlnZXInIGFuZCAnbWFjLWxlb3BhcmQnIG1pZ2h0IGJlCi0g
ICAgICAgIGRpZmZlcmVudCBwbGF0Zm9ybXMuIFRoaXMgcm91dGluZSBpcyB1c2VkIGJ5IHRoZSBy
ZWJhc2VsaW5pbmcgdG9vbAotICAgICAgICBhbmQgdGhlIGRhc2hib2FyZHMsIGFuZCB0aGUgc3Ry
aW5ncyBjb3JyZXNwb25kIHRvIHRoZSBpZGVudGlmaWVycwotICAgICAgICBpbiB5b3VyIHRlc3Qg
ZXhwZWN0YXRpb25zICgqbm90KiBuZWNlc3NhcmlseSB0aGUgcGxhdGZvcm0gbmFtZXMKLSAgICAg
ICAgdGhlbXNlbHZlcykuIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ1Bv
cnQuYmFzZV90ZXN0X3BsYXRmb3JtcycpCi0KICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lKHNl
bGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBzdHJpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0
aGUgZ2l2ZW4gcGxhdGZvcm0gbmFtZQogICAgICAgICBpbiB0aGUgdGVzdCBleHBlY3RhdGlvbnMu
IFRoaXMgbWF5IGJlIHRoZSBzYW1lIGFzIG5hbWUoKSwgb3IgaXQKQEAgLTg2NSwzICs4NjcsNjgg
QEAgY2xhc3MgRHJpdmVyOgogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IoJ0RyaXZlci5zdG9wJykKKworCitjbGFzcyBUZXN0Q29uZmlndXJh
dGlvbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0PU5vbmUsIG9zPU5vbmUs
IHZlcnNpb249Tm9uZSwgYXJjaGl0ZWN0dXJlPU5vbmUsCisgICAgICAgICAgICAgICAgIGJ1aWxk
X3R5cGU9Tm9uZSwgZ3JhcGhpY3NfdHlwZT1Ob25lKToKKworICAgICAgICAjIEZJWE1FOiBXZSBj
YW4gZ2V0IHRoZSBPL1MgYW5kIHZlcnNpb24gZnJvbSB0ZXN0X3BsYXRmb3JtX25hbWUoKQorICAg
ICAgICAjIGFuZCB2ZXJzaW9uKCkgZm9yIG5vdywgYnV0IHRob3NlIHNob3VsZCBnbyBhd2F5IGFu
ZCBiZSBjbGVhbmVkIHVwCisgICAgICAgICMgd2l0aCBtb3JlIGdlbmVyaWMgbWV0aG9kcyBsaWtl
IG9wZXJhdGlvbl9zeXN0ZW0oKSBhbmQgb3NfdmVyc2lvbigpCisgICAgICAgICMgb3Igc29tZXRo
aW5nLiBOb3RlIHRoYXQgd2UgbmVlZCB0byBzdHJpcCB0aGUgbGVhZGluZyAnLScgb2ZmIHRoZQor
ICAgICAgICAjIHZlcnNpb24gc3RyaW5nIGlmIGl0IGlzIHByZXNlbnQuCisgICAgICAgIGlmIHBv
cnQ6CisgICAgICAgICAgICBwb3J0X3ZlcnNpb24gPSBwb3J0LnZlcnNpb24oKQorICAgICAgICBz
ZWxmLm9zID0gb3Mgb3IgcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKS5yZXBsYWNlKHBvcnRfdmVy
c2lvbiwgJycpCisgICAgICAgIHNlbGYudmVyc2lvbiA9IHZlcnNpb24gb3IgcG9ydF92ZXJzaW9u
WzE6XQorICAgICAgICBzZWxmLmFyY2hpdGVjdHVyZSA9IGFyY2hpdGVjdHVyZSBvciAneDg2Jwor
ICAgICAgICBzZWxmLmJ1aWxkX3R5cGUgPSBidWlsZF90eXBlIG9yIHBvcnQuX29wdGlvbnMuY29u
ZmlndXJhdGlvbi5sb3dlcigpCisgICAgICAgIHNlbGYuZ3JhcGhpY3NfdHlwZSA9IGdyYXBoaWNz
X3R5cGUgb3IgJ2NwdScKKworICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNl
bGYuX19kaWN0X18uaXRlbXMoKQorCisgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9fZGljdF9fLmtleXMoKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAg
IHJldHVybiAoIjwlKHZlcnNpb24pcywgJShidWlsZF90eXBlKXMsICUoZ3JhcGhpY3NfdHlwZSlz
PiIgJQorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18pCisKKyAgICBkZWYgX19yZXByX18o
c2VsZik6CisgICAgICAgIHJldHVybiAiVGVzdENvbmZpZyhvcz0nJShvcylzJywgdmVyc2lvbj0n
JSh2ZXJzaW9uKXMnLCBhcmNoaXRlY3R1cmU9JyUoYXJjaGl0ZWN0dXJlKXMnLCBidWlsZF90eXBl
PSclKGJ1aWxkX3R5cGUpcycsIGdyYXBoaWNzX3R5cGU9JyUoZ3JhcGhpY3NfdHlwZSlzJykiICUg
c2VsZi5fX2RpY3RfXworCisgICAgZGVmIHZhbHVlcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJu
cyB0aGUgY29uZmlndXJhdGlvbiB2YWx1ZXMgb2YgdGhpcyBpbnN0YW5jZSBhcyBhIHR1cGxlLiIi
IgorICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfXy52YWx1ZXMoKQorCisgICAgZGVmIGFsbF90
ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGEgc2VxdWVuY2Ug
b2YgdGhlIFRlc3RDb25maWd1cmF0aW9ucyB0aGUgcG9ydCBzdXBwb3J0cy4iIiIKKyAgICAgICAg
IyBCeSBkZWZhdWx0LCB3ZSBhc3N1bWUgd2Ugd2FudCB0byB0ZXN0IGV2ZXJ5IGdyYXBoaWNzIHR5
cGUgaW4KKyAgICAgICAgIyBldmVyeSBjb25maWd1cmF0aW9uIG9uIGV2ZXJ5IHN5c3RlbS4KKyAg
ICAgICAgdGVzdF9jb25maWd1cmF0aW9ucyA9IFtdCisgICAgICAgIGZvciBzeXN0ZW0gaW4gc2Vs
Zi5hbGxfc3lzdGVtcygpOgorICAgICAgICAgICAgZm9yIGJ1aWxkX3R5cGUgaW4gc2VsZi5hbGxf
YnVpbGRfdHlwZXMoKToKKyAgICAgICAgICAgICAgICBmb3IgZ3JhcGhpY3NfdHlwZSBpbiBzZWxm
LmFsbF9ncmFwaGljc190eXBlcygpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvbmZpZ3Vy
YXRpb25zLmFwcGVuZChUZXN0Q29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAg
IG9zPXN5c3RlbVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249c3lzdGVtWzFd
LAorICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPXN5c3RlbVsyXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkX3R5cGU9YnVpbGRfdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdyYXBoaWNzX3R5cGU9Z3JhcGhpY3NfdHlwZSkpCisgICAgICAgIHJldHVybiB0
ZXN0X2NvbmZpZ3VyYXRpb25zCisKKyAgICBkZWYgYWxsX3N5c3RlbXMoc2VsZik6CisgICAgICAg
IHJldHVybiAoKCdtYWMnLCAnbGVvcGFyZCcsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ21h
YycsICdzbm93bGVvcGFyZCcsICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dpbicsICd4cCcs
ICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dpbicsICd2aXN0YScsICd4ODYnKSwKKyAgICAg
ICAgICAgICAgICAoJ3dpbicsICd3aW43JywgJ3g4NicpLAorICAgICAgICAgICAgICAgICgnbGlu
dXgnLCAnaGFyZHknLCAneDg2JykpCisKKyAgICBkZWYgYWxsX2J1aWxkX3R5cGVzKHNlbGYpOgor
ICAgICAgICByZXR1cm4gKCdkZWJ1ZycsICdyZWxlYXNlJykKKworICAgIGRlZiBhbGxfZ3JhcGhp
Y3NfdHlwZXMoc2VsZik6CisgICAgICAgIHJldHVybiAoJ2NwdScsICdncHUnKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlX3VuaXR0
ZXN0LnB5CmluZGV4IDE4YjU2OGM4OTNlNmM5MDYyYjcyODYyZGI5NzcwYjFkNmRjOTA4MGIuLmVm
OTA0ODRjYTgzYjE3MTc5NDMwMjBiMWQ0M2M5MmQ3MTY4MDMwODIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2VfdW5pdHRlc3Qu
cHkKQEAgLTI1MCw3ICsyNTAsNiBAQCBjbGFzcyBWaXJ0dWFsVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VmlydHVhbChwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSkK
ICAgICAgICAgc2VsZi5hc3NlcnRWaXJ0dWFsKHBvcnQucmVzdWx0c19kaXJlY3RvcnkpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VmlydHVhbChwb3J0LnRlc3RfZXhwZWN0YXRpb25zKQotICAgICAgICBz
ZWxmLmFzc2VydFZpcnR1YWwocG9ydC50ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VmlydHVhbChwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRWaXJ0dWFsKHBvcnQudGVzdF9wbGF0Zm9ybXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0
VmlydHVhbChwb3J0LnRlc3RfcGxhdGZvcm1fbmFtZV90b19uYW1lLCBOb25lKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW0ucHkKaW5k
ZXggYWQxYmVhNjU4ODgxOWExZDVkNzNkN2E3YWU1MzdjMzQ1Yzk2NGNkYi4uMTc5YTlhNjg0Yjk4
M2RjMGY2NTVkMzEzYTllMWExMDUwMmM0NWM1OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CkBAIC0yNDEsOSArMjQxLDYg
QEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICAjIGh0dHA6Ly9i
dWdzLnB5dGhvbi5vcmcvaXNzdWUxNzMxNzE3CiAgICAgICAgICAgICBzZWxmLl9oZWxwZXIud2Fp
dCgpCiAKLSAgICBkZWYgdGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gKCdsaW51eCcsICdtYWMnLCAnd2luJykKLQogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9u
cyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJucyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZm9yIHRo
aXMgcG9ydC4KIApAQCAtMjczLDE1ICsyNzAsMTQgQEAgY2xhc3MgQ2hyb21pdW1Qb3J0KGJhc2Uu
UG9ydCk6CiAgICAgICAgICAgICBhbGxfdGVzdF9maWxlcy51cGRhdGUoZXh0cmFfdGVzdF9maWxl
cykKIAogICAgICAgICBleHBlY3RhdGlvbnMgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0
YXRpb25zKAotICAgICAgICAgICAgc2VsZiwgYWxsX3Rlc3RfZmlsZXMsIGV4cGVjdGF0aW9uc19z
dHIsIHRlc3RfcGxhdGZvcm1fbmFtZSwKLSAgICAgICAgICAgIGlzX2RlYnVnX21vZGUsIGlzX2xp
bnRfbW9kZT1GYWxzZSwgb3ZlcnJpZGVzPW92ZXJyaWRlc19zdHIpCisgICAgICAgICAgICBzZWxm
LCBhbGxfdGVzdF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgc2VsZi50ZXN0X2NvbmZpZ3VyYXRp
b24oKSwKKyAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSwgb3ZlcnJpZGVzPW92ZXJyaWRl
c19zdHIpCiAgICAgICAgIHRlc3RzX2RpciA9IHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAg
ICAgIHJldHVybiBbc2VsZi5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKHRlc3QpCiAgICAgICAgICAg
ICAgICAgZm9yIHRlc3QgaW4gZXhwZWN0YXRpb25zLmdldF90ZXN0c193aXRoX3Jlc3VsdF90eXBl
KHRlc3RfZXhwZWN0YXRpb25zLlNLSVApXQogCiAgICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFtZXMo
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlc3RfYmFzZV9wbGF0Zm9ybV9uYW1lcygpICsg
KCd3aW4teHAnLAotICAgICAgICAgICAgJ3dpbi12aXN0YScsICd3aW4tNycpCisgICAgICAgIHJl
dHVybiAoJ21hYycsICd3aW4nLCAnbGludXgnLCAnd2luLXhwJywgJ3dpbi12aXN0YScsICd3aW4t
NycpCiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUoc2VsZiwgdGVzdF9wbGF0
Zm9ybV9uYW1lKToKICAgICAgICAgaWYgdGVzdF9wbGF0Zm9ybV9uYW1lIGluIHNlbGYudGVzdF9w
bGF0Zm9ybV9uYW1lcygpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CmluZGV4IDBiMDNiNGMwYTAyZmI4ODlj
NmU3MjNkMjZkMTJjMzg0MTI4YTFlNzEuLjQxNDZkNDA4YTE1YTY3ODk1YWE4MWRmOTcyYmU3NGIw
M2E2NWMzNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvcG9ydF90ZXN0Y2FzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKQEAgLTg4LDMgKzg4LDE1IEBAIGNsYXNzIFBv
cnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICByZXR1cm4KICAgICAg
ICAgcG9ydC5zdGFydF93ZWJzb2NrZXRfc2VydmVyKCkKICAgICAgICAgcG9ydC5zdG9wX3dlYnNv
Y2tldF9zZXJ2ZXIoKQorCisgICAgZGVmIHRlc3RfdGVzdF9jb25maWd1cmF0aW9uKHNlbGYpOgor
ICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBpZiBub3QgcG9ydDoKKyAg
ICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC50ZXN0X2NvbmZp
Z3VyYXRpb24oKSkKKworICAgIGRlZiB0ZXN0X2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYp
OgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBpZiBub3QgcG9ydDoK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHBvcnQuYWxs
X3Rlc3RfY29uZmlndXJhdGlvbnMoKSkgPiAwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CmluZGV4IDY2NjE4YTUyYmE0Y2NlODkyZjJmMTVj
ZjcwYjJiNTc2ZmRmNzlkNDQuLjZkNzFhOTZlNWZkODZlODgxNDg4N2UzNjIxZGM4NTc3YmJjYzUy
ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rl
c3QucHkKQEAgLTIxNSw4ICsyMTUsOCBAQCBjbGFzcyBUZXN0UG9ydChiYXNlLlBvcnQpOgogICAg
ICAgICByZXR1cm4gJ2p1bmsnCiAKICAgICBkZWYgYmFzZWxpbmVfcGF0aChzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwg
J3BsYXRmb3JtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5h
bWUoKSArIHNlbGYudmVyc2lvbigpKQorICAgICAgICAjIFdlIGRvbid0IGJvdGhlciB3aXRoIGEg
ZmFsbGJhY2sgcGF0aC4KKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmxheW91dF90ZXN0c19kaXIoKSwgJ3BsYXRmb3JtJywgc2VsZi5uYW1lKCkpCiAKICAgICBkZWYg
YmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHJldHVybiBbc2VsZi5iYXNlbGlu
ZV9wYXRoKCldCkBAIC0yMjQsNiArMjI0LDkgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJldHVybiBU
cnVlCiAKKyAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgorICAgICAgICByZXR1
cm4gJ1JlbGVhc2UnCisKICAgICBkZWYgZGlmZl9pbWFnZShzZWxmLCBleHBlY3RlZF9jb250ZW50
cywgYWN0dWFsX2NvbnRlbnRzLAogICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWU9Tm9u
ZSk6CiAgICAgICAgIGRpZmZlZCA9IGFjdHVhbF9jb250ZW50cyAhPSBleHBlY3RlZF9jb250ZW50
cwpAQCAtMjYyLDI0ICsyNjUsMjUgQEAgY2xhc3MgVGVzdFBvcnQoYmFzZS5Qb3J0KToKICAgICBk
ZWYgc3RvcF93ZWJzb2NrZXRfc2VydmVyKHNlbGYpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYg
dGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gKCdtYWMnLCAn
d2luJykKLQogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUoc2VsZik6CiAg
ICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnNfcGF0aAogCiAgICAgZGVmIHRlc3RfcGxh
dGZvcm1fbmFtZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbmFtZSA9PSAndGVzdC13aW4nOgot
ICAgICAgICAgICAgcmV0dXJuICd3aW4nCi0gICAgICAgIHJldHVybiAnbWFjJworICAgICAgICBu
YW1lX21hcCA9IHsKKyAgICAgICAgICAgICd0ZXN0LW1hYyc6ICdtYWMnLAorICAgICAgICAgICAg
J3Rlc3Qtd2luJzogJ3dpbicsCisgICAgICAgICAgICAndGVzdC13aW4teHAnOiAnd2luLXhwJywK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmFtZV9tYXBbc2VsZi5fbmFtZV0KIAogICAgIGRl
ZiB0ZXN0X3BsYXRmb3JtX25hbWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2Jh
c2VfcGxhdGZvcm1fbmFtZXMoKQorICAgICAgICByZXR1cm4gKCdtYWMnLCAnd2luJywgJ3dpbi14
cCcpCiAKICAgICBkZWYgdGVzdF9wbGF0Zm9ybV9uYW1lX3RvX25hbWUoc2VsZiwgdGVzdF9wbGF0
Zm9ybV9uYW1lKToKICAgICAgICAgbmFtZV9tYXAgPSB7CiAgICAgICAgICAgICAnbWFjJzogJ3Rl
c3QtbWFjJywKICAgICAgICAgICAgICd3aW4nOiAndGVzdC13aW4nLAorICAgICAgICAgICAgJ3dp
bi14cCc6ICd0ZXN0LXdpbi14cCcsCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5hbWVfbWFw
W3Rlc3RfcGxhdGZvcm1fbmFtZV0KIApAQCAtMzQxLDkgKzM0NSwxOCBAQCBjbGFzcyBUZXN0UG9y
dChiYXNlLlBvcnQpOgogCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3Vua25v
d24gdXJsIHR5cGU6ICVzJyAlIHVyaSkKIAotCiAgICAgZGVmIHZlcnNpb24oc2VsZik6Ci0gICAg
ICAgIHJldHVybiAnJworICAgICAgICB2ZXJzaW9uX21hcCA9IHsKKyAgICAgICAgICAgICd0ZXN0
LXdpbi14cCc6ICcteHAnLAorICAgICAgICAgICAgJ3Rlc3Qtd2luJzogJy03JywKKyAgICAgICAg
ICAgICd0ZXN0LW1hYyc6ICctbGVvcGFyZCcsCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZl
cnNpb25fbWFwW3NlbGYuX25hbWVdCisKKyAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uKHNlbGYp
OgorICAgICAgICBpZiBub3Qgc2VsZi5fdGVzdF9jb25maWd1cmF0aW9uOgorICAgICAgICAgICAg
c2VsZi5fdGVzdF9jb25maWd1cmF0aW9uID0gVGVzdFRlc3RDb25maWd1cmF0aW9uKHNlbGYpCisg
ICAgICAgIHJldHVybiBzZWxmLl90ZXN0X2NvbmZpZ3VyYXRpb24KIAogCiBjbGFzcyBUZXN0RHJp
dmVyKGJhc2UuRHJpdmVyKToKQEAgLTM3OCwzICszOTEsMTAgQEAgY2xhc3MgVGVzdERyaXZlcihi
YXNlLkRyaXZlcik6CiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgcGFzcworCisKK2Ns
YXNzIFRlc3RUZXN0Q29uZmlndXJhdGlvbihiYXNlLlRlc3RDb25maWd1cmF0aW9uKToKKyAgICBk
ZWYgYWxsX3N5c3RlbXMoc2VsZik6CisgICAgICAgIHJldHVybiAoKCdtYWMnLCAnbGVvcGFyZCcs
ICd4ODYnKSwKKyAgICAgICAgICAgICAgICAoJ3dpbicsICd4cCcsICd4ODYnKSwKKyAgICAgICAg
ICAgICAgICAoJ3dpbicsICd3aW43JywgJ3g4NicpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCAzZjAwOTI3ZTNiZGYwMjQz
N2U2ZjE1NTQxMDk5NDhjOGJiOWE2ODc3Li4wYWRlNzU1ZjIwMzdiOTM5MGU5MmNkN2NlMzE1NDJk
YmQwZTQ0MDk1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dlYmtpdC5weQpAQCAtMTgwLDExICsxODAsNiBAQCBjbGFzcyBXZWJLaXRQb3J0KGJh
c2UuUG9ydCk6CiAgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgd29ya2VyX251bWJlcik6CiAg
ICAgICAgIHJldHVybiBXZWJLaXREcml2ZXIoc2VsZiwgd29ya2VyX251bWJlcikKIAotICAgIGRl
ZiB0ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6Ci0gICAgICAgICMgQXQgdGhlIG1vbWVu
dCB3ZSBkb24ndCB1c2UgdGVzdCBwbGF0Zm9ybSBuYW1lcywgYnV0IHdlIGhhdmUKLSAgICAgICAg
IyB0byByZXR1cm4gc29tZXRoaW5nLgotICAgICAgICByZXR1cm4gKCdtYWMnLCAnd2luJykKLQog
ICAgIGRlZiBfdGVzdHNfZm9yX290aGVyX3BsYXRmb3JtcyhzZWxmKToKICAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcignV2ViS2l0UG9ydC5fdGVzdHNfZm9yX290aGVyX3BsYXRmb3Jt
cycpCiAgICAgICAgICMgVGhlIG9yaWdpbmFsIHJ1bi13ZWJraXQtdGVzdHMgYnVpbGRzIHVwIGEg
IndoaXRlbGlzdCIgb2YgdGVzdHMgdG8KQEAgLTMzNyw4ICszMzIsNyBAQCBjbGFzcyBXZWJLaXRQ
b3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lICsgc2VsZi52ZXJzaW9u
KCkKIAogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX25hbWVzKHNlbGYpOgotICAgICAgICByZXR1cm4g
c2VsZi50ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoKSArICgKLSAgICAgICAgICAgICdtYWMtdGln
ZXInLCAnbWFjLWxlb3BhcmQnLCAnbWFjLXNub3dsZW9wYXJkJykKKyAgICAgICAgcmV0dXJuICgn
bWFjJywgJ3dpbicsICdtYWMtdGlnZXInLCAnbWFjLWxlb3BhcmQnLCAnbWFjLXNub3dsZW9wYXJk
JykKIAogICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICByZXR1cm4g
c2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX2NvbmZpZy5idWlsZF9kaXJlY3RvcnkoCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2No
cm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDIxYTE3NjBmNjcw
MTFlMTk5MTNjYmQyNzEzM2RmMzE5ZjMyY2ZkYjguLjU2Nzk3NWNhNzFmZDZhYzM3ZDgyZTNhMmVi
ZDM1NmJjODQyYjQxODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzLnB5CkBAIC0xNTksNiArMTU5LDcgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAg
ICAgICAgc2VsZi5fcG9ydCA9IHJ1bm5pbmdfcG9ydAogICAgICAgICBzZWxmLl9maWxlc3lzdGVt
ID0gcnVubmluZ19wb3J0Ll9maWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0ID0g
dGFyZ2V0X3BvcnQKKwogICAgICAgICBzZWxmLl9yZWJhc2VsaW5lX3BvcnQgPSBwb3J0LmdldCgK
ICAgICAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZV90b19uYW1l
KHBsYXRmb3JtKSwgb3B0aW9ucywKICAgICAgICAgICAgIGZpbGVzeXN0ZW09c2VsZi5fZmlsZXN5
c3RlbSkKQEAgLTE3NCw4ICsxNzUsNyBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAg
ICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9ucyhzZWxmLl9yZWJhc2Vs
aW5lX3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4
cGVjdGF0aW9uc19zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3BsYXRmb3JtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcmViYXNlbGluZV9wb3J0LnRlc3RfY29uZmlndXJhdGlvbigpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKICAg
ICAgICAgc2VsZi5fdXJsX2ZldGNoZXIgPSB1cmxfZmV0Y2hlcgogICAgICAgICBzZWxmLl96aXBf
ZmFjdG9yeSA9IHppcF9mYWN0b3J5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4IGFhY2UwMzZmZTUyMDg3Mjg1ZDIyYjkx
MjE2Y2NiY2RiZGFiZDI2YWMuLjczMDIyMGJlMzc4MmEwODg3MzQxY2RiY2Q3MTE4ODhmMThhMzAy
OWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5CkBAIC03MCw3ICs3MCw3IEBAIGRlZiB0ZXN0X29wdGlvbnMoKToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BsYXRmb3JtPSdjaHJvbWl1bScsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2U9RmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHF1aWV0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwbGF0Zm9ybXM9J21hYyx3aW4nKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwbGF0Zm9ybXM9J21hYyx3aW4sd2luLXhwJykKIAogCiBkZWYgdGVzdF9ob3N0X3Bv
cnRfYW5kX2ZpbGVzeXN0ZW0ob3B0aW9ucywgZXhwZWN0YXRpb25zKToKQEAgLTE4MCw5ICsxODAs
MTEgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
IyBXZSBleHBlY3QgdG8gaGF2ZSB3cml0dGVuIDEyIGZpbGVzIG92ZXIgdGhlIGNvdXJzZSBvZiB0
aGlzIHJlYmFzZWxpbmU6CiAgICAgICAgICMgKikgMyBmaWxlcyBpbiAvX19pbV90bXAgZm9yIHRo
ZSBleHRyYWN0ZWQgYXJjaGl2ZSBtZW1iZXJzCiAgICAgICAgICMgKikgMyBuZXcgYmFzZWxpbmVz
IHVuZGVyICcvdGVzdC5jaGVja291dC9MYXlvdXRUZXN0cycKLSAgICAgICAgIyAqKSAxIHVwZGF0
ZWQgdGVzdF9leHBlY3RhdGlvbnMgZmlsZQogICAgICAgICAjICopIDQgZmlsZXMgaW4gL3RtcCBm
b3IgdGhlIG5ldyBhbmQgb2xkIGJhc2VsaW5lcyBpbiB0aGUgcmVzdWx0IGZpbGUKLSAgICAgICAg
IyAqKSAxIHRleHQgZGlmZiBpbiAvdG1wIGZvciB0aGUgcmVzdWx0IGZpbGUKKyAgICAgICAgIyAg
ICAoLXtvbGQsbmV3fS57dHh0LHBuZ30KKyAgICAgICAgIyAqKSAxIHRleHQgZGlmZiBpbiAvdG1w
IGZvciB0aGUgcmVzdWx0IGZpbGUgKC1kaWZmLnR4dCkuIFdlIGRvbid0CisgICAgICAgICMgICAg
Y3JlYXRlIGltYWdlIGRpZmZzIChGSVhNRT8pIGFuZCBkb24ndCBkaXNwbGF5IHRoZSBjaGVja3N1
bXMuCisgICAgICAgICMgKikgMSB1cGRhdGVkIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmlsZXN5c3RlbS53cml0dGVuX2ZpbGVzKSwgMTIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnXSwgJycpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hlY2tvdXQv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdC1tYWMvZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UtZXhw
ZWN0ZWQuY2hlY2tzdW0nXSwgJ25ldy1pbWFnZS1jaGVja3N1bScpCkBAIC0xOTcsNyArMTk5LDkg
QEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBO
b3RlIHRoYXQgZXZlbiB0aG91Z2ggdGhlIHJlYmFzZWxpbmUgaXMgbWFya2VkIGZvciBhbGwgcGxh
dGZvcm1zLCBlYWNoCiAgICAgICAgICMgcmViYXNlbGluZXIgb25seSBldmVyIGRvZXMgb25lLgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMpLCAx
MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVj
a291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddLCAn
QlVHWCBSRUJBU0VMSU5FIFdJTiA6IGZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLmh0bWwgPSBJTUFH
RVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5j
aGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCdd
LAorICAgICAgICAgICAgJ0JVR1ggUkVCQVNFTElORSBXSU4gOiBmYWlsdXJlcy9leHBlY3RlZC9p
bWFnZS5odG1sID0gSU1BR0VcbicKKyAgICAgICAgICAgICdCVUdYIFJFQkFTRUxJTkUgV0lOLVhQ
IDogZmFpbHVyZXMvZXhwZWN0ZWQvaW1hZ2UuaHRtbCA9IElNQUdFXG4nKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGZpbGVzeXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3Rz
L3BsYXRmb3JtL3Rlc3QtbWFjL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLWV4cGVjdGVkLmNoZWNr
c3VtJ10sICduZXctaW1hZ2UtY2hlY2tzdW0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZp
bGVzeXN0ZW0uZmlsZXNbJy90ZXN0LmNoZWNrb3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL3Rlc3Qt
bWFjL2ZhaWx1cmVzL2V4cGVjdGVkL2ltYWdlLWV4cGVjdGVkLnBuZyddLCAnbmV3LWltYWdlLXBu
ZycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXN5c3RlbS5maWxlc1snL3Rlc3QuY2hl
Y2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vdGVzdC1tYWMvZmFpbHVyZXMvZXhwZWN0ZWQvaW1h
Z2UtZXhwZWN0ZWQudHh0J10sICduZXctaW1hZ2UtdHh0JykKQEAgLTIzNSw5ICsyMzksMTIgQEAg
Y2xhc3MgVGVzdFJlYWxNYWluKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGhvc3Rf
cG9ydF9vYmosIHVybF9mZXRjaGVyLCB6aXBfZmFjdG9yeSwgbW9ja19zY20pCiAgICAgICAgIG9j
LnJlc3RvcmVfb3V0cHV0KCkKIAotICAgICAgICAjIFdlIGV4cGVjdCB0byBoYXZlIHdyaXR0ZW4g
MjQgZmlsZXMgb3ZlciB0aGUgY291cnNlIG9mIHRoaXMgcmViYXNlbGluZToKLSAgICAgICAgIyAy
ICogdGVzdF9hbGxfcGxhdGZvcm1zLCBhYm92ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxl
bihmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMpLCAyNCkKKyAgICAgICAgIyBXZSBleHBlY3QgdG8g
aGF2ZSB3cml0dGVuIDM1IGZpbGVzIG92ZXIgdGhlIGNvdXJzZSBvZiB0aGlzIHJlYmFzZWxpbmU6
CisgICAgICAgICMgKikgMTEgZmlsZXMgKiAzIHBvcnRzIGZvciB0aGUgbmV3IGJhc2VsaW5lcyBh
bmQgdGhlIGRpZmZzIChzZWUgYnJlYWtkb3duCisgICAgICAgICMgICAgdW5kZXIgdGVzdF9vbmVf
cGxhdGZvcm0sIGFib3ZlKQorICAgICAgICAjICopIHRoZSB1cGRhdGVkIHRlc3RfZXhwZWN0YXRp
b25zIGZpbGUKKyAgICAgICAgIyAqKSB0aGUgcmViYXNlbGluZSByZXN1bHRzIGh0bWwgZmlsZQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmaWxlc3lzdGVtLndyaXR0ZW5fZmlsZXMpLCAz
NSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlc3lzdGVtLmZpbGVzWycvdGVzdC5jaGVj
a291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS90ZXN0L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCddLCAn
JykKIAogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCAxMzZlOTk1ZGY2ZDc4ZjE2NTk3NDVjNmNjOGM0YzA4
ZjE4OTJkYjcyLi4wNzRkOWM0NmRiMzUyOTMwODU4Y2M4ZWE0ODU5ZGIzY2JiY2I1MDU0IDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rl
c3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkKQEAgLTk4LDExICs5OCwxMSBAQCBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFy
Z3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0x
CiAgICAgICAgICAgICByYWlzZQogCi0gICAgICAgIHByaW50ZXIucHJpbnRfdXBkYXRlKCJQYXJz
aW5nIGV4cGVjdGF0aW9ucyAuLi4iKQogICAgICAgICBpZiBvcHRpb25zLmxpbnRfdGVzdF9maWxl
czoKICAgICAgICAgICAgIHJldHVybiBydW5uZXIubGludCgpCi0gICAgICAgIHJ1bm5lci5wYXJz
ZV9leHBlY3RhdGlvbnMocG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmNvbmZpZ3VyYXRpb24gPT0gJ0RlYnVnJykKKwor
ICAgICAgICBwcmludGVyLnByaW50X3VwZGF0ZSgiUGFyc2luZyBleHBlY3RhdGlvbnMgLi4uIikK
KyAgICAgICAgcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucygpCiAKICAgICAgICAgcHJpbnRlci5w
cmludF91cGRhdGUoIkNoZWNraW5nIGJ1aWxkIC4uLiIpCiAgICAgICAgIGlmIG5vdCBwb3J0LmNo
ZWNrX2J1aWxkKHJ1bm5lci5uZWVkc19odHRwKCkpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXgg
Yzg2YjMyY2U1NjU3MjQ1ZGY3ZDNmMjgwOTM2OTMzNTllNTk4NmJhNS4uZTM3ZjkwOGI2NGU3ZDVj
ZDIyMDNlNjU5YzdiNTg4NDBjYjVjZjZlYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zLnB5CkBAIC03NSw3
ICs3NSw2IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgIlVzaW5nICd0ZXN0JyBwb3J0LCBidXQgcGxhdGZvcm0tc3BlY2lmaWMg
ZXhwZWN0YXRpb25zICIKICAgICAgICAgICAgICAgICAgICAgICAid2lsbCBmYWlsIHRoZSBjaGVj
ay4iICUgc2VsZi5fZmlsZV9wYXRoKQogICAgICAgICAgICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0
LmdldCgndGVzdCcpCi0gICAgICAgIHNlbGYuX3BvcnRfdG9fY2hlY2sgPSBzZWxmLl9wb3J0X29i
ai50ZXN0X3BsYXRmb3JtX25hbWUoKQogICAgICAgICAjIFN1cHByZXNzIGVycm9yIG1lc3NhZ2Vz
IG9mIHRlc3RfZXhwZWN0YXRpb25zIG1vZHVsZSBzaW5jZSB0aGV5IHdpbGwgYmUKICAgICAgICAg
IyByZXBvcnRlZCBsYXRlci4KICAgICAgICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS4iCkBAIC05MSw3ICs5MCw3IEBAIGNsYXNz
IFRlc3RFeHBlY3RhdGlvbnNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIHRyeToKICAgICAgICAg
ICAgIGV4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnNGaWxl
KAogICAgICAgICAgICAgICAgIHBvcnQ9c2VsZi5fcG9ydF9vYmosIGV4cGVjdGF0aW9ucz1leHBl
Y3RhdGlvbnNfc3RyLCBmdWxsX3Rlc3RfbGlzdD10ZXN0cywKLSAgICAgICAgICAgICAgICB0ZXN0
X3BsYXRmb3JtX25hbWU9c2VsZi5fcG9ydF90b19jaGVjaywgaXNfZGVidWdfbW9kZT1GYWxzZSwK
KyAgICAgICAgICAgICAgICB0ZXN0X2NvbmZpZz1zZWxmLl9wb3J0X29iai50ZXN0X2NvbmZpZ3Vy
YXRpb24oKSwKICAgICAgICAgICAgICAgICBpc19saW50X21vZGU9VHJ1ZSwgb3ZlcnJpZGVzPW92
ZXJyaWRlcykKICAgICAgICAgZXhjZXB0IHRlc3RfZXhwZWN0YXRpb25zLlBhcnNlRXJyb3IsIGVy
cm9yOgogICAgICAgICAgICAgZXJyID0gZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5CmluZGV4IDk4MTdjNWQ3MDJkM2U2NjFlMDZjYjZhZjc2Yzc4YTc1ZTg3YzA3MmQu
Ljg2OTE1NTdlNzE3YzZmOTU5OTQ4MjI0NjFkZmU0NDFkYTQ3MTkyYjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5p
dHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0
X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQpAQCAtODQsMTUgKzg0LDYgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3Zh
bGlkX2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgK
LSAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IFBBU1MiXSwKLSAgICAgICAgICAgICIi
KQotICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMv
dGV4dC5odG1sID0gRkFJTCBQQVNTIl0sCi0gICAgICAgICAgICAiIikKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9IENSQVNI
IFRJTUVPVVQgRkFJTCBQQVNTIl0sCi0gICAgICAgICAgICAiIikKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiQlVHQ1IxMjM0IE1BQyA6IHBhc3Nlcy90ZXh0
Lmh0bWwgPSBQQVNTIEZBSUwiXSwKICAgICAgICAgICAgICIiKQogICAgICAgICBzZWxmLmFzc2Vy
dF9saW5lc19saW50KApAQCAtMTIwLDEyICsxMTEsMTIgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9u
c1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9tb2RpZmllcl9lcnJv
cnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQoCiAgICAgICAgICAgICBb
IkJVRzEyMzQgOiBwYXNzZXMvdGV4dC5odG1sID0gRkFJTCJdLAotICAgICAgICAgICAgJ0J1ZyBt
dXN0IGJlIGVpdGhlciBCVUdDUiwgQlVHV0ssIG9yIEJVR1Y4XyBmb3IgdGVzdDogYnVnMTIzNCBw
YXNzZXMvdGV4dC5odG1sICBbdGVzdC9leHBlY3RhdGlvbnNdIFs1XScpCisgICAgICAgICAgICAi
QlVHXFxkKyBpcyBub3QgYWxsb3dlZCwgbXVzdCBiZSBvbmUgb2YgQlVHQ1JcXGQrLCBCVUdXS1xc
ZCssIEJVR1Y4X1xcZCssIG9yIGEgbm9uLW51bWVyaWMgYnVnIGlkZW50aWZpZXIuIHBhc3Nlcy90
ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X3ZhbGlk
X21vZGlmaWVycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAg
ICAgICAgIFsiSU5WQUxJRC1NT0RJRklFUiA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCi0g
ICAgICAgICAgICAiSW52YWxpZCBtb2RpZmllciBmb3IgdGVzdDogaW52YWxpZC1tb2RpZmllciAi
CisgICAgICAgICAgICAiVW5yZWNvZ25pemVkIG9wdGlvbiAnaW52YWxpZC1tb2RpZmllcicgIgog
ICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikK
ICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgKICAgICAgICAgICAgIFsiU0tJUCA6IHBh
c3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0sCkBAIC0xMzUsMzggKzEyNiwzOCBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25zVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4
cGVjdGF0aW9uX2Vycm9ycyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbGluZXNfbGludCgK
ICAgICAgICAgICAgIFsibWlzc2luZyBleHBlY3RhdGlvbnMiXSwKLSAgICAgICAgICAgICJNaXNz
aW5nIGV4cGVjdGF0aW9ucy4gWydtaXNzaW5nIGV4cGVjdGF0aW9ucyddICBbdGVzdC9leHBlY3Rh
dGlvbnNdIFs1XSIpCisgICAgICAgICAgICAiTWlzc2luZyBhICc6JyBtaXNzaW5nIGV4cGVjdGF0
aW9ucyAgW3Rlc3QvZXhwZWN0YXRpb25zXSBbNV0iKQogICAgICAgICBzZWxmLmFzc2VydF9saW5l
c19saW50KAogICAgICAgICAgICAgWyJTTE9XIDogcGFzc2VzL3RleHQuaHRtbCA9IFRJTUVPVVQi
XSwKICAgICAgICAgICAgICJBIHRlc3QgY2FuIG5vdCBiZSBib3RoIHNsb3cgYW5kIHRpbWVvdXQu
ICIKICAgICAgICAgICAgICJJZiBpdCB0aW1lcyBvdXQgaW5kZWZpbml0ZWx5LCB0aGVuIGl0IHNo
b3VsZCBiZSBqdXN0IHRpbWVvdXQuICIKICAgICAgICAgICAgICJwYXNzZXMvdGV4dC5odG1sICBb
dGVzdC9leHBlY3RhdGlvbnNdIFs1XSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQo
Ci0gICAgICAgICAgICBbImRvZXMvbm90L2V4aXN0Lmh0bWwgPSBGQUlMIl0sCisgICAgICAgICAg
ICBbIkJVR1dLMSA6IGRvZXMvbm90L2V4aXN0Lmh0bWwgPSBGQUlMIl0sCiAgICAgICAgICAgICAi
UGF0aCBkb2VzIG5vdCBleGlzdC4gZG9lcy9ub3QvZXhpc3QuaHRtbCAgW3Rlc3QvZXhwZWN0YXRp
b25zXSBbMl0iKQogCiAgICAgZGVmIHRlc3RfcGFyc2VfZXhwZWN0YXRpb25zKHNlbGYpOgogICAg
ICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJwYXNzZXMvdGV4dC5o
dG1sID0gUEFTUyJdLAorICAgICAgICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0g
UEFTUyJdLAogICAgICAgICAgICAgIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbmVzX2xpbnQo
Ci0gICAgICAgICAgICBbInBhc3Nlcy90ZXh0Lmh0bWwgPSBVTlNVUFBPUlRFRCJdLAorICAgICAg
ICAgICAgWyJCVUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0gVU5TVVBQT1JURUQiXSwKICAgICAg
ICAgICAgICJVbnN1cHBvcnRlZCBleHBlY3RhdGlvbjogdW5zdXBwb3J0ZWQgIgogICAgICAgICAg
ICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKICAgICAgICAg
c2VsZi5hc3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsicGFzc2VzL3RleHQuaHRtbCA9
IFBBU1MgVU5TVVBQT1JURUQiXSwKKyAgICAgICAgICAgIFsiQlVHV0sxIDogcGFzc2VzL3RleHQu
aHRtbCA9IFBBU1MgVU5TVVBQT1JURUQiXSwKICAgICAgICAgICAgICJVbnN1cHBvcnRlZCBleHBl
Y3RhdGlvbjogdW5zdXBwb3J0ZWQgIgogICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwgIFt0
ZXN0L2V4cGVjdGF0aW9uc10gWzVdIikKIAogICAgIGRlZiB0ZXN0X2FscmVhZHlfc2Vlbl90ZXN0
KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF9saW5lc19saW50KAotICAgICAgICAgICAgWyJw
YXNzZXMvdGV4dC5odG1sID0gUEFTUyIsCi0gICAgICAgICAgICAgInBhc3Nlcy90ZXh0Lmh0bWwg
PSBUSU1FT1VUIl0sCi0gICAgICAgICAgICAiRHVwbGljYXRlIGV4cGVjdGF0aW9uLiAlcyAgW3Rl
c3QvZXhwZWN0YXRpb25zXSBbNV0iICUgc2VsZi5fdGVzdF9maWxlKQorICAgICAgICAgICAgWyJC
VUdXSzEgOiBwYXNzZXMvdGV4dC5odG1sID0gUEFTUyIsCisgICAgICAgICAgICAgIkJVR1dLMSA6
IHBhc3Nlcy90ZXh0Lmh0bWwgPSBUSU1FT1VUIl0sCisgICAgICAgICAgICAiRHVwbGljYXRlIG9y
IGFtYmlndW91cyBleHBlY3RhdGlvbi4gJXMgIFt0ZXN0L2V4cGVjdGF0aW9uc10gWzVdIiAlIHNl
bGYuX3Rlc3RfZmlsZSkKIAogICAgIGRlZiB0ZXN0X3RhYihzZWxmKToKICAgICAgICAgc2VsZi5h
c3NlcnRfbGluZXNfbGludCgKLSAgICAgICAgICAgIFsiXHRwYXNzZXMvdGV4dC5odG1sID0gUEFT
UyJdLAorICAgICAgICAgICAgWyJcdEJVR1dLMSA6IHBhc3Nlcy90ZXh0Lmh0bWwgPSBQQVNTIl0s
CiAgICAgICAgICAgICAiTGluZSBjb250YWlucyB0YWIgY2hhcmFjdGVyLiAgW3doaXRlc3BhY2Uv
dGFiXSBbNV0iKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgo=
</data>
<flag name="review"
          id="72180"
          type_id="1"
          status="+"
          setter="mihaip"
    />
          </attachment>
      

    </bug>

</bugzilla>