<?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>136272</bug_id>
          
          <creation_ts>2014-08-26 18:00:17 -0700</creation_ts>
          <short_desc>Web Inspector: Write tests for ScriptSyntaxTree and fix bugs in the data structure</short_desc>
          <delta_ts>2014-08-28 18:42:35 -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</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1031534</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-26 18:00:17 -0700</bug_when>
    <thetext>Write some tests for ScriptSyntaxTree. A good would be to make sure it can parse all statements that we have AST nodes for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031535</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-08-26 18:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/18142687&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031879</commentid>
    <comment_count>2</comment_count>
      <attachid>237279</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-27 19:09:52 -0700</bug_when>
    <thetext>Created attachment 237279
patch

Tests!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032070</commentid>
    <comment_count>3</comment_count>
      <attachid>237279</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-28 14:08:06 -0700</bug_when>
    <thetext>Comment on attachment 237279
patch

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

Nice! Some suggestions for a few more tests.

&gt; LayoutTests/inspector/model/parse-script-syntax-tree.html:203
&gt; +    node = makeNode(&quot;true;&quot;, true);
&gt; +    InspectorTest.assert(node.type === WebInspector.ScriptSyntaxTree.NodeType.Literal);
&gt; +    InspectorTest.assert(node.value === true);
&gt; +    InspectorTest.assert(node.raw === &quot;true&quot;);

We might want to also test a few other literals?

  &quot;null&quot;
  &quot;/regex/ig&quot;
  &quot;0x10&quot;
  &quot;0777&quot;
  &quot;\&quot;a\&quot;&quot;

&gt; LayoutTests/inspector/model/parse-script-syntax-tree.html:276
&gt; +    node = makeNode(&quot;x = {foo:20};&quot;, true);
&gt; +    InspectorTest.assert(node.right.properties[0].type === WebInspector.ScriptSyntaxTree.NodeType.Property);
&gt; +    InspectorTest.assert(node.right.properties[0].key);
&gt; +    InspectorTest.assert(node.right.properties[0].key.type === WebInspector.ScriptSyntaxTree.NodeType.Identifier);
&gt; +    InspectorTest.assert(node.right.properties[0].value);
&gt; +    InspectorTest.assert(node.right.properties[0].value.type === WebInspector.ScriptSyntaxTree.NodeType.Literal);
&gt; +    node = makeNode(&quot;x = {&apos;foo&apos;:20};&quot;, true);
&gt; +    InspectorTest.assert(node.right.properties[0].key);
&gt; +    InspectorTest.assert(node.right.properties[0].key.type === WebInspector.ScriptSyntaxTree.NodeType.Literal);
&gt; +    InspectorTest.log(&quot;passed Property&quot;);

I&apos;d suggest testing isGetterOrSetter is false here, and testing cases where it is true.

    &quot;x = {get foo() {return 20}}&quot;
    &quot;x = {set foo(x) {}}&quot;

&gt; LayoutTests/inspector/model/parse-script-syntax-tree.html:327
&gt; +    node = makeNode(&quot;foo++;&quot;, true);
&gt; +    InspectorTest.assert(node.type === WebInspector.ScriptSyntaxTree.NodeType.UpdateExpression);
&gt; +    InspectorTest.log(&quot;passed UpdateExpression&quot;);

Include a test for prefix === false here and a pre-increment/decrement with prefix === true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032106</commentid>
    <comment_count>4</comment_count>
      <attachid>237334</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2014-08-28 17:22:26 -0700</bug_when>
    <thetext>Created attachment 237334
patch

Made additions Joe suggested</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032111</commentid>
    <comment_count>5</comment_count>
      <attachid>237334</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-08-28 18:08:07 -0700</bug_when>
    <thetext>Comment on attachment 237334
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032113</commentid>
    <comment_count>6</comment_count>
      <attachid>237334</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-28 18:42:32 -0700</bug_when>
    <thetext>Comment on attachment 237334
patch

Clearing flags on attachment: 237334

Committed r173103: &lt;http://trac.webkit.org/changeset/173103&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032114</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-28 18:42:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237279</attachid>
            <date>2014-08-27 19:09:52 -0700</date>
            <delta_ts>2014-08-28 17:22:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>26784</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkocmV2aXNpb24gMTczMDQzKQorKysgU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA4LTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFdyaXRlIHRlc3RzIGZvciBTY3JpcHRTeW50YXhUcmVlIGFuZCBmaXgg
YnVncyBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjI3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIG5lY2Vzc2FyeSBmaWxlcyBpbiBUZXN0Lmh0
bWwgdG8gdGVzdCBTY3JpcHRTeW50YXhUcmVlLgorICAgICAgICBBbHNvLCBTY3JpcHRTeW50YXhU
cmVlIGhhZCBhIGNvdXBsZSBvZiBlcnJvcnMgZm9yIHR3byBvZiBpdHMgbm9kZXMKKyAgICAgICAg
d2hlcmUgdGhleSBzaW1wbHkgaWdub3JlZCBvbmUgb2YgdGhlIHByb3BlcnRpZXMgb24gdGhlIG5v
ZGUuCisgICAgICAgIFRoZXNlIGVycm9ycyB3ZXJlIGZvdW5kIHdoaWxlIHdyaXRpbmcgdGhlIHRl
c3RzIGFuZCBhcmUgZml4ZWQKKyAgICAgICAgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUuX2NyZWF0ZUludGVybmFsU3ludGF4VHJl
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisKIDIwMTQtMDgtMjcgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
TGF5b3V0IGlzc3VlcyBmb3IgcG9wb3ZlciBvbiBub3QgbGVnYWN5IE9TCkluZGV4OiBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCShyZXZpc2lvbiAxNzMw
MDgpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9VUkxV
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1V0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1h
LmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0b3JCYWNr
ZW5kLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9yRnJv
bnRlbmRBUEkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0
b3JGcm9udGVuZEhvc3RTdHViLmpzIj48L3NjcmlwdD4KQEAgLTkzLDYgKzk1LDcgQEAKICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlVGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmV2aXNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvU2NyaXB0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL1NjcmlwdFN5bnRheFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvU2V0dGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Tb3Vy
Y2VDb2RlTG9jYXRpb24uanMiPjwvc2NyaXB0PgpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRy
ZWUuanMJKHJldmlzaW9uIDE3MzAwOCkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02Mzks
MTQgKzYzOSwxNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAg
ICAgICAgICAgICByZXN1bHQgPSB7CiAgICAgICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTG9naWNhbEV4cHJlc3Npb24sCiAgICAgICAgICAg
ICAgICAgbGVmdDogdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKG5vZGUubGVmdCksCi0g
ICAgICAgICAgICAgICAgcmlnaHQ6IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShub2Rl
LnJpZ2h0KQorICAgICAgICAgICAgICAgIHJpZ2h0OiB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRh
eFRyZWUobm9kZS5yaWdodCksCisgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG5vZGUub3BlcmF0
b3IKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiTWVt
YmVyRXhwcmVzc2lvbiI6CiAgICAgICAgICAgICByZXN1bHQgPSB7CiAgICAgICAgICAgICAgICAg
dHlwZTogV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTWVtYmVyRXhwcmVz
c2lvbiwKICAgICAgICAgICAgICAgICBvYmplY3Q6IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4
VHJlZShub2RlLm9iamVjdCksCi0gICAgICAgICAgICAgICAgcHJvcGVydHk6IHRoaXMuX2NyZWF0
ZUludGVybmFsU3ludGF4VHJlZShub2RlLnByb3BlcnR5KQorICAgICAgICAgICAgICAgIHByb3Bl
cnR5OiB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUobm9kZS5wcm9wZXJ0eSksCisgICAg
ICAgICAgICAgICAgY29tcHV0ZWQ6IG5vZGUuY29tcHV0ZWQKICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiTmV3RXhwcmVzc2lvbiI6CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNzMwNDMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxNC0wOC0yNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBXcml0ZSB0ZXN0cyBmb3IgU2NyaXB0U3lu
dGF4VHJlZSBhbmQgZml4IGJ1Z3MgaW4gdGhlIGRhdGEgc3RydWN0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYyNzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRlc3RzIGFsbCBu
b2RlcyBpbiB0aGUgV2ViSW5zcGVjb3IncyBBYnN0cmFjdCBTeW50YXggVHJlZS4KKyAgICAgICAg
VGhlc2UgdGVzdHMgZG9uJ3QgdGVzdCBldmVyeSBhc3BlY3Qgb2YgdGhlIGRhdGEgc3RydWN0dXJl
LCBidXQgZm9jdXMKKyAgICAgICAgb24gaGF2aW5nIGl0IHBhcnNlIGFsbCBKYXZhU2NyaXB0IGV4
cHJlc3Npb25zIHN1Y2Nlc3NmdWxseSBhbmQgdG8gYWxzbworICAgICAgICBtYWtlIHN1cmUgbm9k
ZXMgaW4gdGhlIHRyZWUgYXJlIG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvbW9kZWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3Jp
cHQtc3ludGF4LXRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
bW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVlLmh0bWw6IEFkZGVkLgorCiAyMDE0LTA4LTI3
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0
ZSBwbGFjZWhvbGRlci1zaG93bi1iYXNpY3MuaHRtbCBmb3IgR1RLCkluZGV4OiBMYXlvdXRUZXN0
cy9pbnNwZWN0b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5
bnRheC10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2luc3Bl
Y3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKK3Bhc3NlZCBBc3NpZ25tZW50RXhwcmVzc2lvbgorcGFz
c2VkIEFycmF5RXhwcmVzc2lvbgorcGFzc2VkIEJsb2NrU3RhdGVtZW50CitwYXNzZWQgQmluYXJ5
RXhwcmVzc2lvbgorcGFzc2VkIEJyZWFrU3RhdGVtZW50CitwYXNzZWQgQ2FsbEV4cHJlc3Npb24K
K3Bhc3NlZCBUcnlTdGF0ZW1lbnQKK3Bhc3NlZCBDYXRjaENsYXVzZQorcGFzc2VkIENvbmRpdGlv
bmFsRXhwcmVzc2lvbgorcGFzc2VkIENvbnRpbnVlU3RhdGVtZW50CitwYXNzZWQgRG9XaGlsZVN0
YXRlbWVudAorcGFzc2VkIERlYnVnZ2VyU3RhdGVtZW50CitwYXNzZWQgRW1wdHlTdGF0ZW1lbnQK
K3Bhc3NlZCBFeHByZXNzaW9uU3RhdGVtZW50CitwYXNzZWQgRm9yU3RhdGVtZW50CitwYXNzZWQg
Rm9ySW5TdGF0ZW1lbnQKK3Bhc3NlZCBGdW5jdGlvbkRlY2xhcmF0aW9uCitwYXNzZWQgRnVuY3Rp
b25FeHByZXNzaW9uCitwYXNzZWQgSWRlbnRpZmllcgorcGFzc2VkIElmU3RhdGVtZW50CitwYXNz
ZWQgTGl0ZXJhbAorcGFzc2VkIExhYmVsZWRTdGF0ZW1lbnQKK3Bhc3NlZCBMb2dpY2FsRXhwcmVz
c2lvbgorcGFzc2VkIE1lbWJlckV4cHJlc3Npb24KK3Bhc3NlZCBOZXdFeHByZXNzaW9uCitwYXNz
ZWQgT2JqZWN0RXhwcmVzc2lvbgorcGFzc2VkIFByb3BlcnR5CitwYXNzZWQgUmV0dXJuU3RhdGVt
ZW50CitwYXNzZWQgU2VxdWVuY2VFeHByZXNzaW9uCitwYXNzZWQgU3dpdGNoU3RhdGVtZW50Citw
YXNzZWQgU3dpdGNoQ2FzZQorcGFzc2VkIFRoaXNFeHByZXNzaW9uCitwYXNzZWQgVGhyb3dTdGF0
ZW1lbnQKK3Bhc3NlZCBVbmFyeUV4cHJlc3Npb24KK3Bhc3NlZCBVcGRhdGVFeHByZXNzaW9uCitw
YXNzZWQgVmFyaWFibGVEZWNsYXJhdGlvbgorcGFzc2VkIFZhcmlhYmxlRGVjbGFyYXRvcgorcGFz
c2VkIFdoaWxlU3RhdGVtZW50CitwYXNzZWQgV2l0aFN0YXRlbWVudAorcGFzc2VkIEFMTCBURVNU
UworCkluZGV4OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRh
eC10cmVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3Bh
cnNlLXNjcmlwdC1zeW50YXgtdHJlZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMzcwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVz
dCgpCit7CisgICAgZnVuY3Rpb24gbWFrZU5vZGUodGV4dCwgaXNFeHByZXNzaW9uKQorICAgIHsK
KyAgICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KDEsIFdlYkluc3Bl
Y3Rvci5UZXh0UmFuZ2UoMCwgdGV4dC5sZW5ndGgpKTsKKyAgICAgICAgdmFyIHNjcmlwdFN5bnRh
eFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUodGV4dCwgc2NyaXB0KTsK
KyAgICAgICAgdmFyIHN5bnRheFRyZWUgPSBzY3JpcHRTeW50YXhUcmVlLl9zeW50YXhUcmVlOwor
CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHNjcmlwdFN5bnRheFRyZWUucGFyc2VkU3Vj
Y2Vzc2Z1bGx5LCAiU2NyaXB0U3ludGF4VHJlZSBzaG91bGQgYmUgYWJsZSB0byBwYXJzZTogXCIi
ICsgdGV4dCArICJcIiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChzeW50YXhUcmVl
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlByb2dyYW0s
ICJTaG91bGQgYmUgcHJvZ3JhbS4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoc3lu
dGF4VHJlZS5ib2R5Lmxlbmd0aCA9PT0gMSwgIkNhbGxpbmcgbWFrZU5vZGUgc2hvdWxkIHJldHVy
biBvbmUgbm9kZSBpbiB0aGUgcHJvZ3JhbS4iKTsKKyAgICAgICAgaWYgKGlzRXhwcmVzc2lvbikg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoc3ludGF4VHJlZS5ib2R5WzBdLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkV4cHJlc3Npb25T
dGF0ZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIHN5bnRheFRyZWUuYm9keVswXS5leHByZXNz
aW9uOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBzeW50YXhUcmVlLmJvZHlb
MF07CisgICAgfQorCisgICAgdmFyIG5vZGUgPSBudWxsOworCisgICAgbm9kZSA9IG1ha2VOb2Rl
KCJ4ID0gMjA7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Bc3NpZ25tZW50RXhwcmVz
c2lvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5sZWZ0KTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLmxlZnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRh
eFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5yaWdodCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLm9wZXJhdG9yID09PSAiPSIpOworICAgIG5vZGUgPSBtYWtl
Tm9kZSgieCArPSAyMDsiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9w
ZXJhdG9yID09PSAiKz0iKTsKKyAgICBub2RlID0gbWFrZU5vZGUoInggLT0gMjA7IiwgdHJ1ZSk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIi09Iik7CisgICAg
SW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBBc3NpZ25tZW50RXhwcmVzc2lvbiIpOworCisgICAg
bm9kZSA9IG1ha2VOb2RlKCJbMSwgMl0iLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFy
cmF5RXhwcmVzc2lvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoQXJyYXkuaXNBcnJheShu
b2RlLmVsZW1lbnRzKSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5lbGVtZW50cy5s
ZW5ndGggPT09IDIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZWxlbWVudHNbMF0u
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5lbGVtZW50c1sxXS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmxvZygicGFzc2VkIEFycmF5RXhwcmVzc2lvbiIpOworICAgIAorICAgIG5vZGUgPSBt
YWtlTm9kZSgie2ZvbygpO30iLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9ja1N0
YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5KTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkubGVuZ3RoID09PSAxKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLmJvZHlbMF0uZXhwcmVzc2lvbi50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5DYWxsRXhwcmVzc2lvbik7CisgICAgSW5zcGVjdG9y
VGVzdC5sb2coInBhc3NlZCBCbG9ja1N0YXRlbWVudCIpOworCisgICAgbm9kZSA9IG1ha2VOb2Rl
KCIyICsgMiIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQmluYXJ5RXhwcmVzc2lvbik7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5sZWZ0KTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChub2RlLnJpZ2h0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9wZXJh
dG9yID09PSAiKyIpOworICAgIG5vZGUgPSBtYWtlTm9kZSgiMiAtIDIiLCB0cnVlKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9wZXJhdG9yID09PSAiLSIpOworICAgIG5vZGUgPSBt
YWtlTm9kZSgiMiAqIDIiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9w
ZXJhdG9yID09PSAiKiIpOworICAgIG5vZGUgPSBtYWtlTm9kZSgiMiAvIDIiLCB0cnVlKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9wZXJhdG9yID09PSAiLyIpOworICAgIG5vZGUg
PSBtYWtlTm9kZSgiMiAlIDIiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
Lm9wZXJhdG9yID09PSAiJSIpOworICAgIG5vZGUgPSBtYWtlTm9kZSgiMiB8IDIiLCB0cnVlKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9wZXJhdG9yID09PSAifCIpOworICAgIG5v
ZGUgPSBtYWtlTm9kZSgiMiBeIDIiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChu
b2RlLm9wZXJhdG9yID09PSAiXiIpOworICAgIG5vZGUgPSBtYWtlTm9kZSgiMiA9PSAyIiwgdHJ1
ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIj09Iik7Cisg
ICAgbm9kZSA9IG1ha2VOb2RlKCIyID09PSAyIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIj09PSIpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJw
YXNzZWQgQmluYXJ5RXhwcmVzc2lvbiIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJsYWJlbDp3
aGlsZSh0cnVlKSB7YnJlYWsgbGFiZWw7fSIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmJvZHkuYm9keS5ib2R5WzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLkJyZWFrU3RhdGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmJvZHkuYm9keS5ib2R5WzBdLmxhYmVsLnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUuYm9keS5ib2R5LmJvZHlbMF0ubGFiZWwubmFtZSA9PT0gImxhYmVsIik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBCcmVha1N0YXRlbWVudCIpOworCisgICAgbm9k
ZSA9IG1ha2VOb2RlKCJmb28oMjAsIDI1KSIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUu
Q2FsbEV4cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRz
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDIp
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRzWzBdLnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkxpdGVyYWwpOworICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRzWzFdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkxpdGVyYWwpOworICAgIEluc3BlY3RvclRlc3QubG9n
KCJwYXNzZWQgQ2FsbEV4cHJlc3Npb24iKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgidHJ5IHt9
IGNhdGNoKGUpIHt9ICIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5
cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlRyeVN0YXRlbWVu
dCk7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBUcnlTdGF0ZW1lbnQiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmhhbmRsZXJzLmxlbmd0aCA9PT0gMSk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5oYW5kbGVyc1swXS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5DYXRjaENsYXVzZSk7CisgICAgSW5zcGVjdG9yVGVz
dC5sb2coInBhc3NlZCBDYXRjaENsYXVzZSIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJmb28g
PyBiYXIgOiBiYXo7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Db25kaXRpb25hbEV4
cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudGVzdCk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5jb25zZXF1ZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmFsdGVybmF0ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50ZXN0
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZp
ZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuY29uc2VxdWVudC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFsdGVybmF0ZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmxvZygicGFzc2VkIENvbmRpdGlvbmFsRXhwcmVzc2lvbiIpOworICAgIAorICAgIG5vZGUgPSBt
YWtlTm9kZSgibGFiZWw6d2hpbGUodHJ1ZSkge2NvbnRpbnVlIGxhYmVsO30iLCBmYWxzZSk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5LmJvZHkuYm9keVswXS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Db250aW51ZVN0YXRlbWVudCk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5LmJvZHkuYm9keVswXS5sYWJlbC50
eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVy
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkuYm9keS5ib2R5WzBdLmxhYmVs
Lm5hbWUgPT09ICJsYWJlbCIpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgQ29udGlu
dWVTdGF0ZW1lbnQiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgiZG97fXdoaWxlKHRydWUpOyIs
IGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkRvV2hpbGVTdGF0ZW1lbnQpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9ja1N0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5ib2R5LmJvZHkubGVuZ3RoID09PSAwKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLnRlc3QpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudGVzdC50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIERvV2hpbGVTdGF0ZW1lbnQiKTsKKworICAgIG5v
ZGUgPSBtYWtlTm9kZSgiZGVidWdnZXI7IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUu
RGVidWdnZXJTdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgRGVidWdn
ZXJTdGF0ZW1lbnQiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgiOyIsIGZhbHNlKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLkVtcHR5U3RhdGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygi
cGFzc2VkIEVtcHR5U3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoIjIgKyAyIiwg
ZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRXhwcmVzc2lvblN0YXRlbWVudCk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5leHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRh
eFRyZWUuTm9kZVR5cGUuQmluYXJ5RXhwcmVzc2lvbik7CisgICAgSW5zcGVjdG9yVGVzdC5sb2co
InBhc3NlZCBFeHByZXNzaW9uU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoImZv
cih4ID0gMDt4IDwgMjA7eCsrKXt9IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRm9y
U3RhdGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmluaXQpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuaW5pdC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5Bc3NpZ25tZW50RXhwcmVzc2lvbik7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS50ZXN0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnRl
c3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQmluYXJ5
RXhwcmVzc2lvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS51cGRhdGUpOworICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudXBkYXRlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlVwZGF0ZUV4cHJlc3Npb24pOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUuYm9keSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5i
b2R5LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkJsb2Nr
U3RhdGVtZW50KTsKKyAgICBub2RlID0gbWFrZU5vZGUoImZvcih4ID0gMDt4IDwgMjA7eCsrKTsi
LCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5KTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5
bnRheFRyZWUuTm9kZVR5cGUuRW1wdHlTdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QubG9n
KCJwYXNzZWQgRm9yU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoImZvcih2YXIg
eCBpbiB7fSl7fSIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZvckluU3RhdGVtZW50
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmxlZnQpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUubGVmdC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJl
ZS5Ob2RlVHlwZS5WYXJpYWJsZURlY2xhcmF0aW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLnJpZ2h0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnJpZ2h0LnR5cGUg
PT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLk9iamVjdEV4cHJlc3Np
b24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keSk7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS5ib2R5LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLkJsb2NrU3RhdGVtZW50KTsKKyAgICBub2RlID0gbWFrZU5vZGUoImZvcih2
YXIgeCBpbiB7fSk7IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9k
eSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5LnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkVtcHR5U3RhdGVtZW50KTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmxvZygicGFzc2VkIEZvckluU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFr
ZU5vZGUoImZ1bmN0aW9uIGZvbyh4LHkpe30iLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlw
ZS5GdW5jdGlvbkRlY2xhcmF0aW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnBh
cmFtcyk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wYXJhbXMubGVuZ3RoID09PSAy
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnBhcmFtc1swXS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLnBhcmFtc1sxXS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmJvZHkpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9ja1N0YXRlbWVu
dCk7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBGdW5jdGlvbkRlY2xhcmF0aW9uIik7
CisKKyAgICBub2RlID0gbWFrZU5vZGUoImZvbyhmdW5jdGlvbih4LHkpe30pIiwgdHJ1ZSk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHNbMF0udHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25FeHByZXNzaW9uKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50c1swXS5wYXJhbXMpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRzWzBdLnBhcmFtcy5sZW5ndGggPT09IDIp
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRzWzBdLnBhcmFtc1swXS50
eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVy
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50c1swXS5wYXJhbXNbMV0u
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmll
cik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHNbMF0uYm9keSk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHNbMF0uYm9keS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9ja1N0YXRlbWVudCk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBGdW5jdGlvbkV4cHJlc3Npb24iKTsKKworICAg
IG5vZGUgPSBtYWtlTm9kZSgiZm9vOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRl
bnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5uYW1lKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLm5hbWUgPT09ICJmb28iKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmxvZygicGFzc2VkIElkZW50aWZpZXIiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgiaWYgKHRy
dWUpIGJhejsgZWxzZSBiYXI7IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWZTdGF0
ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudGVzdCk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS50ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLkxpdGVyYWwpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUu
Y29uc2VxdWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5jb25zZXF1ZW50LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkV4cHJlc3Npb25T
dGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYWx0ZXJuYXRlKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFsdGVybmF0ZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5FeHByZXNzaW9uU3RhdGVtZW50KTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIElmU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFr
ZU5vZGUoInRydWU7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnZhbHVlID09PSB0cnVlKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLnJhdyA9PT0gInRydWUiKTsKKyAgICBub2RlID0gbWFrZU5vZGUo
ImZhbHNlOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS52YWx1ZSA9PT0gZmFsc2UpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUucmF3ID09PSAiZmFsc2UiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIjIw
OyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS52YWx1ZSA9PT0gMjApOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUucmF3ID09PSAiMjAiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIicyMCc7IiwgdHJ1ZSk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLnZhbHVlID09PSAnMjAnKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnJh
dyA9PT0gIicyMCciKTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIExpdGVyYWwiKTsK
KworICAgIG5vZGUgPSBtYWtlTm9kZSgibGFiZWw6d2hpbGUodHJ1ZSkyMDsiLCBmYWxzZSk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5MYWJlbGVkU3RhdGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChub2RlLmxhYmVsKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmxhYmVs
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZp
ZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUubGFiZWwubmFtZSA9PT0gImxhYmVs
Iik7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBMYWJlbGVkU3RhdGVtZW50Iik7CisK
KyAgICBub2RlID0gbWFrZU5vZGUoInggJiYgMjAiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVU
eXBlLkxvZ2ljYWxFeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmxl
ZnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUubGVmdC50eXBlID09PSBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLnJpZ2h0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LnJpZ2h0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkxp
dGVyYWwpOworICAgIC8vSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIiYm
Iik7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJ4IHx8IDIwIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gInx8Iik7CisgICAgSW5zcGVjdG9yVGVzdC5s
b2coInBhc3NlZCBMb2dpY2FsRXhwcmVzc2lvbiIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJm
b29bMjBdIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5NZW1iZXJFeHByZXNzaW9uKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmNvbXB1dGVkKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLm9iamVjdCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5v
YmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRl
bnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wcm9wZXJ0eSk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wcm9wZXJ0eS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBub2RlID0gbWFrZU5vZGUo
ImZvby5iYXIiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghbm9kZS5jb21wdXRl
ZCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wcm9wZXJ0eS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmxvZygicGFzc2VkIE1lbWJlckV4cHJlc3Npb24iKTsKKworICAgIG5vZGUgPSBt
YWtlTm9kZSgibmV3IEZvbygyMCkiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChu
b2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLk5ld0V4
cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuY2FsbGVlKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmNhbGxlZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmFyZ3VtZW50cyk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1
bWVudHMubGVuZ3RoID09PSAxKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIm5ldyBGb28iLCB0cnVl
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50cyk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHMubGVuZ3RoID09PSAwKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmxvZygicGFzc2VkIE5ld0V4cHJlc3Npb24iKTsKKworICAgIG5vZGUgPSBtYWtlTm9k
ZSgieCA9IHtmb286YmFyfTsiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LnJpZ2h0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLk9i
amVjdEV4cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucmlnaHQucHJv
cGVydGllcyk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodC5wcm9wZXJ0aWVz
Lmxlbmd0aCA9PT0gMSk7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBPYmplY3RFeHBy
ZXNzaW9uIik7CisKKyAgICAvLyBQcm9ncmFtIGlzIHRlc3RlZCBpbiBtYWtlTm9kZQorCisgICAg
bm9kZSA9IG1ha2VOb2RlKCJ4ID0ge2ZvbzoyMH07IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5yaWdodC5wcm9wZXJ0aWVzWzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlByb3BlcnR5KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLnJpZ2h0LnByb3BlcnRpZXNbMF0ua2V5KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLnJpZ2h0LnByb3BlcnRpZXNbMF0ua2V5LnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUucmlnaHQucHJvcGVydGllc1swXS52YWx1ZSk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5yaWdodC5wcm9wZXJ0aWVzWzBdLnZhbHVlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkxpdGVyYWwpOworICAgIG5vZGUgPSBtYWtl
Tm9kZSgieCA9IHsnZm9vJzoyMH07IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5yaWdodC5wcm9wZXJ0aWVzWzBdLmtleSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5yaWdodC5wcm9wZXJ0aWVzWzBdLmtleS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFz
c2VkIFByb3BlcnR5Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoImZ1bmN0aW9uIGZvbygpIHsg
cmV0dXJuIDIwOyB9IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9k
eS5ib2R5WzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBl
LlJldHVyblN0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5LmJv
ZHlbMF0uYXJndW1lbnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9k
ZVR5cGUuTGl0ZXJhbCk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJmdW5jdGlvbiBmb28oKSB7IHJl
dHVybjsgfSIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkuYm9k
eVswXS5hcmd1bWVudCA9PT0gbnVsbCk7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBS
ZXR1cm5TdGF0ZW1lbnQiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgiKHgsIHkpIiwgdHJ1ZSk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5TZXF1ZW5jZUV4cHJlc3Npb24pOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUuZXhwcmVzc2lvbnMpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUuZXhwcmVzc2lvbnMubGVuZ3RoID09PSAyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLmV4cHJlc3Npb25zWzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUu
ZXhwcmVzc2lvbnNbMV0udHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9k
ZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBTZXF1ZW5j
ZUV4cHJlc3Npb24iKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgic3dpdGNoKHgpe2Nhc2UgeTpi
cmVhazt9IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuU3dpdGNoU3RhdGVtZW50KTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmRpc2NyaW1pbmFudC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmxvZygicGFzc2VkIFN3aXRjaFN0YXRlbWVudCIpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUuY2FzZXNbMF0udHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRh
eFRyZWUuTm9kZVR5cGUuU3dpdGNoQ2FzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5jYXNlc1swXS50ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5v
ZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuY2FzZXNb
MF0uY29uc2VxdWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoQXJyYXkuaXNBcnJheShu
b2RlLmNhc2VzWzBdLmNvbnNlcXVlbnQpKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LmNhc2VzWzBdLmNvbnNlcXVlbnQubGVuZ3RoID09PSAxKTsKKyAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygicGFzc2VkIFN3aXRjaENhc2UiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgidGhpczsiLCB0
cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlRoaXNFeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmxvZygicGFzc2VkIFRoaXNFeHByZXNzaW9uIik7CisKKyAgICBub2RlID0gbWFrZU5v
ZGUoInRocm93IG5ldyBFcnJvcjsiLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5UaHJv
d1N0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudCk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudC50eXBlID09PSBXZWJJbnNwZWN0
b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5OZXdFeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmxvZygicGFzc2VkIFRocm93U3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5v
ZGUoIiFmb287IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5VbmFyeUV4cHJlc3Npb24p
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnQpOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5
bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5vcGVyYXRvciA9PT0gIiEiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIn5mb287IiwgdHJ1
ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIn4iKTsKKyAg
ICBub2RlID0gbWFrZU5vZGUoIi1mb287IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQobm9kZS5vcGVyYXRvciA9PT0gIi0iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2Vk
IFVuYXJ5RXhwcmVzc2lvbiIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJmb28rKzsiLCB0cnVl
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlVwZGF0ZUV4cHJlc3Npb24pOworICAgIEluc3BlY3Rv
clRlc3QubG9nKCJwYXNzZWQgVXBkYXRlRXhwcmVzc2lvbiIpOworCisgICAgbm9kZSA9IG1ha2VO
b2RlKCJ2YXIgZm9vID0gMjA7IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuVmFyaWFi
bGVEZWNsYXJhdGlvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJhdGlv
bnMpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZGVjbGFyYXRpb25zLmxlbmd0aCA9
PT0gMSk7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBWYXJpYWJsZURlY2xhcmF0aW9u
Iik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJhdGlvbnNbMF0udHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuVmFyaWFibGVEZWNsYXJh
dG9yKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmRlY2xhcmF0aW9uc1swXS5pZCk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJhdGlvbnNbMF0uaWQudHlwZSk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJhdGlvbnNbMF0uaWQudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJhdGlvbnNbMF0uaW5pdCk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJhdGlvbnNbMF0uaW5pdC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBub2Rl
ID0gbWFrZU5vZGUoInZhciBmb287IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUuZGVjbGFyYXRpb25zWzBdLmluaXQgPT09IG51bGwpOworICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJwYXNzZWQgVmFyaWFibGVEZWNsYXJhdG9yIik7CisKKyAgICBub2RlID0gbWFrZU5vZGUo
IndoaWxlKHRydWUpYm9vOyIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLldoaWxlU3Rh
dGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnRlc3QpOworICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KG5vZGUudGVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3lu
dGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LmJvZHkpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5FeHByZXNzaW9uU3RhdGVtZW50KTsK
KyAgICBub2RlID0gbWFrZU5vZGUoIndoaWxlKHRydWUpe30iLCBmYWxzZSk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LmJvZHkudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQmxv
Y2tTdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgV2hpbGVTdGF0ZW1l
bnQiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgid2l0aChvKSB7fSIsIGZhbHNlKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLldpdGhTdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUub2JqZWN0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9iamVjdC50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUuYm9keS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5CbG9ja1N0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBX
aXRoU3RhdGVtZW50Iik7CisKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIEFMTCBURVNU
UyIpOworICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="262002"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237334</attachid>
            <date>2014-08-28 17:22:26 -0700</date>
            <delta_ts>2014-08-28 18:42:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>28906</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkocmV2aXNpb24gMTczMDk4KQorKysgU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE0LTA4LTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFdyaXRlIHRlc3RzIGZvciBTY3JpcHRTeW50YXhUcmVlIGFuZCBmaXgg
YnVncyBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzNjI3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIG5lY2Vzc2FyeSBmaWxlcyBpbiBUZXN0Lmh0
bWwgdG8gdGVzdCBTY3JpcHRTeW50YXhUcmVlLgorICAgICAgICBBbHNvLCBTY3JpcHRTeW50YXhU
cmVlIGhhZCBhIGNvdXBsZSBvZiBlcnJvcnMgZm9yIHR3byBvZiBpdHMgbm9kZXMKKyAgICAgICAg
d2hlcmUgdGhleSBzaW1wbHkgaWdub3JlZCBvbmUgb2YgdGhlIHByb3BlcnRpZXMgb24gdGhlIG5v
ZGUuCisgICAgICAgIFRoZXNlIGVycm9ycyB3ZXJlIGZvdW5kIHdoaWxlIHdyaXRpbmcgdGhlIHRl
c3RzIGFuZCBhcmUgZml4ZWQKKyAgICAgICAgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUuX2NyZWF0ZUludGVybmFsU3ludGF4VHJl
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisKIDIwMTQtMDgtMjcgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
TGF5b3V0IGlzc3VlcyBmb3IgcG9wb3ZlciBvbiBub3QgbGVnYWN5IE9TCkluZGV4OiBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCShyZXZpc2lvbiAxNzMw
OTMpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAKICAgICA8c2NyaXB0IHNyYz0iQmFzZS9VUkxV
dGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJCYXNlL1V0aWxpdGllcy5q
cyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1h
LmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0b3JCYWNr
ZW5kLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvSW5zcGVjdG9yRnJv
bnRlbmRBUEkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9JbnNwZWN0
b3JGcm9udGVuZEhvc3RTdHViLmpzIj48L3NjcmlwdD4KQEAgLTkzLDYgKzk1LDcgQEAKICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlVGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmV2aXNpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvU2NyaXB0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL1NjcmlwdFN5bnRheFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvU2NyaXB0VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvU2V0dGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Tb3Vy
Y2VDb2RlTG9jYXRpb24uanMiPjwvc2NyaXB0PgpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdFN5bnRheFRy
ZWUuanMJKHJldmlzaW9uIDE3MzA5MykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02Mzks
MTQgKzYzOSwxNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUgCiAg
ICAgICAgICAgICByZXN1bHQgPSB7CiAgICAgICAgICAgICAgICAgdHlwZTogV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTG9naWNhbEV4cHJlc3Npb24sCiAgICAgICAgICAg
ICAgICAgbGVmdDogdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKG5vZGUubGVmdCksCi0g
ICAgICAgICAgICAgICAgcmlnaHQ6IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShub2Rl
LnJpZ2h0KQorICAgICAgICAgICAgICAgIHJpZ2h0OiB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRh
eFRyZWUobm9kZS5yaWdodCksCisgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG5vZGUub3BlcmF0
b3IKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiTWVt
YmVyRXhwcmVzc2lvbiI6CiAgICAgICAgICAgICByZXN1bHQgPSB7CiAgICAgICAgICAgICAgICAg
dHlwZTogV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTWVtYmVyRXhwcmVz
c2lvbiwKICAgICAgICAgICAgICAgICBvYmplY3Q6IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4
VHJlZShub2RlLm9iamVjdCksCi0gICAgICAgICAgICAgICAgcHJvcGVydHk6IHRoaXMuX2NyZWF0
ZUludGVybmFsU3ludGF4VHJlZShub2RlLnByb3BlcnR5KQorICAgICAgICAgICAgICAgIHByb3Bl
cnR5OiB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUobm9kZS5wcm9wZXJ0eSksCisgICAg
ICAgICAgICAgICAgY29tcHV0ZWQ6IG5vZGUuY29tcHV0ZWQKICAgICAgICAgICAgIH07CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiTmV3RXhwcmVzc2lvbiI6CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxNzMwOTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxNC0wOC0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBXcml0ZSB0ZXN0cyBmb3IgU2NyaXB0U3lu
dGF4VHJlZSBhbmQgZml4IGJ1Z3MgaW4gdGhlIGRhdGEgc3RydWN0dXJlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYyNzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHRlc3RzIGFsbCBu
b2RlcyBpbiB0aGUgV2ViSW5zcGVjb3IncyBBYnN0cmFjdCBTeW50YXggVHJlZS4KKyAgICAgICAg
VGhlc2UgdGVzdHMgZG9uJ3QgdGVzdCBldmVyeSBhc3BlY3Qgb2YgdGhlIGRhdGEgc3RydWN0dXJl
LCBidXQgZm9jdXMKKyAgICAgICAgb24gaGF2aW5nIGl0IHBhcnNlIGFsbCBKYXZhU2NyaXB0IGV4
cHJlc3Npb25zIHN1Y2Nlc3NmdWxseSBhbmQgdG8gYWxzbworICAgICAgICBtYWtlIHN1cmUgbm9k
ZXMgaW4gdGhlIHRyZWUgYXJlIG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvbW9kZWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3Jp
cHQtc3ludGF4LXRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
bW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVlLmh0bWw6IEFkZGVkLgorCiAyMDE0LTA4LTI4
ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FuJ3QgaGl0
IHRhYiBrZXkgbW9yZSB0aGFuIDMgdGltZXMgY29udGludW91c2x5LgpJbmRleDogTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1z
eW50YXgtdHJlZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvbW9kZWwvcGFyc2Utc2NyaXB0LXN5bnRheC10cmVlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBACitwYXNzZWQgQXNzaWdubWVudEV4cHJlc3Npb24KK3Bh
c3NlZCBBcnJheUV4cHJlc3Npb24KK3Bhc3NlZCBCbG9ja1N0YXRlbWVudAorcGFzc2VkIEJpbmFy
eUV4cHJlc3Npb24KK3Bhc3NlZCBCcmVha1N0YXRlbWVudAorcGFzc2VkIENhbGxFeHByZXNzaW9u
CitwYXNzZWQgVHJ5U3RhdGVtZW50CitwYXNzZWQgQ2F0Y2hDbGF1c2UKK3Bhc3NlZCBDb25kaXRp
b25hbEV4cHJlc3Npb24KK3Bhc3NlZCBDb250aW51ZVN0YXRlbWVudAorcGFzc2VkIERvV2hpbGVT
dGF0ZW1lbnQKK3Bhc3NlZCBEZWJ1Z2dlclN0YXRlbWVudAorcGFzc2VkIEVtcHR5U3RhdGVtZW50
CitwYXNzZWQgRXhwcmVzc2lvblN0YXRlbWVudAorcGFzc2VkIEZvclN0YXRlbWVudAorcGFzc2Vk
IEZvckluU3RhdGVtZW50CitwYXNzZWQgRnVuY3Rpb25EZWNsYXJhdGlvbgorcGFzc2VkIEZ1bmN0
aW9uRXhwcmVzc2lvbgorcGFzc2VkIElkZW50aWZpZXIKK3Bhc3NlZCBJZlN0YXRlbWVudAorcGFz
c2VkIExpdGVyYWwKK3Bhc3NlZCBMYWJlbGVkU3RhdGVtZW50CitwYXNzZWQgTG9naWNhbEV4cHJl
c3Npb24KK3Bhc3NlZCBNZW1iZXJFeHByZXNzaW9uCitwYXNzZWQgTmV3RXhwcmVzc2lvbgorcGFz
c2VkIE9iamVjdEV4cHJlc3Npb24KK3Bhc3NlZCBQcm9wZXJ0eQorcGFzc2VkIFJldHVyblN0YXRl
bWVudAorcGFzc2VkIFNlcXVlbmNlRXhwcmVzc2lvbgorcGFzc2VkIFN3aXRjaFN0YXRlbWVudAor
cGFzc2VkIFN3aXRjaENhc2UKK3Bhc3NlZCBUaGlzRXhwcmVzc2lvbgorcGFzc2VkIFRocm93U3Rh
dGVtZW50CitwYXNzZWQgVW5hcnlFeHByZXNzaW9uCitwYXNzZWQgVXBkYXRlRXhwcmVzc2lvbgor
cGFzc2VkIFZhcmlhYmxlRGVjbGFyYXRpb24KK3Bhc3NlZCBWYXJpYWJsZURlY2xhcmF0b3IKK3Bh
c3NlZCBXaGlsZVN0YXRlbWVudAorcGFzc2VkIFdpdGhTdGF0ZW1lbnQKK3Bhc3NlZCBBTEwgVEVT
VFMKKwpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50
YXgtdHJlZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9w
YXJzZS1zY3JpcHQtc3ludGF4LXRyZWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2luc3BlY3Rvci9tb2RlbC9wYXJzZS1zY3JpcHQtc3ludGF4LXRyZWUuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQwNyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGZ1bmN0aW9uIG1ha2VOb2RlKHRleHQsIGlzRXhwcmVzc2lvbikKKyAgICB7
CisgICAgICAgIHZhciBzY3JpcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdCgxLCBXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlKDAsIHRleHQubGVuZ3RoKSk7CisgICAgICAgIHZhciBzY3JpcHRTeW50
YXhUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlKHRleHQsIHNjcmlwdCk7
CisgICAgICAgIHZhciBzeW50YXhUcmVlID0gc2NyaXB0U3ludGF4VHJlZS5fc3ludGF4VHJlZTsK
KworICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChzY3JpcHRTeW50YXhUcmVlLnBhcnNlZFN1
Y2Nlc3NmdWxseSwgIlNjcmlwdFN5bnRheFRyZWUgc2hvdWxkIGJlIGFibGUgdG8gcGFyc2U6IFwi
IiArIHRleHQgKyAiXCIiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoc3ludGF4VHJl
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Qcm9ncmFt
LCAiU2hvdWxkIGJlIHByb2dyYW0uIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHN5
bnRheFRyZWUuYm9keS5sZW5ndGggPT09IDEsICJDYWxsaW5nIG1ha2VOb2RlIHNob3VsZCByZXR1
cm4gb25lIG5vZGUgaW4gdGhlIHByb2dyYW0uIik7CisgICAgICAgIGlmIChpc0V4cHJlc3Npb24p
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHN5bnRheFRyZWUuYm9keVswXS50
eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5FeHByZXNzaW9u
U3RhdGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBzeW50YXhUcmVlLmJvZHlbMF0uZXhwcmVz
c2lvbjsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gc3ludGF4VHJlZS5ib2R5
WzBdOworICAgIH0KKworICAgIHZhciBub2RlID0gbnVsbDsKKworICAgIG5vZGUgPSBtYWtlTm9k
ZSgieCA9IDIwOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXNzaWdubWVudEV4cHJl
c3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUubGVmdCk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5sZWZ0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUucmlnaHQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucmlnaHQudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIj0iKTsKKyAgICBub2RlID0gbWFr
ZU5vZGUoInggKz0gMjA7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5v
cGVyYXRvciA9PT0gIis9Iik7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJ4IC09IDIwOyIsIHRydWUp
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09ICItPSIpOworICAg
IEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgQXNzaWdubWVudEV4cHJlc3Npb24iKTsKKworICAg
IG5vZGUgPSBtYWtlTm9kZSgiWzEsIDJdIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5B
cnJheUV4cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KEFycmF5LmlzQXJyYXko
bm9kZS5lbGVtZW50cykpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZWxlbWVudHMu
bGVuZ3RoID09PSAyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmVsZW1lbnRzWzBd
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkxpdGVyYWwp
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZWxlbWVudHNbMV0udHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgSW5zcGVj
dG9yVGVzdC5sb2coInBhc3NlZCBBcnJheUV4cHJlc3Npb24iKTsKKyAgICAKKyAgICBub2RlID0g
bWFrZU5vZGUoIntmb28oKTt9IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQmxvY2tT
dGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keSk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5Lmxlbmd0aCA9PT0gMSk7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS5ib2R5WzBdLmV4cHJlc3Npb24udHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQ2FsbEV4cHJlc3Npb24pOworICAgIEluc3BlY3Rv
clRlc3QubG9nKCJwYXNzZWQgQmxvY2tTdGF0ZW1lbnQiKTsKKworICAgIG5vZGUgPSBtYWtlTm9k
ZSgiMiArIDIiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkJpbmFyeUV4cHJlc3Npb24p
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUubGVmdCk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5yaWdodCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVy
YXRvciA9PT0gIisiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIjIgLSAyIiwgdHJ1ZSk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIi0iKTsKKyAgICBub2RlID0g
bWFrZU5vZGUoIjIgKiAyIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5v
cGVyYXRvciA9PT0gIioiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIjIgLyAyIiwgdHJ1ZSk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gIi8iKTsKKyAgICBub2Rl
ID0gbWFrZU5vZGUoIjIgJSAyIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5vcGVyYXRvciA9PT0gIiUiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIjIgfCAyIiwgdHJ1ZSk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vcGVyYXRvciA9PT0gInwiKTsKKyAgICBu
b2RlID0gbWFrZU5vZGUoIjIgXiAyIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5vcGVyYXRvciA9PT0gIl4iKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIjIgPT0gMiIsIHRy
dWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09ICI9PSIpOwor
ICAgIG5vZGUgPSBtYWtlTm9kZSgiMiA9PT0gMiIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09ICI9PT0iKTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygi
cGFzc2VkIEJpbmFyeUV4cHJlc3Npb24iKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgibGFiZWw6
d2hpbGUodHJ1ZSkge2JyZWFrIGxhYmVsO30iLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5ib2R5LmJvZHkuYm9keVswXS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5CcmVha1N0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5ib2R5LmJvZHkuYm9keVswXS5sYWJlbC50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChub2RlLmJvZHkuYm9keS5ib2R5WzBdLmxhYmVsLm5hbWUgPT09ICJsYWJlbCIpOwor
ICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgQnJlYWtTdGF0ZW1lbnQiKTsKKworICAgIG5v
ZGUgPSBtYWtlTm9kZSgiZm9vKDIwLCAyNSkiLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBl
LkNhbGxFeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50
cyk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHMubGVuZ3RoID09PSAy
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50c1swXS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50c1sxXS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygicGFzc2VkIENhbGxFeHByZXNzaW9uIik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoInRyeSB7
fSBjYXRjaChlKSB7fSAiLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50
eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5UcnlTdGF0ZW1l
bnQpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgVHJ5U3RhdGVtZW50Iik7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5oYW5kbGVycy5sZW5ndGggPT09IDEpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuaGFuZGxlcnNbMF0udHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQ2F0Y2hDbGF1c2UpOworICAgIEluc3BlY3RvclRl
c3QubG9nKCJwYXNzZWQgQ2F0Y2hDbGF1c2UiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgiZm9v
ID8gYmFyIDogYmF6OyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQ29uZGl0aW9uYWxF
eHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnRlc3QpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuY29uc2VxdWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5hbHRlcm5hdGUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudGVz
dC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlm
aWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmNvbnNlcXVlbnQudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hbHRlcm5hdGUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVz
dC5sb2coInBhc3NlZCBDb25kaXRpb25hbEV4cHJlc3Npb24iKTsKKyAgICAKKyAgICBub2RlID0g
bWFrZU5vZGUoImxhYmVsOndoaWxlKHRydWUpIHtjb250aW51ZSBsYWJlbDt9IiwgZmFsc2UpOwor
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keS5ib2R5LmJvZHlbMF0udHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQ29udGludWVTdGF0ZW1lbnQp
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keS5ib2R5LmJvZHlbMF0ubGFiZWwu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmll
cik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5LmJvZHkuYm9keVswXS5sYWJl
bC5uYW1lID09PSAibGFiZWwiKTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIENvbnRp
bnVlU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoImRve313aGlsZSh0cnVlKTsi
LCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Eb1doaWxlU3RhdGVtZW50KTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUuQmxvY2tTdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUuYm9keS5ib2R5Lmxlbmd0aCA9PT0gMCk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS50ZXN0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnRlc3QudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBEb1doaWxlU3RhdGVtZW50Iik7CisKKyAgICBu
b2RlID0gbWFrZU5vZGUoImRlYnVnZ2VyOyIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBl
LkRlYnVnZ2VyU3RhdGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIERlYnVn
Z2VyU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoIjsiLCBmYWxzZSk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3lu
dGF4VHJlZS5Ob2RlVHlwZS5FbXB0eVN0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5sb2co
InBhc3NlZCBFbXB0eVN0YXRlbWVudCIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCIyICsgMiIs
IGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkV4cHJlc3Npb25TdGF0ZW1lbnQpOworICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZXhwcmVzc2lvbik7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5leHByZXNzaW9uLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLkJpbmFyeUV4cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QubG9n
KCJwYXNzZWQgRXhwcmVzc2lvblN0YXRlbWVudCIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJm
b3IoeCA9IDA7eCA8IDIwO3grKyl7fSIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZv
clN0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5pbml0KTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmluaXQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUuQXNzaWdubWVudEV4cHJlc3Npb24pOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUudGVzdCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50
ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkJpbmFy
eUV4cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudXBkYXRlKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnVwZGF0ZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5VcGRhdGVFeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLmJvZHkpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUu
Ym9keS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9j
a1N0YXRlbWVudCk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJmb3IoeCA9IDA7eCA8IDIwO3grKyk7
IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keSk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLkVtcHR5U3RhdGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygicGFzc2VkIEZvclN0YXRlbWVudCIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJmb3IodmFy
IHggaW4ge30pe30iLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Gb3JJblN0YXRlbWVu
dCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5sZWZ0KTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLmxlZnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRy
ZWUuTm9kZVR5cGUuVmFyaWFibGVEZWNsYXJhdGlvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQobm9kZS5yaWdodCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodC50eXBl
ID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5PYmplY3RFeHByZXNz
aW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkpOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUuYm9keS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4
VHJlZS5Ob2RlVHlwZS5CbG9ja1N0YXRlbWVudCk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJmb3Io
dmFyIHggaW4ge30pOyIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJv
ZHkpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5FbXB0eVN0YXRlbWVudCk7CisgICAgSW5z
cGVjdG9yVGVzdC5sb2coInBhc3NlZCBGb3JJblN0YXRlbWVudCIpOworCisgICAgbm9kZSA9IG1h
a2VOb2RlKCJmdW5jdGlvbiBmb28oeCx5KXt9IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5
cGUuRnVuY3Rpb25EZWNsYXJhdGlvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5w
YXJhbXMpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucGFyYW1zLmxlbmd0aCA9PT0g
Mik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wYXJhbXNbMF0udHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wYXJhbXNbMV0udHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNj
cmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5ib2R5KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQmxvY2tTdGF0ZW1l
bnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFub2RlLmlzR2V0dGVyT3JTZXR0ZXIpOwor
ICAgIG5vZGUgPSBtYWtlTm9kZSgieCA9IHtnZXQgZm9vKCl7cmV0dXJuIDIwfX0iLCB0cnVlKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnJpZ2h0LnByb3BlcnRpZXNbMF0udmFsdWUu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25F
eHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnJpZ2h0LnByb3BlcnRp
ZXNbMF0udmFsdWUuaXNHZXR0ZXJPclNldHRlcik7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJ4ID0g
e3NldCBmb28oeCl7cmV0dXJuIDIwfX0iLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLnJpZ2h0LnByb3BlcnRpZXNbMF0udmFsdWUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNj
cmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25FeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLnJpZ2h0LnByb3BlcnRpZXNbMF0udmFsdWUuaXNHZXR0ZXJPclNl
dHRlcik7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBGdW5jdGlvbkRlY2xhcmF0aW9u
Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoImZvbyhmdW5jdGlvbih4LHkpe30pIiwgdHJ1ZSk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHNbMF0udHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25FeHByZXNzaW9uKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50c1swXS5wYXJhbXMpOworICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRzWzBdLnBhcmFtcy5sZW5ndGggPT09
IDIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRzWzBdLnBhcmFtc1sw
XS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlm
aWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50c1swXS5wYXJhbXNb
MV0udHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRp
Zmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHNbMF0uYm9keSk7
CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHNbMF0uYm9keS50eXBlID09
PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5CbG9ja1N0YXRlbWVudCk7
CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBGdW5jdGlvbkV4cHJlc3Npb24iKTsKKwor
ICAgIG5vZGUgPSBtYWtlTm9kZSgiZm9vOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUu
SWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5uYW1lKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm5hbWUgPT09ICJmb28iKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmxvZygicGFzc2VkIElkZW50aWZpZXIiKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgiaWYg
KHRydWUpIGJhejsgZWxzZSBiYXI7IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWZT
dGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudGVzdCk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS50ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLkxpdGVyYWwpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUuY29uc2VxdWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5jb25zZXF1ZW50
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkV4cHJlc3Np
b25TdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYWx0ZXJuYXRlKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFsdGVybmF0ZS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5FeHByZXNzaW9uU3RhdGVtZW50KTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIElmU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0g
bWFrZU5vZGUoInRydWU7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50
eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnZhbHVlID09PSB0cnVlKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLnJhdyA9PT0gInRydWUiKTsKKyAgICBub2RlID0gbWFrZU5v
ZGUoImZhbHNlOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS52YWx1ZSA9PT0gZmFsc2UpOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUucmF3ID09PSAiZmFsc2UiKTsKKyAgICBub2RlID0gbWFrZU5vZGUo
IjIwOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS52YWx1ZSA9PT0gMjApOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG5vZGUucmF3ID09PSAiMjAiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIicyMCc7IiwgdHJ1
ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLnZhbHVlID09PSAnMjAnKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LnJhdyA9PT0gIicyMCciKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIm51bGw7IiwgdHJ1ZSk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS52YWx1ZSA9PT0gbnVsbCk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5yYXcgPT09ICJudWxsIik7CisgICAgbm9kZSA9IG1ha2VOb2Rl
KCIvcmVnZXgvZ2k7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS52YWx1
ZSBpbnN0YW5jZW9mIFJlZ0V4cCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS52YWx1
ZS50b1N0cmluZygpID09PSAiL3JlZ2V4L2dpIik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5yYXcgPT09ICIvcmVnZXgvZ2kiKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIjB4MTAiLCB0
cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnZhbHVlID09PSAweDEwKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnJhdyA9PT0gIjB4MTAiKTsKKyAgICBub2RlID0g
bWFrZU5vZGUoIjA3NzciLCB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnZh
bHVlID09PSAwNzc3KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnJhdyA9PT0gIjA3
NzciKTsKKyAgICBub2RlID0gbWFrZU5vZGUoIlwiYVwiIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS52YWx1ZSA9PT0gImEiKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLnJhdyA9PT0gIlwiYVwiIik7CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBM
aXRlcmFsIik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoImxhYmVsOndoaWxlKHRydWUpMjA7Iiwg
ZmFsc2UpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGFiZWxlZFN0YXRlbWVudCk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5sYWJlbCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5sYWJlbC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlw
ZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmxhYmVsLm5hbWUg
PT09ICJsYWJlbCIpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgTGFiZWxlZFN0YXRl
bWVudCIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJ4ICYmIDIwIiwgdHJ1ZSk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4
VHJlZS5Ob2RlVHlwZS5Mb2dpY2FsRXhwcmVzc2lvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQobm9kZS5sZWZ0KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmxlZnQudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodCk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5yaWdodC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5MaXRlcmFsKTsKKyAgICAvL0luc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUub3BlcmF0
b3IgPT09ICImJiIpOworICAgIG5vZGUgPSBtYWtlTm9kZSgieCB8fCAyMCIsIHRydWUpOworICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09ICJ8fCIpOworICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJwYXNzZWQgTG9naWNhbEV4cHJlc3Npb24iKTsKKworICAgIG5vZGUgPSBt
YWtlTm9kZSgiZm9vWzIwXSIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTWVtYmVyRXhw
cmVzc2lvbik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5jb21wdXRlZCk7CisgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5vYmplY3QpOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG5vZGUub2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5v
ZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucHJvcGVy
dHkpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucHJvcGVydHkudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgbm9kZSA9
IG1ha2VOb2RlKCJmb28uYmFyIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIW5v
ZGUuY29tcHV0ZWQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucHJvcGVydHkudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7
CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBNZW1iZXJFeHByZXNzaW9uIik7CisKKyAg
ICBub2RlID0gbWFrZU5vZGUoIm5ldyBGb28oMjApIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2Rl
VHlwZS5OZXdFeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmNhbGxl
ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5jYWxsZWUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHMpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KG5vZGUuYXJndW1lbnRzLmxlbmd0aCA9PT0gMSk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJuZXcg
Rm9vIiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5hcmd1bWVudHMpOwor
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnRzLmxlbmd0aCA9PT0gMCk7Cisg
ICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBOZXdFeHByZXNzaW9uIik7CisKKyAgICBub2Rl
ID0gbWFrZU5vZGUoInggPSB7Zm9vOmJhcn07IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5yaWdodC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5PYmplY3RFeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LnJpZ2h0LnByb3BlcnRpZXMpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucmlnaHQu
cHJvcGVydGllcy5sZW5ndGggPT09IDEpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQg
T2JqZWN0RXhwcmVzc2lvbiIpOworCisgICAgLy8gUHJvZ3JhbSBpcyB0ZXN0ZWQgaW4gbWFrZU5v
ZGUKKworICAgIG5vZGUgPSBtYWtlTm9kZSgieCA9IHtmb286MjB9OyIsIHRydWUpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucmlnaHQucHJvcGVydGllc1swXS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Qcm9wZXJ0eSk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodC5wcm9wZXJ0aWVzWzBdLmtleSk7CisgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQobm9kZS5yaWdodC5wcm9wZXJ0aWVzWzBdLmtleS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydChub2RlLnJpZ2h0LnByb3BlcnRpZXNbMF0udmFsdWUpOworICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucmlnaHQucHJvcGVydGllc1swXS52YWx1ZS50eXBlID09
PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5MaXRlcmFsKTsKKyAgICBu
b2RlID0gbWFrZU5vZGUoInggPSB7J2Zvbyc6MjB9OyIsIHRydWUpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUucmlnaHQucHJvcGVydGllc1swXS5rZXkpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUucmlnaHQucHJvcGVydGllc1swXS5rZXkudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgSW5zcGVjdG9yVGVz
dC5sb2coInBhc3NlZCBQcm9wZXJ0eSIpOworCisgICAgbm9kZSA9IG1ha2VOb2RlKCJmdW5jdGlv
biBmb28oKSB7IHJldHVybiAyMDsgfSIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLmJvZHkuYm9keVswXS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJl
ZS5Ob2RlVHlwZS5SZXR1cm5TdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUuYm9keS5ib2R5WzBdLmFyZ3VtZW50LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLkxpdGVyYWwpOworICAgIG5vZGUgPSBtYWtlTm9kZSgiZnVuY3Rpb24g
Zm9vKCkgeyByZXR1cm47IH0iLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5ib2R5LmJvZHlbMF0uYXJndW1lbnQgPT09IG51bGwpOworICAgIEluc3BlY3RvclRlc3QubG9n
KCJwYXNzZWQgUmV0dXJuU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoIih4LCB5
KSIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuU2VxdWVuY2VFeHByZXNzaW9uKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmV4cHJlc3Npb25zKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLmV4cHJlc3Npb25zLmxlbmd0aCA9PT0gMik7CisgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQobm9kZS5leHByZXNzaW9uc1swXS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmV4cHJlc3Npb25zWzFdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNz
ZWQgU2VxdWVuY2VFeHByZXNzaW9uIik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoInN3aXRjaCh4
KXtjYXNlIHk6YnJlYWs7fSIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2Rl
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlN3aXRjaFN0
YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kaXNjcmltaW5hbnQudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7
CisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBTd2l0Y2hTdGF0ZW1lbnQiKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmNhc2VzWzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5T
Y3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlN3aXRjaENhc2UpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUuY2FzZXNbMF0udGVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3lu
dGF4VHJlZS5Ob2RlVHlwZS5JZGVudGlmaWVyKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChu
b2RlLmNhc2VzWzBdLmNvbnNlcXVlbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KEFycmF5
LmlzQXJyYXkobm9kZS5jYXNlc1swXS5jb25zZXF1ZW50KSk7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5jYXNlc1swXS5jb25zZXF1ZW50Lmxlbmd0aCA9PT0gMSk7CisgICAgSW5zcGVj
dG9yVGVzdC5sb2coInBhc3NlZCBTd2l0Y2hDYXNlIik7CisKKyAgICBub2RlID0gbWFrZU5vZGUo
InRoaXM7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5UaGlzRXhwcmVzc2lvbik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBUaGlzRXhwcmVzc2lvbiIpOworCisgICAgbm9k
ZSA9IG1ha2VOb2RlKCJ0aHJvdyBuZXcgRXJyb3I7IiwgZmFsc2UpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9k
ZVR5cGUuVGhyb3dTdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJn
dW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1lbnQudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTmV3RXhwcmVzc2lvbik7Cisg
ICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBUaHJvd1N0YXRlbWVudCIpOworCisgICAgbm9k
ZSA9IG1ha2VOb2RlKCIhZm9vOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuVW5hcnlF
eHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50KTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50LnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09ICIhIik7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJ+
Zm9vOyIsIHRydWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09
ICJ+Iik7CisgICAgbm9kZSA9IG1ha2VOb2RlKCItZm9vOyIsIHRydWUpOworICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09ICItIik7CisgICAgSW5zcGVjdG9yVGVzdC5s
b2coInBhc3NlZCBVbmFyeUV4cHJlc3Npb24iKTsKKworICAgIG5vZGUgPSBtYWtlTm9kZSgiZm9v
Kys7IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5VcGRhdGVFeHByZXNzaW9uKTsKKyAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmFyZ3VtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydChub2RlLmFyZ3VtZW50LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUu
b3BlcmF0b3IgPT09ICIrKyIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucHJlZml4
ID09PSBmYWxzZSk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCIrK2ZvbzsiLCB0cnVlKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLlVwZGF0ZUV4cHJlc3Npb24pOworICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG5vZGUuYXJndW1lbnQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYXJndW1l
bnQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRp
Zmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wcmVmaXggPT09IHRydWUpOwor
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUub3BlcmF0b3IgPT09ICIrKyIpOworICAgIG5v
ZGUgPSBtYWtlTm9kZSgiLS1mb287IiwgdHJ1ZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5vcGVyYXRvciA9PT0gIi0tIik7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJmb28tLTsiLCB0
cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLm9wZXJhdG9yID09PSAiLS0iKTsK
KyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIFVwZGF0ZUV4cHJlc3Npb24iKTsKKworICAg
IG5vZGUgPSBtYWtlTm9kZSgidmFyIGZvbyA9IDIwOyIsIGZhbHNlKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5v
ZGVUeXBlLlZhcmlhYmxlRGVjbGFyYXRpb24pOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5v
ZGUuZGVjbGFyYXRpb25zKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmRlY2xhcmF0
aW9ucy5sZW5ndGggPT09IDEpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgVmFyaWFi
bGVEZWNsYXJhdGlvbiIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZGVjbGFyYXRp
b25zWzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLlZh
cmlhYmxlRGVjbGFyYXRvcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5kZWNsYXJh
dGlvbnNbMF0uaWQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZGVjbGFyYXRpb25z
WzBdLmlkLnR5cGUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZGVjbGFyYXRpb25z
WzBdLmlkLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklk
ZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZGVjbGFyYXRpb25zWzBd
LmluaXQpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuZGVjbGFyYXRpb25zWzBdLmlu
aXQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJh
bCk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJ2YXIgZm9vOyIsIGZhbHNlKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLmRlY2xhcmF0aW9uc1swXS5pbml0ID09PSBudWxsKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmxvZygicGFzc2VkIFZhcmlhYmxlRGVjbGFyYXRvciIpOworCisgICAgbm9k
ZSA9IG1ha2VOb2RlKCJ3aGlsZSh0cnVlKWJvbzsiLCBmYWxzZSk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2Rl
VHlwZS5XaGlsZVN0YXRlbWVudCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50ZXN0
KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnRlc3QudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTGl0ZXJhbCk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5ib2R5KTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHku
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRXhwcmVzc2lv
blN0YXRlbWVudCk7CisgICAgbm9kZSA9IG1ha2VOb2RlKCJ3aGlsZSh0cnVlKXt9IiwgZmFsc2Up
OworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUuYm9keSk7CisgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQobm9kZS5ib2R5LnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVl
Lk5vZGVUeXBlLkJsb2NrU3RhdGVtZW50KTsKKyAgICBJbnNwZWN0b3JUZXN0LmxvZygicGFzc2Vk
IFdoaWxlU3RhdGVtZW50Iik7CisKKyAgICBub2RlID0gbWFrZU5vZGUoIndpdGgobykge30iLCBm
YWxzZSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5XaXRoU3RhdGVtZW50KTsKKyAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChub2RlLm9iamVjdCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9k
ZS5vYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUu
SWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5KTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlw
dFN5bnRheFRyZWUuTm9kZVR5cGUuQmxvY2tTdGF0ZW1lbnQpOworICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJwYXNzZWQgV2l0aFN0YXRlbWVudCIpOworCisgICAgSW5zcGVjdG9yVGVzdC5sb2coInBh
c3NlZCBBTEwgVEVTVFMiKTsKKyAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>