<?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>127328</bug_id>
          
          <creation_ts>2014-01-20 18:42:56 -0800</creation_ts>
          <short_desc>Web Inspector: Move the Popover code out of the Breakpoint model object</short_desc>
          <delta_ts>2015-08-31 15:39:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970106</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-01-20 18:42:56 -0800</bug_when>
    <thetext>The popover and DOM code in Breakpoint.js should move out and into a new class. This is a layering violation. Maybe BreakpointEditingController?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980846</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-14 09:52:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/16070891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121747</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-28 10:51:15 -0700</bug_when>
    <thetext>The context menu code should move too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122131</commentid>
    <comment_count>3</comment_count>
      <attachid>260275</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-30 22:45:06 -0700</bug_when>
    <thetext>Created attachment 260275
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122221</commentid>
    <comment_count>4</comment_count>
      <attachid>260275</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-31 11:13:51 -0700</bug_when>
    <thetext>Comment on attachment 260275
[Patch] Proposed Fix

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

Better, but I think this needs to be a controller that owns the Popover.

&gt; Source/WebInspectorUI/UserInterface/Views/BreakpointPopoverView.js:117
&gt; +            let popover = new WebInspector.Popover();
&gt; +            let popoverView = new WebInspector.BreakpointPopoverView(breakpoint, popover);
&gt; +            popover.delegate = popoverView;
&gt; +            popover.content = popoverView.element;

It is a bit odd that BreakpointPopoverView takes the popover and then popover.content and popover.delegate end up pointing to popoverView.

That makes BreakpointPopoverView more of a controller. That would likely let you internalize this.

&gt; Source/WebInspectorUI/UserInterface/Views/BreakpointPopoverView.js:297
&gt; +WebInspector.BreakpointPopoverView.PopoverClassName = &quot;edit-breakpoint-popover-content&quot;;

Any single use class names we have just been inlining them as strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122237</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-31 11:50:08 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 260275 [details]
&gt; [Patch] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260275&amp;action=review
&gt; 
&gt; Better, but I think this needs to be a controller that owns the Popover.
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/BreakpointPopoverView.js:117
&gt; &gt; +            let popover = new WebInspector.Popover();
&gt; &gt; +            let popoverView = new WebInspector.BreakpointPopoverView(breakpoint, popover);
&gt; &gt; +            popover.delegate = popoverView;
&gt; &gt; +            popover.content = popoverView.element;
&gt; 
&gt; It is a bit odd that BreakpointPopoverView takes the popover and then
&gt; popover.content and popover.delegate end up pointing to popoverView.
&gt; 
&gt; That makes BreakpointPopoverView more of a controller. That would likely let
&gt; you internalize this.

Yeah this is pretty awkward. A controller class is better suited to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122297</commentid>
    <comment_count>6</comment_count>
      <attachid>260317</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-31 14:27:06 -0700</bug_when>
    <thetext>Created attachment 260317
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122304</commentid>
    <comment_count>7</comment_count>
      <attachid>260317</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-08-31 14:41:17 -0700</bug_when>
    <thetext>Comment on attachment 260317
[Patch] Proposed Fix

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

Nice!

&gt; Source/WebInspectorUI/UserInterface/Views/SourceCodeTextEditor.js:50
&gt; +        this._breakpointPopoverController = new WebInspector.BreakpointPopoverController();

Drop the ().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122313</commentid>
    <comment_count>8</comment_count>
      <attachid>260322</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-08-31 15:15:04 -0700</bug_when>
    <thetext>Created attachment 260322
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122318</commentid>
    <comment_count>9</comment_count>
      <attachid>260322</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-31 15:39:52 -0700</bug_when>
    <thetext>Comment on attachment 260322
[Patch] Proposed Fix

Clearing flags on attachment: 260322

Committed r189189: &lt;http://trac.webkit.org/changeset/189189&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1122319</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-31 15:39:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260275</attachid>
            <date>2015-08-30 22:45:06 -0700</date>
            <delta_ts>2015-08-31 14:27:04 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-127328-20150830224449.patch</filename>
            <type>text/plain</type>
            <size>40789</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
