<?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>111485</bug_id>
          
          <creation_ts>2013-03-05 14:42:05 -0800</creation_ts>
          <short_desc>Dashboard cleanup: move string utilities into their own namespace.</short_desc>
          <delta_ts>2013-03-05 16:20:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julie Parent">jparent</reporter>
          <assigned_to name="Julie Parent">jparent</assigned_to>
          <cc>abarth</cc>
    
    <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>848093</commentid>
    <comment_count>0</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-05 14:42:05 -0800</bug_when>
    <thetext>Dashboard cleanup: move string utilities into their own namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848107</commentid>
    <comment_count>1</comment_count>
      <attachid>191572</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-05 14:49:55 -0800</bug_when>
    <thetext>Created attachment 191572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848131</commentid>
    <comment_count>2</comment_count>
      <attachid>191572</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-05 15:10:50 -0800</bug_when>
    <thetext>Comment on attachment 191572
Patch

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

&gt; Tools/TestResultServer/static-dashboards/string.js:30
&gt; +var stringUtil = stringUtil || {};

How about s/stringUtil/string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848133</commentid>
    <comment_count>3</comment_count>
      <attachid>191572</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-05 15:13:51 -0800</bug_when>
    <thetext>Comment on attachment 191572
Patch

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

&gt;&gt; Tools/TestResultServer/static-dashboards/string.js:30
&gt;&gt; +var stringUtil = stringUtil || {};
&gt; 
&gt; How about s/stringUtil/string?

I originally used string, but I thought that was confusing because there is the built-in String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848145</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2013-03-05 15:20:41 -0800</bug_when>
    <thetext>Util is a useless word. I don&apos;t think there&apos;s much threat of people confusing string.contains with String.contains. 

I&apos;d rather have something like base.string than stringUtil. My preference is still for just plain string though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848162</commentid>
    <comment_count>5</comment_count>
      <attachid>191584</attachid>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-05 15:32:57 -0800</bug_when>
    <thetext>Created attachment 191584
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848164</commentid>
    <comment_count>6</comment_count>
    <who name="Julie Parent">jparent</who>
    <bug_when>2013-03-05 15:33:31 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Util is a useless word. I don&apos;t think there&apos;s much threat of people confusing string.contains with String.contains. 
&gt; 
&gt; I&apos;d rather have something like base.string than stringUtil. My preference is still for just plain string though.

Changed to string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848218</commentid>
    <comment_count>7</comment_count>
      <attachid>191584</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 16:20:55 -0800</bug_when>
    <thetext>Comment on attachment 191584
Patch

Clearing flags on attachment: 191584

Committed r144845: &lt;http://trac.webkit.org/changeset/144845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848219</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-05 16:20:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191572</attachid>
            <date>2013-03-05 14:49:55 -0800</date>
            <delta_ts>2013-03-05 15:32:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111485-20130305144601.patch</filename>
            <type>text/plain</type>
            <size>24885</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTZhNWQ2ZjY5NzUwNjU2MTRlMjU4MDUzYWVjNWNiOWE1
