<?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>32460</bug_id>
          
          <creation_ts>2009-12-11 22:38:24 -0800</creation_ts>
          <short_desc>Regression: Web inspector deletes nodes when editing css</short_desc>
          <delta_ts>2009-12-14 10:01:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Beck">davbeck</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>aroben</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dbates</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>171038</commentid>
    <comment_count>0</comment_count>
    <who name="David Beck">davbeck</who>
    <bug_when>2009-12-11 22:38:24 -0800</bug_when>
    <thetext>When you try to edit css rules in the inspector and hit the backspace, the node you are editing gets deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171160</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-12 21:59:24 -0800</bug_when>
    <thetext>Confirmed in latest nightly (r52039).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171162</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2009-12-12 22:10:26 -0800</bug_when>
    <thetext>Confirmed this is a regression. First appeared in the Mac nightly r51978. If I have some time, I will try to bisect the revisions to find the exact changset/look through recent trac changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171190</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-13 03:10:42 -0800</bug_when>
    <thetext>No need to bisect, regressed in r51961. The real reason is that Del/Backspace is being processed as a shortcut. Should be processed as an action on focused element instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171199</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-13 05:41:26 -0800</bug_when>
    <thetext>Investigation note:

The reason is that Backspace is processed in handleKeyEvent that is now being called from documents&apos; global handler. So that if any control does not mute the event via preventDefault/stopPropagation, it gets into the default handler and is processed as a shortcut. As a result, any input field nukes selected element on backspace when there is nothing to erase.

I was not familiar with our focus / key handling code before, so I explored it a bit today and was quite surprised. In particular I learned that our tree outline component is not focusable by design. And divs are not focusable by design :) As a result, &quot;Up&quot; event on elements tree is being dispatched on &quot;main-panels&quot; target. I think it is very wrong - it should be dispatched on tree outline container instead.

Most of our panels / sidebars should be focusable and support keyboard handling. It&apos;d be also nice to have proper focus traversal policy when going through the panel (like tab brings you from elements tree to the sidebar and iterates over the styles / metrics / etc. containers there).

Can we make tree outline focusable by means of tabIndex or something similar? We would then add explicit key listeners on right components and handle everything the right way. handleKeyEvent on Panel would transform into handleShortcut and would only be responsible for shortcuts, processing only unhandled events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171201</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-12-13 05:57:26 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Can we make tree outline focusable by means of tabIndex or something similar?
&gt; We would then add explicit key listeners on right components and handle
&gt; everything the right way. handleKeyEvent on Panel would transform into
&gt; handleShortcut and would only be responsible for shortcuts, processing only
&gt; unhandled events.

Yes. But it is nice that up and down arrows work in the whole Elements panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171202</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-13 06:26:29 -0800</bug_when>
    <thetext>pfeldman: anyways, i think we should agree upon the focus / keyboard thing. cos i think up/down working in entire panel is not good if for example we make styles focusable and up/down is pressed there...

xenon: if up/down work in other areas sure, otherwise i think up/down should bubble to the panel and be handled by the tree

pfeldman: i want to make all trees traversable

xenon: ok

pfeldman: from the ui standpoint, imagine now there are several focusable components on elements panel. you start on elements tree. then you press tab and focus goes to the toolbar all buttons are focusable, but we can make tabIndex -1 for them and it will be kinda single traverse step. then it gets to &quot;Styles&quot; expandable compartment. Space triggers that compartment (collapses/expands). Press tab again, you get into the Styles contents where Up/Down do their local job.

xenon: sounds fine. but toolbar should be first, then the tree, then the sidebar items. toolbar buttons should all be seperate, like a real app.

pfeldman: this brings us to the question of the focus ui identification. For trees, blue background of the selected focused node is enough. But what about &quot;Styles&quot; expandable group. How to show it has a focus?

xenon: not sure. maybe the header is brighter/colored.

pfeldman: ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171371</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-14 06:27:04 -0800</bug_when>
    <thetext>Patch info: Now all the treeoutlines are focusable, sections and their titles are also focusable. Change contains couple of drive-by fixes such as canceling of the attribute edit nuking attr info and maintaining proper selection while deleting nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171372</commentid>
    <comment_count>8</comment_count>
      <attachid>44790</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-14 06:28:18 -0800</bug_when>
    <thetext>Created attachment 44790
[PATCH] Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171374</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-14 06:33:01 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44790 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171423</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-14 08:37:19 -0800</bug_when>
    <thetext>*** Bug 32520 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171429</commentid>
    <comment_count>11</comment_count>
      <attachid>44790</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-12-14 09:05:35 -0800</bug_when>
    <thetext>Comment on attachment 44790
[PATCH] Proposed fix.

&gt; -    _promptKeyDown: function(event)
&gt; +    _onKeyDown: function(event)

I prefer the old function name or just &quot;_keyDown&quot;. The &quot;on&quot; prefixes have always bugged me. This comment applies to the whole patch.


&gt; -        // No need to call _updateTitle here, it will be called after the nodeValue is committed.
&gt; +        // Need to restore attributes / node structure.
&gt; +        this._updateTitle();

&gt; -        // No need to call _updateTitle here, the editing code will revert to the original text.
&gt; +        // Need to restore attributes structure.
&gt; +        this._updateTitle();

Does this regress attribute tabbing? I removed _updateTitle from these places to make tabbing in attributes work in: http://trac.webkit.org/changeset/50303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171440</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-14 09:39:44 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 44790 [details])
&gt; &gt; -    _promptKeyDown: function(event)
&gt; &gt; +    _onKeyDown: function(event)
&gt; 
&gt; I prefer the old function name or just &quot;_keyDown&quot;. The &quot;on&quot; prefixes have
&gt; always bugged me. This comment applies to the whole patch.
&gt; 

Done.

&gt; 
&gt; &gt; -        // No need to call _updateTitle here, it will be called after the nodeValue is committed.
&gt; &gt; +        // Need to restore attributes / node structure.
&gt; &gt; +        this._updateTitle();
&gt; 
&gt; &gt; -        // No need to call _updateTitle here, the editing code will revert to the original text.
&gt; &gt; +        // Need to restore attributes structure.
&gt; &gt; +        this._updateTitle();
&gt; 
&gt; Does this regress attribute tabbing? I removed _updateTitle from these places
&gt; to make tabbing in attributes work in: http://trac.webkit.org/changeset/50303

Yes, https://bugs.webkit.org/show_bug.cgi?id=32512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171457</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-14 10:01:18 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/front-end/CallStackSidebarPane.js
	M	WebCore/inspector/front-end/ConsoleView.js
	M	WebCore/inspector/front-end/DataGrid.js
	M	WebCore/inspector/front-end/DatabaseQueryView.js
	M	WebCore/inspector/front-end/ElementsPanel.js
	M	WebCore/inspector/front-end/ElementsTreeOutline.js
	M	WebCore/inspector/front-end/Panel.js
	M	WebCore/inspector/front-end/PropertiesSection.js
	M	WebCore/inspector/front-end/ScriptsPanel.js
	M	WebCore/inspector/front-end/SidebarPane.js
	M	WebCore/inspector/front-end/SourceFrame.js
	M	WebCore/inspector/front-end/TextPrompt.js
	M	WebCore/inspector/front-end/inspector.css
	M	WebCore/inspector/front-end/inspector.html
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/inspector/front-end/treeoutline.js
	M	WebCore/inspector/front-end/utilities.js
Committed r52099</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44790</attachid>
            <date>2009-12-14 06:28:18 -0800</date>
            <delta_ts>2009-12-14 09:05:34 -0800</delta_ts>
            <desc>[PATCH] Proposed fix.</desc>
            <filename>focus</filename>
            <type>text/plain</type>
            <size>39762</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODQ0ODNlMC4uMDAwMzVlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MyBAQAorMjAwOS0xMi0xNCAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbcmVncmVzc2lvbl0gaW5zcGVjdG9y
