<?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>106172</bug_id>
          
          <creation_ts>2013-01-05 02:14:28 -0800</creation_ts>
          <short_desc>Extract a class to represent a test result to simplify PerfTest.parse_output and PageLoadPerfTest._run_with_driver</short_desc>
          <delta_ts>2013-01-07 10:29:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97510</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>800893</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-05 02:14:28 -0800</bug_when>
    <thetext>Right now, PerfTest.parse_output is a God-function that parses text output of DriverOutput and creates the dictionary PerfTestRunner and the perf-o-matic expects.
PageLoadPerfTest._run_with_driver has a similar problem.

Extract a class that represents a test result in order to simplify these two functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800894</commentid>
    <comment_count>1</comment_count>
      <attachid>181432</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-05 02:34:40 -0800</bug_when>
    <thetext>Created attachment 181432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801357</commentid>
    <comment_count>2</comment_count>
      <attachid>181432</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-01-07 09:57:17 -0800</bug_when>
    <thetext>Comment on attachment 181432
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:56
&gt; +    allowed_metrics = (&apos;Time&apos;, &apos;Malloc&apos;, &apos;JSHeap&apos;)

Nit: I think we normally use ALL_CAPS for constants. Also, this looks like it is only used in the class so you could _ prefix it.

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:59
&gt; +    def __init__(self, metric, unit=None, iterations=None):
&gt; +        self._metric = metric

Nit: Maybe assert here that metric is in allowed_metrics?

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:245
&gt; +                current_metric = metric_match.group(&apos;metric&apos;).replace(&apos; &apos;, &apos;&apos;)

It&apos;s a bit unfortunate that we use &quot;JS Heap&quot; in one place and &quot;JSHeap&quot; in another.  Maybe we can clean this up in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801391</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-07 10:29:17 -0800</bug_when>
    <thetext>Committed r138955: &lt;http://trac.webkit.org/changeset/138955&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181432</attachid>
            <date>2013-01-05 02:34:40 -0800</date>
            <delta_ts>2013-01-07 09:57:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106172-20130105023146.patch</filename>
            <type>text/plain</type>
            <size>23331</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzODg5MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDU5IEBACisyMDEzLTAxLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEV4dHJhY3QgYSBjbGFzcyB0byByZXByZXNlbnQgYSB0ZXN0IHJlc3VsdCB0byBz