M2FhMzAzNy4uODNhZDE0YWNiODJlMzE4Zjk5NTIzNjIxNTkyNGJiZTYwNmFiMmZkZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDEzLTAzLTA1ICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKyAg
ICAgICAgRGFzaGJvYXJkIGNsZWFudXA6IG1vdmUgc3RyaW5nIHV0aWxpdGllcyBpbnRvIHRoZWly
IG93biBuYW1lc3BhY2UuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbWFueSBwaWVjZXMgdG8gY2xlYW4gdXAg
ZGFzaGJvYXJkX2Jhc2UuCisgICAgICAgIAorICAgICAgICBNb3ZlcyBzdHJpbmcgdXRpbGl0eSBm
dW5jdGlvbnMgaW50byBzZXBhcmF0ZSBmaWxlIChzdHJpbmcuanMpIGFuZCBpbnRvIHRoZWlyIG93
biBuYW1lc3BhY2UgcmF0aGVyIHRoYW4gY2x1dHRlcmluZyB1cCB0aGUgZ2xvYmFsIHNjb3BlLgor
CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVf
cmVzdWx0cy5odG1sOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvZGFzaGJvYXJkX2Jhc2UuanM6CisgICAgICAgIChpc1RyZWVNYXApOgorICAgICAgICAoaXNG
bGFraW5lc3NEYXNoYm9hcmQpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sOgorICAgICAgICAqIFRlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qczoKKyAgICAgICAg
KGRldGVybWluZVdLUGxhdGZvcm0pOgorICAgICAgICAoY2hyb21pdW1QbGF0Zm9ybSk6CisgICAg
ICAgIChwbGF0Zm9ybUFuZEJ1aWxkVHlwZSk6CisgICAgICAgIChzdWJzdHJpbmdMaXN0KToKKyAg
ICAgICAgKGluZGl2aWR1YWxUZXN0c0ZvclN1YnN0cmluZ0xpc3QpOgorICAgICAgICAoZmlsdGVy
QnVncyk6CisgICAgICAgIChwb3B1bGF0ZUV4cGVjdGF0aW9uc0RhdGEpOgorICAgICAgICAocHJv
Y2Vzc01pc3NpbmdUZXN0c1dpdGhFeHBlY3RhdGlvbnMpOgorICAgICAgICAocHJvY2Vzc01pc3Np
bmdBbmRFeHRyYUV4cGVjdGF0aW9ucyk6CisgICAgICAgIChodG1sRm9yU2luZ2xlVGVzdFJvdyk6
CisgICAgICAgICguZHVtbXlOb2RlLm9ubG9hZCk6CisgICAgICAgIChleHBlY3RhdGlvbnNUaXRs
ZSk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4tZW1i
ZWRkZWQtdW5pdHRlc3RzLmh0bWw6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMt
ZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3RzLmh0bWw6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAqIFRlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRtbDoKKyAgICAg
ICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbDoKKwog
MjAxMy0wMy0wNSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIERSVCBjcmFzaGVzIGluIGFuIEF1cmEvV2luIGJ1aWxkCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1
bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3Jl
Z2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXggYTM4MDVhNTQ3MjgwNmMyZTljMDJhNDhmNjlkNTE4OGFh
ZjYwNDdkOC4uYTczNTExMjJjYjBhMDcyODRkMzQ3YTJkZDY2OTYzMTJlYTkwZTVjZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVf
cmVzdWx0cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbApAQCAtNTIsNiArNTIsNyBAQCBpbWcgewogPC9zdHls
ZT4KIDxzY3JpcHQgc3JjPSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibG9h
ZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzdHJpbmcuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9ImRhc2hib2FyZF9iYXNlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAvLyBAZmls
ZW92ZXJ2aWV3IENyZWF0ZXMgYSBkYXNoYm9hcmQgZm9yIHRyYWNraW5nIG51bWJlciBvZiBwYXNz
ZXMvZmFpbHVyZXMgcGVyIHJ1bi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCmluZGV4IDFhMDM4MjRjYjVm
MTYyMzhkMTdlYWVhYjJhOTkwOTFkZjM1NjkzOGIuLmViM2Y2NTVjM2JkZDMyNWMwNTk0YmM5YTk5
MTEyNWUyNWM5MzlhYTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwpAQCAtMjE5LDQwICsyMTksNiBA
QCBmdW5jdGlvbiAkKGlkKQogICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7
CiB9CiAKLWZ1bmN0aW9uIHN0cmluZ0NvbnRhaW5zKGEsIGIpCi17Ci0gICAgcmV0dXJuIGEuaW5k
ZXhPZihiKSAhPSAtMTsKLX0KLQotZnVuY3Rpb24gY2FzZUluc2Vuc2l0aXZlQ29udGFpbnMoYSwg
YikKLXsKLSAgICByZXR1cm4gYS5tYXRjaChuZXcgUmVnRXhwKGIsICdpJykpOwotfQotCi1mdW5j
dGlvbiBzdGFydHNXaXRoKGEsIGIpCi17Ci0gICAgcmV0dXJuIGEuaW5kZXhPZihiKSA9PSAwOwot
fQotCi1mdW5jdGlvbiBlbmRzV2l0aChhLCBiKQotewotICAgIHJldHVybiBhLmxhc3RJbmRleE9m
KGIpID09IGEubGVuZ3RoIC0gYi5sZW5ndGg7Ci19Ci0KLWZ1bmN0aW9uIGlzVmFsaWROYW1lKHN0
cikKLXsKLSAgICByZXR1cm4gc3RyLm1hdGNoKC9bQS1aYS16MC05XC1cXyxdLyk7Ci19Ci0KLWZ1
bmN0aW9uIHRyaW1TdHJpbmcoc3RyKQotewotICAgIHJldHVybiBzdHIucmVwbGFjZSgvXlxzK3xc
cyskL2csICcnKTsKLX0KLQotZnVuY3Rpb24gY29sbGFwc2VXaGl0ZXNwYWNlKHN0cikKLXsKLSAg
ICByZXR1cm4gc3RyLnJlcGxhY2UoL1xzKy9nLCAnICcpOwotfQogCiBmdW5jdGlvbiB2YWxpZGF0
ZVBhcmFtZXRlcihzdGF0ZSwga2V5LCB2YWx1ZSwgdmFsaWRhdGVGbikKIHsKQEAgLTQ2NywxMiAr
NDMzLDEyIEBAIGZ1bmN0aW9uIGZsYXR0ZW5UcmllKHRyaWUsIHByZWZpeCkKIAogZnVuY3Rpb24g
aXNUcmVlTWFwKCkKIHsKLSAgICByZXR1cm4gZW5kc1dpdGgod2luZG93LmxvY2F0aW9uLnBhdGhu
YW1lLCAndHJlZW1hcC5odG1sJyk7CisgICAgcmV0dXJuIHN0cmluZ1V0aWwuZW5kc1dpdGgod2lu
ZG93LmxvY2F0aW9uLnBhdGhuYW1lLCAndHJlZW1hcC5odG1sJyk7CiB9CiAKIGZ1bmN0aW9uIGlz
Rmxha2luZXNzRGFzaGJvYXJkKCkKIHsKLSAgICByZXR1cm4gZW5kc1dpdGgod2luZG93LmxvY2F0
aW9uLnBhdGhuYW1lLCAnZmxha2luZXNzX2Rhc2hib2FyZC5odG1sJyk7CisgICAgcmV0dXJuIHN0
cmluZ1V0aWwuZW5kc1dpdGgod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLCAnZmxha2luZXNzX2Rh
c2hib2FyZC5odG1sJyk7CiB9CiAKIC8vIFN0cmluZyBvZiBlcnJvciBtZXNzYWdlcyB0byBkaXNw
bGF5IHRvIHRoZSB1c2VyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0
U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAppbmRleCA2
MjVkNDIzOGQ3YzI0YTk4OWQ0MWVmMWQ0MTZlMWNkZGVlNTllZjMzLi45NjU4YWYxZTQwZTlmNmM4
YzZjZWY3Mjk0ZGEyN2M4MTk2NDRlY2QzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuaHRtbAorKysgYi9Ub29s
cy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQu
aHRtbApAQCAtMzIsNSArMzIsNiBAQCBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJmbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmNzcyI+PC9saW5rPgogPHNjcmlwdCBz
cmM9ImJ1aWxkZXJzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJsb2FkZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InN0cmluZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZGFz
aGJvYXJkX2Jhc2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImZsYWtpbmVzc19kYXNoYm9h
cmQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzIGIvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzCmluZGV4IDRmMDc5
NWRmYjUxM2U0N2U0MDMzZjgyMGU0YjRiYTVkMDUyMTcwMjcuLmFhMDFmNjhiYmVlNzA4Y2IwNjBi
YWE0ZjY4NTRhMjJiNTdmMzlmMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qcworKysgYi9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKQEAg
LTE2Niw3ICsxNjYsNyBAQCBmdW5jdGlvbiBoYW5kbGVWYWxpZEhhc2hQYXJhbWV0ZXIoa2V5LCB2
YWx1ZSkKICAgICBjYXNlICd0ZXN0cyc6CiAgICAgICAgIHZhbGlkYXRlUGFyYW1ldGVyKGdfY3Vy
cmVudFN0YXRlLCBrZXksIHZhbHVlLAogICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGlzVmFsaWROYW1lKHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RyaW5nVXRpbC5pc1ZhbGlkTmFtZSh2YWx1ZSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKQEAgLTMzMiw1NiArMzMyLDU2IEBAIGZ1bmN0aW9uIGNyZWF0ZVJl
c3VsdHNPYmplY3RGb3JUZXN0KHRlc3QsIGJ1aWxkZXIpCiBmdW5jdGlvbiBtYXRjaGluZ0VsZW1l
bnQoc3RyaW5nVG9NYXRjaCwgZWxlbWVudHNNYXApCiB7CiAgICAgZm9yICh2YXIgZWxlbWVudCBp
biBlbGVtZW50c01hcCkgewotICAgICAgICBpZiAoc3RyaW5nQ29udGFpbnMoc3RyaW5nVG9NYXRj
aCwgZWxlbWVudHNNYXBbZWxlbWVudF0pKQorICAgICAgICBpZiAoc3RyaW5nVXRpbC5jb250YWlu
cyhzdHJpbmdUb01hdGNoLCBlbGVtZW50c01hcFtlbGVtZW50XSkpCiAgICAgICAgICAgICByZXR1
cm4gZWxlbWVudDsKICAgICB9CiB9CiAKIGZ1bmN0aW9uIGRldGVybWluZVdLUGxhdGZvcm0oYnVp
bGRlck5hbWUsIGJhc2VQbGF0Zm9ybSkKIHsKLSAgICB2YXIgaXNXSzJCdWlsZGVyID0gc3RyaW5n
Q29udGFpbnMoYnVpbGRlck5hbWUsICdXSzInKSB8fCBzdHJpbmdDb250YWlucyhidWlsZGVyTmFt
ZSwgJ1dFQktJVDInKTsKKyAgICB2YXIgaXNXSzJCdWlsZGVyID0gc3RyaW5nVXRpbC5jb250YWlu
cyhidWlsZGVyTmFtZSwgJ1dLMicpIHx8IHN0cmluZ1V0aWwuY29udGFpbnMoYnVpbGRlck5hbWUs
ICdXRUJLSVQyJyk7CiAgICAgcmV0dXJuIGJhc2VQbGF0Zm9ybSArIChpc1dLMkJ1aWxkZXIgPyAn
X1dLMicgOiAnX1dLMScpOwogfQogCiBmdW5jdGlvbiBub25DaHJvbWl1bVBsYXRmb3JtKGJ1aWxk
ZXJOYW1lVXBwZXJDYXNlKQogewotICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVw
cGVyQ2FzZSwgJ1dJTkRPV1MgNycpKQorICAgIGlmIChzdHJpbmdVdGlsLmNvbnRhaW5zKGJ1aWxk
ZXJOYW1lVXBwZXJDYXNlLCAnV0lORE9XUyA3JykpCiAgICAgICAgIHJldHVybiAnQVBQTEVfV0lO
X1dJTjcnOwotICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJ
TkRPV1MgWFAnKSkKKyAgICBpZiAoc3RyaW5nVXRpbC5jb250YWlucyhidWlsZGVyTmFtZVVwcGVy
Q2FzZSwgJ1dJTkRPV1MgWFAnKSkKICAgICAgICAgcmV0dXJuICdBUFBMRV9XSU5fWFAnOwotICAg
IGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1FUIExJTlVYJykpCisg
ICAgaWYgKHN0cmluZ1V0aWwuY29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdRVCBMSU5V
WCcpKQogICAgICAgICByZXR1cm4gJ1FUX0xJTlVYJzsKIAotICAgIGlmIChzdHJpbmdDb250YWlu
cyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0xJT04nKSkKKyAgICBpZiAoc3RyaW5nVXRpbC5jb250
YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0xJT04nKSkKICAgICAgICAgcmV0dXJuIGRldGVy
bWluZVdLUGxhdGZvcm0oYnVpbGRlck5hbWVVcHBlckNhc2UsICdBUFBMRV9NQUNfTElPTicpOwot
ICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1NOT1dMRU9QQVJE
JykpCisgICAgaWYgKHN0cmluZ1V0aWwuY29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdT
Tk9XTEVPUEFSRCcpKQogICAgICAgICByZXR1cm4gZGV0ZXJtaW5lV0tQbGF0Zm9ybShidWlsZGVy
TmFtZVVwcGVyQ2FzZSwgJ0FQUExFX01BQ19TTk9XTEVPUEFSRCcpOwotICAgIGlmIChzdHJpbmdD
b250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0dUSyBMSU5VWCcpKQorICAgIGlmIChzdHJp
bmdVdGlsLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnR1RLIExJTlVYJykpCiAgICAg
ICAgIHJldHVybiBkZXRlcm1pbmVXS1BsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnR1RL
X0xJTlVYJyk7Ci0gICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAn
RUZMJykpCisgICAgaWYgKHN0cmluZ1V0aWwuY29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2Us
ICdFRkwnKSkKICAgICAgICAgcmV0dXJuIGRldGVybWluZVdLUGxhdGZvcm0oYnVpbGRlck5hbWVV
cHBlckNhc2UsICdFRkxfTElOVVgnKTsKIH0KIAogZnVuY3Rpb24gY2hyb21pdW1QbGF0Zm9ybShi
dWlsZGVyTmFtZVVwcGVyQ2FzZSkKIHsKLSAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5h
bWVVcHBlckNhc2UsICdNQUMnKSkgewotICAgICAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRl
ck5hbWVVcHBlckNhc2UsICcxMC43JykpCisgICAgaWYgKHN0cmluZ1V0aWwuY29udGFpbnMoYnVp
bGRlck5hbWVVcHBlckNhc2UsICdNQUMnKSkgeworICAgICAgICBpZiAoc3RyaW5nVXRpbC5jb250
YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJzEwLjcnKSkKICAgICAgICAgICAgIHJldHVybiAn
Q0hST01JVU1fTElPTic7CiAgICAgICAgIC8vIFRoZSB3ZWJraXQub3JnICdDaHJvbWl1bSBNYWMg
UmVsZWFzZSAoVGVzdHMpJyBib3QgcnVucyBTbm93TGVvcGFyZC4KICAgICAgICAgcmV0dXJuICdD
SFJPTUlVTV9TTk9XTEVPUEFSRCc7CiAgICAgfQotICAgIGlmIChzdHJpbmdDb250YWlucyhidWls
ZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTjcnKSkKKyAgICBpZiAoc3RyaW5nVXRpbC5jb250YWlucyhi
dWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTjcnKSkKICAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9X
SU43JzsKLSAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdWSVNU
QScpKQorICAgIGlmIChzdHJpbmdVdGlsLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAn
VklTVEEnKSkKICAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9WSVNUQSc7Ci0gICAgaWYgKHN0cmlu
Z0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnV0lOJykgfHwgc3RyaW5nQ29udGFpbnMo
YnVpbGRlck5hbWVVcHBlckNhc2UsICdYUCcpKQorICAgIGlmIChzdHJpbmdVdGlsLmNvbnRhaW5z
KGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnV0lOJykgfHwgc3RyaW5nVXRpbC5jb250YWlucyhidWls
ZGVyTmFtZVVwcGVyQ2FzZSwgJ1hQJykpCiAgICAgICAgIHJldHVybiAnQ0hST01JVU1fWFAnOwot
ICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0xJTlVYJykpCisg
ICAgaWYgKHN0cmluZ1V0aWwuY29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdMSU5VWCcp
KQogICAgICAgICByZXR1cm4gJ0NIUk9NSVVNX0xVQ0lEJzsKLSAgICBpZiAoc3RyaW5nQ29udGFp
bnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdBTkRST0lEJykpCisgICAgaWYgKHN0cmluZ1V0aWwu
Y29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdBTkRST0lEJykpCiAgICAgICAgIHJldHVy
biAnQ0hST01JVU1fQU5EUk9JRCc7CiAgICAgLy8gVGhlIGludGVyYWN0aXZlIGJvdCBpcyBYUCwg
YnV0IGRvZXNuJ3QgaGF2ZSBhbiBPUyBpbiBpdCdzIG5hbWUuCi0gICAgaWYgKHN0cmluZ0NvbnRh
aW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnSU5URVJBQ1RJVkUnKSkKKyAgICBpZiAoc3RyaW5n
VXRpbC5jb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0lOVEVSQUNUSVZFJykpCiAgICAg
ICAgIHJldHVybiAnQ0hST01JVU1fWFAnOwogfQogCkBAIC0zOTIsNyArMzkyLDcgQEAgZnVuY3Rp
b24gcGxhdGZvcm1BbmRCdWlsZFR5cGUoYnVpbGRlck5hbWUpCiAgICAgICAgIHZhciBidWlsZGVy
TmFtZVVwcGVyQ2FzZSA9IGJ1aWxkZXJOYW1lLnRvVXBwZXJDYXNlKCk7CiAgICAgICAgIAogICAg
ICAgICB2YXIgcGxhdGZvcm0gPSAnJzsKLSAgICAgICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMo
KSAmJiBjdXJyZW50QnVpbGRlckdyb3VwTmFtZSgpID09ICdAVG9UIC0gd2Via2l0Lm9yZycgJiYg
IXN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnQ0hST01JVU0nKSkKKyAgICAg
ICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSAmJiBjdXJyZW50QnVpbGRlckdyb3VwTmFtZSgp
ID09ICdAVG9UIC0gd2Via2l0Lm9yZycgJiYgIXN0cmluZ1V0aWwuY29udGFpbnMoYnVpbGRlck5h
bWVVcHBlckNhc2UsICdDSFJPTUlVTScpKQogICAgICAgICAgICAgcGxhdGZvcm0gPSBub25DaHJv
bWl1bVBsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgcGxhdGZvcm0gPSBjaHJvbWl1bVBsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlKTsK
QEAgLTQwMCw3ICs0MDAsNyBAQCBmdW5jdGlvbiBwbGF0Zm9ybUFuZEJ1aWxkVHlwZShidWlsZGVy
TmFtZSkKICAgICAgICAgaWYgKCFwbGF0Zm9ybSkKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
J0NvdWxkIG5vdCByZXNvbHZlIHBsYXRmb3JtIGZvciBidWlsZGVyOiAnICsgYnVpbGRlck5hbWUp
OwogCi0gICAgICAgIHZhciBidWlsZFR5cGUgPSBzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVw
cGVyQ2FzZSwgJ0RCRycpIHx8IHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAn
REVCVUcnKSA/ICdERUJVRycgOiAnUkVMRUFTRSc7CisgICAgICAgIHZhciBidWlsZFR5cGUgPSBz
dHJpbmdVdGlsLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnREJHJykgfHwgc3RyaW5n
VXRpbC5jb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0RFQlVHJykgPyAnREVCVUcnIDog
J1JFTEVBU0UnOwogICAgICAgICBnX3BlckJ1aWxkZXJQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtidWls
ZGVyTmFtZV0gPSB7cGxhdGZvcm06IHBsYXRmb3JtLCBidWlsZFR5cGU6IGJ1aWxkVHlwZX07CiAg
ICAgfQogICAgIHJldHVybiBnX3BlckJ1aWxkZXJQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtidWlsZGVy
TmFtZV07CkBAIC01MDksNyArNTA5LDcgQEAgZnVuY3Rpb24gc3Vic3RyaW5nTGlzdCgpCiB7CiAg
ICAgLy8gQ29udmVydCB3aW5kb3dzIHNsYXNoZXMgdG8gdW5peCBzbGFzaGVzLgogICAgIHZhciB0
ZXN0cyA9IGdfY3VycmVudFN0YXRlLnRlc3RzLnJlcGxhY2UoL1xcL2csICcvJyk7Ci0gICAgdmFy
IHNlcGFyYXRvciA9IHN0cmluZ0NvbnRhaW5zKHRlc3RzLCAnICcpID8gJyAnIDogJywnOworICAg
IHZhciBzZXBhcmF0b3IgPSBzdHJpbmdVdGlsLmNvbnRhaW5zKHRlc3RzLCAnICcpID8gJyAnIDog
JywnOwogICAgIHZhciB0ZXN0TGlzdCA9IHRlc3RzLnNwbGl0KHNlcGFyYXRvcik7CiAKICAgICBp
ZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpKQpAQCAtNTQxLDcgKzU0MSw3IEBAIGZ1bmN0aW9uIGlu
ZGl2aWR1YWxUZXN0c0ZvclN1YnN0cmluZ0xpc3QoKQogCiAgICAgICAgIHZhciBoYXNBbnlNYXRj
aGVzID0gZmFsc2U7CiAgICAgICAgIGdldEFsbFRlc3RzVHJpZSgpLmZvckVhY2goZnVuY3Rpb24o
dHJpZVBhdGgpIHsKLSAgICAgICAgICAgIGlmIChjYXNlSW5zZW5zaXRpdmVDb250YWlucyh0cmll
UGF0aCwgcGF0aCkpIHsKKyAgICAgICAgICAgIGlmIChzdHJpbmdVdGlsLmNhc2VJbnNlbnNpdGl2
ZUNvbnRhaW5zKHRyaWVQYXRoLCBwYXRoKSkgewogICAgICAgICAgICAgICAgIHRlc3RzTWFwW3Ry
aWVQYXRoXSA9IDE7CiAgICAgICAgICAgICAgICAgaGFzQW55TWF0Y2hlcyA9IHRydWU7CiAgICAg
ICAgICAgICB9CkBAIC02NDksNyArNjQ5LDcgQEAgZnVuY3Rpb24gZmlsdGVyQnVncyhtb2RpZmll
cnMpCiAgICAgICAgIHJldHVybiB7YnVnczogJycsIG1vZGlmaWVyczogbW9kaWZpZXJzfTsKICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IGJ1Z3MubGVuZ3RoOyBqKyspCiAgICAgICAgIG1vZGlmaWVy
cyA9IG1vZGlmaWVycy5yZXBsYWNlKGJ1Z3Nbal0sICcnKTsKLSAgICByZXR1cm4ge2J1Z3M6IGJ1
Z3Muam9pbignICcpLCBtb2RpZmllcnM6IGNvbGxhcHNlV2hpdGVzcGFjZSh0cmltU3RyaW5nKG1v
ZGlmaWVycykpfTsKKyAgICByZXR1cm4ge2J1Z3M6IGJ1Z3Muam9pbignICcpLCBtb2RpZmllcnM6
IHN0cmluZ1V0aWwuY29sbGFwc2VXaGl0ZXNwYWNlKHN0cmluZ1V0aWwudHJpbVN0cmluZyhtb2Rp
ZmllcnMpKX07CiB9CiAKIGZ1bmN0aW9uIHBvcHVsYXRlRXhwZWN0YXRpb25zRGF0YShyZXN1bHRz
T2JqZWN0KQpAQCAtNjYzLDcgKzY2Myw3IEBAIGZ1bmN0aW9uIHBvcHVsYXRlRXhwZWN0YXRpb25z
RGF0YShyZXN1bHRzT2JqZWN0KQogICAgIHZhciBmaWx0ZXJlZE1vZGlmaWVycyA9IGZpbHRlckJ1
Z3MoZXhwZWN0YXRpb25zLm1vZGlmaWVycyk7CiAgICAgcmVzdWx0c09iamVjdC5tb2RpZmllcnMg
PSBmaWx0ZXJlZE1vZGlmaWVycy5tb2RpZmllcnM7CiAgICAgcmVzdWx0c09iamVjdC5idWdzID0g
ZmlsdGVyZWRNb2RpZmllcnMuYnVnczsKLSAgICByZXN1bHRzT2JqZWN0LmlzV29udEZpeFNraXAg
PSBzdHJpbmdDb250YWlucyhleHBlY3RhdGlvbnMubW9kaWZpZXJzLCAnV09OVEZJWCcpIHx8IHN0
cmluZ0NvbnRhaW5zKGV4cGVjdGF0aW9ucy5tb2RpZmllcnMsICdTS0lQJyk7IAorICAgIHJlc3Vs
dHNPYmplY3QuaXNXb250Rml4U2tpcCA9IHN0cmluZ1V0aWwuY29udGFpbnMoZXhwZWN0YXRpb25z
Lm1vZGlmaWVycywgJ1dPTlRGSVgnKSB8fCBzdHJpbmdVdGlsLmNvbnRhaW5zKGV4cGVjdGF0aW9u
cy5tb2RpZmllcnMsICdTS0lQJyk7IAogfQogCiBmdW5jdGlvbiBwbGF0Zm9ybU9iamVjdEZvck5h
bWUocGxhdGZvcm1OYW1lKQpAQCAtNjkyLDggKzY5Miw4IEBAIGZ1bmN0aW9uIGdldFBhcnNlZEV4
cGVjdGF0aW9ucyhkYXRhKQogICAgIHZhciBleHBlY3RhdGlvbnMgPSBbXTsKICAgICB2YXIgbGlu
ZXMgPSBkYXRhLnNwbGl0KCdcbicpOwogICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSkg
ewotICAgICAgICBsaW5lID0gdHJpbVN0cmluZyhsaW5lKTsKLSAgICAgICAgaWYgKCFsaW5lIHx8
IHN0YXJ0c1dpdGgobGluZSwgJyMnKSkKKyAgICAgICAgbGluZSA9IHN0cmluZ1V0aWwudHJpbVN0
cmluZyhsaW5lKTsKKyAgICAgICAgaWYgKCFsaW5lIHx8IHN0cmluZ1V0aWwuc3RhcnRzV2l0aChs
aW5lLCAnIycpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFRoaXMgY29kZSBt
aW1pY3MgX3Rva2VuaXplX2xpbmVfdXNpbmdfbmV3X2Zvcm1hdCgpIGluCkBAIC05MDIsOCArOTAy
LDggQEAgZnVuY3Rpb24gcHJvY2Vzc01pc3NpbmdUZXN0c1dpdGhFeHBlY3RhdGlvbnMoYnVpbGRl
ciwgcGxhdGZvcm0sIGJ1aWxkVHlwZSkKIAogICAgICAgICAvLyBUZXN0IGhhcyBleHBlY3RhdGlv
bnMsIGJ1dCBubyByZXN1bHQgaW4gdGhlIGJ1aWxkZXJzIHJlc3VsdHMuCiAgICAgICAgIC8vIFRo
aXMgbWVhbnMgaXQncyBlaXRoZXIgU0tJUCBvciBwYXNzZXMgb24gYWxsIGJ1aWxkcy4KLSAgICAg
ICAgaWYgKCFhbGxUZXN0c0ZvclBsYXRmb3JtQW5kQnVpbGRUeXBlW3Rlc3RdICYmICFzdHJpbmdD
b250YWlucyhleHBlY3RhdGlvbnMubW9kaWZpZXJzLCAnV09OVEZJWCcpKSB7Ci0gICAgICAgICAg
ICBpZiAoc3RyaW5nQ29udGFpbnMoZXhwZWN0YXRpb25zLm1vZGlmaWVycywgJ1NLSVAnKSkKKyAg
ICAgICAgaWYgKCFhbGxUZXN0c0ZvclBsYXRmb3JtQW5kQnVpbGRUeXBlW3Rlc3RdICYmICFzdHJp
bmdVdGlsLmNvbnRhaW5zKGV4cGVjdGF0aW9ucy5tb2RpZmllcnMsICdXT05URklYJykpIHsKKyAg
ICAgICAgICAgIGlmIChzdHJpbmdVdGlsLmNvbnRhaW5zKGV4cGVjdGF0aW9ucy5tb2RpZmllcnMs
ICdTS0lQJykpCiAgICAgICAgICAgICAgICAgc2tpcHBlZC5wdXNoKHRlc3QpOwogICAgICAgICAg
ICAgZWxzZSBpZiAoIWV4cGVjdGF0aW9ucy5leHBlY3RhdGlvbnMubWF0Y2goL15ccypQQVNTXHMq
JC8pKSB7CiAgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgc2hvdyB0ZXN0cyBleHBlY3RlZCB0byBh
bHdheXMgcGFzcy4gVGhpcyBpcyB1c2VkIGluIHdheXMgbGlrZQpAQCAtMTA3Miw3ICsxMDcyLDcg
QEAgZnVuY3Rpb24gcHJvY2Vzc01pc3NpbmdBbmRFeHRyYUV4cGVjdGF0aW9ucyhyZXN1bHRzRm9y
VGVzdCkKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmICFyZXN1bHRzTWFwW2VsZW1lbnRdICYmICFzdHJp
bmdDb250YWlucyhlbGVtZW50LCAnQlVHJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1l
bnQgJiYgIXJlc3VsdHNNYXBbZWxlbWVudF0gJiYgIXN0cmluZ1V0aWwuY29udGFpbnMoZWxlbWVu
dCwgJ0JVRycpOwogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgZm9yICh2YXIgcmVzdWx0IGlu
IHJlc3VsdHNNYXApIHsKQEAgLTExMTIsOSArMTExMiw5IEBAIGZ1bmN0aW9uIHByb2Nlc3NNaXNz
aW5nQW5kRXh0cmFFeHBlY3RhdGlvbnMocmVzdWx0c0ZvclRlc3QpCiAgICAgICAgIC8vIGh1bmRy
ZWQgcnVucy4gSXQncyBub3Qgd29ydGggdGhlIG1hbnVhbCBtYWludGVuYW5jZSBlZmZvcnQuCiAg
ICAgICAgIC8vIEFsc28sIGlmIGEgdGVzdCB0aW1lcyBvdXQsIHRoZW4gaXQgc2hvdWxkIG5vdCBi
ZSBtYXJrZWQgYXMgc2xvdy4KICAgICAgICAgdmFyIG1pblRpbWVGb3JOZWVkc1Nsb3cgPSBpc0Rl
YnVnKHJlc3VsdHNGb3JUZXN0LmJ1aWxkZXIpID8gMiA6IDE7Ci0gICAgICAgIGlmIChpc1Nsb3dU
ZXN0KHJlc3VsdHNGb3JUZXN0KSAmJiAhcmVzdWx0c01hcFsnVElNRU9VVCddICYmICghcmVzdWx0
c0ZvclRlc3QubW9kaWZpZXJzIHx8ICFzdHJpbmdDb250YWlucyhyZXN1bHRzRm9yVGVzdC5tb2Rp
ZmllcnMsICdTTE9XJykpKQorICAgICAgICBpZiAoaXNTbG93VGVzdChyZXN1bHRzRm9yVGVzdCkg
JiYgIXJlc3VsdHNNYXBbJ1RJTUVPVVQnXSAmJiAoIXJlc3VsdHNGb3JUZXN0Lm1vZGlmaWVycyB8
fCAhc3RyaW5nVXRpbC5jb250YWlucyhyZXN1bHRzRm9yVGVzdC5tb2RpZmllcnMsICdTTE9XJykp
KQogICAgICAgICAgICAgbWlzc2luZ0V4cGVjdGF0aW9ucy5wdXNoKCdTTE9XJyk7Ci0gICAgICAg
IGVsc2UgaWYgKGlzRmFzdFRlc3QocmVzdWx0c0ZvclRlc3QpICYmIHJlc3VsdHNGb3JUZXN0Lm1v
ZGlmaWVycyAmJiBzdHJpbmdDb250YWlucyhyZXN1bHRzRm9yVGVzdC5tb2RpZmllcnMsICdTTE9X
JykpCisgICAgICAgIGVsc2UgaWYgKGlzRmFzdFRlc3QocmVzdWx0c0ZvclRlc3QpICYmIHJlc3Vs
dHNGb3JUZXN0Lm1vZGlmaWVycyAmJiBzdHJpbmdVdGlsLmNvbnRhaW5zKHJlc3VsdHNGb3JUZXN0
Lm1vZGlmaWVycywgJ1NMT1cnKSkKICAgICAgICAgICAgIGV4dHJhRXhwZWN0YXRpb25zLnB1c2go
J1NMT1cnKTsKIAogICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gbWlzc2luZyByZXN1bHRzIG9y
IG1vZGlmaWVycyBiZXNpZGVzIGJ1aWxkCkBAIC0xNDEyLDcgKzE0MTIsNyBAQCBmdW5jdGlvbiBo
dG1sRm9yU2luZ2xlVGVzdFJvdyh0ZXN0KQogICAgIHZhciBodG1sID0gJyc7CiAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgIHZhciBoZWFkZXIg
PSBoZWFkZXJzW2ldOwotICAgICAgICBpZiAoc3RhcnRzV2l0aChoZWFkZXIsICd0ZXN0JykgfHwg
c3RhcnRzV2l0aChoZWFkZXIsICdidWlsZGVyJykpIHsKKyAgICAgICAgaWYgKHN0cmluZ1V0aWwu
c3RhcnRzV2l0aChoZWFkZXIsICd0ZXN0JykgfHwgc3RyaW5nVXRpbC5zdGFydHNXaXRoKGhlYWRl
ciwgJ2J1aWxkZXInKSkgewogICAgICAgICAgICAgLy8gSWYgaXNDcm9zc0J1aWxkZXJWaWV3KCkg
aXMgdHJ1ZSwgd2UncmUganVzdCB2aWV3aW5nIGEgc2luZ2xlIHRlc3QKICAgICAgICAgICAgIC8v
IHdpdGggcmVzdWx0cyBmb3IgbWFueSBidWlsZGVycywgc28gdGhlIGZpcnN0IGNvbHVtbiBpcyBi
dWlsZGVyIG5hbWVzCiAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIHRlc3QgcGF0aHMuCkBAIC0x
NDIwLDE1ICsxNDIwLDE1IEBAIGZ1bmN0aW9uIGh0bWxGb3JTaW5nbGVUZXN0Um93KHRlc3QpCiAg
ICAgICAgICAgICB2YXIgdGVzdENlbGxIVE1MID0gaXNDcm9zc0J1aWxkZXJWaWV3KCkgPyB0ZXN0
LmJ1aWxkZXIgOiAnPHNwYW4gY2xhc3M9ImxpbmsiIG9uY2xpY2s9InNldFF1ZXJ5UGFyYW1ldGVy
KFwndGVzdHNcJyxcJycgKyB0ZXN0LnRlc3QgKydcJyk7Ij4nICsgdGVzdC50ZXN0ICsgJzwvc3Bh
bj4nOwogCiAgICAgICAgICAgICBodG1sICs9ICc8dHI+PHRkIGNsYXNzPSInICsgdGVzdENlbGxD
bGFzc05hbWUgKyAnIj4nICsgdGVzdENlbGxIVE1MOwotICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0
c1dpdGgoaGVhZGVyLCAnYnVncycpKQorICAgICAgICB9IGVsc2UgaWYgKHN0cmluZ1V0aWwuc3Rh
cnRzV2l0aChoZWFkZXIsICdidWdzJykpCiAgICAgICAgICAgICBodG1sICs9ICc8dGQgY2xhc3M9
b3B0aW9ucy1jb250YWluZXI+JyArICh0ZXN0LmJ1Z3MgPyBodG1sRm9yQnVncyh0ZXN0LmJ1Z3Mp
IDogY3JlYXRlQnVnSFRNTCh0ZXN0KSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgoaGVh
ZGVyLCAnbW9kaWZpZXJzJykpCisgICAgICAgIGVsc2UgaWYgKHN0cmluZ1V0aWwuc3RhcnRzV2l0
aChoZWFkZXIsICdtb2RpZmllcnMnKSkKICAgICAgICAgICAgIGh0bWwgKz0gJzx0ZCBjbGFzcz1v
cHRpb25zLWNvbnRhaW5lcj4nICsgdGVzdC5tb2RpZmllcnM7Ci0gICAgICAgIGVsc2UgaWYgKHN0
YXJ0c1dpdGgoaGVhZGVyLCAnZXhwZWN0YXRpb25zJykpCisgICAgICAgIGVsc2UgaWYgKHN0cmlu
Z1V0aWwuc3RhcnRzV2l0aChoZWFkZXIsICdleHBlY3RhdGlvbnMnKSkKICAgICAgICAgICAgIGh0
bWwgKz0gJzx0ZCBjbGFzcz1vcHRpb25zLWNvbnRhaW5lcj4nICsgdGVzdC5leHBlY3RhdGlvbnM7
Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgoaGVhZGVyLCAnc2xvd2VzdCcpKQorICAgICAg
ICBlbHNlIGlmIChzdHJpbmdVdGlsLnN0YXJ0c1dpdGgoaGVhZGVyLCAnc2xvd2VzdCcpKQogICAg
ICAgICAgICAgaHRtbCArPSAnPHRkPicgKyAodGVzdC5zbG93ZXN0VGltZSA/IHRlc3Quc2xvd2Vz
dFRpbWUgKyAncycgOiAnJyk7Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgoaGVhZGVyLCAn
Zmxha2luZXNzJykpCisgICAgICAgIGVsc2UgaWYgKHN0cmluZ1V0aWwuc3RhcnRzV2l0aChoZWFk
ZXIsICdmbGFraW5lc3MnKSkKICAgICAgICAgICAgIGh0bWwgKz0gaHRtbEZvclRlc3RSZXN1bHRz
KHRlc3QpOwogICAgIH0KICAgICByZXR1cm4gaHRtbDsKQEAgLTE1ODIsNyArMTU4Miw3IEBAIGZ1
bmN0aW9uIHJlYWxNb2RpZmllcnMobW9kaWZpZXJTdHJpbmcpCiB7CiAgICAgdmFyIG1vZGlmaWVy
cyA9IG1vZGlmaWVyU3RyaW5nLnNwbGl0KCcgJyk7OwogICAgIHJldHVybiBtb2RpZmllcnMuZmls
dGVyKGZ1bmN0aW9uKG1vZGlmaWVyKSB7Ci0gICAgICAgIGlmIChtb2RpZmllciBpbiBCVUlMRF9U
WVBFUyB8fCBzdGFydHNXaXRoKG1vZGlmaWVyLCAnQlVHJykpCisgICAgICAgIGlmIChtb2RpZmll
ciBpbiBCVUlMRF9UWVBFUyB8fCBzdHJpbmdVdGlsLnN0YXJ0c1dpdGgobW9kaWZpZXIsICdCVUcn
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICB2YXIgbWF0Y2hlc1BsYXRm
b3JtT3JVbmlvbiA9IGZhbHNlOwpAQCAtMTkzNiwxNCArMTkzNiwxNCBAQCBmdW5jdGlvbiBhZGRF
eHBlY3RhdGlvbkl0ZW0oZXhwZWN0YXRpb25zQ29udGFpbmVycywgcGFyZW50Q29udGFpbmVyLCBw
bGF0Zm9ybSwgcAogICAgIH07CiAKICAgICB2YXIgdXJsID0gYmFzZSArIHBsYXRmb3JtUGFydCAr
IHBhdGg7Ci0gICAgaWYgKGlzSW1hZ2UgfHwgIXN0YXJ0c1dpdGgoYmFzZSwgJ2h0dHA6Ly9zdm4u
d2Via2l0Lm9yZycpKSB7CisgICAgaWYgKGlzSW1hZ2UgfHwgIXN0cmluZ1V0aWwuc3RhcnRzV2l0
aChiYXNlLCAnaHR0cDovL3N2bi53ZWJraXQub3JnJykpIHsKICAgICAgICAgdmFyIGR1bW15Tm9k
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXNJbWFnZSA/ICdpbWcnIDogJ3NjcmlwdCcpOwog
ICAgICAgICBkdW1teU5vZGUuc3JjID0gdXJsOwogICAgICAgICBkdW1teU5vZGUub25sb2FkID0g
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB2YXIgaXRlbTsKICAgICAgICAgICAgIGlmIChpc0lt
YWdlKSB7CiAgICAgICAgICAgICAgICAgaXRlbSA9IGR1bW15Tm9kZTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3RhcnRzV2l0aChiYXNlLCAnaHR0cDovL3N2bi53ZWJraXQub3JnJykpCisgICAgICAg
ICAgICAgICAgaWYgKHN0cmluZ1V0aWwuc3RhcnRzV2l0aChiYXNlLCAnaHR0cDovL3N2bi53ZWJr
aXQub3JnJykpCiAgICAgICAgICAgICAgICAgICAgIG1heWJlQWRkUG5nQ2hlY2tzdW0oaXRlbSwg
dXJsKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaXRlbSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwpAQCAtMjAzNywxMSArMjAzNywxMSBAQCBmdW5j
dGlvbiBjb25zb2xpZGF0ZVVzZWRQbGF0Zm9ybXMoY29udGFpbmVyKQogICAgICAgICBwbGF0Zm9y
bXNbJ1dJTiddID0ge307CiAgICAgICAgIHBsYXRmb3Jtc1snTElOVVgnXSA9IHt9OwogICAgICAg
ICBhbGxQbGF0Zm9ybXMuZm9yRWFjaChmdW5jdGlvbihwbGF0Zm9ybSkgewotICAgICAgICAgICAg
aWYgKHN0YXJ0c1dpdGgocGxhdGZvcm0sICdNQUMnKSkKKyAgICAgICAgICAgIGlmIChzdHJpbmdV
dGlsLnN0YXJ0c1dpdGgocGxhdGZvcm0sICdNQUMnKSkKICAgICAgICAgICAgICAgICBwbGF0Zm9y
bXNbJ01BQyddW3BsYXRmb3JtXSA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGFydHNXaXRo
KHBsYXRmb3JtLCAnV0lOJykpCisgICAgICAgICAgICBlbHNlIGlmIChzdHJpbmdVdGlsLnN0YXJ0
c1dpdGgocGxhdGZvcm0sICdXSU4nKSkKICAgICAgICAgICAgICAgICBwbGF0Zm9ybXNbJ1dJTidd
W3BsYXRmb3JtXSA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmIChzdGFydHNXaXRoKHBsYXRmb3Jt
LCAnTElOVVgnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmluZ1V0aWwuc3RhcnRzV2l0aChw
bGF0Zm9ybSwgJ0xJTlVYJykpCiAgICAgICAgICAgICAgICAgcGxhdGZvcm1zWydMSU5VWCddW3Bs
YXRmb3JtXSA9IDE7CiAgICAgICAgIH0pOwogCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBmdW5jdGlv
biBjb25zb2xpZGF0ZVVzZWRQbGF0Zm9ybXMoY29udGFpbmVyKQogICAgICAgICAgICAgICAgIHZh
ciBub2Rlc1RvUmVtb3ZlID0gW107CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDAsIHVz
ZWRQbGF0Zm9ybXNMZW5ndGggPSB1c2VkUGxhdGZvcm1zLmxlbmd0aDsgaiA8IHVzZWRQbGF0Zm9y
bXNMZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICB2YXIgdXNlZFBsYXRmb3JtID0g
dXNlZFBsYXRmb3Jtc1tqXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgodXNl
ZFBsYXRmb3JtLnRleHRDb250ZW50LCBwbGF0Zm9ybSkpCisgICAgICAgICAgICAgICAgICAgIGlm
IChzdHJpbmdVdGlsLnN0YXJ0c1dpdGgodXNlZFBsYXRmb3JtLnRleHRDb250ZW50LCBwbGF0Zm9y
bSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlc1RvUmVtb3ZlLnB1c2godXNlZFBsYXRm
b3JtKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTIwODQsMTEgKzIwODQsMTEgQEAgZnVuY3Rp
b24gZXhwZWN0YXRpb25zVGl0bGUocGxhdGZvcm0sIHBhdGgsIGJ1aWxkZXIpCiAgICAgdmFyIGlu
bmVySFRNTDsKICAgICBpZiAoYnVpbGRlcikgewogICAgICAgICB2YXIgcmVzdWx0c1R5cGU7Ci0g
ICAgICAgIGlmIChlbmRzV2l0aChwYXRoLCAnLWNyYXNoLWxvZy50eHQnKSkKKyAgICAgICAgaWYg
KHN0cmluZ1V0aWwuZW5kc1dpdGgocGF0aCwgJy1jcmFzaC1sb2cudHh0JykpCiAgICAgICAgICAg
ICByZXN1bHRzVHlwZSA9ICdTVEFDS1RSQUNFJzsKLSAgICAgICAgZWxzZSBpZiAoZW5kc1dpdGgo
cGF0aCwgJy1hY3R1YWwudHh0JykgfHwgZW5kc1dpdGgocGF0aCwgJy1hY3R1YWwucG5nJykpCisg
ICAgICAgIGVsc2UgaWYgKHN0cmluZ1V0aWwuZW5kc1dpdGgocGF0aCwgJy1hY3R1YWwudHh0Jykg
fHwgc3RyaW5nVXRpbC5lbmRzV2l0aChwYXRoLCAnLWFjdHVhbC5wbmcnKSkKICAgICAgICAgICAg
IHJlc3VsdHNUeXBlID0gJ0FDVFVBTCBSRVNVTFRTJzsKLSAgICAgICAgZWxzZSBpZiAoZW5kc1dp
dGgocGF0aCwgJy13ZGlmZi5odG1sJykpCisgICAgICAgIGVsc2UgaWYgKHN0cmluZ1V0aWwuZW5k
c1dpdGgocGF0aCwgJy13ZGlmZi5odG1sJykpCiAgICAgICAgICAgICByZXN1bHRzVHlwZSA9ICdX
RElGRic7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdHNUeXBlID0gJ0RJRkYnOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4t
ZW1iZWRkZWQtdW5pdHRlc3RzLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL3J1bi1lbWJlZGRlZC11bml0dGVzdHMuaHRtbAppbmRleCA3OTE3ZGNjYTNkYjBh
NTU4NTgwZGI5MjJiOTdmNGRjNmFiOTM4ZjZiLi4xNDMyMzVmM2RmYzE2ZjFlZTliNDJhMTRjNGZm
YWZhNTA3N2VkM2MxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL3J1bi1lbWJlZGRlZC11bml0dGVzdHMuaHRtbAorKysgYi9Ub29scy9UZXN0UmVz
dWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3J1bi1lbWJlZGRlZC11bml0dGVzdHMuaHRtbApA
QCAtNDcsNiArNDcsNyBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiB3aW5kb3cu
cGFyZW50ID0gbnVsbDsKIDwvc2NyaXB0PgogCis8c2NyaXB0IHNyYz0ic3RyaW5nLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJkYXNoYm9hcmRfYmFzZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0ibG9hZGVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJsb2FkZXJfdW5pdHRlc3Rz
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvcnVuLXVuaXR0ZXN0cy5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3RzLmh0bWwKaW5kZXggMjU3MmY1YTM5NjM0Yzc0
YmYwYTllNTQ2NjhmY2FiNzBiYzgzYWNjNi4uMWZkYjk5ODY5YTVmYmNkODk2YTI5ODcwYWNkODVj
Nzk2YmM3Mjk2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFz
aGJvYXJkcy9ydW4tdW5pdHRlc3RzLmh0bWwKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3RzLmh0bWwKQEAgLTQxLDYgKzQxLDcgQEAgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJmbGFraW5lc3NfZGFzaGJvYXJkX3Rlc3RzLmNzcyI+PC9saW5rPgogPHNjcmlwdCBzcmM9ImJ1
aWxkZXJzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJidWlsZGVyc191bml0dGVzdHMuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InN0cmluZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iZGFzaGJvYXJkX2Jhc2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImxvYWRlci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibG9hZGVyX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3N0cmlu
Zy5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvc3RyaW5nLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhlNDZkMTcxZmE4MzIyMjU1OWFlOGEwYmQ2MGQ1YTI5ZTcyMGEwYWIKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRz
L3N0cmluZy5qcwpAQCAtMCwwICsxLDY5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0cmlidXRpb24uCisvLyAgICAg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8v
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8gQGZpbGVvdmVydmlldyBHZW5lcmljIHN0
cmluZyB1dGlsaXR5IGZ1bmN0aW9ucy4KK3ZhciBzdHJpbmdVdGlsID0gc3RyaW5nVXRpbCB8fCB7
fTsKKworKGZ1bmN0aW9uKCkgeworCitzdHJpbmdVdGlsLmNvbnRhaW5zID0gZnVuY3Rpb24oYSwg
YikKK3sKKyAgICByZXR1cm4gYS5pbmRleE9mKGIpICE9IC0xOworfQorCitzdHJpbmdVdGlsLmNh
c2VJbnNlbnNpdGl2ZUNvbnRhaW5zID0gZnVuY3Rpb24oYSwgYikKK3sKKyAgICByZXR1cm4gYS5t
YXRjaChuZXcgUmVnRXhwKGIsICdpJykpOworfQorCitzdHJpbmdVdGlsLnN0YXJ0c1dpdGggPSBm
dW5jdGlvbihhLCBiKQoreworICAgIHJldHVybiBhLmluZGV4T2YoYikgPT0gMDsKK30KKworc3Ry
aW5nVXRpbC5lbmRzV2l0aCA9IGZ1bmN0aW9uKGEsIGIpCit7CisgICAgcmV0dXJuIGEubGFzdElu
ZGV4T2YoYikgPT0gYS5sZW5ndGggLSBiLmxlbmd0aDsKK30KKworc3RyaW5nVXRpbC5pc1ZhbGlk
TmFtZSA9IGZ1bmN0aW9uKHN0cikKK3sKKyAgICByZXR1cm4gc3RyLm1hdGNoKC9bQS1aYS16MC05
XC1cXyxdLyk7Cit9CisKK3N0cmluZ1V0aWwudHJpbVN0cmluZyA9IGZ1bmN0aW9uKHN0cikKK3sK
KyAgICByZXR1cm4gc3RyLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJyk7Cit9CisKK3N0cmluZ1V0
aWwuY29sbGFwc2VXaGl0ZXNwYWNlID0gZnVuY3Rpb24oc3RyKQoreworICAgIHJldHVybiBzdHIu
cmVwbGFjZSgvXHMrL2csICcgJyk7Cit9CisKK30pKCk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy90aW1lbGluZV9leHBsb3Jlci5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMt
ZGFzaGJvYXJkcy90aW1lbGluZV9leHBsb3Jlci5odG1sCmluZGV4IGEwMjA0M2IxMjBlNGQ3NTYw
OWRlYmIwM2VlMjJkOTI0YTI4MDMwMTMuLjNhNTk0NGE4ODA2NjBhYzY5N2IyMjFmNjJkMzlhNzRh
YzAxNGRkZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRtbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0bWwKQEAgLTk4LDYgKzk4LDcg
QEAgYm9keSB7CiA8c2NyaXB0IHNyYz0iZHlncmFwaC1jb21iaW5lZC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iYnVpbGRlcnMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImxvYWRlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic3RyaW5nLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJkYXNoYm9hcmRfYmFzZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogdmFyIEZBSUxJTkdf
VEVTVFNfREFUQVNFVF9OQU1FID0gJ0ZhaWxpbmcgdGVzdHMnOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0bWwgYi9Ub29scy9U
ZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbAppbmRleCA0ZWEx
MWY5NzM0MTkzZmZmODJjZmVmYWYyYTkzZDdlNzg4MTg3NTM1Li4yNTJhYzgxMTk2ZDViNDA5NmVm
YTJkN2Q1YWY4ZmI1MTIwMGVkN2E4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVy
L3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbAorKysgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbApAQCAtMTA5LDYgKzEwOSw3IEBAIHRk
IHsKIDwvc3R5bGU+CiA8c2NyaXB0IHNyYz0iYnVpbGRlcnMuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9ImxvYWRlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic3RyaW5nLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSJkYXNoYm9hcmRfYmFzZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0nd2VidHJlZW1hcC5qcyc+PC9zY3JpcHQ+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191584</attachid>
            <date>2013-03-05 15:32:57 -0800</date>
            <delta_ts>2013-03-05 16:20:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111485-20130305152903.patch</filename>
            <type>text/plain</type>
            <size>24625</size>
            <attacher name="Julie Parent">jparent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0ODIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTZhNWQ2ZjY5NzUwNjU2MTRlMjU4MDUzYWVjNWNiOWE1
