<?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>98246</bug_id>
          
          <creation_ts>2012-10-03 02:42:23 -0700</creation_ts>
          <short_desc>Web Inspector: [Styles] Unable to edit properties in broken stylesheets</short_desc>
          <delta_ts>2012-10-06 10:42:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>98520</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>7raivis</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>733492</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-03 02:42:23 -0700</bug_when>
    <thetext>For some broken stylesheets, CSSParser produces source data inconsistent with the resulting CSSOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>733521</commentid>
    <comment_count>1</comment_count>
      <attachid>166843</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-03 03:10:40 -0700</bug_when>
    <thetext>Created attachment 166843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734619</commentid>
    <comment_count>2</comment_count>
      <attachid>167084</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-04 05:50:32 -0700</bug_when>
    <thetext>Created attachment 167084
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735535</commentid>
    <comment_count>3</comment_count>
      <attachid>167084</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-10-05 03:12:32 -0700</bug_when>
    <thetext>Comment on attachment 167084
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:10328
&gt; +    if (!m_currentRuleData-&gt;isBlockRule() &amp;&amp; m_currentRuleData-&gt;type != CSSRuleSourceData::IMPORT_RULE)

I don&apos;t think this condition is ever true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735548</commentid>
    <comment_count>4</comment_count>
      <attachid>167301</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-05 03:39:04 -0700</bug_when>
    <thetext>Created attachment 167301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735602</commentid>
    <comment_count>5</comment_count>
      <attachid>167317</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-05 06:20:09 -0700</bug_when>
    <thetext>Created attachment 167317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735631</commentid>
    <comment_count>6</comment_count>
      <attachid>167327</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-05 07:43:14 -0700</bug_when>
    <thetext>Created attachment 167327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735643</commentid>
    <comment_count>7</comment_count>
      <attachid>167327</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-10-05 08:16:14 -0700</bug_when>
    <thetext>Comment on attachment 167327
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:10300
&gt; +        m_currentRuleData.clear();

Redundant

&gt; Source/WebCore/css/CSSParser.cpp:10302
&gt; +    m_currentRuleData = CSSRuleSourceData::create(ruleType);

Let&apos;s just add m_currentRuleData = data; above.

&gt; Source/WebCore/css/CSSParser.cpp:-10382
&gt; -        SourceRange&amp; topRuleBodyRange = m_currentRuleDataStack-&gt;last()-&gt;ruleBodyRange;

Looks like a separate change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735644</commentid>
    <comment_count>8</comment_count>
      <attachid>167327</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-10-05 08:16:47 -0700</bug_when>
    <thetext>Comment on attachment 167327
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:9929
&gt; +        popRuleData();

This should be put into separate patch, you should also fix some similar issues with other types of rules.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735648</commentid>
    <comment_count>9</comment_count>
      <attachid>167330</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-05 08:20:27 -0700</bug_when>
    <thetext>Created attachment 167330
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735673</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-10-05 09:00:41 -0700</bug_when>
    <thetext>Committed r130511: &lt;http://trac.webkit.org/changeset/130511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736255</commentid>
    <comment_count>11</comment_count>
    <who name="Binyamin">7raivis</who>
    <bug_when>2012-10-06 10:42:06 -0700</bug_when>
    <thetext>Related Chrome bug http://code.google.com/p/chromium/issues/detail?id=152636</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166843</attachid>
            <date>2012-10-03 03:10:40 -0700</date>
            <delta_ts>2012-10-04 05:50:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98246-20121003140951.patch</filename>
            <type>text/plain</type>
            <size>17640</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGEyNzdlYzA5ZjljOGEy
ZWE3NGExMWVjOGQ4ODU2OWJiOTVhZTZkMy4uZjI1YWNmZmY4ZWZiOWMwNGExZWIyZDAxNTNlMjVh
ZTNjZDJlMzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEwLTAzICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVW5hYmxlIHRvIGVkaXQgcHJvcGVydGllcyBpbiBicm9rZW4gc3R5bGVz
aGVldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NT
UGFyc2VyIGlzIGFibGUgdG8gcmVkdWNlIG50ZXJtcyB3aXRoIGVtcHR5IGFsdGVybmF0aXZlcywg
dGhhdCBhcmUgZmlyc3QgaW4gdGhlIHJpZ2h0IHBhcnQgb2Ygc29tZSBydWxlcywKKyAgICAgICAg
ZXZlbiBpZiB0aGVzZSBydWxlcyBkbyBub3QgbWF0Y2ggdGhlIGlucHV0IHRoZW1zZWx2ZXMuIFRo
aXMgcmVzdWx0cyBpbiBiZWZvcmVfc2VsZWN0b3JfbGlzdCBjYWxsaW5nIENTU1BhcnNlcjo6bWFy
a1J1bGVIZWFkZXJTdGFydCgpCisgICAgICAgIChwdXNoaW5nIGEgbmV3IGluc3RhbmNlIG9mIENT
U1J1bGVTb3VyY2VEYXRhIG9udG8gbV9jdXJyZW50UnVsZURhdGFTdGFjaykgd2l0aG91dCB0aGUg
Y29ycmVzcG9uZGluZyBpbnZvY2F0aW9uCisgICAgICAgIG9mIENTU1BhcnNlcjo6bWFya1J1bGVI
ZWFkZXJFbmQoKSwgd2hpY2ggYnJlYWtzIHRoZSBDU1MgcnVsZSBoaWVyYXJjaHkuCisgICAgICAg
IFRoZSBjaGFuZ2UgbW92ZXMgdGhlIENTU1J1bGVzb3VyY2VEYXRhIGluc3RhbmNlIHB1c2hpbmcg
Y29kZSBmcm9tIG1hcmtSdWxlSGVhZGVyU3RhcnQoKSBpbnRvIG1hcmtSdWxlSGVhZGVyRW5kKCku
CisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9y
cy5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6bWFya1J1bGVIZWFkZXJTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnNldFJ1bGVIZWFkZXJFbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpt
YXJrUnVsZUhlYWRlckVuZCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAo
Q1NTUGFyc2VyKToKKwogMjAxMi0xMC0wMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNb2RpZmljYXRpb25zIGluIGEgc2hhZG93
IHRyZWUgZG9uJ3QgdXBkYXRlIHRoZSBFbGVtZW50cyBwYW5lbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKaW5kZXggYmU4OTY5MGY4OGY2OWJkM2NhMjJiYzM3YmI5NGQ2M2IzYTljNzcwZS4uNjVk
NGRjZjIzY2FmNjlhYzJkYTQ2MTg4ZmIyMDdkZTlhNWVjNWU2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKQEAgLTEwMjkwLDkgKzEwMjkwLDggQEAgdm9pZCBDU1NQYXJzZXI6Om1hcmtSdWxl
SGVhZGVyU3RhcnQoQ1NTUnVsZVNvdXJjZURhdGE6OlR5cGUgcnVsZVR5cGUpCiB7CiAgICAgaWYg
KCFpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8
Q1NTUnVsZVNvdXJjZURhdGE+IGRhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKHJ1bGVU
eXBlKTsKLSAgICBkYXRhLT5ydWxlSGVhZGVyUmFuZ2Uuc3RhcnQgPSB0b2tlblN0YXJ0T2Zmc2V0
KCk7Ci0gICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+YXBwZW5kKGRhdGEucmVsZWFzZSgpKTsK
KyAgICBtX2N1cnJlbnRSdWxlRGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5
cGUpOworICAgIG1fY3VycmVudFJ1bGVEYXRhLT5ydWxlSGVhZGVyUmFuZ2Uuc3RhcnQgPSB0b2tl
blN0YXJ0T2Zmc2V0KCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpA
QCAtMTAzMDYsMTkgKzEwMzA1LDIxIEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6c2V0UnVsZUhl
YWRlckVuZChjb25zdCBDaGFyYWN0ZXJUeXBlKiBkYXRhU3RhcnQpCiAgICAgICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5sYXN0KCktPnJ1bGVIZWFk
ZXJSYW5nZS5lbmQgPSBsaXN0RW5kIC0gZGF0YVN0YXJ0OworICAgIG1fY3VycmVudFJ1bGVEYXRh
LT5ydWxlSGVhZGVyUmFuZ2UuZW5kID0gbGlzdEVuZCAtIGRhdGFTdGFydDsKIH0KIAogdm9pZCBD
U1NQYXJzZXI6Om1hcmtSdWxlSGVhZGVyRW5kKCkKIHsKICAgICBpZiAoIWlzRXh0cmFjdGluZ1Nv
dXJjZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwotICAgIEFTU0VSVCghbV9jdXJyZW50UnVsZURh
dGFTdGFjay0+aXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50UnVsZURhdGEpOwogCiAg
ICAgaWYgKGlzOEJpdFNvdXJjZSgpKQogICAgICAgICBzZXRSdWxlSGVhZGVyRW5kPExDaGFyPiht
X2RhdGFTdGFydDguZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgc2V0UnVsZUhlYWRlckVuZDxV
Q2hhcj4obV9kYXRhU3RhcnQxNi5nZXQoKSk7CisKKyAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNr
LT5hcHBlbmQobV9jdXJyZW50UnVsZURhdGEucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBDU1NQYXJz
ZXI6Om1hcmtSdWxlQm9keVN0YXJ0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBlMzMwOTBm
ODMyNmZhNjRiM2MyZDNhZWI4M2ViNDZiMzRkMzA2YmQ5Li5jMjM1MTgzNjdmN2M5N2VjMzRhYmRk
ZWVmZGJiYmU3NjQ1NjhiNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0zNDMsNiArMzQz
LDcgQEAgcHVibGljOgogICAgIC8vIHRva2VuaXplciBtZXRob2RzIGFuZCBkYXRhCiAgICAgc2l6
ZV90IG1fcGFyc2VkVGV4dFByZWZpeExlbmd0aDsKICAgICBTb3VyY2VSYW5nZSBtX3Byb3BlcnR5
UmFuZ2U7CisgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBtX2N1cnJlbnRSdWxlRGF0YTsK
ICAgICBPd25QdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrOwog
ICAgIFJ1bGVTb3VyY2VEYXRhTGlzdCogbV9ydWxlU291cmNlRGF0YVJlc3VsdDsKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGUzYTIyYmZlNGFhYmFkOWFjZWIzZWZiYTE4MDc3NGI3ZDJlZTQ1ZTcuLjU1ZDlkZTFhNzYyMjhh
NjMzNzM3ZGVkNjAwOTgwNDU3NmYxNjY2YTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0x
MC0wMyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFtTdHlsZXNdIFVuYWJsZSB0byBlZGl0IHByb3BlcnRpZXMgaW4gYnJv
a2VuIHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05ODI0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczogRXh0cmFjdGVk
IENTUyBkYXRhIGR1bXBpbmcgY29kZS4KKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3Qp
OgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJvcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxl
c2hlZXQtZXJyb3JzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLW5ldy1BUEkuaHRtbDoKKwogMjAxMi0xMC0wMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlA
d2Via2l0Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBNb2RpZmljYXRpb25zIGluIGEg
c2hhZG93IHRyZWUgZG9uJ3QgdXBkYXRlIHRoZSBFbGVtZW50cyBwYW5lbC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCmluZGV4IDNkNGU3
NGYxMWVkYTRhZGFkNDhhZDk4ODFlMTgyNzQ3ZGVhODYzNDYuLjI4MTdiNTE0YTRiMGY3NWQ3YzFj
YzdjNjI2ZTA3ZDVlYzBkNjA0ZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwpAQCAtNDgzLDYgKzQ4Myw4MyBAQCBJbnNwZWN0b3JU
ZXN0LmdlbmVyYXRlVW5kb1Rlc3QgPSBmdW5jdGlvbih0ZXN0Qm9keSkKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCitjb25zdCBpbmRlbnQgPSAiICAgICI7CisKK0luc3BlY3RvclRlc3QuZHVtcFJ1
bGVzQXJyYXkgPSBmdW5jdGlvbihydWxlcywgY3VycmVudEluZGVudCkKK3sKKyAgICBpZiAoIXJ1
bGVzKQorICAgICAgICByZXR1cm47CisgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQg
fHwgIiI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7ICsraSkKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVsZShydWxlc1tpXSwgY3VycmVudEluZGVudCk7Cit9CisK
K0luc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkgPSBmdW5jdGlvbihtYXRjaGVzLCBj
dXJyZW50SW5kZW50KQoreworICAgIGlmICghbWF0Y2hlcykKKyAgICAgICAgcmV0dXJuOworICAg
IGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbWF0Y2hlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVs
ZShtYXRjaGVzW2ldLnJ1bGUsIGN1cnJlbnRJbmRlbnQpOworfQorCitJbnNwZWN0b3JUZXN0LmR1
bXBSdWxlID0gZnVuY3Rpb24ocnVsZSwgY3VycmVudEluZGVudCkKK3sKKyAgICBjdXJyZW50SW5k
ZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsKKworICAgIGlmICghcnVsZS50eXBlIHx8IHJ1bGUu
dHlwZSA9PT0gInN0eWxlIikgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJy
ZW50SW5kZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICI6IFsiICsgcnVsZS5vcmlnaW4g
KyAiXSB7Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKHJ1bGUuc3R5bGUsIGN1
cnJlbnRJbmRlbnQgKyBpbmRlbnQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChj
dXJyZW50SW5kZW50ICsgIn0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChy
dWxlLnR5cGUgPT09ICJtZWRpYSIpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
Y3VycmVudEluZGVudCArICJAbWVkaWEgIiArIHJ1bGUubWVkaWFUZXh0ICsgIiB7Iik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVzQXJyYXkocnVsZS5jaGlsZFJ1bGVzLCBjdXJyZW50
SW5kZW50ICsgaW5kZW50KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVu
dEluZGVudCArICJ9Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50
eXBlID09PSAiaW1wb3J0IikgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJy
ZW50SW5kZW50ICsgIkBpbXBvcnQ6IGhlYWRlcj0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQo
cnVsZS5oZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChy
dWxlLmJvZHlSYW5nZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJ1bGUu
dHlwZSA9PT0gInBhZ2UiIHx8IHJ1bGUudHlwZSA9PT0gImZvbnQtZmFjZSIpIHsKKyAgICAgICAg
aWYgKHJ1bGUudHlwZSA9PT0gInBhZ2UiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoY3VycmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAiIHsiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudElu
ZGVudCArICJAIiArIHJ1bGUudHlwZSArICIgIiArIChydWxlLnNlbGVjdG9yTGlzdC50ZXh0ID8g
cnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICIgIiA6ICIiKSAgKyAieyIpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBTdHlsZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsgaW5kZW50KTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50eXBlID09PSAiY2hhcnNldCIp
IHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkBjaGFyc2V0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgIltVTktOT1dOIFJVTEVdOiBoZWFkZXI9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0
KHJ1bGUuaGVhZGVyUmFuZ2UpICsgIiwgYm9keT0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQo
cnVsZS5ib2R5UmFuZ2UpKTsKK30KKworSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUgPSBmdW5jdGlv
bihzdHlsZSwgY3VycmVudEluZGVudCkKK3sKKyAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudElu
ZGVudCB8fCAiIjsKKyAgICBpZiAoIXN0eWxlKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW05PIFNUWUxFXSIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGUuY3NzUHJvcGVydGllcy5sZW5ndGg7
ICsraSkgeworICAgICAgICB2YXIgcHJvcGVydHkgPSBzdHlsZS5jc3NQcm9wZXJ0aWVzW2ldOwor
ICAgICAgICBpZiAocHJvcGVydHkuc3RhdHVzICE9PSAiZGlzYWJsZWQiKQorICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJbJyIgKyBwcm9wZXJ0eS5u
YW1lICsgIic6JyIgKyBwcm9wZXJ0eS52YWx1ZSArICInIiArIChwcm9wZXJ0eS5wcmlvcml0eSA9
PT0gImltcG9ydGFudCIgPyAiIGlzLWltcG9ydGFudCIgOiAiIikgKyAoKCJwYXJzZWRPayIgaW4g
cHJvcGVydHkpID8gIiBub24tcGFyc2VkIiA6ICIiKSArIl0gQCIgKyBJbnNwZWN0b3JUZXN0LnJh
bmdlVGV4dChwcm9wZXJ0eS5yYW5nZSkgKyAiICIgKyAocHJvcGVydHkuc3RhdHVzIHx8ICJzdHls
ZSIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
Y3VycmVudEluZGVudCArICJbdGV4dD0nIiArIHByb3BlcnR5LnRleHQgKyAiJ10gIiArIHByb3Bl
cnR5LnN0YXR1cyk7CisgICAgfQorfQorCiB9OwogCiBmdW5jdGlvbiBkdW1wSW5zcGVjdG9ySGln
aGxpZ2h0UmVjdHMoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9w
YXJzZS1zdHlsZXNoZWV0LWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42MzhhOGQ2OTJlOWVkNTI5NTU0NjNhZWMxYmNjNmZmZTQ3YTA0OGU4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9y
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyB0aGF0IENTU1BhcnNlciBwcm9k
dWNlcyBzb3VyY2UgZGF0YSBjb25zaXN0ZW50IHdpdGggQ1NTT00gd2hlbiBwYXJzaW5nIGJyb2tl
biBzdHlsZXNoZWV0cy4gQnVnIDk4MjQ2CisKK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydjb2xv
cic6J2JsYWNrJ10gQFs1LTE4XSBhY3RpdmUKK30KK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydi
YWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnXSBAWzUtMjldIGFjdGl2ZQorfQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3Jz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjExYzllYWU0MDkwOWE1NDA1Mzg1NjU4ZjZlNTYxNTUxZWIyODhl
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Ut
c3R5bGVzaGVldC1lcnJvcnMuaHRtbApAQCAtMCwwICsxLDY0IEBACis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVt
ZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQorewor
ICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisKKyAgICBDU1NBZ2VudC5n
ZXRBbGxTdHlsZVNoZWV0cyhoZWFkZXJzQ2FsbGJhY2spOworCisgICAgZnVuY3Rpb24gaGVhZGVy
c0NhbGxiYWNrKGVycm9yLCBoZWFkZXJzKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXJyb3IgbG9hZGluZyBzdHlsZXNo
ZWV0IGhlYWRlcnM6ICIgKyBlcnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ1NTQWdl
bnQuZ2V0U3R5bGVTaGVldChoZWFkZXJzW2ldLnN0eWxlU2hlZXRJZCwgc3R5bGVTaGVldENhbGxi
YWNrLmJpbmQobnVsbCwgaSA9PT0gaGVhZGVycy5sZW5ndGggLSAxKSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gc3R5bGVTaGVldENhbGxiYWNrKGlzTGFzdCwgZXJyb3IsIHN0eWxlU2hlZXQpCisg
ICAgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQgYm9keTogIiArIGVycm9yKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5KHN0eWxl
U2hlZXQucnVsZXMpOworICAgICAgICBpZiAoaXNMYXN0KQorICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorCis8c3R5bGU+Citi
b2R5IHsKKyAgICBjb2xvcjogYmxhY2s7Cit9CisKK2ZvbnQtZmFtaWx5OiBzZXJpZjsKK30KKwor
Ym9keTpob3ZlciB7CisgIGNvbG9yOiAjQ0RFOworfQorCitib2R5IHsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB3aGl0ZTsKK30KKworPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IENTU1BhcnNlciBwcm9kdWNlcyBzb3VyY2UgZGF0
YSBjb25zaXN0ZW50IHdpdGggQ1NTT00gd2hlbiBwYXJzaW5nIGJyb2tlbiBzdHlsZXNoZWV0cy4g
PGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjQ2Ij5C
dWcgOTgyNDY8L2E+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKaW5kZXggOTBhNTc5MTZiMzBiOWM1OWE0ODBi
OWQ3OTZlNTNjOTdmNTk1MjhjZS4uOTBiYzQ0MDhhODIwYTNmZTFjNjNjZTVlNmYxODBjNGJjM2E2
YTgzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3
LUFQSS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1B
UEkuaHRtbApAQCAtMjUsMjYgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiPT09IE1hdGNoZWQgcnVsZXMgZm9yIGJvZHkgPT09Iik7Ci0gICAgICAgICAg
ICBkdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMubWF0Y2hlZENTU1J1bGVzKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVzLm1hdGNoZWRDU1NS
dWxlcyk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gUHNldWRvIHJ1bGVzIGZvciBib2R5
ID09PSIpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMucHNldWRvRWxl
bWVudHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiUHNldWRvSWQ9IiArIHN0eWxlcy5wc2V1ZG9FbGVtZW50c1tpXS5wc2V1ZG9JZCk7Ci0g
ICAgICAgICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVzLnBzZXVkb0VsZW1lbnRz
W2ldLm1hdGNoZXMpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRj
aGVzQXJyYXkoc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLm1hdGNoZXMpOwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEluaGVyaXRlZCBzdHlsZXMgZm9yIGJvZHkg
PT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5pbmhlcml0ZWQu
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
TGV2ZWw9IiArIChpICsgMSkpOwotICAgICAgICAgICAgICAgIGR1bXBTdHlsZShzdHlsZXMuaW5o
ZXJpdGVkW2ldLmlubGluZVN0eWxlKTsKLSAgICAgICAgICAgICAgICBkdW1wUnVsZU1hdGNoZXNB
cnJheShzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUoc3R5bGVzLmluaGVyaXRlZFtpXS5pbmxpbmVTdHls
ZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheShz
dHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gSW5saW5lIHN0eWxlIGZvciBib2R5ID09PSIpOwotICAg
ICAgICAgICAgZHVtcFN0eWxlKHN0eWxlcy5pbmxpbmVTdHlsZSk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBTdHlsZShzdHlsZXMuaW5saW5lU3R5bGUpOwogICAgICAgICAgICAgdGVz
dF9mb3JjZWRTdGF0ZSgpOwogICAgICAgICB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24gbWF0Y2hlZENhbGxiYWNrKGVycm9yLCBtYXRjaGVk
UnVsZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9
PT0gQk9EWSB3aXRoIGZvcmNlZCA6aG92ZXIgPT09Iik7Ci0gICAgICAgICAgICBkdW1wUnVsZU1h
dGNoZXNBcnJheShtYXRjaGVkUnVsZXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
UnVsZU1hdGNoZXNBcnJheShtYXRjaGVkUnVsZXMpOwogICAgICAgICAgICAgQ1NTQWdlbnQuZm9y
Y2VQc2V1ZG9TdGF0ZShib2R5SWQsIFsiaG92ZXIiXSwgdGVzdF90YWJsZVN0eWxlcyk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEF0dHJpYnV0ZXMgc3R5bGUgZm9yIHRh
YmxlID09PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKGF0dHJpYnV0ZXNTdHlsZSk7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShhdHRyaWJ1dGVzU3R5bGUpOwogICAgICAg
ICAgICAgdGVzdF9zdHlsZVNoZWV0cygpOwogICAgICAgICB9CiAKQEAgLTIwOCw3ICsyMDgsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9
PT0gTWF0Y2hlZCBydWxlcyBhZnRlciBydWxlIGFkZGVkID09PSIpOwotICAgICAgICAgICAgZHVt
cFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlZENTU1J1bGVzKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlZENTU1J1bGVzKTsKICAgICAgICAgICAg
IHRlc3RfZGlzYWJsZVByb3BlcnR5KCk7CiAgICAgICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09
PSBBZnRlciBwcm9wZXJ0eSBtYW5pcHVsYXRpb25zID09PSIpOwotICAgICAgICAgICAgZHVtcFN0
eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKHN0eWxlKTsK
ICAgICAgICAgICAgIHRlc3RfZW5hYmxlUHJvcGVydHkoc3R5bGUuc3R5bGVJZCk7CiAgICAgICAg
IH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRlciBwcm9wZXJ0eSBlbmFibGVkID09PSIpOwot
ICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcFN0eWxlKHN0eWxlKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CiAgICAgICAgIH0KIApAQCAtMzA5LDg1ICszMDksNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgQ1NTQWdlbnQudG9nZ2xlUHJvcGVydHkoc3R5bGVJZCwgOCwgZmFsc2UsIGRpZEVuYWJs
ZVByb3BlcnR5KTsKICAgICB9CiAKLSAgICAvLyBEYXRhIGR1bXBpbmcKLQotICAgIGNvbnN0IGlu
ZGVudCA9ICIgICAgIjsKLQotICAgIGZ1bmN0aW9uIGR1bXBSdWxlc0FycmF5KHJ1bGVzLCBjdXJy
ZW50SW5kZW50KQotICAgIHsKLSAgICAgICAgaWYgKCFydWxlcykKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBkdW1w
UnVsZShydWxlc1tpXSwgY3VycmVudEluZGVudCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVt
cFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlcywgY3VycmVudEluZGVudCkKLSAgICB7Ci0gICAgICAg
IGlmICghbWF0Y2hlcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY3VycmVudEluZGVu
dCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0
Y2hlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGR1bXBSdWxlKG1hdGNoZXNbaV0ucnVsZSwg
Y3VycmVudEluZGVudCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVtcFJ1bGUocnVsZSwgY3Vy
cmVudEluZGVudCkKLSAgICB7Ci0gICAgICAgIGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5kZW50
IHx8ICIiOwotCi0gICAgICAgIGlmICghcnVsZS50eXBlIHx8IHJ1bGUudHlwZSA9PT0gInN0eWxl
IikgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCAr
IHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAiOiBbIiArIHJ1bGUub3JpZ2luICsgIl0geyIpOwot
ICAgICAgICAgICAgZHVtcFN0eWxlKHJ1bGUuc3R5bGUsIGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQp
OwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9
Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocnVsZS50
eXBlID09PSAibWVkaWEiKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChj
dXJyZW50SW5kZW50ICsgIkBtZWRpYSAiICsgcnVsZS5tZWRpYVRleHQgKyAiIHsiKTsKLSAgICAg
ICAgICAgIGR1bXBSdWxlc0FycmF5KHJ1bGUuY2hpbGRSdWxlcywgY3VycmVudEluZGVudCArIGlu
ZGVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50
ICsgIn0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChy
dWxlLnR5cGUgPT09ICJpbXBvcnQiKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdChjdXJyZW50SW5kZW50ICsgIkBpbXBvcnQ6IGhlYWRlcj0iICsgSW5zcGVjdG9yVGVzdC5y
YW5nZVRleHQocnVsZS5oZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIgKyBJbnNwZWN0b3JUZXN0LnJh
bmdlVGV4dChydWxlLmJvZHlSYW5nZSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gInBhZ2UiIHx8IHJ1bGUudHlwZSA9PT0gImZv
bnQtZmFjZSIpIHsKLSAgICAgICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJwYWdlIikKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgcnVsZS5z
ZWxlY3Rvckxpc3QudGV4dCArICIgeyIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQCIgKyBydWxlLnR5
cGUgKyAiICIgKyAocnVsZS5zZWxlY3Rvckxpc3QudGV4dCA/IHJ1bGUuc2VsZWN0b3JMaXN0LnRl
eHQgKyAiICIgOiAiIikgICsgInsiKTsKLSAgICAgICAgICAgIGR1bXBTdHlsZShydWxlLnN0eWxl
LCBjdXJyZW50SW5kZW50ICsgaW5kZW50KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAifSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gImNoYXJzZXQiKSB7Ci0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQGNoYXJzZXQiKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJ
bmRlbnQgKyAiW1VOS05PV04gUlVMRV06IGhlYWRlcj0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRl
eHQocnVsZS5oZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4
dChydWxlLmJvZHlSYW5nZSkpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGR1bXBTdHlsZShzdHls
ZSwgY3VycmVudEluZGVudCkKLSAgICB7Ci0gICAgICAgIGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50
SW5kZW50IHx8ICIiOwotICAgICAgICBpZiAoIXN0eWxlKSB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIltOTyBTVFlMRV0iKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxl
LmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9
IHN0eWxlLmNzc1Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICBpZiAocHJvcGVydHkuc3RhdHVz
ICE9PSAiZGlzYWJsZWQiKQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KGN1cnJlbnRJbmRlbnQgKyAiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHku
dmFsdWUgKyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkgPT09ICJpbXBvcnRhbnQiID8gIiBpcy1p
bXBvcnRhbnQiIDogIiIpICsgKCgicGFyc2VkT2siIGluIHByb3BlcnR5KSA/ICIgbm9uLXBhcnNl
ZCIgOiAiIikgKyJdIEAiICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocHJvcGVydHkucmFuZ2Up
ICsgIiAiICsgKHByb3BlcnR5LnN0YXR1cyB8fCAic3R5bGUiKSk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCAr
ICJbdGV4dD0nIiArIHByb3BlcnR5LnRleHQgKyAiJ10gIiArIHByb3BlcnR5LnN0YXR1cyk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICAgICBmdW5jdGlvbiBsb2FkQW5kRHVtcFN0eWxlU2hlZXQoc3R5
bGVTaGVldElkLCBjb250aW51YXRpb24sIGVycm9yKQogICAgIHsKICAgICAgICAgaWYgKGVycm9y
KSB7CkBAIC00MDMsNyArMzI0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiU3R5bGVTaGVldDogJyIgKyBzdHlsZVNoZWV0LnRleHQgKyAi
JyIpOwotICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVTaGVldC5ydWxlcyk7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5KHN0eWxlU2hlZXQucnVsZXMpOwog
ICAgICAgICAgICAgaWYgKGNvbnRpbnVhdGlvbikKICAgICAgICAgICAgICAgICBjb250aW51YXRp
b24oc3R5bGVTaGVldCk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167084</attachid>
            <date>2012-10-04 05:50:32 -0700</date>
            <delta_ts>2012-10-05 03:38:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98246-20121004164942.patch</filename>
            <type>text/plain</type>
            <size>23181</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGE5ODlmMTA5NjBiYzM1
