<?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>180945</bug_id>
          
          <creation_ts>2017-12-18 13:52:53 -0800</creation_ts>
          <short_desc>Web Inspector: add RemoteObject.fetchProperties and some basic tests for RemoteObject API</short_desc>
          <delta_ts>2022-03-01 02:31:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit 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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1382885</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-18 13:52:53 -0800</bug_when>
    <thetext>This makes tests nice too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382953</commentid>
    <comment_count>1</comment_count>
      <attachid>329701</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-12-18 16:11:39 -0800</bug_when>
    <thetext>Created attachment 329701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1383404</commentid>
    <comment_count>2</comment_count>
      <attachid>329701</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-12-19 16:30:59 -0800</bug_when>
    <thetext>Comment on attachment 329701
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js:519
&gt; +            let processResultForCallback = (error, result, wasThrown) =&gt; {

Nit: You could just inline this and it might read even better.

&gt; LayoutTests/inspector/model/remote-object-api.html:15
&gt; +    &quot;resolved&quot;: Promise.resolve(666),
&gt; +    &quot;rejected&quot;: Promise.reject(new Error(&quot;I promised problems.&quot;)),

Nit: Perhaps a less contentious value.
Or remove these? They don&apos;t appear to be used, but do affect the page&apos;s output.

&gt; LayoutTests/inspector/model/remote-object-api.html:25
&gt; +            let object = await InspectorTest.evaluateInPage(&quot;window.testObject&quot;);

Nit: Use template strings for code. `window.testObject`, here and below.

&gt; LayoutTests/inspector/model/remote-object-api.html:85
&gt; +            let object = await InspectorTest.evaluateInPage(&quot;window.testObject&quot;);

Instead of doing this in each test, you can do this before runTestCasesAndFinish. That would reduce the protocol messages almost in half for this test.

&gt; LayoutTests/inspector/model/remote-object-api.html:186
&gt; +            InspectorTest.expectEqual(name, &quot;Favorites&quot;, `Fetched property &apos;name&apos; should equal &apos;Favorites&apos;`);
&gt; +            InspectorTest.expectEqual(size, 456, `Fetched property &apos;size&apos; should equal &apos;456&apos;`);
&gt; +            InspectorTest.expectThat(data instanceof WI.RemoteObject, `Fetched property &apos;data&apos; should be a WI.RemoteObject`);

Nit: End these messages with a period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385916</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2018-01-04 13:29:20 -0800</bug_when>
    <thetext>Committed r226417: &lt;https://trac.webkit.org/changeset/226417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385920</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-04 13:30:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/36304406&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329701</attachid>
            <date>2017-12-18 16:11:39 -0800</date>
            <delta_ts>2022-03-01 02:31:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180945-20171218161138.patch</filename>
            <type>text/plain</type>
            <size>21039</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
NDg1ZDdiMzZhMDg0OWM5MWQ5NWJmNDA4MTJmOTVjYjhiYWRlMmViLi41YTgwYzU2NzdmZjJhNDkz
OTk4MzlmNzZlYTNmODJlY2E4N2JmN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNSBAQAorMjAxNy0xMi0xOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgUmVtb3RlT2JqZWN0LmZldGNoUHJvcGVydGllcyBh
bmQgc29tZSBiYXNpYyB0ZXN0cyBmb3IgUmVtb3RlT2JqZWN0IEFQSQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwOTQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IG1ldGhvZCwgZmV0Y2hQ
cm9wZXJ0aWVzLCB3aGljaCBhc3luYyBmZXRjaGVzIGFuIGFyYml0cmFyeSBsaXN0IG9mIHByb3Bl
cnRpZXMKKyAgICAgICAgZnJvbSBhIFJlbW90ZU9iamVjdC4gVGhpcyBpcyBpbnRlbmRlZCBmb3Ig
d3JpdGluZyB0ZXN0cyBhbmQgb3RoZXIgcXVpY2sgZXZhbHVhdGlvbnMsCisgICAgICAgIHNvIGl0
IGhhcyBzb21lIGJlaGF2aW9ycyB0aGF0IGFyZSBzdWl0YWJsZSBpbiB0aGVzZSBzaXR1YXRpb25z
OgorICAgICAgICAtIElmIHRoZSBldmFsdWF0aW9uIHRocm93cyBhbiBleGNlcHRpb24sIHRoZSBy
ZXN1bHQgd2lsbCByZWplY3Qgd2l0aCB0aGF0IGV4Y2VwdGlvbi4KKyAgICAgICAgLSBJZiB0aGVy
ZSBpcyBhIHByb3RvY29sIGVycm9yIGZvciBzb21lIHJlYXNvbiwgdGhlIHJlc3VsdCB3aWxsIHJl
amVjdCB3aXRoIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgLSBOb24tc3RyaW5nIGFuZCBub24tbnVt
YmVyIGtleXMgY2F1c2UgYW4gZXhjZXB0aW9uLCBhcyB0aGlzIGlzIHByb2JhYmx5IG5vdCBpbnRl
bmRlZC4KKyAgICAgICAgLSBEb2VzIG5vdCBhY2NlcHQgYSBjYWxsYmFjaywgcmV0dXJucyBhIHBy
b21pc2Ugb25seS4gTmV3IGNvZGUgc2hvdWxkIHVzZSBhc3luYy4KKworICAgICAgICBGb3IgZnVs
bCBmaWRlbGl0eSBpbnRyb3NwZWN0aW9uIG9mIHByb3BlcnR5IGRlc2NyaXB0b3JzLCBjbGllbnRz
IHNob3VsZCB1c2UgdGhlIGV4aXN0aW5nCisgICAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cltzXSBjbGFzcyBvZiBtZXRob2RzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9SZW1vdGVPYmplY3QuanM6CisgICAgICAgIChXSS5SZW1vdGVPYmplY3QucHJvdG90eXBlLmFz
eW5jLmZldGNoUHJvcGVydGllcyk6IEFkZGVkLgorICAgICAgICAtIFZhbGlkYXRlIHNwZWNpZmll
ZCBrZXlzIGFuZCByZW1vdmUgZHVwbGljYXRlcy4KKyAgICAgICAgLSBSZXF1ZXN0IHByb3BlcnRp
ZXMgb25lLWJ5LW9uZSB0byBhdm9pZCBmZXRjaGluZyBhbGwgZGVzY3JpcHRvcnMgYW5kIGRlYWxp
bmcgd2l0aCBwcmV2aWV3cy4KKyAgICAgICAgLSBVbndyYXAgcmV0dXJuZWQgcHJpbWl0aXZlIHZh
bHVlcyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBtdW5naW5nIGluIHRlc3RzLgorCisgICAgICAgIChX
SS5SZW1vdGVPYmplY3QucHJvdG90eXBlLmdldFByb3BlcnR5KToKKyAgICAgICAgLSBSZXdvcmsg
dGhpcyB0byByZXR1cm4gYSBwcm9taXNlIGlmIG5vIGNhbGxiYWNrIHdhcyBzdXBwbGllZC4KKyAg
ICAgICAgLSBJbnRyb2R1Y2Ugc3RyaWN0ZXIgcHJvcGVydHkgdHlwZSBjaGVja2luZyB0byBhdm9p
ZCB1bmludGVuZGVkIG1pc3Rha2VzLgorCisgICAgICAgIChXSS5SZW1vdGVPYmplY3QucHJvdG90
eXBlLmNhbGxGdW5jdGlvbik6CisgICAgICAgIC0gUmV3b3JrIHRoaXMgdG8gcmV0dXJuIGEgcHJv
bWlzZSBpZiBubyBjYWxsYmFjayB3YXMgc3VwcGxpZWQuCisgICAgICAgIC0gVHVybiB0aHJvd24g
ZXhjZXB0aW9ucyBhbmQgcHJvdG9jb2wgZXJyb3JzIGludG8gcmVqZWN0ZWQgcHJvbWlzZXMuCisK
IDIwMTctMTItMTggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24gZG9lcyBub3QgaGFuZGxl
IGltcGxpY2l0bHkgcmVzb2x2ZWQgYXN5bmMgZnVuY3Rpb25zIGNvcnJlY3RseQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2Jq
ZWN0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVt
b3RlT2JqZWN0LmpzCmluZGV4IGM1YWJkMDU1MWIyNDExNzgwNDY4YTIzMDMzZDIwYzc1M2I0YzRm
MGYuLjE5NTQ4ZTllZDgwNjgyNmY1MTU5NmU1NTkwN2Y1NzM3MDI0MWYwYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVj
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9S
ZW1vdGVPYmplY3QuanMKQEAgLTQ2MiwyOSArNDYyLDc0IEBAIFdJLlJlbW90ZU9iamVjdCA9IGNs
YXNzIFJlbW90ZU9iamVjdAogICAgICAgICAgICAgY2FsbGJhY2soMCk7CiAgICAgfQogCi0gICAg
Z2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCBjYWxsYmFjaykKKyAgICBhc3luYyBmZXRjaFByb3Bl
cnRpZXMocHJvcGVydHlOYW1lcywgcmVzdWx0T2JqZWN0PXt9KQogICAgIHsKLSAgICAgICAgZnVu
Y3Rpb24gaW5zcGVjdGVkUGFnZV9vYmplY3RfZ2V0UHJvcGVydHkocHJvcGVydHkpIHsKLSAgICAg
ICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5XTsKKyAgICAgICAgbGV0IHNlZW5Qcm9wZXJ0eU5h
bWVzID0gbmV3IFNldDsKKyAgICAgICAgbGV0IHJlcXVlc3RlZFZhbHVlcyA9IFtdOworICAgICAg
ICBmb3IgKGxldCBwcm9wZXJ0eU5hbWUgb2YgcHJvcGVydHlOYW1lcykgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgdGhpcyBoZXJlLCBvdGhlcndpc2UgdGhpbmdzIGxpa2UgJ3t9JyB3b3VsZCBiZSB2
YWxpZCBTZXQga2V5cy4KKyAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHlOYW1lICE9PSAi
c3RyaW5nIiAmJiB0eXBlb2YgcHJvcGVydHlOYW1lICE9PSAibnVtYmVyIikKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYFRyaWVkIHRvIGdldCBwcm9wZXJ0eSB1c2luZyBrZXkgaXMg
bm90IGEgc3RyaW5nIG9yIG51bWJlcjogJHtwcm9wZXJ0eU5hbWV9YCk7CisKKyAgICAgICAgICAg
IGlmIChzZWVuUHJvcGVydHlOYW1lcy5oYXMocHJvcGVydHlOYW1lKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgc2VlblByb3BlcnR5TmFtZXMuYWRkKHByb3BlcnR5
TmFtZSk7CisgICAgICAgICAgICByZXF1ZXN0ZWRWYWx1ZXMucHVzaCh0aGlzLmdldFByb3BlcnR5
KHByb3BlcnR5TmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5jYWxsRnVuY3Rpb24o
aW5zcGVjdGVkUGFnZV9vYmplY3RfZ2V0UHJvcGVydHksIFtwcm9wZXJ0eU5hbWVdLCB0cnVlLCBj
YWxsYmFjayk7CisgICAgICAgIC8vIFJldHVybiBwcmltaXRpdmUgdmFsdWVzIGRpcmVjdGx5LCBv
dGhlcndpc2UgcmV0dXJuIGEgV0kuUmVtb3RlT2JqZWN0IGluc3RhbmNlLgorICAgICAgICBmdW5j
dGlvbiBtYXliZVVud3JhcFZhbHVlKHJlbW90ZU9iamVjdCkgeworICAgICAgICAgICAgcmV0dXJu
IHJlbW90ZU9iamVjdC5oYXNWYWx1ZSgpID8gcmVtb3RlT2JqZWN0LnZhbHVlIDogcmVtb3RlT2Jq
ZWN0OworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVxdWVzdCBwcm9wZXJ0eSB2YWx1ZXMgb25l
IGJ5IG9uZSwgc2luY2UgcmV0dXJuaW5nIGFuIGFycmF5IG9mIHByb3BlcnR5CisgICAgICAgIC8v
IHZhbHVlcyB3b3VsZCB0aGVuIGJlIHN1YmplY3QgdG8gYXJiaXRyYXJ5IG9iamVjdCBwcmV2aWV3
IHNpemUgbGltaXRzLgorICAgICAgICBsZXQgZmV0Y2hlZEtleXMgPSBBcnJheS5mcm9tKHNlZW5Q
cm9wZXJ0eU5hbWVzKTsKKyAgICAgICAgbGV0IGZldGNoZWRWYWx1ZXMgPSBhd2FpdCBQcm9taXNl
LmFsbChyZXF1ZXN0ZWRWYWx1ZXMpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZldGNo
ZWRLZXlzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgcmVzdWx0T2JqZWN0W2ZldGNoZWRLZXlz
W2ldXSA9IG1heWJlVW53cmFwVmFsdWUoZmV0Y2hlZFZhbHVlc1tpXSk7CisKKyAgICAgICAgcmV0
dXJuIHJlc3VsdE9iamVjdDsKICAgICB9CiAKLSAgICBjYWxsRnVuY3Rpb24oZnVuY3Rpb25EZWNs
YXJhdGlvbiwgYXJncywgZ2VuZXJhdGVQcmV2aWV3LCBjYWxsYmFjaykKKyAgICBnZXRQcm9wZXJ0
eShwcm9wZXJ0eU5hbWUsIGNhbGxiYWNrID0gbnVsbCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9u
IG15Y2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXN1bHQgPSByZXN1bHQgPyBXSS5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocmVzdWx0
LCB0aGlzLl90YXJnZXQpIDogbnVsbDsKKyAgICAgICAgZnVuY3Rpb24gaW5zcGVjdGVkUGFnZV9v
YmplY3RfZ2V0UHJvcGVydHkocHJvcGVydHkpIHsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgcHJv
cGVydHkgIT09ICJzdHJpbmciICYmIHR5cGVvZiBwcm9wZXJ0eSAhPT0gIm51bWJlciIpCisgICAg
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUcmllZCB0byBnZXQgcHJvcGVydHkgdXNpbmcg
a2V5IGlzIG5vdCBhIHN0cmluZyBvciBudW1iZXI6ICR7cHJvcGVydHl9YCk7CiAKLSAgICAgICAg
ICAgIGlmIChjYWxsYmFjayAmJiB0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCi0gICAg
ICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzW3Byb3BlcnR5XTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChjYWxs
YmFjayAmJiB0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICB0aGlz
LmNhbGxGdW5jdGlvbihpbnNwZWN0ZWRQYWdlX29iamVjdF9nZXRQcm9wZXJ0eSwgW3Byb3BlcnR5
TmFtZV0sIHRydWUsIGNhbGxiYWNrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJu
IHRoaXMuY2FsbEZ1bmN0aW9uKGluc3BlY3RlZFBhZ2Vfb2JqZWN0X2dldFByb3BlcnR5LCBbcHJv
cGVydHlOYW1lXSwgdHJ1ZSk7CisgICAgfQorCisgICAgY2FsbEZ1bmN0aW9uKGZ1bmN0aW9uRGVj
bGFyYXRpb24sIGFyZ3MsIGdlbmVyYXRlUHJldmlldywgY2FsbGJhY2sgPSBudWxsKQorICAgIHsK
KyAgICAgICAgbGV0IHRyYW5zbGF0ZVJlc3VsdCA9IChyZXN1bHQpID0+IHJlc3VsdCA/IFdJLlJl
bW90ZU9iamVjdC5mcm9tUGF5bG9hZChyZXN1bHQsIHRoaXMuX3RhcmdldCkgOiBudWxsOworCiAg
ICAgICAgIGlmIChhcmdzKQogICAgICAgICAgICAgYXJncyA9IGFyZ3MubWFwKFdJLlJlbW90ZU9i
amVjdC5jcmVhdGVDYWxsQXJndW1lbnQpOwogCi0gICAgICAgIHRoaXMuX3RhcmdldC5SdW50aW1l
QWdlbnQuY2FsbEZ1bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIGFwcGVuZFdlYkluc3BlY3RvclNv
dXJjZVVSTChmdW5jdGlvbkRlY2xhcmF0aW9uLnRvU3RyaW5nKCkpLCBhcmdzLCB0cnVlLCB1bmRl
ZmluZWQsICEhZ2VuZXJhdGVQcmV2aWV3LCBteWNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAg
ICBpZiAoY2FsbGJhY2sgJiYgdHlwZW9mIGNhbGxiYWNrID09PSAiZnVuY3Rpb24iKSB7CisgICAg
ICAgICAgICBsZXQgcHJvY2Vzc1Jlc3VsdEZvckNhbGxiYWNrID0gKGVycm9yLCByZXN1bHQsIHdh
c1Rocm93bikgPT4geworICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCB0cmFuc2xhdGVS
ZXN1bHQocmVzdWx0KSwgd2FzVGhyb3duKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICB0
aGlzLl90YXJnZXQuUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9uKHRoaXMuX29iamVjdElkLCBh
cHBlbmRXZWJJbnNwZWN0b3JTb3VyY2VVUkwoZnVuY3Rpb25EZWNsYXJhdGlvbi50b1N0cmluZygp
KSwgYXJncywgdHJ1ZSwgdW5kZWZpbmVkLCAhIWdlbmVyYXRlUHJldmlldywgcHJvY2Vzc1Jlc3Vs
dEZvckNhbGxiYWNrKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFByb3RvY29s
IGVycm9ycyBhbmQgcmVzdWx0cyB0aGF0IHdlcmUgdGhyb3duIHNob3VsZCBjYXVzZSBwcm9taXNl
IHJlamVjdGlvbiB3aXRoIHRoZSBzYW1lLgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rhcmdl
dC5SdW50aW1lQWdlbnQuY2FsbEZ1bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIGFwcGVuZFdlYklu
c3BlY3RvclNvdXJjZVVSTChmdW5jdGlvbkRlY2xhcmF0aW9uLnRvU3RyaW5nKCkpLCBhcmdzLCB0
cnVlLCB1bmRlZmluZWQsICEhZ2VuZXJhdGVQcmV2aWV3KQorICAgICAgICAgICAgICAgIC50aGVu
KCh7cmVzdWx0LCB3YXNUaHJvd259KSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9
IHRyYW5zbGF0ZVJlc3VsdChyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ICYmIHdhc1Rocm93bikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdChyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KHJlc3VsdCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBj
YWxsRnVuY3Rpb25KU09OKGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3MsIGNhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGMwZGJjZDg2ZDZjYjc2N2JmYjc1ZDA1YzY2OTUxM2QyOTZmN2FkN2IuLjQ5MzY5MDFjMzVj
ZGQyNDNlZjE0ZWQzYTEyYTQyMzk0NmU4MTkyOGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ny0xMi0xOCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBhZGQgUmVtb3RlT2JqZWN0LmZldGNoUHJvcGVydGllcyBhbmQgc29tZSBiYXNpYyB0
ZXN0cyBmb3IgUmVtb3RlT2JqZWN0IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwOTQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0IGNvdmVyYWdlIGZvciBleGlzdGluZyBSZW1v
dGVPYmplY3QucHJvdG90eXBlLmdldFByb3BlcnR5LgorICAgICAgICBBZGQgbmV3IHRlc3QgY292
ZXJhZ2UgZm9yIG5ldyBtZXRob2QgUmVtb3RlT2JqZWN0LnByb3RvdHlwZS5mZXRjaFByb3BlcnRp
ZXMuCisgICAgICAgIEkgZGlkbid0IGFkZCB0ZXN0IGNvdmVyYWdlIGZvciBjYWxsRnVuY3Rpb24s
IGFzIEkgaGFkIHRvIHN0b3Agc29tZXdoZXJlLgorCisgICAgICAgICogaW5zcGVjdG9yL21vZGVs
L3JlbW90ZS1vYmplY3QtYXBpLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL21vZGVsL3JlbW90ZS1vYmplY3QtYXBpLmh0bWw6IEFkZGVkLgorCiAyMDE3LTEyLTE4ICBC
cmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IElu
c3BlY3RvclRlc3QuZXhwZWN0RXhjZXB0aW9uIGRvZXMgbm90IGhhbmRsZSBpbXBsaWNpdGx5IHJl
c29sdmVkIGFzeW5jIGZ1bmN0aW9ucyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1hcGktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNmYjFhNzQ2Y2Y5MDNjZTQzMWU0OGE2MTVmYjhlZTRlYTk2NTIzYTkKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVtb3RlLW9iamVjdC1hcGkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNjMgQEAKK0NPTlNPTEUgTUVTU0FHRTogVW5oYW5kbGVk
IFByb21pc2UgUmVqZWN0aW9uOiBFcnJvcjogSSBwcm9taXNlZCBwcm9ibGVtcy4KK1Rlc3Rpbmcg
YmFzaWMgQVBJIGFuZCBjb252ZW5pZW5jZSBtZXRob2RzIG9mIFJlbW90ZU9iamVjdC4KKworCis9
PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFJlbW90ZU9iamVjdC5BUEkKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBSZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkuU3VjY2Vzc1dpdGhDYWxsYmFjay5TdHJpbmcK
K1BBU1M6IFNob3VsZCBub3QgaGF2ZSBhIHRocm93biBleGNlcHRpb24uCitQQVNTOiBGZXRjaGVk
IHByb3BlcnR5IHNob3VsZCBoYXZlIGEgcHJpbWl0aXZlIHZhbHVlLgorUEFTUzogRmV0Y2hlZCBw
cm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBSZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkuU3VjY2Vzc1dpdGhDYWxsYmFjay5OdW1iZXIK
K1BBU1M6IFNob3VsZCBub3QgaGF2ZSBhIHRocm93biBleGNlcHRpb24uCitQQVNTOiBGZXRjaGVk
IHByb3BlcnR5IHNob3VsZCBoYXZlIGEgcHJpbWl0aXZlIHZhbHVlLgorUEFTUzogRmV0Y2hlZCBw
cm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBSZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkuTm90Rm91bmRXaXRoQ2FsbGJhY2sKK1BBU1M6
IFNob3VsZCBub3QgaGF2ZSBhIHRocm93biBleGNlcHRpb24uCitQQVNTOiBGZXRjaGVkIHByb3Bl
cnR5IHNob3VsZCBoYXZlIGEgcHJpbWl0aXZlIHZhbHVlLgorUEFTUzogRmV0Y2hlZCBwcm9wZXJ0
eSB2YWx1ZSBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBS
ZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkuRmFpbHVyZVdpdGhDYWxsYmFjaworUEFTUzogU2hvdWxk
IGhhdmUgYSB0aHJvd24gZXhjZXB0aW9uLgorUEFTUzogRmV0Y2hlZCBwcm9wZXJ0eSBzaG91bGQg
bm90IGhhdmUgYSBwcmltaXRpdmUgdmFsdWUuCitQQVNTOiBGZXRjaGVkIHByb3BlcnR5IHZhbHVl
IHNob3VsZCBoYXZlIHR5cGUgYG9iamVjdGAuCitQQVNTOiBGZXRjaGVkIHByb3BlcnR5IHZhbHVl
IHNob3VsZCBoYXZlIHN1YnR5cGUgYGVycm9yYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFJl
bW90ZU9iamVjdC5nZXRQcm9wZXJ0eS5TdWNjZXNzV2l0aFByb21pc2UuU3RyaW5nCitQQVNTOiBG
ZXRjaGVkIHByb3BlcnR5IHNob3VsZCBoYXZlIGEgcHJpbWl0aXZlIHZhbHVlLgorUEFTUzogRmV0
Y2hlZCBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBSZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkuU3VjY2Vzc1dpdGhQcm9taXNlLk51
bWJlcgorUEFTUzogRmV0Y2hlZCBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBhIHByaW1pdGl2ZSB2YWx1
ZS4KK1BBU1M6IEZldGNoZWQgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGJlIGFzIGV4cGVjdGVkLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogUmVtb3RlT2JqZWN0LmdldFByb3BlcnR5LkZhaWx1cmVX
aXRoUHJvbWlzZQorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorW29iamVjdCBP
YmplY3RdCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSZW1vdGVPYmplY3QuZmV0Y2hQcm9wZXJ0
aWVzLlN1Y2Nlc3MKK1BBU1M6IFJlc3VsdCBvYmplY3Qgc2hvdWxkIGNvbnRhaW4gdGhyZWUga2V5
cy4KK1BBU1M6IFJlc3VsdCBvYmplY3Qgc2hvdWxkIGNvbnRhaW4gZmV0Y2hlZCBwcm9wZXJ0eSAn
bmFtZScuCitQQVNTOiBSZXN1bHQgb2JqZWN0IHNob3VsZCBjb250YWluIGZldGNoZWQgcHJvcGVy
dHkgJ3NpemUnLgorUEFTUzogUmVzdWx0IG9iamVjdCBzaG91bGQgY29udGFpbiBmZXRjaGVkIHBy
b3BlcnR5ICdkYXRhJy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IFJlbW90ZU9iamVjdC5mZXRj
aFByb3BlcnRpZXMuU3VjY2Vzc1dpdGhEdXBsaWNhdGVLZXkKK1BBU1M6IFJlc3VsdCBvYmplY3Qg
c2hvdWxkIGNvbnRhaW4gdGhyZWUga2V5cy4KK1BBU1M6IFJlc3VsdCBvYmplY3Qgc2hvdWxkIGNv
bnRhaW4gZmV0Y2hlZCBwcm9wZXJ0eSAnbmFtZScuCitQQVNTOiBSZXN1bHQgb2JqZWN0IHNob3Vs
ZCBjb250YWluIGZldGNoZWQgcHJvcGVydHkgJ3NpemUnLgorUEFTUzogUmVzdWx0IG9iamVjdCBz
aG91bGQgY29udGFpbiBmZXRjaGVkIHByb3BlcnR5ICdkYXRhJy4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IFJlbW90ZU9iamVjdC5mZXRjaFByb3BlcnRpZXMuU3VjY2Vzc1dpdGhPdXRwdXRPYmpl
Y3QKK1BBU1M6IFJlc29sdmVkIHZhbHVlIHNob3VsZCBiZSB0aGUgcGFzc2VkLWluIHJlc3VsdCBv
YmplY3QuCitQQVNTOiBSZXN1bHQgb2JqZWN0IHNob3VsZCBjb250YWluIGZldGNoZWQgcHJvcGVy
dHkgJ25hbWUnLgorUEFTUzogUmVzdWx0IG9iamVjdCBzaG91bGQgY29udGFpbiBmZXRjaGVkIHBy
b3BlcnR5ICdzaXplJy4KK1BBU1M6IFJlc3VsdCBvYmplY3Qgc2hvdWxkIGNvbnRhaW4gZmV0Y2hl
ZCBwcm9wZXJ0eSAnZGF0YScuCitQQVNTOiBGZXRjaGVkIHByb3BlcnR5ICduYW1lJyBzaG91bGQg
ZXF1YWwgJ0Zhdm9yaXRlcycKK1BBU1M6IEZldGNoZWQgcHJvcGVydHkgJ3NpemUnIHNob3VsZCBl
cXVhbCAnNDU2JworUEFTUzogRmV0Y2hlZCBwcm9wZXJ0eSAnZGF0YScgc2hvdWxkIGJlIGEgV0ku
UmVtb3RlT2JqZWN0CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBSZW1vdGVPYmplY3QuZmV0Y2hQ
cm9wZXJ0aWVzLkZhaWx1cmVXaXRoSW52YWxpZEtleQorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4g
ZXhjZXB0aW9uLgorRXJyb3I6IFRyaWVkIHRvIGdldCBwcm9wZXJ0eSB1c2luZyBrZXkgaXMgbm90
IGEgc3RyaW5nIG9yIG51bWJlcjogW29iamVjdCBPYmplY3RdCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWFwaS5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3JlbW90ZS1vYmplY3QtYXBpLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Ez
NzZjZGI3ODNlZGE3OTg3MTcxZmM1MDkyYzZlZWY2NzNjMTYwYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZW1vdGUtb2JqZWN0LWFwaS5odG1sCkBAIC0w
LDAgKzEsMjEwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+Cit3aW5kb3cudGVzdE9iamVjdCA9IHsKKyAgICAxOiB0cnVl
LAorICAgICJuYW1lIjogIkZhdm9yaXRlcyIsCisgICAgImxhYmVsIjogIkkgbGlrZSBpY2UgY3Jl
YW0iLAorICAgICJzaXplIjogNDU2LAorICAgICJudW1iZXJzIjogWzEsIDIsIDNdLAorICAgICJk
YXRhIjoge3g6IDQyLCB5OiA1MH0sCisgICAgImVycm9yIjogbmV3IEVycm9yKCJJIGhhdmUgcHJv
YmxlbXMuIiksCisgICAgInJlc29sdmVkIjogUHJvbWlzZS5yZXNvbHZlKDY2NiksCisgICAgInJl
amVjdGVkIjogUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJJIHByb21pc2VkIHByb2JsZW1zLiIp
KSwKK307CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRl
c3QuY3JlYXRlQXN5bmNTdWl0ZSgiUmVtb3RlT2JqZWN0LkFQSSIpOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUmVtb3RlT2JqZWN0LmdldFByb3BlcnR5LlN1Y2Nl
c3NXaXRoQ2FsbGJhY2suU3RyaW5nIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBvYmplY3QgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5k
b3cudGVzdE9iamVjdCIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQob2JqZWN0
IGluc3RhbmNlb2YgV0kuUmVtb3RlT2JqZWN0LCAiU2hvdWxkIGdldCBhIHJlbW90ZSBvYmplY3Qu
Iik7CisKKyAgICAgICAgICAgIGxldCBmaW5pc2hlZCA9IG5ldyBXSS5XcmFwcGVkUHJvbWlzZTsK
KyAgICAgICAgICAgIG9iamVjdC5nZXRQcm9wZXJ0eSgibmFtZSIsIChlcnJvciwgcmVzdWx0LCB3
YXNUaHJvd24pID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghZXJy
b3IsICJTaG91bGQgbm90IGhhdmUgYSBwcm90b2NvbCBlcnJvci4iKTsKKworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uod2FzVGhyb3duLCAiU2hvdWxkIG5vdCBoYXZl
IGEgdGhyb3duIGV4Y2VwdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQocmVzdWx0Lmhhc1ZhbHVlKCksICJGZXRjaGVkIHByb3BlcnR5IHNob3VsZCBoYXZl
IGEgcHJpbWl0aXZlIHZhbHVlLiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocmVzdWx0LnZhbHVlLCAiRmF2b3JpdGVzIiwgIkZldGNoZWQgcHJvcGVydHkgdmFs
dWUgc2hvdWxkIGJlIGFzIGV4cGVjdGVkLiIpOworICAgICAgICAgICAgICAgIGVycm9yID8gZmlu
aXNoZWQucmVqZWN0KGVycm9yKSA6IGZpbmlzaGVkLnJlc29sdmUoKTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICBhd2FpdCBmaW5pc2hlZC5wcm9taXNlOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJSZW1vdGVPYmpl
Y3QuZ2V0UHJvcGVydHkuU3VjY2Vzc1dpdGhDYWxsYmFjay5OdW1iZXIiLAorICAgICAgICBhc3lu
YyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9iamVjdCA9IGF3YWl0IEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoIndpbmRvdy50ZXN0T2JqZWN0Iik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXSS5SZW1vdGVPYmplY3QsICJTaG91bGQg
Z2V0IGEgcmVtb3RlIG9iamVjdC4iKTsKKworICAgICAgICAgICAgbGV0IGZpbmlzaGVkID0gbmV3
IFdJLldyYXBwZWRQcm9taXNlOworICAgICAgICAgICAgb2JqZWN0LmdldFByb3BlcnR5KDEsIChl
cnJvciwgcmVzdWx0LCB3YXNUaHJvd24pID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYSBwcm90b2NvbCBlcnJvci4iKTsK
KworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2Uod2FzVGhyb3duLCAi
U2hvdWxkIG5vdCBoYXZlIGEgdGhyb3duIGV4Y2VwdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocmVzdWx0Lmhhc1ZhbHVlKCksICJGZXRjaGVkIHByb3Bl
cnR5IHNob3VsZCBoYXZlIGEgcHJpbWl0aXZlIHZhbHVlLiIpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LnZhbHVlLCB0cnVlLCAiRmV0Y2hlZCBwcm9w
ZXJ0eSB2YWx1ZSBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgICAgICAgICAgZXJy
b3IgPyBmaW5pc2hlZC5yZWplY3QoZXJyb3IpIDogZmluaXNoZWQucmVzb2x2ZSgpOworICAgICAg
ICAgICAgfSk7CisKKyAgICAgICAgICAgIGF3YWl0IGZpbmlzaGVkLnByb21pc2U7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlJl
bW90ZU9iamVjdC5nZXRQcm9wZXJ0eS5Ob3RGb3VuZFdpdGhDYWxsYmFjayIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb2JqZWN0ID0gYXdhaXQgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZSgid2luZG93LnRlc3RPYmplY3QiKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KG9iamVjdCBpbnN0YW5jZW9mIFdJLlJlbW90ZU9iamVjdCwgIlNob3Vs
ZCBnZXQgYSByZW1vdGUgb2JqZWN0LiIpOworCisgICAgICAgICAgICBsZXQgZmluaXNoZWQgPSBu
ZXcgV0kuV3JhcHBlZFByb21pc2U7CisgICAgICAgICAgICBvYmplY3QuZ2V0UHJvcGVydHkoImRv
ZXNOb3RFeGlzdCIsIChlcnJvciwgcmVzdWx0LCB3YXNUaHJvd24pID0+IHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghZXJyb3IsICJTaG91bGQgbm90IGhhdmUgYSBwcm90
b2NvbCBlcnJvci4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFs
c2Uod2FzVGhyb3duLCAiU2hvdWxkIG5vdCBoYXZlIGEgdGhyb3duIGV4Y2VwdGlvbi4iKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQocmVzdWx0Lmhhc1ZhbHVlKCks
ICJGZXRjaGVkIHByb3BlcnR5IHNob3VsZCBoYXZlIGEgcHJpbWl0aXZlIHZhbHVlLiIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LnZhbHVlLCB1bmRl
ZmluZWQsICJGZXRjaGVkIHByb3BlcnR5IHZhbHVlIHNob3VsZCBiZSBhcyBleHBlY3RlZC4iKTsK
KyAgICAgICAgICAgICAgICBlcnJvciA/IGZpbmlzaGVkLnJlamVjdChlcnJvcikgOiBmaW5pc2hl
ZC5yZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgYXdhaXQgZmluaXNo
ZWQucHJvbWlzZTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiUmVtb3RlT2JqZWN0LmdldFByb3BlcnR5LkZhaWx1cmVXaXRoQ2Fs
bGJhY2siLAorICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9iamVjdCA9
IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIndpbmRvdy50ZXN0T2JqZWN0Iik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXSS5S
ZW1vdGVPYmplY3QsICJTaG91bGQgZ2V0IGEgcmVtb3RlIG9iamVjdC4iKTsKKworICAgICAgICAg
ICAgbGV0IGZpbmlzaGVkID0gbmV3IFdJLldyYXBwZWRQcm9taXNlOworICAgICAgICAgICAgb2Jq
ZWN0LmdldFByb3BlcnR5KHt9LCAoZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKSA9PiB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWVycm9yLCAiU2hvdWxkIG5vdCBoYXZl
IGEgcHJvdG9jb2wgZXJyb3IuIik7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQod2FzVGhyb3duLCAiU2hvdWxkIGhhdmUgYSB0aHJvd24gZXhjZXB0aW9uLiIpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UocmVzdWx0Lmhhc1ZhbHVl
KCksICJGZXRjaGVkIHByb3BlcnR5IHNob3VsZCBub3QgaGF2ZSBhIHByaW1pdGl2ZSB2YWx1ZS4i
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc3VsdC50eXBl
LCAib2JqZWN0IiwgIkZldGNoZWQgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGhhdmUgdHlwZSBgb2Jq
ZWN0YC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc3Vs
dC5zdWJ0eXBlLCAiZXJyb3IiLCAiRmV0Y2hlZCBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgaGF2ZSBz
dWJ0eXBlIGBlcnJvcmAuIik7CisKKyAgICAgICAgICAgICAgICBlcnJvciA/IGZpbmlzaGVkLnJl
amVjdChlcnJvcikgOiBmaW5pc2hlZC5yZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgYXdhaXQgZmluaXNoZWQucHJvbWlzZTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUmVtb3RlT2JqZWN0LmdldFBy
b3BlcnR5LlN1Y2Nlc3NXaXRoUHJvbWlzZS5TdHJpbmciLAorICAgICAgICBhc3luYyB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IG9iamVjdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoIndpbmRvdy50ZXN0T2JqZWN0Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChvYmplY3QgaW5zdGFuY2VvZiBXSS5SZW1vdGVPYmplY3QsICJTaG91bGQgZ2V0IGEgcmVt
b3RlIG9iamVjdC4iKTsKKworICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IG9iamVjdC5n
ZXRQcm9wZXJ0eSgibmFtZSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0
KHJlc3VsdC5oYXNWYWx1ZSgpLCAiRmV0Y2hlZCBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBhIHByaW1p
dGl2ZSB2YWx1ZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVz
dWx0LnZhbHVlLCAiRmF2b3JpdGVzIiwgIkZldGNoZWQgcHJvcGVydHkgdmFsdWUgc2hvdWxkIGJl
IGFzIGV4cGVjdGVkLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJSZW1vdGVPYmplY3QuZ2V0UHJvcGVydHkuU3VjY2Vzc1dp
dGhQcm9taXNlLk51bWJlciIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBs
ZXQgb2JqZWN0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93LnRl
c3RPYmplY3QiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG9iamVjdCBpbnN0
YW5jZW9mIFdJLlJlbW90ZU9iamVjdCwgIlNob3VsZCBnZXQgYSByZW1vdGUgb2JqZWN0LiIpOwor
CisgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgb2JqZWN0LmdldFByb3BlcnR5KDEpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHJlc3VsdC5oYXNWYWx1ZSgpLCAi
RmV0Y2hlZCBwcm9wZXJ0eSBzaG91bGQgaGF2ZSBhIHByaW1pdGl2ZSB2YWx1ZS4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmVzdWx0LnZhbHVlLCB0cnVlLCAiRmV0
Y2hlZCBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUgYXMgZXhwZWN0ZWQuIik7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIlJlbW90
ZU9iamVjdC5nZXRQcm9wZXJ0eS5GYWlsdXJlV2l0aFByb21pc2UiLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IG9iamVjdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoIndpbmRvdy50ZXN0T2JqZWN0Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXSS5SZW1vdGVPYmplY3QsICJTaG91bGQgZ2V0
IGEgcmVtb3RlIG9iamVjdC4iKTsKKworICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4geworICAgICAgICAgICAgICAgIGF3YWl0IG9iamVj
dC5nZXRQcm9wZXJ0eSh7fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUmVtb3RlT2JqZWN0LmZl
dGNoUHJvcGVydGllcy5TdWNjZXNzIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBvYmplY3QgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5k
b3cudGVzdE9iamVjdCIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQob2JqZWN0
IGluc3RhbmNlb2YgV0kuUmVtb3RlT2JqZWN0LCAiU2hvdWxkIGdldCBhIHJlbW90ZSBvYmplY3Qu
Iik7CisKKyAgICAgICAgICAgIGxldCBrZXlzID0gWyJuYW1lIiwgInNpemUiLCAiZGF0YSJdOwor
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IG9iamVjdC5mZXRjaFByb3BlcnRpZXMoa2V5
cyk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoT2JqZWN0LmtleXMo
cmVzdWx0KS5sZW5ndGgsIDMsICJSZXN1bHQgb2JqZWN0IHNob3VsZCBjb250YWluIHRocmVlIGtl
eXMuIik7CisgICAgICAgICAgICBmb3IgKGxldCBrZXkgb2Yga2V5cykKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoa2V5IGluIHJlc3VsdCwgYFJlc3VsdCBvYmplY3Qg
c2hvdWxkIGNvbnRhaW4gZmV0Y2hlZCBwcm9wZXJ0eSAnJHtrZXl9Jy5gKTsKKyAgICAgICAgfQor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUmVtb3Rl
T2JqZWN0LmZldGNoUHJvcGVydGllcy5TdWNjZXNzV2l0aER1cGxpY2F0ZUtleSIsCisgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgb2JqZWN0ID0gYXdhaXQgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93LnRlc3RPYmplY3QiKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KG9iamVjdCBpbnN0YW5jZW9mIFdJLlJlbW90ZU9iamVjdCwgIlNo
b3VsZCBnZXQgYSByZW1vdGUgb2JqZWN0LiIpOworCisgICAgICAgICAgICBsZXQga2V5cyA9IFsi
bmFtZSIsICJzaXplIiwgImRhdGEiLCAiZGF0YSJdOworICAgICAgICAgICAgbGV0IHJlc3VsdCA9
IGF3YWl0IG9iamVjdC5mZXRjaFByb3BlcnRpZXMoa2V5cyk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoT2JqZWN0LmtleXMocmVzdWx0KS5sZW5ndGgsIDMsICJSZXN1
bHQgb2JqZWN0IHNob3VsZCBjb250YWluIHRocmVlIGtleXMuIik7CisgICAgICAgICAgICBmb3Ig
KGxldCBrZXkgb2YgbmV3IFNldChrZXlzKSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdFRoYXQoa2V5IGluIHJlc3VsdCwgYFJlc3VsdCBvYmplY3Qgc2hvdWxkIGNvbnRhaW4g
ZmV0Y2hlZCBwcm9wZXJ0eSAnJHtrZXl9Jy5gKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiUmVtb3RlT2JqZWN0LmZldGNoUHJv
cGVydGllcy5TdWNjZXNzV2l0aE91dHB1dE9iamVjdCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7
CisgICAgICAgICAgICBsZXQgb2JqZWN0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZSgid2luZG93LnRlc3RPYmplY3QiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KG9iamVjdCBpbnN0YW5jZW9mIFdJLlJlbW90ZU9iamVjdCwgIlNob3VsZCBnZXQgYSByZW1v
dGUgb2JqZWN0LiIpOworCisgICAgICAgICAgICBsZXQgcmVzdWx0T2JqZWN0ID0geyJleGlzdGlu
Z0tleSI6IHRydWV9OworICAgICAgICAgICAgbGV0IGtleXMgPSBbIm5hbWUiLCAic2l6ZSIsICJk
YXRhIl07CisgICAgICAgICAgICBsZXQgcmV0dXJuVmFsdWUgPSBhd2FpdCBvYmplY3QuZmV0Y2hQ
cm9wZXJ0aWVzKGtleXMsIHJlc3VsdE9iamVjdCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHJldHVyblZhbHVlLCByZXN1bHRPYmplY3QsICJSZXNvbHZlZCB2YWx1ZSBz
aG91bGQgYmUgdGhlIHBhc3NlZC1pbiByZXN1bHQgb2JqZWN0LiIpOworICAgICAgICAgICAgZm9y
IChsZXQga2V5IG9mIGtleXMpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KGtleSBpbiByZXN1bHRPYmplY3QsIGBSZXN1bHQgb2JqZWN0IHNob3VsZCBjb250YWluIGZl
dGNoZWQgcHJvcGVydHkgJyR7a2V5fScuYCk7CisKKyAgICAgICAgICAgIGxldCB7bmFtZSwgc2l6
ZSwgZGF0YX0gPSByZXR1cm5WYWx1ZTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwobmFtZSwgIkZhdm9yaXRlcyIsIGBGZXRjaGVkIHByb3BlcnR5ICduYW1lJyBzaG91bGQg
ZXF1YWwgJ0Zhdm9yaXRlcydgKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoc2l6ZSwgNDU2LCBgRmV0Y2hlZCBwcm9wZXJ0eSAnc2l6ZScgc2hvdWxkIGVxdWFsICc0NTYn
YCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoZGF0YSBpbnN0YW5jZW9m
IFdJLlJlbW90ZU9iamVjdCwgYEZldGNoZWQgcHJvcGVydHkgJ2RhdGEnIHNob3VsZCBiZSBhIFdJ
LlJlbW90ZU9iamVjdGApOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJSZW1vdGVPYmplY3QuZmV0Y2hQcm9wZXJ0aWVzLkZhaWx1
cmVXaXRoSW52YWxpZEtleSIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBs
ZXQgb2JqZWN0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93LnRl
c3RPYmplY3QiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG9iamVjdCBpbnN0
YW5jZW9mIFdJLlJlbW90ZU9iamVjdCwgIlNob3VsZCBnZXQgYSByZW1vdGUgb2JqZWN0LiIpOwor
CisgICAgICAgICAgICBsZXQga2V5cyA9IFsibmFtZSIsICJzaXplIiwge31dOworICAgICAgICAg
ICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5leHBlY3RFeGNlcHRpb24oYXN5bmMgKCkgPT4geworICAg
ICAgICAgICAgICAgIGF3YWl0IG9iamVjdC5mZXRjaFByb3BlcnRpZXMoa2V5cyk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5k
RmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgp
Ij4KKyAgICA8cD5UZXN0aW5nIGJhc2ljIEFQSSBhbmQgY29udmVuaWVuY2UgbWV0aG9kcyBvZiBS
ZW1vdGVPYmplY3QuPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUK
</data>
<flag name="review"
          id="348752"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>