M2FhMzAzNy4uODNhZDE0YWNiODJlMzE4Zjk5NTIzNjIxNTkyNGJiZTYwNmFiMmZkZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDEzLTAzLTA1ICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KKyAg
ICAgICAgRGFzaGJvYXJkIGNsZWFudXA6IG1vdmUgc3RyaW5nIHV0aWxpdGllcyBpbnRvIHRoZWly
IG93biBuYW1lc3BhY2UuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTExNDg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBPbmUgb2YgbWFueSBwaWVjZXMgdG8gY2xlYW4gdXAg
ZGFzaGJvYXJkX2Jhc2UuCisgICAgICAgIAorICAgICAgICBNb3ZlcyBzdHJpbmcgdXRpbGl0eSBm
dW5jdGlvbnMgaW50byBzZXBhcmF0ZSBmaWxlIChzdHJpbmcuanMpIGFuZCBpbnRvIHRoZWlyIG93
biBuYW1lc3BhY2UgcmF0aGVyIHRoYW4gY2x1dHRlcmluZyB1cCB0aGUgZ2xvYmFsIHNjb3BlLgor
CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVf
cmVzdWx0cy5odG1sOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvZGFzaGJvYXJkX2Jhc2UuanM6CisgICAgICAgIChpc1RyZWVNYXApOgorICAgICAgICAoaXNG
bGFraW5lc3NEYXNoYm9hcmQpOgorICAgICAgICAqIFRlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRh
c2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sOgorICAgICAgICAqIFRlc3RSZXN1bHRT
ZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qczoKKyAgICAgICAg
KGRldGVybWluZVdLUGxhdGZvcm0pOgorICAgICAgICAoY2hyb21pdW1QbGF0Zm9ybSk6CisgICAg
ICAgIChwbGF0Zm9ybUFuZEJ1aWxkVHlwZSk6CisgICAgICAgIChzdWJzdHJpbmdMaXN0KToKKyAg
ICAgICAgKGluZGl2aWR1YWxUZXN0c0ZvclN1YnN0cmluZ0xpc3QpOgorICAgICAgICAoZmlsdGVy
QnVncyk6CisgICAgICAgIChwb3B1bGF0ZUV4cGVjdGF0aW9uc0RhdGEpOgorICAgICAgICAocHJv
Y2Vzc01pc3NpbmdUZXN0c1dpdGhFeHBlY3RhdGlvbnMpOgorICAgICAgICAocHJvY2Vzc01pc3Np
bmdBbmRFeHRyYUV4cGVjdGF0aW9ucyk6CisgICAgICAgIChodG1sRm9yU2luZ2xlVGVzdFJvdyk6
CisgICAgICAgICguZHVtbXlOb2RlLm9ubG9hZCk6CisgICAgICAgIChleHBlY3RhdGlvbnNUaXRs
ZSk6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4tZW1i
ZWRkZWQtdW5pdHRlc3RzLmh0bWw6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMt
ZGFzaGJvYXJkcy9ydW4tdW5pdHRlc3RzLmh0bWw6CisgICAgICAgICogVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAqIFRlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRtbDoKKyAgICAg
ICAgKiBUZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RyZWVtYXAuaHRtbDoKKwog
MjAxMy0wMy0wNSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIERSVCBjcmFzaGVzIGluIGFuIEF1cmEvV2luIGJ1aWxkCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3JlZ2F0ZV9yZXN1
bHRzLmh0bWwgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL2FnZ3Jl
Z2F0ZV9yZXN1bHRzLmh0bWwKaW5kZXggYTM4MDVhNTQ3MjgwNmMyZTljMDJhNDhmNjlkNTE4OGFh
ZjYwNDdkOC4uYTczNTExMjJjYjBhMDcyODRkMzQ3YTJkZDY2OTYzMTJlYTkwZTVjZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9hZ2dyZWdhdGVf
cmVzdWx0cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvYWdncmVnYXRlX3Jlc3VsdHMuaHRtbApAQCAtNTIsNiArNTIsNyBAQCBpbWcgewogPC9zdHls
ZT4KIDxzY3JpcHQgc3JjPSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibG9h
ZGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzdHJpbmcuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9ImRhc2hib2FyZF9iYXNlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAvLyBAZmls
ZW92ZXJ2aWV3IENyZWF0ZXMgYSBkYXNoYm9hcmQgZm9yIHRyYWNraW5nIG51bWJlciBvZiBwYXNz
ZXMvZmFpbHVyZXMgcGVyIHJ1bi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIv
c3RhdGljLWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMgYi9Ub29scy9UZXN0UmVzdWx0U2Vy
dmVyL3N0YXRpYy1kYXNoYm9hcmRzL2Rhc2hib2FyZF9iYXNlLmpzCmluZGV4IDFhMDM4MjRjYjVm
MTYyMzhkMTdlYWVhYjJhOTkwOTFkZjM1NjkzOGIuLmM1YWIxZTM5MDU0YmRlZGVkYjRmYTlhZTUy
MzQyOGI0NTc1MDFjMDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvZGFzaGJvYXJkX2Jhc2UuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZl
ci9zdGF0aWMtZGFzaGJvYXJkcy9kYXNoYm9hcmRfYmFzZS5qcwpAQCAtMjE5LDQwICsyMTksNiBA
QCBmdW5jdGlvbiAkKGlkKQogICAgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7
CiB9CiAKLWZ1bmN0aW9uIHN0cmluZ0NvbnRhaW5zKGEsIGIpCi17Ci0gICAgcmV0dXJuIGEuaW5k
ZXhPZihiKSAhPSAtMTsKLX0KLQotZnVuY3Rpb24gY2FzZUluc2Vuc2l0aXZlQ29udGFpbnMoYSwg
YikKLXsKLSAgICByZXR1cm4gYS5tYXRjaChuZXcgUmVnRXhwKGIsICdpJykpOwotfQotCi1mdW5j
dGlvbiBzdGFydHNXaXRoKGEsIGIpCi17Ci0gICAgcmV0dXJuIGEuaW5kZXhPZihiKSA9PSAwOwot
fQotCi1mdW5jdGlvbiBlbmRzV2l0aChhLCBiKQotewotICAgIHJldHVybiBhLmxhc3RJbmRleE9m
KGIpID09IGEubGVuZ3RoIC0gYi5sZW5ndGg7Ci19Ci0KLWZ1bmN0aW9uIGlzVmFsaWROYW1lKHN0
cikKLXsKLSAgICByZXR1cm4gc3RyLm1hdGNoKC9bQS1aYS16MC05XC1cXyxdLyk7Ci19Ci0KLWZ1
bmN0aW9uIHRyaW1TdHJpbmcoc3RyKQotewotICAgIHJldHVybiBzdHIucmVwbGFjZSgvXlxzK3xc
cyskL2csICcnKTsKLX0KLQotZnVuY3Rpb24gY29sbGFwc2VXaGl0ZXNwYWNlKHN0cikKLXsKLSAg
ICByZXR1cm4gc3RyLnJlcGxhY2UoL1xzKy9nLCAnICcpOwotfQogCiBmdW5jdGlvbiB2YWxpZGF0
ZVBhcmFtZXRlcihzdGF0ZSwga2V5LCB2YWx1ZSwgdmFsaWRhdGVGbikKIHsKQEAgLTQ2NywxMiAr
NDMzLDEyIEBAIGZ1bmN0aW9uIGZsYXR0ZW5UcmllKHRyaWUsIHByZWZpeCkKIAogZnVuY3Rpb24g
aXNUcmVlTWFwKCkKIHsKLSAgICByZXR1cm4gZW5kc1dpdGgod2luZG93LmxvY2F0aW9uLnBhdGhu
YW1lLCAndHJlZW1hcC5odG1sJyk7CisgICAgcmV0dXJuIHN0cmluZy5lbmRzV2l0aCh3aW5kb3cu
bG9jYXRpb24ucGF0aG5hbWUsICd0cmVlbWFwLmh0bWwnKTsKIH0KIAogZnVuY3Rpb24gaXNGbGFr
aW5lc3NEYXNoYm9hcmQoKQogewotICAgIHJldHVybiBlbmRzV2l0aCh3aW5kb3cubG9jYXRpb24u
cGF0aG5hbWUsICdmbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwnKTsKKyAgICByZXR1cm4gc3RyaW5n
LmVuZHNXaXRoKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSwgJ2ZsYWtpbmVzc19kYXNoYm9hcmQu
aHRtbCcpOwogfQogCiAvLyBTdHJpbmcgb2YgZXJyb3IgbWVzc2FnZXMgdG8gZGlzcGxheSB0byB0
aGUgdXNlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9z
dGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwKaW5kZXggNjI1ZDQyMzhk
N2MyNGE5ODlkNDFlZjFkNDE2ZTFjZGRlZTU5ZWYzMy4uOTY1OGFmMWU0MGU5ZjZjOGM2Y2VmNzI5
NGRhMjdjODE5NjQ0ZWNkMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwKKysrIGIvVG9vbHMvVGVzdFJl
c3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmh0bWwKQEAg
LTMyLDUgKzMyLDYgQEAgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Zmxha2luZXNzX2Rhc2hib2FyZF90ZXN0cy5jc3MiPjwvbGluaz4KIDxzY3JpcHQgc3JjPSJidWls
ZGVycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibG9hZGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJzdHJpbmcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImRhc2hib2FyZF9i
YXNlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJmbGFraW5lc3NfZGFzaGJvYXJkLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hi
b2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qcyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3Rh
dGljLWRhc2hib2FyZHMvZmxha2luZXNzX2Rhc2hib2FyZC5qcwppbmRleCA0ZjA3OTVkZmI1MTNl
NDdlNDAzM2Y4MjBlNGI0YmE1ZDA1MjE3MDI3Li4wZWI2MTI0MWE3Yjk3OWQ3Y2ExNjRmYjA2NmIx
MmNjY2NmN2I0MWY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1k
YXNoYm9hcmRzL2ZsYWtpbmVzc19kYXNoYm9hcmQuanMKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNl
cnZlci9zdGF0aWMtZGFzaGJvYXJkcy9mbGFraW5lc3NfZGFzaGJvYXJkLmpzCkBAIC0xNjYsNyAr
MTY2LDcgQEAgZnVuY3Rpb24gaGFuZGxlVmFsaWRIYXNoUGFyYW1ldGVyKGtleSwgdmFsdWUpCiAg
ICAgY2FzZSAndGVzdHMnOgogICAgICAgICB2YWxpZGF0ZVBhcmFtZXRlcihnX2N1cnJlbnRTdGF0
ZSwga2V5LCB2YWx1ZSwKICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IHJldHVybiBpc1ZhbGlkTmFtZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cmlu
Zy5pc1ZhbGlkTmFtZSh2YWx1ZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKQEAgLTMzMiw1NiArMzMyLDU2IEBAIGZ1bmN0aW9uIGNyZWF0ZVJlc3VsdHNPYmplY3RG
b3JUZXN0KHRlc3QsIGJ1aWxkZXIpCiBmdW5jdGlvbiBtYXRjaGluZ0VsZW1lbnQoc3RyaW5nVG9N
YXRjaCwgZWxlbWVudHNNYXApCiB7CiAgICAgZm9yICh2YXIgZWxlbWVudCBpbiBlbGVtZW50c01h
cCkgewotICAgICAgICBpZiAoc3RyaW5nQ29udGFpbnMoc3RyaW5nVG9NYXRjaCwgZWxlbWVudHNN
YXBbZWxlbWVudF0pKQorICAgICAgICBpZiAoc3RyaW5nLmNvbnRhaW5zKHN0cmluZ1RvTWF0Y2gs
IGVsZW1lbnRzTWFwW2VsZW1lbnRdKSkKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAg
IH0KIH0KIAogZnVuY3Rpb24gZGV0ZXJtaW5lV0tQbGF0Zm9ybShidWlsZGVyTmFtZSwgYmFzZVBs
YXRmb3JtKQogewotICAgIHZhciBpc1dLMkJ1aWxkZXIgPSBzdHJpbmdDb250YWlucyhidWlsZGVy
TmFtZSwgJ1dLMicpIHx8IHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lLCAnV0VCS0lUMicpOwor
ICAgIHZhciBpc1dLMkJ1aWxkZXIgPSBzdHJpbmcuY29udGFpbnMoYnVpbGRlck5hbWUsICdXSzIn
KSB8fCBzdHJpbmcuY29udGFpbnMoYnVpbGRlck5hbWUsICdXRUJLSVQyJyk7CiAgICAgcmV0dXJu
IGJhc2VQbGF0Zm9ybSArIChpc1dLMkJ1aWxkZXIgPyAnX1dLMicgOiAnX1dLMScpOwogfQogCiBm
dW5jdGlvbiBub25DaHJvbWl1bVBsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlKQogewotICAg
IGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTkRPV1MgNycpKQor
ICAgIGlmIChzdHJpbmcuY29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdXSU5ET1dTIDcn
KSkKICAgICAgICAgcmV0dXJuICdBUFBMRV9XSU5fV0lONyc7Ci0gICAgaWYgKHN0cmluZ0NvbnRh
aW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnV0lORE9XUyBYUCcpKQorICAgIGlmIChzdHJpbmcu
Y29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdXSU5ET1dTIFhQJykpCiAgICAgICAgIHJl
dHVybiAnQVBQTEVfV0lOX1hQJzsKLSAgICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVV
cHBlckNhc2UsICdRVCBMSU5VWCcpKQorICAgIGlmIChzdHJpbmcuY29udGFpbnMoYnVpbGRlck5h
bWVVcHBlckNhc2UsICdRVCBMSU5VWCcpKQogICAgICAgICByZXR1cm4gJ1FUX0xJTlVYJzsKIAot
ICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0xJT04nKSkKKyAg
ICBpZiAoc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnTElPTicpKQogICAg
ICAgICByZXR1cm4gZGV0ZXJtaW5lV0tQbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0FQ
UExFX01BQ19MSU9OJyk7Ci0gICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJD
YXNlLCAnU05PV0xFT1BBUkQnKSkKKyAgICBpZiAoc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1l
VXBwZXJDYXNlLCAnU05PV0xFT1BBUkQnKSkKICAgICAgICAgcmV0dXJuIGRldGVybWluZVdLUGxh
dGZvcm0oYnVpbGRlck5hbWVVcHBlckNhc2UsICdBUFBMRV9NQUNfU05PV0xFT1BBUkQnKTsKLSAg
ICBpZiAoc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdHVEsgTElOVVgnKSkK
KyAgICBpZiAoc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnR1RLIExJTlVY
JykpCiAgICAgICAgIHJldHVybiBkZXRlcm1pbmVXS1BsYXRmb3JtKGJ1aWxkZXJOYW1lVXBwZXJD
YXNlLCAnR1RLX0xJTlVYJyk7Ci0gICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBw
ZXJDYXNlLCAnRUZMJykpCisgICAgaWYgKHN0cmluZy5jb250YWlucyhidWlsZGVyTmFtZVVwcGVy
Q2FzZSwgJ0VGTCcpKQogICAgICAgICByZXR1cm4gZGV0ZXJtaW5lV0tQbGF0Zm9ybShidWlsZGVy
TmFtZVVwcGVyQ2FzZSwgJ0VGTF9MSU5VWCcpOwogfQogCiBmdW5jdGlvbiBjaHJvbWl1bVBsYXRm
b3JtKGJ1aWxkZXJOYW1lVXBwZXJDYXNlKQogewotICAgIGlmIChzdHJpbmdDb250YWlucyhidWls
ZGVyTmFtZVVwcGVyQ2FzZSwgJ01BQycpKSB7Ci0gICAgICAgIGlmIChzdHJpbmdDb250YWlucyhi
dWlsZGVyTmFtZVVwcGVyQ2FzZSwgJzEwLjcnKSkKKyAgICBpZiAoc3RyaW5nLmNvbnRhaW5zKGJ1
aWxkZXJOYW1lVXBwZXJDYXNlLCAnTUFDJykpIHsKKyAgICAgICAgaWYgKHN0cmluZy5jb250YWlu
cyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJzEwLjcnKSkKICAgICAgICAgICAgIHJldHVybiAnQ0hS
T01JVU1fTElPTic7CiAgICAgICAgIC8vIFRoZSB3ZWJraXQub3JnICdDaHJvbWl1bSBNYWMgUmVs
ZWFzZSAoVGVzdHMpJyBib3QgcnVucyBTbm93TGVvcGFyZC4KICAgICAgICAgcmV0dXJuICdDSFJP
TUlVTV9TTk9XTEVPUEFSRCc7CiAgICAgfQotICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVy
TmFtZVVwcGVyQ2FzZSwgJ1dJTjcnKSkKKyAgICBpZiAoc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJO
YW1lVXBwZXJDYXNlLCAnV0lONycpKQogICAgICAgICByZXR1cm4gJ0NIUk9NSVVNX1dJTjcnOwot
ICAgIGlmIChzdHJpbmdDb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1ZJU1RBJykpCisg
ICAgaWYgKHN0cmluZy5jb250YWlucyhidWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1ZJU1RBJykpCiAg
ICAgICAgIHJldHVybiAnQ0hST01JVU1fVklTVEEnOwotICAgIGlmIChzdHJpbmdDb250YWlucyhi
dWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ1dJTicpIHx8IHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1l
VXBwZXJDYXNlLCAnWFAnKSkKKyAgICBpZiAoc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBw
ZXJDYXNlLCAnV0lOJykgfHwgc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAn
WFAnKSkKICAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9YUCc7Ci0gICAgaWYgKHN0cmluZ0NvbnRh
aW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnTElOVVgnKSkKKyAgICBpZiAoc3RyaW5nLmNvbnRh
aW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnTElOVVgnKSkKICAgICAgICAgcmV0dXJuICdDSFJP
TUlVTV9MVUNJRCc7Ci0gICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNl
LCAnQU5EUk9JRCcpKQorICAgIGlmIChzdHJpbmcuY29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNh
c2UsICdBTkRST0lEJykpCiAgICAgICAgIHJldHVybiAnQ0hST01JVU1fQU5EUk9JRCc7CiAgICAg
Ly8gVGhlIGludGVyYWN0aXZlIGJvdCBpcyBYUCwgYnV0IGRvZXNuJ3QgaGF2ZSBhbiBPUyBpbiBp
dCdzIG5hbWUuCi0gICAgaWYgKHN0cmluZ0NvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAn
SU5URVJBQ1RJVkUnKSkKKyAgICBpZiAoc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJD
YXNlLCAnSU5URVJBQ1RJVkUnKSkKICAgICAgICAgcmV0dXJuICdDSFJPTUlVTV9YUCc7CiB9CiAK
QEAgLTM5Miw3ICszOTIsNyBAQCBmdW5jdGlvbiBwbGF0Zm9ybUFuZEJ1aWxkVHlwZShidWlsZGVy
TmFtZSkKICAgICAgICAgdmFyIGJ1aWxkZXJOYW1lVXBwZXJDYXNlID0gYnVpbGRlck5hbWUudG9V
cHBlckNhc2UoKTsKICAgICAgICAgCiAgICAgICAgIHZhciBwbGF0Zm9ybSA9ICcnOwotICAgICAg
ICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpICYmIGN1cnJlbnRCdWlsZGVyR3JvdXBOYW1lKCkg
PT0gJ0BUb1QgLSB3ZWJraXQub3JnJyAmJiAhc3RyaW5nQ29udGFpbnMoYnVpbGRlck5hbWVVcHBl
ckNhc2UsICdDSFJPTUlVTScpKQorICAgICAgICBpZiAoaXNMYXlvdXRUZXN0UmVzdWx0cygpICYm
IGN1cnJlbnRCdWlsZGVyR3JvdXBOYW1lKCkgPT0gJ0BUb1QgLSB3ZWJraXQub3JnJyAmJiAhc3Ry
aW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnQ0hST01JVU0nKSkKICAgICAgICAg
ICAgIHBsYXRmb3JtID0gbm9uQ2hyb21pdW1QbGF0Zm9ybShidWlsZGVyTmFtZVVwcGVyQ2FzZSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBsYXRmb3JtID0gY2hyb21pdW1QbGF0Zm9ybShi
dWlsZGVyTmFtZVVwcGVyQ2FzZSk7CkBAIC00MDAsNyArNDAwLDcgQEAgZnVuY3Rpb24gcGxhdGZv
cm1BbmRCdWlsZFR5cGUoYnVpbGRlck5hbWUpCiAgICAgICAgIGlmICghcGxhdGZvcm0pCiAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgcmVzb2x2ZSBwbGF0Zm9ybSBmb3IgYnVp
bGRlcjogJyArIGJ1aWxkZXJOYW1lKTsKIAotICAgICAgICB2YXIgYnVpbGRUeXBlID0gc3RyaW5n
Q29udGFpbnMoYnVpbGRlck5hbWVVcHBlckNhc2UsICdEQkcnKSB8fCBzdHJpbmdDb250YWlucyhi
dWlsZGVyTmFtZVVwcGVyQ2FzZSwgJ0RFQlVHJykgPyAnREVCVUcnIDogJ1JFTEVBU0UnOworICAg
ICAgICB2YXIgYnVpbGRUeXBlID0gc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNl
LCAnREJHJykgfHwgc3RyaW5nLmNvbnRhaW5zKGJ1aWxkZXJOYW1lVXBwZXJDYXNlLCAnREVCVUcn
KSA/ICdERUJVRycgOiAnUkVMRUFTRSc7CiAgICAgICAgIGdfcGVyQnVpbGRlclBsYXRmb3JtQW5k
QnVpbGRUeXBlW2J1aWxkZXJOYW1lXSA9IHtwbGF0Zm9ybTogcGxhdGZvcm0sIGJ1aWxkVHlwZTog
YnVpbGRUeXBlfTsKICAgICB9CiAgICAgcmV0dXJuIGdfcGVyQnVpbGRlclBsYXRmb3JtQW5kQnVp
bGRUeXBlW2J1aWxkZXJOYW1lXTsKQEAgLTUwOSw3ICs1MDksNyBAQCBmdW5jdGlvbiBzdWJzdHJp
bmdMaXN0KCkKIHsKICAgICAvLyBDb252ZXJ0IHdpbmRvd3Mgc2xhc2hlcyB0byB1bml4IHNsYXNo
ZXMuCiAgICAgdmFyIHRlc3RzID0gZ19jdXJyZW50U3RhdGUudGVzdHMucmVwbGFjZSgvXFwvZywg
Jy8nKTsKLSAgICB2YXIgc2VwYXJhdG9yID0gc3RyaW5nQ29udGFpbnModGVzdHMsICcgJykgPyAn
ICcgOiAnLCc7CisgICAgdmFyIHNlcGFyYXRvciA9IHN0cmluZy5jb250YWlucyh0ZXN0cywgJyAn
KSA/ICcgJyA6ICcsJzsKICAgICB2YXIgdGVzdExpc3QgPSB0ZXN0cy5zcGxpdChzZXBhcmF0b3Ip
OwogCiAgICAgaWYgKGlzTGF5b3V0VGVzdFJlc3VsdHMoKSkKQEAgLTU0MSw3ICs1NDEsNyBAQCBm
dW5jdGlvbiBpbmRpdmlkdWFsVGVzdHNGb3JTdWJzdHJpbmdMaXN0KCkKIAogICAgICAgICB2YXIg
aGFzQW55TWF0Y2hlcyA9IGZhbHNlOwogICAgICAgICBnZXRBbGxUZXN0c1RyaWUoKS5mb3JFYWNo
KGZ1bmN0aW9uKHRyaWVQYXRoKSB7Ci0gICAgICAgICAgICBpZiAoY2FzZUluc2Vuc2l0aXZlQ29u
dGFpbnModHJpZVBhdGgsIHBhdGgpKSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nLmNhc2VJbnNl
bnNpdGl2ZUNvbnRhaW5zKHRyaWVQYXRoLCBwYXRoKSkgewogICAgICAgICAgICAgICAgIHRlc3Rz
TWFwW3RyaWVQYXRoXSA9IDE7CiAgICAgICAgICAgICAgICAgaGFzQW55TWF0Y2hlcyA9IHRydWU7
CiAgICAgICAgICAgICB9CkBAIC02NDksNyArNjQ5LDcgQEAgZnVuY3Rpb24gZmlsdGVyQnVncyht
b2RpZmllcnMpCiAgICAgICAgIHJldHVybiB7YnVnczogJycsIG1vZGlmaWVyczogbW9kaWZpZXJz
fTsKICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJ1Z3MubGVuZ3RoOyBqKyspCiAgICAgICAgIG1v
ZGlmaWVycyA9IG1vZGlmaWVycy5yZXBsYWNlKGJ1Z3Nbal0sICcnKTsKLSAgICByZXR1cm4ge2J1
Z3M6IGJ1Z3Muam9pbignICcpLCBtb2RpZmllcnM6IGNvbGxhcHNlV2hpdGVzcGFjZSh0cmltU3Ry
aW5nKG1vZGlmaWVycykpfTsKKyAgICByZXR1cm4ge2J1Z3M6IGJ1Z3Muam9pbignICcpLCBtb2Rp
ZmllcnM6IHN0cmluZy5jb2xsYXBzZVdoaXRlc3BhY2Uoc3RyaW5nLnRyaW1TdHJpbmcobW9kaWZp
ZXJzKSl9OwogfQogCiBmdW5jdGlvbiBwb3B1bGF0ZUV4cGVjdGF0aW9uc0RhdGEocmVzdWx0c09i
amVjdCkKQEAgLTY2Myw3ICs2NjMsNyBAQCBmdW5jdGlvbiBwb3B1bGF0ZUV4cGVjdGF0aW9uc0Rh
dGEocmVzdWx0c09iamVjdCkKICAgICB2YXIgZmlsdGVyZWRNb2RpZmllcnMgPSBmaWx0ZXJCdWdz
KGV4cGVjdGF0aW9ucy5tb2RpZmllcnMpOwogICAgIHJlc3VsdHNPYmplY3QubW9kaWZpZXJzID0g
ZmlsdGVyZWRNb2RpZmllcnMubW9kaWZpZXJzOwogICAgIHJlc3VsdHNPYmplY3QuYnVncyA9IGZp
bHRlcmVkTW9kaWZpZXJzLmJ1Z3M7Ci0gICAgcmVzdWx0c09iamVjdC5pc1dvbnRGaXhTa2lwID0g
c3RyaW5nQ29udGFpbnMoZXhwZWN0YXRpb25zLm1vZGlmaWVycywgJ1dPTlRGSVgnKSB8fCBzdHJp
bmdDb250YWlucyhleHBlY3RhdGlvbnMubW9kaWZpZXJzLCAnU0tJUCcpOyAKKyAgICByZXN1bHRz
T2JqZWN0LmlzV29udEZpeFNraXAgPSBzdHJpbmcuY29udGFpbnMoZXhwZWN0YXRpb25zLm1vZGlm
aWVycywgJ1dPTlRGSVgnKSB8fCBzdHJpbmcuY29udGFpbnMoZXhwZWN0YXRpb25zLm1vZGlmaWVy
cywgJ1NLSVAnKTsgCiB9CiAKIGZ1bmN0aW9uIHBsYXRmb3JtT2JqZWN0Rm9yTmFtZShwbGF0Zm9y
bU5hbWUpCkBAIC02OTIsOCArNjkyLDggQEAgZnVuY3Rpb24gZ2V0UGFyc2VkRXhwZWN0YXRpb25z
KGRhdGEpCiAgICAgdmFyIGV4cGVjdGF0aW9ucyA9IFtdOwogICAgIHZhciBsaW5lcyA9IGRhdGEu
c3BsaXQoJ1xuJyk7CiAgICAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7Ci0gICAgICAg
IGxpbmUgPSB0cmltU3RyaW5nKGxpbmUpOwotICAgICAgICBpZiAoIWxpbmUgfHwgc3RhcnRzV2l0
aChsaW5lLCAnIycpKQorICAgICAgICBsaW5lID0gc3RyaW5nLnRyaW1TdHJpbmcobGluZSk7Cisg
ICAgICAgIGlmICghbGluZSB8fCBzdHJpbmcuc3RhcnRzV2l0aChsaW5lLCAnIycpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFRoaXMgY29kZSBtaW1pY3MgX3Rva2VuaXplX2xp
bmVfdXNpbmdfbmV3X2Zvcm1hdCgpIGluCkBAIC05MDIsOCArOTAyLDggQEAgZnVuY3Rpb24gcHJv
Y2Vzc01pc3NpbmdUZXN0c1dpdGhFeHBlY3RhdGlvbnMoYnVpbGRlciwgcGxhdGZvcm0sIGJ1aWxk
VHlwZSkKIAogICAgICAgICAvLyBUZXN0IGhhcyBleHBlY3RhdGlvbnMsIGJ1dCBubyByZXN1bHQg
aW4gdGhlIGJ1aWxkZXJzIHJlc3VsdHMuCiAgICAgICAgIC8vIFRoaXMgbWVhbnMgaXQncyBlaXRo
ZXIgU0tJUCBvciBwYXNzZXMgb24gYWxsIGJ1aWxkcy4KLSAgICAgICAgaWYgKCFhbGxUZXN0c0Zv
clBsYXRmb3JtQW5kQnVpbGRUeXBlW3Rlc3RdICYmICFzdHJpbmdDb250YWlucyhleHBlY3RhdGlv
bnMubW9kaWZpZXJzLCAnV09OVEZJWCcpKSB7Ci0gICAgICAgICAgICBpZiAoc3RyaW5nQ29udGFp
bnMoZXhwZWN0YXRpb25zLm1vZGlmaWVycywgJ1NLSVAnKSkKKyAgICAgICAgaWYgKCFhbGxUZXN0
c0ZvclBsYXRmb3JtQW5kQnVpbGRUeXBlW3Rlc3RdICYmICFzdHJpbmcuY29udGFpbnMoZXhwZWN0
YXRpb25zLm1vZGlmaWVycywgJ1dPTlRGSVgnKSkgeworICAgICAgICAgICAgaWYgKHN0cmluZy5j
b250YWlucyhleHBlY3RhdGlvbnMubW9kaWZpZXJzLCAnU0tJUCcpKQogICAgICAgICAgICAgICAg
IHNraXBwZWQucHVzaCh0ZXN0KTsKICAgICAgICAgICAgIGVsc2UgaWYgKCFleHBlY3RhdGlvbnMu
ZXhwZWN0YXRpb25zLm1hdGNoKC9eXHMqUEFTU1xzKiQvKSkgewogICAgICAgICAgICAgICAgIC8v
IERvbid0IHNob3cgdGVzdHMgZXhwZWN0ZWQgdG8gYWx3YXlzIHBhc3MuIFRoaXMgaXMgdXNlZCBp
biB3YXlzIGxpa2UKQEAgLTEwNzIsNyArMTA3Miw3IEBAIGZ1bmN0aW9uIHByb2Nlc3NNaXNzaW5n
QW5kRXh0cmFFeHBlY3RhdGlvbnMocmVzdWx0c0ZvclRlc3QpCiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudCAm
JiAhcmVzdWx0c01hcFtlbGVtZW50XSAmJiAhc3RyaW5nQ29udGFpbnMoZWxlbWVudCwgJ0JVRycp
OworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50ICYmICFyZXN1bHRzTWFwW2VsZW1lbnRd
ICYmICFzdHJpbmcuY29udGFpbnMoZWxlbWVudCwgJ0JVRycpOwogICAgICAgICAgICAgfSk7CiAK
ICAgICAgICAgZm9yICh2YXIgcmVzdWx0IGluIHJlc3VsdHNNYXApIHsKQEAgLTExMTIsOSArMTEx
Miw5IEBAIGZ1bmN0aW9uIHByb2Nlc3NNaXNzaW5nQW5kRXh0cmFFeHBlY3RhdGlvbnMocmVzdWx0
c0ZvclRlc3QpCiAgICAgICAgIC8vIGh1bmRyZWQgcnVucy4gSXQncyBub3Qgd29ydGggdGhlIG1h
bnVhbCBtYWludGVuYW5jZSBlZmZvcnQuCiAgICAgICAgIC8vIEFsc28sIGlmIGEgdGVzdCB0aW1l
cyBvdXQsIHRoZW4gaXQgc2hvdWxkIG5vdCBiZSBtYXJrZWQgYXMgc2xvdy4KICAgICAgICAgdmFy
IG1pblRpbWVGb3JOZWVkc1Nsb3cgPSBpc0RlYnVnKHJlc3VsdHNGb3JUZXN0LmJ1aWxkZXIpID8g
MiA6IDE7Ci0gICAgICAgIGlmIChpc1Nsb3dUZXN0KHJlc3VsdHNGb3JUZXN0KSAmJiAhcmVzdWx0
c01hcFsnVElNRU9VVCddICYmICghcmVzdWx0c0ZvclRlc3QubW9kaWZpZXJzIHx8ICFzdHJpbmdD
b250YWlucyhyZXN1bHRzRm9yVGVzdC5tb2RpZmllcnMsICdTTE9XJykpKQorICAgICAgICBpZiAo
aXNTbG93VGVzdChyZXN1bHRzRm9yVGVzdCkgJiYgIXJlc3VsdHNNYXBbJ1RJTUVPVVQnXSAmJiAo
IXJlc3VsdHNGb3JUZXN0Lm1vZGlmaWVycyB8fCAhc3RyaW5nLmNvbnRhaW5zKHJlc3VsdHNGb3JU
ZXN0Lm1vZGlmaWVycywgJ1NMT1cnKSkpCiAgICAgICAgICAgICBtaXNzaW5nRXhwZWN0YXRpb25z
LnB1c2goJ1NMT1cnKTsKLSAgICAgICAgZWxzZSBpZiAoaXNGYXN0VGVzdChyZXN1bHRzRm9yVGVz
dCkgJiYgcmVzdWx0c0ZvclRlc3QubW9kaWZpZXJzICYmIHN0cmluZ0NvbnRhaW5zKHJlc3VsdHNG
b3JUZXN0Lm1vZGlmaWVycywgJ1NMT1cnKSkKKyAgICAgICAgZWxzZSBpZiAoaXNGYXN0VGVzdChy
ZXN1bHRzRm9yVGVzdCkgJiYgcmVzdWx0c0ZvclRlc3QubW9kaWZpZXJzICYmIHN0cmluZy5jb250
YWlucyhyZXN1bHRzRm9yVGVzdC5tb2RpZmllcnMsICdTTE9XJykpCiAgICAgICAgICAgICBleHRy
YUV4cGVjdGF0aW9ucy5wdXNoKCdTTE9XJyk7CiAKICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5v
IG1pc3NpbmcgcmVzdWx0cyBvciBtb2RpZmllcnMgYmVzaWRlcyBidWlsZApAQCAtMTQxMiw3ICsx
NDEyLDcgQEAgZnVuY3Rpb24gaHRtbEZvclNpbmdsZVRlc3RSb3codGVzdCkKICAgICB2YXIgaHRt
bCA9ICcnOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7IGkrKykgewog
ICAgICAgICB2YXIgaGVhZGVyID0gaGVhZGVyc1tpXTsKLSAgICAgICAgaWYgKHN0YXJ0c1dpdGgo
aGVhZGVyLCAndGVzdCcpIHx8IHN0YXJ0c1dpdGgoaGVhZGVyLCAnYnVpbGRlcicpKSB7CisgICAg
ICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChoZWFkZXIsICd0ZXN0JykgfHwgc3RyaW5nLnN0YXJ0
c1dpdGgoaGVhZGVyLCAnYnVpbGRlcicpKSB7CiAgICAgICAgICAgICAvLyBJZiBpc0Nyb3NzQnVp
bGRlclZpZXcoKSBpcyB0cnVlLCB3ZSdyZSBqdXN0IHZpZXdpbmcgYSBzaW5nbGUgdGVzdAogICAg
ICAgICAgICAgLy8gd2l0aCByZXN1bHRzIGZvciBtYW55IGJ1aWxkZXJzLCBzbyB0aGUgZmlyc3Qg
Y29sdW1uIGlzIGJ1aWxkZXIgbmFtZXMKICAgICAgICAgICAgIC8vIGluc3RlYWQgb2YgdGVzdCBw
YXRocy4KQEAgLTE0MjAsMTUgKzE0MjAsMTUgQEAgZnVuY3Rpb24gaHRtbEZvclNpbmdsZVRlc3RS
b3codGVzdCkKICAgICAgICAgICAgIHZhciB0ZXN0Q2VsbEhUTUwgPSBpc0Nyb3NzQnVpbGRlclZp
ZXcoKSA/IHRlc3QuYnVpbGRlciA6ICc8c3BhbiBjbGFzcz0ibGluayIgb25jbGljaz0ic2V0UXVl
cnlQYXJhbWV0ZXIoXCd0ZXN0c1wnLFwnJyArIHRlc3QudGVzdCArJ1wnKTsiPicgKyB0ZXN0LnRl
c3QgKyAnPC9zcGFuPic7CiAKICAgICAgICAgICAgIGh0bWwgKz0gJzx0cj48dGQgY2xhc3M9Iicg
KyB0ZXN0Q2VsbENsYXNzTmFtZSArICciPicgKyB0ZXN0Q2VsbEhUTUw7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc3RhcnRzV2l0aChoZWFkZXIsICdidWdzJykpCisgICAgICAgIH0gZWxzZSBpZiAoc3Ry
aW5nLnN0YXJ0c1dpdGgoaGVhZGVyLCAnYnVncycpKQogICAgICAgICAgICAgaHRtbCArPSAnPHRk
IGNsYXNzPW9wdGlvbnMtY29udGFpbmVyPicgKyAodGVzdC5idWdzID8gaHRtbEZvckJ1Z3ModGVz
dC5idWdzKSA6IGNyZWF0ZUJ1Z0hUTUwodGVzdCkpOwotICAgICAgICBlbHNlIGlmIChzdGFydHNX
aXRoKGhlYWRlciwgJ21vZGlmaWVycycpKQorICAgICAgICBlbHNlIGlmIChzdHJpbmcuc3RhcnRz
V2l0aChoZWFkZXIsICdtb2RpZmllcnMnKSkKICAgICAgICAgICAgIGh0bWwgKz0gJzx0ZCBjbGFz
cz1vcHRpb25zLWNvbnRhaW5lcj4nICsgdGVzdC5tb2RpZmllcnM7Ci0gICAgICAgIGVsc2UgaWYg
KHN0YXJ0c1dpdGgoaGVhZGVyLCAnZXhwZWN0YXRpb25zJykpCisgICAgICAgIGVsc2UgaWYgKHN0
cmluZy5zdGFydHNXaXRoKGhlYWRlciwgJ2V4cGVjdGF0aW9ucycpKQogICAgICAgICAgICAgaHRt
bCArPSAnPHRkIGNsYXNzPW9wdGlvbnMtY29udGFpbmVyPicgKyB0ZXN0LmV4cGVjdGF0aW9uczsK
LSAgICAgICAgZWxzZSBpZiAoc3RhcnRzV2l0aChoZWFkZXIsICdzbG93ZXN0JykpCisgICAgICAg
IGVsc2UgaWYgKHN0cmluZy5zdGFydHNXaXRoKGhlYWRlciwgJ3Nsb3dlc3QnKSkKICAgICAgICAg
ICAgIGh0bWwgKz0gJzx0ZD4nICsgKHRlc3Quc2xvd2VzdFRpbWUgPyB0ZXN0LnNsb3dlc3RUaW1l
ICsgJ3MnIDogJycpOwotICAgICAgICBlbHNlIGlmIChzdGFydHNXaXRoKGhlYWRlciwgJ2ZsYWtp
bmVzcycpKQorICAgICAgICBlbHNlIGlmIChzdHJpbmcuc3RhcnRzV2l0aChoZWFkZXIsICdmbGFr
aW5lc3MnKSkKICAgICAgICAgICAgIGh0bWwgKz0gaHRtbEZvclRlc3RSZXN1bHRzKHRlc3QpOwog
ICAgIH0KICAgICByZXR1cm4gaHRtbDsKQEAgLTE1ODIsNyArMTU4Miw3IEBAIGZ1bmN0aW9uIHJl
YWxNb2RpZmllcnMobW9kaWZpZXJTdHJpbmcpCiB7CiAgICAgdmFyIG1vZGlmaWVycyA9IG1vZGlm
aWVyU3RyaW5nLnNwbGl0KCcgJyk7OwogICAgIHJldHVybiBtb2RpZmllcnMuZmlsdGVyKGZ1bmN0
aW9uKG1vZGlmaWVyKSB7Ci0gICAgICAgIGlmIChtb2RpZmllciBpbiBCVUlMRF9UWVBFUyB8fCBz
dGFydHNXaXRoKG1vZGlmaWVyLCAnQlVHJykpCisgICAgICAgIGlmIChtb2RpZmllciBpbiBCVUlM
RF9UWVBFUyB8fCBzdHJpbmcuc3RhcnRzV2l0aChtb2RpZmllciwgJ0JVRycpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHZhciBtYXRjaGVzUGxhdGZvcm1PclVuaW9uID0g
ZmFsc2U7CkBAIC0xOTM2LDE0ICsxOTM2LDE0IEBAIGZ1bmN0aW9uIGFkZEV4cGVjdGF0aW9uSXRl
bShleHBlY3RhdGlvbnNDb250YWluZXJzLCBwYXJlbnRDb250YWluZXIsIHBsYXRmb3JtLCBwCiAg
ICAgfTsKIAogICAgIHZhciB1cmwgPSBiYXNlICsgcGxhdGZvcm1QYXJ0ICsgcGF0aDsKLSAgICBp
ZiAoaXNJbWFnZSB8fCAhc3RhcnRzV2l0aChiYXNlLCAnaHR0cDovL3N2bi53ZWJraXQub3JnJykp
IHsKKyAgICBpZiAoaXNJbWFnZSB8fCAhc3RyaW5nLnN0YXJ0c1dpdGgoYmFzZSwgJ2h0dHA6Ly9z
dm4ud2Via2l0Lm9yZycpKSB7CiAgICAgICAgIHZhciBkdW1teU5vZGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KGlzSW1hZ2UgPyAnaW1nJyA6ICdzY3JpcHQnKTsKICAgICAgICAgZHVtbXlOb2Rl
LnNyYyA9IHVybDsKICAgICAgICAgZHVtbXlOb2RlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgdmFyIGl0ZW07CiAgICAgICAgICAgICBpZiAoaXNJbWFnZSkgewogICAgICAgICAg
ICAgICAgIGl0ZW0gPSBkdW1teU5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgo
YmFzZSwgJ2h0dHA6Ly9zdm4ud2Via2l0Lm9yZycpKQorICAgICAgICAgICAgICAgIGlmIChzdHJp
bmcuc3RhcnRzV2l0aChiYXNlLCAnaHR0cDovL3N2bi53ZWJraXQub3JnJykpCiAgICAgICAgICAg
ICAgICAgICAgIG1heWJlQWRkUG5nQ2hlY2tzdW0oaXRlbSwgdXJsKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lm
cmFtZScpOwpAQCAtMjAzNywxMSArMjAzNywxMSBAQCBmdW5jdGlvbiBjb25zb2xpZGF0ZVVzZWRQ
bGF0Zm9ybXMoY29udGFpbmVyKQogICAgICAgICBwbGF0Zm9ybXNbJ1dJTiddID0ge307CiAgICAg
ICAgIHBsYXRmb3Jtc1snTElOVVgnXSA9IHt9OwogICAgICAgICBhbGxQbGF0Zm9ybXMuZm9yRWFj
aChmdW5jdGlvbihwbGF0Zm9ybSkgewotICAgICAgICAgICAgaWYgKHN0YXJ0c1dpdGgocGxhdGZv
cm0sICdNQUMnKSkKKyAgICAgICAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aChwbGF0Zm9ybSwg
J01BQycpKQogICAgICAgICAgICAgICAgIHBsYXRmb3Jtc1snTUFDJ11bcGxhdGZvcm1dID0gMTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKHN0YXJ0c1dpdGgocGxhdGZvcm0sICdXSU4nKSkKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHN0cmluZy5zdGFydHNXaXRoKHBsYXRmb3JtLCAnV0lOJykpCiAgICAg
ICAgICAgICAgICAgcGxhdGZvcm1zWydXSU4nXVtwbGF0Zm9ybV0gPSAxOwotICAgICAgICAgICAg
ZWxzZSBpZiAoc3RhcnRzV2l0aChwbGF0Zm9ybSwgJ0xJTlVYJykpCisgICAgICAgICAgICBlbHNl
IGlmIChzdHJpbmcuc3RhcnRzV2l0aChwbGF0Zm9ybSwgJ0xJTlVYJykpCiAgICAgICAgICAgICAg
ICAgcGxhdGZvcm1zWydMSU5VWCddW3BsYXRmb3JtXSA9IDE7CiAgICAgICAgIH0pOwogCkBAIC0y
MDU1LDcgKzIwNTUsNyBAQCBmdW5jdGlvbiBjb25zb2xpZGF0ZVVzZWRQbGF0Zm9ybXMoY29udGFp
bmVyKQogICAgICAgICAgICAgICAgIHZhciBub2Rlc1RvUmVtb3ZlID0gW107CiAgICAgICAgICAg
ICAgICAgZm9yICh2YXIgaiA9IDAsIHVzZWRQbGF0Zm9ybXNMZW5ndGggPSB1c2VkUGxhdGZvcm1z
Lmxlbmd0aDsgaiA8IHVzZWRQbGF0Zm9ybXNMZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAg
ICAgICB2YXIgdXNlZFBsYXRmb3JtID0gdXNlZFBsYXRmb3Jtc1tqXTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0YXJ0c1dpdGgodXNlZFBsYXRmb3JtLnRleHRDb250ZW50LCBwbGF0Zm9ybSkp
CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aCh1c2VkUGxhdGZvcm0u
dGV4dENvbnRlbnQsIHBsYXRmb3JtKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzVG9S
ZW1vdmUucHVzaCh1c2VkUGxhdGZvcm0pOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMjA4NCwx
MSArMjA4NCwxMSBAQCBmdW5jdGlvbiBleHBlY3RhdGlvbnNUaXRsZShwbGF0Zm9ybSwgcGF0aCwg
YnVpbGRlcikKICAgICB2YXIgaW5uZXJIVE1MOwogICAgIGlmIChidWlsZGVyKSB7CiAgICAgICAg
IHZhciByZXN1bHRzVHlwZTsKLSAgICAgICAgaWYgKGVuZHNXaXRoKHBhdGgsICctY3Jhc2gtbG9n
LnR4dCcpKQorICAgICAgICBpZiAoc3RyaW5nLmVuZHNXaXRoKHBhdGgsICctY3Jhc2gtbG9nLnR4
dCcpKQogICAgICAgICAgICAgcmVzdWx0c1R5cGUgPSAnU1RBQ0tUUkFDRSc7Ci0gICAgICAgIGVs
c2UgaWYgKGVuZHNXaXRoKHBhdGgsICctYWN0dWFsLnR4dCcpIHx8IGVuZHNXaXRoKHBhdGgsICct
YWN0dWFsLnBuZycpKQorICAgICAgICBlbHNlIGlmIChzdHJpbmcuZW5kc1dpdGgocGF0aCwgJy1h
Y3R1YWwudHh0JykgfHwgc3RyaW5nLmVuZHNXaXRoKHBhdGgsICctYWN0dWFsLnBuZycpKQogICAg
ICAgICAgICAgcmVzdWx0c1R5cGUgPSAnQUNUVUFMIFJFU1VMVFMnOwotICAgICAgICBlbHNlIGlm
IChlbmRzV2l0aChwYXRoLCAnLXdkaWZmLmh0bWwnKSkKKyAgICAgICAgZWxzZSBpZiAoc3RyaW5n
LmVuZHNXaXRoKHBhdGgsICctd2RpZmYuaHRtbCcpKQogICAgICAgICAgICAgcmVzdWx0c1R5cGUg
PSAnV0RJRkYnOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHRzVHlwZSA9ICdESUZG
JzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMv
cnVuLWVtYmVkZGVkLXVuaXR0ZXN0cy5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9ydW4tZW1iZWRkZWQtdW5pdHRlc3RzLmh0bWwKaW5kZXggNzkxN2RjY2Ez
ZGIwYTU1ODU4MGRiOTIyYjk3ZjRkYzZhYjkzOGY2Yi4uMTQzMjM1ZjNkZmMxNmYxZWU5YjQyYTE0
YzRmZmFmYTUwNzdlZDNjMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0
aWMtZGFzaGJvYXJkcy9ydW4tZW1iZWRkZWQtdW5pdHRlc3RzLmh0bWwKKysrIGIvVG9vbHMvVGVz
dFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9ydW4tZW1iZWRkZWQtdW5pdHRlc3RzLmh0
bWwKQEAgLTQ3LDYgKzQ3LDcgQEAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogd2lu
ZG93LnBhcmVudCA9IG51bGw7CiA8L3NjcmlwdD4KIAorPHNjcmlwdCBzcmM9InN0cmluZy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZGFzaGJvYXJkX2Jhc2UuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9ImxvYWRlci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ibG9hZGVyX3VuaXR0
ZXN0cy5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0
YXRpYy1kYXNoYm9hcmRzL3J1bi11bml0dGVzdHMuaHRtbCBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvcnVuLXVuaXR0ZXN0cy5odG1sCmluZGV4IDI1NzJmNWEzOTYz
NGM3NGJmMGE5ZTU0NjY4ZmNhYjcwYmM4M2FjYzYuLjFmZGI5OTg2OWE1ZmJjZDg5NmEyOTg3MGFj
ZDg1Yzc5NmJjNzI5NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGlj
LWRhc2hib2FyZHMvcnVuLXVuaXR0ZXN0cy5odG1sCisrKyBiL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2
ZXIvc3RhdGljLWRhc2hib2FyZHMvcnVuLXVuaXR0ZXN0cy5odG1sCkBAIC00MSw2ICs0MSw3IEBA
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iZmxha2luZXNzX2Rhc2hib2FyZF90ZXN0cy5jc3MiPjwvbGluaz4KIDxzY3JpcHQgc3Jj
PSJidWlsZGVycy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iYnVpbGRlcnNfdW5pdHRlc3Rz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzdHJpbmcuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9ImRhc2hib2FyZF9iYXNlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJsb2FkZXIu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImxvYWRlcl91bml0dGVzdHMuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy9z
dHJpbmcuanMgYi9Ub29scy9UZXN0UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3N0cmlu
Zy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZTFmN2Y5ZmJiNDg3YmRlNDljM2UxYzAwYzMxNDU3ZGYwYzc4ODg4
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJv
YXJkcy9zdHJpbmcuanMKQEAgLTAsMCArMSw2OSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDEzIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAg
ICAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8g
ICAgICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8vICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8vIEBmaWxlb3ZlcnZpZXcgR2VuZXJp
YyBzdHJpbmcgdXRpbGl0eSBmdW5jdGlvbnMuCit2YXIgc3RyaW5nID0gc3RyaW5nIHx8IHt9Owor
CisoZnVuY3Rpb24oKSB7CisKK3N0cmluZy5jb250YWlucyA9IGZ1bmN0aW9uKGEsIGIpCit7Cisg
ICAgcmV0dXJuIGEuaW5kZXhPZihiKSAhPSAtMTsKK30KKworc3RyaW5nLmNhc2VJbnNlbnNpdGl2
ZUNvbnRhaW5zID0gZnVuY3Rpb24oYSwgYikKK3sKKyAgICByZXR1cm4gYS5tYXRjaChuZXcgUmVn
RXhwKGIsICdpJykpOworfQorCitzdHJpbmcuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKGEsIGIpCit7
CisgICAgcmV0dXJuIGEuaW5kZXhPZihiKSA9PSAwOworfQorCitzdHJpbmcuZW5kc1dpdGggPSBm
dW5jdGlvbihhLCBiKQoreworICAgIHJldHVybiBhLmxhc3RJbmRleE9mKGIpID09IGEubGVuZ3Ro
IC0gYi5sZW5ndGg7Cit9CisKK3N0cmluZy5pc1ZhbGlkTmFtZSA9IGZ1bmN0aW9uKHN0cikKK3sK
KyAgICByZXR1cm4gc3RyLm1hdGNoKC9bQS1aYS16MC05XC1cXyxdLyk7Cit9CisKK3N0cmluZy50
cmltU3RyaW5nID0gZnVuY3Rpb24oc3RyKQoreworICAgIHJldHVybiBzdHIucmVwbGFjZSgvXlxz
K3xccyskL2csICcnKTsKK30KKworc3RyaW5nLmNvbGxhcHNlV2hpdGVzcGFjZSA9IGZ1bmN0aW9u
KHN0cikKK3sKKyAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xzKy9nLCAnICcpOworfQorCit9KSgp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1
bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRtbCBiL1Rvb2xz
L1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2FyZHMvdGltZWxpbmVfZXhwbG9yZXIuaHRt
bAppbmRleCBhMDIwNDNiMTIwZTRkNzU2MDlkZWJiMDNlZTIyZDkyNGEyODAzMDEzLi4zYTU5NDRh
ODgwNjYwYWM2OTdiMjIxZjYyZDM5YTc0YWMwMTRkZGVkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
UmVzdWx0U2VydmVyL3N0YXRpYy1kYXNoYm9hcmRzL3RpbWVsaW5lX2V4cGxvcmVyLmh0bWwKKysr
IGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90aW1lbGluZV9leHBs
b3Jlci5odG1sCkBAIC05OCw2ICs5OCw3IEBAIGJvZHkgewogPHNjcmlwdCBzcmM9ImR5Z3JhcGgt
Y29tYmluZWQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImJ1aWxkZXJzLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJsb2FkZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InN0cmlu
Zy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZGFzaGJvYXJkX2Jhc2UuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KIHZhciBGQUlMSU5HX1RFU1RTX0RBVEFTRVRfTkFNRSA9ICdGYWlsaW5nIHRl
c3RzJzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSZXN1bHRTZXJ2ZXIvc3RhdGljLWRhc2hib2Fy
ZHMvdHJlZW1hcC5odG1sIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJk
cy90cmVlbWFwLmh0bWwKaW5kZXggNGVhMTFmOTczNDE5M2ZmZjgyY2ZlZmFmMmE5M2Q3ZTc4ODE4
NzUzNS4uMjUyYWM4MTE5NmQ1YjQwOTZlZmEyZDdkNWFmOGZiNTEyMDBlZDdhOCAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0bWwK
KysrIGIvVG9vbHMvVGVzdFJlc3VsdFNlcnZlci9zdGF0aWMtZGFzaGJvYXJkcy90cmVlbWFwLmh0
bWwKQEAgLTEwOSw2ICsxMDksNyBAQCB0ZCB7CiA8L3N0eWxlPgogPHNjcmlwdCBzcmM9ImJ1aWxk
ZXJzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJsb2FkZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InN0cmluZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZGFzaGJvYXJkX2Jh
c2UuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9J3dlYnRyZWVtYXAuanMnPjwvc2NyaXB0Pgog
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>