OWQyMDZlMjcwMjJkMWVlZjE2ODRiODgyMC4uMGE0NDQyODcwMWE3ZTE5OTllOGE1ZmNlNGNiY2Q5
YTgwOTAyZWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEwLTA0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVW5hYmxlIHRvIGVkaXQgcHJvcGVydGllcyBpbiBicm9rZW4gc3R5bGVz
aGVldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NT
UGFyc2VyJ3MgZ3JhbW1hciB3YXMgYW1iaWd1b3VzIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBzb3Vy
Y2UgZGF0YSBoYW5kbGluZyBhY3Rpb25zIHdlcmUgYm91bmQgdG8gYSBydWxlCisgICAgICAgIHRo
YXQgbWF0Y2hlZCBlcHNpbG9uLCBzbyBkdXJpbmcgdGhlIHBhcnNpbmcsIGl0IHdhcyBwb3NzaWJs
ZSB0byBwdXNoIHRoZSByZXNwZWN0aXZlIHJ1bGUgb250byB0aGUgc3RhY2sKKyAgICAgICAgYW5k
IGRpc2NhcmQgaXQgYWZ0ZXJ3YXJkcywgd2hlbmV2ZXIgYW4gZXJyb3Igd2FzIG1ldC4gSG93ZXZl
ciwgdGhlIHJlc3BlY3RpdmUgYWN0aW9uIHdvdWxkIGhhdmUgdGFrZW4gImRlc3RydWN0aXZlIiBl
ZmZlY3QsCisgICAgICAgIHdoaWNoIHJlc3VsdGVkIGludG8gYSBzb3VyY2UgZGF0YSB0cmVlIG5v
dCBtYXRjaGluZyB0aGUgYWN0dWFsIENTU09NLiBUaGUgY2hhbmdlIG1vdmVzIHRoZSBDU1NSdWxl
c291cmNlRGF0YSBpbnN0YW5jZSBwdXNoaW5nIGNvZGUKKyAgICAgICAgZnJvbSBtYXJrUnVsZUhl
YWRlclN0YXJ0KCkgaW50byBtYXJrUnVsZUhlYWRlckVuZCgpIG9yIG1hcmtSdWxlQm9keVN0YXJ0
KCkgKGRlcGVuZGluZyBvbiB0aGUgcnVsZSB0eXBlKSB0byByZXNvbHZlCisgICAgICAgIHRoZSBy
dWxlIHJlZHVjdGlvbiBhbWJpZ3VpdHkgYW5kIGF2b2lkIHVubmVjZXNzYXJ5IG1vZGlmY2F0aW9u
cyBvZiB0aGUgcnVsZSBzb3VyY2UgZGF0YSBzdGFjay4KKworICAgICAgICBUZXN0OiBpbnNwZWN0
b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0bWwKKworICAgICAgICAqIGNzcy9D
U1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjptYXJrUnVsZUhlYWRlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6c2V0UnVsZUhlYWRlckVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtS
dWxlSGVhZGVyRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1J1bGVCb2R5
U3RhcnQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKENTU1BhcnNlcik6
CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUnVsZVNvdXJjZURhdGE6OmlzQmxvY2tSdWxlKToKKyAgICAgICAgKENTU1J1bGVTb3Vy
Y2VEYXRhKToKKwogMjAxMi0xMC0wNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRGF0ZVRpbWVZZWFyRmllbGRFbGVtZW50IHNob3VsZCByZXNwZWN0IG1pbi9t
YXggdmFsdWVzIHNwZWNpZmllZCBieSBwYWdlIGF1dGhvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
CmluZGV4IDJiNDI3NGE5YjMyYTM1YTI5NjY4OGY2NWIzYjM4YWYyNGJhM2I0MGQuLjc3Njg0YmZm
YTExMzc4NzcyMGMwMDM5NGI4NjMyNTA5MzY1ODM3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eQpAQCAtNDU4LDEzICs0NTgsNiBAQCBibG9ja19ydWxlOgogICB8IG1lZGlhCiAgIDsKIAotYXRf
aW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2U6Ci0gICAgbWF5YmVfc3BhY2UgewotICAgICAg
ICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyRW5kKCk7Ci0gICAgICAgIHBhcnNlci0+bWFya1J1bGVC
b2R5U3RhcnQoKTsKLSAgICB9Ci0gICAgOwotCiBiZWZvcmVfaW1wb3J0X3J1bGU6CiAgICAgLyog
ZW1wdHkgKi8gewogICAgICAgICBwYXJzZXItPm1hcmtSdWxlSGVhZGVyU3RhcnQoQ1NTUnVsZVNv
dXJjZURhdGE6OklNUE9SVF9SVUxFKTsKQEAgLTQ3MiwyMyArNDY1LDIwIEBAIGJlZm9yZV9pbXBv
cnRfcnVsZToKICAgICA7CiAKIGltcG9ydDoKLSAgICBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JU
X1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJl
X3NwYWNlIG1heWJlX21lZGlhX2xpc3QgJzsnIHsKKyAgICBiZWZvcmVfaW1wb3J0X3J1bGUgSU1Q
T1JUX1NZTSBhdF9ydWxlX2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXli
ZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0ICc7JyB7CiAgICAgICAgICQkID0gcGFyc2VyLT5jcmVh
dGVJbXBvcnRSdWxlKCQ0LCAkNik7CiAgICAgfQotICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBP
UlRfU1lNIGF0X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5
YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0YgeworICB8IGJlZm9yZV9pbXBvcnRf
cnVsZSBJTVBPUlRfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3Jf
dXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgVE9LRU5fRU9GIHsKICAgICAgICAgJCQg
PSBwYXJzZXItPmNyZWF0ZUltcG9ydFJ1bGUoJDQsICQ2KTsKICAgICB9Ci0gIHwgYmVmb3JlX2lt
cG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3Ry
aW5nX29yX3VyaSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV9saXN0IGludmFsaWRfYmxvY2sgewor
ICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXli
ZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52YWxp
ZF9ibG9jayB7CiAgICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgp
OwogICAgIH0KICAgfCBiZWZvcmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBlcnJvciAnOycgewog
ICAgICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKICAgICB9CiAg
IHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7CiAg
ICAgICAgICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwogICAgIH0KICAg
OwogCkBAIC02MzUsNyArNjI1LDYgQEAgbWVkaWE6CiAgICAgfQogICAgIHwgYmVmb3JlX21lZGlh
X3J1bGUgTUVESUFfU1lNIGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSAnOycgewogICAg
ICAgICAkJCA9IDA7Ci0gICAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEoKTsKICAgICB9CiAgICAg
OwogCkBAIC03MjMsMTEgKzcxMiw5IEBAIHBhZ2U6CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBi
ZWZvcmVfcGFnZV9ydWxlIFBBR0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewotICAgICAgcGFy
c2VyLT5wb3BSdWxlRGF0YSgpOwogICAgICAgJCQgPSAwOwogICAgIH0KICAgICB8IGJlZm9yZV9w
YWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgJzsnIHsKLSAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEo
KTsKICAgICAgICQkID0gMDsKICAgICB9CiAgICAgOwpAQCAtODMzLDExICs4MjAsOSBAQCBmb250
X2ZhY2U6CiAgICAgfQogICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9TWU0g
ZXJyb3IgaW52YWxpZF9ibG9jayB7CiAgICAgICAkJCA9IDA7Ci0gICAgICBwYXJzZXItPnBvcFJ1
bGVEYXRhKCk7CiAgICAgfQogICAgIHwgYmVmb3JlX2ZvbnRfZmFjZV9ydWxlIEZPTlRfRkFDRV9T
WU0gZXJyb3IgJzsnIHsKICAgICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEo
KTsKICAgICB9CiA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggYmU4OTY5MGY4OGY2
OWJkM2NhMjJiYzM3YmI5NGQ2M2IzYTljNzcwZS4uYTk3ZTVhY2E4NDJmZDVkOThhNWEzYThiMjNi
YzY4NDA0MmU5M2NlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTk5MzAsNyArOTkz
MCwxMyBAQCBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3Qg
Q1NTUGFyc2VyU3RyaW5nJiB1cmwsIE1lZGlhUXVlcgogICAgIFJlZlB0cjxTdHlsZVJ1bGVJbXBv
cnQ+IHJ1bGUgPSBTdHlsZVJ1bGVJbXBvcnQ6OmNyZWF0ZSh1cmwsIG1lZGlhKTsKICAgICBTdHls
ZVJ1bGVJbXBvcnQqIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5hcHBl
bmQocnVsZS5yZWxlYXNlKCkpOwotICAgIHByb2Nlc3NBbmRBZGROZXdSdWxlVG9Tb3VyY2VUcmVl
SWZOZWVkZWQoKTsKKyAgICBpZiAoaXNFeHRyYWN0aW5nU291cmNlRGF0YSgpKSB7CisgICAgICAg
IEFTU0VSVChtX2N1cnJlbnRSdWxlRGF0YSk7CisgICAgICAgIEFTU0VSVChtX2N1cnJlbnRSdWxl
RGF0YS0+dHlwZSA9PSBDU1NSdWxlU291cmNlRGF0YTo6SU1QT1JUX1JVTEUpOworICAgICAgICBt
X2N1cnJlbnRSdWxlRGF0YS0+cnVsZUJvZHlSYW5nZS5zdGFydCA9IG1fY3VycmVudFJ1bGVEYXRh
LT5ydWxlSGVhZGVyUmFuZ2UuZW5kOworICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YS0+cnVsZUJv
ZHlSYW5nZS5lbmQgPSB0b2tlblN0YXJ0T2Zmc2V0KCk7CisgICAgICAgIGFkZE5ld1J1bGVUb1Nv
dXJjZVRyZWUobV9jdXJyZW50UnVsZURhdGEucmVsZWFzZSgpKTsKKyAgICB9CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIApAQCAtMTAyOTAsOSArMTAyOTYsOCBAQCB2b2lkIENTU1BhcnNlcjo6bWFy
a1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6VHlwZSBydWxlVHlwZSkKIHsKICAg
ICBpZiAoIWlzRXh0cmFjdGluZ1NvdXJjZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gZGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUo
cnVsZVR5cGUpOwotICAgIGRhdGEtPnJ1bGVIZWFkZXJSYW5nZS5zdGFydCA9IHRva2VuU3RhcnRP
ZmZzZXQoKTsKLSAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5hcHBlbmQoZGF0YS5yZWxlYXNl
KCkpOworICAgIG1fY3VycmVudFJ1bGVEYXRhID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZShy
dWxlVHlwZSk7CisgICAgbV9jdXJyZW50UnVsZURhdGEtPnJ1bGVIZWFkZXJSYW5nZS5zdGFydCA9
IHRva2VuU3RhcnRPZmZzZXQoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+CkBAIC0xMDMwNiwxOSArMTAzMTEsMjIgQEAgaW5saW5lIHZvaWQgQ1NTUGFyc2VyOjpzZXRS
dWxlSGVhZGVyRW5kKGNvbnN0IENoYXJhY3RlclR5cGUqIGRhdGFTdGFydCkKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmxhc3QoKS0+cnVs
ZUhlYWRlclJhbmdlLmVuZCA9IGxpc3RFbmQgLSBkYXRhU3RhcnQ7CisgICAgbV9jdXJyZW50UnVs
ZURhdGEtPnJ1bGVIZWFkZXJSYW5nZS5lbmQgPSBsaXN0RW5kIC0gZGF0YVN0YXJ0OwogfQogCiB2
b2lkIENTU1BhcnNlcjo6bWFya1J1bGVIZWFkZXJFbmQoKQogewogICAgIGlmICghaXNFeHRyYWN0
aW5nU291cmNlRGF0YSgpKQogICAgICAgICByZXR1cm47Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRS
dWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRSdWxlRGF0YSk7
CiAKICAgICBpZiAoaXM4Qml0U291cmNlKCkpCiAgICAgICAgIHNldFJ1bGVIZWFkZXJFbmQ8TENo
YXI+KG1fZGF0YVN0YXJ0OC5nZXQoKSk7CiAgICAgZWxzZQogICAgICAgICBzZXRSdWxlSGVhZGVy
RW5kPFVDaGFyPihtX2RhdGFTdGFydDE2LmdldCgpKTsKKworICAgIGlmICghbV9jdXJyZW50UnVs
ZURhdGEtPmlzQmxvY2tSdWxlKCkgJiYgbV9jdXJyZW50UnVsZURhdGEtPnR5cGUgIT0gQ1NTUnVs
ZVNvdXJjZURhdGE6OklNUE9SVF9SVUxFKQorICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNr
LT5hcHBlbmQobV9jdXJyZW50UnVsZURhdGEucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBDU1NQYXJz
ZXI6Om1hcmtSdWxlQm9keVN0YXJ0KCkKQEAgLTEwMzI4LDYgKzEwMzM2LDEwIEBAIHZvaWQgQ1NT
UGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCgpCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdG9rZW5T
dGFydE9mZnNldCgpOwogICAgIGlmICh0b2tlblN0YXJ0Q2hhcigpID09ICd7JykKICAgICAgICAg
KytvZmZzZXQ7IC8vIFNraXAgdGhlIHJ1bGUgYm9keSBvcGVuaW5nIGJyYWNlLgorICAgIGlmICht
X2N1cnJlbnRSdWxlRGF0YSkgeworICAgICAgICBBU1NFUlQobV9jdXJyZW50UnVsZURhdGEtPmlz
QmxvY2tSdWxlKCkpOworICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5hcHBlbmQobV9j
dXJyZW50UnVsZURhdGEucmVsZWFzZSgpKTsKKyAgICB9CiAgICAgQVNTRVJUKCFtX2N1cnJlbnRS
dWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkpOwogICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmxh
c3QoKS0+cnVsZUJvZHlSYW5nZS5zdGFydCA9IG9mZnNldDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aAppbmRleCBlMzMwOTBmODMyNmZhNjRiM2MyZDNhZWI4M2ViNDZiMzRkMzA2YmQ5Li5jMjM1MTgz
NjdmN2M5N2VjMzRhYmRkZWVmZGJiYmU3NjQ1NjhiNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CkBAIC0zNDMsNiArMzQzLDcgQEAgcHVibGljOgogICAgIC8vIHRva2VuaXplciBtZXRob2RzIGFu
ZCBkYXRhCiAgICAgc2l6ZV90IG1fcGFyc2VkVGV4dFByZWZpeExlbmd0aDsKICAgICBTb3VyY2VS
YW5nZSBtX3Byb3BlcnR5UmFuZ2U7CisgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBtX2N1
cnJlbnRSdWxlRGF0YTsKICAgICBPd25QdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBtX2N1cnJlbnRS
dWxlRGF0YVN0YWNrOwogICAgIFJ1bGVTb3VyY2VEYXRhTGlzdCogbV9ydWxlU291cmNlRGF0YVJl
c3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNl
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCmluZGV4
IDQ2OWJkYjYzMGMxYTVjNWRiYTk5M2ZkMWFkNTllZDA3NDQ5YTU1YmUuLjkwOTE4MzBjOWI1OWIy
MjllMzk0NGMzN2RkNTIyN2ZkOTU0NmI2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlTb3VyY2VEYXRhLmgKQEAgLTExNCw2ICsxMTQsMTEgQEAgc3RydWN0IENTU1J1bGVTb3Vy
Y2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUnVsZVNvdXJjZURhdGE+IHsKICAgICAgICAg
ICAgIHN0eWxlU291cmNlRGF0YSA9IENTU1N0eWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CiAgICAg
fQogCisgICAgYm9vbCBpc0Jsb2NrUnVsZSgpCisgICAgeworICAgICAgICByZXR1cm4gdHlwZSA9
PSBTVFlMRV9SVUxFIHx8IHR5cGUgPT0gTUVESUFfUlVMRSB8fCB0eXBlID09IEZPTlRfRkFDRV9S
VUxFIHx8IHR5cGUgPT0gS0VZRlJBTUVTX1JVTEUgfHwgdHlwZSA9PSBQQUdFX1JVTEUgfHwgdHlw
ZSA9PSBSRUdJT05fUlVMRTsKKyAgICB9CisKICAgICBUeXBlIHR5cGU7CiAKICAgICAvLyBSYW5n
ZSBvZiB0aGUgc2VsZWN0b3IgbGlzdCBpbiB0aGUgZW5jbG9zaW5nIHNvdXJjZS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBk
Y2VhMzJlOTM3MTg3NzU1YTc4MDE1YWU3NzYzMGViYzM5ODBhOWIxLi4wMzU1MmE1YzljOGZiZTI5
YmY1NmZiOTAwZmJmNjRjNDZkOGQ3ZmUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAt
MDQgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbU3R5bGVzXSBVbmFibGUgdG8gZWRpdCBwcm9wZXJ0aWVzIGluIGJyb2tl
biBzdHlsZXNoZWV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTgyNDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanM6CisgICAgICAgIChp
bml0aWFsaXplX0VsZW1lbnRUZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNl
LXN0eWxlc2hlZXQtZXJyb3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9ycy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWw6CisKIDIwMTItMTAtMDQgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlZCBk
dXBsaWNhdGUgZW50cmllcyBpbnRyb2R1Y2VkIGJ5IHIxMzAzNTUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCmluZGV4IDNkNGU3NGYxMWVk
YTRhZGFkNDhhZDk4ODFlMTgyNzQ3ZGVhODYzNDYuLjI4MTdiNTE0YTRiMGY3NWQ3YzFjYzdjNjI2
ZTA3ZDVlYzBkNjA0ZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2VsZW1lbnRzLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMtdGVzdC5qcwpAQCAtNDgzLDYgKzQ4Myw4MyBAQCBJbnNwZWN0b3JUZXN0Lmdl
bmVyYXRlVW5kb1Rlc3QgPSBmdW5jdGlvbih0ZXN0Qm9keSkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitjb25zdCBpbmRlbnQgPSAiICAgICI7CisKK0luc3BlY3RvclRlc3QuZHVtcFJ1bGVzQXJy
YXkgPSBmdW5jdGlvbihydWxlcywgY3VycmVudEluZGVudCkKK3sKKyAgICBpZiAoIXJ1bGVzKQor
ICAgICAgICByZXR1cm47CisgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wUnVsZShydWxlc1tpXSwgY3VycmVudEluZGVudCk7Cit9CisKK0luc3Bl
Y3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkgPSBmdW5jdGlvbihtYXRjaGVzLCBjdXJyZW50
SW5kZW50KQoreworICAgIGlmICghbWF0Y2hlcykKKyAgICAgICAgcmV0dXJuOworICAgIGN1cnJl
bnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bWF0Y2hlcy5sZW5ndGg7ICsraSkKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVsZShtYXRj
aGVzW2ldLnJ1bGUsIGN1cnJlbnRJbmRlbnQpOworfQorCitJbnNwZWN0b3JUZXN0LmR1bXBSdWxl
ID0gZnVuY3Rpb24ocnVsZSwgY3VycmVudEluZGVudCkKK3sKKyAgICBjdXJyZW50SW5kZW50ID0g
Y3VycmVudEluZGVudCB8fCAiIjsKKworICAgIGlmICghcnVsZS50eXBlIHx8IHJ1bGUudHlwZSA9
PT0gInN0eWxlIikgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICI6IFsiICsgcnVsZS5vcmlnaW4gKyAiXSB7
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKHJ1bGUuc3R5bGUsIGN1cnJlbnRJ
bmRlbnQgKyBpbmRlbnQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50
SW5kZW50ICsgIn0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChydWxlLnR5
cGUgPT09ICJtZWRpYSIpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVu
dEluZGVudCArICJAbWVkaWEgIiArIHJ1bGUubWVkaWFUZXh0ICsgIiB7Iik7CisgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcFJ1bGVzQXJyYXkocnVsZS5jaGlsZFJ1bGVzLCBjdXJyZW50SW5kZW50
ICsgaW5kZW50KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVu
dCArICJ9Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50eXBlID09
PSAiaW1wb3J0IikgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgIkBpbXBvcnQ6IGhlYWRlcj0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5o
ZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmJv
ZHlSYW5nZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJ1bGUudHlwZSA9
PT0gInBhZ2UiIHx8IHJ1bGUudHlwZSA9PT0gImZvbnQtZmFjZSIpIHsKKyAgICAgICAgaWYgKHJ1
bGUudHlwZSA9PT0gInBhZ2UiKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
Y3VycmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAiIHsiKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCAr
ICJAIiArIHJ1bGUudHlwZSArICIgIiArIChydWxlLnNlbGVjdG9yTGlzdC50ZXh0ID8gcnVsZS5z
ZWxlY3Rvckxpc3QudGV4dCArICIgIiA6ICIiKSAgKyAieyIpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmR1bXBTdHlsZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsgaW5kZW50KTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50eXBlID09PSAiY2hhcnNldCIpIHsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkBjaGFyc2V0Iik7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsg
IltVTktOT1dOIFJVTEVdOiBoZWFkZXI9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUu
aGVhZGVyUmFuZ2UpICsgIiwgYm9keT0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5i
b2R5UmFuZ2UpKTsKK30KKworSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUgPSBmdW5jdGlvbihzdHls
ZSwgY3VycmVudEluZGVudCkKK3sKKyAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8
fCAiIjsKKyAgICBpZiAoIXN0eWxlKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KGN1cnJlbnRJbmRlbnQgKyAiW05PIFNUWUxFXSIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGUuY3NzUHJvcGVydGllcy5sZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgcHJvcGVydHkgPSBzdHlsZS5jc3NQcm9wZXJ0aWVzW2ldOworICAgICAg
ICBpZiAocHJvcGVydHkuc3RhdHVzICE9PSAiZGlzYWJsZWQiKQorICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJbJyIgKyBwcm9wZXJ0eS5uYW1lICsg
Iic6JyIgKyBwcm9wZXJ0eS52YWx1ZSArICInIiArIChwcm9wZXJ0eS5wcmlvcml0eSA9PT0gImlt
cG9ydGFudCIgPyAiIGlzLWltcG9ydGFudCIgOiAiIikgKyAoKCJwYXJzZWRPayIgaW4gcHJvcGVy
dHkpID8gIiBub24tcGFyc2VkIiA6ICIiKSArIl0gQCIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4
dChwcm9wZXJ0eS5yYW5nZSkgKyAiICIgKyAocHJvcGVydHkuc3RhdHVzIHx8ICJzdHlsZSIpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVu
dEluZGVudCArICJbdGV4dD0nIiArIHByb3BlcnR5LnRleHQgKyAiJ10gIiArIHByb3BlcnR5LnN0
YXR1cyk7CisgICAgfQorfQorCiB9OwogCiBmdW5jdGlvbiBkdW1wSW5zcGVjdG9ySGlnaGxpZ2h0
UmVjdHMoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1z
dHlsZXNoZWV0LWVycm9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5
bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTQy
ZGJkMDA5ZjE3ZDZiMmIwZTcwZDk4ZDY4OTY4MTkyYTI4M2ExCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9ycy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyNCBAQAorVGVzdHMgdGhhdCBDU1NQYXJzZXIgcHJvZHVjZXMg
c291cmNlIGRhdGEgY29uc2lzdGVudCB3aXRoIENTU09NIHdoZW4gcGFyc2luZyBicm9rZW4gc3R5
bGVzaGVldHMuIEJ1ZyA5ODI0NgorCitib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidi
bGFjayddIEBbNS0xOF0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnYmFja2dy
b3VuZC1jb2xvcic6J2Jyb2tlbi1kZWNsYXJhdGlvbicgbm9uLXBhcnNlZF0gQFs1LTQyXSBhY3Rp
dmUKK30KK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydjb2xvcic6J2ltcG9ydC1lcnJvcicgbm9u
LXBhcnNlZF0gQFszLTIzXSBhY3RpdmUKK30KK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydjb2xv
cic6J2ltcG9ydC1lcnJvci1ibG9jaycgbm9uLXBhcnNlZF0gQFszLTI5XSBhY3RpdmUKK30KK2Jv
ZHk6IFtyZWd1bGFyXSB7CisgICAgWydjb2xvcic6J21lZGlhLWVtcHR5JyBub24tcGFyc2VkXSBA
WzMtMjJdIGFjdGl2ZQorfQorYm9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2NvbG9yJzoncGFnZS1l
cnJvcicgbm9uLXBhcnNlZF0gQFszLTIxXSBhY3RpdmUKK30KK2JvZHk6IFtyZWd1bGFyXSB7Cisg
ICAgWydjb2xvcic6J3BhZ2UtYmxvY2snIG5vbi1wYXJzZWRdIEBbMy0yMV0gYWN0aXZlCit9CisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVl
dC1lcnJvcnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVz
aGVldC1lcnJvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmE1ZjZkZWM0OWRjYzAxNTRkYzMzZDNmMjJi
NGY4ZGQ3MDI1MTgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9ycy5odG1sCkBAIC0wLDAgKzEsOTQgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVj
dG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKworICAg
IENTU0FnZW50LmdldEFsbFN0eWxlU2hlZXRzKGhlYWRlcnNDYWxsYmFjayk7CisKKyAgICBmdW5j
dGlvbiBoZWFkZXJzQ2FsbGJhY2soZXJyb3IsIGhlYWRlcnMpCisgICAgeworICAgICAgICBpZiAo
ZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFcnJvciBsb2Fk
aW5nIHN0eWxlc2hlZXQgaGVhZGVyczogIiArIGVycm9yKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICBDU1NBZ2VudC5nZXRTdHlsZVNoZWV0KGhlYWRlcnNbaV0uc3R5bGVTaGVldElkLCBzdHls
ZVNoZWV0Q2FsbGJhY2suYmluZChudWxsLCBpID09PSBoZWFkZXJzLmxlbmd0aCAtIDEpKTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdHlsZVNoZWV0Q2FsbGJhY2soaXNMYXN0LCBlcnJvciwgc3R5
bGVTaGVldCkKKyAgICB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIkVycm9yIGxvYWRpbmcgc3R5bGVzaGVldCBib2R5OiAiICsgZXJy
b3IpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVz
QXJyYXkoc3R5bGVTaGVldC5ydWxlcyk7CisgICAgICAgIGlmIChpc0xhc3QpCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH0KK30KKworPC9zY3JpcHQ+CisK
KzxzdHlsZT4KK2JvZHkgeworICAgIGNvbG9yOiBibGFjazsKK30KKworZm9udC1mYW1pbHk6IHNl
cmlmOworfQorCitib2R5OmhvdmVyIHsKKyAgICBjb2xvcjogI0NERTsKK30KKworYm9keSB7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogYnJva2VuLWRlY2xhcmF0aW9uOworfQorCis8L3N0eWxlPgor
PHN0eWxlPgorQGltcG9ydCAxMjsKK2JvZHkgeworICBjb2xvcjogaW1wb3J0LWVycm9yOworfQor
PC9zdHlsZT4KKzxzdHlsZT4KK0BpbXBvcnQgMTIge30KK2JvZHkgeworICBjb2xvcjogaW1wb3J0
LWVycm9yLWJsb2NrOworfQorPC9zdHlsZT4KKzxzdHlsZT4KK0BtZWRpYSA7Citib2R5IHsKKyAg
Y29sb3I6IG1lZGlhLWVtcHR5OworfQorPC9zdHlsZT4KKzxzdHlsZT4KK0BwYWdlIDsKK2JvZHkg
eworICBjb2xvcjogcGFnZS1lcnJvcjsKK30KKzwvc3R5bGU+Cis8c3R5bGU+CitAcGFnZSB7fQor
Ym9keSB7CisgIGNvbG9yOiBwYWdlLWJsb2NrOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKworPGJv
ZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IENTU1BhcnNlciBwcm9kdWNl
cyBzb3VyY2UgZGF0YSBjb25zaXN0ZW50IHdpdGggQ1NTT00gd2hlbiBwYXJzaW5nIGJyb2tlbiBz
dHlsZXNoZWV0cy4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4MjQ2Ij5CdWcgOTgyNDY8L2E+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKaW5kZXggOTBhNTc5MTZi
MzBiOWM1OWE0ODBiOWQ3OTZlNTNjOTdmNTk1MjhjZS4uOTBiYzQ0MDhhODIwYTNmZTFjNjNjZTVl
NmYxODBjNGJjM2E2YTgzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9zdHlsZXMtbmV3LUFQSS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
c3R5bGVzLW5ldy1BUEkuaHRtbApAQCAtMjUsMjYgKzI1LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKQog
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IE1hdGNoZWQgcnVsZXMgZm9yIGJvZHkgPT09Iik7
Ci0gICAgICAgICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMubWF0Y2hlZENTU1J1bGVz
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVz
Lm1hdGNoZWRDU1NSdWxlcyk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gUHNldWRvIHJ1
bGVzIGZvciBib2R5ID09PSIpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHls
ZXMucHNldWRvRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiUHNldWRvSWQ9IiArIHN0eWxlcy5wc2V1ZG9FbGVtZW50c1tpXS5w
c2V1ZG9JZCk7Ci0gICAgICAgICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVzLnBz
ZXVkb0VsZW1lbnRzW2ldLm1hdGNoZXMpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLm1hdGNoZXMpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEluaGVyaXRlZCBzdHls
ZXMgZm9yIGJvZHkgPT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxl
cy5pbmhlcml0ZWQubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiTGV2ZWw9IiArIChpICsgMSkpOwotICAgICAgICAgICAgICAgIGR1bXBTdHls
ZShzdHlsZXMuaW5oZXJpdGVkW2ldLmlubGluZVN0eWxlKTsKLSAgICAgICAgICAgICAgICBkdW1w
UnVsZU1hdGNoZXNBcnJheShzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUoc3R5bGVzLmluaGVyaXRlZFtp
XS5pbmxpbmVTdHlsZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVsZU1h
dGNoZXNBcnJheShzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxlcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gSW5saW5lIHN0eWxlIGZvciBib2R5
ID09PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxlcy5pbmxpbmVTdHlsZSk7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShzdHlsZXMuaW5saW5lU3R5bGUpOwogICAg
ICAgICAgICAgdGVzdF9mb3JjZWRTdGF0ZSgpOwogICAgICAgICB9CiAKQEAgLTEwMiw3ICsxMDIs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24gbWF0Y2hlZENhbGxiYWNrKGVy
cm9yLCBtYXRjaGVkUnVsZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCI9PT0gQk9EWSB3aXRoIGZvcmNlZCA6aG92ZXIgPT09Iik7Ci0gICAgICAgICAg
ICBkdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkUnVsZXMpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkUnVsZXMpOwogICAgICAgICAgICAg
Q1NTQWdlbnQuZm9yY2VQc2V1ZG9TdGF0ZShib2R5SWQsIFsiaG92ZXIiXSwgdGVzdF90YWJsZVN0
eWxlcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEF0dHJpYnV0ZXMg
c3R5bGUgZm9yIHRhYmxlID09PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKGF0dHJpYnV0ZXNT
dHlsZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShhdHRyaWJ1dGVzU3R5
bGUpOwogICAgICAgICAgICAgdGVzdF9zdHlsZVNoZWV0cygpOwogICAgICAgICB9CiAKQEAgLTIw
OCw3ICsyMDgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCI9PT0gTWF0Y2hlZCBydWxlcyBhZnRlciBydWxlIGFkZGVkID09PSIpOwotICAg
ICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlZENTU1J1bGVzKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlZENTU1J1bGVzKTsK
ICAgICAgICAgICAgIHRlc3RfZGlzYWJsZVByb3BlcnR5KCk7CiAgICAgICAgIH0KIApAQCAtMjQz
LDcgKzI0Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIj09PSBBZnRlciBwcm9wZXJ0eSBtYW5pcHVsYXRpb25zID09PSIpOwotICAgICAg
ICAgICAgZHVtcFN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0
eWxlKHN0eWxlKTsKICAgICAgICAgICAgIHRlc3RfZW5hYmxlUHJvcGVydHkoc3R5bGUuc3R5bGVJ
ZCk7CiAgICAgICAgIH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRlciBwcm9wZXJ0eSBlbmFi
bGVkID09PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcFN0eWxlKHN0eWxlKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7CiAgICAgICAgIH0KIApAQCAtMzA5LDg1ICszMDksNiBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgQ1NTQWdlbnQudG9nZ2xlUHJvcGVydHkoc3R5bGVJZCwgOCwgZmFs
c2UsIGRpZEVuYWJsZVByb3BlcnR5KTsKICAgICB9CiAKLSAgICAvLyBEYXRhIGR1bXBpbmcKLQot
ICAgIGNvbnN0IGluZGVudCA9ICIgICAgIjsKLQotICAgIGZ1bmN0aW9uIGR1bXBSdWxlc0FycmF5
KHJ1bGVzLCBjdXJyZW50SW5kZW50KQotICAgIHsKLSAgICAgICAgaWYgKCFydWxlcykKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwg
IiI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyArK2kpCi0gICAg
ICAgICAgICBkdW1wUnVsZShydWxlc1tpXSwgY3VycmVudEluZGVudCk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlcywgY3VycmVudEluZGVudCkKLSAg
ICB7Ci0gICAgICAgIGlmICghbWF0Y2hlcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Y3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7Ci0gICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgbWF0Y2hlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGR1bXBSdWxlKG1hdGNo
ZXNbaV0ucnVsZSwgY3VycmVudEluZGVudCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVtcFJ1
bGUocnVsZSwgY3VycmVudEluZGVudCkKLSAgICB7Ci0gICAgICAgIGN1cnJlbnRJbmRlbnQgPSBj
dXJyZW50SW5kZW50IHx8ICIiOwotCi0gICAgICAgIGlmICghcnVsZS50eXBlIHx8IHJ1bGUudHlw
ZSA9PT0gInN0eWxlIikgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3Vy
cmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAiOiBbIiArIHJ1bGUub3JpZ2lu
ICsgIl0geyIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHJ1bGUuc3R5bGUsIGN1cnJlbnRJbmRl
bnQgKyBpbmRlbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVu
dEluZGVudCArICJ9Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAocnVsZS50eXBlID09PSAibWVkaWEiKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkBtZWRpYSAiICsgcnVsZS5tZWRpYVRleHQgKyAi
IHsiKTsKLSAgICAgICAgICAgIGR1bXBSdWxlc0FycmF5KHJ1bGUuY2hpbGRSdWxlcywgY3VycmVu
dEluZGVudCArIGluZGVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChj
dXJyZW50SW5kZW50ICsgIn0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJpbXBvcnQiKSB7Ci0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkBpbXBvcnQ6IGhlYWRlcj0iICsgSW5z
cGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5oZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIgKyBJbnNw
ZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmJvZHlSYW5nZSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gInBhZ2UiIHx8IHJ1bGUu
dHlwZSA9PT0gImZvbnQtZmFjZSIpIHsKLSAgICAgICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJw
YWdlIikKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICIgeyIpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAi
QCIgKyBydWxlLnR5cGUgKyAiICIgKyAocnVsZS5zZWxlY3Rvckxpc3QudGV4dCA/IHJ1bGUuc2Vs
ZWN0b3JMaXN0LnRleHQgKyAiICIgOiAiIikgICsgInsiKTsKLSAgICAgICAgICAgIGR1bXBTdHls
ZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsgaW5kZW50KTsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAifSIpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gImNoYXJzZXQiKSB7
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQGNoYXJzZXQiKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KGN1cnJlbnRJbmRlbnQgKyAiW1VOS05PV04gUlVMRV06IGhlYWRlcj0iICsgSW5zcGVjdG9y
VGVzdC5yYW5nZVRleHQocnVsZS5oZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIgKyBJbnNwZWN0b3JU
ZXN0LnJhbmdlVGV4dChydWxlLmJvZHlSYW5nZSkpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGR1
bXBTdHlsZShzdHlsZSwgY3VycmVudEluZGVudCkKLSAgICB7Ci0gICAgICAgIGN1cnJlbnRJbmRl
bnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOwotICAgICAgICBpZiAoIXN0eWxlKSB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIltOTyBTVFlMRV0i
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZh
ciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1Byb3BlcnRpZXNbaV07Ci0gICAgICAgICAgICBpZiAocHJv
cGVydHkuc3RhdHVzICE9PSAiZGlzYWJsZWQiKQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiWyciICsgcHJvcGVydHkubmFtZSArICInOici
ICsgcHJvcGVydHkudmFsdWUgKyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkgPT09ICJpbXBvcnRh
bnQiID8gIiBpcy1pbXBvcnRhbnQiIDogIiIpICsgKCgicGFyc2VkT2siIGluIHByb3BlcnR5KSA/
ICIgbm9uLXBhcnNlZCIgOiAiIikgKyJdIEAiICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocHJv
cGVydHkucmFuZ2UpICsgIiAiICsgKHByb3BlcnR5LnN0YXR1cyB8fCAic3R5bGUiKSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3Vy
cmVudEluZGVudCArICJbdGV4dD0nIiArIHByb3BlcnR5LnRleHQgKyAiJ10gIiArIHByb3BlcnR5
LnN0YXR1cyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBmdW5jdGlvbiBsb2FkQW5kRHVtcFN0
eWxlU2hlZXQoc3R5bGVTaGVldElkLCBjb250aW51YXRpb24sIGVycm9yKQogICAgIHsKICAgICAg
ICAgaWYgKGVycm9yKSB7CkBAIC00MDMsNyArMzI0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU3R5bGVTaGVldDogJyIgKyBzdHlsZVNo
ZWV0LnRleHQgKyAiJyIpOwotICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkoc3R5bGVTaGVldC5y
dWxlcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5KHN0eWxlU2hl
ZXQucnVsZXMpOwogICAgICAgICAgICAgaWYgKGNvbnRpbnVhdGlvbikKICAgICAgICAgICAgICAg
ICBjb250aW51YXRpb24oc3R5bGVTaGVldCk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167301</attachid>
            <date>2012-10-05 03:39:04 -0700</date>
            <delta_ts>2012-10-05 06:20:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98246-20121005143811.patch</filename>
            <type>text/plain</type>
            <size>22015</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EzMDUxZTM4MjFmOWI5
