<?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>44837</bug_id>
          
          <creation_ts>2010-08-29 06:32:50 -0700</creation_ts>
          <short_desc>Web Inspector: persist DOM breakpoints between page reloads</short_desc>
          <delta_ts>2010-09-03 15:57:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>45209</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>271143</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-29 06:32:50 -0700</bug_when>
    <thetext>Web Inspector: persist DOM breakpoints between page reloads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271378</commentid>
    <comment_count>1</comment_count>
      <attachid>65902</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-30 04:03:16 -0700</bug_when>
    <thetext>Created attachment 65902
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271412</commentid>
    <comment_count>2</comment_count>
      <attachid>65902</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-30 06:56:26 -0700</bug_when>
    <thetext>Comment on attachment 65902
Proposed patch.

&gt; +++ b/LayoutTests/inspector/dom-breakpoints.html
&gt; @@ -35,7 +35,7 @@ var test = function()
&gt;      function step2(node)
&gt;      {
&gt;          InspectorTest.addResult(&quot;Found dom node d0.&quot;);
&gt; -        WebInspector.domBreakpointManager.setBreakpoint(node, WebInspector.DOMBreakpoint.Types.SubtreeModified);
&gt; +        node.setBreakpoint(&quot;SubtreeModified&quot;);
Use constants for such arguments.


&gt; +++ b/WebCore/inspector/front-end/DOMAgent.js
&gt; @@ -143,6 +143,40 @@ WebInspector.DOMNode.prototype = {
&gt;          this.ownerDocument._domAgent.removeAttributeAsync(this, name, callback);
&gt;      },
&gt;  
&gt; +    path: function()
&gt; +    {
&gt; +        var path = [];
&gt; +        var node = this;
&gt; +        while (node &amp;&amp; &quot;index&quot; in node &amp;&amp; node.nodeName &amp;&amp; node.nodeName.length) {
Is it possible that there is node.index but but no node.nodeName?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271413</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-08-30 06:57:40 -0700</bug_when>
    <thetext>If we restore breakpoints from the front-end we may miss some early events, is it intentional or should we move the logic to the backend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271758</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-08-30 16:47:34 -0700</bug_when>
    <thetext>Pavel, please use the http://webkit.org/new-inspector-bug link, or the &quot;Inspector&quot;
link from within Bugzilla &lt;https://bugs.webkit.org/enter_bug.cgi&gt;. I would like to
get CC&apos;d on your bugs. That automatically applies the proper template and a CC
list of interested people (including reviewers to get extra eyes on patches). Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272078</commentid>
    <comment_count>5</comment_count>
      <attachid>66047</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-31 07:19:51 -0700</bug_when>
    <thetext>Created attachment 66047
All comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272081</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-08-31 07:22:56 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Pavel, please use the http://webkit.org/new-inspector-bug link, or the &quot;Inspector&quot;
&gt; link from within Bugzilla &lt;https://bugs.webkit.org/enter_bug.cgi&gt;. I would like to
&gt; get CC&apos;d on your bugs. That automatically applies the proper template and a CC
&gt; list of interested people (including reviewers to get extra eyes on patches). Thanks!

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272709</commentid>
    <comment_count>7</comment_count>
      <attachid>66047</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-09-01 02:38:26 -0700</bug_when>
    <thetext>Comment on attachment 66047
All comments addressed.

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

&gt; WebCore/inspector/front-end/DOMAgent.js:804
&gt; +        WebInspector.DOMBreakpoint._ids = {};
Why do we need both integer and string type value? We should either use strings or intergers everywhere, r- for this. Given that the backend uses integers and we have named constants in the frontend it seems like we may well get rid of string values.

&gt; WebCore/inspector/front-end/DOMAgent.js:842
&gt; +        WebInspector.DOMBreakpoint._contextMenuLabels[WebInspector.DOMBreakpoint.Types.NodeRemoved] = WebInspector.UIString(&quot;Break on Node Removal&quot;);        
Revert this please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273330</commentid>
    <comment_count>8</comment_count>
      <attachid>66353</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-02 04:40:00 -0700</bug_when>
    <thetext>Created attachment 66353
Proposed patch.

Comments addressed. Added test for restoring DOM breakpoints on page reload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273347</commentid>
    <comment_count>9</comment_count>
      <attachid>66359</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-09-02 04:55:03 -0700</bug_when>
    <thetext>Created attachment 66359
Proposed patch.

Comments addressed. Added test for restoring DOM breakpoints on page reload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273784</commentid>
    <comment_count>10</comment_count>
      <attachid>66359</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 22:06:09 -0700</bug_when>
    <thetext>Comment on attachment 66359
Proposed patch.

Clearing flags on attachment: 66359

Committed r66712: &lt;http://trac.webkit.org/changeset/66712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273785</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 22:06:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65902</attachid>
            <date>2010-08-30 04:03:16 -0700</date>
            <delta_ts>2010-08-31 07:20:06 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>persist.patch</filename>
            <type>text/plain</type>
            <size>19572</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZTkxZjY3Li43YjY4NGE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDgt
MzAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdXNl
IGNvbnZpbmllbmNlIG1ldGhvZHMgb24gZG9tIG5vZGVzIHRvIHNldC9yZW1vdmUgZG9tIGJyZWFr
cG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NDgzNworCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sOgorCiAyMDEw
LTA4LTI4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1i
cmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5o
dG1sCmluZGV4IGZiYjY1MzIuLjJkZmU0YzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWJyZWFrcG9pbnRzLmh0bWwKQEAgLTM1LDcgKzM1LDcgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigp
CiAgICAgZnVuY3Rpb24gc3RlcDIobm9kZSkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJGb3VuZCBkb20gbm9kZSBkMC4iKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bUJyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQobm9kZSwgV2ViSW5zcGVjdG9yLkRPTUJy
ZWFrcG9pbnQuVHlwZXMuU3VidHJlZU1vZGlmaWVkKTsKKyAgICAgICAgbm9kZS5zZXRCcmVha3Bv
aW50KCJTdWJ0cmVlTW9kaWZpZWQiKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
IlNldCBzdWJ0cmVlIG1vZGlmaWVkIERPTSBicmVha3BvaW50IG9uIGQwLiIpOwogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJhcHBlbmRFbGVtZW50KCdkMCcsICdkMScp
Iik7CiAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAzLmJpbmQobnVs
bCwgbm9kZSkpOwpAQCAtNDMsNyArNDMsNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIAogICAg
IGZ1bmN0aW9uIHN0ZXAzKG5vZGUpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJl
YWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpOworICAgICAgICBu
b2RlLnJlbW92ZUJyZWFrcG9pbnQoIlN1YnRyZWVNb2RpZmllZCIpOwogICAgICAgICBJbnNwZWN0
b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbigpOwogICAgICAgICBmaW5kRE9NTm9kZUJ5SWQoImQxIiwg
c3RlcDQpOwogICAgIH0KQEAgLTUxLDcgKzUxLDcgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAg
ICAgZnVuY3Rpb24gc3RlcDQobm9kZSkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJGb3VuZCBkb20gbm9kZSBkMS4iKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJy
ZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQobm9kZSwgV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQuVHlwZXMuQXR0cmlidXRlTW9kaWZpZWQpOworICAgICAgICBub2RlLnNldEJyZWFrcG9p
bnQoIkF0dHJpYnV0ZU1vZGlmaWVkIik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJTZXQgYXR0cmlidXRlIG1vZGlmaWVkIERPTSBicmVha3BvaW50IG9uIGQxLiIpOwogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJtb2RpZnlBdHRyaWJ1dGUoJ2QxJywg
J2NsYXNzTmFtZScsICdmb28nKSIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBh
dXNlZChzdGVwNS5iaW5kKG51bGwsIG5vZGUpKTsKQEAgLTU5LDcgKzU5LDcgQEAgdmFyIHRlc3Qg
PSBmdW5jdGlvbigpCiAKICAgICBmdW5jdGlvbiBzdGVwNShub2RlKQogICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9k
ZShub2RlKTsKKyAgICAgICAgbm9kZS5yZW1vdmVCcmVha3BvaW50KCJBdHRyaWJ1dGVNb2RpZmll
ZCIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbigpOwogICAgICAgICBm
aW5kRE9NTm9kZUJ5SWQoImQxIiwgc3RlcDYpOwogICAgIH0KQEAgLTY3LDcgKzY3LDcgQEAgdmFy
IHRlc3QgPSBmdW5jdGlvbigpCiAgICAgZnVuY3Rpb24gc3RlcDYobm9kZSkKICAgICB7CiAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGb3VuZCBkb20gbm9kZSBkMS4iKTsKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQobm9kZSwg
V2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuTm9kZVJlbW92ZWQpOworICAgICAgICBu
b2RlLnNldEJyZWFrcG9pbnQoIk5vZGVSZW1vdmVkIik7CiAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJTZXQgbm9kZSByZW1vdmVkIERPTSBicmVha3BvaW50IG9uIGQxLiIpOwogICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJyZW1vdmVFbGVtZW50KCdkMScp
Iik7CiAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXA3LmJpbmQobnVs
bCwgbm9kZSkpOwpAQCAtNzUsNyArNzUsNyBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIAogICAg
IGZ1bmN0aW9uIHN0ZXA3KG5vZGUpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJl
YWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpOworICAgICAgICBu
b2RlLnJlbW92ZUJyZWFrcG9pbnQoIk5vZGVSZW1vdmVkIik7CiAgICAgICAgIEluc3BlY3RvclRl
c3QuY29tcGxldGVEZWJ1Z2dlclRlc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA4Zjc2MS4uMzQwODFmYSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxMC0wOC0zMCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBwZXJzaXN0IERPTSBicmVha3BvaW50cyBiZXR3ZWVuIHBhZ2UgcmVs
b2FkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4
MzcKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFu
ZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50SXRlbSk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01Ob2RlLnByb3RvdHlwZS5wYXRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2Rl
LnByb3RvdHlwZS5zZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2Rl
LnByb3RvdHlwZS5oYXNCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2Rl
LnByb3RvdHlwZS5yZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01O
b2RlLnByb3RvdHlwZS5yZW1vdmVCcmVha3BvaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NQWdlbnQucHJvdG90eXBlLl9zZXREb2N1bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NQWdlbnQucHJvdG90eXBlLl9jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX3JlbW92ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01CcmVha3BvaW50TWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLnNldEJyZWFrcG9pbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVCcmVha3Bv
aW50c0Zvck5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2Vy
LnByb3RvdHlwZS5fYnJlYWtwb2ludFJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRP
TUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5yZXN0b3JlQnJlYWtwb2ludHMucmVzdG9yZUJy
ZWFrcG9pbnRzRm9yTm9kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1h
bmFnZXIucHJvdG90eXBlLnJlc3RvcmVCcmVha3BvaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5s
YWJlbEZvclR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuY29udGV4
dE1lbnVMYWJlbEZvclR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQu
cHJvdG90eXBlLmdldCBub2RlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnQucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3Bv
aW50LnByb3RvdHlwZS5zZXQgZW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJl
YWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlLnNldERvY3VtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1l
bnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxl
bWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291
cmNlRnJhbWUucHJvdG90eXBlLl9zaG93UG9wdXAuc2hvd09iamVjdFBvcHVwKToKKwogMjAxMC0w
OC0yOCAgSmVyZW15IE1vc2tvdmljaCAgPGplcmVteUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwppbmRleCAzYTA4NjBmLi40MDg4
MjlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNT
aWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dHNTaWRlYmFyUGFuZS5qcwpAQCAtMTg4LDcgKzE4OCw4IEBAIFdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRJdGVtLmNhbGwodGhpcywgYnJlYWtwb2ludCk7CiAKLSAgICB2YXIgbGluayA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVSZWZlcmVuY2UodGhpcy5fYnJl
YWtwb2ludC5ub2RlKTsKKyAgICB2YXIgbm9kZSA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2Rl
Rm9ySWQodGhpcy5fYnJlYWtwb2ludC5ub2RlSWQpOworICAgIHZhciBsaW5rID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZVJlZmVyZW5jZShub2RlKTsKICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGxpbmspOwogCiAgICAgdmFyIHR5cGUgPSBXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludC5sYWJlbEZvclR5cGUodGhpcy5fYnJlYWtwb2ludC50eXBlKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCA1YWFhMGQzLi5iNzBlYjZl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC0xNDMsNiArMTQz
LDQwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5v
d25lckRvY3VtZW50Ll9kb21BZ2VudC5yZW1vdmVBdHRyaWJ1dGVBc3luYyh0aGlzLCBuYW1lLCBj
YWxsYmFjayk7CiAgICAgfSwKIAorICAgIHBhdGg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciBwYXRoID0gW107CisgICAgICAgIHZhciBub2RlID0gdGhpczsKKyAgICAgICAgd2hpbGUg
KG5vZGUgJiYgImluZGV4IiBpbiBub2RlICYmIG5vZGUubm9kZU5hbWUgJiYgbm9kZS5ub2RlTmFt
ZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIHBhdGgucHVzaChbbm9kZS5pbmRleCwgbm9kZS5ub2Rl
TmFtZV0pOworICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKKyAgICAgICAgfQor
ICAgICAgICBwYXRoLnJldmVyc2UoKTsKKyAgICAgICAgcmV0dXJuIHBhdGguam9pbigiLCIpOwor
ICAgIH0sCisKKyAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbih0eXBlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5zZXRCcmVha3BvaW50
KHRoaXMuaWQsIHR5cGUsIHRydWUsIHRoaXMucGF0aCgpKTsKKyAgICB9LAorCisgICAgaGFzQnJl
YWtwb2ludDogZnVuY3Rpb24odHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhIVdlYkluc3Bl
Y3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5maW5kQnJlYWtwb2ludCh0aGlzLmlkLCB0eXBlKTsK
KyAgICB9LAorCisgICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24odHlwZSkKKyAgICB7Cisg
ICAgICAgIHZhciBicmVha3BvaW50ID0gV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2Vy
LmZpbmRCcmVha3BvaW50KHRoaXMuaWQsIHR5cGUpOworICAgICAgICBpZiAoYnJlYWtwb2ludCkK
KyAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgfSwKKworICAgIHJlbW92ZUJy
ZWFrcG9pbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJl
YWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKHRoaXMuaWQpOworICAgIH0s
CisKICAgICBfc2V0QXR0cmlidXRlc1BheWxvYWQ6IGZ1bmN0aW9uKGF0dHJzKQogICAgIHsKICAg
ICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gW107CkBAIC0zNjIsNiArMzk2LDcgQEAgV2ViSW5zcGVj
dG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50KHRoaXMsIHRoaXMuX3dpbmRvdywgcGF5bG9hZCk7
CiAgICAgICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZVtwYXlsb2FkLmlkXSA9IHRoaXMuZG9jdW1l
bnQ7CiAgICAgICAgICAgICB0aGlzLl9iaW5kTm9kZXModGhpcy5kb2N1bWVudC5jaGlsZHJlbik7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVzdG9yZUJy
ZWFrcG9pbnRzKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9
IG51bGw7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2V0RG9jdW1lbnQo
dGhpcy5kb2N1bWVudCk7CkBAIC00MTgsNyArNDUzLDE3IEBAIFdlYkluc3BlY3Rvci5ET01BZ2Vu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBldmVudCA9IHsgdGFyZ2V0IDogbm9kZSwgcmVs
YXRlZE5vZGUgOiBwYXJlbnQgfTsKICAgICAgICAgdGhpcy5kb2N1bWVudC5fZmlyZURvbUV2ZW50
KCJET01Ob2RlUmVtb3ZlZCIsIGV2ZW50KTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2lkVG9ET01O
b2RlW25vZGVJZF07Ci0gICAgfQorICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50cyhub2Rl
KTsKKyAgICB9LAorCisgICAgX3JlbW92ZUJyZWFrcG9pbnRzOiBmdW5jdGlvbihub2RlKQorICAg
IHsKKyAgICAgICAgbm9kZS5yZW1vdmVCcmVha3BvaW50cygpOworICAgICAgICBpZiAoIW5vZGUu
Y2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJy
ZWFrcG9pbnRzKG5vZGUuY2hpbGRyZW5baV0pOworICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlID0ge30KQEAgLTY3OSwyMCArNzI0LDI0IEBAIFdlYkluc3BlY3Rvci5j
aGlsZE5vZGVSZW1vdmVkID0gZnVuY3Rpb24oKQogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRN
YW5hZ2VyID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2JyZWFrcG9pbnRzID0ge307CisgICAg
dGhpcy5fcGF0aENhY2hlID0ge307CiB9CiAKIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUgPSB7Ci0gICAgc2V0QnJlYWtwb2ludDogZnVuY3Rpb24obm9kZSwgdHlw
ZSkKKyAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbihub2RlSWQsIHR5cGUsIGVuYWJsZWQsIHBh
dGgpCiAgICAgewotICAgICAgICBpZiAoIShub2RlLmlkIGluIHRoaXMuX2JyZWFrcG9pbnRzKSkK
LSAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW25vZGUuaWRdID0ge307Ci0gICAgICAgIGVs
c2UgaWYgKHR5cGUgaW4gdGhpcy5fYnJlYWtwb2ludHNbbm9kZS5pZF0pCisgICAgICAgIGlmICgh
KG5vZGVJZCBpbiB0aGlzLl9icmVha3BvaW50cykpCisgICAgICAgICAgICB0aGlzLl9icmVha3Bv
aW50c1tub2RlSWRdID0ge307CisgICAgICAgIGVsc2UgaWYgKHR5cGUgaW4gdGhpcy5fYnJlYWtw
b2ludHNbbm9kZUlkXSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludChub2RlLCB0eXBlKTsKLSAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludHNbbm9kZS5pZF1bdHlwZV0gPSBicmVha3BvaW50OworICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludChub2RlSWQs
IHR5cGUsIGVuYWJsZWQpOworICAgICAgICB0aGlzLl9icmVha3BvaW50c1tub2RlSWRdW3R5cGVd
ID0gYnJlYWtwb2ludDsKICAgICAgICAgYnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKCJyZW1v
dmVkIiwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQsIHRoaXMpOwogCisgICAgICAgIGlmICghKG5v
ZGVJZCBpbiB0aGlzLl9wYXRoQ2FjaGUpKQorICAgICAgICAgICAgdGhpcy5fcGF0aENhY2hlW25v
ZGVJZF0gPSBwYXRoOworCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJk
b20tYnJlYWtwb2ludC1hZGRlZCIsIGJyZWFrcG9pbnQpOwogICAgIH0sCiAKQEAgLTcwMyw5ICs3
NTIsOSBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgcmV0dXJuIG5vZGVCcmVha3BvaW50c1t0eXBlXTsKICAgICB9LAogCi0gICAg
cmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlOiBmdW5jdGlvbihub2RlKQorICAgIHJlbW92ZUJyZWFr
cG9pbnRzRm9yTm9kZTogZnVuY3Rpb24obm9kZUlkKQogICAgIHsKLSAgICAgICAgdmFyIG5vZGVC
cmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW25vZGUuaWRdOworICAgICAgICB2YXIgbm9k
ZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbbm9kZUlkXTsKICAgICAgICAgZm9yICh2
YXIgdHlwZSBpbiBub2RlQnJlYWtwb2ludHMpCiAgICAgICAgICAgICBub2RlQnJlYWtwb2ludHNb
dHlwZV0ucmVtb3ZlKCk7CiAgICAgfSwKQEAgLTcxNCwyMyArNzYzLDUwIEBAIFdlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIg
YnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKIAotICAgICAgICB2YXIgbm9kZUJyZWFrcG9pbnRz
ID0gdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5ub2RlLmlkXTsKKyAgICAgICAgdmFyIG5v
ZGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQubm9kZUlkXTsKICAg
ICAgICAgZGVsZXRlIG5vZGVCcmVha3BvaW50c1ticmVha3BvaW50LnR5cGVdOwogICAgICAgICBm
b3IgKHZhciB0eXBlIGluIG5vZGVCcmVha3BvaW50cykKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQubm9kZS5pZF07CisKKyAg
ICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQubm9kZUlkXTsKKyAgICAg
ICAgZGVsZXRlIHRoaXMuX3BhdGhDYWNoZVticmVha3BvaW50Lm5vZGVJZF07CisgICAgfSwKKwor
ICAgIHJlc3RvcmVCcmVha3BvaW50czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGJy
ZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHM7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRz
ID0ge307CisgICAgICAgIHZhciBwYXRoQ2FjaGUgPSB0aGlzLl9wYXRoQ2FjaGU7CisgICAgICAg
IHRoaXMuX3BhdGhDYWNoZSA9IHt9OworCisgICAgICAgIGZvciAodmFyIG9sZE5vZGVJZCBpbiBi
cmVha3BvaW50cykgeworICAgICAgICAgICAgdmFyIHBhdGggPSBwYXRoQ2FjaGVbb2xkTm9kZUlk
XTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5k
KHBhdGgsIHJlc3RvcmVCcmVha3BvaW50c0Zvck5vZGUuYmluZCh0aGlzLCBicmVha3BvaW50c1tv
bGROb2RlSWRdLCBwYXRoKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZXN0b3Jl
QnJlYWtwb2ludHNGb3JOb2RlKG5vZGVCcmVha3BvaW50cywgcGF0aCwgbm9kZUlkKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIW5vZGVJZCkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIG5vZGVCcmVha3BvaW50cykgeworICAgICAgICAg
ICAgICAgIHZhciBicmVha3BvaW50ID0gbm9kZUJyZWFrcG9pbnRzW3R5cGVdOworICAgICAgICAg
ICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChub2RlSWQsIGJyZWFrcG9pbnQudHlwZSwgYnJlYWtw
b2ludC5lbmFibGVkLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0K
IAogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAotV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQgPSBmdW5jdGlvbihub2RlLCB0eXBlKQorV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQg
PSBmdW5jdGlvbihub2RlSWQsIHR5cGUsIGVuYWJsZWQpCiB7Ci0gICAgdGhpcy5ub2RlID0gbm9k
ZTsKLSAgICB0aGlzLnR5cGUgPSB0eXBlOwotICAgIHRoaXMuX2VuYWJsZWQgPSB0cnVlOworICAg
IHRoaXMuX25vZGVJZCA9IG5vZGVJZDsKKyAgICB0aGlzLl90eXBlID0gdHlwZTsKKyAgICB0aGlz
Ll9lbmFibGVkID0gZW5hYmxlZDsKKyAgICB0aGlzLl90eXBlSWQgPSBXZWJJbnNwZWN0b3IuRE9N
QnJlYWtwb2ludC5UeXBlc1t0eXBlXTsKIAotICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJl
YWtwb2ludCh0aGlzLm5vZGUuaWQsIHRoaXMudHlwZSk7CisgICAgaWYgKHRoaXMuZW5hYmxlZCkK
KyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRET01CcmVha3BvaW50KHRoaXMubm9kZUlkLCB0
aGlzLl90eXBlSWQpOwogfQogCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcyA9IHsK
QEAgLTc0MiwxMCArODE4LDExIEBAIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzID0g
ewogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQubGFiZWxGb3JUeXBlID0gZnVuY3Rpb24odHlw
ZSkKIHsKICAgICBpZiAoIVdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50Ll9sYWJlbHMpIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2xhYmVscyA9IHt9OwotICAgICAgICBX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5fbGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3Bv
aW50LlR5cGVzLlN1YnRyZWVNb2RpZmllZF0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN1YnRy
ZWUgTW9kaWZpZWQiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2xhYmVs
c1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5BdHRyaWJ1dGVNb2RpZmllZF0gPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkF0dHJpYnV0ZSBNb2RpZmllZCIpOwotICAgICAgICBXZWJJ
bnNwZWN0b3IuRE9NQnJlYWtwb2ludC5fbGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50
LlR5cGVzLk5vZGVSZW1vdmVkXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm9kZSBSZW1vdmVk
Iik7CisgICAgICAgIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50Ll9sYWJlbHMgPSB7CisgICAg
ICAgICAgICBTdWJ0cmVlTW9kaWZpZWQ6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3VidHJlZSBN
b2RpZmllZCIpLAorICAgICAgICAgICAgQXR0cmlidXRlTW9kaWZpZWQ6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQXR0cmlidXRlIE1vZGlmaWVkIiksCisgICAgICAgICAgICBOb2RlUmVtb3ZlZDog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOb2RlIFJlbW92ZWQiKQorICAgICAgICB9OwogICAgIH0K
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2xhYmVsc1t0eXBlXTsKIH0K
QEAgLTc1MywxNSArODMwLDI2IEBAIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LmxhYmVsRm9y
VHlwZSA9IGZ1bmN0aW9uKHR5cGUpCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5jb250ZXh0
TWVudUxhYmVsRm9yVHlwZSA9IGZ1bmN0aW9uKHR5cGUpCiB7CiAgICAgaWYgKCFXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludC5fY29udGV4dE1lbnVMYWJlbHMpIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnQuX2NvbnRleHRNZW51TGFiZWxzID0ge307Ci0gICAgICAgIFdlYklu
c3BlY3Rvci5ET01CcmVha3BvaW50Ll9jb250ZXh0TWVudUxhYmVsc1tXZWJJbnNwZWN0b3IuRE9N
QnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZpZWRdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJCcmVhayBvbiBTdWJ0cmVlIE1vZGlmaWNhdGlvbnMiKTsKLSAgICAgICAgV2ViSW5zcGVjdG9y
LkRPTUJyZWFrcG9pbnQuX2NvbnRleHRNZW51TGFiZWxzW1dlYkluc3BlY3Rvci5ET01CcmVha3Bv
aW50LlR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkXSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQnJl
YWsgb24gQXR0cmlidXRlcyBNb2RpZmljYXRpb25zIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5E
T01CcmVha3BvaW50Ll9jb250ZXh0TWVudUxhYmVsc1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2lu
dC5UeXBlcy5Ob2RlUmVtb3ZlZF0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJyZWFrIG9uIE5v
ZGUgUmVtb3ZhbCIpOworICAgICAgICBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5fY29udGV4
dE1lbnVMYWJlbHMgPSB7CisgICAgICAgICAgICBTdWJ0cmVlTW9kaWZpZWQ6IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQnJlYWsgb24gU3VidHJlZSBNb2RpZmljYXRpb25zIiksCisgICAgICAgICAg
ICBBdHRyaWJ1dGVNb2RpZmllZDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCcmVhayBvbiBBdHRy
aWJ1dGVzIE1vZGlmaWNhdGlvbnMiKSwKKyAgICAgICAgICAgIE5vZGVSZW1vdmVkOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkJyZWFrIG9uIE5vZGUgUmVtb3ZhbCIpCisgICAgICAgIH07CiAgICAg
fQogICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5fY29udGV4dE1lbnVMYWJl
bHNbdHlwZV07CiB9CiAKIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnByb3RvdHlwZSA9IHsK
KyAgICBnZXQgbm9kZUlkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ub2RlSWQ7Cisg
ICAgfSwKKworICAgIGdldCB0eXBlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl90eXBl
OworICAgIH0sCisKICAgICBnZXQgZW5hYmxlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZW5hYmxlZDsKQEAgLTc3MywxOCArODYxLDE4IEBAIFdlYkluc3BlY3Rvci5ET01CcmVha3Bv
aW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9l
bmFibGVkID0gZW5hYmxlZDsKLSAgICAgICAgaWYgKHRoaXMuX2VuYWJsZWQpCi0gICAgICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLnNldERPTUJyZWFrcG9pbnQodGhpcy5ub2RlLmlkLCB0aGlzLnR5
cGUpOworICAgICAgICBpZiAodGhpcy5lbmFibGVkKQorICAgICAgICAgICAgSW5zcGVjdG9yQmFj
a2VuZC5zZXRET01CcmVha3BvaW50KHRoaXMubm9kZUlkLCB0aGlzLl90eXBlSWQpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFrcG9pbnQo
dGhpcy5ub2RlLmlkLCB0aGlzLnR5cGUpOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5y
ZW1vdmVET01CcmVha3BvaW50KHRoaXMubm9kZUlkLCB0aGlzLl90eXBlSWQpOwogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJlbmFibGUtY2hhbmdlZCIpOwogICAgIH0s
CiAKICAgICByZW1vdmU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9lbmFi
bGVkKQotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50KHRo
aXMubm9kZS5pZCwgdGhpcy50eXBlKTsKKyAgICAgICAgaWYgKHRoaXMuZW5hYmxlZCkKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzLm5vZGVJZCwg
dGhpcy5fdHlwZUlkKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJl
bW92ZWQiKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzCmluZGV4IGQ4MTkzM2UuLjM4YmQ2MTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC0xNTksMTYgKzE1OSw4IEBAIFdlYkluc3Bl
Y3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIHJlc2V0OiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5mb2N1c2VkRE9NTm9kZSkgewotICAgICAgICAgICAg
dGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldCA9IFtdOwotICAgICAgICAgICAgdmFyIG5vZGUgPSB0
aGlzLmZvY3VzZWRET01Ob2RlOwotICAgICAgICAgICAgd2hpbGUgKCJpbmRleCIgaW4gbm9kZSAm
JiBub2RlLm5vZGVOYW1lICYmIG5vZGUubm9kZU5hbWUubGVuZ3RoKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldC5wdXNoKG5vZGUubm9kZU5hbWUpOwotICAgICAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQucHVzaChub2RlLmluZGV4KTsKLSAg
ICAgICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldC5yZXZlcnNlKCk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKHRoaXMuZm9jdXNlZERPTU5vZGUpCisgICAgICAgICAgICB0aGlzLl9zZWxl
Y3RlZFBhdGhPblJlc2V0ID0gdGhpcy5mb2N1c2VkRE9NTm9kZS5wYXRoKCk7CiAKICAgICAgICAg
dGhpcy5yb290RE9NTm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuZm9jdXNlZERPTU5vZGUgPSBu
dWxsOwpAQCAtMjI1LDcgKzIxNyw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFBhdGhPblJl
c2V0KQotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRl
bmQodGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldC5qb2luKCIsIiksIHNlbGVjdExhc3RTZWxlY3Rl
ZE5vZGUuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2Rl
QnlQYXRoVG9Gcm9udGVuZCh0aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0LCBzZWxlY3RMYXN0U2Vs
ZWN0ZWROb2RlLmJpbmQodGhpcykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZWxlY3RO
b2RlLmNhbGwodGhpcyk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91
dGxpbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGlu
ZS5qcwppbmRleCBiYTNiMzIwLi42N2YxYWRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtNzY1LDE1ICs3NjUsMTYgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoUHJlZmVyZW5jZXMuZG9tQnJlYWtwb2ludHNFbmFibGVkKSB7CiAgICAgICAgICAgICAvLyBB
ZGQgZGViYnVnaW5nLXJlbGF0ZWQgYWN0aW9ucwogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kU2VwYXJhdG9yKCk7CisKKyAgICAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRl
ZE9iamVjdDsKICAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gV2ViSW5zcGVjdG9yLkRPTUJy
ZWFrcG9pbnQuVHlwZXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZUlkID0gV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnQuVHlwZXNbdHlwZV07Ci0gICAgICAgICAgICAgICAgdmFyIGxhYmVs
ID0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuY29udGV4dE1lbnVMYWJlbEZvclR5cGUodHlw
ZUlkKTsKLSAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IFdlYkluc3BlY3Rvci5kb21C
cmVha3BvaW50TWFuYWdlci5maW5kQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmlk
LCB0eXBlSWQpOwotICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludCkKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIGhhbmRsZXIgPSBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIu
c2V0QnJlYWtwb2ludC5iaW5kKFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlciwgdGhp
cy5yZXByZXNlbnRlZE9iamVjdCwgdHlwZUlkKTsKKyAgICAgICAgICAgICAgICB2YXIgbGFiZWwg
PSBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5jb250ZXh0TWVudUxhYmVsRm9yVHlwZSh0eXBl
KTsKKyAgICAgICAgICAgICAgICB2YXIgaGFzQnJlYWtwb2ludCA9IG5vZGUuaGFzQnJlYWtwb2lu
dCh0eXBlKTsKKyAgICAgICAgICAgICAgICBpZiAoIWhhc0JyZWFrcG9pbnQpCisgICAgICAgICAg
ICAgICAgICAgIHZhciBoYW5kbGVyID0gbm9kZS5zZXRCcmVha3BvaW50LmJpbmQobm9kZSwgdHlw
ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxl
ciA9IGJyZWFrcG9pbnQucmVtb3ZlLmJpbmQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKGxhYmVsLCBoYW5kbGVyLCAhIWJyZWFrcG9p
bnQpOworICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlciA9IG5vZGUucmVtb3ZlQnJlYWtw
b2ludC5iaW5kKG5vZGUpOworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNr
Ym94SXRlbShsYWJlbCwgaGFuZGxlciwgaGFzQnJlYWtwb2ludCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICB9LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NvdXJjZUZyYW1lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1l
LmpzCmluZGV4IDE2YjhlOGQuLmE5MDMzZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRnJhbWUuanMKQEAgLTU5OCw5ICs1OTgsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBwb3B1cENvbnRlbnRFbGVtZW50
ID0gbnVsbDsKICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSAhPT0gIm9iamVjdCIgJiYgcmVz
dWx0LnR5cGUgIT09ICJub2RlIiAmJiByZXN1bHQudHlwZSAhPT0gImFycmF5IikgewogICAgICAg
ICAgICAgICAgIHBvcHVwQ29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7Ci0gICAgICAgICAgICAgICAgcG9wdXBDb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAi
bW9ub3NwYWNlIjsKKyAgICAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVtZW50LmNsYXNzTmFt
ZSA9ICJtb25vc3BhY2UgY29uc29sZS1mb3JtYXR0ZWQtIiArIHJlc3VsdC50eXBlOwogICAgICAg
ICAgICAgICAgIHBvcHVwQ29udGVudEVsZW1lbnQuc3R5bGUud2hpdGVTcGFjZSA9ICJwcmUiOwog
ICAgICAgICAgICAgICAgIHBvcHVwQ29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPSByZXN1bHQu
ZGVzY3JpcHRpb247CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlID09PSAic3RyaW5n
IikKKyAgICAgICAgICAgICAgICAgICAgcG9wdXBDb250ZW50RWxlbWVudC50ZXh0Q29udGVudCA9
ICJcIiIgKyBwb3B1cENvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ICsgIlwiIjsKICAgICAgICAg
ICAgICAgICB0aGlzLl9wb3B1cCA9IG5ldyBXZWJJbnNwZWN0b3IuUG9wb3Zlcihwb3B1cENvbnRl
bnRFbGVtZW50KTsKICAgICAgICAgICAgICAgICB0aGlzLl9wb3B1cC5zaG93KGVsZW1lbnQpOwog
ICAgICAgICAgICAgfSBlbHNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66047</attachid>
            <date>2010-08-31 07:19:51 -0700</date>
            <delta_ts>2010-09-02 04:55:03 -0700</delta_ts>
            <desc>All comments addressed.</desc>
            <filename>persist.patch</filename>
            <type>text/plain</type>
            <size>20167</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMWMwMDRmLi43YzA0ZjhjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDgt
MzEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdXNl
IGNvbnZpbmllbmNlIG1ldGhvZHMgb24gZG9tIG5vZGVzIHRvIHNldC9yZW1vdmUgZG9tIGJyZWFr
cG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NDgzNworCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sOgorCiAyMDEwLTA4LTMx
ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgY2hyb21p
dW0gdGVzdCByZXN1bHQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJy
ZWFrcG9pbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IDkzZjFlOWYuLmQ1Y2E4YzQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CkBAIC0xLDE0
ICsxLDE0IEBACiBUZXN0cyBET00gYnJlYWtwb2ludHMuIEJ1ZyA0Mjg4NgogCiBEZWJ1Z2dlciB3
YXMgZW5hYmxlZC4KLUZvdW5kIGRvbSBub2RlIGQwLgogU2V0IHN1YnRyZWUgbW9kaWZpZWQgRE9N
IGJyZWFrcG9pbnQgb24gZDAuCitBcHBlbmQgZDEgdG8gZDAuCiBQYXVzZWQgYXQgbGluZSAxMSBp
biBhcHBlbmRFbGVtZW50Ci1Gb3VuZCBkb20gbm9kZSBkMS4KIFNldCBhdHRyaWJ1dGUgbW9kaWZp
ZWQgRE9NIGJyZWFrcG9pbnQgb24gZDEuCitNb2RpZnkgZDEgY2xhc3NOYW1lLgogUGF1c2VkIGF0
IGxpbmUgMTcgaW4gbW9kaWZ5QXR0cmlidXRlCi1Gb3VuZCBkb20gbm9kZSBkMS4KIFNldCBub2Rl
IHJlbW92ZWQgRE9NIGJyZWFrcG9pbnQgb24gZDEuCitSZW1vdmUgZDEuCiBQYXVzZWQgYXQgbGlu
ZSAyMyBpbiByZW1vdmVFbGVtZW50CiBEZWJ1Z2dlciB3YXMgZGlzYWJsZWQuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAppbmRleCBmYmI2NTMyLi4wZDA5ZjJl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sCkBAIC0yNyw2
ICsyNyw4IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogewogICAgIEluc3BlY3RvclRlc3Quc3Rh
cnREZWJ1Z2dlclRlc3Qoc3RlcDEpOwogCisgICAgdmFyIGQwLCBkMTsKKwogICAgIGZ1bmN0aW9u
IHN0ZXAxKCkKICAgICB7CiAgICAgICAgIGZpbmRET01Ob2RlQnlJZCgiZDAiLCBzdGVwMik7CkBA
IC0zNCw0OCArMzYsNDQgQEAgdmFyIHRlc3QgPSBmdW5jdGlvbigpCiAKICAgICBmdW5jdGlvbiBz
dGVwMihub2RlKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZvdW5k
IGRvbSBub2RlIGQwLiIpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFn
ZXIuc2V0QnJlYWtwb2ludChub2RlLCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5T
dWJ0cmVlTW9kaWZpZWQpOworICAgICAgICBkMCA9IG5vZGU7CisgICAgICAgIGQwLnNldEJyZWFr
cG9pbnQoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuU3VidHJlZU1vZGlmaWVkKTsK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNldCBzdWJ0cmVlIG1vZGlmaWVkIERP
TSBicmVha3BvaW50IG9uIGQwLiIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5D
b25zb2xlKCJhcHBlbmRFbGVtZW50KCdkMCcsICdkMScpIik7Ci0gICAgICAgIEluc3BlY3RvclRl
c3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAzLmJpbmQobnVsbCwgbm9kZSkpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiQXBwZW5kIGQxIHRvIGQwLiIpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwMyk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3Rl
cDMobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpOwor
ICAgICAgICBkMC5yZW1vdmVCcmVha3BvaW50KFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5
cGVzLlN1YnRyZWVNb2RpZmllZCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0
aW9uKCk7CiAgICAgICAgIGZpbmRET01Ob2RlQnlJZCgiZDEiLCBzdGVwNCk7CiAgICAgfQogCiAg
ICAgZnVuY3Rpb24gc3RlcDQobm9kZSkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJGb3VuZCBkb20gbm9kZSBkMS4iKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJy
ZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQobm9kZSwgV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQuVHlwZXMuQXR0cmlidXRlTW9kaWZpZWQpOworICAgICAgICBkMSA9IG5vZGU7CisgICAg
ICAgIGQxLnNldEJyZWFrcG9pbnQoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuQXR0
cmlidXRlTW9kaWZpZWQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2V0IGF0
dHJpYnV0ZSBtb2RpZmllZCBET00gYnJlYWtwb2ludCBvbiBkMS4iKTsKICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgibW9kaWZ5QXR0cmlidXRlKCdkMScsICdjbGFzc05h
bWUnLCAnZm9vJykiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3Rl
cDUuYmluZChudWxsLCBub2RlKSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJN
b2RpZnkgZDEgY2xhc3NOYW1lLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBh
dXNlZChzdGVwNSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3RlcDUobm9kZSkKKyAgICBmdW5j
dGlvbiBzdGVwNSgpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1h
bmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpOworICAgICAgICBkMS5yZW1vdmVC
cmVha3BvaW50KFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLkF0dHJpYnV0ZU1vZGlm
aWVkKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1bWVFeGVjdXRpb24oKTsKLSAgICAgICAg
ZmluZERPTU5vZGVCeUlkKCJkMSIsIHN0ZXA2KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdGVw
Nihub2RlKQotICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZvdW5kIGRv
bSBub2RlIGQxLiIpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIu
c2V0QnJlYWtwb2ludChub2RlLCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5Ob2Rl
UmVtb3ZlZCk7CisgICAgICAgIGQxLnNldEJyZWFrcG9pbnQoV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQuVHlwZXMuTm9kZVJlbW92ZWQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiU2V0IG5vZGUgcmVtb3ZlZCBET00gYnJlYWtwb2ludCBvbiBkMS4iKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgicmVtb3ZlRWxlbWVudCgnZDEnKSIpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwNy5iaW5kKG51bGwsIG5vZGUp
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJlbW92ZSBkMS4iKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDYpOwogICAgIH0KIAotICAgIGZ1
bmN0aW9uIHN0ZXA3KG5vZGUpCisgICAgZnVuY3Rpb24gc3RlcDYoKQogICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9k
ZShub2RlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZURlYnVnZ2VyVGVzdCgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAwYjVjOGUyLi41MTZkMGI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEwLTA4LTMxICBQYXZl
bCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHBlcnNpc3QgRE9N
IGJyZWFrcG9pbnRzIGJldHdlZW4gcGFnZSByZWxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDgzNworCisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTUJyZWFrcG9pbnRJdGVtKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLnBhdGgpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLnNldEJyZWFrcG9pbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLmhhc0JyZWFrcG9pbnQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9pbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9p
bnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX3NldERvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUuX2NoaWxkTm9k
ZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fcmVt
b3ZlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5h
Z2VyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5
cGUuc2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1h
bmFnZXIucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9kZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLl9icmVha3BvaW50UmVtb3Zl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBl
LnJlc3RvcmVCcmVha3BvaW50cy5yZXN0b3JlQnJlYWtwb2ludHNGb3JOb2RlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUucmVzdG9yZUJyZWFr
cG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LmNvbnRleHRNZW51TGFiZWxGb3JUeXBlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgbm9kZUlkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgdHlwZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGVuYWJs
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLnJlc2V0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5zZXREb2N1bWVudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLl9wb3B1bGF0
ZVRhZ0NvbnRleHRNZW51KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZy
YW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fc2hv
d1BvcHVwLnNob3dPYmplY3RQb3B1cCk6CisKIDIwMTAtMDgtMzEgIEppYW4gTGkgIDxqaWFubGlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBjaHJvbWl1bSBidWlsZCBicmVhay4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5l
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUu
anMKaW5kZXggM2EwODYwZi4uNDA4ODI5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMKQEAgLTE4OCw3ICsxODgsOCBA
QCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludEl0ZW0gPSBmdW5jdGlvbihicmVha3BvaW50KQog
ewogICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50SXRlbS5jYWxsKHRoaXMsIGJyZWFrcG9pbnQp
OwogCi0gICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmxpbmtpZnlO
b2RlUmVmZXJlbmNlKHRoaXMuX2JyZWFrcG9pbnQubm9kZSk7CisgICAgdmFyIG5vZGUgPSBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQubm9kZUZvcklkKHRoaXMuX2JyZWFrcG9pbnQubm9kZUlkKTsKKyAg
ICB2YXIgbGluayA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVSZWZl
cmVuY2Uobm9kZSk7CiAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChsaW5rKTsKIAogICAg
IHZhciB0eXBlID0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQubGFiZWxGb3JUeXBlKHRoaXMu
X2JyZWFrcG9pbnQudHlwZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMK
aW5kZXggNWFhYTBkMy4uNjQ1MTM0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01B
Z2VudC5qcwpAQCAtMTQzLDYgKzE0Myw0MCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMub3duZXJEb2N1bWVudC5fZG9tQWdlbnQucmVtb3ZlQXR0cmli
dXRlQXN5bmModGhpcywgbmFtZSwgY2FsbGJhY2spOwogICAgIH0sCiAKKyAgICBwYXRoOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB2YXIgcGF0aCA9IFtdOworICAgICAgICB2YXIgbm9kZSA9
IHRoaXM7CisgICAgICAgIHdoaWxlIChub2RlICYmICJpbmRleCIgaW4gbm9kZSAmJiBub2RlLm5v
ZGVOYW1lLmxlbmd0aCkgeworICAgICAgICAgICAgcGF0aC5wdXNoKFtub2RlLmluZGV4LCBub2Rl
Lm5vZGVOYW1lXSk7CisgICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOworICAgICAg
ICB9CisgICAgICAgIHBhdGgucmV2ZXJzZSgpOworICAgICAgICByZXR1cm4gcGF0aC5qb2luKCIs
Iik7CisgICAgfSwKKworICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHR5cGUpCisgICAgewor
ICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFr
cG9pbnQodGhpcy5pZCwgdHlwZSwgdHJ1ZSwgdGhpcy5wYXRoKCkpOworICAgIH0sCisKKyAgICBo
YXNCcmVha3BvaW50OiBmdW5jdGlvbih0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhV2Vi
SW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLmZpbmRCcmVha3BvaW50KHRoaXMuaWQsIHR5
cGUpOworICAgIH0sCisKKyAgICByZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbih0eXBlKQorICAg
IHsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1h
bmFnZXIuZmluZEJyZWFrcG9pbnQodGhpcy5pZCwgdHlwZSk7CisgICAgICAgIGlmIChicmVha3Bv
aW50KQorICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICB9LAorCisgICAgcmVt
b3ZlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5k
b21CcmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3BvaW50c0Zvck5vZGUodGhpcy5pZCk7Cisg
ICAgfSwKKwogICAgIF9zZXRBdHRyaWJ1dGVzUGF5bG9hZDogZnVuY3Rpb24oYXR0cnMpCiAgICAg
ewogICAgICAgICB0aGlzLmF0dHJpYnV0ZXMgPSBbXTsKQEAgLTM2Miw2ICszOTYsNyBAQCBXZWJJ
bnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5kb2N1bWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnQodGhpcywgdGhpcy5fd2luZG93LCBwYXls
b2FkKTsKICAgICAgICAgICAgIHRoaXMuX2lkVG9ET01Ob2RlW3BheWxvYWQuaWRdID0gdGhpcy5k
b2N1bWVudDsKICAgICAgICAgICAgIHRoaXMuX2JpbmROb2Rlcyh0aGlzLmRvY3VtZW50LmNoaWxk
cmVuKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5yZXN0
b3JlQnJlYWtwb2ludHMoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLmRvY3Vt
ZW50ID0gbnVsbDsKICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zZXREb2N1
bWVudCh0aGlzLmRvY3VtZW50KTsKQEAgLTQxOCw3ICs0NTMsMTcgQEAgV2ViSW5zcGVjdG9yLkRP
TUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGV2ZW50ID0geyB0YXJnZXQgOiBub2Rl
LCByZWxhdGVkTm9kZSA6IHBhcmVudCB9OwogICAgICAgICB0aGlzLmRvY3VtZW50Ll9maXJlRG9t
RXZlbnQoIkRPTU5vZGVSZW1vdmVkIiwgZXZlbnQpOwogICAgICAgICBkZWxldGUgdGhpcy5faWRU
b0RPTU5vZGVbbm9kZUlkXTsKLSAgICB9CisgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRz
KG5vZGUpOworICAgIH0sCisKKyAgICBfcmVtb3ZlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKG5vZGUp
CisgICAgeworICAgICAgICBub2RlLnJlbW92ZUJyZWFrcG9pbnRzKCk7CisgICAgICAgIGlmICgh
bm9kZS5jaGlsZHJlbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgdGhpcy5fcmVt
b3ZlQnJlYWtwb2ludHMobm9kZS5jaGlsZHJlbltpXSk7CisgICAgIH0KIH0KIAogV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGUgPSB7fQpAQCAtNjc5LDIwICs3MjQsMjQgQEAgV2ViSW5zcGVj
dG9yLmNoaWxkTm9kZVJlbW92ZWQgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtw
b2ludE1hbmFnZXIgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsK
KyAgICB0aGlzLl9wYXRoQ2FjaGUgPSB7fTsKIH0KIAogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKLSAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbihub2Rl
LCB0eXBlKQorICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKG5vZGVJZCwgdHlwZSwgZW5hYmxl
ZCwgcGF0aCkKICAgICB7Ci0gICAgICAgIGlmICghKG5vZGUuaWQgaW4gdGhpcy5fYnJlYWtwb2lu
dHMpKQotICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNbbm9kZS5pZF0gPSB7fTsKLSAgICAg
ICAgZWxzZSBpZiAodHlwZSBpbiB0aGlzLl9icmVha3BvaW50c1tub2RlLmlkXSkKKyAgICAgICAg
aWYgKCEobm9kZUlkIGluIHRoaXMuX2JyZWFrcG9pbnRzKSkKKyAgICAgICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnRzW25vZGVJZF0gPSB7fTsKKyAgICAgICAgZWxzZSBpZiAodHlwZSBpbiB0aGlzLl9i
cmVha3BvaW50c1tub2RlSWRdKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBi
cmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50KG5vZGUsIHR5cGUpOwot
ICAgICAgICB0aGlzLl9icmVha3BvaW50c1tub2RlLmlkXVt0eXBlXSA9IGJyZWFrcG9pbnQ7Cisg
ICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50KG5v
ZGVJZCwgdHlwZSwgZW5hYmxlZCk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW25vZGVJZF1b
dHlwZV0gPSBicmVha3BvaW50OwogICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
InJlbW92ZWQiLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwgdGhpcyk7CiAKKyAgICAgICAgaWYg
KCEobm9kZUlkIGluIHRoaXMuX3BhdGhDYWNoZSkpCisgICAgICAgICAgICB0aGlzLl9wYXRoQ2Fj
aGVbbm9kZUlkXSA9IHBhdGg7CisKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoImRvbS1icmVha3BvaW50LWFkZGVkIiwgYnJlYWtwb2ludCk7CiAgICAgfSwKIApAQCAtNzAz
LDkgKzc1Miw5IEBAIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm4gbm9kZUJyZWFrcG9pbnRzW3R5cGVdOwogICAgIH0sCiAK
LSAgICByZW1vdmVCcmVha3BvaW50c0Zvck5vZGU6IGZ1bmN0aW9uKG5vZGUpCisgICAgcmVtb3Zl
QnJlYWtwb2ludHNGb3JOb2RlOiBmdW5jdGlvbihub2RlSWQpCiAgICAgewotICAgICAgICB2YXIg
bm9kZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbbm9kZS5pZF07CisgICAgICAgIHZh
ciBub2RlQnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50c1tub2RlSWRdOwogICAgICAgICBm
b3IgKHZhciB0eXBlIGluIG5vZGVCcmVha3BvaW50cykKICAgICAgICAgICAgIG5vZGVCcmVha3Bv
aW50c1t0eXBlXS5yZW1vdmUoKTsKICAgICB9LApAQCAtNzE0LDI5ICs3NjMsNjMgQEAgV2ViSW5z
cGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwogCi0gICAgICAgIHZhciBub2RlQnJlYWtw
b2ludHMgPSB0aGlzLl9icmVha3BvaW50c1ticmVha3BvaW50Lm5vZGUuaWRdOworICAgICAgICB2
YXIgbm9kZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5ub2RlSWRd
OwogICAgICAgICBkZWxldGUgbm9kZUJyZWFrcG9pbnRzW2JyZWFrcG9pbnQudHlwZV07CiAgICAg
ICAgIGZvciAodmFyIHR5cGUgaW4gbm9kZUJyZWFrcG9pbnRzKQogICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBkZWxldGUgdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5ub2RlLmlkXTsK
KworICAgICAgICBkZWxldGUgdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5ub2RlSWRdOwor
ICAgICAgICBkZWxldGUgdGhpcy5fcGF0aENhY2hlW2JyZWFrcG9pbnQubm9kZUlkXTsKKyAgICB9
LAorCisgICAgcmVzdG9yZUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2
YXIgYnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3BvaW50czsKKyAgICAgICAgdGhpcy5fYnJlYWtw
b2ludHMgPSB7fTsKKyAgICAgICAgdmFyIHBhdGhDYWNoZSA9IHRoaXMuX3BhdGhDYWNoZTsKKyAg
ICAgICAgdGhpcy5fcGF0aENhY2hlID0ge307CisKKyAgICAgICAgZm9yICh2YXIgb2xkTm9kZUlk
IGluIGJyZWFrcG9pbnRzKSB7CisgICAgICAgICAgICB2YXIgcGF0aCA9IHBhdGhDYWNoZVtvbGRO
b2RlSWRdOworICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJv
bnRlbmQocGF0aCwgcmVzdG9yZUJyZWFrcG9pbnRzRm9yTm9kZS5iaW5kKHRoaXMsIGJyZWFrcG9p
bnRzW29sZE5vZGVJZF0sIHBhdGgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJl
c3RvcmVCcmVha3BvaW50c0Zvck5vZGUobm9kZUJyZWFrcG9pbnRzLCBwYXRoLCBub2RlSWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbm9kZUlkKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gbm9kZUJyZWFrcG9pbnRzKSB7CisgICAg
ICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBub2RlQnJlYWtwb2ludHNbdHlwZV07CisgICAg
ICAgICAgICAgICAgdGhpcy5zZXRCcmVha3BvaW50KG5vZGVJZCwgYnJlYWtwb2ludC50eXBlLCBi
cmVha3BvaW50LmVuYWJsZWQsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg
fQogfQogCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogCi1XZWJJbnNwZWN0b3IuRE9N
QnJlYWtwb2ludCA9IGZ1bmN0aW9uKG5vZGUsIHR5cGUpCitXZWJJbnNwZWN0b3IuRE9NQnJlYWtw
b2ludCA9IGZ1bmN0aW9uKG5vZGVJZCwgdHlwZSwgZW5hYmxlZCkKIHsKLSAgICB0aGlzLm5vZGUg
PSBub2RlOwotICAgIHRoaXMudHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7
CisgICAgaWYgKCFXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5faWRzKSB7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5ET01CcmVha3BvaW50Ll9pZHMgPSB7fTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LkRPTUJyZWFrcG9pbnQuX2lkc1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0
cmVlTW9kaWZpZWRdID0gMDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2lk
c1tXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5BdHRyaWJ1dGVNb2RpZmllZF0gPSAx
OworICAgICAgICBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5faWRzW1dlYkluc3BlY3Rvci5E
T01CcmVha3BvaW50LlR5cGVzLk5vZGVSZW1vdmVkXSA9IDI7CisgICAgfQogCi0gICAgSW5zcGVj
dG9yQmFja2VuZC5zZXRET01CcmVha3BvaW50KHRoaXMubm9kZS5pZCwgdGhpcy50eXBlKTsKKyAg
ICB0aGlzLl9ub2RlSWQgPSBub2RlSWQ7CisgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgdGhp
cy5fZW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgdGhpcy5fdHlwZUlkID0gV2ViSW5zcGVjdG9yLkRP
TUJyZWFrcG9pbnQuX2lkc1t0eXBlXTsKKworICAgIGlmICh0aGlzLmVuYWJsZWQpCisgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludCh0aGlzLm5vZGVJZCwgdGhpcy5fdHlw
ZUlkKTsKIH0KIAogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMgPSB7Ci0gICAgU3Vi
dHJlZU1vZGlmaWVkOiAwLAotICAgIEF0dHJpYnV0ZU1vZGlmaWVkOiAxLAotICAgIE5vZGVSZW1v
dmVkOiAyCisgICAgU3VidHJlZU1vZGlmaWVkOiAiU3VidHJlZU1vZGlmaWVkIiwKKyAgICBBdHRy
aWJ1dGVNb2RpZmllZDogIkF0dHJpYnV0ZU1vZGlmaWVkIiwKKyAgICBOb2RlUmVtb3ZlZDogIk5v
ZGVSZW1vdmVkIgogfTsKIAogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQubGFiZWxGb3JUeXBl
ID0gZnVuY3Rpb24odHlwZSkKQEAgLTc1NiwxMiArODM5LDIyIEBAIFdlYkluc3BlY3Rvci5ET01C
cmVha3BvaW50LmNvbnRleHRNZW51TGFiZWxGb3JUeXBlID0gZnVuY3Rpb24odHlwZSkKICAgICAg
ICAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2NvbnRleHRNZW51TGFiZWxzID0ge307CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50Ll9jb250ZXh0TWVudUxhYmVsc1tXZWJJ
bnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZpZWRdID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJCcmVhayBvbiBTdWJ0cmVlIE1vZGlmaWNhdGlvbnMiKTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuX2NvbnRleHRNZW51TGFiZWxzW1dlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50LlR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkXSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQnJlYWsgb24gQXR0cmlidXRlcyBNb2RpZmljYXRpb25zIik7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5ET01CcmVha3BvaW50Ll9jb250ZXh0TWVudUxhYmVsc1tXZWJJbnNwZWN0b3Iu
RE9NQnJlYWtwb2ludC5UeXBlcy5Ob2RlUmVtb3ZlZF0gPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkJyZWFrIG9uIE5vZGUgUmVtb3ZhbCIpOworICAgICAgICBXZWJJbnNwZWN0b3IuRE9NQnJlYWtw
b2ludC5fY29udGV4dE1lbnVMYWJlbHNbV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMu
Tm9kZVJlbW92ZWRdID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCcmVhayBvbiBOb2RlIFJlbW92
YWwiKTsgICAgICAgIAogICAgIH0KICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnQuX2NvbnRleHRNZW51TGFiZWxzW3R5cGVdOwogfQogCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtw
b2ludC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5vZGVJZCgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fbm9kZUlkOworICAgIH0sCisKKyAgICBnZXQgdHlwZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fdHlwZTsKKyAgICB9LAorCiAgICAgZ2V0IGVuYWJsZWQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7CkBAIC03NzMsMTggKzg2NiwxOCBAQCBXZWJJ
bnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgICAgIGlmICh0aGlzLl9l
bmFibGVkKQotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRET01CcmVha3BvaW50KHRo
aXMubm9kZS5pZCwgdGhpcy50eXBlKTsKKyAgICAgICAgaWYgKHRoaXMuZW5hYmxlZCkKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludCh0aGlzLm5vZGVJZCwgdGhp
cy5fdHlwZUlkKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5y
ZW1vdmVET01CcmVha3BvaW50KHRoaXMubm9kZS5pZCwgdGhpcy50eXBlKTsKKyAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQucmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzLm5vZGVJZCwgdGhpcy5f
dHlwZUlkKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiZW5hYmxl
LWNoYW5nZWQiKTsKICAgICB9LAogCiAgICAgcmVtb3ZlOiBmdW5jdGlvbigpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5fZW5hYmxlZCkKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVt
b3ZlRE9NQnJlYWtwb2ludCh0aGlzLm5vZGUuaWQsIHRoaXMudHlwZSk7CisgICAgICAgIGlmICh0
aGlzLmVuYWJsZWQpCisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFr
cG9pbnQodGhpcy5ub2RlSWQsIHRoaXMuX3R5cGVJZCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKCJyZW1vdmVkIik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCBkODE5MzNlLi4zOGJkNjEwIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMTU5LDE2
ICsxNTksOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuZm9jdXNlZERPTU5v
ZGUpIHsKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQgPSBbXTsKLSAgICAg
ICAgICAgIHZhciBub2RlID0gdGhpcy5mb2N1c2VkRE9NTm9kZTsKLSAgICAgICAgICAgIHdoaWxl
ICgiaW5kZXgiIGluIG5vZGUgJiYgbm9kZS5ub2RlTmFtZSAmJiBub2RlLm5vZGVOYW1lLmxlbmd0
aCkgewotICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQucHVzaChub2Rl
Lm5vZGVOYW1lKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0LnB1
c2gobm9kZS5pbmRleCk7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQucmV2
ZXJzZSgpOwotICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmZvY3VzZWRET01Ob2RlKQorICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldCA9IHRoaXMuZm9jdXNlZERPTU5vZGUu
cGF0aCgpOwogCiAgICAgICAgIHRoaXMucm9vdERPTU5vZGUgPSBudWxsOwogICAgICAgICB0aGlz
LmZvY3VzZWRET01Ob2RlID0gbnVsbDsKQEAgLTIyNSw3ICsyMTcsNyBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhp
cy5fc2VsZWN0ZWRQYXRoT25SZXNldCkKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVz
aE5vZGVCeVBhdGhUb0Zyb250ZW5kKHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQuam9pbigiLCIp
LCBzZWxlY3RMYXN0U2VsZWN0ZWROb2RlLmJpbmQodGhpcykpOworICAgICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQodGhpcy5fc2VsZWN0ZWRQYXRoT25S
ZXNldCwgc2VsZWN0TGFzdFNlbGVjdGVkTm9kZS5iaW5kKHRoaXMpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2VsZWN0Tm9kZS5jYWxsKHRoaXMpOwogICAgICAgICBkZWxldGUgdGhpcy5f
c2VsZWN0ZWRQYXRoT25SZXNldDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggYmEzYjMyMC4uYzYzOTAxYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAg
LTc2NSwxNSArNzY1LDE2IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCkg
ewogICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworCisgICAgICAgICAgICB2YXIgbm9k
ZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAgICAgICAgICAgICBmb3IgKHZhciB0eXBlIGlu
IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzKSB7Ci0gICAgICAgICAgICAgICAgdmFy
IHR5cGVJZCA9IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzW3R5cGVdOwotICAgICAg
ICAgICAgICAgIHZhciBsYWJlbCA9IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LmNvbnRleHRN
ZW51TGFiZWxGb3JUeXBlKHR5cGVJZCk7Ci0gICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIuZmluZEJyZWFrcG9pbnQodGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5pZCwgdHlwZUlkKTsKLSAgICAgICAgICAgICAgICBpZiAoIWJyZWFr
cG9pbnQpCi0gICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyID0gV2ViSW5zcGVjdG9yLmRv
bUJyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQuYmluZChXZWJJbnNwZWN0b3IuZG9tQnJl
YWtwb2ludE1hbmFnZXIsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QsIHR5cGVJZCk7CisgICAgICAg
ICAgICAgICAgdmFyIGxhYmVsID0gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuY29udGV4dE1l
bnVMYWJlbEZvclR5cGUodHlwZSk7CisgICAgICAgICAgICAgICAgdmFyIGhhc0JyZWFrcG9pbnQg
PSBub2RlLmhhc0JyZWFrcG9pbnQodHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCFoYXNCcmVh
a3BvaW50KQorICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlciA9IG5vZGUuc2V0QnJlYWtw
b2ludC5iaW5kKG5vZGUsIHR5cGUpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIGhhbmRsZXIgPSBicmVha3BvaW50LnJlbW92ZS5iaW5kKGJyZWFrcG9pbnQp
OwotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNrYm94SXRlbShsYWJlbCwg
aGFuZGxlciwgISFicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIg
PSBub2RlLnJlbW92ZUJyZWFrcG9pbnQuYmluZChub2RlLCB0eXBlKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0obGFiZWwsIGhhbmRsZXIsIGhhc0JyZWFr
cG9pbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCAxNmI4ZThkLi5hOTAzM2YyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC01OTgsOSArNTk4
LDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB2YXIgcG9wdXBDb250ZW50RWxlbWVudCA9IG51bGw7CiAgICAgICAgICAgICBpZiAocmVzdWx0
LnR5cGUgIT09ICJvYmplY3QiICYmIHJlc3VsdC50eXBlICE9PSAibm9kZSIgJiYgcmVzdWx0LnR5
cGUgIT09ICJhcnJheSIpIHsKICAgICAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgICAgIHBvcHVwQ29u
dGVudEVsZW1lbnQuY2xhc3NOYW1lID0gIm1vbm9zcGFjZSI7CisgICAgICAgICAgICAgICAgcG9w
dXBDb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAibW9ub3NwYWNlIGNvbnNvbGUtZm9ybWF0dGVk
LSIgKyByZXN1bHQudHlwZTsKICAgICAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVtZW50LnN0
eWxlLndoaXRlU3BhY2UgPSAicHJlIjsKICAgICAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVt
ZW50LnRleHRDb250ZW50ID0gcmVzdWx0LmRlc2NyaXB0aW9uOworICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQudHlwZSA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAgICAgIHBvcHVwQ29u
dGVudEVsZW1lbnQudGV4dENvbnRlbnQgPSAiXCIiICsgcG9wdXBDb250ZW50RWxlbWVudC50ZXh0
Q29udGVudCArICJcIiI7CiAgICAgICAgICAgICAgICAgdGhpcy5fcG9wdXAgPSBuZXcgV2ViSW5z
cGVjdG9yLlBvcG92ZXIocG9wdXBDb250ZW50RWxlbWVudCk7CiAgICAgICAgICAgICAgICAgdGhp
cy5fcG9wdXAuc2hvdyhlbGVtZW50KTsKICAgICAgICAgICAgIH0gZWxzZSB7Cg==
</data>
<flag name="review"
          id="54955"
          type_id="1"
          status="-"
          setter="yurys"
    />
    <flag name="commit-queue"
          id="54956"
          type_id="3"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66353</attachid>
            <date>2010-09-02 04:40:00 -0700</date>
            <delta_ts>2010-09-02 04:55:03 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>persist.patch</filename>
            <type>text/plain</type>
            <size>20954</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZmU0ZmIwLi5jNWEyYThhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDgt
MzEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogdXNl
IGNvbnZpbmllbmNlIG1ldGhvZHMgb24gZG9tIG5vZGVzIHRvIHNldC9yZW1vdmUgZG9tIGJyZWFr
cG9pbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NDgzNworCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy5odG1sOgorCiAyMDEwLTA5LTAy
ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
YnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVh
a3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggYzg1YjcxZS4uMmQ4NzVlYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEs
MjAgKzEsMzAgQEAKIFRlc3RzIERPTSBicmVha3BvaW50cy4gQnVnIDQyODg2CiAKIERlYnVnZ2Vy
IHdhcyBlbmFibGVkLgotRm91bmQgZG9tIG5vZGUgZDAuCitUZXN0IHRoYXQgJ1N1YnRyZWUgTW9k
aWZpZWQnIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4gYXBwZW5kaW5nIGNoaWxkLgogU2V0IHN1YnRy
ZWUgbW9kaWZpZWQgRE9NIGJyZWFrcG9pbnQgb24gZDAuCitBcHBlbmQgZDEgdG8gZDAuCiBTY3Jp
cHQgZXhlY3V0aW9uIHBhdXNlZC4KIGxpbmU6IDExLCBmdW5jdGlvbjogYXBwZW5kRWxlbWVudAog
U2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgotRm91bmQgZG9tIG5vZGUgZDEuCitUZXN0IHRoYXQg
J0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiBtb2RpZnlpbmcgYXR0
cmlidXRlLgogU2V0IGF0dHJpYnV0ZSBtb2RpZmllZCBET00gYnJlYWtwb2ludCBvbiBkMS4KK01v
ZGlmeSBkMSBjbGFzc05hbWUuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIGxpbmU6IDE3LCBm
dW5jdGlvbjogbW9kaWZ5QXR0cmlidXRlCiBTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCi1Gb3Vu
ZCBkb20gbm9kZSBkMS4KK1Rlc3QgdGhhdCAnTm9kZSBSZW1vdmVkJyBicmVha3BvaW50IGlzIGhp
dCB3aGVuIHJlbW92aW5nIGEgbm9kZS4KIFNldCBub2RlIHJlbW92ZWQgRE9NIGJyZWFrcG9pbnQg
b24gZDEuCitSZW1vdmUgZDEuCiBTY3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KIGxpbmU6IDIzLCBm
dW5jdGlvbjogcmVtb3ZlRWxlbWVudAogU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgorVGVzdCB0
aGF0IERPTSBicmVha3BvaW50cyBhcmUgcGVyc2lzdGVkIGJldHdlZW4gcGFnZSByZWxvYWRzLgor
U2V0IHN1YnRyZWUgbW9kaWZpZWQgRE9NIGJyZWFrcG9pbnQgb24gZDAuCitQYWdlIHJlbG9hZGVk
LgorQXBwZW5kIGQxIHRvIGQwLgorU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuCitsaW5lOiAxMSwg
ZnVuY3Rpb246IGFwcGVuZEVsZW1lbnQKK1NjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KIERlYnVn
Z2VyIHdhcyBkaXNhYmxlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50
cy5odG1sCmluZGV4IDFhZTMwZDcuLjc2MjVhNDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTI3LDYgKzI3LDggQEAgdmFyIHRlc3QgPSBmdW5jdGlv
bigpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC5zdGFydERlYnVnZ2VyVGVzdChzdGVwMSk7CiAKKyAg
ICB2YXIgZDAsIGQxOworCiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKICAgICAgICAgZmlu
ZERPTU5vZGVCeUlkKCJkMCIsIHN0ZXAyKTsKQEAgLTM0LDQ5ICszNiw3NCBAQCB2YXIgdGVzdCA9
IGZ1bmN0aW9uKCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAyKG5vZGUpCiAgICAgewotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRm91bmQgZG9tIG5vZGUgZDAuIik7Ci0gICAgICAgIFdl
Ykluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5zZXRCcmVha3BvaW50KG5vZGUsIFdlYklu
c3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLlN1YnRyZWVNb2RpZmllZCk7CisgICAgICAgIGQw
ID0gbm9kZTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlRlc3QgdGhhdCAnU3Vi
dHJlZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiBhcHBlbmRpbmcgY2hpbGQuIik7
CisgICAgICAgIGQwLnNldEJyZWFrcG9pbnQoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlw
ZXMuU3VidHJlZU1vZGlmaWVkKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNl
dCBzdWJ0cmVlIG1vZGlmaWVkIERPTSBicmVha3BvaW50IG9uIGQwLiIpOwogICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5Db25zb2xlKCJhcHBlbmRFbGVtZW50KCdkMCcsICdkMScpIik7
Ci0gICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAzLmJpbmQobnVsbCwg
bm9kZSkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQXBwZW5kIGQxIHRvIGQw
LiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwMyk7CiAgICAg
fQogCi0gICAgZnVuY3Rpb24gc3RlcDMobm9kZSwgY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBz
dGVwMyhjYWxsRnJhbWVzKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
ImxpbmU6ICIgKyBjYWxsRnJhbWVzWzBdLmxpbmUgKyAiLCBmdW5jdGlvbjogIiArIGNhbGxGcmFt
ZXNbMF0uZnVuY3Rpb25OYW1lKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRN
YW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRzRm9yTm9kZShub2RlKTsKKyAgICAgICAgZDAucmVtb3Zl
QnJlYWtwb2ludChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZp
ZWQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbihmaW5kRE9NTm9kZUJ5
SWQuYmluZChudWxsLCAiZDEiLCBzdGVwNCkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXA0
KG5vZGUpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRm91bmQgZG9t
IG5vZGUgZDEuIik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5z
ZXRCcmVha3BvaW50KG5vZGUsIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLkF0dHJp
YnV0ZU1vZGlmaWVkKTsKKyAgICAgICAgZDEgPSBub2RlOworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiVGVzdCB0aGF0ICdBdHRyaWJ1dGUgTW9kaWZpZWQnIGJyZWFrcG9pbnQgaXMg
aGl0IHdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZS4iKTsKKyAgICAgICAgZDEuc2V0QnJlYWtwb2lu
dChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5BdHRyaWJ1dGVNb2RpZmllZCk7CiAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgYXR0cmlidXRlIG1vZGlmaWVkIERP
TSBicmVha3BvaW50IG9uIGQxLiIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5D
b25zb2xlKCJtb2RpZnlBdHRyaWJ1dGUoJ2QxJywgJ2NsYXNzTmFtZScsICdmb28nKSIpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwNS5iaW5kKG51bGwsIG5vZGUp
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk1vZGlmeSBkMSBjbGFzc05hbWUu
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXA1KTsKICAgICB9
CiAKLSAgICBmdW5jdGlvbiBzdGVwNShub2RlLCBjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0
ZXA1KGNhbGxGcmFtZXMpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgi
bGluZTogIiArIGNhbGxGcmFtZXNbMF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1l
c1swXS5mdW5jdGlvbk5hbWUpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1h
bmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpOwotICAgICAgICBJbnNwZWN0b3JU
ZXN0LnJlc3VtZUV4ZWN1dGlvbihmaW5kRE9NTm9kZUJ5SWQuYmluZChudWxsLCAiZDEiLCBzdGVw
NikpOworICAgICAgICBkMS5yZW1vdmVCcmVha3BvaW50KFdlYkluc3BlY3Rvci5ET01CcmVha3Bv
aW50LlR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXN1
bWVFeGVjdXRpb24oc3RlcDYpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHN0ZXA2KG5vZGUpCisg
ICAgZnVuY3Rpb24gc3RlcDYoKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkZvdW5kIGRvbSBub2RlIGQxLiIpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtw
b2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludChub2RlLCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2lu
dC5UeXBlcy5Ob2RlUmVtb3ZlZCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJU
ZXN0IHRoYXQgJ05vZGUgUmVtb3ZlZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiByZW1vdmluZyBh
IG5vZGUuIik7CisgICAgICAgIGQxLnNldEJyZWFrcG9pbnQoV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQuVHlwZXMuTm9kZVJlbW92ZWQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgiU2V0IG5vZGUgcmVtb3ZlZCBET00gYnJlYWtwb2ludCBvbiBkMS4iKTsKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgicmVtb3ZlRWxlbWVudCgnZDEnKSIpOwotICAg
ICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwNy5iaW5kKG51bGwsIG5vZGUp
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJlbW92ZSBkMS4iKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDcpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIHN0ZXA3KGNhbGxGcmFtZXMpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmFk
ZFJlc3VsdCgibGluZTogIiArIGNhbGxGcmFtZXNbMF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsg
Y2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc3Vt
ZUV4ZWN1dGlvbihzdGVwOCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDgoKQorICAgIHsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlRlc3QgdGhhdCBET00gYnJlYWtwb2lu
dHMgYXJlIHBlcnNpc3RlZCBiZXR3ZWVuIHBhZ2UgcmVsb2Fkcy4iKTsKKyAgICAgICAgZDAuc2V0
QnJlYWtwb2ludChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZp
ZWQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2V0IHN1YnRyZWUgbW9kaWZp
ZWQgRE9NIGJyZWFrcG9pbnQgb24gZDAuIik7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVsb2Fk
UGFnZShzdGVwOSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDkoKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluQ29uc29sZSgiYXBwZW5kRWxlbWVudCgnZDAnLCAn
ZDEnKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQXBwZW5kIGQxIHRvIGQw
LiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRVbnRpbFBhdXNlZChzdGVwMTApOwogICAg
IH0KIAotICAgIGZ1bmN0aW9uIHN0ZXA3KG5vZGUsIGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24g
c3RlcDEwKGNhbGxGcmFtZXMpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgibGluZTogIiArIGNhbGxGcmFtZXNbMF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZy
YW1lc1swXS5mdW5jdGlvbk5hbWUpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2lu
dE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpOwogICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlRGVidWdnZXJUZXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGZhZDEwZGYuLjNiMDEyMmMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMDgtMzEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogcGVyc2lzdCBET00gYnJlYWtwb2ludHMgYmV0d2VlbiBwYWdl
IHJlbG9hZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ0ODM3CisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJh
clBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludEl0ZW0pOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUucGF0aCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
Tm9kZS5wcm90b3R5cGUuc2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
Tm9kZS5wcm90b3R5cGUuaGFzQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
Tm9kZS5wcm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NTm9kZS5wcm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTUFnZW50LnByb3RvdHlwZS5fc2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTUFnZW50LnByb3RvdHlwZS5fY2hpbGROb2RlUmVtb3ZlZCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLl9yZW1vdmVCcmVha3BvaW50cyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5zZXRCcmVha3BvaW50KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUucmVtb3ZlQnJl
YWtwb2ludHNGb3JOb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFu
YWdlci5wcm90b3R5cGUuX2JyZWFrcG9pbnRSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUucmVzdG9yZUJyZWFrcG9pbnRzLnJlc3Rv
cmVCcmVha3BvaW50c0Zvck5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnRNYW5hZ2VyLnByb3RvdHlwZS5yZXN0b3JlQnJlYWtwb2ludHMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnQuY29udGV4dE1lbnVMYWJlbEZvclR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJy
ZWFrcG9pbnQucHJvdG90eXBlLmdldCBub2RlSWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRP
TUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZW5hYmxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRz
UGFuZWwucHJvdG90eXBlLnNldERvY3VtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlLl9zaG93UG9wdXAuc2hvd09iamVjdFBvcHVwKToK
KwogMjAxMC0wOS0wMiAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwppbmRleCAzYTA4NjBmLi40MDg4
MjlkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNT
aWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dHNTaWRlYmFyUGFuZS5qcwpAQCAtMTg4LDcgKzE4OCw4IEBAIFdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50SXRlbSA9IGZ1bmN0aW9uKGJyZWFrcG9pbnQpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRJdGVtLmNhbGwodGhpcywgYnJlYWtwb2ludCk7CiAKLSAgICB2YXIgbGluayA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMubGlua2lmeU5vZGVSZWZlcmVuY2UodGhpcy5fYnJl
YWtwb2ludC5ub2RlKTsKKyAgICB2YXIgbm9kZSA9IFdlYkluc3BlY3Rvci5kb21BZ2VudC5ub2Rl
Rm9ySWQodGhpcy5fYnJlYWtwb2ludC5ub2RlSWQpOworICAgIHZhciBsaW5rID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5lbGVtZW50cy5saW5raWZ5Tm9kZVJlZmVyZW5jZShub2RlKTsKICAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKGxpbmspOwogCiAgICAgdmFyIHR5cGUgPSBXZWJJbnNwZWN0
b3IuRE9NQnJlYWtwb2ludC5sYWJlbEZvclR5cGUodGhpcy5fYnJlYWtwb2ludC50eXBlKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCA1YWFhMGQzLi45YjM4NmMz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzCkBAIC0xNDMsNiArMTQz
LDQwIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5v
d25lckRvY3VtZW50Ll9kb21BZ2VudC5yZW1vdmVBdHRyaWJ1dGVBc3luYyh0aGlzLCBuYW1lLCBj
YWxsYmFjayk7CiAgICAgfSwKIAorICAgIHBhdGg6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHZhciBwYXRoID0gW107CisgICAgICAgIHZhciBub2RlID0gdGhpczsKKyAgICAgICAgd2hpbGUg
KG5vZGUgJiYgImluZGV4IiBpbiBub2RlICYmIG5vZGUubm9kZU5hbWUubGVuZ3RoKSB7CisgICAg
ICAgICAgICBwYXRoLnB1c2goW25vZGUuaW5kZXgsIG5vZGUubm9kZU5hbWVdKTsKKyAgICAgICAg
ICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7CisgICAgICAgIH0KKyAgICAgICAgcGF0aC5yZXZl
cnNlKCk7CisgICAgICAgIHJldHVybiBwYXRoLmpvaW4oIiwiKTsKKyAgICB9LAorCisgICAgc2V0
QnJlYWtwb2ludDogZnVuY3Rpb24odHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIuc2V0QnJlYWtwb2ludCh0aGlzLmlkLCB0eXBlLCB0
cnVlLCB0aGlzLnBhdGgoKSk7CisgICAgfSwKKworICAgIGhhc0JyZWFrcG9pbnQ6IGZ1bmN0aW9u
KHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gISFXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2lu
dE1hbmFnZXIuZmluZEJyZWFrcG9pbnQodGhpcy5pZCwgdHlwZSk7CisgICAgfSwKKworICAgIHJl
bW92ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKHR5cGUpCisgICAgeworICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5maW5kQnJlYWtwb2ludCh0
aGlzLmlkLCB0eXBlKTsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAgICAgICBicmVh
a3BvaW50LnJlbW92ZSgpOworICAgIH0sCisKKyAgICByZW1vdmVCcmVha3BvaW50czogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJl
bW92ZUJyZWFrcG9pbnRzRm9yTm9kZSh0aGlzLmlkKTsKKyAgICB9LAorCiAgICAgX3NldEF0dHJp
YnV0ZXNQYXlsb2FkOiBmdW5jdGlvbihhdHRycykKICAgICB7CiAgICAgICAgIHRoaXMuYXR0cmli
dXRlcyA9IFtdOwpAQCAtMzYyLDYgKzM5Niw3IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmRvY3VtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5E
T01Eb2N1bWVudCh0aGlzLCB0aGlzLl93aW5kb3csIHBheWxvYWQpOwogICAgICAgICAgICAgdGhp
cy5faWRUb0RPTU5vZGVbcGF5bG9hZC5pZF0gPSB0aGlzLmRvY3VtZW50OwogICAgICAgICAgICAg
dGhpcy5fYmluZE5vZGVzKHRoaXMuZG9jdW1lbnQuY2hpbGRyZW4pOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnJlc3RvcmVCcmVha3BvaW50cygpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBudWxsOwogICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNldERvY3VtZW50KHRoaXMuZG9jdW1lbnQpOwpA
QCAtNDE4LDcgKzQ1MywxNyBAQCBXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlID0gewog
ICAgICAgICB2YXIgZXZlbnQgPSB7IHRhcmdldCA6IG5vZGUsIHJlbGF0ZWROb2RlIDogcGFyZW50
IH07CiAgICAgICAgIHRoaXMuZG9jdW1lbnQuX2ZpcmVEb21FdmVudCgiRE9NTm9kZVJlbW92ZWQi
LCBldmVudCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwotICAg
IH0KKyAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludHMobm9kZSk7CisgICAgfSwKKworICAg
IF9yZW1vdmVCcmVha3BvaW50czogZnVuY3Rpb24obm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUu
cmVtb3ZlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgaWYgKCFub2RlLmNoaWxkcmVuKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4u
bGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50cyhub2RlLmNo
aWxkcmVuW2ldKTsKKyAgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZSA9
IHt9CkBAIC02NzksMjAgKzcyNCwyNCBAQCBXZWJJbnNwZWN0b3IuY2hpbGROb2RlUmVtb3ZlZCA9
IGZ1bmN0aW9uKCkKIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFuYWdlciA9IGZ1bmN0aW9u
KCkKIHsKICAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9OworICAgIHRoaXMuX3BhdGhDYWNoZSA9
IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0g
ewotICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9uKG5vZGUsIHR5cGUpCisgICAgc2V0QnJlYWtw
b2ludDogZnVuY3Rpb24obm9kZUlkLCB0eXBlLCBlbmFibGVkLCBwYXRoKQogICAgIHsKLSAgICAg
ICAgaWYgKCEobm9kZS5pZCBpbiB0aGlzLl9icmVha3BvaW50cykpCi0gICAgICAgICAgICB0aGlz
Ll9icmVha3BvaW50c1tub2RlLmlkXSA9IHt9OwotICAgICAgICBlbHNlIGlmICh0eXBlIGluIHRo
aXMuX2JyZWFrcG9pbnRzW25vZGUuaWRdKQorICAgICAgICBpZiAoIShub2RlSWQgaW4gdGhpcy5f
YnJlYWtwb2ludHMpKQorICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNbbm9kZUlkXSA9IHt9
OworICAgICAgICBlbHNlIGlmICh0eXBlIGluIHRoaXMuX2JyZWFrcG9pbnRzW25vZGVJZF0pCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5z
cGVjdG9yLkRPTUJyZWFrcG9pbnQobm9kZSwgdHlwZSk7Ci0gICAgICAgIHRoaXMuX2JyZWFrcG9p
bnRzW25vZGUuaWRdW3R5cGVdID0gYnJlYWtwb2ludDsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBuZXcgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQobm9kZUlkLCB0eXBlLCBlbmFibGVkKTsK
KyAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNbbm9kZUlkXVt0eXBlXSA9IGJyZWFrcG9pbnQ7CiAg
ICAgICAgIGJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcigicmVtb3ZlZCIsIHRoaXMuX2JyZWFr
cG9pbnRSZW1vdmVkLCB0aGlzKTsKIAorICAgICAgICBpZiAoIShub2RlSWQgaW4gdGhpcy5fcGF0
aENhY2hlKSkKKyAgICAgICAgICAgIHRoaXMuX3BhdGhDYWNoZVtub2RlSWRdID0gcGF0aDsKKwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiZG9tLWJyZWFrcG9pbnQtYWRk
ZWQiLCBicmVha3BvaW50KTsKICAgICB9LAogCkBAIC03MDMsOSArNzUyLDkgQEAgV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biBub2RlQnJlYWtwb2ludHNbdHlwZV07CiAgICAgfSwKIAotICAgIHJlbW92ZUJyZWFrcG9pbnRz
Rm9yTm9kZTogZnVuY3Rpb24obm9kZSkKKyAgICByZW1vdmVCcmVha3BvaW50c0Zvck5vZGU6IGZ1
bmN0aW9uKG5vZGVJZCkKICAgICB7Ci0gICAgICAgIHZhciBub2RlQnJlYWtwb2ludHMgPSB0aGlz
Ll9icmVha3BvaW50c1tub2RlLmlkXTsKKyAgICAgICAgdmFyIG5vZGVCcmVha3BvaW50cyA9IHRo
aXMuX2JyZWFrcG9pbnRzW25vZGVJZF07CiAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gbm9kZUJy
ZWFrcG9pbnRzKQogICAgICAgICAgICAgbm9kZUJyZWFrcG9pbnRzW3R5cGVdLnJlbW92ZSgpOwog
ICAgIH0sCkBAIC03MTQsMjMgKzc2Myw0OSBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1h
bmFnZXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVu
dC50YXJnZXQ7CiAKLSAgICAgICAgdmFyIG5vZGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9p
bnRzW2JyZWFrcG9pbnQubm9kZS5pZF07CisgICAgICAgIHZhciBub2RlQnJlYWtwb2ludHMgPSB0
aGlzLl9icmVha3BvaW50c1ticmVha3BvaW50Lm5vZGVJZF07CiAgICAgICAgIGRlbGV0ZSBub2Rl
QnJlYWtwb2ludHNbYnJlYWtwb2ludC50eXBlXTsKICAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBu
b2RlQnJlYWtwb2ludHMpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRlbGV0ZSB0aGlz
Ll9icmVha3BvaW50c1ticmVha3BvaW50Lm5vZGUuaWRdOworCisgICAgICAgIGRlbGV0ZSB0aGlz
Ll9icmVha3BvaW50c1ticmVha3BvaW50Lm5vZGVJZF07CisgICAgICAgIGRlbGV0ZSB0aGlzLl9w
YXRoQ2FjaGVbYnJlYWtwb2ludC5ub2RlSWRdOworICAgIH0sCisKKyAgICByZXN0b3JlQnJlYWtw
b2ludHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBicmVha3BvaW50cyA9IHRoaXMu
X2JyZWFrcG9pbnRzOworICAgICAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9OworICAgICAgICB2
YXIgcGF0aENhY2hlID0gdGhpcy5fcGF0aENhY2hlOworICAgICAgICB0aGlzLl9wYXRoQ2FjaGUg
PSB7fTsKKworICAgICAgICBmb3IgKHZhciBvbGROb2RlSWQgaW4gYnJlYWtwb2ludHMpIHsKKyAg
ICAgICAgICAgIHZhciBwYXRoID0gcGF0aENhY2hlW29sZE5vZGVJZF07CisgICAgICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChwYXRoLCByZXN0b3JlQnJl
YWtwb2ludHNGb3JOb2RlLmJpbmQodGhpcywgYnJlYWtwb2ludHNbb2xkTm9kZUlkXSwgcGF0aCkp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmVzdG9yZUJyZWFrcG9pbnRzRm9yTm9k
ZShub2RlQnJlYWtwb2ludHMsIHBhdGgsIG5vZGVJZCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFub2RlSWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZm9yICh2
YXIgdHlwZSBpbiBub2RlQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IG5vZGVCcmVha3BvaW50c1t0eXBlXTsKKyAgICAgICAgICAgICAgICB0aGlzLnNldEJy
ZWFrcG9pbnQobm9kZUlkLCBicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZW5hYmxlZCwgcGF0
aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiB9CiAKIFdlYkluc3BlY3Rvci5E
T01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9i
amVjdC5wcm90b3R5cGU7CiAKLVdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50ID0gZnVuY3Rpb24o
bm9kZSwgdHlwZSkKK1dlYkluc3BlY3Rvci5ET01CcmVha3BvaW50ID0gZnVuY3Rpb24obm9kZUlk
LCB0eXBlLCBlbmFibGVkKQogewotICAgIHRoaXMubm9kZSA9IG5vZGU7Ci0gICAgdGhpcy50eXBl
ID0gdHlwZTsKLSAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTsKKyAgICB0aGlzLl9ub2RlSWQgPSBu
b2RlSWQ7CisgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgdGhpcy5fZW5hYmxlZCA9IGVuYWJs
ZWQ7CiAKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnNldERPTUJyZWFrcG9pbnQodGhpcy5ub2RlLmlk
LCB0aGlzLnR5cGUpOworICAgIGlmICh0aGlzLmVuYWJsZWQpCisgICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuc2V0RE9NQnJlYWtwb2ludCh0aGlzLm5vZGVJZCwgdGhpcy50eXBlKTsKIH0KIAogV2Vi
SW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMgPSB7CkBAIC03NjIsNiArODM3LDE2IEBAIFdl
Ykluc3BlY3Rvci5ET01CcmVha3BvaW50LmNvbnRleHRNZW51TGFiZWxGb3JUeXBlID0gZnVuY3Rp
b24odHlwZSkKIH0KIAogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlID0gewor
ICAgIGdldCBub2RlSWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVJZDsKKyAg
ICB9LAorCisgICAgZ2V0IHR5cGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7
CisgICAgfSwKKwogICAgIGdldCBlbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9lbmFibGVkOwpAQCAtNzczLDE4ICs4NTgsMTggQEAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2Vu
YWJsZWQgPSBlbmFibGVkOwotICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCkKLSAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludCh0aGlzLm5vZGUuaWQsIHRoaXMudHlw
ZSk7CisgICAgICAgIGlmICh0aGlzLmVuYWJsZWQpCisgICAgICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnNldERPTUJyZWFrcG9pbnQodGhpcy5ub2RlSWQsIHRoaXMudHlwZSk7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlz
Lm5vZGUuaWQsIHRoaXMudHlwZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92
ZURPTUJyZWFrcG9pbnQodGhpcy5ub2RlSWQsIHRoaXMudHlwZSk7CiAKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImVuYWJsZS1jaGFuZ2VkIik7CiAgICAgfSwKIAogICAg
IHJlbW92ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2VuYWJsZWQpCi0g
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJyZWFrcG9pbnQodGhpcy5ub2Rl
LmlkLCB0aGlzLnR5cGUpOworICAgICAgICBpZiAodGhpcy5lbmFibGVkKQorICAgICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5yZW1vdmVET01CcmVha3BvaW50KHRoaXMubm9kZUlkLCB0aGlzLnR5
cGUpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVtb3ZlZCIpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMK
aW5kZXggZTFiYzYzNy4uYzYwZDRiMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzUGFuZWwuanMKQEAgLTE1OSwxNiArMTU5LDggQEAgV2ViSW5zcGVjdG9yLkVsZW1l
bnRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLmZvY3VzZWRET01Ob2RlKSB7Ci0gICAgICAgICAgICB0aGlzLl9zZWxl
Y3RlZFBhdGhPblJlc2V0ID0gW107Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZm9jdXNl
ZERPTU5vZGU7Ci0gICAgICAgICAgICB3aGlsZSAoImluZGV4IiBpbiBub2RlICYmIG5vZGUubm9k
ZU5hbWUgJiYgbm9kZS5ub2RlTmFtZS5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9z
ZWxlY3RlZFBhdGhPblJlc2V0LnB1c2gobm9kZS5ub2RlTmFtZSk7Ci0gICAgICAgICAgICAgICAg
dGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldC5wdXNoKG5vZGUuaW5kZXgpOwotICAgICAgICAgICAg
ICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0
aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0LnJldmVyc2UoKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAodGhpcy5mb2N1c2VkRE9NTm9kZSkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9u
UmVzZXQgPSB0aGlzLmZvY3VzZWRET01Ob2RlLnBhdGgoKTsKIAogICAgICAgICB0aGlzLnJvb3RE
T01Ob2RlID0gbnVsbDsKICAgICAgICAgdGhpcy5mb2N1c2VkRE9NTm9kZSA9IG51bGw7CkBAIC0y
MjUsNyArMjE3LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQpCi0gICAg
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZCh0aGlzLl9z
ZWxlY3RlZFBhdGhPblJlc2V0LmpvaW4oIiwiKSwgc2VsZWN0TGFzdFNlbGVjdGVkTm9kZS5iaW5k
KHRoaXMpKTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVzaE5vZGVCeVBhdGhUb0Zy
b250ZW5kKHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQsIHNlbGVjdExhc3RTZWxlY3RlZE5vZGUu
YmluZCh0aGlzKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNlbGVjdE5vZGUuY2FsbCh0
aGlzKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQ7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4
IGJhM2IzMjAuLjEwMTMxZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCkBAIC03NjUsMTUgKzc2NSwxNyBAQCBXZWJJbnNwZWN0
b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChQcmVmZXJl
bmNlcy5kb21CcmVha3BvaW50c0VuYWJsZWQpIHsKICAgICAgICAgICAgIC8vIEFkZCBkZWJidWdp
bmctcmVsYXRlZCBhY3Rpb25zCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0
b3IoKTsKLSAgICAgICAgICAgIGZvciAodmFyIHR5cGUgaW4gV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQuVHlwZXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZUlkID0gV2ViSW5zcGVjdG9y
LkRPTUJyZWFrcG9pbnQuVHlwZXNbdHlwZV07Ci0gICAgICAgICAgICAgICAgdmFyIGxhYmVsID0g
V2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuY29udGV4dE1lbnVMYWJlbEZvclR5cGUodHlwZUlk
KTsKLSAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IFdlYkluc3BlY3Rvci5kb21CcmVh
a3BvaW50TWFuYWdlci5maW5kQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmlkLCB0
eXBlSWQpOwotICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludCkKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIGhhbmRsZXIgPSBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIuc2V0
QnJlYWtwb2ludC5iaW5kKFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlciwgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdCwgdHlwZUlkKTsKKworICAgICAgICAgICAgdmFyIG5vZGUgPSB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIFdlYkluc3Bl
Y3Rvci5ET01CcmVha3BvaW50LlR5cGVzKSB7CisgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSBX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlc1trZXldOworICAgICAgICAgICAgICAgIHZh
ciBsYWJlbCA9IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LmNvbnRleHRNZW51TGFiZWxGb3JU
eXBlKHR5cGUpOworICAgICAgICAgICAgICAgIHZhciBoYXNCcmVha3BvaW50ID0gbm9kZS5oYXNC
cmVha3BvaW50KHR5cGUpOworICAgICAgICAgICAgICAgIGlmICghaGFzQnJlYWtwb2ludCkKKyAg
ICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIgPSBub2RlLnNldEJyZWFrcG9pbnQuYmluZChu
b2RlLCB0eXBlKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZh
ciBoYW5kbGVyID0gYnJlYWtwb2ludC5yZW1vdmUuYmluZChicmVha3BvaW50KTsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0obGFiZWwsIGhhbmRsZXIsICEh
YnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGVyID0gbm9kZS5yZW1v
dmVCcmVha3BvaW50LmJpbmQobm9kZSwgdHlwZSk7CisgICAgICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kQ2hlY2tib3hJdGVtKGxhYmVsLCBoYW5kbGVyLCBoYXNCcmVha3BvaW50KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU291cmNlRnJhbWUuanMKaW5kZXggMTZiOGU4ZC4uYTkwMzNmMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwpAQCAtNTk4LDkgKzU5OCwxMSBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHBvcHVw
Q29udGVudEVsZW1lbnQgPSBudWxsOwogICAgICAgICAgICAgaWYgKHJlc3VsdC50eXBlICE9PSAi
b2JqZWN0IiAmJiByZXN1bHQudHlwZSAhPT0gIm5vZGUiICYmIHJlc3VsdC50eXBlICE9PSAiYXJy
YXkiKSB7CiAgICAgICAgICAgICAgICAgcG9wdXBDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVtZW50
LmNsYXNzTmFtZSA9ICJtb25vc3BhY2UiOworICAgICAgICAgICAgICAgIHBvcHVwQ29udGVudEVs
ZW1lbnQuY2xhc3NOYW1lID0gIm1vbm9zcGFjZSBjb25zb2xlLWZvcm1hdHRlZC0iICsgcmVzdWx0
LnR5cGU7CiAgICAgICAgICAgICAgICAgcG9wdXBDb250ZW50RWxlbWVudC5zdHlsZS53aGl0ZVNw
YWNlID0gInByZSI7CiAgICAgICAgICAgICAgICAgcG9wdXBDb250ZW50RWxlbWVudC50ZXh0Q29u
dGVudCA9IHJlc3VsdC5kZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnR5
cGUgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgICAgICBwb3B1cENvbnRlbnRFbGVtZW50
LnRleHRDb250ZW50ID0gIlwiIiArIHBvcHVwQ29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgKyAi
XCIiOwogICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVwID0gbmV3IFdlYkluc3BlY3Rvci5Qb3Bv
dmVyKHBvcHVwQ29udGVudEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVwLnNo
b3coZWxlbWVudCk7CiAgICAgICAgICAgICB9IGVsc2Ugewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66359</attachid>
            <date>2010-09-02 04:55:03 -0700</date>
            <delta_ts>2010-09-02 22:06:09 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>persist.patch</filename>
            <type>text/plain</type>
            <size>20869</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZmU0ZmIwLi40MjQwMDJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDkt
MDIgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWRk
IHBhZ2UgcmVsb2FkIHRlc3QgdG8gZG9tLWJyZWFrcG9pbnRzLmh0bWwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0ODM3CisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZG9tLWJyZWFrcG9pbnRzLmh0bWw6CisKIDIwMTAtMDktMDIgIFRvbnkgR2VudGlsY29yZSAgPHRv
bnlnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApp
bmRleCBjODViNzFlLi4yZDg3NWVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApAQCAtMSwyMCArMSwzMCBAQAogVGVzdHMgRE9N
IGJyZWFrcG9pbnRzLiBCdWcgNDI4ODYKIAogRGVidWdnZXIgd2FzIGVuYWJsZWQuCi1Gb3VuZCBk
b20gbm9kZSBkMC4KK1Rlc3QgdGhhdCAnU3VidHJlZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBo
aXQgd2hlbiBhcHBlbmRpbmcgY2hpbGQuCiBTZXQgc3VidHJlZSBtb2RpZmllZCBET00gYnJlYWtw
b2ludCBvbiBkMC4KK0FwcGVuZCBkMSB0byBkMC4KIFNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgog
bGluZTogMTEsIGZ1bmN0aW9uOiBhcHBlbmRFbGVtZW50CiBTY3JpcHQgZXhlY3V0aW9uIHJlc3Vt
ZWQuCi1Gb3VuZCBkb20gbm9kZSBkMS4KK1Rlc3QgdGhhdCAnQXR0cmlidXRlIE1vZGlmaWVkJyBi
cmVha3BvaW50IGlzIGhpdCB3aGVuIG1vZGlmeWluZyBhdHRyaWJ1dGUuCiBTZXQgYXR0cmlidXRl
IG1vZGlmaWVkIERPTSBicmVha3BvaW50IG9uIGQxLgorTW9kaWZ5IGQxIGNsYXNzTmFtZS4KIFNj
cmlwdCBleGVjdXRpb24gcGF1c2VkLgogbGluZTogMTcsIGZ1bmN0aW9uOiBtb2RpZnlBdHRyaWJ1
dGUKIFNjcmlwdCBleGVjdXRpb24gcmVzdW1lZC4KLUZvdW5kIGRvbSBub2RlIGQxLgorVGVzdCB0
aGF0ICdOb2RlIFJlbW92ZWQnIGJyZWFrcG9pbnQgaXMgaGl0IHdoZW4gcmVtb3ZpbmcgYSBub2Rl
LgogU2V0IG5vZGUgcmVtb3ZlZCBET00gYnJlYWtwb2ludCBvbiBkMS4KK1JlbW92ZSBkMS4KIFNj
cmlwdCBleGVjdXRpb24gcGF1c2VkLgogbGluZTogMjMsIGZ1bmN0aW9uOiByZW1vdmVFbGVtZW50
CiBTY3JpcHQgZXhlY3V0aW9uIHJlc3VtZWQuCitUZXN0IHRoYXQgRE9NIGJyZWFrcG9pbnRzIGFy
ZSBwZXJzaXN0ZWQgYmV0d2VlbiBwYWdlIHJlbG9hZHMuCitTZXQgc3VidHJlZSBtb2RpZmllZCBE
T00gYnJlYWtwb2ludCBvbiBkMC4KK1BhZ2UgcmVsb2FkZWQuCitBcHBlbmQgZDEgdG8gZDAuCitT
Y3JpcHQgZXhlY3V0aW9uIHBhdXNlZC4KK2xpbmU6IDExLCBmdW5jdGlvbjogYXBwZW5kRWxlbWVu
dAorU2NyaXB0IGV4ZWN1dGlvbiByZXN1bWVkLgogRGVidWdnZXIgd2FzIGRpc2FibGVkLgogCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWJyZWFrcG9pbnRzLmh0bWwKaW5kZXggMWFlMzBkNy4u
NzYyNWE0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1icmVha3BvaW50
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tYnJlYWtwb2ludHMuaHRtbApA
QCAtMjcsNiArMjcsOCBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIHsKICAgICBJbnNwZWN0b3JU
ZXN0LnN0YXJ0RGVidWdnZXJUZXN0KHN0ZXAxKTsKIAorICAgIHZhciBkMCwgZDE7CisKICAgICBm
dW5jdGlvbiBzdGVwMSgpCiAgICAgewogICAgICAgICBmaW5kRE9NTm9kZUJ5SWQoImQwIiwgc3Rl
cDIpOwpAQCAtMzQsNDkgKzM2LDc0IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogCiAgICAgZnVu
Y3Rpb24gc3RlcDIobm9kZSkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJGb3VuZCBkb20gbm9kZSBkMC4iKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9p
bnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQobm9kZSwgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQu
VHlwZXMuU3VidHJlZU1vZGlmaWVkKTsKKyAgICAgICAgZDAgPSBub2RlOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiVGVzdCB0aGF0ICdTdWJ0cmVlIE1vZGlmaWVkJyBicmVha3Bv
aW50IGlzIGhpdCB3aGVuIGFwcGVuZGluZyBjaGlsZC4iKTsKKyAgICAgICAgZDAuc2V0QnJlYWtw
b2ludChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5TdWJ0cmVlTW9kaWZpZWQpOwog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU2V0IHN1YnRyZWUgbW9kaWZpZWQgRE9N
IGJyZWFrcG9pbnQgb24gZDAuIik7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNv
bnNvbGUoImFwcGVuZEVsZW1lbnQoJ2QwJywgJ2QxJykiKTsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC53YWl0VW50aWxQYXVzZWQoc3RlcDMuYmluZChudWxsLCBub2RlKSk7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJBcHBlbmQgZDEgdG8gZDAuIik7CisgICAgICAgIEluc3BlY3Rv
clRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAzKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzdGVw
Myhub2RlLCBjYWxsRnJhbWVzKQorICAgIGZ1bmN0aW9uIHN0ZXAzKGNhbGxGcmFtZXMpCiAgICAg
ewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgibGluZTogIiArIGNhbGxGcmFtZXNb
MF0ubGluZSArICIsIGZ1bmN0aW9uOiAiICsgY2FsbEZyYW1lc1swXS5mdW5jdGlvbk5hbWUpOwot
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2lu
dHNGb3JOb2RlKG5vZGUpOworICAgICAgICBkMC5yZW1vdmVCcmVha3BvaW50KFdlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50LlR5cGVzLlN1YnRyZWVNb2RpZmllZCk7CiAgICAgICAgIEluc3BlY3Rv
clRlc3QucmVzdW1lRXhlY3V0aW9uKGZpbmRET01Ob2RlQnlJZC5iaW5kKG51bGwsICJkMSIsIHN0
ZXA0KSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDQobm9kZSkKICAgICB7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGb3VuZCBkb20gbm9kZSBkMS4iKTsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLnNldEJyZWFrcG9pbnQobm9kZSwgV2Vi
SW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuQXR0cmlidXRlTW9kaWZpZWQpOworICAgICAg
ICBkMSA9IG5vZGU7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJUZXN0IHRoYXQg
J0F0dHJpYnV0ZSBNb2RpZmllZCcgYnJlYWtwb2ludCBpcyBoaXQgd2hlbiBtb2RpZnlpbmcgYXR0
cmlidXRlLiIpOworICAgICAgICBkMS5zZXRCcmVha3BvaW50KFdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50LlR5cGVzLkF0dHJpYnV0ZU1vZGlmaWVkKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIlNldCBhdHRyaWJ1dGUgbW9kaWZpZWQgRE9NIGJyZWFrcG9pbnQgb24gZDEuIik7
CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJbkNvbnNvbGUoIm1vZGlmeUF0dHJpYnV0
ZSgnZDEnLCAnY2xhc3NOYW1lJywgJ2ZvbycpIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qud2Fp
dFVudGlsUGF1c2VkKHN0ZXA1LmJpbmQobnVsbCwgbm9kZSkpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiTW9kaWZ5IGQxIGNsYXNzTmFtZS4iKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC53YWl0VW50aWxQYXVzZWQoc3RlcDUpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHN0ZXA1
KG5vZGUsIGNhbGxGcmFtZXMpCisgICAgZnVuY3Rpb24gc3RlcDUoY2FsbEZyYW1lcykKICAgICB7
CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lOiAiICsgY2FsbEZyYW1lc1sw
XS5saW5lICsgIiwgZnVuY3Rpb246ICIgKyBjYWxsRnJhbWVzWzBdLmZ1bmN0aW9uTmFtZSk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3BvaW50
c0Zvck5vZGUobm9kZSk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKGZp
bmRET01Ob2RlQnlJZC5iaW5kKG51bGwsICJkMSIsIHN0ZXA2KSk7CisgICAgICAgIGQxLnJlbW92
ZUJyZWFrcG9pbnQoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMuQXR0cmlidXRlTW9k
aWZpZWQpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbihzdGVwNik7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gc3RlcDYobm9kZSkKKyAgICBmdW5jdGlvbiBzdGVwNigpCiAg
ICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRm91bmQgZG9tIG5vZGUgZDEu
Iik7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5zZXRCcmVha3Bv
aW50KG5vZGUsIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5cGVzLk5vZGVSZW1vdmVkKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlRlc3QgdGhhdCAnTm9kZSBSZW1vdmVk
JyBicmVha3BvaW50IGlzIGhpdCB3aGVuIHJlbW92aW5nIGEgbm9kZS4iKTsKKyAgICAgICAgZDEu
c2V0QnJlYWtwb2ludChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcy5Ob2RlUmVtb3Zl
ZCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTZXQgbm9kZSByZW1vdmVkIERP
TSBicmVha3BvaW50IG9uIGQxLiIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5D
b25zb2xlKCJyZW1vdmVFbGVtZW50KCdkMScpIik7Ci0gICAgICAgIEluc3BlY3RvclRlc3Qud2Fp
dFVudGlsUGF1c2VkKHN0ZXA3LmJpbmQobnVsbCwgbm9kZSkpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiUmVtb3ZlIGQxLiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRV
bnRpbFBhdXNlZChzdGVwNyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc3RlcDcoY2FsbEZyYW1l
cykKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lOiAiICsgY2Fs
bEZyYW1lc1swXS5saW5lICsgIiwgZnVuY3Rpb246ICIgKyBjYWxsRnJhbWVzWzBdLmZ1bmN0aW9u
TmFtZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKHN0ZXA4KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBzdGVwOCgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiVGVzdCB0aGF0IERPTSBicmVha3BvaW50cyBhcmUgcGVyc2lzdGVkIGJldHdl
ZW4gcGFnZSByZWxvYWRzLiIpOworICAgICAgICBkMC5zZXRCcmVha3BvaW50KFdlYkluc3BlY3Rv
ci5ET01CcmVha3BvaW50LlR5cGVzLlN1YnRyZWVNb2RpZmllZCk7CisgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJTZXQgc3VidHJlZSBtb2RpZmllZCBET00gYnJlYWtwb2ludCBvbiBk
MC4iKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZWxvYWRQYWdlKHN0ZXA5KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBzdGVwOSgpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5Db25zb2xlKCJhcHBlbmRFbGVtZW50KCdkMCcsICdkMScpIik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJBcHBlbmQgZDEgdG8gZDAuIik7CisgICAgICAgIEluc3BlY3Rv
clRlc3Qud2FpdFVudGlsUGF1c2VkKHN0ZXAxMCk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gc3Rl
cDcobm9kZSwgY2FsbEZyYW1lcykKKyAgICBmdW5jdGlvbiBzdGVwMTAoY2FsbEZyYW1lcykKICAg
ICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJsaW5lOiAiICsgY2FsbEZyYW1l
c1swXS5saW5lICsgIiwgZnVuY3Rpb246ICIgKyBjYWxsRnJhbWVzWzBdLmZ1bmN0aW9uTmFtZSk7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5yZW1vdmVCcmVha3Bv
aW50c0Zvck5vZGUobm9kZSk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVEZWJ1Z2dl
clRlc3QoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggZmFkMTBkZi4uODc2ZDA1MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0w
OS0wMiAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBw
ZXJzaXN0IERPTSBicmVha3BvaW50cyBiZXR3ZWVuIHBhZ2UgcmVsb2FkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ4MzcKKworICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01CcmVha3BvaW50SXRlbSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlw
ZS5wYXRoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5zZXRCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5oYXNCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5yZW1vdmVC
cmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5yZW1v
dmVCcmVha3BvaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBl
Ll9zZXREb2N1bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBl
Ll9jaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90
b3R5cGUuX3JlbW92ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVh
a3BvaW50TWFuYWdlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFn
ZXIucHJvdG90eXBlLnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJy
ZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVCcmVha3BvaW50c0Zvck5vZGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtw
b2ludFJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2Vy
LnByb3RvdHlwZS5yZXN0b3JlQnJlYWtwb2ludHMucmVzdG9yZUJyZWFrcG9pbnRzRm9yTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlLnJl
c3RvcmVCcmVha3BvaW50cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IG5vZGVJ
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHR5
cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBl
bmFibGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnByb3RvdHlwZS5y
ZW1vdmUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5yZXNldCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuc2V0RG9jdW1lbnQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5fcG9w
dWxhdGVUYWdDb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3Vy
Y2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUu
X3Nob3dQb3B1cC5zaG93T2JqZWN0UG9wdXApOgorCiAyMDEwLTA5LTAyICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3Yu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRl
YmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGVi
YXJQYW5lLmpzCmluZGV4IDNhMDg2MGYuLjQwODgyOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzCkBAIC0xODgsNyAr
MTg4LDggQEAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRJdGVtID0gZnVuY3Rpb24oYnJlYWtw
b2ludCkKIHsKICAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0uY2FsbCh0aGlzLCBicmVh
a3BvaW50KTsKIAotICAgIHZhciBsaW5rID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5s
aW5raWZ5Tm9kZVJlZmVyZW5jZSh0aGlzLl9icmVha3BvaW50Lm5vZGUpOworICAgIHZhciBub2Rl
ID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZCh0aGlzLl9icmVha3BvaW50Lm5vZGVJ
ZCk7CisgICAgdmFyIGxpbmsgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmxpbmtpZnlO
b2RlUmVmZXJlbmNlKG5vZGUpOwogICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQobGluayk7
CiAKICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LmxhYmVsRm9yVHlw
ZSh0aGlzLl9icmVha3BvaW50LnR5cGUpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzCmluZGV4IDVhYWEwZDMuLjliMzg2YzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMKQEAgLTE0Myw2ICsxNDMsNDAgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLm93bmVyRG9jdW1lbnQuX2RvbUFnZW50LnJlbW92
ZUF0dHJpYnV0ZUFzeW5jKHRoaXMsIG5hbWUsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAgcGF0
aDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHBhdGggPSBbXTsKKyAgICAgICAgdmFy
IG5vZGUgPSB0aGlzOworICAgICAgICB3aGlsZSAobm9kZSAmJiAiaW5kZXgiIGluIG5vZGUgJiYg
bm9kZS5ub2RlTmFtZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIHBhdGgucHVzaChbbm9kZS5pbmRl
eCwgbm9kZS5ub2RlTmFtZV0pOworICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsK
KyAgICAgICAgfQorICAgICAgICBwYXRoLnJldmVyc2UoKTsKKyAgICAgICAgcmV0dXJuIHBhdGgu
am9pbigiLCIpOworICAgIH0sCisKKyAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbih0eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5z
ZXRCcmVha3BvaW50KHRoaXMuaWQsIHR5cGUsIHRydWUsIHRoaXMucGF0aCgpKTsKKyAgICB9LAor
CisgICAgaGFzQnJlYWtwb2ludDogZnVuY3Rpb24odHlwZSkKKyAgICB7CisgICAgICAgIHJldHVy
biAhIVdlYkluc3BlY3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5maW5kQnJlYWtwb2ludCh0aGlz
LmlkLCB0eXBlKTsKKyAgICB9LAorCisgICAgcmVtb3ZlQnJlYWtwb2ludDogZnVuY3Rpb24odHlw
ZSkKKyAgICB7CisgICAgICAgIHZhciBicmVha3BvaW50ID0gV2ViSW5zcGVjdG9yLmRvbUJyZWFr
cG9pbnRNYW5hZ2VyLmZpbmRCcmVha3BvaW50KHRoaXMuaWQsIHR5cGUpOworICAgICAgICBpZiAo
YnJlYWtwb2ludCkKKyAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgfSwKKwor
ICAgIHJlbW92ZUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBXZWJJbnNw
ZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlKHRoaXMu
aWQpOworICAgIH0sCisKICAgICBfc2V0QXR0cmlidXRlc1BheWxvYWQ6IGZ1bmN0aW9uKGF0dHJz
KQogICAgIHsKICAgICAgICAgdGhpcy5hdHRyaWJ1dGVzID0gW107CkBAIC0zNjIsNiArMzk2LDcg
QEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
ZG9jdW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTURvY3VtZW50KHRoaXMsIHRoaXMuX3dpbmRv
dywgcGF5bG9hZCk7CiAgICAgICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZVtwYXlsb2FkLmlkXSA9
IHRoaXMuZG9jdW1lbnQ7CiAgICAgICAgICAgICB0aGlzLl9iaW5kTm9kZXModGhpcy5kb2N1bWVu
dC5jaGlsZHJlbik7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQnJlYWtwb2ludE1hbmFn
ZXIucmVzdG9yZUJyZWFrcG9pbnRzKCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhp
cy5kb2N1bWVudCA9IG51bGw7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMu
c2V0RG9jdW1lbnQodGhpcy5kb2N1bWVudCk7CkBAIC00MTgsNyArNDUzLDE3IEBAIFdlYkluc3Bl
Y3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBldmVudCA9IHsgdGFyZ2V0
IDogbm9kZSwgcmVsYXRlZE5vZGUgOiBwYXJlbnQgfTsKICAgICAgICAgdGhpcy5kb2N1bWVudC5f
ZmlyZURvbUV2ZW50KCJET01Ob2RlUmVtb3ZlZCIsIGV2ZW50KTsKICAgICAgICAgZGVsZXRlIHRo
aXMuX2lkVG9ET01Ob2RlW25vZGVJZF07Ci0gICAgfQorICAgICAgICB0aGlzLl9yZW1vdmVCcmVh
a3BvaW50cyhub2RlKTsKKyAgICB9LAorCisgICAgX3JlbW92ZUJyZWFrcG9pbnRzOiBmdW5jdGlv
bihub2RlKQorICAgIHsKKyAgICAgICAgbm9kZS5yZW1vdmVCcmVha3BvaW50cygpOworICAgICAg
ICBpZiAoIW5vZGUuY2hpbGRyZW4pCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHRo
aXMuX3JlbW92ZUJyZWFrcG9pbnRzKG5vZGUuY2hpbGRyZW5baV0pOworICAgICB9CiB9CiAKIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlID0ge30KQEAgLTY3OSwyMCArNzI0LDI0IEBAIFdl
Ykluc3BlY3Rvci5jaGlsZE5vZGVSZW1vdmVkID0gZnVuY3Rpb24oKQogV2ViSW5zcGVjdG9yLkRP
TUJyZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2JyZWFrcG9pbnRz
ID0ge307CisgICAgdGhpcy5fcGF0aENhY2hlID0ge307CiB9CiAKIFdlYkluc3BlY3Rvci5ET01C
cmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7Ci0gICAgc2V0QnJlYWtwb2ludDogZnVuY3Rp
b24obm9kZSwgdHlwZSkKKyAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbihub2RlSWQsIHR5cGUs
IGVuYWJsZWQsIHBhdGgpCiAgICAgewotICAgICAgICBpZiAoIShub2RlLmlkIGluIHRoaXMuX2Jy
ZWFrcG9pbnRzKSkKLSAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW25vZGUuaWRdID0ge307
Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUgaW4gdGhpcy5fYnJlYWtwb2ludHNbbm9kZS5pZF0pCisg
ICAgICAgIGlmICghKG5vZGVJZCBpbiB0aGlzLl9icmVha3BvaW50cykpCisgICAgICAgICAgICB0
aGlzLl9icmVha3BvaW50c1tub2RlSWRdID0ge307CisgICAgICAgIGVsc2UgaWYgKHR5cGUgaW4g
dGhpcy5fYnJlYWtwb2ludHNbbm9kZUlkXSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludChub2RlLCB0
eXBlKTsKLSAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNbbm9kZS5pZF1bdHlwZV0gPSBicmVha3Bv
aW50OworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NQnJlYWtw
b2ludChub2RlSWQsIHR5cGUsIGVuYWJsZWQpOworICAgICAgICB0aGlzLl9icmVha3BvaW50c1tu
b2RlSWRdW3R5cGVdID0gYnJlYWtwb2ludDsKICAgICAgICAgYnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKCJyZW1vdmVkIiwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQsIHRoaXMpOwogCisgICAg
ICAgIGlmICghKG5vZGVJZCBpbiB0aGlzLl9wYXRoQ2FjaGUpKQorICAgICAgICAgICAgdGhpcy5f
cGF0aENhY2hlW25vZGVJZF0gPSBwYXRoOworCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJkb20tYnJlYWtwb2ludC1hZGRlZCIsIGJyZWFrcG9pbnQpOwogICAgIH0sCiAK
QEAgLTcwMyw5ICs3NTIsOSBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludE1hbmFnZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIG5vZGVCcmVha3BvaW50c1t0eXBlXTsKICAg
ICB9LAogCi0gICAgcmVtb3ZlQnJlYWtwb2ludHNGb3JOb2RlOiBmdW5jdGlvbihub2RlKQorICAg
IHJlbW92ZUJyZWFrcG9pbnRzRm9yTm9kZTogZnVuY3Rpb24obm9kZUlkKQogICAgIHsKLSAgICAg
ICAgdmFyIG5vZGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW25vZGUuaWRdOworICAg
ICAgICB2YXIgbm9kZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbbm9kZUlkXTsKICAg
ICAgICAgZm9yICh2YXIgdHlwZSBpbiBub2RlQnJlYWtwb2ludHMpCiAgICAgICAgICAgICBub2Rl
QnJlYWtwb2ludHNbdHlwZV0ucmVtb3ZlKCk7CiAgICAgfSwKQEAgLTcxNCwyMyArNzYzLDQ5IEBA
IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgewog
ICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKIAotICAgICAgICB2YXIgbm9k
ZUJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbYnJlYWtwb2ludC5ub2RlLmlkXTsKKyAg
ICAgICAgdmFyIG5vZGVCcmVha3BvaW50cyA9IHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQu
bm9kZUlkXTsKICAgICAgICAgZGVsZXRlIG5vZGVCcmVha3BvaW50c1ticmVha3BvaW50LnR5cGVd
OwogICAgICAgICBmb3IgKHZhciB0eXBlIGluIG5vZGVCcmVha3BvaW50cykKICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQubm9k
ZS5pZF07CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQubm9k
ZUlkXTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3BhdGhDYWNoZVticmVha3BvaW50Lm5vZGVJZF07
CisgICAgfSwKKworICAgIHJlc3RvcmVCcmVha3BvaW50czogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHM7CisgICAgICAgIHRoaXMu
X2JyZWFrcG9pbnRzID0ge307CisgICAgICAgIHZhciBwYXRoQ2FjaGUgPSB0aGlzLl9wYXRoQ2Fj
aGU7CisgICAgICAgIHRoaXMuX3BhdGhDYWNoZSA9IHt9OworCisgICAgICAgIGZvciAodmFyIG9s
ZE5vZGVJZCBpbiBicmVha3BvaW50cykgeworICAgICAgICAgICAgdmFyIHBhdGggPSBwYXRoQ2Fj
aGVbb2xkTm9kZUlkXTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVzaE5vZGVCeVBh
dGhUb0Zyb250ZW5kKHBhdGgsIHJlc3RvcmVCcmVha3BvaW50c0Zvck5vZGUuYmluZCh0aGlzLCBi
cmVha3BvaW50c1tvbGROb2RlSWRdLCBwYXRoKSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiByZXN0b3JlQnJlYWtwb2ludHNGb3JOb2RlKG5vZGVCcmVha3BvaW50cywgcGF0aCwgbm9k
ZUlkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW5vZGVJZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBmb3IgKHZhciB0eXBlIGluIG5vZGVCcmVha3BvaW50cykg
eworICAgICAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbm9kZUJyZWFrcG9pbnRzW3R5cGVd
OworICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludChub2RlSWQsIGJyZWFrcG9pbnQu
dHlwZSwgYnJlYWtwb2ludC5lbmFibGVkLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQogICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKIAotV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnQgPSBmdW5jdGlvbihub2RlLCB0eXBlKQorV2ViSW5zcGVjdG9yLkRP
TUJyZWFrcG9pbnQgPSBmdW5jdGlvbihub2RlSWQsIHR5cGUsIGVuYWJsZWQpCiB7Ci0gICAgdGhp
cy5ub2RlID0gbm9kZTsKLSAgICB0aGlzLnR5cGUgPSB0eXBlOwotICAgIHRoaXMuX2VuYWJsZWQg
PSB0cnVlOworICAgIHRoaXMuX25vZGVJZCA9IG5vZGVJZDsKKyAgICB0aGlzLl90eXBlID0gdHlw
ZTsKKyAgICB0aGlzLl9lbmFibGVkID0gZW5hYmxlZDsKIAotICAgIEluc3BlY3RvckJhY2tlbmQu
c2V0RE9NQnJlYWtwb2ludCh0aGlzLm5vZGUuaWQsIHRoaXMudHlwZSk7CisgICAgaWYgKHRoaXMu
ZW5hYmxlZCkKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRET01CcmVha3BvaW50KHRoaXMu
bm9kZUlkLCB0aGlzLnR5cGUpOwogfQogCiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBl
cyA9IHsKQEAgLTc2Miw2ICs4MzcsMTYgQEAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuY29u
dGV4dE1lbnVMYWJlbEZvclR5cGUgPSBmdW5jdGlvbih0eXBlKQogfQogCiBXZWJJbnNwZWN0b3Iu
RE9NQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CisgICAgZ2V0IG5vZGVJZCgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fbm9kZUlkOworICAgIH0sCisKKyAgICBnZXQgdHlwZSgpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKKyAgICB9LAorCiAgICAgZ2V0IGVuYWJsZWQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuYWJsZWQ7CkBAIC03NzMsMTggKzg1OCwx
OCBAQCBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgICAgIGlm
ICh0aGlzLl9lbmFibGVkKQotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRET01CcmVh
a3BvaW50KHRoaXMubm9kZS5pZCwgdGhpcy50eXBlKTsKKyAgICAgICAgaWYgKHRoaXMuZW5hYmxl
ZCkKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0RE9NQnJlYWtwb2ludCh0aGlzLm5v
ZGVJZCwgdGhpcy50eXBlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgSW5zcGVjdG9yQmFj
a2VuZC5yZW1vdmVET01CcmVha3BvaW50KHRoaXMubm9kZS5pZCwgdGhpcy50eXBlKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzLm5vZGVJZCwg
dGhpcy50eXBlKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiZW5h
YmxlLWNoYW5nZWQiKTsKICAgICB9LAogCiAgICAgcmVtb3ZlOiBmdW5jdGlvbigpCiAgICAgewot
ICAgICAgICBpZiAodGhpcy5fZW5hYmxlZCkKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
cmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzLm5vZGUuaWQsIHRoaXMudHlwZSk7CisgICAgICAgIGlm
ICh0aGlzLmVuYWJsZWQpCisgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlbW92ZURPTUJy
ZWFrcG9pbnQodGhpcy5ub2RlSWQsIHRoaXMudHlwZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKCJyZW1vdmVkIik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCBlMWJjNjM3Li5jNjBkNGIxIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtMTU5LDE2
ICsxNTksOCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICByZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuZm9jdXNlZERPTU5v
ZGUpIHsKLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQgPSBbXTsKLSAgICAg
ICAgICAgIHZhciBub2RlID0gdGhpcy5mb2N1c2VkRE9NTm9kZTsKLSAgICAgICAgICAgIHdoaWxl
ICgiaW5kZXgiIGluIG5vZGUgJiYgbm9kZS5ub2RlTmFtZSAmJiBub2RlLm5vZGVOYW1lLmxlbmd0
aCkgewotICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQucHVzaChub2Rl
Lm5vZGVOYW1lKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFBhdGhPblJlc2V0LnB1
c2gobm9kZS5pbmRleCk7Ci0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQucmV2
ZXJzZSgpOwotICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmZvY3VzZWRET01Ob2RlKQorICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYXRoT25SZXNldCA9IHRoaXMuZm9jdXNlZERPTU5vZGUu
cGF0aCgpOwogCiAgICAgICAgIHRoaXMucm9vdERPTU5vZGUgPSBudWxsOwogICAgICAgICB0aGlz
LmZvY3VzZWRET01Ob2RlID0gbnVsbDsKQEAgLTIyNSw3ICsyMTcsNyBAQCBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhp
cy5fc2VsZWN0ZWRQYXRoT25SZXNldCkKLSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVz
aE5vZGVCeVBhdGhUb0Zyb250ZW5kKHRoaXMuX3NlbGVjdGVkUGF0aE9uUmVzZXQuam9pbigiLCIp
LCBzZWxlY3RMYXN0U2VsZWN0ZWROb2RlLmJpbmQodGhpcykpOworICAgICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQodGhpcy5fc2VsZWN0ZWRQYXRoT25S
ZXNldCwgc2VsZWN0TGFzdFNlbGVjdGVkTm9kZS5iaW5kKHRoaXMpKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgc2VsZWN0Tm9kZS5jYWxsKHRoaXMpOwogICAgICAgICBkZWxldGUgdGhpcy5f
c2VsZWN0ZWRQYXRoT25SZXNldDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggYmEzYjMyMC4uMTAxMzFmNCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAg
LTc2NSwxNSArNzY1LDE3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKFByZWZlcmVuY2VzLmRvbUJyZWFrcG9pbnRzRW5hYmxlZCkg
ewogICAgICAgICAgICAgLy8gQWRkIGRlYmJ1Z2luZy1yZWxhdGVkIGFjdGlvbnMKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgZm9yICh2YXIg
dHlwZSBpbiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlcykgewotICAgICAgICAgICAg
ICAgIHZhciB0eXBlSWQgPSBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5UeXBlc1t0eXBlXTsK
LSAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludC5j
b250ZXh0TWVudUxhYmVsRm9yVHlwZSh0eXBlSWQpOwotICAgICAgICAgICAgICAgIHZhciBicmVh
a3BvaW50ID0gV2ViSW5zcGVjdG9yLmRvbUJyZWFrcG9pbnRNYW5hZ2VyLmZpbmRCcmVha3BvaW50
KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQsIHR5cGVJZCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFicmVha3BvaW50KQotICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxlciA9IFdlYkluc3Bl
Y3Rvci5kb21CcmVha3BvaW50TWFuYWdlci5zZXRCcmVha3BvaW50LmJpbmQoV2ViSW5zcGVjdG9y
LmRvbUJyZWFrcG9pbnRNYW5hZ2VyLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LCB0eXBlSWQpOwor
CisgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAg
ICAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQuVHlwZXMpIHsK
KyAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LlR5
cGVzW2tleV07CisgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gV2ViSW5zcGVjdG9yLkRPTUJy
ZWFrcG9pbnQuY29udGV4dE1lbnVMYWJlbEZvclR5cGUodHlwZSk7CisgICAgICAgICAgICAgICAg
dmFyIGhhc0JyZWFrcG9pbnQgPSBub2RlLmhhc0JyZWFrcG9pbnQodHlwZSk7CisgICAgICAgICAg
ICAgICAgaWYgKCFoYXNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgICAgICB2YXIgaGFuZGxl
ciA9IG5vZGUuc2V0QnJlYWtwb2ludC5iaW5kKG5vZGUsIHR5cGUpOwogICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXIgPSBicmVha3BvaW50LnJlbW92
ZS5iaW5kKGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENo
ZWNrYm94SXRlbShsYWJlbCwgaGFuZGxlciwgISFicmVha3BvaW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgdmFyIGhhbmRsZXIgPSBub2RlLnJlbW92ZUJyZWFrcG9pbnQuYmluZChub2RlLCB0eXBl
KTsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0obGFiZWws
IGhhbmRsZXIsIGhhc0JyZWFrcG9pbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCAxNmI4
ZThkLi5hOTAzM2YyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291
cmNlRnJhbWUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1l
LmpzCkBAIC01OTgsOSArNTk4LDExIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB2YXIgcG9wdXBDb250ZW50RWxlbWVudCA9IG51bGw7CiAgICAg
ICAgICAgICBpZiAocmVzdWx0LnR5cGUgIT09ICJvYmplY3QiICYmIHJlc3VsdC50eXBlICE9PSAi
bm9kZSIgJiYgcmVzdWx0LnR5cGUgIT09ICJhcnJheSIpIHsKICAgICAgICAgICAgICAgICBwb3B1
cENvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAg
ICAgICAgICAgIHBvcHVwQ29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gIm1vbm9zcGFjZSI7Cisg
ICAgICAgICAgICAgICAgcG9wdXBDb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAibW9ub3NwYWNl
IGNvbnNvbGUtZm9ybWF0dGVkLSIgKyByZXN1bHQudHlwZTsKICAgICAgICAgICAgICAgICBwb3B1
cENvbnRlbnRFbGVtZW50LnN0eWxlLndoaXRlU3BhY2UgPSAicHJlIjsKICAgICAgICAgICAgICAg
ICBwb3B1cENvbnRlbnRFbGVtZW50LnRleHRDb250ZW50ID0gcmVzdWx0LmRlc2NyaXB0aW9uOwor
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQudHlwZSA9PT0gInN0cmluZyIpCisgICAgICAgICAg
ICAgICAgICAgIHBvcHVwQ29udGVudEVsZW1lbnQudGV4dENvbnRlbnQgPSAiXCIiICsgcG9wdXBD
b250ZW50RWxlbWVudC50ZXh0Q29udGVudCArICJcIiI7CiAgICAgICAgICAgICAgICAgdGhpcy5f
cG9wdXAgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIocG9wdXBDb250ZW50RWxlbWVudCk7CiAg
ICAgICAgICAgICAgICAgdGhpcy5fcG9wdXAuc2hvdyhlbGVtZW50KTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>