ZmE1MGZmYThjNWQxODhkNGE4YjIxODEyZmUwZTFjMDhlNmQ4OWU3Li41Njg5ZmRlNzVjZjE5MzJm
OWQzMTc5ZWI2ZDQ0MzI2YWU0OWM0NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNS0wOC0zMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSB0aGUgUG9wb3ZlciBjb2RlIG91dCBvZiB0
aGUgQnJlYWtwb2ludCBtb2RlbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgIEFk
ZGVkIGFuZCB1cGRhdGVkIGZpbGUgcGF0aHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01v
ZGVscy9CcmVha3BvaW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJv
dG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMuZWRpdEJyZWFrcG9pbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmFwcGVuZENvbnRleHRN
ZW51SXRlbXMucmVtb3ZlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcy50b2dnbGVCcmVh
a3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3Rv
dHlwZS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLnRvZ2dsZUF1dG9Db250aW51ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYXBwZW5kQ29udGV4
dE1lbnVJdGVtcy5yZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1l
bnVJdGVtcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90
b3R5cGUuX3BvcG92ZXJUb2dnbGVFbmFibGVkQ2hlY2tib3hDaGFuZ2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5fcG9wb3ZlckNvbmRpdGlv
bklucHV0Q2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5wcm90b3R5cGUuX3BvcG92ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLl9wb3Bv
dmVyQ29uZGl0aW9uSW5wdXRLZXlEb3duKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LnByb3RvdHlwZS5fZWRpdEJyZWFrcG9pbnRQb3BvdmVyQ29udGVudEVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBl
Ll9wb3BvdmVyQWN0aW9uc0NyZWF0ZUFkZEFjdGlvbkJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuX3BvcG92ZXJBY3Rpb25zQWRkQWN0
aW9uQnV0dG9uQ2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludC5wcm90b3R5cGUuX3BvcG92ZXJBY3Rpb25zSW5zZXJ0QnJlYWtwb2ludEFjdGlvblZpZXcp
OiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmJy
ZWFrcG9pbnRBY3Rpb25WaWV3QXBwZW5kQWN0aW9uVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYnJlYWtwb2ludEFjdGlvblZpZXdSZW1v
dmVBY3Rpb25WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50
LnByb3RvdHlwZS5icmVha3BvaW50QWN0aW9uVmlld1Jlc2l6ZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLndpbGxEaXNtaXNzUG9wb3Zlcik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuZGlk
RGlzbWlzc1BvcG92ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQucHJvdG90eXBlLl9zaG93RWRpdEJyZWFrcG9pbnRQb3BvdmVyKTogRGVsZXRlZC4KKyAgICAg
ICAgUmVtb3ZlZCB2aWV3IGxvZ2ljLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9C
cmVha3BvaW50UG9wb3ZlclZpZXcuY3NzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludC5jc3MuCisgICAgICAgICgucG9wb3Zl
ciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCk6CisgICAgICAgICgucG9wb3ZlciAu
ZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudC53aWRlKToKKyAgICAgICAgKC5wb3BvdmVy
IC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gbGFiZWwudG9nZ2xlKToKKyAgICAg
ICAgKC5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gdGFibGUpOgor
ICAgICAgICAoLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQgPiB0YWJs
ZSA+IHRyID4gdGgpOgorICAgICAgICAoLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVy
LWNvbnRlbnQgPiB0YWJsZSA+IHRyID4gdGQpOgorICAgICAgICAoI2VkaXQtYnJlYWtwb2ludC1w
b3BvdmVyLWNvbmRpdGlvbik6CisgICAgICAgICgjZWRpdC1icmVha3BvaW50LXBvcG9vdmVyLWF1
dG8tY29udGludWUpOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50
UG9wb3ZlclZpZXcuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQ
b3BvdmVyVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3
LmFwcGVuZENvbnRleHRNZW51SXRlbXMuZWRpdEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLnJlbW92
ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmll
dy5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLnRvZ2dsZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLnRv
Z2dsZUF1dG9Db250aW51ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92
ZXJWaWV3LmFwcGVuZENvbnRleHRNZW51SXRlbXMucmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5hcHBl
bmRDb250ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9w
b3ZlclZpZXcucHJvdG90eXBlLmdldCBlbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5C
cmVha3BvaW50UG9wb3ZlclZpZXcucHJvdG90eXBlLnNldCBwb3BvdmVyKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlclZpZXcucHJvdG90eXBlLl9wb3BvdmVyVG9nZ2xl
RW5hYmxlZENoZWNrYm94Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dFBvcG92ZXJWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckNvbmRpdGlvbklucHV0Q2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3LnByb3RvdHlwZS5fcG9w
b3ZlclRvZ2dsZUF1dG9Db250aW51ZUNoZWNrYm94Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckNvbmRpdGlvbklu
cHV0S2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3
LnByb3RvdHlwZS5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5wcm90b3R5cGUuX3BvcG92ZXJB
Y3Rpb25zQWRkQWN0aW9uQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludFBvcG92ZXJWaWV3LnByb3RvdHlwZS5fcG9wb3ZlckFjdGlvbnNJbnNlcnRCcmVha3Bv
aW50QWN0aW9uVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJW
aWV3LnByb3RvdHlwZS5icmVha3BvaW50QWN0aW9uVmlld0FwcGVuZEFjdGlvblZpZXcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5wcm90b3R5cGUuYnJlYWtw
b2ludEFjdGlvblZpZXdSZW1vdmVBY3Rpb25WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5C
cmVha3BvaW50UG9wb3ZlclZpZXcucHJvdG90eXBlLmJyZWFrcG9pbnRBY3Rpb25WaWV3UmVzaXpl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3LnByb3RvdHlw
ZS53aWxsRGlzbWlzc1BvcG92ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQ
b3BvdmVyVmlldy5wcm90b3R5cGUuZGlkRGlzbWlzc1BvcG92ZXIpOgorICAgICAgICBBZGRlZCBu
ZXcgY2xhc3MgdG8gZW5jYXBzdWxhdGUgYWxsIHZpZXcgbG9naWMgcHJldmlvdXNseSBsb2NhdGVk
IGluIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgVXBkYXRlZCB0byB1c2UgQnJl
YWtwb2ludFBvcG92ZXJWaWV3LgorCiAyMDE1LTA4LTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogImFuaW1hdGlvbkVuZCIg
ZXZlbnQgbmFtZXMgc2hvdWxkIGJlICJhbmltYXRpb25lbmQiIChicm9rZW4gZGFzaGJvYXJkIGFu
aW1hdGlvbiBhZnRlciBwYXVzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01haW4uaHRtbAppbmRleCAwYjBkYzAwMTE0MGMyNmQ2ZGRkMmY5N2NiODdlMjk1NjQxODM5
MzJjLi41NmM3OWQzNWM1NzNiNTBhY2Q2OWM0YzE3ZGU0YTUzZTdlMTc1MDExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0zNCw4ICszNCw4
IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9BcHBsaWNhdGlvbkNh
Y2hlSWNvbnMuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0Jl
emllckVkaXRvci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
Qm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5jc3MiPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvQnJlYWtwb2ludC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuY3NzIj4KKyAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0JyZWFrcG9pbnRQb3BvdmVyVmlldy5jc3MiPgogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9CdXR0b25OYXZp
Z2F0aW9uSXRlbS5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3Mv
QnV0dG9uVG9vbGJhckl0ZW0uY3NzIj4KQEAgLTM5OSw2ICszOTksNyBAQAogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9CZXppZXJFZGl0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9CcmVha3BvaW50UG9wb3ZlclZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9CdXR0b25Ub29sYmFySXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0JyZWFrcG9pbnQuanMKaW5kZXggMGNkZjNlNDZiZjMzZmE3M2ViMTA3YmJiMTVjNWYwOTM0
ZmNkZGYxYi4uZDUxOGY3MTQ0NDVmYWIyNDFhYjY4Mjg4OGMzNTVhYjUwM2Q4ZmQxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9p
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Jy
ZWFrcG9pbnQuanMKQEAgLTIxMyw2MiArMjEzLDYgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQg
PSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0
aGlzLmRpc2FibGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBhcHBlbmRDb250ZXh0TWVudUl0ZW1z
KGNvbnRleHRNZW51LCBicmVha3BvaW50RGlzcGxheUVsZW1lbnQpCi0gICAgewotICAgICAgICBj
b25zb2xlLmFzc2VydChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGJyZWFrcG9pbnREaXNwbGF5RWxl
bWVudCksICJicmVha3BvaW50IHBvcG92ZXIgZGlzcGxheSBlbGVtZW50IG11c3QgYmUgaW4gdGhl
IERPTSIpOwotCi0gICAgICAgIHZhciBib3VuZGluZ0NsaWVudFJlY3QgPSBicmVha3BvaW50RGlz
cGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0KLSAgICAgICAgZnVuY3Rpb24g
ZWRpdEJyZWFrcG9pbnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9zaG93RWRpdEJy
ZWFrcG9pbnRQb3BvdmVyKGJvdW5kaW5nQ2xpZW50UmVjdCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiByZW1vdmVCcmVha3BvaW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHRoaXMpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQnJlYWtwb2ludCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSAhdGhpcy5kaXNhYmxlZDsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUF1dG9Db250aW51ZSgpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHRoaXMuYXV0b0NvbnRpbnVlID0gIXRoaXMuYXV0b0NvbnRpbnVlOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnVuY3Rpb24gcmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRT
b3VyY2VDb2RlTG9jYXRpb24odGhpcy5fc291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludEVk
aXRhYmxlKHRoaXMpKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkVkaXQgQnJlYWtwb2ludOKApiIpLCBlZGl0QnJlYWtwb2ludC5iaW5k
KHRoaXMpKTsKLQotICAgICAgICBpZiAodGhpcy5hdXRvQ29udGludWUgJiYgIXRoaXMuZGlzYWJs
ZWQpIHsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMp
KTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDYW5jZWwgQXV0b21hdGljIENvbnRpbnVlIiksIHRvZ2dsZUF1dG9Db250aW51ZS5iaW5k
KHRoaXMpKTsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCkKLSAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJy
ZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkVuYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAg
ICAgICAgaWYgKCF0aGlzLmF1dG9Db250aW51ZSAmJiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmFj
dGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlNldCB0byBBdXRvbWF0aWNhbGx5IENvbnRpbnVlIiksIHRvZ2dsZUF1
dG9Db250aW51ZS5iaW5kKHRoaXMpKTsKLQotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUodGhpcykpIHsKLSAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksIHJlbW92
ZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKLSAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5hbCBSZXNvdXJj
ZSIpLCByZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbi5iaW5kKHRoaXMpKTsKLSAgICAg
ICAgfQotICAgIH0KLQogICAgIGNyZWF0ZUFjdGlvbih0eXBlLCBwcmVjZWRpbmdBY3Rpb24sIGRh
dGEpCiAgICAgewogICAgICAgICB2YXIgbmV3QWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50QWN0aW9uKHRoaXMsIHR5cGUsIGRhdGEgfHwgbnVsbCk7CkBAIC0zNTksMjExICszMDMs
NiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiBhY3Rpb25zOwogICAgIH0KIAotICAg
IF9wb3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNrYm94Q2hhbmdlZChldmVudCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuZGlzYWJsZWQgPSAhZXZlbnQudGFyZ2V0LmNoZWNrZWQ7Ci0gICAgfQotCi0gICAg
X3BvcG92ZXJDb25kaXRpb25JbnB1dENoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlz
LmNvbmRpdGlvbiA9IGV2ZW50LnRhcmdldC52YWx1ZTsKLSAgICB9Ci0KLSAgICBfcG9wb3ZlclRv
Z2dsZUF1dG9Db250aW51ZUNoZWNrYm94Q2hhbmdlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuYXV0b0NvbnRpbnVlID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7Ci0gICAgfQotCi0gICAgX3Bv
cG92ZXJDb25kaXRpb25JbnB1dEtleURvd24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhp
cy5fa2V5Ym9hcmRTaG9ydGN1dEVzYy5tYXRjaGVzRXZlbnQoZXZlbnQpIHx8IHRoaXMuX2tleWJv
YXJkU2hvcnRjdXRFbnRlci5tYXRjaGVzRXZlbnQoZXZlbnQpKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9wb3BvdmVyLmRpc21pc3MoKTsKLSAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OwotICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIF9lZGl0QnJlYWtwb2ludFBvcG92ZXJDb250ZW50RWxlbWVudCgpCi0gICAgewotICAg
ICAgICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJDbGFzc05hbWU7Ci0KLSAgICAgICAgdmFyIGNoZWNr
Ym94RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICAgIGNo
ZWNrYm94RWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKLSAgICAgICAgY2hlY2tib3hFbGVtZW50
LmNoZWNrZWQgPSAhdGhpcy5fZGlzYWJsZWQ7Ci0gICAgICAgIGNoZWNrYm94RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9wb3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNrYm94
Q2hhbmdlZC5iaW5kKHRoaXMpKTsKLQotICAgICAgICB2YXIgY2hlY2tib3hMYWJlbCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7Ci0gICAgICAgIGNoZWNrYm94TGFiZWwuY2xhc3NO
YW1lID0gInRvZ2dsZSI7Ci0gICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kQ2hpbGQoY2hlY2ti
b3hFbGVtZW50KTsKLSAgICAgICAgY2hlY2tib3hMYWJlbC5hcHBlbmQodGhpcy5fc291cmNlQ29k
ZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygpKTsKLQotICAgICAgICB2YXIgdGFibGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotCi0gICAgICAgIHZhciBjb25kaXRp
b25Sb3cgPSB0YWJsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsK
LSAgICAgICAgdmFyIGNvbmRpdGlvbkhlYWRlciA9IGNvbmRpdGlvblJvdy5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKLSAgICAgICAgdmFyIGNvbmRpdGlvbkRhdGEg
PSBjb25kaXRpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7
Ci0gICAgICAgIHZhciBjb25kaXRpb25MYWJlbCA9IGNvbmRpdGlvbkhlYWRlci5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKLSAgICAgICAgdmFyIGNvbmRpdGlv
bklucHV0ID0gY29uZGl0aW9uRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbnB1dCIpKTsKLSAgICAgICAgY29uZGl0aW9uSW5wdXQuaWQgPSBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5Qb3BvdmVyQ29uZGl0aW9uSW5wdXRJZDsKLSAgICAgICAgY29uZGl0aW9uSW5wdXQu
dmFsdWUgPSB0aGlzLl9jb25kaXRpb24gfHwgIiI7Ci0gICAgICAgIGNvbmRpdGlvbklucHV0LnNw
ZWxsY2hlY2sgPSBmYWxzZTsKLSAgICAgICAgY29uZGl0aW9uSW5wdXQuYWRkRXZlbnRMaXN0ZW5l
cigiY2hhbmdlIiwgdGhpcy5fcG9wb3ZlckNvbmRpdGlvbklucHV0Q2hhbmdlZC5iaW5kKHRoaXMp
KTsKLSAgICAgICAgY29uZGl0aW9uSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRo
aXMuX3BvcG92ZXJDb25kaXRpb25JbnB1dEtleURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIGNv
bmRpdGlvbklucHV0LnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25kaXRp
b25hbCBleHByZXNzaW9uIik7Ci0gICAgICAgIGNvbmRpdGlvbkxhYmVsLnNldEF0dHJpYnV0ZSgi
Zm9yIiwgY29uZGl0aW9uSW5wdXQuaWQpOwotICAgICAgICBjb25kaXRpb25MYWJlbC50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uZGl0aW9uIik7Ci0KLSAgICAgICAgLy8g
Q09NUEFUSUJJTElUWSAoaU9TIDcpOiBEZWJ1Z2dlci5zZXRCcmVha3BvaW50IGRpZCBub3Qgc3Vw
cG9ydCBvcHRpb25zLgotICAgICAgICBpZiAoRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50LnN1
cHBvcnRzKCJvcHRpb25zIikpIHsKLSAgICAgICAgICAgIHZhciBhY3Rpb25Sb3cgPSB0YWJsZS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKLSAgICAgICAgICAgIHZh
ciBhY3Rpb25IZWFkZXIgPSBhY3Rpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidGgiKSk7Ci0gICAgICAgICAgICB2YXIgYWN0aW9uRGF0YSA9IHRoaXMuX2FjdGlvbnND
b250YWluZXIgPSBhY3Rpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dGQiKSk7Ci0gICAgICAgICAgICB2YXIgYWN0aW9uTGFiZWwgPSBhY3Rpb25IZWFkZXIuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7Ci0gICAgICAgICAgICBhY3Rp
b25MYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0aW9uIik7Ci0K
LSAgICAgICAgICAgIGlmICghdGhpcy5fYWN0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICAgICAg
dGhpcy5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3BvdmVyQ2xhc3NOYW1lKTsK
LSAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FjdGlvbnMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnRBY3Rpb25WaWV3ID0g
bmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldyh0aGlzLl9hY3Rpb25zW2ldLCB0
aGlzLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckFjdGlvbnNJbnNl
cnRCcmVha3BvaW50QWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldywgaSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgb3B0aW9uc1JvdyA9
IHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudCA9IHRhYmxlLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl9hY3Rpb25z
Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICBvcHRpb25zUm93LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgICAgICAgICAgdmFy
IG9wdGlvbnNIZWFkZXIgPSBvcHRpb25zUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRoIikpOwotICAgICAgICAgICAgdmFyIG9wdGlvbnNEYXRhID0gb3B0aW9uc1Jvdy5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpKTsKLSAgICAgICAgICAgIHZh
ciBvcHRpb25zTGFiZWwgPSBvcHRpb25zSGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImxhYmVsIikpOwotICAgICAgICAgICAgdmFyIG9wdGlvbnNDaGVja2JveCA9IHRo
aXMuX3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVtZW50ID0gb3B0aW9uc0RhdGEuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7Ci0gICAgICAgICAgICB2YXIgb3B0
aW9uc0NoZWNrYm94TGFiZWwgPSBvcHRpb25zRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJsYWJlbCIpKTsKLSAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveC5pZCA9IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJPcHRpb25zQXV0b0NvbnRpbnVlSW5wdXRJZDsK
LSAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveC50eXBlID0gImNoZWNrYm94IjsKLSAgICAgICAg
ICAgIG9wdGlvbnNDaGVja2JveC5jaGVja2VkID0gdGhpcy5fYXV0b0NvbnRpbnVlOwotICAgICAg
ICAgICAgb3B0aW9uc0NoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3Bv
cG92ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQuYmluZCh0aGlzKSk7Ci0gICAg
ICAgICAgICBvcHRpb25zTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik9wdGlvbnMiKTsKLSAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveExhYmVsLnNldEF0dHJpYnV0
ZSgiZm9yIiwgb3B0aW9uc0NoZWNrYm94LmlkKTsKLSAgICAgICAgICAgIG9wdGlvbnNDaGVja2Jv
eExhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdXRvbWF0aWNhbGx5
IGNvbnRpbnVlIGFmdGVyIGV2YWx1YXRpbmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRl
bnQuYXBwZW5kQ2hpbGQoY2hlY2tib3hMYWJlbCk7Ci0gICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hp
bGQodGFibGUpOwotCi0gICAgICAgIHJldHVybiBjb250ZW50OwotICAgIH0KLQotICAgIF9wb3Bv
dmVyQWN0aW9uc0NyZWF0ZUFkZEFjdGlvbkJ1dHRvbigpCi0gICAgewotICAgICAgICB0aGlzLl9w
b3BvdmVyQ29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludC5XaWRlUG9wb3ZlckNsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWlu
ZXIucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICB2YXIgYWRkQWN0aW9uQnV0dG9uID0gdGhp
cy5fYWN0aW9uc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJi
dXR0b24iKSk7Ci0gICAgICAgIGFkZEFjdGlvbkJ1dHRvbi50ZXh0Q29udGVudCA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQWRkIEFjdGlvbiIpOwotICAgICAgICBhZGRBY3Rpb25CdXR0b24uYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9wb3BvdmVyQWN0aW9uc0FkZEFjdGlvbkJ1dHRv
bkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgX3BvcG92ZXJBY3Rpb25zQWRkQWN0
aW9uQnV0dG9uQ2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXJDb250
ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3Bv
dmVyQ2xhc3NOYW1lKTsKLSAgICAgICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5yZW1vdmVDaGls
ZHJlbigpOwotCi0gICAgICAgIHZhciBuZXdBY3Rpb24gPSB0aGlzLmNyZWF0ZUFjdGlvbihXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC5EZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUpOwotICAgICAg
ICB2YXIgbmV3QnJlYWtwb2ludEFjdGlvblZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRBY3Rpb25WaWV3KG5ld0FjdGlvbiwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXJBY3Rp
b25zSW5zZXJ0QnJlYWtwb2ludEFjdGlvblZpZXcobmV3QnJlYWtwb2ludEFjdGlvblZpZXcsIC0x
KTsKLSAgICAgICAgdGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgICAg
ICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOwotICAgIH0KLQotICAgIF9wb3BvdmVyQWN0aW9uc0lu
c2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBpbmRleCkKLSAg
ICB7Ci0gICAgICAgIGlmIChpbmRleCA9PT0gLTEpCi0gICAgICAgICAgICB0aGlzLl9hY3Rpb25z
Q29udGFpbmVyLmFwcGVuZENoaWxkKGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBuZXh0RWxlbWVudCA9IHRoaXMuX2FjdGlvbnND
b250YWluZXIuY2hpbGRyZW5baW5kZXggKyAxXSB8fCBudWxsOwotICAgICAgICAgICAgdGhpcy5f
YWN0aW9uc0NvbnRhaW5lci5pbnNlcnRCZWZvcmUoYnJlYWtwb2ludEFjdGlvblZpZXcuZWxlbWVu
dCwgbmV4dEVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYnJlYWtwb2ludEFjdGlv
blZpZXdBcHBlbmRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBuZXdBY3Rpb24pCi0g
ICAgewotICAgICAgICB2YXIgbmV3QnJlYWtwb2ludEFjdGlvblZpZXcgPSBuZXcgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0FjdGlvbiwgdGhpcyk7Ci0KLSAgICAgICAgdmFy
IGluZGV4ID0gMDsKLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fYWN0aW9uc0NvbnRhaW5l
ci5jaGlsZHJlbjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxkcmVuLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0gPT09IGJyZWFrcG9pbnRBY3Rpb25WaWV3
LmVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9wb3BvdmVy
QWN0aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3
LCBpbmRleCk7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsK
LQotICAgICAgICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOwotICAgIH0KLQotICAgIGJyZWFrcG9p
bnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldykKLSAgICB7
Ci0gICAgICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQucmVtb3ZlKCk7Ci0KLSAgICAg
ICAgaWYgKCF0aGlzLl9hY3Rpb25zQ29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAg
ICAgICAgdGhpcy5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKTsKLSAgICAg
ICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHRo
aXMuX3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX3BvcG92ZXIudXBkYXRlKCk7Ci0gICAgfQotCi0gICAgYnJl
YWtwb2ludEFjdGlvblZpZXdSZXNpemVkKGJyZWFrcG9pbnRBY3Rpb25WaWV3KQotICAgIHsKLSAg
ICAgICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAgICB9Ci0KLSAgICB3aWxsRGlzbWlzc1Bv
cG92ZXIocG9wb3ZlcikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BvcG92
ZXIgPT09IHBvcG92ZXIpOwotICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVt
ZW50OwotICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50OwotICAg
ICAgICBkZWxldGUgdGhpcy5fcG9wb3Zlck9wdGlvbnNDaGVja2JveEVsZW1lbnQ7Ci0gICAgICAg
IGRlbGV0ZSB0aGlzLl9hY3Rpb25zQ29udGFpbmVyOwotICAgICAgICBkZWxldGUgdGhpcy5fcG9w
b3ZlcjsKLSAgICB9Ci0KLSAgICBkaWREaXNtaXNzUG9wb3Zlcihwb3BvdmVyKQotICAgIHsKLSAg
ICAgICAgLy8gUmVtb3ZlIEV2YWx1YXRlIGFuZCBQcm9iZSBhY3Rpb25zIHRoYXQgaGF2ZSBubyBk
YXRhLgotICAgICAgICB2YXIgZW1wdHlBY3Rpb25zID0gdGhpcy5fYWN0aW9ucy5maWx0ZXIoZnVu
Y3Rpb24oYWN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgIT09IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUgJiYgYWN0aW9uLnR5cGUgIT09IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuICEoYWN0aW9uLmRhdGEgJiYgYWN0aW9u
LmRhdGEudHJpbSgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZm9yICh2YXIgYWN0aW9uIG9m
IGVtcHR5QWN0aW9ucykKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKGFjdGlvbik7Ci0g
ICAgfQotCi0gICAgX3Nob3dFZGl0QnJlYWtwb2ludFBvcG92ZXIoYm91bmRpbmdDbGllbnRSZWN0
KQotICAgIHsKLSAgICAgICAgdmFyIGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9t
Q2xpZW50UmVjdChib3VuZGluZ0NsaWVudFJlY3QpOwotICAgICAgICBib3VuZHMub3JpZ2luLngg
LT0gMTsgLy8gTW92ZSB0aGUgYW5jaG9yIGxlZnQgb25lIHBpeGVsIHNvIGl0IGxvb2tzIG1vcmUg
Y2VudGVyZWQuCi0KLSAgICAgICAgdGhpcy5fcG9wb3ZlciA9IHRoaXMuX3BvcG92ZXIgfHwgbmV3
IFdlYkluc3BlY3Rvci5Qb3BvdmVyKHRoaXMpOwotICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRl
bnQgPSB0aGlzLl9lZGl0QnJlYWtwb2ludFBvcG92ZXJDb250ZW50RWxlbWVudCgpOwotICAgICAg
ICB0aGlzLl9wb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0
RWRnZS5NQVhfWV0pOwotCi0gICAgICAgIGlmICghdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYykg
ewotICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYyA9IG5ldyBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5L
ZXkuRXNjYXBlKTsKLSAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFbnRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5LZXkuRW50ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3ZlckNvbmRpdGlvbklucHV0
SWQpLnNlbGVjdCgpOwotICAgIH0KLQogICAgIF9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNo
YW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwgZXZlbnQu
ZGF0YSk7CkBAIC01NzUsMTIgKzMxNCw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50ID0gY2xh
c3MgQnJlYWtwb2ludCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB9CiB9OwogCi1X
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ2xhc3NOYW1lID0gImVkaXQtYnJlYWtwb2lu
dC1wb3BvdmVyLWNvbnRlbnQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuV2lkZVBvcG92ZXJD
bGFzc05hbWUgPSAid2lkZSI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ29uZGl0
aW9uSW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb25kaXRpb24iOwotV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuUG9wb3Zlck9wdGlvbnNBdXRvQ29udGludWVJbnB1dElkID0gImVk
aXQtYnJlYWtwb2ludC1wb3Bvb3Zlci1hdXRvLWNvbnRpbnVlIjsKLVdlYkluc3BlY3Rvci5CcmVh
a3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7Ci0KIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50LkRlZmF1bHRCcmVha3BvaW50QWN0aW9uVHlwZSA9IFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50QWN0aW9uLlR5cGUuTG9nOwogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5UeXBlSWRl
bnRpZmllciA9ICJicmVha3BvaW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDFmM2ZhMzYyNzlkOWJjZTJiNzgxN2ZmOTU5ZjRiYjdhMzQ1OTU4YjcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludC5jc3MKKysrIC9kZXYvbnVs
bApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2lu
dC1wb3BvdmVyLWNvbnRlbnQgewotICAgIHdpZHRoOiA0MjBweDsKLSAgICBwYWRkaW5nOiA1cHgg
MTVweDsKLX0KLQotLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQud2lk
ZSB7Ci0gICAgd2lkdGg6IDQ2MHB4OwotfQotCi0ucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBv
cG92ZXItY29udGVudCA+IGxhYmVsLnRvZ2dsZSB7Ci0gICAgY29sb3I6IGJsYWNrOwotICAgIGZv
bnQtd2VpZ2h0OiBib2xkOwotICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwotICAgIHdoaXRl
LXNwYWNlOiBub3dyYXA7Ci19Ci0KLS5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1j
b250ZW50ID4gdGFibGUgewotICAgIHdpZHRoOiAxMDAlOwotfQotCi0ucG9wb3ZlciAuZWRpdC1i
cmVha3BvaW50LXBvcG92ZXItY29udGVudCA+IHRhYmxlID4gdHIgPiB0aCB7Ci0gICAgY29sb3I6
IGhzbCgwLCAwJSwgMzQlKTsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICB0ZXh0LWFsaWdu
OiByaWdodDsKLSAgICB3aWR0aDogMXB4OyAvKiBTaHJpbmsgdG8gZml0LiAqLwotICAgIHZlcnRp
Y2FsLWFsaWduOiB0b3A7Ci0gICAgbGluZS1oZWlnaHQ6IDIzcHg7Ci19Ci0KLS5wb3BvdmVyIC5l
ZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gdGFibGUgPiB0ciA+IHRkIHsKLSAgICBw
YWRkaW5nLWxlZnQ6IDVweDsKLX0KLQotI2VkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbmRpdGlv
biB7Ci0gICAgd2lkdGg6IDEwMCU7Ci19Ci0KLSNlZGl0LWJyZWFrcG9pbnQtcG9wb292ZXItYXV0
by1jb250aW51ZSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDA7Ci0gICAgbWFyZ2luLXJpZ2h0OiA0cHg7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9CcmVha3BvaW50UG9wb3ZlclZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXJWaWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjNh
ZTQ3YmM2MDc4YjczNmUyNGY1ODdhODVjNTE1MDY0M2I2NGY4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92
ZXJWaWV3LmNzcwpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisucG9wb3ZlciAu
ZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCB7CisgICAgd2lkdGg6IDQyMHB4OworICAg
IHBhZGRpbmc6IDVweCAxNXB4OworfQorCisucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92
ZXItY29udGVudC53aWRlIHsKKyAgICB3aWR0aDogNDYwcHg7Cit9CisKKy5wb3BvdmVyIC5lZGl0
LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gbGFiZWwudG9nZ2xlIHsKKyAgICBjb2xvcjog
YmxhY2s7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBz
aXM7CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworLnBvcG92ZXIgLmVkaXQtYnJlYWtw
b2ludC1wb3BvdmVyLWNvbnRlbnQgPiB0YWJsZSB7CisgICAgd2lkdGg6IDEwMCU7Cit9CisKKy5w
b3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gdGFibGUgPiB0ciA+IHRo
IHsKKyAgICBjb2xvcjogaHNsKDAsIDAlLCAzNCUpOworICAgIGZvbnQtd2VpZ2h0OiBib2xkOwor
ICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIHdpZHRoOiAxcHg7IC8qIFNocmluayB0byBmaXQu
ICovCisgICAgdmVydGljYWwtYWxpZ246IHRvcDsKKyAgICBsaW5lLWhlaWdodDogMjNweDsKK30K
KworLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQgPiB0YWJsZSA+IHRy
ID4gdGQgeworICAgIHBhZGRpbmctbGVmdDogNXB4OworfQorCisjZWRpdC1icmVha3BvaW50LXBv
cG92ZXItY29uZGl0aW9uIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKworI2VkaXQtYnJlYWtwb2lu
dC1wb3Bvb3Zlci1hdXRvLWNvbnRpbnVlIHsKKyAgICBtYXJnaW4tbGVmdDogMDsKKyAgICBtYXJn
aW4tcmlnaHQ6IDRweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRQb3BvdmVyVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRQb3BvdmVyVmlldy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yNjE0M2ZiNjNmODgyYjI2YTVmMzI0Yzg4MjExNjM1YjdmNDZhNDlhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFBvcG92ZXJWaWV3LmpzCkBAIC0wLDAgKzEsMzAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldyA9IGNsYXNzIEJyZWFrcG9pbnRQb3BvdmVy
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihicmVh
a3BvaW50LCBwb3BvdmVyKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlz
Ll9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKKyAgICAgICAgdGhpcy5fcG9wb3ZlciA9IHBvcG92
ZXI7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50UG9wb3ZlclZpZXcuUG9wb3ZlckNsYXNzTmFtZTsKKworICAgICAgICBsZXQgY2hlY2ti
b3hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgY2hl
Y2tib3hFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOworICAgICAgICBjaGVja2JveEVsZW1lbnQu
Y2hlY2tlZCA9ICF0aGlzLl9icmVha3BvaW50LmRpc2FibGVkOworICAgICAgICBjaGVja2JveEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcG9wb3ZlclRvZ2dsZUVuYWJs
ZWRDaGVja2JveENoYW5nZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgbGV0IGNoZWNrYm94TGFi
ZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOworICAgICAgICBjaGVja2JveExh
YmVsLmNsYXNzTmFtZSA9ICJ0b2dnbGUiOworICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZENo
aWxkKGNoZWNrYm94RWxlbWVudCk7CisgICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kKHRoaXMu
X2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygpKTsK
KworICAgICAgICBsZXQgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwor
CisgICAgICAgIGxldCBjb25kaXRpb25Sb3cgPSB0YWJsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0ciIpKTsKKyAgICAgICAgbGV0IGNvbmRpdGlvbkhlYWRlciA9IGNvbmRp
dGlvblJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKyAgICAg
ICAgbGV0IGNvbmRpdGlvbkRhdGEgPSBjb25kaXRpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGQiKSk7CisgICAgICAgIGxldCBjb25kaXRpb25MYWJlbCA9IGNvbmRp
dGlvbkhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsK
KyAgICAgICAgbGV0IGNvbmRpdGlvbklucHV0ID0gY29uZGl0aW9uRGF0YS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKTsKKyAgICAgICAgY29uZGl0aW9uSW5wdXQu
aWQgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3LlBvcG92ZXJDb25kaXRpb25J
bnB1dElkOworICAgICAgICBjb25kaXRpb25JbnB1dC52YWx1ZSA9IHRoaXMuX2JyZWFrcG9pbnQu
Y29uZGl0aW9uIHx8ICIiOworICAgICAgICBjb25kaXRpb25JbnB1dC5zcGVsbGNoZWNrID0gZmFs
c2U7CisgICAgICAgIGNvbmRpdGlvbklucHV0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRo
aXMuX3BvcG92ZXJDb25kaXRpb25JbnB1dENoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgIGNv
bmRpdGlvbklucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9wb3BvdmVyQ29u
ZGl0aW9uSW5wdXRLZXlEb3duLmJpbmQodGhpcykpOworICAgICAgICBjb25kaXRpb25JbnB1dC5w
bGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uZGl0aW9uYWwgZXhwcmVzc2lv
biIpOworICAgICAgICBjb25kaXRpb25MYWJlbC5zZXRBdHRyaWJ1dGUoImZvciIsIGNvbmRpdGlv
bklucHV0LmlkKTsKKyAgICAgICAgY29uZGl0aW9uTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNvbmRpdGlvbiIpOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyA3KTogRGVidWdnZXIuc2V0QnJlYWtwb2ludCBkaWQgbm90IHN1cHBvcnQgb3B0aW9ucy4K
KyAgICAgICAgaWYgKERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludC5zdXBwb3J0cygib3B0aW9u
cyIpKSB7CisgICAgICAgICAgICBsZXQgYWN0aW9uUm93ID0gdGFibGUuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSk7CisgICAgICAgICAgICBsZXQgYWN0aW9uSGVhZGVy
ID0gYWN0aW9uUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOwor
ICAgICAgICAgICAgbGV0IGFjdGlvbkRhdGEgPSB0aGlzLl9hY3Rpb25zQ29udGFpbmVyID0gYWN0
aW9uUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpOworICAgICAg
ICAgICAgbGV0IGFjdGlvbkxhYmVsID0gYWN0aW9uSGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikpOworICAgICAgICAgICAgYWN0aW9uTGFiZWwudGV4dENv
bnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFjdGlvbiIpOworCisgICAgICAgICAgICBp
ZiAoIXRoaXMuX2JyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGhp
cy5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3LldpZGVQb3BvdmVyQ2xhc3NOYW1lKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2JyZWFrcG9pbnQuYWN0aW9ucy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFjdGlvblZp
ZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3KHRoaXMuX2JyZWFrcG9p
bnQuYWN0aW9uc1tpXSwgdGhpcywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Bv
cG92ZXJBY3Rpb25zSW5zZXJ0QnJlYWtwb2ludEFjdGlvblZpZXcoYnJlYWtwb2ludEFjdGlvblZp
ZXcsIGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
bGV0IG9wdGlvbnNSb3cgPSB0aGlzLl9wb3BvdmVyT3B0aW9uc1Jvd0VsZW1lbnQgPSB0YWJsZS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKKyAgICAgICAgICAgIGlm
ICghdGhpcy5fYnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBvcHRp
b25zUm93LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5I
aWRkZW5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICBsZXQgb3B0aW9uc0hlYWRlciA9IG9w
dGlvbnNSb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7CisgICAg
ICAgICAgICBsZXQgb3B0aW9uc0RhdGEgPSBvcHRpb25zUm93LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRkIikpOworICAgICAgICAgICAgbGV0IG9wdGlvbnNMYWJlbCA9IG9w
dGlvbnNIZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7
CisgICAgICAgICAgICBsZXQgb3B0aW9uc0NoZWNrYm94ID0gdGhpcy5fcG9wb3Zlck9wdGlvbnND
aGVja2JveEVsZW1lbnQgPSBvcHRpb25zRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbnB1dCIpKTsKKyAgICAgICAgICAgIGxldCBvcHRpb25zQ2hlY2tib3hMYWJlbCA9
IG9wdGlvbnNEYXRhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikp
OworICAgICAgICAgICAgb3B0aW9uc0NoZWNrYm94LmlkID0gV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRQb3BvdmVyVmlldy5Qb3BvdmVyT3B0aW9uc0F1dG9Db250aW51ZUlucHV0SWQ7CisgICAgICAg
ICAgICBvcHRpb25zQ2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7CisgICAgICAgICAgICBvcHRp
b25zQ2hlY2tib3guY2hlY2tlZCA9IHRoaXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAg
ICAgICAgICAgb3B0aW9uc0NoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMu
X3BvcG92ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQuYmluZCh0aGlzKSk7Cisg
ICAgICAgICAgICBvcHRpb25zTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIk9wdGlvbnMiKTsKKyAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveExhYmVsLnNldEF0dHJp
YnV0ZSgiZm9yIiwgb3B0aW9uc0NoZWNrYm94LmlkKTsKKyAgICAgICAgICAgIG9wdGlvbnNDaGVj
a2JveExhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdXRvbWF0aWNh
bGx5IGNvbnRpbnVlIGFmdGVyIGV2YWx1YXRpbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY2hlY2tib3hMYWJlbCk7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGFibGUpOworCisgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRj
dXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CisgICAgICAgIHRoaXMuX2tleWJvYXJk
U2hvcnRjdXRFbnRlciA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRW50ZXIpOworICAgIH0KKworICAgIC8v
IFN0YXRpYworCisgICAgc3RhdGljIGFwcGVuZENvbnRleHRNZW51SXRlbXMoY29udGV4dE1lbnUs
IGJyZWFrcG9pbnQsIGJyZWFrcG9pbnREaXNwbGF5RWxlbWVudCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGRvY3VtZW50LmJvZHkuY29udGFpbnMoYnJlYWtwb2ludERpc3BsYXlFbGVt
ZW50KSwgIkJyZWFrcG9pbnQgcG9wb3ZlciBkaXNwbGF5IGVsZW1lbnQgbXVzdCBiZSBpbiB0aGUg
RE9NLiIpOworCisgICAgICAgIGZ1bmN0aW9uIGVkaXRCcmVha3BvaW50KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbGV0IHBvcG92ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlBvcG92ZXIoKTsKKyAg
ICAgICAgICAgIGxldCBwb3BvdmVyVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBv
cG92ZXJWaWV3KGJyZWFrcG9pbnQsIHBvcG92ZXIpOworICAgICAgICAgICAgcG9wb3Zlci5kZWxl
Z2F0ZSA9IHBvcG92ZXJWaWV3OworICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gcG9wb3Zl
clZpZXcuZWxlbWVudDsKKworICAgICAgICAgICAgbGV0IGJvdW5kcyA9IFdlYkluc3BlY3Rvci5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1lbnQuZ2V0Qm91bmRp
bmdDbGllbnRSZWN0KCkpOworICAgICAgICAgICAgYm91bmRzLm9yaWdpbi54IC09IDE7IC8vIE1v
dmUgdGhlIGFuY2hvciBsZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3JlIGNlbnRlcmVkLgor
ICAgICAgICAgICAgcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3Iu
UmVjdEVkZ2UuTUFYX1ldKTsKKworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5Qb3BvdmVyQ29uZGl0aW9uSW5wdXRJ
ZCkuc2VsZWN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZW1vdmVCcmVha3Bv
aW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gdG9nZ2xlQnJlYWtwb2ludCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrcG9p
bnQuZGlzYWJsZWQgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHRvZ2dsZUF1dG9Db250aW51ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJy
ZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24o
KQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd09yaWdpbmFsT3JGb3Jt
YXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24pOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuaXNC
cmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkpCisgICAgICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRWRpdCBCcmVha3BvaW504oCmIiksIGVk
aXRCcmVha3BvaW50LmJpbmQoYnJlYWtwb2ludCkpOworCisgICAgICAgIGlmIChicmVha3BvaW50
LmF1dG9Db250aW51ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxlZCkgeworICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtw
b2ludCIpLCB0b2dnbGVCcmVha3BvaW50LmJpbmQoYnJlYWtwb2ludCkpOworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhbmNlbCBBdXRv
bWF0aWMgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlLmJpbmQoYnJlYWtwb2ludCkpOwor
ICAgICAgICB9IGVsc2UgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtw
b2ludCIpLCB0b2dnbGVCcmVha3BvaW50LmJpbmQoYnJlYWtwb2ludCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKGJyZWFrcG9pbnQp
KTsKKworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlICYmICFicmVha3BvaW50
LmRpc2FibGVkICYmIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpCisgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2V0IHRvIEF1dG9tYXRp
Y2FsbHkgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlLmJpbmQoYnJlYWtwb2ludCkpOwor
CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJl
bW92YWJsZShicmVha3BvaW50KSkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2Vw
YXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgcmVtb3ZlQnJlYWtwb2ludC5iaW5kKGJy
ZWFrcG9pbnQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChicmVha3BvaW50Ll9zb3VyY2VD
b2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgeworICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIiksIHJl
dmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uLmJpbmQoYnJlYWtwb2ludCkpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZWxlbWVudCgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfcG9wb3ZlclRvZ2dsZUVuYWJsZWRDaGVja2JveENoYW5nZWQoZXZlbnQpCisgICAgewor
ICAgICAgICB0aGlzLl9icmVha3BvaW50LmRpc2FibGVkID0gIWV2ZW50LnRhcmdldC5jaGVja2Vk
OworICAgIH0KKworICAgIF9wb3BvdmVyQ29uZGl0aW9uSW5wdXRDaGFuZ2VkKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5jb25kaXRpb24gPSBldmVudC50YXJnZXQudmFs
dWU7CisgICAgfQorCisgICAgX3BvcG92ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2JveENoYW5n
ZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9icmVha3BvaW50LmF1dG9Db250aW51ZSA9
IGV2ZW50LnRhcmdldC5jaGVja2VkOworICAgIH0KKworICAgIF9wb3BvdmVyQ29uZGl0aW9uSW5w
dXRLZXlEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkU2hvcnRj
dXRFc2MubWF0Y2hlc0V2ZW50KGV2ZW50KSB8fCB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIu
bWF0Y2hlc0V2ZW50KGV2ZW50KSkgeworICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5kaXNtaXNz
KCk7CisgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfcG9wb3ZlckFj
dGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlclZpZXcuV2lk
ZVBvcG92ZXJDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9hY3Rpb25zQ29udGFpbmVyLnJlbW92
ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgbGV0IGFkZEFjdGlvbkJ1dHRvbiA9IHRoaXMuX2FjdGlv
bnNDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikp
OworICAgICAgICBhZGRBY3Rpb25CdXR0b24udGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkFkZCBBY3Rpb24iKTsKKyAgICAgICAgYWRkQWN0aW9uQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fcG9wb3ZlckFjdGlvbnNBZGRBY3Rpb25CdXR0b25DbGlja2Vk
LmJpbmQodGhpcykpOworICAgIH0KKworICAgIF9wb3BvdmVyQWN0aW9uc0FkZEFjdGlvbkJ1dHRv
bkNsaWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5XaWRlUG9wb3ZlckNsYXNzTmFt
ZSk7CisgICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWluZXIucmVtb3ZlQ2hpbGRyZW4oKTsKKwor
ICAgICAgICBsZXQgbmV3QWN0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQuRGVmYXVsdEJyZWFrcG9pbnRBY3Rpb25UeXBlKTsKKyAgICAg
ICAgbGV0IG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uVmlldyhuZXdBY3Rpb24sIHRoaXMpOworICAgICAgICB0aGlzLl9wb3BvdmVyQWN0
aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3LCAt
MSk7CisgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlclZpZXcuSGlkZGVuU3R5bGVDbGFzc05h
bWUpOworICAgICAgICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOworICAgIH0KKworICAgIF9wb3Bv
dmVyQWN0aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3
LCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmIChpbmRleCA9PT0gLTEpCisgICAgICAgICAgICB0
aGlzLl9hY3Rpb25zQ29udGFpbmVyLmFwcGVuZENoaWxkKGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVs
ZW1lbnQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxldCBuZXh0RWxlbWVudCA9IHRo
aXMuX2FjdGlvbnNDb250YWluZXIuY2hpbGRyZW5baW5kZXggKyAxXSB8fCBudWxsOworICAgICAg
ICAgICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5pbnNlcnRCZWZvcmUoYnJlYWtwb2ludEFjdGlv
blZpZXcuZWxlbWVudCwgbmV4dEVsZW1lbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgYnJl
YWtwb2ludEFjdGlvblZpZXdBcHBlbmRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBu
ZXdBY3Rpb24pCisgICAgeworICAgICAgICBsZXQgbmV3QnJlYWtwb2ludEFjdGlvblZpZXcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0FjdGlvbiwgdGhpcyk7CisK
KyAgICAgICAgbGV0IGluZGV4ID0gMDsKKyAgICAgICAgbGV0IGNoaWxkcmVuID0gdGhpcy5fYWN0
aW9uc0NvbnRhaW5lci5jaGlsZHJlbjsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGNoaWxkcmVu
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0gPT09IGJyZWFrcG9p
bnRBY3Rpb25WaWV3LmVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpbmRleCA9IGk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLl9wb3BvdmVyQWN0aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0JyZWFrcG9p
bnRBY3Rpb25WaWV3LCBpbmRleCk7CisgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlclZpZXcu
SGlkZGVuU3R5bGVDbGFzc05hbWUpOworCisgICAgICAgIHRoaXMuX3BvcG92ZXIudXBkYXRlKCk7
CisgICAgfQorCisgICAgYnJlYWtwb2ludEFjdGlvblZpZXdSZW1vdmVBY3Rpb25WaWV3KGJyZWFr
cG9pbnRBY3Rpb25WaWV3KQorICAgIHsKKyAgICAgICAgYnJlYWtwb2ludEFjdGlvblZpZXcuZWxl
bWVudC5yZW1vdmUoKTsKKworICAgICAgICBpZiAoIXRoaXMuX2FjdGlvbnNDb250YWluZXIuY2hp
bGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICB0aGlzLl9wb3BvdmVyQWN0aW9uc0NyZWF0ZUFk
ZEFjdGlvbkJ1dHRvbigpOworICAgICAgICAgICAgdGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyVmlldy5IaWRk
ZW5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3B0aW9uc0NoZWNr
Ym94RWxlbWVudC5jaGVja2VkID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9w
b3BvdmVyLnVwZGF0ZSgpOworICAgIH0KKworICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3UmVzaXpl
ZChicmVha3BvaW50QWN0aW9uVmlldykKKyAgICB7CisgICAgICAgIHRoaXMuX3BvcG92ZXIudXBk
YXRlKCk7CisgICAgfQorCisgICAgd2lsbERpc21pc3NQb3BvdmVyKHBvcG92ZXIpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wb3BvdmVyID09PSBwb3BvdmVyKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93
RWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVt
ZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lciA9IG51bGw7CisgICAg
ICAgIHRoaXMuX3BvcG92ZXIgPSBudWxsOworICAgIH0KKworICAgIGRpZERpc21pc3NQb3BvdmVy
KHBvcG92ZXIpCisgICAgeworICAgICAgICAvLyBSZW1vdmUgRXZhbHVhdGUgYW5kIFByb2JlIGFj
dGlvbnMgdGhhdCBoYXZlIG5vIGRhdGEuCisgICAgICAgIGxldCBlbXB0eUFjdGlvbnMgPSB0aGlz
Ll9icmVha3BvaW50LmFjdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGFjdGlvbikgeworICAgICAgICAg
ICAgaWYgKGFjdGlvbi50eXBlICE9PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBl
LkV2YWx1YXRlICYmIGFjdGlvbi50eXBlICE9PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlv
bi5UeXBlLlByb2JlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybiAhKGFjdGlvbi5kYXRhICYmIGFjdGlvbi5kYXRhLnRyaW0oKSk7CisgICAgICAgIH0p
OworCisgICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBlbXB0eUFjdGlvbnMpCisgICAgICAgICAg
ICB0aGlzLl9icmVha3BvaW50LnJlbW92ZUFjdGlvbihhY3Rpb24pOworICAgIH0KK307CisKK1dl
Ykluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlclZpZXcuUG9wb3ZlckNsYXNzTmFtZSA9ICJlZGl0
LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50IjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50UG9w
b3ZlclZpZXcuV2lkZVBvcG92ZXJDbGFzc05hbWUgPSAid2lkZSI7CitXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludFBvcG92ZXJWaWV3LlBvcG92ZXJDb25kaXRpb25JbnB1dElkID0gImVkaXQtYnJlYWtw
b2ludC1wb3BvdmVyLWNvbmRpdGlvbiI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJW
aWV3LlBvcG92ZXJPcHRpb25zQXV0b0NvbnRpbnVlSW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQt
cG9wb292ZXItYXV0by1jb250aW51ZSI7CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJW
aWV3LkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzCmluZGV4IGNmNGRkOTJiNDljMzk3NWViMDRkNjZkY2U3NjJlYjMyOTQ4MmMy
MzcuLjQ0ZjY0YzQ0YjAwMmY2N2RiOTBlNWE5YWQ4MTA3MDU0YTIwMWM4ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0
RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC0xMDIzLDkgKzEwMjMsNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRl
bmRzIFdlYkluc3BlYwogCiAgICAgICAgIC8vIFNpbmdsZSBicmVha3BvaW50LgogICAgICAgICBp
ZiAoYnJlYWtwb2ludHMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IGJyZWFrcG9pbnRzWzBdOwotCi0gICAgICAgICAgICBicmVha3BvaW50LmFwcGVuZENvbnRl
eHRNZW51SXRlbXMoY29udGV4dE1lbnUsIGV2ZW50LnRhcmdldCk7CisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJWaWV3LmFwcGVuZENvbnRleHRNZW51SXRlbXMoY29u
dGV4dE1lbnUsIGJyZWFrcG9pbnRzWzBdLCBldmVudC50YXJnZXQpOwogCiAgICAgICAgICAgICBp
ZiAoIVdlYkluc3BlY3Rvci5pc1Nob3dpbmdEZWJ1Z2dlclRhYigpKSB7CiAgICAgICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260317</attachid>
            <date>2015-08-31 14:27:06 -0700</date>
            <delta_ts>2015-08-31 15:15:00 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-127328-20150831142651.patch</filename>
            <type>text/plain</type>
            <size>42008</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