Y2I2MTM0ZTdmOGYzODRlYWU0ZTUxZWE5Yy4uN2RhOTYwZTQ0NTY3OWVlNDMzOGE2NjIzODgwYjNm
MDVlMGJjOTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTEwLTA0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVW5hYmxlIHRvIGVkaXQgcHJvcGVydGllcyBpbiBicm9rZW4gc3R5bGVz
aGVldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NT
UGFyc2VyJ3MgZ3JhbW1hciB3YXMgYW1iaWd1b3VzIGluIHRoZSBzZW5zZSB0aGF0IHRoZSBzb3Vy
Y2UgZGF0YSBoYW5kbGluZyBhY3Rpb25zIHdlcmUgYm91bmQgdG8gYSBydWxlCisgICAgICAgIHRo
YXQgbWF0Y2hlZCBlcHNpbG9uLCBzbyBkdXJpbmcgdGhlIHBhcnNpbmcsIGl0IHdhcyBwb3NzaWJs
ZSB0byBwdXNoIHRoZSByZXNwZWN0aXZlIHJ1bGUgb250byB0aGUgc3RhY2sKKyAgICAgICAgYW5k
IGRpc2NhcmQgaXQgYWZ0ZXJ3YXJkcywgd2hlbmV2ZXIgYW4gZXJyb3Igd2FzIG1ldC4gSG93ZXZl
ciwgdGhlIHJlc3BlY3RpdmUgYWN0aW9uIHdvdWxkIGhhdmUgdGFrZW4gImRlc3RydWN0aXZlIiBl
ZmZlY3QsCisgICAgICAgIHdoaWNoIHJlc3VsdGVkIGludG8gYSBzb3VyY2UgZGF0YSB0cmVlIG5v
dCBtYXRjaGluZyB0aGUgYWN0dWFsIENTU09NLiBUaGUgY2hhbmdlIG1vdmVzIHRoZSBDU1NSdWxl
c291cmNlRGF0YSBpbnN0YW5jZSBwdXNoaW5nIGNvZGUKKyAgICAgICAgZnJvbSBtYXJrUnVsZUhl
YWRlclN0YXJ0KCkgaW50byBtYXJrUnVsZUJvZHlTdGFydCgpIHRvIHJlc29sdmUgdGhlIHJ1bGUg
cmVkdWN0aW9uIGFtYmlndWl0eSBhbmQgYXZvaWQgdW53YW50ZWQgbW9kaWZjYXRpb25zCisgICAg
ICAgIG9mIHRoZSBydWxlIHNvdXJjZSBkYXRhIHN0YWNrLgorCisgICAgICAgIFRlc3Q6IGluc3Bl
Y3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJvcnMuaHRtbAorCisgICAgICAgICogY3Nz
L0NTU0dyYW1tYXIueToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6Om1hcmtSdWxlSGVhZGVyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpzZXRSdWxlSGVhZGVyRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFy
a1J1bGVIZWFkZXJFbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjptYXJrUnVsZUJv
ZHlTdGFydCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoQ1NTUGFyc2Vy
KToKKwogMjAxMi0xMC0wNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgRml4IHN1Yi1maWVsZCB3aWR0aCB0byB0aGUgbWF4aW11bSB3aWR0aCBvZiBhIHBsYWNl
aG9sZGVyIGFuZCB0aGUgbWF4aW11bSB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKaW5kZXgg
MmI0Mjc0YTliMzJhMzVhMjk2Njg4ZjY1YjNiMzhhZjI0YmEzYjQwZC4uNzc2ODRiZmZhMTEzNzg3
NzIwYzAwMzk0Yjg2MzI1MDkzNjU4MzdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC00
NTgsMTMgKzQ1OCw2IEBAIGJsb2NrX3J1bGU6CiAgIHwgbWVkaWEKICAgOwogCi1hdF9pbXBvcnRf
aGVhZGVyX2VuZF9tYXliZV9zcGFjZToKLSAgICBtYXliZV9zcGFjZSB7Ci0gICAgICAgIHBhcnNl
ci0+bWFya1J1bGVIZWFkZXJFbmQoKTsKLSAgICAgICAgcGFyc2VyLT5tYXJrUnVsZUJvZHlTdGFy
dCgpOwotICAgIH0KLSAgICA7Ci0KIGJlZm9yZV9pbXBvcnRfcnVsZToKICAgICAvKiBlbXB0eSAq
LyB7CiAgICAgICAgIHBhcnNlci0+bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0
YTo6SU1QT1JUX1JVTEUpOwpAQCAtNDcyLDIzICs0NjUsMjAgQEAgYmVmb3JlX2ltcG9ydF9ydWxl
OgogICAgIDsKIAogaW1wb3J0OgotICAgIGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGF0
X2ltcG9ydF9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2Ug
bWF5YmVfbWVkaWFfbGlzdCAnOycgeworICAgIGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lN
IGF0X3J1bGVfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3JfdXJpIG1heWJlX3NwYWNl
IG1heWJlX21lZGlhX2xpc3QgJzsnIHsKICAgICAgICAgJCQgPSBwYXJzZXItPmNyZWF0ZUltcG9y
dFJ1bGUoJDQsICQ2KTsKICAgICB9Ci0gIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0g
YXRfaW1wb3J0X2hlYWRlcl9lbmRfbWF5YmVfc3BhY2Ugc3RyaW5nX29yX3VyaSBtYXliZV9zcGFj
ZSBtYXliZV9tZWRpYV9saXN0IFRPS0VOX0VPRiB7CisgIHwgYmVmb3JlX2ltcG9ydF9ydWxlIElN
UE9SVF9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlIHN0cmluZ19vcl91cmkgbWF5
YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBUT0tFTl9FT0YgewogICAgICAgICAkJCA9IHBhcnNl
ci0+Y3JlYXRlSW1wb3J0UnVsZSgkNCwgJDYpOwogICAgIH0KLSAgfCBiZWZvcmVfaW1wb3J0X3J1
bGUgSU1QT1JUX1NZTSBhdF9pbXBvcnRfaGVhZGVyX2VuZF9tYXliZV9zcGFjZSBzdHJpbmdfb3Jf
dXJpIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgaW52YWxpZF9ibG9jayB7CisgIHwgYmVm
b3JlX2ltcG9ydF9ydWxlIElNUE9SVF9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNl
IHN0cmluZ19vcl91cmkgbWF5YmVfc3BhY2UgbWF5YmVfbWVkaWFfbGlzdCBpbnZhbGlkX2Jsb2Nr
IHsKICAgICAgICAgJCQgPSAwOwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CiAgICAg
fQogICB8IGJlZm9yZV9pbXBvcnRfcnVsZSBJTVBPUlRfU1lNIGVycm9yICc7JyB7CiAgICAgICAg
ICQkID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwogICAgIH0KICAgfCBiZWZv
cmVfaW1wb3J0X3J1bGUgSU1QT1JUX1NZTSBlcnJvciBpbnZhbGlkX2Jsb2NrIHsKICAgICAgICAg
JCQgPSAwOwotICAgICAgICBwYXJzZXItPnBvcFJ1bGVEYXRhKCk7CiAgICAgfQogICA7CiAKQEAg
LTYzNSw3ICs2MjUsNiBAQCBtZWRpYToKICAgICB9CiAgICAgfCBiZWZvcmVfbWVkaWFfcnVsZSBN
RURJQV9TWU0gYXRfcnVsZV9oZWFkZXJfZW5kX21heWJlX3NwYWNlICc7JyB7CiAgICAgICAgICQk
ID0gMDsKLSAgICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwogICAgIH0KICAgICA7CiAKQEAg
LTcyMywxMSArNzEyLDkgQEAgcGFnZToKICAgICAgICAgfQogICAgIH0KICAgICB8IGJlZm9yZV9w
YWdlX3J1bGUgUEFHRV9TWU0gZXJyb3IgaW52YWxpZF9ibG9jayB7Ci0gICAgICBwYXJzZXItPnBv
cFJ1bGVEYXRhKCk7CiAgICAgICAkJCA9IDA7CiAgICAgfQogICAgIHwgYmVmb3JlX3BhZ2VfcnVs
ZSBQQUdFX1NZTSBlcnJvciAnOycgewotICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwogICAg
ICAgJCQgPSAwOwogICAgIH0KICAgICA7CkBAIC04MzMsMTEgKzgyMCw5IEBAIGZvbnRfZmFjZToK
ICAgICB9CiAgICAgfCBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJvciBp
bnZhbGlkX2Jsb2NrIHsKICAgICAgICQkID0gMDsKLSAgICAgIHBhcnNlci0+cG9wUnVsZURhdGEo
KTsKICAgICB9CiAgICAgfCBiZWZvcmVfZm9udF9mYWNlX3J1bGUgRk9OVF9GQUNFX1NZTSBlcnJv
ciAnOycgewogICAgICAgJCQgPSAwOwotICAgICAgcGFyc2VyLT5wb3BSdWxlRGF0YSgpOwogICAg
IH0KIDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCBiZTg5NjkwZjg4ZjY5YmQzY2Ey
MmJjMzdiYjk0ZDYzYjNhOWM3NzBlLi4xNDQ3ZTNkYjk3ZGMyNjQzOWI5ZTJlM2NjN2Q5YzkxNWU0
YmExYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtOTkzMCw3ICs5OTMwLDEzIEBA
IFN0eWxlUnVsZUJhc2UqIENTU1BhcnNlcjo6Y3JlYXRlSW1wb3J0UnVsZShjb25zdCBDU1NQYXJz
ZXJTdHJpbmcmIHVybCwgTWVkaWFRdWVyCiAgICAgUmVmUHRyPFN0eWxlUnVsZUltcG9ydD4gcnVs
ZSA9IFN0eWxlUnVsZUltcG9ydDo6Y3JlYXRlKHVybCwgbWVkaWEpOwogICAgIFN0eWxlUnVsZUlt
cG9ydCogcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICBtX3BhcnNlZFJ1bGVzLmFwcGVuZChydWxl
LnJlbGVhc2UoKSk7Ci0gICAgcHJvY2Vzc0FuZEFkZE5ld1J1bGVUb1NvdXJjZVRyZWVJZk5lZWRl
ZCgpOworICAgIGlmIChpc0V4dHJhY3RpbmdTb3VyY2VEYXRhKCkpIHsKKyAgICAgICAgQVNTRVJU
KG1fY3VycmVudFJ1bGVEYXRhKTsKKyAgICAgICAgQVNTRVJUKG1fY3VycmVudFJ1bGVEYXRhLT50
eXBlID09IENTU1J1bGVTb3VyY2VEYXRhOjpJTVBPUlRfUlVMRSk7CisgICAgICAgIG1fY3VycmVu
dFJ1bGVEYXRhLT5ydWxlQm9keVJhbmdlLnN0YXJ0ID0gbV9jdXJyZW50UnVsZURhdGEtPnJ1bGVI
ZWFkZXJSYW5nZS5lbmQ7CisgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5ydWxlQm9keVJhbmdl
LmVuZCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKKyAgICAgICAgYWRkTmV3UnVsZVRvU291cmNlVHJl
ZShtX2N1cnJlbnRSdWxlRGF0YS5yZWxlYXNlKCkpOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0xMDI5MCw5ICsxMDI5Niw4IEBAIHZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUhl
YWRlclN0YXJ0KENTU1J1bGVTb3VyY2VEYXRhOjpUeXBlIHJ1bGVUeXBlKQogewogICAgIGlmICgh
aXNFeHRyYWN0aW5nU291cmNlRGF0YSgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPENT
U1J1bGVTb3VyY2VEYXRhPiBkYXRhID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZShydWxlVHlw
ZSk7Ci0gICAgZGF0YS0+cnVsZUhlYWRlclJhbmdlLnN0YXJ0ID0gdG9rZW5TdGFydE9mZnNldCgp
OwotICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmFwcGVuZChkYXRhLnJlbGVhc2UoKSk7Cisg
ICAgbV9jdXJyZW50UnVsZURhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKHJ1bGVUeXBl
KTsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YS0+cnVsZUhlYWRlclJhbmdlLnN0YXJ0ID0gdG9rZW5T
dGFydE9mZnNldCgpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KQEAg
LTEwMzA2LDE0ICsxMDMxMSwxNCBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OnNldFJ1bGVIZWFk
ZXJFbmQoY29uc3QgQ2hhcmFjdGVyVHlwZSogZGF0YVN0YXJ0KQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpLT5ydWxlSGVhZGVy
UmFuZ2UuZW5kID0gbGlzdEVuZCAtIGRhdGFTdGFydDsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YS0+
cnVsZUhlYWRlclJhbmdlLmVuZCA9IGxpc3RFbmQgLSBkYXRhU3RhcnQ7CiB9CiAKIHZvaWQgQ1NT
UGFyc2VyOjptYXJrUnVsZUhlYWRlckVuZCgpCiB7CiAgICAgaWYgKCFpc0V4dHJhY3RpbmdTb3Vy
Y2VEYXRhKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoIW1fY3VycmVudFJ1bGVEYXRh
U3RhY2stPmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudFJ1bGVEYXRhKTsKIAogICAg
IGlmIChpczhCaXRTb3VyY2UoKSkKICAgICAgICAgc2V0UnVsZUhlYWRlckVuZDxMQ2hhcj4obV9k
YXRhU3RhcnQ4LmdldCgpKTsKQEAgLTEwMzI4LDggKzEwMzMzLDkgQEAgdm9pZCBDU1NQYXJzZXI6
Om1hcmtSdWxlQm9keVN0YXJ0KCkKICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0b2tlblN0YXJ0T2Zm
c2V0KCk7CiAgICAgaWYgKHRva2VuU3RhcnRDaGFyKCkgPT0gJ3snKQogICAgICAgICArK29mZnNl
dDsgLy8gU2tpcCB0aGUgcnVsZSBib2R5IG9wZW5pbmcgYnJhY2UuCi0gICAgQVNTRVJUKCFtX2N1
cnJlbnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkpOwotICAgIG1fY3VycmVudFJ1bGVEYXRhU3Rh
Y2stPmxhc3QoKS0+cnVsZUJvZHlSYW5nZS5zdGFydCA9IG9mZnNldDsKKyAgICBBU1NFUlQobV9j
dXJyZW50UnVsZURhdGEpOworICAgIG1fY3VycmVudFJ1bGVEYXRhLT5ydWxlQm9keVJhbmdlLnN0
YXJ0ID0gb2Zmc2V0OworICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmFwcGVuZChtX2N1cnJl
bnRSdWxlRGF0YS5yZWxlYXNlKCkpOwogfQogCiB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5
RW5kKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCBlMzMwOTBmODMyNmZhNjRiM2MyZDNhZWI4
M2ViNDZiMzRkMzA2YmQ5Li5jMjM1MTgzNjdmN2M5N2VjMzRhYmRkZWVmZGJiYmU3NjQ1NjhiNTJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0zNDMsNiArMzQzLDcgQEAgcHVibGljOgogICAg
IC8vIHRva2VuaXplciBtZXRob2RzIGFuZCBkYXRhCiAgICAgc2l6ZV90IG1fcGFyc2VkVGV4dFBy
ZWZpeExlbmd0aDsKICAgICBTb3VyY2VSYW5nZSBtX3Byb3BlcnR5UmFuZ2U7CisgICAgUmVmUHRy
PENTU1J1bGVTb3VyY2VEYXRhPiBtX2N1cnJlbnRSdWxlRGF0YTsKICAgICBPd25QdHI8UnVsZVNv
dXJjZURhdGFMaXN0PiBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrOwogICAgIFJ1bGVTb3VyY2VEYXRh
TGlzdCogbV9ydWxlU291cmNlRGF0YVJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdmZTM1ZDc0YjNiYmI5ZGFk
OGZiY2Y2NTY5ZmQ4ODYwNDdmMmFjY2EuLmMwYjg3NWJlODMxMGE1NTI0ZDE0NDM5ZTEwZWI1NGQx
NTdkYTQzNTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMC0wNCAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtT
dHlsZXNdIFVuYWJsZSB0byBlZGl0IHByb3BlcnRpZXMgaW4gYnJva2VuIHN0eWxlc2hlZXRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVu
dFRlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJv
cnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNl
LXN0eWxlc2hlZXQtZXJyb3JzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9zdHls
ZXMvc3R5bGVzLW5ldy1BUEkuaHRtbDoKKwogMjAxMi0xMC0wNSAgQ3NhYmEgT3N6dHJvZ29uw6Fj
ICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gRW5hYmxlIENTUyBjb21wb3NpdGlu
ZyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9lbGVtZW50cy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMtdGVzdC5qcwppbmRleCAzZDRlNzRmMTFlZGE0YWRhZDQ4YWQ5ODgxZTE4Mjc0N2RlYTg2
MzQ2Li4yODE3YjUxNGE0YjBmNzVkN2MxY2M3YzYyNmUwN2Q1ZWMwZDYwNGRkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKQEAgLTQ4
Myw2ICs0ODMsODMgQEAgSW5zcGVjdG9yVGVzdC5nZW5lcmF0ZVVuZG9UZXN0ID0gZnVuY3Rpb24o
dGVzdEJvZHkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorY29uc3QgaW5kZW50ID0gIiAgICAi
OworCitJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5ID0gZnVuY3Rpb24ocnVsZXMsIGN1cnJl
bnRJbmRlbnQpCit7CisgICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJuOworICAgIGN1cnJl
bnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cnVsZXMubGVuZ3RoOyArK2kpCisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGUocnVsZXNb
aV0sIGN1cnJlbnRJbmRlbnQpOworfQorCitJbnNwZWN0b3JUZXN0LmR1bXBSdWxlTWF0Y2hlc0Fy
cmF5ID0gZnVuY3Rpb24obWF0Y2hlcywgY3VycmVudEluZGVudCkKK3sKKyAgICBpZiAoIW1hdGNo
ZXMpCisgICAgICAgIHJldHVybjsKKyAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8
fCAiIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOyArK2kpCisgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGUobWF0Y2hlc1tpXS5ydWxlLCBjdXJyZW50SW5kZW50
KTsKK30KKworSW5zcGVjdG9yVGVzdC5kdW1wUnVsZSA9IGZ1bmN0aW9uKHJ1bGUsIGN1cnJlbnRJ
bmRlbnQpCit7CisgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7CisKKyAg
ICBpZiAoIXJ1bGUudHlwZSB8fCBydWxlLnR5cGUgPT09ICJzdHlsZSIpIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JMaXN0LnRl
eHQgKyAiOiBbIiArIHJ1bGUub3JpZ2luICsgIl0geyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBTdHlsZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsgaW5kZW50KTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50eXBlID09PSAibWVkaWEiKSB7CisgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQG1lZGlhICIgKyBydWxl
Lm1lZGlhVGV4dCArICIgeyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5
KHJ1bGUuY2hpbGRSdWxlcywgY3VycmVudEluZGVudCArIGluZGVudCk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAifSIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHJ1bGUudHlwZSA9PT0gImltcG9ydCIpIHsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJAaW1wb3J0OiBoZWFkZXI9IiAr
IEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUuaGVhZGVyUmFuZ2UpICsgIiwgYm9keT0iICsg
SW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5ib2R5UmFuZ2UpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmIChydWxlLnR5cGUgPT09ICJwYWdlIiB8fCBydWxlLnR5cGUgPT09
ICJmb250LWZhY2UiKSB7CisgICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJwYWdlIikKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyBydWxlLnNlbGVj
dG9yTGlzdC50ZXh0ICsgIiB7Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQCIgKyBydWxlLnR5cGUgKyAiICIgKyAo
cnVsZS5zZWxlY3Rvckxpc3QudGV4dCA/IHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAiICIgOiAi
IikgICsgInsiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUocnVsZS5zdHlsZSwg
Y3VycmVudEluZGVudCArIGluZGVudCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KGN1cnJlbnRJbmRlbnQgKyAifSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHJ1bGUudHlwZSA9PT0gImNoYXJzZXQiKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJAY2hhcnNldCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJbVU5LTk9XTiBSVUxFXTogaGVhZGVyPSIg
KyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmhlYWRlclJhbmdlKSArICIsIGJvZHk9IiAr
IEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUuYm9keVJhbmdlKSk7Cit9CisKK0luc3BlY3Rv
clRlc3QuZHVtcFN0eWxlID0gZnVuY3Rpb24oc3R5bGUsIGN1cnJlbnRJbmRlbnQpCit7CisgICAg
Y3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7CisgICAgaWYgKCFzdHlsZSkgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIltOTyBTVFlM
RV0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0
eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIHByb3BlcnR5ID0g
c3R5bGUuY3NzUHJvcGVydGllc1tpXTsKKyAgICAgICAgaWYgKHByb3BlcnR5LnN0YXR1cyAhPT0g
ImRpc2FibGVkIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJ
bmRlbnQgKyAiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVydHkudmFsdWUgKyAi
JyIgKyAocHJvcGVydHkucHJpb3JpdHkgPT09ICJpbXBvcnRhbnQiID8gIiBpcy1pbXBvcnRhbnQi
IDogIiIpICsgKCgicGFyc2VkT2siIGluIHByb3BlcnR5KSA/ICIgbm9uLXBhcnNlZCIgOiAiIikg
KyJdIEAiICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocHJvcGVydHkucmFuZ2UpICsgIiAiICsg
KHByb3BlcnR5LnN0YXR1cyB8fCAic3R5bGUiKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW3RleHQ9JyIgKyBwcm9w
ZXJ0eS50ZXh0ICsgIiddICIgKyBwcm9wZXJ0eS5zdGF0dXMpOworICAgIH0KK30KKwogfTsKIAog
ZnVuY3Rpb24gZHVtcEluc3BlY3RvckhpZ2hsaWdodFJlY3RzKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJvcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9y
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWU0MmRiZDAwOWYxN2Q2YjJiMGU3MGQ5OGQ2ODk2
ODE5MmEyODNhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJvcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjQgQEAK
K1Rlc3RzIHRoYXQgQ1NTUGFyc2VyIHByb2R1Y2VzIHNvdXJjZSBkYXRhIGNvbnNpc3RlbnQgd2l0
aCBDU1NPTSB3aGVuIHBhcnNpbmcgYnJva2VuIHN0eWxlc2hlZXRzLiBCdWcgOTgyNDYKKworYm9k
eTogW3JlZ3VsYXJdIHsKKyAgICBbJ2NvbG9yJzonYmxhY2snXSBAWzUtMThdIGFjdGl2ZQorfQor
Ym9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2JhY2tncm91bmQtY29sb3InOidicm9rZW4tZGVjbGFy
YXRpb24nIG5vbi1wYXJzZWRdIEBbNS00Ml0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0gewor
ICAgIFsnY29sb3InOidpbXBvcnQtZXJyb3InIG5vbi1wYXJzZWRdIEBbMy0yM10gYWN0aXZlCit9
Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidpbXBvcnQtZXJyb3ItYmxvY2snIG5v
bi1wYXJzZWRdIEBbMy0yOV0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29s
b3InOidtZWRpYS1lbXB0eScgbm9uLXBhcnNlZF0gQFszLTIyXSBhY3RpdmUKK30KK2JvZHk6IFty
ZWd1bGFyXSB7CisgICAgWydjb2xvcic6J3BhZ2UtZXJyb3InIG5vbi1wYXJzZWRdIEBbMy0yMV0g
YWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidwYWdlLWJsb2NrJyBu
b24tcGFyc2VkXSBAWzMtMjFdIGFjdGl2ZQorfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjZhNWY2ZGVjNDlkY2MwMTU0ZGMzM2QzZjIyYjRmOGRkNzAyNTE4MgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJv
cnMuaHRtbApAQCAtMCwwICsxLDk0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rv
ci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisKKyAgICBDU1NBZ2VudC5nZXRBbGxTdHlsZVNoZWV0
cyhoZWFkZXJzQ2FsbGJhY2spOworCisgICAgZnVuY3Rpb24gaGVhZGVyc0NhbGxiYWNrKGVycm9y
LCBoZWFkZXJzKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXJyb3IgbG9hZGluZyBzdHlsZXNoZWV0IGhlYWRlcnM6ICIg
KyBlcnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBoZWFkZXJzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ1NTQWdlbnQuZ2V0U3R5bGVTaGVl
dChoZWFkZXJzW2ldLnN0eWxlU2hlZXRJZCwgc3R5bGVTaGVldENhbGxiYWNrLmJpbmQobnVsbCwg
aSA9PT0gaGVhZGVycy5sZW5ndGggLSAxKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3R5bGVT
aGVldENhbGxiYWNrKGlzTGFzdCwgZXJyb3IsIHN0eWxlU2hlZXQpCisgICAgeworICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFcnJvciBs
b2FkaW5nIHN0eWxlc2hlZXQgYm9keTogIiArIGVycm9yKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5KHN0eWxlU2hlZXQucnVsZXMpOwor
ICAgICAgICBpZiAoaXNMYXN0KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRl
c3QoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorCis8c3R5bGU+Citib2R5IHsKKyAgICBjb2xv
cjogYmxhY2s7Cit9CisKK2ZvbnQtZmFtaWx5OiBzZXJpZjsKK30KKworYm9keTpob3ZlciB7Cisg
ICAgY29sb3I6ICNDREU7Cit9CisKK2JvZHkgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJyb2tl
bi1kZWNsYXJhdGlvbjsKK30KKworPC9zdHlsZT4KKzxzdHlsZT4KK0BpbXBvcnQgMTI7Citib2R5
IHsKKyAgY29sb3I6IGltcG9ydC1lcnJvcjsKK30KKzwvc3R5bGU+Cis8c3R5bGU+CitAaW1wb3J0
IDEyIHt9Citib2R5IHsKKyAgY29sb3I6IGltcG9ydC1lcnJvci1ibG9jazsKK30KKzwvc3R5bGU+
Cis8c3R5bGU+CitAbWVkaWEgOworYm9keSB7CisgIGNvbG9yOiBtZWRpYS1lbXB0eTsKK30KKzwv
c3R5bGU+Cis8c3R5bGU+CitAcGFnZSA7Citib2R5IHsKKyAgY29sb3I6IHBhZ2UtZXJyb3I7Cit9
Cis8L3N0eWxlPgorPHN0eWxlPgorQHBhZ2Uge30KK2JvZHkgeworICBjb2xvcjogcGFnZS1ibG9j
azsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxw
PgorVGVzdHMgdGhhdCBDU1NQYXJzZXIgcHJvZHVjZXMgc291cmNlIGRhdGEgY29uc2lzdGVudCB3
aXRoIENTU09NIHdoZW4gcGFyc2luZyBicm9rZW4gc3R5bGVzaGVldHMuIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI0NiI+QnVnIDk4MjQ2PC9hPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9zdHlsZXMtbmV3LUFQSS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHls
ZXMtbmV3LUFQSS5odG1sCmluZGV4IDkwYTU3OTE2YjMwYjljNTlhNDgwYjlkNzk2ZTUzYzk3ZjU5
NTI4Y2UuLjkwYmM0NDA4YTgyMGEzZmUxYzYzY2U1ZTZmMTgwYzRiYzNhNmE4M2UgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKQEAgLTI1
LDI2ICsyNSwyNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09
PSBNYXRjaGVkIHJ1bGVzIGZvciBib2R5ID09PSIpOwotICAgICAgICAgICAgZHVtcFJ1bGVNYXRj
aGVzQXJyYXkoc3R5bGVzLm1hdGNoZWRDU1NSdWxlcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmR1bXBSdWxlTWF0Y2hlc0FycmF5KHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXMpOwogCiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiPT09IFBzZXVkbyBydWxlcyBmb3IgYm9keSA9PT0iKTsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLnBzZXVkb0VsZW1lbnRzLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlBzZXVkb0lk
PSIgKyBzdHlsZXMucHNldWRvRWxlbWVudHNbaV0ucHNldWRvSWQpOwotICAgICAgICAgICAgICAg
IGR1bXBSdWxlTWF0Y2hlc0FycmF5KHN0eWxlcy5wc2V1ZG9FbGVtZW50c1tpXS5tYXRjaGVzKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlTWF0Y2hlc0FycmF5KHN0eWxl
cy5wc2V1ZG9FbGVtZW50c1tpXS5tYXRjaGVzKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIj09PSBJbmhlcml0ZWQgc3R5bGVzIGZvciBib2R5ID09PSIpOwogICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMuaW5oZXJpdGVkLmxlbmd0aDsgKytpKSB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkxldmVsPSIgKyAoaSAr
IDEpKTsKLSAgICAgICAgICAgICAgICBkdW1wU3R5bGUoc3R5bGVzLmluaGVyaXRlZFtpXS5pbmxp
bmVTdHlsZSk7Ci0gICAgICAgICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVzLmlu
aGVyaXRlZFtpXS5tYXRjaGVkQ1NTUnVsZXMpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZHVtcFN0eWxlKHN0eWxlcy5pbmhlcml0ZWRbaV0uaW5saW5lU3R5bGUpOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVzLmluaGVyaXRl
ZFtpXS5tYXRjaGVkQ1NTUnVsZXMpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiPT09IElubGluZSBzdHlsZSBmb3IgYm9keSA9PT0iKTsKLSAgICAgICAgICAgIGR1bXBT
dHlsZShzdHlsZXMuaW5saW5lU3R5bGUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
U3R5bGUoc3R5bGVzLmlubGluZVN0eWxlKTsKICAgICAgICAgICAgIHRlc3RfZm9yY2VkU3RhdGUo
KTsKICAgICAgICAgfQogCkBAIC0xMDIsNyArMTAyLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgIGZ1bmN0aW9uIG1hdGNoZWRDYWxsYmFjayhlcnJvciwgbWF0Y2hlZFJ1bGVzKQogICAgICAg
ICB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEJPRFkgd2l0aCBm
b3JjZWQgOmhvdmVyID09PSIpOwotICAgICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0
Y2hlZFJ1bGVzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJy
YXkobWF0Y2hlZFJ1bGVzKTsKICAgICAgICAgICAgIENTU0FnZW50LmZvcmNlUHNldWRvU3RhdGUo
Ym9keUlkLCBbImhvdmVyIl0sIHRlc3RfdGFibGVTdHlsZXMpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTE3LDcgKzExNyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIj09PSBBdHRyaWJ1dGVzIHN0eWxlIGZvciB0YWJsZSA9PT0iKTsKLSAg
ICAgICAgICAgIGR1bXBTdHlsZShhdHRyaWJ1dGVzU3R5bGUpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wU3R5bGUoYXR0cmlidXRlc1N0eWxlKTsKICAgICAgICAgICAgIHRlc3Rfc3R5
bGVTaGVldHMoKTsKICAgICAgICAgfQogCkBAIC0yMDgsNyArMjA4LDcgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
Iik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IE1hdGNoZWQgcnVs
ZXMgYWZ0ZXIgcnVsZSBhZGRlZCA9PT0iKTsKLSAgICAgICAgICAgIGR1bXBSdWxlTWF0Y2hlc0Fy
cmF5KG1hdGNoZWRDU1NSdWxlcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxl
TWF0Y2hlc0FycmF5KG1hdGNoZWRDU1NSdWxlcyk7CiAgICAgICAgICAgICB0ZXN0X2Rpc2FibGVQ
cm9wZXJ0eSgpOwogICAgICAgICB9CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIi
KTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQWZ0ZXIgcHJvcGVy
dHkgbWFuaXB1bGF0aW9ucyA9PT0iKTsKLSAgICAgICAgICAgIGR1bXBTdHlsZShzdHlsZSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShzdHlsZSk7CiAgICAgICAgICAgICB0
ZXN0X2VuYWJsZVByb3BlcnR5KHN0eWxlLnN0eWxlSWQpOwogICAgICAgICB9CiAKQEAgLTMwMSw3
ICszMDEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCI9PT0gQWZ0ZXIgcHJvcGVydHkgZW5hYmxlZCA9PT0iKTsKLSAgICAgICAgICAgIGR1
bXBTdHlsZShzdHlsZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShzdHls
ZSk7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICB9
CiAKQEAgLTMwOSw4NSArMzA5LDYgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIENTU0FnZW50
LnRvZ2dsZVByb3BlcnR5KHN0eWxlSWQsIDgsIGZhbHNlLCBkaWRFbmFibGVQcm9wZXJ0eSk7CiAg
ICAgfQogCi0gICAgLy8gRGF0YSBkdW1waW5nCi0KLSAgICBjb25zdCBpbmRlbnQgPSAiICAgICI7
Ci0KLSAgICBmdW5jdGlvbiBkdW1wUnVsZXNBcnJheShydWxlcywgY3VycmVudEluZGVudCkKLSAg
ICB7Ci0gICAgICAgIGlmICghcnVsZXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGN1
cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJ1bGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcFJ1bGUocnVsZXNbaV0s
IGN1cnJlbnRJbmRlbnQpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGR1bXBSdWxlTWF0Y2hlc0Fy
cmF5KG1hdGNoZXMsIGN1cnJlbnRJbmRlbnQpCi0gICAgewotICAgICAgICBpZiAoIW1hdGNoZXMp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5k
ZW50IHx8ICIiOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICBkdW1wUnVsZShtYXRjaGVzW2ldLnJ1bGUsIGN1cnJlbnRJbmRlbnQp
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGR1bXBSdWxlKHJ1bGUsIGN1cnJlbnRJbmRlbnQpCi0g
ICAgewotICAgICAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsKLQotICAg
ICAgICBpZiAoIXJ1bGUudHlwZSB8fCBydWxlLnR5cGUgPT09ICJzdHlsZSIpIHsKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyBydWxlLnNlbGVjdG9y
TGlzdC50ZXh0ICsgIjogWyIgKyBydWxlLm9yaWdpbiArICJdIHsiKTsKLSAgICAgICAgICAgIGR1
bXBTdHlsZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsgaW5kZW50KTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAifSIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gIm1lZGlh
IikgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCAr
ICJAbWVkaWEgIiArIHJ1bGUubWVkaWFUZXh0ICsgIiB7Iik7Ci0gICAgICAgICAgICBkdW1wUnVs
ZXNBcnJheShydWxlLmNoaWxkUnVsZXMsIGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQpOwotICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocnVsZS50eXBlID09PSAi
aW1wb3J0IikgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudElu
ZGVudCArICJAaW1wb3J0OiBoZWFkZXI9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUu
aGVhZGVyUmFuZ2UpICsgIiwgYm9keT0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5i
b2R5UmFuZ2UpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChydWxlLnR5cGUgPT09ICJwYWdlIiB8fCBydWxlLnR5cGUgPT09ICJmb250LWZhY2UiKSB7Ci0g
ICAgICAgICAgICBpZiAocnVsZS50eXBlID09PSAicGFnZSIpCi0gICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JMaXN0LnRl
eHQgKyAiIHsiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkAiICsgcnVsZS50eXBlICsgIiAiICsgKHJ1
bGUuc2VsZWN0b3JMaXN0LnRleHQgPyBydWxlLnNlbGVjdG9yTGlzdC50ZXh0ICsgIiAiIDogIiIp
ICArICJ7Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUocnVsZS5zdHlsZSwgY3VycmVudEluZGVu
dCArIGluZGVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50
SW5kZW50ICsgIn0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChydWxlLnR5cGUgPT09ICJjaGFyc2V0IikgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIkBjaGFyc2V0Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIltVTktO
T1dOIFJVTEVdOiBoZWFkZXI9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUuaGVhZGVy
UmFuZ2UpICsgIiwgYm9keT0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5ib2R5UmFu
Z2UpKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkdW1wU3R5bGUoc3R5bGUsIGN1cnJlbnRJbmRl
bnQpCi0gICAgewotICAgICAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsK
LSAgICAgICAgaWYgKCFzdHlsZSkgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoY3VycmVudEluZGVudCArICJbTk8gU1RZTEVdIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZS5jc3NQcm9wZXJ0aWVz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBzdHlsZS5jc3NQcm9w
ZXJ0aWVzW2ldOwotICAgICAgICAgICAgaWYgKHByb3BlcnR5LnN0YXR1cyAhPT0gImRpc2FibGVk
IikKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50
ICsgIlsnIiArIHByb3BlcnR5Lm5hbWUgKyAiJzonIiArIHByb3BlcnR5LnZhbHVlICsgIiciICsg
KHByb3BlcnR5LnByaW9yaXR5ID09PSAiaW1wb3J0YW50IiA/ICIgaXMtaW1wb3J0YW50IiA6ICIi
KSArICgoInBhcnNlZE9rIiBpbiBwcm9wZXJ0eSkgPyAiIG5vbi1wYXJzZWQiIDogIiIpICsiXSBA
IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHByb3BlcnR5LnJhbmdlKSArICIgIiArIChwcm9w
ZXJ0eS5zdGF0dXMgfHwgInN0eWxlIikpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW3RleHQ9JyIgKyBw
cm9wZXJ0eS50ZXh0ICsgIiddICIgKyBwcm9wZXJ0eS5zdGF0dXMpOwotICAgICAgICB9Ci0gICAg
fQotCiAgICAgZnVuY3Rpb24gbG9hZEFuZER1bXBTdHlsZVNoZWV0KHN0eWxlU2hlZXRJZCwgY29u
dGludWF0aW9uLCBlcnJvcikKICAgICB7CiAgICAgICAgIGlmIChlcnJvcikgewpAQCAtNDAzLDcg
KzMyNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIlN0eWxlU2hlZXQ6ICciICsgc3R5bGVTaGVldC50ZXh0ICsgIiciKTsKLSAgICAgICAg
ICAgIGR1bXBSdWxlc0FycmF5KHN0eWxlU2hlZXQucnVsZXMpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wUnVsZXNBcnJheShzdHlsZVNoZWV0LnJ1bGVzKTsKICAgICAgICAgICAgIGlm
IChjb250aW51YXRpb24pCiAgICAgICAgICAgICAgICAgY29udGludWF0aW9uKHN0eWxlU2hlZXQp
OwogICAgICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167317</attachid>
            <date>2012-10-05 06:20:09 -0700</date>
            <delta_ts>2012-10-05 07:43:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98246-20121005171916.patch</filename>
            <type>text/plain</type>
            <size>19089</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EzMDUxZTM4MjFmOWI5
