<?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>36249</bug_id>
          
          <creation_ts>2010-03-17 16:07:23 -0700</creation_ts>
          <short_desc>new-run-webkit-tests should support upstream and downstream expectations</short_desc>
          <delta_ts>2010-03-18 14:22:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>ojan</cc>
    
    <cc>victorw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>201022</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-17 16:07:23 -0700</bug_when>
    <thetext>If you have a port that is built and running out of two repositories like Chromium is, then it can be useful to have both &quot;upstream&quot; and &quot;downstream&quot; expectations in case you make a change downstream (in the Chromium repository) that changes the test results in such a way as to conflict with the upstream baselines and expectations.

There are two ways in which this might happen:

1) If I fix a bug downstream that causes a test expected to fail upstream to no longer fail. In the best case, the test now passes, and we get an &quot;unexpected pass&quot; which is a little annoying but can be ignored. In the worse case, a test goes from a more severe failure to a better failure (crash -&gt; text diff). To address this, either you could check in a downstream baseline, or add a downstream expectation that overrides an upstream expectation.

2) If I make a change downstream that causes a test expected to pass upstream to start failing (or failing worse). Usually, we would revert the downstream change, but sometimes this may not be possible. In this case you can either add a new downstream baseline (which wouldn&apos;t work for a crash or a timeout), or add an overriding expectation.

In both of these cases, adding a new baseline is probably the wrong thing to do. There is a variant on this, where the upstream baseline is actually no longer correct and needs to change.

Ideally all the baselines live in one place, so we&apos;d like to avoid having to create downstream repos if possible. Also, in some cases, working around the problem by changing the baseline either won&apos;t work or is just a subpar thing to do.

So, we should add the ability to override expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201197</commentid>
    <comment_count>1</comment_count>
      <attachid>51007</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-17 23:28:21 -0700</bug_when>
    <thetext>Created attachment 51007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201332</commentid>
    <comment_count>2</comment_count>
      <attachid>51007</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-18 09:17:30 -0700</bug_when>
    <thetext>Comment on attachment 51007
Patch

&gt; +
&gt; +        if not self._suppress_errors and (
&gt; +            len(self._errors) or len(self._non_fatal_errors)):
&gt; +            if self._is_debug_mode:
&gt; +                build_type = &apos;DEBUG&apos;
&gt; +            else:
&gt; +                build_type = &apos;RELEASE&apos;
&gt; +            _log.error(&apos;&apos;)
&gt; +            _log.error(&quot;FAILURES FOR PLATFORM: %s, BUILD_TYPE: %s&quot; %
&gt; +                       (self._test_platform_name.upper(), build_type))
&gt; +
&gt; +            for error in self._non_fatal_errors:
&gt; +                _log.error(error)
&gt; +            _log.error(&apos;&apos;)
&gt; +
&gt; +            if len(self._errors):
&gt; +                raise SyntaxError(&apos;\n&apos;.join(map(str, self._errors)))
&gt; +
&gt; +
&gt; +        # Now add in the tests that weren&apos;t present in the expectations file.
&gt; +        expectations = set([PASS])
&gt; +        options = []
&gt; +        modifiers = []
&gt; +        if self._full_test_list:
&gt; +            for test in self._full_test_list:
&gt; +                if not test in self._test_list_paths:
&gt; +                    self._add_test(test, modifiers, expectations, options,
&gt; +                        overrides_allowed=False)

I know you&apos;re just moving this code, but maybe move these into helper functions (e.g. logErrors() and addTestsExpectedToPass())? I&apos;m more allergic to large blocks of code in constructors. 

&gt; +++ b/WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations_test.py

unittests!!! awesome.

&gt; +++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/base.py
&gt; @@ -437,6 +437,15 @@ class Port(object):
&gt;          test_expectations file. See test_expectations.py for more details.&quot;&quot;&quot;
&gt;          raise NotImplementedError(&apos;Port.test_expectations&apos;)
&gt;  
&gt; +    def test_expectations_overrides(self):
&gt; +        &quot;&quot;&quot;Returns an optional set of overrides for the test_expectations.
&gt; +
&gt; +        This is used by ports that have code in two repositories, and where
&gt; +        is is possible that you might need &quot;downstream&quot; expectations that

s/is is/it is

&gt; +        temporarily override the &quot;upstream&quot; expectations until the port can
&gt; +        sync up the two repos.&quot;&quot;&quot;
&gt; +        return None
&gt; +
&gt;      def test_base_platform_names(self):
&gt;          &quot;&quot;&quot;Return a list of the &apos;base&apos; platforms on your port. The base
&gt;          platforms represent different architectures, operating systems,
&gt; diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py
&gt; index 13caf4a..3ada317 100644
&gt; --- a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py
&gt; +++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium.py
&gt; @@ -114,8 +114,8 @@ class ChromiumPort(base.Port):
&gt;          return os.path.join(self._chromium_base_dir, *comps)
&gt;  
&gt;      def path_to_test_expectations_file(self):
&gt; -        return self.path_from_chromium_base(&apos;webkit&apos;, &apos;tools&apos;, &apos;layout_tests&apos;,
&gt; -                                            &apos;test_expectations.txt&apos;)
&gt; +        return self.path_from_webkit_base(&apos;LayoutTests&apos;, &apos;platform&apos;,
&gt; +            &apos;chromium&apos;, &apos;test_expectations.txt&apos;)

Did you mean to include this in this patch? Seems like this should go along with actually upstreaming the file.