NDU5MDM2Y2ZkOThlZTE2MTBkZTNlYWVlNGRhYzNjZjBhZWM0MDljLi43MzI5ZDVlOTE1Njc4MzJk
YzU3NWJlMWUwOWQwZDU1ZjI0YTNiNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3NyBAQAogMjAxNS0wOC0zMSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSB0aGUgUG9wb3ZlciBjb2RlIG91dCBvZiB0
aGUgQnJlYWtwb2ludCBtb2RlbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50
UG9wb3ZlckNvbnRyb2xsZXIuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRQb3BvdmVyQ29udHJvbGxlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLmVkaXRC
cmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRy
b2xsZXIucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMucmVtb3ZlQnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3Rv
dHlwZS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLnRvZ2dsZUJyZWFrcG9pbnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5k
Q29udGV4dE1lbnVJdGVtcy50b2dnbGVBdXRvQ29udGludWUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1l
bnVJdGVtcy5yZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250
ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNv
bnRyb2xsZXIucHJvdG90eXBlLnNob3dFZGl0QnJlYWtwb2ludFBvcG92ZXIpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuX2NyZWF0
ZVBvcG92ZXJDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3Zl
ckNvbnRyb2xsZXIucHJvdG90eXBlLl9wb3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNrYm94Q2hhbmdl
ZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnBy
b3RvdHlwZS5fcG9wb3ZlckNvbmRpdGlvbklucHV0Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5fcG9wb3ZlclRvZ2ds
ZUF1dG9Db250aW51ZUNoZWNrYm94Q2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5fcG9wb3ZlckNvbmRpdGlvbklucHV0
S2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9s
bGVyLnByb3RvdHlwZS5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUu
X3BvcG92ZXJBY3Rpb25zQWRkQWN0aW9uQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5fcG9wb3ZlckFjdGlv
bnNJbnNlcnRCcmVha3BvaW50QWN0aW9uVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5icmVha3BvaW50QWN0aW9uVmlld0Fw
cGVuZEFjdGlvblZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVy
Q29udHJvbGxlci5wcm90b3R5cGUuYnJlYWtwb2ludEFjdGlvblZpZXdSZW1vdmVBY3Rpb25WaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJv
dG90eXBlLmJyZWFrcG9pbnRBY3Rpb25WaWV3UmVzaXplZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS53aWxsRGlzbWlzc1BvcG92
ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5w
cm90b3R5cGUuZGlkRGlzbWlzc1BvcG92ZXIpOgorICAgICAgICBBZGRlZCBjb250cm9sbGVyIGNs
YXNzIHRvIGVuY2Fwc3VsYXRlIHZpZXcgbG9naWMgcHJldmlvdXNseSBsb2NhdGVkIGluIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6
CisgICAgICAgIEFkZGVkIGFuZCB1cGRhdGVkIGZpbGUgcGF0aHMuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRlbXMuZWRpdEJyZWFrcG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmFw
cGVuZENvbnRleHRNZW51SXRlbXMucmVtb3ZlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVt
cy50b2dnbGVCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50LnByb3RvdHlwZS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLnRvZ2dsZUF1dG9Db250aW51
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUu
YXBwZW5kQ29udGV4dE1lbnVJdGVtcy5yZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYXBw
ZW5kQ29udGV4dE1lbnVJdGVtcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5wcm90b3R5cGUuX3BvcG92ZXJUb2dnbGVFbmFibGVkQ2hlY2tib3hDaGFuZ2VkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5fcG9w
b3ZlckNvbmRpdGlvbklucHV0Q2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuX3BvcG92ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2Jv
eENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJv
dG90eXBlLl9wb3BvdmVyQ29uZGl0aW9uSW5wdXRLZXlEb3duKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5fZWRpdEJyZWFrcG9pbnRQb3BvdmVy
Q29udGVudEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQucHJvdG90eXBlLl9wb3BvdmVyQWN0aW9uc0NyZWF0ZUFkZEFjdGlvbkJ1dHRvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuX3BvcG92ZXJB
Y3Rpb25zQWRkQWN0aW9uQnV0dG9uQ2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuX3BvcG92ZXJBY3Rpb25zSW5zZXJ0QnJlYWtwb2lu
dEFjdGlvblZpZXcpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
cHJvdG90eXBlLmJyZWFrcG9pbnRBY3Rpb25WaWV3QXBwZW5kQWN0aW9uVmlldyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYnJlYWtwb2ludEFj
dGlvblZpZXdSZW1vdmVBY3Rpb25WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LnByb3RvdHlwZS5icmVha3BvaW50QWN0aW9uVmlld1Jlc2l6ZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLndpbGxEaXNt
aXNzUG9wb3Zlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5w
cm90b3R5cGUuZGlkRGlzbWlzc1BvcG92ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLl9zaG93RWRpdEJyZWFrcG9pbnRQb3BvdmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgUmVtb3ZlZCB2aWV3IGxvZ2ljLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuY3NzOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludC5jc3Mu
CisgICAgICAgICgucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCk6Cisg
ICAgICAgICgucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudC53aWRlKToK
KyAgICAgICAgKC5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gbGFi
ZWwudG9nZ2xlKToKKyAgICAgICAgKC5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1j
b250ZW50ID4gdGFibGUpOgorICAgICAgICAoLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3Bv
dmVyLWNvbnRlbnQgPiB0YWJsZSA+IHRyID4gdGgpOgorICAgICAgICAoLnBvcG92ZXIgLmVkaXQt
YnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQgPiB0YWJsZSA+IHRyID4gdGQpOgorICAgICAgICAo
I2VkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbmRpdGlvbik6CisgICAgICAgICgjZWRpdC1icmVh
a3BvaW50LXBvcG9vdmVyLWF1dG8tY29udGludWUpOgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvcik6CisgICAgICAgIENyZWF0ZXMgYSBCcmVha3BvaW50UG9wb3Zl
ckNvbnRyb2xsZXIgaW5zdGFuY2UuIFRoZSBsaWZldGltZSBvZiB0aGUgJ0VkaXQgQnJlYWtwb2lu
dCcgdmlldyBpcyBpbnRlcm5hbCB0byB0aGUKKyAgICAgICAgY29udHJvbGxlciwgYW5kIGNhbid0
IGJlIGluaXRpYXRlZCBvdXRzaWRlIG9mIGEgY29udGV4dCBtZW51IGl0ZW0gY2xpY2suCisKKzIw
MTUtMDgtMzEgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFJlbmRlcmluZyBGcmFtZSB0YXNrcyBtYWtpbmcgdXAgPCAxJSBvZiB0aGUg
c2VsZWN0aW9uIGRvbid0IGFwcGVhciBpbiB0aGUgcGllIGNoYXJ0CiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg1NDkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBv
cG92ZXJDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUz
YjhmN2Y5YmJhMzVmNGMxYmNhNTMzMzdhZmUwYzUxYTg1MGFjZGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3Bv
aW50UG9wb3ZlckNvbnRyb2xsZXIuanMKQEAgLTAsMCArMSwzMDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtwb2lu
dFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNv
bnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fYnJl
YWtwb2ludCA9IG51bGw7CisgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBudWxsOworICAgICAgICB0
aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9rZXlib2Fy
ZFNob3J0Y3V0RXNjID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUpOworICAgICAgICB0aGlzLl9r
ZXlib2FyZFNob3J0Y3V0RW50ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
bnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVudGVyKTsKKyAgICB9CisK
KyAgICAvLyBQdWJsaWMKKworICAgIGFwcGVuZENvbnRleHRNZW51SXRlbXMoY29udGV4dE1lbnUs
IGJyZWFrcG9pbnQsIGJyZWFrcG9pbnREaXNwbGF5RWxlbWVudCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGRvY3VtZW50LmJvZHkuY29udGFpbnMoYnJlYWtwb2ludERpc3BsYXlFbGVt
ZW50KSwgIkJyZWFrcG9pbnQgcG9wb3ZlciBkaXNwbGF5IGVsZW1lbnQgbXVzdCBiZSBpbiB0aGUg
RE9NLiIpOworCisgICAgICAgIGZ1bmN0aW9uIGVkaXRCcmVha3BvaW50KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXIsICJCcmVha3BvaW50IHBv
cG92ZXIgYWxyZWFkeSBleGlzdHMuIik7CisgICAgICAgICAgICBpZiAodGhpcy5fcG9wb3ZlcikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVBvcG92
ZXJDb250ZW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIuY29u
dGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudDsKKworICAgICAgICAgICAgbGV0IGJv
dW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChicmVha3BvaW50RGlz
cGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICAgICAgYm91bmRz
Lm9yaWdpbi54IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBsZWZ0IG9uZSBwaXhlbCBzbyBpdCBs
b29rcyBtb3JlIGNlbnRlcmVkLgorICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50KGJv
dW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1ldKTsKKworICAgICAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVy
Q29udHJvbGxlci5Qb3BvdmVyQ29uZGl0aW9uSW5wdXRJZCkuc2VsZWN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiByZW1vdmVCcmVha3BvaW50KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KGJyZWFr
cG9pbnQpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQnJlYWtwb2ludCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSAhYnJlYWtwb2lu
dC5kaXNhYmxlZDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUF1dG9Db250
aW51ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0g
IWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
cmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24oKQorICAgICAgICB7CisgICAgICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24o
YnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtw
b2ludCkpCisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRWRpdCBCcmVha3BvaW504oCmIiksIGVkaXRCcmVha3BvaW50LmJpbmQodGhpcykp
OworCisgICAgICAgIGlmIChicmVha3BvaW50LmF1dG9Db250aW51ZSAmJiAhYnJlYWtwb2ludC5k
aXNhYmxlZCkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50LmJpbmQo
dGhpcykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVl
LmJpbmQodGhpcykpOworICAgICAgICB9IGVsc2UgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQor
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkRpc2FibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRo
aXMpKTsKKworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlICYmICFicmVha3Bv
aW50LmRpc2FibGVkICYmIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpCisgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2V0IHRvIEF1dG9t
YXRpY2FsbHkgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlLmJpbmQodGhpcykpOworCisg
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92
YWJsZShicmVha3BvaW50KSkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJh
dG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgcmVtb3ZlQnJlYWtwb2ludC5iaW5kKHRoaXMp
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChicmVha3BvaW50Ll9zb3VyY2VDb2RlTG9jYXRp
b24uaGFzTWFwcGVkTG9jYXRpb24oKSkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
U2VwYXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIiksIHJldmVhbE9yaWdp
bmFsU291cmNlQ29kZUxvY2F0aW9uLmJpbmQodGhpcykpOworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gUHJpdmF0ZQorCisgICAgX2NyZWF0ZVBvcG92ZXJDb250ZW50KGJyZWFrcG9pbnQpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50
LCAiUG9wb3ZlciBjb250ZW50IGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIik7CisgICAgICAgIGlm
ICh0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgIHRoaXMuX3BvcG92
ZXJDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAg
ICB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gImVkaXQtYnJlYWtwb2lu
dC1wb3BvdmVyLWNvbnRlbnQiOworCisgICAgICAgIGxldCBjaGVja2JveEVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICBjaGVja2JveEVsZW1lbnQudHlw
ZSA9ICJjaGVja2JveCI7CisgICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2VkID0gIXRoaXMu
X2JyZWFrcG9pbnQuZGlzYWJsZWQ7CisgICAgICAgIGNoZWNrYm94RWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9wb3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNrYm94Q2hhbmdl
ZC5iaW5kKHRoaXMpKTsKKworICAgICAgICBsZXQgY2hlY2tib3hMYWJlbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImxhYmVsIik7CisgICAgICAgIGNoZWNrYm94TGFiZWwuY2xhc3NOYW1lID0g
InRvZ2dsZSI7CisgICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kQ2hpbGQoY2hlY2tib3hFbGVt
ZW50KTsKKyAgICAgICAgY2hlY2tib3hMYWJlbC5hcHBlbmQodGhpcy5fYnJlYWtwb2ludC5zb3Vy
Y2VDb2RlTG9jYXRpb24uZGlzcGxheUxvY2F0aW9uU3RyaW5nKCkpOworCisgICAgICAgIGxldCB0
YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7CisKKyAgICAgICAgbGV0IGNv
bmRpdGlvblJvdyA9IHRhYmxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRy
IikpOworICAgICAgICBsZXQgY29uZGl0aW9uSGVhZGVyID0gY29uZGl0aW9uUm93LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworICAgICAgICBsZXQgY29uZGl0aW9u
RGF0YSA9IGNvbmRpdGlvblJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
ZCIpKTsKKyAgICAgICAgbGV0IGNvbmRpdGlvbkxhYmVsID0gY29uZGl0aW9uSGVhZGVyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikpOworICAgICAgICBsZXQgY29u
ZGl0aW9uSW5wdXQgPSBjb25kaXRpb25EYXRhLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlucHV0IikpOworICAgICAgICBjb25kaXRpb25JbnB1dC5pZCA9IFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuUG9wb3ZlckNvbmRpdGlvbklucHV0SWQ7Cisg
ICAgICAgIGNvbmRpdGlvbklucHV0LnZhbHVlID0gdGhpcy5fYnJlYWtwb2ludC5jb25kaXRpb24g
fHwgIiI7CisgICAgICAgIGNvbmRpdGlvbklucHV0LnNwZWxsY2hlY2sgPSBmYWxzZTsKKyAgICAg
ICAgY29uZGl0aW9uSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcG9wb3Zl
ckNvbmRpdGlvbklucHV0Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgY29uZGl0aW9uSW5w
dXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3BvcG92ZXJDb25kaXRpb25JbnB1
dEtleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIGNvbmRpdGlvbklucHV0LnBsYWNlaG9sZGVy
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25kaXRpb25hbCBleHByZXNzaW9uIik7CisgICAg
ICAgIGNvbmRpdGlvbkxhYmVsLnNldEF0dHJpYnV0ZSgiZm9yIiwgY29uZGl0aW9uSW5wdXQuaWQp
OworICAgICAgICBjb25kaXRpb25MYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ29uZGl0aW9uIik7CisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDcpOiBE
ZWJ1Z2dlci5zZXRCcmVha3BvaW50IGRpZCBub3Qgc3VwcG9ydCBvcHRpb25zLgorICAgICAgICBp
ZiAoRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50LnN1cHBvcnRzKCJvcHRpb25zIikpIHsKKyAg
ICAgICAgICAgIGxldCBhY3Rpb25Sb3cgPSB0YWJsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ0ciIpKTsKKyAgICAgICAgICAgIGxldCBhY3Rpb25IZWFkZXIgPSBhY3Rpb25S
b3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7CisgICAgICAgICAg
ICBsZXQgYWN0aW9uRGF0YSA9IHRoaXMuX2FjdGlvbnNDb250YWluZXIgPSBhY3Rpb25Sb3cuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7CisgICAgICAgICAgICBsZXQg
YWN0aW9uTGFiZWwgPSBhY3Rpb25IZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgibGFiZWwiKSk7CisgICAgICAgICAgICBhY3Rpb25MYWJlbC50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQWN0aW9uIik7CisKKyAgICAgICAgICAgIGlmICghdGhpcy5f
YnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCkKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVy
QWN0aW9uc0NyZWF0ZUFkZEFjdGlvbkJ1dHRvbigpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5XaWRlUG9wb3ZlckNsYXNzTmFt
ZSk7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9icmVha3BvaW50
LmFjdGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnRBY3Rpb25WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldyh0aGlz
Ll9icmVha3BvaW50LmFjdGlvbnNbaV0sIHRoaXMsIHRydWUpOworICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9wb3BvdmVyQWN0aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KGJyZWFrcG9p
bnRBY3Rpb25WaWV3LCBpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGxldCBvcHRpb25zUm93ID0gdGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50
ID0gdGFibGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSk7CisgICAg
ICAgICAgICBpZiAoIXRoaXMuX2JyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpCisgICAgICAgICAg
ICAgICAgb3B0aW9uc1Jvdy5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9w
b3ZlckNvbnRyb2xsZXIuSGlkZGVuU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgbGV0IG9w
dGlvbnNIZWFkZXIgPSBvcHRpb25zUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRoIikpOworICAgICAgICAgICAgbGV0IG9wdGlvbnNEYXRhID0gb3B0aW9uc1Jvdy5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpKTsKKyAgICAgICAgICAgIGxldCBv
cHRpb25zTGFiZWwgPSBvcHRpb25zSGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxhYmVsIikpOworICAgICAgICAgICAgbGV0IG9wdGlvbnNDaGVja2JveCA9IHRoaXMu
X3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVtZW50ID0gb3B0aW9uc0RhdGEuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7CisgICAgICAgICAgICBsZXQgb3B0aW9u
c0NoZWNrYm94TGFiZWwgPSBvcHRpb25zRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsYWJlbCIpKTsKKyAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveC5pZCA9ICJlZGl0
LWJyZWFrcG9pbnQtcG9wb292ZXItYXV0by1jb250aW51ZSI7CisgICAgICAgICAgICBvcHRpb25z
Q2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7CisgICAgICAgICAgICBvcHRpb25zQ2hlY2tib3gu
Y2hlY2tlZCA9IHRoaXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAgICAgICAgICAgb3B0
aW9uc0NoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3BvcG92ZXJUb2dn
bGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBv
cHRpb25zTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9wdGlvbnMi
KTsKKyAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveExhYmVsLnNldEF0dHJpYnV0ZSgiZm9yIiwg
b3B0aW9uc0NoZWNrYm94LmlkKTsKKyAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveExhYmVsLnRl
eHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdXRvbWF0aWNhbGx5IGNvbnRpbnVl
IGFmdGVyIGV2YWx1YXRpbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3BvcG92ZXJD
b250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChjaGVja2JveExhYmVsKTsKKyAgICAgICAgdGhpcy5f
cG9wb3ZlckNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRhYmxlKTsKKyAgICB9CisKKyAgICBf
cG9wb3ZlclRvZ2dsZUVuYWJsZWRDaGVja2JveENoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAg
ICB0aGlzLl9icmVha3BvaW50LmRpc2FibGVkID0gIWV2ZW50LnRhcmdldC5jaGVja2VkOworICAg
IH0KKworICAgIF9wb3BvdmVyQ29uZGl0aW9uSW5wdXRDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgdGhpcy5fYnJlYWtwb2ludC5jb25kaXRpb24gPSBldmVudC50YXJnZXQudmFsdWU7Cisg
ICAgfQorCisgICAgX3BvcG92ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQoZXZl
bnQpCisgICAgeworICAgICAgICB0aGlzLl9icmVha3BvaW50LmF1dG9Db250aW51ZSA9IGV2ZW50
LnRhcmdldC5jaGVja2VkOworICAgIH0KKworICAgIF9wb3BvdmVyQ29uZGl0aW9uSW5wdXRLZXlE
b3duKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2Mu
bWF0Y2hlc0V2ZW50KGV2ZW50KSB8fCB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIubWF0Y2hl
c0V2ZW50KGV2ZW50KSkgeworICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5kaXNtaXNzKCk7Cisg
ICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAgIGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfcG9wb3ZlckFjdGlvbnND
cmVhdGVBZGRBY3Rpb25CdXR0b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9wb3ZlckNvbnRl
bnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVy
Q29udHJvbGxlci5XaWRlUG9wb3ZlckNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2FjdGlvbnND
b250YWluZXIucmVtb3ZlQ2hpbGRyZW4oKTsKKworICAgICAgICBsZXQgYWRkQWN0aW9uQnV0dG9u
ID0gdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJidXR0b24iKSk7CisgICAgICAgIGFkZEFjdGlvbkJ1dHRvbi50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQWRkIEFjdGlvbiIpOworICAgICAgICBhZGRBY3Rpb25CdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9wb3BvdmVyQWN0aW9uc0FkZEFjdGlv
bkJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgfQorCisgICAgX3BvcG92ZXJBY3Rpb25z
QWRkQWN0aW9uQnV0dG9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BvcG92
ZXJDb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9w
b3ZlckNvbnRyb2xsZXIuV2lkZVBvcG92ZXJDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9hY3Rp
b25zQ29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgbGV0IG5ld0FjdGlvbiA9
IHRoaXMuX2JyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkRl
ZmF1bHRCcmVha3BvaW50QWN0aW9uVHlwZSk7CisgICAgICAgIGxldCBuZXdCcmVha3BvaW50QWN0
aW9uVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcobmV3QWN0aW9u
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcG9wb3ZlckFjdGlvbnNJbnNlcnRCcmVha3BvaW50QWN0
aW9uVmlldyhuZXdCcmVha3BvaW50QWN0aW9uVmlldywgLTEpOworICAgICAgICB0aGlzLl9wb3Bv
dmVyT3B0aW9uc1Jvd0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludFBvcG92ZXJDb250cm9sbGVyLkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhp
cy5fcG9wb3Zlci51cGRhdGUoKTsKKyAgICB9CisKKyAgICBfcG9wb3ZlckFjdGlvbnNJbnNlcnRC
cmVha3BvaW50QWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldywgaW5kZXgpCisgICAgewor
ICAgICAgICBpZiAoaW5kZXggPT09IC0xKQorICAgICAgICAgICAgdGhpcy5fYWN0aW9uc0NvbnRh
aW5lci5hcHBlbmRDaGlsZChicmVha3BvaW50QWN0aW9uVmlldy5lbGVtZW50KTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBsZXQgbmV4dEVsZW1lbnQgPSB0aGlzLl9hY3Rpb25zQ29udGFp
bmVyLmNoaWxkcmVuW2luZGV4ICsgMV0gfHwgbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX2FjdGlv
bnNDb250YWluZXIuaW5zZXJ0QmVmb3JlKGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQsIG5l
eHRFbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3
QXBwZW5kQWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldywgbmV3QWN0aW9uKQorICAgIHsK
KyAgICAgICAgbGV0IG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5C
cmVha3BvaW50QWN0aW9uVmlldyhuZXdBY3Rpb24sIHRoaXMpOworCisgICAgICAgIGxldCBpbmRl
eCA9IDA7CisgICAgICAgIGxldCBjaGlsZHJlbiA9IHRoaXMuX2FjdGlvbnNDb250YWluZXIuY2hp
bGRyZW47CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBjaGlsZHJlbi5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldID09PSBicmVha3BvaW50QWN0aW9uVmlldy5lbGVt
ZW50KSB7CisgICAgICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcG9wb3ZlckFjdGlv
bnNJbnNlcnRCcmVha3BvaW50QWN0aW9uVmlldyhuZXdCcmVha3BvaW50QWN0aW9uVmlldywgaW5k
ZXgpOworICAgICAgICB0aGlzLl9wb3BvdmVyT3B0aW9uc1Jvd0VsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZShXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLkhpZGRlblN0eWxl
Q2xhc3NOYW1lKTsKKworICAgICAgICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOworICAgIH0KKwor
ICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9u
VmlldykKKyAgICB7CisgICAgICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQucmVtb3Zl
KCk7CisKKyAgICAgICAgaWYgKCF0aGlzLl9hY3Rpb25zQ29udGFpbmVyLmNoaWxkcmVuLmxlbmd0
aCkgeworICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0
b24oKTsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuSGlkZGVuU3R5
bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5fcG9wb3Zlck9wdGlvbnNDaGVja2JveEVs
ZW1lbnQuY2hlY2tlZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcG9wb3Zl
ci51cGRhdGUoKTsKKyAgICB9CisKKyAgICBicmVha3BvaW50QWN0aW9uVmlld1Jlc2l6ZWQoYnJl
YWtwb2ludEFjdGlvblZpZXcpCisgICAgeworICAgICAgICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgp
OworICAgIH0KKworICAgIHdpbGxEaXNtaXNzUG9wb3Zlcihwb3BvdmVyKQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fcG9wb3ZlciA9PT0gcG9wb3Zlcik7CisgICAgICAgIHRo
aXMuX3BvcG92ZXJDb250ZW50RWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX3BvcG92ZXJP
cHRpb25zUm93RWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zQ2hl
Y2tib3hFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lciA9IG51
bGw7CisgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBudWxsOworICAgIH0KKworICAgIGRpZERpc21p
c3NQb3BvdmVyKHBvcG92ZXIpCisgICAgeworICAgICAgICAvLyBSZW1vdmUgRXZhbHVhdGUgYW5k
IFByb2JlIGFjdGlvbnMgdGhhdCBoYXZlIG5vIGRhdGEuCisgICAgICAgIGxldCBlbXB0eUFjdGlv
bnMgPSB0aGlzLl9icmVha3BvaW50LmFjdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGFjdGlvbikgewor
ICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlICE9PSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFj
dGlvbi5UeXBlLkV2YWx1YXRlICYmIGFjdGlvbi50eXBlICE9PSBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludEFjdGlvbi5UeXBlLlByb2JlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHJldHVybiAhKGFjdGlvbi5kYXRhICYmIGFjdGlvbi5kYXRhLnRyaW0oKSk7Cisg
ICAgICAgIH0pOworCisgICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBlbXB0eUFjdGlvbnMpCisg
ICAgICAgICAgICB0aGlzLl9icmVha3BvaW50LnJlbW92ZUFjdGlvbihhY3Rpb24pOworCisgICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBudWxsOworICAgIH0KK307CisKK1dlYkluc3BlY3Rvci5C
cmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuV2lkZVBvcG92ZXJDbGFzc05hbWUgPSAid2lkZSI7
CitXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLlBvcG92ZXJDb25kaXRp
b25JbnB1dElkID0gImVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbmRpdGlvbiI7CitXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLkhpZGRlblN0eWxlQ2xhc3NOYW1lID0g
ImhpZGRlbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0
bWwKaW5kZXggMGIwZGMwMDExNDBjMjZkNmRkZDJmOTdjYjg3ZTI5NTY0MTgzOTMyYy4uYjBiNGI1
OTJkMDkyMzdjNWM0YzY2MmRjNjU3NzViYjhkMTI0ZDc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzQsOCArMzQsOCBAQAogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQXBwbGljYXRpb25DYWNoZUljb25zLmNz
cyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9CZXppZXJFZGl0b3Iu
Y3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0JveE1vZGVsRGV0
YWlsc1NlY3Rpb25Sb3cuY3NzIj4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0JyZWFrcG9pbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZp
ZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3Mi
PgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0J1dHRv
blRvb2xiYXJJdGVtLmNzcyI+CkBAIC01ODMsNiArNTgzLDcgQEAKICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9CYXNpY0Jsb2NrQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQnJhbmNoTWFuYWdlci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU1N0eWxlTWFu
YWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvZGVNaXJy
b3JDb2xvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQ29kZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9C
cmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0JyZWFrcG9pbnQuanMKaW5kZXggMGNkZjNlNDZiZjMzZmE3M2ViMTA3YmJiMTVjNWYwOTM0ZmNk
ZGYxYi4uZDUxOGY3MTQ0NDVmYWIyNDFhYjY4Mjg4OGMzNTVhYjUwM2Q4ZmQxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFr
cG9pbnQuanMKQEAgLTIxMyw2MiArMjEzLDYgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQgPSBj
bGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB0aGlz
LmRpc2FibGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICBhcHBlbmRDb250ZXh0TWVudUl0ZW1zKGNv
bnRleHRNZW51LCBicmVha3BvaW50RGlzcGxheUVsZW1lbnQpCi0gICAgewotICAgICAgICBjb25z
b2xlLmFzc2VydChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGJyZWFrcG9pbnREaXNwbGF5RWxlbWVu
dCksICJicmVha3BvaW50IHBvcG92ZXIgZGlzcGxheSBlbGVtZW50IG11c3QgYmUgaW4gdGhlIERP
TSIpOwotCi0gICAgICAgIHZhciBib3VuZGluZ0NsaWVudFJlY3QgPSBicmVha3BvaW50RGlzcGxh
eUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gZWRp
dEJyZWFrcG9pbnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLl9zaG93RWRpdEJyZWFr
cG9pbnRQb3BvdmVyKGJvdW5kaW5nQ2xpZW50UmVjdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiByZW1vdmVCcmVha3BvaW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHRoaXMpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gdG9nZ2xlQnJlYWtwb2ludCgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHRoaXMuZGlzYWJsZWQgPSAhdGhpcy5kaXNhYmxlZDsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIHRvZ2dsZUF1dG9Db250aW51ZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHRoaXMuYXV0b0NvbnRpbnVlID0gIXRoaXMuYXV0b0NvbnRpbnVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gcmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3Vy
Y2VDb2RlTG9jYXRpb24odGhpcy5fc291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludEVkaXRh
YmxlKHRoaXMpKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkVkaXQgQnJlYWtwb2ludOKApiIpLCBlZGl0QnJlYWtwb2ludC5iaW5kKHRo
aXMpKTsKLQotICAgICAgICBpZiAodGhpcy5hdXRvQ29udGludWUgJiYgIXRoaXMuZGlzYWJsZWQp
IHsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsK
LSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYW5jZWwgQXV0b21hdGljIENvbnRpbnVlIiksIHRvZ2dsZUF1dG9Db250aW51ZS5iaW5kKHRo
aXMpKTsKLSAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNhYmxlZCkKLSAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFr
cG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVu
YWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAg
ICAgaWYgKCF0aGlzLmF1dG9Db250aW51ZSAmJiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmFjdGlv
bnMubGVuZ3RoKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNldCB0byBBdXRvbWF0aWNhbGx5IENvbnRpbnVlIiksIHRvZ2dsZUF1dG9D
b250aW51ZS5iaW5kKHRoaXMpKTsKLQotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUodGhpcykpIHsKLSAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksIHJlbW92ZUJy
ZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKLSAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5hbCBSZXNvdXJjZSIp
LCByZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbi5iaW5kKHRoaXMpKTsKLSAgICAgICAg
fQotICAgIH0KLQogICAgIGNyZWF0ZUFjdGlvbih0eXBlLCBwcmVjZWRpbmdBY3Rpb24sIGRhdGEp
CiAgICAgewogICAgICAgICB2YXIgbmV3QWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uKHRoaXMsIHR5cGUsIGRhdGEgfHwgbnVsbCk7CkBAIC0zNTksMjExICszMDMsNiBA
QCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIHJldHVybiBhY3Rpb25zOwogICAgIH0KIAotICAgIF9w
b3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNrYm94Q2hhbmdlZChldmVudCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuZGlzYWJsZWQgPSAhZXZlbnQudGFyZ2V0LmNoZWNrZWQ7Ci0gICAgfQotCi0gICAgX3Bv
cG92ZXJDb25kaXRpb25JbnB1dENoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLmNv
bmRpdGlvbiA9IGV2ZW50LnRhcmdldC52YWx1ZTsKLSAgICB9Ci0KLSAgICBfcG9wb3ZlclRvZ2ds
ZUF1dG9Db250aW51ZUNoZWNrYm94Q2hhbmdlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
YXV0b0NvbnRpbnVlID0gZXZlbnQudGFyZ2V0LmNoZWNrZWQ7Ci0gICAgfQotCi0gICAgX3BvcG92
ZXJDb25kaXRpb25JbnB1dEtleURvd24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5f
a2V5Ym9hcmRTaG9ydGN1dEVzYy5tYXRjaGVzRXZlbnQoZXZlbnQpIHx8IHRoaXMuX2tleWJvYXJk
U2hvcnRjdXRFbnRlci5tYXRjaGVzRXZlbnQoZXZlbnQpKSB7Ci0gICAgICAgICAgICB0aGlzLl9w
b3BvdmVyLmRpc21pc3MoKTsKLSAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwot
ICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIF9lZGl0QnJlYWtwb2ludFBvcG92ZXJDb250ZW50RWxlbWVudCgpCi0gICAgewotICAgICAg
ICB2YXIgY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LlBvcG92ZXJDbGFzc05hbWU7Ci0KLSAgICAgICAgdmFyIGNoZWNrYm94
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgICAgIGNoZWNr
Ym94RWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKLSAgICAgICAgY2hlY2tib3hFbGVtZW50LmNo
ZWNrZWQgPSAhdGhpcy5fZGlzYWJsZWQ7Ci0gICAgICAgIGNoZWNrYm94RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9wb3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNrYm94Q2hh
bmdlZC5iaW5kKHRoaXMpKTsKLQotICAgICAgICB2YXIgY2hlY2tib3hMYWJlbCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7Ci0gICAgICAgIGNoZWNrYm94TGFiZWwuY2xhc3NOYW1l
ID0gInRvZ2dsZSI7Ci0gICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kQ2hpbGQoY2hlY2tib3hF
bGVtZW50KTsKLSAgICAgICAgY2hlY2tib3hMYWJlbC5hcHBlbmQodGhpcy5fc291cmNlQ29kZUxv
Y2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygpKTsKLQotICAgICAgICB2YXIgdGFibGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotCi0gICAgICAgIHZhciBjb25kaXRpb25S
b3cgPSB0YWJsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKLSAg
ICAgICAgdmFyIGNvbmRpdGlvbkhlYWRlciA9IGNvbmRpdGlvblJvdy5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKLSAgICAgICAgdmFyIGNvbmRpdGlvbkRhdGEgPSBj
b25kaXRpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7Ci0g
ICAgICAgIHZhciBjb25kaXRpb25MYWJlbCA9IGNvbmRpdGlvbkhlYWRlci5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKLSAgICAgICAgdmFyIGNvbmRpdGlvbklu
cHV0ID0gY29uZGl0aW9uRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
bnB1dCIpKTsKLSAgICAgICAgY29uZGl0aW9uSW5wdXQuaWQgPSBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludC5Qb3BvdmVyQ29uZGl0aW9uSW5wdXRJZDsKLSAgICAgICAgY29uZGl0aW9uSW5wdXQudmFs
dWUgPSB0aGlzLl9jb25kaXRpb24gfHwgIiI7Ci0gICAgICAgIGNvbmRpdGlvbklucHV0LnNwZWxs
Y2hlY2sgPSBmYWxzZTsKLSAgICAgICAgY29uZGl0aW9uSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2hhbmdlIiwgdGhpcy5fcG9wb3ZlckNvbmRpdGlvbklucHV0Q2hhbmdlZC5iaW5kKHRoaXMpKTsK
LSAgICAgICAgY29uZGl0aW9uSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMu
X3BvcG92ZXJDb25kaXRpb25JbnB1dEtleURvd24uYmluZCh0aGlzKSk7Ci0gICAgICAgIGNvbmRp
dGlvbklucHV0LnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25kaXRpb25h
bCBleHByZXNzaW9uIik7Ci0gICAgICAgIGNvbmRpdGlvbkxhYmVsLnNldEF0dHJpYnV0ZSgiZm9y
IiwgY29uZGl0aW9uSW5wdXQuaWQpOwotICAgICAgICBjb25kaXRpb25MYWJlbC50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uZGl0aW9uIik7Ci0KLSAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDcpOiBEZWJ1Z2dlci5zZXRCcmVha3BvaW50IGRpZCBub3Qgc3VwcG9y
dCBvcHRpb25zLgotICAgICAgICBpZiAoRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50LnN1cHBv
cnRzKCJvcHRpb25zIikpIHsKLSAgICAgICAgICAgIHZhciBhY3Rpb25Sb3cgPSB0YWJsZS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKLSAgICAgICAgICAgIHZhciBh
Y3Rpb25IZWFkZXIgPSBhY3Rpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgidGgiKSk7Ci0gICAgICAgICAgICB2YXIgYWN0aW9uRGF0YSA9IHRoaXMuX2FjdGlvbnNDb250
YWluZXIgPSBhY3Rpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQi
KSk7Ci0gICAgICAgICAgICB2YXIgYWN0aW9uTGFiZWwgPSBhY3Rpb25IZWFkZXIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7Ci0gICAgICAgICAgICBhY3Rpb25M
YWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0aW9uIik7Ci0KLSAg
ICAgICAgICAgIGlmICghdGhpcy5fYWN0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgdGhp
cy5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3BvdmVyQ2xhc3NOYW1lKTsKLSAg
ICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2FjdGlvbnMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gbmV3
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldyh0aGlzLl9hY3Rpb25zW2ldLCB0aGlz
LCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckFjdGlvbnNJbnNlcnRC
cmVha3BvaW50QWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldywgaSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgb3B0aW9uc1JvdyA9IHRo
aXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudCA9IHRhYmxlLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRyIikpOwotICAgICAgICAgICAgaWYgKCF0aGlzLl9hY3Rpb25zLmxl
bmd0aCkKLSAgICAgICAgICAgICAgICBvcHRpb25zUm93LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgICAgICAgICAgdmFyIG9w
dGlvbnNIZWFkZXIgPSBvcHRpb25zUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRoIikpOwotICAgICAgICAgICAgdmFyIG9wdGlvbnNEYXRhID0gb3B0aW9uc1Jvdy5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpKTsKLSAgICAgICAgICAgIHZhciBv
cHRpb25zTGFiZWwgPSBvcHRpb25zSGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxhYmVsIikpOwotICAgICAgICAgICAgdmFyIG9wdGlvbnNDaGVja2JveCA9IHRoaXMu
X3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVtZW50ID0gb3B0aW9uc0RhdGEuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7Ci0gICAgICAgICAgICB2YXIgb3B0aW9u
c0NoZWNrYm94TGFiZWwgPSBvcHRpb25zRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsYWJlbCIpKTsKLSAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveC5pZCA9IFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJPcHRpb25zQXV0b0NvbnRpbnVlSW5wdXRJZDsKLSAg
ICAgICAgICAgIG9wdGlvbnNDaGVja2JveC50eXBlID0gImNoZWNrYm94IjsKLSAgICAgICAgICAg
IG9wdGlvbnNDaGVja2JveC5jaGVja2VkID0gdGhpcy5fYXV0b0NvbnRpbnVlOwotICAgICAgICAg
ICAgb3B0aW9uc0NoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3BvcG92
ZXJUb2dnbGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQuYmluZCh0aGlzKSk7Ci0gICAgICAg
ICAgICBvcHRpb25zTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9w
dGlvbnMiKTsKLSAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveExhYmVsLnNldEF0dHJpYnV0ZSgi
Zm9yIiwgb3B0aW9uc0NoZWNrYm94LmlkKTsKLSAgICAgICAgICAgIG9wdGlvbnNDaGVja2JveExh
YmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdXRvbWF0aWNhbGx5IGNv
bnRpbnVlIGFmdGVyIGV2YWx1YXRpbmciKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQoY2hlY2tib3hMYWJlbCk7Ci0gICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQo
dGFibGUpOwotCi0gICAgICAgIHJldHVybiBjb250ZW50OwotICAgIH0KLQotICAgIF9wb3BvdmVy
QWN0aW9uc0NyZWF0ZUFkZEFjdGlvbkJ1dHRvbigpCi0gICAgewotICAgICAgICB0aGlzLl9wb3Bv
dmVyQ29udGVudEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5XaWRlUG9wb3ZlckNsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWluZXIu
cmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICB2YXIgYWRkQWN0aW9uQnV0dG9uID0gdGhpcy5f
YWN0aW9uc0NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0
b24iKSk7Ci0gICAgICAgIGFkZEFjdGlvbkJ1dHRvbi50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQWRkIEFjdGlvbiIpOwotICAgICAgICBhZGRBY3Rpb25CdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9wb3BvdmVyQWN0aW9uc0FkZEFjdGlvbkJ1dHRvbkNs
aWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgfQotCi0gICAgX3BvcG92ZXJBY3Rpb25zQWRkQWN0aW9u
QnV0dG9uQ2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXJDb250ZW50
RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3BvdmVy
Q2xhc3NOYW1lKTsKLSAgICAgICAgdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJl
bigpOwotCi0gICAgICAgIHZhciBuZXdBY3Rpb24gPSB0aGlzLmNyZWF0ZUFjdGlvbihXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5EZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUpOwotICAgICAgICB2
YXIgbmV3QnJlYWtwb2ludEFjdGlvblZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRB
Y3Rpb25WaWV3KG5ld0FjdGlvbiwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXJBY3Rpb25z
SW5zZXJ0QnJlYWtwb2ludEFjdGlvblZpZXcobmV3QnJlYWtwb2ludEFjdGlvblZpZXcsIC0xKTsK
LSAgICAgICAgdGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgICAgICB0
aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOwotICAgIH0KLQotICAgIF9wb3BvdmVyQWN0aW9uc0luc2Vy
dEJyZWFrcG9pbnRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBpbmRleCkKLSAgICB7
Ci0gICAgICAgIGlmIChpbmRleCA9PT0gLTEpCi0gICAgICAgICAgICB0aGlzLl9hY3Rpb25zQ29u
dGFpbmVyLmFwcGVuZENoaWxkKGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBuZXh0RWxlbWVudCA9IHRoaXMuX2FjdGlvbnNDb250
YWluZXIuY2hpbGRyZW5baW5kZXggKyAxXSB8fCBudWxsOwotICAgICAgICAgICAgdGhpcy5fYWN0
aW9uc0NvbnRhaW5lci5pbnNlcnRCZWZvcmUoYnJlYWtwb2ludEFjdGlvblZpZXcuZWxlbWVudCwg
bmV4dEVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYnJlYWtwb2ludEFjdGlvblZp
ZXdBcHBlbmRBY3Rpb25WaWV3KGJyZWFrcG9pbnRBY3Rpb25WaWV3LCBuZXdBY3Rpb24pCi0gICAg
ewotICAgICAgICB2YXIgbmV3QnJlYWtwb2ludEFjdGlvblZpZXcgPSBuZXcgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0FjdGlvbiwgdGhpcyk7Ci0KLSAgICAgICAgdmFyIGlu
ZGV4ID0gMDsKLSAgICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5j
aGlsZHJlbjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0gPT09IGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVs
ZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9wb3BvdmVyQWN0
aW9uc0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3LCBp
bmRleCk7Ci0gICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgICAgICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOwotICAgIH0KLQotICAgIGJyZWFrcG9pbnRB
Y3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldykKLSAgICB7Ci0g
ICAgICAgIGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQucmVtb3ZlKCk7Ci0KLSAgICAgICAg
aWYgKCF0aGlzLl9hY3Rpb25zQ29udGFpbmVyLmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAg
ICAgdGhpcy5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKTsKLSAgICAgICAg
ICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHRoaXMu
X3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTsKLSAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX3BvcG92ZXIudXBkYXRlKCk7Ci0gICAgfQotCi0gICAgYnJlYWtw
b2ludEFjdGlvblZpZXdSZXNpemVkKGJyZWFrcG9pbnRBY3Rpb25WaWV3KQotICAgIHsKLSAgICAg
ICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAgICB9Ci0KLSAgICB3aWxsRGlzbWlzc1BvcG92
ZXIocG9wb3ZlcikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BvcG92ZXIg
PT09IHBvcG92ZXIpOwotICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50
OwotICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50OwotICAgICAg
ICBkZWxldGUgdGhpcy5fcG9wb3Zlck9wdGlvbnNDaGVja2JveEVsZW1lbnQ7Ci0gICAgICAgIGRl
bGV0ZSB0aGlzLl9hY3Rpb25zQ29udGFpbmVyOwotICAgICAgICBkZWxldGUgdGhpcy5fcG9wb3Zl
cjsKLSAgICB9Ci0KLSAgICBkaWREaXNtaXNzUG9wb3Zlcihwb3BvdmVyKQotICAgIHsKLSAgICAg
ICAgLy8gUmVtb3ZlIEV2YWx1YXRlIGFuZCBQcm9iZSBhY3Rpb25zIHRoYXQgaGF2ZSBubyBkYXRh
LgotICAgICAgICB2YXIgZW1wdHlBY3Rpb25zID0gdGhpcy5fYWN0aW9ucy5maWx0ZXIoZnVuY3Rp
b24oYWN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgIT09IFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUgJiYgYWN0aW9uLnR5cGUgIT09IFdlYklu
c3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuICEoYWN0aW9uLmRhdGEgJiYgYWN0aW9uLmRh
dGEudHJpbSgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZm9yICh2YXIgYWN0aW9uIG9mIGVt
cHR5QWN0aW9ucykKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKGFjdGlvbik7Ci0gICAg
fQotCi0gICAgX3Nob3dFZGl0QnJlYWtwb2ludFBvcG92ZXIoYm91bmRpbmdDbGllbnRSZWN0KQot
ICAgIHsKLSAgICAgICAgdmFyIGJvdW5kcyA9IFdlYkluc3BlY3Rvci5SZWN0LnJlY3RGcm9tQ2xp
ZW50UmVjdChib3VuZGluZ0NsaWVudFJlY3QpOwotICAgICAgICBib3VuZHMub3JpZ2luLnggLT0g
MTsgLy8gTW92ZSB0aGUgYW5jaG9yIGxlZnQgb25lIHBpeGVsIHNvIGl0IGxvb2tzIG1vcmUgY2Vu
dGVyZWQuCi0KLSAgICAgICAgdGhpcy5fcG9wb3ZlciA9IHRoaXMuX3BvcG92ZXIgfHwgbmV3IFdl
Ykluc3BlY3Rvci5Qb3BvdmVyKHRoaXMpOwotICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRlbnQg
PSB0aGlzLl9lZGl0QnJlYWtwb2ludFBvcG92ZXJDb250ZW50RWxlbWVudCgpOwotICAgICAgICB0
aGlzLl9wb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRn
ZS5NQVhfWV0pOwotCi0gICAgICAgIGlmICghdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYykgewot
ICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYyA9IG5ldyBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXku
RXNjYXBlKTsKLSAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFbnRlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5LZXkuRW50ZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3ZlckNvbmRpdGlvbklucHV0SWQp
LnNlbGVjdCgpOwotICAgIH0KLQogICAgIF9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5n
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwgZXZlbnQuZGF0
YSk7CkBAIC01NzUsMTIgKzMxNCw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50ID0gY2xhc3Mg
QnJlYWtwb2ludCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ2xhc3NOYW1lID0gImVkaXQtYnJlYWtwb2ludC1w
b3BvdmVyLWNvbnRlbnQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuV2lkZVBvcG92ZXJDbGFz
c05hbWUgPSAid2lkZSI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ29uZGl0aW9u
SW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb25kaXRpb24iOwotV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQuUG9wb3Zlck9wdGlvbnNBdXRvQ29udGludWVJbnB1dElkID0gImVkaXQt
YnJlYWtwb2ludC1wb3Bvb3Zlci1hdXRvLWNvbnRpbnVlIjsKLVdlYkluc3BlY3Rvci5CcmVha3Bv
aW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7Ci0KIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50LkRlZmF1bHRCcmVha3BvaW50QWN0aW9uVHlwZSA9IFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uLlR5cGUuTG9nOwogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5UeXBlSWRlbnRp
ZmllciA9ICJicmVha3BvaW50IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludC5jc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDFmM2ZhMzYyNzlkOWJjZTJiNzgxN2ZmOTU5ZjRiYjdhMzQ1OTU4YjcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludC5jc3MKKysrIC9kZXYvbnVsbApA
QCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1w
b3BvdmVyLWNvbnRlbnQgewotICAgIHdpZHRoOiA0MjBweDsKLSAgICBwYWRkaW5nOiA1cHggMTVw
eDsKLX0KLQotLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQud2lkZSB7
Ci0gICAgd2lkdGg6IDQ2MHB4OwotfQotCi0ucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92
ZXItY29udGVudCA+IGxhYmVsLnRvZ2dsZSB7Ci0gICAgY29sb3I6IGJsYWNrOwotICAgIGZvbnQt
d2VpZ2h0OiBib2xkOwotICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwotICAgIHdoaXRlLXNw
YWNlOiBub3dyYXA7Ci19Ci0KLS5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250
ZW50ID4gdGFibGUgewotICAgIHdpZHRoOiAxMDAlOwotfQotCi0ucG9wb3ZlciAuZWRpdC1icmVh
a3BvaW50LXBvcG92ZXItY29udGVudCA+IHRhYmxlID4gdHIgPiB0aCB7Ci0gICAgY29sb3I6IGhz
bCgwLCAwJSwgMzQlKTsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICB0ZXh0LWFsaWduOiBy
aWdodDsKLSAgICB3aWR0aDogMXB4OyAvKiBTaHJpbmsgdG8gZml0LiAqLwotICAgIHZlcnRpY2Fs
LWFsaWduOiB0b3A7Ci0gICAgbGluZS1oZWlnaHQ6IDIzcHg7Ci19Ci0KLS5wb3BvdmVyIC5lZGl0
LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gdGFibGUgPiB0ciA+IHRkIHsKLSAgICBwYWRk
aW5nLWxlZnQ6IDVweDsKLX0KLQotI2VkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbmRpdGlvbiB7
Ci0gICAgd2lkdGg6IDEwMCU7Ci19Ci0KLSNlZGl0LWJyZWFrcG9pbnQtcG9wb292ZXItYXV0by1j
b250aW51ZSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDA7Ci0gICAgbWFyZ2luLXJpZ2h0OiA0cHg7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9C
cmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmNzcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZjNhZTQ3YmM2MDc4YjczNmUyNGY1ODdhODVjNTE1MDY0M2I2NGY4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtw
b2ludFBvcG92ZXJDb250cm9sbGVyLmNzcwpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCB7CisgICAgd2lk
dGg6IDQyMHB4OworICAgIHBhZGRpbmc6IDVweCAxNXB4OworfQorCisucG9wb3ZlciAuZWRpdC1i
cmVha3BvaW50LXBvcG92ZXItY29udGVudC53aWRlIHsKKyAgICB3aWR0aDogNDYwcHg7Cit9CisK
Ky5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gbGFiZWwudG9nZ2xl
IHsKKyAgICBjb2xvcjogYmxhY2s7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgICAgdGV4dC1v
dmVyZmxvdzogZWxsaXBzaXM7CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKK30KKworLnBvcG92
ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQgPiB0YWJsZSB7CisgICAgd2lkdGg6
IDEwMCU7Cit9CisKKy5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4g
dGFibGUgPiB0ciA+IHRoIHsKKyAgICBjb2xvcjogaHNsKDAsIDAlLCAzNCUpOworICAgIGZvbnQt
d2VpZ2h0OiBib2xkOworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIHdpZHRoOiAxcHg7IC8q
IFNocmluayB0byBmaXQuICovCisgICAgdmVydGljYWwtYWxpZ246IHRvcDsKKyAgICBsaW5lLWhl
aWdodDogMjNweDsKK30KKworLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRl
bnQgPiB0YWJsZSA+IHRyID4gdGQgeworICAgIHBhZGRpbmctbGVmdDogNXB4OworfQorCisjZWRp
dC1icmVha3BvaW50LXBvcG92ZXItY29uZGl0aW9uIHsKKyAgICB3aWR0aDogMTAwJTsKK30KKwor
I2VkaXQtYnJlYWtwb2ludC1wb3Bvb3Zlci1hdXRvLWNvbnRpbnVlIHsKKyAgICBtYXJnaW4tbGVm
dDogMDsKKyAgICBtYXJnaW4tcmlnaHQ6IDRweDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKaW5kZXggY2Y0ZGQ5MmI0OWMzOTc1ZWIwNGQ2NmRjZTc2MmViMzI5NDgyYzIzNy4u
NDNkNTNmYWNmOTM5ODNjZWUxMTk1NWJiNTQ4NzI1MjZmMDhhMTMwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0
b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291
cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTQ3LDYgKzQ3LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJ
bnNwZWMKIAogICAgICAgICB0aGlzLl9pc1Byb2JhYmx5TWluaWZpZWQgPSBmYWxzZTsKIAorICAg
ICAgICB0aGlzLl9icmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlcigpOworCiAgICAgICAgIC8vIEZJWE1FOiBDdXJy
ZW50bHkgdGhpcyBqdXN0IGp1bXBzIGJldHdlZW4gcmVzb3VyY2VzIGFuZCByZWxhdGVkIHNvdXJj
ZSBtYXAgcmVzb3VyY2VzLiBJdCBkb2Vzbid0ICJqdW1wIHRvIHN5bWJvbCIgeWV0LgogICAgICAg
ICB0aGlzLl91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRlKCk7CiAKQEAgLTEwMjMs
OSArMTAyNSw3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNv
dXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICAgICAgLy8gU2luZ2xl
IGJyZWFrcG9pbnQuCiAgICAgICAgIGlmIChicmVha3BvaW50cy5sZW5ndGggPT09IDEpIHsKLSAg
ICAgICAgICAgIHZhciBicmVha3BvaW50ID0gYnJlYWtwb2ludHNbMF07Ci0KLSAgICAgICAgICAg
IGJyZWFrcG9pbnQuYXBwZW5kQ29udGV4dE1lbnVJdGVtcyhjb250ZXh0TWVudSwgZXZlbnQudGFy
Z2V0KTsKKyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5hcHBl
bmRDb250ZXh0TWVudUl0ZW1zKGNvbnRleHRNZW51LCBicmVha3BvaW50c1swXSwgZXZlbnQudGFy
Z2V0KTsKIAogICAgICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuaXNTaG93aW5nRGVidWdnZXJU
YWIoKSkgewogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260322</attachid>
            <date>2015-08-31 15:15:04 -0700</date>
            <delta_ts>2015-08-31 15:39:52 -0700</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-127328-20150831151449.patch</filename>
            <type>text/plain</type>
            <size>42007</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