Y2I2MTM0ZTdmOGYzODRlYWU0ZTUxZWE5Yy4uMTYwNjMzYTNmMmU0ZDU2N2U2YmUzODY5ODUzMDY2
MDQ2ZWNkOGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEwLTA1ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVW5hYmxlIHRvIGVkaXQgcHJvcGVydGllcyBpbiBicm9rZW4gc3R5bGVz
aGVldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9w
IHNvdXJjZSBkYXRhIGZvciBpbnZhbGlkIHJ1bGVzIG9mZiB0aGUgc3RhY2sgd2hlbmV2ZXIgd2Ug
aGF2ZSBjb25zZWN1dGl2ZSBDU1NQYXJzZXI6Om1hcmtSdWxlSGVhZGVyU3RhcnQoKSBpbnZvY2F0
aW9ucy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQt
ZXJyb3JzLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwb3BSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6Om1hcmtSdWxlSGVhZGVyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpt
YXJrUnVsZUJvZHlTdGFydCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAo
Q1NTUGFyc2VyKToKKwogMjAxMi0xMC0wNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgRml4IHN1Yi1maWVsZCB3aWR0aCB0byB0aGUgbWF4aW11bSB3aWR0aCBv
ZiBhIHBsYWNlaG9sZGVyIGFuZCB0aGUgbWF4aW11bSB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAppbmRleCBiZTg5NjkwZjg4ZjY5YmQzY2EyMmJjMzdiYjk0ZDYzYjNhOWM3NzBlLi5iNzNl
ODQ1ZTVhNzVkOTgyZWVjMjRlNjI2MzhmODE2MjUyMzY4OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcApAQCAtOTk4Niw2ICs5OTg2LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gQ1NTUGFyc2VyOjpwb3BSdWxlRGF0YSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQVNT
RVJUKCFtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkpOworICAgIG1fY3VycmVudFJ1
bGVEYXRhLmNsZWFyKCk7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBkYXRhID0gbV9j
dXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpOwogICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2st
PnJlbW92ZUxhc3QoKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CkBAIC0xMDI5MCw5ICsx
MDI5MSwxNSBAQCB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291
cmNlRGF0YTo6VHlwZSBydWxlVHlwZSkKIHsKICAgICBpZiAoIWlzRXh0cmFjdGluZ1NvdXJjZURh
dGEoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gZGF0
YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5cGUpOwotICAgIGRhdGEtPnJ1bGVI
ZWFkZXJSYW5nZS5zdGFydCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKLSAgICBtX2N1cnJlbnRSdWxl
RGF0YVN0YWNrLT5hcHBlbmQoZGF0YS5yZWxlYXNlKCkpOworCisgICAgLy8gUG9wIG9mZiBkYXRh
IGZvciBhIHByZXZpb3VzIGludmFsaWQgcnVsZS4KKyAgICBpZiAobV9jdXJyZW50UnVsZURhdGEp
IHsKKyAgICAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+cmVtb3ZlTGFzdCgpOworICAgICAg
ICBtX2N1cnJlbnRSdWxlRGF0YS5jbGVhcigpOworICAgIH0KKyAgICBtX2N1cnJlbnRSdWxlRGF0
YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5cGUpOworICAgIG1fY3VycmVudFJ1
bGVEYXRhLT5ydWxlSGVhZGVyUmFuZ2Uuc3RhcnQgPSB0b2tlblN0YXJ0T2Zmc2V0KCk7CisgICAg
bV9jdXJyZW50UnVsZURhdGFTdGFjay0+YXBwZW5kKG1fY3VycmVudFJ1bGVEYXRhKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkBAIC0xMDMyNSw2ICsxMDMzMiw3IEBA
IHZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCgpCiB7CiAgICAgaWYgKCFpc0V4dHJh
Y3RpbmdTb3VyY2VEYXRhKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtX2N1cnJlbnRSdWxlRGF0
YS5jbGVhcigpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKICAg
ICBpZiAodG9rZW5TdGFydENoYXIoKSA9PSAneycpCiAgICAgICAgICsrb2Zmc2V0OyAvLyBTa2lw
IHRoZSBydWxlIGJvZHkgb3BlbmluZyBicmFjZS4KQEAgLTEwMzc5LDkgKzEwMzg3LDkgQEAgdm9p
ZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wg
aXNQcm9wZXJ0eVBhcnNlZCkKICAgICAgICAgU3RyaW5nIG5hbWUgPSBwcm9wZXJ0eVN0cmluZy5s
ZWZ0KGNvbG9uSW5kZXgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICBTdHJpbmcgdmFsdWUg
PSBwcm9wZXJ0eVN0cmluZy5zdWJzdHJpbmcoY29sb25JbmRleCArIDEsIHByb3BlcnR5U3RyaW5n
Lmxlbmd0aCgpKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHJh
bmdlIGlzIHJlbGF0aXZlIHRvIHRoZSBkZWNsYXJhdGlvbiBzdGFydCBvZmZzZXQuCi0gICAgICAg
IFNvdXJjZVJhbmdlJiB0b3BSdWxlQm9keVJhbmdlID0gbV9jdXJyZW50UnVsZURhdGFTdGFjay0+
bGFzdCgpLT5ydWxlQm9keVJhbmdlOworICAgICAgICB1bnNpZ25lZCB0b3BSdWxlQm9keVJhbmdl
U3RhcnQgPSBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5sYXN0KCktPnJ1bGVCb2R5UmFuZ2Uuc3Rh
cnQ7CiAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmxhc3QoKS0+c3R5bGVTb3VyY2VE
YXRhLT5wcm9wZXJ0eURhdGEuYXBwZW5kKAotICAgICAgICAgICAgQ1NTUHJvcGVydHlTb3VyY2VE
YXRhKG5hbWUsIHZhbHVlLCBpc0ltcG9ydGFudEZvdW5kLCBpc1Byb3BlcnR5UGFyc2VkLCBTb3Vy
Y2VSYW5nZShzdGFydCAtIHRvcFJ1bGVCb2R5UmFuZ2Uuc3RhcnQsIGVuZCAtIHRvcFJ1bGVCb2R5
UmFuZ2Uuc3RhcnQpKSk7CisgICAgICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwg
dmFsdWUsIGlzSW1wb3J0YW50Rm91bmQsIGlzUHJvcGVydHlQYXJzZWQsIFNvdXJjZVJhbmdlKHN0
YXJ0IC0gdG9wUnVsZUJvZHlSYW5nZVN0YXJ0LCBlbmQgLSB0b3BSdWxlQm9keVJhbmdlU3RhcnQp
KSk7CiAgICAgfQogICAgIHJlc2V0UHJvcGVydHlSYW5nZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IGUzMzA5MGY4MzI2ZmE2NGIzYzJkM2FlYjgzZWI0NmIzNGQzMDZiZDkuLmQ4MDRm
N2U0NTk1ZjhiN2VmZmFhNzFjNDg4ZWI3ZWQ4Mjc4NGY0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmgKQEAgLTM0NCw2ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG1fcGFyc2VkVGV4dFBy
ZWZpeExlbmd0aDsKICAgICBTb3VyY2VSYW5nZSBtX3Byb3BlcnR5UmFuZ2U7CiAgICAgT3duUHRy
PFJ1bGVTb3VyY2VEYXRhTGlzdD4gbV9jdXJyZW50UnVsZURhdGFTdGFjazsKKyAgICBSZWZQdHI8
Q1NTUnVsZVNvdXJjZURhdGE+IG1fY3VycmVudFJ1bGVEYXRhOwogICAgIFJ1bGVTb3VyY2VEYXRh
TGlzdCogbV9ydWxlU291cmNlRGF0YVJlc3VsdDsKIAogICAgIHZvaWQgZml4VW5wYXJzZWRQcm9w
ZXJ0eVJhbmdlcyhDU1NSdWxlU291cmNlRGF0YSopOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdmZTM1ZDc0YjNiYmI5ZGFk
OGZiY2Y2NTY5ZmQ4ODYwNDdmMmFjY2EuLmE2MDBiNzJmNzU0MWVkYjk0ZmFhN2QzZjkyZWI5NGM3
ZGFkN2FlYjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMC0wNSAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtT
dHlsZXNdIFVuYWJsZSB0byBlZGl0IHByb3BlcnRpZXMgaW4gYnJva2VuIHN0eWxlc2hlZXRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgc21hbGwgcmVm
YWN0b3JpbmcgdG8gc2hhcmUgdGhlIENTUyBzdHlsZSBkYXRhIGR1bXBpbmcgY29kZSBhbW9uZyB0
ZXN0cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanM6
CisgICAgICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
c3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9ycy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWw6CisKIDIw
MTItMTAtMDUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbUXRdIEVuYWJsZSBDU1MgY29tcG9zaXRpbmcgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKaW5kZXggM2Q0ZTc0ZjEx
ZWRhNGFkYWQ0OGFkOTg4MWUxODI3NDdkZWE4NjM0Ni4uMjgxN2I1MTRhNGIwZjc1ZDdjMWNjN2M2
MjZlMDdkNWVjMGQ2MDRkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy10ZXN0LmpzCkBAIC00ODMsNiArNDgzLDgzIEBAIEluc3BlY3RvclRlc3Qu
Z2VuZXJhdGVVbmRvVGVzdCA9IGZ1bmN0aW9uKHRlc3RCb2R5KQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK2NvbnN0IGluZGVudCA9ICIgICAgIjsKKworSW5zcGVjdG9yVGVzdC5kdW1wUnVsZXNB
cnJheSA9IGZ1bmN0aW9uKHJ1bGVzLCBjdXJyZW50SW5kZW50KQoreworICAgIGlmICghcnVsZXMp
CisgICAgICAgIHJldHVybjsKKyAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAi
IjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgKytpKQorICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBSdWxlKHJ1bGVzW2ldLCBjdXJyZW50SW5kZW50KTsKK30KKworSW5z
cGVjdG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheSA9IGZ1bmN0aW9uKG1hdGNoZXMsIGN1cnJl
bnRJbmRlbnQpCit7CisgICAgaWYgKCFtYXRjaGVzKQorICAgICAgICByZXR1cm47CisgICAgY3Vy
cmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtYXRjaGVzLmxlbmd0aDsgKytpKQorICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlKG1h
dGNoZXNbaV0ucnVsZSwgY3VycmVudEluZGVudCk7Cit9CisKK0luc3BlY3RvclRlc3QuZHVtcFJ1
bGUgPSBmdW5jdGlvbihydWxlLCBjdXJyZW50SW5kZW50KQoreworICAgIGN1cnJlbnRJbmRlbnQg
PSBjdXJyZW50SW5kZW50IHx8ICIiOworCisgICAgaWYgKCFydWxlLnR5cGUgfHwgcnVsZS50eXBl
ID09PSAic3R5bGUiKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJ
bmRlbnQgKyBydWxlLnNlbGVjdG9yTGlzdC50ZXh0ICsgIjogWyIgKyBydWxlLm9yaWdpbiArICJd
IHsiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUocnVsZS5zdHlsZSwgY3VycmVu
dEluZGVudCArIGluZGVudCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJl
bnRJbmRlbnQgKyAifSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJ1bGUu
dHlwZSA9PT0gIm1lZGlhIikgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJy
ZW50SW5kZW50ICsgIkBtZWRpYSAiICsgcnVsZS5tZWRpYVRleHQgKyAiIHsiKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wUnVsZXNBcnJheShydWxlLmNoaWxkUnVsZXMsIGN1cnJlbnRJbmRl
bnQgKyBpbmRlbnQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgIn0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChydWxlLnR5cGUg
PT09ICJpbXBvcnQiKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJ
bmRlbnQgKyAiQGltcG9ydDogaGVhZGVyPSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxl
LmhlYWRlclJhbmdlKSArICIsIGJvZHk9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUu
Ym9keVJhbmdlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50eXBl
ID09PSAicGFnZSIgfHwgcnVsZS50eXBlID09PSAiZm9udC1mYWNlIikgeworICAgICAgICBpZiAo
cnVsZS50eXBlID09PSAicGFnZSIpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChjdXJyZW50SW5kZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICIgeyIpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50
ICsgIkAiICsgcnVsZS50eXBlICsgIiAiICsgKHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgPyBydWxl
LnNlbGVjdG9yTGlzdC50ZXh0ICsgIiAiIDogIiIpICArICJ7Iik7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFN0eWxlKHJ1bGUuc3R5bGUsIGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQpOworICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIn0iKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChydWxlLnR5cGUgPT09ICJjaGFyc2V0Iikgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQGNoYXJzZXQiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQg
KyAiW1VOS05PV04gUlVMRV06IGhlYWRlcj0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVs
ZS5oZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxl
LmJvZHlSYW5nZSkpOworfQorCitJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZSA9IGZ1bmN0aW9uKHN0
eWxlLCBjdXJyZW50SW5kZW50KQoreworICAgIGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5kZW50
IHx8ICIiOworICAgIGlmICghc3R5bGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoY3VycmVudEluZGVudCArICJbTk8gU1RZTEVdIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZS5jc3NQcm9wZXJ0aWVzLmxlbmd0aDsgKytp
KSB7CisgICAgICAgIHZhciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1Byb3BlcnRpZXNbaV07CisgICAg
ICAgIGlmIChwcm9wZXJ0eS5zdGF0dXMgIT09ICJkaXNhYmxlZCIpCisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIlsnIiArIHByb3BlcnR5Lm5hbWUg
KyAiJzonIiArIHByb3BlcnR5LnZhbHVlICsgIiciICsgKHByb3BlcnR5LnByaW9yaXR5ID09PSAi
aW1wb3J0YW50IiA/ICIgaXMtaW1wb3J0YW50IiA6ICIiKSArICgoInBhcnNlZE9rIiBpbiBwcm9w
ZXJ0eSkgPyAiIG5vbi1wYXJzZWQiIDogIiIpICsiXSBAIiArIEluc3BlY3RvclRlc3QucmFuZ2VU
ZXh0KHByb3BlcnR5LnJhbmdlKSArICIgIiArIChwcm9wZXJ0eS5zdGF0dXMgfHwgInN0eWxlIikp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJy
ZW50SW5kZW50ICsgIlt0ZXh0PSciICsgcHJvcGVydHkudGV4dCArICInXSAiICsgcHJvcGVydHku
c3RhdHVzKTsKKyAgICB9Cit9CisKIH07CiAKIGZ1bmN0aW9uIGR1bXBJbnNwZWN0b3JIaWdobGln
aHRSZWN0cygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNl
LXN0eWxlc2hlZXQtZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJvcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAx
OGJmOGM0NDVlZDQyMzVlNDRiMGExN2VhZjlhNWRkOGZmZmY5ZDEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDI0IEBACitUZXN0cyB0aGF0IENTU1BhcnNlciBwcm9kdWNl
cyBzb3VyY2UgZGF0YSBjb25zaXN0ZW50IHdpdGggQ1NTT00gd2hlbiBwYXJzaW5nIGJyb2tlbiBz
dHlsZXNoZWV0cy4gQnVnIDk4MjQ2CisKK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydjb2xvcic6
J2JsYWNrJ10gQFs1LTE4XSBhY3RpdmUKK30KK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydiYWNr
Z3JvdW5kLWNvbG9yJzonYnJva2VuLWRlY2xhcmF0aW9uJyBub24tcGFyc2VkXSBAWzUtNDJdIGFj
dGl2ZQorfQorYm9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2NvbG9yJzonaW1wb3J0LWVycm9yJyBu
b24tcGFyc2VkXSBAWzUtMjVdIGFjdGl2ZQorfQorYm9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2Nv
bG9yJzonaW1wb3J0LWVycm9yLWJsb2NrJyBub24tcGFyc2VkXSBAWzUtMzFdIGFjdGl2ZQorfQor
Ym9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2NvbG9yJzonbWVkaWEtZW1wdHknIG5vbi1wYXJzZWRd
IEBbNS0yNF0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidwYWdl
LWVycm9yJyBub24tcGFyc2VkXSBAWzUtMjNdIGFjdGl2ZQorfQorYm9keTogW3JlZ3VsYXJdIHsK
KyAgICBbJ2NvbG9yJzoncGFnZS1ibG9jaycgbm9uLXBhcnNlZF0gQFs1LTIzXSBhY3RpdmUKK30K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNo
ZWV0LWVycm9ycy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHls
ZXNoZWV0LWVycm9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1YWY3Mjc2ZTgxODYwNjc0ODNiMjE2NDQ3
YTUzYWJiM2Q5MzQyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0bWwKQEAgLTAsMCArMSw5NCBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOworCisg
ICAgQ1NTQWdlbnQuZ2V0QWxsU3R5bGVTaGVldHMoaGVhZGVyc0NhbGxiYWNrKTsKKworICAgIGZ1
bmN0aW9uIGhlYWRlcnNDYWxsYmFjayhlcnJvciwgaGVhZGVycykKKyAgICB7CisgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkVycm9yIGxv
YWRpbmcgc3R5bGVzaGVldCBoZWFkZXJzOiAiICsgZXJyb3IpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIENTU0FnZW50LmdldFN0eWxlU2hlZXQoaGVhZGVyc1tpXS5zdHlsZVNoZWV0SWQsIHN0
eWxlU2hlZXRDYWxsYmFjay5iaW5kKG51bGwsIGkgPT09IGhlYWRlcnMubGVuZ3RoIC0gMSkpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRDYWxsYmFjayhpc0xhc3QsIGVycm9yLCBz
dHlsZVNoZWV0KQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXJyb3IgbG9hZGluZyBzdHlsZXNoZWV0IGJvZHk6ICIgKyBl
cnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVs
ZXNBcnJheShzdHlsZVNoZWV0LnJ1bGVzKTsKKyAgICAgICAgaWYgKGlzTGFzdCkKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3NjcmlwdD4K
KworPHN0eWxlPgorYm9keSB7CisgICAgY29sb3I6IGJsYWNrOworfQorCitmb250LWZhbWlseTog
c2VyaWY7Cit9CisKK2JvZHk6aG92ZXIgeworICAgIGNvbG9yOiAjQ0RFOworfQorCitib2R5IHsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBicm9rZW4tZGVjbGFyYXRpb247Cit9CisKKzwvc3R5bGU+
Cis8c3R5bGU+CitAaW1wb3J0IDEyOworYm9keSB7CisgICAgY29sb3I6IGltcG9ydC1lcnJvcjsK
K30KKzwvc3R5bGU+Cis8c3R5bGU+CitAaW1wb3J0IDEyIHt9Citib2R5IHsKKyAgICBjb2xvcjog
aW1wb3J0LWVycm9yLWJsb2NrOworfQorPC9zdHlsZT4KKzxzdHlsZT4KK0BtZWRpYSA7Citib2R5
IHsKKyAgICBjb2xvcjogbWVkaWEtZW1wdHk7Cit9Cis8L3N0eWxlPgorPHN0eWxlPgorQHBhZ2Ug
OworYm9keSB7CisgICAgY29sb3I6IHBhZ2UtZXJyb3I7Cit9Cis8L3N0eWxlPgorPHN0eWxlPgor
QHBhZ2Uge30KK2JvZHkgeworICAgIGNvbG9yOiBwYWdlLWJsb2NrOworfQorPC9zdHlsZT4KKzwv
aGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0aGF0IENTU1Bh
cnNlciBwcm9kdWNlcyBzb3VyY2UgZGF0YSBjb25zaXN0ZW50IHdpdGggQ1NTT00gd2hlbiBwYXJz
aW5nIGJyb2tlbiBzdHlsZXNoZWV0cy4gPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4MjQ2Ij5CdWcgOTgyNDY8L2E+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWwKaW5k
ZXggOTBhNTc5MTZiMzBiOWM1OWE0ODBiOWQ3OTZlNTNjOTdmNTk1MjhjZS4uOTBiYzQ0MDhhODIw
YTNmZTFjNjNjZTVlNmYxODBjNGJjM2E2YTgzZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtbmV3LUFQSS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbApAQCAtMjUsMjYgKzI1LDI2IEBAIGZ1bmN0
aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IE1hdGNoZWQgcnVsZXMgZm9y
IGJvZHkgPT09Iik7Ci0gICAgICAgICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMubWF0
Y2hlZENTU1J1bGVzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVz
QXJyYXkoc3R5bGVzLm1hdGNoZWRDU1NSdWxlcyk7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9
PT0gUHNldWRvIHJ1bGVzIGZvciBib2R5ID09PSIpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzdHlsZXMucHNldWRvRWxlbWVudHMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUHNldWRvSWQ9IiArIHN0eWxlcy5wc2V1ZG9F
bGVtZW50c1tpXS5wc2V1ZG9JZCk7Ci0gICAgICAgICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJy
YXkoc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLm1hdGNoZXMpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkoc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ld
Lm1hdGNoZXMpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IElu
aGVyaXRlZCBzdHlsZXMgZm9yIGJvZHkgPT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHN0eWxlcy5pbmhlcml0ZWQubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTGV2ZWw9IiArIChpICsgMSkpOwotICAgICAgICAgICAg
ICAgIGR1bXBTdHlsZShzdHlsZXMuaW5oZXJpdGVkW2ldLmlubGluZVN0eWxlKTsKLSAgICAgICAg
ICAgICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRD
U1NSdWxlcyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUoc3R5bGVz
LmluaGVyaXRlZFtpXS5pbmxpbmVTdHlsZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMuaW5oZXJpdGVkW2ldLm1hdGNoZWRDU1NSdWxl
cyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCIiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gSW5saW5lIHN0
eWxlIGZvciBib2R5ID09PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxlcy5pbmxpbmVT
dHlsZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShzdHlsZXMuaW5saW5l
U3R5bGUpOwogICAgICAgICAgICAgdGVzdF9mb3JjZWRTdGF0ZSgpOwogICAgICAgICB9CiAKQEAg
LTEwMiw3ICsxMDIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZnVuY3Rpb24gbWF0Y2hl
ZENhbGxiYWNrKGVycm9yLCBtYXRjaGVkUnVsZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQk9EWSB3aXRoIGZvcmNlZCA6aG92ZXIgPT09Iik7
Ci0gICAgICAgICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkUnVsZXMpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkUnVsZXMpOwog
ICAgICAgICAgICAgQ1NTQWdlbnQuZm9yY2VQc2V1ZG9TdGF0ZShib2R5SWQsIFsiaG92ZXIiXSwg
dGVzdF90YWJsZVN0eWxlcyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTcsNyArMTE3LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09
IEF0dHJpYnV0ZXMgc3R5bGUgZm9yIHRhYmxlID09PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxl
KGF0dHJpYnV0ZXNTdHlsZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShh
dHRyaWJ1dGVzU3R5bGUpOwogICAgICAgICAgICAgdGVzdF9zdHlsZVNoZWV0cygpOwogICAgICAg
ICB9CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gTWF0Y2hlZCBydWxlcyBhZnRlciBydWxlIGFkZGVk
ID09PSIpOwotICAgICAgICAgICAgZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlZENTU1J1bGVz
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hl
ZENTU1J1bGVzKTsKICAgICAgICAgICAgIHRlc3RfZGlzYWJsZVByb3BlcnR5KCk7CiAgICAgICAg
IH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRlciBwcm9wZXJ0eSBtYW5pcHVsYXRpb25zID09
PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxlKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFN0eWxlKHN0eWxlKTsKICAgICAgICAgICAgIHRlc3RfZW5hYmxlUHJvcGVydHko
c3R5bGUuc3R5bGVJZCk7CiAgICAgICAgIH0KIApAQCAtMzAxLDcgKzMwMSw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBBZnRlciBw
cm9wZXJ0eSBlbmFibGVkID09PSIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxlKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKHN0eWxlKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgICAgIH0KIApAQCAtMzA5LDg1ICszMDks
NiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgQ1NTQWdlbnQudG9nZ2xlUHJvcGVydHkoc3R5
bGVJZCwgOCwgZmFsc2UsIGRpZEVuYWJsZVByb3BlcnR5KTsKICAgICB9CiAKLSAgICAvLyBEYXRh
IGR1bXBpbmcKLQotICAgIGNvbnN0IGluZGVudCA9ICIgICAgIjsKLQotICAgIGZ1bmN0aW9uIGR1
bXBSdWxlc0FycmF5KHJ1bGVzLCBjdXJyZW50SW5kZW50KQotICAgIHsKLSAgICAgICAgaWYgKCFy
dWxlcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY3VycmVudEluZGVudCA9IGN1cnJl
bnRJbmRlbnQgfHwgIiI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICBkdW1wUnVsZShydWxlc1tpXSwgY3VycmVudEluZGVudCk7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gZHVtcFJ1bGVNYXRjaGVzQXJyYXkobWF0Y2hlcywgY3VycmVu
dEluZGVudCkKLSAgICB7Ci0gICAgICAgIGlmICghbWF0Y2hlcykKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGR1
bXBSdWxlKG1hdGNoZXNbaV0ucnVsZSwgY3VycmVudEluZGVudCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gZHVtcFJ1bGUocnVsZSwgY3VycmVudEluZGVudCkKLSAgICB7Ci0gICAgICAgIGN1cnJl
bnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOwotCi0gICAgICAgIGlmICghcnVsZS50eXBl
IHx8IHJ1bGUudHlwZSA9PT0gInN0eWxlIikgewotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoY3VycmVudEluZGVudCArIHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAiOiBbIiAr
IHJ1bGUub3JpZ2luICsgIl0geyIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHJ1bGUuc3R5bGUs
IGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAocnVsZS50eXBlID09PSAibWVkaWEiKSB7Ci0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkBtZWRpYSAiICsgcnVsZS5t
ZWRpYVRleHQgKyAiIHsiKTsKLSAgICAgICAgICAgIGR1bXBSdWxlc0FycmF5KHJ1bGUuY2hpbGRS
dWxlcywgY3VycmVudEluZGVudCArIGluZGVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIn0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJpbXBvcnQiKSB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkBpbXBvcnQ6IGhl
YWRlcj0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5oZWFkZXJSYW5nZSkgKyAiLCBi
b2R5PSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmJvZHlSYW5nZSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gInBh
Z2UiIHx8IHJ1bGUudHlwZSA9PT0gImZvbnQtZmFjZSIpIHsKLSAgICAgICAgICAgIGlmIChydWxl
LnR5cGUgPT09ICJwYWdlIikKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dChjdXJyZW50SW5kZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICIgeyIpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJl
bnRJbmRlbnQgKyAiQCIgKyBydWxlLnR5cGUgKyAiICIgKyAocnVsZS5zZWxlY3Rvckxpc3QudGV4
dCA/IHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgKyAiICIgOiAiIikgICsgInsiKTsKLSAgICAgICAg
ICAgIGR1bXBTdHlsZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsgaW5kZW50KTsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAifSIpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0g
ImNoYXJzZXQiKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQGNoYXJz
ZXQiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW1VOS05PV04gUlVMRV06IGhlYWRlcj0i
ICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5oZWFkZXJSYW5nZSkgKyAiLCBib2R5PSIg
KyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmJvZHlSYW5nZSkpOwotICAgIH0KLQotICAg
IGZ1bmN0aW9uIGR1bXBTdHlsZShzdHlsZSwgY3VycmVudEluZGVudCkKLSAgICB7Ci0gICAgICAg
IGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOwotICAgICAgICBpZiAoIXN0eWxl
KSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsg
IltOTyBTVFlMRV0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1Byb3BlcnRpZXNbaV07Ci0gICAgICAg
ICAgICBpZiAocHJvcGVydHkuc3RhdHVzICE9PSAiZGlzYWJsZWQiKQotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiWyciICsgcHJvcGVydHku
bmFtZSArICInOiciICsgcHJvcGVydHkudmFsdWUgKyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkg
PT09ICJpbXBvcnRhbnQiID8gIiBpcy1pbXBvcnRhbnQiIDogIiIpICsgKCgicGFyc2VkT2siIGlu
IHByb3BlcnR5KSA/ICIgbm9uLXBhcnNlZCIgOiAiIikgKyJdIEAiICsgSW5zcGVjdG9yVGVzdC5y
YW5nZVRleHQocHJvcGVydHkucmFuZ2UpICsgIiAiICsgKHByb3BlcnR5LnN0YXR1cyB8fCAic3R5
bGUiKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoY3VycmVudEluZGVudCArICJbdGV4dD0nIiArIHByb3BlcnR5LnRleHQgKyAiJ10g
IiArIHByb3BlcnR5LnN0YXR1cyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBmdW5jdGlvbiBs
b2FkQW5kRHVtcFN0eWxlU2hlZXQoc3R5bGVTaGVldElkLCBjb250aW51YXRpb24sIGVycm9yKQog
ICAgIHsKICAgICAgICAgaWYgKGVycm9yKSB7CkBAIC00MDMsNyArMzI0LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU3R5bGVTaGVldDog
JyIgKyBzdHlsZVNoZWV0LnRleHQgKyAiJyIpOwotICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXko
c3R5bGVTaGVldC5ydWxlcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0Fy
cmF5KHN0eWxlU2hlZXQucnVsZXMpOwogICAgICAgICAgICAgaWYgKGNvbnRpbnVhdGlvbikKICAg
ICAgICAgICAgICAgICBjb250aW51YXRpb24oc3R5bGVTaGVldCk7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167327</attachid>
            <date>2012-10-05 07:43:14 -0700</date>
            <delta_ts>2012-10-05 08:20:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98246-20121005184221.patch</filename>
            <type>text/plain</type>
            <size>19982</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EzMDUxZTM4MjFmOWI5
