<?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>16121</bug_id>
          
          <creation_ts>2007-11-24 12:55:26 -0800</creation_ts>
          <short_desc>Web Inspector needs helper functions that pass a &apos;this&apos; object to addEventListener and setTimeout</short_desc>
          <delta_ts>2007-11-24 14:36:20 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>62186</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-11-24 12:55:26 -0800</bug_when>
    <thetext>The Web Inspector code is very object oriented and it needs to add event listeners and timeouts that call object functions with a correct &apos;this&apos; object.

A common practice sprinkles throughout the code is:

var _self = this;
setTimeout(function() { _self.foo() }, 0);
node.addEventListener(&apos;bar&apos;, function() { _self.bar() }, false);

We should add helper functions that simplify this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62187</commentid>
    <comment_count>1</comment_count>
      <attachid>17487</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-11-24 13:04:59 -0800</bug_when>
    <thetext>Created attachment 17487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62188</commentid>
    <comment_count>2</comment_count>
      <attachid>17487</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-24 13:18:24 -0800</bug_when>
    <thetext>Comment on attachment 17487
Patch

I was thinking about fixing this as well, but in a slightly different way. I was going to add a new function:

Function.bind = function(func, thisObject) {
    return function() { func.call(thisObject) }
}

Then you could do things like:

setTimeout(Function.bind(this.updateTitle, this), 0);

What do you think about that solution? I like that it&apos;s very general and so can be used in more places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62189</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-24 13:19:24 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Function.bind = function(func, thisObject) {
&gt;     return function() { func.call(thisObject) }
&gt; }

You&apos;d want to pass arguments through, as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62190</commentid>
    <comment_count>4</comment_count>
      <attachid>17487</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-11-24 13:33:12 -0800</bug_when>
    <thetext>Comment on attachment 17487
Patch

I am going to redo this based on Adam&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62198</commentid>
    <comment_count>5</comment_count>
      <attachid>17488</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-11-24 14:27:21 -0800</bug_when>
    <thetext>Created attachment 17488
Revised Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62199</commentid>
    <comment_count>6</comment_count>
      <attachid>17488</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-11-24 14:34:19 -0800</bug_when>
    <thetext>Comment on attachment 17488
Revised Patch

I think &quot;toggleExpanded&quot; would be clearer than just &quot;toggle&quot; for the two places you added that function.

I don&apos;t think the order of the &lt;script&gt; elements matters, since none of this code gets executed as it&apos;s parsed.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62200</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-11-24 14:36:20 -0800</bug_when>
    <thetext>Landed in r28002. http://trac.webkit.org/projects/webkit/changeset/28002</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17487</attachid>
            <date>2007-11-24 13:04:59 -0800</date>
            <delta_ts>2007-11-24 13:33:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>16121.patch</filename>
            <type>text/plain</type>
            <size>24489</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTk5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDctMTEt
MjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAxNjEyMTogV2ViIEluc3BlY3Rv
ciBuZWVkcyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgcGFzcyBhICd0aGlzJyBvYmplY3QgdG8gYWRk
RXZlbnRMaXN0ZW5lciBhbmQgc2V0VGltZW91dAorICAgICAgICBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyMQorCisgICAgICAgIEFkZCBzZXRPYmplY3RUaW1lb3V0
IGFuZCBhZGRPYmplY3RFdmVudExpc3RlbmVyLiBUaGVzZSBoZWxwZXIgZnVuY3Rpb25zCisgICAg
ICAgIHRha2UgYW4gZXh0cmEgYXJndW1lbnQgd2hpY2ggaXMgdXNlZCBhcyAndGhpcycgd2hlbiBj
YWxsaW5nIHRoZQorICAgICAgICBwYXNzZWQgZnVuY3Rpb24uCisKKyAgICAgICAgKiBwYWdlL2lu
c3BlY3Rvci9EYXRhYmFzZS5qczogUmVtb3ZlIGEgdXNlIG9mIHNldFRpbWVvdXQgYnkKKyAgICAg
ICAgICBpbmhlcml0aW5nIHNvbWUgY29tbW9uIGZ1bmN0aW9ucyBmcm9tIFJlc291cmNlLgorICAg
ICAgICAqIHBhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlUGFuZWwuanM6IFVzZSB0aGUgbmV3IGhlbHBl
ciBmdW5jdGlvbnMuCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvQ29uc29sZVBhbmVsLmpzOiBE
aXR0by4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9Eb2N1bWVudFBhbmVsLmpzOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9OZXR3b3JrUGFuZWwuanM6IERpdHRvLgorICAgICAg
ICAqIHBhZ2UvaW5zcGVjdG9yL1Byb3BlcnRpZXNTZWN0aW9uLmpzOiBEaXR0by4KKyAgICAgICAg
KiBwYWdlL2luc3BlY3Rvci9SZXNvdXJjZS5qczogRGl0dG8uCisgICAgICAgICogcGFnZS9pbnNw
ZWN0b3IvU2lkZWJhclBhbmUuanM6IERpdHRvLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL2lu
c3BlY3Rvci5odG1sOiBNb3ZlZCBEYXRhYmFzZS5qcyBhZnRlciBSZXNvdXJjZS5qcywKKyAgICAg
ICAgICBub3cgdGhhdCBEYXRhYmFzZS5qcyB1c2VzIGl0LgorICAgICAgICAqIHBhZ2UvaW5zcGVj
dG9yL2luc3BlY3Rvci5qczogVXNlIHRoZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4gQWxzbworICAg
ICAgICAgIHJlbW92ZWQgYSBzZXRUaW1lb3V0IHVzZWQgZm9yIHRoZSBsb2NhbGl6ZWQgc3RyaW5n
cyBjb2RlLiBUaGVyZSBpcworICAgICAgICAgIG5vdyBhIGxvYWQgZXZlbnQgbGlzdGVuZXIgYWRk
ZWQgdG8gdGhlIGxvY2FsaXplZCBzdHJpbmdzIHNjcmlwdAorICAgICAgICAgIGVsZW1lbnQgdGhh
dCB3aWxsIGNhbGwgV2ViSW5zcGVjdG9yLmxvYWRlZC4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rv
ci91dGlsaXRpZXMuanM6IEFkZCBzZXRPYmplY3RUaW1lb3V0IGFuZAorICAgICAgICAgIGFkZE9i
amVjdEV2ZW50TGlzdGVuZXIuCisKIDIwMDctMTEtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBw
YWdlL2luc3BlY3Rvci9Db25zb2xlUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9pbnNwZWN0
b3IvQ29uc29sZVBhbmVsLmpzCShyZXZpc2lvbiAyNzk5NikKKysrIHBhZ2UvaW5zcGVjdG9yL0Nv
bnNvbGVQYW5lbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMzksMTQgKzM5LDEzIEBAIFdlYkluc3Bl
Y3Rvci5Db25zb2xlUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5tZXNzYWdlTGlzdC5jbGFz
c05hbWUgPSAiY29uc29sZS1tZXNzYWdlLWxpc3QiOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLm1lc3NhZ2VMaXN0KTsKIAotICAgIHZhciBjb25zb2xlID0gdGhpczsKLSAgICB0
aGlzLm1lc3NhZ2VMaXN0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZXZlbnQp
IHsgY29uc29sZS5tZXNzYWdlTGlzdENsaWNrZWQoZXZlbnQpIH0sIHRydWUpOworICAgIHRoaXMu
bWVzc2FnZUxpc3QuYWRkT2JqZWN0RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLCB0aGlzLm1l
c3NhZ2VMaXN0Q2xpY2tlZCwgdHJ1ZSk7CiAKICAgICB0aGlzLmNvbnNvbGVQcm9tcHQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpOwogICAgIHRoaXMuY29uc29sZVByb21wdC5j
bGFzc05hbWUgPSAiY29uc29sZS1wcm9tcHQiOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLmNvbnNvbGVQcm9tcHQpOwogCi0gICAgdGhpcy5jb25zb2xlUHJvbXB0LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbihldmVudCkgeyBjb25zb2xlLnByb21wdEtleXBy
ZXNzKGV2ZW50KSB9LCBmYWxzZSk7CisgICAgdGhpcy5jb25zb2xlUHJvbXB0LmFkZE9iamVjdEV2
ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLCB0aGlzLnByb21wdEtleXByZXNzLCBmYWxzZSk7
CiB9CiAKIFdlYkluc3BlY3Rvci5Db25zb2xlUGFuZWwucHJvdG90eXBlID0gewpJbmRleDogcGFn
ZS9pbnNwZWN0b3IvRGF0YWJhc2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9pbnNwZWN0b3IvRGF0
YWJhc2UuanMJKHJldmlzaW9uIDI3OTk2KQorKysgcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2UuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTk1LDE0ICs5NSw2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29y
aWVzLmRhdGFiYXNlczsKICAgICB9LAogCi0gICAgdXBkYXRlVGl0bGVTb29uOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy51cGRhdGVUaXRsZVRpbWVvdXQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIHZhciBfc2VsZiA9IHRoaXM7Ci0gICAgICAgIHRoaXMudXBkYXRl
VGl0bGVUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IF9zZWxmLnVwZGF0ZVRpdGxl
KCkgfSwgMCk7Ci0gICAgfSwKLQogICAgIHVwZGF0ZVRpdGxlOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICBkZWxldGUgdGhpcy51cGRhdGVUaXRsZVRpbWVvdXQ7CkBAIC0xMjgsMjYgKzEyMCwx
MCBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
dGhpcy5fcGFuZWw7CiAgICAgfSwKIAotICAgIHNlbGVjdDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRlVG9SZXNvdXJjZSh0aGlzKTsKLSAgICB9LAotCi0g
ICAgZGVzZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMubGlzdEl0ZW0uZGVz
ZWxlY3QodHJ1ZSk7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsID09PSB0
aGlzLl9wYW5lbCkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jdXJyZW50UGFuZWwgPSBudWxs
OwotICAgIH0sCi0KLSAgICBhdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
cGFuZWwuYXR0YWNoKCk7Ci0gICAgfSwKLQotICAgIGRldGFjaDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX3BhbmVsKQotICAgICAgICAgICAgdGhpcy5wYW5lbC5kZXRhY2go
KTsKLSAgICB9CisgICAgLy8gSW5oZXJpdCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZyb20gdGhlIFJl
c291cmNlIHByb3RvdHlwZS4KKyAgICB1cGRhdGVUaXRsZVNvb246IFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5wcm90b3R5cGUudXBkYXRlVGl0bGVTb29uLAorICAgIHNlbGVjdDogV2ViSW5zcGVjdG9y
LlJlc291cmNlLnByb3RvdHlwZS5zZWxlY3QsCisgICAgZGVzZWxlY3Q6IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5wcm90b3R5cGUuZGVzZWxlY3QsCisgICAgYXR0YWNoOiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UucHJvdG90eXBlLmF0dGFjaCwKKyAgICBkZXRhY2g6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUuZGV0YWNoCiB9CkluZGV4OiBwYWdlL2luc3BlY3Rvci9EYXRhYmFzZVBhbmVs
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHBhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlUGFuZWwuanMJKHJldmlz
aW9uIDI3OTk2KQorKysgcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2VQYW5lbC5qcwkod29ya2luZyBj
b3B5KQpAQCAtNDAsOCArNDAsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VQYW5lbCA9IGZ1bmN0
aW9uKGRhCiAgICAgdGhpcy5xdWVyeVByb21wdEVsZW1lbnQuY2xhc3NOYW1lID0gImRhdGFiYXNl
LXByb21wdCI7CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucXVlcnlQcm9tcHRF
bGVtZW50KTsKIAotICAgIHZhciBwYW5lbCA9IHRoaXM7Ci0gICAgdGhpcy5xdWVyeVByb21wdEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGZ1bmN0aW9uKGV2ZW50KSB7IHBhbmVs
LnF1ZXJ5SW5wdXRLZXlwcmVzcyhldmVudCkgfSwgZmFsc2UpOworICAgIHRoaXMucXVlcnlQcm9t
cHRFbGVtZW50LmFkZE9iamVjdEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLCB0aGlzLnF1
ZXJ5SW5wdXRLZXlwcmVzcywgZmFsc2UpOwogCiAgICAgdGhpcy5xdWVyeVByb21wdEhpc3Rvcnkg
PSBbXTsKICAgICB0aGlzLnF1ZXJ5UHJvbXB0SGlzdG9yeU9mZnNldCA9IDA7CkBAIC01Miw2ICs1
MSw3IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVBhbmVsID0gZnVuY3Rpb24oZGEKICAgICBxdWVy
eVZpZXcuY29tbWFuZExpc3RFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhYmFzZS1jb21tYW5kLWxp
c3QiOwogICAgIHF1ZXJ5Vmlldy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChxdWVyeVZpZXcu
Y29tbWFuZExpc3RFbGVtZW50KTsKIAorICAgIHZhciBwYW5lbCA9IHRoaXM7CiAgICAgcXVlcnlW
aWV3LnNob3cgPSBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBwYW5lbC5xdWVyeVByb21wdEVs
ZW1lbnQuZm9jdXMoKTsKQEAgLTY5LDcgKzY5LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlUGFu
ZWwgPSBmdW5jdGlvbihkYQogICAgIGJyb3dzZVZpZXcucmVsb2FkVGFibGVFbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKICAgICBicm93c2VWaWV3LnJl
bG9hZFRhYmxlRWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUtcmVsb2FkIjsKICAg
ICBicm93c2VWaWV3LnJlbG9hZFRhYmxlRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVsb2FkIik7Ci0gICAgYnJvd3NlVmlldy5yZWxvYWRUYWJsZUVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsgcGFuZWwudXBkYXRlVGFibGVMaXN0KCk7
IHBhbmVsLnVwZGF0ZVRhYmxlQnJvd3NlcigpIH0sIGZhbHNlKTsKKyAgICBicm93c2VWaWV3LnJl
bG9hZFRhYmxlRWxlbWVudC5hZGRPYmplY3RFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMsIHRo
aXMucmVsb2FkQ2xpY2tlZCwgZmFsc2UpOwogCiAgICAgYnJvd3NlVmlldy5zaG93ID0gZnVuY3Rp
b24oKQogICAgIHsKQEAgLTEzNSw2ICsxMzUsMTIgQEAgcmV0dXJuIHsKICAgICAgICAgfQogICAg
IH0sCiAKKyAgICByZWxvYWRDbGlja2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlz
LnVwZGF0ZVRhYmxlTGlzdCgpOworICAgICAgICB0aGlzLnVwZGF0ZVRhYmxlQnJvd3NlcigpOwor
ICAgIH0sCisKICAgICB1cGRhdGVUYWJsZUxpc3Q6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAg
IHZhciBicm93c2VWaWV3ID0gdGhpcy52aWV3cy5icm93c2U7CkBAIC0xNDUsNyArMTUxLDYgQEAg
cmV0dXJuIHsKICAgICAgICAgICAgIHZhciBwYW5lbCA9IHRoaXM7CiAgICAgICAgICAgICB2YXIg
Y2hhbmdlVGFibGVGdW5jdGlvbiA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB2YXIgYnJvd3NlVmlldyA9IHBhbmVsLnZpZXdzLmJyb3dzZTsKICAgICAgICAgICAg
ICAgICB2YXIgaW5kZXggPSBicm93c2VWaWV3LnRhYmxlU2VsZWN0RWxlbWVudC5zZWxlY3RlZElu
ZGV4OwogICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkKICAgICAgICAgICAgICAgICAg
ICAgcGFuZWwuY3VycmVudFRhYmxlID0gYnJvd3NlVmlldy50YWJsZVNlbGVjdEVsZW1lbnQub3B0
aW9uc1tpbmRleF0udmFsdWU7CkluZGV4OiBwYWdlL2luc3BlY3Rvci9Eb2N1bWVudFBhbmVsLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHBhZ2UvaW5zcGVjdG9yL0RvY3VtZW50UGFuZWwuanMJKHJldmlzaW9u
IDI3OTk5KQorKysgcGFnZS9pbnNwZWN0b3IvRG9jdW1lbnRQYW5lbC5qcwkod29ya2luZyBjb3B5
KQpAQCAtODMsNyArODMsNyBAQCBXZWJJbnNwZWN0b3IuRG9jdW1lbnRQYW5lbCA9IGZ1bmN0aW9u
KHJlCiAKICAgICBkb21WaWV3LnNpZGViYXJSZXNpemVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICAgZG9tVmlldy5zaWRlYmFyUmVzaXplRWxlbWVudC5jbGFzc05h
bWUgPSAic2lkZWJhci1yZXNpemVyLXZlcnRpY2FsIHNpZGViYXItcmVzaXplci12ZXJ0aWNhbC1y
aWdodCI7Ci0gICAgZG9tVmlldy5zaWRlYmFyUmVzaXplRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCBmdW5jdGlvbihldmVudCkgeyBwYW5lbC5yaWdodFNpZGViYXJSZXNpemVy
RHJhZ1N0YXJ0KGV2ZW50KSB9LCBmYWxzZSk7CisgICAgZG9tVmlldy5zaWRlYmFyUmVzaXplRWxl
bWVudC5hZGRPYmplY3RFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLCB0aGlzLnJpZ2h0
U2lkZWJhclJlc2l6ZXJEcmFnU3RhcnQsIGZhbHNlKTsKIAogICAgIGRvbVZpZXcuY29udGVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZG9tVmlldy5zaWRlQ29udGVudEVsZW1lbnQpOwogICAgIGRvbVZp
ZXcuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9tVmlldy5zaWRlYmFyRWxlbWVudCk7CkBA
IC0zODQsOCArMzg0LDcgQEAgV2ViSW5zcGVjdG9yLkRvY3VtZW50UGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIDw9IDApIHsKICAgICAg
ICAgICAgIC8vIFRoZSBzdHlsZXNoZWV0IGhhc24ndCBsb2FkZWQgeWV0LCBzbyB3ZSBuZWVkIHRv
IHVwZGF0ZSBsYXRlci4KLSAgICAgICAgICAgIHZhciBwYW5lbCA9IHRoaXM7Ci0gICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBwYW5lbC51cGRhdGVCcmVhZGNydW1iU2l6ZXMoKSB9
LCAwKTsKKyAgICAgICAgICAgIHNldE9iamVjdFRpbWVvdXQodGhpcywgdGhpcy51cGRhdGVCcmVh
ZGNydW1iU2l6ZXMsIDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTc1
NSw4ICs3NTQsNyBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50LnByb3RvdHlwCiAK
ICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggPD0gMCkgewogICAgICAgICAg
ICAgLy8gVGhlIHN0eWxlc2hlZXQgaGFzbid0IGxvYWRlZCB5ZXQsIHNvIHdlIG5lZWQgdG8gdXBk
YXRlIGxhdGVyLgotICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzOwotICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgZWxlbWVudC51cGRhdGVTZWxlY3Rpb24oKSB9LCAwKTsK
KyAgICAgICAgICAgIHNldE9iamVjdFRpbWVvdXQodGhpcywgdGhpcy51cGRhdGVTZWxlY3Rpb24s
IDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTc3MSw4ICs3NjksNyBA
QCBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50LnByb3RvdHlwCiAKICAgICBvbmF0dGFj
aDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzOwotICAgICAg
ICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBmdW5j
dGlvbihldmVudCkgeyBlbGVtZW50Lm9ubW91c2Vkb3duKGV2ZW50KSB9LCBmYWxzZSk7CisgICAg
ICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZE9iamVjdEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMsIHRoaXMub25tb3VzZWRvd24sIGZhbHNlKTsKICAgICB9LAogCiAgICAgb25wb3B1
bGF0ZTogZnVuY3Rpb24oKQpJbmRleDogcGFnZS9pbnNwZWN0b3IvTmV0d29ya1BhbmVsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHBhZ2UvaW5zcGVjdG9yL05ldHdvcmtQYW5lbC5qcwkocmV2aXNpb24gMjc5
OTkpCisrKyBwYWdlL2luc3BlY3Rvci9OZXR3b3JrUGFuZWwuanMJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDggKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5lbCA9IGZ1bmN0aW9uKCkKIAog
ICAgIHRoaXMucmVzb3VyY2VzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgIHRoaXMucmVzb3VyY2VzRWxlbWVudC5jbGFzc05hbWUgPSAibmV0d29yay1yZXNvdXJj
ZXMiOwotICAgIHZhciBwYW5lbCA9IHRoaXM7Ci0gICAgdGhpcy5yZXNvdXJjZXNFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsgcmV0dXJuIHBhbmVsLm9u
Q2xpY2soZXZlbnQpIH0sIGZhbHNlKTsKKyAgICB0aGlzLnJlc291cmNlc0VsZW1lbnQuYWRkT2Jq
ZWN0RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLCB0aGlzLnJlc291cmNlc0NsaWNrZWQsIGZh
bHNlKTsKICAgICB0aGlzLnRpbWVsaW5lRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJlc291cmNl
c0VsZW1lbnQpOwogCiAgICAgdmFyIGdyYXBoQXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwpAQCAtNjAsNyArNTksNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVu
Y3Rpb24oKQogCiAgICAgdGhpcy5ncmFwaE1vZGVTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgic2VsZWN0Iik7CiAgICAgdGhpcy5ncmFwaE1vZGVTZWxlY3RFbGVtZW50LmNs
YXNzTmFtZSA9ICJuZXR3b3JrLWdyYXBoLW1vZGUiOwotICAgIHRoaXMuZ3JhcGhNb2RlU2VsZWN0
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbihldmVudCkgeyByZXR1
cm4gcGFuZWwub25Nb2RlQ2hhbmdlKGV2ZW50KSB9LCBmYWxzZSk7CisgICAgdGhpcy5ncmFwaE1v
ZGVTZWxlY3RFbGVtZW50LmFkZE9iamVjdEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMsIHRo
aXMuY2hhbmdlR3JhcGhNb2RlLCBmYWxzZSk7CiAgICAgdGhpcy5ncmFwaExhYmVsRWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLmdyYXBoTW9kZVNlbGVjdEVsZW1lbnQpOwogICAgIHRoaXMuZ3JhcGhM
YWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7CiAK
QEAgLTExMiw3ICsxMTEsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy51cGRhdGVUaW1lbGluZURpdmlkZXJzSWZOZWVkZWQoKTsKICAgICB9
LAogCi0gICAgb25DbGljazogZnVuY3Rpb24oZXZlbnQpCisgICAgcmVzb3VyY2VzQ2xpY2tlZDog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICAvLyBJZiB0aGUgY2xpY2sgd2Fzbid0IGlu
c2lkZSBhIG5ldHdvcmsgcmVzb3VyY2Ugcm93LCBpZ25vcmUgaXQuCiAgICAgICAgIHZhciByZXNv
dXJjZUVsZW1lbnQgPSBldmVudC50YXJnZXQuZmlyc3RQYXJlbnRPclNlbGZXaXRoQ2xhc3MoIm5l
dHdvcmstcmVzb3VyY2UiKTsKQEAgLTEzNCw3ICsxMzMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmVzb3VyY2VFbGVtZW50LnRpbWVsaW5lRW50
cnkudG9nZ2xlU2hvd2luZ0luZm8oKTsKICAgICB9LAogCi0gICAgb25Nb2RlQ2hhbmdlOiBmdW5j
dGlvbihldmVudCkKKyAgICBjaGFuZ2VHcmFwaE1vZGU6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy51cGRhdGVTdW1tYXJ5R3JhcGgoKTsKICAgICB9LApAQCAtMjMwLDkgKzIy
OSw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgaWYgKCJzb3J0VGltZWxpbmVFbnRyaWVzVGltZW91dCIgaW4gdGhpcykKICAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB2YXIgX3NlbGYgPSB0aGlzOwotICAgICAgICB0aGlzLnNv
cnRUaW1lbGluZUVudHJpZXNUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IF9zZWxm
LnNvcnRUaW1lbGluZUVudHJpZXNJZk5lZWRlZCgpIH0sIDUwMCk7CisgICAgICAgIHRoaXMuc29y
dFRpbWVsaW5lRW50cmllc1RpbWVvdXQgPSBzZXRPYmplY3RUaW1lb3V0KHRoaXMsIHRoaXMuc29y
dFRpbWVsaW5lRW50cmllc0lmTmVlZGVkLCA1MDApOwogICAgIH0sCiAKICAgICBzb3J0VGltZWxp
bmVFbnRyaWVzSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKQEAgLTI4Myw5ICsyODAsNyBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICgidXBk
YXRlVGltZWxpbmVEaXZpZGVyc1RpbWVvdXQiIGluIHRoaXMpCiAgICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdmFyIF9zZWxmID0gdGhpczsKLSAgICAgICAgdGhpcy51cGRhdGVUaW1lbGlu
ZURpdmlkZXJzVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBfc2VsZi51cGRhdGVU
aW1lbGluZURpdmlkZXJzSWZOZWVkZWQoKSB9LCA1MDApOworICAgICAgICB0aGlzLnVwZGF0ZVRp
bWVsaW5lRGl2aWRlcnNUaW1lb3V0ID0gc2V0T2JqZWN0VGltZW91dCh0aGlzLCB0aGlzLnVwZGF0
ZVRpbWVsaW5lRGl2aWRlcnNJZk5lZWRlZCwgNTAwKTsKICAgICB9LAogCiAgICAgdXBkYXRlVGlt
ZWxpbmVEaXZpZGVyc0lmTmVlZGVkOiBmdW5jdGlvbigpCkBAIC0zMDIsOCArMjk3LDcgQEAgV2Vi
SW5zcGVjdG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGRvY3Vt
ZW50LmJvZHkub2Zmc2V0V2lkdGggPD0gMCkgewogICAgICAgICAgICAgLy8gVGhlIHN0eWxlc2hl
ZXQgaGFzbid0IGxvYWRlZCB5ZXQsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIGxhdGVyLgotICAgICAg
ICAgICAgdmFyIHBhbmVsID0gdGhpczsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g
KCkgeyBwYW5lbC51cGRhdGVUaW1lbGluZURpdmlkZXJzSWZOZWVkZWQoKSB9LCAwKTsKKyAgICAg
ICAgICAgIHNldE9iamVjdFRpbWVvdXQodGhpcywgdGhpcy51cGRhdGVUaW1lbGluZURpdmlkZXJz
SWZOZWVkZWQsIDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMzNyw5
ICszMzEsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgICAgIGlmICgicmVmcmVzaEFsbFRpbWVsaW5lRW50cmllc1RpbWVvdXQiIGluIHRoaXMp
CiAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIF9zZWxmID0gdGhpczsKLSAgICAg
ICAgdGhpcy5yZWZyZXNoQWxsVGltZWxpbmVFbnRyaWVzVGltZW91dCA9IHNldFRpbWVvdXQoZnVu
Y3Rpb24gKCkgeyBfc2VsZi5yZWZyZXNoQWxsVGltZWxpbmVFbnRyaWVzKCkgfSwgNTAwLCBza2lw
Qm91bmRyeVVwZGF0ZSwgc2tpcFRpbWVsaW5lU29ydCwgaW1tZWRpYXRlKTsKKyAgICAgICAgdGhp
cy5yZWZyZXNoQWxsVGltZWxpbmVFbnRyaWVzVGltZW91dCA9IHNldE9iamVjdFRpbWVvdXQodGhp
cywgdGhpcy5yZWZyZXNoQWxsVGltZWxpbmVFbnRyaWVzLCA1MDAsIHNraXBCb3VuZHJ5VXBkYXRl
LCBza2lwVGltZWxpbmVTb3J0LCBpbW1lZGlhdGUpOwogICAgIH0sCiAKICAgICByZWZyZXNoQWxs
VGltZWxpbmVFbnRyaWVzOiBmdW5jdGlvbihza2lwQm91bmRyeVVwZGF0ZSwgc2tpcFRpbWVsaW5l
U29ydCwgaW1tZWRpYXRlKQpAQCAtNTkyLDkgKzU4NCw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
UGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCJ1cGRhdGVTdW1tYXJ5R3Jh
cGhUaW1lb3V0IiBpbiB0aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBf
c2VsZiA9IHRoaXM7Ci0gICAgICAgIHRoaXMudXBkYXRlU3VtbWFyeUdyYXBoVGltZW91dCA9IHNl
dFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBfc2VsZi51cGRhdGVTdW1tYXJ5R3JhcGgoKSB9LCA1MDAp
OworICAgICAgICB0aGlzLnVwZGF0ZVN1bW1hcnlHcmFwaFRpbWVvdXQgPSBzZXRPYmplY3RUaW1l
b3V0KHRoaXMsIHRoaXMudXBkYXRlU3VtbWFyeUdyYXBoLCA1MDApOwogICAgIH0sCiAKICAgICB1
cGRhdGVTdW1tYXJ5R3JhcGg6IGZ1bmN0aW9uKCkKQEAgLTcwMyw4ICs2OTMsNyBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya1RpbWVsaW5lRW50cnkgPSBmdW5jCiAgICAgdGhpcy5zaG93aW5nVGlwQnV0
dG9uID0gdGhpcy5yZXNvdXJjZS50aXBzLmxlbmd0aDsKICAgICB0aGlzLmZpbGVFbGVtZW50Lmlu
c2VydEJlZm9yZSh0aGlzLnRpcEJ1dHRvbkVsZW1lbnQsIHRoaXMuZmlsZUVsZW1lbnQuZmlyc3RD
aGlsZCk7CiAKLSAgICB2YXIgZW50cnkgPSB0aGlzOwotICAgIHRoaXMudGlwQnV0dG9uRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IGVudHJ5LnRvZ2ds
ZVRpcEJhbGxvb24oZXZlbnQpIH0sIGZhbHNlICk7CisgICAgdGhpcy50aXBCdXR0b25FbGVtZW50
LmFkZE9iamVjdEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcywgdGhpcy50b2dnbGVUaXBCYWxs
b29uLCBmYWxzZSApOwogCiAgICAgdGhpcy5hcmVhRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwogICAgIHRoaXMuYXJlYUVsZW1lbnQuY2xhc3NOYW1lID0gIm5ldHdvcmst
YXJlYSI7CkluZGV4OiBwYWdlL2luc3BlY3Rvci9Qcm9wZXJ0aWVzU2VjdGlvbi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBwYWdlL2luc3BlY3Rvci9Qcm9wZXJ0aWVzU2VjdGlvbi5qcwkocmV2aXNpb24gMjc5
OTYpCisrKyBwYWdlL2luc3BlY3Rvci9Qcm9wZXJ0aWVzU2VjdGlvbi5qcwkod29ya2luZyBjb3B5
KQpAQCAtNDIsOSArNDIsNyBAQCBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24gPSBmdW5j
dGlvCiAKICAgICB0aGlzLmhlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50aXRsZUVsZW1l
bnQpOwogICAgIHRoaXMuaGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnN1YnRpdGxlRWxl
bWVudCk7Ci0KLSAgICB2YXIgc2VjdGlvbiA9IHRoaXM7Ci0gICAgdGhpcy5oZWFkZXJFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7IHNlY3Rpb24uZXhwYW5kZWQg
PSAhc2VjdGlvbi5leHBhbmRlZDsgfSwgZmFsc2UpOworICAgIHRoaXMuaGVhZGVyRWxlbWVudC5h
ZGRPYmplY3RFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMsIHRoaXMudG9nZ2xlLCBmYWxzZSk7
CiAKICAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b2wiKTsKICAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50LmNsYXNzTmFtZSA9ICJwcm9wZXJ0aWVz
IjsKQEAgLTEzMiw1ICsxMzAsMTAgQEAgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uLnBy
b3RvdHlwZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9leHBhbmRlZCA9IGZh
bHNlOwogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiZXhwYW5kZWQiKTsK
KyAgICB9LAorCisgICAgdG9nZ2xlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLmV4
cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7CiAgICAgfQogfQpJbmRleDogcGFnZS9pbnNwZWN0b3Iv
UmVzb3VyY2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMJKHJl
dmlzaW9uIDI3OTk2KQorKysgcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5Niw4ICs0OTYsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlID0g
ewogICAgIHsKICAgICAgICAgaWYgKHRoaXMudXBkYXRlVGl0bGVUaW1lb3V0KQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB2YXIgX3NlbGYgPSB0aGlzOwotICAgICAgICB0aGlzLnVwZGF0
ZVRpdGxlVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBfc2VsZi51cGRhdGVUaXRs
ZSgpIH0sIDApOworICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlVGltZW91dCA9IHNldE9iamVjdFRp
bWVvdXQodGhpcywgdGhpcy51cGRhdGVUaXRsZSwgMCk7CiAgICAgfSwKIAogICAgIHVwZGF0ZVRp
dGxlOiBmdW5jdGlvbigpCkluZGV4OiBwYWdlL2luc3BlY3Rvci9TaWRlYmFyUGFuZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwYWdlL2luc3BlY3Rvci9TaWRlYmFyUGFuZS5qcwkocmV2aXNpb24gMjc5OTYp
CisrKyBwYWdlL2luc3BlY3Rvci9TaWRlYmFyUGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMzMs
OSArMzMsNyBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUgPSBmdW5jdGlvbih0aXRsCiAKICAg
ICB0aGlzLnRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAg
IHRoaXMudGl0bGVFbGVtZW50LmNsYXNzTmFtZSA9ICJ0aXRsZSI7Ci0KLSAgICB2YXIgcGFuZSA9
IHRoaXM7Ci0gICAgdGhpcy50aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBm
dW5jdGlvbigpIHsgcGFuZS5leHBhbmRlZCA9ICFwYW5lLmV4cGFuZGVkOyB9LCBmYWxzZSk7Cisg
ICAgdGhpcy50aXRsZUVsZW1lbnQuYWRkT2JqZWN0RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
LCB0aGlzLnRvZ2dsZSwgZmFsc2UpOwogCiAgICAgdGhpcy5ib2R5RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuYm9keUVsZW1lbnQuY2xhc3NOYW1lID0g
ImJvZHkiOwpAQCAtMTE2LDUgKzExNCwxMCBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiZXhwYW5k
ZWQiKTsKICAgICAgICAgaWYgKHRoaXMub25jb2xsYXBzZSkKICAgICAgICAgICAgIHRoaXMub25j
b2xsYXBzZSh0aGlzKTsKKyAgICB9LAorCisgICAgdG9nZ2xlOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLmV4cGFuZGVkID0gIXRoaXMuZXhwYW5kZWQ7CiAgICAgfQogfQpJbmRleDog
cGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9pbnNwZWN0
b3IvaW5zcGVjdG9yLmh0bWwJKHJldmlzaW9uIDI3OTk5KQorKysgcGFnZS9pbnNwZWN0b3IvaW5z
cGVjdG9yLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQTwogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9InV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0idHJlZW91dGxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imluc3BlY3Rvci5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGF0YWJhc2UuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNv
dXJjZUNhdGVnb3J5LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJEYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iU2lkZWJhclBhbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlByb3BlcnRpZXNTZWN0aW9uLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJNZXRyaWNzU2lkZWJh
clBhbmUuanMiPjwvc2NyaXB0PgpJbmRleDogcGFnZS9pbnNwZWN0b3IvaW5zcGVjdG9yLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHBhZ2UvaW5zcGVjdG9yL2luc3BlY3Rvci5qcwkocmV2aXNpb24gMjc5OTYp
CisrKyBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTIxMCwx
NyArMjEwLDYgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rv
ci5zZXR1cExvY2FsaXplZFN0cmluZyA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHZhciBsb2Nh
bGl6ZWRTdHJpbmdzVVJMID0gSW5zcGVjdG9yQ29udHJvbGxlci5sb2NhbGl6ZWRTdHJpbmdzVVJM
KCk7Ci0gICAgaWYgKGxvY2FsaXplZFN0cmluZ3NVUkwpIHsKLSAgICAgICAgdmFyIGxvY2FsaXpl
ZFN0cmluZ3NTY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7
Ci0gICAgICAgIGxvY2FsaXplZFN0cmluZ3NTY3JpcHRFbGVtZW50LnR5cGUgPSAidGV4dC9qYXZh
c2NyaXB0IjsKLSAgICAgICAgbG9jYWxpemVkU3RyaW5nc1NjcmlwdEVsZW1lbnQuc3JjID0gbG9j
YWxpemVkU3RyaW5nc1VSTDsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImhlYWQiKS5pdGVtKDApLmFwcGVuZENoaWxkKGxvY2FsaXplZFN0cmluZ3NTY3JpcHRFbGVtZW50
KTsKLSAgICB9Ci19Ci0KIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiB7CiAgICAg
dGhpcy5maWxlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZShkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgibGlzdCIpKTsKQEAgLTI1OSwyOSArMjQ4LDMwIEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBm
dW5jdGlvbigpCiAKICAgICB0aGlzLmFkZE1haW5FdmVudExpc3RlbmVycyhkb2N1bWVudCk7CiAK
LSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIiwgZnVuY3Rpb24oZXZlbnQpIHsg
V2ViSW5zcGVjdG9yLndpbmRvd1VubG9hZChldmVudCkgfSwgdHJ1ZSk7Ci0gICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIGZ1bmN0aW9uKGV2ZW50KSB7IFdlYkluc3BlY3Rvci53
aW5kb3dSZXNpemUoZXZlbnQpIH0sIHRydWUpOworICAgIHdpbmRvdy5hZGRPYmplY3RFdmVudExp
c3RlbmVyKCJ1bmxvYWQiLCB0aGlzLCB0aGlzLndpbmRvd1VubG9hZCwgdHJ1ZSk7CisgICAgd2lu
ZG93LmFkZE9iamVjdEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMsIHRoaXMud2luZG93UmVz
aXplLCB0cnVlKTsKIAotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IGZ1bmN0aW9uKGV2ZW50KSB7IFdlYkluc3BlY3Rvci5jaGFuZ2VGb2N1cyhldmVudCkgfSwgdHJ1
ZSk7Ci0gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCBmdW5jdGlvbihldmVu
dCkgeyBXZWJJbnNwZWN0b3IuY2hhbmdlRm9jdXMoZXZlbnQpIH0sIHRydWUpOwotICAgIGRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXByZXNzIiwgZnVuY3Rpb24oZXZlbnQpIHsgV2ViSW5z
cGVjdG9yLmRvY3VtZW50S2V5cHJlc3MoZXZlbnQpIH0sIHRydWUpOwotICAgIGRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImJlZm9yZWNvcHkiLCBmdW5jdGlvbihldmVudCkgeyBXZWJJbnNwZWN0
b3IuZG9jdW1lbnRDYW5Db3B5KGV2ZW50KSB9LCB0cnVlKTsKLSAgICBkb2N1bWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjb3B5IiwgZnVuY3Rpb24oZXZlbnQpIHsgV2ViSW5zcGVjdG9yLmRvY3VtZW50
Q29weShldmVudCkgfSwgdHJ1ZSk7CisgICAgZG9jdW1lbnQuYWRkT2JqZWN0RXZlbnRMaXN0ZW5l
cigibW91c2Vkb3duIiwgdGhpcywgdGhpcy5jaGFuZ2VGb2N1cywgdHJ1ZSk7CisgICAgZG9jdW1l
bnQuYWRkT2JqZWN0RXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLCB0aGlzLmNoYW5nZUZvY3Vz
LCB0cnVlKTsKKyAgICBkb2N1bWVudC5hZGRPYmplY3RFdmVudExpc3RlbmVyKCJrZXlwcmVzcyIs
IHRoaXMsIHRoaXMuZG9jdW1lbnRLZXlwcmVzcywgdHJ1ZSk7CisgICAgZG9jdW1lbnQuYWRkT2Jq
ZWN0RXZlbnRMaXN0ZW5lcigiYmVmb3JlY29weSIsIHRoaXMsIHRoaXMuZG9jdW1lbnRDYW5Db3B5
LCB0cnVlKTsKKyAgICBkb2N1bWVudC5hZGRPYmplY3RFdmVudExpc3RlbmVyKCJjb3B5IiwgdGhp
cywgdGhpcy5kb2N1bWVudENvcHksIHRydWUpOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImJhY2siKS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBwcmV2aW91cyBw
YW5lbC4iKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9yd2FyZCIpLnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IG5leHQgcGFuZWwuIik7CiAKICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgic2VhcmNoIikuc2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2VhcmNoIikpOwogCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImJhY2siKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7
IFdlYkluc3BlY3Rvci5iYWNrKCkgfSwgdHJ1ZSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImZvcndhcmQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7
IFdlYkluc3BlY3Rvci5mb3J3YXJkKCkgfSwgdHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImJhY2siKS5hZGRPYmplY3RFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMsIHRoaXMu
YmFjaywgdHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcndhcmQiKS5hZGRP
YmplY3RFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMsIHRoaXMuZm9yd2FyZCwgdHJ1ZSk7CiAg
ICAgdGhpcy51cGRhdGVCYWNrRm9yd2FyZEJ1dHRvbnMoKTsKIAotICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJhdHRhY2hUb2dnbGUiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0
aW9uKGV2ZW50KSB7IFdlYkluc3BlY3Rvci50b2dnbGVBdHRhY2goKSB9LCB0cnVlKTsKLSAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3RhdHVzVG9nZ2xlIikuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCBmdW5jdGlvbihldmVudCkgeyBXZWJJbnNwZWN0b3IudG9nZ2xlU3RhdHVzQXJlYSgp
IH0sIHRydWUpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaWRlYmFyUmVzaXplV2lk
Z2V0IikuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgV2ViSW5zcGVjdG9yLnNpZGViYXJS
ZXNpemVyRHJhZ1N0YXJ0LCB0cnVlKTsKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lk
ZWJhclJlc2l6ZXIiKS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBXZWJJbnNwZWN0b3Iu
c2lkZWJhclJlc2l6ZXJEcmFnU3RhcnQsIHRydWUpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzZWFyY2hSZXN1bHRzUmVzaXplciIpLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IFdlYkluc3BlY3Rvci5zZWFyY2hSZXN1bHRzUmVzaXplckRyYWdTdGFydCwgZmFsc2UpOworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhdHRhY2hUb2dnbGUiKS5hZGRPYmplY3RFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMsIHRoaXMudG9nZ2xlQXR0YWNoLCB0cnVlKTsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic3RhdHVzVG9nZ2xlIikuYWRkT2JqZWN0RXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLCB0aGlzLnRvZ2dsZVN0YXR1c0FyZWEsIHRydWUpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpZGViYXJSZXNpemVXaWRnZXQiKS5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLnNpZGViYXJSZXNpemVyRHJhZ1N0YXJ0LCB0cnVlKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lkZWJhclJlc2l6ZXIiKS5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLnNpZGViYXJSZXNpemVyRHJhZ1N0YXJ0LCB0cnVlKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoUmVzdWx0c1Jlc2l6ZXIiKS5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLnNlYXJjaFJlc3VsdHNSZXNpemVyRHJhZ1N0YXJ0
LCB0cnVlKTsKIAogICAgIGRvY3VtZW50LmJvZHkuYWRkU3R5bGVDbGFzcygiZGV0YWNoZWQiKTsK
IApAQCAtMjkwLDExICsyODAsMTUgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkK
IAogdmFyIHdpbmRvd0xvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0
dXBMb2NhbGl6ZWRTdHJpbmcoZXZlbnQpOwotCi0gICAgLy8gRGVsYXkgY2FsbGluZyBsb2FkZWQg
dG8gZ2l2ZSB0aW1lIGZvciB0aGUgbG9jYWxpemVkIHN0cmluZ3MgZmlsZSB0byBsb2FkLgotICAg
IC8vIENhbGxpbmcgaXQgdG9vIGVhcmx5IHdpbGwgY2F1c2UgbG9jYWxpemVkIHN0cmluZyBsb29r
dXBzIHRvIGZhaWwuCi0gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgV2ViSW5zcGVjdG9yLmxv
YWRlZCgpIH0sIDApOworICAgIHZhciBsb2NhbGl6ZWRTdHJpbmdzVVJMID0gSW5zcGVjdG9yQ29u
dHJvbGxlci5sb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CisgICAgaWYgKGxvY2FsaXplZFN0cmluZ3NV
UkwpIHsKKyAgICAgICAgdmFyIGxvY2FsaXplZFN0cmluZ3NTY3JpcHRFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgICAgIGxvY2FsaXplZFN0cmluZ3NTY3Jp
cHRFbGVtZW50LmFkZE9iamVjdEV2ZW50TGlzdGVuZXIoImxvYWQiLCBXZWJJbnNwZWN0b3IsIFdl
Ykluc3BlY3Rvci5sb2FkZWQsIGZhbHNlKTsKKyAgICAgICAgbG9jYWxpemVkU3RyaW5nc1Njcmlw
dEVsZW1lbnQudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOworICAgICAgICBsb2NhbGl6ZWRTdHJp
bmdzU2NyaXB0RWxlbWVudC5zcmMgPSBsb2NhbGl6ZWRTdHJpbmdzVVJMOworICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpLml0ZW0oMCkuYXBwZW5kQ2hpbGQobG9j
YWxpemVkU3RyaW5nc1NjcmlwdEVsZW1lbnQpOworICAgIH0gZWxzZQorICAgICAgICBXZWJJbnNw
ZWN0b3IubG9hZGVkKCk7CiAKICAgICBkZWxldGUgd2luZG93TG9hZGVkOwogICAgIHdpbmRvdy5y
ZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIiwgd2luZG93TG9hZGVkLCBmYWxzZSk7CkluZGV4OiBw
YWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9pbnNwZWN0b3Iv
dXRpbGl0aWVzLmpzCShyZXZpc2lvbiAyNzk5NikKKysrIHBhZ2UvaW5zcGVjdG9yL3V0aWxpdGll
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNzksMTQgKzc5LDM0IEBAIE9iamVjdC5kZXNjcmliZSA9
IGZ1bmN0aW9uKG9iaiwgYWJicmV2aWEKIE9iamVjdC5zb3J0ZWRQcm9wZXJ0aWVzID0gZnVuY3Rp
b24ob2JqKQogewogICAgIHZhciBwcm9wZXJ0aWVzID0gW107Ci0gICAgZm9yICh2YXIgcHJvcCBp
biBvYmopIHsKKyAgICBmb3IgKHZhciBwcm9wIGluIG9iaikKICAgICAgICAgcHJvcGVydGllcy5w
dXNoKHByb3ApOwotICAgIH0KLQogICAgIHByb3BlcnRpZXMuc29ydCgpOwogICAgIHJldHVybiBw
cm9wZXJ0aWVzOwogfQogCitmdW5jdGlvbiBzZXRPYmplY3RUaW1lb3V0KHRoaXNPYmplY3QsIHRp
bWVvdXRGdW5jdGlvbiwgdGltZSkKK3sKKyAgICBpZiAoIXRoaXNPYmplY3QpCisgICAgICAgIHJl
dHVybiBzZXRUaW1lb3V0LmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cywgMSkpOworICAgIGlmICghdGltZW91dEZ1bmN0aW9uKQorICAgICAgICB0aHJvdyAi
Q2FsbGVkIHNldE9iamVjdFRpbWVvdXQgd2l0aCBhIG51bGwvdW5kZWZpbmVkIHRpbWVvdXQgZnVu
Y3Rpb24uIjsKKworICAgIHZhciBhcmdzID0gW2Z1bmN0aW9uKCkgeyB0aW1lb3V0RnVuY3Rpb24u
Y2FsbCh0aGlzT2JqZWN0KSB9LCB0aW1lXTsKKyAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDMp
CisgICAgICAgIGFyZ3MgPSBhcmdzLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh
cmd1bWVudHMsIDMpKTsKKyAgICByZXR1cm4gc2V0VGltZW91dC5hcHBseShudWxsLCBhcmdzKTsK
K30KKworZnVuY3Rpb24gYWRkT2JqZWN0RXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXNPYmpl
Y3QsIGxpc3RlbmVyLCBjYXB0dXJlKQoreworICAgIGlmICghdGhpc09iamVjdCkKKyAgICAgICAg
cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGxpc3RlbmVyLCBjYXB0dXJl
KTsKKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICB0aHJvdyAiQ2FsbGVkIGFkZE9iamVjdEV2
ZW50TGlzdGVuZXIgd2l0aCBhIG51bGwvdW5kZWZpbmVkIGxpc3RlbmVyLiI7CisgICAgcmV0dXJu
IHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmN0aW9uKGV2ZW50KSB7IGxpc3Rl
bmVyLmNhbGwodGhpc09iamVjdCwgZXZlbnQpIH0sIGNhcHR1cmUpOworfQorCiBFbGVtZW50LnBy
b3RvdHlwZS5yZW1vdmVTdHlsZUNsYXNzID0gZnVuY3Rpb24oY2xhc3NOYW1lKSAKIHsKICAgICAv
LyBUZXN0IGZvciB0aGUgc2ltcGxlIGNhc2UgYmVmb3JlIHVzaW5nIGEgUmVnRXhwLgpAQCAtMTM1
LDEyICsxNTUsMTYgQEAgRWxlbWVudC5wcm90b3R5cGUuc2Nyb2xsVG9FbGVtZW50ID0gZnVuYwog
ICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IG9mZnNldFRvcCAtIHRoaXMub2Zmc2V0SGVpZ2h0ICsg
ZWxlbWVudC5vZmZzZXRIZWlnaHQ7CiB9CiAKK05vZGUucHJvdG90eXBlLmFkZE9iamVjdEV2ZW50
TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudE5hbWUsIHRoaXNPYmplY3QsIGxpc3RlbmVyLCBjYXB0
dXJlKQoreworICAgIHJldHVybiBhZGRPYmplY3RFdmVudExpc3RlbmVyLmNhbGwodGhpcywgZXZl
bnROYW1lLCB0aGlzT2JqZWN0LCBsaXN0ZW5lciwgY2FwdHVyZSk7Cit9CisKIE5vZGUucHJvdG90
eXBlLmZpcnN0UGFyZW50T3JTZWxmV2l0aE5vZGVOYW1lID0gZnVuY3Rpb24obm9kZU5hbWUpCiB7
CiAgICAgZm9yICh2YXIgbm9kZSA9IHRoaXM7IG5vZGUgJiYgKG5vZGUgIT09IGRvY3VtZW50KTsg
bm9kZSA9IG5vZGUucGFyZW50Tm9kZSkKICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSA9PT0gbm9kZU5hbWUudG9Mb3dlckNhc2UoKSkKICAgICAgICAgICAgIHJldHVybiBu
b2RlOwotCiAgICAgcmV0dXJuIG51bGw7CiB9CiAKQEAgLTE0OSw3ICsxNzMsNiBAQCBOb2RlLnBy
b3RvdHlwZS5maXJzdFBhcmVudE9yU2VsZldpdGhDbGFzCiAgICAgZm9yICh2YXIgbm9kZSA9IHRo
aXM7IG5vZGUgJiYgKG5vZGUgIT09IGRvY3VtZW50KTsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkK
ICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIG5vZGUu
aGFzU3R5bGVDbGFzcyhjbGFzc05hbWUpKQogICAgICAgICAgICAgcmV0dXJuIG5vZGU7Ci0KICAg
ICByZXR1cm4gbnVsbDsKIH0KIApAQCAtMTU3LDcgKzE4MCw2IEBAIE5vZGUucHJvdG90eXBlLmZp
cnN0UGFyZW50V2l0aENsYXNzID0gZnUKIHsKICAgICBpZiAoIXRoaXMucGFyZW50Tm9kZSkKICAg
ICAgICAgcmV0dXJuIG51bGw7Ci0KICAgICByZXR1cm4gdGhpcy5wYXJlbnROb2RlLmZpcnN0UGFy
ZW50T3JTZWxmV2l0aENsYXNzKGNsYXNzTmFtZSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17488</attachid>
            <date>2007-11-24 14:27:21 -0800</date>
            <delta_ts>2007-11-24 14:34:19 -0800</delta_ts>
            <desc>Revised Patch</desc>
            <filename>16121.patch</filename>
            <type>text/plain</type>
            <size>23461</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI3OTk5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIwMDctMTEt
MjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAxNjEyMTogV2ViIEluc3BlY3Rv
ciBuZWVkcyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgcGFzcyBhICd0aGlzJyBvYmplY3QgdG8KKyAg
ICAgICAgYWRkRXZlbnRMaXN0ZW5lciBhbmQgc2V0VGltZW91dAorICAgICAgICBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEyMQorCisgICAgICAgIEFkZCBGdW5jdGlv
bi5wcm90b3R5cGUuYmluZC4gVGhpcyBoZWxwZXIgd2lsbCByZXR1cm4gYSB3cmFwcGVyIGZ1bmN0
aW9uCisgICAgICAgIHRoYXQgd2lsbCBjYWxsIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiB3aXRoIHRo
ZSBzdXBwbGllZCBhcmd1bWVudHMKKyAgICAgICAgYW5kIHVzaW5nIHRoZSBzdXBwbGllZCAndGhp
cycgb2JqZWN0LgorCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2UuanM6IFJlbW92
ZSBhIHVzZSBvZiBzZXRUaW1lb3V0IGJ5CisgICAgICAgICAgaW5oZXJpdGluZyBzb21lIGNvbW1v
biBmdW5jdGlvbnMgZnJvbSBSZXNvdXJjZS4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9EYXRh
YmFzZVBhbmVsLmpzOiBVc2UgdGhlIG5ldyBiaW5kIGZ1bmN0aW9uLgorICAgICAgICAqIHBhZ2Uv
aW5zcGVjdG9yL0NvbnNvbGVQYW5lbC5qczogRGl0dG8uCisgICAgICAgICogcGFnZS9pbnNwZWN0
b3IvRG9jdW1lbnRQYW5lbC5qczogRGl0dG8uCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvTmV0
d29ya1BhbmVsLmpzOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9Qcm9wZXJ0aWVz
U2VjdGlvbi5qczogRGl0dG8uCisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvUmVzb3VyY2UuanM6
IERpdHRvLgorICAgICAgICAqIHBhZ2UvaW5zcGVjdG9yL1NpZGViYXJQYW5lLmpzOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbDogTW92ZWQgRGF0YWJhc2Uu
anMgYWZ0ZXIgUmVzb3VyY2UuanMsCisgICAgICAgICAgbm93IHRoYXQgRGF0YWJhc2UuanMgdXNl
cyBpdC4KKyAgICAgICAgKiBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanM6IFVzZSB0aGUgbmV3
IGJpbmQgZnVuY3Rpb24uIEFsc28KKyAgICAgICAgICByZW1vdmVkIGEgc2V0VGltZW91dCB1c2Vk
IGZvciB0aGUgbG9jYWxpemVkIHN0cmluZ3MgY29kZS4gVGhlcmUgaXMKKyAgICAgICAgICBub3cg
YSBsb2FkIGV2ZW50IGxpc3RlbmVyIGFkZGVkIHRvIHRoZSBsb2NhbGl6ZWQgc3RyaW5ncyBzY3Jp
cHQKKyAgICAgICAgICBlbGVtZW50IHRoYXQgd2lsbCBjYWxsIFdlYkluc3BlY3Rvci5sb2FkZWQu
CisgICAgICAgICogcGFnZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzOiBBZGQgRnVuY3Rpb24ucHJv
dG90eXBlLmJpbmQuCisKIDIwMDctMTEtMjQgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBwYWdlL2lu
c3BlY3Rvci9Db25zb2xlUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9pbnNwZWN0b3IvQ29u
c29sZVBhbmVsLmpzCShyZXZpc2lvbiAyNzk5NikKKysrIHBhZ2UvaW5zcGVjdG9yL0NvbnNvbGVQ
YW5lbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMzksMTQgKzM5LDEzIEBAIFdlYkluc3BlY3Rvci5D
b25zb2xlUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5tZXNzYWdlTGlzdC5jbGFzc05hbWUg
PSAiY29uc29sZS1tZXNzYWdlLWxpc3QiOwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLm1lc3NhZ2VMaXN0KTsKIAotICAgIHZhciBjb25zb2xlID0gdGhpczsKLSAgICB0aGlzLm1l
c3NhZ2VMaXN0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsgY29u
c29sZS5tZXNzYWdlTGlzdENsaWNrZWQoZXZlbnQpIH0sIHRydWUpOworICAgIHRoaXMubWVzc2Fn
ZUxpc3QuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLm1lc3NhZ2VMaXN0Q2xpY2tlZC5i
aW5kKHRoaXMpLCB0cnVlKTsKIAogICAgIHRoaXMuY29uc29sZVByb21wdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7CiAgICAgdGhpcy5jb25zb2xlUHJvbXB0LmNsYXNzTmFt
ZSA9ICJjb25zb2xlLXByb21wdCI7CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
Y29uc29sZVByb21wdCk7CiAKLSAgICB0aGlzLmNvbnNvbGVQcm9tcHQuYWRkRXZlbnRMaXN0ZW5l
cigia2V5ZG93biIsIGZ1bmN0aW9uKGV2ZW50KSB7IGNvbnNvbGUucHJvbXB0S2V5cHJlc3MoZXZl
bnQpIH0sIGZhbHNlKTsKKyAgICB0aGlzLmNvbnNvbGVQcm9tcHQuYWRkRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMucHJvbXB0S2V5cHJlc3MuYmluZCh0aGlzKSwgZmFsc2UpOwogfQogCiBX
ZWJJbnNwZWN0b3IuQ29uc29sZVBhbmVsLnByb3RvdHlwZSA9IHsKSW5kZXg6IHBhZ2UvaW5zcGVj
dG9yL0RhdGFiYXNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlLmpz
CShyZXZpc2lvbiAyNzk5NikKKysrIHBhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC05NSwxNCArOTUsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2UucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnJlc291cmNlQ2F0ZWdvcmllcy5kYXRh
YmFzZXM7CiAgICAgfSwKIAotICAgIHVwZGF0ZVRpdGxlU29vbjogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMudXBkYXRlVGl0bGVUaW1lb3V0KQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB2YXIgX3NlbGYgPSB0aGlzOwotICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlVGlt
ZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBfc2VsZi51cGRhdGVUaXRsZSgpIH0sIDAp
OwotICAgIH0sCi0KICAgICB1cGRhdGVUaXRsZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
ZGVsZXRlIHRoaXMudXBkYXRlVGl0bGVUaW1lb3V0OwpAQCAtMTI4LDI2ICsxMjAsMTAgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Bh
bmVsOwogICAgIH0sCiAKLSAgICBzZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5uYXZpZ2F0ZVRvUmVzb3VyY2UodGhpcyk7Ci0gICAgfSwKLQotICAgIGRlc2Vs
ZWN0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmxpc3RJdGVtLmRlc2VsZWN0KHRy
dWUpOwotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCA9PT0gdGhpcy5fcGFu
ZWwpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsID0gbnVsbDsKLSAgICB9
LAotCi0gICAgYXR0YWNoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLnBhbmVsLmF0
dGFjaCgpOwotICAgIH0sCi0KLSAgICBkZXRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9wYW5lbCkKLSAgICAgICAgICAgIHRoaXMucGFuZWwuZGV0YWNoKCk7Ci0gICAg
fQorICAgIC8vIEluaGVyaXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmcm9tIHRoZSBSZXNvdXJjZSBw
cm90b3R5cGUuCisgICAgdXBkYXRlVGl0bGVTb29uOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJv
dG90eXBlLnVwZGF0ZVRpdGxlU29vbiwKKyAgICBzZWxlY3Q6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUuc2VsZWN0LAorICAgIGRlc2VsZWN0OiBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
cHJvdG90eXBlLmRlc2VsZWN0LAorICAgIGF0dGFjaDogV2ViSW5zcGVjdG9yLlJlc291cmNlLnBy
b3RvdHlwZS5hdHRhY2gsCisgICAgZGV0YWNoOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90
eXBlLmRldGFjaAogfQpJbmRleDogcGFnZS9pbnNwZWN0b3IvRGF0YWJhc2VQYW5lbC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwYWdlL2luc3BlY3Rvci9EYXRhYmFzZVBhbmVsLmpzCShyZXZpc2lvbiAyNzk5
NikKKysrIHBhZ2UvaW5zcGVjdG9yL0RhdGFiYXNlUGFuZWwuanMJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDggKzQwLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlUGFuZWwgPSBmdW5jdGlvbihkYQog
ICAgIHRoaXMucXVlcnlQcm9tcHRFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhYmFzZS1wcm9tcHQi
OwogICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnF1ZXJ5UHJvbXB0RWxlbWVudCk7
CiAKLSAgICB2YXIgcGFuZWwgPSB0aGlzOwotICAgIHRoaXMucXVlcnlQcm9tcHRFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBmdW5jdGlvbihldmVudCkgeyBwYW5lbC5xdWVyeUlu
cHV0S2V5cHJlc3MoZXZlbnQpIH0sIGZhbHNlKTsKKyAgICB0aGlzLnF1ZXJ5UHJvbXB0RWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5xdWVyeUlucHV0S2V5cHJlc3MuYmlu
ZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy5xdWVyeVByb21wdEhpc3RvcnkgPSBbXTsKICAg
ICB0aGlzLnF1ZXJ5UHJvbXB0SGlzdG9yeU9mZnNldCA9IDA7CkBAIC01Miw2ICs1MSw3IEBAIFdl
Ykluc3BlY3Rvci5EYXRhYmFzZVBhbmVsID0gZnVuY3Rpb24oZGEKICAgICBxdWVyeVZpZXcuY29t
bWFuZExpc3RFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhYmFzZS1jb21tYW5kLWxpc3QiOwogICAg
IHF1ZXJ5Vmlldy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChxdWVyeVZpZXcuY29tbWFuZExp
c3RFbGVtZW50KTsKIAorICAgIHZhciBwYW5lbCA9IHRoaXM7CiAgICAgcXVlcnlWaWV3LnNob3cg
PSBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBwYW5lbC5xdWVyeVByb21wdEVsZW1lbnQuZm9j
dXMoKTsKQEAgLTY5LDcgKzY5LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlUGFuZWwgPSBmdW5j
dGlvbihkYQogICAgIGJyb3dzZVZpZXcucmVsb2FkVGFibGVFbGVtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKICAgICBicm93c2VWaWV3LnJlbG9hZFRhYmxl
RWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUtcmVsb2FkIjsKICAgICBicm93c2VW
aWV3LnJlbG9hZFRhYmxlRWxlbWVudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVs
b2FkIik7Ci0gICAgYnJvd3NlVmlldy5yZWxvYWRUYWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCBmdW5jdGlvbigpIHsgcGFuZWwudXBkYXRlVGFibGVMaXN0KCk7IHBhbmVsLnVw
ZGF0ZVRhYmxlQnJvd3NlcigpIH0sIGZhbHNlKTsKKyAgICBicm93c2VWaWV3LnJlbG9hZFRhYmxl
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMucmVsb2FkQ2xpY2tlZC5iaW5k
KHRoaXMpLCBmYWxzZSk7CiAKICAgICBicm93c2VWaWV3LnNob3cgPSBmdW5jdGlvbigpCiAgICAg
ewpAQCAtMTM1LDYgKzEzNSwxMiBAQCByZXR1cm4gewogICAgICAgICB9CiAgICAgfSwKIAorICAg
IHJlbG9hZENsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMudXBkYXRlVGFi
bGVMaXN0KCk7CisgICAgICAgIHRoaXMudXBkYXRlVGFibGVCcm93c2VyKCk7CisgICAgfSwKKwog
ICAgIHVwZGF0ZVRhYmxlTGlzdDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGJyb3dz
ZVZpZXcgPSB0aGlzLnZpZXdzLmJyb3dzZTsKQEAgLTE0NSw3ICsxNTEsNiBAQCByZXR1cm4gewog
ICAgICAgICAgICAgdmFyIHBhbmVsID0gdGhpczsKICAgICAgICAgICAgIHZhciBjaGFuZ2VUYWJs
ZUZ1bmN0aW9uID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZh
ciBicm93c2VWaWV3ID0gcGFuZWwudmlld3MuYnJvd3NlOwogICAgICAgICAgICAgICAgIHZhciBp
bmRleCA9IGJyb3dzZVZpZXcudGFibGVTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXg7CiAgICAg
ICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKQogICAgICAgICAgICAgICAgICAgICBwYW5lbC5j
dXJyZW50VGFibGUgPSBicm93c2VWaWV3LnRhYmxlU2VsZWN0RWxlbWVudC5vcHRpb25zW2luZGV4
XS52YWx1ZTsKSW5kZXg6IHBhZ2UvaW5zcGVjdG9yL0RvY3VtZW50UGFuZWwuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGFnZS9pbnNwZWN0b3IvRG9jdW1lbnRQYW5lbC5qcwkocmV2aXNpb24gMjc5OTkpCisr
KyBwYWdlL2luc3BlY3Rvci9Eb2N1bWVudFBhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3
ICs4Myw3IEBAIFdlYkluc3BlY3Rvci5Eb2N1bWVudFBhbmVsID0gZnVuY3Rpb24ocmUKIAogICAg
IGRvbVZpZXcuc2lkZWJhclJlc2l6ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICBkb21WaWV3LnNpZGViYXJSZXNpemVFbGVtZW50LmNsYXNzTmFtZSA9ICJzaWRl
YmFyLXJlc2l6ZXItdmVydGljYWwgc2lkZWJhci1yZXNpemVyLXZlcnRpY2FsLXJpZ2h0IjsKLSAg
ICBkb21WaWV3LnNpZGViYXJSZXNpemVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIGZ1bmN0aW9uKGV2ZW50KSB7IHBhbmVsLnJpZ2h0U2lkZWJhclJlc2l6ZXJEcmFnU3RhcnQo
ZXZlbnQpIH0sIGZhbHNlKTsKKyAgICBkb21WaWV3LnNpZGViYXJSZXNpemVFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMucmlnaHRTaWRlYmFyUmVzaXplckRyYWdTdGFy
dC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAgICBkb21WaWV3LmNvbnRlbnRFbGVtZW50LmFwcGVu
ZENoaWxkKGRvbVZpZXcuc2lkZUNvbnRlbnRFbGVtZW50KTsKICAgICBkb21WaWV3LmNvbnRlbnRF
bGVtZW50LmFwcGVuZENoaWxkKGRvbVZpZXcuc2lkZWJhckVsZW1lbnQpOwpAQCAtMzg0LDggKzM4
NCw3IEBAIFdlYkluc3BlY3Rvci5Eb2N1bWVudFBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAoZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCA8PSAwKSB7CiAgICAgICAgICAgICAvLyBU
aGUgc3R5bGVzaGVldCBoYXNuJ3QgbG9hZGVkIHlldCwgc28gd2UgbmVlZCB0byB1cGRhdGUgbGF0
ZXIuCi0gICAgICAgICAgICB2YXIgcGFuZWwgPSB0aGlzOwotICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgcGFuZWwudXBkYXRlQnJlYWRjcnVtYlNpemVzKCkgfSwgMCk7CisgICAg
ICAgICAgICBzZXRUaW1lb3V0KHRoaXMudXBkYXRlQnJlYWRjcnVtYlNpemVzLmJpbmQodGhpcyks
IDApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTc1NSw4ICs3NTQsNyBA
QCBXZWJJbnNwZWN0b3IuRE9NTm9kZVRyZWVFbGVtZW50LnByb3RvdHlwCiAKICAgICAgICAgaWYg
KGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggPD0gMCkgewogICAgICAgICAgICAgLy8gVGhlIHN0
eWxlc2hlZXQgaGFzbid0IGxvYWRlZCB5ZXQsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIGxhdGVyLgot
ICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzOwotICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgZWxlbWVudC51cGRhdGVTZWxlY3Rpb24oKSB9LCAwKTsKKyAgICAgICAgICAg
IHNldFRpbWVvdXQodGhpcy51cGRhdGVTZWxlY3Rpb24uYmluZCh0aGlzKSwgMCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzcxLDggKzc2OSw3IEBAIFdlYkluc3BlY3Rv
ci5ET01Ob2RlVHJlZUVsZW1lbnQucHJvdG90eXAKIAogICAgIG9uYXR0YWNoOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXM7Ci0gICAgICAgIHRoaXMubGlzdEl0
ZW1FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGZ1bmN0aW9uKGV2ZW50KSB7
IGVsZW1lbnQub25tb3VzZWRvd24oZXZlbnQpIH0sIGZhbHNlKTsKKyAgICAgICAgdGhpcy5saXN0
SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5vbm1vdXNlZG93
bi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgfSwKIAogICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9u
KCkKSW5kZXg6IHBhZ2UvaW5zcGVjdG9yL05ldHdvcmtQYW5lbC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw
YWdlL2luc3BlY3Rvci9OZXR3b3JrUGFuZWwuanMJKHJldmlzaW9uIDI3OTk5KQorKysgcGFnZS9p
bnNwZWN0b3IvTmV0d29ya1BhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Niw4ICs0Niw3IEBA
IFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLnJlc291
cmNlc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLnJl
c291cmNlc0VsZW1lbnQuY2xhc3NOYW1lID0gIm5ldHdvcmstcmVzb3VyY2VzIjsKLSAgICB2YXIg
cGFuZWwgPSB0aGlzOwotICAgIHRoaXMucmVzb3VyY2VzRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IHJldHVybiBwYW5lbC5vbkNsaWNrKGV2ZW50KSB9
LCBmYWxzZSk7CisgICAgdGhpcy5yZXNvdXJjZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5yZXNvdXJjZXNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlz
LnRpbWVsaW5lRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnJlc291cmNlc0VsZW1lbnQpOwogCiAg
ICAgdmFyIGdyYXBoQXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtNjAs
NyArNTksNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsID0gZnVuY3Rpb24oKQogCiAgICAg
dGhpcy5ncmFwaE1vZGVTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2Vs
ZWN0Iik7CiAgICAgdGhpcy5ncmFwaE1vZGVTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJuZXR3
b3JrLWdyYXBoLW1vZGUiOwotICAgIHRoaXMuZ3JhcGhNb2RlU2VsZWN0RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjaGFuZ2UiLCBmdW5jdGlvbihldmVudCkgeyByZXR1cm4gcGFuZWwub25Nb2Rl
Q2hhbmdlKGV2ZW50KSB9LCBmYWxzZSk7CisgICAgdGhpcy5ncmFwaE1vZGVTZWxlY3RFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuY2hhbmdlR3JhcGhNb2RlLmJpbmQodGhp
cyksIGZhbHNlKTsKICAgICB0aGlzLmdyYXBoTGFiZWxFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMu
Z3JhcGhNb2RlU2VsZWN0RWxlbWVudCk7CiAgICAgdGhpcy5ncmFwaExhYmVsRWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKIApAQCAtMTEyLDcgKzExMSw3
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LnVwZGF0ZVRpbWVsaW5lRGl2aWRlcnNJZk5lZWRlZCgpOwogICAgIH0sCiAKLSAgICBvbkNsaWNr
OiBmdW5jdGlvbihldmVudCkKKyAgICByZXNvdXJjZXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkK
ICAgICB7CiAgICAgICAgIC8vIElmIHRoZSBjbGljayB3YXNuJ3QgaW5zaWRlIGEgbmV0d29yayBy
ZXNvdXJjZSByb3csIGlnbm9yZSBpdC4KICAgICAgICAgdmFyIHJlc291cmNlRWxlbWVudCA9IGV2
ZW50LnRhcmdldC5maXJzdFBhcmVudE9yU2VsZldpdGhDbGFzcygibmV0d29yay1yZXNvdXJjZSIp
OwpAQCAtMTM0LDcgKzEzMyw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICByZXNvdXJjZUVsZW1lbnQudGltZWxpbmVFbnRyeS50b2dnbGVTaG93aW5n
SW5mbygpOwogICAgIH0sCiAKLSAgICBvbk1vZGVDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IGNoYW5nZUdyYXBoTW9kZTogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnVw
ZGF0ZVN1bW1hcnlHcmFwaCgpOwogICAgIH0sCkBAIC0yMzAsOSArMjI5LDcgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoInNvcnRU
aW1lbGluZUVudHJpZXNUaW1lb3V0IiBpbiB0aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHZhciBfc2VsZiA9IHRoaXM7Ci0gICAgICAgIHRoaXMuc29ydFRpbWVsaW5lRW50cmll
c1RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgX3NlbGYuc29ydFRpbWVsaW5lRW50
cmllc0lmTmVlZGVkKCkgfSwgNTAwKTsKKyAgICAgICAgdGhpcy5zb3J0VGltZWxpbmVFbnRyaWVz
VGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5zb3J0VGltZWxpbmVFbnRyaWVzSWZOZWVkZWQuYmlu
ZCh0aGlzKSwgNTAwKTsKICAgICB9LAogCiAgICAgc29ydFRpbWVsaW5lRW50cmllc0lmTmVlZGVk
OiBmdW5jdGlvbigpCkBAIC0yODMsOSArMjgwLDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAoInVwZGF0ZVRpbWVsaW5lRGl2aWRl
cnNUaW1lb3V0IiBpbiB0aGlzKQogICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBf
c2VsZiA9IHRoaXM7Ci0gICAgICAgIHRoaXMudXBkYXRlVGltZWxpbmVEaXZpZGVyc1RpbWVvdXQg
PSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgX3NlbGYudXBkYXRlVGltZWxpbmVEaXZpZGVyc0lm
TmVlZGVkKCkgfSwgNTAwKTsKKyAgICAgICAgdGhpcy51cGRhdGVUaW1lbGluZURpdmlkZXJzVGlt
ZW91dCA9IHNldFRpbWVvdXQodGhpcy51cGRhdGVUaW1lbGluZURpdmlkZXJzSWZOZWVkZWQuYmlu
ZCh0aGlzKSwgNTAwKTsKICAgICB9LAogCiAgICAgdXBkYXRlVGltZWxpbmVEaXZpZGVyc0lmTmVl
ZGVkOiBmdW5jdGlvbigpCkBAIC0zMDIsOCArMjk3LDcgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lk
dGggPD0gMCkgewogICAgICAgICAgICAgLy8gVGhlIHN0eWxlc2hlZXQgaGFzbid0IGxvYWRlZCB5
ZXQsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIGxhdGVyLgotICAgICAgICAgICAgdmFyIHBhbmVsID0g
dGhpczsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBwYW5lbC51cGRhdGVU
aW1lbGluZURpdmlkZXJzSWZOZWVkZWQoKSB9LCAwKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
dGhpcy51cGRhdGVUaW1lbGluZURpdmlkZXJzSWZOZWVkZWQuYmluZCh0aGlzKSwgMCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzM3LDkgKzMzMSw3IEBAIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKCJyZWZy
ZXNoQWxsVGltZWxpbmVFbnRyaWVzVGltZW91dCIgaW4gdGhpcykKICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICB2YXIgX3NlbGYgPSB0aGlzOwotICAgICAgICB0aGlzLnJlZnJlc2hBbGxU
aW1lbGluZUVudHJpZXNUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IF9zZWxmLnJl
ZnJlc2hBbGxUaW1lbGluZUVudHJpZXMoKSB9LCA1MDAsIHNraXBCb3VuZHJ5VXBkYXRlLCBza2lw
VGltZWxpbmVTb3J0LCBpbW1lZGlhdGUpOworICAgICAgICB0aGlzLnJlZnJlc2hBbGxUaW1lbGlu
ZUVudHJpZXNUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnJlZnJlc2hBbGxUaW1lbGluZUVudHJp
ZXMuYmluZCh0aGlzKSwgNTAwLCBza2lwQm91bmRyeVVwZGF0ZSwgc2tpcFRpbWVsaW5lU29ydCwg
aW1tZWRpYXRlKTsKICAgICB9LAogCiAgICAgcmVmcmVzaEFsbFRpbWVsaW5lRW50cmllczogZnVu
Y3Rpb24oc2tpcEJvdW5kcnlVcGRhdGUsIHNraXBUaW1lbGluZVNvcnQsIGltbWVkaWF0ZSkKQEAg
LTU5Miw5ICs1ODQsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIGlmICgidXBkYXRlU3VtbWFyeUdyYXBoVGltZW91dCIgaW4gdGhpcykK
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgX3NlbGYgPSB0aGlzOwotICAgICAg
ICB0aGlzLnVwZGF0ZVN1bW1hcnlHcmFwaFRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgp
IHsgX3NlbGYudXBkYXRlU3VtbWFyeUdyYXBoKCkgfSwgNTAwKTsKKyAgICAgICAgdGhpcy51cGRh
dGVTdW1tYXJ5R3JhcGhUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnVwZGF0ZVN1bW1hcnlHcmFw
aC5iaW5kKHRoaXMpLCA1MDApOwogICAgIH0sCiAKICAgICB1cGRhdGVTdW1tYXJ5R3JhcGg6IGZ1
bmN0aW9uKCkKQEAgLTcwMyw4ICs2OTMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5l
RW50cnkgPSBmdW5jCiAgICAgdGhpcy5zaG93aW5nVGlwQnV0dG9uID0gdGhpcy5yZXNvdXJjZS50
aXBzLmxlbmd0aDsKICAgICB0aGlzLmZpbGVFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnRpcEJ1
dHRvbkVsZW1lbnQsIHRoaXMuZmlsZUVsZW1lbnQuZmlyc3RDaGlsZCk7CiAKLSAgICB2YXIgZW50
cnkgPSB0aGlzOwotICAgIHRoaXMudGlwQnV0dG9uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IGVudHJ5LnRvZ2dsZVRpcEJhbGxvb24oZXZlbnQpIH0s
IGZhbHNlICk7CisgICAgdGhpcy50aXBCdXR0b25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy50b2dnbGVUaXBCYWxsb29uLmJpbmQodGhpcyksIGZhbHNlICk7CiAKICAgICB0
aGlzLmFyZWFFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhp
cy5hcmVhRWxlbWVudC5jbGFzc05hbWUgPSAibmV0d29yay1hcmVhIjsKSW5kZXg6IHBhZ2UvaW5z
cGVjdG9yL1Byb3BlcnRpZXNTZWN0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvaW5zcGVjdG9y
L1Byb3BlcnRpZXNTZWN0aW9uLmpzCShyZXZpc2lvbiAyNzk5NikKKysrIHBhZ2UvaW5zcGVjdG9y
L1Byb3BlcnRpZXNTZWN0aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Miw5ICs0Miw3IEBAIFdl
Ykluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW8KIAogICAgIHRoaXMuaGVhZGVy
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRpdGxlRWxlbWVudCk7CiAgICAgdGhpcy5oZWFkZXJF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc3VidGl0bGVFbGVtZW50KTsKLQotICAgIHZhciBzZWN0
aW9uID0gdGhpczsKLSAgICB0aGlzLmhlYWRlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCBmdW5jdGlvbigpIHsgc2VjdGlvbi5leHBhbmRlZCA9ICFzZWN0aW9uLmV4cGFuZGVkOyB9
LCBmYWxzZSk7CisgICAgdGhpcy5oZWFkZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy50b2dnbGUuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgdGhpcy5wcm9wZXJ0aWVz
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CiAgICAgdGhpcy5wcm9wZXJ0
aWVzRWxlbWVudC5jbGFzc05hbWUgPSAicHJvcGVydGllcyI7CkBAIC0xMzIsNSArMTMwLDEwIEBA
IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZVN0eWxlQ2xhc3MoImV4cGFuZGVkIik7CisgICAgfSwKKworICAgIHRvZ2dsZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9ICF0aGlzLmV4cGFuZGVk
OwogICAgIH0KIH0KSW5kZXg6IHBhZ2UvaW5zcGVjdG9yL1Jlc291cmNlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHBhZ2UvaW5zcGVjdG9yL1Jlc291cmNlLmpzCShyZXZpc2lvbiAyNzk5NikKKysrIHBhZ2Uv
aW5zcGVjdG9yL1Jlc291cmNlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00OTYsOCArNDk2LDcgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLnVwZGF0ZVRpdGxlVGltZW91dCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFy
IF9zZWxmID0gdGhpczsKLSAgICAgICAgdGhpcy51cGRhdGVUaXRsZVRpbWVvdXQgPSBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsgX3NlbGYudXBkYXRlVGl0bGUoKSB9LCAwKTsKKyAgICAgICAgdGhp
cy51cGRhdGVUaXRsZVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMudXBkYXRlVGl0bGUuYmluZCh0
aGlzKSwgMCk7CiAgICAgfSwKIAogICAgIHVwZGF0ZVRpdGxlOiBmdW5jdGlvbigpCkluZGV4OiBw
YWdlL2luc3BlY3Rvci9TaWRlYmFyUGFuZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL2luc3BlY3Rv
ci9TaWRlYmFyUGFuZS5qcwkocmV2aXNpb24gMjc5OTYpCisrKyBwYWdlL2luc3BlY3Rvci9TaWRl
YmFyUGFuZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsNyBAQCBXZWJJbnNwZWN0b3Iu
U2lkZWJhclBhbmUgPSBmdW5jdGlvbih0aXRsCiAKICAgICB0aGlzLnRpdGxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMudGl0bGVFbGVtZW50LmNsYXNz
TmFtZSA9ICJ0aXRsZSI7Ci0KLSAgICB2YXIgcGFuZSA9IHRoaXM7Ci0gICAgdGhpcy50aXRsZUVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsgcGFuZS5leHBhbmRl
ZCA9ICFwYW5lLmV4cGFuZGVkOyB9LCBmYWxzZSk7CisgICAgdGhpcy50aXRsZUVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpLCBmYWxzZSk7CiAK
ICAgICB0aGlzLmJvZHlFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgdGhpcy5ib2R5RWxlbWVudC5jbGFzc05hbWUgPSAiYm9keSI7CkBAIC0xMTYsNSArMTE0LDEw
IEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJleHBhbmRlZCIpOwogICAgICAgICBpZiAodGhpcy5v
bmNvbGxhcHNlKQogICAgICAgICAgICAgdGhpcy5vbmNvbGxhcHNlKHRoaXMpOworICAgIH0sCisK
KyAgICB0b2dnbGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuZXhwYW5kZWQgPSAh
dGhpcy5leHBhbmRlZDsKICAgICB9CiB9CkluZGV4OiBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3Iu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbAkocmV2aXNp
b24gMjc5OTkpCisrKyBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMzMsOSArMzMsOSBAQCBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0cmVl
b3V0bGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iaW5zcGVjdG9yLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJEYXRhYmFzZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2UuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlJlc291cmNlQ2F0ZWdvcnkuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRhdGFiYXNlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTaWRlYmFy
UGFuZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNy
Yz0iUHJvcGVydGllc1NlY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ik1ldHJpY3NTaWRlYmFyUGFuZS5qcyI+PC9zY3JpcHQ+CkluZGV4
OiBwYWdlL2luc3BlY3Rvci9pbnNwZWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9pbnNwZWN0
b3IvaW5zcGVjdG9yLmpzCShyZXZpc2lvbiAyNzk5NikKKysrIHBhZ2UvaW5zcGVjdG9yL2luc3Bl
Y3Rvci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjEwLDE3ICsyMTAsNiBAQCB2YXIgV2ViSW5zcGVj
dG9yID0gewogICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLnNldHVwTG9jYWxpemVkU3RyaW5nID0g
ZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgdmFyIGxvY2FsaXplZFN0cmluZ3NVUkwgPSBJbnNwZWN0
b3JDb250cm9sbGVyLmxvY2FsaXplZFN0cmluZ3NVUkwoKTsKLSAgICBpZiAobG9jYWxpemVkU3Ry
aW5nc1VSTCkgewotICAgICAgICB2YXIgbG9jYWxpemVkU3RyaW5nc1NjcmlwdEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKLSAgICAgICAgbG9jYWxpemVkU3RyaW5n
c1NjcmlwdEVsZW1lbnQudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOwotICAgICAgICBsb2NhbGl6
ZWRTdHJpbmdzU2NyaXB0RWxlbWVudC5zcmMgPSBsb2NhbGl6ZWRTdHJpbmdzVVJMOwotICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpLml0ZW0oMCkuYXBwZW5kQ2hp
bGQobG9jYWxpemVkU3RyaW5nc1NjcmlwdEVsZW1lbnQpOwotICAgIH0KLX0KLQogV2ViSW5zcGVj
dG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLmZpbGVPdXRsaW5lID0gbmV3IFRy
ZWVPdXRsaW5lKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsaXN0IikpOwpAQCAtMjU5LDI5ICsy
NDgsMzAgQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKIAogICAgIHRoaXMuYWRk
TWFpbkV2ZW50TGlzdGVuZXJzKGRvY3VtZW50KTsKIAotICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJ1bmxvYWQiLCBmdW5jdGlvbihldmVudCkgeyBXZWJJbnNwZWN0b3Iud2luZG93VW5sb2Fk
KGV2ZW50KSB9LCB0cnVlKTsKLSAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwg
ZnVuY3Rpb24oZXZlbnQpIHsgV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZShldmVudCkgfSwgdHJ1
ZSk7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsIHRoaXMud2luZG93VW5s
b2FkLmJpbmQodGhpcyksIHRydWUpOworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNp
emUiLCB0aGlzLndpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpLCB0cnVlKTsKIAotICAgIGRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIGZ1bmN0aW9uKGV2ZW50KSB7IFdlYkluc3Bl
Y3Rvci5jaGFuZ2VGb2N1cyhldmVudCkgfSwgdHJ1ZSk7Ci0gICAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiZm9jdXMiLCBmdW5jdGlvbihldmVudCkgeyBXZWJJbnNwZWN0b3IuY2hhbmdlRm9j
dXMoZXZlbnQpIH0sIHRydWUpOwotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXBy
ZXNzIiwgZnVuY3Rpb24oZXZlbnQpIHsgV2ViSW5zcGVjdG9yLmRvY3VtZW50S2V5cHJlc3MoZXZl
bnQpIH0sIHRydWUpOwotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZWNvcHki
LCBmdW5jdGlvbihldmVudCkgeyBXZWJJbnNwZWN0b3IuZG9jdW1lbnRDYW5Db3B5KGV2ZW50KSB9
LCB0cnVlKTsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjb3B5IiwgZnVuY3Rpb24o
ZXZlbnQpIHsgV2ViSW5zcGVjdG9yLmRvY3VtZW50Q29weShldmVudCkgfSwgdHJ1ZSk7CisgICAg
ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5jaGFuZ2VGb2N1cy5i
aW5kKHRoaXMpLCB0cnVlKTsKKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIs
IHRoaXMuY2hhbmdlRm9jdXMuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgZG9jdW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5cHJlc3MiLCB0aGlzLmRvY3VtZW50S2V5cHJlc3MuYmluZCh0aGlzKSwg
dHJ1ZSk7CisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlY29weSIsIHRoaXMu
ZG9jdW1lbnRDYW5Db3B5LmJpbmQodGhpcyksIHRydWUpOworICAgIGRvY3VtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNvcHkiLCB0aGlzLmRvY3VtZW50Q29weS5iaW5kKHRoaXMpLCB0cnVlKTsKIAog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWNrIikudGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNob3cgcHJldmlvdXMgcGFuZWwuIik7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImZvcndhcmQiKS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBuZXh0
IHBhbmVsLiIpOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaCIpLnNldEF0
dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlYXJjaCIpKTsK
IAotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWNrIikuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCBmdW5jdGlvbihldmVudCkgeyBXZWJJbnNwZWN0b3IuYmFjaygpIH0sIHRydWUpOwot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3J3YXJkIikuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCBmdW5jdGlvbihldmVudCkgeyBXZWJJbnNwZWN0b3IuZm9yd2FyZCgpIH0sIHRydWUp
OworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJiYWNrIikuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLmJhY2suYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImZvcndhcmQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuZm9yd2Fy
ZC5iaW5kKHRoaXMpLCB0cnVlKTsKICAgICB0aGlzLnVwZGF0ZUJhY2tGb3J3YXJkQnV0dG9ucygp
OwogCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF0dGFjaFRvZ2dsZSIpLmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsgV2ViSW5zcGVjdG9yLnRvZ2dsZUF0
dGFjaCgpIH0sIHRydWUpOwotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdGF0dXNUb2dn
bGUiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7IFdlYkluc3Bl
Y3Rvci50b2dnbGVTdGF0dXNBcmVhKCkgfSwgdHJ1ZSk7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInNpZGViYXJSZXNpemVXaWRnZXQiKS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCBXZWJJbnNwZWN0b3Iuc2lkZWJhclJlc2l6ZXJEcmFnU3RhcnQsIHRydWUpOwotICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJzaWRlYmFyUmVzaXplciIpLmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlZG93biIsIFdlYkluc3BlY3Rvci5zaWRlYmFyUmVzaXplckRyYWdTdGFydCwgdHJ1ZSk7Ci0g
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaFJlc3VsdHNSZXNpemVyIikuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgV2ViSW5zcGVjdG9yLnNlYXJjaFJlc3VsdHNSZXNpemVy
RHJhZ1N0YXJ0LCBmYWxzZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImF0dGFjaFRv
Z2dsZSIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy50b2dnbGVBdHRhY2guYmluZCh0
aGlzKSwgdHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0YXR1c1RvZ2dsZSIp
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy50b2dnbGVTdGF0dXNBcmVhLmJpbmQodGhp
cyksIHRydWUpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNpZGViYXJSZXNpemVX
aWRnZXQiKS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLnNpZGViYXJSZXNpemVy
RHJhZ1N0YXJ0LCB0cnVlKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2lkZWJhclJl
c2l6ZXIiKS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLnNpZGViYXJSZXNpemVy
RHJhZ1N0YXJ0LCB0cnVlKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoUmVz
dWx0c1Jlc2l6ZXIiKS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLnNlYXJjaFJl
c3VsdHNSZXNpemVyRHJhZ1N0YXJ0LCB0cnVlKTsKIAogICAgIGRvY3VtZW50LmJvZHkuYWRkU3R5
bGVDbGFzcygiZGV0YWNoZWQiKTsKIApAQCAtMjkwLDExICsyODAsMTUgQEAgV2ViSW5zcGVjdG9y
LmxvYWRlZCA9IGZ1bmN0aW9uKCkKIAogdmFyIHdpbmRvd0xvYWRlZCA9IGZ1bmN0aW9uKCkKIHsK
LSAgICBXZWJJbnNwZWN0b3Iuc2V0dXBMb2NhbGl6ZWRTdHJpbmcoZXZlbnQpOwotCi0gICAgLy8g
RGVsYXkgY2FsbGluZyBsb2FkZWQgdG8gZ2l2ZSB0aW1lIGZvciB0aGUgbG9jYWxpemVkIHN0cmlu
Z3MgZmlsZSB0byBsb2FkLgotICAgIC8vIENhbGxpbmcgaXQgdG9vIGVhcmx5IHdpbGwgY2F1c2Ug
bG9jYWxpemVkIHN0cmluZyBsb29rdXBzIHRvIGZhaWwuCi0gICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgV2ViSW5zcGVjdG9yLmxvYWRlZCgpIH0sIDApOworICAgIHZhciBsb2NhbGl6ZWRTdHJp
bmdzVVJMID0gSW5zcGVjdG9yQ29udHJvbGxlci5sb2NhbGl6ZWRTdHJpbmdzVVJMKCk7CisgICAg
aWYgKGxvY2FsaXplZFN0cmluZ3NVUkwpIHsKKyAgICAgICAgdmFyIGxvY2FsaXplZFN0cmluZ3NT
Y3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CisgICAgICAg
IGxvY2FsaXplZFN0cmluZ3NTY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBX
ZWJJbnNwZWN0b3IubG9hZGVkLmJpbmQoV2ViSW5zcGVjdG9yKSwgZmFsc2UpOworICAgICAgICBs
b2NhbGl6ZWRTdHJpbmdzU2NyaXB0RWxlbWVudC50eXBlID0gInRleHQvamF2YXNjcmlwdCI7Cisg
ICAgICAgIGxvY2FsaXplZFN0cmluZ3NTY3JpcHRFbGVtZW50LnNyYyA9IGxvY2FsaXplZFN0cmlu
Z3NVUkw7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIikuaXRl
bSgwKS5hcHBlbmRDaGlsZChsb2NhbGl6ZWRTdHJpbmdzU2NyaXB0RWxlbWVudCk7CisgICAgfSBl
bHNlCisgICAgICAgIFdlYkluc3BlY3Rvci5sb2FkZWQoKTsKIAogICAgIGRlbGV0ZSB3aW5kb3dM
b2FkZWQ7CiAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLCB3aW5kb3dMb2Fk
ZWQsIGZhbHNlKTsKSW5kZXg6IHBhZ2UvaW5zcGVjdG9yL3V0aWxpdGllcy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBwYWdlL2luc3BlY3Rvci91dGlsaXRpZXMuanMJKHJldmlzaW9uIDI3OTk2KQorKysgcGFn
ZS9pbnNwZWN0b3IvdXRpbGl0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03OSwxNCArNzksMTkg
QEAgT2JqZWN0LmRlc2NyaWJlID0gZnVuY3Rpb24ob2JqLCBhYmJyZXZpYQogT2JqZWN0LnNvcnRl
ZFByb3BlcnRpZXMgPSBmdW5jdGlvbihvYmopCiB7CiAgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsK
LSAgICBmb3IgKHZhciBwcm9wIGluIG9iaikgeworICAgIGZvciAodmFyIHByb3AgaW4gb2JqKQog
ICAgICAgICBwcm9wZXJ0aWVzLnB1c2gocHJvcCk7Ci0gICAgfQotCiAgICAgcHJvcGVydGllcy5z
b3J0KCk7CiAgICAgcmV0dXJuIHByb3BlcnRpZXM7CiB9CiAKK0Z1bmN0aW9uLnByb3RvdHlwZS5i
aW5kID0gZnVuY3Rpb24odGhpc09iamVjdCkKK3sKKwl2YXIgZnVuYyA9IHRoaXM7CisJdmFyIGFy
Z3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpOworCXJldHVybiBm
dW5jdGlvbigpIHsgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc09iamVjdCwgYXJncy5jb25jYXQoQXJy
YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSkpIH07Cit9CisKIEVsZW1lbnQu
cHJvdG90eXBlLnJlbW92ZVN0eWxlQ2xhc3MgPSBmdW5jdGlvbihjbGFzc05hbWUpIAogewogICAg
IC8vIFRlc3QgZm9yIHRoZSBzaW1wbGUgY2FzZSBiZWZvcmUgdXNpbmcgYSBSZWdFeHAuCkBAIC0x
NDAsNyArMTQ1LDYgQEAgTm9kZS5wcm90b3R5cGUuZmlyc3RQYXJlbnRPclNlbGZXaXRoTm9kZQog
ICAgIGZvciAodmFyIG5vZGUgPSB0aGlzOyBub2RlICYmIChub2RlICE9PSBkb2N1bWVudCk7IG5v
ZGUgPSBub2RlLnBhcmVudE5vZGUpCiAgICAgICAgIGlmIChub2RlLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCkgPT09IG5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpCiAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKLQogICAgIHJldHVybiBudWxsOwogfQogCkBAIC0xNDksNyArMTUzLDYgQEAgTm9kZS5wcm90
b3R5cGUuZmlyc3RQYXJlbnRPclNlbGZXaXRoQ2xhcwogICAgIGZvciAodmFyIG5vZGUgPSB0aGlz
OyBub2RlICYmIChub2RlICE9PSBkb2N1bWVudCk7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpCiAg
ICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBub2RlLmhh
c1N0eWxlQ2xhc3MoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIHJldHVybiBub2RlOwotCiAgICAg
cmV0dXJuIG51bGw7CiB9CiAKQEAgLTE1Nyw3ICsxNjAsNiBAQCBOb2RlLnByb3RvdHlwZS5maXJz
dFBhcmVudFdpdGhDbGFzcyA9IGZ1CiB7CiAgICAgaWYgKCF0aGlzLnBhcmVudE5vZGUpCiAgICAg
ICAgIHJldHVybiBudWxsOwotCiAgICAgcmV0dXJuIHRoaXMucGFyZW50Tm9kZS5maXJzdFBhcmVu
dE9yU2VsZldpdGhDbGFzcyhjbGFzc05hbWUpOwogfQogCg==
</data>
<flag name="review"
          id="7507"
          type_id="1"
          status="+"
          setter="aroben"
    />
          </attachment>
      

    </bug>

</bugzilla>