NDU5MDM2Y2ZkOThlZTE2MTBkZTNlYWVlNGRhYzNjZjBhZWM0MDljLi40MzAzYmZjNGVkZDg4OWMy
ZDc3NTNiNjYyZDhiYTIwNmYyZjVlZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw3NyBAQAogMjAxNS0wOC0zMSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSB0aGUgUG9wb3ZlciBjb2RlIG91dCBvZiB0
aGUgQnJlYWtwb2ludCBtb2RlbCBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNzMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbW90aHkg
SGF0Y2hlci4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2lu
dFBvcG92ZXJDb250cm9sbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50UG9wb3ZlckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcy5lZGl0
QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250
cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLnJlbW92ZUJyZWFrcG9pbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90
b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcy50b2dnbGVCcmVha3BvaW50KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFwcGVu
ZENvbnRleHRNZW51SXRlbXMudG9nZ2xlQXV0b0NvbnRpbnVlKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFwcGVuZENvbnRleHRN
ZW51SXRlbXMucmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24pOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29u
dGV4dE1lbnVJdGVtcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJD
b250cm9sbGVyLnByb3RvdHlwZS5zaG93RWRpdEJyZWFrcG9pbnRQb3BvdmVyKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLl9jcmVh
dGVQb3BvdmVyQ29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92
ZXJDb250cm9sbGVyLnByb3RvdHlwZS5fcG9wb3ZlclRvZ2dsZUVuYWJsZWRDaGVja2JveENoYW5n
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5w
cm90b3R5cGUuX3BvcG92ZXJDb25kaXRpb25JbnB1dENoYW5nZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuX3BvcG92ZXJUb2dn
bGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuX3BvcG92ZXJDb25kaXRpb25JbnB1
dEtleURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJv
bGxlci5wcm90b3R5cGUuX3BvcG92ZXJBY3Rpb25zQ3JlYXRlQWRkQWN0aW9uQnV0dG9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBl
Ll9wb3BvdmVyQWN0aW9uc0FkZEFjdGlvbkJ1dHRvbkNsaWNrZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuX3BvcG92ZXJBY3Rp
b25zSW5zZXJ0QnJlYWtwb2ludEFjdGlvblZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYnJlYWtwb2ludEFjdGlvblZpZXdB
cHBlbmRBY3Rpb25WaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3Zl
ckNvbnRyb2xsZXIucHJvdG90eXBlLmJyZWFrcG9pbnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmll
dyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnBy
b3RvdHlwZS5icmVha3BvaW50QWN0aW9uVmlld1Jlc2l6ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUud2lsbERpc21pc3NQb3Bv
dmVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIu
cHJvdG90eXBlLmRpZERpc21pc3NQb3BvdmVyKToKKyAgICAgICAgQWRkZWQgY29udHJvbGxlciBj
bGFzcyB0byBlbmNhcHN1bGF0ZSB2aWV3IGxvZ2ljIHByZXZpb3VzbHkgbG9jYXRlZCBpbiBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1s
OgorICAgICAgICBBZGRlZCBhbmQgdXBkYXRlZCBmaWxlIHBhdGhzLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5C
cmVha3BvaW50LnByb3RvdHlwZS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zLmVkaXRCcmVha3BvaW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5h
cHBlbmRDb250ZXh0TWVudUl0ZW1zLnJlbW92ZUJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmFwcGVuZENvbnRleHRNZW51SXRl
bXMudG9nZ2xlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcy50b2dnbGVBdXRvQ29udGlu
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBl
LmFwcGVuZENvbnRleHRNZW51SXRlbXMucmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmFw
cGVuZENvbnRleHRNZW51SXRlbXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnQucHJvdG90eXBlLl9wb3BvdmVyVG9nZ2xlRW5hYmxlZENoZWNrYm94Q2hhbmdlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuX3Bv
cG92ZXJDb25kaXRpb25JbnB1dENoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLl9wb3BvdmVyVG9nZ2xlQXV0b0NvbnRpbnVlQ2hlY2ti
b3hDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnBy
b3RvdHlwZS5fcG9wb3ZlckNvbmRpdGlvbklucHV0S2V5RG93bik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuX2VkaXRCcmVha3BvaW50UG9wb3Zl
ckNvbnRlbnRFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50LnByb3RvdHlwZS5fcG9wb3ZlckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLl9wb3BvdmVy
QWN0aW9uc0FkZEFjdGlvbkJ1dHRvbkNsaWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLl9wb3BvdmVyQWN0aW9uc0luc2VydEJyZWFrcG9p
bnRBY3Rpb25WaWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50
LnByb3RvdHlwZS5icmVha3BvaW50QWN0aW9uVmlld0FwcGVuZEFjdGlvblZpZXcpOiBEZWxldGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmJyZWFrcG9pbnRB
Y3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmlldyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5wcm90b3R5cGUuYnJlYWtwb2ludEFjdGlvblZpZXdSZXNpemVkKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS53aWxsRGlz
bWlzc1BvcG92ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQu
cHJvdG90eXBlLmRpZERpc21pc3NQb3BvdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LnByb3RvdHlwZS5fc2hvd0VkaXRCcmVha3BvaW50UG9wb3Zlcik6IERl
bGV0ZWQuCisgICAgICAgIFJlbW92ZWQgdmlldyBsb2dpYy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmNzczogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnQuY3Nz
LgorICAgICAgICAoLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQpOgor
ICAgICAgICAoLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQud2lkZSk6
CisgICAgICAgICgucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCA+IGxh
YmVsLnRvZ2dsZSk6CisgICAgICAgICgucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXIt
Y29udGVudCA+IHRhYmxlKToKKyAgICAgICAgKC5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9w
b3Zlci1jb250ZW50ID4gdGFibGUgPiB0ciA+IHRoKToKKyAgICAgICAgKC5wb3BvdmVyIC5lZGl0
LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gdGFibGUgPiB0ciA+IHRkKToKKyAgICAgICAg
KCNlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb25kaXRpb24pOgorICAgICAgICAoI2VkaXQtYnJl
YWtwb2ludC1wb3Bvb3Zlci1hdXRvLWNvbnRpbnVlKToKKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IpOgorICAgICAgICBDcmVhdGVzIGEgQnJlYWtwb2ludFBvcG92
ZXJDb250cm9sbGVyIGluc3RhbmNlLiBUaGUgbGlmZXRpbWUgb2YgdGhlICdFZGl0IEJyZWFrcG9p
bnQnIHZpZXcgaXMgaW50ZXJuYWwgdG8gdGhlCisgICAgICAgIGNvbnRyb2xsZXIsIGFuZCBjYW4n
dCBiZSBpbml0aWF0ZWQgb3V0c2lkZSBvZiBhIGNvbnRleHQgbWVudSBpdGVtIGNsaWNrLgorCisy
MDE1LTA4LTMxICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KKwogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBSZW5kZXJpbmcgRnJhbWUgdGFza3MgbWFraW5nIHVwIDwgMSUgb2YgdGhl
IHNlbGVjdGlvbiBkb24ndCBhcHBlYXIgaW4gdGhlIHBpZSBjaGFydAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NTQ5CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQ
b3BvdmVyQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
M2I4ZjdmOWJiYTM1ZjRjMWJjYTUzMzM3YWZlMGM1MWE4NTBhY2RhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtw
b2ludFBvcG92ZXJDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsMzA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlciA9IGNsYXNzIEJyZWFrcG9p
bnRQb3BvdmVyQ29udHJvbGxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBj
b25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnQgPSBudWxsOworICAgICAgICB0aGlzLl9wb3BvdmVyID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fa2V5Ym9h
cmRTaG9ydGN1dEVzYyA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlKTsKKyAgICAgICAgdGhpcy5f
a2V5Ym9hcmRTaG9ydGN1dEVudGVyID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5FbnRlcik7CisgICAgfQor
CisgICAgLy8gUHVibGljCisKKyAgICBhcHBlbmRDb250ZXh0TWVudUl0ZW1zKGNvbnRleHRNZW51
LCBicmVha3BvaW50LCBicmVha3BvaW50RGlzcGxheUVsZW1lbnQpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKGJyZWFrcG9pbnREaXNwbGF5RWxl
bWVudCksICJCcmVha3BvaW50IHBvcG92ZXIgZGlzcGxheSBlbGVtZW50IG11c3QgYmUgaW4gdGhl
IERPTS4iKTsKKworICAgICAgICBmdW5jdGlvbiBlZGl0QnJlYWtwb2ludCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9wb3BvdmVyLCAiQnJlYWtwb2ludCBw
b3BvdmVyIGFscmVhZHkgZXhpc3RzLiIpOworICAgICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl9jcmVhdGVQb3Bv
dmVyQ29udGVudChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlBvcG92ZXIodGhpcyk7CisgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmNv
bnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQ7CisKKyAgICAgICAgICAgIGxldCBi
b3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoYnJlYWtwb2ludERp
c3BsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAgICAgICAgICAgIGJvdW5k
cy5vcmlnaW4ueCAtPSAxOyAvLyBNb3ZlIHRoZSBhbmNob3IgbGVmdCBvbmUgcGl4ZWwgc28gaXQg
bG9va3MgbW9yZSBjZW50ZXJlZC4KKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIucHJlc2VudChi
b3VuZHMucGFkKDIpLCBbV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9ZXSk7CisKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3Zl
ckNvbnRyb2xsZXIuUG9wb3ZlckNvbmRpdGlvbklucHV0SWQpLnNlbGVjdCgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gcmVtb3ZlQnJlYWtwb2ludCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChicmVh
a3BvaW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUJyZWFrcG9pbnQo
KQorICAgICAgICB7CisgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gIWJyZWFrcG9p
bnQuZGlzYWJsZWQ7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0b2dnbGVBdXRvQ29u
dGludWUoKQorICAgICAgICB7CisgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9
ICFicmVha3BvaW50LmF1dG9Db250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHJldmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9u
KGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFr
cG9pbnQpKQorICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkVkaXQgQnJlYWtwb2ludOKApiIpLCBlZGl0QnJlYWtwb2ludC5iaW5kKHRoaXMp
KTsKKworICAgICAgICBpZiAoYnJlYWtwb2ludC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9pbnQu
ZGlzYWJsZWQpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5k
KHRoaXMpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDYW5jZWwgQXV0b21hdGljIENvbnRpbnVlIiksIHRvZ2dsZUF1dG9Db250aW51
ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgfSBlbHNlIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkK
KyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQuYmluZCh0
aGlzKSk7CisKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmF1dG9Db250aW51ZSAmJiAhYnJlYWtw
b2ludC5kaXNhYmxlZCAmJiBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKQorICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNldCB0byBBdXRv
bWF0aWNhbGx5IENvbnRpbnVlIiksIHRvZ2dsZUF1dG9Db250aW51ZS5iaW5kKHRoaXMpKTsKKwor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1v
dmFibGUoYnJlYWtwb2ludCkpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFy
YXRvcigpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksIHJlbW92ZUJyZWFrcG9pbnQuYmluZCh0aGlz
KSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnJlYWtwb2ludC5fc291cmNlQ29kZUxvY2F0
aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZFNlcGFyYXRvcigpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5hbCBSZXNvdXJjZSIpLCByZXZlYWxPcmln
aW5hbFNvdXJjZUNvZGVMb2NhdGlvbi5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIFByaXZhdGUKKworICAgIF9jcmVhdGVQb3BvdmVyQ29udGVudChicmVha3BvaW50KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVu
dCwgIlBvcG92ZXIgY29udGVudCBlbGVtZW50IGFscmVhZHkgZXhpc3RzLiIpOworICAgICAgICBp
ZiAodGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgICAgICB0aGlzLl9wb3Bv
dmVyQ29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9ICJlZGl0LWJyZWFrcG9p
bnQtcG9wb3Zlci1jb250ZW50IjsKKworICAgICAgICBsZXQgY2hlY2tib3hFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgY2hlY2tib3hFbGVtZW50LnR5
cGUgPSAiY2hlY2tib3giOworICAgICAgICBjaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9ICF0aGlz
Ll9icmVha3BvaW50LmRpc2FibGVkOworICAgICAgICBjaGVja2JveEVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcG9wb3ZlclRvZ2dsZUVuYWJsZWRDaGVja2JveENoYW5n
ZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgbGV0IGNoZWNrYm94TGFiZWwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsYWJlbCIpOworICAgICAgICBjaGVja2JveExhYmVsLmNsYXNzTmFtZSA9
ICJ0b2dnbGUiOworICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZENoaWxkKGNoZWNrYm94RWxl
bWVudCk7CisgICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kKHRoaXMuX2JyZWFrcG9pbnQuc291
cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygpKTsKKworICAgICAgICBsZXQg
dGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOworCisgICAgICAgIGxldCBj
b25kaXRpb25Sb3cgPSB0YWJsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
ciIpKTsKKyAgICAgICAgbGV0IGNvbmRpdGlvbkhlYWRlciA9IGNvbmRpdGlvblJvdy5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpKTsKKyAgICAgICAgbGV0IGNvbmRpdGlv
bkRhdGEgPSBjb25kaXRpb25Sb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dGQiKSk7CisgICAgICAgIGxldCBjb25kaXRpb25MYWJlbCA9IGNvbmRpdGlvbkhlYWRlci5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpKTsKKyAgICAgICAgbGV0IGNv
bmRpdGlvbklucHV0ID0gY29uZGl0aW9uRGF0YS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbnB1dCIpKTsKKyAgICAgICAgY29uZGl0aW9uSW5wdXQuaWQgPSBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLlBvcG92ZXJDb25kaXRpb25JbnB1dElkOwor
ICAgICAgICBjb25kaXRpb25JbnB1dC52YWx1ZSA9IHRoaXMuX2JyZWFrcG9pbnQuY29uZGl0aW9u
IHx8ICIiOworICAgICAgICBjb25kaXRpb25JbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAg
ICAgIGNvbmRpdGlvbklucHV0LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3BvcG92
ZXJDb25kaXRpb25JbnB1dENoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgIGNvbmRpdGlvbklu
cHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9wb3BvdmVyQ29uZGl0aW9uSW5w
dXRLZXlEb3duLmJpbmQodGhpcykpOworICAgICAgICBjb25kaXRpb25JbnB1dC5wbGFjZWhvbGRl
ciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiIpOworICAg
ICAgICBjb25kaXRpb25MYWJlbC5zZXRBdHRyaWJ1dGUoImZvciIsIGNvbmRpdGlvbklucHV0Lmlk
KTsKKyAgICAgICAgY29uZGl0aW9uTGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvbmRpdGlvbiIpOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA3KTog
RGVidWdnZXIuc2V0QnJlYWtwb2ludCBkaWQgbm90IHN1cHBvcnQgb3B0aW9ucy4KKyAgICAgICAg
aWYgKERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludC5zdXBwb3J0cygib3B0aW9ucyIpKSB7Cisg
ICAgICAgICAgICBsZXQgYWN0aW9uUm93ID0gdGFibGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidHIiKSk7CisgICAgICAgICAgICBsZXQgYWN0aW9uSGVhZGVyID0gYWN0aW9u
Um93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIikpOworICAgICAgICAg
ICAgbGV0IGFjdGlvbkRhdGEgPSB0aGlzLl9hY3Rpb25zQ29udGFpbmVyID0gYWN0aW9uUm93LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpOworICAgICAgICAgICAgbGV0
IGFjdGlvbkxhYmVsID0gYWN0aW9uSGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxhYmVsIikpOworICAgICAgICAgICAgYWN0aW9uTGFiZWwudGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFjdGlvbiIpOworCisgICAgICAgICAgICBpZiAoIXRoaXMu
X2JyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3Zl
ckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuV2lkZVBvcG92ZXJDbGFzc05h
bWUpOworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fYnJlYWtwb2lu
dC5hY3Rpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBicmVha3Bv
aW50QWN0aW9uVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcodGhp
cy5fYnJlYWtwb2ludC5hY3Rpb25zW2ldLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fcG9wb3ZlckFjdGlvbnNJbnNlcnRCcmVha3BvaW50QWN0aW9uVmlldyhicmVha3Bv
aW50QWN0aW9uVmlldywgaSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsZXQgb3B0aW9uc1JvdyA9IHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVu
dCA9IHRhYmxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpOworICAg
ICAgICAgICAgaWYgKCF0aGlzLl9icmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKQorICAgICAgICAg
ICAgICAgIG9wdGlvbnNSb3cuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBv
cG92ZXJDb250cm9sbGVyLkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIGxldCBv
cHRpb25zSGVhZGVyID0gb3B0aW9uc1Jvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpKTsKKyAgICAgICAgICAgIGxldCBvcHRpb25zRGF0YSA9IG9wdGlvbnNSb3cuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7CisgICAgICAgICAgICBsZXQg
b3B0aW9uc0xhYmVsID0gb3B0aW9uc0hlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsYWJlbCIpKTsKKyAgICAgICAgICAgIGxldCBvcHRpb25zQ2hlY2tib3ggPSB0aGlz
Ll9wb3BvdmVyT3B0aW9uc0NoZWNrYm94RWxlbWVudCA9IG9wdGlvbnNEYXRhLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpOworICAgICAgICAgICAgbGV0IG9wdGlv
bnNDaGVja2JveExhYmVsID0gb3B0aW9uc0RhdGEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGFiZWwiKSk7CisgICAgICAgICAgICBvcHRpb25zQ2hlY2tib3guaWQgPSAiZWRp
dC1icmVha3BvaW50LXBvcG9vdmVyLWF1dG8tY29udGludWUiOworICAgICAgICAgICAgb3B0aW9u
c0NoZWNrYm94LnR5cGUgPSAiY2hlY2tib3giOworICAgICAgICAgICAgb3B0aW9uc0NoZWNrYm94
LmNoZWNrZWQgPSB0aGlzLl9icmVha3BvaW50LmF1dG9Db250aW51ZTsKKyAgICAgICAgICAgIG9w
dGlvbnNDaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9wb3BvdmVyVG9n
Z2xlQXV0b0NvbnRpbnVlQ2hlY2tib3hDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICAgICAg
b3B0aW9uc0xhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcHRpb25z
Iik7CisgICAgICAgICAgICBvcHRpb25zQ2hlY2tib3hMYWJlbC5zZXRBdHRyaWJ1dGUoImZvciIs
IG9wdGlvbnNDaGVja2JveC5pZCk7CisgICAgICAgICAgICBvcHRpb25zQ2hlY2tib3hMYWJlbC50
ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXV0b21hdGljYWxseSBjb250aW51
ZSBhZnRlciBldmFsdWF0aW5nIik7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9wb3BvdmVy
Q29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hlY2tib3hMYWJlbCk7CisgICAgICAgIHRoaXMu
X3BvcG92ZXJDb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0YWJsZSk7CisgICAgfQorCisgICAg
X3BvcG92ZXJUb2dnbGVFbmFibGVkQ2hlY2tib3hDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludC5kaXNhYmxlZCA9ICFldmVudC50YXJnZXQuY2hlY2tlZDsKKyAg
ICB9CisKKyAgICBfcG9wb3ZlckNvbmRpdGlvbklucHV0Q2hhbmdlZChldmVudCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnQuY29uZGl0aW9uID0gZXZlbnQudGFyZ2V0LnZhbHVlOwor
ICAgIH0KKworICAgIF9wb3BvdmVyVG9nZ2xlQXV0b0NvbnRpbnVlQ2hlY2tib3hDaGFuZ2VkKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSBldmVu
dC50YXJnZXQuY2hlY2tlZDsKKyAgICB9CisKKyAgICBfcG9wb3ZlckNvbmRpdGlvbklucHV0S2V5
RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNj
Lm1hdGNoZXNFdmVudChldmVudCkgfHwgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVudGVyLm1hdGNo
ZXNFdmVudChldmVudCkpIHsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIuZGlzbWlzcygpOwor
ICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgX3BvcG92ZXJBY3Rpb25z
Q3JlYXRlQWRkQWN0aW9uQnV0dG9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3BvcG92ZXJDb250
ZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5CcmVha3BvaW50UG9wb3Zl
ckNvbnRyb2xsZXIuV2lkZVBvcG92ZXJDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9hY3Rpb25z
Q29udGFpbmVyLnJlbW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgbGV0IGFkZEFjdGlvbkJ1dHRv
biA9IHRoaXMuX2FjdGlvbnNDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiYnV0dG9uIikpOworICAgICAgICBhZGRBY3Rpb25CdXR0b24udGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFkZCBBY3Rpb24iKTsKKyAgICAgICAgYWRkQWN0aW9uQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcG9wb3ZlckFjdGlvbnNBZGRBY3Rp
b25CdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworICAgIH0KKworICAgIF9wb3BvdmVyQWN0aW9u
c0FkZEFjdGlvbkJ1dHRvbkNsaWNrZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9wb3Bv
dmVyQ29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBv
cG92ZXJDb250cm9sbGVyLldpZGVQb3BvdmVyQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fYWN0
aW9uc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIGxldCBuZXdBY3Rpb24g
PSB0aGlzLl9icmVha3BvaW50LmNyZWF0ZUFjdGlvbihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5E
ZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUpOworICAgICAgICBsZXQgbmV3QnJlYWtwb2ludEFj
dGlvblZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0FjdGlv
biwgdGhpcyk7CisgICAgICAgIHRoaXMuX3BvcG92ZXJBY3Rpb25zSW5zZXJ0QnJlYWtwb2ludEFj
dGlvblZpZXcobmV3QnJlYWtwb2ludEFjdGlvblZpZXcsIC0xKTsKKyAgICAgICAgdGhpcy5fcG9w
b3Zlck9wdGlvbnNSb3dFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRQb3BvdmVyQ29udHJvbGxlci5IaWRkZW5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRo
aXMuX3BvcG92ZXIudXBkYXRlKCk7CisgICAgfQorCisgICAgX3BvcG92ZXJBY3Rpb25zSW5zZXJ0
QnJlYWtwb2ludEFjdGlvblZpZXcoYnJlYWtwb2ludEFjdGlvblZpZXcsIGluZGV4KQorICAgIHsK
KyAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKKyAgICAgICAgICAgIHRoaXMuX2FjdGlvbnNDb250
YWluZXIuYXBwZW5kQ2hpbGQoYnJlYWtwb2ludEFjdGlvblZpZXcuZWxlbWVudCk7CisgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgbGV0IG5leHRFbGVtZW50ID0gdGhpcy5fYWN0aW9uc0NvbnRh
aW5lci5jaGlsZHJlbltpbmRleCArIDFdIHx8IG51bGw7CisgICAgICAgICAgICB0aGlzLl9hY3Rp
b25zQ29udGFpbmVyLmluc2VydEJlZm9yZShicmVha3BvaW50QWN0aW9uVmlldy5lbGVtZW50LCBu
ZXh0RWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBicmVha3BvaW50QWN0aW9uVmll
d0FwcGVuZEFjdGlvblZpZXcoYnJlYWtwb2ludEFjdGlvblZpZXcsIG5ld0FjdGlvbikKKyAgICB7
CisgICAgICAgIGxldCBuZXdCcmVha3BvaW50QWN0aW9uVmlldyA9IG5ldyBXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludEFjdGlvblZpZXcobmV3QWN0aW9uLCB0aGlzKTsKKworICAgICAgICBsZXQgaW5k
ZXggPSAwOworICAgICAgICBsZXQgY2hpbGRyZW4gPSB0aGlzLl9hY3Rpb25zQ29udGFpbmVyLmNo
aWxkcmVuOworICAgICAgICBmb3IgKGxldCBpID0gMDsgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXSA9PT0gYnJlYWtwb2ludEFjdGlvblZpZXcuZWxl
bWVudCkgeworICAgICAgICAgICAgICAgIGluZGV4ID0gaTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3BvcG92ZXJBY3Rp
b25zSW5zZXJ0QnJlYWtwb2ludEFjdGlvblZpZXcobmV3QnJlYWtwb2ludEFjdGlvblZpZXcsIGlu
ZGV4KTsKKyAgICAgICAgdGhpcy5fcG9wb3Zlck9wdGlvbnNSb3dFbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5IaWRkZW5TdHls
ZUNsYXNzTmFtZSk7CisKKyAgICAgICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKKyAgICB9CisK
KyAgICBicmVha3BvaW50QWN0aW9uVmlld1JlbW92ZUFjdGlvblZpZXcoYnJlYWtwb2ludEFjdGlv
blZpZXcpCisgICAgeworICAgICAgICBicmVha3BvaW50QWN0aW9uVmlldy5lbGVtZW50LnJlbW92
ZSgpOworCisgICAgICAgIGlmICghdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5jaGlsZHJlbi5sZW5n
dGgpIHsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJBY3Rpb25zQ3JlYXRlQWRkQWN0aW9uQnV0
dG9uKCk7CisgICAgICAgICAgICB0aGlzLl9wb3BvdmVyT3B0aW9uc1Jvd0VsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLkhpZGRlblN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zQ2hlY2tib3hF
bGVtZW50LmNoZWNrZWQgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3BvcG92
ZXIudXBkYXRlKCk7CisgICAgfQorCisgICAgYnJlYWtwb2ludEFjdGlvblZpZXdSZXNpemVkKGJy
ZWFrcG9pbnRBY3Rpb25WaWV3KQorICAgIHsKKyAgICAgICAgdGhpcy5fcG9wb3Zlci51cGRhdGUo
KTsKKyAgICB9CisKKyAgICB3aWxsRGlzbWlzc1BvcG92ZXIocG9wb3ZlcikKKyAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BvcG92ZXIgPT09IHBvcG92ZXIpOworICAgICAgICB0
aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9wb3BvdmVy
T3B0aW9uc1Jvd0VsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9wb3BvdmVyT3B0aW9uc0No
ZWNrYm94RWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWluZXIgPSBu
dWxsOworICAgICAgICB0aGlzLl9wb3BvdmVyID0gbnVsbDsKKyAgICB9CisKKyAgICBkaWREaXNt
aXNzUG9wb3Zlcihwb3BvdmVyKQorICAgIHsKKyAgICAgICAgLy8gUmVtb3ZlIEV2YWx1YXRlIGFu
ZCBQcm9iZSBhY3Rpb25zIHRoYXQgaGF2ZSBubyBkYXRhLgorICAgICAgICBsZXQgZW1wdHlBY3Rp
b25zID0gdGhpcy5fYnJlYWtwb2ludC5hY3Rpb25zLmZpbHRlcihmdW5jdGlvbihhY3Rpb24pIHsK
KyAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSAhPT0gV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZS5FdmFsdWF0ZSAmJiBhY3Rpb24udHlwZSAhPT0gV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRBY3Rpb24uVHlwZS5Qcm9iZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm4gIShhY3Rpb24uZGF0YSAmJiBhY3Rpb24uZGF0YS50cmltKCkpOwor
ICAgICAgICB9KTsKKworICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgZW1wdHlBY3Rpb25zKQor
ICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludC5yZW1vdmVBY3Rpb24oYWN0aW9uKTsKKworICAg
ICAgICB0aGlzLl9icmVha3BvaW50ID0gbnVsbDsKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLldpZGVQb3BvdmVyQ2xhc3NOYW1lID0gIndpZGUi
OworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5Qb3BvdmVyQ29uZGl0
aW9uSW5wdXRJZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb25kaXRpb24iOworV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5IaWRkZW5TdHlsZUNsYXNzTmFtZSA9
ICJoaWRkZW4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCmluZGV4IDBiMGRjMDAxMTQwYzI2ZDZkZGQyZjk3Y2I4N2UyOTU2NDE4MzkzMmMuLmIwYjRi
NTkyZDA5MjM3YzVjNGM2NjJkYzY1Nzc1YmI4ZDEyNGQ3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTM0LDggKzM0LDggQEAKICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVJY29ucy5j
c3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvQmV6aWVyRWRpdG9y
LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Cb3hNb2RlbERl
dGFpbHNTZWN0aW9uUm93LmNzcyI+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9CcmVha3BvaW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5jc3MiPgorICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iVmlld3MvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmNzcyI+CiAgICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuY3Nz
Ij4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0J1dHRvbk5hdmlnYXRp
b25JdGVtLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9CdXR0
b25Ub29sYmFySXRlbS5jc3MiPgpAQCAtNTgzLDYgKzU4Myw3IEBACiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQmFzaWNCbG9ja0Fubm90YXRvci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyYW5jaE1hbmFnZXIuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xs
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NTdHlsZU1h
bmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Db2RlTWly
cm9yQ29sb3JFZGl0aW5nQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0NvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
QnJlYWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9CcmVha3BvaW50LmpzCmluZGV4IDBjZGYzZTQ2YmYzM2ZhNzNlYjEwN2JiYjE1YzVmMDkzNGZj
ZGRmMWIuLmQ1MThmNzE0NDQ1ZmFiMjQxYWI2ODI4ODhjMzU1YWI1MDNkOGZkMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVh
a3BvaW50LmpzCkBAIC0yMTMsNjIgKzIxMyw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50ID0g
Y2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgdGhp
cy5kaXNhYmxlZCA9IHRydWU7CiAgICAgfQogCi0gICAgYXBwZW5kQ29udGV4dE1lbnVJdGVtcyhj
b250ZXh0TWVudSwgYnJlYWtwb2ludERpc3BsYXlFbGVtZW50KQotICAgIHsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoZG9jdW1lbnQuYm9keS5jb250YWlucyhicmVha3BvaW50RGlzcGxheUVsZW1l
bnQpLCAiYnJlYWtwb2ludCBwb3BvdmVyIGRpc3BsYXkgZWxlbWVudCBtdXN0IGJlIGluIHRoZSBE
T00iKTsKLQotICAgICAgICB2YXIgYm91bmRpbmdDbGllbnRSZWN0ID0gYnJlYWtwb2ludERpc3Bs
YXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotCi0gICAgICAgIGZ1bmN0aW9uIGVk
aXRCcmVha3BvaW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy5fc2hvd0VkaXRCcmVh
a3BvaW50UG9wb3Zlcihib3VuZGluZ0NsaWVudFJlY3QpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gcmVtb3ZlQnJlYWtwb2ludCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlzKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUJyZWFrcG9pbnQoKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB0aGlzLmRpc2FibGVkID0gIXRoaXMuZGlzYWJsZWQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiB0b2dnbGVBdXRvQ29udGludWUoKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB0aGlzLmF1dG9Db250aW51ZSA9ICF0aGlzLmF1dG9Db250aW51ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIHJldmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291
cmNlQ29kZUxvY2F0aW9uKHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRFZGl0
YWJsZSh0aGlzKSkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJFZGl0IEJyZWFrcG9pbnTigKYiKSwgZWRpdEJyZWFrcG9pbnQuYmluZCh0
aGlzKSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuYXV0b0NvbnRpbnVlICYmICF0aGlzLmRpc2FibGVk
KSB7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGlzYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7
Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2FuY2VsIEF1dG9tYXRpYyBDb250aW51ZSIpLCB0b2dnbGVBdXRvQ29udGludWUuYmluZCh0
aGlzKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGlzYWJsZWQpCi0gICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBCcmVh
a3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJF
bmFibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykpOwotCi0gICAg
ICAgIGlmICghdGhpcy5hdXRvQ29udGludWUgJiYgIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5hY3Rp
b25zLmxlbmd0aCkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTZXQgdG8gQXV0b21hdGljYWxseSBDb250aW51ZSIpLCB0b2dnbGVBdXRv
Q29udGludWUuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHRoaXMpKSB7Ci0gICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludCIpLCByZW1vdmVC
cmVha3BvaW50LmJpbmQodGhpcykpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlvbigpKSB7Ci0gICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2Ui
KSwgcmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24uYmluZCh0aGlzKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KICAgICBjcmVhdGVBY3Rpb24odHlwZSwgcHJlY2VkaW5nQWN0aW9uLCBkYXRh
KQogICAgIHsKICAgICAgICAgdmFyIG5ld0FjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludEFjdGlvbih0aGlzLCB0eXBlLCBkYXRhIHx8IG51bGwpOwpAQCAtMzU5LDIxMSArMzAzLDYg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gYWN0aW9uczsKICAgICB9CiAKLSAgICBf
cG9wb3ZlclRvZ2dsZUVuYWJsZWRDaGVja2JveENoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAg
ICB0aGlzLmRpc2FibGVkID0gIWV2ZW50LnRhcmdldC5jaGVja2VkOwotICAgIH0KLQotICAgIF9w
b3BvdmVyQ29uZGl0aW9uSW5wdXRDaGFuZ2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5j
b25kaXRpb24gPSBldmVudC50YXJnZXQudmFsdWU7Ci0gICAgfQotCi0gICAgX3BvcG92ZXJUb2dn
bGVBdXRvQ29udGludWVDaGVja2JveENoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlz
LmF1dG9Db250aW51ZSA9IGV2ZW50LnRhcmdldC5jaGVja2VkOwotICAgIH0KLQotICAgIF9wb3Bv
dmVyQ29uZGl0aW9uSW5wdXRLZXlEb3duKGV2ZW50KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2tleWJvYXJkU2hvcnRjdXRFc2MubWF0Y2hlc0V2ZW50KGV2ZW50KSB8fCB0aGlzLl9rZXlib2Fy
ZFNob3J0Y3V0RW50ZXIubWF0Y2hlc0V2ZW50KGV2ZW50KSkgewotICAgICAgICAgICAgdGhpcy5f
cG9wb3Zlci5kaXNtaXNzKCk7Ci0gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsK
LSAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBfZWRpdEJyZWFrcG9pbnRQb3BvdmVyQ29udGVudEVsZW1lbnQoKQotICAgIHsKLSAgICAg
ICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyQ2xhc3NOYW1lOwotCi0gICAgICAgIHZhciBjaGVja2Jv
eEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgICAgICBjaGVj
a2JveEVsZW1lbnQudHlwZSA9ICJjaGVja2JveCI7Ci0gICAgICAgIGNoZWNrYm94RWxlbWVudC5j
aGVja2VkID0gIXRoaXMuX2Rpc2FibGVkOwotICAgICAgICBjaGVja2JveEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcG9wb3ZlclRvZ2dsZUVuYWJsZWRDaGVja2JveENo
YW5nZWQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgdmFyIGNoZWNrYm94TGFiZWwgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwotICAgICAgICBjaGVja2JveExhYmVsLmNsYXNzTmFt
ZSA9ICJ0b2dnbGUiOwotICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZENoaWxkKGNoZWNrYm94
RWxlbWVudCk7Ci0gICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kKHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbi5kaXNwbGF5TG9jYXRpb25TdHJpbmcoKSk7Ci0KLSAgICAgICAgdmFyIHRhYmxlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKLQotICAgICAgICB2YXIgY29uZGl0aW9u
Um93ID0gdGFibGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSk7Ci0g
ICAgICAgIHZhciBjb25kaXRpb25IZWFkZXIgPSBjb25kaXRpb25Sb3cuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKSk7Ci0gICAgICAgIHZhciBjb25kaXRpb25EYXRhID0g
Y29uZGl0aW9uUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpOwot
ICAgICAgICB2YXIgY29uZGl0aW9uTGFiZWwgPSBjb25kaXRpb25IZWFkZXIuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKSk7Ci0gICAgICAgIHZhciBjb25kaXRpb25J
bnB1dCA9IGNvbmRpdGlvbkRhdGEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKSk7Ci0gICAgICAgIGNvbmRpdGlvbklucHV0LmlkID0gV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQuUG9wb3ZlckNvbmRpdGlvbklucHV0SWQ7Ci0gICAgICAgIGNvbmRpdGlvbklucHV0LnZh
bHVlID0gdGhpcy5fY29uZGl0aW9uIHx8ICIiOwotICAgICAgICBjb25kaXRpb25JbnB1dC5zcGVs
bGNoZWNrID0gZmFsc2U7Ci0gICAgICAgIGNvbmRpdGlvbklucHV0LmFkZEV2ZW50TGlzdGVuZXIo
ImNoYW5nZSIsIHRoaXMuX3BvcG92ZXJDb25kaXRpb25JbnB1dENoYW5nZWQuYmluZCh0aGlzKSk7
Ci0gICAgICAgIGNvbmRpdGlvbklucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlz
Ll9wb3BvdmVyQ29uZGl0aW9uSW5wdXRLZXlEb3duLmJpbmQodGhpcykpOwotICAgICAgICBjb25k
aXRpb25JbnB1dC5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uZGl0aW9u
YWwgZXhwcmVzc2lvbiIpOwotICAgICAgICBjb25kaXRpb25MYWJlbC5zZXRBdHRyaWJ1dGUoImZv
ciIsIGNvbmRpdGlvbklucHV0LmlkKTsKLSAgICAgICAgY29uZGl0aW9uTGFiZWwudGV4dENvbnRl
bnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbmRpdGlvbiIpOwotCi0gICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyA3KTogRGVidWdnZXIuc2V0QnJlYWtwb2ludCBkaWQgbm90IHN1cHBv
cnQgb3B0aW9ucy4KLSAgICAgICAgaWYgKERlYnVnZ2VyQWdlbnQuc2V0QnJlYWtwb2ludC5zdXBw
b3J0cygib3B0aW9ucyIpKSB7Ci0gICAgICAgICAgICB2YXIgYWN0aW9uUm93ID0gdGFibGUuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSk7Ci0gICAgICAgICAgICB2YXIg
YWN0aW9uSGVhZGVyID0gYWN0aW9uUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRoIikpOwotICAgICAgICAgICAgdmFyIGFjdGlvbkRhdGEgPSB0aGlzLl9hY3Rpb25zQ29u
dGFpbmVyID0gYWN0aW9uUm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRk
IikpOwotICAgICAgICAgICAgdmFyIGFjdGlvbkxhYmVsID0gYWN0aW9uSGVhZGVyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIikpOwotICAgICAgICAgICAgYWN0aW9u
TGFiZWwudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFjdGlvbiIpOwotCi0g
ICAgICAgICAgICBpZiAoIXRoaXMuX2FjdGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgICAgIHRo
aXMuX3BvcG92ZXJBY3Rpb25zQ3JlYXRlQWRkQWN0aW9uQnV0dG9uKCk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5XaWRlUG9wb3ZlckNsYXNzTmFtZSk7Ci0g
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9hY3Rpb25zLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBicmVha3BvaW50QWN0aW9uVmlldyA9IG5l
dyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcodGhpcy5fYWN0aW9uc1tpXSwgdGhp
cywgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJBY3Rpb25zSW5zZXJ0
QnJlYWtwb2ludEFjdGlvblZpZXcoYnJlYWtwb2ludEFjdGlvblZpZXcsIGkpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIG9wdGlvbnNSb3cgPSB0
aGlzLl9wb3BvdmVyT3B0aW9uc1Jvd0VsZW1lbnQgPSB0YWJsZS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0ciIpKTsKLSAgICAgICAgICAgIGlmICghdGhpcy5fYWN0aW9ucy5s
ZW5ndGgpCi0gICAgICAgICAgICAgICAgb3B0aW9uc1Jvdy5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHZhciBv
cHRpb25zSGVhZGVyID0gb3B0aW9uc1Jvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpKTsKLSAgICAgICAgICAgIHZhciBvcHRpb25zRGF0YSA9IG9wdGlvbnNSb3cuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7Ci0gICAgICAgICAgICB2YXIg
b3B0aW9uc0xhYmVsID0gb3B0aW9uc0hlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsYWJlbCIpKTsKLSAgICAgICAgICAgIHZhciBvcHRpb25zQ2hlY2tib3ggPSB0aGlz
Ll9wb3BvdmVyT3B0aW9uc0NoZWNrYm94RWxlbWVudCA9IG9wdGlvbnNEYXRhLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpOwotICAgICAgICAgICAgdmFyIG9wdGlv
bnNDaGVja2JveExhYmVsID0gb3B0aW9uc0RhdGEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgibGFiZWwiKSk7Ci0gICAgICAgICAgICBvcHRpb25zQ2hlY2tib3guaWQgPSBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC5Qb3BvdmVyT3B0aW9uc0F1dG9Db250aW51ZUlucHV0SWQ7Ci0g
ICAgICAgICAgICBvcHRpb25zQ2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7Ci0gICAgICAgICAg
ICBvcHRpb25zQ2hlY2tib3guY2hlY2tlZCA9IHRoaXMuX2F1dG9Db250aW51ZTsKLSAgICAgICAg
ICAgIG9wdGlvbnNDaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9wb3Bv
dmVyVG9nZ2xlQXV0b0NvbnRpbnVlQ2hlY2tib3hDaGFuZ2VkLmJpbmQodGhpcykpOwotICAgICAg
ICAgICAgb3B0aW9uc0xhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJP
cHRpb25zIik7Ci0gICAgICAgICAgICBvcHRpb25zQ2hlY2tib3hMYWJlbC5zZXRBdHRyaWJ1dGUo
ImZvciIsIG9wdGlvbnNDaGVja2JveC5pZCk7Ci0gICAgICAgICAgICBvcHRpb25zQ2hlY2tib3hM
YWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXV0b21hdGljYWxseSBj
b250aW51ZSBhZnRlciBldmFsdWF0aW5nIik7Ci0gICAgICAgIH0KLQotICAgICAgICBjb250ZW50
LmFwcGVuZENoaWxkKGNoZWNrYm94TGFiZWwpOwotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxk
KHRhYmxlKTsKLQotICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9Ci0KLSAgICBfcG9wb3Zl
ckFjdGlvbnNDcmVhdGVBZGRBY3Rpb25CdXR0b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fcG9w
b3ZlckNvbnRlbnRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQuV2lkZVBvcG92ZXJDbGFzc05hbWUpOwotICAgICAgICB0aGlzLl9hY3Rpb25zQ29udGFpbmVy
LnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgdmFyIGFkZEFjdGlvbkJ1dHRvbiA9IHRoaXMu
X2FjdGlvbnNDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0
dG9uIikpOwotICAgICAgICBhZGRBY3Rpb25CdXR0b24udGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFkZCBBY3Rpb24iKTsKLSAgICAgICAgYWRkQWN0aW9uQnV0dG9uLmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcG9wb3ZlckFjdGlvbnNBZGRBY3Rpb25CdXR0b25D
bGlja2VkLmJpbmQodGhpcykpOwotICAgIH0KLQotICAgIF9wb3BvdmVyQWN0aW9uc0FkZEFjdGlv
bkJ1dHRvbkNsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl9wb3BvdmVyQ29udGVu
dEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5XaWRlUG9wb3Zl
ckNsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuX2FjdGlvbnNDb250YWluZXIucmVtb3ZlQ2hpbGRy
ZW4oKTsKLQotICAgICAgICB2YXIgbmV3QWN0aW9uID0gdGhpcy5jcmVhdGVBY3Rpb24oV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnQuRGVmYXVsdEJyZWFrcG9pbnRBY3Rpb25UeXBlKTsKLSAgICAgICAg
dmFyIG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50
QWN0aW9uVmlldyhuZXdBY3Rpb24sIHRoaXMpOwotICAgICAgICB0aGlzLl9wb3BvdmVyQWN0aW9u
c0luc2VydEJyZWFrcG9pbnRBY3Rpb25WaWV3KG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3LCAtMSk7
Ci0gICAgICAgIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAg
dGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAgICB9Ci0KLSAgICBfcG9wb3ZlckFjdGlvbnNJbnNl
cnRCcmVha3BvaW50QWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldywgaW5kZXgpCi0gICAg
ewotICAgICAgICBpZiAoaW5kZXggPT09IC0xKQotICAgICAgICAgICAgdGhpcy5fYWN0aW9uc0Nv
bnRhaW5lci5hcHBlbmRDaGlsZChicmVha3BvaW50QWN0aW9uVmlldy5lbGVtZW50KTsKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgbmV4dEVsZW1lbnQgPSB0aGlzLl9hY3Rpb25zQ29u
dGFpbmVyLmNoaWxkcmVuW2luZGV4ICsgMV0gfHwgbnVsbDsKLSAgICAgICAgICAgIHRoaXMuX2Fj
dGlvbnNDb250YWluZXIuaW5zZXJ0QmVmb3JlKGJyZWFrcG9pbnRBY3Rpb25WaWV3LmVsZW1lbnQs
IG5leHRFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJyZWFrcG9pbnRBY3Rpb25W
aWV3QXBwZW5kQWN0aW9uVmlldyhicmVha3BvaW50QWN0aW9uVmlldywgbmV3QWN0aW9uKQotICAg
IHsKLSAgICAgICAgdmFyIG5ld0JyZWFrcG9pbnRBY3Rpb25WaWV3ID0gbmV3IFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50QWN0aW9uVmlldyhuZXdBY3Rpb24sIHRoaXMpOwotCi0gICAgICAgIHZhciBp
bmRleCA9IDA7Ci0gICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX2FjdGlvbnNDb250YWluZXIu
Y2hpbGRyZW47Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBjaGlsZHJlbi5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgaWYgKGNoaWxkcmVuW2ldID09PSBicmVha3BvaW50QWN0aW9uVmlldy5l
bGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5fcG9wb3ZlckFj
dGlvbnNJbnNlcnRCcmVha3BvaW50QWN0aW9uVmlldyhuZXdCcmVha3BvaW50QWN0aW9uVmlldywg
aW5kZXgpOwotICAgICAgICB0aGlzLl9wb3BvdmVyT3B0aW9uc1Jvd0VsZW1lbnQuY2xhc3NMaXN0
LnJlbW92ZShXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5IaWRkZW5TdHlsZUNsYXNzTmFtZSk7Ci0K
LSAgICAgICAgdGhpcy5fcG9wb3Zlci51cGRhdGUoKTsKLSAgICB9Ci0KLSAgICBicmVha3BvaW50
QWN0aW9uVmlld1JlbW92ZUFjdGlvblZpZXcoYnJlYWtwb2ludEFjdGlvblZpZXcpCi0gICAgewot
ICAgICAgICBicmVha3BvaW50QWN0aW9uVmlldy5lbGVtZW50LnJlbW92ZSgpOwotCi0gICAgICAg
IGlmICghdGhpcy5fYWN0aW9uc0NvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAg
ICAgIHRoaXMuX3BvcG92ZXJBY3Rpb25zQ3JlYXRlQWRkQWN0aW9uQnV0dG9uKCk7Ci0gICAgICAg
ICAgICB0aGlzLl9wb3BvdmVyT3B0aW9uc1Jvd0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludC5IaWRkZW5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICB0aGlz
Ll9wb3BvdmVyT3B0aW9uc0NoZWNrYm94RWxlbWVudC5jaGVja2VkID0gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICB0aGlzLl9wb3BvdmVyLnVwZGF0ZSgpOwotICAgIH0KLQotICAgIGJyZWFr
cG9pbnRBY3Rpb25WaWV3UmVzaXplZChicmVha3BvaW50QWN0aW9uVmlldykKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX3BvcG92ZXIudXBkYXRlKCk7Ci0gICAgfQotCi0gICAgd2lsbERpc21pc3NQb3Bv
dmVyKHBvcG92ZXIpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wb3BvdmVy
ID09PSBwb3BvdmVyKTsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVu
dDsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3BvcG92ZXJPcHRpb25zUm93RWxlbWVudDsKLSAgICAg
ICAgZGVsZXRlIHRoaXMuX3BvcG92ZXJPcHRpb25zQ2hlY2tib3hFbGVtZW50OwotICAgICAgICBk
ZWxldGUgdGhpcy5fYWN0aW9uc0NvbnRhaW5lcjsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3BvcG92
ZXI7Ci0gICAgfQotCi0gICAgZGlkRGlzbWlzc1BvcG92ZXIocG9wb3ZlcikKLSAgICB7Ci0gICAg
ICAgIC8vIFJlbW92ZSBFdmFsdWF0ZSBhbmQgUHJvYmUgYWN0aW9ucyB0aGF0IGhhdmUgbm8gZGF0
YS4KLSAgICAgICAgdmFyIGVtcHR5QWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMuZmlsdGVyKGZ1bmN0
aW9uKGFjdGlvbikgewotICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlICE9PSBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlICYmIGFjdGlvbi50eXBlICE9PSBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiAhKGFjdGlvbi5kYXRhICYmIGFjdGlvbi5k
YXRhLnRyaW0oKSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGZvciAodmFyIGFjdGlvbiBvZiBl
bXB0eUFjdGlvbnMpCi0gICAgICAgICAgICB0aGlzLnJlbW92ZUFjdGlvbihhY3Rpb24pOwotICAg
IH0KLQotICAgIF9zaG93RWRpdEJyZWFrcG9pbnRQb3BvdmVyKGJvdW5kaW5nQ2xpZW50UmVjdCkK
LSAgICB7Ci0gICAgICAgIHZhciBib3VuZHMgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNs
aWVudFJlY3QoYm91bmRpbmdDbGllbnRSZWN0KTsKLSAgICAgICAgYm91bmRzLm9yaWdpbi54IC09
IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBsZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3JlIGNl
bnRlcmVkLgotCi0gICAgICAgIHRoaXMuX3BvcG92ZXIgPSB0aGlzLl9wb3BvdmVyIHx8IG5ldyBX
ZWJJbnNwZWN0b3IuUG9wb3Zlcih0aGlzKTsKLSAgICAgICAgdGhpcy5fcG9wb3Zlci5jb250ZW50
ID0gdGhpcy5fZWRpdEJyZWFrcG9pbnRQb3BvdmVyQ29udGVudEVsZW1lbnQoKTsKLSAgICAgICAg
dGhpcy5fcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVk
Z2UuTUFYX1ldKTsKLQotICAgICAgICBpZiAoIXRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MpIHsK
LSAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5
LkVzY2FwZSk7Ci0gICAgICAgICAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuS2V5LkVudGVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LlBvcG92ZXJDb25kaXRpb25JbnB1dElk
KS5zZWxlY3QoKTsKLSAgICB9Ci0KICAgICBfc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFu
Z2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRh
dGEpOwpAQCAtNTc1LDEyICszMTQsNiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCA9IGNsYXNz
IEJyZWFrcG9pbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgfQogfTsKIAotV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3ZlckNsYXNzTmFtZSA9ICJlZGl0LWJyZWFrcG9pbnQt
cG9wb3Zlci1jb250ZW50IjsKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50LldpZGVQb3BvdmVyQ2xh
c3NOYW1lID0gIndpZGUiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuUG9wb3ZlckNvbmRpdGlv
bklucHV0SWQgPSAiZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29uZGl0aW9uIjsKLVdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50LlBvcG92ZXJPcHRpb25zQXV0b0NvbnRpbnVlSW5wdXRJZCA9ICJlZGl0
LWJyZWFrcG9pbnQtcG9wb292ZXItYXV0by1jb250aW51ZSI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtw
b2ludC5IaWRkZW5TdHlsZUNsYXNzTmFtZSA9ICJoaWRkZW4iOwotCiBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5EZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtw
b2ludEFjdGlvbi5UeXBlLkxvZzsKIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuVHlwZUlkZW50
aWZpZXIgPSAiYnJlYWtwb2ludCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnQuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZjNmYTM2Mjc5ZDliY2UyYjc4MTdmZjk1OWY0YmI3YTM0NTk1OGI3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnQuY3NzCisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQt
cG9wb3Zlci1jb250ZW50IHsKLSAgICB3aWR0aDogNDIwcHg7Ci0gICAgcGFkZGluZzogNXB4IDE1
cHg7Ci19Ci0KLS5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50LndpZGUg
ewotICAgIHdpZHRoOiA0NjBweDsKLX0KLQotLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3Bv
dmVyLWNvbnRlbnQgPiBsYWJlbC50b2dnbGUgewotICAgIGNvbG9yOiBibGFjazsKLSAgICBmb250
LXdlaWdodDogYm9sZDsKLSAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKLSAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOwotfQotCi0ucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29u
dGVudCA+IHRhYmxlIHsKLSAgICB3aWR0aDogMTAwJTsKLX0KLQotLnBvcG92ZXIgLmVkaXQtYnJl
YWtwb2ludC1wb3BvdmVyLWNvbnRlbnQgPiB0YWJsZSA+IHRyID4gdGggewotICAgIGNvbG9yOiBo
c2woMCwgMCUsIDM0JSk7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgdGV4dC1hbGlnbjog
cmlnaHQ7Ci0gICAgd2lkdGg6IDFweDsgLyogU2hyaW5rIHRvIGZpdC4gKi8KLSAgICB2ZXJ0aWNh
bC1hbGlnbjogdG9wOwotICAgIGxpbmUtaGVpZ2h0OiAyM3B4OwotfQotCi0ucG9wb3ZlciAuZWRp
dC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCA+IHRhYmxlID4gdHIgPiB0ZCB7Ci0gICAgcGFk
ZGluZy1sZWZ0OiA1cHg7Ci19Ci0KLSNlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb25kaXRpb24g
ewotICAgIHdpZHRoOiAxMDAlOwotfQotCi0jZWRpdC1icmVha3BvaW50LXBvcG9vdmVyLWF1dG8t
Y29udGludWUgewotICAgIG1hcmdpbi1sZWZ0OiAwOwotICAgIG1hcmdpbi1yaWdodDogNHB4Owot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
QnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmYzYWU0N2JjNjA3OGI3MzZlMjRmNTg3YTg1YzUxNTA2NDNiNjRmOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRQb3BvdmVyQ29udHJvbGxlci5jc3MKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworLnBvcG92ZXIgLmVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQgeworICAgIHdp
ZHRoOiA0MjBweDsKKyAgICBwYWRkaW5nOiA1cHggMTVweDsKK30KKworLnBvcG92ZXIgLmVkaXQt
YnJlYWtwb2ludC1wb3BvdmVyLWNvbnRlbnQud2lkZSB7CisgICAgd2lkdGg6IDQ2MHB4OworfQor
CisucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCA+IGxhYmVsLnRvZ2ds
ZSB7CisgICAgY29sb3I6IGJsYWNrOworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAgIHRleHQt
b3ZlcmZsb3c6IGVsbGlwc2lzOworICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cit9CisKKy5wb3Bv
dmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250ZW50ID4gdGFibGUgeworICAgIHdpZHRo
OiAxMDAlOworfQorCisucG9wb3ZlciAuZWRpdC1icmVha3BvaW50LXBvcG92ZXItY29udGVudCA+
IHRhYmxlID4gdHIgPiB0aCB7CisgICAgY29sb3I6IGhzbCgwLCAwJSwgMzQlKTsKKyAgICBmb250
LXdlaWdodDogYm9sZDsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICB3aWR0aDogMXB4OyAv
KiBTaHJpbmsgdG8gZml0LiAqLworICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CisgICAgbGluZS1o
ZWlnaHQ6IDIzcHg7Cit9CisKKy5wb3BvdmVyIC5lZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1jb250
ZW50ID4gdGFibGUgPiB0ciA+IHRkIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDVweDsKK30KKworI2Vk
aXQtYnJlYWtwb2ludC1wb3BvdmVyLWNvbmRpdGlvbiB7CisgICAgd2lkdGg6IDEwMCU7Cit9CisK
KyNlZGl0LWJyZWFrcG9pbnQtcG9wb292ZXItYXV0by1jb250aW51ZSB7CisgICAgbWFyZ2luLWxl
ZnQ6IDA7CisgICAgbWFyZ2luLXJpZ2h0OiA0cHg7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0
RWRpdG9yLmpzCmluZGV4IGNmNGRkOTJiNDljMzk3NWViMDRkNjZkY2U3NjJlYjMyOTQ4MmMyMzcu
LjNjYzc4NGEwOWNmYzMyODMyOGMyNTFiZDViMzc4ZDk4NzllNjc2NmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRp
dG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nv
dXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC00Nyw2ICs0Nyw4IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2Vi
SW5zcGVjCiAKICAgICAgICAgdGhpcy5faXNQcm9iYWJseU1pbmlmaWVkID0gZmFsc2U7CiAKKyAg
ICAgICAgdGhpcy5fYnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXI7CisKICAgICAgICAgLy8gRklYTUU6IEN1cnJl
bnRseSB0aGlzIGp1c3QganVtcHMgYmV0d2VlbiByZXNvdXJjZXMgYW5kIHJlbGF0ZWQgc291cmNl
IG1hcCByZXNvdXJjZXMuIEl0IGRvZXNuJ3QgImp1bXAgdG8gc3ltYm9sIiB5ZXQuCiAgICAgICAg
IHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKIApAQCAtMTAyMyw5
ICsxMDI1LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291
cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgICAgICAvLyBTaW5nbGUg
YnJlYWtwb2ludC4KICAgICAgICAgaWYgKGJyZWFrcG9pbnRzLmxlbmd0aCA9PT0gMSkgewotICAg
ICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1swXTsKLQotICAgICAgICAgICAg
YnJlYWtwb2ludC5hcHBlbmRDb250ZXh0TWVudUl0ZW1zKGNvbnRleHRNZW51LCBldmVudC50YXJn
ZXQpOworICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmFwcGVu
ZENvbnRleHRNZW51SXRlbXMoY29udGV4dE1lbnUsIGJyZWFrcG9pbnRzWzBdLCBldmVudC50YXJn
ZXQpOwogCiAgICAgICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5pc1Nob3dpbmdEZWJ1Z2dlclRh
YigpKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>