Y2I2MTM0ZTdmOGYzODRlYWU0ZTUxZWE5Yy4uOTRiYzE1MDkxYTMwY2FlYTAxZWViNDk4MzM1YjU5
ZWViYThjMTJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEwLTA1ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVW5hYmxlIHRvIGVkaXQgcHJvcGVydGllcyBpbiBicm9rZW4gc3R5bGVz
aGVldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9w
IHNvdXJjZSBkYXRhIGZvciBpbnZhbGlkIHJ1bGVzIG9mZiB0aGUgc3RhY2sgd2hlbmV2ZXIgd2Ug
aGF2ZSBjb25zZWN1dGl2ZSBDU1NQYXJzZXI6Om1hcmtSdWxlSGVhZGVyU3RhcnQoKSBpbnZvY2F0
aW9ucy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQt
ZXJyb3JzLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVJbXBvcnRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cG9wUnVsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjptYXJr
UnVsZUhlYWRlclN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1J1bGVC
b2R5U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQp
OgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKENTU1BhcnNlcik6CisKIDIw
MTItMTAtMDQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZp
eCBzdWItZmllbGQgd2lkdGggdG8gdGhlIG1heGltdW0gd2lkdGggb2YgYSBwbGFjZWhvbGRlciBh
bmQgdGhlIG1heGltdW0gdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggYmU4OTY5
MGY4OGY2OWJkM2NhMjJiYzM3YmI5NGQ2M2IzYTljNzcwZS4uZjBhMTUzZDBjODJhNTI1NWNjZDA5
ZTU2YmJmYTQ0MzNmNTYxODg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTk5MjUs
OCArOTkyNSwxMCBAQCBNZWRpYVF1ZXJ5U2V0KiBDU1NQYXJzZXI6OmNyZWF0ZU1lZGlhUXVlcnlT
ZXQoKQogCiBTdHlsZVJ1bGVCYXNlKiBDU1NQYXJzZXI6OmNyZWF0ZUltcG9ydFJ1bGUoY29uc3Qg
Q1NTUGFyc2VyU3RyaW5nJiB1cmwsIE1lZGlhUXVlcnlTZXQqIG1lZGlhKQogewotICAgIGlmICgh
bWVkaWEgfHwgIW1fYWxsb3dJbXBvcnRSdWxlcykKKyAgICBpZiAoIW1lZGlhIHx8ICFtX2FsbG93
SW1wb3J0UnVsZXMpIHsKKyAgICAgICAgcG9wUnVsZURhdGEoKTsKICAgICAgICAgcmV0dXJuIDA7
CisgICAgfQogICAgIFJlZlB0cjxTdHlsZVJ1bGVJbXBvcnQ+IHJ1bGUgPSBTdHlsZVJ1bGVJbXBv
cnQ6OmNyZWF0ZSh1cmwsIG1lZGlhKTsKICAgICBTdHlsZVJ1bGVJbXBvcnQqIHJlc3VsdCA9IHJ1
bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpAQCAt
OTk4Niw2ICs5OTg4LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gQ1NTUGFyc2Vy
Ojpwb3BSdWxlRGF0YSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQVNTRVJUKCFtX2N1cnJl
bnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkpOworICAgIG1fY3VycmVudFJ1bGVEYXRhLmNsZWFy
KCk7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBkYXRhID0gbV9jdXJyZW50UnVsZURh
dGFTdGFjay0+bGFzdCgpOwogICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPnJlbW92ZUxhc3Qo
KTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CkBAIC0xMDI5MCw5ICsxMDI5MywxNSBAQCB2
b2lkIENTU1BhcnNlcjo6bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291cmNlRGF0YTo6VHlw
ZSBydWxlVHlwZSkKIHsKICAgICBpZiAoIWlzRXh0cmFjdGluZ1NvdXJjZURhdGEoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gZGF0YSA9IENTU1J1bGVT
b3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5cGUpOwotICAgIGRhdGEtPnJ1bGVIZWFkZXJSYW5nZS5z
dGFydCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKLSAgICBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5h
cHBlbmQoZGF0YS5yZWxlYXNlKCkpOworCisgICAgLy8gUG9wIG9mZiBkYXRhIGZvciBhIHByZXZp
b3VzIGludmFsaWQgcnVsZS4KKyAgICBpZiAobV9jdXJyZW50UnVsZURhdGEpIHsKKyAgICAgICAg
bV9jdXJyZW50UnVsZURhdGFTdGFjay0+cmVtb3ZlTGFzdCgpOworICAgICAgICBtX2N1cnJlbnRS
dWxlRGF0YS5jbGVhcigpOworICAgIH0KKyAgICBtX2N1cnJlbnRSdWxlRGF0YSA9IENTU1J1bGVT
b3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5cGUpOworICAgIG1fY3VycmVudFJ1bGVEYXRhLT5ydWxl
SGVhZGVyUmFuZ2Uuc3RhcnQgPSB0b2tlblN0YXJ0T2Zmc2V0KCk7CisgICAgbV9jdXJyZW50UnVs
ZURhdGFTdGFjay0+YXBwZW5kKG1fY3VycmVudFJ1bGVEYXRhKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CkBAIC0xMDMyNSw2ICsxMDMzNCw3IEBAIHZvaWQgQ1NTUGFy
c2VyOjptYXJrUnVsZUJvZHlTdGFydCgpCiB7CiAgICAgaWYgKCFpc0V4dHJhY3RpbmdTb3VyY2VE
YXRhKCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YS5jbGVhcigpOwog
ICAgIHVuc2lnbmVkIG9mZnNldCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKICAgICBpZiAodG9rZW5T
dGFydENoYXIoKSA9PSAneycpCiAgICAgICAgICsrb2Zmc2V0OyAvLyBTa2lwIHRoZSBydWxlIGJv
ZHkgb3BlbmluZyBicmFjZS4KQEAgLTEwMzc5LDkgKzEwMzg5LDkgQEAgdm9pZCBDU1NQYXJzZXI6
Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBh
cnNlZCkKICAgICAgICAgU3RyaW5nIG5hbWUgPSBwcm9wZXJ0eVN0cmluZy5sZWZ0KGNvbG9uSW5k
ZXgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICBTdHJpbmcgdmFsdWUgPSBwcm9wZXJ0eVN0
cmluZy5zdWJzdHJpbmcoY29sb25JbmRleCArIDEsIHByb3BlcnR5U3RyaW5nLmxlbmd0aCgpKS5z
dHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHJhbmdlIGlzIHJlbGF0
aXZlIHRvIHRoZSBkZWNsYXJhdGlvbiBzdGFydCBvZmZzZXQuCi0gICAgICAgIFNvdXJjZVJhbmdl
JiB0b3BSdWxlQm9keVJhbmdlID0gbV9jdXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpLT5ydWxl
Qm9keVJhbmdlOworICAgICAgICB1bnNpZ25lZCB0b3BSdWxlQm9keVJhbmdlU3RhcnQgPSBtX2N1
cnJlbnRSdWxlRGF0YVN0YWNrLT5sYXN0KCktPnJ1bGVCb2R5UmFuZ2Uuc3RhcnQ7CiAgICAgICAg
IG1fY3VycmVudFJ1bGVEYXRhU3RhY2stPmxhc3QoKS0+c3R5bGVTb3VyY2VEYXRhLT5wcm9wZXJ0
eURhdGEuYXBwZW5kKAotICAgICAgICAgICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhKG5hbWUsIHZh
bHVlLCBpc0ltcG9ydGFudEZvdW5kLCBpc1Byb3BlcnR5UGFyc2VkLCBTb3VyY2VSYW5nZShzdGFy
dCAtIHRvcFJ1bGVCb2R5UmFuZ2Uuc3RhcnQsIGVuZCAtIHRvcFJ1bGVCb2R5UmFuZ2Uuc3RhcnQp
KSk7CisgICAgICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgdmFsdWUsIGlzSW1w
b3J0YW50Rm91bmQsIGlzUHJvcGVydHlQYXJzZWQsIFNvdXJjZVJhbmdlKHN0YXJ0IC0gdG9wUnVs
ZUJvZHlSYW5nZVN0YXJ0LCBlbmQgLSB0b3BSdWxlQm9keVJhbmdlU3RhcnQpKSk7CiAgICAgfQog
ICAgIHJlc2V0UHJvcGVydHlSYW5nZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGUz
MzA5MGY4MzI2ZmE2NGIzYzJkM2FlYjgzZWI0NmIzNGQzMDZiZDkuLmQ4MDRmN2U0NTk1ZjhiN2Vm
ZmFhNzFjNDg4ZWI3ZWQ4Mjc4NGY0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTM0NCw2
ICszNDQsNyBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG1fcGFyc2VkVGV4dFByZWZpeExlbmd0aDsK
ICAgICBTb3VyY2VSYW5nZSBtX3Byb3BlcnR5UmFuZ2U7CiAgICAgT3duUHRyPFJ1bGVTb3VyY2VE
YXRhTGlzdD4gbV9jdXJyZW50UnVsZURhdGFTdGFjazsKKyAgICBSZWZQdHI8Q1NTUnVsZVNvdXJj
ZURhdGE+IG1fY3VycmVudFJ1bGVEYXRhOwogICAgIFJ1bGVTb3VyY2VEYXRhTGlzdCogbV9ydWxl
U291cmNlRGF0YVJlc3VsdDsKIAogICAgIHZvaWQgZml4VW5wYXJzZWRQcm9wZXJ0eVJhbmdlcyhD
U1NSdWxlU291cmNlRGF0YSopOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdmZTM1ZDc0YjNiYmI5ZGFkOGZiY2Y2NTY5ZmQ4
ODYwNDdmMmFjY2EuLmE2MDBiNzJmNzU0MWVkYjk0ZmFhN2QzZjkyZWI5NGM3ZGFkN2FlYjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0xMC0wNSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZs
b3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtTdHlsZXNdIFVuYWJs
ZSB0byBlZGl0IHByb3BlcnRpZXMgaW4gYnJva2VuIHN0eWxlc2hlZXRzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODI0NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgc21hbGwgcmVmYWN0b3JpbmcgdG8g
c2hhcmUgdGhlIENTUyBzdHlsZSBkYXRhIGR1bXBpbmcgY29kZSBhbW9uZyB0ZXN0cy4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanM6CisgICAgICAgIChp
bml0aWFsaXplX0VsZW1lbnRUZXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNl
LXN0eWxlc2hlZXQtZXJyb3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9wYXJzZS1zdHlsZXNoZWV0LWVycm9ycy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1uZXctQVBJLmh0bWw6CisKIDIwMTItMTAtMDUgIENz
YWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIEVuYWJs
ZSBDU1MgY29tcG9zaXRpbmcgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKaW5kZXggM2Q0ZTc0ZjExZWRhNGFkYWQ0OGFk
OTg4MWUxODI3NDdkZWE4NjM0Ni4uMjgxN2I1MTRhNGIwZjc1ZDdjMWNjN2M2MjZlMDdkNWVjMGQ2
MDRkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVu
dHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50
cy10ZXN0LmpzCkBAIC00ODMsNiArNDgzLDgzIEBAIEluc3BlY3RvclRlc3QuZ2VuZXJhdGVVbmRv
VGVzdCA9IGZ1bmN0aW9uKHRlc3RCb2R5KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2NvbnN0
IGluZGVudCA9ICIgICAgIjsKKworSW5zcGVjdG9yVGVzdC5kdW1wUnVsZXNBcnJheSA9IGZ1bmN0
aW9uKHJ1bGVzLCBjdXJyZW50SW5kZW50KQoreworICAgIGlmICghcnVsZXMpCisgICAgICAgIHJl
dHVybjsKKyAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgKytpKQorICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBSdWxlKHJ1bGVzW2ldLCBjdXJyZW50SW5kZW50KTsKK30KKworSW5zcGVjdG9yVGVzdC5k
dW1wUnVsZU1hdGNoZXNBcnJheSA9IGZ1bmN0aW9uKG1hdGNoZXMsIGN1cnJlbnRJbmRlbnQpCit7
CisgICAgaWYgKCFtYXRjaGVzKQorICAgICAgICByZXR1cm47CisgICAgY3VycmVudEluZGVudCA9
IGN1cnJlbnRJbmRlbnQgfHwgIiI7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXRjaGVzLmxl
bmd0aDsgKytpKQorICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlKG1hdGNoZXNbaV0ucnVs
ZSwgY3VycmVudEluZGVudCk7Cit9CisKK0luc3BlY3RvclRlc3QuZHVtcFJ1bGUgPSBmdW5jdGlv
bihydWxlLCBjdXJyZW50SW5kZW50KQoreworICAgIGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5k
ZW50IHx8ICIiOworCisgICAgaWYgKCFydWxlLnR5cGUgfHwgcnVsZS50eXBlID09PSAic3R5bGUi
KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyBydWxl
LnNlbGVjdG9yTGlzdC50ZXh0ICsgIjogWyIgKyBydWxlLm9yaWdpbiArICJdIHsiKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUocnVsZS5zdHlsZSwgY3VycmVudEluZGVudCArIGlu
ZGVudCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAi
fSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJ1bGUudHlwZSA9PT0gIm1l
ZGlhIikgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsg
IkBtZWRpYSAiICsgcnVsZS5tZWRpYVRleHQgKyAiIHsiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wUnVsZXNBcnJheShydWxlLmNoaWxkUnVsZXMsIGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQp
OworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIn0iKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChydWxlLnR5cGUgPT09ICJpbXBvcnQi
KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQGlt
cG9ydDogaGVhZGVyPSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmhlYWRlclJhbmdl
KSArICIsIGJvZHk9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUuYm9keVJhbmdlKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50eXBlID09PSAicGFnZSIg
fHwgcnVsZS50eXBlID09PSAiZm9udC1mYWNlIikgeworICAgICAgICBpZiAocnVsZS50eXBlID09
PSAicGFnZSIpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICIgeyIpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIkAiICsgcnVs
ZS50eXBlICsgIiAiICsgKHJ1bGUuc2VsZWN0b3JMaXN0LnRleHQgPyBydWxlLnNlbGVjdG9yTGlz
dC50ZXh0ICsgIiAiIDogIiIpICArICJ7Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0
eWxlKHJ1bGUuc3R5bGUsIGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIn0iKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChydWxlLnR5cGUgPT09ICJjaGFyc2V0IikgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiQGNoYXJzZXQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW1VOS05PV04g
UlVMRV06IGhlYWRlcj0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5oZWFkZXJSYW5n
ZSkgKyAiLCBib2R5PSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmJvZHlSYW5nZSkp
OworfQorCitJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZSA9IGZ1bmN0aW9uKHN0eWxlLCBjdXJyZW50
SW5kZW50KQoreworICAgIGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOworICAg
IGlmICghc3R5bGUpIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudElu
ZGVudCArICJbTk8gU1RZTEVdIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBzdHlsZS5jc3NQcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAg
IHZhciBwcm9wZXJ0eSA9IHN0eWxlLmNzc1Byb3BlcnRpZXNbaV07CisgICAgICAgIGlmIChwcm9w
ZXJ0eS5zdGF0dXMgIT09ICJkaXNhYmxlZCIpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdChjdXJyZW50SW5kZW50ICsgIlsnIiArIHByb3BlcnR5Lm5hbWUgKyAiJzonIiArIHBy
b3BlcnR5LnZhbHVlICsgIiciICsgKHByb3BlcnR5LnByaW9yaXR5ID09PSAiaW1wb3J0YW50IiA/
ICIgaXMtaW1wb3J0YW50IiA6ICIiKSArICgoInBhcnNlZE9rIiBpbiBwcm9wZXJ0eSkgPyAiIG5v
bi1wYXJzZWQiIDogIiIpICsiXSBAIiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHByb3BlcnR5
LnJhbmdlKSArICIgIiArIChwcm9wZXJ0eS5zdGF0dXMgfHwgInN0eWxlIikpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50ICsg
Ilt0ZXh0PSciICsgcHJvcGVydHkudGV4dCArICInXSAiICsgcHJvcGVydHkuc3RhdHVzKTsKKyAg
ICB9Cit9CisKIH07CiAKIGZ1bmN0aW9uIGR1bXBJbnNwZWN0b3JIaWdobGlnaHRSZWN0cygpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQt
ZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Ut
c3R5bGVzaGVldC1lcnJvcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxOWUzMzdjYTBlMjUy
OTgyN2RmZjY4ZjhmNTA0NGFlMDA3YzY1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMwIEBACitUZXN0cyB0aGF0IENTU1BhcnNlciBwcm9kdWNlcyBzb3VyY2UgZGF0
YSBjb25zaXN0ZW50IHdpdGggQ1NTT00gd2hlbiBwYXJzaW5nIGJyb2tlbiBzdHlsZXNoZWV0cy4g
QnVnIDk4MjQ2CisKK2JvZHk6OmJlZm9yZTogW3JlZ3VsYXJdIHsKKyAgICBbJ2NvbG9yJzonc3R5
bGUtcHJlY2VkZXMtaW1wb3J0JyBub24tcGFyc2VkXSBAWzUtMzRdIGFjdGl2ZQorfQorYm9keTo6
YWZ0ZXI6IFtyZWd1bGFyXSB7CisgICAgWydjb2xvcic6J3N0eWxlLWZvbGxvd3MtaW1wb3J0JyBu
b24tcGFyc2VkXSBAWzUtMzNdIGFjdGl2ZQorfQorYm9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2Nv
bG9yJzonYmxhY2snXSBAWzUtMThdIGFjdGl2ZQorfQorYm9keTogW3JlZ3VsYXJdIHsKKyAgICBb
J2JhY2tncm91bmQtY29sb3InOidicm9rZW4tZGVjbGFyYXRpb24nIG5vbi1wYXJzZWRdIEBbNS00
Ml0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidpbXBvcnQtZXJy
b3InIG5vbi1wYXJzZWRdIEBbNS0yNV0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAg
IFsnY29sb3InOidpbXBvcnQtZXJyb3ItYmxvY2snIG5vbi1wYXJzZWRdIEBbNS0zMV0gYWN0aXZl
Cit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidtZWRpYS1lbXB0eScgbm9uLXBh
cnNlZF0gQFs1LTI0XSBhY3RpdmUKK30KK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydjb2xvcic6
J3BhZ2UtZXJyb3InIG5vbi1wYXJzZWRdIEBbNS0yM10gYWN0aXZlCit9Citib2R5OiBbcmVndWxh
cl0geworICAgIFsnY29sb3InOidwYWdlLWJsb2NrJyBub24tcGFyc2VkXSBAWzUtMjNdIGFjdGl2
ZQorfQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0
eWxlc2hlZXQtZXJyb3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNl
LXN0eWxlc2hlZXQtZXJyb3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyZWRmMGI0MTk2MWRkZWQwZDMw
ZjE4MjEyYWNiODE3YWI1NjI0MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJvcnMuaHRtbApAQCAtMCwwICsxLDEwNSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIp
OworCisgICAgQ1NTQWdlbnQuZ2V0QWxsU3R5bGVTaGVldHMoaGVhZGVyc0NhbGxiYWNrKTsKKwor
ICAgIGZ1bmN0aW9uIGhlYWRlcnNDYWxsYmFjayhlcnJvciwgaGVhZGVycykKKyAgICB7CisgICAg
ICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkVy
cm9yIGxvYWRpbmcgc3R5bGVzaGVldCBoZWFkZXJzOiAiICsgZXJyb3IpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVycy5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgIENTU0FnZW50LmdldFN0eWxlU2hlZXQoaGVhZGVyc1tpXS5zdHlsZVNoZWV0
SWQsIHN0eWxlU2hlZXRDYWxsYmFjay5iaW5kKG51bGwsIGkgPT09IGhlYWRlcnMubGVuZ3RoIC0g
MSkpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRDYWxsYmFjayhpc0xhc3QsIGVy
cm9yLCBzdHlsZVNoZWV0KQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXJyb3IgbG9hZGluZyBzdHlsZXNoZWV0IGJvZHk6
ICIgKyBlcnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5k
dW1wUnVsZXNBcnJheShzdHlsZVNoZWV0LnJ1bGVzKTsKKyAgICAgICAgaWYgKGlzTGFzdCkKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfQorfQorCis8L3Nj
cmlwdD4KKworPHN0eWxlPgorYm9keTpiZWZvcmUgeworICAgIGNvbG9yOiBzdHlsZS1wcmVjZWRl
cy1pbXBvcnQ7Cit9CisKK0BpbXBvcnQgdXJsKGZvbyk7CisKK2JvZHk6YWZ0ZXIgeworICAgIGNv
bG9yOiBzdHlsZS1mb2xsb3dzLWltcG9ydDsKK30KKzwvc3R5bGU+Cis8c3R5bGU+Citib2R5IHsK
KyAgICBjb2xvcjogYmxhY2s7Cit9CisKK2ZvbnQtZmFtaWx5OiBzZXJpZjsKK30KKworYm9keTpo
b3ZlciB7CisgICAgY29sb3I6ICNDREU7Cit9CisKK2JvZHkgeworICAgIGJhY2tncm91bmQtY29s
b3I6IGJyb2tlbi1kZWNsYXJhdGlvbjsKK30KKworPC9zdHlsZT4KKzxzdHlsZT4KK0BpbXBvcnQg
MTI7Citib2R5IHsKKyAgICBjb2xvcjogaW1wb3J0LWVycm9yOworfQorPC9zdHlsZT4KKzxzdHls
ZT4KK0BpbXBvcnQgMTIge30KK2JvZHkgeworICAgIGNvbG9yOiBpbXBvcnQtZXJyb3ItYmxvY2s7
Cit9Cis8L3N0eWxlPgorPHN0eWxlPgorQG1lZGlhIDsKK2JvZHkgeworICAgIGNvbG9yOiBtZWRp
YS1lbXB0eTsKK30KKzwvc3R5bGU+Cis8c3R5bGU+CitAcGFnZSA7Citib2R5IHsKKyAgICBjb2xv
cjogcGFnZS1lcnJvcjsKK30KKzwvc3R5bGU+Cis8c3R5bGU+CitAcGFnZSB7fQorYm9keSB7Cisg
ICAgY29sb3I6IHBhZ2UtYmxvY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgQ1NTUGFyc2VyIHByb2R1Y2VzIHNvdXJj
ZSBkYXRhIGNvbnNpc3RlbnQgd2l0aCBDU1NPTSB3aGVuIHBhcnNpbmcgYnJva2VuIHN0eWxlc2hl
ZXRzLiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgy
NDYiPkJ1ZyA5ODI0NjwvYT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAppbmRleCA5MGE1NzkxNmIzMGI5YzU5
YTQ4MGI5ZDc5NmU1M2M5N2Y1OTUyOGNlLi45MGJjNDQwOGE4MjBhM2ZlMWM2M2NlNWU2ZjE4MGM0
YmMzYTZhODNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxl
cy1uZXctQVBJLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMt
bmV3LUFQSS5odG1sCkBAIC0yNSwyNiArMjUsMjYgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCI9PT0gTWF0Y2hlZCBydWxlcyBmb3IgYm9keSA9PT0iKTsKLSAgICAg
ICAgICAgIGR1bXBSdWxlTWF0Y2hlc0FycmF5KHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXMpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMubWF0Y2hl
ZENTU1J1bGVzKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBQc2V1ZG8gcnVsZXMgZm9y
IGJvZHkgPT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5wc2V1
ZG9FbGVtZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJQc2V1ZG9JZD0iICsgc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnBzZXVkb0lk
KTsKLSAgICAgICAgICAgICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMucHNldWRvRWxl
bWVudHNbaV0ubWF0Y2hlcyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVs
ZU1hdGNoZXNBcnJheShzdHlsZXMucHNldWRvRWxlbWVudHNbaV0ubWF0Y2hlcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gSW5oZXJpdGVkIHN0eWxlcyBmb3Ig
Ym9keSA9PT0iKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmluaGVy
aXRlZC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJMZXZlbD0iICsgKGkgKyAxKSk7Ci0gICAgICAgICAgICAgICAgZHVtcFN0eWxlKHN0eWxl
cy5pbmhlcml0ZWRbaV0uaW5saW5lU3R5bGUpOwotICAgICAgICAgICAgICAgIGR1bXBSdWxlTWF0
Y2hlc0FycmF5KHN0eWxlcy5pbmhlcml0ZWRbaV0ubWF0Y2hlZENTU1J1bGVzKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShzdHlsZXMuaW5oZXJpdGVkW2ldLmlubGlu
ZVN0eWxlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlTWF0Y2hlc0Fy
cmF5KHN0eWxlcy5pbmhlcml0ZWRbaV0ubWF0Y2hlZENTU1J1bGVzKTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBJbmxpbmUgc3R5bGUgZm9yIGJvZHkgPT09Iik7
Ci0gICAgICAgICAgICBkdW1wU3R5bGUoc3R5bGVzLmlubGluZVN0eWxlKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKHN0eWxlcy5pbmxpbmVTdHlsZSk7CiAgICAgICAgICAg
ICB0ZXN0X2ZvcmNlZFN0YXRlKCk7CiAgICAgICAgIH0KIApAQCAtMTAyLDcgKzEwMiw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbiBtYXRjaGVkQ2FsbGJhY2soZXJyb3IsIG1h
dGNoZWRSdWxlcykKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIj09PSBCT0RZIHdpdGggZm9yY2VkIDpob3ZlciA9PT0iKTsKLSAgICAgICAgICAgIGR1bXBS
dWxlTWF0Y2hlc0FycmF5KG1hdGNoZWRSdWxlcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBSdWxlTWF0Y2hlc0FycmF5KG1hdGNoZWRSdWxlcyk7CiAgICAgICAgICAgICBDU1NBZ2Vu
dC5mb3JjZVBzZXVkb1N0YXRlKGJvZHlJZCwgWyJob3ZlciJdLCB0ZXN0X3RhYmxlU3R5bGVzKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQXR0cmlidXRlcyBzdHlsZSBm
b3IgdGFibGUgPT09Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUoYXR0cmlidXRlc1N0eWxlKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKGF0dHJpYnV0ZXNTdHlsZSk7CiAg
ICAgICAgICAgICB0ZXN0X3N0eWxlU2hlZXRzKCk7CiAgICAgICAgIH0KIApAQCAtMjA4LDcgKzIw
OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIj09PSBNYXRjaGVkIHJ1bGVzIGFmdGVyIHJ1bGUgYWRkZWQgPT09Iik7Ci0gICAgICAgICAg
ICBkdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkQ1NTUnVsZXMpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkQ1NTUnVsZXMpOwogICAgICAg
ICAgICAgdGVzdF9kaXNhYmxlUHJvcGVydHkoKTsKICAgICAgICAgfQogCkBAIC0yNDMsNyArMjQz
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiPT09IEFmdGVyIHByb3BlcnR5IG1hbmlwdWxhdGlvbnMgPT09Iik7Ci0gICAgICAgICAgICBk
dW1wU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUoc3R5
bGUpOwogICAgICAgICAgICAgdGVzdF9lbmFibGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkKTsKICAg
ICAgICAgfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEFmdGVyIHByb3BlcnR5IGVuYWJsZWQgPT09
Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wU3R5bGUoc3R5bGUpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKICAgICAgICAgfQogCkBAIC0zMDksODUgKzMwOSw2IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICBDU1NBZ2VudC50b2dnbGVQcm9wZXJ0eShzdHlsZUlkLCA4LCBmYWxzZSwgZGlk
RW5hYmxlUHJvcGVydHkpOwogICAgIH0KIAotICAgIC8vIERhdGEgZHVtcGluZwotCi0gICAgY29u
c3QgaW5kZW50ID0gIiAgICAiOwotCi0gICAgZnVuY3Rpb24gZHVtcFJ1bGVzQXJyYXkocnVsZXMs
IGN1cnJlbnRJbmRlbnQpCi0gICAgewotICAgICAgICBpZiAoIXJ1bGVzKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAg
IGR1bXBSdWxlKHJ1bGVzW2ldLCBjdXJyZW50SW5kZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBkdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVzLCBjdXJyZW50SW5kZW50KQotICAgIHsKLSAg
ICAgICAgaWYgKCFtYXRjaGVzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjdXJyZW50
SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtYXRjaGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcFJ1bGUobWF0Y2hlc1tpXS5y
dWxlLCBjdXJyZW50SW5kZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkdW1wUnVsZShydWxl
LCBjdXJyZW50SW5kZW50KQotICAgIHsKLSAgICAgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJ
bmRlbnQgfHwgIiI7Ci0KLSAgICAgICAgaWYgKCFydWxlLnR5cGUgfHwgcnVsZS50eXBlID09PSAi
c3R5bGUiKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICI6IFsiICsgcnVsZS5vcmlnaW4gKyAiXSB7
Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUocnVsZS5zdHlsZSwgY3VycmVudEluZGVudCArIGlu
ZGVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50
ICsgIn0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChy
dWxlLnR5cGUgPT09ICJtZWRpYSIpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KGN1cnJlbnRJbmRlbnQgKyAiQG1lZGlhICIgKyBydWxlLm1lZGlhVGV4dCArICIgeyIpOwot
ICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkocnVsZS5jaGlsZFJ1bGVzLCBjdXJyZW50SW5kZW50
ICsgaW5kZW50KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJ
bmRlbnQgKyAifSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHJ1bGUudHlwZSA9PT0gImltcG9ydCIpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQGltcG9ydDogaGVhZGVyPSIgKyBJbnNwZWN0b3JU
ZXN0LnJhbmdlVGV4dChydWxlLmhlYWRlclJhbmdlKSArICIsIGJvZHk9IiArIEluc3BlY3RvclRl
c3QucmFuZ2VUZXh0KHJ1bGUuYm9keVJhbmdlKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAocnVsZS50eXBlID09PSAicGFnZSIgfHwgcnVsZS50eXBlID09
PSAiZm9udC1mYWNlIikgewotICAgICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gInBhZ2UiKQot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyBy
dWxlLnNlbGVjdG9yTGlzdC50ZXh0ICsgIiB7Iik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJAIiArIHJ1
bGUudHlwZSArICIgIiArIChydWxlLnNlbGVjdG9yTGlzdC50ZXh0ID8gcnVsZS5zZWxlY3Rvckxp
c3QudGV4dCArICIgIiA6ICIiKSAgKyAieyIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHJ1bGUu
c3R5bGUsIGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAocnVsZS50eXBlID09PSAiY2hhcnNldCIpIHsKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJAY2hhcnNldCIpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3Vy
cmVudEluZGVudCArICJbVU5LTk9XTiBSVUxFXTogaGVhZGVyPSIgKyBJbnNwZWN0b3JUZXN0LnJh
bmdlVGV4dChydWxlLmhlYWRlclJhbmdlKSArICIsIGJvZHk9IiArIEluc3BlY3RvclRlc3QucmFu
Z2VUZXh0KHJ1bGUuYm9keVJhbmdlKSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVtcFN0eWxl
KHN0eWxlLCBjdXJyZW50SW5kZW50KQotICAgIHsKLSAgICAgICAgY3VycmVudEluZGVudCA9IGN1
cnJlbnRJbmRlbnQgfHwgIiI7Ci0gICAgICAgIGlmICghc3R5bGUpIHsKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW05PIFNUWUxFXSIpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c3R5bGUuY3NzUHJvcGVydGllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHByb3Bl
cnR5ID0gc3R5bGUuY3NzUHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5z
dGF0dXMgIT09ICJkaXNhYmxlZCIpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoY3VycmVudEluZGVudCArICJbJyIgKyBwcm9wZXJ0eS5uYW1lICsgIic6JyIgKyBwcm9w
ZXJ0eS52YWx1ZSArICInIiArIChwcm9wZXJ0eS5wcmlvcml0eSA9PT0gImltcG9ydGFudCIgPyAi
IGlzLWltcG9ydGFudCIgOiAiIikgKyAoKCJwYXJzZWRPayIgaW4gcHJvcGVydHkpID8gIiBub24t
cGFyc2VkIiA6ICIiKSArIl0gQCIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChwcm9wZXJ0eS5y
YW5nZSkgKyAiICIgKyAocHJvcGVydHkuc3RhdHVzIHx8ICJzdHlsZSIpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgIlt0ZXh0PSciICsgcHJvcGVydHkudGV4dCArICInXSAiICsgcHJvcGVydHkuc3RhdHVz
KTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGZ1bmN0aW9uIGxvYWRBbmREdW1wU3R5bGVTaGVl
dChzdHlsZVNoZWV0SWQsIGNvbnRpbnVhdGlvbiwgZXJyb3IpCiAgICAgewogICAgICAgICBpZiAo
ZXJyb3IpIHsKQEAgLTQwMyw3ICszMjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTdHlsZVNoZWV0OiAnIiArIHN0eWxlU2hlZXQudGV4
dCArICInIik7Ci0gICAgICAgICAgICBkdW1wUnVsZXNBcnJheShzdHlsZVNoZWV0LnJ1bGVzKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVzQXJyYXkoc3R5bGVTaGVldC5ydWxl
cyk7CiAgICAgICAgICAgICBpZiAoY29udGludWF0aW9uKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVhdGlvbihzdHlsZVNoZWV0KTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167330</attachid>
            <date>2012-10-05 08:20:27 -0700</date>
            <delta_ts>2012-10-05 08:41:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98246-20121005191934.patch</filename>
            <type>text/plain</type>
            <size>17876</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2EzMDUxZTM4MjFmOWI5