IGRlbGV0ZXMgbm9kZXMgd2hlbiBlZGl0aW5nCisgICAgICAgIGNzcy4KKworICAgICAgICBOb3cg
YWxsIHRoZSB0cmVlb3V0bGluZXMgYXJlIGZvY3VzYWJsZSwgc2VjdGlvbnMgYW5kIHRoZWlyIHRp
dGxlcworICAgICAgICBhcmUgYWxzbyBmb2N1c2FibGUuIENoYW5nZSBjb250YWlucyBjb3VwbGUg
b2YgZHJpdmUtYnkgZml4ZXMgc3VjaCBhcworICAgICAgICBjYW5jZWxpbmcgb2YgdGhlIGF0dHJp
YnV0ZSBlZGl0IG51a2luZyBhdHRyIGluZm8gYW5kIG1haW50YWluaW5nIHByb3BlcgorICAgICAg
ICBzZWxlY3Rpb24gd2hpbGUgZGVsZXRpbmcgbm9kZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNDYwCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZS5oYW5kbGVTaG9ydGN1dCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db25zb2xlVmlldy5wcm90b3R5cGUuX29uS2V5RG93bik6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLl9vbktleURvd24p
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VRdWVyeVZpZXcpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhdGFiYXNlUXVlcnlWaWV3LnByb3RvdHlwZS5fcHJvbXB0S2V5RG93bik6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwudGhpcy50cmVlT3V0bGluZS5mb2N1c2VkTm9kZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLmdldCBk
ZWZhdWx0Rm9jdXNlZEVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFu
ZWwucHJvdG90eXBlLmhhbmRsZVNob3J0Y3V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlT3V0bGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGlu
ZS5wcm90b3R5cGUuX29uS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3RleHROb2RlRWRpdGluZ0NvbW1pdHRlZCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUuX2VkaXRpbmdDYW5j
ZWxsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlLnNob3cpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlBhbmVsLnByb3RvdHlwZS5nZXQgZGVmYXVsdEZvY3VzZWRFbGVtZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTZWN0aW9uLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuZ2V0IGRlZmF1
bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5oYW5kbGVTaG9ydGN1dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
aWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUucHJvdG90eXBlLnRvZ2dsZUV4cGFuZGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGUuX29uVGl0bGVLZXlE
b3duKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZS5fbG9hZGVkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVGV4dFByb21wdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuY3NzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb2N1bWVudEtleURvd24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRvY3VtZW50Q2FuQ29weSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuZG9jdW1lbnRDb3B5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5fc2VhcmNoRmll
bGRNYW51YWxGb2N1cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuX3NlYXJjaEtleURvd24pOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZy5jbGVhblVwQWZ0ZXJFZGl0aW5nKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcua2V5RG93bkV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qczoKKyAgICAgICAgKFRyZWVPdXRsaW5lKToKKyAg
ICAgICAgKFRyZWVPdXRsaW5lLl9yZW1vdmVDaGlsZEF0SW5kZXgpOgorICAgICAgICAoVHJlZU91
dGxpbmUucHJvdG90eXBlLl9vblRyZWVLZXlEb3duKToKKyAgICAgICAgKFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5kZXNlbGVjdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRp
ZXMuanM6CisgICAgICAgICgpOgorCiAyMDA5LTEyLTEyICBEaXJrIFNjaHVsemUgIDxrcml0QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMgYi9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKaW5kZXgg
MmZlNDMxNS4uZGRjYTgwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcwpAQCAtMTA5LDEzICsxMDksMTIgQEAgV2ViSW5zcGVj
dG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoImNhbGwgZnJhbWUgc2VsZWN0ZWQiKTsKICAgICB9LAogCi0g
ICAgaGFuZGxlS2V5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZVNob3J0Y3V0OiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzaG9ydGN1dCA9IFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0Lm1ha2VLZXlGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICB2YXIg
aGFuZGxlciA9IHRoaXMuX3Nob3J0Y3V0c1tzaG9ydGN1dF07CiAgICAgICAgIGlmIChoYW5kbGVy
KSB7CiAgICAgICAgICAgICBoYW5kbGVyKGV2ZW50KTsKLSAgICAgICAgICAgIGV2ZW50LnByZXZl
bnREZWZhdWx0KCk7CiAgICAgICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKICAgICAgICAg
fQogICAgIH0sCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29s
ZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKaW5k
ZXggOTgxNWY0YS4uYzVmZTI2MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db25z
b2xlVmlldy5qcwpAQCAtNDUsNyArNDUsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcgPSBm
dW5jdGlvbihkcmF3ZXIpCiAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9tZXNzYWdlc0NsaWNrZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CiAKICAg
ICB0aGlzLnByb21wdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZS1w
cm9tcHQiKTsKLSAgICB0aGlzLnByb21wdEVsZW1lbnQuaGFuZGxlS2V5RXZlbnQgPSB0aGlzLl9w
cm9tcHRLZXlEb3duLmJpbmQodGhpcyk7CisgICAgdGhpcy5wcm9tcHRFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9vbktleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CiAg
ICAgdGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQodGhpcy5wcm9tcHRF
bGVtZW50LCB0aGlzLmNvbXBsZXRpb25zLmJpbmQodGhpcyksIEV4cHJlc3Npb25TdG9wQ2hhcmFj
dGVycyArICIuIik7CiAKICAgICB0aGlzLnRvcEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5Db25z
b2xlR3JvdXAobnVsbCwgMCk7CkBAIC00MDAsMjAgKzQwMCwxMyBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgIH0sCiAKLSAgICBfcHJvbXB0S2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uS2V5
RG93bjogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoaXNFbnRlcktleShldmVu
dCkpIHsKICAgICAgICAgICAgIHRoaXMuX2VudGVyS2V5UHJlc3NlZChldmVudCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNGbktleShldmVudCkpIHsK
LSAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsICYmIFdlYkluc3BlY3Rv
ci5jdXJyZW50UGFuZWwuaGFuZGxlS2V5RXZlbnQpIHsKLSAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3VycmVudFBhbmVsLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQogICAgICAgICB2YXIgc2hvcnRj
dXQgPSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5tYWtlS2V5RnJvbUV2ZW50KGV2ZW50
KTsKICAgICAgICAgdmFyIGhhbmRsZXIgPSB0aGlzLl9zaG9ydGN1dHNbc2hvcnRjdXRdOwogICAg
ICAgICBpZiAoaGFuZGxlcikgewpAQCAtNDIzLDggKzQxNiw2IEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5wcm9tcHQuaGFuZGxlS2V5RXZlbnQoZXZl
bnQpOwogICAgIH0sCiAKICAgICBldmFsSW5JbnNwZWN0ZWRXaW5kb3c6IGZ1bmN0aW9uKGV4cHJl
c3Npb24sIG9iamVjdEdyb3VwLCBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EYXRhR3JpZC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
YXRhR3JpZC5qcwppbmRleCA3YjU4YzhlLi4wYjNhOTMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGF0YUdyaWQuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RhdGFHcmlkLmpzCkBAIC0yOCw3ICsyOCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZCA9IGZ1bmN0aW9uKGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spCiAgICAg
dGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhLWdyaWQiOwogICAgIHRoaXMuZWxlbWVudC50YWJJbmRl
eCA9IDA7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlz
Ll9rZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX29uS2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAK
ICAgICB0aGlzLl9oZWFkZXJUYWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7
CiAgICAgdGhpcy5faGVhZGVyVGFibGUuY2xhc3NOYW1lID0gImhlYWRlciI7CkBAIC00NjksMTAg
KzQ2OSwxMSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLmNoaWxkcmVuID0gW107CiAgICAgfSwKIAotICAgIGhhbmRsZUtleUV2ZW50OiBmdW5jdGlv
bihldmVudCkKKworICAgIF9vbktleURvd246IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLnNlbGVjdGVkTm9kZSB8fCBldmVudC5zaGlmdEtleSB8fCBldmVudC5tZXRh
S2V5IHx8IGV2ZW50LmN0cmxLZXkgfHwgdGhpcy5fZWRpdGluZykKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgaGFuZGxlZCA9IGZh
bHNlOwogICAgICAgICB2YXIgbmV4dFNlbGVjdGVkTm9kZTsKQEAgLTU0MCw4ICs1NDEsNiBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGhhbmRsZWQ7CiAgICAgfSwKIAogICAgIGV4cGFuZDog
ZnVuY3Rpb24oKQpAQCAtNTcyLDExICs1NzEsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gcm93RWxlbWVudC5fZGF0YUdyaWROb2RlOwogICAg
IH0sCiAKLSAgICBfa2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlz
LmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKLSAgICB9LAotCiAgICAgX2NsaWNrSW5IZWFkZXJDZWxs
OiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0
LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRoIik7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcuanMKaW5kZXggZTg1YWY2Ni4uNjFi
MjM2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVl
cnlWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5
Vmlldy5qcwpAQCAtMzgsNyArMzgsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VRdWVyeVZpZXcg
PSBmdW5jdGlvbihkYXRhYmFzZSkKICAgICB0aGlzLnByb21wdEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLnByb21wdEVsZW1lbnQuY2xhc3NOYW1lID0g
ImRhdGFiYXNlLXF1ZXJ5LXByb21wdCI7CiAgICAgdGhpcy5wcm9tcHRFbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIikpOwotICAgIHRoaXMucHJvbXB0RWxlbWVu
dC5oYW5kbGVLZXlFdmVudCA9IHRoaXMuX3Byb21wdEtleURvd24uYmluZCh0aGlzKTsKKyAgICB0
aGlzLnByb21wdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3Byb21w
dEtleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMucHJvbXB0RWxlbWVudCk7CiAKICAgICB0aGlzLnByb21wdCA9IG5ldyBXZWJJbnNwZWN0
b3IuVGV4dFByb21wdCh0aGlzLnByb21wdEVsZW1lbnQsIHRoaXMuY29tcGxldGlvbnMuYmluZCh0
aGlzKSwgIiAiKTsKQEAgLTk4LDggKzk4LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlUXVlcnlW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VudGVyS2V5UHJlc3NlZChldmVu
dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICB0aGlzLnByb21w
dC5oYW5kbGVLZXlFdmVudChldmVudCk7CiAgICAgfSwKIAogICAgIF9zZWxlY3RTdGFydDogZnVu
Y3Rpb24oZXZlbnQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVs
LmpzCmluZGV4IDliMTgyNTEuLjdjNzg5MDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FbGVtZW50c1BhbmVsLmpzCkBAIC00Niw3ICs0Niw3IEBAIFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsID0gZnVuY3Rpb24oKQogICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZE5vZGVD
aGFuZ2VkID0gZnVuY3Rpb24oZm9yY2VVcGRhdGUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5w
YW5lbC52aXNpYmxlICYmIFdlYkluc3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ICE9PSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2VhcmNoIikpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3VycmVudEZvY3VzRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluLXBhbmVs
cyIpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSB0aGlz
LmVsZW1lbnQ7CiAKICAgICAgICAgdGhpcy5wYW5lbC51cGRhdGVCcmVhZGNydW1iKGZvcmNlVXBk
YXRlKTsKIApAQCAtMTI5LDYgKzEyOSwxMSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBbdGhpcy5ub2RlU2VhcmNoQnV0dG9uLmVsZW1l
bnQsIHRoaXMuY3J1bWJzRWxlbWVudF07CiAgICAgfSwKIAorICAgIGdldCBkZWZhdWx0Rm9jdXNl
ZEVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMudHJlZU91dGxpbmUuZWxlbWVu
dDsKKyAgICB9LAorCiAgICAgdXBkYXRlU3RhdHVzQmFySXRlbXM6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHRoaXMudXBkYXRlQnJlYWRjcnVtYlNpemVzKCk7CkBAIC0xMDI0LDcgKzEwMjks
NyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGV2
ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUubmVlZHNVcGRhdGUgPSBmYWxzZTsKICAgICB9LAogCi0g
ICAgaGFuZGxlS2V5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZVNob3J0Y3V0OiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIC8vIENtZC9Db250cm9sICsgU2hpZnQgKyBD
IHNob3VsZCBiZSBhIHNob3J0Y3V0IHRvIGNsaWNraW5nIHRoZSBOb2RlIFNlYXJjaCBCdXR0b24u
CiAgICAgICAgIC8vIFRoaXMgc2hvcnRjdXQgbWF0Y2hlcyBGaXJlYnVnLgpAQCAtMTAzNiwxMiAr
MTA0MSwxMCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgICAgIGlmIChpc05vZGVTZWFyY2hLZXkpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9u
b2RlU2VhcmNoQnV0dG9uQ2xpY2tlZChldmVudCk7Ci0gICAgICAgICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHRoaXMudHJlZU91dGxpbmUuaGFuZGxlS2V5RXZlbnQoZXZlbnQpOwogICAgIH0s
CiAKICAgICBoYW5kbGVDb3B5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCBhMDM1ZTdk
Li5jNjMzNDgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qcwpAQCAtNDMsNiArNDMsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlT3V0bGluZSA9IGZ1bmN0aW9uKCkgewogICAgIHRoaXMuZm9jdXNlZERPTU5vZGUgPSBudWxs
OwogCiAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhp
cy5fY29udGV4dE1lbnVFdmVudEZpcmVkLmJpbmQodGhpcyksIHRydWUpOworICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fb25LZXlEb3duLmJpbmQodGhp
cyksIHRydWUpOwogfQogCiBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5
cGUgPSB7CkBAIC0xOTEsOCArMTkyLDExIEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRs
aW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfSwKICAgICAK
LSAgICBoYW5kbGVLZXlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uS2V5RG93bjogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLnRy
ZWVPdXRsaW5lLmVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgdmFyIHNl
bGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAgaWYgKCFz
ZWxlY3RlZEVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDEsMTIgKzIwNSwxMyBA
QCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
S2V5Q29kZXMuRGVsZXRlKSB7CiAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnQucmVtb3ZlKCk7
CiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBPbiBFbnRlciBvciBSZXR1cm4gc3RhcnQgZWRpdGluZyB0aGUgZmlyc3QgYXR0cmli
dXRlCiAgICAgICAgIC8vIG9yIGNyZWF0ZSBhIG5ldyBhdHRyaWJ1dGUgb24gdGhlIHNlbGVjdGVk
IGVsZW1lbnQuCi0gICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRW50ZXIiKSB7
CisgICAgICAgIGlmIChpc0VudGVyS2V5KGV2ZW50KSkgewogICAgICAgICAgICAgaWYgKHRoaXMu
X2VkaXRpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTQsMTAgKzIxOSw5IEBA
IFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICAgICAgLy8gcHJldmVudCBhIG5ld2xpbmUgZnJvbSBiZWluZyBpbW1lZGlhdGVseSBpbnNlcnRl
ZAogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIGV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAg
ICAgICAgVHJlZU91dGxpbmUucHJvdG90eXBlLmhhbmRsZUtleUV2ZW50LmNhbGwodGhpcywgZXZl
bnQpOwogICAgIH0sCiAKICAgICBfb25tb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQpAQCAtODI5
LDE0ICs4MzMsMTYgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IG5ld1RleHQ7CiAKLSAgICAgICAg
Ly8gTm8gbmVlZCB0byBjYWxsIF91cGRhdGVUaXRsZSBoZXJlLCBpdCB3aWxsIGJlIGNhbGxlZCBh
ZnRlciB0aGUgbm9kZVZhbHVlIGlzIGNvbW1pdHRlZC4KKyAgICAgICAgLy8gTmVlZCB0byByZXN0
b3JlIGF0dHJpYnV0ZXMgLyBub2RlIHN0cnVjdHVyZS4KKyAgICAgICAgdGhpcy5fdXBkYXRlVGl0
bGUoKTsKICAgICB9LAogCiAgICAgX2VkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQs
IGNvbnRleHQpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZzsKIAotICAgICAg
ICAvLyBObyBuZWVkIHRvIGNhbGwgX3VwZGF0ZVRpdGxlIGhlcmUsIHRoZSBlZGl0aW5nIGNvZGUg
d2lsbCByZXZlcnQgdG8gdGhlIG9yaWdpbmFsIHRleHQuCisgICAgICAgIC8vIE5lZWQgdG8gcmVz
dG9yZSBhdHRyaWJ1dGVzIHN0cnVjdHVyZS4KKyAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsK
ICAgICB9LAogCiAgICAgX3VwZGF0ZVRpdGxlOiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUGFuZWwuanMKaW5kZXggZDgxNmNlNS4uOTVjZTZiNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9QYW5lbC5qcwpAQCAtODEsNyArODEsNyBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICBpZiAoIl90b29sYmFySXRlbSIgaW4gdGhpcykKICAgICAgICAg
ICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmFkZFN0eWxlQ2xhc3MoInRvZ2dsZWQtb24iKTsKIAotICAg
ICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3VzRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJtYWluLXBhbmVscyIpOworICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3Vz
RWxlbWVudCA9IHRoaXMuZGVmYXVsdEZvY3VzZWRFbGVtZW50OwogCiAgICAgICAgIHRoaXMudXBk
YXRlU2lkZWJhcldpZHRoKCk7CiAgICAgfSwKQEAgLTk3LDYgKzk3LDExIEBAIFdlYkluc3BlY3Rv
ci5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl90b29sYmFySXRlbS5yZW1v
dmVTdHlsZUNsYXNzKCJ0b2dnbGVkLW9uIik7CiAgICAgfSwKIAorICAgIGdldCBkZWZhdWx0Rm9j
dXNlZEVsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuc2lkZWJhclRyZWVFbGVt
ZW50IHx8IHRoaXMuZWxlbWVudDsKKyAgICB9LAorCiAgICAgYXR0YWNoOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuZWxlbWVudC5wYXJlbnROb2RlKQpAQCAtMjc0LDE3ICsy
NzksNiBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3Vy
cmVudFZpZXcuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQoKTsKICAgICB9LAogCi0gICAgaGFu
ZGxlS2V5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5oYW5kbGVT
aWRlYmFyS2V5RXZlbnQoZXZlbnQpOwotICAgIH0sCi0KLSAgICBoYW5kbGVTaWRlYmFyS2V5RXZl
bnQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuaGFzU2lkZWJhciAm
JiB0aGlzLnNpZGViYXJUcmVlKQotICAgICAgICAgICAgdGhpcy5zaWRlYmFyVHJlZS5oYW5kbGVL
ZXlFdmVudChldmVudCk7Ci0gICAgfSwKLQogICAgIGNyZWF0ZVNpZGViYXI6IGZ1bmN0aW9uKHBh
cmVudEVsZW1lbnQsIHJlc2l6ZXJQYXJlbnRFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuaGFzU2lkZWJhcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Q
cm9wZXJ0aWVzU2VjdGlvbi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9wZXJ0
aWVzU2VjdGlvbi5qcwppbmRleCBhNGIyZmJhLi43ZGI0OTZiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvcGVydGllc1NlY3Rpb24uanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb3BlcnRpZXNTZWN0aW9uLmpzCkBAIC00Nyw2ICs0Nyw3IEBA
IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRs
ZSkKIAogICAgIHRoaXMucHJvcGVydGllc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJvbCIpOwogICAgIHRoaXMucHJvcGVydGllc0VsZW1lbnQuY2xhc3NOYW1lID0gInByb3BlcnRp
ZXMiOworICAgIHRoaXMucHJvcGVydGllc0VsZW1lbnQudGFiSW5kZXggPSAwOwogICAgIHRoaXMu
cHJvcGVydGllc1RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKHRoaXMucHJvcGVydGllc0Vs
ZW1lbnQpOwogICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLnNlY3Rpb24gPSB0aGlzOwog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpz
IGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA4YjMx
YThiLi43ZjliN2VhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanMKQEAgLTU2LDcgKzU2LDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0
aW9uKCkKICAgICB0aGlzLmZpbGVzU2VsZWN0RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJh
ci1pdGVtIjsKICAgICB0aGlzLmZpbGVzU2VsZWN0RWxlbWVudC5pZCA9ICJzY3JpcHRzLWZpbGVz
IjsKICAgICB0aGlzLmZpbGVzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2Ui
LCB0aGlzLl9jaGFuZ2VWaXNpYmxlRmlsZS5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5m
aWxlc1NlbGVjdEVsZW1lbnQuaGFuZGxlS2V5RXZlbnQgPSB0aGlzLmhhbmRsZUtleUV2ZW50LmJp
bmQodGhpcyk7CiAgICAgdGhpcy50b3BTdGF0dXNCYXIuYXBwZW5kQ2hpbGQodGhpcy5maWxlc1Nl
bGVjdEVsZW1lbnQpOwogCiAgICAgdGhpcy5mdW5jdGlvbnNTZWxlY3RFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CkBAIC0yMDgsNiArMjA3LDExIEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gW3RoaXMuZW5h
YmxlVG9nZ2xlQnV0dG9uLmVsZW1lbnQsIHRoaXMucGF1c2VPbkV4Y2VwdGlvbkJ1dHRvbi5lbGVt
ZW50XTsKICAgICB9LAogCisgICAgZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5maWxlc1NlbGVjdEVsZW1lbnQ7CisgICAgfSwKKwogICAgIGdl
dCBwYXVzZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhdXNlZDsKQEAgLTUxNSwx
NyArNTE5LDE1IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZSgodmlldy5yZXNvdXJjZSB8fCB2aWV3LnNj
cmlwdCkpOwogICAgIH0sCiAKLSAgICBoYW5kbGVLZXlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgaGFuZGxlU2hvcnRjdXQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNo
b3J0Y3V0ID0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQubWFrZUtleUZyb21FdmVudChl
dmVudCk7CiAgICAgICAgIHZhciBoYW5kbGVyID0gdGhpcy5fc2hvcnRjdXRzW3Nob3J0Y3V0XTsK
ICAgICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICAgICAgIGhhbmRsZXIoZXZlbnQpOwotICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50LmhhbmRs
ZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhpcy5zaWRlYmFyUGFu
ZXMuY2FsbHN0YWNrLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKLSAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuc2lkZWJhclBhbmVzLmNhbGxzdGFjay5oYW5kbGVTaG9y
dGN1dChldmVudCk7CiAgICAgfSwKIAogICAgIHNjcmlwdFZpZXdGb3JTY3JpcHQ6IGZ1bmN0aW9u
KHNjcmlwdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFy
UGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaWRlYmFyUGFuZS5qcwppbmRl
eCBhZjllNWY5Li44NTU4OTRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpZGVi
YXJQYW5lLmpzCkBAIC0zMyw3ICszMyw5IEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZSA9IGZ1
bmN0aW9uKHRpdGxlKQogCiAgICAgdGhpcy50aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKICAgICB0aGlzLnRpdGxlRWxlbWVudC5jbGFzc05hbWUgPSAidGl0bGUi
OworICAgIHRoaXMudGl0bGVFbGVtZW50LnRhYkluZGV4ID0gMDsKICAgICB0aGlzLnRpdGxlRWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMudG9nZ2xlRXhwYW5kZWQuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgIHRoaXMudGl0bGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCB0aGlzLl9vblRpdGxlS2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAgICB0
aGlzLmJvZHlFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhp
cy5ib2R5RWxlbWVudC5jbGFzc05hbWUgPSAiYm9keSI7CkBAIC0xMTksNiArMTIxLDEyIEBAIFdl
Ykluc3BlY3Rvci5TaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgdG9nZ2xlRXhwYW5kZWQ6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRl
ZDsKKyAgICB9LAorCisgICAgX29uVGl0bGVLZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICB7
CisgICAgICAgIGlmIChpc0VudGVyS2V5KGV2ZW50KSB8fCBldmVudC5rZXlDb2RlID09PSBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlDb2Rlcy5TcGFjZSkKKyAgICAgICAgICAgIHRo
aXMudG9nZ2xlRXhwYW5kZWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZS5qcwppbmRleCBiNWNmNGMwLi4xMDk1MTVhIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC0yMDMsNyArMjAzLDYgQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50
LmNvbnRlbnREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2Rv
Y3VtZW50Q29udGV4dE1lbnUuYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5jb250ZW50RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fZG9j
dW1lbnRNb3VzZURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5j
b250ZW50RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2RvY3VtZW50
S2V5RG93bi5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICAgICAgdGhpcy5lbGVtZW50LmNvbnRlbnRE
b2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsIFdlYkluc3BlY3Rvci5kb2N1bWVudEtl
eVVwLmJpbmQoV2ViSW5zcGVjdG9yKSwgdHJ1ZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5jb250
ZW50RG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgdGhpcy5f
aGlnaGxpZ2h0TGluZUVuZHMuYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgICAgIC8vIFJlZ2lz
dGVyICdldmFsJyBzaG9ydGN1dC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9UZXh0UHJvbXB0LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRQcm9t
cHQuanMKaW5kZXggMjIzMGVhYS4uODU1NGEyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1RleHRQcm9tcHQuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1RleHRQcm9tcHQuanMKQEAgLTMzLDYgKzMzLDcgQEAgV2ViSW5zcGVjdG9yLlRleHRQcm9t
cHQgPSBmdW5jdGlvbihlbGVtZW50LCBjb21wbGV0aW9ucywgc3RvcENoYXJhY3RlcnMpCiAgICAg
dGhpcy5jb21wbGV0aW9uU3RvcENoYXJhY3RlcnMgPSBzdG9wQ2hhcmFjdGVyczsKICAgICB0aGlz
Lmhpc3RvcnkgPSBbXTsKICAgICB0aGlzLmhpc3RvcnlPZmZzZXQgPSAwOworICAgIHRoaXMuZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fb25LZXlEb3duLmJpbmQodGhp
cyksIHRydWUpOwogfQogCiBXZWJJbnNwZWN0b3IuVGV4dFByb21wdC5wcm90b3R5cGUgPSB7CkBA
IC01Myw3ICs1NCw3IEBAIFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5tb3ZlQ2FyZXRUb0VuZE9mUHJvbXB0KCk7CiAgICAgfSwKIAotICAgIGhhbmRs
ZUtleUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfb25LZXlEb3duOiBmdW5jdGlvbihldmVu
dCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGRlZmF1bHRBY3Rpb24oKQogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IDdjYWU4YjIuLjY3
ZjhlYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
Y3NzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0x
MDQ3LDcgKzEwNDcsNyBAQCBib2R5LmRyYXdlci12aXNpYmxlICNkcmF3ZXIgewogICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigyMTIsIDIxMiwgMjEyKTsKIH0KIAotOmZvY3VzIC5vdXRsaW5lLWRp
c2Nsb3N1cmUgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbiB7Cisub3V0bGluZS1kaXNjbG9zdXJlIG9s
OmZvY3VzIGxpLnNlbGVjdGVkIC5zZWxlY3Rpb24gewogICAgIGJhY2tncm91bmQtY29sb3I6IHJn
Yig1NiwgMTIxLCAyMTcpOwogfQogCkBAIC0xMDc1LDExICsxMDc1LDExIEBAIGJvZHkuZHJhd2Vy
LXZpc2libGUgI2RyYXdlciB7CiAgICAgdGV4dC1pbmRlbnQ6IC0ycHgKIH0KIAotOmZvY3VzIC5v
dXRsaW5lLWRpc2Nsb3N1cmUgbGkuc2VsZWN0ZWQgeworLm91dGxpbmUtZGlzY2xvc3VyZSBvbDpm
b2N1cyBsaS5zZWxlY3RlZCB7CiAgICAgY29sb3I6IHdoaXRlOwogfQogCi06Zm9jdXMgLm91dGxp
bmUtZGlzY2xvc3VyZSBsaS5zZWxlY3RlZCAqIHsKKy5vdXRsaW5lLWRpc2Nsb3N1cmUgb2w6Zm9j
dXMgbGkuc2VsZWN0ZWQgKiB7CiAgICAgY29sb3I6IGluaGVyaXQ7CiB9CiAKQEAgLTExMDQsNyAr
MTEwNCw3IEBAIGJvZHkuZHJhd2VyLXZpc2libGUgI2RyYXdlciB7CiAgICAgY29udGVudDogdXJs
KEltYWdlcy90cmVlUmlnaHRUcmlhbmdsZUJsYWNrLnBuZyk7CiB9CiAKLTpmb2N1cyAub3V0bGlu
ZS1kaXNjbG9zdXJlIGxpLnBhcmVudC5zZWxlY3RlZDo6YmVmb3JlIHsKKy5vdXRsaW5lLWRpc2Ns
b3N1cmUgb2w6Zm9jdXMgbGkucGFyZW50LnNlbGVjdGVkOjpiZWZvcmUgewogICAgIGNvbnRlbnQ6
IHVybChJbWFnZXMvdHJlZVJpZ2h0VHJpYW5nbGVXaGl0ZS5wbmcpOwogfQogCkBAIC0xMTEyLDcg
KzExMTIsNyBAQCBib2R5LmRyYXdlci12aXNpYmxlICNkcmF3ZXIgewogICAgIGNvbnRlbnQ6IHVy
bChJbWFnZXMvdHJlZURvd25UcmlhbmdsZUJsYWNrLnBuZyk7CiB9CiAKLTpmb2N1cyAub3V0bGlu
ZS1kaXNjbG9zdXJlIGxpLnBhcmVudC5leHBhbmRlZC5zZWxlY3RlZDo6YmVmb3JlIHsKKy5vdXRs
aW5lLWRpc2Nsb3N1cmUgb2w6Zm9jdXMgbGkucGFyZW50LmV4cGFuZGVkLnNlbGVjdGVkOjpiZWZv
cmUgewogICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvdHJlZURvd25UcmlhbmdsZVdoaXRlLnBuZyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
aHRtbCBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAppbmRleCA3
N2M3NzYwLi5jMjA3MGUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5odG1sCkBAIC0xMTIsNyArMTEyLDcgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAgICAgICAgPGRpdiBjbGFzcz0i
dG9vbGJhci1pdGVtIGNsb3NlLXJpZ2h0Ij48YnV0dG9uIGlkPSJjbG9zZS1idXR0b24tcmlnaHQi
PjwvYnV0dG9uPjwvZGl2PgogICAgIDwvZGl2PgogICAgIDxkaXYgaWQ9Im1haW4iPgotICAgICAg
ICA8ZGl2IGlkPSJtYWluLXBhbmVscyIgdGFiaW5kZXg9IjAiIHNwZWxsY2hlY2s9ImZhbHNlIj48
L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0ibWFpbi1wYW5lbHMiIHNwZWxsY2hlY2s9ImZhbHNlIj48
L2Rpdj4KICAgICAgICAgPGRpdiBpZD0ibWFpbi1zdGF0dXMtYmFyIiBjbGFzcz0ic3RhdHVzLWJh
ciI+PGRpdiBpZD0iYW5jaG9yZWQtc3RhdHVzLWJhci1pdGVtcyI+PGJ1dHRvbiBpZD0iZG9jay1z
dGF0dXMtYmFyLWl0ZW0iIGNsYXNzPSJzdGF0dXMtYmFyLWl0ZW0iPjxkaXYgY2xhc3M9ImdseXBo
Ij48L2Rpdj48ZGl2IGNsYXNzPSJnbHlwaCBzaGFkb3ciPjwvZGl2PjwvYnV0dG9uPjxidXR0b24g
aWQ9ImNvbnNvbGUtc3RhdHVzLWJhci1pdGVtIiBjbGFzcz0ic3RhdHVzLWJhci1pdGVtIj48ZGl2
IGNsYXNzPSJnbHlwaCI+PC9kaXY+PGRpdiBjbGFzcz0iZ2x5cGggc2hhZG93Ij48L2Rpdj48L2J1
dHRvbj48YnV0dG9uIGlkPSJjaGFuZ2VzLXN0YXR1cy1iYXItaXRlbSIgY2xhc3M9InN0YXR1cy1i
YXItaXRlbSBoaWRkZW4iPjwvYnV0dG9uPjxkaXYgaWQ9ImNvdW50LWl0ZW1zIj48ZGl2IGlkPSJj
aGFuZ2VzLWNvdW50IiBjbGFzcz0iaGlkZGVuIj48L2Rpdj48ZGl2IGlkPSJlcnJvci13YXJuaW5n
LWNvdW50IiBjbGFzcz0iaGlkZGVuIj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4KICAgICA8L2Rp
dj4KICAgICA8ZGl2IGlkPSJkcmF3ZXIiPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKaW5kZXggM2YyMWY0Zi4uMjBkOGMzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00NzUsMjAgKzQ3NSwxMSBAQCBXZWJJbnNwZWN0b3IubG9h
ZGVkID0gZnVuY3Rpb24oKQogICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0
aGlzLndpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpLCB0cnVlKTsKIAogICAgIGRvY3VtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5mb2N1c0NoYW5nZWQuYmluZCh0aGlzKSwgdHJ1ZSk7
Ci0gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuZG9jdW1lbnRL
ZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwotICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImtleXVwIiwgdGhpcy5kb2N1bWVudEtleVVwLmJpbmQodGhpcyksIHRydWUpOworICAgIGRvY3Vt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLmRvY3VtZW50S2V5RG93bi5iaW5k
KHRoaXMpLCBmYWxzZSk7CiAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmVmb3JlY29w
eSIsIHRoaXMuZG9jdW1lbnRDYW5Db3B5LmJpbmQodGhpcyksIHRydWUpOwogICAgIGRvY3VtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImNvcHkiLCB0aGlzLmRvY3VtZW50Q29weS5iaW5kKHRoaXMpLCB0
cnVlKTsKICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMu
Y29udGV4dE1lbnVFdmVudEZpcmVkLmJpbmQodGhpcyksIHRydWUpOwogCi0gICAgdmFyIG1haW5Q
YW5lbHNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4tcGFuZWxzIik7Ci0g
ICAgbWFpblBhbmVsc0VsZW1lbnQuaGFuZGxlQ29weUV2ZW50ID0gdGhpcy5tYWluQ29weS5iaW5k
KHRoaXMpOwotCi0gICAgLy8gRm9jdXMgdGhlIG1haW5QYW5lbHNFbGVtZW50IGluIGEgdGltZW91
dCBzbyBpdCBoYXBwZW5zIGFmdGVyIHRoZSBpbml0aWFsIGZvY3VzLAotICAgIC8vIHNvIGl0IGRv
ZXNuJ3QgZ2V0IHJlc2V0IHRvIHRoZSBmaXJzdCB0b29sYmFyIGJ1dHRvbi4gVGhpcyBpbml0aWFs
IGZvY3VzIGhhcHBlbnMKLSAgICAvLyBvbiBNYWMgd2hlbiB0aGUgd2luZG93IGlzIG1hZGUga2V5
IGFuZCB0aGUgV2ViSFRNTFZpZXcgYmVjb21lcyB0aGUgZmlyc3QgcmVzcG9uZGVyLgotICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IFdlYkluc3BlY3Rvci5jdXJyZW50Rm9jdXNFbGVtZW50ID0g
bWFpblBhbmVsc0VsZW1lbnQgfSwgMCk7Ci0KICAgICB2YXIgZG9ja1RvZ2dsZUJ1dHRvbiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJkb2NrLXN0YXR1cy1iYXItaXRlbSIpOwogICAgIGRvY2tU
b2dnbGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLnRvZ2dsZUF0dGFjaC5i
aW5kKHRoaXMpLCBmYWxzZSk7CiAKQEAgLTUwOSw3ICs1MDAsOCBAQCBXZWJJbnNwZWN0b3IubG9h
ZGVkID0gZnVuY3Rpb24oKQogCiAgICAgdmFyIHNlYXJjaEZpZWxkID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInNlYXJjaCIpOwogICAgIHNlYXJjaEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoInNl
YXJjaCIsIHRoaXMucGVyZm9ybVNlYXJjaC5iaW5kKHRoaXMpLCBmYWxzZSk7IC8vIHdoZW4gdGhl
IHNlYXJjaCBpcyBlbXB0aWVkCi0gICAgc2VhcmNoRmllbGQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5zZWFyY2hGaWVsZE1hbnVhbEZvY3VzLmJpbmQodGhpcyksIGZhbHNlKTsg
Ly8gd2hlbiB0aGUgc2VhcmNoIGZpZWxkIGlzIG1hbnVhbGx5IHNlbGVjdGVkCisgICAgc2VhcmNo
RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fc2VhcmNoRmllbGRNYW51
YWxGb2N1cy5iaW5kKHRoaXMpLCBmYWxzZSk7IC8vIHdoZW4gdGhlIHNlYXJjaCBmaWVsZCBpcyBt
YW51YWxseSBzZWxlY3RlZAorICAgIHNlYXJjaEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCB0aGlzLl9zZWFyY2hLZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwogCiAgICAgdG9vbGJh
ckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy50b29sYmFyRHJhZ1N0
YXJ0LCB0cnVlKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xvc2UtYnV0dG9uLWxl
ZnQiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuY2xvc2UsIHRydWUpOwpAQCAtNjM4
LDEzMSArNjMwLDEwMiBAQCBXZWJJbnNwZWN0b3IuZG9jdW1lbnRDbGljayA9IGZ1bmN0aW9uKGV2
ZW50KQogCiBXZWJJbnNwZWN0b3IuZG9jdW1lbnRLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpCiB7
Ci0gICAgaWYgKHRoaXMuY3VycmVudEZvY3VzRWxlbWVudCkgewotICAgICAgICBpZiAodGhpcy5j
dXJyZW50Rm9jdXNFbGVtZW50LmhhbmRsZUtleUV2ZW50KQotICAgICAgICAgICAgdGhpcy5jdXJy
ZW50Rm9jdXNFbGVtZW50LmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKLSAgICAgICAgZWxzZSBpZiAo
dGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50LmlkICYmIHRoaXMuY3VycmVudEZvY3VzRWxlbWVudC5p
ZC5sZW5ndGggJiYgV2ViSW5zcGVjdG9yW3RoaXMuY3VycmVudEZvY3VzRWxlbWVudC5pZCArICJL
ZXlEb3duIl0pCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3JbdGhpcy5jdXJyZW50Rm9jdXNFbGVt
ZW50LmlkICsgIktleURvd24iXShldmVudCk7Ci0gICAgICAgIGlmIChldmVudC5oYW5kbGVkKQor
ICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCAmJiB0aGlzLmN1cnJlbnRQYW5lbC5oYW5kbGVTaG9y
dGN1dCkgeworICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5oYW5kbGVTaG9ydGN1dChldmVudCk7
CisgICAgICAgIGlmIChldmVudC5oYW5kbGVkKSB7CisgICAgICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKHRoaXMuY3VycmVudFBhbmVsICYmIHRoaXMuY3VycmVudFBhbmVsLmhhbmRsZUtleUV2ZW50
KQotICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5oYW5kbGVLZXlFdmVudChldmVudCk7Ci0KLSAg
ICBpZiAoIWV2ZW50LmhhbmRsZWQpIHsKLSAgICAgICAgdmFyIGlzTWFjID0gV2ViSW5zcGVjdG9y
LmlzTWFjKCk7Ci0KLSAgICAgICAgc3dpdGNoIChldmVudC5rZXlJZGVudGlmaWVyKSB7Ci0gICAg
ICAgICAgICBjYXNlICJVKzAwMUIiOiAvLyBFc2NhcGUga2V5Ci0gICAgICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5kcmF3ZXIuZnVs
bFBhbmVsKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgdmFyIGlzTWFjID0gV2Vi
SW5zcGVjdG9yLmlzTWFjKCk7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmRyYXdlci52aXNpYmxl
ID0gIXRoaXMuZHJhd2VyLnZpc2libGU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgc3dp
dGNoIChldmVudC5rZXlJZGVudGlmaWVyKSB7CisgICAgICAgIGNhc2UgIlUrMDAxQiI6IC8vIEVz
Y2FwZSBrZXkKKyAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAg
ICBpZiAodGhpcy5kcmF3ZXIuZnVsbFBhbmVsKQorICAgICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICAgICAgY2FzZSAiVSswMDQ2IjogLy8gRiBrZXkKLSAgICAgICAgICAgICAgICBpZiAo
aXNNYWMpCi0gICAgICAgICAgICAgICAgICAgIHZhciBpc0ZpbmRLZXkgPSBldmVudC5tZXRhS2V5
ICYmICFldmVudC5jdHJsS2V5ICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LnNoaWZ0S2V5Owot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlzRmluZEtleSA9
IGV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleSAmJiAhZXZl
bnQuc2hpZnRLZXk7CisgICAgICAgICAgICB0aGlzLmRyYXdlci52aXNpYmxlID0gIXRoaXMuZHJh
d2VyLnZpc2libGU7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGlmIChp
c0ZpbmRLZXkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHNlYXJjaEZpZWxkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNlYXJjaCIpOwotICAgICAgICAgICAgICAgICAgICBzZWFyY2hG
aWVsZC5mb2N1cygpOwotICAgICAgICAgICAgICAgICAgICBzZWFyY2hGaWVsZC5zZWxlY3QoKTsK
LSAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgIGNhc2UgIlUrMDA0NiI6IC8vIEYga2V5CisgICAgICAgICAgICBpZiAo
aXNNYWMpCisgICAgICAgICAgICAgICAgdmFyIGlzRmluZEtleSA9IGV2ZW50Lm1ldGFLZXkgJiYg
IWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleSAmJiAhZXZlbnQuc2hpZnRLZXk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFyIGlzRmluZEtleSA9IGV2ZW50LmN0cmxL
ZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleSAmJiAhZXZlbnQuc2hpZnRLZXk7
CiAKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChpc0ZpbmRLZXkpIHsK
KyAgICAgICAgICAgICAgICB2YXIgc2VhcmNoRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgic2VhcmNoIik7CisgICAgICAgICAgICAgICAgc2VhcmNoRmllbGQuZm9jdXMoKTsKKyAgICAg
ICAgICAgICAgICBzZWFyY2hGaWVsZC5zZWxlY3QoKTsKKyAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlICJVKzAw
NDciOiAvLyBHIGtleQotICAgICAgICAgICAgICAgIGlmIChpc01hYykKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIGlzRmluZEFnYWluS2V5ID0gZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuY3RybEtl
eSAmJiAhZXZlbnQuYWx0S2V5OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIGlzRmluZEFnYWluS2V5ID0gZXZlbnQuY3RybEtleSAmJiAhZXZlbnQubWV0YUtl
eSAmJiAhZXZlbnQuYWx0S2V5OwotCi0gICAgICAgICAgICAgICAgaWYgKGlzRmluZEFnYWluS2V5
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFBhbmVsLmp1bXBUb1ByZXZpb3VzU2VhcmNo
UmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmp1
bXBUb1ByZXZpb3VzU2VhcmNoUmVzdWx0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAodGhpcy5jdXJyZW50UGFuZWwuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmp1bXBUb05leHRTZWFyY2hSZXN1bHQoKTsK
LSAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlICJVKzAwNDciOiAvLyBHIGtleQorICAgICAgICAgICAgaWYgKGlzTWFjKQorICAg
ICAgICAgICAgICAgIHZhciBpc0ZpbmRBZ2FpbktleSA9IGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50
LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB2YXIgaXNGaW5kQWdhaW5LZXkgPSBldmVudC5jdHJsS2V5ICYmICFldmVudC5tZXRhS2V5
ICYmICFldmVudC5hbHRLZXk7CisKKyAgICAgICAgICAgIGlmIChpc0ZpbmRBZ2FpbktleSkgewor
ICAgICAgICAgICAgICAgIGlmIChldmVudC5zaGlmdEtleSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAodGhpcy5jdXJyZW50UGFuZWwuanVtcFRvUHJldmlvdXNTZWFyY2hSZXN1bHQpCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5qdW1wVG9QcmV2aW91c1NlYXJj
aFJlc3VsdCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50UGFuZWwu
anVtcFRvTmV4dFNlYXJjaFJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50
UGFuZWwuanVtcFRvTmV4dFNlYXJjaFJlc3VsdCgpOworICAgICAgICAgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFdpbmRvd3Mg
YW5kIE1hYyBoYXZlIHR3byBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2YgWywgc28gYWNjZXB0IGJv
dGguCi0gICAgICAgICAgICBjYXNlICJVKzAwNUIiOgotICAgICAgICAgICAgY2FzZSAiVSswMERC
IjogLy8gWyBrZXkKLSAgICAgICAgICAgICAgICBpZiAoaXNNYWMpCi0gICAgICAgICAgICAgICAg
ICAgIHZhciBpc1JvdGF0ZUxlZnQgPSBldmVudC5tZXRhS2V5ICYmICFldmVudC5zaGlmdEtleSAm
JiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5OwotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgdmFyIGlzUm90YXRlTGVmdCA9IGV2ZW50LmN0cmxLZXkgJiYg
IWV2ZW50LnNoaWZ0S2V5ICYmICFldmVudC5tZXRhS2V5ICYmICFldmVudC5hbHRLZXk7CisgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGlmIChpc1JvdGF0ZUxlZnQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5wYW5lbE9yZGVyLmluZGV4T2YodGhp
cy5jdXJyZW50UGFuZWwpOwotICAgICAgICAgICAgICAgICAgICBpbmRleCA9IChpbmRleCA9PT0g
MCkgPyB0aGlzLnBhbmVsT3JkZXIubGVuZ3RoIC0gMSA6IGluZGV4IC0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5wYW5lbE9yZGVyW2luZGV4XS50b29sYmFySXRlbS5jbGljaygpOwotICAg
ICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgLy8gV2luZG93cyBhbmQgTWFjIGhhdmUgdHdvIGRpZmZlcmVudCBkZWZpbml0
aW9ucyBvZiBbLCBzbyBhY2NlcHQgYm90aC4KKyAgICAgICAgY2FzZSAiVSswMDVCIjoKKyAgICAg
ICAgY2FzZSAiVSswMERCIjogLy8gWyBrZXkKKyAgICAgICAgICAgIGlmIChpc01hYykKKyAgICAg
ICAgICAgICAgICB2YXIgaXNSb3RhdGVMZWZ0ID0gZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuc2hp
ZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB2YXIgaXNSb3RhdGVMZWZ0ID0gZXZlbnQuY3RybEtleSAmJiAh
ZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleTsKIAotICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKGlzUm90YXRlTGVmdCkgeworICAg
ICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMucGFuZWxPcmRlci5pbmRleE9mKHRoaXMuY3Vy
cmVudFBhbmVsKTsKKyAgICAgICAgICAgICAgICBpbmRleCA9IChpbmRleCA9PT0gMCkgPyB0aGlz
LnBhbmVsT3JkZXIubGVuZ3RoIC0gMSA6IGluZGV4IC0gMTsKKyAgICAgICAgICAgICAgICB0aGlz
LnBhbmVsT3JkZXJbaW5kZXhdLnRvb2xiYXJJdGVtLmNsaWNrKCk7CisgICAgICAgICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8g
V2luZG93cyBhbmQgTWFjIGhhdmUgdHdvIGRpZmZlcmVudCBkZWZpbml0aW9ucyBvZiBdLCBzbyBh
Y2NlcHQgYm90aC4KLSAgICAgICAgICAgIGNhc2UgIlUrMDA1RCI6Ci0gICAgICAgICAgICBjYXNl
ICJVKzAwREQiOiAgLy8gXSBrZXkKLSAgICAgICAgICAgICAgICBpZiAoaXNNYWMpCi0gICAgICAg
ICAgICAgICAgICAgIHZhciBpc1JvdGF0ZVJpZ2h0ID0gZXZlbnQubWV0YUtleSAmJiAhZXZlbnQu
c2hpZnRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50LmFsdEtleTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhciBpc1JvdGF0ZVJpZ2h0ID0gZXZlbnQu
Y3RybEtleSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFs
dEtleTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgaWYgKGlzUm90YXRl
UmlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5wYW5lbE9yZGVy
LmluZGV4T2YodGhpcy5jdXJyZW50UGFuZWwpOwotICAgICAgICAgICAgICAgICAgICBpbmRleCA9
IChpbmRleCArIDEpICUgdGhpcy5wYW5lbE9yZGVyLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5wYW5lbE9yZGVyW2luZGV4XS50b29sYmFySXRlbS5jbGljaygpOwotICAgICAgICAg
ICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgLy8gV2luZG93cyBhbmQgTWFjIGhhdmUgdHdvIGRpZmZlcmVudCBkZWZpbml0aW9ucyBv
ZiBdLCBzbyBhY2NlcHQgYm90aC4KKyAgICAgICAgY2FzZSAiVSswMDVEIjoKKyAgICAgICAgY2Fz
ZSAiVSswMEREIjogIC8vIF0ga2V5CisgICAgICAgICAgICBpZiAoaXNNYWMpCisgICAgICAgICAg
ICAgICAgdmFyIGlzUm90YXRlUmlnaHQgPSBldmVudC5tZXRhS2V5ICYmICFldmVudC5zaGlmdEtl
eSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0S2V5OworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHZhciBpc1JvdGF0ZVJpZ2h0ID0gZXZlbnQuY3RybEtleSAmJiAhZXZl
bnQuc2hpZnRLZXkgJiYgIWV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmFsdEtleTsKIAotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQorICAgICAgICAgICAgaWYgKGlz
Um90YXRlUmlnaHQpIHsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLnBhbmVsT3Jk
ZXIuaW5kZXhPZih0aGlzLmN1cnJlbnRQYW5lbCk7CisgICAgICAgICAgICAgICAgaW5kZXggPSAo
aW5kZXggKyAxKSAlIHRoaXMucGFuZWxPcmRlci5sZW5ndGg7CisgICAgICAgICAgICAgICAgdGhp
cy5wYW5lbE9yZGVyW2luZGV4XS50b29sYmFySXRlbS5jbGljaygpOworICAgICAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5k
b2N1bWVudEtleVVwID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgaWYgKHRoaXMuY3VycmVudEZv
Y3VzRWxlbWVudCkgewotICAgICAgICBpZiAodGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50LmhhbmRs
ZUtleVVwRXZlbnQpCi0gICAgICAgICAgICB0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQuaGFuZGxl
S2V5VXBFdmVudChldmVudCk7Ci0gICAgICAgIGlmIChldmVudC5oYW5kbGVkKQotICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgaWYgKHRoaXMuY3Vy
cmVudFBhbmVsICYmIHRoaXMuY3VycmVudFBhbmVsLmhhbmRsZUtleVVwRXZlbnQpCi0gICAgICAg
IHRoaXMuY3VycmVudFBhbmVsLmhhbmRsZUtleVVwRXZlbnQoZXZlbnQpOwogfQogCiBXZWJJbnNw
ZWN0b3IuZG9jdW1lbnRDYW5Db3B5ID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgaWYgKCF0aGlz
LmN1cnJlbnRGb2N1c0VsZW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBDYWxsaW5nIHBy
ZXZlbnREZWZhdWx0KCkgd2lsbCBzYXkgIndlIHN1cHBvcnQgY29weWluZywgc28gZW5hYmxlIHRo
ZSBDb3B5IG1lbnUiLgotICAgIGlmICh0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQuaGFuZGxlQ29w
eUV2ZW50KQotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIGVsc2UgaWYgKHRo
aXMuY3VycmVudEZvY3VzRWxlbWVudC5pZCAmJiB0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQuaWQu
bGVuZ3RoICYmIFdlYkluc3BlY3Rvclt0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQuaWQgKyAiQ29w
eSJdKQotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgIHJldHVybiB0aGlzLmN1
cnJlbnRQYW5lbCAmJiB0aGlzLmN1cnJlbnRQYW5lbC5oYW5kbGVDb3B5RXZlbnQ7CiB9CiAKIFdl
Ykluc3BlY3Rvci5kb2N1bWVudENvcHkgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICBpZiAoIXRo
aXMuY3VycmVudEZvY3VzRWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICh0aGlzLmN1
cnJlbnRGb2N1c0VsZW1lbnQuaGFuZGxlQ29weUV2ZW50KQotICAgICAgICB0aGlzLmN1cnJlbnRG
b2N1c0VsZW1lbnQuaGFuZGxlQ29weUV2ZW50KGV2ZW50KTsKLSAgICBlbHNlIGlmICh0aGlzLmN1
cnJlbnRGb2N1c0VsZW1lbnQuaWQgJiYgdGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50LmlkLmxlbmd0
aCAmJiBXZWJJbnNwZWN0b3JbdGhpcy5jdXJyZW50Rm9jdXNFbGVtZW50LmlkICsgIkNvcHkiXSkK
LSAgICAgICAgV2ViSW5zcGVjdG9yW3RoaXMuY3VycmVudEZvY3VzRWxlbWVudC5pZCArICJDb3B5
Il0oZXZlbnQpOworICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCAmJiB0aGlzLmN1cnJlbnRQYW5l
bC5oYW5kbGVDb3B5RXZlbnQpCisgICAgICAgIHRoaXMuY3VycmVudFBhbmVsLmhhbmRsZUNvcHlF
dmVudChldmVudCk7CiB9CiAKIFdlYkluc3BlY3Rvci5jb250ZXh0TWVudUV2ZW50RmlyZWQgPSBm
dW5jdGlvbihldmVudCkKQEAgLTc3MSwxMiArNzM0LDYgQEAgV2ViSW5zcGVjdG9yLmNvbnRleHRN
ZW51RXZlbnRGaXJlZCA9IGZ1bmN0aW9uKGV2ZW50KQogICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwogfQogCi1XZWJJbnNwZWN0b3IubWFpbkNvcHkgPSBmdW5jdGlvbihldmVudCkKLXsK
LSAgICBpZiAodGhpcy5jdXJyZW50UGFuZWwgJiYgdGhpcy5jdXJyZW50UGFuZWwuaGFuZGxlQ29w
eUV2ZW50KQotICAgICAgICB0aGlzLmN1cnJlbnRQYW5lbC5oYW5kbGVDb3B5RXZlbnQoZXZlbnQp
OwotfQotCiBXZWJJbnNwZWN0b3IuYW5pbWF0ZVN0eWxlID0gZnVuY3Rpb24oYW5pbWF0aW9ucywg
ZHVyYXRpb24sIGNhbGxiYWNrKQogewogICAgIHZhciBpbnRlcnZhbDsKQEAgLTE1MzYsMjAgKzE0
OTMsMjMgQEAgV2ViSW5zcGVjdG9yLmFkZE1haW5FdmVudExpc3RlbmVycyA9IGZ1bmN0aW9uKGRv
YykKICAgICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmRvY3VtZW50Q2xpY2su
YmluZCh0aGlzKSwgdHJ1ZSk7CiB9CiAKLVdlYkluc3BlY3Rvci5zZWFyY2hGaWVsZE1hbnVhbEZv
Y3VzID0gZnVuY3Rpb24oZXZlbnQpCitXZWJJbnNwZWN0b3IuX3NlYXJjaEZpZWxkTWFudWFsRm9j
dXMgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICB0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQgPSBl
dmVudC50YXJnZXQ7CiAgICAgdGhpcy5fcHJldmlvdXNGb2N1c0VsZW1lbnQgPSBldmVudC50YXJn
ZXQ7CiB9CiAKLVdlYkluc3BlY3Rvci5zZWFyY2hLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpCitX
ZWJJbnNwZWN0b3IuX3NlYXJjaEtleURvd24gPSBmdW5jdGlvbihldmVudCkKIHsKICAgICAvLyBF
c2NhcGUgS2V5IHdpbGwgY2xlYXIgdGhlIGZpZWxkIGFuZCBjbGVhciB0aGUgc2VhcmNoIHJlc3Vs
dHMKICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQuS2V5Q29kZXMuRXNjKSB7CisgICAgICAgIC8vIElmIGZvY3VzIGJlbG9uZ3MgaGVyZSBhbmQg
dGV4dCBpcyBlbXB0eSAtIG5vdGhpbmcgdG8gZG8sIHJldHVybiB1bmhhbmRsZWQuCisgICAgICAg
IGlmIChldmVudC50YXJnZXQudmFsdWUgPT09ICIiICYmIHRoaXMuY3VycmVudEZvY3VzRWxlbWVu
dCA9PT0gdGhpcy5wcmV2aW91c0ZvY3VzRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCk7CiAgICAgICAgIC8vIFdoZW4gc2VhcmNoIHdhcyBzZWxlY3RlZCBtYW51YWxseSBhbmQg
aXMgY3VycmVudGx5IGJsYW5rLCB3ZSdkIGxpa2UgRXNjIHN0YXkgdW5oYW5kbGVkCiAgICAgICAg
IC8vIGFuZCBoaXQgY29uc29sZSBkcmF3ZXIgaGFuZGxlci4KLSAgICAgICAgZXZlbnQuaGFuZGxl
ZCA9ICEodGhpcy5wcmV2aW91c0ZvY3VzRWxlbWVudCA9PT0gZXZlbnQudGFyZ2V0ICYmIGV2ZW50
LnRhcmdldC52YWx1ZSA9PT0gIiIpOwogICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAiIjsK
IAogICAgICAgICB0aGlzLnBlcmZvcm1TZWFyY2goZXZlbnQpOwpAQCAtMTU1NywxMCArMTUxNyw2
IEBAIFdlYkluc3BlY3Rvci5zZWFyY2hLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAg
IGlmICh0aGlzLmN1cnJlbnRGb2N1c0VsZW1lbnQgPT09IGV2ZW50LnRhcmdldCkKICAgICAgICAg
ICAgIHRoaXMuY3VycmVudEZvY3VzRWxlbWVudC5zZWxlY3QoKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuS2V5Q29kZXMuQmFja3NwYWNlIHx8Ci0gICAgICAgICAgICAgICBldmVudC5r
ZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXlDb2Rlcy5EZWxldGUp
IHsKLSAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICBpZiAoIWlzRW50ZXJLZXkoZXZlbnQpKQpAQCAtMTcwNCw3ICsxNjYwLDYg
QEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbW1pdHRl
ZENhbGxiYWNrLCBjYW5jZWxsZWRDYWxsYmEKICAgICBlbGVtZW50Ll9fZWRpdGluZyA9IHRydWU7
CiAKICAgICB2YXIgb2xkVGV4dCA9IGdldENvbnRlbnQoZWxlbWVudCk7Ci0gICAgdmFyIG9sZEhh
bmRsZUtleUV2ZW50ID0gZWxlbWVudC5oYW5kbGVLZXlFdmVudDsKICAgICB2YXIgbW92ZURpcmVj
dGlvbiA9ICIiOwogCiAgICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJlZGl0aW5nIik7CkBAIC0x
NzMyLDggKzE2ODcsOCBAQCBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nID0gZnVuY3Rpb24oZWxl
bWVudCwgY29tbWl0dGVkQ2FsbGJhY2ssIGNhbmNlbGxlZENhbGxiYQogICAgICAgICB0aGlzLnNj
cm9sbFRvcCA9IDA7CiAgICAgICAgIHRoaXMuc2Nyb2xsTGVmdCA9IDA7CiAKLSAgICAgICAgdGhp
cy5oYW5kbGVLZXlFdmVudCA9IG9sZEhhbmRsZUtleUV2ZW50OwogICAgICAgICBlbGVtZW50LnJl
bW92ZUV2ZW50TGlzdGVuZXIoImJsdXIiLCBibHVyRXZlbnRMaXN0ZW5lciwgZmFsc2UpOworICAg
ICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBrZXlEb3duRXZlbnRM
aXN0ZW5lciwgdHJ1ZSk7CiAKICAgICAgICAgaWYgKGVsZW1lbnQgPT09IFdlYkluc3BlY3Rvci5j
dXJyZW50Rm9jdXNFbGVtZW50IHx8IGVsZW1lbnQuaXNBbmNlc3RvcihXZWJJbnNwZWN0b3IuY3Vy
cmVudEZvY3VzRWxlbWVudCkpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3VycmVudEZvY3Vz
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5wcmV2aW91c0ZvY3VzRWxlbWVudDsKQEAgLTE3NTgsMjYg
KzE3MTMsMjEgQEAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQs
IGNvbW1pdHRlZENhbGxiYWNrLCBjYW5jZWxsZWRDYWxsYmEKICAgICAgICAgICAgIGNvbW1pdHRl
ZENhbGxiYWNrKHRoaXMsIGdldENvbnRlbnQodGhpcyksIG9sZFRleHQsIGNvbnRleHQsIG1vdmVE
aXJlY3Rpb24pOwogICAgIH0KIAotICAgIGVsZW1lbnQuaGFuZGxlS2V5RXZlbnQgPSBmdW5jdGlv
bihldmVudCkgewotICAgICAgICBpZiAob2xkSGFuZGxlS2V5RXZlbnQpCi0gICAgICAgICAgICBv
bGRIYW5kbGVLZXlFdmVudChldmVudCk7Ci0gICAgICAgIGlmIChldmVudC5oYW5kbGVkKQotICAg
ICAgICAgICAgcmV0dXJuOwotCisgICAgZnVuY3Rpb24ga2V5RG93bkV2ZW50TGlzdGVuZXIoZXZl
bnQpIHsKICAgICAgICAgaWYgKGlzRW50ZXJLZXkoZXZlbnQpKSB7CiAgICAgICAgICAgICBlZGl0
aW5nQ29tbWl0dGVkLmNhbGwoZWxlbWVudCk7CiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwogICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgICAg
ICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2Rl
ID09PSAyNykgeyAvLyBFc2NhcGUga2V5CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5Q29k
ZSA9PT0gV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5Q29kZXMuRXNjKSB7CiAgICAg
ICAgICAgICBlZGl0aW5nQ2FuY2VsbGVkLmNhbGwoZWxlbWVudCk7CiAgICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwotICAgICAgICAgICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7Cisg
ICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgfSBlbHNlIGlmIChl
dmVudC5rZXlJZGVudGlmaWVyID09PSAiVSswMDA5IikgLy8gVGFiIGtleQogICAgICAgICAgICAg
bW92ZURpcmVjdGlvbiA9IChldmVudC5zaGlmdEtleSA/ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCIp
OwogICAgIH0KIAogICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIGJsdXJFdmVu
dExpc3RlbmVyLCBmYWxzZSk7CisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3du
Iiwga2V5RG93bkV2ZW50TGlzdGVuZXIsIHRydWUpOwogCiAgICAgV2ViSW5zcGVjdG9yLmN1cnJl
bnRGb2N1c0VsZW1lbnQgPSBlbGVtZW50OwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3RyZWVvdXRsaW5lLmpzCmluZGV4IDJjZGUxNTEuLjc4Y2RlNmQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMKQEAgLTQwLDYgKzQwLDkgQEAgZnVuY3Rpb24g
VHJlZU91dGxpbmUobGlzdE5vZGUpCiAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7CiAgICAgdGhp
cy5zZWxlY3RlZCA9IGZhbHNlOwogICAgIHRoaXMudHJlZU91dGxpbmUgPSB0aGlzOworCisgICAg
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS50YWJJbmRleCA9IDA7CisgICAgdGhpcy5fY2hpbGRyZW5M
aXN0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fb25UcmVlS2V5RG93bi5i
aW5kKHRoaXMpLCB0cnVlKTsKIH0KIAogVHJlZU91dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0
SWRlbnRpZmllciA9IDE7CkBAIC0xNDEsNyArMTQ0LDE1IEBAIFRyZWVPdXRsaW5lLl9yZW1vdmVD
aGlsZEF0SW5kZXggPSBmdW5jdGlvbihjaGlsZEluZGV4KQogICAgIHZhciBjaGlsZCA9IHRoaXMu
Y2hpbGRyZW5bY2hpbGRJbmRleF07CiAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoY2hpbGRJbmRl
eCwgMSk7CiAKLSAgICBjaGlsZC5kZXNlbGVjdCgpOworICAgIHZhciBwYXJlbnQgPSBjaGlsZC5w
YXJlbnQ7CisgICAgaWYgKGNoaWxkLmRlc2VsZWN0KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkLnBy
ZXZpb3VzU2libGluZykKKyAgICAgICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZy5zZWxlY3Qo
KTsKKyAgICAgICAgZWxzZSBpZiAoY2hpbGQubmV4dFNpYmxpbmcpCisgICAgICAgICAgICBjaGls
ZC5uZXh0U2libGluZy5zZWxlY3QoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyZW50
LnNlbGVjdCgpOworICAgIH0KIAogICAgIGlmIChjaGlsZC5wcmV2aW91c1NpYmxpbmcpCiAgICAg
ICAgIGNoaWxkLnByZXZpb3VzU2libGluZy5uZXh0U2libGluZyA9IGNoaWxkLm5leHRTaWJsaW5n
OwpAQCAtMzI3LDEwICszMzgsMTMgQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLnRyZWVFbGVtZW50
RnJvbVBvaW50ID0gZnVuY3Rpb24oeCwgeSkKICAgICByZXR1cm4gbnVsbDsKIH0KIAotVHJlZU91
dGxpbmUucHJvdG90eXBlLmhhbmRsZUtleUV2ZW50ID0gZnVuY3Rpb24oZXZlbnQpCitUcmVlT3V0
bGluZS5wcm90b3R5cGUuX29uVHJlZUtleURvd24gPSBmdW5jdGlvbihldmVudCkKIHsKKyAgICBp
ZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCB8fCBldmVudC5zaGlmdEtl
eSB8fCBldmVudC5tZXRhS2V5IHx8IGV2ZW50LmN0cmxLZXkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdmFyIGhhbmRsZWQgPSBmYWxzZTsKICAgICB2YXIg
bmV4dFNlbGVjdGVkRWxlbWVudDsKQEAgLTM4Niw4ICs0MDAsNiBAQCBUcmVlT3V0bGluZS5wcm90
b3R5cGUuaGFuZGxlS2V5RXZlbnQgPSBmdW5jdGlvbihldmVudCkKICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgfQot
Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CiB9CiAKIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5leHBhbmQg
PSBmdW5jdGlvbigpCkBAIC03NzUsNyArNzg3LDcgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLnNl
bGVjdCA9IGZ1bmN0aW9uKHN1cHJlc3NPblNlbGVjdCkKIFRyZWVFbGVtZW50LnByb3RvdHlwZS5k
ZXNlbGVjdCA9IGZ1bmN0aW9uKHN1cHJlc3NPbkRlc2VsZWN0KQogewogICAgIGlmICghdGhpcy50
cmVlT3V0bGluZSB8fCB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgIT09IHRo
aXMgfHwgIXRoaXMuc2VsZWN0ZWQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOwogICAgIHRoaXMudHJlZU91dGxpbmUu
c2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7CkBAIC03ODQsNiArNzk2LDcgQEAgVHJlZUVsZW1l
bnQucHJvdG90eXBlLmRlc2VsZWN0ID0gZnVuY3Rpb24oc3VwcmVzc09uRGVzZWxlY3QpCiAKICAg
ICBpZiAodGhpcy5vbmRlc2VsZWN0ICYmICFzdXByZXNzT25EZXNlbGVjdCkKICAgICAgICAgdGhp
cy5vbmRlc2VsZWN0KHRoaXMpOworICAgIHJldHVybiB0cnVlOwogfQogCiBUcmVlRWxlbWVudC5w
cm90b3R5cGUudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwSGlkZGVuLCBz
dGF5V2l0aGluLCBkb250UG9wdWxhdGUsIGluZm8pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcwppbmRleCAwNGM5MDMyLi43YTMzNTJjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAgLTgzMyw3ICs4MzMsMyBAQCBmdW5jdGlvbiBpc0Vu
dGVyS2V5KGV2ZW50KSB7CiAgICAgLy8gQ2hlY2sgaWYgaW4gSU1FLgogICAgIHJldHVybiBldmVu
dC5rZXlDb2RlICE9PSAyMjkgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkVudGVyIjsKIH0K
LQotZnVuY3Rpb24gaXNGbktleShldmVudCkgewotICAgIHJldHVybiBldmVudC5rZXlDb2RlID49
IDExMiAmJiBldmVudC5rZXlDb2RlIDw9IDEyMzsKLX0K
</data>
<flag name="review"
          id="26700"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>