aW1wbGlmeSBQZXJmVGVzdC5wYXJzZV9vdXRwdXQgYW5kIFBhZ2VMb2FkUGVyZlRlc3QuX3J1bl93
aXRoX2RyaXZlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA2MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXh0cmFjdGVkIFBlcmZUZXN0TWV0cmljLCB3aGljaCByZXByZXNlbnRzIGEgdGVzdCByZXN1
bHQgYW5kIGtub3dzIGhvdyB0byBjb21wdXRlIHN0YXRpc3RpY3MgYW5kIGNvbnZlcnQgaXRzZWxm
CisgICAgICAgIHRvIGEgZGljdGlvbmFyeS4gQSBtZXRyaWMgaXMgYSB0eXBlIG9mIG1lYXN1cmVt
ZW50IGVhY2ggdGVzdCBtYWtlcyBzdWNoIGFzICJUaW1lIiwgIk1hbGxvYyIsIGFuZCAiSlNIZWFw
Ii4KKyAgICAgICAgQSBzaW5nbGUgdGVzdCAoZS5nLiBodG1sNS1mdWxsLXJlbmRlci5odG1sKSBt
YXkgaGF2ZSBtdWx0aXBsZSBtZXRyaWNzLCBlYWNoIG9mIHdoaWNoIGlzIHJlcG9ydGVkIGFzIGEg
c2VwYXJhdGUKKyAgICAgICAgdGVzdCBvbiBwZXJmLW8tbWF0aWMgYW5kIHBlcmYuIHRlc3QncyBy
ZXN1bHRzIHBhZ2UuCisKKyAgICAgICAgQWxzbywgdXNlIHB5dGhvbidzIGNvbXB1dGVfc3RhdGlz
dGljcyBpbnN0ZWFkIG9mIHJlYWRpbmcgc3RhdGlzdGljcyBvZmYgb2YgRHJpdmVyT3V0cHV0IHRv
IHNpbXBsaWZ5IHRoZSBjb2RlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdC5weToKKyAgICAgICAgKFBlcmZUZXN0TWV0cmljKTogQWRkZWQu
CisgICAgICAgIChQZXJmVGVzdE1ldHJpYy5fX2luaXRfXyk6IEFkZGVkLgorICAgICAgICAoUGVy
ZlRlc3RNZXRyaWMubWV0cmljKTogQWRkZWQuCisgICAgICAgIChQZXJmVGVzdE1ldHJpYy5oYXNf
dmFsdWVzKTogQWRkZWQuCisgICAgICAgIChQZXJmVGVzdE1ldHJpYy5sZWdhY3lfY2hyb21pdW1f
Ym90X2NvbXBhdGlibGVfdGVzdF9uYW1lKTogQWRkZWQuIEZvbGxvd2luZyB0aGUgbGVnYWN5IGNv
bnZlbnRpb24sICJNYWxsb2MiIGFuZAorICAgICAgICAiSlNIZWFwIiB3aWxsIHVzZSAidGVzdF9u
YW1lOk1hbGxvYyIgd2hlcmVhcyAiVGltZSIgdXNlcyAidGVzdF9uYW1lIiBpdHNlbGYuIFdlIHNo
b3VsZCBldmVudHVhbGx5IG1vdmUgdGhlc2UKKyAgICAgICAgY29udmVyc2lvbnMgdG8gYmUgZG9u
ZSBvbiB0aGUgY2xpZW50IHNpZGUgKHBlcmYtby1tYXRpYyBhbmQgcmVzdWx0cyBwYWdlKS4KKyAg
ICAgICAgKFBlcmZUZXN0TWV0cmljLmFwcGVuZCk6IEFkZGVkLgorICAgICAgICAoUGVyZlRlc3RN
ZXRyaWMudG9fZGljdCk6IEFkZGVkLiBDb21wdXRlcyB0aGUgc3RhdGlzdGljcyBhbmQgZ2VuZXJh
dGVzIHRoZSBkaWN0aW9uYXJ5IG9iamVjdCB0aGF0IHJlcHJlc2VudHMKKyAgICAgICAgYSByZXN1
bHQgZm9yIHRoaXMgbWV0cmljLgorICAgICAgICAoUGVyZlRlc3RNZXRyaWMubWV0cmljX3RvX3Vu
aXQpOiBBZGRlZC4gRWFjaCBtZXRyaWMgbWFwcyB0byBleGFjdGx5IG9uZSB1bml0IChpdCdzIG5v
dCBvbmUtdG8tb25lKS4KKyAgICAgICAgKFBlcmZUZXN0TWV0cmljLmNvbXB1dGVfc3RhdGlzdGlj
cyk6IE1vdmVkIGZyb20gUGVyZlRlc3QuCisKKyAgICAgICAgKFBlcmZUZXN0Ll9jcmVhdGVfZHJp
dmVyKTogRXh0cmFjdGVkIGZyb20gUGVyZlRlc3QucnVuLgorICAgICAgICAoUGVyZlRlc3QucnVu
KTogR2l2ZW4gYW4gYXJyYXkgb2YgUGVyZlRlc3RNZXRyaWMsIGdlbmVyYXRlIHRoZSByZXN1bHRz
IGRpY3Rpb25hcnkuIEFsc28gcHJpbnQgb3V0IHJlc3VsdHMKKyAgICAgICAgYXMgbmVlZGVkLgor
ICAgICAgICAoUGVyZlRlc3QuX3J1bl93aXRoX2RyaXZlcik6CisgICAgICAgIChQZXJmVGVzdCk6
IFJlbW92ZWQgX3Jlc3VsdF9jbGFzc2VzIGFuZCBfcmVzdWx0X2NsYXNzX3JlZ2V4LiAicmVzdWx0
IGNsYXNzIiBpcyB0aGUgb2xkIG5hbWUgZm9yICJtZXRyaWMiLgorICAgICAgICAoUGVyZlRlc3Qu
cGFyc2Vfb3V0cHV0KTogRHJhbWF0aWNhbGx5IHNpbXBsaWZpZWQuIFdlIG5vdyBqdXN0IHJldHVy
biBhbiBhcnJheSBvZiBQZXJmVGVzdE1ldHJpYydzLiBBbHNvIGlnbm9yZQorICAgICAgICBhbGwg
a2V5cyBleGNlcHQgInZhbHVlcyIuIFdlIHJlbHkgb24gUGVyZlRlc3RNZXRyaWMgdG8gY29tcHV0
ZSB0aGUgc3RhdGlzdGljcyBmb3IgdXMuCisKKyAgICAgICAgKENocm9taXVtU3R5bGVQZXJmVGVz
dC5ydW4pOiBBZGRlZCBhbmQgbWVyZ2VkIF9ydW5fd2l0aF9kcml2ZXIuIFNpbmNlIGNocm9taXVt
IHN0eWxlIHBlcmYgdGVzdHMgYXJlIHNvIGRpZmZlcmVudAorICAgICAgICBmcm9tIG90aGVyIHBl
cmYgdGVzdHMsIHRoZXJlIGlzbid0IG11Y2ggcG9pbnQgaW4gc2hhcmluZyB0aGUgY29kZSBoZXJl
LgorCisgICAgICAgIChQYWdlTG9hZGluZ1BlcmZUZXN0Ll9ydW5fd2l0aF9kcml2ZXIpOiBTaW1w
bGlmaWVkLiBKdXN0IGNyZWF0ZSBhbiBhcnJheSBvZiBQZXJmVGVzdE1ldHJpYydzIHdpdGhvdXQg
Y29tcHV0aW5nCisgICAgICAgIHN0YXRpc3RpY3MgZm9yIHRoZSBtZWFzdXJlZCB2YWx1ZXMuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0X3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoVGVzdFBlcmZUZXN0TWV0cmljKTogQWRkZWQuCisgICAgICAg
IChUZXN0UGVyZlRlc3RNZXRyaWMudGVzdF9pbml0X3NldF9taXNzaW5nX3VuaXQpOiBBZGRlZC4K
KyAgICAgICAgKFRlc3RQZXJmVGVzdE1ldHJpYy50ZXN0X2xlZ2FjeV9jaHJvbWl1bV9ib3RfY29t
cGF0aWJsZV90ZXN0X25hbWUpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQZXJmVGVzdE1ldHJpYy50
ZXN0X2hhc192YWx1ZXMpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQZXJmVGVzdE1ldHJpYy50ZXN0
X2FwcGVuZCk6IEFkZGVkLgorICAgICAgICAoVGVzdFBlcmZUZXN0TWV0cmljLnRlc3RfY29tcHV0
ZV9zdGF0aXN0aWNzLmNvbXB1dGVfc3RhdGlzdGljcyk6CisgICAgICAgIChUZXN0UGVyZlRlc3RN
ZXRyaWMudGVzdF9jb21wdXRlX3N0YXRpc3RpY3MpOiBBZGRlZCBhIHRyaXZpYWwgdGVzdCBjYXNl
LgorCisgICAgICAgIChUZXN0UGVyZlRlc3QuX2Fzc2VydF9yZXN1bHRzX2FyZV9jb3JyZWN0KTog
VXBkYXRlZCBhcyBuZWVkZWQuCisgICAgICAgIChUZXN0UGFnZUxvYWRpbmdQZXJmVGVzdC50ZXN0
X3J1bik6IERpdHRvLiBOb3RpY2UgdGhhdCB3ZSBubyBsb25nZXIgbG9nIGFueXRoaW5nIGluIF9y
dW5fd2l0aF9kcml2ZXIuIEl0J3MgZG9uZQorICAgICAgICBpbiBQZXJmVGVzdC5ydW4gbm93IGFm
dGVyIGdlbmVyYXRpbmcgdGhlIHJlc3VsdHMgZGljdGlvbmFyeS4KKyAgICAgICAgKFRlc3RQYWdl
TG9hZGluZ1BlcmZUZXN0LnRlc3RfcnVuX3dpdGhfbWVtb3J5X291dHB1dCk6IERpdHRvLgorCiAy
MDEzLTAxLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFk
ZCBzdm46ZXhlY3V0YWJsZSB0byBhIGJ1bmNoIG9mIHNjcmlwdHMgaW4gQnVpbGRTbGF2ZVN1cHBv
cnQuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3QucHkJKHJldmlzaW9uIDEzODg5MCkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDYyIEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuZHJpdmVyIGkKIF9s
b2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCitjbGFzcyBQZXJmVGVzdE1ldHJp
YyhvYmplY3QpOgorICAgIGFsbG93ZWRfbWV0cmljcyA9ICgnVGltZScsICdNYWxsb2MnLCAnSlNI
ZWFwJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRyaWMsIHVuaXQ9Tm9uZSwgaXRlcmF0
aW9ucz1Ob25lKToKKyAgICAgICAgc2VsZi5fbWV0cmljID0gbWV0cmljCisgICAgICAgIHNlbGYu
X2l0ZXJhdGlvbnMgPSBpdGVyYXRpb25zIG9yIFtdCisgICAgICAgIHNlbGYuX3VuaXQgPSB1bml0
IG9yIHNlbGYubWV0cmljX3RvX3VuaXQobWV0cmljKQorCisgICAgZGVmIG1ldHJpYyhzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX21ldHJpYworCisgICAgZGVmIGhhc192YWx1ZXMoc2VsZik6
CisgICAgICAgIHJldHVybiBib29sKHNlbGYuX2l0ZXJhdGlvbnMpCisKKyAgICAjIEZJWE1FOiBX
ZSBkb24ndCBuZWVkIHRvIHN1cHBvcnQgdGhpcyBhbnltb3JlLiBNYWtlIG91dHB1dHMgbW9yZSBo
dW1hbiBmcmllbmRseS4KKyAgICBkZWYgbGVnYWN5X2Nocm9taXVtX2JvdF9jb21wYXRpYmxlX3Rl
c3RfbmFtZShzZWxmLCB0ZXN0X25hbWVfd2l0aF9leHRlbnNpb24pOgorICAgICAgICB0ZXN0X25h
bWUgPSByZS5zdWIocidcLlx3KyQnLCAnJywgdGVzdF9uYW1lX3dpdGhfZXh0ZW5zaW9uKQorICAg
ICAgICByZXR1cm4gdGVzdF9uYW1lIGlmIHNlbGYuX21ldHJpYyA9PSAnVGltZScgZWxzZSB0ZXN0
X25hbWUgKyAnOicgKyBzZWxmLl9tZXRyaWMKKworICAgIGRlZiBhcHBlbmQoc2VsZiwgdmFsdWUp
OgorICAgICAgICBzZWxmLl9pdGVyYXRpb25zLmFwcGVuZCh2YWx1ZSkKKworICAgIGRlZiB0b19k
aWN0KHNlbGYpOgorICAgICAgICBhc3NlcnQgc2VsZi5oYXNfdmFsdWVzKCkKKyAgICAgICAgc3Rh
dGlzdGljcyA9IHNlbGYuY29tcHV0ZV9zdGF0aXN0aWNzKHNlbGYuX2l0ZXJhdGlvbnMpCisgICAg
ICAgIHN0YXRpc3RpY3NbJ3VuaXQnXSA9IHNlbGYuX3VuaXQKKyAgICAgICAgc3RhdGlzdGljc1sn
dmFsdWVzJ10gPSBzZWxmLl9pdGVyYXRpb25zCisgICAgICAgIHJldHVybiBzdGF0aXN0aWNzCisK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbWV0cmljX3RvX3VuaXQoY2xzLCBtZXRyaWMpOgor
ICAgICAgICBhc3NlcnQgbWV0cmljIGluIGNscy5hbGxvd2VkX21ldHJpY3MKKyAgICAgICAgcmV0
dXJuICdtcycgaWYgbWV0cmljID09ICdUaW1lJyBlbHNlICdieXRlcycKKworICAgIEBzdGF0aWNt
ZXRob2QKKyAgICBkZWYgY29tcHV0ZV9zdGF0aXN0aWNzKHZhbHVlcyk6CisgICAgICAgIHNvcnRl
ZF92YWx1ZXMgPSBzb3J0ZWQodmFsdWVzKQorCisgICAgICAgICMgQ29tcHV0ZSB0aGUgbWVhbiBh
bmQgdmFyaWFuY2UgdXNpbmcgS251dGgncyBvbmxpbmUgYWxnb3JpdGhtIChoYXMgZ29vZCBudW1l
cmljYWwgc3RhYmlsaXR5KS4KKyAgICAgICAgc3F1YXJlU3VtID0gMAorICAgICAgICBtZWFuID0g
MAorICAgICAgICBmb3IgaSwgdGltZSBpbiBlbnVtZXJhdGUoc29ydGVkX3ZhbHVlcyk6CisgICAg
ICAgICAgICBkZWx0YSA9IHRpbWUgLSBtZWFuCisgICAgICAgICAgICBzd2VlcCA9IGkgKyAxLjAK
KyAgICAgICAgICAgIG1lYW4gKz0gZGVsdGEgLyBzd2VlcAorICAgICAgICAgICAgc3F1YXJlU3Vt
ICs9IGRlbHRhICogKHRpbWUgLSBtZWFuKQorCisgICAgICAgIG1pZGRsZSA9IGludChsZW4oc29y
dGVkX3ZhbHVlcykgLyAyKQorICAgICAgICByZXN1bHQgPSB7J2F2Zyc6IHN1bShzb3J0ZWRfdmFs
dWVzKSAvIGxlbih2YWx1ZXMpLAorICAgICAgICAgICAgJ21pbic6IHNvcnRlZF92YWx1ZXNbMF0s
CisgICAgICAgICAgICAnbWF4Jzogc29ydGVkX3ZhbHVlc1stMV0sCisgICAgICAgICAgICAnbWVk
aWFuJzogc29ydGVkX3ZhbHVlc1ttaWRkbGVdIGlmIGxlbihzb3J0ZWRfdmFsdWVzKSAlIDIgZWxz
ZSAoc29ydGVkX3ZhbHVlc1ttaWRkbGUgLSAxXSArIHNvcnRlZF92YWx1ZXNbbWlkZGxlXSkgLyAy
LAorICAgICAgICAgICAgJ3N0ZGV2JzogbWF0aC5zcXJ0KHNxdWFyZVN1bSAvIChsZW4oc29ydGVk
X3ZhbHVlcykgLSAxKSkgaWYgbGVuKHNvcnRlZF92YWx1ZXMpID4gMSBlbHNlIDB9CisgICAgICAg
IHJldHVybiByZXN1bHQKKworCiBjbGFzcyBQZXJmVGVzdChvYmplY3QpOgogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwb3J0LCB0ZXN0X25hbWUsIHRlc3RfcGF0aCk6CiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CkBAIC03MSwyMiArMTI3LDIzIEBAIGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6CiAg
ICAgZGVmIHByZXBhcmUoc2VsZiwgdGltZV9vdXRfbXMpOgogICAgICAgICByZXR1cm4gVHJ1ZQog
CisgICAgZGVmIF9jcmVhdGVfZHJpdmVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcG9y
dC5jcmVhdGVfZHJpdmVyKHdvcmtlcl9udW1iZXI9MCwgbm9fdGltZW91dD1UcnVlKQorCiAgICAg
ZGVmIHJ1bihzZWxmLCB0aW1lX291dF9tcyk6Ci0gICAgICAgIGRyaXZlciA9IHNlbGYuX3BvcnQu
Y3JlYXRlX2RyaXZlcih3b3JrZXJfbnVtYmVyPTAsIG5vX3RpbWVvdXQ9VHJ1ZSkKKyAgICAgICAg
ZHJpdmVyID0gc2VsZi5fY3JlYXRlX2RyaXZlcigpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAg
IHJldHVybiBzZWxmLl9ydW5fd2l0aF9kcml2ZXIoZHJpdmVyLCB0aW1lX291dF9tcykKKyAgICAg
ICAgICAgIG1ldHJpY3MgPSBzZWxmLl9ydW5fd2l0aF9kcml2ZXIoZHJpdmVyLCB0aW1lX291dF9t
cykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGRyaXZlci5zdG9wKCkKIAotICAgIGRl
ZiBfcnVuX3dpdGhfZHJpdmVyKHNlbGYsIGRyaXZlciwgdGltZV9vdXRfbXMpOgotICAgICAgICBv
dXRwdXQgPSBzZWxmLnJ1bl9zaW5nbGUoZHJpdmVyLCBzZWxmLnRlc3RfcGF0aCgpLCB0aW1lX291
dF9tcykKLSAgICAgICAgc2VsZi5fZmlsdGVyX291dHB1dChvdXRwdXQpCi0gICAgICAgIGlmIHNl
bGYucnVuX2ZhaWxlZChvdXRwdXQpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAg
aWYgbm90IG1ldHJpY3M6CisgICAgICAgICAgICByZXR1cm4gbWV0cmljcwogCi0gICAgICAgIHJl
c3VsdHMgPSBzZWxmLnBhcnNlX291dHB1dChvdXRwdXQpCi0gICAgICAgIGlmIG5vdCByZXN1bHRz
OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmVzdWx0cyA9IHt9CisgICAgICAg
IGZvciBtZXRyaWMgaW4gbWV0cmljczoKKyAgICAgICAgICAgIGxlZ2FjeV90ZXN0X25hbWUgPSBt
ZXRyaWMubGVnYWN5X2Nocm9taXVtX2JvdF9jb21wYXRpYmxlX3Rlc3RfbmFtZShzZWxmLnRlc3Rf
bmFtZSgpKQorICAgICAgICAgICAgcmVzdWx0c1tsZWdhY3lfdGVzdF9uYW1lXSA9IG1ldHJpYy50
b19kaWN0KCkKIAogICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5nZXRfb3B0aW9uKCdwcm9maWxl
Jyk6CiAgICAgICAgICAgICBpZiBzZWxmLl9kZXNjcmlwdGlvbjoKQEAgLTk2LDYgKzE1MywxNCBA
QCBjbGFzcyBQZXJmVGVzdChvYmplY3QpOgogCiAgICAgICAgIHJldHVybiByZXN1bHRzCiAKKyAg
ICBkZWYgX3J1bl93aXRoX2RyaXZlcihzZWxmLCBkcml2ZXIsIHRpbWVfb3V0X21zKToKKyAgICAg
ICAgb3V0cHV0ID0gc2VsZi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi50ZXN0X3BhdGgoKSwgdGlt
ZV9vdXRfbXMpCisgICAgICAgIHNlbGYuX2ZpbHRlcl9vdXRwdXQob3V0cHV0KQorICAgICAgICBp
ZiBzZWxmLnJ1bl9mYWlsZWQob3V0cHV0KToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAg
ICAgICAgcmV0dXJuIHNlbGYucGFyc2Vfb3V0cHV0KG91dHB1dCkKKwogICAgIGRlZiBydW5fc2lu
Z2xlKHNlbGYsIGRyaXZlciwgdGVzdF9wYXRoLCB0aW1lX291dF9tcywgc2hvdWxkX3J1bl9waXhl
bF90ZXN0PUZhbHNlKToKICAgICAgICAgcmV0dXJuIGRyaXZlci5ydW5fdGVzdChEcml2ZXJJbnB1
dCh0ZXN0X3BhdGgsIHRpbWVfb3V0X21zLCBpbWFnZV9oYXNoPU5vbmUsIHNob3VsZF9ydW5fcGl4
ZWxfdGVzdD1zaG91bGRfcnVuX3BpeGVsX3Rlc3QpLCBzdG9wX3doZW5fZG9uZT1GYWxzZSkKIApA
QCAtMTU5LDc5ICsyMjQsMzYgQEAgY2xhc3MgUGVyZlRlc3Qob2JqZWN0KToKICAgICAgICAgICAg
IG91dHB1dC50ZXh0ID0gJ1xuJy5qb2luKFtsaW5lIGZvciBsaW5lIGluIHJlLnNwbGl0KCdcbics
IG91dHB1dC50ZXh0KSBpZiBub3Qgc2VsZi5fc2hvdWxkX2lnbm9yZV9saW5lX2luX3BhcnNlcl90
ZXN0X3Jlc3VsdChsaW5lKV0pCiAKICAgICBfZGVzY3JpcHRpb25fcmVnZXggPSByZS5jb21waWxl
KHInXkRlc2NyaXB0aW9uOiAoP1A8ZGVzY3JpcHRpb24+LiopJCcsIHJlLklHTk9SRUNBU0UpCi0g
ICAgX3Jlc3VsdF9jbGFzc2VzID0gWydUaW1lJywgJ0pTIEhlYXAnLCAnTWFsbG9jJ10KLSAgICBf
cmVzdWx0X2NsYXNzX3JlZ2V4ID0gcmUuY29tcGlsZShyJ14oP1A8cmVzdWx0Y2xhc3M+JyArIHIn
fCcuam9pbihfcmVzdWx0X2NsYXNzZXMpICsgJyk6JykKKyAgICBfbWV0cmljc19yZWdleCA9IHJl
LmNvbXBpbGUocideKD9QPG1ldHJpYz5UaW1lfE1hbGxvY3xKUyBIZWFwKTonKQogICAgIF9zdGF0
aXN0aWNzX2tleXMgPSBbJ2F2ZycsICdtZWRpYW4nLCAnc3RkZXYnLCAnbWluJywgJ21heCcsICd1
bml0JywgJ3ZhbHVlcyddCiAgICAgX3Njb3JlX3JlZ2V4ID0gcmUuY29tcGlsZShyJ14oP1A8a2V5
PicgKyByJ3wnLmpvaW4oX3N0YXRpc3RpY3Nfa2V5cykgKyByJylccysoP1A8dmFsdWU+KFswLTlc
Ll0rKCxccyspPykrKVxzKig/UDx1bml0Pi4qKScpCiAKICAgICBkZWYgcGFyc2Vfb3V0cHV0KHNl
bGYsIG91dHB1dCk6Ci0gICAgICAgIHRlc3RfZmFpbGVkID0gRmFsc2UKLSAgICAgICAgcmVzdWx0
cyA9IHt9Ci0gICAgICAgIHRlc3RfbmFtZSA9IHJlLnN1YihyJ1wuXHcrJCcsICcnLCBzZWxmLl90
ZXN0X25hbWUpCi0gICAgICAgIHJlc3VsdF9jbGFzcyA9ICIiCisgICAgICAgIGN1cnJlbnRfbWV0
cmljID0gTm9uZQorICAgICAgICByZXN1bHRzID0gW10KICAgICAgICAgZm9yIGxpbmUgaW4gcmUu
c3BsaXQoJ1xuJywgb3V0cHV0LnRleHQpOgogICAgICAgICAgICAgaWYgbm90IGxpbmU6CiAgICAg
ICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgZGVzY3JpcHRpb25fbWF0Y2ggPSBz
ZWxmLl9kZXNjcmlwdGlvbl9yZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgbWV0cmljX21h
dGNoID0gc2VsZi5fbWV0cmljc19yZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgc2NvcmUg
PSBzZWxmLl9zY29yZV9yZWdleC5tYXRjaChsaW5lKQorCiAgICAgICAgICAgICBpZiBkZXNjcmlw
dGlvbl9tYXRjaDoKICAgICAgICAgICAgICAgICBzZWxmLl9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uX21hdGNoLmdyb3VwKCdkZXNjcmlwdGlvbicpCi0gICAgICAgICAgICAgICAgY29udGludWUK
LQotICAgICAgICAgICAgcmVzdWx0X2NsYXNzX21hdGNoID0gc2VsZi5fcmVzdWx0X2NsYXNzX3Jl
Z2V4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiByZXN1bHRfY2xhc3NfbWF0Y2g6Ci0gICAg
ICAgICAgICAgICAgcmVzdWx0X2NsYXNzID0gcmVzdWx0X2NsYXNzX21hdGNoLmdyb3VwKCdyZXN1
bHRjbGFzcycpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgc2NvcmUg
PSBzZWxmLl9zY29yZV9yZWdleC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgc2NvcmU6Cisg
ICAgICAgICAgICBlbGlmIG1ldHJpY19tYXRjaDoKKyAgICAgICAgICAgICAgICBjdXJyZW50X21l
dHJpYyA9IG1ldHJpY19tYXRjaC5ncm91cCgnbWV0cmljJykucmVwbGFjZSgnICcsICcnKQorICAg
ICAgICAgICAgZWxpZiBzY29yZToKICAgICAgICAgICAgICAgICBrZXkgPSBzY29yZS5ncm91cCgn
a2V5JykKLSAgICAgICAgICAgICAgICBpZiBrZXkgPT0gJ3ZhbHVlcyc6Ci0gICAgICAgICAgICAg
ICAgICAgIHZhbHVlID0gW2Zsb2F0KG51bWJlcikgZm9yIG51bWJlciBpbiBzY29yZS5ncm91cCgn
dmFsdWUnKS5zcGxpdCgnLCAnKV0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9IGZsb2F0KHNjb3JlLmdyb3VwKCd2YWx1ZScpKQotICAgICAgICAgICAg
ICAgIHVuaXQgPSBzY29yZS5ncm91cCgndW5pdCcpCi0gICAgICAgICAgICAgICAgbmFtZSA9IHRl
c3RfbmFtZQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdF9jbGFzcyAhPSAnVGltZSc6Ci0gICAg
ICAgICAgICAgICAgICAgIG5hbWUgKz0gJzonICsgcmVzdWx0X2NsYXNzLnJlcGxhY2UoJyAnLCAn
JykKLSAgICAgICAgICAgICAgICByZXN1bHRzLnNldGRlZmF1bHQobmFtZSwge30pCi0gICAgICAg
ICAgICAgICAgcmVzdWx0c1tuYW1lXVsndW5pdCddID0gdW5pdAotICAgICAgICAgICAgICAgIHJl
c3VsdHNbbmFtZV1ba2V5XSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICAgICAgdGVzdF9mYWlsZWQgPSBUcnVlCi0gICAgICAgICAgICBfbG9nLmVycm9yKCdFUlJP
UjogJyArIGxpbmUpCi0KLSAgICAgICAgaWYgdGVzdF9mYWlsZWQ6Ci0gICAgICAgICAgICByZXR1
cm4gTm9uZQotCi0gICAgICAgIGlmIHNldChzZWxmLl9zdGF0aXN0aWNzX2tleXMpICE9IHNldChy
ZXN1bHRzW3Rlc3RfbmFtZV0ua2V5cygpKToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIlRoZSB0
ZXN0IGRpZG4ndCByZXBvcnQgYWxsIHN0YXRpc3RpY3MuIikKLSAgICAgICAgICAgIHJldHVybiBO
b25lCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICd2YWx1ZXMnIGFuZCByZXN1bHRzICE9IE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtmbG9hdChudW1iZXIpIGZvciBudW1i
ZXIgaW4gc2NvcmUuZ3JvdXAoJ3ZhbHVlJykuc3BsaXQoJywgJyldCisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKFBlcmZUZXN0TWV0cmljKGN1cnJlbnRfbWV0cmljLCBzY29yZS5n
cm91cCgndW5pdCcpLCB2YWx1ZXMpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICByZXN1bHRzID0gTm9uZQorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0VSUk9SOiAnICsg
bGluZSkKIAogICAgICAgICByZXR1cm4gcmVzdWx0cwogCi0gICAgQHN0YXRpY21ldGhvZAotICAg
IGRlZiBjb21wdXRlX3N0YXRpc3RpY3ModmFsdWVzKToKLSAgICAgICAgc29ydGVkX3ZhbHVlcyA9
IHNvcnRlZCh2YWx1ZXMpCi0KLSAgICAgICAgIyBDb21wdXRlIHRoZSBtZWFuIGFuZCB2YXJpYW5j
ZSB1c2luZyBLbnV0aCdzIG9ubGluZSBhbGdvcml0aG0gKGhhcyBnb29kIG51bWVyaWNhbCBzdGFi
aWxpdHkpLgotICAgICAgICBzcXVhcmVTdW0gPSAwCi0gICAgICAgIG1lYW4gPSAwCi0gICAgICAg
IGZvciBpLCB0aW1lIGluIGVudW1lcmF0ZShzb3J0ZWRfdmFsdWVzKToKLSAgICAgICAgICAgIGRl
bHRhID0gdGltZSAtIG1lYW4KLSAgICAgICAgICAgIHN3ZWVwID0gaSArIDEuMAotICAgICAgICAg
ICAgbWVhbiArPSBkZWx0YSAvIHN3ZWVwCi0gICAgICAgICAgICBzcXVhcmVTdW0gKz0gZGVsdGEg
KiAodGltZSAtIG1lYW4pCi0KLSAgICAgICAgbWlkZGxlID0gaW50KGxlbihzb3J0ZWRfdmFsdWVz
KSAvIDIpCi0gICAgICAgIHJlc3VsdCA9IHsnYXZnJzogc3VtKHNvcnRlZF92YWx1ZXMpIC8gbGVu
KHZhbHVlcyksCi0gICAgICAgICAgICAnbWluJzogc29ydGVkX3ZhbHVlc1swXSwKLSAgICAgICAg
ICAgICdtYXgnOiBzb3J0ZWRfdmFsdWVzWy0xXSwKLSAgICAgICAgICAgICdtZWRpYW4nOiBzb3J0
ZWRfdmFsdWVzW21pZGRsZV0gaWYgbGVuKHNvcnRlZF92YWx1ZXMpICUgMiBlbHNlIChzb3J0ZWRf
dmFsdWVzW21pZGRsZSAtIDFdICsgc29ydGVkX3ZhbHVlc1ttaWRkbGVdKSAvIDIsCi0gICAgICAg
ICAgICAnc3RkZXYnOiBtYXRoLnNxcnQoc3F1YXJlU3VtIC8gKGxlbihzb3J0ZWRfdmFsdWVzKSAt
IDEpKX0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCiAgICAgZGVmIG91dHB1dF9zdGF0aXN0aWNz
KHNlbGYsIHRlc3RfbmFtZSwgcmVzdWx0cyk6CiAgICAgICAgIHVuaXQgPSByZXN1bHRzWyd1bml0
J10KICAgICAgICAgX2xvZy5pbmZvKCdSRVNVTFQgJXM9ICVzICVzJyAlICh0ZXN0X25hbWUucmVw
bGFjZSgnOicsICc6ICcpLnJlcGxhY2UoJy8nLCAnOiAnKSwgcmVzdWx0c1snYXZnJ10sIHVuaXQp
KQpAQCAtMjQ0LDggKzI2NiwxMyBAQCBjbGFzcyBDaHJvbWl1bVN0eWxlUGVyZlRlc3QoUGVyZlRl
c3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB0ZXN0X25hbWUsIHRlc3RfcGF0aCk6
CiAgICAgICAgIHN1cGVyKENocm9taXVtU3R5bGVQZXJmVGVzdCwgc2VsZikuX19pbml0X18ocG9y
dCwgdGVzdF9uYW1lLCB0ZXN0X3BhdGgpCiAKLSAgICBkZWYgX3J1bl93aXRoX2RyaXZlcihzZWxm
LCBkcml2ZXIsIHRpbWVfb3V0X21zKToKLSAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fc2luZ2xl
KGRyaXZlciwgc2VsZi50ZXN0X3BhdGgoKSwgdGltZV9vdXRfbXMpCisgICAgZGVmIHJ1bihzZWxm
LCB0aW1lX291dF9tcyk6CisgICAgICAgIGRyaXZlciA9IHNlbGYuX2NyZWF0ZV9kcml2ZXIoKQor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9zaW5nbGUoZHJpdmVy
LCBzZWxmLnRlc3RfcGF0aCgpLCB0aW1lX291dF9tcykKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIGRyaXZlci5zdG9wKCkKKwogICAgICAgICBzZWxmLl9maWx0ZXJfb3V0cHV0KG91dHB1
dCkKICAgICAgICAgaWYgc2VsZi5ydW5fZmFpbGVkKG91dHB1dCk6CiAgICAgICAgICAgICByZXR1
cm4gTm9uZQpAQCAtMjgwLDggKzMwNyw5IEBAIGNsYXNzIFBhZ2VMb2FkaW5nUGVyZlRlc3QoUGVy
ZlRlc3QpOgogICAgICAgICByZXR1cm4gc3VwZXIoUGFnZUxvYWRpbmdQZXJmVGVzdCwgc2VsZiku
cnVuX3NpbmdsZShkcml2ZXIsIHRlc3RfcGF0aCwgdGltZV9vdXRfbXMsIHNob3VsZF9ydW5fcGl4
ZWxfdGVzdCkKIAogICAgIGRlZiBfcnVuX3dpdGhfZHJpdmVyKHNlbGYsIGRyaXZlciwgdGltZV9v
dXRfbXMpOgotICAgICAgICByZXN1bHRzID0ge30KLSAgICAgICAgcmVzdWx0cy5zZXRkZWZhdWx0
KHNlbGYudGVzdF9uYW1lKCksIHsndW5pdCc6ICdtcycsICd2YWx1ZXMnOiBbXX0pCisgICAgICAg
IHRpbWVzID0gUGVyZlRlc3RNZXRyaWMoJ1RpbWUnKQorICAgICAgICBtYWxsb2MgPSBQZXJmVGVz
dE1ldHJpYygnTWFsbG9jJykKKyAgICAgICAganNfaGVhcCA9IFBlcmZUZXN0TWV0cmljKCdKU0hl
YXAnKQogCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDIwKToKICAgICAgICAgICAgIG91dHB1
dCA9IHNlbGYucnVuX3NpbmdsZShkcml2ZXIsIHNlbGYudGVzdF9wYXRoKCksIHRpbWVfb3V0X21z
KQpAQCAtMjkwLDI0ICszMTgsMTggQEAgY2xhc3MgUGFnZUxvYWRpbmdQZXJmVGVzdChQZXJmVGVz
dCk6CiAgICAgICAgICAgICBpZiBpID09IDA6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAot
ICAgICAgICAgICAgcmVzdWx0c1tzZWxmLnRlc3RfbmFtZSgpXVsndmFsdWVzJ10uYXBwZW5kKG91
dHB1dC50ZXN0X3RpbWUgKiAxMDAwKQotCisgICAgICAgICAgICB0aW1lcy5hcHBlbmQob3V0cHV0
LnRlc3RfdGltZSAqIDEwMDApCiAgICAgICAgICAgICBpZiBub3Qgb3V0cHV0Lm1lYXN1cmVtZW50
czoKICAgICAgICAgICAgICAgICBjb250aW51ZQogCi0gICAgICAgICAgICBmb3IgcmVzdWx0X2Ns
YXNzLCByZXN1bHQgaW4gb3V0cHV0Lm1lYXN1cmVtZW50cy5pdGVtcygpOgotICAgICAgICAgICAg
ICAgIG5hbWUgPSBzZWxmLnRlc3RfbmFtZSgpICsgJzonICsgcmVzdWx0X2NsYXNzCi0gICAgICAg
ICAgICAgICAgaWYgbm90IG5hbWUgaW4gcmVzdWx0czoKLSAgICAgICAgICAgICAgICAgICAgcmVz
dWx0cy5zZXRkZWZhdWx0KG5hbWUsIHsndmFsdWVzJzogW119KQotICAgICAgICAgICAgICAgIHJl
c3VsdHNbbmFtZV1bJ3ZhbHVlcyddLmFwcGVuZChyZXN1bHQpCi0gICAgICAgICAgICAgICAgaWYg
cmVzdWx0X2NsYXNzID09ICdNYWxsb2MnIG9yIHJlc3VsdF9jbGFzcyA9PSAnSlNIZWFwJzoKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0c1tuYW1lXVsndW5pdCddID0gJ2J5dGVzJwotCi0gICAg
ICAgIGZvciByZXN1bHRfY2xhc3MgaW4gcmVzdWx0cy5rZXlzKCk6Ci0gICAgICAgICAgICByZXN1
bHRzW3Jlc3VsdF9jbGFzc10udXBkYXRlKHNlbGYuY29tcHV0ZV9zdGF0aXN0aWNzKHJlc3VsdHNb
cmVzdWx0X2NsYXNzXVsndmFsdWVzJ10pKQotICAgICAgICAgICAgc2VsZi5vdXRwdXRfc3RhdGlz
dGljcyhyZXN1bHRfY2xhc3MsIHJlc3VsdHNbcmVzdWx0X2NsYXNzXSkKKyAgICAgICAgICAgIGZv
ciBtZXRyaWMsIHJlc3VsdCBpbiBvdXRwdXQubWVhc3VyZW1lbnRzLml0ZW1zKCk6CisgICAgICAg
ICAgICAgICAgYXNzZXJ0IG1ldHJpYyA9PSAnTWFsbG9jJyBvciBtZXRyaWMgPT0gJ0pTSGVhcCcK
KyAgICAgICAgICAgICAgICBpZiBtZXRyaWMgPT0gJ01hbGxvYyc6CisgICAgICAgICAgICAgICAg
ICAgIG1hbGxvYy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgIGpzX2hlYXAuYXBwZW5kKHJlc3VsdCkKIAotICAgICAgICByZXR1cm4gcmVz
dWx0cworICAgICAgICByZXR1cm4gZmlsdGVyKGxhbWJkYSBtZXRyaWM6IG1ldHJpYy5oYXNfdmFs
dWVzKCksIFt0aW1lcywgbWFsbG9jLCBqc19oZWFwXSkKIAogCiBjbGFzcyBSZXBsYXlTZXJ2ZXIo
b2JqZWN0KToKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMv
cGVyZnRlc3RfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91bml0dGVzdC5weQkocmV2aXNpb24gMTM4ODkw
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0LnRlc3QgaW1wCiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rl
c3RzLnBlcmZ0ZXN0IGltcG9ydCBDaHJvbWl1bVN0eWxlUGVyZlRlc3QKIGZyb20gd2Via2l0cHku
cGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IFBhZ2VMb2FkaW5nUGVyZlRlc3QKIGZy
b20gd2Via2l0cHkucGVyZm9ybWFuY2VfdGVzdHMucGVyZnRlc3QgaW1wb3J0IFBlcmZUZXN0Citm
cm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGltcG9ydCBQZXJmVGVzdE1l
dHJpYwogZnJvbSB3ZWJraXRweS5wZXJmb3JtYW5jZV90ZXN0cy5wZXJmdGVzdCBpbXBvcnQgUGVy
ZlRlc3RGYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnBlcmZvcm1hbmNlX3Rlc3RzLnBlcmZ0ZXN0IGlt
cG9ydCBSZXBsYXlQZXJmVGVzdAogCkBAIC00NywxMCArNDgsNDQgQEAgY2xhc3MgTW9ja1BvcnQo
VGVzdFBvcnQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjdXN0b21fcnVuX3Rlc3Q9Tm9uZSk6
CiAgICAgICAgIHN1cGVyKE1vY2tQb3J0LCBzZWxmKS5fX2luaXRfXyhob3N0PU1vY2tIb3N0KCks
IGN1c3RvbV9ydW5fdGVzdD1jdXN0b21fcnVuX3Rlc3QpCiAKLWNsYXNzIE1haW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKKworY2xhc3MgVGVzdFBlcmZUZXN0TWV0cmljKHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICBkZWYgdGVzdF9pbml0X3NldF9taXNzaW5nX3VuaXQoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoUGVyZlRlc3RNZXRyaWMoJ1RpbWUnLCBpdGVyYXRpb25zPVsxLCAy
LCAzLCA0LCA1XSkudG9fZGljdCgpWyd1bml0J10sICdtcycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoUGVyZlRlc3RNZXRyaWMoJ01hbGxvYycsIGl0ZXJhdGlvbnM9WzEsIDIsIDMsIDQsIDVd
KS50b19kaWN0KClbJ3VuaXQnXSwgJ2J5dGVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQ
ZXJmVGVzdE1ldHJpYygnSlNIZWFwJywgaXRlcmF0aW9ucz1bMSwgMiwgMywgNCwgNV0pLnRvX2Rp
Y3QoKVsndW5pdCddLCAnYnl0ZXMnKQorCisgICAgZGVmIHRlc3RfbGVnYWN5X2Nocm9taXVtX2Jv
dF9jb21wYXRpYmxlX3Rlc3RfbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQ
ZXJmVGVzdE1ldHJpYygnVGltZScpLmxlZ2FjeV9jaHJvbWl1bV9ib3RfY29tcGF0aWJsZV90ZXN0
X25hbWUoJ3Rlc3QnKSwgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBlcmZUZXN0
TWV0cmljKCdNYWxsb2MnKS5sZWdhY3lfY2hyb21pdW1fYm90X2NvbXBhdGlibGVfdGVzdF9uYW1l
KCd0ZXN0JyksICd0ZXN0Ok1hbGxvYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUGVyZlRl
c3RNZXRyaWMoJ0pTSGVhcCcpLmxlZ2FjeV9jaHJvbWl1bV9ib3RfY29tcGF0aWJsZV90ZXN0X25h
bWUoJ3Rlc3QnKSwgJ3Rlc3Q6SlNIZWFwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQZXJm
VGVzdE1ldHJpYygnRm9udFNpemUnLCB1bml0PSdlbScpLmxlZ2FjeV9jaHJvbWl1bV9ib3RfY29t
cGF0aWJsZV90ZXN0X25hbWUoJ3Rlc3QnKSwgJ3Rlc3Q6Rm9udFNpemUnKQorCisgICAgZGVmIHRl
c3RfaGFzX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShQZXJmVGVzdE1l
dHJpYygnVGltZScpLmhhc192YWx1ZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFBlcmZU
ZXN0TWV0cmljKCdUaW1lJywgaXRlcmF0aW9ucz1bMV0pLmhhc192YWx1ZXMoKSkKKworICAgIGRl
ZiB0ZXN0X2FwcGVuZChzZWxmKToKKyAgICAgICAgbWV0cmljID0gUGVyZlRlc3RNZXRyaWMoJ1Rp
bWUnKQorICAgICAgICBtZXRyaWMyID0gUGVyZlRlc3RNZXRyaWMoJ1RpbWUnKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKG1ldHJpYy5oYXNfdmFsdWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UobWV0cmljMi5oYXNfdmFsdWVzKCkpCisKKyAgICAgICAgbWV0cmljLmFwcGVuZCgxKQor
ICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0cmljLmhhc192YWx1ZXMoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShtZXRyaWMyLmhhc192YWx1ZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChtZXRyaWMudG9fZGljdCgpWyd2YWx1ZXMnXSwgWzFdKQorICAgICAgICBtZXRyaWMuYXBw
ZW5kKDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWV0cmljLnRvX2RpY3QoKVsndmFsdWVz
J10sIFsxLCAyXSkKKworICAgICAgICBtZXRyaWMyLmFwcGVuZCgzKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUobWV0cmljMi5oYXNfdmFsdWVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
bWV0cmljLnRvX2RpY3QoKVsndmFsdWVzJ10sIFsxLCAyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChtZXRyaWMyLnRvX2RpY3QoKVsndmFsdWVzJ10sIFszXSkKKwogICAgIGRlZiB0ZXN0X2Nv
bXB1dGVfc3RhdGlzdGljcyhzZWxmKToKICAgICAgICAgZGVmIGNvbXB1dGVfc3RhdGlzdGljcyh2
YWx1ZXMpOgotICAgICAgICAgICAgc3RhdGlzdGljcyA9IFBlcmZUZXN0LmNvbXB1dGVfc3RhdGlz
dGljcyhtYXAobGFtYmRhIHg6IGZsb2F0KHgpLCB2YWx1ZXMpKQorICAgICAgICAgICAgc3RhdGlz
dGljcyA9IFBlcmZUZXN0TWV0cmljLmNvbXB1dGVfc3RhdGlzdGljcyhtYXAobGFtYmRhIHg6IGZs
b2F0KHgpLCB2YWx1ZXMpKQogICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMoanNvbi5kdW1w
cyhzdGF0aXN0aWNzKSkKIAogICAgICAgICBzdGF0aXN0aWNzID0gY29tcHV0ZV9zdGF0aXN0aWNz
KFsxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMjAsIDE5LCAxOCwgMTcsIDE2LCAxNSwg
MTQsIDEzLCAxMiwgMTFdKQpAQCAtNjIsMTcgKzk3LDIwIEBAIGNsYXNzIE1haW5UZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wdXRlX3N0YXRpc3Rp
Y3MoWzgsIDksIDEwLCAxMSwgMTJdKVsnYXZnJ10sIDEwKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbXB1dGVfc3RhdGlzdGljcyhbOCwgOSwgMTAsIDExLCAxMl0gKiA0KVsnYXZnJ10sIDEw
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXB1dGVfc3RhdGlzdGljcyhbMSwgMiwgMywg
NCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTld
KVsnYXZnJ10sIDEwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBlcmZUZXN0LmNvbXB1dGVf
c3RhdGlzdGljcyhbMSwgNSwgMiwgOCwgN10pWydtZWRpYW4nXSwgNSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChQZXJmVGVzdC5jb21wdXRlX3N0YXRpc3RpY3MoWzEsIDYsIDIsIDgsIDcsIDJd
KVsnbWVkaWFuJ10sIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHV0ZV9zdGF0aXN0
aWNzKFsxLCA1LCAyLCA4LCA3XSlbJ21lZGlhbiddLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbXB1dGVfc3RhdGlzdGljcyhbMSwgNiwgMiwgOCwgNywgMl0pWydtZWRpYW4nXSwgNCkK
ICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdGF0aXN0aWNzWydzdGRldiddLCBtYXRo
LnNxcnQoMzUpKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNvbXB1dGVfc3RhdGlz
dGljcyhbMV0pWydzdGRldiddLCAwKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNv
bXB1dGVfc3RhdGlzdGljcyhbMSwgMiwgMywgNCwgNSwgNl0pWydzdGRldiddLCBtYXRoLnNxcnQo
My41KSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjb21wdXRlX3N0YXRpc3RpY3Mo
WzQsIDIsIDUsIDgsIDZdKVsnc3RkZXYnXSwgbWF0aC5zcXJ0KDUpKQogCisKK2NsYXNzIFRlc3RQ
ZXJmVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9hc3NlcnRfcmVzdWx0c19hcmVf
Y29ycmVjdChzZWxmLCB0ZXN0LCBvdXRwdXQpOgogICAgICAgICB0ZXN0Ll9maWx0ZXJfb3V0cHV0
KG91dHB1dCkKICAgICAgICAgcGFyc2VkX3Jlc3VsdHMgPSB0ZXN0LnBhcnNlX291dHB1dChvdXRw
dXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VkX3Jlc3VsdHMua2V5cygpLCBbJ3Nv
bWUtdGVzdCddKQotICAgICAgICBzb21lX3Rlc3RfcmVzdWx0cyA9IHBhcnNlZF9yZXN1bHRzWydz
b21lLXRlc3QnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwYXJzZWRfcmVzdWx0cyks
IDEpCisgICAgICAgIHNvbWVfdGVzdF9yZXN1bHRzID0gcGFyc2VkX3Jlc3VsdHNbMF0udG9fZGlj
dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHNvbWVfdGVzdF9yZXN1bHRzLmtl
eXMoKSksIFsnYXZnJywgJ21heCcsICdtZWRpYW4nLCAnbWluJywgJ3N0ZGV2JywgJ3VuaXQnLCAn
dmFsdWVzJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZV90ZXN0X3Jlc3VsdHNbJ3Zh
bHVlcyddLCBbMTA4MCwgMTEyMCwgMTA5NSwgMTEwMSwgMTEwNF0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc29tZV90ZXN0X3Jlc3VsdHNbJ21pbiddLCAxMDgwKQpAQCAtMjIxLDE0ICsyNTks
MTggQEAgY2xhc3MgVGVzdFBhZ2VMb2FkaW5nUGVyZlRlc3QodW5pdHRlc3QuVAogICAgICAgICBv
dXRwdXRfY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICBvdXRwdXRfY2FwdHVyZS5j
YXB0dXJlX291dHB1dCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwodGVzdC5fcnVuX3dpdGhfZHJpdmVyKGRyaXZlciwgTm9uZSksCi0gICAgICAgICAgICAgICAg
eydzb21lLXRlc3QnOiB7J21heCc6IDIwMDAwLCAnYXZnJzogMTEwMDAuMCwgJ21lZGlhbic6IDEx
MDAwLCAnc3RkZXYnOiA1NjI3LjMxNDMzODcxMTM3OCwgJ21pbic6IDIwMDAsICd1bml0JzogJ21z
JywKLSAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyc6IFtmbG9hdChpICogMTAwMCkgZm9yIGkg
aW4gcmFuZ2UoMiwgMjEpXX19KQorICAgICAgICAgICAgbWV0cmljcyA9IHRlc3QuX3J1bl93aXRo
X2RyaXZlcihkcml2ZXIsIE5vbmUpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBhY3R1
YWxfc3Rkb3V0LCBhY3R1YWxfc3RkZXJyLCBhY3R1YWxfbG9ncyA9IG91dHB1dF9jYXB0dXJlLnJl
c3RvcmVfb3V0cHV0KCkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9zdGRvdXQs
ICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9zdGRlcnIsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9sb2dzLCAnUkVTVUxUIHNvbWUtdGVzdD0gMTEwMDAg
bXNcbm1lZGlhbj0gMTEwMDAgbXMsIHN0ZGV2PSA1NjI3LjMxNDMzODcxIG1zLCBtaW49IDIwMDAg
bXMsIG1heD0gMjAwMDAgbXNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xv
Z3MsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1ldHJpY3MpLCAxKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG1ldHJpY3NbMF0ubWV0cmljKCksICdUaW1lJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChtZXRyaWNzWzBdLnRvX2RpY3QoKSwgeydtYXgnOiAyMDAwMCwg
J2F2Zyc6IDExMDAwLjAsICdtZWRpYW4nOiAxMTAwMCwgJ3N0ZGV2JzogNTYyNy4zMTQzMzg3MTEz
NzgsICdtaW4nOiAyMDAwLCAndW5pdCc6ICdtcycsCisgICAgICAgICAgICAndmFsdWVzJzogW2Zs
b2F0KGkgKiAxMDAwKSBmb3IgaSBpbiByYW5nZSgyLCAyMSldfSkKIAogICAgIGRlZiB0ZXN0X3J1
bl93aXRoX21lbW9yeV9vdXRwdXQoc2VsZik6CiAgICAgICAgIHBvcnQgPSBNb2NrUG9ydCgpCkBA
IC0yMzksMjAgKzI4MSwyNCBAQCBjbGFzcyBUZXN0UGFnZUxvYWRpbmdQZXJmVGVzdCh1bml0dGVz
dC5UCiAgICAgICAgIG91dHB1dF9jYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG91
dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCh0ZXN0Ll9ydW5fd2l0aF9kcml2ZXIoZHJpdmVyLCBOb25lKSwKLSAg
ICAgICAgICAgICAgICB7J3NvbWUtdGVzdCc6IHsnbWF4JzogMjAwMDAsICdhdmcnOiAxMTAwMC4w
LCAnbWVkaWFuJzogMTEwMDAsICdzdGRldic6IDU2MjcuMzE0MzM4NzExMzc4LCAnbWluJzogMjAw
MCwgJ3VuaXQnOiAnbXMnLAotICAgICAgICAgICAgICAgICAgICAndmFsdWVzJzogW2Zsb2F0KGkg
KiAxMDAwKSBmb3IgaSBpbiByYW5nZSgyLCAyMSldfSwKLSAgICAgICAgICAgICAgICAgJ3NvbWUt
dGVzdDpNYWxsb2MnOiB7J21heCc6IDEwLCAnYXZnJzogMTAuMCwgJ21lZGlhbic6IDEwLCAnbWlu
JzogMTAsICdzdGRldic6IDAuMCwgJ3VuaXQnOiAnYnl0ZXMnLAotICAgICAgICAgICAgICAgICAg
ICAndmFsdWVzJzogW2Zsb2F0KDEwKV0gKiAxOX0sCi0gICAgICAgICAgICAgICAgICdzb21lLXRl
c3Q6SlNIZWFwJzogeydtYXgnOiA1LCAnYXZnJzogNS4wLCAnbWVkaWFuJzogNSwgJ21pbic6IDUs
ICdzdGRldic6IDAuMCwgJ3VuaXQnOiAnYnl0ZXMnLAotICAgICAgICAgICAgICAgICAgICAndmFs
dWVzJzogW2Zsb2F0KDUpXSAqIDE5fX0pCisgICAgICAgICAgICBtZXRyaWNzID0gdGVzdC5fcnVu
X3dpdGhfZHJpdmVyKGRyaXZlciwgTm9uZSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAg
IGFjdHVhbF9zdGRvdXQsIGFjdHVhbF9zdGRlcnIsIGFjdHVhbF9sb2dzID0gb3V0cHV0X2NhcHR1
cmUucmVzdG9yZV9vdXRwdXQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0
ZG91dCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3N0ZGVyciwgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX2xvZ3MsICdSRVNVTFQgc29tZS10ZXN0PSAx
MTAwMCBtc1xubWVkaWFuPSAxMTAwMCBtcywgc3RkZXY9IDU2MjcuMzE0MzM4NzEgbXMsIG1pbj0g
MjAwMCBtcywgbWF4PSAyMDAwMCBtc1xuJwotICAgICAgICAgICAgKyAnUkVTVUxUIHNvbWUtdGVz
dDogTWFsbG9jPSAxMCBieXRlc1xubWVkaWFuPSAxMCBieXRlcywgc3RkZXY9IDAuMCBieXRlcywg
bWluPSAxMCBieXRlcywgbWF4PSAxMCBieXRlc1xuJwotICAgICAgICAgICAgKyAnUkVTVUxUIHNv
bWUtdGVzdDogSlNIZWFwPSA1IGJ5dGVzXG5tZWRpYW49IDUgYnl0ZXMsIHN0ZGV2PSAwLjAgYnl0
ZXMsIG1pbj0gNSBieXRlcywgbWF4PSA1IGJ5dGVzXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGFjdHVhbF9sb2dzLCAnJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtZXRy
aWNzKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXRyaWNzWzBdLm1ldHJpYygpLCAn
VGltZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWV0cmljc1swXS50b19kaWN0KCksIHsn
bWF4JzogMjAwMDAsICdhdmcnOiAxMTAwMC4wLCAnbWVkaWFuJzogMTEwMDAsICdzdGRldic6IDU2
MjcuMzE0MzM4NzExMzc4LCAnbWluJzogMjAwMCwgJ3VuaXQnOiAnbXMnLAorICAgICAgICAgICAg
J3ZhbHVlcyc6IFtmbG9hdChpICogMTAwMCkgZm9yIGkgaW4gcmFuZ2UoMiwgMjEpXX0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobWV0cmljc1sxXS5tZXRyaWMoKSwgJ01hbGxvYycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobWV0cmljc1sxXS50b19kaWN0KCksIHsnbWF4JzogMTAsICdh
dmcnOiAxMC4wLCAnbWVkaWFuJzogMTAsICdtaW4nOiAxMCwgJ3N0ZGV2JzogMC4wLCAndW5pdCc6
ICdieXRlcycsCisgICAgICAgICAgICAndmFsdWVzJzogW2Zsb2F0KDEwKV0gKiAxOX0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobWV0cmljc1syXS5tZXRyaWMoKSwgJ0pTSGVhcCcpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobWV0cmljc1syXS50b19kaWN0KCksIHsnbWF4JzogNSwgJ2F2
Zyc6IDUuMCwgJ21lZGlhbic6IDUsICdtaW4nOiA1LCAnc3RkZXYnOiAwLjAsICd1bml0JzogJ2J5
dGVzJywKKyAgICAgICAgICAgICd2YWx1ZXMnOiBbZmxvYXQoNSldICogMTl9KQogCiAgICAgZGVm
IHRlc3RfcnVuX3dpdGhfYmFkX291dHB1dChzZWxmKToKICAgICAgICAgb3V0cHV0X2NhcHR1cmUg
PSBPdXRwdXRDYXB0dXJlKCkK
</data>
<flag name="review"
          id="199056"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>