Y2I2MTM0ZTdmOGYzODRlYWU0ZTUxZWE5Yy4uMTYwNjMzYTNmMmU0ZDU2N2U2YmUzODY5ODUzMDY2
MDQ2ZWNkOGIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEwLTA1ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW1N0eWxlc10gVW5hYmxlIHRvIGVkaXQgcHJvcGVydGllcyBpbiBicm9rZW4gc3R5bGVz
aGVldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4
MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUG9w
IHNvdXJjZSBkYXRhIGZvciBpbnZhbGlkIHJ1bGVzIG9mZiB0aGUgc3RhY2sgd2hlbmV2ZXIgd2Ug
aGF2ZSBjb25zZWN1dGl2ZSBDU1NQYXJzZXI6Om1hcmtSdWxlSGVhZGVyU3RhcnQoKSBpbnZvY2F0
aW9ucy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQt
ZXJyb3JzLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwb3BSdWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6Om1hcmtSdWxlSGVhZGVyU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpt
YXJrUnVsZUJvZHlTdGFydCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAo
Q1NTUGFyc2VyKToKKwogMjAxMi0xMC0wNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgRml4IHN1Yi1maWVsZCB3aWR0aCB0byB0aGUgbWF4aW11bSB3aWR0aCBv
ZiBhIHBsYWNlaG9sZGVyIGFuZCB0aGUgbWF4aW11bSB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcAppbmRleCBiZTg5NjkwZjg4ZjY5YmQzY2EyMmJjMzdiYjk0ZDYzYjNhOWM3NzBlLi5kMzU0
YzRkYTA0MzFiZDFmZTY2NzYzOWIzNzIxMTc5NzNmMDM4ZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcApAQCAtOTk4Niw2ICs5OTg2LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gQ1NTUGFyc2VyOjpwb3BSdWxlRGF0YSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgQVNT
RVJUKCFtX2N1cnJlbnRSdWxlRGF0YVN0YWNrLT5pc0VtcHR5KCkpOworICAgIG1fY3VycmVudFJ1
bGVEYXRhLmNsZWFyKCk7CiAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBkYXRhID0gbV9j
dXJyZW50UnVsZURhdGFTdGFjay0+bGFzdCgpOwogICAgIG1fY3VycmVudFJ1bGVEYXRhU3RhY2st
PnJlbW92ZUxhc3QoKTsKICAgICByZXR1cm4gZGF0YS5yZWxlYXNlKCk7CkBAIC0xMDI5MCw4ICsx
MDI5MSwxNCBAQCB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVIZWFkZXJTdGFydChDU1NSdWxlU291
cmNlRGF0YTo6VHlwZSBydWxlVHlwZSkKIHsKICAgICBpZiAoIWlzRXh0cmFjdGluZ1NvdXJjZURh
dGEoKSkKICAgICAgICAgcmV0dXJuOworCisgICAgLy8gUG9wIG9mZiBkYXRhIGZvciBhIHByZXZp
b3VzIGludmFsaWQgcnVsZS4KKyAgICBpZiAobV9jdXJyZW50UnVsZURhdGEpCisgICAgICAgIG1f
Y3VycmVudFJ1bGVEYXRhU3RhY2stPnJlbW92ZUxhc3QoKTsKKwogICAgIFJlZlB0cjxDU1NSdWxl
U291cmNlRGF0YT4gZGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUocnVsZVR5cGUpOwog
ICAgIGRhdGEtPnJ1bGVIZWFkZXJSYW5nZS5zdGFydCA9IHRva2VuU3RhcnRPZmZzZXQoKTsKKyAg
ICBtX2N1cnJlbnRSdWxlRGF0YSA9IGRhdGE7CiAgICAgbV9jdXJyZW50UnVsZURhdGFTdGFjay0+
YXBwZW5kKGRhdGEucmVsZWFzZSgpKTsKIH0KIApAQCAtMTAzMjUsNiArMTAzMzIsNyBAQCB2b2lk
IENTU1BhcnNlcjo6bWFya1J1bGVCb2R5U3RhcnQoKQogewogICAgIGlmICghaXNFeHRyYWN0aW5n
U291cmNlRGF0YSgpKQogICAgICAgICByZXR1cm47CisgICAgbV9jdXJyZW50UnVsZURhdGEuY2xl
YXIoKTsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSB0b2tlblN0YXJ0T2Zmc2V0KCk7CiAgICAgaWYg
KHRva2VuU3RhcnRDaGFyKCkgPT0gJ3snKQogICAgICAgICArK29mZnNldDsgLy8gU2tpcCB0aGUg
cnVsZSBib2R5IG9wZW5pbmcgYnJhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggZTMzMDkw
ZjgzMjZmYTY0YjNjMmQzYWViODNlYjQ2YjM0ZDMwNmJkOS4uZDgwNGY3ZTQ1OTVmOGI3ZWZmYWE3
MWM0ODhlYjdlZDgyNzg0ZjQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMzQ0LDYgKzM0
NCw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgbV9wYXJzZWRUZXh0UHJlZml4TGVuZ3RoOwogICAg
IFNvdXJjZVJhbmdlIG1fcHJvcGVydHlSYW5nZTsKICAgICBPd25QdHI8UnVsZVNvdXJjZURhdGFM
aXN0PiBtX2N1cnJlbnRSdWxlRGF0YVN0YWNrOworICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gbV9jdXJyZW50UnVsZURhdGE7CiAgICAgUnVsZVNvdXJjZURhdGFMaXN0KiBtX3J1bGVTb3Vy
Y2VEYXRhUmVzdWx0OwogCiAgICAgdm9pZCBmaXhVbnBhcnNlZFByb3BlcnR5UmFuZ2VzKENTU1J1
bGVTb3VyY2VEYXRhKik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2ZlMzVkNzRiM2JiYjlkYWQ4ZmJjZjY1NjlmZDg4NjA0
N2YyYWNjYS4uYTYwMGI3MmY3NTQxZWRiOTRmYWE3ZDNmOTJlYjk0YzdkYWQ3YWViNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTA1ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW1N0eWxlc10gVW5hYmxlIHRv
IGVkaXQgcHJvcGVydGllcyBpbiBicm9rZW4gc3R5bGVzaGVldHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MjQ2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBzbWFsbCByZWZhY3RvcmluZyB0byBzaGFy
ZSB0aGUgQ1NTIHN0eWxlIGRhdGEgZHVtcGluZyBjb2RlIGFtb25nIHRlc3RzLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRp
YWxpemVfRWxlbWVudFRlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5
bGVzaGVldC1lcnJvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
c3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbDoKKwogMjAxMi0xMC0wNSAgQ3NhYmEg
T3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gRW5hYmxlIENT
UyBjb21wb3NpdGluZyBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwppbmRleCAzZDRlNzRmMTFlZGE0YWRhZDQ4YWQ5ODgx
ZTE4Mjc0N2RlYTg2MzQ2Li4yODE3YjUxNGE0YjBmNzVkN2MxY2M3YzYyNmUwN2Q1ZWMwZDYwNGRk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10
ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRl
c3QuanMKQEAgLTQ4Myw2ICs0ODMsODMgQEAgSW5zcGVjdG9yVGVzdC5nZW5lcmF0ZVVuZG9UZXN0
ID0gZnVuY3Rpb24odGVzdEJvZHkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorY29uc3QgaW5k
ZW50ID0gIiAgICAiOworCitJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5ID0gZnVuY3Rpb24o
cnVsZXMsIGN1cnJlbnRJbmRlbnQpCit7CisgICAgaWYgKCFydWxlcykKKyAgICAgICAgcmV0dXJu
OworICAgIGN1cnJlbnRJbmRlbnQgPSBjdXJyZW50SW5kZW50IHx8ICIiOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyArK2kpCisgICAgICAgIEluc3BlY3RvclRlc3QuZHVt
cFJ1bGUocnVsZXNbaV0sIGN1cnJlbnRJbmRlbnQpOworfQorCitJbnNwZWN0b3JUZXN0LmR1bXBS
dWxlTWF0Y2hlc0FycmF5ID0gZnVuY3Rpb24obWF0Y2hlcywgY3VycmVudEluZGVudCkKK3sKKyAg
ICBpZiAoIW1hdGNoZXMpCisgICAgICAgIHJldHVybjsKKyAgICBjdXJyZW50SW5kZW50ID0gY3Vy
cmVudEluZGVudCB8fCAiIjsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1hdGNoZXMubGVuZ3Ro
OyArK2kpCisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGUobWF0Y2hlc1tpXS5ydWxlLCBj
dXJyZW50SW5kZW50KTsKK30KKworSW5zcGVjdG9yVGVzdC5kdW1wUnVsZSA9IGZ1bmN0aW9uKHJ1
bGUsIGN1cnJlbnRJbmRlbnQpCit7CisgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQg
fHwgIiI7CisKKyAgICBpZiAoIXJ1bGUudHlwZSB8fCBydWxlLnR5cGUgPT09ICJzdHlsZSIpIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArIHJ1bGUuc2Vs
ZWN0b3JMaXN0LnRleHQgKyAiOiBbIiArIHJ1bGUub3JpZ2luICsgIl0geyIpOworICAgICAgICBJ
bnNwZWN0b3JUZXN0LmR1bXBTdHlsZShydWxlLnN0eWxlLCBjdXJyZW50SW5kZW50ICsgaW5kZW50
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAocnVsZS50eXBlID09PSAibWVkaWEi
KSB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQG1l
ZGlhICIgKyBydWxlLm1lZGlhVGV4dCArICIgeyIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBSdWxlc0FycmF5KHJ1bGUuY2hpbGRSdWxlcywgY3VycmVudEluZGVudCArIGluZGVudCk7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAifSIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHJ1bGUudHlwZSA9PT0gImltcG9ydCIpIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJAaW1wb3J0
OiBoZWFkZXI9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUuaGVhZGVyUmFuZ2UpICsg
IiwgYm9keT0iICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocnVsZS5ib2R5UmFuZ2UpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChydWxlLnR5cGUgPT09ICJwYWdlIiB8fCBy
dWxlLnR5cGUgPT09ICJmb250LWZhY2UiKSB7CisgICAgICAgIGlmIChydWxlLnR5cGUgPT09ICJw
YWdlIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQg
KyBydWxlLnNlbGVjdG9yTGlzdC50ZXh0ICsgIiB7Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQCIgKyBydWxlLnR5
cGUgKyAiICIgKyAocnVsZS5zZWxlY3Rvckxpc3QudGV4dCA/IHJ1bGUuc2VsZWN0b3JMaXN0LnRl
eHQgKyAiICIgOiAiIikgICsgInsiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUo
cnVsZS5zdHlsZSwgY3VycmVudEluZGVudCArIGluZGVudCk7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAifSIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaWYgKHJ1bGUudHlwZSA9PT0gImNoYXJzZXQiKSB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJAY2hhcnNldCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJbVU5LTk9XTiBSVUxF
XTogaGVhZGVyPSIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChydWxlLmhlYWRlclJhbmdlKSAr
ICIsIGJvZHk9IiArIEluc3BlY3RvclRlc3QucmFuZ2VUZXh0KHJ1bGUuYm9keVJhbmdlKSk7Cit9
CisKK0luc3BlY3RvclRlc3QuZHVtcFN0eWxlID0gZnVuY3Rpb24oc3R5bGUsIGN1cnJlbnRJbmRl
bnQpCit7CisgICAgY3VycmVudEluZGVudCA9IGN1cnJlbnRJbmRlbnQgfHwgIiI7CisgICAgaWYg
KCFzdHlsZSkgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5kZW50
ICsgIltOTyBTVFlMRV0iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHN0eWxlLmNzc1Byb3BlcnRpZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFy
IHByb3BlcnR5ID0gc3R5bGUuY3NzUHJvcGVydGllc1tpXTsKKyAgICAgICAgaWYgKHByb3BlcnR5
LnN0YXR1cyAhPT0gImRpc2FibGVkIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KGN1cnJlbnRJbmRlbnQgKyAiWyciICsgcHJvcGVydHkubmFtZSArICInOiciICsgcHJvcGVy
dHkudmFsdWUgKyAiJyIgKyAocHJvcGVydHkucHJpb3JpdHkgPT09ICJpbXBvcnRhbnQiID8gIiBp
cy1pbXBvcnRhbnQiIDogIiIpICsgKCgicGFyc2VkT2siIGluIHByb3BlcnR5KSA/ICIgbm9uLXBh
cnNlZCIgOiAiIikgKyJdIEAiICsgSW5zcGVjdG9yVGVzdC5yYW5nZVRleHQocHJvcGVydHkucmFu
Z2UpICsgIiAiICsgKHByb3BlcnR5LnN0YXR1cyB8fCAic3R5bGUiKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW3Rl
eHQ9JyIgKyBwcm9wZXJ0eS50ZXh0ICsgIiddICIgKyBwcm9wZXJ0eS5zdGF0dXMpOworICAgIH0K
K30KKwogfTsKIAogZnVuY3Rpb24gZHVtcEluc3BlY3RvckhpZ2hsaWdodFJlY3RzKCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJv
cnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wYXJzZS1zdHls
ZXNoZWV0LWVycm9ycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDE4YmY4YzQ0NWVkNDIzNWU0
NGIwYTE3ZWFmOWE1ZGQ4ZmZmZjlkMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5bGVzaGVldC1lcnJvcnMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMjQgQEAKK1Rlc3RzIHRoYXQgQ1NTUGFyc2VyIHByb2R1Y2VzIHNvdXJjZSBkYXRhIGNv
bnNpc3RlbnQgd2l0aCBDU1NPTSB3aGVuIHBhcnNpbmcgYnJva2VuIHN0eWxlc2hlZXRzLiBCdWcg
OTgyNDYKKworYm9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2NvbG9yJzonYmxhY2snXSBAWzUtMThd
IGFjdGl2ZQorfQorYm9keTogW3JlZ3VsYXJdIHsKKyAgICBbJ2JhY2tncm91bmQtY29sb3InOidi
cm9rZW4tZGVjbGFyYXRpb24nIG5vbi1wYXJzZWRdIEBbNS00Ml0gYWN0aXZlCit9Citib2R5OiBb
cmVndWxhcl0geworICAgIFsnY29sb3InOidpbXBvcnQtZXJyb3InIG5vbi1wYXJzZWRdIEBbNS0y
NV0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidpbXBvcnQtZXJy
b3ItYmxvY2snIG5vbi1wYXJzZWRdIEBbNS0zMV0gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0g
eworICAgIFsnY29sb3InOidtZWRpYS1lbXB0eScgbm9uLXBhcnNlZF0gQFs1LTI0XSBhY3RpdmUK
K30KK2JvZHk6IFtyZWd1bGFyXSB7CisgICAgWydjb2xvcic6J3BhZ2UtZXJyb3InIG5vbi1wYXJz
ZWRdIEBbNS0yM10gYWN0aXZlCit9Citib2R5OiBbcmVndWxhcl0geworICAgIFsnY29sb3InOidw
YWdlLWJsb2NrJyBub24tcGFyc2VkXSBAWzUtMjNdIGFjdGl2ZQorfQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3BhcnNlLXN0eWxlc2hlZXQtZXJyb3JzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMzVhZjcyNzZlODE4NjA2NzQ4M2IyMTY0NDdhNTNhYmIzZDkzNDIxYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcGFyc2Utc3R5
bGVzaGVldC1lcnJvcnMuaHRtbApAQCAtMCwwICsxLDk0IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAg
IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisKKyAgICBDU1NBZ2VudC5nZXRB
bGxTdHlsZVNoZWV0cyhoZWFkZXJzQ2FsbGJhY2spOworCisgICAgZnVuY3Rpb24gaGVhZGVyc0Nh
bGxiYWNrKGVycm9yLCBoZWFkZXJzKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yKSB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRXJyb3IgbG9hZGluZyBzdHlsZXNoZWV0
IGhlYWRlcnM6ICIgKyBlcnJvcik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgQ1NTQWdlbnQu
Z2V0U3R5bGVTaGVldChoZWFkZXJzW2ldLnN0eWxlU2hlZXRJZCwgc3R5bGVTaGVldENhbGxiYWNr
LmJpbmQobnVsbCwgaSA9PT0gaGVhZGVycy5sZW5ndGggLSAxKSk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gc3R5bGVTaGVldENhbGxiYWNrKGlzTGFzdCwgZXJyb3IsIHN0eWxlU2hlZXQpCisgICAg
eworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJFcnJvciBsb2FkaW5nIHN0eWxlc2hlZXQgYm9keTogIiArIGVycm9yKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlc0FycmF5KHN0eWxlU2hl
ZXQucnVsZXMpOworICAgICAgICBpZiAoaXNMYXN0KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9Cit9CisKKzwvc2NyaXB0PgorCis8c3R5bGU+Citib2R5
IHsKKyAgICBjb2xvcjogYmxhY2s7Cit9CisKK2ZvbnQtZmFtaWx5OiBzZXJpZjsKK30KKworYm9k
eTpob3ZlciB7CisgICAgY29sb3I6ICNDREU7Cit9CisKK2JvZHkgeworICAgIGJhY2tncm91bmQt
Y29sb3I6IGJyb2tlbi1kZWNsYXJhdGlvbjsKK30KKworPC9zdHlsZT4KKzxzdHlsZT4KK0BpbXBv
cnQgMTI7Citib2R5IHsKKyAgICBjb2xvcjogaW1wb3J0LWVycm9yOworfQorPC9zdHlsZT4KKzxz
dHlsZT4KK0BpbXBvcnQgMTIge30KK2JvZHkgeworICAgIGNvbG9yOiBpbXBvcnQtZXJyb3ItYmxv
Y2s7Cit9Cis8L3N0eWxlPgorPHN0eWxlPgorQG1lZGlhIDsKK2JvZHkgeworICAgIGNvbG9yOiBt
ZWRpYS1lbXB0eTsKK30KKzwvc3R5bGU+Cis8c3R5bGU+CitAcGFnZSA7Citib2R5IHsKKyAgICBj
b2xvcjogcGFnZS1lcnJvcjsKK30KKzwvc3R5bGU+Cis8c3R5bGU+CitAcGFnZSB7fQorYm9keSB7
CisgICAgY29sb3I6IHBhZ2UtYmxvY2s7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keSBv
bmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgQ1NTUGFyc2VyIHByb2R1Y2VzIHNv
dXJjZSBkYXRhIGNvbnNpc3RlbnQgd2l0aCBDU1NPTSB3aGVuIHBhcnNpbmcgYnJva2VuIHN0eWxl
c2hlZXRzLiA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTgyNDYiPkJ1ZyA5ODI0NjwvYT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLW5ldy1BUEkuaHRtbAppbmRleCA5MGE1NzkxNmIzMGI5
YzU5YTQ4MGI5ZDc5NmU1M2M5N2Y1OTUyOGNlLi45MGJjNDQwOGE4MjBhM2ZlMWM2M2NlNWU2ZjE4
MGM0YmMzYTZhODNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0
eWxlcy1uZXctQVBJLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHls
ZXMtbmV3LUFQSS5odG1sCkBAIC0yNSwyNiArMjUsMjYgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gTWF0Y2hlZCBydWxlcyBmb3IgYm9keSA9PT0iKTsKLSAg
ICAgICAgICAgIGR1bXBSdWxlTWF0Y2hlc0FycmF5KHN0eWxlcy5tYXRjaGVkQ1NTUnVsZXMpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMubWF0
Y2hlZENTU1J1bGVzKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIp
OwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBQc2V1ZG8gcnVsZXMg
Zm9yIGJvZHkgPT09Iik7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlcy5w
c2V1ZG9FbGVtZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KCJQc2V1ZG9JZD0iICsgc3R5bGVzLnBzZXVkb0VsZW1lbnRzW2ldLnBzZXVk
b0lkKTsKLSAgICAgICAgICAgICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShzdHlsZXMucHNldWRv
RWxlbWVudHNbaV0ubWF0Y2hlcyk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
UnVsZU1hdGNoZXNBcnJheShzdHlsZXMucHNldWRvRWxlbWVudHNbaV0ubWF0Y2hlcyk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gSW5oZXJpdGVkIHN0eWxlcyBm
b3IgYm9keSA9PT0iKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmlu
aGVyaXRlZC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJMZXZlbD0iICsgKGkgKyAxKSk7Ci0gICAgICAgICAgICAgICAgZHVtcFN0eWxlKHN0
eWxlcy5pbmhlcml0ZWRbaV0uaW5saW5lU3R5bGUpOwotICAgICAgICAgICAgICAgIGR1bXBSdWxl
TWF0Y2hlc0FycmF5KHN0eWxlcy5pbmhlcml0ZWRbaV0ubWF0Y2hlZENTU1J1bGVzKTsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTdHlsZShzdHlsZXMuaW5oZXJpdGVkW2ldLmlu
bGluZVN0eWxlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBSdWxlTWF0Y2hl
c0FycmF5KHN0eWxlcy5pbmhlcml0ZWRbaV0ubWF0Y2hlZENTU1J1bGVzKTsKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBJbmxpbmUgc3R5bGUgZm9yIGJvZHkgPT09
Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUoc3R5bGVzLmlubGluZVN0eWxlKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKHN0eWxlcy5pbmxpbmVTdHlsZSk7CiAgICAgICAg
ICAgICB0ZXN0X2ZvcmNlZFN0YXRlKCk7CiAgICAgICAgIH0KIApAQCAtMTAyLDcgKzEwMiw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBmdW5jdGlvbiBtYXRjaGVkQ2FsbGJhY2soZXJyb3Is
IG1hdGNoZWRSdWxlcykKICAgICAgICAgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIj09PSBCT0RZIHdpdGggZm9yY2VkIDpob3ZlciA9PT0iKTsKLSAgICAgICAgICAgIGR1
bXBSdWxlTWF0Y2hlc0FycmF5KG1hdGNoZWRSdWxlcyk7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmR1bXBSdWxlTWF0Y2hlc0FycmF5KG1hdGNoZWRSdWxlcyk7CiAgICAgICAgICAgICBDU1NB
Z2VudC5mb3JjZVBzZXVkb1N0YXRlKGJvZHlJZCwgWyJob3ZlciJdLCB0ZXN0X3RhYmxlU3R5bGVz
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQXR0cmlidXRlcyBzdHls
ZSBmb3IgdGFibGUgPT09Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUoYXR0cmlidXRlc1N0eWxl
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFN0eWxlKGF0dHJpYnV0ZXNTdHlsZSk7
CiAgICAgICAgICAgICB0ZXN0X3N0eWxlU2hlZXRzKCk7CiAgICAgICAgIH0KIApAQCAtMjA4LDcg
KzIwOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIj09PSBNYXRjaGVkIHJ1bGVzIGFmdGVyIHJ1bGUgYWRkZWQgPT09Iik7Ci0gICAgICAg
ICAgICBkdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkQ1NTUnVsZXMpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVkQ1NTUnVsZXMpOwogICAg
ICAgICAgICAgdGVzdF9kaXNhYmxlUHJvcGVydHkoKTsKICAgICAgICAgfQogCkBAIC0yNDMsNyAr
MjQzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiPT09IEFmdGVyIHByb3BlcnR5IG1hbmlwdWxhdGlvbnMgPT09Iik7Ci0gICAgICAgICAg
ICBkdW1wU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU3R5bGUo
c3R5bGUpOwogICAgICAgICAgICAgdGVzdF9lbmFibGVQcm9wZXJ0eShzdHlsZS5zdHlsZUlkKTsK
ICAgICAgICAgfQogCkBAIC0zMDEsNyArMzAxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IEFmdGVyIHByb3BlcnR5IGVuYWJsZWQg
PT09Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wU3R5bGUoc3R5bGUpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKICAgICAgICAgfQogCkBAIC0zMDksODUgKzMwOSw2IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICBDU1NBZ2VudC50b2dnbGVQcm9wZXJ0eShzdHlsZUlkLCA4LCBmYWxzZSwg
ZGlkRW5hYmxlUHJvcGVydHkpOwogICAgIH0KIAotICAgIC8vIERhdGEgZHVtcGluZwotCi0gICAg
Y29uc3QgaW5kZW50ID0gIiAgICAiOwotCi0gICAgZnVuY3Rpb24gZHVtcFJ1bGVzQXJyYXkocnVs
ZXMsIGN1cnJlbnRJbmRlbnQpCi0gICAgewotICAgICAgICBpZiAoIXJ1bGVzKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBjdXJyZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7ICsraSkKLSAgICAgICAg
ICAgIGR1bXBSdWxlKHJ1bGVzW2ldLCBjdXJyZW50SW5kZW50KTsKLSAgICB9Ci0KLSAgICBmdW5j
dGlvbiBkdW1wUnVsZU1hdGNoZXNBcnJheShtYXRjaGVzLCBjdXJyZW50SW5kZW50KQotICAgIHsK
LSAgICAgICAgaWYgKCFtYXRjaGVzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjdXJy
ZW50SW5kZW50ID0gY3VycmVudEluZGVudCB8fCAiIjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBtYXRjaGVzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgZHVtcFJ1bGUobWF0Y2hlc1tp
XS5ydWxlLCBjdXJyZW50SW5kZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkdW1wUnVsZShy
dWxlLCBjdXJyZW50SW5kZW50KQotICAgIHsKLSAgICAgICAgY3VycmVudEluZGVudCA9IGN1cnJl
bnRJbmRlbnQgfHwgIiI7Ci0KLSAgICAgICAgaWYgKCFydWxlLnR5cGUgfHwgcnVsZS50eXBlID09
PSAic3R5bGUiKSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50
SW5kZW50ICsgcnVsZS5zZWxlY3Rvckxpc3QudGV4dCArICI6IFsiICsgcnVsZS5vcmlnaW4gKyAi
XSB7Iik7Ci0gICAgICAgICAgICBkdW1wU3R5bGUocnVsZS5zdHlsZSwgY3VycmVudEluZGVudCAr
IGluZGVudCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50SW5k
ZW50ICsgIn0iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChydWxlLnR5cGUgPT09ICJtZWRpYSIpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQG1lZGlhICIgKyBydWxlLm1lZGlhVGV4dCArICIgeyIp
OwotICAgICAgICAgICAgZHVtcFJ1bGVzQXJyYXkocnVsZS5jaGlsZFJ1bGVzLCBjdXJyZW50SW5k
ZW50ICsgaW5kZW50KTsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJl
bnRJbmRlbnQgKyAifSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHJ1bGUudHlwZSA9PT0gImltcG9ydCIpIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiQGltcG9ydDogaGVhZGVyPSIgKyBJbnNwZWN0
b3JUZXN0LnJhbmdlVGV4dChydWxlLmhlYWRlclJhbmdlKSArICIsIGJvZHk9IiArIEluc3BlY3Rv
clRlc3QucmFuZ2VUZXh0KHJ1bGUuYm9keVJhbmdlKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAocnVsZS50eXBlID09PSAicGFnZSIgfHwgcnVsZS50eXBl
ID09PSAiZm9udC1mYWNlIikgewotICAgICAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gInBhZ2Ui
KQotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQg
KyBydWxlLnNlbGVjdG9yTGlzdC50ZXh0ICsgIiB7Iik7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJAIiAr
IHJ1bGUudHlwZSArICIgIiArIChydWxlLnNlbGVjdG9yTGlzdC50ZXh0ID8gcnVsZS5zZWxlY3Rv
ckxpc3QudGV4dCArICIgIiA6ICIiKSAgKyAieyIpOwotICAgICAgICAgICAgZHVtcFN0eWxlKHJ1
bGUuc3R5bGUsIGN1cnJlbnRJbmRlbnQgKyBpbmRlbnQpOwotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoY3VycmVudEluZGVudCArICJ9Iik7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocnVsZS50eXBlID09PSAiY2hhcnNldCIpIHsKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJAY2hhcnNldCIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
Y3VycmVudEluZGVudCArICJbVU5LTk9XTiBSVUxFXTogaGVhZGVyPSIgKyBJbnNwZWN0b3JUZXN0
LnJhbmdlVGV4dChydWxlLmhlYWRlclJhbmdlKSArICIsIGJvZHk9IiArIEluc3BlY3RvclRlc3Qu
cmFuZ2VUZXh0KHJ1bGUuYm9keVJhbmdlKSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVtcFN0
eWxlKHN0eWxlLCBjdXJyZW50SW5kZW50KQotICAgIHsKLSAgICAgICAgY3VycmVudEluZGVudCA9
IGN1cnJlbnRJbmRlbnQgfHwgIiI7Ci0gICAgICAgIGlmICghc3R5bGUpIHsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGN1cnJlbnRJbmRlbnQgKyAiW05PIFNUWUxFXSIpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3R5bGUuY3NzUHJvcGVydGllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHBy
b3BlcnR5ID0gc3R5bGUuY3NzUHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5zdGF0dXMgIT09ICJkaXNhYmxlZCIpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoY3VycmVudEluZGVudCArICJbJyIgKyBwcm9wZXJ0eS5uYW1lICsgIic6JyIgKyBw
cm9wZXJ0eS52YWx1ZSArICInIiArIChwcm9wZXJ0eS5wcmlvcml0eSA9PT0gImltcG9ydGFudCIg
PyAiIGlzLWltcG9ydGFudCIgOiAiIikgKyAoKCJwYXJzZWRPayIgaW4gcHJvcGVydHkpID8gIiBu
b24tcGFyc2VkIiA6ICIiKSArIl0gQCIgKyBJbnNwZWN0b3JUZXN0LnJhbmdlVGV4dChwcm9wZXJ0
eS5yYW5nZSkgKyAiICIgKyAocHJvcGVydHkuc3RhdHVzIHx8ICJzdHlsZSIpKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdChjdXJyZW50
SW5kZW50ICsgIlt0ZXh0PSciICsgcHJvcGVydHkudGV4dCArICInXSAiICsgcHJvcGVydHkuc3Rh
dHVzKTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGZ1bmN0aW9uIGxvYWRBbmREdW1wU3R5bGVT
aGVldChzdHlsZVNoZWV0SWQsIGNvbnRpbnVhdGlvbiwgZXJyb3IpCiAgICAgewogICAgICAgICBp
ZiAoZXJyb3IpIHsKQEAgLTQwMyw3ICszMjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIiKTsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTdHlsZVNoZWV0OiAnIiArIHN0eWxlU2hlZXQu
dGV4dCArICInIik7Ci0gICAgICAgICAgICBkdW1wUnVsZXNBcnJheShzdHlsZVNoZWV0LnJ1bGVz
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFJ1bGVzQXJyYXkoc3R5bGVTaGVldC5y
dWxlcyk7CiAgICAgICAgICAgICBpZiAoY29udGludWF0aW9uKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVhdGlvbihzdHlsZVNoZWV0KTsKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="179976"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>