&gt;      def results_directory(self):
&gt;          return self.path_from_chromium_base(&apos;webkit&apos;, self._options.target,
&gt; @@ -163,7 +163,20 @@ class ChromiumPort(base.Port):
&gt;          Basically this string should contain the equivalent of a
&gt;          test_expectations file. See test_expectations.py for more details.&quot;&quot;&quot;
&gt;          expectations_file = self.path_to_test_expectations_file()
&gt; -        return file(expectations_file, &quot;r&quot;).read()
&gt; +        if os.path.exists(expectations_file):
&gt; +            return file(expectations_file, &quot;r&quot;).read()
&gt; +        else:
&gt; +            return &apos;&apos;

We should fail hard if the expectations file doesn&apos;t exist. Until we upstream the expectations file itself, lets keep pointing at the downstream one so we don&apos;t have this problem. Or, you could create an empty expectations file upstream, but it seems weird to me that in the limbo period, the overrides file will be the primary expectations file.

&gt; diff --git a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py
&gt; index e147bfd..a3ce15f 100644
&gt; --- a/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py
&gt; +++ b/WebKitTools/Scripts/webkitpy/layout_tests/port/chromium_linux.py
&gt; @@ -51,8 +51,11 @@ class ChromiumLinuxPort(chromium.ChromiumPort):
&gt;          chromium.ChromiumPort.__init__(self, port_name, options)
&gt;  
&gt;      def baseline_search_path(self):
&gt; -        return [self.baseline_path(),
&gt; +        return [self._chromium_baseline_path(&apos;chromium-linux&apos;),
&gt;                  self._chromium_baseline_path(&apos;chromium-win&apos;),
&gt; +                self._webkit_baseline_path(&apos;chromium-linux&apos;),
&gt; +                self._webkit_baseline_path(&apos;chromium-win&apos;),
&gt; +                self._webkit_baseline_path(&apos;chromium&apos;),

This patch is doing two different things.
1. Allowing for an overrides expectations file.
2. Preparing to move test results upstream.

In the future, it would be easier to separate these out into separate patches. It makes each patch easier to review and makes debugging any regressions easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201533</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-18 13:46:14 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I know you&apos;re just moving this code, but maybe move these into helper functions
&gt; (e.g. logErrors() and addTestsExpectedToPass())? I&apos;m more allergic to large
&gt; blocks of code in constructors. 
&gt; 

Yeah, I realized last night after I submitted this patch that I needed to do this, too. Done.

&gt; 
&gt; s/is is/it is
&gt;

Done.
 
&gt; &gt;      def path_to_test_expectations_file(self):
&gt; &gt; -        return self.path_from_chromium_base(&apos;webkit&apos;, &apos;tools&apos;, &apos;layout_tests&apos;,
&gt; &gt; -                                            &apos;test_expectations.txt&apos;)
&gt; &gt; +        return self.path_from_webkit_base(&apos;LayoutTests&apos;, &apos;platform&apos;,
&gt; &gt; +            &apos;chromium&apos;, &apos;test_expectations.txt&apos;)
&gt; 
&gt; Did you mean to include this in this patch? Seems like this should go along
&gt; with actually upstreaming the file.

I did mean to do this because I wanted to ensure that I could move the baselines and expectations
files without needing to change the driver scripts, but this should&apos;ve been a separate CL (along w/ 
the changes in the baseline paths). I&apos;ve rolled this out for now.
 
&gt; This patch is doing two different things.
&gt; 1. Allowing for an overrides expectations file.
&gt; 2. Preparing to move test results upstream.
&gt; 
&gt; In the future, it would be easier to separate these out into separate patches.
&gt; It makes each patch easier to review and makes debugging any regressions
&gt; easier.

Agreed. I got lazy last night. I&apos;ve split it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201536</commentid>
    <comment_count>4</comment_count>
      <attachid>51087</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-18 13:50:41 -0700</bug_when>
    <thetext>Created attachment 51087
Revise w/ Ojan&apos;s feedback - don&apos;t change expectations and baseline paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201539</commentid>
    <comment_count>5</comment_count>
      <attachid>51088</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-18 13:51:42 -0700</bug_when>
    <thetext>Created attachment 51088
Update Changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201548</commentid>
    <comment_count>6</comment_count>
      <attachid>51088</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-03-18 14:02:23 -0700</bug_when>
    <thetext>Comment on attachment 51088
Update Changelog

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201556</commentid>
    <comment_count>7</comment_count>
      <attachid>51088</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-03-18 14:20:30 -0700</bug_when>
    <thetext>Comment on attachment 51088
Update Changelog

rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>201559</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-03-18 14:22:14 -0700</bug_when>
    <thetext>Committed r56193: &lt;http://trac.webkit.org/changeset/56193&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51007</attachid>
            <date>2010-03-17 23:28:21 -0700</date>
            <delta_ts>2010-03-18 13:50:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36249-20100317232820.patch</filename>
            <type>text/plain</type>
            <size>24524</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBiZTBmNzY5Li44Njc2NTRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDMt
MTcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBjb25jZXB0IG9mIGFuICJv
dmVycmlkZXMiIGZpbGUgZm9yIGV4cGVjdGF0aW9ucyBzbyB0aGF0IHdlCisgICAgICAgIGNhbiBz
dG9yZSB0ZXN0X2V4cGVjdGF0aW9ucyBib3RoIHVwc3RyZWFtIGFuZCBkb3duc3RyZWFtIGZvciBh
IHBvcnQKKyAgICAgICAgdGhhdCBydW5zIGJvdGggaW4gd2Via2l0Lm9yZyBhbmQgaW4gYSBzZXBh
cmF0ZSByZXBvc2l0b3J5IChsaWtlCisgICAgICAgIENocm9taXVtKS4gQWxzbyBhZGQgc29tZSB1
bml0IHRlc3RzIGZvciB0aGUgZXhwZWN0YXRpb25zIG1vZHVsZS4KKworICAgICAgICBBbHNvLCBt
b2RpZnkgdGhlIGNocm9taXVtIGJhc2VsaW5lIHBhdGhzIHRvIHNlYXJjaCBib3RoIHVwc3RyZWFt
CisgICAgICAgIGFuZCBkb3duc3RyZWFtIGZvciBjaHJvbWl1bSBleHBlY3RhdGlvbnMuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2MjQ5CisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0
X2V4cGVjdGF0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc190ZXN0LnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bS5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
bWFjLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fd2luLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHk6CisKIDIwMTAtMDMtMTIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQppbmRl
eCAxOTIzMDdlLi5hODJjNjI4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtNTMsNyArNTMsOCBAQCBjbGFzcyBUZXN0RXhwZWN0
YXRpb25zOgogICAgIFRFU1RfTElTVCA9ICJ0ZXN0X2V4cGVjdGF0aW9ucy50eHQiCiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydCwgdGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9wbGF0Zm9y
bV9uYW1lLAotICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBpc19saW50X21vZGUsIHRl
c3RzX2FyZV9wcmVzZW50PVRydWUpOgorICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBp
c19saW50X21vZGUsIHRlc3RzX2FyZV9wcmVzZW50PVRydWUsCisgICAgICAgICAgICAgICAgIG92
ZXJyaWRlcz1Ob25lKToKICAgICAgICAgIiIiTG9hZHMgYW5kIHBhcnNlcyB0aGUgdGVzdCBleHBl
Y3RhdGlvbnMgZ2l2ZW4gaW4gdGhlIHN0cmluZy4KICAgICAgICAgQXJnczoKICAgICAgICAgICAg
IHBvcnQ6IGhhbmRsZSB0byBvYmplY3QgY29udGFpbmluZyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5j
dGlvbmFsaXR5CkBAIC03MCwxMCArNzEsMTQgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uczoKICAg
ICAgICAgICAgICAgICBzeXN0ZW0gYW5kIGNhbiBiZSBwcm9iZWQgZm9yLiBUaGlzIGlzIHVzZWZ1
bCBmb3IgZGlzdGluZ3Vpc2hpbmcKICAgICAgICAgICAgICAgICB0ZXN0IGZpbGVzIGZyb20gZGly
ZWN0b3JpZXMsIGFuZCBpcyBuZWVkZWQgYnkgdGhlIExUVEYKICAgICAgICAgICAgICAgICBkYXNo
Ym9hcmQsIHdoZXJlIHRoZSBmaWxlcyBhcmVuJ3QgYWN0dWFsbHkgbG9jYWxseSBwcmVzZW50Lgor
ICAgICAgICAgICAgb3ZlcnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0aGF0IGFyZSBhbGxvd2Vk
IHRvIG92ZXJyaWRlIGFueQorICAgICAgICAgICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0aW9u
c3wuIFRoaXMgaXMgdXNlZCBieSBjYWxsZXJzCisgICAgICAgICAgICAgICAgdGhhdCBuZWVkIHRv
IG1hbmFnZSB0d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVwc3RyZWFtCisgICAgICAg
ICAgICAgICAgYW5kIGRvd25zdHJlYW0gZXhwZWN0YXRpb25zKS4KICAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzID0gVGVzdEV4cGVjdGF0aW9uc0ZpbGUocG9ydCwg
ZXhwZWN0YXRpb25zLAogICAgICAgICAgICAgdGVzdHMsIHRlc3RfcGxhdGZvcm1fbmFtZSwgaXNf
ZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLAotICAgICAgICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ9
dGVzdHNfYXJlX3ByZXNlbnQpCisgICAgICAgICAgICB0ZXN0c19hcmVfcHJlc2VudD10ZXN0c19h
cmVfcHJlc2VudCwgb3ZlcnJpZGVzPW92ZXJyaWRlcykKIAogICAgICMgVE9ETyhvamFuKTogQWxs
b3cgZm9yIHJlbW92aW5nIHNraXBwZWQgdGVzdHMgd2hlbiBnZXR0aW5nIHRoZSBsaXN0IG9mCiAg
ICAgIyB0ZXN0cyB0byBydW4sIGJ1dCBub3Qgd2hlbiBnZXR0aW5nIG1ldHJpY3MuCkBAIC0yNjQs
NyArMjY5LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICBkZWYgX19pbml0
X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rlc3RfbGlzdCwgdGVzdF9wbGF0Zm9y
bV9uYW1lLAogICAgICAgICBpc19kZWJ1Z19tb2RlLCBpc19saW50X21vZGUsIHN1cHByZXNzX2Vy
cm9ycz1GYWxzZSwKLSAgICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ9VHJ1ZSk6CisgICAgICAgIHRl
c3RzX2FyZV9wcmVzZW50PVRydWUsIG92ZXJyaWRlcz1Ob25lKToKICAgICAgICAgIiIiCiAgICAg
ICAgIGV4cGVjdGF0aW9uczogQ29udGVudHMgb2YgdGhlIGV4cGVjdGF0aW9ucyBmaWxlCiAgICAg
ICAgIGZ1bGxfdGVzdF9saXN0OiBUaGUgbGlzdCBvZiBhbGwgdGVzdHMgdG8gYmUgcnVuIHBlbmRp
bmcgcHJvY2Vzc2luZyBvZgpAQCAtMjc4LDYgKzI4MywxMCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRp
b25zRmlsZToKICAgICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ6IFdoZXRoZXIgdGhlIHRlc3QgZmls
ZXMgYXJlIHByZXNlbnQgaW4gdGhlIGxvY2FsCiAgICAgICAgICAgICBmaWxlc3lzdGVtLiBUaGUg
TFRURiBEYXNoYm9hcmQgdXNlcyBGYWxzZSBoZXJlIHRvIGF2b2lkIGhhdmluZyB0bwogICAgICAg
ICAgICAga2VlcCBhIGxvY2FsIGNvcHkgb2YgdGhlIHRyZWUuCisgICAgICAgIG92ZXJyaWRlczog
dGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSBhbnkKKyAgICAg
ICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0aW9uc3wuIFRoaXMgaXMgdXNlZCBieSBjYWxsZXJz
CisgICAgICAgICAgICB0aGF0IG5lZWQgdG8gbWFuYWdlIHR3byBzZXRzIG9mIGV4cGVjdGF0aW9u
cyAoZS5nLiwgdXBzdHJlYW0KKyAgICAgICAgICAgIGFuZCBkb3duc3RyZWFtIGV4cGVjdGF0aW9u
cykuCiAgICAgICAgICIiIgogCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CkBAIC0yODcsNiAr
Mjk2LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgIHNlbGYuX2lzX2Rl
YnVnX21vZGUgPSBpc19kZWJ1Z19tb2RlCiAgICAgICAgIHNlbGYuX2lzX2xpbnRfbW9kZSA9IGlz
X2xpbnRfbW9kZQogICAgICAgICBzZWxmLl90ZXN0c19hcmVfcHJlc2VudCA9IHRlc3RzX2FyZV9w
cmVzZW50CisgICAgICAgIHNlbGYuX292ZXJyaWRlcyA9IG92ZXJyaWRlcwogICAgICAgICBzZWxm
Ll9zdXBwcmVzc19lcnJvcnMgPSBzdXBwcmVzc19lcnJvcnMKICAgICAgICAgc2VsZi5fZXJyb3Jz
ID0gW10KICAgICAgICAgc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycyA9IFtdCkBAIC0zMTQsNyArMzI0
LDQ4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICBzZWxmLl90aW1lbGlu
ZV90b190ZXN0cyA9IHNlbGYuX2RpY3Rfb2Zfc2V0cyhzZWxmLlRJTUVMSU5FUykKICAgICAgICAg
c2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHMgPSBzZWxmLl9kaWN0X29mX3NldHMoc2VsZi5SRVNV
TFRfVFlQRVMpCiAKLSAgICAgICAgc2VsZi5fcmVhZChzZWxmLl9nZXRfaXRlcmFibGVfZXhwZWN0
YXRpb25zKCkpCisgICAgICAgIHNlbGYuX3JlYWQoc2VsZi5fZ2V0X2l0ZXJhYmxlX2V4cGVjdGF0
aW9ucyhzZWxmLl9leHBlY3RhdGlvbnMpLAorICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19h
bGxvd2VkPUZhbHNlKQorCisgICAgICAgICMgTGlzdCBvZiB0ZXN0cyB0aGF0IGFyZSBpbiB0aGUg
b3ZlcnJpZGVzIGZpbGUgKHVzZWQgZm9yIGNoZWNraW5nIGZvcgorICAgICAgICAjIGR1cGxpY2F0
ZXMgaW5zaWRlIHRoZSBvdmVycmlkZXMgZmlsZSBpdHNlbGYpLiBOb3RlIHRoYXQganVzdCBiZWNh
dXNlCisgICAgICAgICMgYSB0ZXN0IGlzIGluIHRoaXMgc2V0IGRvZXNuJ3QgbWVhbiBpdCdzIG5l
Y2Vzc2FyaWx5IG92ZXJyaWRkaW5nIGEKKyAgICAgICAgIyBleHBlY3RhdGlvbiBpbiB0aGUgcmVn
dWxhciBleHBlY3RhdGlvbnM7IHRoZSB0ZXN0IG1pZ2h0IG5vdCBiZQorICAgICAgICAjIG1lbnRp
b25lZCBpbiB0aGUgcmVndWxhciBleHBlY3RhdGlvbnMgZmlsZSBhdCBhbGwuCisgICAgICAgIHNl
bGYuX292ZXJyaWRkaW5nX3Rlc3RzID0gc2V0KCkKKworICAgICAgICBpZiBvdmVycmlkZXM6Cisg
ICAgICAgICAgICBzZWxmLl9yZWFkKHNlbGYuX2dldF9pdGVyYWJsZV9leHBlY3RhdGlvbnMoc2Vs
Zi5fb3ZlcnJpZGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ9
VHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5fc3VwcHJlc3NfZXJyb3JzIGFuZCAoCisgICAg
ICAgICAgICBsZW4oc2VsZi5fZXJyb3JzKSBvciBsZW4oc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycykp
OgorICAgICAgICAgICAgaWYgc2VsZi5faXNfZGVidWdfbW9kZToKKyAgICAgICAgICAgICAgICBi
dWlsZF90eXBlID0gJ0RFQlVHJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBi
dWlsZF90eXBlID0gJ1JFTEVBU0UnCisgICAgICAgICAgICBfbG9nLmVycm9yKCcnKQorICAgICAg
ICAgICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9SIFBMQVRGT1JNOiAlcywgQlVJTERfVFlQRTog
JXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3Rlc3RfcGxhdGZvcm1fbmFtZS51
cHBlcigpLCBidWlsZF90eXBlKSkKKworICAgICAgICAgICAgZm9yIGVycm9yIGluIHNlbGYuX25v
bl9mYXRhbF9lcnJvcnM6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikKKyAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJycpCisKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMp
OgorICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCdcbicuam9pbihtYXAoc3RyLCBz
ZWxmLl9lcnJvcnMpKSkKKworCisgICAgICAgICMgTm93IGFkZCBpbiB0aGUgdGVzdHMgdGhhdCB3
ZXJlbid0IHByZXNlbnQgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxlLgorICAgICAgICBleHBlY3Rh
dGlvbnMgPSBzZXQoW1BBU1NdKQorICAgICAgICBvcHRpb25zID0gW10KKyAgICAgICAgbW9kaWZp
ZXJzID0gW10KKyAgICAgICAgaWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CisgICAgICAgICAgICBm
b3IgdGVzdCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKKyAgICAgICAgICAgICAgICBpZiBub3Qg
dGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ9RmFsc2UpCisKIAogICAgIGRlZiBf
ZGljdF9vZl9zZXRzKHNlbGYsIHN0cmluZ3NfdG9fY29uc3RhbnRzKToKICAgICAgICAgIiIiVGFr
ZXMgYSBkaWN0IG9mIHN0cmluZ3MtPmNvbnN0YW50cyBhbmQgcmV0dXJucyBhIGRpY3QgbWFwcGlu
ZwpAQCAtMzI0LDEyICszNzUsMTEgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAg
ICAgICAgICBkW2NdID0gc2V0KCkKICAgICAgICAgcmV0dXJuIGQKIAotICAgIGRlZiBfZ2V0X2l0
ZXJhYmxlX2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICBkZWYgX2dldF9pdGVyYWJsZV9leHBlY3Rh
dGlvbnMoc2VsZiwgZXhwZWN0YXRpb25zX3N0cik6CiAgICAgICAgICIiIlJldHVybnMgYW4gb2Jq
ZWN0IHRoYXQgY2FuIGJlIGl0ZXJhdGVkIG92ZXIuIEFsbG93cyBmb3Igbm90IGNhcmluZwogICAg
ICAgICBhYm91dCB3aGV0aGVyIHdlJ3JlIGl0ZXJhdGluZyBvdmVyIGEgZmlsZSBvciBhIG5ldy1s
aW5lIHNlcGFyYXRlZAogICAgICAgICBzdHJpbmcuIiIiCi0gICAgICAgIGl0ZXJhYmxlID0gW3gg
KyAiXG4iIGZvciB4IGluCi0gICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMuc3BsaXQoIlxu
IildCisgICAgICAgIGl0ZXJhYmxlID0gW3ggKyAiXG4iIGZvciB4IGluIGV4cGVjdGF0aW9uc19z
dHIuc3BsaXQoIlxuIildCiAgICAgICAgICMgU3RyaXAgZmluYWwgZW50cnkgaWYgaXQncyBlbXB0
eSB0byBhdm9pZCBhZGRlZCBpbiBhbiBleHRyYQogICAgICAgICAjIG5ld2xpbmUuCiAgICAgICAg
IGlmIGl0ZXJhYmxlWy0xXSA9PSAiXG4iOgpAQCAtNTc3LDcgKzYyNyw3IEBAIGNsYXNzIFRlc3RF
eHBlY3RhdGlvbnNGaWxlOgogICAgICAgICBzZWxmLl9hbGxfZXhwZWN0YXRpb25zW3Rlc3RdLmFw
cGVuZCgKICAgICAgICAgICAgIE1vZGlmaWVyc0FuZEV4cGVjdGF0aW9ucyhvcHRpb25zLCBleHBl
Y3RhdGlvbnMpKQogCi0gICAgZGVmIF9yZWFkKHNlbGYsIGV4cGVjdGF0aW9ucyk6CisgICAgZGVm
IF9yZWFkKHNlbGYsIGV4cGVjdGF0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICAi
IiJGb3IgZWFjaCB0ZXN0IGluIGFuIGV4cGVjdGF0aW9ucyBpdGVyYWJsZSwgZ2VuZXJhdGUgdGhl
CiAgICAgICAgIGV4cGVjdGF0aW9ucyBmb3IgaXQuIiIiCiAgICAgICAgIGxpbmVubyA9IDAKQEAg
LTYyOCwzMyArNjc4LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAg
ICAgICAgdGVzdHMgPSBzZWxmLl9leHBhbmRfdGVzdHModGVzdF9saXN0X3BhdGgpCiAKICAgICAg
ICAgICAgIHNlbGYuX2FkZF90ZXN0cyh0ZXN0cywgZXhwZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0
aCwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCBvcHRpb25z
KQotCi0gICAgICAgIGlmIG5vdCBzZWxmLl9zdXBwcmVzc19lcnJvcnMgYW5kICgKLSAgICAgICAg
ICAgIGxlbihzZWxmLl9lcnJvcnMpIG9yIGxlbihzZWxmLl9ub25fZmF0YWxfZXJyb3JzKSk6Ci0g
ICAgICAgICAgICBpZiBzZWxmLl9pc19kZWJ1Z19tb2RlOgotICAgICAgICAgICAgICAgIGJ1aWxk
X3R5cGUgPSAnREVCVUcnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1aWxk
X3R5cGUgPSAnUkVMRUFTRScKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAgICAg
ICBfbG9nLmVycm9yKCJGQUlMVVJFUyBGT1IgUExBVEZPUk06ICVzLCBCVUlMRF9UWVBFOiAlcyIg
JQotICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lLnVwcGVy
KCksIGJ1aWxkX3R5cGUpKQotCi0gICAgICAgICAgICBmb3IgZXJyb3IgaW4gc2VsZi5fbm9uX2Zh
dGFsX2Vycm9yczoKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGVycm9yKQotICAgICAgICAg
ICAgX2xvZy5lcnJvcignJykKLQotICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9ycyk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoJ1xuJy5qb2luKG1hcChzdHIsIHNlbGYu
X2Vycm9ycykpKQotCi0gICAgICAgICMgTm93IGFkZCBpbiB0aGUgdGVzdHMgdGhhdCB3ZXJlbid0
IHByZXNlbnQgaW4gdGhlIGV4cGVjdGF0aW9ucyBmaWxlCi0gICAgICAgIGV4cGVjdGF0aW9ucyA9
IHNldChbUEFTU10pCi0gICAgICAgIG9wdGlvbnMgPSBbXQotICAgICAgICBtb2RpZmllcnMgPSBb
XQotICAgICAgICBpZiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKLSAgICAgICAgICAgIGZvciB0ZXN0
IGluIHNlbGYuX2Z1bGxfdGVzdF9saXN0OgotICAgICAgICAgICAgICAgIGlmIG5vdCB0ZXN0IGlu
IHNlbGYuX3Rlc3RfbGlzdF9wYXRoczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkX3Rl
c3QodGVzdCwgbW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKQogCiAg
ICAgZGVmIF9nZXRfb3B0aW9uc19saXN0KHNlbGYsIGxpc3RTdHJpbmcpOgogICAgICAgICByZXR1
cm4gW3BhcnQuc3RyaXAoKS5sb3dlcigpIGZvciBwYXJ0IGluIGxpc3RTdHJpbmcuc3RyaXAoKS5z
cGxpdCgnICcpXQpAQCAtNjk4LDE1ICs3MjIsMTggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0Zp
bGU6CiAgICAgICAgIHJldHVybiBwYXRoCiAKICAgICBkZWYgX2FkZF90ZXN0cyhzZWxmLCB0ZXN0
cywgZXhwZWN0YXRpb25zLCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAotICAgICAgICAgICAgICAg
ICAgIG1vZGlmaWVycywgb3B0aW9ucyk6CisgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCBv
cHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCk6CiAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgot
ICAgICAgICAgICAgaWYgc2VsZi5fYWxyZWFkeV9zZWVuX3Rlc3QodGVzdCwgdGVzdF9saXN0X3Bh
dGgsIGxpbmVubyk6CisgICAgICAgICAgICBpZiBzZWxmLl9hbHJlYWR5X3NlZW5fdGVzdCh0ZXN0
LCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
ICAgICAgICAgICAgIHNlbGYuX2NsZWFyX2V4cGVjdGF0aW9uc19mb3JfdGVzdCh0ZXN0LCB0ZXN0
X2xpc3RfcGF0aCkKLSAgICAgICAgICAgIHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywg
ZXhwZWN0YXRpb25zLCBvcHRpb25zKQorICAgICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwg
bW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvdmVycmlkZXNfYWxsb3dlZCkKIAotICAgIGRlZiBfYWRkX3Rlc3Qoc2VsZiwgdGVzdCwg
bW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMpOgorICAgIGRlZiBfYWRkX3Rlc3Qoc2Vs
ZiwgdGVzdCwgbW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9wdGlvbnMsCisgICAgICAgICAgICAg
ICAgICBvdmVycmlkZXNfYWxsb3dlZCk6CiAgICAgICAgICIiIlNldHMgdGhlIGV4cGVjdGVkIHN0
YXRlIGZvciBhIGdpdmVuIHRlc3QuCiAKICAgICAgICAgVGhpcyByb3V0aW5lIGFzc3VtZXMgdGhl
IHRlc3QgaGFzIG5vdCBiZWVuIGFkZGVkIGJlZm9yZS4gSWYgaXQgaGFzLApAQCAtNzE3LDcgKzc0
NCw5IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgIHRlc3Q6IHRlc3Qg
dG8gYWRkCiAgICAgICAgICAgbW9kaWZpZXJzOiBzZXF1ZW5jZSBvZiBtb2RpZmllciBrZXl3b3Jk
cyAoJ3dvbnRmaXgnLCAnc2xvdycsIGV0Yy4pCiAgICAgICAgICAgZXhwZWN0YXRpb25zOiBzZXF1
ZW5jZSBvZiBleHBlY3RhdGlvbnMgKFBBU1MsIElNQUdFLCBldGMuKQotICAgICAgICAgIG9wdGlv
bnM6IHNlcXVlbmNlIG9mIGtleXdvcmRzIGFuZCBidWcgaWRlbnRpZmllcnMuIiIiCisgICAgICAg
ICAgb3B0aW9uczogc2VxdWVuY2Ugb2Yga2V5d29yZHMgYW5kIGJ1ZyBpZGVudGlmaWVycy4KKyAg
ICAgICAgICBvdmVycmlkZXNfYWxsb3dlZDogd2hldGhlciB3ZSdyZSBwYXJzaW5nIHRoZSByZWd1
bGFyIGV4cGVjdGF0aW9ucworICAgICAgICAgICAgICBvciB0aGUgb3ZlcnJpZGRpbmcgZXhwZWN0
YXRpb25zIiIiCiAgICAgICAgIHNlbGYuX3Rlc3RfdG9fZXhwZWN0YXRpb25zW3Rlc3RdID0gZXhw
ZWN0YXRpb25zCiAgICAgICAgIGZvciBleHBlY3RhdGlvbiBpbiBleHBlY3RhdGlvbnM6CiAgICAg
ICAgICAgICBzZWxmLl9leHBlY3RhdGlvbl90b190ZXN0c1tleHBlY3RhdGlvbl0uYWRkKHRlc3Qp
CkBAIC03NDUsNiArNzc0LDkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9yZXN1bHRfdHlwZV90b190ZXN0c1tGQUlMXS5hZGQo
dGVzdCkKIAorICAgICAgICBpZiBvdmVycmlkZXNfYWxsb3dlZDoKKyAgICAgICAgICAgIHNlbGYu
X292ZXJyaWRkaW5nX3Rlc3RzLmFkZCh0ZXN0KQorCiAgICAgZGVmIF9jbGVhcl9leHBlY3RhdGlv
bnNfZm9yX3Rlc3Qoc2VsZiwgdGVzdCwgdGVzdF9saXN0X3BhdGgpOgogICAgICAgICAiIiJSZW1v
dmUgcHJleGlzdGluZyBleHBlY3RhdGlvbnMgZm9yIHRoaXMgdGVzdC4KICAgICAgICAgVGhpcyBo
YXBwZW5zIGlmIHdlIGFyZSBzZWVpbmcgYSBtb3JlIHByZWNpc2UgcGF0aApAQCAtNzY5LDcgKzgw
MSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICAgICAgaWYgdGVzdCBp
biBzZXRfb2ZfdGVzdHM6CiAgICAgICAgICAgICAgICAgc2V0X29mX3Rlc3RzLnJlbW92ZSh0ZXN0
KQogCi0gICAgZGVmIF9hbHJlYWR5X3NlZW5fdGVzdChzZWxmLCB0ZXN0LCB0ZXN0X2xpc3RfcGF0
aCwgbGluZW5vKToKKyAgICBkZWYgX2FscmVhZHlfc2Vlbl90ZXN0KHNlbGYsIHRlc3QsIHRlc3Rf
bGlzdF9wYXRoLCBsaW5lbm8sIGFsbG93X292ZXJyaWRlcyk6CiAgICAgICAgICIiIlJldHVybnMg
dHJ1ZSBpZiB3ZSd2ZSBhbHJlYWR5IHNlZW4gYSBtb3JlIHByZWNpc2UgcGF0aCBmb3IgdGhpcyB0
ZXN0CiAgICAgICAgIHRoYW4gdGhlIHRlc3RfbGlzdF9wYXRoLgogICAgICAgICAiIiIKQEAgLTc3
OCw4ICs4MTAsMTkgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAKICAgICAgICAgcHJl
dl9iYXNlX3BhdGggPSBzZWxmLl90ZXN0X2xpc3RfcGF0aHNbdGVzdF0KICAgICAgICAgaWYgKHBy
ZXZfYmFzZV9wYXRoID09IG9zLnBhdGgubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpKToKLSAgICAg
ICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICdEdXBsaWNhdGUgZXhwZWN0YXRpb25zLics
IHRlc3QpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgKG5vdCBhbGxv
d19vdmVycmlkZXMgb3IgdGVzdCBpbiBzZWxmLl9vdmVycmlkZGluZ190ZXN0cyk6CisgICAgICAg
ICAgICAgICAgaWYgYWxsb3dfb3ZlcnJpZGVzOgorICAgICAgICAgICAgICAgICAgICBleHBlY3Rh
dGlvbl9zb3VyY2UgPSAib3ZlcnJpZGUiCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgZXhwZWN0YXRpb25fc291cmNlID0gImV4cGVjdGF0aW9uIgorICAgICAgICAg
ICAgICAgIHNlbGYuX2FkZF9lcnJvcihsaW5lbm8sICdEdXBsaWNhdGUgJXMuJyAlIGV4cGVjdGF0
aW9uX3NvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAjIFdlIGhhdmUgc2VlbiB0aGlzIHBhdGgsIGJ1dCB0aGF0J3Mgb2theSBiZWNhdXNlIGl0
cworICAgICAgICAgICAgICAgICMgaW4gdGhlIG92ZXJyaWRlcyBhbmQgdGhlIGVhcmxpZXIgcGF0
aCB3YXMgaW4gdGhlCisgICAgICAgICAgICAgICAgIyBleHBlY3RhdGlvbnMuCisgICAgICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgIyBDaGVjayBpZiB3ZSd2ZSBhbHJlYWR5IHNl
ZW4gYSBtb3JlIHByZWNpc2UgcGF0aC4KICAgICAgICAgcmV0dXJuIHByZXZfYmFzZV9wYXRoLnN0
YXJ0c3dpdGgob3MucGF0aC5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkpCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90
ZXN0X2V4cGVjdGF0aW9uc190ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnNfdGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDVhNGM2Ci0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9leHBlY3RhdGlvbnNfdGVzdC5weQpAQCAtMCwwICsxLDEwNCBAQAorIyEvdXNyL2Jp
bi9weXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0
cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRlc3RzIGZvciB0ZXN0X2V4cGVj
dGF0aW9ucy5weS4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QK
KwordHJ5OgorICAgZCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKK2V4Y2VwdCBOYW1lRXJy
b3I6CisgICBkID0gb3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKQorCitzeXMucGF0aC5hcHBl
bmQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihkLCAnLi4nKSkpCitzeXMucGF0aC5hcHBl
bmQob3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihkLCAnLi4vLi4vdGhpcmRwYXJ0eScpKSkK
KworaW1wb3J0IHBvcnQKK2Zyb20gdGVzdF9leHBlY3RhdGlvbnMgaW1wb3J0ICoKKworY2xhc3Mg
VGVzdEV4cGVjdGF0aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHRlc3RGdW5jLCBzZXRVcD1Ob25lLCB0ZWFyRG93bj1Ob25lLCBkZXNjcmlwdGlv
bj1Ob25lKToKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQuZ2V0KCd0ZXN0JywgTm9uZSkKKyAg
ICAgICAgc2VsZi5fZXhwID0gTm9uZQorICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRf
XyhzZWxmLCB0ZXN0RnVuYykKKworICAgIGRlZiBnZXRfdGVzdChzZWxmLCB0ZXN0X25hbWUpOgor
ICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2Rpcigp
LCB0ZXN0X25hbWUpCisKKyAgICBkZWYgZ2V0X2Jhc2ljX3Rlc3RzKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gW3NlbGYuZ2V0X3Rlc3QoJ2Zhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCcpLAor
ICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2Zhc3QvaHRtbC9oZWFkZXItZWxlbWVudC5o
dG1sJyksCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgnZmFzdC9ldmVudHMvc3BhY2Ut
c2Nyb2xsLWV2ZW50Lmh0bWwnKSwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0KCdmYXN0
L2V2ZW50cy90YWItaW1hZ2VtYXAuaHRtbCcpXQorCisgICAgZGVmIGdldF9iYXNpY19leHBlY3Rh
dGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiAiIiIKK0JVR19URVNUIDogZmFzdC9odG1sL2Fy
dGljbGUtZWxlbWVudC5odG1sID0gVEVYVAorQlVHX1RFU1QgOiBmYXN0L2V2ZW50cyA9IElNQUdF
CisiIiIKKworICAgIGRlZiBwYXJzZV9leHAoc2VsZiwgZXhwZWN0YXRpb25zLCBvdmVycmlkZXM9
Tm9uZSk6CisgICAgICAgIHNlbGYuX2V4cCA9IFRlc3RFeHBlY3RhdGlvbnMoc2VsZi5fcG9ydCwK
KyAgICAgICAgICAgICB0ZXN0cz1zZWxmLmdldF9iYXNpY190ZXN0cygpLAorICAgICAgICAgICAg
IGV4cGVjdGF0aW9ucz1leHBlY3RhdGlvbnMsIAorICAgICAgICAgICAgIHRlc3RfcGxhdGZvcm1f
bmFtZT1zZWxmLl9wb3J0LnRlc3RfcGxhdGZvcm1fbmFtZSgpLAorICAgICAgICAgICAgIGlzX2Rl
YnVnX21vZGU9RmFsc2UsCisgICAgICAgICAgICAgaXNfbGludF9tb2RlPUZhbHNlLAorICAgICAg
ICAgICAgIHRlc3RzX2FyZV9wcmVzZW50PVRydWUsCisgICAgICAgICAgICAgb3ZlcnJpZGVzPW92
ZXJyaWRlcykKKyAKKyAgICBkZWYgYXNzZXJ0X2V4cChzZWxmLCB0ZXN0LCByZXN1bHQpOgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9leHAuZ2V0X2V4cGVjdGF0aW9ucyhzZWxmLmdl
dF90ZXN0KHRlc3QpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFtyZXN1bHRdKSkK
KworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgIHNlbGYucGFyc2VfZXhwKHNlbGYu
Z2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpKQorICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFzdC9o
dG1sL2FydGljbGUtZWxlbWVudC5odG1sJywgVEVYVCkKKyAgICAgICBzZWxmLmFzc2VydF9leHAo
J2Zhc3QvZXZlbnRzL3RhYi1pbWFnZW1hcC5odG1sJywgSU1BR0UpCisgICAgICAgc2VsZi5hc3Nl
cnRfZXhwKCdmYXN0L2h0bWwvaGVhZGVyLWVsZW1lbnQuaHRtbCcsIFBBU1MpCisKKyAgICBkZWYg
dGVzdF9kdXBsaWNhdGVzKHNlbGYpOgorICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVy
cm9yLCBzZWxmLnBhcnNlX2V4cCwgIiIiCitCVUdfVEVTVCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVs
ZW1lbnQuaHRtbCA9IFRFWFQKK0JVR19URVNUIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5o
dG1sID0gSU1BR0UiIiIpCisgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIHNl
bGYucGFyc2VfZXhwLAorICAgICAgICAgICBzZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSwg
IiIiCitCVUdfVEVTVCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IFRFWFQKK0JV
R19URVNUIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gSU1BR0UiIiIpCisKKyAg
ICBkZWYgdGVzdF9vdmVycmlkZXMoc2VsZik6CisgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5n
ZXRfYmFzaWNfZXhwZWN0YXRpb25zKCksICIiIgorQlVHX09WRVJSSURFIDogZmFzdC9odG1sL2Fy
dGljbGUtZWxlbWVudC5odG1sID0gSU1BR0UiIiIpCisgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdm
YXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwnLCBJTUFHRSkKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCA4MTc4ZDhk
Li4zMGIwNWY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC00MzcsNiArNDM3LDE1IEBAIGNsYXNzIFBvcnQo
b2JqZWN0KToKICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMgZmlsZS4gU2VlIHRlc3RfZXhwZWN0
YXRpb25zLnB5IGZvciBtb3JlIGRldGFpbHMuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IoJ1BvcnQudGVzdF9leHBlY3RhdGlvbnMnKQogCisgICAgZGVmIHRlc3RfZXhwZWN0
YXRpb25zX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhbiBvcHRpb25hbCBz
ZXQgb2Ygb3ZlcnJpZGVzIGZvciB0aGUgdGVzdF9leHBlY3RhdGlvbnMuCisKKyAgICAgICAgVGhp
cyBpcyB1c2VkIGJ5IHBvcnRzIHRoYXQgaGF2ZSBjb2RlIGluIHR3byByZXBvc2l0b3JpZXMsIGFu
ZCB3aGVyZQorICAgICAgICBpcyBpcyBwb3NzaWJsZSB0aGF0IHlvdSBtaWdodCBuZWVkICJkb3du
c3RyZWFtIiBleHBlY3RhdGlvbnMgdGhhdAorICAgICAgICB0ZW1wb3JhcmlseSBvdmVycmlkZSB0
aGUgInVwc3RyZWFtIiBleHBlY3RhdGlvbnMgdW50aWwgdGhlIHBvcnQgY2FuCisgICAgICAgIHN5
bmMgdXAgdGhlIHR3byByZXBvcy4iIiIKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgIGRlZiB0
ZXN0X2Jhc2VfcGxhdGZvcm1fbmFtZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qg
b2YgdGhlICdiYXNlJyBwbGF0Zm9ybXMgb24geW91ciBwb3J0LiBUaGUgYmFzZQogICAgICAgICBw
bGF0Zm9ybXMgcmVwcmVzZW50IGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLCBvcGVyYXRpbmcgc3lz
dGVtcywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW0ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5CmluZGV4IDEzY2FmNGEuLjNhZGEzMTcgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW0ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bS5weQpAQCAtMTE0LDggKzExNCw4IEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNl
LlBvcnQpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuX2Nocm9taXVtX2Jhc2Vf
ZGlyLCAqY29tcHMpCiAKICAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNl
bGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0
JywgJ3Rvb2xzJywgJ2xheW91dF90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQorICAgICAgICByZXR1cm4g
c2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoJ0xheW91dFRlc3RzJywgJ3BsYXRmb3JtJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bScsICd0ZXN0X2V4cGVjdGF0aW9ucy50eHQnKQogCiAgICAgZGVm
IHJlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21f
Y2hyb21pdW1fYmFzZSgnd2Via2l0Jywgc2VsZi5fb3B0aW9ucy50YXJnZXQsCkBAIC0xNjMsNyAr
MTYzLDIwIEBAIGNsYXNzIENocm9taXVtUG9ydChiYXNlLlBvcnQpOgogICAgICAgICBCYXNpY2Fs
bHkgdGhpcyBzdHJpbmcgc2hvdWxkIGNvbnRhaW4gdGhlIGVxdWl2YWxlbnQgb2YgYQogICAgICAg
ICB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxlLiBTZWUgdGVzdF9leHBlY3RhdGlvbnMucHkgZm9yIG1v
cmUgZGV0YWlscy4iIiIKICAgICAgICAgZXhwZWN0YXRpb25zX2ZpbGUgPSBzZWxmLnBhdGhfdG9f
dGVzdF9leHBlY3RhdGlvbnNfZmlsZSgpCi0gICAgICAgIHJldHVybiBmaWxlKGV4cGVjdGF0aW9u
c19maWxlLCAiciIpLnJlYWQoKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhleHBlY3RhdGlv
bnNfZmlsZSk6CisgICAgICAgICAgICByZXR1cm4gZmlsZShleHBlY3RhdGlvbnNfZmlsZSwgInIi
KS5yZWFkKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnJworCisgICAgZGVm
IHRlc3RfZXhwZWN0YXRpb25zX292ZXJyaWRlcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBh
IHNldCBvZiBkb3duc3RyZWFtIG92ZXJyaWRlcyBmb3IgdGhlIHVwc3RyZWFtCisgICAgICAgIGV4
cGVjdGF0aW9ucy4iIiIKKyAgICAgICAgb3ZlcnJpZGVzX2ZpbGUgPSAgc2VsZi5wYXRoX2Zyb21f
Y2hyb21pdW1fYmFzZSgnd2Via2l0JywgJ3Rvb2xzJywKKyAgICAgICAgICAgICdsYXlvdXRfdGVz
dHMnLCAndGVzdF9leHBlY3RhdGlvbnMudHh0JykKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMo
b3ZlcnJpZGVzX2ZpbGUpOgorICAgICAgICAgICAgcmV0dXJuIGZpbGUob3ZlcnJpZGVzX2ZpbGUs
ICJyIikucmVhZCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAg
ICAgZGVmIHRlc3RfcGxhdGZvcm1fbmFtZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnRl
c3RfYmFzZV9wbGF0Zm9ybV9uYW1lcygpICsgKCd3aW4teHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fbGludXgucHkKaW5kZXggZTE0N2JmZC4uYTNjZTE1ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX2xpbnV4LnB5CkBAIC01MSw4ICs1MSwxMSBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChj
aHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICBjaHJvbWl1bS5DaHJvbWl1bVBvcnQuX19p
bml0X18oc2VsZiwgcG9ydF9uYW1lLCBvcHRpb25zKQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJj
aF9wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gW3NlbGYuYmFzZWxpbmVfcGF0aCgpLAorICAg
ICAgICByZXR1cm4gW3NlbGYuX2Nocm9taXVtX2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtLWxpbnV4
JyksCiAgICAgICAgICAgICAgICAgc2VsZi5fY2hyb21pdW1fYmFzZWxpbmVfcGF0aCgnY2hyb21p
dW0td2luJyksCisgICAgICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2No
cm9taXVtLWxpbnV4JyksCisgICAgICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3Bh
dGgoJ2Nocm9taXVtLXdpbicpLAorICAgICAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoKCdjaHJvbWl1bScpLAogICAgICAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoKCd3aW4nKSwKICAgICAgICAgICAgICAgICBzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0
aCgnbWFjJyldCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKaW5kZXggZjY0OTAwMS4uNGRj
YmJjYSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHkKQEAgLTUxLDcgKzUxLDkgQEAgY2xh
c3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIGNocm9t
aXVtLkNocm9taXVtUG9ydC5fX2luaXRfXyhzZWxmLCBwb3J0X25hbWUsIG9wdGlvbnMpCiAKICAg
ICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBbc2VsZi5i
YXNlbGluZV9wYXRoKCksCisgICAgICAgIHJldHVybiBbc2VsZi5fY2hyb21pdW1fYmFzZWxpbmVf
cGF0aCgnY2hyb21pdW0tbWFjJyksCisgICAgICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2Vs
aW5lX3BhdGgoJ2Nocm9taXVtLW1hYycpLAorICAgICAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9i
YXNlbGluZV9wYXRoKCdjaHJvbWl1bScpLAogICAgICAgICAgICAgICAgIHNlbGYuX3dlYmtpdF9i
YXNlbGluZV9wYXRoKCdtYWMnICsgc2VsZi52ZXJzaW9uKCkpLAogICAgICAgICAgICAgICAgIHNl
bGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdtYWMnKV0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bi5weQppbmRleCA2ZDlkMTIwLi43OTgyOTE0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5w
eQpAQCAtNTQsMTAgKzU0LDE2IEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJv
bWl1bVBvcnQpOgogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKICAgICAgICAg
ZGlycyA9IFtdCiAgICAgICAgIGlmIHNlbGYuX25hbWUgPT0gJ2Nocm9taXVtLXdpbi14cCc6Ci0g
ICAgICAgICAgICBkaXJzLmFwcGVuZChzZWxmLl9jaHJvbWl1bV9iYXNlbGluZV9wYXRoKHNlbGYu
X25hbWUpKQorICAgICAgICAgICAgZGlycy5hcHBlbmQoc2VsZi5fY2hyb21pdW1fYmFzZWxpbmVf
cGF0aCgnY2hyb21pdW0td2luLXhwJykpCiAgICAgICAgIGlmIHNlbGYuX25hbWUgaW4gKCdjaHJv
bWl1bS13aW4teHAnLCAnY2hyb21pdW0td2luLXZpc3RhJyk6CiAgICAgICAgICAgICBkaXJzLmFw
cGVuZChzZWxmLl9jaHJvbWl1bV9iYXNlbGluZV9wYXRoKCdjaHJvbWl1bS13aW4tdmlzdGEnKSkK
ICAgICAgICAgZGlycy5hcHBlbmQoc2VsZi5fY2hyb21pdW1fYmFzZWxpbmVfcGF0aCgnY2hyb21p
dW0td2luJykpCisgICAgICAgIGlmIHNlbGYuX25hbWUgPT0gJ2Nocm9taXVtLXdpbi14cCc6Cisg
ICAgICAgICAgICBkaXJzLmFwcGVuZChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hyb21p
dW0td2luLXhwJykpCisgICAgICAgIGlmIHNlbGYuX25hbWUgaW4gKCdjaHJvbWl1bS13aW4teHAn
LCAnY2hyb21pdW0td2luLXZpc3RhJyk6CisgICAgICAgICAgICBkaXJzLmFwcGVuZChzZWxmLl93
ZWJraXRfYmFzZWxpbmVfcGF0aCgnY2hyb21pdW0td2luLXZpc3RhJykpCisgICAgICAgIGRpcnMu
YXBwZW5kKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCdjaHJvbWl1bS13aW4nKSkKKyAgICAg
ICAgZGlycy5hcHBlbmQoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ2Nocm9taXVtJykpCiAg
ICAgICAgIGRpcnMuYXBwZW5kKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKCd3aW4nKSkKICAg
ICAgICAgZGlycy5hcHBlbmQoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoJ21hYycpKQogICAg
ICAgICByZXR1cm4gZGlycwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggYjgwOTc3MC4u
ZmIyODk2ZSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0yMjcsOSArMjI3LDExIEBA
IGNsYXNzIFRlc3RSdW5uZXI6CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhwZWN0YXRp
b25zX3N0ciA9IHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnMoKQorICAgICAgICAgICAgb3Zl
cnJpZGVzX3N0ciA9IHNlbGYuX3BvcnQudGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkKICAg
ICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBl
Y3RhdGlvbnMoCiAgICAgICAgICAgICAgICAgc2VsZi5fcG9ydCwgdGVzdF9maWxlcywgZXhwZWN0
YXRpb25zX3N0ciwgdGVzdF9wbGF0Zm9ybV9uYW1lLAotICAgICAgICAgICAgICAgIGlzX2RlYnVn
X21vZGUsIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzKQorICAgICAgICAgICAgICAgIGlz
X2RlYnVnX21vZGUsIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzLAorICAgICAgICAgICAg
ICAgIHRlc3RzX2FyZV9wcmVzZW50PVRydWUsIG92ZXJyaWRlcz1vdmVycmlkZXNfc3RyKQogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVjdGF0aW9ucwogICAgICAgICBleGNlcHQgRXhjZXB0
aW9uLCBlcnI6CiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlczoK
QEAgLTE0NjAsNiArMTQ2Miw3IEBAIGRlZiBtYWluKG9wdGlvbnMsIGFyZ3MpOgogICAgICAgICBm
b3IgcGxhdGZvcm0gaW4gcG9ydF9vYmoudGVzdF9wbGF0Zm9ybV9uYW1lcygpOgogICAgICAgICAg
ICAgdGVzdF9ydW5uZXIucGFyc2VfZXhwZWN0YXRpb25zKHBsYXRmb3JtLCBpc19kZWJ1Z19tb2Rl
PVRydWUpCiAgICAgICAgICAgICB0ZXN0X3J1bm5lci5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZv
cm0sIGlzX2RlYnVnX21vZGU9RmFsc2UpCisgICAgICAgIG1ldGVyLnVwZGF0ZSgiIikKICAgICAg
ICAgcHJpbnQgKCJJZiB0aGVyZSBhcmUgbm8gZmFpbCBtZXNzYWdlcywgZXJyb3JzIG9yIGV4Y2Vw
dGlvbnMsIHRoZW4gdGhlICIKICAgICAgICAgICAgICJsaW50IHN1Y2NlZWRlZC4iKQogICAgICAg
ICBzeXMuZXhpdCgwKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51087</attachid>
            <date>2010-03-18 13:50:41 -0700</date>
            <delta_ts>2010-03-18 13:52:25 -0700</delta_ts>
            <desc>Revise w/ Ojan&apos;s feedback - don&apos;t change expectations and baseline paths.</desc>
            <filename>bug-36249-20100318135040.patch</filename>
            <type>text/plain</type>
            <size>19615</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhNDRiYjg5Li5lMjRjOGUzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDMt
MTcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBjb25jZXB0IG9mIGFuICJv
dmVycmlkZXMiIGZpbGUgZm9yIGV4cGVjdGF0aW9ucyBzbyB0aGF0IHdlCisgICAgICAgIGNhbiBz
dG9yZSB0ZXN0X2V4cGVjdGF0aW9ucyBib3RoIHVwc3RyZWFtIGFuZCBkb3duc3RyZWFtIGZvciBh
IHBvcnQKKyAgICAgICAgdGhhdCBydW5zIGJvdGggaW4gd2Via2l0Lm9yZyBhbmQgaW4gYSBzZXBh
cmF0ZSByZXBvc2l0b3J5IChsaWtlCisgICAgICAgIENocm9taXVtKS4gQWxzbyBhZGQgc29tZSB1
bml0IHRlc3RzIGZvciB0aGUgZXhwZWN0YXRpb25zIG1vZHVsZS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDkKKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZXhwZWN0YXRpb25zX3Rlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9tYWMucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0
cy5weToKIDIwMTAtMDMtMTggIEplc3VzIFNhbmNoZXotUGFsZW5jaWEgIDxqZXN1cy5wYWxlbmNp
YUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hy
aXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVj
dGF0aW9ucy5weQppbmRleCAxOTIzMDdlLi4xMmVmMTRiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVj
dGF0aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9ucy5weQpAQCAtNTMsNyArNTMsOCBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zOgogICAgIFRFU1RfTElTVCA9ICJ0ZXN0X2V4cGVjdGF0aW9u
cy50eHQiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgdGVzdHMsIGV4cGVjdGF0aW9u
cywgdGVzdF9wbGF0Zm9ybV9uYW1lLAotICAgICAgICAgICAgICAgICBpc19kZWJ1Z19tb2RlLCBp
c19saW50X21vZGUsIHRlc3RzX2FyZV9wcmVzZW50PVRydWUpOgorICAgICAgICAgICAgICAgICBp
c19kZWJ1Z19tb2RlLCBpc19saW50X21vZGUsIHRlc3RzX2FyZV9wcmVzZW50PVRydWUsCisgICAg
ICAgICAgICAgICAgIG92ZXJyaWRlcz1Ob25lKToKICAgICAgICAgIiIiTG9hZHMgYW5kIHBhcnNl
cyB0aGUgdGVzdCBleHBlY3RhdGlvbnMgZ2l2ZW4gaW4gdGhlIHN0cmluZy4KICAgICAgICAgQXJn
czoKICAgICAgICAgICAgIHBvcnQ6IGhhbmRsZSB0byBvYmplY3QgY29udGFpbmluZyBwbGF0Zm9y
bS1zcGVjaWZpYyBmdW5jdGlvbmFsaXR5CkBAIC03MCwxMCArNzEsMTQgQEAgY2xhc3MgVGVzdEV4
cGVjdGF0aW9uczoKICAgICAgICAgICAgICAgICBzeXN0ZW0gYW5kIGNhbiBiZSBwcm9iZWQgZm9y
LiBUaGlzIGlzIHVzZWZ1bCBmb3IgZGlzdGluZ3Vpc2hpbmcKICAgICAgICAgICAgICAgICB0ZXN0
IGZpbGVzIGZyb20gZGlyZWN0b3JpZXMsIGFuZCBpcyBuZWVkZWQgYnkgdGhlIExUVEYKICAgICAg
ICAgICAgICAgICBkYXNoYm9hcmQsIHdoZXJlIHRoZSBmaWxlcyBhcmVuJ3QgYWN0dWFsbHkgbG9j
YWxseSBwcmVzZW50LgorICAgICAgICAgICAgb3ZlcnJpZGVzOiB0ZXN0IGV4cGVjdGF0aW9ucyB0
aGF0IGFyZSBhbGxvd2VkIHRvIG92ZXJyaWRlIGFueQorICAgICAgICAgICAgICAgIGVudHJpZXMg
aW4gfGV4cGVjdGF0aW9uc3wuIFRoaXMgaXMgdXNlZCBieSBjYWxsZXJzCisgICAgICAgICAgICAg
ICAgdGhhdCBuZWVkIHRvIG1hbmFnZSB0d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUuZy4sIHVw
c3RyZWFtCisgICAgICAgICAgICAgICAgYW5kIGRvd25zdHJlYW0gZXhwZWN0YXRpb25zKS4KICAg
ICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzID0gVGVzdEV4cGVjdGF0
aW9uc0ZpbGUocG9ydCwgZXhwZWN0YXRpb25zLAogICAgICAgICAgICAgdGVzdHMsIHRlc3RfcGxh
dGZvcm1fbmFtZSwgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLAotICAgICAgICAgICAgdGVz
dHNfYXJlX3ByZXNlbnQ9dGVzdHNfYXJlX3ByZXNlbnQpCisgICAgICAgICAgICB0ZXN0c19hcmVf
cHJlc2VudD10ZXN0c19hcmVfcHJlc2VudCwgb3ZlcnJpZGVzPW92ZXJyaWRlcykKIAogICAgICMg
VE9ETyhvamFuKTogQWxsb3cgZm9yIHJlbW92aW5nIHNraXBwZWQgdGVzdHMgd2hlbiBnZXR0aW5n
IHRoZSBsaXN0IG9mCiAgICAgIyB0ZXN0cyB0byBydW4sIGJ1dCBub3Qgd2hlbiBnZXR0aW5nIG1l
dHJpY3MuCkBAIC0yNjQsNyArMjY5LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCwgZXhwZWN0YXRpb25zLCBmdWxsX3Rlc3RfbGlz
dCwgdGVzdF9wbGF0Zm9ybV9uYW1lLAogICAgICAgICBpc19kZWJ1Z19tb2RlLCBpc19saW50X21v
ZGUsIHN1cHByZXNzX2Vycm9ycz1GYWxzZSwKLSAgICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ9VHJ1
ZSk6CisgICAgICAgIHRlc3RzX2FyZV9wcmVzZW50PVRydWUsIG92ZXJyaWRlcz1Ob25lKToKICAg
ICAgICAgIiIiCiAgICAgICAgIGV4cGVjdGF0aW9uczogQ29udGVudHMgb2YgdGhlIGV4cGVjdGF0
aW9ucyBmaWxlCiAgICAgICAgIGZ1bGxfdGVzdF9saXN0OiBUaGUgbGlzdCBvZiBhbGwgdGVzdHMg
dG8gYmUgcnVuIHBlbmRpbmcgcHJvY2Vzc2luZyBvZgpAQCAtMjc4LDYgKzI4MywxMCBAQCBjbGFz
cyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ6IFdoZXRo
ZXIgdGhlIHRlc3QgZmlsZXMgYXJlIHByZXNlbnQgaW4gdGhlIGxvY2FsCiAgICAgICAgICAgICBm
aWxlc3lzdGVtLiBUaGUgTFRURiBEYXNoYm9hcmQgdXNlcyBGYWxzZSBoZXJlIHRvIGF2b2lkIGhh
dmluZyB0bwogICAgICAgICAgICAga2VlcCBhIGxvY2FsIGNvcHkgb2YgdGhlIHRyZWUuCisgICAg
ICAgIG92ZXJyaWRlczogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBvdmVy
cmlkZSBhbnkKKyAgICAgICAgICAgIGVudHJpZXMgaW4gfGV4cGVjdGF0aW9uc3wuIFRoaXMgaXMg
dXNlZCBieSBjYWxsZXJzCisgICAgICAgICAgICB0aGF0IG5lZWQgdG8gbWFuYWdlIHR3byBzZXRz
IG9mIGV4cGVjdGF0aW9ucyAoZS5nLiwgdXBzdHJlYW0KKyAgICAgICAgICAgIGFuZCBkb3duc3Ry
ZWFtIGV4cGVjdGF0aW9ucykuCiAgICAgICAgICIiIgogCiAgICAgICAgIHNlbGYuX3BvcnQgPSBw
b3J0CkBAIC0yODcsNiArMjk2LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAg
ICAgIHNlbGYuX2lzX2RlYnVnX21vZGUgPSBpc19kZWJ1Z19tb2RlCiAgICAgICAgIHNlbGYuX2lz
X2xpbnRfbW9kZSA9IGlzX2xpbnRfbW9kZQogICAgICAgICBzZWxmLl90ZXN0c19hcmVfcHJlc2Vu
dCA9IHRlc3RzX2FyZV9wcmVzZW50CisgICAgICAgIHNlbGYuX292ZXJyaWRlcyA9IG92ZXJyaWRl
cwogICAgICAgICBzZWxmLl9zdXBwcmVzc19lcnJvcnMgPSBzdXBwcmVzc19lcnJvcnMKICAgICAg
ICAgc2VsZi5fZXJyb3JzID0gW10KICAgICAgICAgc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycyA9IFtd
CkBAIC0zMTQsNyArMzI0LDUwIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAg
ICBzZWxmLl90aW1lbGluZV90b190ZXN0cyA9IHNlbGYuX2RpY3Rfb2Zfc2V0cyhzZWxmLlRJTUVM
SU5FUykKICAgICAgICAgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHMgPSBzZWxmLl9kaWN0X29m
X3NldHMoc2VsZi5SRVNVTFRfVFlQRVMpCiAKLSAgICAgICAgc2VsZi5fcmVhZChzZWxmLl9nZXRf
aXRlcmFibGVfZXhwZWN0YXRpb25zKCkpCisgICAgICAgIHNlbGYuX3JlYWQoc2VsZi5fZ2V0X2l0
ZXJhYmxlX2V4cGVjdGF0aW9ucyhzZWxmLl9leHBlY3RhdGlvbnMpLAorICAgICAgICAgICAgICAg
ICAgIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNlKQorCisgICAgICAgICMgTGlzdCBvZiB0ZXN0cyB0
aGF0IGFyZSBpbiB0aGUgb3ZlcnJpZGVzIGZpbGUgKHVzZWQgZm9yIGNoZWNraW5nIGZvcgorICAg
ICAgICAjIGR1cGxpY2F0ZXMgaW5zaWRlIHRoZSBvdmVycmlkZXMgZmlsZSBpdHNlbGYpLiBOb3Rl
IHRoYXQganVzdCBiZWNhdXNlCisgICAgICAgICMgYSB0ZXN0IGlzIGluIHRoaXMgc2V0IGRvZXNu
J3QgbWVhbiBpdCdzIG5lY2Vzc2FyaWx5IG92ZXJyaWRkaW5nIGEKKyAgICAgICAgIyBleHBlY3Rh
dGlvbiBpbiB0aGUgcmVndWxhciBleHBlY3RhdGlvbnM7IHRoZSB0ZXN0IG1pZ2h0IG5vdCBiZQor
ICAgICAgICAjIG1lbnRpb25lZCBpbiB0aGUgcmVndWxhciBleHBlY3RhdGlvbnMgZmlsZSBhdCBh
bGwuCisgICAgICAgIHNlbGYuX292ZXJyaWRkaW5nX3Rlc3RzID0gc2V0KCkKKworICAgICAgICBp
ZiBvdmVycmlkZXM6CisgICAgICAgICAgICBzZWxmLl9yZWFkKHNlbGYuX2dldF9pdGVyYWJsZV9l
eHBlY3RhdGlvbnMoc2VsZi5fb3ZlcnJpZGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgb3Zl
cnJpZGVzX2FsbG93ZWQ9VHJ1ZSkKKworICAgICAgICBzZWxmLl9oYW5kbGVfYW55X3JlYWRfZXJy
b3JzKCkKKyAgICAgICAgc2VsZi5fcHJvY2Vzc190ZXN0c193aXRob3V0X2V4cGVjdGF0aW9ucygp
CisKKyAgICBkZWYgX2hhbmRsZV9hbnlfcmVhZF9lcnJvcnMoc2VsZik6CisgICAgICAgIGlmIG5v
dCBzZWxmLl9zdXBwcmVzc19lcnJvcnMgYW5kICgKKyAgICAgICAgICAgIGxlbihzZWxmLl9lcnJv
cnMpIG9yIGxlbihzZWxmLl9ub25fZmF0YWxfZXJyb3JzKSk6CisgICAgICAgICAgICBpZiBzZWxm
Ll9pc19kZWJ1Z19tb2RlOgorICAgICAgICAgICAgICAgIGJ1aWxkX3R5cGUgPSAnREVCVUcnCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ1aWxkX3R5cGUgPSAnUkVMRUFTRScK
KyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJGQUlM
VVJFUyBGT1IgUExBVEZPUk06ICVzLCBCVUlMRF9UWVBFOiAlcyIgJQorICAgICAgICAgICAgICAg
ICAgICAgICAoc2VsZi5fdGVzdF9wbGF0Zm9ybV9uYW1lLnVwcGVyKCksIGJ1aWxkX3R5cGUpKQor
CisgICAgICAgICAgICBmb3IgZXJyb3IgaW4gc2VsZi5fbm9uX2ZhdGFsX2Vycm9yczoKKyAgICAg
ICAgICAgICAgICBfbG9nLmVycm9yKGVycm9yKQorICAgICAgICAgICAgX2xvZy5lcnJvcignJykK
KworICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9ycyk6CisgICAgICAgICAgICAgICAgcmFp
c2UgU3ludGF4RXJyb3IoJ1xuJy5qb2luKG1hcChzdHIsIHNlbGYuX2Vycm9ycykpKQorCisgICAg
ZGVmIF9wcm9jZXNzX3Rlc3RzX3dpdGhvdXRfZXhwZWN0YXRpb25zKHNlbGYpOgorICAgICAgICBl
eHBlY3RhdGlvbnMgPSBzZXQoW1BBU1NdKQorICAgICAgICBvcHRpb25zID0gW10KKyAgICAgICAg
bW9kaWZpZXJzID0gW10KKyAgICAgICAgaWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6CisgICAgICAg
ICAgICBmb3IgdGVzdCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKKyAgICAgICAgICAgICAgICBp
ZiBub3QgdGVzdCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6CisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2FkZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ9RmFsc2UpCiAKICAgICBk
ZWYgX2RpY3Rfb2Zfc2V0cyhzZWxmLCBzdHJpbmdzX3RvX2NvbnN0YW50cyk6CiAgICAgICAgICIi
IlRha2VzIGEgZGljdCBvZiBzdHJpbmdzLT5jb25zdGFudHMgYW5kIHJldHVybnMgYSBkaWN0IG1h
cHBpbmcKQEAgLTMyNCwxMiArMzc3LDExIEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgog
ICAgICAgICAgICAgZFtjXSA9IHNldCgpCiAgICAgICAgIHJldHVybiBkCiAKLSAgICBkZWYgX2dl
dF9pdGVyYWJsZV9leHBlY3RhdGlvbnMoc2VsZik6CisgICAgZGVmIF9nZXRfaXRlcmFibGVfZXhw
ZWN0YXRpb25zKHNlbGYsIGV4cGVjdGF0aW9uc19zdHIpOgogICAgICAgICAiIiJSZXR1cm5zIGFu
IG9iamVjdCB0aGF0IGNhbiBiZSBpdGVyYXRlZCBvdmVyLiBBbGxvd3MgZm9yIG5vdCBjYXJpbmcK
ICAgICAgICAgYWJvdXQgd2hldGhlciB3ZSdyZSBpdGVyYXRpbmcgb3ZlciBhIGZpbGUgb3IgYSBu
ZXctbGluZSBzZXBhcmF0ZWQKICAgICAgICAgc3RyaW5nLiIiIgotICAgICAgICBpdGVyYWJsZSA9
IFt4ICsgIlxuIiBmb3IgeCBpbgotICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLnNwbGl0
KCJcbiIpXQorICAgICAgICBpdGVyYWJsZSA9IFt4ICsgIlxuIiBmb3IgeCBpbiBleHBlY3RhdGlv
bnNfc3RyLnNwbGl0KCJcbiIpXQogICAgICAgICAjIFN0cmlwIGZpbmFsIGVudHJ5IGlmIGl0J3Mg
ZW1wdHkgdG8gYXZvaWQgYWRkZWQgaW4gYW4gZXh0cmEKICAgICAgICAgIyBuZXdsaW5lLgogICAg
ICAgICBpZiBpdGVyYWJsZVstMV0gPT0gIlxuIjoKQEAgLTU3Nyw3ICs2MjksNyBAQCBjbGFzcyBU
ZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgc2VsZi5fYWxsX2V4cGVjdGF0aW9uc1t0ZXN0
XS5hcHBlbmQoCiAgICAgICAgICAgICBNb2RpZmllcnNBbmRFeHBlY3RhdGlvbnMob3B0aW9ucywg
ZXhwZWN0YXRpb25zKSkKIAotICAgIGRlZiBfcmVhZChzZWxmLCBleHBlY3RhdGlvbnMpOgorICAg
IGRlZiBfcmVhZChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlc19hbGxvd2VkKToKICAgICAg
ICAgIiIiRm9yIGVhY2ggdGVzdCBpbiBhbiBleHBlY3RhdGlvbnMgaXRlcmFibGUsIGdlbmVyYXRl
IHRoZQogICAgICAgICBleHBlY3RhdGlvbnMgZm9yIGl0LiIiIgogICAgICAgICBsaW5lbm8gPSAw
CkBAIC02MjgsMzMgKzY4MCw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAg
ICAgICAgICAgIHRlc3RzID0gc2VsZi5fZXhwYW5kX3Rlc3RzKHRlc3RfbGlzdF9wYXRoKQogCiAg
ICAgICAgICAgICBzZWxmLl9hZGRfdGVzdHModGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0
X3BhdGgsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywgb3B0
aW9ucykKLQotICAgICAgICBpZiBub3Qgc2VsZi5fc3VwcHJlc3NfZXJyb3JzIGFuZCAoCi0gICAg
ICAgICAgICBsZW4oc2VsZi5fZXJyb3JzKSBvciBsZW4oc2VsZi5fbm9uX2ZhdGFsX2Vycm9ycykp
OgotICAgICAgICAgICAgaWYgc2VsZi5faXNfZGVidWdfbW9kZToKLSAgICAgICAgICAgICAgICBi
dWlsZF90eXBlID0gJ0RFQlVHJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBi
dWlsZF90eXBlID0gJ1JFTEVBU0UnCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcnKQotICAgICAg
ICAgICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9SIFBMQVRGT1JNOiAlcywgQlVJTERfVFlQRTog
JXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3Rlc3RfcGxhdGZvcm1fbmFtZS51
cHBlcigpLCBidWlsZF90eXBlKSkKLQotICAgICAgICAgICAgZm9yIGVycm9yIGluIHNlbGYuX25v
bl9mYXRhbF9lcnJvcnM6Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcihlcnJvcikKLSAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJycpCi0KLSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9lcnJvcnMp
OgotICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCdcbicuam9pbihtYXAoc3RyLCBz
ZWxmLl9lcnJvcnMpKSkKLQotICAgICAgICAjIE5vdyBhZGQgaW4gdGhlIHRlc3RzIHRoYXQgd2Vy
ZW4ndCBwcmVzZW50IGluIHRoZSBleHBlY3RhdGlvbnMgZmlsZQotICAgICAgICBleHBlY3RhdGlv
bnMgPSBzZXQoW1BBU1NdKQotICAgICAgICBvcHRpb25zID0gW10KLSAgICAgICAgbW9kaWZpZXJz
ID0gW10KLSAgICAgICAgaWYgc2VsZi5fZnVsbF90ZXN0X2xpc3Q6Ci0gICAgICAgICAgICBmb3Ig
dGVzdCBpbiBzZWxmLl9mdWxsX3Rlc3RfbGlzdDoKLSAgICAgICAgICAgICAgICBpZiBub3QgdGVz
dCBpbiBzZWxmLl90ZXN0X2xpc3RfcGF0aHM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fk
ZF90ZXN0KHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCBvcHRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCkK
IAogICAgIGRlZiBfZ2V0X29wdGlvbnNfbGlzdChzZWxmLCBsaXN0U3RyaW5nKToKICAgICAgICAg
cmV0dXJuIFtwYXJ0LnN0cmlwKCkubG93ZXIoKSBmb3IgcGFydCBpbiBsaXN0U3RyaW5nLnN0cmlw
KCkuc3BsaXQoJyAnKV0KQEAgLTY5OCwxNSArNzI0LDE4IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlv
bnNGaWxlOgogICAgICAgICByZXR1cm4gcGF0aAogCiAgICAgZGVmIF9hZGRfdGVzdHMoc2VsZiwg
dGVzdHMsIGV4cGVjdGF0aW9ucywgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKLSAgICAgICAgICAg
ICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMpOgorICAgICAgICAgICAgICAgICAgIG1vZGlmaWVy
cywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0
czoKLSAgICAgICAgICAgIGlmIHNlbGYuX2FscmVhZHlfc2Vlbl90ZXN0KHRlc3QsIHRlc3RfbGlz
dF9wYXRoLCBsaW5lbm8pOgorICAgICAgICAgICAgaWYgc2VsZi5fYWxyZWFkeV9zZWVuX3Rlc3Qo
dGVzdCwgdGVzdF9saXN0X3BhdGgsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG92ZXJyaWRlc19hbGxvd2VkKToKICAgICAgICAgICAgICAgICBjb250aW51
ZQogCiAgICAgICAgICAgICBzZWxmLl9jbGVhcl9leHBlY3RhdGlvbnNfZm9yX3Rlc3QodGVzdCwg
dGVzdF9saXN0X3BhdGgpCi0gICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmll
cnMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucykKKyAgICAgICAgICAgIHNlbGYuX2FkZF90ZXN0KHRl
c3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpCiAKLSAgICBkZWYgX2FkZF90ZXN0KHNlbGYsIHRl
c3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zKToKKyAgICBkZWYgX2FkZF90ZXN0
KHNlbGYsIHRlc3QsIG1vZGlmaWVycywgZXhwZWN0YXRpb25zLCBvcHRpb25zLAorICAgICAgICAg
ICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQpOgogICAgICAgICAiIiJTZXRzIHRoZSBleHBlY3Rl
ZCBzdGF0ZSBmb3IgYSBnaXZlbiB0ZXN0LgogCiAgICAgICAgIFRoaXMgcm91dGluZSBhc3N1bWVz
IHRoZSB0ZXN0IGhhcyBub3QgYmVlbiBhZGRlZCBiZWZvcmUuIElmIGl0IGhhcywKQEAgLTcxNyw3
ICs3NDYsOSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICB0ZXN0OiB0
ZXN0IHRvIGFkZAogICAgICAgICAgIG1vZGlmaWVyczogc2VxdWVuY2Ugb2YgbW9kaWZpZXIga2V5
d29yZHMgKCd3b250Zml4JywgJ3Nsb3cnLCBldGMuKQogICAgICAgICAgIGV4cGVjdGF0aW9uczog
c2VxdWVuY2Ugb2YgZXhwZWN0YXRpb25zIChQQVNTLCBJTUFHRSwgZXRjLikKLSAgICAgICAgICBv
cHRpb25zOiBzZXF1ZW5jZSBvZiBrZXl3b3JkcyBhbmQgYnVnIGlkZW50aWZpZXJzLiIiIgorICAg
ICAgICAgIG9wdGlvbnM6IHNlcXVlbmNlIG9mIGtleXdvcmRzIGFuZCBidWcgaWRlbnRpZmllcnMu
CisgICAgICAgICAgb3ZlcnJpZGVzX2FsbG93ZWQ6IHdoZXRoZXIgd2UncmUgcGFyc2luZyB0aGUg
cmVndWxhciBleHBlY3RhdGlvbnMKKyAgICAgICAgICAgICAgb3IgdGhlIG92ZXJyaWRkaW5nIGV4
cGVjdGF0aW9ucyIiIgogICAgICAgICBzZWxmLl90ZXN0X3RvX2V4cGVjdGF0aW9uc1t0ZXN0XSA9
IGV4cGVjdGF0aW9ucwogICAgICAgICBmb3IgZXhwZWN0YXRpb24gaW4gZXhwZWN0YXRpb25zOgog
ICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25fdG9fdGVzdHNbZXhwZWN0YXRpb25dLmFkZCh0
ZXN0KQpAQCAtNzQ1LDYgKzc3Niw5IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fcmVzdWx0X3R5cGVfdG9fdGVzdHNbRkFJTF0u
YWRkKHRlc3QpCiAKKyAgICAgICAgaWYgb3ZlcnJpZGVzX2FsbG93ZWQ6CisgICAgICAgICAgICBz
ZWxmLl9vdmVycmlkZGluZ190ZXN0cy5hZGQodGVzdCkKKwogICAgIGRlZiBfY2xlYXJfZXhwZWN0
YXRpb25zX2Zvcl90ZXN0KHNlbGYsIHRlc3QsIHRlc3RfbGlzdF9wYXRoKToKICAgICAgICAgIiIi
UmVtb3ZlIHByZXhpc3RpbmcgZXhwZWN0YXRpb25zIGZvciB0aGlzIHRlc3QuCiAgICAgICAgIFRo
aXMgaGFwcGVucyBpZiB3ZSBhcmUgc2VlaW5nIGEgbW9yZSBwcmVjaXNlIHBhdGgKQEAgLTc2OSw3
ICs4MDMsNyBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgIGlmIHRl
c3QgaW4gc2V0X29mX3Rlc3RzOgogICAgICAgICAgICAgICAgIHNldF9vZl90ZXN0cy5yZW1vdmUo
dGVzdCkKIAotICAgIGRlZiBfYWxyZWFkeV9zZWVuX3Rlc3Qoc2VsZiwgdGVzdCwgdGVzdF9saXN0
X3BhdGgsIGxpbmVubyk6CisgICAgZGVmIF9hbHJlYWR5X3NlZW5fdGVzdChzZWxmLCB0ZXN0LCB0
ZXN0X2xpc3RfcGF0aCwgbGluZW5vLCBhbGxvd19vdmVycmlkZXMpOgogICAgICAgICAiIiJSZXR1
cm5zIHRydWUgaWYgd2UndmUgYWxyZWFkeSBzZWVuIGEgbW9yZSBwcmVjaXNlIHBhdGggZm9yIHRo
aXMgdGVzdAogICAgICAgICB0aGFuIHRoZSB0ZXN0X2xpc3RfcGF0aC4KICAgICAgICAgIiIiCkBA
IC03NzgsOCArODEyLDE5IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgICAg
IHByZXZfYmFzZV9wYXRoID0gc2VsZi5fdGVzdF9saXN0X3BhdGhzW3Rlc3RdCiAgICAgICAgIGlm
IChwcmV2X2Jhc2VfcGF0aCA9PSBvcy5wYXRoLm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSk6Ci0g
ICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAnRHVwbGljYXRlIGV4cGVjdGF0aW9u
cy4nLCB0ZXN0KQotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIChub3Qg
YWxsb3dfb3ZlcnJpZGVzIG9yIHRlc3QgaW4gc2VsZi5fb3ZlcnJpZGRpbmdfdGVzdHMpOgorICAg
ICAgICAgICAgICAgIGlmIGFsbG93X292ZXJyaWRlczoKKyAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0YXRpb25fc291cmNlID0gIm92ZXJyaWRlIgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3NvdXJjZSA9ICJleHBlY3RhdGlvbiIKKyAgICAg
ICAgICAgICAgICBzZWxmLl9hZGRfZXJyb3IobGluZW5vLCAnRHVwbGljYXRlICVzLicgJSBleHBl
Y3RhdGlvbl9zb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgIyBXZSBoYXZlIHNlZW4gdGhpcyBwYXRoLCBidXQgdGhhdCdzIG9rYXkgYmVjYXVz
ZSBpdHMKKyAgICAgICAgICAgICAgICAjIGluIHRoZSBvdmVycmlkZXMgYW5kIHRoZSBlYXJsaWVy
IHBhdGggd2FzIGluIHRoZQorICAgICAgICAgICAgICAgICMgZXhwZWN0YXRpb25zLgorICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgICMgQ2hlY2sgaWYgd2UndmUgYWxyZWFk
eSBzZWVuIGEgbW9yZSBwcmVjaXNlIHBhdGguCiAgICAgICAgIHJldHVybiBwcmV2X2Jhc2VfcGF0
aC5zdGFydHN3aXRoKG9zLnBhdGgubm9ybXBhdGgodGVzdF9saXN0X3BhdGgpKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9leHBlY3RhdGlvbnNfdGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3Rlc3QucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ1YTRjNgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9w
YWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25zX3Rlc3QucHkKQEAgLTAsMCArMSwxMDQgQEAKKyMhL3Vz
ci9iaW4vcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIiIiVW5pdCB0ZXN0cyBmb3IgdGVzdF9l
eHBlY3RhdGlvbnMucHkuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0
ZXN0CisKK3RyeToKKyAgIGQgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCitleGNlcHQgTmFt
ZUVycm9yOgorICAgZCA9IG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSkKKworc3lzLnBhdGgu
YXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oZCwgJy4uJykpKQorc3lzLnBhdGgu
YXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oZCwgJy4uLy4uL3RoaXJkcGFydHkn
KSkpCisKK2ltcG9ydCBwb3J0Citmcm9tIHRlc3RfZXhwZWN0YXRpb25zIGltcG9ydCAqCisKK2Ns
YXNzIFRlc3RFeHBlY3RhdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0ZXN0RnVuYywgc2V0VXA9Tm9uZSwgdGVhckRvd249Tm9uZSwgZGVzY3Jp
cHRpb249Tm9uZSk6CisgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0LmdldCgndGVzdCcsIE5vbmUp
CisgICAgICAgIHNlbGYuX2V4cCA9IE5vbmUKKyAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19p
bml0X18oc2VsZiwgdGVzdEZ1bmMpCisKKyAgICBkZWYgZ2V0X3Rlc3Qoc2VsZiwgdGVzdF9uYW1l
KToKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19k
aXIoKSwgdGVzdF9uYW1lKQorCisgICAgZGVmIGdldF9iYXNpY190ZXN0cyhzZWxmKToKKyAgICAg
ICAgcmV0dXJuIFtzZWxmLmdldF90ZXN0KCdmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwn
KSwKKyAgICAgICAgICAgICAgICBzZWxmLmdldF90ZXN0KCdmYXN0L2h0bWwvaGVhZGVyLWVsZW1l
bnQuaHRtbCcpLAorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2Zhc3QvZXZlbnRzL3Nw
YWNlLXNjcm9sbC1ldmVudC5odG1sJyksCisgICAgICAgICAgICAgICAgc2VsZi5nZXRfdGVzdCgn
ZmFzdC9ldmVudHMvdGFiLWltYWdlbWFwLmh0bWwnKV0KKworICAgIGRlZiBnZXRfYmFzaWNfZXhw
ZWN0YXRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gIiIiCitCVUdfVEVTVCA6IGZhc3QvaHRt
bC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IFRFWFQKK0JVR19URVNUIDogZmFzdC9ldmVudHMgPSBJ
TUFHRQorIiIiCisKKyAgICBkZWYgcGFyc2VfZXhwKHNlbGYsIGV4cGVjdGF0aW9ucywgb3ZlcnJp
ZGVzPU5vbmUpOgorICAgICAgICBzZWxmLl9leHAgPSBUZXN0RXhwZWN0YXRpb25zKHNlbGYuX3Bv
cnQsCisgICAgICAgICAgICAgdGVzdHM9c2VsZi5nZXRfYmFzaWNfdGVzdHMoKSwKKyAgICAgICAg
ICAgICBleHBlY3RhdGlvbnM9ZXhwZWN0YXRpb25zLCAKKyAgICAgICAgICAgICB0ZXN0X3BsYXRm
b3JtX25hbWU9c2VsZi5fcG9ydC50ZXN0X3BsYXRmb3JtX25hbWUoKSwKKyAgICAgICAgICAgICBp
c19kZWJ1Z19tb2RlPUZhbHNlLAorICAgICAgICAgICAgIGlzX2xpbnRfbW9kZT1GYWxzZSwKKyAg
ICAgICAgICAgICB0ZXN0c19hcmVfcHJlc2VudD1UcnVlLAorICAgICAgICAgICAgIG92ZXJyaWRl
cz1vdmVycmlkZXMpCisgCisgICAgZGVmIGFzc2VydF9leHAoc2VsZiwgdGVzdCwgcmVzdWx0KToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fZXhwLmdldF9leHBlY3RhdGlvbnMoc2Vs
Zi5nZXRfdGVzdCh0ZXN0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNldChbcmVzdWx0
XSkpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICBzZWxmLnBhcnNlX2V4cChz
ZWxmLmdldF9iYXNpY19leHBlY3RhdGlvbnMoKSkKKyAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Zh
c3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCcsIFRFWFQpCisgICAgICAgc2VsZi5hc3NlcnRf
ZXhwKCdmYXN0L2V2ZW50cy90YWItaW1hZ2VtYXAuaHRtbCcsIElNQUdFKQorICAgICAgIHNlbGYu
YXNzZXJ0X2V4cCgnZmFzdC9odG1sL2hlYWRlci1lbGVtZW50Lmh0bWwnLCBQQVNTKQorCisgICAg
ZGVmIHRlc3RfZHVwbGljYXRlcyhzZWxmKToKKyAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50
YXhFcnJvciwgc2VsZi5wYXJzZV9leHAsICIiIgorQlVHX1RFU1QgOiBmYXN0L2h0bWwvYXJ0aWNs
ZS1lbGVtZW50Lmh0bWwgPSBURVhUCitCVUdfVEVTVCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1l
bnQuaHRtbCA9IElNQUdFIiIiKQorICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9y
LCBzZWxmLnBhcnNlX2V4cCwKKyAgICAgICAgICAgc2VsZi5nZXRfYmFzaWNfZXhwZWN0YXRpb25z
KCksICIiIgorQlVHX1RFU1QgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBURVhU
CitCVUdfVEVTVCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IElNQUdFIiIiKQor
CisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVzKHNlbGYpOgorICAgICAgIHNlbGYucGFyc2VfZXhwKHNl
bGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpLCAiIiIKK0JVR19PVkVSUklERSA6IGZhc3QvaHRt
bC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IElNQUdFIiIiKQorICAgICAgIHNlbGYuYXNzZXJ0X2V4
cCgnZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sJywgSU1BR0UpCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggNjgz
N2ZmNC4uZTNiNTE3MiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQpAQCAtNDQxLDYgKzQ0MSwxNSBAQCBjbGFzcyBQ
b3J0KG9iamVjdCk6CiAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUuIFNlZSB0ZXN0X2V4
cGVjdGF0aW9ucy5weSBmb3IgbW9yZSBkZXRhaWxzLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yKCdQb3J0LnRlc3RfZXhwZWN0YXRpb25zJykKIAorICAgIGRlZiB0ZXN0X2V4
cGVjdGF0aW9uc19vdmVycmlkZXMoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYW4gb3B0aW9u
YWwgc2V0IG9mIG92ZXJyaWRlcyBmb3IgdGhlIHRlc3RfZXhwZWN0YXRpb25zLgorCisgICAgICAg
IFRoaXMgaXMgdXNlZCBieSBwb3J0cyB0aGF0IGhhdmUgY29kZSBpbiB0d28gcmVwb3NpdG9yaWVz
LCBhbmQgd2hlcmUKKyAgICAgICAgaXQgaXMgcG9zc2libGUgdGhhdCB5b3UgbWlnaHQgbmVlZCAi
ZG93bnN0cmVhbSIgZXhwZWN0YXRpb25zIHRoYXQKKyAgICAgICAgdGVtcG9yYXJpbHkgb3ZlcnJp
ZGUgdGhlICJ1cHN0cmVhbSIgZXhwZWN0YXRpb25zIHVudGlsIHRoZSBwb3J0IGNhbgorICAgICAg
ICBzeW5jIHVwIHRoZSB0d28gcmVwb3MuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBk
ZWYgdGVzdF9iYXNlX3BsYXRmb3JtX25hbWVzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBs
aXN0IG9mIHRoZSAnYmFzZScgcGxhdGZvcm1zIG9uIHlvdXIgcG9ydC4gVGhlIGJhc2UKICAgICAg
ICAgcGxhdGZvcm1zIHJlcHJlc2VudCBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcywgb3BlcmF0aW5n
IHN5c3RlbXMsCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCBiODA5NzcwLi5mYjI4OTZl
IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTIyNyw5ICsyMjcsMTEgQEAgY2xhc3Mg
VGVzdFJ1bm5lcjoKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBleHBlY3RhdGlvbnNfc3Ry
ID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0aW9ucygpCisgICAgICAgICAgICBvdmVycmlkZXNf
c3RyID0gc2VsZi5fcG9ydC50ZXN0X2V4cGVjdGF0aW9uc19vdmVycmlkZXMoKQogICAgICAgICAg
ICAgc2VsZi5fZXhwZWN0YXRpb25zID0gdGVzdF9leHBlY3RhdGlvbnMuVGVzdEV4cGVjdGF0aW9u
cygKICAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LCB0ZXN0X2ZpbGVzLCBleHBlY3RhdGlvbnNf
c3RyLCB0ZXN0X3BsYXRmb3JtX25hbWUsCi0gICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwg
c2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMpCisgICAgICAgICAgICAgICAgaXNfZGVidWdf
bW9kZSwgc2VsZi5fb3B0aW9ucy5saW50X3Rlc3RfZmlsZXMsCisgICAgICAgICAgICAgICAgdGVz
dHNfYXJlX3ByZXNlbnQ9VHJ1ZSwgb3ZlcnJpZGVzPW92ZXJyaWRlc19zdHIpCiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZXhwZWN0YXRpb25zCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGVy
cjoKICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubGludF90ZXN0X2ZpbGVzOgpAQCAtMTQ2
MCw2ICsxNDYyLDcgQEAgZGVmIG1haW4ob3B0aW9ucywgYXJncyk6CiAgICAgICAgIGZvciBwbGF0
Zm9ybSBpbiBwb3J0X29iai50ZXN0X3BsYXRmb3JtX25hbWVzKCk6CiAgICAgICAgICAgICB0ZXN0
X3J1bm5lci5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm0sIGlzX2RlYnVnX21vZGU9VHJ1ZSkK
ICAgICAgICAgICAgIHRlc3RfcnVubmVyLnBhcnNlX2V4cGVjdGF0aW9ucyhwbGF0Zm9ybSwgaXNf
ZGVidWdfbW9kZT1GYWxzZSkKKyAgICAgICAgbWV0ZXIudXBkYXRlKCIiKQogICAgICAgICBwcmlu
dCAoIklmIHRoZXJlIGFyZSBubyBmYWlsIG1lc3NhZ2VzLCBlcnJvcnMgb3IgZXhjZXB0aW9ucywg
dGhlbiB0aGUgIgogICAgICAgICAgICAgImxpbnQgc3VjY2VlZGVkLiIpCiAgICAgICAgIHN5cy5l
eGl0KDApCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51088</attachid>
            <date>2010-03-18 13:51:42 -0700</date>
            <delta_ts>2010-03-18 14:20:30 -0700</delta_ts>
            <desc>Update Changelog</desc>
            <filename>bug-36249-20100318135141.patch</filename>
            <type>text/plain</type>
            <size>19367</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhNDRiYjg5Li4zM2QyZGU5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMt
MTcgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBjb25jZXB0IG9mIGFuICJv
dmVycmlkZXMiIGZpbGUgZm9yIGV4cGVjdGF0aW9ucyBzbyB0aGF0IHdlCisgICAgICAgIGNhbiBz
dG9yZSB0ZXN0X2V4cGVjdGF0aW9ucyBib3RoIHVwc3RyZWFtIGFuZCBkb3duc3RyZWFtIGZvciBh
IHBvcnQKKyAgICAgICAgdGhhdCBydW5zIGJvdGggaW4gd2Via2l0Lm9yZyBhbmQgaW4gYSBzZXBh
cmF0ZSByZXBvc2l0b3J5IChsaWtlCisgICAgICAgIENocm9taXVtKS4gQWxzbyBhZGQgc29tZSB1
bml0IHRlc3RzIGZvciB0aGUgZXhwZWN0YXRpb25zIG1vZHVsZS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYyNDkKKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZXhwZWN0YXRpb25zX3Rlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorCiAyMDEwLTAzLTE4ICBK
ZXN1cyBTYW5jaGV6LVBhbGVuY2lhICA8amVzdXMucGFsZW5jaWFAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL3Rlc3RfZXhwZWN0YXRpb25zLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKaW5kZXggMTky
MzA3ZS4uMTJlZjE0YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9leHBlY3RhdGlvbnMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVz
dF9leHBlY3RhdGlvbnMucHkKQEAgLTUzLDcgKzUzLDggQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9u
czoKICAgICBURVNUX0xJU1QgPSAidGVzdF9leHBlY3RhdGlvbnMudHh0IgogCiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHBvcnQsIHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfcGxhdGZvcm1fbmFt
ZSwKLSAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCB0ZXN0c19h
cmVfcHJlc2VudD1UcnVlKToKKyAgICAgICAgICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGlu
dF9tb2RlLCB0ZXN0c19hcmVfcHJlc2VudD1UcnVlLAorICAgICAgICAgICAgICAgICBvdmVycmlk
ZXM9Tm9uZSk6CiAgICAgICAgICIiIkxvYWRzIGFuZCBwYXJzZXMgdGhlIHRlc3QgZXhwZWN0YXRp
b25zIGdpdmVuIGluIHRoZSBzdHJpbmcuCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBwb3J0
OiBoYW5kbGUgdG8gb2JqZWN0IGNvbnRhaW5pbmcgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb25h
bGl0eQpAQCAtNzAsMTAgKzcxLDE0IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnM6CiAgICAgICAg
ICAgICAgICAgc3lzdGVtIGFuZCBjYW4gYmUgcHJvYmVkIGZvci4gVGhpcyBpcyB1c2VmdWwgZm9y
IGRpc3Rpbmd1aXNoaW5nCiAgICAgICAgICAgICAgICAgdGVzdCBmaWxlcyBmcm9tIGRpcmVjdG9y
aWVzLCBhbmQgaXMgbmVlZGVkIGJ5IHRoZSBMVFRGCiAgICAgICAgICAgICAgICAgZGFzaGJvYXJk
LCB3aGVyZSB0aGUgZmlsZXMgYXJlbid0IGFjdHVhbGx5IGxvY2FsbHkgcHJlc2VudC4KKyAgICAg
ICAgICAgIG92ZXJyaWRlczogdGVzdCBleHBlY3RhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCB0byBv
dmVycmlkZSBhbnkKKyAgICAgICAgICAgICAgICBlbnRyaWVzIGluIHxleHBlY3RhdGlvbnN8LiBU
aGlzIGlzIHVzZWQgYnkgY2FsbGVycworICAgICAgICAgICAgICAgIHRoYXQgbmVlZCB0byBtYW5h
Z2UgdHdvIHNldHMgb2YgZXhwZWN0YXRpb25zIChlLmcuLCB1cHN0cmVhbQorICAgICAgICAgICAg
ICAgIGFuZCBkb3duc3RyZWFtIGV4cGVjdGF0aW9ucykuCiAgICAgICAgICIiIgogICAgICAgICBz
ZWxmLl9leHBlY3RlZF9mYWlsdXJlcyA9IFRlc3RFeHBlY3RhdGlvbnNGaWxlKHBvcnQsIGV4cGVj
dGF0aW9ucywKICAgICAgICAgICAgIHRlc3RzLCB0ZXN0X3BsYXRmb3JtX25hbWUsIGlzX2RlYnVn
X21vZGUsIGlzX2xpbnRfbW9kZSwKLSAgICAgICAgICAgIHRlc3RzX2FyZV9wcmVzZW50PXRlc3Rz
X2FyZV9wcmVzZW50KQorICAgICAgICAgICAgdGVzdHNfYXJlX3ByZXNlbnQ9dGVzdHNfYXJlX3By
ZXNlbnQsIG92ZXJyaWRlcz1vdmVycmlkZXMpCiAKICAgICAjIFRPRE8ob2phbik6IEFsbG93IGZv
ciByZW1vdmluZyBza2lwcGVkIHRlc3RzIHdoZW4gZ2V0dGluZyB0aGUgbGlzdCBvZgogICAgICMg
dGVzdHMgdG8gcnVuLCBidXQgbm90IHdoZW4gZ2V0dGluZyBtZXRyaWNzLgpAQCAtMjY0LDcgKzI2
OSw3IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnQsIGV4cGVjdGF0aW9ucywgZnVsbF90ZXN0X2xpc3QsIHRlc3RfcGxhdGZvcm1fbmFt
ZSwKICAgICAgICAgaXNfZGVidWdfbW9kZSwgaXNfbGludF9tb2RlLCBzdXBwcmVzc19lcnJvcnM9
RmFsc2UsCi0gICAgICAgIHRlc3RzX2FyZV9wcmVzZW50PVRydWUpOgorICAgICAgICB0ZXN0c19h
cmVfcHJlc2VudD1UcnVlLCBvdmVycmlkZXM9Tm9uZSk6CiAgICAgICAgICIiIgogICAgICAgICBl
eHBlY3RhdGlvbnM6IENvbnRlbnRzIG9mIHRoZSBleHBlY3RhdGlvbnMgZmlsZQogICAgICAgICBm
dWxsX3Rlc3RfbGlzdDogVGhlIGxpc3Qgb2YgYWxsIHRlc3RzIHRvIGJlIHJ1biBwZW5kaW5nIHBy
b2Nlc3Npbmcgb2YKQEAgLTI3OCw2ICsyODMsMTAgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0Zp
bGU6CiAgICAgICAgIHRlc3RzX2FyZV9wcmVzZW50OiBXaGV0aGVyIHRoZSB0ZXN0IGZpbGVzIGFy
ZSBwcmVzZW50IGluIHRoZSBsb2NhbAogICAgICAgICAgICAgZmlsZXN5c3RlbS4gVGhlIExUVEYg
RGFzaGJvYXJkIHVzZXMgRmFsc2UgaGVyZSB0byBhdm9pZCBoYXZpbmcgdG8KICAgICAgICAgICAg
IGtlZXAgYSBsb2NhbCBjb3B5IG9mIHRoZSB0cmVlLgorICAgICAgICBvdmVycmlkZXM6IHRlc3Qg
ZXhwZWN0YXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgYW55CisgICAgICAgICAg
ICBlbnRyaWVzIGluIHxleHBlY3RhdGlvbnN8LiBUaGlzIGlzIHVzZWQgYnkgY2FsbGVycworICAg
ICAgICAgICAgdGhhdCBuZWVkIHRvIG1hbmFnZSB0d28gc2V0cyBvZiBleHBlY3RhdGlvbnMgKGUu
Zy4sIHVwc3RyZWFtCisgICAgICAgICAgICBhbmQgZG93bnN0cmVhbSBleHBlY3RhdGlvbnMpLgog
ICAgICAgICAiIiIKIAogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydApAQCAtMjg3LDYgKzI5Niw3
IEBAIGNsYXNzIFRlc3RFeHBlY3RhdGlvbnNGaWxlOgogICAgICAgICBzZWxmLl9pc19kZWJ1Z19t
b2RlID0gaXNfZGVidWdfbW9kZQogICAgICAgICBzZWxmLl9pc19saW50X21vZGUgPSBpc19saW50
X21vZGUKICAgICAgICAgc2VsZi5fdGVzdHNfYXJlX3ByZXNlbnQgPSB0ZXN0c19hcmVfcHJlc2Vu
dAorICAgICAgICBzZWxmLl9vdmVycmlkZXMgPSBvdmVycmlkZXMKICAgICAgICAgc2VsZi5fc3Vw
cHJlc3NfZXJyb3JzID0gc3VwcHJlc3NfZXJyb3JzCiAgICAgICAgIHNlbGYuX2Vycm9ycyA9IFtd
CiAgICAgICAgIHNlbGYuX25vbl9mYXRhbF9lcnJvcnMgPSBbXQpAQCAtMzE0LDcgKzMyNCw1MCBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgc2VsZi5fdGltZWxpbmVfdG9f
dGVzdHMgPSBzZWxmLl9kaWN0X29mX3NldHMoc2VsZi5USU1FTElORVMpCiAgICAgICAgIHNlbGYu
X3Jlc3VsdF90eXBlX3RvX3Rlc3RzID0gc2VsZi5fZGljdF9vZl9zZXRzKHNlbGYuUkVTVUxUX1RZ
UEVTKQogCi0gICAgICAgIHNlbGYuX3JlYWQoc2VsZi5fZ2V0X2l0ZXJhYmxlX2V4cGVjdGF0aW9u
cygpKQorICAgICAgICBzZWxmLl9yZWFkKHNlbGYuX2dldF9pdGVyYWJsZV9leHBlY3RhdGlvbnMo
c2VsZi5fZXhwZWN0YXRpb25zKSwKKyAgICAgICAgICAgICAgICAgICBvdmVycmlkZXNfYWxsb3dl
ZD1GYWxzZSkKKworICAgICAgICAjIExpc3Qgb2YgdGVzdHMgdGhhdCBhcmUgaW4gdGhlIG92ZXJy
aWRlcyBmaWxlICh1c2VkIGZvciBjaGVja2luZyBmb3IKKyAgICAgICAgIyBkdXBsaWNhdGVzIGlu
c2lkZSB0aGUgb3ZlcnJpZGVzIGZpbGUgaXRzZWxmKS4gTm90ZSB0aGF0IGp1c3QgYmVjYXVzZQor
ICAgICAgICAjIGEgdGVzdCBpcyBpbiB0aGlzIHNldCBkb2Vzbid0IG1lYW4gaXQncyBuZWNlc3Nh
cmlseSBvdmVycmlkZGluZyBhCisgICAgICAgICMgZXhwZWN0YXRpb24gaW4gdGhlIHJlZ3VsYXIg
ZXhwZWN0YXRpb25zOyB0aGUgdGVzdCBtaWdodCBub3QgYmUKKyAgICAgICAgIyBtZW50aW9uZWQg
aW4gdGhlIHJlZ3VsYXIgZXhwZWN0YXRpb25zIGZpbGUgYXQgYWxsLgorICAgICAgICBzZWxmLl9v
dmVycmlkZGluZ190ZXN0cyA9IHNldCgpCisKKyAgICAgICAgaWYgb3ZlcnJpZGVzOgorICAgICAg
ICAgICAgc2VsZi5fcmVhZChzZWxmLl9nZXRfaXRlcmFibGVfZXhwZWN0YXRpb25zKHNlbGYuX292
ZXJyaWRlcyksCisgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19hbGxvd2VkPVRydWUp
CisKKyAgICAgICAgc2VsZi5faGFuZGxlX2FueV9yZWFkX2Vycm9ycygpCisgICAgICAgIHNlbGYu
X3Byb2Nlc3NfdGVzdHNfd2l0aG91dF9leHBlY3RhdGlvbnMoKQorCisgICAgZGVmIF9oYW5kbGVf
YW55X3JlYWRfZXJyb3JzKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fc3VwcHJlc3NfZXJy
b3JzIGFuZCAoCisgICAgICAgICAgICBsZW4oc2VsZi5fZXJyb3JzKSBvciBsZW4oc2VsZi5fbm9u
X2ZhdGFsX2Vycm9ycykpOgorICAgICAgICAgICAgaWYgc2VsZi5faXNfZGVidWdfbW9kZToKKyAg
ICAgICAgICAgICAgICBidWlsZF90eXBlID0gJ0RFQlVHJworICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBidWlsZF90eXBlID0gJ1JFTEVBU0UnCisgICAgICAgICAgICBfbG9nLmVy
cm9yKCcnKQorICAgICAgICAgICAgX2xvZy5lcnJvcigiRkFJTFVSRVMgRk9SIFBMQVRGT1JNOiAl
cywgQlVJTERfVFlQRTogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3Rlc3Rf
cGxhdGZvcm1fbmFtZS51cHBlcigpLCBidWlsZF90eXBlKSkKKworICAgICAgICAgICAgZm9yIGVy
cm9yIGluIHNlbGYuX25vbl9mYXRhbF9lcnJvcnM6CisgICAgICAgICAgICAgICAgX2xvZy5lcnJv
cihlcnJvcikKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJycpCisKKyAgICAgICAgICAgIGlmIGxl
bihzZWxmLl9lcnJvcnMpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCdcbicu
am9pbihtYXAoc3RyLCBzZWxmLl9lcnJvcnMpKSkKKworICAgIGRlZiBfcHJvY2Vzc190ZXN0c193
aXRob3V0X2V4cGVjdGF0aW9ucyhzZWxmKToKKyAgICAgICAgZXhwZWN0YXRpb25zID0gc2V0KFtQ
QVNTXSkKKyAgICAgICAgb3B0aW9ucyA9IFtdCisgICAgICAgIG1vZGlmaWVycyA9IFtdCisgICAg
ICAgIGlmIHNlbGYuX2Z1bGxfdGVzdF9saXN0OgorICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2Vs
Zi5fZnVsbF90ZXN0X2xpc3Q6CisgICAgICAgICAgICAgICAgaWYgbm90IHRlc3QgaW4gc2VsZi5f
dGVzdF9saXN0X3BhdGhzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0
LCBtb2RpZmllcnMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG92ZXJyaWRlc19hbGxvd2VkPUZhbHNlKQogCiAgICAgZGVmIF9kaWN0X29mX3NldHMoc2Vs
Ziwgc3RyaW5nc190b19jb25zdGFudHMpOgogICAgICAgICAiIiJUYWtlcyBhIGRpY3Qgb2Ygc3Ry
aW5ncy0+Y29uc3RhbnRzIGFuZCByZXR1cm5zIGEgZGljdCBtYXBwaW5nCkBAIC0zMjQsMTIgKzM3
NywxMSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgIGRbY10gPSBz
ZXQoKQogICAgICAgICByZXR1cm4gZAogCi0gICAgZGVmIF9nZXRfaXRlcmFibGVfZXhwZWN0YXRp
b25zKHNlbGYpOgorICAgIGRlZiBfZ2V0X2l0ZXJhYmxlX2V4cGVjdGF0aW9ucyhzZWxmLCBleHBl
Y3RhdGlvbnNfc3RyKToKICAgICAgICAgIiIiUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjYW4gYmUg
aXRlcmF0ZWQgb3Zlci4gQWxsb3dzIGZvciBub3QgY2FyaW5nCiAgICAgICAgIGFib3V0IHdoZXRo
ZXIgd2UncmUgaXRlcmF0aW5nIG92ZXIgYSBmaWxlIG9yIGEgbmV3LWxpbmUgc2VwYXJhdGVkCiAg
ICAgICAgIHN0cmluZy4iIiIKLSAgICAgICAgaXRlcmFibGUgPSBbeCArICJcbiIgZm9yIHggaW4K
LSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucy5zcGxpdCgiXG4iKV0KKyAgICAgICAgaXRl
cmFibGUgPSBbeCArICJcbiIgZm9yIHggaW4gZXhwZWN0YXRpb25zX3N0ci5zcGxpdCgiXG4iKV0K
ICAgICAgICAgIyBTdHJpcCBmaW5hbCBlbnRyeSBpZiBpdCdzIGVtcHR5IHRvIGF2b2lkIGFkZGVk
IGluIGFuIGV4dHJhCiAgICAgICAgICMgbmV3bGluZS4KICAgICAgICAgaWYgaXRlcmFibGVbLTFd
ID09ICJcbiI6CkBAIC01NzcsNyArNjI5LDcgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc0ZpbGU6
CiAgICAgICAgIHNlbGYuX2FsbF9leHBlY3RhdGlvbnNbdGVzdF0uYXBwZW5kKAogICAgICAgICAg
ICAgTW9kaWZpZXJzQW5kRXhwZWN0YXRpb25zKG9wdGlvbnMsIGV4cGVjdGF0aW9ucykpCiAKLSAg
ICBkZWYgX3JlYWQoc2VsZiwgZXhwZWN0YXRpb25zKToKKyAgICBkZWYgX3JlYWQoc2VsZiwgZXhw
ZWN0YXRpb25zLCBvdmVycmlkZXNfYWxsb3dlZCk6CiAgICAgICAgICIiIkZvciBlYWNoIHRlc3Qg
aW4gYW4gZXhwZWN0YXRpb25zIGl0ZXJhYmxlLCBnZW5lcmF0ZSB0aGUKICAgICAgICAgZXhwZWN0
YXRpb25zIGZvciBpdC4iIiIKICAgICAgICAgbGluZW5vID0gMApAQCAtNjI4LDMzICs2ODAsNyBA
QCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgICAgICAgICB0ZXN0cyA9IHNl
bGYuX2V4cGFuZF90ZXN0cyh0ZXN0X2xpc3RfcGF0aCkKIAogICAgICAgICAgICAgc2VsZi5fYWRk
X3Rlc3RzKHRlc3RzLCBleHBlY3RhdGlvbnMsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMpCi0KLSAgICAgICAgaWYg
bm90IHNlbGYuX3N1cHByZXNzX2Vycm9ycyBhbmQgKAotICAgICAgICAgICAgbGVuKHNlbGYuX2Vy
cm9ycykgb3IgbGVuKHNlbGYuX25vbl9mYXRhbF9lcnJvcnMpKToKLSAgICAgICAgICAgIGlmIHNl
bGYuX2lzX2RlYnVnX21vZGU6Ci0gICAgICAgICAgICAgICAgYnVpbGRfdHlwZSA9ICdERUJVRycK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnVpbGRfdHlwZSA9ICdSRUxFQVNF
JwotICAgICAgICAgICAgX2xvZy5lcnJvcignJykKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZB
SUxVUkVTIEZPUiBQTEFURk9STTogJXMsIEJVSUxEX1RZUEU6ICVzIiAlCi0gICAgICAgICAgICAg
ICAgICAgICAgIChzZWxmLl90ZXN0X3BsYXRmb3JtX25hbWUudXBwZXIoKSwgYnVpbGRfdHlwZSkp
Ci0KLSAgICAgICAgICAgIGZvciBlcnJvciBpbiBzZWxmLl9ub25fZmF0YWxfZXJyb3JzOgotICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoZXJyb3IpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcn
KQotCi0gICAgICAgICAgICBpZiBsZW4oc2VsZi5fZXJyb3JzKToKLSAgICAgICAgICAgICAgICBy
YWlzZSBTeW50YXhFcnJvcignXG4nLmpvaW4obWFwKHN0ciwgc2VsZi5fZXJyb3JzKSkpCi0KLSAg
ICAgICAgIyBOb3cgYWRkIGluIHRoZSB0ZXN0cyB0aGF0IHdlcmVuJ3QgcHJlc2VudCBpbiB0aGUg
ZXhwZWN0YXRpb25zIGZpbGUKLSAgICAgICAgZXhwZWN0YXRpb25zID0gc2V0KFtQQVNTXSkKLSAg
ICAgICAgb3B0aW9ucyA9IFtdCi0gICAgICAgIG1vZGlmaWVycyA9IFtdCi0gICAgICAgIGlmIHNl
bGYuX2Z1bGxfdGVzdF9saXN0OgotICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5fZnVsbF90
ZXN0X2xpc3Q6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHRlc3QgaW4gc2VsZi5fdGVzdF9saXN0
X3BhdGhzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmll
cnMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
ZGlmaWVycywgb3B0aW9ucywgb3ZlcnJpZGVzX2FsbG93ZWQpCiAKICAgICBkZWYgX2dldF9vcHRp
b25zX2xpc3Qoc2VsZiwgbGlzdFN0cmluZyk6CiAgICAgICAgIHJldHVybiBbcGFydC5zdHJpcCgp
Lmxvd2VyKCkgZm9yIHBhcnQgaW4gbGlzdFN0cmluZy5zdHJpcCgpLnNwbGl0KCcgJyldCkBAIC02
OTgsMTUgKzcyNCwxOCBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgcmV0
dXJuIHBhdGgKIAogICAgIGRlZiBfYWRkX3Rlc3RzKHNlbGYsIHRlc3RzLCBleHBlY3RhdGlvbnMs
IHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzLCBv
cHRpb25zKToKKyAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMsIG9wdGlvbnMsIG92ZXJyaWRl
c19hbGxvd2VkKToKICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICBpZiBz
ZWxmLl9hbHJlYWR5X3NlZW5fdGVzdCh0ZXN0LCB0ZXN0X2xpc3RfcGF0aCwgbGluZW5vKToKKyAg
ICAgICAgICAgIGlmIHNlbGYuX2FscmVhZHlfc2Vlbl90ZXN0KHRlc3QsIHRlc3RfbGlzdF9wYXRo
LCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlk
ZXNfYWxsb3dlZCk6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgc2Vs
Zi5fY2xlYXJfZXhwZWN0YXRpb25zX2Zvcl90ZXN0KHRlc3QsIHRlc3RfbGlzdF9wYXRoKQotICAg
ICAgICAgICAgc2VsZi5fYWRkX3Rlc3QodGVzdCwgbW9kaWZpZXJzLCBleHBlY3RhdGlvbnMsIG9w
dGlvbnMpCisgICAgICAgICAgICBzZWxmLl9hZGRfdGVzdCh0ZXN0LCBtb2RpZmllcnMsIGV4cGVj
dGF0aW9ucywgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19h
bGxvd2VkKQogCi0gICAgZGVmIF9hZGRfdGVzdChzZWxmLCB0ZXN0LCBtb2RpZmllcnMsIGV4cGVj
dGF0aW9ucywgb3B0aW9ucyk6CisgICAgZGVmIF9hZGRfdGVzdChzZWxmLCB0ZXN0LCBtb2RpZmll
cnMsIGV4cGVjdGF0aW9ucywgb3B0aW9ucywKKyAgICAgICAgICAgICAgICAgIG92ZXJyaWRlc19h
bGxvd2VkKToKICAgICAgICAgIiIiU2V0cyB0aGUgZXhwZWN0ZWQgc3RhdGUgZm9yIGEgZ2l2ZW4g
dGVzdC4KIAogICAgICAgICBUaGlzIHJvdXRpbmUgYXNzdW1lcyB0aGUgdGVzdCBoYXMgbm90IGJl
ZW4gYWRkZWQgYmVmb3JlLiBJZiBpdCBoYXMsCkBAIC03MTcsNyArNzQ2LDkgQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAgdGVzdDogdGVzdCB0byBhZGQKICAgICAgICAg
ICBtb2RpZmllcnM6IHNlcXVlbmNlIG9mIG1vZGlmaWVyIGtleXdvcmRzICgnd29udGZpeCcsICdz
bG93JywgZXRjLikKICAgICAgICAgICBleHBlY3RhdGlvbnM6IHNlcXVlbmNlIG9mIGV4cGVjdGF0
aW9ucyAoUEFTUywgSU1BR0UsIGV0Yy4pCi0gICAgICAgICAgb3B0aW9uczogc2VxdWVuY2Ugb2Yg
a2V5d29yZHMgYW5kIGJ1ZyBpZGVudGlmaWVycy4iIiIKKyAgICAgICAgICBvcHRpb25zOiBzZXF1
ZW5jZSBvZiBrZXl3b3JkcyBhbmQgYnVnIGlkZW50aWZpZXJzLgorICAgICAgICAgIG92ZXJyaWRl
c19hbGxvd2VkOiB3aGV0aGVyIHdlJ3JlIHBhcnNpbmcgdGhlIHJlZ3VsYXIgZXhwZWN0YXRpb25z
CisgICAgICAgICAgICAgIG9yIHRoZSBvdmVycmlkZGluZyBleHBlY3RhdGlvbnMiIiIKICAgICAg
ICAgc2VsZi5fdGVzdF90b19leHBlY3RhdGlvbnNbdGVzdF0gPSBleHBlY3RhdGlvbnMKICAgICAg
ICAgZm9yIGV4cGVjdGF0aW9uIGluIGV4cGVjdGF0aW9uczoKICAgICAgICAgICAgIHNlbGYuX2V4
cGVjdGF0aW9uX3RvX3Rlc3RzW2V4cGVjdGF0aW9uXS5hZGQodGVzdCkKQEAgLTc0NSw2ICs3NzYs
OSBAQCBjbGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIHNlbGYuX3Jlc3VsdF90eXBlX3RvX3Rlc3RzW0ZBSUxdLmFkZCh0ZXN0KQogCisgICAgICAg
IGlmIG92ZXJyaWRlc19hbGxvd2VkOgorICAgICAgICAgICAgc2VsZi5fb3ZlcnJpZGRpbmdfdGVz
dHMuYWRkKHRlc3QpCisKICAgICBkZWYgX2NsZWFyX2V4cGVjdGF0aW9uc19mb3JfdGVzdChzZWxm
LCB0ZXN0LCB0ZXN0X2xpc3RfcGF0aCk6CiAgICAgICAgICIiIlJlbW92ZSBwcmV4aXN0aW5nIGV4
cGVjdGF0aW9ucyBmb3IgdGhpcyB0ZXN0LgogICAgICAgICBUaGlzIGhhcHBlbnMgaWYgd2UgYXJl
IHNlZWluZyBhIG1vcmUgcHJlY2lzZSBwYXRoCkBAIC03NjksNyArODAzLDcgQEAgY2xhc3MgVGVz
dEV4cGVjdGF0aW9uc0ZpbGU6CiAgICAgICAgICAgICBpZiB0ZXN0IGluIHNldF9vZl90ZXN0czoK
ICAgICAgICAgICAgICAgICBzZXRfb2ZfdGVzdHMucmVtb3ZlKHRlc3QpCiAKLSAgICBkZWYgX2Fs
cmVhZHlfc2Vlbl90ZXN0KHNlbGYsIHRlc3QsIHRlc3RfbGlzdF9wYXRoLCBsaW5lbm8pOgorICAg
IGRlZiBfYWxyZWFkeV9zZWVuX3Rlc3Qoc2VsZiwgdGVzdCwgdGVzdF9saXN0X3BhdGgsIGxpbmVu
bywgYWxsb3dfb3ZlcnJpZGVzKToKICAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmIHdlJ3ZlIGFs
cmVhZHkgc2VlbiBhIG1vcmUgcHJlY2lzZSBwYXRoIGZvciB0aGlzIHRlc3QKICAgICAgICAgdGhh
biB0aGUgdGVzdF9saXN0X3BhdGguCiAgICAgICAgICIiIgpAQCAtNzc4LDggKzgxMiwxOSBAQCBj
bGFzcyBUZXN0RXhwZWN0YXRpb25zRmlsZToKIAogICAgICAgICBwcmV2X2Jhc2VfcGF0aCA9IHNl
bGYuX3Rlc3RfbGlzdF9wYXRoc1t0ZXN0XQogICAgICAgICBpZiAocHJldl9iYXNlX3BhdGggPT0g
b3MucGF0aC5ub3JtcGF0aCh0ZXN0X2xpc3RfcGF0aCkpOgotICAgICAgICAgICAgc2VsZi5fYWRk
X2Vycm9yKGxpbmVubywgJ0R1cGxpY2F0ZSBleHBlY3RhdGlvbnMuJywgdGVzdCkKLSAgICAgICAg
ICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiAobm90IGFsbG93X292ZXJyaWRlcyBvciB0
ZXN0IGluIHNlbGYuX292ZXJyaWRkaW5nX3Rlc3RzKToKKyAgICAgICAgICAgICAgICBpZiBhbGxv
d19vdmVycmlkZXM6CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uX3NvdXJjZSA9ICJv
dmVycmlkZSIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBleHBl
Y3RhdGlvbl9zb3VyY2UgPSAiZXhwZWN0YXRpb24iCisgICAgICAgICAgICAgICAgc2VsZi5fYWRk
X2Vycm9yKGxpbmVubywgJ0R1cGxpY2F0ZSAlcy4nICUgZXhwZWN0YXRpb25fc291cmNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0KQorICAgICAgICAgICAgICAgIHJl
dHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBz
ZWVuIHRoaXMgcGF0aCwgYnV0IHRoYXQncyBva2F5IGJlY2F1c2UgaXRzCisgICAgICAgICAgICAg
ICAgIyBpbiB0aGUgb3ZlcnJpZGVzIGFuZCB0aGUgZWFybGllciBwYXRoIHdhcyBpbiB0aGUKKyAg
ICAgICAgICAgICAgICAjIGV4cGVjdGF0aW9ucy4KKyAgICAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKIAogICAgICAgICAjIENoZWNrIGlmIHdlJ3ZlIGFscmVhZHkgc2VlbiBhIG1vcmUgcHJlY2lz
ZSBwYXRoLgogICAgICAgICByZXR1cm4gcHJldl9iYXNlX3BhdGguc3RhcnRzd2l0aChvcy5wYXRo
Lm5vcm1wYXRoKHRlc3RfbGlzdF9wYXRoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZXhwZWN0YXRpb25z
X3Rlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0aW9uc190ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmY0NWE0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2V4cGVjdGF0
aW9uc190ZXN0LnB5CkBAIC0wLDAgKzEsMTA0IEBACisjIS91c3IvYmluL3B5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdHMgZm9yIHRlc3RfZXhwZWN0YXRpb25zLnB5LiIiIgor
CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCit0cnk6CisgICBkID0g
b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorZXhjZXB0IE5hbWVFcnJvcjoKKyAgIGQgPSBvcy5w
YXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pCisKK3N5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5qb2luKGQsICcuLicpKSkKK3N5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmFic3Bh
dGgob3MucGF0aC5qb2luKGQsICcuLi8uLi90aGlyZHBhcnR5JykpKQorCitpbXBvcnQgcG9ydAor
ZnJvbSB0ZXN0X2V4cGVjdGF0aW9ucyBpbXBvcnQgKgorCitjbGFzcyBUZXN0RXhwZWN0YXRpb25z
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdEZ1
bmMsIHNldFVwPU5vbmUsIHRlYXJEb3duPU5vbmUsIGRlc2NyaXB0aW9uPU5vbmUpOgorICAgICAg
ICBzZWxmLl9wb3J0ID0gcG9ydC5nZXQoJ3Rlc3QnLCBOb25lKQorICAgICAgICBzZWxmLl9leHAg
PSBOb25lCisgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYsIHRlc3RGdW5j
KQorCisgICAgZGVmIGdldF90ZXN0KHNlbGYsIHRlc3RfbmFtZSk6CisgICAgICAgIHJldHVybiBv
cy5wYXRoLmpvaW4oc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksIHRlc3RfbmFtZSkKKwor
ICAgIGRlZiBnZXRfYmFzaWNfdGVzdHMoc2VsZik6CisgICAgICAgIHJldHVybiBbc2VsZi5nZXRf
dGVzdCgnZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sJyksCisgICAgICAgICAgICAgICAg
c2VsZi5nZXRfdGVzdCgnZmFzdC9odG1sL2hlYWRlci1lbGVtZW50Lmh0bWwnKSwKKyAgICAgICAg
ICAgICAgICBzZWxmLmdldF90ZXN0KCdmYXN0L2V2ZW50cy9zcGFjZS1zY3JvbGwtZXZlbnQuaHRt
bCcpLAorICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rlc3QoJ2Zhc3QvZXZlbnRzL3RhYi1pbWFn
ZW1hcC5odG1sJyldCisKKyAgICBkZWYgZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucyhzZWxmKToKKyAg
ICAgICAgcmV0dXJuICIiIgorQlVHX1RFU1QgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0
bWwgPSBURVhUCitCVUdfVEVTVCA6IGZhc3QvZXZlbnRzID0gSU1BR0UKKyIiIgorCisgICAgZGVm
IHBhcnNlX2V4cChzZWxmLCBleHBlY3RhdGlvbnMsIG92ZXJyaWRlcz1Ob25lKToKKyAgICAgICAg
c2VsZi5fZXhwID0gVGVzdEV4cGVjdGF0aW9ucyhzZWxmLl9wb3J0LAorICAgICAgICAgICAgIHRl
c3RzPXNlbGYuZ2V0X2Jhc2ljX3Rlc3RzKCksCisgICAgICAgICAgICAgZXhwZWN0YXRpb25zPWV4
cGVjdGF0aW9ucywgCisgICAgICAgICAgICAgdGVzdF9wbGF0Zm9ybV9uYW1lPXNlbGYuX3BvcnQu
dGVzdF9wbGF0Zm9ybV9uYW1lKCksCisgICAgICAgICAgICAgaXNfZGVidWdfbW9kZT1GYWxzZSwK
KyAgICAgICAgICAgICBpc19saW50X21vZGU9RmFsc2UsCisgICAgICAgICAgICAgdGVzdHNfYXJl
X3ByZXNlbnQ9VHJ1ZSwKKyAgICAgICAgICAgICBvdmVycmlkZXM9b3ZlcnJpZGVzKQorIAorICAg
IGRlZiBhc3NlcnRfZXhwKHNlbGYsIHRlc3QsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHNlbGYuX2V4cC5nZXRfZXhwZWN0YXRpb25zKHNlbGYuZ2V0X3Rlc3QodGVzdCkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoW3Jlc3VsdF0pKQorCisgICAgZGVmIHRlc3Rf
YmFzaWMoc2VsZik6CisgICAgICAgc2VsZi5wYXJzZV9leHAoc2VsZi5nZXRfYmFzaWNfZXhwZWN0
YXRpb25zKCkpCisgICAgICAgc2VsZi5hc3NlcnRfZXhwKCdmYXN0L2h0bWwvYXJ0aWNsZS1lbGVt
ZW50Lmh0bWwnLCBURVhUKQorICAgICAgIHNlbGYuYXNzZXJ0X2V4cCgnZmFzdC9ldmVudHMvdGFi
LWltYWdlbWFwLmh0bWwnLCBJTUFHRSkKKyAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Zhc3QvaHRt
bC9oZWFkZXItZWxlbWVudC5odG1sJywgUEFTUykKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZXMo
c2VsZik6CisgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIHNlbGYucGFyc2Vf
ZXhwLCAiIiIKK0JVR19URVNUIDogZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gVEVY
VAorQlVHX1RFU1QgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBJTUFHRSIiIikK
KyAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgc2VsZi5wYXJzZV9leHAsCisg
ICAgICAgICAgIHNlbGYuZ2V0X2Jhc2ljX2V4cGVjdGF0aW9ucygpLCAiIiIKK0JVR19URVNUIDog
ZmFzdC9odG1sL2FydGljbGUtZWxlbWVudC5odG1sID0gVEVYVAorQlVHX1RFU1QgOiBmYXN0L2h0
bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBJTUFHRSIiIikKKworICAgIGRlZiB0ZXN0X292ZXJy
aWRlcyhzZWxmKToKKyAgICAgICBzZWxmLnBhcnNlX2V4cChzZWxmLmdldF9iYXNpY19leHBlY3Rh
dGlvbnMoKSwgIiIiCitCVUdfT1ZFUlJJREUgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0
bWwgPSBJTUFHRSIiIikKKyAgICAgICBzZWxmLmFzc2VydF9leHAoJ2Zhc3QvaHRtbC9hcnRpY2xl
LWVsZW1lbnQuaHRtbCcsIElNQUdFKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAg
IHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDY4MzdmZjQuLmUzYjUxNzIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFz
ZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHkKQEAgLTQ0MSw2ICs0NDEsMTUgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAg
ICB0ZXN0X2V4cGVjdGF0aW9ucyBmaWxlLiBTZWUgdGVzdF9leHBlY3RhdGlvbnMucHkgZm9yIG1v
cmUgZGV0YWlscy4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUG9ydC50
ZXN0X2V4cGVjdGF0aW9ucycpCiAKKyAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVz
KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm5zIGFuIG9wdGlvbmFsIHNldCBvZiBvdmVycmlkZXMg
Zm9yIHRoZSB0ZXN0X2V4cGVjdGF0aW9ucy4KKworICAgICAgICBUaGlzIGlzIHVzZWQgYnkgcG9y
dHMgdGhhdCBoYXZlIGNvZGUgaW4gdHdvIHJlcG9zaXRvcmllcywgYW5kIHdoZXJlCisgICAgICAg
IGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IG1pZ2h0IG5lZWQgImRvd25zdHJlYW0iIGV4cGVjdGF0
aW9ucyB0aGF0CisgICAgICAgIHRlbXBvcmFyaWx5IG92ZXJyaWRlIHRoZSAidXBzdHJlYW0iIGV4
cGVjdGF0aW9ucyB1bnRpbCB0aGUgcG9ydCBjYW4KKyAgICAgICAgc3luYyB1cCB0aGUgdHdvIHJl
cG9zLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgZGVmIHRlc3RfYmFzZV9wbGF0Zm9y
bV9uYW1lcyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiB0aGUgJ2Jhc2UnIHBs
YXRmb3JtcyBvbiB5b3VyIHBvcnQuIFRoZSBiYXNlCiAgICAgICAgIHBsYXRmb3JtcyByZXByZXNl
bnQgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMsIG9wZXJhdGluZyBzeXN0ZW1zLApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93
ZWJraXRfdGVzdHMucHkKaW5kZXggYjgwOTc3MC4uZmIyODk2ZSAxMDA3NTUKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5CkBAIC0yMjcsOSArMjI3LDExIEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgZXhwZWN0YXRpb25zX3N0ciA9IHNlbGYuX3BvcnQudGVzdF9l
eHBlY3RhdGlvbnMoKQorICAgICAgICAgICAgb3ZlcnJpZGVzX3N0ciA9IHNlbGYuX3BvcnQudGVz
dF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKCkKICAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9u
cyA9IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMoCiAgICAgICAgICAgICAgICAg
c2VsZi5fcG9ydCwgdGVzdF9maWxlcywgZXhwZWN0YXRpb25zX3N0ciwgdGVzdF9wbGF0Zm9ybV9u
YW1lLAotICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGUsIHNlbGYuX29wdGlvbnMubGludF90
ZXN0X2ZpbGVzKQorICAgICAgICAgICAgICAgIGlzX2RlYnVnX21vZGUsIHNlbGYuX29wdGlvbnMu
bGludF90ZXN0X2ZpbGVzLAorICAgICAgICAgICAgICAgIHRlc3RzX2FyZV9wcmVzZW50PVRydWUs
IG92ZXJyaWRlcz1vdmVycmlkZXNfc3RyKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4cGVj
dGF0aW9ucwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlcnI6CiAgICAgICAgICAgICBpZiBz
ZWxmLl9vcHRpb25zLmxpbnRfdGVzdF9maWxlczoKQEAgLTE0NjAsNiArMTQ2Miw3IEBAIGRlZiBt
YWluKG9wdGlvbnMsIGFyZ3MpOgogICAgICAgICBmb3IgcGxhdGZvcm0gaW4gcG9ydF9vYmoudGVz
dF9wbGF0Zm9ybV9uYW1lcygpOgogICAgICAgICAgICAgdGVzdF9ydW5uZXIucGFyc2VfZXhwZWN0
YXRpb25zKHBsYXRmb3JtLCBpc19kZWJ1Z19tb2RlPVRydWUpCiAgICAgICAgICAgICB0ZXN0X3J1
bm5lci5wYXJzZV9leHBlY3RhdGlvbnMocGxhdGZvcm0sIGlzX2RlYnVnX21vZGU9RmFsc2UpCisg
ICAgICAgIG1ldGVyLnVwZGF0ZSgiIikKICAgICAgICAgcHJpbnQgKCJJZiB0aGVyZSBhcmUgbm8g
ZmFpbCBtZXNzYWdlcywgZXJyb3JzIG9yIGV4Y2VwdGlvbnMsIHRoZW4gdGhlICIKICAgICAgICAg
ICAgICJsaW50IHN1Y2NlZWRlZC4iKQogICAgICAgICBzeXMuZXhpdCgwKQo=
</data>
<flag name="review"
          id="34295"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>