<?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>104941</bug_id>
          
          <creation_ts>2012-12-13 12:55:14 -0800</creation_ts>
          <short_desc>Dashboard cleanup: remove usage of global g_builders.</short_desc>
          <delta_ts>2012-12-13 18:03:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Julie Parent">jparent</assigned_to>
          <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>790840</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 12:55:14 -0800</bug_when>
    <thetext>Dashboard cleanup: remove usage of global g_builders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790848</commentid>
    <comment_count>1</comment_count>
      <attachid>179320</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 13:05:09 -0800</bug_when>
    <thetext>Created attachment 179320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790850</commentid>
    <comment_count>2</comment_count>
      <attachid>179320</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 13:10:35 -0800</bug_when>
    <thetext>Comment on attachment 179320
Patch

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

&gt; Tools/TestResultServer/static-dashboards/loader_unittests.js:57
&gt; +test(&apos;results files loading&apos;, 11, function() {

Total exceptions is 1 + 2 x numBuilders.  So before it was 1 + 2 * 2 = 5, now 1 + 2 * 5 = 11, since we use an expanded builder list.

&gt; Tools/TestResultServer/static-dashboards/loader_unittests.js:72
&gt; +        var builderName = /builder=([\w ().]+)&amp;/.exec(url)[1];

Now that we use real builder names, they can contain more than just alphanumerics, aka, &quot;WebKit Linux (dbg)&quot; has &apos;(&apos; and &apos;)&apos;, and &quot;WebKit Mac10.7&quot; has &apos;.&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790852</commentid>
    <comment_count>3</comment_count>
      <attachid>179320</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 13:16:09 -0800</bug_when>
    <thetext>Comment on attachment 179320
Patch

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

&gt; Tools/ChangeLog:12
&gt; +        they were even bigger offenders of bad hygine, relying on global state

typo: hygiene.

&gt; Tools/TestResultServer/static-dashboards/dashboard_base.js:191
&gt; +            function() { return value in currentBuilderGroup().builders; });

I would probably add a currentBuilders() function that returns currentBuilderGroup().builders and use that below.

&gt;&gt; Tools/TestResultServer/static-dashboards/loader_unittests.js:57
&gt;&gt; +test(&apos;results files loading&apos;, 11, function() {
&gt; 
&gt; Total exceptions is 1 + 2 x numBuilders.  So before it was 1 + 2 * 2 = 5, now 1 + 2 * 5 = 11, since we use an expanded builder list.

It might be useful to note this in a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790853</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 13:16:20 -0800</bug_when>
    <thetext>(looks fine otherwise).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790854</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 13:16:44 -0800</bug_when>
    <thetext>R+ if you agree w/ those changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790879</commentid>
    <comment_count>6</comment_count>
      <attachid>179324</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 13:50:42 -0800</bug_when>
    <thetext>Created attachment 179324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790880</commentid>
    <comment_count>7</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 13:51:14 -0800</bug_when>
    <thetext>Addressed all comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790887</commentid>
    <comment_count>8</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 13:54:00 -0800</bug_when>
    <thetext>Just saw that some files were excluded from my change, fixing ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790890</commentid>
    <comment_count>9</comment_count>
      <attachid>179324</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-12-13 13:54:27 -0800</bug_when>
    <thetext>Comment on attachment 179324
Patch

thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790946</commentid>
    <comment_count>10</comment_count>
      <attachid>179340</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 14:40:05 -0800</bug_when>
    <thetext>Created attachment 179340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790950</commentid>
    <comment_count>11</comment_count>
      <attachid>179342</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 14:41:29 -0800</bug_when>
    <thetext>Created attachment 179342
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790955</commentid>
    <comment_count>12</comment_count>
      <attachid>179342</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 14:43:31 -0800</bug_when>
    <thetext>Comment on attachment 179342
Patch for landing

Rejecting attachment 179342 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

/mnt/git/webkit-commit-queue/Tools/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/15309423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790967</commentid>
    <comment_count>13</comment_count>
      <attachid>179345</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2012-12-13 14:49:18 -0800</bug_when>
    <thetext>Created attachment 179345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791179</commentid>
    <comment_count>14</comment_count>
      <attachid>179345</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 18:03:53 -0800</bug_when>
    <thetext>Comment on attachment 179345
Patch

Clearing flags on attachment: 179345

Committed r137693: &lt;http://trac.webkit.org/changeset/137693&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>791180</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 18:03:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179320</attachid>
            <date>2012-12-13 13:05:09 -0800</date>
            <delta_ts>2012-12-13 13:50:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104941-20121213130230.patch</filename>
            <type>text/plain</type>
            <size>19980</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE3NGY4NjA4MDdmODJmODZkYzBhMjA0NzhjZjc1NWIz
YTJiN2Y5MS4uNzdiY2MzNTNkY2Y5NDU5NDU4YjViOWVlMjA3NzI5ZDZiOTEyMTQ1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDEyLTEyLTEzICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBEYXNoYm9hcmQgY2xlYW51cDogcmVtb3ZlIHVzYWdlIG9mIGdsb2JhbCBnX2J1aWxk
ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0
OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGRhc2hib2FyZHMgdXNlIGEgbG90IG9mIGdsb2JhbCBzdGF0ZSwgd2hpY2ggbWFrZXMgaGFja2lu
ZyBvbiB0aGVtCisgICAgICAgIGNvbXBsaWNhdGVkLiBUaGlzIGNoYW5nZSByZW1vdmVzIHRoZSB1
c2Ugb2Ygb25lIHN1Y2ggZ2xvYmFsOiBnX2J1aWxkZXJzLgorICAgICAgICBJbiBtb3N0IGNhc2Vz
LCB3ZSBjYW4ganVzdCB1c2UgY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzIGluc3RlYWQu
CisgICAgICAgIFN1cnByaXNpbmdseSwgdGhlIG1vc3QgY2hhbmdlcyB3ZXJlIHJlcXVpcmVkIHRv
IHRoZSB1bml0IHRlc3RzLCBzaW5jZQorICAgICAgICB0aGV5IHdlcmUgZXZlbiBiaWdnZXIgb2Zm
ZW5kZXJzIG9mIGJhZCBoeWdpbmUsIHJlbHlpbmcgb24gZ2xvYmFsIHN0YXRlCisgICAgICAgIHNl
dCBieSBvdGhlciB0ZXN0cywgcmFuZG9tbHkgY2xvYmJlcmluZyBnbG9iYWwgdmFyaWFibGVzIGlu
IHdheXMgdGhlCisgICAgICAgIHJlYWwgY29kZSBkb2Vzbid0LCBldGMuCisKKyAgICAgICAgKiBU
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzOgorICAgICAgICAo
QnVpbGRlckdyb3VwLnByb3RvdHlwZS5zZXR1cCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKC5zd2l0Y2gu
cmV0dXJuKToKKyAgICAgICAgKGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKToKKyAgICAgICAgKiBU
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanM6
CisgICAgICAgIChnZW5lcmF0ZVBhZ2UpOgorICAgICAgICAoZ2V0QWxsVGVzdHNUcmllKToKKyAg
ICAgICAgKHByb2Nlc3NUZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKToKKyAgICAgICAgKHNob3dQb3B1
cEZvckJ1aWxkKToKKyAgICAgICAgKGdlbmVyYXRlUGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSk6
CisgICAgICAgIChsb2FkRXhwZWN0YXRpb25zTGF5b3V0VGVzdHMpOgorICAgICAgICAqIFRlc3RS
ZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVz
dHMuanM6CisgICAgICAgIChyZXNldEdsb2JhbHMpOgorICAgICAgICAoc3R1YlJlc3VsdHNCeUJ1
aWxkZXIpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9sb2FkZXIuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBUZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanM6CisKIDIwMTIt
MTItMTMgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4
IGEgbWlzLW5hbWVkIHZhcmlhYmxlIGFmdGVyIHIxMzc2MjEuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzIGIvVG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwppbmRleCA5N2RmZTI3
Mjk3YTI1YTBkZDJjZWI4NDQ0YmQ1ZjVhOTYzNDRmOTY5Li4zMjczMWVhMTY4YjViM2QyMjRhMDJi
N2JmY2M2NTc2ODc4ODY5YWM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKQEAgLTEyNyw3ICsxMjcsNiBAQCBCdWlsZGVy
R3JvdXAucHJvdG90eXBlLnNldHVwID0gZnVuY3Rpb24oKQogICAgIC8vIEZJWE1FOiBpbnN0ZWFk
IG9mIGNvcHlpbmcgdGhlc2UgdG8gZ2xvYmFscywgaXQgd291bGQgYmUgYmV0dGVyIGlmCiAgICAg
Ly8gdGhlIHJlc3Qgb2YgdGhlIGNvZGUgcmVhZCB0aGluZ3MgZnJvbSB0aGUgQnVpbGRlckdyb3Vw
IGluc3RhbmNlIGRpcmVjdGx5CiAgICAgZ19kZWZhdWx0QnVpbGRlck5hbWUgPSB0aGlzLl9kZWZh
dWx0QnVpbGRlcigpOwotICAgIGdfYnVpbGRlcnMgPSB0aGlzLmJ1aWxkZXJzOwogfTsKIAogQnVp
bGRlckdyb3VwLnByb3RvdHlwZS5fZGVmYXVsdEJ1aWxkZXIgPSBmdW5jdGlvbigpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9i
YXNlLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9h
cmRfYmFzZS5qcwppbmRleCA2ZWVlMWU3YmRlZTUzODFkMjE5MDhkNzJkNzEzMmQ0NTE1ODE4N2I1
Li5mMDRiYjZiYjEyZDQxMzYzYTgyYzNmNmEyMmY2MTYzNjgzZDFlZWNiIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpz
CisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJk
X2Jhc2UuanMKQEAgLTE4OCw3ICsxODgsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJh
bWV0ZXJXcmFwcGVyKGtleSwgdmFsdWUpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2Jh
Ymx5IGJlIHN0b3JlZCBvbiBnX2Nyb3NzRGFzaGJvYXJkU3RhdGUgbGlrZSBldmVyeXRoaW5nIGVs
c2UgaW4gdGhpcyBmdW5jdGlvbi4KICAgICBjYXNlICdidWlsZGVyJzoKICAgICAgICAgdmFsaWRh
dGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCi0gICAgICAgICAgICBmdW5j
dGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGdfYnVpbGRlcnM7IH0pOworICAgICAgICAgICAgZnVu
Y3Rpb24oKSB7IHJldHVybiB2YWx1ZSBpbiBjdXJyZW50QnVpbGRlckdyb3VwKCkuYnVpbGRlcnM7
IH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgJ3VzZVRlc3REYXRhJzoKQEAg
LTQyMSw3ICs0MjEsNyBAQCBmdW5jdGlvbiBpc1RpcE9mVHJlZVdlYktpdEJ1aWxkZXIoKQogICAg
IHJldHVybiBjdXJyZW50QnVpbGRlckdyb3VwKCkuaXNUb1RXZWJLaXQ7CiB9CiAKLXZhciBnX2Rl
ZmF1bHRCdWlsZGVyTmFtZSwgZ19idWlsZGVyczsKK3ZhciBnX2RlZmF1bHRCdWlsZGVyTmFtZTsK
IGZ1bmN0aW9uIGluaXRCdWlsZGVycygpCiB7CiAgICAgY3VycmVudEJ1aWxkZXJHcm91cCgpLnNl
dHVwKCk7CkBAIC02OTQsNyArNjk0LDcgQEAgZnVuY3Rpb24gaHRtbEZvclRlc3RUeXBlU3dpdGNo
ZXIob3B0X25vQnVpbGRlck1lbnUsIG9wdF9leHRyYUh0bWwsIG9wdF9pbmNsdWRlTm8KICAgICBo
dG1sICs9IHNlbGVjdEhUTUwoJ1Rlc3QgdHlwZScsICd0ZXN0VHlwZScsIFRFU1RfVFlQRVMpOwog
CiAgICAgaWYgKCFvcHRfbm9CdWlsZGVyTWVudSkgewotICAgICAgICB2YXIgYnVpbGRlcnNGb3JN
ZW51ID0gT2JqZWN0LmtleXMoZ19idWlsZGVycyk7CisgICAgICAgIHZhciBidWlsZGVyc0Zvck1l
bnUgPSBPYmplY3Qua2V5cyhjdXJyZW50QnVpbGRlckdyb3VwKCkuYnVpbGRlcnMpOwogICAgICAg
ICBpZiAob3B0X2luY2x1ZGVOb25lQnVpbGRlcikKICAgICAgICAgICAgIGJ1aWxkZXJzRm9yTWVu
dS51bnNoaWZ0KCctLS0tLS0tLS0tLS0tLScpOwogICAgICAgICBodG1sICs9IHNlbGVjdEhUTUwo
J0J1aWxkZXInLCAnYnVpbGRlcicsIGJ1aWxkZXJzRm9yTWVudSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQu
anMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19k
YXNoYm9hcmQuanMKaW5kZXggZDQ0ZTNlNThlNjRlMmE5MzBkZWU1MTg2OGU1ZjkzNzZhZGM5ZmUx
Yi4uMjc4NDNkZDUyNzlmNTg3OWY0OGUyMWM5NzBkNTQ1MmIxZWIxZDRmNyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJv
YXJkLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxh
a2luZXNzX2Rhc2hib2FyZC5qcwpAQCAtMTU1LDcgKzE1NSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRl
UGFnZSgpCiAgICAgZWxzZQogICAgICAgICBnZW5lcmF0ZVBhZ2VGb3JCdWlsZGVyKGdfY3VycmVu
dFN0YXRlLmJ1aWxkZXIpOwogCi0gICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKQor
ICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzKQog
ICAgICAgICBwcm9jZXNzVGVzdFJlc3VsdHNGb3JCdWlsZGVyQXN5bmMoYnVpbGRlcik7CiAKICAg
ICBwb3N0SGVpZ2h0Q2hhbmdlZE1lc3NhZ2UoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBmdW5jdGlv
biBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAgICBjYXNlICdidWlsZGVy
JzoKICAgICAgICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUs
CiAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUg
aW4gZ19idWlsZGVyczsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gY3VycmVudEJ1
aWxkZXJHcm91cCgpLmJ1aWxkZXJzOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogCkBAIC00NzksNyArNDc5LDcgQEAgdmFyIGdfYWxsVGVzdHNUcmllOwogZnVuY3Rpb24g
Z2V0QWxsVGVzdHNUcmllKCkKIHsKICAgICBpZiAoIWdfYWxsVGVzdHNUcmllKQotICAgICAgICBn
X2FsbFRlc3RzVHJpZSA9IG5ldyBUZXN0VHJpZShnX2J1aWxkZXJzLCBnX3Jlc3VsdHNCeUJ1aWxk
ZXIpOworICAgICAgICBnX2FsbFRlc3RzVHJpZSA9IG5ldyBUZXN0VHJpZShjdXJyZW50QnVpbGRl
ckdyb3VwKCkuYnVpbGRlcnMsIGdfcmVzdWx0c0J5QnVpbGRlcik7CiAKICAgICByZXR1cm4gZ19h
bGxUZXN0c1RyaWU7CiB9CkBAIC02MTAsNyArNjEwLDcgQEAgZnVuY3Rpb24gYWxsVGVzdHNXaXRo
U2FtZVBsYXRmb3JtQW5kQnVpbGRUeXBlKHBsYXRmb3JtLCBidWlsZFR5cGUpCiB7CiAgICAgaWYg
KCFnX2FsbFRlc3RzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtwbGF0Zm9ybV1bYnVpbGRUeXBlXSkg
ewogICAgICAgICB2YXIgdGVzdHMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgdGhpc0J1aWxkZXIg
aW4gZ19idWlsZGVycykgeworICAgICAgICBmb3IgKHZhciB0aGlzQnVpbGRlciBpbiBjdXJyZW50
QnVpbGRlckdyb3VwKCkuYnVpbGRlcnMpIHsKICAgICAgICAgICAgIHZhciB0aGlzQnVpbGRlckJ1
aWxkSW5mbyA9IHBsYXRmb3JtQW5kQnVpbGRUeXBlKHRoaXNCdWlsZGVyKTsKICAgICAgICAgICAg
IGlmICh0aGlzQnVpbGRlckJ1aWxkSW5mby5idWlsZFR5cGUgPT0gYnVpbGRUeXBlICYmIHRoaXNC
dWlsZGVyQnVpbGRJbmZvLnBsYXRmb3JtID09IHBsYXRmb3JtKSB7CiAgICAgICAgICAgICAgICAg
YWRkVGVzdHNGb3JCdWlsZGVyKHRoaXNCdWlsZGVyLCB0ZXN0cyk7CkBAIC05MTksNyArOTE5LDcg
QEAgZnVuY3Rpb24gcHJvY2Vzc1Rlc3RSZXN1bHRzRm9yQnVpbGRlckFzeW5jKGJ1aWxkZXIpCiAK
IGZ1bmN0aW9uIHByb2Nlc3NUZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKCkKIHsKLSAgICBmb3IgKHZh
ciBidWlsZGVyIGluIGdfYnVpbGRlcnMpCisgICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50
QnVpbGRlckdyb3VwKCkuYnVpbGRlcnMpCiAgICAgICAgIHByb2Nlc3NUZXN0UnVuc0ZvckJ1aWxk
ZXIoYnVpbGRlcik7CiB9CiAKQEAgLTEyMzYsNyArMTIzNiw3IEBAIGZ1bmN0aW9uIHNob3dQb3B1
cEZvckJ1aWxkKGUsIGJ1aWxkZXIsIGluZGV4LCBvcHRfdGVzdE5hbWUpCiAKICAgICAgICAgdmFy
IGNocm9tZVJldmlzaW9uID0gZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLmNocm9tZVJldmlz
aW9uW2luZGV4XTsKICAgICAgICAgaWYgKGNocm9tZVJldmlzaW9uICYmIGlzTGF5b3V0VGVzdFJl
c3VsdHMoKSkgewotICAgICAgICAgICAgaHRtbCArPSAnPGxpPjxhIGhyZWY9IicgKyBURVNUX1JF
U1VMVFNfQkFTRV9QQVRIICsgZ19idWlsZGVyc1tidWlsZGVyXSArCisgICAgICAgICAgICBodG1s
ICs9ICc8bGk+PGEgaHJlZj0iJyArIFRFU1RfUkVTVUxUU19CQVNFX1BBVEggKyBjdXJyZW50QnVp
bGRlckdyb3VwKCkuYnVpbGRlcnNbYnVpbGRlcl0gKwogICAgICAgICAgICAgICAgICcvJyArIGNo
cm9tZVJldmlzaW9uICsgJy9sYXlvdXQtdGVzdC1yZXN1bHRzLnppcCI+bGF5b3V0LXRlc3QtcmVz
dWx0cy56aXA8L2E+PC9saT4nOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYyNiw3ICsxNjI2LDcg
QEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yRXhwZWN0YXRpb25zVXBkYXRlKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykgeworICAgIGZv
ciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzKSB7CiAgICAg
ICAgIHZhciB0ZXN0cyA9IGdfcGVyQnVpbGRlcldpdGhFeHBlY3RhdGlvbnNCdXROb0ZhaWx1cmVz
W2J1aWxkZXJdCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKysp
IHsKICAgICAgICAgICAgIC8vIEFueXRoaW5nIGV4dHJhIGluIHRoaXMgY2FzZSBpcyB3aGF0IGlz
IGxpc3RlZCBpbiBleHBlY3RhdGlvbnMKQEAgLTIyNTUsNyArMjI1NSw3IEBAIGZ1bmN0aW9uIGxv
YWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpCiAg
ICAgdmFyIHJldmlzaW9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CiAgICAgcmV2aXNpb25Db250YWluZXIudGV4dENvbnRlbnQgPSAiU2hvd2luZyByZXN1bHRzIGZv
cjogIgogICAgIGV4cGVjdGF0aW9uc0NvbnRhaW5lci5hcHBlbmRDaGlsZChyZXZpc2lvbkNvbnRh
aW5lcik7Ci0gICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKSB7CisgICAgZm9yICh2
YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlckdyb3VwKCkuYnVpbGRlcnMpIHsKICAgICAgICAg
aWYgKGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcikubmFtZSA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIp
IHsKICAgICAgICAgICAgIHZhciBsYXRlc3RSZXZpc2lvbiA9IGdfY3VycmVudFN0YXRlLnJldmlz
aW9uIHx8IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS53ZWJraXRSZXZpc2lvblswXTsKICAg
ICAgICAgICAgIHZhciBidWlsZEluZm8gPSBidWlsZEluZm9Gb3JSZXZpc2lvbihidWlsZGVyLCBs
YXRlc3RSZXZpc2lvbik7CkBAIC0yMjcyLDcgKzIyNzIsNyBAQCBmdW5jdGlvbiBsb2FkRXhwZWN0
YXRpb25zTGF5b3V0VGVzdHModGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogICAgIHZhciB0
ZXN0V2l0aG91dFN1ZmZpeCA9IHRlc3Quc3Vic3RyaW5nKDAsIHRlc3QubGFzdEluZGV4T2YoJy4n
KSk7CiAgICAgdmFyIGFjdHVhbFJlc3VsdFN1ZmZpeGVzID0gWyctYWN0dWFsLnR4dCcsICctYWN0
dWFsLnBuZycsICctY3Jhc2gtbG9nLnR4dCcsICctZGlmZi50eHQnLCAnLXdkaWZmLmh0bWwnLCAn
LWRpZmYucG5nJ107CiAKLSAgICBmb3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAg
ICBmb3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5idWlsZGVycykgewog
ICAgICAgICB2YXIgYWN0dWFsUmVzdWx0c0Jhc2U7CiAgICAgICAgIGlmIChidWlsZGVyTWFzdGVy
KGJ1aWxkZXIpLm5hbWUgPT0gV0VCS0lUX0JVSUxERVJfTUFTVEVSKSB7CiAgICAgICAgICAgICB2
YXIgbGF0ZXN0UmV2aXNpb24gPSBnX2N1cnJlbnRTdGF0ZS5yZXZpc2lvbiB8fCBnX3Jlc3VsdHNC
eUJ1aWxkZXJbYnVpbGRlcl0ud2Via2l0UmV2aXNpb25bMF07CkBAIC0yMjgwLDcgKzIyODAsNyBA
QCBmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zTGF5b3V0VGVzdHModGVzdCwgZXhwZWN0YXRpb25z
Q29udGFpbmVyKQogICAgICAgICAgICAgYWN0dWFsUmVzdWx0c0Jhc2UgPSAnaHR0cDovL2J1aWxk
LndlYmtpdC5vcmcvcmVzdWx0cy8nICsgYnVpbGRlciArCiAgICAgICAgICAgICAgICAgJy9yJyAr
IGJ1aWxkSW5mby5yZXZpc2lvblN0YXJ0ICsgJyAoJyArIGJ1aWxkSW5mby5idWlsZE51bWJlciAr
ICcpLyc7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgYWN0dWFsUmVzdWx0c0Jhc2UgPSBU
RVNUX1JFU1VMVFNfQkFTRV9QQVRIICsgZ19idWlsZGVyc1tidWlsZGVyXSArICcvcmVzdWx0cy9s
YXlvdXQtdGVzdC1yZXN1bHRzLyc7CisgICAgICAgICAgICBhY3R1YWxSZXN1bHRzQmFzZSA9IFRF
U1RfUkVTVUxUU19CQVNFX1BBVEggKyBjdXJyZW50QnVpbGRlckdyb3VwKCkuYnVpbGRlcnNbYnVp
bGRlcl0gKyAnL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy8nOwogCiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYWN0dWFsUmVzdWx0U3VmZml4ZXMubGVuZ3RoOyBpKyspIHsKICAgICAg
ICAgICAgIGFkZEV4cGVjdGF0aW9uSXRlbShleHBlY3RhdGlvbnNDb250YWluZXJzLCBleHBlY3Rh
dGlvbnNDb250YWluZXIsIG51bGwsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzIGIvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJk
X3VuaXR0ZXN0cy5qcwppbmRleCBhYzI2NGI0MDdlOWYzZjM0OTc2OThkMzk0OTAyNjQxZTI1YzVi
M2MyLi44ZDBhNzc4NDY1NmNiN2E1ZmFhZDAzZDRjNTAzMTI2NmRlYThiODhkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNo
Ym9hcmRfdW5pdHRlc3RzLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMKQEAgLTMyLDcgKzMyLDYg
QEAgZnVuY3Rpb24gcmVzZXRHbG9iYWxzKCkKICAgICBhbGxUZXN0cyA9IG51bGw7CiAgICAgZ19l
eHBlY3RhdGlvbnNCeVBsYXRmb3JtID0ge307CiAgICAgZ19yZXN1bHRzQnlCdWlsZGVyID0ge307
Ci0gICAgZ19idWlsZGVycyA9IHt9OwogICAgIGdfYWxsRXhwZWN0YXRpb25zID0gbnVsbDsKICAg
ICBnX2FsbFRlc3RzVHJpZSA9IG51bGw7CiAgICAgZ19jdXJyZW50U3RhdGUgPSB7fTsKQEAgLTQ1
LDI2ICs0NCwzNSBAQCBmdW5jdGlvbiByZXNldEdsb2JhbHMoKQogICAgIExPQURfQlVJTERCT1Rf
REFUQShbewogICAgICAgICBuYW1lOiAnQ2hyb21pdW1XZWJraXQnLAogICAgICAgICB1cmw6ICdk
dW1teXVybCcsIAotICAgICAgICB0ZXN0czogeydsYXlvdXQtdGVzdHMnOiB7J2J1aWxkZXJzJzog
WydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExpbnV4IChkYmcpJywgJ1dlYktpdCBNYWMxMC43Jywg
J1dlYktpdCBXaW4nXX19CisgICAgICAgIHRlc3RzOiB7J2xheW91dC10ZXN0cyc6IHsnYnVpbGRl
cnMnOiBbJ1dlYktpdCBMaW51eCcsICdXZWJLaXQgTGludXggKGRiZyknLCAnV2ViS2l0IE1hYzEw
LjcnLCAnV2ViS2l0IFdpbicsICdXZWJLaXQgV2luIChkYmcpJ119fQogICAgIH0sCiAgICAgewog
ICAgICAgICBuYW1lOiAnd2Via2l0Lm9yZycsCiAgICAgICAgIHVybDogJ2R1bW15dXJsJywKICAg
ICAgICAgdGVzdHM6IHsnbGF5b3V0LXRlc3RzJzogeydidWlsZGVycyc6IFsnQXBwbGUgU25vd0xl
b3BhcmQgVGVzdHMnLCAnUXQgTGludXggVGVzdHMnLCAnQ2hyb21pdW0gTWFjMTAuNyBUZXN0cycs
ICdHVEsgV2luJ119fQogICAgIH1dKTsKKyAKICAgICBmb3IgKHZhciBncm91cCBpbiBMQVlPVVRf
VEVTVFNfQlVJTERFUl9HUk9VUFMpCiAgICAgICAgIExBWU9VVF9URVNUU19CVUlMREVSX0dST1VQ
U1tncm91cF0gPSBudWxsOwogfQogCi1mdW5jdGlvbiBydW5FeHBlY3RhdGlvbnNUZXN0KGJ1aWxk
ZXIsIHRlc3QsIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKQorZnVuY3Rpb24gc3R1YlJlc3VsdHNC
eUJ1aWxkZXIoZGF0YSkKIHsKLSAgICBnX2J1aWxkZXJzW2J1aWxkZXJdID0gdHJ1ZTsKKyAgICBm
b3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5idWlsZGVycykKKyAgICB7
CisgICAgICAgIGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXSA9IGRhdGFbYnVpbGRlcl0gfHwg
eyd0ZXN0cyc6IFtdfTsKKyAgICB9OworfQogCitmdW5jdGlvbiBydW5FeHBlY3RhdGlvbnNUZXN0
KGJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKQorewogICAgIC8vIFB1dCBp
biBzb21lIGR1bW15IHJlc3VsdHMuIHByb2Nlc3NFeHBlY3RhdGlvbnMgZXhwZWN0cyB0aGUgdGVz
dCB0byBiZQogICAgIC8vIHRoZXJlLgogICAgIHZhciB0ZXN0cyA9IHt9OwogICAgIHRlc3RzW3Rl
c3RdID0geydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfTsKLSAg
ICBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVzdHN9OworICAgIHZh
ciByZXN1bHRzID0ge307CisgICAgcmVzdWx0c1tidWlsZGVyXSA9IHsndGVzdHMnOiB0ZXN0c307
CisgICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIocmVzdWx0cyk7CiAKICAgICBwcm9jZXNzRXhwZWN0
YXRpb25zKCk7CiAgICAgdmFyIHJlc3VsdHNGb3JUZXN0ID0gY3JlYXRlUmVzdWx0c09iamVjdEZv
clRlc3QodGVzdCwgYnVpbGRlcik7CkBAIC05NCw2ICsxMDIsOCBAQCB0ZXN0KCdmbGF0dGVuVHJp
ZScsIDEsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxlYXNlRmFpbCcsIDIsIGZ1bmN0aW9uKCkg
ewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJv
bWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CisKICAgICB2YXIgYnVpbGRlciA9ICdXZWJLaXQg
V2luJzsKICAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKICAgICB2YXIgZXhwZWN0YXRpb25z
QXJyYXkgPSBbCkBAIC0xMDUsNiArMTE1LDcgQEAgdGVzdCgncmVsZWFzZUZhaWwnLCAyLCBmdW5j
dGlvbigpIHsKIAogdGVzdCgncmVsZWFzZUZhaWxEZWJ1Z0NyYXNoUmVsZWFzZUJ1aWxkZXInLCAy
LCBmdW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0
KCdAVG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVy
ID0gJ1dlYktpdCBXaW4nOwogICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBl
eHBlY3RhdGlvbnNBcnJheSA9IFsKQEAgLTExOCw2ICsxMjksNyBAQCB0ZXN0KCdyZWxlYXNlRmFp
bERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcicsIDIsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxl
YXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1aWxkZXInLCAyLCBmdW5jdGlvbigpIHsKICAgICByZXNl
dEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3JnJywg
J2xheW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVyID0gJ1dlYktpdCBXaW4gKGRiZyknOwog
ICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9
IFsKQEAgLTEzMSw2ICsxNDMsNyBAQCB0ZXN0KCdyZWxlYXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1
aWxkZXInLCAyLCBmdW5jdGlvbigpIHsKIAogdGVzdCgnb3ZlcnJpZGVKdXN0QnVpbGRUeXBlJywg
MTIsIGZ1bmN0aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xp
c3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFyIHRlc3Qg
PSAnYmFyLzEuaHRtbCc7CiAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtWydDSFJPTUlVTSdd
ID0gZ2V0UGFyc2VkRXhwZWN0YXRpb25zKCdiYXIgWyBXb250Rml4IEZhaWx1cmUgUGFzcyBUaW1l
b3V0IF1cbicgKwogICAgICAgICAnWyBNYWMgXSAnICsgdGVzdCArICcgWyBXb250Rml4IEZhaWx1
cmUgXVxuJyArCkBAIC0yMjcsOSArMjQwLDEwIEBAIHRlc3QoJ2ZpbHRlckJ1Z3MnLDQsIGZ1bmN0
aW9uKCkgewogCiB0ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxNiwgZnVuY3Rpb24oKSB7CiAgICAg
cmVzZXRHbG9iYWxzKCk7Ci0gICAgZ19idWlsZGVyc1snV2ViS2l0IFdpbiddID0gdHJ1ZTsKLSAg
ICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdXZWJLaXQgV2luJzogeworICAgIGxv
YWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7Cisg
CisgICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIoeworICAgICAgICAnV2ViS2l0IFdpbicgOiB7CiAg
ICAgICAgICAgICAndGVzdHMnOiB7CiAgICAgICAgICAgICAgICAgJ2Zvby90ZXN0MS5odG1sJzog
eydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfSwKICAgICAgICAg
ICAgICAgICAnZm9vL3Rlc3QyLmh0bWwnOiB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1l
cyc6IFtbMTAwLCAwXV19LApAQCAtMjM3LDcgKzI1MSw3IEBAIHRlc3QoJ2dldEV4cGVjdGF0aW9u
cycsIDE2LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAndGVzdDEuaHRtbCc6IHsncmVz
dWx0cyc6IFtbMTAwLCAnRiddXSwgJ3RpbWVzJzogW1sxMDAsIDBdXX0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KKyAgICB9KTsKIAogICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9y
bVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDEyMykgZm9vIFsgRmFp
bHVyZSBQYXNzIENyYXNoIF1cbicgKwogICAgICAgICAnQnVnKEZvbykgWyBSZWxlYXNlIF0gZm9v
L3Rlc3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwpAQCAtMzE2LDYgKzMzMCw3IEBAIHRlc3QoJ3N1
YnN0cmluZ0xpc3QnLCAyLCBmdW5jdGlvbigpIHsKIH0pOwogCiB0ZXN0KCdodG1sRm9yVGVzdHNX
aXRoRXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJlcycsIDQsIGZ1bmN0aW9uKCkgeworICAgIGxvYWRC
dWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAg
dmFyIGJ1aWxkZXIgPSAnV2ViS2l0IFdpbic7CiAgICAgZ19wZXJCdWlsZGVyV2l0aEV4cGVjdGF0
aW9uc0J1dE5vRmFpbHVyZXNbYnVpbGRlcl0gPSBbJ3Bhc3NpbmctdGVzdDEuaHRtbCcsICdwYXNz
aW5nLXRlc3QyLmh0bWwnXTsKICAgICBnX3BlckJ1aWxkZXJTa2lwcGVkUGF0aHNbYnVpbGRlcl0g
PSBbJ3NraXBwZWQtdGVzdDEuaHRtbCddOwpAQCAtMzY4LDExICszODMsMTMgQEAgdGVzdCgnaHRt
bEZvclRlc3RUeXBlU3dpdGNoZXJHcm91cCcsIDYsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdodG1s
Rm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzJywgMSwgZnVuY3Rpb24oKSB7CiAgICAgcmVz
ZXRHbG9iYWxzKCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycs
ICdsYXlvdXQtdGVzdHMnKTsKICAgICBlcXVhbChodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1
aWxkZXJzKCdmb28vbm9uZXhpc3RhbnQuaHRtbCcpLCAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5U
ZXN0IG5vdCBmb3VuZC4gRWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBh
c3NlcyBvbiBhbGwgcGxhdGZvcm1zLjwvZGl2PicpOwogfSk7CiAKIHRlc3QoJ2h0bWxGb3JJbmRp
dmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzTm9uZXhpc3RhbnQnLCAxLCBm
dW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdA
VG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIGVxdWFsKGh0bWxGb3JJ
bmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzKCdmb28vbm9uZXhpc3Rh
bnQuaHRtbCcpLAogICAgICAgICAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5UZXN0IG5vdCBmb3Vu
ZC4gRWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBhc3NlcyBvbiBhbGwg
cGxhdGZvcm1zLjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVz
dD1mb28vbm9uZXhpc3RhbnQuaHRtbD4nICsKQEAgLTQwNSw3ICs0MjIsNyBAQCB0ZXN0KCdodG1s
Rm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzV2l0aFJlc3VsdHNMaW5rcycsIDEsIGZ1bmN0
aW9uKCkgewogICAgICAgICAnPC90YWJsZT4nICsKICAgICAgICAgJzxkaXY+VGhlIGZvbGxvd2lu
ZyBidWlsZGVycyBlaXRoZXIgZG9uXCd0IHJ1biB0aGlzIHRlc3QgKGUuZy4gaXRcJ3Mgc2tpcHBl
ZCkgb3IgYWxsIHJ1bnMgcGFzc2VkOjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1za2lw
cGVkLWJ1aWxkZXItbGlzdD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVp
bGRlcj5XZWJLaXQgTGludXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5X
ZWJLaXQgTWFjMTAuNzwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48
L2Rpdj4nICsKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQg
TGludXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgTWFjMTAu
NzwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48L2Rpdj48ZGl2IGNs
YXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgV2luIChkYmcpPC9kaXY+JyArCiAgICAgICAgICc8
L2Rpdj4nICsKICAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9ZHVtbXl0ZXN0
Lmh0bWw+JyArCiAgICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNl
dFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1bHRz
PC9zcGFuPiB8ICcgKwpAQCAtNDQ5LDYgKzQ2Niw3IEBAIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFs
VGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzV2Via2l0TWFzdGVyJywgMSwgZnVuY3Rp
CiAKIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFsVGVzdHMnLCA0LCBmdW5jdGlvbigpIHsKICAgICBy
ZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3Jn
JywgJ2xheW91dC10ZXN0cycpOwogICAgIHZhciB0ZXN0MSA9ICdmb28vbm9uZXhpc3RhbnQuaHRt
bCc7CiAgICAgdmFyIHRlc3QyID0gJ2Jhci9ub25leGlzdGFudC5odG1sJzsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXIuanMgYi9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwppbmRleCBj
NzQ4OTAxNjE3YjhlNDc4NTdjYjY4ZjQzYTU1ZjcwNTBlOTllZTgxLi45Y2JhODNlYzgzNmIwYTJl
YTQ4Njg2MGVlZjIxMTliZjQ3OWViMTk1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwpAQCAtOTAsNyArOTAsNyBAQCBsb2FkZXIu
TG9hZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHBhcnNlUGFyYW1ldGVycygpOwog
Ci0gICAgICAgIGZvciAodmFyIGJ1aWxkZXJOYW1lIGluIGdfYnVpbGRlcnMpCisgICAgICAgIGZv
ciAodmFyIGJ1aWxkZXJOYW1lIGluIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5idWlsZGVycykKICAg
ICAgICAgICAgIHRoaXMuX2xvYWRSZXN1bHRzRmlsZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpOwog
ICAgIH0sCiAgICAgX2xvYWRSZXN1bHRzRmlsZUZvckJ1aWxkZXI6IGZ1bmN0aW9uKGJ1aWxkZXJO
YW1lKQpAQCAtMTY3LDEyICsxNjcsMTIgQEAgbG9hZGVyLkxvYWRlci5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgLy8gUmVtb3ZlIHRoaXMgYnVpbGRlciBmcm9tIGJ1aWxkZXJzLCBzbyB3ZSBkb24n
dCB0cnkgdG8gdXNlIHRoZQogICAgICAgICAvLyBkYXRhIHRoYXQgaXNuJ3QgdGhlcmUuCi0gICAg
ICAgIGRlbGV0ZSBnX2J1aWxkZXJzW2J1aWxkZXJOYW1lXTsKKyAgICAgICAgZGVsZXRlIGN1cnJl
bnRCdWlsZGVyR3JvdXAoKS5idWlsZGVyc1tidWlsZGVyTmFtZV07CiAKICAgICAgICAgLy8gQ2hh
bmdlIHRoZSBkZWZhdWx0IGJ1aWxkZXIgbmFtZSBpZiBpdCBoYXMgYmVlbiBkZWxldGVkLgogICAg
ICAgICBpZiAoZ19kZWZhdWx0QnVpbGRlck5hbWUgPT0gYnVpbGRlck5hbWUpIHsKICAgICAgICAg
ICAgIGdfZGVmYXVsdEJ1aWxkZXJOYW1lID0gbnVsbDsKLSAgICAgICAgICAgIGZvciAodmFyIGF2
YWlsYWJsZUJ1aWxkZXJOYW1lIGluIGdfYnVpbGRlcnMpIHsKKyAgICAgICAgICAgIGZvciAodmFy
IGF2YWlsYWJsZUJ1aWxkZXJOYW1lIGluIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5idWlsZGVycykg
ewogICAgICAgICAgICAgICAgIGdfZGVmYXVsdEJ1aWxkZXJOYW1lID0gYXZhaWxhYmxlQnVpbGRl
ck5hbWU7CiAgICAgICAgICAgICAgICAgZ19kZWZhdWx0RGFzaGJvYXJkU3BlY2lmaWNTdGF0ZVZh
bHVlcy5idWlsZGVyID0gYXZhaWxhYmxlQnVpbGRlck5hbWU7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xOTQsNyArMTk0LDcgQEAgbG9hZGVyLkxvYWRlci5wcm90b3R5cGUgPSB7CiAgICAg
fSwKICAgICBfaGF2ZVJlc3VsdHNGaWxlc0xvYWRlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKSB7CisgICAgICAgIGZvciAodmFyIGJ1
aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzKSB7CiAgICAgICAgICAgICBp
ZiAoIWdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXSkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvbG9hZGVyX3VuaXR0ZXN0cy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvbG9hZGVyX3VuaXR0ZXN0cy5qcwppbmRleCA4ZjYwYmI2M2Ux
OTBjN2E3ZWNhMWM3MzgxM2YyOTJiNmJkMjdlYzkwLi41NjAyOTc4NGEwNTUwMDQ4YWM0OTQwYTJl
YzA3MWUxZGFhZjk1Y2U3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzCkBAIC01NCw5ICs1NCw5
IEBAIHRlc3QoJ2xvYWRpbmcgc3RlcHMnLCAxLCBmdW5jdGlvbigpIHsKICAgICB9CiB9KTsKIAot
dGVzdCgncmVzdWx0cyBmaWxlcyBsb2FkaW5nJywgNSwgZnVuY3Rpb24oKSB7Cit0ZXN0KCdyZXN1
bHRzIGZpbGVzIGxvYWRpbmcnLCAxMSwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7
Ci0gICAgdmFyIGV4cGVjdGVkTG9hZGVkQnVpbGRlcnMgPSBbIldlYktpdCBMaW51eCIsICJXZWJL
aXQgV2luIl07CisgICAgdmFyIGV4cGVjdGVkTG9hZGVkQnVpbGRlcnMgPSAgWydXZWJLaXQgTGlu
dXgnLCAnV2ViS2l0IExpbnV4IChkYmcpJywgJ1dlYktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4n
LCAnV2ViS2l0IFdpbiAoZGJnKSddOwogICAgIHZhciBsb2FkZWRCdWlsZGVycyA9IFtdOwogICAg
IHZhciByZXNvdXJjZUxvYWRlciA9IG5ldyBsb2FkZXIuTG9hZGVyKCk7CiAgICAgcmVzb3VyY2VM
b2FkZXIuX2xvYWROZXh0ID0gZnVuY3Rpb24oKSB7CkBAIC02OSwxNiArNjksMTMgQEAgdGVzdCgn
cmVzdWx0cyBmaWxlcyBsb2FkaW5nJywgNSwgZnVuY3Rpb24oKSB7CiAKICAgICB2YXIgcmVxdWVz
dEZ1bmN0aW9uID0gbG9hZGVyLnJlcXVlc3Q7CiAgICAgbG9hZGVyLnJlcXVlc3QgPSBmdW5jdGlv
bih1cmwsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB2YXIgYnVp
bGRlck5hbWUgPSAvYnVpbGRlcj0oW1x3IF0rKSYvLmV4ZWModXJsKVsxXTsKKyAgICAgICAgdmFy
IGJ1aWxkZXJOYW1lID0gL2J1aWxkZXI9KFtcdyAoKS5dKykmLy5leGVjKHVybClbMV07CiAgICAg
ICAgIGxvYWRlZEJ1aWxkZXJzLnB1c2goYnVpbGRlck5hbWUpOwogICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2soe3Jlc3BvbnNlVGV4dDogJ3sidmVyc2lvbiI6IDQsICInICsgYnVpbGRlck5hbWUgKyAn
IjogeyJzZWNvbmRzU2luY2VFcG9jaCI6IFsnICsgRGF0ZS5ub3coKSArICddLCAidGVzdHMiOiB7
fX19J30pOwogICAgIH0KIAotICAgIGdfYnVpbGRlcnMgPSB7IldlYktpdCBMaW51eCI6IHRydWUs
ICJXZWJLaXQgV2luIjogdHJ1ZX07Ci0KLSAgICBidWlsZGVycy5tYXN0ZXJzWydDaHJvbWl1bVdl
YmtpdCddID0geyd0ZXN0cyc6IHsnbGF5b3V0LXRlc3RzJzoge2J1aWxkZXJzOiBbIldlYktpdCBM
aW51eCIsICJXZWJLaXQgV2luIl19fX07CiAgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNo
cm9taXVtLm9yZycsICdsYXlvdXQtdGVzdHMnKTsKLQorIAogICAgIHRyeSB7CiAgICAgICAgIHJl
c291cmNlTG9hZGVyLl9sb2FkUmVzdWx0c0ZpbGVzKCk7CiAgICAgfSBmaW5hbGx5IHsKQEAgLTEx
Miw2ICsxMDksOCBAQCB0ZXN0KCdleHBlY3RhdGlvbnMgZmlsZXMgbG9hZGluZycsIDEsIGZ1bmN0
aW9uKCkgewogCiB0ZXN0KCdyZXN1bHRzIGZpbGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rp
b24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAt
IGNocm9taXVtLm9yZycsICdsYXlvdXQtdGVzdHMnKTsKKyAgICAKICAgICAvLyBGSVhNRTogbG9h
ZGVyIHNob3VsZG4ndCBkZXBlbmQgb24gc3RhdGUgZGVmaW5lZCBpbiBkYXNoYm9hcmRfYmFzZS5q
cy4KICAgICBnX2J1aWxkZXJzVGhhdEZhaWxlZFRvTG9hZCA9IFtdOwogCkBAIC0xMjIsMTQgKzEy
MSwxNCBAQCB0ZXN0KCdyZXN1bHRzIGZpbGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rpb24o
KSB7CiAgICAgfQogCiAgICAgdmFyIGJ1aWxkZXIxID0gJ2J1aWxkZXIxJzsKLSAgICBnX2J1aWxk
ZXJzW2J1aWxkZXIxXSA9IHRydWU7CisgICAgY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJz
W2J1aWxkZXIxXSA9IHRydWU7CiAgICAgcmVzb3VyY2VMb2FkZXIuX2hhbmRsZVJlc3VsdHNGaWxl
TG9hZEVycm9yKGJ1aWxkZXIxKTsKIAogICAgIHZhciBidWlsZGVyMiA9ICdidWlsZGVyMic7Ci0g
ICAgZ19idWlsZGVyc1tidWlsZGVyMl0gPSB0cnVlOworICAgIGN1cnJlbnRCdWlsZGVyR3JvdXAo
KS5idWlsZGVyc1tidWlsZGVyMl0gPSB0cnVlOwogICAgIHJlc291cmNlTG9hZGVyLl9oYW5kbGVS
ZXN1bHRzRmlsZUxvYWRFcnJvcihidWlsZGVyMik7CiAKICAgICBkZWVwRXF1YWwoZ19idWlsZGVy
c1RoYXRGYWlsZWRUb0xvYWQsIFtidWlsZGVyMSwgYnVpbGRlcjJdKTsKICAgICBlcXVhbChyZXNv
dXJjZUxvYWRDb3VudCwgMik7CiAKLX0pCit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179324</attachid>
            <date>2012-12-13 13:50:42 -0800</date>
            <delta_ts>2012-12-13 14:40:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104941-20121213134802.patch</filename>
            <type>text/plain</type>
            <size>19380</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE3NGY4NjA4MDdmODJmODZkYzBhMjA0NzhjZjc1NWIz
YTJiN2Y5MS4uYWEyZjUzMzhkYmE1ZDk4MDljMzgyZTI5NTE5Njg3NjBkZGY1ODIxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDEyLTEyLTEzICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBEYXNoYm9hcmQgY2xlYW51cDogcmVtb3ZlIHVzYWdlIG9mIGdsb2JhbCBnX2J1aWxk
ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0
OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGRhc2hib2FyZHMgdXNlIGEgbG90IG9mIGdsb2JhbCBzdGF0ZSwgd2hpY2ggbWFrZXMgaGFja2lu
ZyBvbiB0aGVtCisgICAgICAgIGNvbXBsaWNhdGVkLiBUaGlzIGNoYW5nZSByZW1vdmVzIHRoZSB1
c2Ugb2Ygb25lIHN1Y2ggZ2xvYmFsOiBnX2J1aWxkZXJzLgorICAgICAgICBJbiBtb3N0IGNhc2Vz
LCB3ZSBjYW4ganVzdCB1c2UgY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzIGluc3RlYWQs
CisgICAgICAgIHdoaWNoIGlzIG5vdyBjdXJyZW50QnVpbGRlcnMoKS4KKyAgICAgICAgU3VycHJp
c2luZ2x5LCB0aGUgbW9zdCBjaGFuZ2VzIHdlcmUgcmVxdWlyZWQgdG8gdGhlIHVuaXQgdGVzdHMs
IHNpbmNlCisgICAgICAgIHRoZXkgd2VyZSBldmVuIGJpZ2dlciBvZmZlbmRlcnMgb2YgYmFkIGh5
Z2llbmUsIHJlbHlpbmcgb24gZ2xvYmFsIHN0YXRlCisgICAgICAgIHNldCBieSBvdGhlciB0ZXN0
cywgcmFuZG9tbHkgY2xvYmJlcmluZyBnbG9iYWwgdmFyaWFibGVzIGluIHdheXMgdGhlCisgICAg
ICAgIHJlYWwgY29kZSBkb2Vzbid0LCBldGMuCisKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzOgorICAgICAgICAoQnVpbGRlckdyb3VwLnBy
b3RvdHlwZS5zZXR1cCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKC5zd2l0Y2gucmV0dXJuKToKKyAgICAg
ICAgKGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanM6CisgICAgICAgIChnZW5l
cmF0ZVBhZ2UpOgorICAgICAgICAoZ2V0QWxsVGVzdHNUcmllKToKKyAgICAgICAgKHByb2Nlc3NU
ZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKToKKyAgICAgICAgKHNob3dQb3B1cEZvckJ1aWxkKToKKyAg
ICAgICAgKGdlbmVyYXRlUGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSk6CisgICAgICAgIChsb2Fk
RXhwZWN0YXRpb25zTGF5b3V0VGVzdHMpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanM6CisgICAgICAg
IChyZXNldEdsb2JhbHMpOgorICAgICAgICAoc3R1YlJlc3VsdHNCeUJ1aWxkZXIpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9s
b2FkZXIuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanM6CisKIDIwMTItMTItMTMgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGEgbWlzLW5hbWVkIHZh
cmlhYmxlIGFmdGVyIHIxMzc2MjEuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwppbmRleCA5N2RmZTI3Mjk3YTI1YTBkZDJjZWI4
NDQ0YmQ1ZjVhOTYzNDRmOTY5Li4zMjczMWVhMTY4YjViM2QyMjRhMDJiN2JmY2M2NTc2ODc4ODY5
YWM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2J1aWxkZXJzLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvYnVpbGRlcnMuanMKQEAgLTEyNyw3ICsxMjcsNiBAQCBCdWlsZGVyR3JvdXAucHJvdG90eXBl
LnNldHVwID0gZnVuY3Rpb24oKQogICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9mIGNvcHlpbmcgdGhl
c2UgdG8gZ2xvYmFscywgaXQgd291bGQgYmUgYmV0dGVyIGlmCiAgICAgLy8gdGhlIHJlc3Qgb2Yg
dGhlIGNvZGUgcmVhZCB0aGluZ3MgZnJvbSB0aGUgQnVpbGRlckdyb3VwIGluc3RhbmNlIGRpcmVj
dGx5CiAgICAgZ19kZWZhdWx0QnVpbGRlck5hbWUgPSB0aGlzLl9kZWZhdWx0QnVpbGRlcigpOwot
ICAgIGdfYnVpbGRlcnMgPSB0aGlzLmJ1aWxkZXJzOwogfTsKIAogQnVpbGRlckdyb3VwLnByb3Rv
dHlwZS5fZGVmYXVsdEJ1aWxkZXIgPSBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzIGIvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwppbmRl
eCA2ZWVlMWU3YmRlZTUzODFkMjE5MDhkNzJkNzEzMmQ0NTE1ODE4N2I1Li5lMzcwNjM4MzQzN2Yy
MmI0MTUwNWQzMzU2MmEzNjEzOGQxOWViNjllIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0
U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCisrKyBiL1Rvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKQEAgLTQx
Niw2ICs0MTYsMTEgQEAgZnVuY3Rpb24gY3VycmVudEJ1aWxkZXJHcm91cCgpCiAgICAgcmV0dXJu
IGN1cnJlbnRCdWlsZGVyR3JvdXBDYXRlZ29yeSgpW2dfY3Jvc3NEYXNoYm9hcmRTdGF0ZS5ncm91
cF0KIH0KIAorZnVuY3Rpb24gY3VycmVudEJ1aWxkZXJzKCkKK3sKKyAgICByZXR1cm4gY3VycmVu
dEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzOworfQorCiBmdW5jdGlvbiBpc1RpcE9mVHJlZVdlYktp
dEJ1aWxkZXIoKQogewogICAgIHJldHVybiBjdXJyZW50QnVpbGRlckdyb3VwKCkuaXNUb1RXZWJL
aXQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2ZsYWtpbmVzc19kYXNoYm9hcmQuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKaW5kZXggZDQ0ZTNlNThlNjRlMmE5MzBk
ZWU1MTg2OGU1ZjkzNzZhZGM5ZmUxYi4uYzM3NzExYjNjZDY2OThkNzNmODc0YzA2OWZkMzdkNWEx
OTY2ZjY5MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qcwpAQCAtMTU1LDcgKzE1NSw3
IEBAIGZ1bmN0aW9uIGdlbmVyYXRlUGFnZSgpCiAgICAgZWxzZQogICAgICAgICBnZW5lcmF0ZVBh
Z2VGb3JCdWlsZGVyKGdfY3VycmVudFN0YXRlLmJ1aWxkZXIpOwogCi0gICAgZm9yICh2YXIgYnVp
bGRlciBpbiBnX2J1aWxkZXJzKQorICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxk
ZXJzKCkpCiAgICAgICAgIHByb2Nlc3NUZXN0UmVzdWx0c0ZvckJ1aWxkZXJBc3luYyhidWlsZGVy
KTsKIAogICAgIHBvc3RIZWlnaHRDaGFuZ2VkTWVzc2FnZSgpOwpAQCAtMTg2LDcgKzE4Niw3IEBA
IGZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQogICAgIGNhc2Ug
J2J1aWxkZXInOgogICAgICAgICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5
LCB2YWx1ZSwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHJldHVy
biB2YWx1ZSBpbiBnX2J1aWxkZXJzOworICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBj
dXJyZW50QnVpbGRlcnMoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
IApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZhciBnX2FsbFRlc3RzVHJpZTsKIGZ1bmN0aW9uIGdldEFs
bFRlc3RzVHJpZSgpCiB7CiAgICAgaWYgKCFnX2FsbFRlc3RzVHJpZSkKLSAgICAgICAgZ19hbGxU
ZXN0c1RyaWUgPSBuZXcgVGVzdFRyaWUoZ19idWlsZGVycywgZ19yZXN1bHRzQnlCdWlsZGVyKTsK
KyAgICAgICAgZ19hbGxUZXN0c1RyaWUgPSBuZXcgVGVzdFRyaWUoY3VycmVudEJ1aWxkZXJzKCks
IGdfcmVzdWx0c0J5QnVpbGRlcik7CiAKICAgICByZXR1cm4gZ19hbGxUZXN0c1RyaWU7CiB9CkBA
IC02MTAsNyArNjEwLDcgQEAgZnVuY3Rpb24gYWxsVGVzdHNXaXRoU2FtZVBsYXRmb3JtQW5kQnVp
bGRUeXBlKHBsYXRmb3JtLCBidWlsZFR5cGUpCiB7CiAgICAgaWYgKCFnX2FsbFRlc3RzQnlQbGF0
Zm9ybUFuZEJ1aWxkVHlwZVtwbGF0Zm9ybV1bYnVpbGRUeXBlXSkgewogICAgICAgICB2YXIgdGVz
dHMgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgdGhpc0J1aWxkZXIgaW4gZ19idWlsZGVycykgewor
ICAgICAgICBmb3IgKHZhciB0aGlzQnVpbGRlciBpbiBjdXJyZW50QnVpbGRlcnMoKSkgewogICAg
ICAgICAgICAgdmFyIHRoaXNCdWlsZGVyQnVpbGRJbmZvID0gcGxhdGZvcm1BbmRCdWlsZFR5cGUo
dGhpc0J1aWxkZXIpOwogICAgICAgICAgICAgaWYgKHRoaXNCdWlsZGVyQnVpbGRJbmZvLmJ1aWxk
VHlwZSA9PSBidWlsZFR5cGUgJiYgdGhpc0J1aWxkZXJCdWlsZEluZm8ucGxhdGZvcm0gPT0gcGxh
dGZvcm0pIHsKICAgICAgICAgICAgICAgICBhZGRUZXN0c0ZvckJ1aWxkZXIodGhpc0J1aWxkZXIs
IHRlc3RzKTsKQEAgLTkxOSw3ICs5MTksNyBAQCBmdW5jdGlvbiBwcm9jZXNzVGVzdFJlc3VsdHNG
b3JCdWlsZGVyQXN5bmMoYnVpbGRlcikKIAogZnVuY3Rpb24gcHJvY2Vzc1Rlc3RSdW5zRm9yQWxs
QnVpbGRlcnMoKQogewotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykKKyAgICBm
b3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICBwcm9jZXNzVGVz
dFJ1bnNGb3JCdWlsZGVyKGJ1aWxkZXIpOwogfQogCkBAIC0xMjM2LDcgKzEyMzYsNyBAQCBmdW5j
dGlvbiBzaG93UG9wdXBGb3JCdWlsZChlLCBidWlsZGVyLCBpbmRleCwgb3B0X3Rlc3ROYW1lKQog
CiAgICAgICAgIHZhciBjaHJvbWVSZXZpc2lvbiA9IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVy
XS5jaHJvbWVSZXZpc2lvbltpbmRleF07CiAgICAgICAgIGlmIChjaHJvbWVSZXZpc2lvbiAmJiBp
c0xheW91dFRlc3RSZXN1bHRzKCkpIHsKLSAgICAgICAgICAgIGh0bWwgKz0gJzxsaT48YSBocmVm
PSInICsgVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCArIGdfYnVpbGRlcnNbYnVpbGRlcl0gKworICAg
ICAgICAgICAgaHRtbCArPSAnPGxpPjxhIGhyZWY9IicgKyBURVNUX1JFU1VMVFNfQkFTRV9QQVRI
ICsgY3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcl0gKwogICAgICAgICAgICAgICAgICcvJyArIGNo
cm9tZVJldmlzaW9uICsgJy9sYXlvdXQtdGVzdC1yZXN1bHRzLnppcCI+bGF5b3V0LXRlc3QtcmVz
dWx0cy56aXA8L2E+PC9saT4nOwogICAgICAgICB9CiAgICAgfQpAQCAtMTYyNiw3ICsxNjI2LDcg
QEAgZnVuY3Rpb24gZ2VuZXJhdGVQYWdlRm9yRXhwZWN0YXRpb25zVXBkYXRlKCkKICAgICAgICAg
fQogICAgIH0KIAotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykgeworICAgIGZv
ciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgdmFyIHRlc3Rz
ID0gZ19wZXJCdWlsZGVyV2l0aEV4cGVjdGF0aW9uc0J1dE5vRmFpbHVyZXNbYnVpbGRlcl0KICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAg
ICAgLy8gQW55dGhpbmcgZXh0cmEgaW4gdGhpcyBjYXNlIGlzIHdoYXQgaXMgbGlzdGVkIGluIGV4
cGVjdGF0aW9ucwpAQCAtMTc5Myw3ICsxNzkzLDcgQEAgZnVuY3Rpb24gaHRtbEZvckluZGl2aWR1
YWxUZXN0T25BbGxCdWlsZGVycyh0ZXN0KQogICAgIH0KIAogICAgIHZhciBza2lwcGVkQnVpbGRl
cnMgPSBbXQotICAgIGZvciAoYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlckdyb3VwKCkuYnVpbGRl
cnMpIHsKKyAgICBmb3IgKGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAg
aWYgKHNob3duQnVpbGRlcnMuaW5kZXhPZihidWlsZGVyKSA9PSAtMSkKICAgICAgICAgICAgIHNr
aXBwZWRCdWlsZGVycy5wdXNoKGJ1aWxkZXIpOwogICAgIH0KQEAgLTIyNTUsNyArMjI1NSw3IEBA
IGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBleHBlY3RhdGlvbnND
b250YWluZXIpCiAgICAgdmFyIHJldmlzaW9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CiAgICAgcmV2aXNpb25Db250YWluZXIudGV4dENvbnRlbnQgPSAiU2hvd2lu
ZyByZXN1bHRzIGZvcjogIgogICAgIGV4cGVjdGF0aW9uc0NvbnRhaW5lci5hcHBlbmRDaGlsZChy
ZXZpc2lvbkNvbnRhaW5lcik7Ci0gICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKSB7
CisgICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlcnMoKSkgewogICAgICAgICBp
ZiAoYnVpbGRlck1hc3RlcihidWlsZGVyKS5uYW1lID09IFdFQktJVF9CVUlMREVSX01BU1RFUikg
ewogICAgICAgICAgICAgdmFyIGxhdGVzdFJldmlzaW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNp
b24gfHwgZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdLndlYmtpdFJldmlzaW9uWzBdOwogICAg
ICAgICAgICAgdmFyIGJ1aWxkSW5mbyA9IGJ1aWxkSW5mb0ZvclJldmlzaW9uKGJ1aWxkZXIsIGxh
dGVzdFJldmlzaW9uKTsKQEAgLTIyNzIsNyArMjI3Miw3IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3Rh
dGlvbnNMYXlvdXRUZXN0cyh0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpCiAgICAgdmFyIHRl
c3RXaXRob3V0U3VmZml4ID0gdGVzdC5zdWJzdHJpbmcoMCwgdGVzdC5sYXN0SW5kZXhPZignLicp
KTsKICAgICB2YXIgYWN0dWFsUmVzdWx0U3VmZml4ZXMgPSBbJy1hY3R1YWwudHh0JywgJy1hY3R1
YWwucG5nJywgJy1jcmFzaC1sb2cudHh0JywgJy1kaWZmLnR4dCcsICctd2RpZmYuaHRtbCcsICct
ZGlmZi5wbmcnXTsKIAotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykgeworICAg
IGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgdmFyIGFj
dHVhbFJlc3VsdHNCYXNlOwogICAgICAgICBpZiAoYnVpbGRlck1hc3RlcihidWlsZGVyKS5uYW1l
ID09IFdFQktJVF9CVUlMREVSX01BU1RFUikgewogICAgICAgICAgICAgdmFyIGxhdGVzdFJldmlz
aW9uID0gZ19jdXJyZW50U3RhdGUucmV2aXNpb24gfHwgZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxk
ZXJdLndlYmtpdFJldmlzaW9uWzBdOwpAQCAtMjI4MCw3ICsyMjgwLDcgQEAgZnVuY3Rpb24gbG9h
ZEV4cGVjdGF0aW9uc0xheW91dFRlc3RzKHRlc3QsIGV4cGVjdGF0aW9uc0NvbnRhaW5lcikKICAg
ICAgICAgICAgIGFjdHVhbFJlc3VsdHNCYXNlID0gJ2h0dHA6Ly9idWlsZC53ZWJraXQub3JnL3Jl
c3VsdHMvJyArIGJ1aWxkZXIgKwogICAgICAgICAgICAgICAgICcvcicgKyBidWlsZEluZm8ucmV2
aXNpb25TdGFydCArICcgKCcgKyBidWlsZEluZm8uYnVpbGROdW1iZXIgKyAnKS8nOwogICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIGFjdHVhbFJlc3VsdHNCYXNlID0gVEVTVF9SRVNVTFRTX0JB
U0VfUEFUSCArIGdfYnVpbGRlcnNbYnVpbGRlcl0gKyAnL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy8nOworICAgICAgICAgICAgYWN0dWFsUmVzdWx0c0Jhc2UgPSBURVNUX1JFU1VMVFNfQkFT
RV9QQVRIICsgY3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcl0gKyAnL3Jlc3VsdHMvbGF5b3V0LXRl
c3QtcmVzdWx0cy8nOwogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0dWFsUmVzdWx0
U3VmZml4ZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIGFkZEV4cGVjdGF0aW9uSXRlbShl
eHBlY3RhdGlvbnNDb250YWluZXJzLCBleHBlY3RhdGlvbnNDb250YWluZXIsIG51bGwsCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVz
c19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMt
ZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcwppbmRleCBhYzI2NGI0
MDdlOWYzZjM0OTc2OThkMzk0OTAyNjQxZTI1YzViM2MyLi4yZGE2MzQxYmI3OGFmYWJjNmRiYjc4
MGUxYTk4MmRlZWE1YjE0YTk2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzCisrKyBiL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2Fy
ZF91bml0dGVzdHMuanMKQEAgLTMyLDcgKzMyLDYgQEAgZnVuY3Rpb24gcmVzZXRHbG9iYWxzKCkK
ICAgICBhbGxUZXN0cyA9IG51bGw7CiAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtID0ge307
CiAgICAgZ19yZXN1bHRzQnlCdWlsZGVyID0ge307Ci0gICAgZ19idWlsZGVycyA9IHt9OwogICAg
IGdfYWxsRXhwZWN0YXRpb25zID0gbnVsbDsKICAgICBnX2FsbFRlc3RzVHJpZSA9IG51bGw7CiAg
ICAgZ19jdXJyZW50U3RhdGUgPSB7fTsKQEAgLTQ1LDI2ICs0NCwzNSBAQCBmdW5jdGlvbiByZXNl
dEdsb2JhbHMoKQogICAgIExPQURfQlVJTERCT1RfREFUQShbewogICAgICAgICBuYW1lOiAnQ2hy
b21pdW1XZWJraXQnLAogICAgICAgICB1cmw6ICdkdW1teXVybCcsIAotICAgICAgICB0ZXN0czog
eydsYXlvdXQtdGVzdHMnOiB7J2J1aWxkZXJzJzogWydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExp
bnV4IChkYmcpJywgJ1dlYktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4nXX19CisgICAgICAgIHRl
c3RzOiB7J2xheW91dC10ZXN0cyc6IHsnYnVpbGRlcnMnOiBbJ1dlYktpdCBMaW51eCcsICdXZWJL
aXQgTGludXggKGRiZyknLCAnV2ViS2l0IE1hYzEwLjcnLCAnV2ViS2l0IFdpbicsICdXZWJLaXQg
V2luIChkYmcpJ119fQogICAgIH0sCiAgICAgewogICAgICAgICBuYW1lOiAnd2Via2l0Lm9yZycs
CiAgICAgICAgIHVybDogJ2R1bW15dXJsJywKICAgICAgICAgdGVzdHM6IHsnbGF5b3V0LXRlc3Rz
JzogeydidWlsZGVycyc6IFsnQXBwbGUgU25vd0xlb3BhcmQgVGVzdHMnLCAnUXQgTGludXggVGVz
dHMnLCAnQ2hyb21pdW0gTWFjMTAuNyBUZXN0cycsICdHVEsgV2luJ119fQogICAgIH1dKTsKKyAK
ICAgICBmb3IgKHZhciBncm91cCBpbiBMQVlPVVRfVEVTVFNfQlVJTERFUl9HUk9VUFMpCiAgICAg
ICAgIExBWU9VVF9URVNUU19CVUlMREVSX0dST1VQU1tncm91cF0gPSBudWxsOwogfQogCi1mdW5j
dGlvbiBydW5FeHBlY3RhdGlvbnNUZXN0KGJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0aW9ucywgbW9k
aWZpZXJzKQorZnVuY3Rpb24gc3R1YlJlc3VsdHNCeUJ1aWxkZXIoZGF0YSkKIHsKLSAgICBnX2J1
aWxkZXJzW2J1aWxkZXJdID0gdHJ1ZTsKKyAgICBmb3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRC
dWlsZGVycygpKQorICAgIHsKKyAgICAgICAgZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdID0g
ZGF0YVtidWlsZGVyXSB8fCB7J3Rlc3RzJzogW119OworICAgIH07Cit9CiAKK2Z1bmN0aW9uIHJ1
bkV4cGVjdGF0aW9uc1Rlc3QoYnVpbGRlciwgdGVzdCwgZXhwZWN0YXRpb25zLCBtb2RpZmllcnMp
Cit7CiAgICAgLy8gUHV0IGluIHNvbWUgZHVtbXkgcmVzdWx0cy4gcHJvY2Vzc0V4cGVjdGF0aW9u
cyBleHBlY3RzIHRoZSB0ZXN0IHRvIGJlCiAgICAgLy8gdGhlcmUuCiAgICAgdmFyIHRlc3RzID0g
e307CiAgICAgdGVzdHNbdGVzdF0gPSB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1lcyc6
IFtbMTAwLCAwXV19OwotICAgIGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXSA9IHsndGVzdHMn
OiB0ZXN0c307CisgICAgdmFyIHJlc3VsdHMgPSB7fTsKKyAgICByZXN1bHRzW2J1aWxkZXJdID0g
eyd0ZXN0cyc6IHRlc3RzfTsKKyAgICBzdHViUmVzdWx0c0J5QnVpbGRlcihyZXN1bHRzKTsKIAog
ICAgIHByb2Nlc3NFeHBlY3RhdGlvbnMoKTsKICAgICB2YXIgcmVzdWx0c0ZvclRlc3QgPSBjcmVh
dGVSZXN1bHRzT2JqZWN0Rm9yVGVzdCh0ZXN0LCBidWlsZGVyKTsKQEAgLTk0LDYgKzEwMiw4IEBA
IHRlc3QoJ2ZsYXR0ZW5UcmllJywgMSwgZnVuY3Rpb24oKSB7CiAKIHRlc3QoJ3JlbGVhc2VGYWls
JywgMiwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7CisgICAgbG9hZEJ1aWxkZXJz
TGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlvdXQtdGVzdHMnKTsKKwogICAgIHZhciBi
dWlsZGVyID0gJ1dlYktpdCBXaW4nOwogICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAg
IHZhciBleHBlY3RhdGlvbnNBcnJheSA9IFsKQEAgLTEwNSw2ICsxMTUsNyBAQCB0ZXN0KCdyZWxl
YXNlRmFpbCcsIDIsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxlYXNlRmFpbERlYnVnQ3Jhc2hS
ZWxlYXNlQnVpbGRlcicsIDIsIGZ1bmN0aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAg
IGxvYWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7
CiAgICAgdmFyIGJ1aWxkZXIgPSAnV2ViS2l0IFdpbic7CiAgICAgdmFyIHRlc3QgPSAnZm9vLzEu
aHRtbCc7CiAgICAgdmFyIGV4cGVjdGF0aW9uc0FycmF5ID0gWwpAQCAtMTE4LDYgKzEyOSw3IEBA
IHRlc3QoJ3JlbGVhc2VGYWlsRGVidWdDcmFzaFJlbGVhc2VCdWlsZGVyJywgMiwgZnVuY3Rpb24o
KSB7CiAKIHRlc3QoJ3JlbGVhc2VGYWlsRGVidWdDcmFzaERlYnVnQnVpbGRlcicsIDIsIGZ1bmN0
aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xpc3QoJ0BUb1Qg
LSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFyIGJ1aWxkZXIgPSAnV2Vi
S2l0IFdpbiAoZGJnKSc7CiAgICAgdmFyIHRlc3QgPSAnZm9vLzEuaHRtbCc7CiAgICAgdmFyIGV4
cGVjdGF0aW9uc0FycmF5ID0gWwpAQCAtMTMxLDYgKzE0Myw3IEBAIHRlc3QoJ3JlbGVhc2VGYWls
RGVidWdDcmFzaERlYnVnQnVpbGRlcicsIDIsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdvdmVycmlk
ZUp1c3RCdWlsZFR5cGUnLCAxMiwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7Cisg
ICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlvdXQtdGVzdHMn
KTsKICAgICB2YXIgdGVzdCA9ICdiYXIvMS5odG1sJzsKICAgICBnX2V4cGVjdGF0aW9uc0J5UGxh
dGZvcm1bJ0NIUk9NSVVNJ10gPSBnZXRQYXJzZWRFeHBlY3RhdGlvbnMoJ2JhciBbIFdvbnRGaXgg
RmFpbHVyZSBQYXNzIFRpbWVvdXQgXVxuJyArCiAgICAgICAgICdbIE1hYyBdICcgKyB0ZXN0ICsg
JyBbIFdvbnRGaXggRmFpbHVyZSBdXG4nICsKQEAgLTIyNyw5ICsyNDAsMTAgQEAgdGVzdCgnZmls
dGVyQnVncycsNCwgZnVuY3Rpb24oKSB7CiAKIHRlc3QoJ2dldEV4cGVjdGF0aW9ucycsIDE2LCBm
dW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKLSAgICBnX2J1aWxkZXJzWydXZWJLaXQg
V2luJ10gPSB0cnVlOwotICAgIGdfcmVzdWx0c0J5QnVpbGRlciA9IHsKLSAgICAgICAgJ1dlYktp
dCBXaW4nOiB7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICds
YXlvdXQtdGVzdHMnKTsKKyAKKyAgICBzdHViUmVzdWx0c0J5QnVpbGRlcih7CisgICAgICAgICdX
ZWJLaXQgV2luJyA6IHsKICAgICAgICAgICAgICd0ZXN0cyc6IHsKICAgICAgICAgICAgICAgICAn
Zm9vL3Rlc3QxLmh0bWwnOiB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1lcyc6IFtbMTAw
LCAwXV19LAogICAgICAgICAgICAgICAgICdmb28vdGVzdDIuaHRtbCc6IHsncmVzdWx0cyc6IFtb
MTAwLCAnRiddXSwgJ3RpbWVzJzogW1sxMDAsIDBdXX0sCkBAIC0yMzcsNyArMjUxLDcgQEAgdGVz
dCgnZ2V0RXhwZWN0YXRpb25zJywgMTYsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICd0
ZXN0MS5odG1sJzogeydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1d
fQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQorICAgIH0pOwogCiAgICAgZ19leHBl
Y3RhdGlvbnNCeVBsYXRmb3JtWydDSFJPTUlVTSddID0gZ2V0UGFyc2VkRXhwZWN0YXRpb25zKCdC
dWcoMTIzKSBmb28gWyBGYWlsdXJlIFBhc3MgQ3Jhc2ggXVxuJyArCiAgICAgICAgICdCdWcoRm9v
KSBbIFJlbGVhc2UgXSBmb28vdGVzdDEuaHRtbCBbIEZhaWx1cmUgXVxuJyArCkBAIC0zMTYsNiAr
MzMwLDcgQEAgdGVzdCgnc3Vic3RyaW5nTGlzdCcsIDIsIGZ1bmN0aW9uKCkgewogfSk7CiAKIHRl
c3QoJ2h0bWxGb3JUZXN0c1dpdGhFeHBlY3RhdGlvbnNCdXROb0ZhaWx1cmVzJywgNCwgZnVuY3Rp
b24oKSB7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlv
dXQtdGVzdHMnKTsKICAgICB2YXIgYnVpbGRlciA9ICdXZWJLaXQgV2luJzsKICAgICBnX3BlckJ1
aWxkZXJXaXRoRXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJlc1tidWlsZGVyXSA9IFsncGFzc2luZy10
ZXN0MS5odG1sJywgJ3Bhc3NpbmctdGVzdDIuaHRtbCddOwogICAgIGdfcGVyQnVpbGRlclNraXBw
ZWRQYXRoc1tidWlsZGVyXSA9IFsnc2tpcHBlZC10ZXN0MS5odG1sJ107CkBAIC0zNjgsMTEgKzM4
MywxMyBAQCB0ZXN0KCdodG1sRm9yVGVzdFR5cGVTd2l0Y2hlckdyb3VwJywgNiwgZnVuY3Rpb24o
KSB7CiAKIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnMnLCAxLCBmdW5j
dGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9U
IC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIGVxdWFsKGh0bWxGb3JJbmRp
dmlkdWFsVGVzdE9uQWxsQnVpbGRlcnMoJ2Zvby9ub25leGlzdGFudC5odG1sJyksICc8ZGl2IGNs
YXNzPSJub3QtZm91bmQiPlRlc3Qgbm90IGZvdW5kLiBFaXRoZXIgaXQgZG9lcyBub3QgZXhpc3Qs
IGlzIHNraXBwZWQgb3IgcGFzc2VzIG9uIGFsbCBwbGF0Zm9ybXMuPC9kaXY+Jyk7CiB9KTsKIAog
dGVzdCgnaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhSZXN1bHRzTGlua3NO
b25leGlzdGFudCcsIDEsIGZ1bmN0aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxv
YWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAg
ICAgZXF1YWwoaHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhSZXN1bHRzTGlu
a3MoJ2Zvby9ub25leGlzdGFudC5odG1sJyksCiAgICAgICAgICc8ZGl2IGNsYXNzPSJub3QtZm91
bmQiPlRlc3Qgbm90IGZvdW5kLiBFaXRoZXIgaXQgZG9lcyBub3QgZXhpc3QsIGlzIHNraXBwZWQg
b3IgcGFzc2VzIG9uIGFsbCBwbGF0Zm9ybXMuPC9kaXY+JyArCiAgICAgICAgICc8ZGl2IGNsYXNz
PWV4cGVjdGF0aW9ucyB0ZXN0PWZvby9ub25leGlzdGFudC5odG1sPicgKwpAQCAtNDA1LDcgKzQy
Miw3IEBAIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0
c0xpbmtzJywgMSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICc8L3RhYmxlPicgKwogICAgICAgICAn
PGRpdj5UaGUgZm9sbG93aW5nIGJ1aWxkZXJzIGVpdGhlciBkb25cJ3QgcnVuIHRoaXMgdGVzdCAo
ZS5nLiBpdFwncyBza2lwcGVkKSBvciBhbGwgcnVucyBwYXNzZWQ6PC9kaXY+JyArCiAgICAgICAg
ICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlci1saXN0PicgKwotICAgICAgICAgICAgJzxkaXYg
Y2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBMaW51eCAoZGJnKTwvZGl2PjxkaXYgY2xhc3M9
c2tpcHBlZC1idWlsZGVyPldlYktpdCBNYWMxMC43PC9kaXY+PGRpdiBjbGFzcz1za2lwcGVkLWJ1
aWxkZXI+V2ViS2l0IFdpbjwvZGl2PicgKworICAgICAgICAgICAgJzxkaXYgY2xhc3M9c2tpcHBl
ZC1idWlsZGVyPldlYktpdCBMaW51eCAoZGJnKTwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWls
ZGVyPldlYktpdCBNYWMxMC43PC9kaXY+PGRpdiBjbGFzcz1za2lwcGVkLWJ1aWxkZXI+V2ViS2l0
IFdpbjwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW4gKGRiZyk8L2Rp
dj4nICsKICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1leHBlY3RhdGlv
bnMgdGVzdD1kdW1teXRlc3QuaHRtbD4nICsKICAgICAgICAgICAgICc8ZGl2PjxzcGFuIGNsYXNz
PWxpbmsgb25jbGljaz0ic2V0UXVlcnlQYXJhbWV0ZXIoXCdzaG93RXhwZWN0YXRpb25zXCcsIHRy
dWUpIj5TaG93IHJlc3VsdHM8L3NwYW4+IHwgJyArCkBAIC00NDksNiArNDY2LDcgQEAgdGVzdCgn
aHRtbEZvckluZGl2aWR1YWxUZXN0T25BbGxCdWlsZGVyc1dpdGhSZXN1bHRzTGlua3NXZWJraXRN
YXN0ZXInLCAxLCBmdW5jdGkKIAogdGVzdCgnaHRtbEZvckluZGl2aWR1YWxUZXN0cycsIDQsIGZ1
bmN0aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xpc3QoJ0BU
b1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFyIHRlc3QxID0gJ2Zv
by9ub25leGlzdGFudC5odG1sJzsKICAgICB2YXIgdGVzdDIgPSAnYmFyL25vbmV4aXN0YW50Lmh0
bWwnOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9h
cmRzL2xvYWRlci5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMv
bG9hZGVyLmpzCmluZGV4IGM3NDg5MDE2MTdiOGU0Nzg1N2NiNjhmNDNhNTVmNzA1MGU5OWVlODEu
LmE2ZDg1NDMwNjA4OTJlMjA0OGJhZGMzZTczMTAwNWFlNTMwMTMxMjIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvbG9hZGVyLmpzCisrKyBiL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvbG9hZGVyLmpzCkBAIC05MCw3
ICs5MCw3IEBAIGxvYWRlci5Mb2FkZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgcGFy
c2VQYXJhbWV0ZXJzKCk7CiAKLSAgICAgICAgZm9yICh2YXIgYnVpbGRlck5hbWUgaW4gZ19idWls
ZGVycykKKyAgICAgICAgZm9yICh2YXIgYnVpbGRlck5hbWUgaW4gY3VycmVudEJ1aWxkZXJzKCkp
CiAgICAgICAgICAgICB0aGlzLl9sb2FkUmVzdWx0c0ZpbGVGb3JCdWlsZGVyKGJ1aWxkZXJOYW1l
KTsKICAgICB9LAogICAgIF9sb2FkUmVzdWx0c0ZpbGVGb3JCdWlsZGVyOiBmdW5jdGlvbihidWls
ZGVyTmFtZSkKQEAgLTE2NywxMiArMTY3LDEyIEBAIGxvYWRlci5Mb2FkZXIucHJvdG90eXBlID0g
ewogCiAgICAgICAgIC8vIFJlbW92ZSB0aGlzIGJ1aWxkZXIgZnJvbSBidWlsZGVycywgc28gd2Ug
ZG9uJ3QgdHJ5IHRvIHVzZSB0aGUKICAgICAgICAgLy8gZGF0YSB0aGF0IGlzbid0IHRoZXJlLgot
ICAgICAgICBkZWxldGUgZ19idWlsZGVyc1tidWlsZGVyTmFtZV07CisgICAgICAgIGRlbGV0ZSBj
dXJyZW50QnVpbGRlcnMoKVtidWlsZGVyTmFtZV07CiAKICAgICAgICAgLy8gQ2hhbmdlIHRoZSBk
ZWZhdWx0IGJ1aWxkZXIgbmFtZSBpZiBpdCBoYXMgYmVlbiBkZWxldGVkLgogICAgICAgICBpZiAo
Z19kZWZhdWx0QnVpbGRlck5hbWUgPT0gYnVpbGRlck5hbWUpIHsKICAgICAgICAgICAgIGdfZGVm
YXVsdEJ1aWxkZXJOYW1lID0gbnVsbDsKLSAgICAgICAgICAgIGZvciAodmFyIGF2YWlsYWJsZUJ1
aWxkZXJOYW1lIGluIGdfYnVpbGRlcnMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGF2YWlsYWJs
ZUJ1aWxkZXJOYW1lIGluIGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgICAgICAgICAgZ19k
ZWZhdWx0QnVpbGRlck5hbWUgPSBhdmFpbGFibGVCdWlsZGVyTmFtZTsKICAgICAgICAgICAgICAg
ICBnX2RlZmF1bHREYXNoYm9hcmRTcGVjaWZpY1N0YXRlVmFsdWVzLmJ1aWxkZXIgPSBhdmFpbGFi
bGVCdWlsZGVyTmFtZTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE5NCw3ICsxOTQsNyBA
QCBsb2FkZXIuTG9hZGVyLnByb3RvdHlwZSA9IHsKICAgICB9LAogICAgIF9oYXZlUmVzdWx0c0Zp
bGVzTG9hZGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBidWlsZGVyIGlu
IGdfYnVpbGRlcnMpIHsKKyAgICAgICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRl
cnMoKSkgewogICAgICAgICAgICAgaWYgKCFnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanMg
Yi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVz
dHMuanMKaW5kZXggOGY2MGJiNjNlMTkwYzdhN2VjYTFjNzM4MTNmMjkyYjZiZDI3ZWM5MC4uNGMx
ZTc2Y2EwYmI5NmYwYzUyMGExMWQ1ODZmMzU4YmI5ODIzZDg5NyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzCisr
KyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvbG9hZGVyX3VuaXR0
ZXN0cy5qcwpAQCAtNTQsOSArNTQsMTEgQEAgdGVzdCgnbG9hZGluZyBzdGVwcycsIDEsIGZ1bmN0
aW9uKCkgewogICAgIH0KIH0pOwogCi10ZXN0KCdyZXN1bHRzIGZpbGVzIGxvYWRpbmcnLCA1LCBm
dW5jdGlvbigpIHsKKy8vIFRvdGFsIG51bWJlciBvZiBhc3NlcnRpb25zIGlzIDEgZm9yIHRoZSBk
ZWVwRXF1YWwgb2YgdGhlIGJ1aWxkZXIgbGlzdHMKKy8vIGFuZCB0aGVuIDIgcGVyIGJ1aWxkZXIg
KG9uZSBmb3Igb2ssIG9uZSBmb3IgZGVlcEVxdWFsIG9mIHRlc3RzKS4KK3Rlc3QoJ3Jlc3VsdHMg
ZmlsZXMgbG9hZGluZycsIDExLCBmdW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKLSAg
ICB2YXIgZXhwZWN0ZWRMb2FkZWRCdWlsZGVycyA9IFsiV2ViS2l0IExpbnV4IiwgIldlYktpdCBX
aW4iXTsKKyAgICB2YXIgZXhwZWN0ZWRMb2FkZWRCdWlsZGVycyA9ICBbJ1dlYktpdCBMaW51eCcs
ICdXZWJLaXQgTGludXggKGRiZyknLCAnV2ViS2l0IE1hYzEwLjcnLCAnV2ViS2l0IFdpbicsICdX
ZWJLaXQgV2luIChkYmcpJ107CiAgICAgdmFyIGxvYWRlZEJ1aWxkZXJzID0gW107CiAgICAgdmFy
IHJlc291cmNlTG9hZGVyID0gbmV3IGxvYWRlci5Mb2FkZXIoKTsKICAgICByZXNvdXJjZUxvYWRl
ci5fbG9hZE5leHQgPSBmdW5jdGlvbigpIHsKQEAgLTY5LDE2ICs3MSwxMyBAQCB0ZXN0KCdyZXN1
bHRzIGZpbGVzIGxvYWRpbmcnLCA1LCBmdW5jdGlvbigpIHsKIAogICAgIHZhciByZXF1ZXN0RnVu
Y3Rpb24gPSBsb2FkZXIucmVxdWVzdDsKICAgICBsb2FkZXIucmVxdWVzdCA9IGZ1bmN0aW9uKHVy
bCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBidWlsZGVy
TmFtZSA9IC9idWlsZGVyPShbXHcgXSspJi8uZXhlYyh1cmwpWzFdOworICAgICAgICB2YXIgYnVp
bGRlck5hbWUgPSAvYnVpbGRlcj0oW1x3ICgpLl0rKSYvLmV4ZWModXJsKVsxXTsKICAgICAgICAg
bG9hZGVkQnVpbGRlcnMucHVzaChidWlsZGVyTmFtZSk7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFj
ayh7cmVzcG9uc2VUZXh0OiAneyJ2ZXJzaW9uIjogNCwgIicgKyBidWlsZGVyTmFtZSArICciOiB7
InNlY29uZHNTaW5jZUVwb2NoIjogWycgKyBEYXRlLm5vdygpICsgJ10sICJ0ZXN0cyI6IHt9fX0n
fSk7CiAgICAgfQogCi0gICAgZ19idWlsZGVycyA9IHsiV2ViS2l0IExpbnV4IjogdHJ1ZSwgIldl
YktpdCBXaW4iOiB0cnVlfTsKLQotICAgIGJ1aWxkZXJzLm1hc3RlcnNbJ0Nocm9taXVtV2Via2l0
J10gPSB7J3Rlc3RzJzogeydsYXlvdXQtdGVzdHMnOiB7YnVpbGRlcnM6IFsiV2ViS2l0IExpbnV4
IiwgIldlYktpdCBXaW4iXX19fTsKICAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21p
dW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwotCisgCiAgICAgdHJ5IHsKICAgICAgICAgcmVzb3Vy
Y2VMb2FkZXIuX2xvYWRSZXN1bHRzRmlsZXMoKTsKICAgICB9IGZpbmFsbHkgewpAQCAtMTEyLDYg
KzExMSw4IEBAIHRlc3QoJ2V4cGVjdGF0aW9ucyBmaWxlcyBsb2FkaW5nJywgMSwgZnVuY3Rpb24o
KSB7CiAKIHRlc3QoJ3Jlc3VsdHMgZmlsZSBmYWlsaW5nIHRvIGxvYWQnLCAyLCBmdW5jdGlvbigp
IHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hy
b21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOworICAgIAogICAgIC8vIEZJWE1FOiBsb2FkZXIg
c2hvdWxkbid0IGRlcGVuZCBvbiBzdGF0ZSBkZWZpbmVkIGluIGRhc2hib2FyZF9iYXNlLmpzLgog
ICAgIGdfYnVpbGRlcnNUaGF0RmFpbGVkVG9Mb2FkID0gW107CiAKQEAgLTEyMiwxNCArMTIzLDE0
IEBAIHRlc3QoJ3Jlc3VsdHMgZmlsZSBmYWlsaW5nIHRvIGxvYWQnLCAyLCBmdW5jdGlvbigpIHsK
ICAgICB9CiAKICAgICB2YXIgYnVpbGRlcjEgPSAnYnVpbGRlcjEnOwotICAgIGdfYnVpbGRlcnNb
YnVpbGRlcjFdID0gdHJ1ZTsKKyAgICBjdXJyZW50QnVpbGRlcnMoKVtidWlsZGVyMV0gPSB0cnVl
OwogICAgIHJlc291cmNlTG9hZGVyLl9oYW5kbGVSZXN1bHRzRmlsZUxvYWRFcnJvcihidWlsZGVy
MSk7CiAKICAgICB2YXIgYnVpbGRlcjIgPSAnYnVpbGRlcjInOwotICAgIGdfYnVpbGRlcnNbYnVp
bGRlcjJdID0gdHJ1ZTsKKyAgICBjdXJyZW50QnVpbGRlcnMoKVtidWlsZGVyMl0gPSB0cnVlOwog
ICAgIHJlc291cmNlTG9hZGVyLl9oYW5kbGVSZXN1bHRzRmlsZUxvYWRFcnJvcihidWlsZGVyMik7
CiAKICAgICBkZWVwRXF1YWwoZ19idWlsZGVyc1RoYXRGYWlsZWRUb0xvYWQsIFtidWlsZGVyMSwg
YnVpbGRlcjJdKTsKICAgICBlcXVhbChyZXNvdXJjZUxvYWRDb3VudCwgMik7CiAKLX0pCit9KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179340</attachid>
            <date>2012-12-13 14:40:05 -0800</date>
            <delta_ts>2012-12-13 14:41:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104941-20121213143725.patch</filename>
            <type>text/plain</type>
            <size>22698</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE3NGY4NjA4MDdmODJmODZkYzBhMjA0NzhjZjc1NWIz
YTJiN2Y5MS4uYWEyZjUzMzhkYmE1ZDk4MDljMzgyZTI5NTE5Njg3NjBkZGY1ODIxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDEyLTEyLTEzICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBEYXNoYm9hcmQgY2xlYW51cDogcmVtb3ZlIHVzYWdlIG9mIGdsb2JhbCBnX2J1aWxk
ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0
OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGRhc2hib2FyZHMgdXNlIGEgbG90IG9mIGdsb2JhbCBzdGF0ZSwgd2hpY2ggbWFrZXMgaGFja2lu
ZyBvbiB0aGVtCisgICAgICAgIGNvbXBsaWNhdGVkLiBUaGlzIGNoYW5nZSByZW1vdmVzIHRoZSB1
c2Ugb2Ygb25lIHN1Y2ggZ2xvYmFsOiBnX2J1aWxkZXJzLgorICAgICAgICBJbiBtb3N0IGNhc2Vz
LCB3ZSBjYW4ganVzdCB1c2UgY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzIGluc3RlYWQs
CisgICAgICAgIHdoaWNoIGlzIG5vdyBjdXJyZW50QnVpbGRlcnMoKS4KKyAgICAgICAgU3VycHJp
c2luZ2x5LCB0aGUgbW9zdCBjaGFuZ2VzIHdlcmUgcmVxdWlyZWQgdG8gdGhlIHVuaXQgdGVzdHMs
IHNpbmNlCisgICAgICAgIHRoZXkgd2VyZSBldmVuIGJpZ2dlciBvZmZlbmRlcnMgb2YgYmFkIGh5
Z2llbmUsIHJlbHlpbmcgb24gZ2xvYmFsIHN0YXRlCisgICAgICAgIHNldCBieSBvdGhlciB0ZXN0
cywgcmFuZG9tbHkgY2xvYmJlcmluZyBnbG9iYWwgdmFyaWFibGVzIGluIHdheXMgdGhlCisgICAg
ICAgIHJlYWwgY29kZSBkb2Vzbid0LCBldGMuCisKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzOgorICAgICAgICAoQnVpbGRlckdyb3VwLnBy
b3RvdHlwZS5zZXR1cCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKC5zd2l0Y2gucmV0dXJuKToKKyAgICAg
ICAgKGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanM6CisgICAgICAgIChnZW5l
cmF0ZVBhZ2UpOgorICAgICAgICAoZ2V0QWxsVGVzdHNUcmllKToKKyAgICAgICAgKHByb2Nlc3NU
ZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKToKKyAgICAgICAgKHNob3dQb3B1cEZvckJ1aWxkKToKKyAg
ICAgICAgKGdlbmVyYXRlUGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSk6CisgICAgICAgIChsb2Fk
RXhwZWN0YXRpb25zTGF5b3V0VGVzdHMpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanM6CisgICAgICAg
IChyZXNldEdsb2JhbHMpOgorICAgICAgICAoc3R1YlJlc3VsdHNCeUJ1aWxkZXIpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9s
b2FkZXIuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanM6CisKIDIwMTItMTItMTMgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGEgbWlzLW5hbWVkIHZh
cmlhYmxlIGFmdGVyIHIxMzc2MjEuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXgg
ZmEwMzNhNTRkNGZkYWIyZWI1NjM4MzVmZjQzNjQxNGY3OTFiYTQxOC4uYTM4MDVhNTQ3MjgwNmMy
ZTljMDJhNDhmNjlkNTE4OGFhZjYwNDdkOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1sCisrKyBiL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRt
bApAQCAtNjgsNyArNjgsNyBAQCBpbWcgewogZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKIHsKICAg
ICB2YXIgaHRtbCA9IGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKHRydWUpICsgJzxicj4nOwotICAg
IGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykKKyAgICBmb3IgKHZhciBidWlsZGVyIGlu
IGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICBodG1sICs9IGh0bWxGb3JCdWlsZGVyKGJ1aWxk
ZXIpOwogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gaHRtbDsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMgYi9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzCmluZGV4
IDk3ZGZlMjcyOTdhMjVhMGRkMmNlYjg0NDRiZDVmNWE5NjM0NGY5NjkuLjMyNzMxZWExNjhiNWIz
ZDIyNGEwMmI3YmZjYzY1NzY4Nzg4NjlhYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwpAQCAtMTI3LDcgKzEyNyw2IEBA
IEJ1aWxkZXJHcm91cC5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpCiAgICAgLy8gRklYTUU6
IGluc3RlYWQgb2YgY29weWluZyB0aGVzZSB0byBnbG9iYWxzLCBpdCB3b3VsZCBiZSBiZXR0ZXIg
aWYKICAgICAvLyB0aGUgcmVzdCBvZiB0aGUgY29kZSByZWFkIHRoaW5ncyBmcm9tIHRoZSBCdWls
ZGVyR3JvdXAgaW5zdGFuY2UgZGlyZWN0bHkKICAgICBnX2RlZmF1bHRCdWlsZGVyTmFtZSA9IHRo
aXMuX2RlZmF1bHRCdWlsZGVyKCk7Ci0gICAgZ19idWlsZGVycyA9IHRoaXMuYnVpbGRlcnM7CiB9
OwogCiBCdWlsZGVyR3JvdXAucHJvdG90eXBlLl9kZWZhdWx0QnVpbGRlciA9IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFz
aGJvYXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2Rhc2hib2FyZF9iYXNlLmpzCmluZGV4IDZlZWUxZTdiZGVlNTM4MWQyMTkwOGQ3MmQ3MTMyZDQ1
MTU4MTg3YjUuLmU1MTc2OGE4YTI2MjI1ZGQ1OGMxOGEzYjIzNWIyNzIyMmNmNzFhNzggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJk
X2Jhc2UuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9k
YXNoYm9hcmRfYmFzZS5qcwpAQCAtMTg4LDcgKzE4OCw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlk
SGFzaFBhcmFtZXRlcldyYXBwZXIoa2V5LCB2YWx1ZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgcHJvYmFibHkgYmUgc3RvcmVkIG9uIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSBsaWtlIGV2ZXJ5
dGhpbmcgZWxzZSBpbiB0aGlzIGZ1bmN0aW9uLgogICAgIGNhc2UgJ2J1aWxkZXInOgogICAgICAg
ICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdmFsdWUgaW4gZ19idWlsZGVyczsgfSk7CisgICAgICAg
ICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGN1cnJlbnRCdWlsZGVycygpOyB9KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlICd1c2VUZXN0RGF0YSc6CkBAIC00MTYs
MTIgKzQxNiwxNyBAQCBmdW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwKCkKICAgICByZXR1cm4g
Y3VycmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KClbZ19jcm9zc0Rhc2hib2FyZFN0YXRlLmdyb3Vw
XQogfQogCitmdW5jdGlvbiBjdXJyZW50QnVpbGRlcnMoKQoreworICAgIHJldHVybiBjdXJyZW50
QnVpbGRlckdyb3VwKCkuYnVpbGRlcnM7Cit9CisKIGZ1bmN0aW9uIGlzVGlwT2ZUcmVlV2ViS2l0
QnVpbGRlcigpCiB7CiAgICAgcmV0dXJuIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5pc1RvVFdlYktp
dDsKIH0KIAotdmFyIGdfZGVmYXVsdEJ1aWxkZXJOYW1lLCBnX2J1aWxkZXJzOwordmFyIGdfZGVm
YXVsdEJ1aWxkZXJOYW1lOwogZnVuY3Rpb24gaW5pdEJ1aWxkZXJzKCkKIHsKICAgICBjdXJyZW50
QnVpbGRlckdyb3VwKCkuc2V0dXAoKTsKQEAgLTY5NCw3ICs2OTksNyBAQCBmdW5jdGlvbiBodG1s
Rm9yVGVzdFR5cGVTd2l0Y2hlcihvcHRfbm9CdWlsZGVyTWVudSwgb3B0X2V4dHJhSHRtbCwgb3B0
X2luY2x1ZGVObwogICAgIGh0bWwgKz0gc2VsZWN0SFRNTCgnVGVzdCB0eXBlJywgJ3Rlc3RUeXBl
JywgVEVTVF9UWVBFUyk7CiAKICAgICBpZiAoIW9wdF9ub0J1aWxkZXJNZW51KSB7Ci0gICAgICAg
IHZhciBidWlsZGVyc0Zvck1lbnUgPSBPYmplY3Qua2V5cyhnX2J1aWxkZXJzKTsKKyAgICAgICAg
dmFyIGJ1aWxkZXJzRm9yTWVudSA9IE9iamVjdC5rZXlzKGN1cnJlbnRCdWlsZGVycygpKTsKICAg
ICAgICAgaWYgKG9wdF9pbmNsdWRlTm9uZUJ1aWxkZXIpCiAgICAgICAgICAgICBidWlsZGVyc0Zv
ck1lbnUudW5zaGlmdCgnLS0tLS0tLS0tLS0tLS0nKTsKICAgICAgICAgaHRtbCArPSBzZWxlY3RI
VE1MKCdCdWlsZGVyJywgJ2J1aWxkZXInLCBidWlsZGVyc0Zvck1lbnUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJv
YXJkLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5l
c3NfZGFzaGJvYXJkLmpzCmluZGV4IGQ0NGUzZTU4ZTY0ZTJhOTMwZGVlNTE4NjhlNWY5Mzc2YWRj
OWZlMWIuLmMzNzcxMWIzY2Q2Njk4ZDczZjg3NGMwNjlmZDM3ZDVhMTk2NmY2OTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rh
c2hib2FyZC5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKQEAgLTE1NSw3ICsxNTUsNyBAQCBmdW5jdGlvbiBnZW5l
cmF0ZVBhZ2UoKQogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdGVQYWdlRm9yQnVpbGRlcihnX2N1
cnJlbnRTdGF0ZS5idWlsZGVyKTsKIAotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVy
cykKKyAgICBmb3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICBw
cm9jZXNzVGVzdFJlc3VsdHNGb3JCdWlsZGVyQXN5bmMoYnVpbGRlcik7CiAKICAgICBwb3N0SGVp
Z2h0Q2hhbmdlZE1lc3NhZ2UoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBmdW5jdGlvbiBoYW5kbGVW
YWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAgICBjYXNlICdidWlsZGVyJzoKICAgICAg
ICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCiAgICAgICAg
ICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gZ19idWls
ZGVyczsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gY3VycmVudEJ1aWxkZXJzKCk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQ3OSw3ICs0Nzks
NyBAQCB2YXIgZ19hbGxUZXN0c1RyaWU7CiBmdW5jdGlvbiBnZXRBbGxUZXN0c1RyaWUoKQogewog
ICAgIGlmICghZ19hbGxUZXN0c1RyaWUpCi0gICAgICAgIGdfYWxsVGVzdHNUcmllID0gbmV3IFRl
c3RUcmllKGdfYnVpbGRlcnMsIGdfcmVzdWx0c0J5QnVpbGRlcik7CisgICAgICAgIGdfYWxsVGVz
dHNUcmllID0gbmV3IFRlc3RUcmllKGN1cnJlbnRCdWlsZGVycygpLCBnX3Jlc3VsdHNCeUJ1aWxk
ZXIpOwogCiAgICAgcmV0dXJuIGdfYWxsVGVzdHNUcmllOwogfQpAQCAtNjEwLDcgKzYxMCw3IEBA
IGZ1bmN0aW9uIGFsbFRlc3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1aWxkVHlwZShwbGF0Zm9ybSwg
YnVpbGRUeXBlKQogewogICAgIGlmICghZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVb
cGxhdGZvcm1dW2J1aWxkVHlwZV0pIHsKICAgICAgICAgdmFyIHRlc3RzID0ge307Ci0gICAgICAg
IGZvciAodmFyIHRoaXNCdWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICAgICAgZm9yICh2YXIg
dGhpc0J1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgICAgIHZhciB0aGlz
QnVpbGRlckJ1aWxkSW5mbyA9IHBsYXRmb3JtQW5kQnVpbGRUeXBlKHRoaXNCdWlsZGVyKTsKICAg
ICAgICAgICAgIGlmICh0aGlzQnVpbGRlckJ1aWxkSW5mby5idWlsZFR5cGUgPT0gYnVpbGRUeXBl
ICYmIHRoaXNCdWlsZGVyQnVpbGRJbmZvLnBsYXRmb3JtID09IHBsYXRmb3JtKSB7CiAgICAgICAg
ICAgICAgICAgYWRkVGVzdHNGb3JCdWlsZGVyKHRoaXNCdWlsZGVyLCB0ZXN0cyk7CkBAIC05MTks
NyArOTE5LDcgQEAgZnVuY3Rpb24gcHJvY2Vzc1Rlc3RSZXN1bHRzRm9yQnVpbGRlckFzeW5jKGJ1
aWxkZXIpCiAKIGZ1bmN0aW9uIHByb2Nlc3NUZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKCkKIHsKLSAg
ICBmb3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpCisgICAgZm9yICh2YXIgYnVpbGRlciBp
biBjdXJyZW50QnVpbGRlcnMoKSkKICAgICAgICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQnVpbGRlcihi
dWlsZGVyKTsKIH0KIApAQCAtMTIzNiw3ICsxMjM2LDcgQEAgZnVuY3Rpb24gc2hvd1BvcHVwRm9y
QnVpbGQoZSwgYnVpbGRlciwgaW5kZXgsIG9wdF90ZXN0TmFtZSkKIAogICAgICAgICB2YXIgY2hy
b21lUmV2aXNpb24gPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0uY2hyb21lUmV2aXNpb25b
aW5kZXhdOwogICAgICAgICBpZiAoY2hyb21lUmV2aXNpb24gJiYgaXNMYXlvdXRUZXN0UmVzdWx0
cygpKSB7Ci0gICAgICAgICAgICBodG1sICs9ICc8bGk+PGEgaHJlZj0iJyArIFRFU1RfUkVTVUxU
U19CQVNFX1BBVEggKyBnX2J1aWxkZXJzW2J1aWxkZXJdICsKKyAgICAgICAgICAgIGh0bWwgKz0g
JzxsaT48YSBocmVmPSInICsgVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCArIGN1cnJlbnRCdWlsZGVy
cygpW2J1aWxkZXJdICsKICAgICAgICAgICAgICAgICAnLycgKyBjaHJvbWVSZXZpc2lvbiArICcv
bGF5b3V0LXRlc3QtcmVzdWx0cy56aXAiPmxheW91dC10ZXN0LXJlc3VsdHMuemlwPC9hPjwvbGk+
JzsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MjYsNyArMTYyNiw3IEBAIGZ1bmN0aW9uIGdlbmVy
YXRlUGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBm
b3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICBmb3IgKHZhciBidWlsZGVyIGlu
IGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIHZhciB0ZXN0cyA9IGdfcGVyQnVpbGRlcldp
dGhFeHBlY3RhdGlvbnNCdXROb0ZhaWx1cmVzW2J1aWxkZXJdCiAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIC8vIEFueXRoaW5nIGV4
dHJhIGluIHRoaXMgY2FzZSBpcyB3aGF0IGlzIGxpc3RlZCBpbiBleHBlY3RhdGlvbnMKQEAgLTE3
OTMsNyArMTc5Myw3IEBAIGZ1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRl
cnModGVzdCkKICAgICB9CiAKICAgICB2YXIgc2tpcHBlZEJ1aWxkZXJzID0gW10KLSAgICBmb3Ig
KGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzKSB7CisgICAgZm9yIChi
dWlsZGVyIGluIGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIGlmIChzaG93bkJ1aWxkZXJz
LmluZGV4T2YoYnVpbGRlcikgPT0gLTEpCiAgICAgICAgICAgICBza2lwcGVkQnVpbGRlcnMucHVz
aChidWlsZGVyKTsKICAgICB9CkBAIC0yMjU1LDcgKzIyNTUsNyBAQCBmdW5jdGlvbiBsb2FkRXhw
ZWN0YXRpb25zTGF5b3V0VGVzdHModGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogICAgIHZh
ciByZXZpc2lvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAg
IHJldmlzaW9uQ29udGFpbmVyLnRleHRDb250ZW50ID0gIlNob3dpbmcgcmVzdWx0cyBmb3I6ICIK
ICAgICBleHBlY3RhdGlvbnNDb250YWluZXIuYXBwZW5kQ2hpbGQocmV2aXNpb25Db250YWluZXIp
OwotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykgeworICAgIGZvciAodmFyIGJ1
aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgaWYgKGJ1aWxkZXJNYXN0ZXIo
YnVpbGRlcikubmFtZSA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIpIHsKICAgICAgICAgICAgIHZh
ciBsYXRlc3RSZXZpc2lvbiA9IGdfY3VycmVudFN0YXRlLnJldmlzaW9uIHx8IGdfcmVzdWx0c0J5
QnVpbGRlcltidWlsZGVyXS53ZWJraXRSZXZpc2lvblswXTsKICAgICAgICAgICAgIHZhciBidWls
ZEluZm8gPSBidWlsZEluZm9Gb3JSZXZpc2lvbihidWlsZGVyLCBsYXRlc3RSZXZpc2lvbik7CkBA
IC0yMjcyLDcgKzIyNzIsNyBAQCBmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zTGF5b3V0VGVzdHMo
dGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogICAgIHZhciB0ZXN0V2l0aG91dFN1ZmZpeCA9
IHRlc3Quc3Vic3RyaW5nKDAsIHRlc3QubGFzdEluZGV4T2YoJy4nKSk7CiAgICAgdmFyIGFjdHVh
bFJlc3VsdFN1ZmZpeGVzID0gWyctYWN0dWFsLnR4dCcsICctYWN0dWFsLnBuZycsICctY3Jhc2gt
bG9nLnR4dCcsICctZGlmZi50eHQnLCAnLXdkaWZmLmh0bWwnLCAnLWRpZmYucG5nJ107CiAKLSAg
ICBmb3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICBmb3IgKHZhciBidWlsZGVy
IGluIGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIHZhciBhY3R1YWxSZXN1bHRzQmFzZTsK
ICAgICAgICAgaWYgKGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcikubmFtZSA9PSBXRUJLSVRfQlVJTERF
Ul9NQVNURVIpIHsKICAgICAgICAgICAgIHZhciBsYXRlc3RSZXZpc2lvbiA9IGdfY3VycmVudFN0
YXRlLnJldmlzaW9uIHx8IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS53ZWJraXRSZXZpc2lv
blswXTsKQEAgLTIyODAsNyArMjI4MCw3IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlv
dXRUZXN0cyh0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpCiAgICAgICAgICAgICBhY3R1YWxS
ZXN1bHRzQmFzZSA9ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzLycgKyBidWlsZGVy
ICsKICAgICAgICAgICAgICAgICAnL3InICsgYnVpbGRJbmZvLnJldmlzaW9uU3RhcnQgKyAnICgn
ICsgYnVpbGRJbmZvLmJ1aWxkTnVtYmVyICsgJykvJzsKICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBhY3R1YWxSZXN1bHRzQmFzZSA9IFRFU1RfUkVTVUxUU19CQVNFX1BBVEggKyBnX2J1aWxk
ZXJzW2J1aWxkZXJdICsgJy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvJzsKKyAgICAgICAg
ICAgIGFjdHVhbFJlc3VsdHNCYXNlID0gVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCArIGN1cnJlbnRC
dWlsZGVycygpW2J1aWxkZXJdICsgJy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvJzsKIAog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbFJlc3VsdFN1ZmZpeGVzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgICAgICBhZGRFeHBlY3RhdGlvbkl0ZW0oZXhwZWN0YXRpb25zQ29udGFp
bmVycywgZXhwZWN0YXRpb25zQ29udGFpbmVyLCBudWxsLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0
ZXN0cy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMKaW5kZXggYWMyNjRiNDA3ZTlmM2YzNDk3Njk4ZDM5
NDkwMjY0MWUyNWM1YjNjMi4uMmRhNjM0MWJiNzhhZmFiYzZkYmI3ODBlMWE5ODJkZWVhNWIxNGE5
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9m
bGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzCkBA
IC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9uIHJlc2V0R2xvYmFscygpCiAgICAgYWxsVGVzdHMgPSBu
dWxsOwogICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybSA9IHt9OwogICAgIGdfcmVzdWx0c0J5
QnVpbGRlciA9IHt9OwotICAgIGdfYnVpbGRlcnMgPSB7fTsKICAgICBnX2FsbEV4cGVjdGF0aW9u
cyA9IG51bGw7CiAgICAgZ19hbGxUZXN0c1RyaWUgPSBudWxsOwogICAgIGdfY3VycmVudFN0YXRl
ID0ge307CkBAIC00NSwyNiArNDQsMzUgQEAgZnVuY3Rpb24gcmVzZXRHbG9iYWxzKCkKICAgICBM
T0FEX0JVSUxEQk9UX0RBVEEoW3sKICAgICAgICAgbmFtZTogJ0Nocm9taXVtV2Via2l0JywKICAg
ICAgICAgdXJsOiAnZHVtbXl1cmwnLCAKLSAgICAgICAgdGVzdHM6IHsnbGF5b3V0LXRlc3RzJzog
eydidWlsZGVycyc6IFsnV2ViS2l0IExpbnV4JywgJ1dlYktpdCBMaW51eCAoZGJnKScsICdXZWJL
aXQgTWFjMTAuNycsICdXZWJLaXQgV2luJ119fQorICAgICAgICB0ZXN0czogeydsYXlvdXQtdGVz
dHMnOiB7J2J1aWxkZXJzJzogWydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExpbnV4IChkYmcpJywg
J1dlYktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4nLCAnV2ViS2l0IFdpbiAoZGJnKSddfX0KICAg
ICB9LAogICAgIHsKICAgICAgICAgbmFtZTogJ3dlYmtpdC5vcmcnLAogICAgICAgICB1cmw6ICdk
dW1teXVybCcsCiAgICAgICAgIHRlc3RzOiB7J2xheW91dC10ZXN0cyc6IHsnYnVpbGRlcnMnOiBb
J0FwcGxlIFNub3dMZW9wYXJkIFRlc3RzJywgJ1F0IExpbnV4IFRlc3RzJywgJ0Nocm9taXVtIE1h
YzEwLjcgVGVzdHMnLCAnR1RLIFdpbiddfX0KICAgICB9XSk7CisgCiAgICAgZm9yICh2YXIgZ3Jv
dXAgaW4gTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTKQogICAgICAgICBMQVlPVVRfVEVTVFNf
QlVJTERFUl9HUk9VUFNbZ3JvdXBdID0gbnVsbDsKIH0KIAotZnVuY3Rpb24gcnVuRXhwZWN0YXRp
b25zVGVzdChidWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKK2Z1bmN0aW9u
IHN0dWJSZXN1bHRzQnlCdWlsZGVyKGRhdGEpCiB7Ci0gICAgZ19idWlsZGVyc1tidWlsZGVyXSA9
IHRydWU7CisgICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlcnMoKSkKKyAgICB7
CisgICAgICAgIGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXSA9IGRhdGFbYnVpbGRlcl0gfHwg
eyd0ZXN0cyc6IFtdfTsKKyAgICB9OworfQogCitmdW5jdGlvbiBydW5FeHBlY3RhdGlvbnNUZXN0
KGJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKQorewogICAgIC8vIFB1dCBp
biBzb21lIGR1bW15IHJlc3VsdHMuIHByb2Nlc3NFeHBlY3RhdGlvbnMgZXhwZWN0cyB0aGUgdGVz
dCB0byBiZQogICAgIC8vIHRoZXJlLgogICAgIHZhciB0ZXN0cyA9IHt9OwogICAgIHRlc3RzW3Rl
c3RdID0geydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfTsKLSAg
ICBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVzdHN9OworICAgIHZh
ciByZXN1bHRzID0ge307CisgICAgcmVzdWx0c1tidWlsZGVyXSA9IHsndGVzdHMnOiB0ZXN0c307
CisgICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIocmVzdWx0cyk7CiAKICAgICBwcm9jZXNzRXhwZWN0
YXRpb25zKCk7CiAgICAgdmFyIHJlc3VsdHNGb3JUZXN0ID0gY3JlYXRlUmVzdWx0c09iamVjdEZv
clRlc3QodGVzdCwgYnVpbGRlcik7CkBAIC05NCw2ICsxMDIsOCBAQCB0ZXN0KCdmbGF0dGVuVHJp
ZScsIDEsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxlYXNlRmFpbCcsIDIsIGZ1bmN0aW9uKCkg
ewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJv
bWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CisKICAgICB2YXIgYnVpbGRlciA9ICdXZWJLaXQg
V2luJzsKICAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKICAgICB2YXIgZXhwZWN0YXRpb25z
QXJyYXkgPSBbCkBAIC0xMDUsNiArMTE1LDcgQEAgdGVzdCgncmVsZWFzZUZhaWwnLCAyLCBmdW5j
dGlvbigpIHsKIAogdGVzdCgncmVsZWFzZUZhaWxEZWJ1Z0NyYXNoUmVsZWFzZUJ1aWxkZXInLCAy
LCBmdW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0
KCdAVG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVy
ID0gJ1dlYktpdCBXaW4nOwogICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBl
eHBlY3RhdGlvbnNBcnJheSA9IFsKQEAgLTExOCw2ICsxMjksNyBAQCB0ZXN0KCdyZWxlYXNlRmFp
bERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcicsIDIsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxl
YXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1aWxkZXInLCAyLCBmdW5jdGlvbigpIHsKICAgICByZXNl
dEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3JnJywg
J2xheW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVyID0gJ1dlYktpdCBXaW4gKGRiZyknOwog
ICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9
IFsKQEAgLTEzMSw2ICsxNDMsNyBAQCB0ZXN0KCdyZWxlYXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1
aWxkZXInLCAyLCBmdW5jdGlvbigpIHsKIAogdGVzdCgnb3ZlcnJpZGVKdXN0QnVpbGRUeXBlJywg
MTIsIGZ1bmN0aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xp
c3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFyIHRlc3Qg
PSAnYmFyLzEuaHRtbCc7CiAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtWydDSFJPTUlVTSdd
ID0gZ2V0UGFyc2VkRXhwZWN0YXRpb25zKCdiYXIgWyBXb250Rml4IEZhaWx1cmUgUGFzcyBUaW1l
b3V0IF1cbicgKwogICAgICAgICAnWyBNYWMgXSAnICsgdGVzdCArICcgWyBXb250Rml4IEZhaWx1
cmUgXVxuJyArCkBAIC0yMjcsOSArMjQwLDEwIEBAIHRlc3QoJ2ZpbHRlckJ1Z3MnLDQsIGZ1bmN0
aW9uKCkgewogCiB0ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxNiwgZnVuY3Rpb24oKSB7CiAgICAg
cmVzZXRHbG9iYWxzKCk7Ci0gICAgZ19idWlsZGVyc1snV2ViS2l0IFdpbiddID0gdHJ1ZTsKLSAg
ICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdXZWJLaXQgV2luJzogeworICAgIGxv
YWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7Cisg
CisgICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIoeworICAgICAgICAnV2ViS2l0IFdpbicgOiB7CiAg
ICAgICAgICAgICAndGVzdHMnOiB7CiAgICAgICAgICAgICAgICAgJ2Zvby90ZXN0MS5odG1sJzog
eydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfSwKICAgICAgICAg
ICAgICAgICAnZm9vL3Rlc3QyLmh0bWwnOiB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1l
cyc6IFtbMTAwLCAwXV19LApAQCAtMjM3LDcgKzI1MSw3IEBAIHRlc3QoJ2dldEV4cGVjdGF0aW9u
cycsIDE2LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAndGVzdDEuaHRtbCc6IHsncmVz
dWx0cyc6IFtbMTAwLCAnRiddXSwgJ3RpbWVzJzogW1sxMDAsIDBdXX0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KKyAgICB9KTsKIAogICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9y
bVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDEyMykgZm9vIFsgRmFp
bHVyZSBQYXNzIENyYXNoIF1cbicgKwogICAgICAgICAnQnVnKEZvbykgWyBSZWxlYXNlIF0gZm9v
L3Rlc3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwpAQCAtMzE2LDYgKzMzMCw3IEBAIHRlc3QoJ3N1
YnN0cmluZ0xpc3QnLCAyLCBmdW5jdGlvbigpIHsKIH0pOwogCiB0ZXN0KCdodG1sRm9yVGVzdHNX
aXRoRXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJlcycsIDQsIGZ1bmN0aW9uKCkgeworICAgIGxvYWRC
dWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAg
dmFyIGJ1aWxkZXIgPSAnV2ViS2l0IFdpbic7CiAgICAgZ19wZXJCdWlsZGVyV2l0aEV4cGVjdGF0
aW9uc0J1dE5vRmFpbHVyZXNbYnVpbGRlcl0gPSBbJ3Bhc3NpbmctdGVzdDEuaHRtbCcsICdwYXNz
aW5nLXRlc3QyLmh0bWwnXTsKICAgICBnX3BlckJ1aWxkZXJTa2lwcGVkUGF0aHNbYnVpbGRlcl0g
PSBbJ3NraXBwZWQtdGVzdDEuaHRtbCddOwpAQCAtMzY4LDExICszODMsMTMgQEAgdGVzdCgnaHRt
bEZvclRlc3RUeXBlU3dpdGNoZXJHcm91cCcsIDYsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdodG1s
Rm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzJywgMSwgZnVuY3Rpb24oKSB7CiAgICAgcmVz
ZXRHbG9iYWxzKCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycs
ICdsYXlvdXQtdGVzdHMnKTsKICAgICBlcXVhbChodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1
aWxkZXJzKCdmb28vbm9uZXhpc3RhbnQuaHRtbCcpLCAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5U
ZXN0IG5vdCBmb3VuZC4gRWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBh
c3NlcyBvbiBhbGwgcGxhdGZvcm1zLjwvZGl2PicpOwogfSk7CiAKIHRlc3QoJ2h0bWxGb3JJbmRp
dmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzTm9uZXhpc3RhbnQnLCAxLCBm
dW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdA
VG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIGVxdWFsKGh0bWxGb3JJ
bmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzKCdmb28vbm9uZXhpc3Rh
bnQuaHRtbCcpLAogICAgICAgICAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5UZXN0IG5vdCBmb3Vu
ZC4gRWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBhc3NlcyBvbiBhbGwg
cGxhdGZvcm1zLjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVz
dD1mb28vbm9uZXhpc3RhbnQuaHRtbD4nICsKQEAgLTQwNSw3ICs0MjIsNyBAQCB0ZXN0KCdodG1s
Rm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzV2l0aFJlc3VsdHNMaW5rcycsIDEsIGZ1bmN0
aW9uKCkgewogICAgICAgICAnPC90YWJsZT4nICsKICAgICAgICAgJzxkaXY+VGhlIGZvbGxvd2lu
ZyBidWlsZGVycyBlaXRoZXIgZG9uXCd0IHJ1biB0aGlzIHRlc3QgKGUuZy4gaXRcJ3Mgc2tpcHBl
ZCkgb3IgYWxsIHJ1bnMgcGFzc2VkOjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1za2lw
cGVkLWJ1aWxkZXItbGlzdD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVp
bGRlcj5XZWJLaXQgTGludXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5X
ZWJLaXQgTWFjMTAuNzwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48
L2Rpdj4nICsKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQg
TGludXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgTWFjMTAu
NzwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48L2Rpdj48ZGl2IGNs
YXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgV2luIChkYmcpPC9kaXY+JyArCiAgICAgICAgICc8
L2Rpdj4nICsKICAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9ZHVtbXl0ZXN0
Lmh0bWw+JyArCiAgICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNl
dFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1bHRz
PC9zcGFuPiB8ICcgKwpAQCAtNDQ5LDYgKzQ2Niw3IEBAIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFs
VGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzV2Via2l0TWFzdGVyJywgMSwgZnVuY3Rp
CiAKIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFsVGVzdHMnLCA0LCBmdW5jdGlvbigpIHsKICAgICBy
ZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3Jn
JywgJ2xheW91dC10ZXN0cycpOwogICAgIHZhciB0ZXN0MSA9ICdmb28vbm9uZXhpc3RhbnQuaHRt
bCc7CiAgICAgdmFyIHRlc3QyID0gJ2Jhci9ub25leGlzdGFudC5odG1sJzsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXIuanMgYi9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwppbmRleCBj
NzQ4OTAxNjE3YjhlNDc4NTdjYjY4ZjQzYTU1ZjcwNTBlOTllZTgxLi5hNmQ4NTQzMDYwODkyZTIw
NDhiYWRjM2U3MzEwMDVhZTUzMDEzMTIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwpAQCAtOTAsNyArOTAsNyBAQCBsb2FkZXIu
TG9hZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHBhcnNlUGFyYW1ldGVycygpOwog
Ci0gICAgICAgIGZvciAodmFyIGJ1aWxkZXJOYW1lIGluIGdfYnVpbGRlcnMpCisgICAgICAgIGZv
ciAodmFyIGJ1aWxkZXJOYW1lIGluIGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICAgICAgdGhp
cy5fbG9hZFJlc3VsdHNGaWxlRm9yQnVpbGRlcihidWlsZGVyTmFtZSk7CiAgICAgfSwKICAgICBf
bG9hZFJlc3VsdHNGaWxlRm9yQnVpbGRlcjogZnVuY3Rpb24oYnVpbGRlck5hbWUpCkBAIC0xNjcs
MTIgKzE2NywxMiBAQCBsb2FkZXIuTG9hZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBS
ZW1vdmUgdGhpcyBidWlsZGVyIGZyb20gYnVpbGRlcnMsIHNvIHdlIGRvbid0IHRyeSB0byB1c2Ug
dGhlCiAgICAgICAgIC8vIGRhdGEgdGhhdCBpc24ndCB0aGVyZS4KLSAgICAgICAgZGVsZXRlIGdf
YnVpbGRlcnNbYnVpbGRlck5hbWVdOworICAgICAgICBkZWxldGUgY3VycmVudEJ1aWxkZXJzKClb
YnVpbGRlck5hbWVdOwogCiAgICAgICAgIC8vIENoYW5nZSB0aGUgZGVmYXVsdCBidWlsZGVyIG5h
bWUgaWYgaXQgaGFzIGJlZW4gZGVsZXRlZC4KICAgICAgICAgaWYgKGdfZGVmYXVsdEJ1aWxkZXJO
YW1lID09IGJ1aWxkZXJOYW1lKSB7CiAgICAgICAgICAgICBnX2RlZmF1bHRCdWlsZGVyTmFtZSA9
IG51bGw7Ci0gICAgICAgICAgICBmb3IgKHZhciBhdmFpbGFibGVCdWlsZGVyTmFtZSBpbiBnX2J1
aWxkZXJzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBhdmFpbGFibGVCdWlsZGVyTmFtZSBpbiBj
dXJyZW50QnVpbGRlcnMoKSkgewogICAgICAgICAgICAgICAgIGdfZGVmYXVsdEJ1aWxkZXJOYW1l
ID0gYXZhaWxhYmxlQnVpbGRlck5hbWU7CiAgICAgICAgICAgICAgICAgZ19kZWZhdWx0RGFzaGJv
YXJkU3BlY2lmaWNTdGF0ZVZhbHVlcy5idWlsZGVyID0gYXZhaWxhYmxlQnVpbGRlck5hbWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTQsNyArMTk0LDcgQEAgbG9hZGVyLkxvYWRlci5w
cm90b3R5cGUgPSB7CiAgICAgfSwKICAgICBfaGF2ZVJlc3VsdHNGaWxlc0xvYWRlZDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKSB7Cisg
ICAgICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAg
ICAgIGlmICghZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzIGIvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzCmluZGV4IDhmNjBi
YjYzZTE5MGM3YTdlY2ExYzczODEzZjI5MmI2YmQyN2VjOTAuLjRjMWU3NmNhMGJiOTZmMGM1MjBh
MTFkNTg2ZjM1OGJiOTgyM2Q4OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvbG9hZGVyX3VuaXR0ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanMKQEAgLTU0LDkg
KzU0LDExIEBAIHRlc3QoJ2xvYWRpbmcgc3RlcHMnLCAxLCBmdW5jdGlvbigpIHsKICAgICB9CiB9
KTsKIAotdGVzdCgncmVzdWx0cyBmaWxlcyBsb2FkaW5nJywgNSwgZnVuY3Rpb24oKSB7CisvLyBU
b3RhbCBudW1iZXIgb2YgYXNzZXJ0aW9ucyBpcyAxIGZvciB0aGUgZGVlcEVxdWFsIG9mIHRoZSBi
dWlsZGVyIGxpc3RzCisvLyBhbmQgdGhlbiAyIHBlciBidWlsZGVyIChvbmUgZm9yIG9rLCBvbmUg
Zm9yIGRlZXBFcXVhbCBvZiB0ZXN0cykuCit0ZXN0KCdyZXN1bHRzIGZpbGVzIGxvYWRpbmcnLCAx
MSwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7Ci0gICAgdmFyIGV4cGVjdGVkTG9h
ZGVkQnVpbGRlcnMgPSBbIldlYktpdCBMaW51eCIsICJXZWJLaXQgV2luIl07CisgICAgdmFyIGV4
cGVjdGVkTG9hZGVkQnVpbGRlcnMgPSAgWydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExpbnV4IChk
YmcpJywgJ1dlYktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4nLCAnV2ViS2l0IFdpbiAoZGJnKSdd
OwogICAgIHZhciBsb2FkZWRCdWlsZGVycyA9IFtdOwogICAgIHZhciByZXNvdXJjZUxvYWRlciA9
IG5ldyBsb2FkZXIuTG9hZGVyKCk7CiAgICAgcmVzb3VyY2VMb2FkZXIuX2xvYWROZXh0ID0gZnVu
Y3Rpb24oKSB7CkBAIC02OSwxNiArNzEsMTMgQEAgdGVzdCgncmVzdWx0cyBmaWxlcyBsb2FkaW5n
JywgNSwgZnVuY3Rpb24oKSB7CiAKICAgICB2YXIgcmVxdWVzdEZ1bmN0aW9uID0gbG9hZGVyLnJl
cXVlc3Q7CiAgICAgbG9hZGVyLnJlcXVlc3QgPSBmdW5jdGlvbih1cmwsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB2YXIgYnVpbGRlck5hbWUgPSAvYnVpbGRlcj0o
W1x3IF0rKSYvLmV4ZWModXJsKVsxXTsKKyAgICAgICAgdmFyIGJ1aWxkZXJOYW1lID0gL2J1aWxk
ZXI9KFtcdyAoKS5dKykmLy5leGVjKHVybClbMV07CiAgICAgICAgIGxvYWRlZEJ1aWxkZXJzLnB1
c2goYnVpbGRlck5hbWUpOwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soe3Jlc3BvbnNlVGV4dDog
J3sidmVyc2lvbiI6IDQsICInICsgYnVpbGRlck5hbWUgKyAnIjogeyJzZWNvbmRzU2luY2VFcG9j
aCI6IFsnICsgRGF0ZS5ub3coKSArICddLCAidGVzdHMiOiB7fX19J30pOwogICAgIH0KIAotICAg
IGdfYnVpbGRlcnMgPSB7IldlYktpdCBMaW51eCI6IHRydWUsICJXZWJLaXQgV2luIjogdHJ1ZX07
Ci0KLSAgICBidWlsZGVycy5tYXN0ZXJzWydDaHJvbWl1bVdlYmtpdCddID0geyd0ZXN0cyc6IHsn
bGF5b3V0LXRlc3RzJzoge2J1aWxkZXJzOiBbIldlYktpdCBMaW51eCIsICJXZWJLaXQgV2luIl19
fX07CiAgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlvdXQt
dGVzdHMnKTsKLQorIAogICAgIHRyeSB7CiAgICAgICAgIHJlc291cmNlTG9hZGVyLl9sb2FkUmVz
dWx0c0ZpbGVzKCk7CiAgICAgfSBmaW5hbGx5IHsKQEAgLTExMiw2ICsxMTEsOCBAQCB0ZXN0KCdl
eHBlY3RhdGlvbnMgZmlsZXMgbG9hZGluZycsIDEsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZXN1
bHRzIGZpbGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9i
YWxzKCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlv
dXQtdGVzdHMnKTsKKyAgICAKICAgICAvLyBGSVhNRTogbG9hZGVyIHNob3VsZG4ndCBkZXBlbmQg
b24gc3RhdGUgZGVmaW5lZCBpbiBkYXNoYm9hcmRfYmFzZS5qcy4KICAgICBnX2J1aWxkZXJzVGhh
dEZhaWxlZFRvTG9hZCA9IFtdOwogCkBAIC0xMjIsMTQgKzEyMywxNCBAQCB0ZXN0KCdyZXN1bHRz
IGZpbGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgfQogCiAgICAgdmFy
IGJ1aWxkZXIxID0gJ2J1aWxkZXIxJzsKLSAgICBnX2J1aWxkZXJzW2J1aWxkZXIxXSA9IHRydWU7
CisgICAgY3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcjFdID0gdHJ1ZTsKICAgICByZXNvdXJjZUxv
YWRlci5faGFuZGxlUmVzdWx0c0ZpbGVMb2FkRXJyb3IoYnVpbGRlcjEpOwogCiAgICAgdmFyIGJ1
aWxkZXIyID0gJ2J1aWxkZXIyJzsKLSAgICBnX2J1aWxkZXJzW2J1aWxkZXIyXSA9IHRydWU7Cisg
ICAgY3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcjJdID0gdHJ1ZTsKICAgICByZXNvdXJjZUxvYWRl
ci5faGFuZGxlUmVzdWx0c0ZpbGVMb2FkRXJyb3IoYnVpbGRlcjIpOwogCiAgICAgZGVlcEVxdWFs
KGdfYnVpbGRlcnNUaGF0RmFpbGVkVG9Mb2FkLCBbYnVpbGRlcjEsIGJ1aWxkZXIyXSk7CiAgICAg
ZXF1YWwocmVzb3VyY2VMb2FkQ291bnQsIDIpOwogCi19KQorfSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0
bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4
cGxvcmVyLmh0bWwKaW5kZXggNGNkZDlhODZiNDk1ODMwMDhjZDQ3YTU3YmJhYmI1MWFmZTkwZWE3
OC4uZDRhYThlODU4YjM1ZjcwZTU5ODI3NjFhMjJlNGMwNmQwNGU4M2QzNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jl
ci5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGlt
ZWxpbmVfZXhwbG9yZXIuaHRtbApAQCAtMjkxLDcgKzI5MSw3IEBAIGZ1bmN0aW9uIHVwZGF0ZUJ1
aWxkSW5zcGVjdG9yKHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KQogICAgICAgICAg
ICAgJyAoJyArIHJlc3VsdHNbQlVJTERfTlVNQkVSU19LRVldW2luZGV4XSArICcpJzsKICAgICB9
IGVsc2UgewogICAgICAgICB2YXIgcmVzdWx0c1VybCA9ICdodHRwOi8vYnVpbGQuY2hyb21pdW0u
b3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy8nICsKLSAgICAgICAgICAgIGdfYnVp
bGRlcnNbYnVpbGRlcl0gKyAnLycgKyByZXN1bHRzW0NIUk9NRV9SRVZJU0lPTlNfS0VZXVtpbmRl
eF07CisgICAgICAgICAgICBjdXJyZW50QnVpbGRlcnMoKVtidWlsZGVyXSArICcvJyArIHJlc3Vs
dHNbQ0hST01FX1JFVklTSU9OU19LRVldW2luZGV4XTsKICAgICB9CiAKICAgICBhZGRSb3coJ0J1
aWxkOicsICc8YSBocmVmPSInICsgYnVpbGRVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JyArIGJ1
aWxkTnVtYmVyICsgJzwvYT4gKDxhIGhyZWY9IicgKyByZXN1bHRzVXJsICsgJyIgdGFyZ2V0PSJf
YmxhbmsiPnJlc3VsdHM8L2E+KScpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbAppbmRleCBhYTdhZTQzN2VmN2MxZTQxMjQz
ZTdlMTU3OTM5ODYzZDJhZTkwOTcxLi5kYTE1NTA1MzFmNjNmNWE4M2MzZWM3NDUwMGUwNzZjY2Fi
ZDllMmE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9h
cmRzL3RyZWVtYXAuaHRtbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL3RyZWVtYXAuaHRtbApAQCAtMjc0LDcgKzI3NCw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZh
bGlkSGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQogICAgIHN3aXRjaChrZXkpIHsKICAgICBjYXNl
ICdidWlsZGVyJzoKICAgICAgICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtl
eSwgdmFsdWUsCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGdfYnVp
bGRlcnM7IH0pOworICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB2YWx1ZSBpbiBjdXJy
ZW50QnVpbGRlcnMoKTsgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSAndHJl
ZW1hcGZvY3VzJzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179342</attachid>
            <date>2012-12-13 14:41:29 -0800</date>
            <delta_ts>2012-12-13 14:49:16 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-104941-20121213143849.patch</filename>
            <type>text/plain</type>
            <size>22698</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE3NGY4NjA4MDdmODJmODZkYzBhMjA0NzhjZjc1NWIz
YTJiN2Y5MS4uYWEyZjUzMzhkYmE1ZDk4MDljMzgyZTI5NTE5Njg3NjBkZGY1ODIxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDEyLTEyLTEzICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBEYXNoYm9hcmQgY2xlYW51cDogcmVtb3ZlIHVzYWdlIG9mIGdsb2JhbCBnX2J1aWxk
ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0
OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IGRhc2hib2FyZHMgdXNlIGEgbG90IG9mIGdsb2JhbCBzdGF0ZSwgd2hpY2ggbWFrZXMgaGFja2lu
ZyBvbiB0aGVtCisgICAgICAgIGNvbXBsaWNhdGVkLiBUaGlzIGNoYW5nZSByZW1vdmVzIHRoZSB1
c2Ugb2Ygb25lIHN1Y2ggZ2xvYmFsOiBnX2J1aWxkZXJzLgorICAgICAgICBJbiBtb3N0IGNhc2Vz
LCB3ZSBjYW4ganVzdCB1c2UgY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzIGluc3RlYWQs
CisgICAgICAgIHdoaWNoIGlzIG5vdyBjdXJyZW50QnVpbGRlcnMoKS4KKyAgICAgICAgU3VycHJp
c2luZ2x5LCB0aGUgbW9zdCBjaGFuZ2VzIHdlcmUgcmVxdWlyZWQgdG8gdGhlIHVuaXQgdGVzdHMs
IHNpbmNlCisgICAgICAgIHRoZXkgd2VyZSBldmVuIGJpZ2dlciBvZmZlbmRlcnMgb2YgYmFkIGh5
Z2llbmUsIHJlbHlpbmcgb24gZ2xvYmFsIHN0YXRlCisgICAgICAgIHNldCBieSBvdGhlciB0ZXN0
cywgcmFuZG9tbHkgY2xvYmJlcmluZyBnbG9iYWwgdmFyaWFibGVzIGluIHdheXMgdGhlCisgICAg
ICAgIHJlYWwgY29kZSBkb2Vzbid0LCBldGMuCisKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzOgorICAgICAgICAoQnVpbGRlckdyb3VwLnBy
b3RvdHlwZS5zZXR1cCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKC5zd2l0Y2gucmV0dXJuKToKKyAgICAg
ICAgKGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanM6CisgICAgICAgIChnZW5l
cmF0ZVBhZ2UpOgorICAgICAgICAoZ2V0QWxsVGVzdHNUcmllKToKKyAgICAgICAgKHByb2Nlc3NU
ZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKToKKyAgICAgICAgKHNob3dQb3B1cEZvckJ1aWxkKToKKyAg
ICAgICAgKGdlbmVyYXRlUGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSk6CisgICAgICAgIChsb2Fk
RXhwZWN0YXRpb25zTGF5b3V0VGVzdHMpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanM6CisgICAgICAg
IChyZXNldEdsb2JhbHMpOgorICAgICAgICAoc3R1YlJlc3VsdHNCeUJ1aWxkZXIpOgorICAgICAg
ICAodGVzdCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9s
b2FkZXIuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRp
Yy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanM6CisKIDIwMTItMTItMTMgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGEgbWlzLW5hbWVkIHZh
cmlhYmxlIGFmdGVyIHIxMzc2MjEuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXgg
ZmEwMzNhNTRkNGZkYWIyZWI1NjM4MzVmZjQzNjQxNGY3OTFiYTQxOC4uYTM4MDVhNTQ3MjgwNmMy
ZTljMDJhNDhmNjlkNTE4OGFhZjYwNDdkOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1sCisrKyBiL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRt
bApAQCAtNjgsNyArNjgsNyBAQCBpbWcgewogZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKIHsKICAg
ICB2YXIgaHRtbCA9IGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKHRydWUpICsgJzxicj4nOwotICAg
IGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykKKyAgICBmb3IgKHZhciBidWlsZGVyIGlu
IGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICBodG1sICs9IGh0bWxGb3JCdWlsZGVyKGJ1aWxk
ZXIpOwogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gaHRtbDsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMgYi9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzCmluZGV4
IDk3ZGZlMjcyOTdhMjVhMGRkMmNlYjg0NDRiZDVmNWE5NjM0NGY5NjkuLjMyNzMxZWExNjhiNWIz
ZDIyNGEwMmI3YmZjYzY1NzY4Nzg4NjlhYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwpAQCAtMTI3LDcgKzEyNyw2IEBA
IEJ1aWxkZXJHcm91cC5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpCiAgICAgLy8gRklYTUU6
IGluc3RlYWQgb2YgY29weWluZyB0aGVzZSB0byBnbG9iYWxzLCBpdCB3b3VsZCBiZSBiZXR0ZXIg
aWYKICAgICAvLyB0aGUgcmVzdCBvZiB0aGUgY29kZSByZWFkIHRoaW5ncyBmcm9tIHRoZSBCdWls
ZGVyR3JvdXAgaW5zdGFuY2UgZGlyZWN0bHkKICAgICBnX2RlZmF1bHRCdWlsZGVyTmFtZSA9IHRo
aXMuX2RlZmF1bHRCdWlsZGVyKCk7Ci0gICAgZ19idWlsZGVycyA9IHRoaXMuYnVpbGRlcnM7CiB9
OwogCiBCdWlsZGVyR3JvdXAucHJvdG90eXBlLl9kZWZhdWx0QnVpbGRlciA9IGZ1bmN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFz
aGJvYXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2Rhc2hib2FyZF9iYXNlLmpzCmluZGV4IDZlZWUxZTdiZGVlNTM4MWQyMTkwOGQ3MmQ3MTMyZDQ1
MTU4MTg3YjUuLmU1MTc2OGE4YTI2MjI1ZGQ1OGMxOGEzYjIzNWIyNzIyMmNmNzFhNzggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJk
X2Jhc2UuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9k
YXNoYm9hcmRfYmFzZS5qcwpAQCAtMTg4LDcgKzE4OCw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlk
SGFzaFBhcmFtZXRlcldyYXBwZXIoa2V5LCB2YWx1ZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgcHJvYmFibHkgYmUgc3RvcmVkIG9uIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSBsaWtlIGV2ZXJ5
dGhpbmcgZWxzZSBpbiB0aGlzIGZ1bmN0aW9uLgogICAgIGNhc2UgJ2J1aWxkZXInOgogICAgICAg
ICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdmFsdWUgaW4gZ19idWlsZGVyczsgfSk7CisgICAgICAg
ICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGN1cnJlbnRCdWlsZGVycygpOyB9KTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlICd1c2VUZXN0RGF0YSc6CkBAIC00MTYs
MTIgKzQxNiwxNyBAQCBmdW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwKCkKICAgICByZXR1cm4g
Y3VycmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KClbZ19jcm9zc0Rhc2hib2FyZFN0YXRlLmdyb3Vw
XQogfQogCitmdW5jdGlvbiBjdXJyZW50QnVpbGRlcnMoKQoreworICAgIHJldHVybiBjdXJyZW50
QnVpbGRlckdyb3VwKCkuYnVpbGRlcnM7Cit9CisKIGZ1bmN0aW9uIGlzVGlwT2ZUcmVlV2ViS2l0
QnVpbGRlcigpCiB7CiAgICAgcmV0dXJuIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5pc1RvVFdlYktp
dDsKIH0KIAotdmFyIGdfZGVmYXVsdEJ1aWxkZXJOYW1lLCBnX2J1aWxkZXJzOwordmFyIGdfZGVm
YXVsdEJ1aWxkZXJOYW1lOwogZnVuY3Rpb24gaW5pdEJ1aWxkZXJzKCkKIHsKICAgICBjdXJyZW50
QnVpbGRlckdyb3VwKCkuc2V0dXAoKTsKQEAgLTY5NCw3ICs2OTksNyBAQCBmdW5jdGlvbiBodG1s
Rm9yVGVzdFR5cGVTd2l0Y2hlcihvcHRfbm9CdWlsZGVyTWVudSwgb3B0X2V4dHJhSHRtbCwgb3B0
X2luY2x1ZGVObwogICAgIGh0bWwgKz0gc2VsZWN0SFRNTCgnVGVzdCB0eXBlJywgJ3Rlc3RUeXBl
JywgVEVTVF9UWVBFUyk7CiAKICAgICBpZiAoIW9wdF9ub0J1aWxkZXJNZW51KSB7Ci0gICAgICAg
IHZhciBidWlsZGVyc0Zvck1lbnUgPSBPYmplY3Qua2V5cyhnX2J1aWxkZXJzKTsKKyAgICAgICAg
dmFyIGJ1aWxkZXJzRm9yTWVudSA9IE9iamVjdC5rZXlzKGN1cnJlbnRCdWlsZGVycygpKTsKICAg
ICAgICAgaWYgKG9wdF9pbmNsdWRlTm9uZUJ1aWxkZXIpCiAgICAgICAgICAgICBidWlsZGVyc0Zv
ck1lbnUudW5zaGlmdCgnLS0tLS0tLS0tLS0tLS0nKTsKICAgICAgICAgaHRtbCArPSBzZWxlY3RI
VE1MKCdCdWlsZGVyJywgJ2J1aWxkZXInLCBidWlsZGVyc0Zvck1lbnUpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJv
YXJkLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5l
c3NfZGFzaGJvYXJkLmpzCmluZGV4IGQ0NGUzZTU4ZTY0ZTJhOTMwZGVlNTE4NjhlNWY5Mzc2YWRj
OWZlMWIuLmMzNzcxMWIzY2Q2Njk4ZDczZjg3NGMwNjlmZDM3ZDVhMTk2NmY2OTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rh
c2hib2FyZC5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKQEAgLTE1NSw3ICsxNTUsNyBAQCBmdW5jdGlvbiBnZW5l
cmF0ZVBhZ2UoKQogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdGVQYWdlRm9yQnVpbGRlcihnX2N1
cnJlbnRTdGF0ZS5idWlsZGVyKTsKIAotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVy
cykKKyAgICBmb3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICBw
cm9jZXNzVGVzdFJlc3VsdHNGb3JCdWlsZGVyQXN5bmMoYnVpbGRlcik7CiAKICAgICBwb3N0SGVp
Z2h0Q2hhbmdlZE1lc3NhZ2UoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBmdW5jdGlvbiBoYW5kbGVW
YWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAgICBjYXNlICdidWlsZGVyJzoKICAgICAg
ICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCiAgICAgICAg
ICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gZ19idWls
ZGVyczsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gY3VycmVudEJ1aWxkZXJzKCk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQ3OSw3ICs0Nzks
NyBAQCB2YXIgZ19hbGxUZXN0c1RyaWU7CiBmdW5jdGlvbiBnZXRBbGxUZXN0c1RyaWUoKQogewog
ICAgIGlmICghZ19hbGxUZXN0c1RyaWUpCi0gICAgICAgIGdfYWxsVGVzdHNUcmllID0gbmV3IFRl
c3RUcmllKGdfYnVpbGRlcnMsIGdfcmVzdWx0c0J5QnVpbGRlcik7CisgICAgICAgIGdfYWxsVGVz
dHNUcmllID0gbmV3IFRlc3RUcmllKGN1cnJlbnRCdWlsZGVycygpLCBnX3Jlc3VsdHNCeUJ1aWxk
ZXIpOwogCiAgICAgcmV0dXJuIGdfYWxsVGVzdHNUcmllOwogfQpAQCAtNjEwLDcgKzYxMCw3IEBA
IGZ1bmN0aW9uIGFsbFRlc3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1aWxkVHlwZShwbGF0Zm9ybSwg
YnVpbGRUeXBlKQogewogICAgIGlmICghZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVb
cGxhdGZvcm1dW2J1aWxkVHlwZV0pIHsKICAgICAgICAgdmFyIHRlc3RzID0ge307Ci0gICAgICAg
IGZvciAodmFyIHRoaXNCdWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICAgICAgZm9yICh2YXIg
dGhpc0J1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgICAgIHZhciB0aGlz
QnVpbGRlckJ1aWxkSW5mbyA9IHBsYXRmb3JtQW5kQnVpbGRUeXBlKHRoaXNCdWlsZGVyKTsKICAg
ICAgICAgICAgIGlmICh0aGlzQnVpbGRlckJ1aWxkSW5mby5idWlsZFR5cGUgPT0gYnVpbGRUeXBl
ICYmIHRoaXNCdWlsZGVyQnVpbGRJbmZvLnBsYXRmb3JtID09IHBsYXRmb3JtKSB7CiAgICAgICAg
ICAgICAgICAgYWRkVGVzdHNGb3JCdWlsZGVyKHRoaXNCdWlsZGVyLCB0ZXN0cyk7CkBAIC05MTks
NyArOTE5LDcgQEAgZnVuY3Rpb24gcHJvY2Vzc1Rlc3RSZXN1bHRzRm9yQnVpbGRlckFzeW5jKGJ1
aWxkZXIpCiAKIGZ1bmN0aW9uIHByb2Nlc3NUZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKCkKIHsKLSAg
ICBmb3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpCisgICAgZm9yICh2YXIgYnVpbGRlciBp
biBjdXJyZW50QnVpbGRlcnMoKSkKICAgICAgICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQnVpbGRlcihi
dWlsZGVyKTsKIH0KIApAQCAtMTIzNiw3ICsxMjM2LDcgQEAgZnVuY3Rpb24gc2hvd1BvcHVwRm9y
QnVpbGQoZSwgYnVpbGRlciwgaW5kZXgsIG9wdF90ZXN0TmFtZSkKIAogICAgICAgICB2YXIgY2hy
b21lUmV2aXNpb24gPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0uY2hyb21lUmV2aXNpb25b
aW5kZXhdOwogICAgICAgICBpZiAoY2hyb21lUmV2aXNpb24gJiYgaXNMYXlvdXRUZXN0UmVzdWx0
cygpKSB7Ci0gICAgICAgICAgICBodG1sICs9ICc8bGk+PGEgaHJlZj0iJyArIFRFU1RfUkVTVUxU
U19CQVNFX1BBVEggKyBnX2J1aWxkZXJzW2J1aWxkZXJdICsKKyAgICAgICAgICAgIGh0bWwgKz0g
JzxsaT48YSBocmVmPSInICsgVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCArIGN1cnJlbnRCdWlsZGVy
cygpW2J1aWxkZXJdICsKICAgICAgICAgICAgICAgICAnLycgKyBjaHJvbWVSZXZpc2lvbiArICcv
bGF5b3V0LXRlc3QtcmVzdWx0cy56aXAiPmxheW91dC10ZXN0LXJlc3VsdHMuemlwPC9hPjwvbGk+
JzsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MjYsNyArMTYyNiw3IEBAIGZ1bmN0aW9uIGdlbmVy
YXRlUGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBm
b3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICBmb3IgKHZhciBidWlsZGVyIGlu
IGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIHZhciB0ZXN0cyA9IGdfcGVyQnVpbGRlcldp
dGhFeHBlY3RhdGlvbnNCdXROb0ZhaWx1cmVzW2J1aWxkZXJdCiAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIC8vIEFueXRoaW5nIGV4
dHJhIGluIHRoaXMgY2FzZSBpcyB3aGF0IGlzIGxpc3RlZCBpbiBleHBlY3RhdGlvbnMKQEAgLTE3
OTMsNyArMTc5Myw3IEBAIGZ1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRl
cnModGVzdCkKICAgICB9CiAKICAgICB2YXIgc2tpcHBlZEJ1aWxkZXJzID0gW10KLSAgICBmb3Ig
KGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzKSB7CisgICAgZm9yIChi
dWlsZGVyIGluIGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIGlmIChzaG93bkJ1aWxkZXJz
LmluZGV4T2YoYnVpbGRlcikgPT0gLTEpCiAgICAgICAgICAgICBza2lwcGVkQnVpbGRlcnMucHVz
aChidWlsZGVyKTsKICAgICB9CkBAIC0yMjU1LDcgKzIyNTUsNyBAQCBmdW5jdGlvbiBsb2FkRXhw
ZWN0YXRpb25zTGF5b3V0VGVzdHModGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogICAgIHZh
ciByZXZpc2lvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAg
IHJldmlzaW9uQ29udGFpbmVyLnRleHRDb250ZW50ID0gIlNob3dpbmcgcmVzdWx0cyBmb3I6ICIK
ICAgICBleHBlY3RhdGlvbnNDb250YWluZXIuYXBwZW5kQ2hpbGQocmV2aXNpb25Db250YWluZXIp
OwotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykgeworICAgIGZvciAodmFyIGJ1
aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgaWYgKGJ1aWxkZXJNYXN0ZXIo
YnVpbGRlcikubmFtZSA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIpIHsKICAgICAgICAgICAgIHZh
ciBsYXRlc3RSZXZpc2lvbiA9IGdfY3VycmVudFN0YXRlLnJldmlzaW9uIHx8IGdfcmVzdWx0c0J5
QnVpbGRlcltidWlsZGVyXS53ZWJraXRSZXZpc2lvblswXTsKICAgICAgICAgICAgIHZhciBidWls
ZEluZm8gPSBidWlsZEluZm9Gb3JSZXZpc2lvbihidWlsZGVyLCBsYXRlc3RSZXZpc2lvbik7CkBA
IC0yMjcyLDcgKzIyNzIsNyBAQCBmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zTGF5b3V0VGVzdHMo
dGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogICAgIHZhciB0ZXN0V2l0aG91dFN1ZmZpeCA9
IHRlc3Quc3Vic3RyaW5nKDAsIHRlc3QubGFzdEluZGV4T2YoJy4nKSk7CiAgICAgdmFyIGFjdHVh
bFJlc3VsdFN1ZmZpeGVzID0gWyctYWN0dWFsLnR4dCcsICctYWN0dWFsLnBuZycsICctY3Jhc2gt
bG9nLnR4dCcsICctZGlmZi50eHQnLCAnLXdkaWZmLmh0bWwnLCAnLWRpZmYucG5nJ107CiAKLSAg
ICBmb3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICBmb3IgKHZhciBidWlsZGVy
IGluIGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIHZhciBhY3R1YWxSZXN1bHRzQmFzZTsK
ICAgICAgICAgaWYgKGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcikubmFtZSA9PSBXRUJLSVRfQlVJTERF
Ul9NQVNURVIpIHsKICAgICAgICAgICAgIHZhciBsYXRlc3RSZXZpc2lvbiA9IGdfY3VycmVudFN0
YXRlLnJldmlzaW9uIHx8IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS53ZWJraXRSZXZpc2lv
blswXTsKQEAgLTIyODAsNyArMjI4MCw3IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlv
dXRUZXN0cyh0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpCiAgICAgICAgICAgICBhY3R1YWxS
ZXN1bHRzQmFzZSA9ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzLycgKyBidWlsZGVy
ICsKICAgICAgICAgICAgICAgICAnL3InICsgYnVpbGRJbmZvLnJldmlzaW9uU3RhcnQgKyAnICgn
ICsgYnVpbGRJbmZvLmJ1aWxkTnVtYmVyICsgJykvJzsKICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBhY3R1YWxSZXN1bHRzQmFzZSA9IFRFU1RfUkVTVUxUU19CQVNFX1BBVEggKyBnX2J1aWxk
ZXJzW2J1aWxkZXJdICsgJy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvJzsKKyAgICAgICAg
ICAgIGFjdHVhbFJlc3VsdHNCYXNlID0gVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCArIGN1cnJlbnRC
dWlsZGVycygpW2J1aWxkZXJdICsgJy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvJzsKIAog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbFJlc3VsdFN1ZmZpeGVzLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgICAgICBhZGRFeHBlY3RhdGlvbkl0ZW0oZXhwZWN0YXRpb25zQ29udGFp
bmVycywgZXhwZWN0YXRpb25zQ29udGFpbmVyLCBudWxsLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0
ZXN0cy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2lu
ZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanMKaW5kZXggYWMyNjRiNDA3ZTlmM2YzNDk3Njk4ZDM5
NDkwMjY0MWUyNWM1YjNjMi4uMmRhNjM0MWJiNzhhZmFiYzZkYmI3ODBlMWE5ODJkZWVhNWIxNGE5
NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9m
bGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzCkBA
IC0zMiw3ICszMiw2IEBAIGZ1bmN0aW9uIHJlc2V0R2xvYmFscygpCiAgICAgYWxsVGVzdHMgPSBu
dWxsOwogICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybSA9IHt9OwogICAgIGdfcmVzdWx0c0J5
QnVpbGRlciA9IHt9OwotICAgIGdfYnVpbGRlcnMgPSB7fTsKICAgICBnX2FsbEV4cGVjdGF0aW9u
cyA9IG51bGw7CiAgICAgZ19hbGxUZXN0c1RyaWUgPSBudWxsOwogICAgIGdfY3VycmVudFN0YXRl
ID0ge307CkBAIC00NSwyNiArNDQsMzUgQEAgZnVuY3Rpb24gcmVzZXRHbG9iYWxzKCkKICAgICBM
T0FEX0JVSUxEQk9UX0RBVEEoW3sKICAgICAgICAgbmFtZTogJ0Nocm9taXVtV2Via2l0JywKICAg
ICAgICAgdXJsOiAnZHVtbXl1cmwnLCAKLSAgICAgICAgdGVzdHM6IHsnbGF5b3V0LXRlc3RzJzog
eydidWlsZGVycyc6IFsnV2ViS2l0IExpbnV4JywgJ1dlYktpdCBMaW51eCAoZGJnKScsICdXZWJL
aXQgTWFjMTAuNycsICdXZWJLaXQgV2luJ119fQorICAgICAgICB0ZXN0czogeydsYXlvdXQtdGVz
dHMnOiB7J2J1aWxkZXJzJzogWydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExpbnV4IChkYmcpJywg
J1dlYktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4nLCAnV2ViS2l0IFdpbiAoZGJnKSddfX0KICAg
ICB9LAogICAgIHsKICAgICAgICAgbmFtZTogJ3dlYmtpdC5vcmcnLAogICAgICAgICB1cmw6ICdk
dW1teXVybCcsCiAgICAgICAgIHRlc3RzOiB7J2xheW91dC10ZXN0cyc6IHsnYnVpbGRlcnMnOiBb
J0FwcGxlIFNub3dMZW9wYXJkIFRlc3RzJywgJ1F0IExpbnV4IFRlc3RzJywgJ0Nocm9taXVtIE1h
YzEwLjcgVGVzdHMnLCAnR1RLIFdpbiddfX0KICAgICB9XSk7CisgCiAgICAgZm9yICh2YXIgZ3Jv
dXAgaW4gTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTKQogICAgICAgICBMQVlPVVRfVEVTVFNf
QlVJTERFUl9HUk9VUFNbZ3JvdXBdID0gbnVsbDsKIH0KIAotZnVuY3Rpb24gcnVuRXhwZWN0YXRp
b25zVGVzdChidWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKK2Z1bmN0aW9u
IHN0dWJSZXN1bHRzQnlCdWlsZGVyKGRhdGEpCiB7Ci0gICAgZ19idWlsZGVyc1tidWlsZGVyXSA9
IHRydWU7CisgICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlcnMoKSkKKyAgICB7
CisgICAgICAgIGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXSA9IGRhdGFbYnVpbGRlcl0gfHwg
eyd0ZXN0cyc6IFtdfTsKKyAgICB9OworfQogCitmdW5jdGlvbiBydW5FeHBlY3RhdGlvbnNUZXN0
KGJ1aWxkZXIsIHRlc3QsIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKQorewogICAgIC8vIFB1dCBp
biBzb21lIGR1bW15IHJlc3VsdHMuIHByb2Nlc3NFeHBlY3RhdGlvbnMgZXhwZWN0cyB0aGUgdGVz
dCB0byBiZQogICAgIC8vIHRoZXJlLgogICAgIHZhciB0ZXN0cyA9IHt9OwogICAgIHRlc3RzW3Rl
c3RdID0geydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfTsKLSAg
ICBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVzdHN9OworICAgIHZh
ciByZXN1bHRzID0ge307CisgICAgcmVzdWx0c1tidWlsZGVyXSA9IHsndGVzdHMnOiB0ZXN0c307
CisgICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIocmVzdWx0cyk7CiAKICAgICBwcm9jZXNzRXhwZWN0
YXRpb25zKCk7CiAgICAgdmFyIHJlc3VsdHNGb3JUZXN0ID0gY3JlYXRlUmVzdWx0c09iamVjdEZv
clRlc3QodGVzdCwgYnVpbGRlcik7CkBAIC05NCw2ICsxMDIsOCBAQCB0ZXN0KCdmbGF0dGVuVHJp
ZScsIDEsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxlYXNlRmFpbCcsIDIsIGZ1bmN0aW9uKCkg
ewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJv
bWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CisKICAgICB2YXIgYnVpbGRlciA9ICdXZWJLaXQg
V2luJzsKICAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKICAgICB2YXIgZXhwZWN0YXRpb25z
QXJyYXkgPSBbCkBAIC0xMDUsNiArMTE1LDcgQEAgdGVzdCgncmVsZWFzZUZhaWwnLCAyLCBmdW5j
dGlvbigpIHsKIAogdGVzdCgncmVsZWFzZUZhaWxEZWJ1Z0NyYXNoUmVsZWFzZUJ1aWxkZXInLCAy
LCBmdW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0
KCdAVG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVy
ID0gJ1dlYktpdCBXaW4nOwogICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBl
eHBlY3RhdGlvbnNBcnJheSA9IFsKQEAgLTExOCw2ICsxMjksNyBAQCB0ZXN0KCdyZWxlYXNlRmFp
bERlYnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcicsIDIsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxl
YXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1aWxkZXInLCAyLCBmdW5jdGlvbigpIHsKICAgICByZXNl
dEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3JnJywg
J2xheW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVyID0gJ1dlYktpdCBXaW4gKGRiZyknOwog
ICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9
IFsKQEAgLTEzMSw2ICsxNDMsNyBAQCB0ZXN0KCdyZWxlYXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1
aWxkZXInLCAyLCBmdW5jdGlvbigpIHsKIAogdGVzdCgnb3ZlcnJpZGVKdXN0QnVpbGRUeXBlJywg
MTIsIGZ1bmN0aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xp
c3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFyIHRlc3Qg
PSAnYmFyLzEuaHRtbCc7CiAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtWydDSFJPTUlVTSdd
ID0gZ2V0UGFyc2VkRXhwZWN0YXRpb25zKCdiYXIgWyBXb250Rml4IEZhaWx1cmUgUGFzcyBUaW1l
b3V0IF1cbicgKwogICAgICAgICAnWyBNYWMgXSAnICsgdGVzdCArICcgWyBXb250Rml4IEZhaWx1
cmUgXVxuJyArCkBAIC0yMjcsOSArMjQwLDEwIEBAIHRlc3QoJ2ZpbHRlckJ1Z3MnLDQsIGZ1bmN0
aW9uKCkgewogCiB0ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxNiwgZnVuY3Rpb24oKSB7CiAgICAg
cmVzZXRHbG9iYWxzKCk7Ci0gICAgZ19idWlsZGVyc1snV2ViS2l0IFdpbiddID0gdHJ1ZTsKLSAg
ICBnX3Jlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdXZWJLaXQgV2luJzogeworICAgIGxv
YWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7Cisg
CisgICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIoeworICAgICAgICAnV2ViS2l0IFdpbicgOiB7CiAg
ICAgICAgICAgICAndGVzdHMnOiB7CiAgICAgICAgICAgICAgICAgJ2Zvby90ZXN0MS5odG1sJzog
eydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfSwKICAgICAgICAg
ICAgICAgICAnZm9vL3Rlc3QyLmh0bWwnOiB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1l
cyc6IFtbMTAwLCAwXV19LApAQCAtMjM3LDcgKzI1MSw3IEBAIHRlc3QoJ2dldEV4cGVjdGF0aW9u
cycsIDE2LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAndGVzdDEuaHRtbCc6IHsncmVz
dWx0cyc6IFtbMTAwLCAnRiddXSwgJ3RpbWVzJzogW1sxMDAsIDBdXX0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotICAgIH0KKyAgICB9KTsKIAogICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9y
bVsnQ0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDEyMykgZm9vIFsgRmFp
bHVyZSBQYXNzIENyYXNoIF1cbicgKwogICAgICAgICAnQnVnKEZvbykgWyBSZWxlYXNlIF0gZm9v
L3Rlc3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwpAQCAtMzE2LDYgKzMzMCw3IEBAIHRlc3QoJ3N1
YnN0cmluZ0xpc3QnLCAyLCBmdW5jdGlvbigpIHsKIH0pOwogCiB0ZXN0KCdodG1sRm9yVGVzdHNX
aXRoRXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJlcycsIDQsIGZ1bmN0aW9uKCkgeworICAgIGxvYWRC
dWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAg
dmFyIGJ1aWxkZXIgPSAnV2ViS2l0IFdpbic7CiAgICAgZ19wZXJCdWlsZGVyV2l0aEV4cGVjdGF0
aW9uc0J1dE5vRmFpbHVyZXNbYnVpbGRlcl0gPSBbJ3Bhc3NpbmctdGVzdDEuaHRtbCcsICdwYXNz
aW5nLXRlc3QyLmh0bWwnXTsKICAgICBnX3BlckJ1aWxkZXJTa2lwcGVkUGF0aHNbYnVpbGRlcl0g
PSBbJ3NraXBwZWQtdGVzdDEuaHRtbCddOwpAQCAtMzY4LDExICszODMsMTMgQEAgdGVzdCgnaHRt
bEZvclRlc3RUeXBlU3dpdGNoZXJHcm91cCcsIDYsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdodG1s
Rm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzJywgMSwgZnVuY3Rpb24oKSB7CiAgICAgcmVz
ZXRHbG9iYWxzKCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycs
ICdsYXlvdXQtdGVzdHMnKTsKICAgICBlcXVhbChodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1
aWxkZXJzKCdmb28vbm9uZXhpc3RhbnQuaHRtbCcpLCAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5U
ZXN0IG5vdCBmb3VuZC4gRWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBh
c3NlcyBvbiBhbGwgcGxhdGZvcm1zLjwvZGl2PicpOwogfSk7CiAKIHRlc3QoJ2h0bWxGb3JJbmRp
dmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzTm9uZXhpc3RhbnQnLCAxLCBm
dW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdA
VG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIGVxdWFsKGh0bWxGb3JJ
bmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzKCdmb28vbm9uZXhpc3Rh
bnQuaHRtbCcpLAogICAgICAgICAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5UZXN0IG5vdCBmb3Vu
ZC4gRWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBhc3NlcyBvbiBhbGwg
cGxhdGZvcm1zLjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVz
dD1mb28vbm9uZXhpc3RhbnQuaHRtbD4nICsKQEAgLTQwNSw3ICs0MjIsNyBAQCB0ZXN0KCdodG1s
Rm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzV2l0aFJlc3VsdHNMaW5rcycsIDEsIGZ1bmN0
aW9uKCkgewogICAgICAgICAnPC90YWJsZT4nICsKICAgICAgICAgJzxkaXY+VGhlIGZvbGxvd2lu
ZyBidWlsZGVycyBlaXRoZXIgZG9uXCd0IHJ1biB0aGlzIHRlc3QgKGUuZy4gaXRcJ3Mgc2tpcHBl
ZCkgb3IgYWxsIHJ1bnMgcGFzc2VkOjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1za2lw
cGVkLWJ1aWxkZXItbGlzdD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVp
bGRlcj5XZWJLaXQgTGludXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5X
ZWJLaXQgTWFjMTAuNzwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48
L2Rpdj4nICsKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQg
TGludXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgTWFjMTAu
NzwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48L2Rpdj48ZGl2IGNs
YXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgV2luIChkYmcpPC9kaXY+JyArCiAgICAgICAgICc8
L2Rpdj4nICsKICAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9ZHVtbXl0ZXN0
Lmh0bWw+JyArCiAgICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNl
dFF1ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1bHRz
PC9zcGFuPiB8ICcgKwpAQCAtNDQ5LDYgKzQ2Niw3IEBAIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFs
VGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzV2Via2l0TWFzdGVyJywgMSwgZnVuY3Rp
CiAKIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFsVGVzdHMnLCA0LCBmdW5jdGlvbigpIHsKICAgICBy
ZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3Jn
JywgJ2xheW91dC10ZXN0cycpOwogICAgIHZhciB0ZXN0MSA9ICdmb28vbm9uZXhpc3RhbnQuaHRt
bCc7CiAgICAgdmFyIHRlc3QyID0gJ2Jhci9ub25leGlzdGFudC5odG1sJzsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXIuanMgYi9U
b29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwppbmRleCBj
NzQ4OTAxNjE3YjhlNDc4NTdjYjY4ZjQzYTU1ZjcwNTBlOTllZTgxLi5hNmQ4NTQzMDYwODkyZTIw
NDhiYWRjM2U3MzEwMDVhZTUzMDEzMTIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwpAQCAtOTAsNyArOTAsNyBAQCBsb2FkZXIu
TG9hZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHBhcnNlUGFyYW1ldGVycygpOwog
Ci0gICAgICAgIGZvciAodmFyIGJ1aWxkZXJOYW1lIGluIGdfYnVpbGRlcnMpCisgICAgICAgIGZv
ciAodmFyIGJ1aWxkZXJOYW1lIGluIGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICAgICAgdGhp
cy5fbG9hZFJlc3VsdHNGaWxlRm9yQnVpbGRlcihidWlsZGVyTmFtZSk7CiAgICAgfSwKICAgICBf
bG9hZFJlc3VsdHNGaWxlRm9yQnVpbGRlcjogZnVuY3Rpb24oYnVpbGRlck5hbWUpCkBAIC0xNjcs
MTIgKzE2NywxMiBAQCBsb2FkZXIuTG9hZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBS
ZW1vdmUgdGhpcyBidWlsZGVyIGZyb20gYnVpbGRlcnMsIHNvIHdlIGRvbid0IHRyeSB0byB1c2Ug
dGhlCiAgICAgICAgIC8vIGRhdGEgdGhhdCBpc24ndCB0aGVyZS4KLSAgICAgICAgZGVsZXRlIGdf
YnVpbGRlcnNbYnVpbGRlck5hbWVdOworICAgICAgICBkZWxldGUgY3VycmVudEJ1aWxkZXJzKClb
YnVpbGRlck5hbWVdOwogCiAgICAgICAgIC8vIENoYW5nZSB0aGUgZGVmYXVsdCBidWlsZGVyIG5h
bWUgaWYgaXQgaGFzIGJlZW4gZGVsZXRlZC4KICAgICAgICAgaWYgKGdfZGVmYXVsdEJ1aWxkZXJO
YW1lID09IGJ1aWxkZXJOYW1lKSB7CiAgICAgICAgICAgICBnX2RlZmF1bHRCdWlsZGVyTmFtZSA9
IG51bGw7Ci0gICAgICAgICAgICBmb3IgKHZhciBhdmFpbGFibGVCdWlsZGVyTmFtZSBpbiBnX2J1
aWxkZXJzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBhdmFpbGFibGVCdWlsZGVyTmFtZSBpbiBj
dXJyZW50QnVpbGRlcnMoKSkgewogICAgICAgICAgICAgICAgIGdfZGVmYXVsdEJ1aWxkZXJOYW1l
ID0gYXZhaWxhYmxlQnVpbGRlck5hbWU7CiAgICAgICAgICAgICAgICAgZ19kZWZhdWx0RGFzaGJv
YXJkU3BlY2lmaWNTdGF0ZVZhbHVlcy5idWlsZGVyID0gYXZhaWxhYmxlQnVpbGRlck5hbWU7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTQsNyArMTk0LDcgQEAgbG9hZGVyLkxvYWRlci5w
cm90b3R5cGUgPSB7CiAgICAgfSwKICAgICBfaGF2ZVJlc3VsdHNGaWxlc0xvYWRlZDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKSB7Cisg
ICAgICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAg
ICAgIGlmICghZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzIGIvVG9vbHMvVGVzdFJlc3Vs
dFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzCmluZGV4IDhmNjBi
YjYzZTE5MGM3YTdlY2ExYzczODEzZjI5MmI2YmQyN2VjOTAuLjRjMWU3NmNhMGJiOTZmMGM1MjBh
MTFkNTg2ZjM1OGJiOTgyM2Q4OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvbG9hZGVyX3VuaXR0ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanMKQEAgLTU0LDkg
KzU0LDExIEBAIHRlc3QoJ2xvYWRpbmcgc3RlcHMnLCAxLCBmdW5jdGlvbigpIHsKICAgICB9CiB9
KTsKIAotdGVzdCgncmVzdWx0cyBmaWxlcyBsb2FkaW5nJywgNSwgZnVuY3Rpb24oKSB7CisvLyBU
b3RhbCBudW1iZXIgb2YgYXNzZXJ0aW9ucyBpcyAxIGZvciB0aGUgZGVlcEVxdWFsIG9mIHRoZSBi
dWlsZGVyIGxpc3RzCisvLyBhbmQgdGhlbiAyIHBlciBidWlsZGVyIChvbmUgZm9yIG9rLCBvbmUg
Zm9yIGRlZXBFcXVhbCBvZiB0ZXN0cykuCit0ZXN0KCdyZXN1bHRzIGZpbGVzIGxvYWRpbmcnLCAx
MSwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7Ci0gICAgdmFyIGV4cGVjdGVkTG9h
ZGVkQnVpbGRlcnMgPSBbIldlYktpdCBMaW51eCIsICJXZWJLaXQgV2luIl07CisgICAgdmFyIGV4
cGVjdGVkTG9hZGVkQnVpbGRlcnMgPSAgWydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExpbnV4IChk
YmcpJywgJ1dlYktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4nLCAnV2ViS2l0IFdpbiAoZGJnKSdd
OwogICAgIHZhciBsb2FkZWRCdWlsZGVycyA9IFtdOwogICAgIHZhciByZXNvdXJjZUxvYWRlciA9
IG5ldyBsb2FkZXIuTG9hZGVyKCk7CiAgICAgcmVzb3VyY2VMb2FkZXIuX2xvYWROZXh0ID0gZnVu
Y3Rpb24oKSB7CkBAIC02OSwxNiArNzEsMTMgQEAgdGVzdCgncmVzdWx0cyBmaWxlcyBsb2FkaW5n
JywgNSwgZnVuY3Rpb24oKSB7CiAKICAgICB2YXIgcmVxdWVzdEZ1bmN0aW9uID0gbG9hZGVyLnJl
cXVlc3Q7CiAgICAgbG9hZGVyLnJlcXVlc3QgPSBmdW5jdGlvbih1cmwsIHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB2YXIgYnVpbGRlck5hbWUgPSAvYnVpbGRlcj0o
W1x3IF0rKSYvLmV4ZWModXJsKVsxXTsKKyAgICAgICAgdmFyIGJ1aWxkZXJOYW1lID0gL2J1aWxk
ZXI9KFtcdyAoKS5dKykmLy5leGVjKHVybClbMV07CiAgICAgICAgIGxvYWRlZEJ1aWxkZXJzLnB1
c2goYnVpbGRlck5hbWUpOwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soe3Jlc3BvbnNlVGV4dDog
J3sidmVyc2lvbiI6IDQsICInICsgYnVpbGRlck5hbWUgKyAnIjogeyJzZWNvbmRzU2luY2VFcG9j
aCI6IFsnICsgRGF0ZS5ub3coKSArICddLCAidGVzdHMiOiB7fX19J30pOwogICAgIH0KIAotICAg
IGdfYnVpbGRlcnMgPSB7IldlYktpdCBMaW51eCI6IHRydWUsICJXZWJLaXQgV2luIjogdHJ1ZX07
Ci0KLSAgICBidWlsZGVycy5tYXN0ZXJzWydDaHJvbWl1bVdlYmtpdCddID0geyd0ZXN0cyc6IHsn
bGF5b3V0LXRlc3RzJzoge2J1aWxkZXJzOiBbIldlYktpdCBMaW51eCIsICJXZWJLaXQgV2luIl19
fX07CiAgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlvdXQt
dGVzdHMnKTsKLQorIAogICAgIHRyeSB7CiAgICAgICAgIHJlc291cmNlTG9hZGVyLl9sb2FkUmVz
dWx0c0ZpbGVzKCk7CiAgICAgfSBmaW5hbGx5IHsKQEAgLTExMiw2ICsxMTEsOCBAQCB0ZXN0KCdl
eHBlY3RhdGlvbnMgZmlsZXMgbG9hZGluZycsIDEsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZXN1
bHRzIGZpbGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9i
YWxzKCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlv
dXQtdGVzdHMnKTsKKyAgICAKICAgICAvLyBGSVhNRTogbG9hZGVyIHNob3VsZG4ndCBkZXBlbmQg
b24gc3RhdGUgZGVmaW5lZCBpbiBkYXNoYm9hcmRfYmFzZS5qcy4KICAgICBnX2J1aWxkZXJzVGhh
dEZhaWxlZFRvTG9hZCA9IFtdOwogCkBAIC0xMjIsMTQgKzEyMywxNCBAQCB0ZXN0KCdyZXN1bHRz
IGZpbGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgfQogCiAgICAgdmFy
IGJ1aWxkZXIxID0gJ2J1aWxkZXIxJzsKLSAgICBnX2J1aWxkZXJzW2J1aWxkZXIxXSA9IHRydWU7
CisgICAgY3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcjFdID0gdHJ1ZTsKICAgICByZXNvdXJjZUxv
YWRlci5faGFuZGxlUmVzdWx0c0ZpbGVMb2FkRXJyb3IoYnVpbGRlcjEpOwogCiAgICAgdmFyIGJ1
aWxkZXIyID0gJ2J1aWxkZXIyJzsKLSAgICBnX2J1aWxkZXJzW2J1aWxkZXIyXSA9IHRydWU7Cisg
ICAgY3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcjJdID0gdHJ1ZTsKICAgICByZXNvdXJjZUxvYWRl
ci5faGFuZGxlUmVzdWx0c0ZpbGVMb2FkRXJyb3IoYnVpbGRlcjIpOwogCiAgICAgZGVlcEVxdWFs
KGdfYnVpbGRlcnNUaGF0RmFpbGVkVG9Mb2FkLCBbYnVpbGRlcjEsIGJ1aWxkZXIyXSk7CiAgICAg
ZXF1YWwocmVzb3VyY2VMb2FkQ291bnQsIDIpOwogCi19KQorfSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0
bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4
cGxvcmVyLmh0bWwKaW5kZXggNGNkZDlhODZiNDk1ODMwMDhjZDQ3YTU3YmJhYmI1MWFmZTkwZWE3
OC4uZDRhYThlODU4YjM1ZjcwZTU5ODI3NjFhMjJlNGMwNmQwNGU4M2QzNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jl
ci5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGlt
ZWxpbmVfZXhwbG9yZXIuaHRtbApAQCAtMjkxLDcgKzI5MSw3IEBAIGZ1bmN0aW9uIHVwZGF0ZUJ1
aWxkSW5zcGVjdG9yKHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KQogICAgICAgICAg
ICAgJyAoJyArIHJlc3VsdHNbQlVJTERfTlVNQkVSU19LRVldW2luZGV4XSArICcpJzsKICAgICB9
IGVsc2UgewogICAgICAgICB2YXIgcmVzdWx0c1VybCA9ICdodHRwOi8vYnVpbGQuY2hyb21pdW0u
b3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy8nICsKLSAgICAgICAgICAgIGdfYnVp
bGRlcnNbYnVpbGRlcl0gKyAnLycgKyByZXN1bHRzW0NIUk9NRV9SRVZJU0lPTlNfS0VZXVtpbmRl
eF07CisgICAgICAgICAgICBjdXJyZW50QnVpbGRlcnMoKVtidWlsZGVyXSArICcvJyArIHJlc3Vs
dHNbQ0hST01FX1JFVklTSU9OU19LRVldW2luZGV4XTsKICAgICB9CiAKICAgICBhZGRSb3coJ0J1
aWxkOicsICc8YSBocmVmPSInICsgYnVpbGRVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JyArIGJ1
aWxkTnVtYmVyICsgJzwvYT4gKDxhIGhyZWY9IicgKyByZXN1bHRzVXJsICsgJyIgdGFyZ2V0PSJf
YmxhbmsiPnJlc3VsdHM8L2E+KScpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbAppbmRleCBhYTdhZTQzN2VmN2MxZTQxMjQz
ZTdlMTU3OTM5ODYzZDJhZTkwOTcxLi5kYTE1NTA1MzFmNjNmNWE4M2MzZWM3NDUwMGUwNzZjY2Fi
ZDllMmE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9h
cmRzL3RyZWVtYXAuaHRtbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNo
Ym9hcmRzL3RyZWVtYXAuaHRtbApAQCAtMjc0LDcgKzI3NCw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZh
bGlkSGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQogICAgIHN3aXRjaChrZXkpIHsKICAgICBjYXNl
ICdidWlsZGVyJzoKICAgICAgICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtl
eSwgdmFsdWUsCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGdfYnVp
bGRlcnM7IH0pOworICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB2YWx1ZSBpbiBjdXJy
ZW50QnVpbGRlcnMoKTsgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSAndHJl
ZW1hcGZvY3VzJzoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179345</attachid>
            <date>2012-12-13 14:49:18 -0800</date>
            <delta_ts>2012-12-13 18:03:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104941-20121213144638.patch</filename>
            <type>text/plain</type>
            <size>22695</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NjM2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTE3NGY4NjA4MDdmODJmODZkYzBhMjA0NzhjZjc1NWIz
YTJiN2Y5MS4uNzQ1N2VjNGU1ZGIzMjMxOGJlMTljZDNhMjQxZjBlNzM2MzU1ZTliMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5
IEBACisyMDEyLTEyLTEzICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBEYXNoYm9hcmQgY2xlYW51cDogcmVtb3ZlIHVzYWdlIG9mIGdsb2JhbCBnX2J1aWxk
ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0
OTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBQcmFua2UuCisKKyAgICAgICAgVGhlIGRh
c2hib2FyZHMgdXNlIGEgbG90IG9mIGdsb2JhbCBzdGF0ZSwgd2hpY2ggbWFrZXMgaGFja2luZyBv
biB0aGVtCisgICAgICAgIGNvbXBsaWNhdGVkLiBUaGlzIGNoYW5nZSByZW1vdmVzIHRoZSB1c2Ug
b2Ygb25lIHN1Y2ggZ2xvYmFsOiBnX2J1aWxkZXJzLgorICAgICAgICBJbiBtb3N0IGNhc2VzLCB3
ZSBjYW4ganVzdCB1c2UgY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzIGluc3RlYWQsCisg
ICAgICAgIHdoaWNoIGlzIG5vdyBjdXJyZW50QnVpbGRlcnMoKS4KKyAgICAgICAgU3VycHJpc2lu
Z2x5LCB0aGUgbW9zdCBjaGFuZ2VzIHdlcmUgcmVxdWlyZWQgdG8gdGhlIHVuaXQgdGVzdHMsIHNp
bmNlCisgICAgICAgIHRoZXkgd2VyZSBldmVuIGJpZ2dlciBvZmZlbmRlcnMgb2YgYmFkIGh5Z2ll
bmUsIHJlbHlpbmcgb24gZ2xvYmFsIHN0YXRlCisgICAgICAgIHNldCBieSBvdGhlciB0ZXN0cywg
cmFuZG9tbHkgY2xvYmJlcmluZyBnbG9iYWwgdmFyaWFibGVzIGluIHdheXMgdGhlCisgICAgICAg
IHJlYWwgY29kZSBkb2Vzbid0LCBldGMuCisKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzOgorICAgICAgICAoQnVpbGRlckdyb3VwLnByb3Rv
dHlwZS5zZXR1cCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy9kYXNoYm9hcmRfYmFzZS5qczoKKyAgICAgICAgKC5zd2l0Y2gucmV0dXJuKToKKyAgICAgICAg
KGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanM6CisgICAgICAgIChnZW5lcmF0
ZVBhZ2UpOgorICAgICAgICAoZ2V0QWxsVGVzdHNUcmllKToKKyAgICAgICAgKHByb2Nlc3NUZXN0
UnVuc0ZvckFsbEJ1aWxkZXJzKToKKyAgICAgICAgKHNob3dQb3B1cEZvckJ1aWxkKToKKyAgICAg
ICAgKGdlbmVyYXRlUGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSk6CisgICAgICAgIChsb2FkRXhw
ZWN0YXRpb25zTGF5b3V0VGVzdHMpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZF91bml0dGVzdHMuanM6CisgICAgICAgIChy
ZXNldEdsb2JhbHMpOgorICAgICAgICAoc3R1YlJlc3VsdHNCeUJ1aWxkZXIpOgorICAgICAgICAo
dGVzdCk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2Fk
ZXIuanM6CisgICAgICAgICguKToKKyAgICAgICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanM6CisKIDIwMTItMTItMTMgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IGEgbWlzLW5hbWVkIHZhcmlh
YmxlIGFmdGVyIHIxMzc2MjEuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0
U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXggZmEw
MzNhNTRkNGZkYWIyZWI1NjM4MzVmZjQzNjQxNGY3OTFiYTQxOC4uYTM4MDVhNTQ3MjgwNmMyZTlj
MDJhNDhmNjlkNTE4OGFhZjYwNDdkOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVfcmVzdWx0cy5odG1sCisrKyBiL1Rvb2xzL1Rl
c3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbApA
QCAtNjgsNyArNjgsNyBAQCBpbWcgewogZnVuY3Rpb24gZ2VuZXJhdGVQYWdlKCkKIHsKICAgICB2
YXIgaHRtbCA9IGh0bWxGb3JUZXN0VHlwZVN3aXRjaGVyKHRydWUpICsgJzxicj4nOwotICAgIGZv
ciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykKKyAgICBmb3IgKHZhciBidWlsZGVyIGluIGN1
cnJlbnRCdWlsZGVycygpKQogICAgICAgICBodG1sICs9IGh0bWxGb3JCdWlsZGVyKGJ1aWxkZXIp
OwogICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gaHRtbDsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMgYi9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2J1aWxkZXJzLmpzCmluZGV4IDk3
ZGZlMjcyOTdhMjVhMGRkMmNlYjg0NDRiZDVmNWE5NjM0NGY5NjkuLjMyNzMxZWExNjhiNWIzZDIy
NGEwMmI3YmZjYzY1NzY4Nzg4NjlhYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvYnVpbGRlcnMuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9idWlsZGVycy5qcwpAQCAtMTI3LDcgKzEyNyw2IEBAIEJ1
aWxkZXJHcm91cC5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpCiAgICAgLy8gRklYTUU6IGlu
c3RlYWQgb2YgY29weWluZyB0aGVzZSB0byBnbG9iYWxzLCBpdCB3b3VsZCBiZSBiZXR0ZXIgaWYK
ICAgICAvLyB0aGUgcmVzdCBvZiB0aGUgY29kZSByZWFkIHRoaW5ncyBmcm9tIHRoZSBCdWlsZGVy
R3JvdXAgaW5zdGFuY2UgZGlyZWN0bHkKICAgICBnX2RlZmF1bHRCdWlsZGVyTmFtZSA9IHRoaXMu
X2RlZmF1bHRCdWlsZGVyKCk7Ci0gICAgZ19idWlsZGVycyA9IHRoaXMuYnVpbGRlcnM7CiB9Owog
CiBCdWlsZGVyR3JvdXAucHJvdG90eXBlLl9kZWZhdWx0QnVpbGRlciA9IGZ1bmN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJv
YXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rh
c2hib2FyZF9iYXNlLmpzCmluZGV4IDZlZWUxZTdiZGVlNTM4MWQyMTkwOGQ3MmQ3MTMyZDQ1MTU4
MTg3YjUuLmU1MTc2OGE4YTI2MjI1ZGQ1OGMxOGEzYjIzNWIyNzIyMmNmNzFhNzggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jh
c2UuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNo
Ym9hcmRfYmFzZS5qcwpAQCAtMTg4LDcgKzE4OCw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlkSGFz
aFBhcmFtZXRlcldyYXBwZXIoa2V5LCB2YWx1ZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
cHJvYmFibHkgYmUgc3RvcmVkIG9uIGdfY3Jvc3NEYXNoYm9hcmRTdGF0ZSBsaWtlIGV2ZXJ5dGhp
bmcgZWxzZSBpbiB0aGlzIGZ1bmN0aW9uLgogICAgIGNhc2UgJ2J1aWxkZXInOgogICAgICAgICB2
YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0ZSwga2V5LCB2YWx1ZSwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKCkgeyByZXR1cm4gdmFsdWUgaW4gZ19idWlsZGVyczsgfSk7CisgICAgICAgICAg
ICBmdW5jdGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGN1cnJlbnRCdWlsZGVycygpOyB9KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlICd1c2VUZXN0RGF0YSc6CkBAIC00MTYsMTIg
KzQxNiwxNyBAQCBmdW5jdGlvbiBjdXJyZW50QnVpbGRlckdyb3VwKCkKICAgICByZXR1cm4gY3Vy
cmVudEJ1aWxkZXJHcm91cENhdGVnb3J5KClbZ19jcm9zc0Rhc2hib2FyZFN0YXRlLmdyb3VwXQog
fQogCitmdW5jdGlvbiBjdXJyZW50QnVpbGRlcnMoKQoreworICAgIHJldHVybiBjdXJyZW50QnVp
bGRlckdyb3VwKCkuYnVpbGRlcnM7Cit9CisKIGZ1bmN0aW9uIGlzVGlwT2ZUcmVlV2ViS2l0QnVp
bGRlcigpCiB7CiAgICAgcmV0dXJuIGN1cnJlbnRCdWlsZGVyR3JvdXAoKS5pc1RvVFdlYktpdDsK
IH0KIAotdmFyIGdfZGVmYXVsdEJ1aWxkZXJOYW1lLCBnX2J1aWxkZXJzOwordmFyIGdfZGVmYXVs
dEJ1aWxkZXJOYW1lOwogZnVuY3Rpb24gaW5pdEJ1aWxkZXJzKCkKIHsKICAgICBjdXJyZW50QnVp
bGRlckdyb3VwKCkuc2V0dXAoKTsKQEAgLTY5NCw3ICs2OTksNyBAQCBmdW5jdGlvbiBodG1sRm9y
VGVzdFR5cGVTd2l0Y2hlcihvcHRfbm9CdWlsZGVyTWVudSwgb3B0X2V4dHJhSHRtbCwgb3B0X2lu
Y2x1ZGVObwogICAgIGh0bWwgKz0gc2VsZWN0SFRNTCgnVGVzdCB0eXBlJywgJ3Rlc3RUeXBlJywg
VEVTVF9UWVBFUyk7CiAKICAgICBpZiAoIW9wdF9ub0J1aWxkZXJNZW51KSB7Ci0gICAgICAgIHZh
ciBidWlsZGVyc0Zvck1lbnUgPSBPYmplY3Qua2V5cyhnX2J1aWxkZXJzKTsKKyAgICAgICAgdmFy
IGJ1aWxkZXJzRm9yTWVudSA9IE9iamVjdC5rZXlzKGN1cnJlbnRCdWlsZGVycygpKTsKICAgICAg
ICAgaWYgKG9wdF9pbmNsdWRlTm9uZUJ1aWxkZXIpCiAgICAgICAgICAgICBidWlsZGVyc0Zvck1l
bnUudW5zaGlmdCgnLS0tLS0tLS0tLS0tLS0nKTsKICAgICAgICAgaHRtbCArPSBzZWxlY3RIVE1M
KCdCdWlsZGVyJywgJ2J1aWxkZXInLCBidWlsZGVyc0Zvck1lbnUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJk
LmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3Nf
ZGFzaGJvYXJkLmpzCmluZGV4IGQ0NGUzZTU4ZTY0ZTJhOTMwZGVlNTE4NjhlNWY5Mzc2YWRjOWZl
MWIuLmMzNzcxMWIzY2Q2Njk4ZDczZjg3NGMwNjlmZDM3ZDVhMTk2NmY2OTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hi
b2FyZC5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Zs
YWtpbmVzc19kYXNoYm9hcmQuanMKQEAgLTE1NSw3ICsxNTUsNyBAQCBmdW5jdGlvbiBnZW5lcmF0
ZVBhZ2UoKQogICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdGVQYWdlRm9yQnVpbGRlcihnX2N1cnJl
bnRTdGF0ZS5idWlsZGVyKTsKIAotICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykK
KyAgICBmb3IgKHZhciBidWlsZGVyIGluIGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICBwcm9j
ZXNzVGVzdFJlc3VsdHNGb3JCdWlsZGVyQXN5bmMoYnVpbGRlcik7CiAKICAgICBwb3N0SGVpZ2h0
Q2hhbmdlZE1lc3NhZ2UoKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxp
ZEhhc2hQYXJhbWV0ZXIoa2V5LCB2YWx1ZSkKICAgICBjYXNlICdidWlsZGVyJzoKICAgICAgICAg
dmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwgdmFsdWUsCiAgICAgICAgICAg
ICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gZ19idWlsZGVy
czsKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgaW4gY3VycmVudEJ1aWxkZXJzKCk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTQ3OSw3ICs0NzksNyBA
QCB2YXIgZ19hbGxUZXN0c1RyaWU7CiBmdW5jdGlvbiBnZXRBbGxUZXN0c1RyaWUoKQogewogICAg
IGlmICghZ19hbGxUZXN0c1RyaWUpCi0gICAgICAgIGdfYWxsVGVzdHNUcmllID0gbmV3IFRlc3RU
cmllKGdfYnVpbGRlcnMsIGdfcmVzdWx0c0J5QnVpbGRlcik7CisgICAgICAgIGdfYWxsVGVzdHNU
cmllID0gbmV3IFRlc3RUcmllKGN1cnJlbnRCdWlsZGVycygpLCBnX3Jlc3VsdHNCeUJ1aWxkZXIp
OwogCiAgICAgcmV0dXJuIGdfYWxsVGVzdHNUcmllOwogfQpAQCAtNjEwLDcgKzYxMCw3IEBAIGZ1
bmN0aW9uIGFsbFRlc3RzV2l0aFNhbWVQbGF0Zm9ybUFuZEJ1aWxkVHlwZShwbGF0Zm9ybSwgYnVp
bGRUeXBlKQogewogICAgIGlmICghZ19hbGxUZXN0c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxh
dGZvcm1dW2J1aWxkVHlwZV0pIHsKICAgICAgICAgdmFyIHRlc3RzID0ge307Ci0gICAgICAgIGZv
ciAodmFyIHRoaXNCdWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICAgICAgZm9yICh2YXIgdGhp
c0J1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgICAgIHZhciB0aGlzQnVp
bGRlckJ1aWxkSW5mbyA9IHBsYXRmb3JtQW5kQnVpbGRUeXBlKHRoaXNCdWlsZGVyKTsKICAgICAg
ICAgICAgIGlmICh0aGlzQnVpbGRlckJ1aWxkSW5mby5idWlsZFR5cGUgPT0gYnVpbGRUeXBlICYm
IHRoaXNCdWlsZGVyQnVpbGRJbmZvLnBsYXRmb3JtID09IHBsYXRmb3JtKSB7CiAgICAgICAgICAg
ICAgICAgYWRkVGVzdHNGb3JCdWlsZGVyKHRoaXNCdWlsZGVyLCB0ZXN0cyk7CkBAIC05MTksNyAr
OTE5LDcgQEAgZnVuY3Rpb24gcHJvY2Vzc1Rlc3RSZXN1bHRzRm9yQnVpbGRlckFzeW5jKGJ1aWxk
ZXIpCiAKIGZ1bmN0aW9uIHByb2Nlc3NUZXN0UnVuc0ZvckFsbEJ1aWxkZXJzKCkKIHsKLSAgICBm
b3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpCisgICAgZm9yICh2YXIgYnVpbGRlciBpbiBj
dXJyZW50QnVpbGRlcnMoKSkKICAgICAgICAgcHJvY2Vzc1Rlc3RSdW5zRm9yQnVpbGRlcihidWls
ZGVyKTsKIH0KIApAQCAtMTIzNiw3ICsxMjM2LDcgQEAgZnVuY3Rpb24gc2hvd1BvcHVwRm9yQnVp
bGQoZSwgYnVpbGRlciwgaW5kZXgsIG9wdF90ZXN0TmFtZSkKIAogICAgICAgICB2YXIgY2hyb21l
UmV2aXNpb24gPSBnX3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0uY2hyb21lUmV2aXNpb25baW5k
ZXhdOwogICAgICAgICBpZiAoY2hyb21lUmV2aXNpb24gJiYgaXNMYXlvdXRUZXN0UmVzdWx0cygp
KSB7Ci0gICAgICAgICAgICBodG1sICs9ICc8bGk+PGEgaHJlZj0iJyArIFRFU1RfUkVTVUxUU19C
QVNFX1BBVEggKyBnX2J1aWxkZXJzW2J1aWxkZXJdICsKKyAgICAgICAgICAgIGh0bWwgKz0gJzxs
aT48YSBocmVmPSInICsgVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCArIGN1cnJlbnRCdWlsZGVycygp
W2J1aWxkZXJdICsKICAgICAgICAgICAgICAgICAnLycgKyBjaHJvbWVSZXZpc2lvbiArICcvbGF5
b3V0LXRlc3QtcmVzdWx0cy56aXAiPmxheW91dC10ZXN0LXJlc3VsdHMuemlwPC9hPjwvbGk+JzsK
ICAgICAgICAgfQogICAgIH0KQEAgLTE2MjYsNyArMTYyNiw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRl
UGFnZUZvckV4cGVjdGF0aW9uc1VwZGF0ZSgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3Ig
KHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICBmb3IgKHZhciBidWlsZGVyIGluIGN1
cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIHZhciB0ZXN0cyA9IGdfcGVyQnVpbGRlcldpdGhF
eHBlY3RhdGlvbnNCdXROb0ZhaWx1cmVzW2J1aWxkZXJdCiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIC8vIEFueXRoaW5nIGV4dHJh
IGluIHRoaXMgY2FzZSBpcyB3aGF0IGlzIGxpc3RlZCBpbiBleHBlY3RhdGlvbnMKQEAgLTE3OTMs
NyArMTc5Myw3IEBAIGZ1bmN0aW9uIGh0bWxGb3JJbmRpdmlkdWFsVGVzdE9uQWxsQnVpbGRlcnMo
dGVzdCkKICAgICB9CiAKICAgICB2YXIgc2tpcHBlZEJ1aWxkZXJzID0gW10KLSAgICBmb3IgKGJ1
aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJHcm91cCgpLmJ1aWxkZXJzKSB7CisgICAgZm9yIChidWls
ZGVyIGluIGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIGlmIChzaG93bkJ1aWxkZXJzLmlu
ZGV4T2YoYnVpbGRlcikgPT0gLTEpCiAgICAgICAgICAgICBza2lwcGVkQnVpbGRlcnMucHVzaChi
dWlsZGVyKTsKICAgICB9CkBAIC0yMjU1LDcgKzIyNTUsNyBAQCBmdW5jdGlvbiBsb2FkRXhwZWN0
YXRpb25zTGF5b3V0VGVzdHModGVzdCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogICAgIHZhciBy
ZXZpc2lvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgIHJl
dmlzaW9uQ29udGFpbmVyLnRleHRDb250ZW50ID0gIlNob3dpbmcgcmVzdWx0cyBmb3I6ICIKICAg
ICBleHBlY3RhdGlvbnNDb250YWluZXIuYXBwZW5kQ2hpbGQocmV2aXNpb25Db250YWluZXIpOwot
ICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gZ19idWlsZGVycykgeworICAgIGZvciAodmFyIGJ1aWxk
ZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgaWYgKGJ1aWxkZXJNYXN0ZXIoYnVp
bGRlcikubmFtZSA9PSBXRUJLSVRfQlVJTERFUl9NQVNURVIpIHsKICAgICAgICAgICAgIHZhciBs
YXRlc3RSZXZpc2lvbiA9IGdfY3VycmVudFN0YXRlLnJldmlzaW9uIHx8IGdfcmVzdWx0c0J5QnVp
bGRlcltidWlsZGVyXS53ZWJraXRSZXZpc2lvblswXTsKICAgICAgICAgICAgIHZhciBidWlsZElu
Zm8gPSBidWlsZEluZm9Gb3JSZXZpc2lvbihidWlsZGVyLCBsYXRlc3RSZXZpc2lvbik7CkBAIC0y
MjcyLDcgKzIyNzIsNyBAQCBmdW5jdGlvbiBsb2FkRXhwZWN0YXRpb25zTGF5b3V0VGVzdHModGVz
dCwgZXhwZWN0YXRpb25zQ29udGFpbmVyKQogICAgIHZhciB0ZXN0V2l0aG91dFN1ZmZpeCA9IHRl
c3Quc3Vic3RyaW5nKDAsIHRlc3QubGFzdEluZGV4T2YoJy4nKSk7CiAgICAgdmFyIGFjdHVhbFJl
c3VsdFN1ZmZpeGVzID0gWyctYWN0dWFsLnR4dCcsICctYWN0dWFsLnBuZycsICctY3Jhc2gtbG9n
LnR4dCcsICctZGlmZi50eHQnLCAnLXdkaWZmLmh0bWwnLCAnLWRpZmYucG5nJ107CiAKLSAgICBm
b3IgKHZhciBidWlsZGVyIGluIGdfYnVpbGRlcnMpIHsKKyAgICBmb3IgKHZhciBidWlsZGVyIGlu
IGN1cnJlbnRCdWlsZGVycygpKSB7CiAgICAgICAgIHZhciBhY3R1YWxSZXN1bHRzQmFzZTsKICAg
ICAgICAgaWYgKGJ1aWxkZXJNYXN0ZXIoYnVpbGRlcikubmFtZSA9PSBXRUJLSVRfQlVJTERFUl9N
QVNURVIpIHsKICAgICAgICAgICAgIHZhciBsYXRlc3RSZXZpc2lvbiA9IGdfY3VycmVudFN0YXRl
LnJldmlzaW9uIHx8IGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXS53ZWJraXRSZXZpc2lvblsw
XTsKQEAgLTIyODAsNyArMjI4MCw3IEBAIGZ1bmN0aW9uIGxvYWRFeHBlY3RhdGlvbnNMYXlvdXRU
ZXN0cyh0ZXN0LCBleHBlY3RhdGlvbnNDb250YWluZXIpCiAgICAgICAgICAgICBhY3R1YWxSZXN1
bHRzQmFzZSA9ICdodHRwOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzLycgKyBidWlsZGVyICsK
ICAgICAgICAgICAgICAgICAnL3InICsgYnVpbGRJbmZvLnJldmlzaW9uU3RhcnQgKyAnICgnICsg
YnVpbGRJbmZvLmJ1aWxkTnVtYmVyICsgJykvJzsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBhY3R1YWxSZXN1bHRzQmFzZSA9IFRFU1RfUkVTVUxUU19CQVNFX1BBVEggKyBnX2J1aWxkZXJz
W2J1aWxkZXJdICsgJy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvJzsKKyAgICAgICAgICAg
IGFjdHVhbFJlc3VsdHNCYXNlID0gVEVTVF9SRVNVTFRTX0JBU0VfUEFUSCArIGN1cnJlbnRCdWls
ZGVycygpW2J1aWxkZXJdICsgJy9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvJzsKIAogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFjdHVhbFJlc3VsdFN1ZmZpeGVzLmxlbmd0aDsgaSsr
KSB7CiAgICAgICAgICAgICBhZGRFeHBlY3RhdGlvbkl0ZW0oZXhwZWN0YXRpb25zQ29udGFpbmVy
cywgZXhwZWN0YXRpb25zQ29udGFpbmVyLCBudWxsLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0
cy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNz
X2Rhc2hib2FyZF91bml0dGVzdHMuanMKaW5kZXggYWMyNjRiNDA3ZTlmM2YzNDk3Njk4ZDM5NDkw
MjY0MWUyNWM1YjNjMi4uMmRhNjM0MWJiNzhhZmFiYzZkYmI3ODBlMWE5ODJkZWVhNWIxNGE5NiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFr
aW5lc3NfZGFzaGJvYXJkX3VuaXR0ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmRfdW5pdHRlc3RzLmpzCkBAIC0z
Miw3ICszMiw2IEBAIGZ1bmN0aW9uIHJlc2V0R2xvYmFscygpCiAgICAgYWxsVGVzdHMgPSBudWxs
OwogICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybSA9IHt9OwogICAgIGdfcmVzdWx0c0J5QnVp
bGRlciA9IHt9OwotICAgIGdfYnVpbGRlcnMgPSB7fTsKICAgICBnX2FsbEV4cGVjdGF0aW9ucyA9
IG51bGw7CiAgICAgZ19hbGxUZXN0c1RyaWUgPSBudWxsOwogICAgIGdfY3VycmVudFN0YXRlID0g
e307CkBAIC00NSwyNiArNDQsMzUgQEAgZnVuY3Rpb24gcmVzZXRHbG9iYWxzKCkKICAgICBMT0FE
X0JVSUxEQk9UX0RBVEEoW3sKICAgICAgICAgbmFtZTogJ0Nocm9taXVtV2Via2l0JywKICAgICAg
ICAgdXJsOiAnZHVtbXl1cmwnLCAKLSAgICAgICAgdGVzdHM6IHsnbGF5b3V0LXRlc3RzJzogeydi
dWlsZGVycyc6IFsnV2ViS2l0IExpbnV4JywgJ1dlYktpdCBMaW51eCAoZGJnKScsICdXZWJLaXQg
TWFjMTAuNycsICdXZWJLaXQgV2luJ119fQorICAgICAgICB0ZXN0czogeydsYXlvdXQtdGVzdHMn
OiB7J2J1aWxkZXJzJzogWydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExpbnV4IChkYmcpJywgJ1dl
YktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4nLCAnV2ViS2l0IFdpbiAoZGJnKSddfX0KICAgICB9
LAogICAgIHsKICAgICAgICAgbmFtZTogJ3dlYmtpdC5vcmcnLAogICAgICAgICB1cmw6ICdkdW1t
eXVybCcsCiAgICAgICAgIHRlc3RzOiB7J2xheW91dC10ZXN0cyc6IHsnYnVpbGRlcnMnOiBbJ0Fw
cGxlIFNub3dMZW9wYXJkIFRlc3RzJywgJ1F0IExpbnV4IFRlc3RzJywgJ0Nocm9taXVtIE1hYzEw
LjcgVGVzdHMnLCAnR1RLIFdpbiddfX0KICAgICB9XSk7CisgCiAgICAgZm9yICh2YXIgZ3JvdXAg
aW4gTEFZT1VUX1RFU1RTX0JVSUxERVJfR1JPVVBTKQogICAgICAgICBMQVlPVVRfVEVTVFNfQlVJ
TERFUl9HUk9VUFNbZ3JvdXBdID0gbnVsbDsKIH0KIAotZnVuY3Rpb24gcnVuRXhwZWN0YXRpb25z
VGVzdChidWlsZGVyLCB0ZXN0LCBleHBlY3RhdGlvbnMsIG1vZGlmaWVycykKK2Z1bmN0aW9uIHN0
dWJSZXN1bHRzQnlCdWlsZGVyKGRhdGEpCiB7Ci0gICAgZ19idWlsZGVyc1tidWlsZGVyXSA9IHRy
dWU7CisgICAgZm9yICh2YXIgYnVpbGRlciBpbiBjdXJyZW50QnVpbGRlcnMoKSkKKyAgICB7Cisg
ICAgICAgIGdfcmVzdWx0c0J5QnVpbGRlcltidWlsZGVyXSA9IGRhdGFbYnVpbGRlcl0gfHwgeyd0
ZXN0cyc6IFtdfTsKKyAgICB9OworfQogCitmdW5jdGlvbiBydW5FeHBlY3RhdGlvbnNUZXN0KGJ1
aWxkZXIsIHRlc3QsIGV4cGVjdGF0aW9ucywgbW9kaWZpZXJzKQorewogICAgIC8vIFB1dCBpbiBz
b21lIGR1bW15IHJlc3VsdHMuIHByb2Nlc3NFeHBlY3RhdGlvbnMgZXhwZWN0cyB0aGUgdGVzdCB0
byBiZQogICAgIC8vIHRoZXJlLgogICAgIHZhciB0ZXN0cyA9IHt9OwogICAgIHRlc3RzW3Rlc3Rd
ID0geydyZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfTsKLSAgICBn
X3Jlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlcl0gPSB7J3Rlc3RzJzogdGVzdHN9OworICAgIHZhciBy
ZXN1bHRzID0ge307CisgICAgcmVzdWx0c1tidWlsZGVyXSA9IHsndGVzdHMnOiB0ZXN0c307Cisg
ICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIocmVzdWx0cyk7CiAKICAgICBwcm9jZXNzRXhwZWN0YXRp
b25zKCk7CiAgICAgdmFyIHJlc3VsdHNGb3JUZXN0ID0gY3JlYXRlUmVzdWx0c09iamVjdEZvclRl
c3QodGVzdCwgYnVpbGRlcik7CkBAIC05NCw2ICsxMDIsOCBAQCB0ZXN0KCdmbGF0dGVuVHJpZScs
IDEsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxlYXNlRmFpbCcsIDIsIGZ1bmN0aW9uKCkgewog
ICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1
bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CisKICAgICB2YXIgYnVpbGRlciA9ICdXZWJLaXQgV2lu
JzsKICAgICB2YXIgdGVzdCA9ICdmb28vMS5odG1sJzsKICAgICB2YXIgZXhwZWN0YXRpb25zQXJy
YXkgPSBbCkBAIC0xMDUsNiArMTE1LDcgQEAgdGVzdCgncmVsZWFzZUZhaWwnLCAyLCBmdW5jdGlv
bigpIHsKIAogdGVzdCgncmVsZWFzZUZhaWxEZWJ1Z0NyYXNoUmVsZWFzZUJ1aWxkZXInLCAyLCBm
dW5jdGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdA
VG9UIC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVyID0g
J1dlYktpdCBXaW4nOwogICAgIHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBleHBl
Y3RhdGlvbnNBcnJheSA9IFsKQEAgLTExOCw2ICsxMjksNyBAQCB0ZXN0KCdyZWxlYXNlRmFpbERl
YnVnQ3Jhc2hSZWxlYXNlQnVpbGRlcicsIDIsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZWxlYXNl
RmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1aWxkZXInLCAyLCBmdW5jdGlvbigpIHsKICAgICByZXNldEds
b2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3JnJywgJ2xh
eW91dC10ZXN0cycpOwogICAgIHZhciBidWlsZGVyID0gJ1dlYktpdCBXaW4gKGRiZyknOwogICAg
IHZhciB0ZXN0ID0gJ2Zvby8xLmh0bWwnOwogICAgIHZhciBleHBlY3RhdGlvbnNBcnJheSA9IFsK
QEAgLTEzMSw2ICsxNDMsNyBAQCB0ZXN0KCdyZWxlYXNlRmFpbERlYnVnQ3Jhc2hEZWJ1Z0J1aWxk
ZXInLCAyLCBmdW5jdGlvbigpIHsKIAogdGVzdCgnb3ZlcnJpZGVKdXN0QnVpbGRUeXBlJywgMTIs
IGZ1bmN0aW9uKCkgewogICAgIHJlc2V0R2xvYmFscygpOworICAgIGxvYWRCdWlsZGVyc0xpc3Qo
J0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFyIHRlc3QgPSAn
YmFyLzEuaHRtbCc7CiAgICAgZ19leHBlY3RhdGlvbnNCeVBsYXRmb3JtWydDSFJPTUlVTSddID0g
Z2V0UGFyc2VkRXhwZWN0YXRpb25zKCdiYXIgWyBXb250Rml4IEZhaWx1cmUgUGFzcyBUaW1lb3V0
IF1cbicgKwogICAgICAgICAnWyBNYWMgXSAnICsgdGVzdCArICcgWyBXb250Rml4IEZhaWx1cmUg
XVxuJyArCkBAIC0yMjcsOSArMjQwLDEwIEBAIHRlc3QoJ2ZpbHRlckJ1Z3MnLDQsIGZ1bmN0aW9u
KCkgewogCiB0ZXN0KCdnZXRFeHBlY3RhdGlvbnMnLCAxNiwgZnVuY3Rpb24oKSB7CiAgICAgcmVz
ZXRHbG9iYWxzKCk7Ci0gICAgZ19idWlsZGVyc1snV2ViS2l0IFdpbiddID0gdHJ1ZTsKLSAgICBn
X3Jlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdXZWJLaXQgV2luJzogeworICAgIGxvYWRC
dWlsZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CisgCisg
ICAgc3R1YlJlc3VsdHNCeUJ1aWxkZXIoeworICAgICAgICAnV2ViS2l0IFdpbicgOiB7CiAgICAg
ICAgICAgICAndGVzdHMnOiB7CiAgICAgICAgICAgICAgICAgJ2Zvby90ZXN0MS5odG1sJzogeydy
ZXN1bHRzJzogW1sxMDAsICdGJ11dLCAndGltZXMnOiBbWzEwMCwgMF1dfSwKICAgICAgICAgICAg
ICAgICAnZm9vL3Rlc3QyLmh0bWwnOiB7J3Jlc3VsdHMnOiBbWzEwMCwgJ0YnXV0sICd0aW1lcyc6
IFtbMTAwLCAwXV19LApAQCAtMjM3LDcgKzI1MSw3IEBAIHRlc3QoJ2dldEV4cGVjdGF0aW9ucycs
IDE2LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAndGVzdDEuaHRtbCc6IHsncmVzdWx0
cyc6IFtbMTAwLCAnRiddXSwgJ3RpbWVzJzogW1sxMDAsIDBdXX0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0KKyAgICB9KTsKIAogICAgIGdfZXhwZWN0YXRpb25zQnlQbGF0Zm9ybVsn
Q0hST01JVU0nXSA9IGdldFBhcnNlZEV4cGVjdGF0aW9ucygnQnVnKDEyMykgZm9vIFsgRmFpbHVy
ZSBQYXNzIENyYXNoIF1cbicgKwogICAgICAgICAnQnVnKEZvbykgWyBSZWxlYXNlIF0gZm9vL3Rl
c3QxLmh0bWwgWyBGYWlsdXJlIF1cbicgKwpAQCAtMzE2LDYgKzMzMCw3IEBAIHRlc3QoJ3N1YnN0
cmluZ0xpc3QnLCAyLCBmdW5jdGlvbigpIHsKIH0pOwogCiB0ZXN0KCdodG1sRm9yVGVzdHNXaXRo
RXhwZWN0YXRpb25zQnV0Tm9GYWlsdXJlcycsIDQsIGZ1bmN0aW9uKCkgeworICAgIGxvYWRCdWls
ZGVyc0xpc3QoJ0BUb1QgLSBjaHJvbWl1bS5vcmcnLCAnbGF5b3V0LXRlc3RzJyk7CiAgICAgdmFy
IGJ1aWxkZXIgPSAnV2ViS2l0IFdpbic7CiAgICAgZ19wZXJCdWlsZGVyV2l0aEV4cGVjdGF0aW9u
c0J1dE5vRmFpbHVyZXNbYnVpbGRlcl0gPSBbJ3Bhc3NpbmctdGVzdDEuaHRtbCcsICdwYXNzaW5n
LXRlc3QyLmh0bWwnXTsKICAgICBnX3BlckJ1aWxkZXJTa2lwcGVkUGF0aHNbYnVpbGRlcl0gPSBb
J3NraXBwZWQtdGVzdDEuaHRtbCddOwpAQCAtMzY4LDExICszODMsMTMgQEAgdGVzdCgnaHRtbEZv
clRlc3RUeXBlU3dpdGNoZXJHcm91cCcsIDYsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdodG1sRm9y
SW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzJywgMSwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRH
bG9iYWxzKCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICds
YXlvdXQtdGVzdHMnKTsKICAgICBlcXVhbChodG1sRm9ySW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxk
ZXJzKCdmb28vbm9uZXhpc3RhbnQuaHRtbCcpLCAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5UZXN0
IG5vdCBmb3VuZC4gRWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBhc3Nl
cyBvbiBhbGwgcGxhdGZvcm1zLjwvZGl2PicpOwogfSk7CiAKIHRlc3QoJ2h0bWxGb3JJbmRpdmlk
dWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzTm9uZXhpc3RhbnQnLCAxLCBmdW5j
dGlvbigpIHsKICAgICByZXNldEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9U
IC0gY2hyb21pdW0ub3JnJywgJ2xheW91dC10ZXN0cycpOwogICAgIGVxdWFsKGh0bWxGb3JJbmRp
dmlkdWFsVGVzdE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzKCdmb28vbm9uZXhpc3RhbnQu
aHRtbCcpLAogICAgICAgICAnPGRpdiBjbGFzcz0ibm90LWZvdW5kIj5UZXN0IG5vdCBmb3VuZC4g
RWl0aGVyIGl0IGRvZXMgbm90IGV4aXN0LCBpcyBza2lwcGVkIG9yIHBhc3NlcyBvbiBhbGwgcGxh
dGZvcm1zLjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1leHBlY3RhdGlvbnMgdGVzdD1m
b28vbm9uZXhpc3RhbnQuaHRtbD4nICsKQEAgLTQwNSw3ICs0MjIsNyBAQCB0ZXN0KCdodG1sRm9y
SW5kaXZpZHVhbFRlc3RPbkFsbEJ1aWxkZXJzV2l0aFJlc3VsdHNMaW5rcycsIDEsIGZ1bmN0aW9u
KCkgewogICAgICAgICAnPC90YWJsZT4nICsKICAgICAgICAgJzxkaXY+VGhlIGZvbGxvd2luZyBi
dWlsZGVycyBlaXRoZXIgZG9uXCd0IHJ1biB0aGlzIHRlc3QgKGUuZy4gaXRcJ3Mgc2tpcHBlZCkg
b3IgYWxsIHJ1bnMgcGFzc2VkOjwvZGl2PicgKwogICAgICAgICAnPGRpdiBjbGFzcz1za2lwcGVk
LWJ1aWxkZXItbGlzdD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRl
cj5XZWJLaXQgTGludXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJL
aXQgTWFjMTAuNzwvZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48L2Rp
dj4nICsKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgTGlu
dXggKGRiZyk8L2Rpdj48ZGl2IGNsYXNzPXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgTWFjMTAuNzwv
ZGl2PjxkaXYgY2xhc3M9c2tpcHBlZC1idWlsZGVyPldlYktpdCBXaW48L2Rpdj48ZGl2IGNsYXNz
PXNraXBwZWQtYnVpbGRlcj5XZWJLaXQgV2luIChkYmcpPC9kaXY+JyArCiAgICAgICAgICc8L2Rp
dj4nICsKICAgICAgICAgJzxkaXYgY2xhc3M9ZXhwZWN0YXRpb25zIHRlc3Q9ZHVtbXl0ZXN0Lmh0
bWw+JyArCiAgICAgICAgICAgICAnPGRpdj48c3BhbiBjbGFzcz1saW5rIG9uY2xpY2s9InNldFF1
ZXJ5UGFyYW1ldGVyKFwnc2hvd0V4cGVjdGF0aW9uc1wnLCB0cnVlKSI+U2hvdyByZXN1bHRzPC9z
cGFuPiB8ICcgKwpAQCAtNDQ5LDYgKzQ2Niw3IEBAIHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFsVGVz
dE9uQWxsQnVpbGRlcnNXaXRoUmVzdWx0c0xpbmtzV2Via2l0TWFzdGVyJywgMSwgZnVuY3RpCiAK
IHRlc3QoJ2h0bWxGb3JJbmRpdmlkdWFsVGVzdHMnLCA0LCBmdW5jdGlvbigpIHsKICAgICByZXNl
dEdsb2JhbHMoKTsKKyAgICBsb2FkQnVpbGRlcnNMaXN0KCdAVG9UIC0gY2hyb21pdW0ub3JnJywg
J2xheW91dC10ZXN0cycpOwogICAgIHZhciB0ZXN0MSA9ICdmb28vbm9uZXhpc3RhbnQuaHRtbCc7
CiAgICAgdmFyIHRlc3QyID0gJ2Jhci9ub25leGlzdGFudC5odG1sJzsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXIuanMgYi9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwppbmRleCBjNzQ4
OTAxNjE3YjhlNDc4NTdjYjY4ZjQzYTU1ZjcwNTBlOTllZTgxLi5hNmQ4NTQzMDYwODkyZTIwNDhi
YWRjM2U3MzEwMDVhZTUzMDEzMTIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlci5qcwpAQCAtOTAsNyArOTAsNyBAQCBsb2FkZXIuTG9h
ZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHBhcnNlUGFyYW1ldGVycygpOwogCi0g
ICAgICAgIGZvciAodmFyIGJ1aWxkZXJOYW1lIGluIGdfYnVpbGRlcnMpCisgICAgICAgIGZvciAo
dmFyIGJ1aWxkZXJOYW1lIGluIGN1cnJlbnRCdWlsZGVycygpKQogICAgICAgICAgICAgdGhpcy5f
bG9hZFJlc3VsdHNGaWxlRm9yQnVpbGRlcihidWlsZGVyTmFtZSk7CiAgICAgfSwKICAgICBfbG9h
ZFJlc3VsdHNGaWxlRm9yQnVpbGRlcjogZnVuY3Rpb24oYnVpbGRlck5hbWUpCkBAIC0xNjcsMTIg
KzE2NywxMiBAQCBsb2FkZXIuTG9hZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBSZW1v
dmUgdGhpcyBidWlsZGVyIGZyb20gYnVpbGRlcnMsIHNvIHdlIGRvbid0IHRyeSB0byB1c2UgdGhl
CiAgICAgICAgIC8vIGRhdGEgdGhhdCBpc24ndCB0aGVyZS4KLSAgICAgICAgZGVsZXRlIGdfYnVp
bGRlcnNbYnVpbGRlck5hbWVdOworICAgICAgICBkZWxldGUgY3VycmVudEJ1aWxkZXJzKClbYnVp
bGRlck5hbWVdOwogCiAgICAgICAgIC8vIENoYW5nZSB0aGUgZGVmYXVsdCBidWlsZGVyIG5hbWUg
aWYgaXQgaGFzIGJlZW4gZGVsZXRlZC4KICAgICAgICAgaWYgKGdfZGVmYXVsdEJ1aWxkZXJOYW1l
ID09IGJ1aWxkZXJOYW1lKSB7CiAgICAgICAgICAgICBnX2RlZmF1bHRCdWlsZGVyTmFtZSA9IG51
bGw7Ci0gICAgICAgICAgICBmb3IgKHZhciBhdmFpbGFibGVCdWlsZGVyTmFtZSBpbiBnX2J1aWxk
ZXJzKSB7CisgICAgICAgICAgICBmb3IgKHZhciBhdmFpbGFibGVCdWlsZGVyTmFtZSBpbiBjdXJy
ZW50QnVpbGRlcnMoKSkgewogICAgICAgICAgICAgICAgIGdfZGVmYXVsdEJ1aWxkZXJOYW1lID0g
YXZhaWxhYmxlQnVpbGRlck5hbWU7CiAgICAgICAgICAgICAgICAgZ19kZWZhdWx0RGFzaGJvYXJk
U3BlY2lmaWNTdGF0ZVZhbHVlcy5idWlsZGVyID0gYXZhaWxhYmxlQnVpbGRlck5hbWU7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTQsNyArMTk0LDcgQEAgbG9hZGVyLkxvYWRlci5wcm90
b3R5cGUgPSB7CiAgICAgfSwKICAgICBfaGF2ZVJlc3VsdHNGaWxlc0xvYWRlZDogZnVuY3Rpb24o
KQogICAgIHsKLSAgICAgICAgZm9yICh2YXIgYnVpbGRlciBpbiBnX2J1aWxkZXJzKSB7CisgICAg
ICAgIGZvciAodmFyIGJ1aWxkZXIgaW4gY3VycmVudEJ1aWxkZXJzKCkpIHsKICAgICAgICAgICAg
IGlmICghZ19yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJdKQogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9sb2FkZXJfdW5pdHRlc3RzLmpzCmluZGV4IDhmNjBiYjYz
ZTE5MGM3YTdlY2ExYzczODEzZjI5MmI2YmQyN2VjOTAuLjRjMWU3NmNhMGJiOTZmMGM1MjBhMTFk
NTg2ZjM1OGJiOTgyM2Q4OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvbG9hZGVyX3VuaXR0ZXN0cy5qcworKysgYi9Ub29scy9UZXN0UmVzdWx0
U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2xvYWRlcl91bml0dGVzdHMuanMKQEAgLTU0LDkgKzU0
LDExIEBAIHRlc3QoJ2xvYWRpbmcgc3RlcHMnLCAxLCBmdW5jdGlvbigpIHsKICAgICB9CiB9KTsK
IAotdGVzdCgncmVzdWx0cyBmaWxlcyBsb2FkaW5nJywgNSwgZnVuY3Rpb24oKSB7CisvLyBUb3Rh
bCBudW1iZXIgb2YgYXNzZXJ0aW9ucyBpcyAxIGZvciB0aGUgZGVlcEVxdWFsIG9mIHRoZSBidWls
ZGVyIGxpc3RzCisvLyBhbmQgdGhlbiAyIHBlciBidWlsZGVyIChvbmUgZm9yIG9rLCBvbmUgZm9y
IGRlZXBFcXVhbCBvZiB0ZXN0cykuCit0ZXN0KCdyZXN1bHRzIGZpbGVzIGxvYWRpbmcnLCAxMSwg
ZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxzKCk7Ci0gICAgdmFyIGV4cGVjdGVkTG9hZGVk
QnVpbGRlcnMgPSBbIldlYktpdCBMaW51eCIsICJXZWJLaXQgV2luIl07CisgICAgdmFyIGV4cGVj
dGVkTG9hZGVkQnVpbGRlcnMgPSAgWydXZWJLaXQgTGludXgnLCAnV2ViS2l0IExpbnV4IChkYmcp
JywgJ1dlYktpdCBNYWMxMC43JywgJ1dlYktpdCBXaW4nLCAnV2ViS2l0IFdpbiAoZGJnKSddOwog
ICAgIHZhciBsb2FkZWRCdWlsZGVycyA9IFtdOwogICAgIHZhciByZXNvdXJjZUxvYWRlciA9IG5l
dyBsb2FkZXIuTG9hZGVyKCk7CiAgICAgcmVzb3VyY2VMb2FkZXIuX2xvYWROZXh0ID0gZnVuY3Rp
b24oKSB7CkBAIC02OSwxNiArNzEsMTMgQEAgdGVzdCgncmVzdWx0cyBmaWxlcyBsb2FkaW5nJywg
NSwgZnVuY3Rpb24oKSB7CiAKICAgICB2YXIgcmVxdWVzdEZ1bmN0aW9uID0gbG9hZGVyLnJlcXVl
c3Q7CiAgICAgbG9hZGVyLnJlcXVlc3QgPSBmdW5jdGlvbih1cmwsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykgewotICAgICAgICB2YXIgYnVpbGRlck5hbWUgPSAvYnVpbGRlcj0oW1x3
IF0rKSYvLmV4ZWModXJsKVsxXTsKKyAgICAgICAgdmFyIGJ1aWxkZXJOYW1lID0gL2J1aWxkZXI9
KFtcdyAoKS5dKykmLy5leGVjKHVybClbMV07CiAgICAgICAgIGxvYWRlZEJ1aWxkZXJzLnB1c2go
YnVpbGRlck5hbWUpOwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soe3Jlc3BvbnNlVGV4dDogJ3si
dmVyc2lvbiI6IDQsICInICsgYnVpbGRlck5hbWUgKyAnIjogeyJzZWNvbmRzU2luY2VFcG9jaCI6
IFsnICsgRGF0ZS5ub3coKSArICddLCAidGVzdHMiOiB7fX19J30pOwogICAgIH0KIAotICAgIGdf
YnVpbGRlcnMgPSB7IldlYktpdCBMaW51eCI6IHRydWUsICJXZWJLaXQgV2luIjogdHJ1ZX07Ci0K
LSAgICBidWlsZGVycy5tYXN0ZXJzWydDaHJvbWl1bVdlYmtpdCddID0geyd0ZXN0cyc6IHsnbGF5
b3V0LXRlc3RzJzoge2J1aWxkZXJzOiBbIldlYktpdCBMaW51eCIsICJXZWJLaXQgV2luIl19fX07
CiAgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlvdXQtdGVz
dHMnKTsKLQorIAogICAgIHRyeSB7CiAgICAgICAgIHJlc291cmNlTG9hZGVyLl9sb2FkUmVzdWx0
c0ZpbGVzKCk7CiAgICAgfSBmaW5hbGx5IHsKQEAgLTExMiw2ICsxMTEsOCBAQCB0ZXN0KCdleHBl
Y3RhdGlvbnMgZmlsZXMgbG9hZGluZycsIDEsIGZ1bmN0aW9uKCkgewogCiB0ZXN0KCdyZXN1bHRz
IGZpbGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgcmVzZXRHbG9iYWxz
KCk7CisgICAgbG9hZEJ1aWxkZXJzTGlzdCgnQFRvVCAtIGNocm9taXVtLm9yZycsICdsYXlvdXQt
dGVzdHMnKTsKKyAgICAKICAgICAvLyBGSVhNRTogbG9hZGVyIHNob3VsZG4ndCBkZXBlbmQgb24g
c3RhdGUgZGVmaW5lZCBpbiBkYXNoYm9hcmRfYmFzZS5qcy4KICAgICBnX2J1aWxkZXJzVGhhdEZh
aWxlZFRvTG9hZCA9IFtdOwogCkBAIC0xMjIsMTQgKzEyMywxNCBAQCB0ZXN0KCdyZXN1bHRzIGZp
bGUgZmFpbGluZyB0byBsb2FkJywgMiwgZnVuY3Rpb24oKSB7CiAgICAgfQogCiAgICAgdmFyIGJ1
aWxkZXIxID0gJ2J1aWxkZXIxJzsKLSAgICBnX2J1aWxkZXJzW2J1aWxkZXIxXSA9IHRydWU7Cisg
ICAgY3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcjFdID0gdHJ1ZTsKICAgICByZXNvdXJjZUxvYWRl
ci5faGFuZGxlUmVzdWx0c0ZpbGVMb2FkRXJyb3IoYnVpbGRlcjEpOwogCiAgICAgdmFyIGJ1aWxk
ZXIyID0gJ2J1aWxkZXIyJzsKLSAgICBnX2J1aWxkZXJzW2J1aWxkZXIyXSA9IHRydWU7CisgICAg
Y3VycmVudEJ1aWxkZXJzKClbYnVpbGRlcjJdID0gdHJ1ZTsKICAgICByZXNvdXJjZUxvYWRlci5f
aGFuZGxlUmVzdWx0c0ZpbGVMb2FkRXJyb3IoYnVpbGRlcjIpOwogCiAgICAgZGVlcEVxdWFsKGdf
YnVpbGRlcnNUaGF0RmFpbGVkVG9Mb2FkLCBbYnVpbGRlcjEsIGJ1aWxkZXIyXSk7CiAgICAgZXF1
YWwocmVzb3VyY2VMb2FkQ291bnQsIDIpOwogCi19KQorfSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0bWwg
Yi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxv
cmVyLmh0bWwKaW5kZXggNGNkZDlhODZiNDk1ODMwMDhjZDQ3YTU3YmJhYmI1MWFmZTkwZWE3OC4u
ZDRhYThlODU4YjM1ZjcwZTU5ODI3NjFhMjJlNGMwNmQwNGU4M2QzNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5o
dG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxp
bmVfZXhwbG9yZXIuaHRtbApAQCAtMjkxLDcgKzI5MSw3IEBAIGZ1bmN0aW9uIHVwZGF0ZUJ1aWxk
SW5zcGVjdG9yKHJlc3VsdHMsIGJ1aWxkZXIsIGR5Z3JhcGgsIGluZGV4KQogICAgICAgICAgICAg
JyAoJyArIHJlc3VsdHNbQlVJTERfTlVNQkVSU19LRVldW2luZGV4XSArICcpJzsKICAgICB9IGVs
c2UgewogICAgICAgICB2YXIgcmVzdWx0c1VybCA9ICdodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy8nICsKLSAgICAgICAgICAgIGdfYnVpbGRl
cnNbYnVpbGRlcl0gKyAnLycgKyByZXN1bHRzW0NIUk9NRV9SRVZJU0lPTlNfS0VZXVtpbmRleF07
CisgICAgICAgICAgICBjdXJyZW50QnVpbGRlcnMoKVtidWlsZGVyXSArICcvJyArIHJlc3VsdHNb
Q0hST01FX1JFVklTSU9OU19LRVldW2luZGV4XTsKICAgICB9CiAKICAgICBhZGRSb3coJ0J1aWxk
OicsICc8YSBocmVmPSInICsgYnVpbGRVcmwgKyAnIiB0YXJnZXQ9Il9ibGFuayI+JyArIGJ1aWxk
TnVtYmVyICsgJzwvYT4gKDxhIGhyZWY9IicgKyByZXN1bHRzVXJsICsgJyIgdGFyZ2V0PSJfYmxh
bmsiPnJlc3VsdHM8L2E+KScpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbAppbmRleCBhYTdhZTQzN2VmN2MxZTQxMjQzZTdl
MTU3OTM5ODYzZDJhZTkwOTcxLi5kYTE1NTA1MzFmNjNmNWE4M2MzZWM3NDUwMGUwNzZjY2FiZDll
MmE5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L3RyZWVtYXAuaHRtbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9h
cmRzL3RyZWVtYXAuaHRtbApAQCAtMjc0LDcgKzI3NCw3IEBAIGZ1bmN0aW9uIGhhbmRsZVZhbGlk
SGFzaFBhcmFtZXRlcihrZXksIHZhbHVlKQogICAgIHN3aXRjaChrZXkpIHsKICAgICBjYXNlICdi
dWlsZGVyJzoKICAgICAgICAgdmFsaWRhdGVQYXJhbWV0ZXIoZ19jdXJyZW50U3RhdGUsIGtleSwg
dmFsdWUsCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIHZhbHVlIGluIGdfYnVpbGRl
cnM7IH0pOworICAgICAgICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB2YWx1ZSBpbiBjdXJyZW50
QnVpbGRlcnMoKTsgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSAndHJlZW1h
cGZvY3VzJzoK
</data>

          </attachment>
      

    </bug>

</bugzilla>