<?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>48711</bug_id>
          
          <creation_ts>2010-10-30 03:45:22 -0700</creation_ts>
          <short_desc>Web Inspector: event listener breakpoints are not preserved upon navigation / refresh.</short_desc>
          <delta_ts>2010-11-02 03:44:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>podivilov</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302278</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-30 03:45:22 -0700</bug_when>
    <thetext>Also, checkboxes should be smaller (as in regular breakpoints).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302281</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-30 03:53:04 -0700</bug_when>
    <thetext>Also, neither DOM nor XHR breakpoints are preserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302732</commentid>
    <comment_count>2</comment_count>
      <attachid>72513</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-11-01 09:10:50 -0700</bug_when>
    <thetext>Created attachment 72513
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302779</commentid>
    <comment_count>3</comment_count>
      <attachid>72513</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-01 10:51:32 -0700</bug_when>
    <thetext>Comment on attachment 72513
Patch.

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

&gt; WebCore/inspector/front-end/BreakpointManager.js:259
&gt; +        for (var i = 0; i &lt; breakpoints.length; ++i) {

breakpoints can be non-array / empty.

&gt; WebCore/inspector/front-end/BreakpointManager.js:261
&gt; +                this.createEventListenerBreakpoint(breakpoints[i].condition.eventName);

Breakpoint can be of wrong structure here as well.

&gt; WebCore/inspector/front-end/BreakpointManager.js:272
&gt; +        for (var i = 0; i &lt; breakpoints.length; ++i) {

ditto

&gt; WebCore/inspector/front-end/BreakpointManager.js:283
&gt; +        function didPushNodeByPathToFrontend(path, nodeId)

We usually put local functions above the usage.

&gt; WebCore/inspector/front-end/Settings.js:68
&gt; +    this.installProjectSetting(&quot;nativeBreakpoints&quot;, {});

{} -&gt; []

&gt; WebCore/inspector/front-end/inspector.js:1570
&gt; +    this.applicationSettings.inspectedURLChanged(url);

It is strange that project-related settings that are affected by the URL change are accessed via applicationSettings object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303281</commentid>
    <comment_count>4</comment_count>
      <attachid>72642</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-11-02 02:52:52 -0700</bug_when>
    <thetext>Created attachment 72642
Patch.

All comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303296</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-11-02 03:44:11 -0700</bug_when>
    <thetext>Committed r71109: &lt;http://trac.webkit.org/changeset/71109&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72513</attachid>
            <date>2010-11-01 09:10:50 -0700</date>
            <delta_ts>2010-11-02 02:52:52 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26907</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTBkZjg1ZC4uNWM2OTkwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0xMS0wMSAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwZXJzaXN0IG5hdGl2ZSBicmVh
a3BvaW50cyBpbiBsb2NhbFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ4NzExCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNj
b25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpj
bGVhck5hdGl2ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFn
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV2
ZW50TGlzdGVuZXJCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyQnJlYWtwb2ludC5ldmVudE5hbWVGb3JVSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnQucHJvdG90eXBlLl91aUV2ZW50TmFtZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuWEhSQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWEhSQnJl
YWtwb2ludC5wcm90b3R5cGUucG9wdWxhdGVTdGF0dXNNZXNzYWdlRWxlbWVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLmFkZEJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJv
dG90eXBlLl9icmVha3BvaW50SGl0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50
SXRlbS5wcm90b3R5cGUuX2hpdFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzU2lkZWJhclBhbmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3Mp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZS5pbnNwZWN0ZWRVUkxD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5ncy5wcm90b3R5cGUuX2Zvcm1h
dFByb2plY3RLZXkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
czoKKyAgICAgICAgKC5wYW5lIC5icmVha3BvaW50LWhpdCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IucmVzZXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLmluc3BlY3RlZFVSTENoYW5nZWQpOgorCiAyMDEwLTEwLTMx
ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IHRo
ZSBHVEsrIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCAxYmIzOTE5Li5iZDE2OGE4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcApAQCAtNTc2LDYgKzU3Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kKCkKICAgICBib29sIGRlYnVnZ2VyV2FzRW5hYmxlZCA9IGRlYnVn
Z2VyRW5hYmxlZCgpOwogICAgIGRpc2FibGVEZWJ1Z2dlcigpOwogICAgIG1fYXR0YWNoRGVidWdn
ZXJXaGVuU2hvd24gPSBkZWJ1Z2dlcldhc0VuYWJsZWQ7CisgICAgY2xlYXJOYXRpdmVCcmVha3Bv
aW50cygpOwogI2VuZGlmCiAgICAgc2V0U2VhcmNoaW5nRm9yTm9kZShmYWxzZSk7CiAgICAgdW5i
aW5kQWxsUmVzb3VyY2VzKCk7CkBAIC03NzIsMTAgKzc3Myw3IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICBp
ZiAobV9kZWJ1Z2dlckFnZW50KQogICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5jbGVhckZv
clBhZ2VOYXZpZ2F0aW9uKCk7CiAKLSAgICAgICAgbV9uYXRpdmVCcmVha3BvaW50cy5jbGVhcigp
OwotICAgICAgICBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOwotICAgICAgICBt
X1hIUkJyZWFrcG9pbnRzLmNsZWFyKCk7Ci0gICAgICAgIG1fbGFzdEJyZWFrcG9pbnRJZCA9IDA7
CisgICAgICAgIGNsZWFyTmF0aXZlQnJlYWtwb2ludHMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVTRShKU0MpCkBAIC0xODE3LDYgKzE4MTUsMTQgQEAg
U3RyaW5nIEluc3BlY3RvckNvbnRyb2xsZXI6OmZpbmRYSFJCcmVha3BvaW50KGNvbnN0IFN0cmlu
ZyYgdXJsKQogICAgIH0KICAgICByZXR1cm4gIiI7CiB9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y2xlYXJOYXRpdmVCcmVha3BvaW50cygpCit7CisgICAgbV9uYXRpdmVCcmVha3BvaW50
cy5jbGVhcigpOworICAgIG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAg
bV9YSFJCcmVha3BvaW50cy5jbGVhcigpOworICAgIG1fbGFzdEJyZWFrcG9pbnRJZCA9IDA7Cit9
CiAjZW5kaWYKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpldmFsdWF0ZUZvclRlc3RJbkZy
b250ZW5kKGxvbmcgY2FsbElkLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA4YjAwODM1Li45MzI0ZDE2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMTYsNiArMzE2LDcgQEAgcHJpdmF0
ZToKIAogICAgIFN0cmluZyBmaW5kRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoY29uc3QgU3RyaW5n
JiBldmVudE5hbWUpOwogICAgIFN0cmluZyBmaW5kWEhSQnJlYWtwb2ludChjb25zdCBTdHJpbmcm
IHVybCk7CisgICAgdm9pZCBjbGVhck5hdGl2ZUJyZWFrcG9pbnRzKCk7CiAjZW5kaWYKICNpZiBF
TkFCTEUoREFUQUJBU0UpCiAgICAgdm9pZCBzZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJh
c2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRN
YW5hZ2VyLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2Vy
LmpzCmluZGV4IDc3YmE4OWQuLjc5NjM5ZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKQEAgLTI4LDcgKzI4LDYgQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oKQogewogICAgIHRoaXMuX2JyZWFrcG9p
bnRzID0ge307CiAgICAgdGhpcy5fbmF0aXZlQnJlYWtwb2ludHMgPSB7fTsKLSAgICB0aGlzLl9k
b21CcmVha3BvaW50cyA9IHt9OwogfQogCiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIu
cHJvdG90eXBlID0gewpAQCAtMTM3LDEzICsxMzYsMTIgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBX
ZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2ludCh0aGlzLCBmcm9udGVuZElkLCBub2RlSWQsIGRvbUV2
ZW50VHlwZSk7CiAgICAgICAgIHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzW2Zyb250ZW5kSWRdID0g
YnJlYWtwb2ludDsKLSAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludHNbZnJvbnRlbmRJZF0gPSBi
cmVha3BvaW50OwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygiZG9tLWJy
ZWFrcG9pbnQtYWRkZWQiLCBicmVha3BvaW50KTsKICAgICAgICAgYnJlYWtwb2ludC5lbmFibGVk
ID0gIWRpc2FibGVkOwogICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKICAgICB9LAogCi0gICAg
Y3JlYXRlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSwgZGlzYWJs
ZWQpCisgICAgY3JlYXRlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGV2ZW50TmFt
ZSkKICAgICB7CiAgICAgICAgIHZhciBmcm9udGVuZElkID0gZXZlbnROYW1lOwogICAgICAgICBp
ZiAoZnJvbnRlbmRJZCBpbiB0aGlzLl9uYXRpdmVCcmVha3BvaW50cykKQEAgLTE1MSw3ICsxNDks
OCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyQnJlYWtw
b2ludCh0aGlzLCBmcm9udGVuZElkLCBldmVudE5hbWUpOwogICAgICAgICB0aGlzLl9uYXRpdmVC
cmVha3BvaW50c1tmcm9udGVuZElkXSA9IGJyZWFrcG9pbnQ7Ci0gICAgICAgIGJyZWFrcG9pbnQu
ZW5hYmxlZCA9ICFkaXNhYmxlZDsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoImV2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnQtYWRkZWQiLCB7IGJyZWFrcG9pbnQ6IGJyZWFr
cG9pbnQsIGV2ZW50TmFtZTogZXZlbnROYW1lIH0pOworICAgICAgICBicmVha3BvaW50LmVuYWJs
ZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKICAgICB9LAogCkBAIC0xNzUs
OCArMTc0LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZW5hYmxlZCkKICAgICAgICAgICAgIHRoaXMuX3JlbW92
ZU5hdGl2ZUJyZWFrcG9pbnRGcm9tQmFja2VuZChicmVha3BvaW50KTsKICAgICAgICAgZGVsZXRl
IHRoaXMuX25hdGl2ZUJyZWFrcG9pbnRzW2JyZWFrcG9pbnQuX2Zyb250ZW5kSWRdOwotICAgICAg
ICBpZiAoYnJlYWtwb2ludC5fdHlwZSA9PT0gIkRPTSIpCi0gICAgICAgICAgICBkZWxldGUgdGhp
cy5fZG9tQnJlYWtwb2ludHNbYnJlYWtwb2ludC5fZnJvbnRlbmRJZF07CisgICAgICAgIHRoaXMu
X3VwZGF0ZU5hdGl2ZUJyZWFrcG9pbnRzSW5TZXR0aW5ncygpOwogICAgICAgICBicmVha3BvaW50
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicmVtb3ZlZCIpOwogICAgIH0sCiAKQEAgLTE5NSw3
ICsxOTMsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewog
ICAgIF9zZXROYXRpdmVCcmVha3BvaW50T25CYWNrZW5kOiBmdW5jdGlvbihicmVha3BvaW50KQog
ICAgIHsKICAgICAgICAgYnJlYWtwb2ludC5fYmVpbmdTZXRPbkJhY2tlbmQgPSB0cnVlOwotICAg
ICAgICB2YXIgZGF0YSA9IHsgdHlwZTogYnJlYWtwb2ludC5fdHlwZSwgY29uZGl0aW9uOiBicmVh
a3BvaW50Ll9jb25kaXRpb24oKSB9OworICAgICAgICB2YXIgZGF0YSA9IHsgdHlwZTogYnJlYWtw
b2ludC5fdHlwZSwgY29uZGl0aW9uOiBicmVha3BvaW50Ll9jb25kaXRpb24gfTsKICAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5zZXROYXRpdmVCcmVha3BvaW50KGRhdGEsIGRpZFNldE5hdGl2ZUJy
ZWFrcG9pbnQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgZnVuY3Rpb24gZGlkU2V0TmF0aXZlQnJl
YWtwb2ludChiYWNrZW5kQnJlYWtwb2ludElkKQpAQCAtMjA2LDYgKzIwNCw3IEBAIFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhp
cy5fYnJlYWtwb2ludHNbYmFja2VuZEJyZWFrcG9pbnRJZF0gPSBicmVha3BvaW50OwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
ImVuYWJsZS1jaGFuZ2VkIik7CisgICAgICAgICAgICB0aGlzLl91cGRhdGVOYXRpdmVCcmVha3Bv
aW50c0luU2V0dGluZ3MoKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTIxNSw2ICsyMTQsMTgg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnQuX2JhY2tlbmRJZF0KICAgICAgICAg
ZGVsZXRlIGJyZWFrcG9pbnQuX2JhY2tlbmRJZDsKICAgICAgICAgYnJlYWtwb2ludC5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoImVuYWJsZS1jaGFuZ2VkIik7CisgICAgICAgIHRoaXMuX3VwZGF0
ZU5hdGl2ZUJyZWFrcG9pbnRzSW5TZXR0aW5ncygpOworICAgIH0sCisKKyAgICBfdXBkYXRlTmF0
aXZlQnJlYWtwb2ludHNJblNldHRpbmdzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIg
cGVyc2lzdGVudEJyZWFrcG9pbnRzID0gW107CisgICAgICAgIGZvciAodmFyIGlkIGluIHRoaXMu
X25hdGl2ZUJyZWFrcG9pbnRzKSB7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHRoaXMu
X25hdGl2ZUJyZWFrcG9pbnRzW2lkXTsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50Ll9wZXJz
aXN0ZW50Q29uZGl0aW9uKQorICAgICAgICAgICAgICAgIHBlcnNpc3RlbnRCcmVha3BvaW50cy5w
dXNoKHsgdHlwZTogYnJlYWtwb2ludC5fdHlwZSwgZW5hYmxlZDogYnJlYWtwb2ludC5lbmFibGVk
LCBjb25kaXRpb246IGJyZWFrcG9pbnQuX3BlcnNpc3RlbnRDb25kaXRpb24gfSk7CisgICAgICAg
IH0KKyAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MubmF0aXZlQnJlYWtw
b2ludHMgPSBwZXJzaXN0ZW50QnJlYWtwb2ludHM7CiAgICAgfSwKIAogICAgIGRlYnVnZ2VyUGF1
c2VkOiBmdW5jdGlvbihkZXRhaWxzKQpAQCAtMjQyLDMwICsyNTMsNDUgQEAgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2xh
c3RIaXRCcmVha3BvaW50OwogICAgIH0sCiAKLSAgICByZXN0b3JlRE9NQnJlYWtwb2ludHM6IGZ1
bmN0aW9uKCkKKyAgICByZXN0b3JlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAg
ICAgIHZhciBkb21CcmVha3BvaW50cyA9IHRoaXMuX2RvbUJyZWFrcG9pbnRzOwotICAgICAgICB0
aGlzLl9kb21CcmVha3BvaW50cyA9IHt9OworICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBXZWJJ
bnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5uYXRpdmVCcmVha3BvaW50czsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgaWYgKGJyZWFrcG9pbnRzW2ldLnR5cGUgPT09ICJFdmVudExpc3RlbmVyIikKKyAgICAgICAg
ICAgICAgICB0aGlzLmNyZWF0ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnRzW2ld
LmNvbmRpdGlvbi5ldmVudE5hbWUpOworICAgICAgICAgICAgZWxzZSBpZiAoYnJlYWtwb2ludHNb
aV0udHlwZSA9PT0gIlhIUiIpCisgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVYSFJCcmVha3Bv
aW50KGJyZWFrcG9pbnRzW2ldLmNvbmRpdGlvbi51cmwsICFicmVha3BvaW50c1tpXS5lbmFibGVk
KTsKKyAgICAgICAgfQorICAgIH0sCiAKLSAgICAgICAgdmFyIGJyZWFrcG9pbnRzVG9SZXN0b3Jl
ID0ge307Ci0gICAgICAgIGZvciAodmFyIGZyb250ZW5kSWQgaW4gZG9tQnJlYWtwb2ludHMpIHsK
LSAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gZG9tQnJlYWtwb2ludHNbZnJvbnRlbmRJZF07
Ci0gICAgICAgICAgICB2YXIgcGF0aCA9IGJyZWFrcG9pbnQuX3BhdGg7Ci0gICAgICAgICAgICBp
ZiAoIXBhdGgpCisgICAgcmVzdG9yZURPTUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5n
cy5uYXRpdmVCcmVha3BvaW50czsKKyAgICAgICAgdmFyIHBhdGhUb05vZGVJZCA9IHt9OworICAg
ICAgICB2YXIgcGVuZGluZ0NhbGxzID0gMDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBi
cmVha3BvaW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnRzW2ld
LnR5cGUgIT09ICJET00iKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
aWYgKCFicmVha3BvaW50c1RvUmVzdG9yZVtwYXRoXSkgewotICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnRzVG9SZXN0b3JlW3BhdGhdID0gW107Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFj
a2VuZC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQocGF0aCwgcmVzdG9yZUJyZWFrcG9pbnRzRm9y
Tm9kZS5iaW5kKHRoaXMsIGJyZWFrcG9pbnRzVG9SZXN0b3JlW3BhdGhdKSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVha3BvaW50c1RvUmVzdG9yZVtwYXRoXS5wdXNoKGJyZWFrcG9p
bnQpOworICAgICAgICAgICAgdmFyIHBhdGggPSBicmVha3BvaW50c1tpXS5jb25kaXRpb24ucGF0
aDsKKyAgICAgICAgICAgIGlmIChwYXRoIGluIHBhdGhUb05vZGVJZCkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIHBhdGhUb05vZGVJZFtwYXRoXSA9IDA7CisgICAgICAg
ICAgICBwZW5kaW5nQ2FsbHMgKz0gMTsKKyAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVz
aE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgsIGRpZFB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZC5i
aW5kKHRoaXMsIHBhdGgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIHJlc3RvcmVC
cmVha3BvaW50c0Zvck5vZGUoYnJlYWtwb2ludHMsIG5vZGVJZCkKKyAgICAgICAgZnVuY3Rpb24g
ZGlkUHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgsIG5vZGVJZCkKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFub2RlSWQpCisgICAgICAgICAgICBwYXRoVG9Ob2RlSWRbcGF0aF0gPSBu
b2RlSWQ7CisgICAgICAgICAgICBwZW5kaW5nQ2FsbHMgLT0gMTsKKyAgICAgICAgICAgIGlmIChw
ZW5kaW5nQ2FsbHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICB0
aGlzLmNyZWF0ZURPTUJyZWFrcG9pbnQobm9kZUlkLCBicmVha3BvaW50c1tpXS5fZG9tRXZlbnRU
eXBlLCAhYnJlYWtwb2ludHNbaV0uZW5hYmxlZCk7CisgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBicmVha3BvaW50c1tpXTsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZUlkID0g
cGF0aFRvTm9kZUlkW2JyZWFrcG9pbnQuY29uZGl0aW9uLnBhdGhdOworICAgICAgICAgICAgICAg
IGlmIChub2RlSWQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRE9NQnJlYWtwb2lu
dChub2RlSWQsIGJyZWFrcG9pbnQuY29uZGl0aW9uLnR5cGUsICFicmVha3BvaW50LmVuYWJsZWQp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpAQCAtNDA1LDExICs0MzEsMTIg
QEAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQgPSBmdW5jdGlvbihtYW5hZ2VyLCBmcm9udGVu
ZElkLCBub2RlSWQsIGRvbUV2ZW50VHlwZSkKICAgICBXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtw
b2ludC5jYWxsKHRoaXMsIG1hbmFnZXIsIGZyb250ZW5kSWQsICJET00iKTsKICAgICB0aGlzLl9u
b2RlSWQgPSBub2RlSWQ7CiAgICAgdGhpcy5fZG9tRXZlbnRUeXBlID0gZG9tRXZlbnRUeXBlOwor
ICAgIHRoaXMuX2NvbmRpdGlvbiA9IHsgbm9kZUlkOiB0aGlzLl9ub2RlSWQsIHR5cGU6IHRoaXMu
X2RvbUV2ZW50VHlwZSB9OwogCiAgICAgdmFyIG5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
bm9kZUZvcklkKHRoaXMuX25vZGVJZCk7CiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgbm9kZS5i
cmVha3BvaW50c1t0aGlzLl9kb21FdmVudFR5cGVdID0gdGhpczsKLSAgICAgICAgdGhpcy5fcGF0
aCA9IG5vZGUucGF0aCgpOworICAgICAgICB0aGlzLl9wZXJzaXN0ZW50Q29uZGl0aW9uID0geyBw
YXRoOiBub2RlLnBhdGgoKSwgdHlwZTogdGhpcy5fZG9tRXZlbnRUeXBlIH07CiAgICAgfQogfQog
CkBAIC00NTksMTEgKzQ4Niw2IEBAIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBv
biBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcy4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0
ZXJzLCAiIiwgYXBwZW5kKTsKICAgICB9LAogCi0gICAgX2NvbmRpdGlvbjogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHsgbm9kZUlkOiB0aGlzLl9ub2RlSWQsIHR5cGU6IHRoaXMu
X2RvbUV2ZW50VHlwZSB9OwotICAgIH0sCi0KICAgICBfb25SZW1vdmU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZCh0
aGlzLl9ub2RlSWQpOwpAQCAtNDc4LDYgKzUwMCwyMCBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lckJyZWFrcG9pbnQgPSBmdW5jdGlvbihtYW5hZ2VyLCBmcm9udGVuZElkLCBldmVudE5hbWUp
CiB7CiAgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQuY2FsbCh0aGlzLCBtYW5hZ2Vy
LCBmcm9udGVuZElkLCAiRXZlbnRMaXN0ZW5lciIpOwogICAgIHRoaXMuX2V2ZW50TmFtZSA9IGV2
ZW50TmFtZTsKKyAgICB0aGlzLl9jb25kaXRpb24gPSB7IGV2ZW50TmFtZTogdGhpcy5fZXZlbnRO
YW1lIH07CisgICAgdGhpcy5fcGVyc2lzdGVudENvbmRpdGlvbiA9IHRoaXMuX2NvbmRpdGlvbjsK
K30KKworV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50LmV2ZW50TmFtZUZvclVJ
ID0gZnVuY3Rpb24oZXZlbnROYW1lKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJCcmVha3BvaW50Ll9ldmVudE5hbWVzRm9yVUkpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJCcmVha3BvaW50Ll9ldmVudE5hbWVzRm9yVUkgPSB7CisgICAgICAgICAg
ICAiaW5zdHJ1bWVudGF0aW9uOnNldFRpbWVyIjogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXQg
VGltZXIiKSwKKyAgICAgICAgICAgICJpbnN0cnVtZW50YXRpb246Y2xlYXJUaW1lciI6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgVGltZXIiKSwKKyAgICAgICAgICAgICJpbnN0cnVtZW50
YXRpb246dGltZXJGaXJlZCI6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXIgRmlyZWQiKQor
ICAgICAgICB9OworICAgIH0KKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJC
cmVha3BvaW50Ll9ldmVudE5hbWVzRm9yVUlbZXZlbnROYW1lXSB8fCBldmVudE5hbWUuc3Vic3Ry
aW5nKGV2ZW50TmFtZS5pbmRleE9mKCI6IikgKyAxKTsKIH0KIAogV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKQEAgLTQ5NywyMSArNTMzLDkgQEAgV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdGF0dXMpKTsKICAg
ICB9LAogCi0gICAgX2NvbmRpdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHsgZXZlbnROYW1lOiB0aGlzLl9ldmVudE5hbWUgfTsKLSAgICB9LAotCiAgICAgX3VpRXZlbnRO
YW1lOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyQnJlYWtwb2ludC5fdWlFdmVudE5hbWVzKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0
b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQuX3VpRXZlbnROYW1lcyA9IHsKLSAgICAgICAgICAg
ICAgICAiaW5zdHJ1bWVudGF0aW9uOnNldFRpbWVyIjogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
ZXQgVGltZXIiKSwKLSAgICAgICAgICAgICAgICAiaW5zdHJ1bWVudGF0aW9uOmNsZWFyVGltZXIi
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIFRpbWVyIiksCi0gICAgICAgICAgICAgICAg
Imluc3RydW1lbnRhdGlvbjp0aW1lckZpcmVkIjogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1l
ciBGaXJlZCIpCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQuX3VpRXZlbnROYW1lc1t0aGlzLl9ldmVu
dE5hbWVdIHx8IHRoaXMuX2V2ZW50TmFtZS5zdWJzdHJpbmcodGhpcy5fZXZlbnROYW1lLmluZGV4
T2YoIjoiKSArIDEpOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJC
cmVha3BvaW50LmV2ZW50TmFtZUZvclVJKHRoaXMuX2V2ZW50TmFtZSk7CiAgICAgfQogfQogCkBA
IC01MjEsNiArNTQ1LDggQEAgV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnQgPSBmdW5jdGlvbiht
YW5hZ2VyLCBmcm9udGVuZElkLCB1cmwpCiB7CiAgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFr
cG9pbnQuY2FsbCh0aGlzLCBtYW5hZ2VyLCBmcm9udGVuZElkLCAiWEhSIik7CiAgICAgdGhpcy5f
dXJsID0gdXJsOworICAgIHRoaXMuX2NvbmRpdGlvbiA9IHsgdXJsOiB0aGlzLl91cmwgfTsKKyAg
ICB0aGlzLl9wZXJzaXN0ZW50Q29uZGl0aW9uID0gdGhpcy5fY29uZGl0aW9uOwogfQogCiBXZWJJ
bnNwZWN0b3IuWEhSQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CkBAIC01NDMsMTEgKzU2OSw2IEBA
IFdlYkluc3BlY3Rvci5YSFJCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IHZhciBzdGF0dXMgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhdXNlZCBvbiBhIFhNTEh0dHBS
ZXF1ZXN0LiIpOwogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHN0YXR1cykpOwotICAgIH0sCi0KLSAgICBfY29uZGl0aW9uOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICByZXR1cm4geyB1cmw6IHRoaXMuX3VybCB9OwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBh
bmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFu
ZS5qcwppbmRleCAyMTUxMTM3Li43MjU0MmVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwpAQCAtNDksNiArNDksNyBA
QCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAKICAg
ICBhZGRCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50SXRlbSkKICAgICB7CisgICAgICAg
IGJyZWFrcG9pbnRJdGVtLmFkZEV2ZW50TGlzdGVuZXIoImJyZWFrcG9pbnQtaGl0IiwgdGhpcy5f
YnJlYWtwb2ludEhpdCwgdGhpcyk7CiAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmFkZEV2ZW50TGlz
dGVuZXIoInJlbW92ZWQiLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwgdGhpcyk7CiAKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBicmVha3BvaW50SXRlbS5lbGVtZW50KCk7CkBAIC03Myw2ICs3NCwx
MSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9LAogCisgICAgX2JyZWFrcG9pbnRIaXQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7CisgICAgfSwKKwogICAgIF9icmVh
a3BvaW50UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmxpc3RF
bGVtZW50LnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldC5lbGVtZW50KCkpOwpAQCAtMTkxLDkgKzE5
NywxMCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0ucHJvdG90eXBlID0gewogCiAgICAg
X2hpdFN0YXRlQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoZXZl
bnQudGFyZ2V0LmhpdCkKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5oaXQpIHsKICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYWRkU3R5bGVDbGFzcygiYnJlYWtwb2ludC1oaXQiKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImJyZWFr
cG9pbnQtaGl0Iik7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5y
ZW1vdmVTdHlsZUNsYXNzKCJicmVha3BvaW50LWhpdCIpOwogICAgIH0KIH0KQEAgLTI0MCw5NyAr
MjQ3LDExNiBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzU2lkZWJhclBh
bmUgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jYXRlZ29yaWVzRWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJwcm9wZXJ0aWVzLXRyZWUgZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMiKTsKICAgICB0aGlz
LmNhdGVnb3JpZXNUcmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0aGlzLmNhdGVnb3JpZXNF
bGVtZW50KTsKICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2F0ZWdvcmll
c0VsZW1lbnQpOworCisgICAgV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoImV2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnQtYWRkZWQiLCB0aGlzLl9icmVha3Bv
aW50QWRkZWQsIHRoaXMpOworCisgICAgdGhpcy5fYnJlYWtwb2ludEl0ZW1zID0ge307CisgICAg
dGhpcy5fY3JlYXRlQ2F0ZWdvcnkoIk1vdXNlIiwgImxpc3RlbmVyIiwgWyJjbGljayIsICJkYmxj
bGljayIsICJtb3VzZWRvd24iLCAibW91c2V1cCIsICJtb3VzZW92ZXIiLCAibW91c2Vtb3ZlIiwg
Im1vdXNlb3V0IiwgIm1vdXNld2hlZWwiXSk7CisgICAgdGhpcy5fY3JlYXRlQ2F0ZWdvcnkoIktl
eWJvYXJkIiwgImxpc3RlbmVyIiwgWyJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIl0pOwor
ICAgIHRoaXMuX2NyZWF0ZUNhdGVnb3J5KCJIVE1MIGZyYW1lL29iamVjdCIsICJsaXN0ZW5lciIs
IFsibG9hZCIsICJlcnJvciIsICJyZXNpemUiLCAic2Nyb2xsIl0pOworICAgIHRoaXMuX2NyZWF0
ZUNhdGVnb3J5KCJUaW1lciIsICJpbnN0cnVtZW50YXRpb24iLCBbInNldFRpbWVyIiwgImNsZWFy
VGltZXIiLCAidGltZXJGaXJlZCJdKTsKIH0KIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJC
cmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKLSAgICBfcG9wdWxhdGU6IGZ1bmN0
aW9uKCkKKyAgICBfY3JlYXRlQ2F0ZWdvcnk6IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIGV2ZW50TmFt
ZXMpCiAgICAgewotICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHsKLSAgICAgICAgICAgICJNb3Vz
ZSI6IHsgdHlwZTogImxpc3RlbmVyIiwgZXZlbnROYW1lczogWyJjbGljayIsICJkYmxjbGljayIs
ICJtb3VzZWRvd24iLCAibW91c2V1cCIsICJtb3VzZW92ZXIiLCAibW91c2Vtb3ZlIiwgIm1vdXNl
b3V0IiwgIm1vdXNld2hlZWwiXSB9LAotICAgICAgICAgICAgIktleWJvYXJkIjogeyB0eXBlOiAi
bGlzdGVuZXIiLCBldmVudE5hbWVzOiBbImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiXSB9
LAotICAgICAgICAgICAgIkhUTUwgZnJhbWUvb2JqZWN0IjogIHsgdHlwZTogImxpc3RlbmVyIiwg
ZXZlbnROYW1lczogWyJsb2FkIiwgImVycm9yIiwgInJlc2l6ZSIsICJzY3JvbGwiXSB9LAotICAg
ICAgICAgICAgIlRpbWVyIjogeyB0eXBlOiAiaW5zdHJ1bWVudGF0aW9uIiwgZXZlbnROYW1lczog
WyJzZXRUaW1lciIsICJjbGVhclRpbWVyIiwgInRpbWVyRmlyZWQiXSB9Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykgewotICAgICAgICAgICAg
dmFyIGNhdGVnb3J5VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKGNhdGVnb3J5KSk7Ci0gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNUcmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZChjYXRlZ29yeVRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgIGNhdGVnb3J5
VHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoImV2ZW50LWNhdGVnb3J5
Iik7Ci0gICAgICAgICAgICBjYXRlZ29yeVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSB0cnVlOwot
Ci0gICAgICAgICAgICB2YXIgY2F0ZWdvcnlJdGVtID0ge307Ci0gICAgICAgICAgICBjYXRlZ29y
eUl0ZW0uY2hlY2tib3ggPSB0aGlzLl9jcmVhdGVDaGVja2JveChjYXRlZ29yeVRyZWVFbGVtZW50
LCB0aGlzLl9jYXRlZ29yeUNoZWNrYm94Q2xpY2tlZC5iaW5kKHRoaXMsIGNhdGVnb3J5SXRlbSkp
OwotICAgICAgICAgICAgY2F0ZWdvcnlJdGVtLmNoaWxkcmVuID0ge307Ci0KLSAgICAgICAgICAg
IHZhciBjYXRlZ29yeVR5cGUgPSBjYXRlZ29yaWVzW2NhdGVnb3J5XS50eXBlOwotICAgICAgICAg
ICAgdmFyIGV2ZW50TmFtZXMgPSBjYXRlZ29yaWVzW2NhdGVnb3J5XS5ldmVudE5hbWVzOwotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudE5hbWVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGV2ZW50TmFtZSA9IGNhdGVnb3J5VHlwZSArICI6IiArIGV2ZW50
TmFtZXNbaV07Ci0KLSAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IFdlYkluc3BlY3Rv
ci5icmVha3BvaW50TWFuYWdlci5jcmVhdGVFdmVudExpc3RlbmVyQnJlYWtwb2ludChldmVudE5h
bWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludCkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5wb3B1bGF0ZUxhYmVsRWxlbWVudChsYWJlbEVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHZh
ciBldmVudE5hbWVUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChsYWJlbEVsZW1lbnQpOwot
ICAgICAgICAgICAgICAgIGNhdGVnb3J5VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZXZlbnROYW1l
VHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGV2ZW50TmFtZVRyZWVFbGVtZW50Lmxpc3RJ
dGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29kZSIpOwotICAgICAgICAgICAgICAg
IGV2ZW50TmFtZVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSB0cnVlOwotCi0gICAgICAgICAgICAg
ICAgdmFyIGV2ZW50TmFtZUl0ZW0gPSB7fTsKLSAgICAgICAgICAgICAgICBldmVudE5hbWVJdGVt
LmNoZWNrYm94ID0gdGhpcy5fY3JlYXRlQ2hlY2tib3goZXZlbnROYW1lVHJlZUVsZW1lbnQsIHRo
aXMuX2V2ZW50TmFtZUNoZWNrYm94Q2xpY2tlZC5iaW5kKHRoaXMsIGNhdGVnb3J5SXRlbSwgZXZl
bnROYW1lSXRlbSkpOwotICAgICAgICAgICAgICAgIGV2ZW50TmFtZUl0ZW0uYnJlYWtwb2ludCA9
IGJyZWFrcG9pbnQ7Ci0KLSAgICAgICAgICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVu
ZXIoImVuYWJsZS1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludEVuYWJsZUNoYW5nZWQuYmluZCh0
aGlzLCBjYXRlZ29yeUl0ZW0sIGV2ZW50TmFtZUl0ZW0pLCB0cnVlKTsKLQotICAgICAgICAgICAg
ICAgIGNhdGVnb3J5SXRlbS5jaGlsZHJlbltldmVudE5hbWVdID0gZXZlbnROYW1lSXRlbTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgdmFyIGNhdGVnb3J5SXRlbSA9IHt9OworICAgICAgICBjYXRl
Z29yeUl0ZW0uZWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmco
bmFtZSkpOworICAgICAgICB0aGlzLmNhdGVnb3JpZXNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChj
YXRlZ29yeUl0ZW0uZWxlbWVudCk7CisgICAgICAgIGNhdGVnb3J5SXRlbS5lbGVtZW50Lmxpc3RJ
dGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJldmVudC1jYXRlZ29yeSIpOworICAgICAgICBjYXRl
Z29yeUl0ZW0uZWxlbWVudC5zZWxlY3RhYmxlID0gdHJ1ZTsKKworICAgICAgICBjYXRlZ29yeUl0
ZW0uY2hlY2tib3ggPSB0aGlzLl9jcmVhdGVDaGVja2JveChjYXRlZ29yeUl0ZW0uZWxlbWVudCk7
CisgICAgICAgIGNhdGVnb3J5SXRlbS5jaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2NhdGVnb3J5Q2hlY2tib3hDbGlja2VkLmJpbmQodGhpcywgY2F0ZWdvcnlJdGVtKSwg
dHJ1ZSk7CisKKyAgICAgICAgY2F0ZWdvcnlJdGVtLmNoaWxkcmVuID0ge307CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZXZlbnROYW1lcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
dmFyIGV2ZW50TmFtZSA9IHR5cGUgKyAiOiIgKyBldmVudE5hbWVzW2ldOworCisgICAgICAgICAg
ICB2YXIgYnJlYWtwb2ludEl0ZW0gPSB7fTsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9IFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyQnJlYWtwb2ludC5ldmVudE5hbWVGb3JVSShldmVudE5hbWUp
OworICAgICAgICAgICAgYnJlYWtwb2ludEl0ZW0uZWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCh0
aXRsZSk7CisgICAgICAgICAgICBjYXRlZ29yeUl0ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChicmVh
a3BvaW50SXRlbS5lbGVtZW50KTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmVsZW1lbnQu
bGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNvdXJjZS1jb2RlIik7CisgICAgICAgICAg
ICBicmVha3BvaW50SXRlbS5lbGVtZW50LnNlbGVjdGFibGUgPSB0cnVlOworCisgICAgICAgICAg
ICBicmVha3BvaW50SXRlbS5jaGVja2JveCA9IHRoaXMuX2NyZWF0ZUNoZWNrYm94KGJyZWFrcG9p
bnRJdGVtLmVsZW1lbnQpOworICAgICAgICAgICAgYnJlYWtwb2ludEl0ZW0uY2hlY2tib3guYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9icmVha3BvaW50Q2hlY2tib3hDbGlja2VkLmJp
bmQodGhpcywgYnJlYWtwb2ludEl0ZW0pLCB0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJ
dGVtLnBhcmVudCA9IGNhdGVnb3J5SXRlbTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmV2
ZW50TmFtZSA9IGV2ZW50TmFtZTsKKworICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEl0ZW1z
W2V2ZW50TmFtZV0gPSBicmVha3BvaW50SXRlbTsKKyAgICAgICAgICAgIGNhdGVnb3J5SXRlbS5j
aGlsZHJlbltldmVudE5hbWVdID0gYnJlYWtwb2ludEl0ZW07CiAgICAgICAgIH0KICAgICB9LAog
Ci0gICAgX2NyZWF0ZUNoZWNrYm94OiBmdW5jdGlvbih0cmVlRWxlbWVudCwgY2hlY2tib3hDbGlj
a2VkRGVsZWdhdGUpCisgICAgX2NyZWF0ZUNoZWNrYm94OiBmdW5jdGlvbih0cmVlRWxlbWVudCkK
ICAgICB7CiAgICAgICAgIHZhciBjaGVja2JveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7CiAgICAgICAgIGNoZWNrYm94LmNsYXNzTmFtZSA9ICJjaGVja2JveC1lbGVtIjsKICAg
ICAgICAgY2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7Ci0gICAgICAgIGNoZWNrYm94LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgY2hlY2tib3hDbGlja2VkRGVsZWdhdGUsIHRydWUpOwogICAg
ICAgICB0cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNoZWNrYm94LCB0
cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgIHJldHVybiBj
aGVja2JveDsKICAgICB9LAogCiAgICAgX2NhdGVnb3J5Q2hlY2tib3hDbGlja2VkOiBmdW5jdGlv
bihjYXRlZ29yeUl0ZW0pCiAgICAgewotICAgICAgICB2YXIgY2hlY2tib3ggPSBjYXRlZ29yeUl0
ZW0uY2hlY2tib3g7Ci0gICAgICAgIGNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTsKKyAg
ICAgICAgdmFyIGNoZWNrZWQgPSBjYXRlZ29yeUl0ZW0uY2hlY2tib3guY2hlY2tlZDsKICAgICAg
ICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGNhdGVnb3J5SXRlbS5jaGlsZHJlbikgewotICAgICAg
ICAgICAgdmFyIGV2ZW50TmFtZUl0ZW0gPSBjYXRlZ29yeUl0ZW0uY2hpbGRyZW5bZXZlbnROYW1l
XTsKLSAgICAgICAgICAgIGV2ZW50TmFtZUl0ZW0uY2hlY2tib3guY2hlY2tlZCA9IGNoZWNrYm94
LmNoZWNrZWQ7Ci0gICAgICAgICAgICBldmVudE5hbWVJdGVtLmJyZWFrcG9pbnQuZW5hYmxlZCA9
IGNoZWNrYm94LmNoZWNrZWQ7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludEl0ZW0gPSBjYXRl
Z29yeUl0ZW0uY2hpbGRyZW5bZXZlbnROYW1lXTsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50
SXRlbS5jaGVja2JveC5jaGVja2VkICE9PSBjaGVja2VkKSB7CisgICAgICAgICAgICAgICAgYnJl
YWtwb2ludEl0ZW0uY2hlY2tib3guY2hlY2tlZCA9IGNoZWNrZWQ7CisgICAgICAgICAgICAgICAg
dGhpcy5fYnJlYWtwb2ludENoZWNrYm94Q2xpY2tlZChicmVha3BvaW50SXRlbSk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2V2ZW50TmFtZUNoZWNrYm94Q2xpY2tl
ZDogZnVuY3Rpb24oY2F0ZWdvcnlJdGVtLCBldmVudE5hbWVJdGVtKQorICAgIF9icmVha3BvaW50
Q2hlY2tib3hDbGlja2VkOiBmdW5jdGlvbihicmVha3BvaW50SXRlbSkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3VwZGF0ZUNhdGVnb3J5Q2hlY2tib3goY2F0ZWdvcnlJdGVtKTsKLSAgICAgICAgZXZl
bnROYW1lSXRlbS5icmVha3BvaW50LmVuYWJsZWQgPSBldmVudE5hbWVJdGVtLmNoZWNrYm94LmNo
ZWNrZWQ7CisgICAgICAgIGlmIChicmVha3BvaW50SXRlbS5jaGVja2JveC5jaGVja2VkKQorICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLmNyZWF0ZUV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50KGJyZWFrcG9pbnRJdGVtLmV2ZW50TmFtZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmJyZWFrcG9pbnQucmVtb3ZlKCk7CiAgICAgfSwKIAot
ICAgIF9icmVha3BvaW50RW5hYmxlQ2hhbmdlZDogZnVuY3Rpb24oY2F0ZWdvcnlJdGVtLCBldmVu
dE5hbWVJdGVtKQorICAgIF9icmVha3BvaW50QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgaWYgKGV2ZW50TmFtZUl0ZW0uY2hlY2tib3guY2hlY2tlZCA9PT0gZXZlbnROYW1l
SXRlbS5icmVha3BvaW50LmVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZh
ciBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5icmVha3BvaW50OworICAgICAgICB2YXIgZXZlbnRO
YW1lID0gZXZlbnQuZGF0YS5ldmVudE5hbWU7CisKKyAgICAgICAgdmFyIGJyZWFrcG9pbnRJdGVt
ID0gdGhpcy5fYnJlYWtwb2ludEl0ZW1zW2V2ZW50TmFtZV07CisgICAgICAgIGJyZWFrcG9pbnRJ
dGVtLmJyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoImhpdC1zdGF0ZS1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludEhpdFN0YXRlQ2hh
bmdlZC5iaW5kKHRoaXMsIGJyZWFrcG9pbnRJdGVtKSk7CisgICAgICAgIGJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcigicmVtb3ZlZCIsIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLmJpbmQodGhp
cywgYnJlYWtwb2ludEl0ZW0pKTsKKyAgICAgICAgYnJlYWtwb2ludEl0ZW0uY2hlY2tib3guY2hl
Y2tlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5Q2hlY2tib3goYnJlYWtw
b2ludEl0ZW0pOworICAgIH0sCisKKyAgICBfYnJlYWtwb2ludEhpdFN0YXRlQ2hhbmdlZDogZnVu
Y3Rpb24oYnJlYWtwb2ludEl0ZW0sIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnRh
cmdldC5oaXQpIHsKKyAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOworICAgICAgICAg
ICAgdmFyIGNhdGVnb3J5SXRlbSA9IGJyZWFrcG9pbnRJdGVtLnBhcmVudDsKKyAgICAgICAgICAg
IGNhdGVnb3J5SXRlbS5lbGVtZW50LmV4cGFuZCgpOworICAgICAgICAgICAgYnJlYWtwb2ludEl0
ZW0uZWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiYnJlYWtwb2ludC1oaXQi
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBicmVha3BvaW50SXRlbS5lbGVtZW50Lmxp
c3RJdGVtRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJicmVha3BvaW50LWhpdCIpOworICAgIH0s
CiAKLSAgICAgICAgZXZlbnROYW1lSXRlbS5jaGVja2JveC5jaGVja2VkID0gZXZlbnROYW1lSXRl
bS5icmVha3BvaW50LmVuYWJsZWQ7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5Q2hlY2ti
b3goY2F0ZWdvcnlJdGVtKTsKKyAgICBfYnJlYWtwb2ludFJlbW92ZWQ6IGZ1bmN0aW9uKGJyZWFr
cG9pbnRJdGVtKQorICAgIHsKKyAgICAgICAgYnJlYWtwb2ludEl0ZW0uYnJlYWtwb2ludCA9IG51
bGw7CisgICAgICAgIGJyZWFrcG9pbnRJdGVtLmNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlQ2F0ZWdvcnlDaGVja2JveChicmVha3BvaW50SXRlbSk7CiAgICAg
fSwKIAotICAgIF91cGRhdGVDYXRlZ29yeUNoZWNrYm94OiBmdW5jdGlvbihjYXRlZ29yeUl0ZW0p
CisgICAgX3VwZGF0ZUNhdGVnb3J5Q2hlY2tib3g6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJdGVtKQog
ICAgIHsKKyAgICAgICAgdmFyIGNhdGVnb3J5SXRlbSA9IGJyZWFrcG9pbnRJdGVtLnBhcmVudDsK
ICAgICAgICAgdmFyIGhhc0VuYWJsZWQgPSBmYWxzZSwgaGFzRGlzYWJsZWQgPSBmYWxzZTsKICAg
ICAgICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGNhdGVnb3J5SXRlbS5jaGlsZHJlbikgewotICAg
ICAgICAgICAgdmFyIGV2ZW50TmFtZUl0ZW0gPSBjYXRlZ29yeUl0ZW0uY2hpbGRyZW5bZXZlbnRO
YW1lXTsKLSAgICAgICAgICAgIGlmIChldmVudE5hbWVJdGVtLmNoZWNrYm94LmNoZWNrZWQpCisg
ICAgICAgICAgICB2YXIgYnJlYWtwb2ludEl0ZW0gPSBjYXRlZ29yeUl0ZW0uY2hpbGRyZW5bZXZl
bnROYW1lXTsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50SXRlbS5jaGVja2JveC5jaGVja2Vk
KQogICAgICAgICAgICAgICAgIGhhc0VuYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGhhc0Rpc2FibGVkID0gdHJ1ZTsKQEAgLTM0MSw4ICszNjcsMTIgQEAg
V2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlw
ZSA9IHsKIAogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLmNhdGVn
b3JpZXNUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLl9wb3B1bGF0
ZSgpOworICAgICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gdGhpcy5fYnJlYWtwb2ludEl0ZW1z
KSB7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludEl0ZW0gPSB0aGlzLl9icmVha3BvaW50SXRl
bXNbZXZlbnROYW1lXTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmJyZWFrcG9pbnQgPSBu
dWxsOworICAgICAgICAgICAgYnJlYWtwb2ludEl0ZW0uY2hlY2tib3guY2hlY2tlZCA9IGZhbHNl
OworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2F0ZWdvcnlDaGVja2JveChicmVha3BvaW50SXRl
bSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qcwppbmRleCAxMjRmNzM2Li5iNGRiMTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzCkBAIC02NSw2ICs2NSw3IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9
IGZ1bmN0aW9uKCkKICAgICB0aGlzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoImxhc3RBY3Rp
dmVQYW5lbCIsICJlbGVtZW50cyIpOwogCiAgICAgdGhpcy5pbnN0YWxsUHJvamVjdFNldHRpbmco
ImJyZWFrcG9pbnRzIiwge30pOworICAgIHRoaXMuaW5zdGFsbFByb2plY3RTZXR0aW5nKCJuYXRp
dmVCcmVha3BvaW50cyIsIHt9KTsKIH0KIAogV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlw
ZSA9IHsKQEAgLTgzLDYgKzg0LDE0IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5ncy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX19kZWZpbmVTZXR0ZXJfXyhrZXksIHRoaXMuX3NldFByb2plY3RT
ZXR0aW5nLmJpbmQodGhpcywga2V5KSk7CiAgICAgfSwKIAorICAgIGluc3BlY3RlZFVSTENoYW5n
ZWQ6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAgIHZhciBmcmFnbWVudEluZGV4ID0gdXJs
LmluZGV4T2YoIiMiKTsKKyAgICAgICAgaWYgKGZyYWdtZW50SW5kZXggIT09IC0xKQorICAgICAg
ICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBmcmFnbWVudEluZGV4KTsKKyAgICAgICAgdGhp
cy5faW5zcGVjdGVkVVJMID0gdXJsOworICAgIH0sCisKICAgICBfZ2V0OiBmdW5jdGlvbihrZXks
IGRlZmF1bHRWYWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChrZXkgaW4gd2luZG93LmxvY2FsU3Rv
cmFnZSkgewpAQCAtMTEyLDExICsxMjEsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MucHJvdG90
eXBlID0gewogCiAgICAgX2Zvcm1hdFByb2plY3RLZXk6IGZ1bmN0aW9uKGtleSkKICAgICB7Ci0g
ICAgICAgIHZhciB1cmwgPSB0aGlzLl9tYWluUmVzb3VyY2VVUkw7Ci0gICAgICAgIHZhciBmcmFn
bWVudEluZGV4ID0gdXJsLmluZGV4T2YoIiMiKTsKLSAgICAgICAgaWYgKGZyYWdtZW50SW5kZXgg
IT09IC0xKQotICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBmcmFnbWVudEluZGV4
KTsKLSAgICAgICAgcmV0dXJuIGtleSArICIuIiArIHVybDsKKyAgICAgICAgcmV0dXJuIGtleSAr
ICI6IiArIHRoaXMuX2luc3BlY3RlZFVSTDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggMGY1NTFlYS4uZTViNjljMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTQxMzMsNyArNDEzMyw3IEBA
IG9sLmJyZWFrcG9pbnQtbGlzdCB7CiAgICAgbWFyZ2luOiAycHggMCAwcHggMjBweDsKIH0KIAot
LmJyZWFrcG9pbnQtbGlzdCAuYnJlYWtwb2ludC1oaXQgeworLnBhbmUgLmJyZWFrcG9pbnQtaGl0
IHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGVmNTIzOWMuLmY4ZDkwMjYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTU0OSw2ICsxNTQ5LDggQEAgV2Vi
SW5zcGVjdG9yLnJlc2V0ID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5jb25zb2xlLmNsZWFyTWVz
c2FnZXMoKTsKICAgICB0aGlzLmV4dGVuc2lvblNlcnZlci5ub3RpZnlJbnNwZWN0b3JSZXNldCgp
OworCisgICAgdGhpcy5icmVha3BvaW50TWFuYWdlci5yZXN0b3JlQnJlYWtwb2ludHMoKTsKIH0K
IAogV2ViSW5zcGVjdG9yLnJlc2V0UHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKQEAgLTE1NjUs
NyArMTU2NywxMiBAQCBXZWJJbnNwZWN0b3IuYnJpbmdUb0Zyb250ID0gZnVuY3Rpb24oKQogV2Vi
SW5zcGVjdG9yLmluc3BlY3RlZFVSTENoYW5nZWQgPSBmdW5jdGlvbih1cmwpCiB7CiAgICAgSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Lmluc3BlY3RlZFVSTENoYW5nZWQodXJsKTsKKyAgICB0aGlzLmFw
cGxpY2F0aW9uU2V0dGluZ3MuaW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmwpOwogICAgIHRoaXMuZXh0
ZW5zaW9uU2VydmVyLm5vdGlmeUluc3BlY3RlZFVSTENoYW5nZWQoKTsKKyAgICBpZiAoIXRoaXMu
X2JyZWFrcG9pbnRzUmVzdG9yZWQpIHsKKyAgICAgICAgdGhpcy5icmVha3BvaW50TWFuYWdlci5y
ZXN0b3JlQnJlYWtwb2ludHMoKTsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNSZXN0b3JlZCA9
IHRydWU7CisgICAgfQogfQogCiBXZWJJbnNwZWN0b3IuZGlkQ29tbWl0TG9hZCA9IGZ1bmN0aW9u
KCkK
</data>
<flag name="review"
          id="62775"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72642</attachid>
            <date>2010-11-02 02:52:52 -0700</date>
            <delta_ts>2010-11-02 03:22:02 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>46030</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjdjYmZiMC4uYTdkMjM5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAxMC0xMS0wMiAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBwZXJzaXN0IG5hdGl2ZSBicmVh
a3BvaW50cyBpbiBsb2NhbFN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ4NzExCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNj
b25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpj
bGVhck5hdGl2ZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFn
ZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV2
ZW50TGlzdGVuZXJCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyQnJlYWtwb2ludC5ldmVudE5hbWVGb3JVSSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnQucHJvdG90eXBlLl91aUV2ZW50TmFtZSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuWEhSQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuWEhSQnJl
YWtwb2ludC5wcm90b3R5cGUucG9wdWxhdGVTdGF0dXNNZXNzYWdlRWxlbWVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50c1NpZGViYXJQYW5lLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJvdG90eXBlLmFkZEJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRzU2lkZWJhclBhbmUucHJv
dG90eXBlLl9icmVha3BvaW50SGl0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50
SXRlbS5wcm90b3R5cGUuX2hpdFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzU2lkZWJhclBhbmUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUGFu
ZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanM6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
ZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlLmluc3Bl
Y3RlZFVSTENoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlw
ZS5fZm9ybWF0UHJvamVjdEtleSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9y
YWdlUGFuZWwuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNT
aWRlYmFyUGFuZS5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3M6CisgICAgICAgICgucGFuZSAuYnJlYWtwb2ludC1oaXQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnNldCBjdXJy
ZW50UGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZS5vblBvcHVsYXRl
U2NyaXB0T2JqZWN0cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuaW5zcGVj
dGVkVVJMQ2hhbmdlZCk6CisKIDIwMTAtMTEtMDEgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNv
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRlcy4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMGUxYTM4OC4uMDdiMjcy
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU1OCw2
ICs1NTgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCgp
CiAgICAgYm9vbCBkZWJ1Z2dlcldhc0VuYWJsZWQgPSBkZWJ1Z2dlckVuYWJsZWQoKTsKICAgICBk
aXNhYmxlRGVidWdnZXIoKTsKICAgICBtX2F0dGFjaERlYnVnZ2VyV2hlblNob3duID0gZGVidWdn
ZXJXYXNFbmFibGVkOworICAgIGNsZWFyTmF0aXZlQnJlYWtwb2ludHMoKTsKICNlbmRpZgogICAg
IHNldFNlYXJjaGluZ0Zvck5vZGUoZmFsc2UpOwogICAgIHVuYmluZEFsbFJlc291cmNlcygpOwpA
QCAtNzE3LDEwICs3MTgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExv
YWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkK
ICAgICAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+Y2xlYXJGb3JQYWdlTmF2aWdhdGlvbigpOwog
Ci0gICAgICAgIG1fbmF0aXZlQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICAgICAgbV9ldmVudExp
c3RlbmVyQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICAgICAgbV9YSFJCcmVha3BvaW50cy5jbGVh
cigpOwotICAgICAgICBtX2xhc3RCcmVha3BvaW50SWQgPSAwOworICAgICAgICBjbGVhck5hdGl2
ZUJyZWFrcG9pbnRzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KSAmJiBVU0UoSlNDKQpAQCAtMTQ1Miw2ICsxNDUwLDE0IEBAIFN0cmluZyBJbnNwZWN0b3JDb250
cm9sbGVyOjpmaW5kWEhSQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCkKICAgICB9CiAgICAg
cmV0dXJuICIiOwogfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNsZWFyTmF0aXZlQnJl
YWtwb2ludHMoKQoreworICAgIG1fbmF0aXZlQnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX2V2
ZW50TGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOworICAgIG1fWEhSQnJlYWtwb2ludHMuY2xl
YXIoKTsKKyAgICBtX2xhc3RCcmVha3BvaW50SWQgPSAwOworfQogI2VuZGlmCiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChsb25nIGNhbGxJZCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKaW5kZXggZjFmYzM4MS4uMDk3ZDdlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaApAQCAtMjk2LDYgKzI5Niw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgZmlu
ZEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsKICAgICBT
dHJpbmcgZmluZFhIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgY2xl
YXJOYXRpdmVCcmVha3BvaW50cygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAg
IHZvaWQgc2VsZWN0RGF0YWJhc2UoRGF0YWJhc2UqIGRhdGFiYXNlKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRleCA3N2JhODlkLi5k
NGRmNjUyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRN
YW5hZ2VyLmpzCkBAIC0yOCw3ICsyOCw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdl
ciA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9OwogICAgIHRoaXMu
X25hdGl2ZUJyZWFrcG9pbnRzID0ge307Ci0gICAgdGhpcy5fZG9tQnJlYWtwb2ludHMgPSB7fTsK
IH0KIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKQEAgLTEz
NywxMyArMTM2LDEyIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTUJyZWFr
cG9pbnQodGhpcywgZnJvbnRlbmRJZCwgbm9kZUlkLCBkb21FdmVudFR5cGUpOwogICAgICAgICB0
aGlzLl9uYXRpdmVCcmVha3BvaW50c1tmcm9udGVuZElkXSA9IGJyZWFrcG9pbnQ7Ci0gICAgICAg
IHRoaXMuX2RvbUJyZWFrcG9pbnRzW2Zyb250ZW5kSWRdID0gYnJlYWtwb2ludDsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImRvbS1icmVha3BvaW50LWFkZGVkIiwgYnJl
YWtwb2ludCk7CiAgICAgICAgIGJyZWFrcG9pbnQuZW5hYmxlZCA9ICFkaXNhYmxlZDsKICAgICAg
ICAgcmV0dXJuIGJyZWFrcG9pbnQ7CiAgICAgfSwKIAotICAgIGNyZWF0ZUV2ZW50TGlzdGVuZXJC
cmVha3BvaW50OiBmdW5jdGlvbihldmVudE5hbWUsIGRpc2FibGVkKQorICAgIGNyZWF0ZUV2ZW50
TGlzdGVuZXJCcmVha3BvaW50OiBmdW5jdGlvbihldmVudE5hbWUpCiAgICAgewogICAgICAgICB2
YXIgZnJvbnRlbmRJZCA9IGV2ZW50TmFtZTsKICAgICAgICAgaWYgKGZyb250ZW5kSWQgaW4gdGhp
cy5fbmF0aXZlQnJlYWtwb2ludHMpCkBAIC0xNTEsNyArMTQ5LDggQEAgV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQodGhpcywgZnJvbnRlbmRJ
ZCwgZXZlbnROYW1lKTsKICAgICAgICAgdGhpcy5fbmF0aXZlQnJlYWtwb2ludHNbZnJvbnRlbmRJ
ZF0gPSBicmVha3BvaW50OwotICAgICAgICBicmVha3BvaW50LmVuYWJsZWQgPSAhZGlzYWJsZWQ7
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJldmVudC1saXN0ZW5lci1i
cmVha3BvaW50LWFkZGVkIiwgeyBicmVha3BvaW50OiBicmVha3BvaW50LCBldmVudE5hbWU6IGV2
ZW50TmFtZSB9KTsKKyAgICAgICAgYnJlYWtwb2ludC5lbmFibGVkID0gdHJ1ZTsKICAgICAgICAg
cmV0dXJuIGJyZWFrcG9pbnQ7CiAgICAgfSwKIApAQCAtMTc1LDggKzE3NCw3IEBAIFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChicmVha3Bv
aW50LmVuYWJsZWQpCiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVOYXRpdmVCcmVha3BvaW50RnJv
bUJhY2tlbmQoYnJlYWtwb2ludCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9uYXRpdmVCcmVha3Bv
aW50c1ticmVha3BvaW50Ll9mcm9udGVuZElkXTsKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuX3R5
cGUgPT09ICJET00iKQotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2RvbUJyZWFrcG9pbnRzW2Jy
ZWFrcG9pbnQuX2Zyb250ZW5kSWRdOworICAgICAgICB0aGlzLl91cGRhdGVOYXRpdmVCcmVha3Bv
aW50c0luU2V0dGluZ3MoKTsKICAgICAgICAgYnJlYWtwb2ludC5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoInJlbW92ZWQiKTsKICAgICB9LAogCkBAIC0xOTUsNyArMTkzLDcgQEAgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICBfc2V0TmF0aXZlQnJlYWtw
b2ludE9uQmFja2VuZDogZnVuY3Rpb24oYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIGJyZWFr
cG9pbnQuX2JlaW5nU2V0T25CYWNrZW5kID0gdHJ1ZTsKLSAgICAgICAgdmFyIGRhdGEgPSB7IHR5
cGU6IGJyZWFrcG9pbnQuX3R5cGUsIGNvbmRpdGlvbjogYnJlYWtwb2ludC5fY29uZGl0aW9uKCkg
fTsKKyAgICAgICAgdmFyIGRhdGEgPSB7IHR5cGU6IGJyZWFrcG9pbnQuX3R5cGUsIGNvbmRpdGlv
bjogYnJlYWtwb2ludC5fY29uZGl0aW9uIH07CiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0
TmF0aXZlQnJlYWtwb2ludChkYXRhLCBkaWRTZXROYXRpdmVCcmVha3BvaW50LmJpbmQodGhpcykp
OwogCiAgICAgICAgIGZ1bmN0aW9uIGRpZFNldE5hdGl2ZUJyZWFrcG9pbnQoYmFja2VuZEJyZWFr
cG9pbnRJZCkKQEAgLTIwNiw2ICsyMDQsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW2JhY2tl
bmRCcmVha3BvaW50SWRdID0gYnJlYWtwb2ludDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrcG9pbnQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJlbmFibGUtY2hhbmdlZCIpOwor
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlTmF0aXZlQnJlYWtwb2ludHNJblNldHRpbmdzKCk7CiAg
ICAgICAgIH0KICAgICB9LAogCkBAIC0yMTUsNiArMjE0LDE4IEBAIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50TWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9icmVha3Bv
aW50c1ticmVha3BvaW50Ll9iYWNrZW5kSWRdCiAgICAgICAgIGRlbGV0ZSBicmVha3BvaW50Ll9i
YWNrZW5kSWQ7CiAgICAgICAgIGJyZWFrcG9pbnQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJl
bmFibGUtY2hhbmdlZCIpOworICAgICAgICB0aGlzLl91cGRhdGVOYXRpdmVCcmVha3BvaW50c0lu
U2V0dGluZ3MoKTsKKyAgICB9LAorCisgICAgX3VwZGF0ZU5hdGl2ZUJyZWFrcG9pbnRzSW5TZXR0
aW5nczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHBlcnNpc3RlbnRCcmVha3BvaW50
cyA9IFtdOworICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLl9uYXRpdmVCcmVha3BvaW50cykg
eworICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSB0aGlzLl9uYXRpdmVCcmVha3BvaW50c1tp
ZF07CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5fcGVyc2lzdGVudENvbmRpdGlvbikKKyAg
ICAgICAgICAgICAgICBwZXJzaXN0ZW50QnJlYWtwb2ludHMucHVzaCh7IHR5cGU6IGJyZWFrcG9p
bnQuX3R5cGUsIGVuYWJsZWQ6IGJyZWFrcG9pbnQuZW5hYmxlZCwgY29uZGl0aW9uOiBicmVha3Bv
aW50Ll9wZXJzaXN0ZW50Q29uZGl0aW9uIH0pOworICAgICAgICB9CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5uYXRpdmVCcmVha3BvaW50cyA9IHBlcnNpc3RlbnRCcmVha3BvaW50czsK
ICAgICB9LAogCiAgICAgZGVidWdnZXJQYXVzZWQ6IGZ1bmN0aW9uKGRldGFpbHMpCkBAIC0yNDIs
MzEgKzI1Myw2MCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0g
ewogICAgICAgICBkZWxldGUgdGhpcy5fbGFzdEhpdEJyZWFrcG9pbnQ7CiAgICAgfSwKIAorICAg
IHJlc3RvcmVCcmVha3BvaW50czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGJyZWFr
cG9pbnRzID0gdGhpcy5fcGVyc2lzdGVudEJyZWFrcG9pbnRzKCk7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChi
cmVha3BvaW50c1tpXS50eXBlID09PSAiRXZlbnRMaXN0ZW5lciIpCisgICAgICAgICAgICAgICAg
dGhpcy5jcmVhdGVFdmVudExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50c1tpXS5jb25kaXRp
b24uZXZlbnROYW1lKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnRzW2ldLnR5cGUg
PT09ICJYSFIiKQorICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlWEhSQnJlYWtwb2ludChicmVh
a3BvaW50c1tpXS5jb25kaXRpb24udXJsLCAhYnJlYWtwb2ludHNbaV0uZW5hYmxlZCk7CisgICAg
ICAgIH0KKyAgICB9LAorCiAgICAgcmVzdG9yZURPTUJyZWFrcG9pbnRzOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICB2YXIgZG9tQnJlYWtwb2ludHMgPSB0aGlzLl9kb21CcmVha3BvaW50czsK
LSAgICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludHMgPSB7fTsKKyAgICAgICAgZnVuY3Rpb24gZGlk
UHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHBhdGgsIG5vZGVJZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcGF0aFRvTm9kZUlkW3BhdGhdID0gbm9kZUlkOworICAgICAgICAgICAgcGVuZGluZ0Nh
bGxzIC09IDE7CisgICAgICAgICAgICBpZiAocGVuZGluZ0NhbGxzKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRz
W2ldOworICAgICAgICAgICAgICAgIHZhciBub2RlSWQgPSBwYXRoVG9Ob2RlSWRbYnJlYWtwb2lu
dC5jb25kaXRpb24ucGF0aF07CisgICAgICAgICAgICAgICAgaWYgKG5vZGVJZCkKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5jcmVhdGVET01CcmVha3BvaW50KG5vZGVJZCwgYnJlYWtwb2ludC5j
b25kaXRpb24udHlwZSwgIWJyZWFrcG9pbnQuZW5hYmxlZCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KIAotICAgICAgICB2YXIgYnJlYWtwb2ludHNUb1Jlc3RvcmUgPSB7fTsKLSAgICAgICAg
Zm9yICh2YXIgZnJvbnRlbmRJZCBpbiBkb21CcmVha3BvaW50cykgewotICAgICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBkb21CcmVha3BvaW50c1tmcm9udGVuZElkXTsKLSAgICAgICAgICAgIHZh
ciBwYXRoID0gYnJlYWtwb2ludC5fcGF0aDsKLSAgICAgICAgICAgIGlmICghcGF0aCkKKyAgICAg
ICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fcGVyc2lzdGVudEJyZWFrcG9pbnRzKCk7CisgICAg
ICAgIHZhciBwYXRoVG9Ob2RlSWQgPSB7fTsKKyAgICAgICAgdmFyIHBlbmRpbmdDYWxscyA9IDA7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChicmVha3BvaW50c1tpXS50eXBlICE9PSAiRE9NIikKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICghYnJlYWtwb2ludHNUb1Jlc3RvcmVb
cGF0aF0pIHsKLSAgICAgICAgICAgICAgICBicmVha3BvaW50c1RvUmVzdG9yZVtwYXRoXSA9IFtd
OwotICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucHVzaE5vZGVCeVBhdGhUb0Zyb250
ZW5kKHBhdGgsIHJlc3RvcmVCcmVha3BvaW50c0Zvck5vZGUuYmluZCh0aGlzLCBicmVha3BvaW50
c1RvUmVzdG9yZVtwYXRoXSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWtwb2lu
dHNUb1Jlc3RvcmVbcGF0aF0ucHVzaChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHZhciBwYXRo
ID0gYnJlYWtwb2ludHNbaV0uY29uZGl0aW9uLnBhdGg7CisgICAgICAgICAgICBpZiAocGF0aCBp
biBwYXRoVG9Ob2RlSWQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBw
YXRoVG9Ob2RlSWRbcGF0aF0gPSAwOworICAgICAgICAgICAgcGVuZGluZ0NhbGxzICs9IDE7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChwYXRo
LCBkaWRQdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQuYmluZCh0aGlzLCBwYXRoKSk7CiAgICAgICAg
IH0KKyAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHJlc3RvcmVCcmVha3BvaW50c0Zvck5vZGUo
YnJlYWtwb2ludHMsIG5vZGVJZCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFub2RlSWQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURP
TUJyZWFrcG9pbnQobm9kZUlkLCBicmVha3BvaW50c1tpXS5fZG9tRXZlbnRUeXBlLCAhYnJlYWtw
b2ludHNbaV0uZW5hYmxlZCk7CisgICAgX3BlcnNpc3RlbnRCcmVha3BvaW50czogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICB2YXIgYnJlYWtwb2lu
dHMgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubmF0aXZlQnJlYWtwb2ludHM7CisgICAgICAgIGlm
IChicmVha3BvaW50cyBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tpXTsKKyAgICAgICAgICAgICAgICBpZiAoInR5cGUi
IGluIGJyZWFrcG9pbnQgJiYgImNvbmRpdGlvbiIgaW4gYnJlYWtwb2ludCkKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0LnB1c2goYnJlYWtwb2ludCkKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIH0KIApAQCAtNDA1LDExICs0NDUsMTIg
QEAgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9pbnQgPSBmdW5jdGlvbihtYW5hZ2VyLCBmcm9udGVu
ZElkLCBub2RlSWQsIGRvbUV2ZW50VHlwZSkKICAgICBXZWJJbnNwZWN0b3IuTmF0aXZlQnJlYWtw
b2ludC5jYWxsKHRoaXMsIG1hbmFnZXIsIGZyb250ZW5kSWQsICJET00iKTsKICAgICB0aGlzLl9u
b2RlSWQgPSBub2RlSWQ7CiAgICAgdGhpcy5fZG9tRXZlbnRUeXBlID0gZG9tRXZlbnRUeXBlOwor
ICAgIHRoaXMuX2NvbmRpdGlvbiA9IHsgbm9kZUlkOiB0aGlzLl9ub2RlSWQsIHR5cGU6IHRoaXMu
X2RvbUV2ZW50VHlwZSB9OwogCiAgICAgdmFyIG5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
bm9kZUZvcklkKHRoaXMuX25vZGVJZCk7CiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAgbm9kZS5i
cmVha3BvaW50c1t0aGlzLl9kb21FdmVudFR5cGVdID0gdGhpczsKLSAgICAgICAgdGhpcy5fcGF0
aCA9IG5vZGUucGF0aCgpOworICAgICAgICB0aGlzLl9wZXJzaXN0ZW50Q29uZGl0aW9uID0geyBw
YXRoOiBub2RlLnBhdGgoKSwgdHlwZTogdGhpcy5fZG9tRXZlbnRUeXBlIH07CiAgICAgfQogfQog
CkBAIC00NTksMTEgKzUwMCw2IEBAIFdlYkluc3BlY3Rvci5ET01CcmVha3BvaW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5mb3JtYXRMb2NhbGl6ZWQoIlBhdXNlZCBv
biBhIFwiJXNcIiBicmVha3BvaW50IHNldCBvbiAlcy4iLCBzdWJzdGl0dXRpb25zLCBmb3JtYXR0
ZXJzLCAiIiwgYXBwZW5kKTsKICAgICB9LAogCi0gICAgX2NvbmRpdGlvbjogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHsgbm9kZUlkOiB0aGlzLl9ub2RlSWQsIHR5cGU6IHRoaXMu
X2RvbUV2ZW50VHlwZSB9OwotICAgIH0sCi0KICAgICBfb25SZW1vdmU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHZhciBub2RlID0gV2ViSW5zcGVjdG9yLmRvbUFnZW50Lm5vZGVGb3JJZCh0
aGlzLl9ub2RlSWQpOwpAQCAtNDc4LDYgKzUxNCwyMCBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lckJyZWFrcG9pbnQgPSBmdW5jdGlvbihtYW5hZ2VyLCBmcm9udGVuZElkLCBldmVudE5hbWUp
CiB7CiAgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFrcG9pbnQuY2FsbCh0aGlzLCBtYW5hZ2Vy
LCBmcm9udGVuZElkLCAiRXZlbnRMaXN0ZW5lciIpOwogICAgIHRoaXMuX2V2ZW50TmFtZSA9IGV2
ZW50TmFtZTsKKyAgICB0aGlzLl9jb25kaXRpb24gPSB7IGV2ZW50TmFtZTogdGhpcy5fZXZlbnRO
YW1lIH07CisgICAgdGhpcy5fcGVyc2lzdGVudENvbmRpdGlvbiA9IHRoaXMuX2NvbmRpdGlvbjsK
K30KKworV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50LmV2ZW50TmFtZUZvclVJ
ID0gZnVuY3Rpb24oZXZlbnROYW1lKQoreworICAgIGlmICghV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJCcmVha3BvaW50Ll9ldmVudE5hbWVzRm9yVUkpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LkV2ZW50TGlzdGVuZXJCcmVha3BvaW50Ll9ldmVudE5hbWVzRm9yVUkgPSB7CisgICAgICAgICAg
ICAiaW5zdHJ1bWVudGF0aW9uOnNldFRpbWVyIjogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXQg
VGltZXIiKSwKKyAgICAgICAgICAgICJpbnN0cnVtZW50YXRpb246Y2xlYXJUaW1lciI6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgVGltZXIiKSwKKyAgICAgICAgICAgICJpbnN0cnVtZW50
YXRpb246dGltZXJGaXJlZCI6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZXIgRmlyZWQiKQor
ICAgICAgICB9OworICAgIH0KKyAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJC
cmVha3BvaW50Ll9ldmVudE5hbWVzRm9yVUlbZXZlbnROYW1lXSB8fCBldmVudE5hbWUuc3Vic3Ry
aW5nKGV2ZW50TmFtZS5pbmRleE9mKCI6IikgKyAxKTsKIH0KIAogV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKQEAgLTQ5NywyMSArNTQ3LDkgQEAgV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdGF0dXMpKTsKICAg
ICB9LAogCi0gICAgX2NvbmRpdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHsgZXZlbnROYW1lOiB0aGlzLl9ldmVudE5hbWUgfTsKLSAgICB9LAotCiAgICAgX3VpRXZlbnRO
YW1lOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyQnJlYWtwb2ludC5fdWlFdmVudE5hbWVzKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0
b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQuX3VpRXZlbnROYW1lcyA9IHsKLSAgICAgICAgICAg
ICAgICAiaW5zdHJ1bWVudGF0aW9uOnNldFRpbWVyIjogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
ZXQgVGltZXIiKSwKLSAgICAgICAgICAgICAgICAiaW5zdHJ1bWVudGF0aW9uOmNsZWFyVGltZXIi
OiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIFRpbWVyIiksCi0gICAgICAgICAgICAgICAg
Imluc3RydW1lbnRhdGlvbjp0aW1lckZpcmVkIjogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1l
ciBGaXJlZCIpCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQuX3VpRXZlbnROYW1lc1t0aGlzLl9ldmVu
dE5hbWVdIHx8IHRoaXMuX2V2ZW50TmFtZS5zdWJzdHJpbmcodGhpcy5fZXZlbnROYW1lLmluZGV4
T2YoIjoiKSArIDEpOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJC
cmVha3BvaW50LmV2ZW50TmFtZUZvclVJKHRoaXMuX2V2ZW50TmFtZSk7CiAgICAgfQogfQogCkBA
IC01MjEsNiArNTU5LDggQEAgV2ViSW5zcGVjdG9yLlhIUkJyZWFrcG9pbnQgPSBmdW5jdGlvbiht
YW5hZ2VyLCBmcm9udGVuZElkLCB1cmwpCiB7CiAgICAgV2ViSW5zcGVjdG9yLk5hdGl2ZUJyZWFr
cG9pbnQuY2FsbCh0aGlzLCBtYW5hZ2VyLCBmcm9udGVuZElkLCAiWEhSIik7CiAgICAgdGhpcy5f
dXJsID0gdXJsOworICAgIHRoaXMuX2NvbmRpdGlvbiA9IHsgdXJsOiB0aGlzLl91cmwgfTsKKyAg
ICB0aGlzLl9wZXJzaXN0ZW50Q29uZGl0aW9uID0gdGhpcy5fY29uZGl0aW9uOwogfQogCiBXZWJJ
bnNwZWN0b3IuWEhSQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CkBAIC01NDMsMTEgKzU4Myw2IEBA
IFdlYkluc3BlY3Rvci5YSFJCcmVha3BvaW50LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IHZhciBzdGF0dXMgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhdXNlZCBvbiBhIFhNTEh0dHBS
ZXF1ZXN0LiIpOwogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHN0YXR1cykpOwotICAgIH0sCi0KLSAgICBfY29uZGl0aW9uOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICByZXR1cm4geyB1cmw6IHRoaXMuX3VybCB9OwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRzU2lkZWJhclBh
bmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFu
ZS5qcwppbmRleCAyMTUxMTM3Li43MjU0MmVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5qcwpAQCAtNDksNiArNDksNyBA
QCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAKICAg
ICBhZGRCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50SXRlbSkKICAgICB7CisgICAgICAg
IGJyZWFrcG9pbnRJdGVtLmFkZEV2ZW50TGlzdGVuZXIoImJyZWFrcG9pbnQtaGl0IiwgdGhpcy5f
YnJlYWtwb2ludEhpdCwgdGhpcyk7CiAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmFkZEV2ZW50TGlz
dGVuZXIoInJlbW92ZWQiLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwgdGhpcyk7CiAKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBicmVha3BvaW50SXRlbS5lbGVtZW50KCk7CkBAIC03Myw2ICs3NCwx
MSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludHNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KICAgICB9LAogCisgICAgX2JyZWFrcG9pbnRIaXQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7CisgICAgfSwKKwogICAgIF9icmVh
a3BvaW50UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmxpc3RF
bGVtZW50LnJlbW92ZUNoaWxkKGV2ZW50LnRhcmdldC5lbGVtZW50KCkpOwpAQCAtMTkxLDkgKzE5
NywxMCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEl0ZW0ucHJvdG90eXBlID0gewogCiAgICAg
X2hpdFN0YXRlQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAoZXZl
bnQudGFyZ2V0LmhpdCkKKyAgICAgICAgaWYgKGV2ZW50LnRhcmdldC5oaXQpIHsKICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYWRkU3R5bGVDbGFzcygiYnJlYWtwb2ludC1oaXQiKTsKLSAgICAg
ICAgZWxzZQorICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImJyZWFr
cG9pbnQtaGl0Iik7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5y
ZW1vdmVTdHlsZUNsYXNzKCJicmVha3BvaW50LWhpdCIpOwogICAgIH0KIH0KQEAgLTI0MCw5NyAr
MjQ3LDExNiBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzU2lkZWJhclBh
bmUgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5jYXRlZ29yaWVzRWxlbWVudC5hZGRTdHlsZUNsYXNz
KCJwcm9wZXJ0aWVzLXRyZWUgZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMiKTsKICAgICB0aGlz
LmNhdGVnb3JpZXNUcmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0aGlzLmNhdGVnb3JpZXNF
bGVtZW50KTsKICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuY2F0ZWdvcmll
c0VsZW1lbnQpOworCisgICAgV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoImV2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnQtYWRkZWQiLCB0aGlzLl9icmVha3Bv
aW50QWRkZWQsIHRoaXMpOworCisgICAgdGhpcy5fYnJlYWtwb2ludEl0ZW1zID0ge307CisgICAg
dGhpcy5fY3JlYXRlQ2F0ZWdvcnkoIk1vdXNlIiwgImxpc3RlbmVyIiwgWyJjbGljayIsICJkYmxj
bGljayIsICJtb3VzZWRvd24iLCAibW91c2V1cCIsICJtb3VzZW92ZXIiLCAibW91c2Vtb3ZlIiwg
Im1vdXNlb3V0IiwgIm1vdXNld2hlZWwiXSk7CisgICAgdGhpcy5fY3JlYXRlQ2F0ZWdvcnkoIktl
eWJvYXJkIiwgImxpc3RlbmVyIiwgWyJrZXlkb3duIiwgImtleXByZXNzIiwgImtleXVwIl0pOwor
ICAgIHRoaXMuX2NyZWF0ZUNhdGVnb3J5KCJIVE1MIGZyYW1lL29iamVjdCIsICJsaXN0ZW5lciIs
IFsibG9hZCIsICJlcnJvciIsICJyZXNpemUiLCAic2Nyb2xsIl0pOworICAgIHRoaXMuX2NyZWF0
ZUNhdGVnb3J5KCJUaW1lciIsICJpbnN0cnVtZW50YXRpb24iLCBbInNldFRpbWVyIiwgImNsZWFy
VGltZXIiLCAidGltZXJGaXJlZCJdKTsKIH0KIAogV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJC
cmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKLSAgICBfcG9wdWxhdGU6IGZ1bmN0
aW9uKCkKKyAgICBfY3JlYXRlQ2F0ZWdvcnk6IGZ1bmN0aW9uKG5hbWUsIHR5cGUsIGV2ZW50TmFt
ZXMpCiAgICAgewotICAgICAgICB2YXIgY2F0ZWdvcmllcyA9IHsKLSAgICAgICAgICAgICJNb3Vz
ZSI6IHsgdHlwZTogImxpc3RlbmVyIiwgZXZlbnROYW1lczogWyJjbGljayIsICJkYmxjbGljayIs
ICJtb3VzZWRvd24iLCAibW91c2V1cCIsICJtb3VzZW92ZXIiLCAibW91c2Vtb3ZlIiwgIm1vdXNl
b3V0IiwgIm1vdXNld2hlZWwiXSB9LAotICAgICAgICAgICAgIktleWJvYXJkIjogeyB0eXBlOiAi
bGlzdGVuZXIiLCBldmVudE5hbWVzOiBbImtleWRvd24iLCAia2V5cHJlc3MiLCAia2V5dXAiXSB9
LAotICAgICAgICAgICAgIkhUTUwgZnJhbWUvb2JqZWN0IjogIHsgdHlwZTogImxpc3RlbmVyIiwg
ZXZlbnROYW1lczogWyJsb2FkIiwgImVycm9yIiwgInJlc2l6ZSIsICJzY3JvbGwiXSB9LAotICAg
ICAgICAgICAgIlRpbWVyIjogeyB0eXBlOiAiaW5zdHJ1bWVudGF0aW9uIiwgZXZlbnROYW1lczog
WyJzZXRUaW1lciIsICJjbGVhclRpbWVyIiwgInRpbWVyRmlyZWQiXSB9Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykgewotICAgICAgICAgICAg
dmFyIGNhdGVnb3J5VHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKGNhdGVnb3J5KSk7Ci0gICAgICAgICAgICB0aGlzLmNhdGVnb3JpZXNUcmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZChjYXRlZ29yeVRyZWVFbGVtZW50KTsKLSAgICAgICAgICAgIGNhdGVnb3J5
VHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoImV2ZW50LWNhdGVnb3J5
Iik7Ci0gICAgICAgICAgICBjYXRlZ29yeVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSB0cnVlOwot
Ci0gICAgICAgICAgICB2YXIgY2F0ZWdvcnlJdGVtID0ge307Ci0gICAgICAgICAgICBjYXRlZ29y
eUl0ZW0uY2hlY2tib3ggPSB0aGlzLl9jcmVhdGVDaGVja2JveChjYXRlZ29yeVRyZWVFbGVtZW50
LCB0aGlzLl9jYXRlZ29yeUNoZWNrYm94Q2xpY2tlZC5iaW5kKHRoaXMsIGNhdGVnb3J5SXRlbSkp
OwotICAgICAgICAgICAgY2F0ZWdvcnlJdGVtLmNoaWxkcmVuID0ge307Ci0KLSAgICAgICAgICAg
IHZhciBjYXRlZ29yeVR5cGUgPSBjYXRlZ29yaWVzW2NhdGVnb3J5XS50eXBlOwotICAgICAgICAg
ICAgdmFyIGV2ZW50TmFtZXMgPSBjYXRlZ29yaWVzW2NhdGVnb3J5XS5ldmVudE5hbWVzOwotICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBldmVudE5hbWVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGV2ZW50TmFtZSA9IGNhdGVnb3J5VHlwZSArICI6IiArIGV2ZW50
TmFtZXNbaV07Ci0KLSAgICAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IFdlYkluc3BlY3Rv
ci5icmVha3BvaW50TWFuYWdlci5jcmVhdGVFdmVudExpc3RlbmVyQnJlYWtwb2ludChldmVudE5h
bWUsIHRydWUpOwotICAgICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludCkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5wb3B1bGF0ZUxhYmVsRWxlbWVudChsYWJlbEVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHZh
ciBldmVudE5hbWVUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChsYWJlbEVsZW1lbnQpOwot
ICAgICAgICAgICAgICAgIGNhdGVnb3J5VHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZXZlbnROYW1l
VHJlZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGV2ZW50TmFtZVRyZWVFbGVtZW50Lmxpc3RJ
dGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzb3VyY2UtY29kZSIpOwotICAgICAgICAgICAgICAg
IGV2ZW50TmFtZVRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSB0cnVlOwotCi0gICAgICAgICAgICAg
ICAgdmFyIGV2ZW50TmFtZUl0ZW0gPSB7fTsKLSAgICAgICAgICAgICAgICBldmVudE5hbWVJdGVt
LmNoZWNrYm94ID0gdGhpcy5fY3JlYXRlQ2hlY2tib3goZXZlbnROYW1lVHJlZUVsZW1lbnQsIHRo
aXMuX2V2ZW50TmFtZUNoZWNrYm94Q2xpY2tlZC5iaW5kKHRoaXMsIGNhdGVnb3J5SXRlbSwgZXZl
bnROYW1lSXRlbSkpOwotICAgICAgICAgICAgICAgIGV2ZW50TmFtZUl0ZW0uYnJlYWtwb2ludCA9
IGJyZWFrcG9pbnQ7Ci0KLSAgICAgICAgICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVu
ZXIoImVuYWJsZS1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludEVuYWJsZUNoYW5nZWQuYmluZCh0
aGlzLCBjYXRlZ29yeUl0ZW0sIGV2ZW50TmFtZUl0ZW0pLCB0cnVlKTsKLQotICAgICAgICAgICAg
ICAgIGNhdGVnb3J5SXRlbS5jaGlsZHJlbltldmVudE5hbWVdID0gZXZlbnROYW1lSXRlbTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgdmFyIGNhdGVnb3J5SXRlbSA9IHt9OworICAgICAgICBjYXRl
Z29yeUl0ZW0uZWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmco
bmFtZSkpOworICAgICAgICB0aGlzLmNhdGVnb3JpZXNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChj
YXRlZ29yeUl0ZW0uZWxlbWVudCk7CisgICAgICAgIGNhdGVnb3J5SXRlbS5lbGVtZW50Lmxpc3RJ
dGVtRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJldmVudC1jYXRlZ29yeSIpOworICAgICAgICBjYXRl
Z29yeUl0ZW0uZWxlbWVudC5zZWxlY3RhYmxlID0gdHJ1ZTsKKworICAgICAgICBjYXRlZ29yeUl0
ZW0uY2hlY2tib3ggPSB0aGlzLl9jcmVhdGVDaGVja2JveChjYXRlZ29yeUl0ZW0uZWxlbWVudCk7
CisgICAgICAgIGNhdGVnb3J5SXRlbS5jaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX2NhdGVnb3J5Q2hlY2tib3hDbGlja2VkLmJpbmQodGhpcywgY2F0ZWdvcnlJdGVtKSwg
dHJ1ZSk7CisKKyAgICAgICAgY2F0ZWdvcnlJdGVtLmNoaWxkcmVuID0ge307CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZXZlbnROYW1lcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAg
dmFyIGV2ZW50TmFtZSA9IHR5cGUgKyAiOiIgKyBldmVudE5hbWVzW2ldOworCisgICAgICAgICAg
ICB2YXIgYnJlYWtwb2ludEl0ZW0gPSB7fTsKKyAgICAgICAgICAgIHZhciB0aXRsZSA9IFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyQnJlYWtwb2ludC5ldmVudE5hbWVGb3JVSShldmVudE5hbWUp
OworICAgICAgICAgICAgYnJlYWtwb2ludEl0ZW0uZWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCh0
aXRsZSk7CisgICAgICAgICAgICBjYXRlZ29yeUl0ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChicmVh
a3BvaW50SXRlbS5lbGVtZW50KTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmVsZW1lbnQu
bGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNvdXJjZS1jb2RlIik7CisgICAgICAgICAg
ICBicmVha3BvaW50SXRlbS5lbGVtZW50LnNlbGVjdGFibGUgPSB0cnVlOworCisgICAgICAgICAg
ICBicmVha3BvaW50SXRlbS5jaGVja2JveCA9IHRoaXMuX2NyZWF0ZUNoZWNrYm94KGJyZWFrcG9p
bnRJdGVtLmVsZW1lbnQpOworICAgICAgICAgICAgYnJlYWtwb2ludEl0ZW0uY2hlY2tib3guYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9icmVha3BvaW50Q2hlY2tib3hDbGlja2VkLmJp
bmQodGhpcywgYnJlYWtwb2ludEl0ZW0pLCB0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJ
dGVtLnBhcmVudCA9IGNhdGVnb3J5SXRlbTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmV2
ZW50TmFtZSA9IGV2ZW50TmFtZTsKKworICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEl0ZW1z
W2V2ZW50TmFtZV0gPSBicmVha3BvaW50SXRlbTsKKyAgICAgICAgICAgIGNhdGVnb3J5SXRlbS5j
aGlsZHJlbltldmVudE5hbWVdID0gYnJlYWtwb2ludEl0ZW07CiAgICAgICAgIH0KICAgICB9LAog
Ci0gICAgX2NyZWF0ZUNoZWNrYm94OiBmdW5jdGlvbih0cmVlRWxlbWVudCwgY2hlY2tib3hDbGlj
a2VkRGVsZWdhdGUpCisgICAgX2NyZWF0ZUNoZWNrYm94OiBmdW5jdGlvbih0cmVlRWxlbWVudCkK
ICAgICB7CiAgICAgICAgIHZhciBjaGVja2JveCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7CiAgICAgICAgIGNoZWNrYm94LmNsYXNzTmFtZSA9ICJjaGVja2JveC1lbGVtIjsKICAg
ICAgICAgY2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7Ci0gICAgICAgIGNoZWNrYm94LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgY2hlY2tib3hDbGlja2VkRGVsZWdhdGUsIHRydWUpOwogICAg
ICAgICB0cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNoZWNrYm94LCB0
cmVlRWxlbWVudC5saXN0SXRlbUVsZW1lbnQuZmlyc3RDaGlsZCk7CiAgICAgICAgIHJldHVybiBj
aGVja2JveDsKICAgICB9LAogCiAgICAgX2NhdGVnb3J5Q2hlY2tib3hDbGlja2VkOiBmdW5jdGlv
bihjYXRlZ29yeUl0ZW0pCiAgICAgewotICAgICAgICB2YXIgY2hlY2tib3ggPSBjYXRlZ29yeUl0
ZW0uY2hlY2tib3g7Ci0gICAgICAgIGNoZWNrYm94LmluZGV0ZXJtaW5hdGUgPSBmYWxzZTsKKyAg
ICAgICAgdmFyIGNoZWNrZWQgPSBjYXRlZ29yeUl0ZW0uY2hlY2tib3guY2hlY2tlZDsKICAgICAg
ICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGNhdGVnb3J5SXRlbS5jaGlsZHJlbikgewotICAgICAg
ICAgICAgdmFyIGV2ZW50TmFtZUl0ZW0gPSBjYXRlZ29yeUl0ZW0uY2hpbGRyZW5bZXZlbnROYW1l
XTsKLSAgICAgICAgICAgIGV2ZW50TmFtZUl0ZW0uY2hlY2tib3guY2hlY2tlZCA9IGNoZWNrYm94
LmNoZWNrZWQ7Ci0gICAgICAgICAgICBldmVudE5hbWVJdGVtLmJyZWFrcG9pbnQuZW5hYmxlZCA9
IGNoZWNrYm94LmNoZWNrZWQ7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludEl0ZW0gPSBjYXRl
Z29yeUl0ZW0uY2hpbGRyZW5bZXZlbnROYW1lXTsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50
SXRlbS5jaGVja2JveC5jaGVja2VkICE9PSBjaGVja2VkKSB7CisgICAgICAgICAgICAgICAgYnJl
YWtwb2ludEl0ZW0uY2hlY2tib3guY2hlY2tlZCA9IGNoZWNrZWQ7CisgICAgICAgICAgICAgICAg
dGhpcy5fYnJlYWtwb2ludENoZWNrYm94Q2xpY2tlZChicmVha3BvaW50SXRlbSk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2V2ZW50TmFtZUNoZWNrYm94Q2xpY2tl
ZDogZnVuY3Rpb24oY2F0ZWdvcnlJdGVtLCBldmVudE5hbWVJdGVtKQorICAgIF9icmVha3BvaW50
Q2hlY2tib3hDbGlja2VkOiBmdW5jdGlvbihicmVha3BvaW50SXRlbSkKICAgICB7Ci0gICAgICAg
IHRoaXMuX3VwZGF0ZUNhdGVnb3J5Q2hlY2tib3goY2F0ZWdvcnlJdGVtKTsKLSAgICAgICAgZXZl
bnROYW1lSXRlbS5icmVha3BvaW50LmVuYWJsZWQgPSBldmVudE5hbWVJdGVtLmNoZWNrYm94LmNo
ZWNrZWQ7CisgICAgICAgIGlmIChicmVha3BvaW50SXRlbS5jaGVja2JveC5jaGVja2VkKQorICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2VyLmNyZWF0ZUV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50KGJyZWFrcG9pbnRJdGVtLmV2ZW50TmFtZSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmJyZWFrcG9pbnQucmVtb3ZlKCk7CiAgICAgfSwKIAot
ICAgIF9icmVha3BvaW50RW5hYmxlQ2hhbmdlZDogZnVuY3Rpb24oY2F0ZWdvcnlJdGVtLCBldmVu
dE5hbWVJdGVtKQorICAgIF9icmVha3BvaW50QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsK
LSAgICAgICAgaWYgKGV2ZW50TmFtZUl0ZW0uY2hlY2tib3guY2hlY2tlZCA9PT0gZXZlbnROYW1l
SXRlbS5icmVha3BvaW50LmVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZh
ciBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5icmVha3BvaW50OworICAgICAgICB2YXIgZXZlbnRO
YW1lID0gZXZlbnQuZGF0YS5ldmVudE5hbWU7CisKKyAgICAgICAgdmFyIGJyZWFrcG9pbnRJdGVt
ID0gdGhpcy5fYnJlYWtwb2ludEl0ZW1zW2V2ZW50TmFtZV07CisgICAgICAgIGJyZWFrcG9pbnRJ
dGVtLmJyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoImhpdC1zdGF0ZS1jaGFuZ2VkIiwgdGhpcy5fYnJlYWtwb2ludEhpdFN0YXRlQ2hh
bmdlZC5iaW5kKHRoaXMsIGJyZWFrcG9pbnRJdGVtKSk7CisgICAgICAgIGJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcigicmVtb3ZlZCIsIHRoaXMuX2JyZWFrcG9pbnRSZW1vdmVkLmJpbmQodGhp
cywgYnJlYWtwb2ludEl0ZW0pKTsKKyAgICAgICAgYnJlYWtwb2ludEl0ZW0uY2hlY2tib3guY2hl
Y2tlZCA9IHRydWU7CisgICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5Q2hlY2tib3goYnJlYWtw
b2ludEl0ZW0pOworICAgIH0sCisKKyAgICBfYnJlYWtwb2ludEhpdFN0YXRlQ2hhbmdlZDogZnVu
Y3Rpb24oYnJlYWtwb2ludEl0ZW0sIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50LnRh
cmdldC5oaXQpIHsKKyAgICAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOworICAgICAgICAg
ICAgdmFyIGNhdGVnb3J5SXRlbSA9IGJyZWFrcG9pbnRJdGVtLnBhcmVudDsKKyAgICAgICAgICAg
IGNhdGVnb3J5SXRlbS5lbGVtZW50LmV4cGFuZCgpOworICAgICAgICAgICAgYnJlYWtwb2ludEl0
ZW0uZWxlbWVudC5saXN0SXRlbUVsZW1lbnQuYWRkU3R5bGVDbGFzcygiYnJlYWtwb2ludC1oaXQi
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBicmVha3BvaW50SXRlbS5lbGVtZW50Lmxp
c3RJdGVtRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJicmVha3BvaW50LWhpdCIpOworICAgIH0s
CiAKLSAgICAgICAgZXZlbnROYW1lSXRlbS5jaGVja2JveC5jaGVja2VkID0gZXZlbnROYW1lSXRl
bS5icmVha3BvaW50LmVuYWJsZWQ7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUNhdGVnb3J5Q2hlY2ti
b3goY2F0ZWdvcnlJdGVtKTsKKyAgICBfYnJlYWtwb2ludFJlbW92ZWQ6IGZ1bmN0aW9uKGJyZWFr
cG9pbnRJdGVtKQorICAgIHsKKyAgICAgICAgYnJlYWtwb2ludEl0ZW0uYnJlYWtwb2ludCA9IG51
bGw7CisgICAgICAgIGJyZWFrcG9pbnRJdGVtLmNoZWNrYm94LmNoZWNrZWQgPSBmYWxzZTsKKyAg
ICAgICAgdGhpcy5fdXBkYXRlQ2F0ZWdvcnlDaGVja2JveChicmVha3BvaW50SXRlbSk7CiAgICAg
fSwKIAotICAgIF91cGRhdGVDYXRlZ29yeUNoZWNrYm94OiBmdW5jdGlvbihjYXRlZ29yeUl0ZW0p
CisgICAgX3VwZGF0ZUNhdGVnb3J5Q2hlY2tib3g6IGZ1bmN0aW9uKGJyZWFrcG9pbnRJdGVtKQog
ICAgIHsKKyAgICAgICAgdmFyIGNhdGVnb3J5SXRlbSA9IGJyZWFrcG9pbnRJdGVtLnBhcmVudDsK
ICAgICAgICAgdmFyIGhhc0VuYWJsZWQgPSBmYWxzZSwgaGFzRGlzYWJsZWQgPSBmYWxzZTsKICAg
ICAgICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGNhdGVnb3J5SXRlbS5jaGlsZHJlbikgewotICAg
ICAgICAgICAgdmFyIGV2ZW50TmFtZUl0ZW0gPSBjYXRlZ29yeUl0ZW0uY2hpbGRyZW5bZXZlbnRO
YW1lXTsKLSAgICAgICAgICAgIGlmIChldmVudE5hbWVJdGVtLmNoZWNrYm94LmNoZWNrZWQpCisg
ICAgICAgICAgICB2YXIgYnJlYWtwb2ludEl0ZW0gPSBjYXRlZ29yeUl0ZW0uY2hpbGRyZW5bZXZl
bnROYW1lXTsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50SXRlbS5jaGVja2JveC5jaGVja2Vk
KQogICAgICAgICAgICAgICAgIGhhc0VuYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGhhc0Rpc2FibGVkID0gdHJ1ZTsKQEAgLTM0MSw4ICszNjcsMTIgQEAg
V2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJCcmVha3BvaW50c1NpZGViYXJQYW5lLnByb3RvdHlw
ZSA9IHsKIAogICAgIHJlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLmNhdGVn
b3JpZXNUcmVlT3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLl9wb3B1bGF0
ZSgpOworICAgICAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gdGhpcy5fYnJlYWtwb2ludEl0ZW1z
KSB7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludEl0ZW0gPSB0aGlzLl9icmVha3BvaW50SXRl
bXNbZXZlbnROYW1lXTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnRJdGVtLmJyZWFrcG9pbnQgPSBu
dWxsOworICAgICAgICAgICAgYnJlYWtwb2ludEl0ZW0uY2hlY2tib3guY2hlY2tlZCA9IGZhbHNl
OworICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2F0ZWdvcnlDaGVja2JveChicmVha3BvaW50SXRl
bSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwppbmRleCBlZWFmZjJlLi4wOTNjNDBhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCkBAIC00OCw3ICs0OCw3IEBAIFdlYkluc3BlY3Rv
ci5Db25zb2xlVmlldyA9IGZ1bmN0aW9uKGRyYXdlcikKICAgICB0aGlzLnByb21wdEVsZW1lbnQu
Y2xhc3NOYW1lID0gInNvdXJjZS1jb2RlIjsKICAgICB0aGlzLnByb21wdEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3Byb21wdEtleURvd24uYmluZCh0aGlzKSwgdHJ1
ZSk7CiAgICAgdGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRQcm9tcHQodGhpcy5w
cm9tcHRFbGVtZW50LCB0aGlzLmNvbXBsZXRpb25zLmJpbmQodGhpcyksIEV4cHJlc3Npb25TdG9w
Q2hhcmFjdGVycyArICIuIik7Ci0gICAgdGhpcy5wcm9tcHQuaGlzdG9yeSA9IFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvblNldHRpbmdzLmNvbnNvbGVIaXN0b3J5OworICAgIHRoaXMucHJvbXB0Lmhp
c3RvcnkgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29uc29sZUhpc3Rvcnk7CiAKICAgICB0aGlz
LnRvcEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAobnVsbCwgMCk7CiAgICAg
dGhpcy5tZXNzYWdlc0VsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMudG9wR3JvdXAuZWxlbWVudCwg
dGhpcy5wcm9tcHRFbGVtZW50KTsKQEAgLTUzMCw3ICs1MzAsNyBAQCBXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgc2VsZi5wcm9tcHQuaGlzdG9yeU9m
ZnNldCA9IDA7CiAgICAgICAgICAgICBzZWxmLnByb21wdC50ZXh0ID0gIiI7CiAKLSAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmNvbnNvbGVIaXN0b3J5ID0gc2Vs
Zi5wcm9tcHQuaGlzdG9yeS5zbGljZSgtMzApOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLmNvbnNvbGVIaXN0b3J5ID0gc2VsZi5wcm9tcHQuaGlzdG9yeS5zbGljZSgtMzApOwog
CiAgICAgICAgICAgICBzZWxmLmFkZE1lc3NhZ2UobmV3IFdlYkluc3BlY3Rvci5Db25zb2xlQ29t
bWFuZFJlc3VsdChyZXN1bHQsIGNvbW1hbmRNZXNzYWdlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5l
LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBh
bmUuanMKaW5kZXggMzM1NDE5MS4uZTUyNmI0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKQEAgLTQ2LDcg
KzQ2LDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlv
bigpCiAgICAgb3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RlZCBO
b2RlIE9ubHkiKTsKICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChv
cHRpb24pOwogCi0gICAgdmFyIGZpbHRlciA9IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRp
bmdzLmV2ZW50TGlzdGVuZXJzRmlsdGVyOworICAgIHZhciBmaWx0ZXIgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXI7CiAgICAgaWYgKGZpbHRlciA9PT0gImFsbCIp
CiAgICAgICAgIHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50WzBdLnNlbGVjdGVkID0gdHJ1ZTsK
ICAgICBlbHNlIGlmIChmaWx0ZXIgPT09ICJzZWxlY3RlZCIpCkBAIC0xMDcsNyArMTA3LDcgQEAg
V2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAg
IF9jaGFuZ2VTZXR0aW5nOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZWxl
Y3RlZE9wdGlvbiA9IHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50W3RoaXMuc2V0dGluZ3NTZWxl
Y3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdOwotICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25TZXR0aW5ncy5ldmVudExpc3RlbmVyc0ZpbHRlciA9IHNlbGVjdGVkT3B0aW9uLnZhbHVlOwor
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPSBzZWxl
Y3RlZE9wdGlvbi52YWx1ZTsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc2Vj
dGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLnNlY3Rpb25zW2ldLnVwZGF0ZSgp
OwpAQCAtMTM3LDcgKzEzNyw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NlY3Rpb24u
cHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgLy8gQSBGaWx0ZXJlZCBBcnJheSBzaW1wbGlm
aWVzIHdoZW4gdG8gY3JlYXRlIGNvbm5lY3RvcnMKICAgICAgICAgdmFyIGZpbHRlcmVkRXZlbnRM
aXN0ZW5lcnMgPSB0aGlzLmV2ZW50TGlzdGVuZXJzOwotICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
LmFwcGxpY2F0aW9uU2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPT09ICJzZWxlY3RlZCIp
IHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5ldmVudExpc3RlbmVyc0ZpbHRl
ciA9PT0gInNlbGVjdGVkIikgewogICAgICAgICAgICAgZmlsdGVyZWRFdmVudExpc3RlbmVycyA9
IFtdOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmV2ZW50TGlzdGVuZXJz
Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFyIGV2ZW50TGlzdGVuZXIgPSB0aGlz
LmV2ZW50TGlzdGVuZXJzW2ldOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UGFuZWwuanMKaW5kZXggY2RhNjViMS4uM2JmOTBmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC02Nyw4ICs2Nyw4IEBAIFdlYkluc3BlY3Rvci5O
ZXR3b3JrUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fY3JlYXRlRmlsdGVyU3RhdHVzQmFy
SXRlbXMoKTsKICAgICB0aGlzLl9jcmVhdGVTdW1tYXJ5QmFyKCk7CiAKLSAgICBpZiAoIVdlYklu
c3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cykKLSAgICAgICAg
dGhpcy5fc2V0TGFyZ2VyUmVzb3VyY2VzKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdz
LnJlc291cmNlc0xhcmdlUm93cyk7CisgICAgaWYgKCFXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVz
b3VyY2VzTGFyZ2VSb3dzKQorICAgICAgICB0aGlzLl9zZXRMYXJnZXJSZXNvdXJjZXMoV2ViSW5z
cGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cyk7CiAKICAgICB0aGlzLl9wb3BvdmVy
SGVscGVyID0gbmV3IFdlYkluc3BlY3Rvci5Qb3BvdmVySGVscGVyKHRoaXMuZWxlbWVudCwgdGhp
cy5fZ2V0UG9wb3ZlckFuY2hvci5iaW5kKHRoaXMpLCB0aGlzLl9zaG93UG9wb3Zlci5iaW5kKHRo
aXMpLCB0cnVlKTsKIApAQCAtNjE1LDcgKzYxNSw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jbGVhckJ1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX3Jlc2V0LmJpbmQodGhpcyksIGZhbHNlKTsKIAogICAgICAgICB0
aGlzLl9sYXJnZXJSZXNvdXJjZXNCdXR0b24gPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXR1c0JhckJ1
dHRvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVzZSBzbWFsbCByZXNvdXJjZSByb3dzLiIpLCAi
bmV0d29yay1sYXJnZXItcmVzb3VyY2VzLXN0YXR1cy1iYXItaXRlbSIpOwotICAgICAgICB0aGlz
Ll9sYXJnZXJSZXNvdXJjZXNCdXR0b24udG9nZ2xlZCA9IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
blNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93czsKKyAgICAgICAgdGhpcy5fbGFyZ2VyUmVzb3Vy
Y2VzQnV0dG9uLnRvZ2dsZWQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VS
b3dzOwogICAgICAgICB0aGlzLl9sYXJnZXJSZXNvdXJjZXNCdXR0b24uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl90b2dnbGVMYXJnZXJSZXNvdXJjZXMuYmluZCh0aGlzKSwgZmFsc2Up
OwogICAgIH0sCiAKQEAgLTg4NCw4ICs4ODQsOCBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1BhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgIF90b2dnbGVMYXJnZXJSZXNvdXJjZXM6IGZ1bmN0aW9uKCkK
ICAgICB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLnJlc291cmNl
c0xhcmdlUm93cyA9ICFXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5yZXNvdXJjZXNM
YXJnZVJvd3M7Ci0gICAgICAgIHRoaXMuX3NldExhcmdlclJlc291cmNlcyhXZWJJbnNwZWN0b3Iu
YXBwbGljYXRpb25TZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3MpOworICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzID0gIVdlYkluc3BlY3Rvci5zZXR0aW5n
cy5yZXNvdXJjZXNMYXJnZVJvd3M7CisgICAgICAgIHRoaXMuX3NldExhcmdlclJlc291cmNlcyhX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzKTsKICAgICB9LAogCiAgICAg
X3NldExhcmdlclJlc291cmNlczogZnVuY3Rpb24oZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9QYW5lbC5qcwppbmRleCBlYzkyNTBjLi40YzQyYTYwIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1BhbmVsLmpzCkBAIC0zNCw3ICszNCw3IEBAIFdlYkluc3BlY3Rvci5QYW5lbCA9IGZ1
bmN0aW9uKG5hbWUpCiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MobmFtZSk7CiAgICAg
dGhpcy5fcGFuZWxOYW1lID0gbmFtZTsKIAotICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNl
dHRpbmdzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcodGhpcy5fc2lkZWJhcldpZHRoU2V0dGlu
Z05hbWUoKSwgdW5kZWZpbmVkKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuaW5zdGFsbEFw
cGxpY2F0aW9uU2V0dGluZyh0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSgpLCB1bmRlZmlu
ZWQpOwogfQogCiAvLyBTaG91bGQgYnkgaW4gc3luYyB3aXRoIHN0eWxlIGRlY2xhcmF0aW9ucy4K
QEAgLTM3Nyw3ICszNzcsNyBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgcmVzdG9yZVNpZGViYXJXaWR0aDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgdmFyIHNp
ZGViYXJXaWR0aCA9IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzW3RoaXMuX3NpZGVi
YXJXaWR0aFNldHRpbmdOYW1lKCldOworICAgICAgICB2YXIgc2lkZWJhcldpZHRoID0gV2ViSW5z
cGVjdG9yLnNldHRpbmdzW3RoaXMuX3NpZGViYXJXaWR0aFNldHRpbmdOYW1lKCldOwogICAgICAg
ICB0aGlzLnVwZGF0ZVNpZGViYXJXaWR0aChzaWRlYmFyV2lkdGgpOwogICAgIH0sCiAKQEAgLTM4
NSw3ICszODUsNyBAQCBXZWJJbnNwZWN0b3IuUGFuZWwucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLnNpZGViYXJFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5nc1t0aGlzLl9zaWRlYmFyV2lkdGhT
ZXR0aW5nTmFtZSgpXSA9IHRoaXMuc2lkZWJhckVsZW1lbnQub2Zmc2V0V2lkdGg7CisgICAgICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5nc1t0aGlzLl9zaWRlYmFyV2lkdGhTZXR0aW5nTmFtZSgpXSA9
IHRoaXMuc2lkZWJhckVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgICAgfSwKIAogICAgIHVwZGF0ZU1h
aW5WaWV3V2lkdGg6IGZ1bmN0aW9uKHdpZHRoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggZmZiMjI5ZC4uM2NhN2ZjYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC0xNDcsNyArMTQ3LDcgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfc2VsZWN0VGFiOiBm
dW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgcHJlZmVycmVkVGFiID0gV2ViSW5zcGVjdG9y
LmFwcGxpY2F0aW9uU2V0dGluZ3MucmVzb3VyY2VWaWV3VGFiOworICAgICAgICB2YXIgcHJlZmVy
cmVkVGFiID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlVmlld1RhYjsKICAgICAgICAg
aWYgKHRoaXMuX2hlYWRlcnNWaXNpYmxlICYmIHRoaXMuX2Nvb2tpZXNWaWV3ICYmIHByZWZlcnJl
ZFRhYiA9PT0gImNvb2tpZXMiKQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0Q29va2llc1RhYigp
OwogICAgICAgICBlbHNlIGlmICh0aGlzLl9oZWFkZXJzVmlzaWJsZSAmJiAoIXRoaXMuaGFzQ29u
dGVudFRhYigpIHx8IHByZWZlcnJlZFRhYiA9PT0gImhlYWRlcnMiKSkKQEAgLTE1OSwxNCArMTU5
LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgIF9zZWxl
Y3RIZWFkZXJzVGFiOiBmdW5jdGlvbih1cGRhdGVQcmVmcykKICAgICB7CiAgICAgICAgIGlmICh1
cGRhdGVQcmVmcykKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdz
LnJlc291cmNlVmlld1RhYiA9ICJoZWFkZXJzIjsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWIgPSAiaGVhZGVycyI7CiAgICAgICAgIHRoaXMudGFiYmVk
UGFuZS5zZWxlY3RUYWJCeUlkKCJoZWFkZXJzIik7CiAgICAgfSwKIAogICAgIHNlbGVjdENvbnRl
bnRUYWI6IGZ1bmN0aW9uKHVwZGF0ZVByZWZzKQogICAgIHsKICAgICAgICAgaWYgKHVwZGF0ZVBy
ZWZzKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MucmVzb3Vy
Y2VWaWV3VGFiID0gImNvbnRlbnQiOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdz
LnJlc291cmNlVmlld1RhYiA9ICJjb250ZW50IjsKICAgICAgICAgdGhpcy5faW5uZXJTZWxlY3RD
b250ZW50VGFiKCk7CiAgICAgfSwKIApAQCAtMTc5LDcgKzE3OSw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVZpZXcucHJvdG90eXBlID0gewogICAgIF9zZWxlY3RDb29raWVzVGFiOiBmdW5jdGlv
bih1cGRhdGVQcmVmcykKICAgICB7CiAgICAgICAgIGlmICh1cGRhdGVQcmVmcykKLSAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLnJlc291cmNlVmlld1RhYiA9ICJj
b29raWVzIjsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZVZpZXdU
YWIgPSAiY29va2llcyI7CiAgICAgICAgIHRoaXMudGFiYmVkUGFuZS5zZWxlY3RUYWJCeUlkKCJj
b29raWVzIik7CiAgICAgICAgIHRoaXMuX2Nvb2tpZXNWaWV3LnJlc2l6ZSgpOwogICAgIH0sCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA4MTI1YzFl
Li40NjlkMzlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0
c1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKQEAgLTYwOCw3ICs2MDgsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB2YXIgdXJsID0gc2NyaXB0T3JSZXNvdXJjZS51cmwgfHwgc2NyaXB0
T3JSZXNvdXJjZS5zb3VyY2VVUkw7CiAgICAgICAgIGlmICh1cmwgJiYgIW9wdGlvbnMuaW5pdGlh
bExvYWQpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5sYXN0
Vmlld2VkU2NyaXB0RmlsZSA9IHVybDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5sYXN0Vmlld2VkU2NyaXB0RmlsZSA9IHVybDsKIAogICAgICAgICBpZiAoIW9wdGlvbnMuZnJv
bUJhY2tGb3J3YXJkQWN0aW9uKSB7CiAgICAgICAgICAgICB2YXIgb2xkSW5kZXggPSB0aGlzLl9j
dXJyZW50QmFja0ZvcndhcmRJbmRleDsKQEAgLTcwOSw3ICs3MDksNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAv
LyBpZiBub3QgZmlyc3QgaXRlbSwgY2hlY2sgdG8gc2VlIGlmIHRoaXMgd2FzIHRoZSBsYXN0IHZp
ZXdlZAogICAgICAgICAgICAgdmFyIHVybCA9IG9wdGlvbi5yZXByZXNlbnRlZE9iamVjdC51cmwg
fHwgb3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZVVSTDsKLSAgICAgICAgICAgIHZhciBs
YXN0VVJMID0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MubGFzdFZpZXdlZFNjcmlw
dEZpbGU7CisgICAgICAgICAgICB2YXIgbGFzdFVSTCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5s
YXN0Vmlld2VkU2NyaXB0RmlsZTsKICAgICAgICAgICAgIGlmICh1cmwgJiYgdXJsID09PSBsYXN0
VVJMKQogICAgICAgICAgICAgICAgIHRoaXMuX3Nob3dTY3JpcHRPclJlc291cmNlKG9wdGlvbi5y
ZXByZXNlbnRlZE9iamVjdCwge2luaXRpYWxMb2FkOiB0cnVlfSk7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCAyMmZhMTUzLi40ZmQwYzgzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC02NCw2ICs2NCw3IEBA
IFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmluc3RhbGxBcHBs
aWNhdGlvblNldHRpbmcoImxhc3RBY3RpdmVQYW5lbCIsICJlbGVtZW50cyIpOwogCiAgICAgdGhp
cy5pbnN0YWxsUHJvamVjdFNldHRpbmcoImJyZWFrcG9pbnRzIiwge30pOworICAgIHRoaXMuaW5z
dGFsbFByb2plY3RTZXR0aW5nKCJuYXRpdmVCcmVha3BvaW50cyIsIFtdKTsKIH0KIAogV2ViSW5z
cGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZSA9IHsKQEAgLTgyLDYgKzgzLDE0IEBAIFdlYkluc3Bl
Y3Rvci5TZXR0aW5ncy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX19kZWZpbmVTZXR0ZXJf
XyhrZXksIHRoaXMuX3NldFByb2plY3RTZXR0aW5nLmJpbmQodGhpcywga2V5KSk7CiAgICAgfSwK
IAorICAgIGluc3BlY3RlZFVSTENoYW5nZWQ6IGZ1bmN0aW9uKHVybCkKKyAgICB7CisgICAgICAg
IHZhciBmcmFnbWVudEluZGV4ID0gdXJsLmluZGV4T2YoIiMiKTsKKyAgICAgICAgaWYgKGZyYWdt
ZW50SW5kZXggIT09IC0xKQorICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBmcmFn
bWVudEluZGV4KTsKKyAgICAgICAgdGhpcy5faW5zcGVjdGVkVVJMID0gdXJsOworICAgIH0sCisK
ICAgICBfZ2V0OiBmdW5jdGlvbihrZXksIGRlZmF1bHRWYWx1ZSkKICAgICB7CiAgICAgICAgIGlm
IChrZXkgaW4gd2luZG93LmxvY2FsU3RvcmFnZSkgewpAQCAtMTExLDExICsxMjAsNyBAQCBXZWJJ
bnNwZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlID0gewogCiAgICAgX2Zvcm1hdFByb2plY3RLZXk6
IGZ1bmN0aW9uKGtleSkKICAgICB7Ci0gICAgICAgIHZhciB1cmwgPSB0aGlzLl9tYWluUmVzb3Vy
Y2VVUkw7Ci0gICAgICAgIHZhciBmcmFnbWVudEluZGV4ID0gdXJsLmluZGV4T2YoIiMiKTsKLSAg
ICAgICAgaWYgKGZyYWdtZW50SW5kZXggIT09IC0xKQotICAgICAgICAgICAgdXJsID0gdXJsLnN1
YnN0cmluZygwLCBmcmFnbWVudEluZGV4KTsKLSAgICAgICAgcmV0dXJuIGtleSArICIuIiArIHVy
bDsKKyAgICAgICAgcmV0dXJuIGtleSArICI6IiArIHRoaXMuX2luc3BlY3RlZFVSTDsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFu
ZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpzCmluZGV4
IDZmNzEyZTUuLjY4ZGJjZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdG9yYWdlUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3Jh
Z2VQYW5lbC5qcwpAQCAtMzEsNyArMzEsNyBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsID0g
ZnVuY3Rpb24oZGF0YWJhc2UpCiB7CiAgICAgV2ViSW5zcGVjdG9yLlBhbmVsLmNhbGwodGhpcywg
InN0b3JhZ2UiKTsKIAotICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmluc3Rh
bGxBcHBsaWNhdGlvblNldHRpbmcoInJlc291cmNlc0xhc3RTZWxlY3RlZEl0ZW0iLCB7fSk7Cisg
ICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmluc3RhbGxBcHBsaWNhdGlvblNldHRpbmcoInJlc291
cmNlc0xhc3RTZWxlY3RlZEl0ZW0iLCB7fSk7CiAKICAgICB0aGlzLmNyZWF0ZVNpZGViYXIoKTsK
ICAgICB0aGlzLnNpZGViYXJFbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxpbmUtZGlzY2xvc3Vy
ZSBmaWx0ZXItYWxsIGNoaWxkcmVuIHNtYWxsIik7CkBAIC0xMDYsNyArMTA2LDcgQEAgV2ViSW5z
cGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWREZWZhdWx0U2VsZWN0aW9uID0gdHJ1ZTsKLSAgICAg
ICAgdmFyIGl0ZW1VUkwgPSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5yZXNvdXJj
ZXNMYXN0U2VsZWN0ZWRJdGVtOworICAgICAgICB2YXIgaXRlbVVSTCA9IFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5yZXNvdXJjZXNMYXN0U2VsZWN0ZWRJdGVtOwogICAgICAgICBpZiAoaXRlbVVSTCkg
ewogICAgICAgICAgICAgZm9yICh2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnNpZGViYXJUcmVlLmNo
aWxkcmVuWzBdOyB0cmVlRWxlbWVudDsgdHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudC50cmF2ZXJz
ZU5leHRUcmVlRWxlbWVudChmYWxzZSwgdGhpcy5zaWRlYmFyVHJlZSwgdHJ1ZSkpIHsKICAgICAg
ICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQuaXRlbVVSTCA9PT0gaXRlbVVSTCkgewpAQCAtNzQ1
LDcgKzc0NSw3IEBAIFdlYkluc3BlY3Rvci5CYXNlU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBpdGVtVVJMID0gdGhpcy5pdGVtVVJMOwogICAgICAg
ICBpZiAoaXRlbVVSTCkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRp
bmdzLnJlc291cmNlc0xhc3RTZWxlY3RlZEl0ZW0gPSBpdGVtVVJMOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhc3RTZWxlY3RlZEl0ZW0gPSBpdGVtVVJMOwog
ICAgIH0sCiAKICAgICBvbnJldmVhbDogZnVuY3Rpb24oKQpAQCAtNzc3LDcgKzc3Nyw3IEBAIFdl
Ykluc3BlY3Rvci5TdG9yYWdlQ2F0ZWdvcnlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHN0b3JhZ2VQ
YW5lbCwgY2F0ZWdvcnlOYW1lLCBzCiB7CiAgICAgV2ViSW5zcGVjdG9yLkJhc2VTdG9yYWdlVHJl
ZUVsZW1lbnQuY2FsbCh0aGlzLCBzdG9yYWdlUGFuZWwsIG51bGwsIGNhdGVnb3J5TmFtZSwgaWNv
bkNsYXNzLCB0cnVlKTsKICAgICB0aGlzLl9leHBhbmRlZFNldHRpbmdLZXkgPSAicmVzb3VyY2Vz
IiArIHNldHRpbmdzS2V5ICsgIkV4cGFuZGVkIjsKLSAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25TZXR0aW5ncy5pbnN0YWxsQXBwbGljYXRpb25TZXR0aW5nKHRoaXMuX2V4cGFuZGVkU2V0dGlu
Z0tleSwgc2V0dGluZ3NLZXkgPT09ICJGcmFtZXMiKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MuaW5zdGFsbEFwcGxpY2F0aW9uU2V0dGluZyh0aGlzLl9leHBhbmRlZFNldHRpbmdLZXksIHNl
dHRpbmdzS2V5ID09PSAiRnJhbWVzIik7CiAgICAgdGhpcy5fY2F0ZWdvcnlOYW1lID0gY2F0ZWdv
cnlOYW1lOwogfQogCkBAIC03OTYsMTggKzc5NiwxOCBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZUNh
dGVnb3J5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIG9uYXR0YWNoOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90
b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5hcHBs
aWNhdGlvblNldHRpbmdzW3RoaXMuX2V4cGFuZGVkU2V0dGluZ0tleV0pCisgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3NbdGhpcy5fZXhwYW5kZWRTZXR0aW5nS2V5XSkKICAgICAgICAg
ICAgIHRoaXMuZXhwYW5kKCk7CiAgICAgfSwKIAogICAgIG9uZXhwYW5kOiBmdW5jdGlvbigpCiAg
ICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5nc1t0aGlzLl9leHBh
bmRlZFNldHRpbmdLZXldID0gdHJ1ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzW3Ro
aXMuX2V4cGFuZGVkU2V0dGluZ0tleV0gPSB0cnVlOwogICAgIH0sCiAKICAgICBvbmNvbGxhcHNl
OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0
aW5nc1t0aGlzLl9leHBhbmRlZFNldHRpbmdLZXldID0gZmFsc2U7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5nc1t0aGlzLl9leHBhbmRlZFNldHRpbmdLZXldID0gZmFsc2U7CiAgICAgfQog
fQogV2ViSW5zcGVjdG9yLlN0b3JhZ2VDYXRlZ29yeVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5k
ZXggY2M5NzUyMC4uMDVkY2VlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtNjAsNyArNjAsNyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkKIAogICAgIHRoaXMu
c2V0dGluZ3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24o
ZXZlbnQpIHsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgfSwgZmFsc2UpOwogICAgIHRoaXMuc2V0
dGluZ3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5n
ZVNldHRpbmcuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHZhciBmb3JtYXQgPSBXZWJJbnNwZWN0
b3IuYXBwbGljYXRpb25TZXR0aW5ncy5jb2xvckZvcm1hdDsKKyAgICB2YXIgZm9ybWF0ID0gV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0OwogICAgIGlmIChmb3JtYXQgPT09ICJoZXgi
KQogICAgICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudFswXS5zZWxlY3RlZCA9IHRydWU7
CiAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSAicmdiIikKQEAgLTQ2NSw3ICs0NjUsNyBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAvLyBTZWxl
Y3QgdGhlIGNvcnJlY3QgY29sb3IgZm9ybWF0IHNldHRpbmcgYWdhaW4sIHNpbmNlIGl0IG5lZWRz
IHRvIGJlIHNlbGVjdGVkLgogICAgICAgICB2YXIgc2VsZWN0ZWRJbmRleCA9IDA7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
aWYgKG9wdGlvbnNbaV0udmFsdWUgPT09IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdz
LmNvbG9yRm9ybWF0KSB7CisgICAgICAgICAgICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9PT0gV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0KSB7CiAgICAgICAgICAgICAgICAgc2VsZWN0
ZWRJbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC00
NzcsNyArNDc3LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9
IHsKICAgICBfY2hhbmdlQ29sb3JGb3JtYXQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdmFyIHNlbGVjdGVkT3B0aW9uID0gdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnRbdGhpcy5z
ZXR0aW5nc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF07Ci0gICAgICAgIFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvblNldHRpbmdzLmNvbG9yRm9ybWF0ID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7
CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCA9IHNlbGVjdGVkT3B0
aW9uLnZhbHVlOwogCiAgICAgICAgIGZvciAodmFyIHBzZXVkb0lkIGluIHRoaXMuc2VjdGlvbnMp
IHsKICAgICAgICAgICAgIHZhciBzZWN0aW9ucyA9IHRoaXMuc2VjdGlvbnNbcHNldWRvSWRdOwpA
QCAtNTYyLDE1ICs1NjIsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFu
ZSA9IGZ1bmN0aW9uKCkKICAgICB2YXIgc2hvd0luaGVyaXRlZENoZWNrYm94ID0gbmV3IFdlYklu
c3BlY3Rvci5DaGVja2JveChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgaW5oZXJpdGVkIiks
ICJzaWRlYmFyLXBhbmUtc3VidGl0bGUiKTsKICAgICB0aGlzLnRpdGxlRWxlbWVudC5hcHBlbmRD
aGlsZChzaG93SW5oZXJpdGVkQ2hlY2tib3guZWxlbWVudCk7CiAKLSAgICBpZiAoV2ViSW5zcGVj
dG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Muc2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0
aWVzKSB7CisgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93SW5oZXJpdGVkQ29tcHV0
ZWRTdHlsZVByb3BlcnRpZXMpIHsKICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5hZGRTdHlsZUNs
YXNzKCJzaG93LWluaGVyaXRlZCIpOwogICAgICAgICBzaG93SW5oZXJpdGVkQ2hlY2tib3guY2hl
Y2tlZCA9IHRydWU7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2hvd0luaGVyaXRlZFRvZ2dsZUZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0
dGluZ3Muc2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzID0gc2hvd0luaGVyaXRl
ZENoZWNrYm94LmNoZWNrZWQ7Ci0gICAgICAgIGlmIChXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25T
ZXR0aW5ncy5zaG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMpCisgICAgICAgIFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5zaG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMg
PSBzaG93SW5oZXJpdGVkQ2hlY2tib3guY2hlY2tlZDsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zaG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMpCiAgICAgICAg
ICAgICB0aGlzLmJvZHlFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNob3ctaW5oZXJpdGVkIik7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFz
cygic2hvdy1pbmhlcml0ZWQiKTsKQEAgLTEyMDAsOSArMTIwMCw5IEBAIFdlYkluc3BlY3Rvci5T
dHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZh
ciBmb3JtYXQ7CiAgICAgICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5pY2tu
YW1lcyAmJiBjb2xvci5uaWNrbmFtZSkKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gIm5p
Y2tuYW1lIjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25TZXR0aW5ncy5jb2xvckZvcm1hdCA9PT0gInJnYiIpCisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0ID09PSAicmdiIikKICAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/ICJyZ2IiIDogInJnYmEiKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5j
b2xvckZvcm1hdCA9PT0gImhzbCIpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoV2ViSW5zcGVj
dG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0ID09PSAiaHNsIikKICAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/ICJoc2wiIDogImhzbGEiKTsKICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChjb2xvci5zaW1wbGUpCiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChj
b2xvci5oYXNTaG9ydEhleCgpID8gInNob3J0aGV4IiA6ICJoZXgiKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5l
LmpzCmluZGV4IDExYjBlMDMuLjQ0MDYzYTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcwpAQCAtMzks
NyArMzksNyBAQCBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLnByb3Rv
dHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKIAotICAgICAgICB0aGlzLmV4cGFuZGVkID0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0
dGluZ3Mud2F0Y2hFeHByZXNzaW9ucy5sZW5ndGggPiAwOworICAgICAgICB0aGlzLmV4cGFuZGVk
ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLndhdGNoRXhwcmVzc2lvbnMubGVuZ3RoID4gMDsKICAg
ICAgICAgdGhpcy5zZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2Vj
dGlvbigpOwogICAgICAgICB0aGlzLmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2VjdGlv
bi5lbGVtZW50KTsKIApAQCAtNzcsNyArNzcsNyBAQCBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNz
aW9uc1NlY3Rpb24gPSBmdW5jdGlvbigpCiAKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVy
dGllc1NlY3Rpb24uY2FsbCh0aGlzKTsKIAotICAgIHRoaXMud2F0Y2hFeHByZXNzaW9ucyA9IFdl
Ykluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLndhdGNoRXhwcmVzc2lvbnM7CisgICAgdGhp
cy53YXRjaEV4cHJlc3Npb25zID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLndhdGNoRXhwcmVzc2lv
bnM7CiAKICAgICB0aGlzLmhlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gImhpZGRlbiI7CiAgICAg
dGhpcy5lZGl0YWJsZSA9IHRydWU7CkBAIC0xODEsNyArMTgxLDcgQEAgV2ViSW5zcGVjdG9yLldh
dGNoRXhwcmVzc2lvbnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlz
LndhdGNoRXhwcmVzc2lvbnNbaV0pCiAgICAgICAgICAgICAgICAgdG9TYXZlLnB1c2godGhpcy53
YXRjaEV4cHJlc3Npb25zW2ldKTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25T
ZXR0aW5ncy53YXRjaEV4cHJlc3Npb25zID0gdG9TYXZlOworICAgICAgICBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3Mud2F0Y2hFeHByZXNzaW9ucyA9IHRvU2F2ZTsKICAgICAgICAgcmV0dXJuIHRvU2F2
ZS5sZW5ndGg7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5jc3MgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmNzcwppbmRleCBkOTAxZmI3Li5iOTIzMzlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmNzcwpAQCAtNDEyOSw3ICs0MTI5LDcgQEAgb2wuYnJlYWtwb2ludC1saXN0
IHsKICAgICBtYXJnaW46IDJweCAwIDBweCAyMHB4OwogfQogCi0uYnJlYWtwb2ludC1saXN0IC5i
cmVha3BvaW50LWhpdCB7CisucGFuZSAuYnJlYWtwb2ludC1oaXQgewogICAgIGJhY2tncm91bmQt
Y29sb3I6IHllbGxvdzsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMKaW5kZXggZTE3ODM3MS4uMGFkMTJmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCkBAIC0xNzksNyArMTc5LDcgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKIAog
ICAgICAgICBmb3IgKHZhciBwYW5lbE5hbWUgaW4gV2ViSW5zcGVjdG9yLnBhbmVscykgewogICAg
ICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5wYW5lbHNbcGFuZWxOYW1lXSA9PT0geCkgewotICAg
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmxhc3RBY3RpdmVQ
YW5lbCA9IHBhbmVsTmFtZTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
bGFzdEFjdGl2ZVBhbmVsID0gcGFuZWxOYW1lOwogICAgICAgICAgICAgICAgIHRoaXMuX3BhbmVs
SGlzdG9yeS5zZXRQYW5lbChwYW5lbE5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC01MDQsNyArNTA0LDcgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkK
ICAgICBkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MoInBvcnQtIiArIHBvcnQpOwogCiAgICAg
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmxvYWRlZCgpOwotICAgIFdlYkluc3BlY3Rvci5hcHBsaWNh
dGlvblNldHRpbmdzID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5ncygpOworICAgIFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZ3MoKTsKIAogICAgIHRoaXMu
X3JlZ2lzdGVyU2hvcnRjdXRzKCk7CiAKQEAgLTYwOCw3ICs2MDgsNyBAQCBXZWJJbnNwZWN0b3Iu
ZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIGZ1bmN0aW9uIG9uUG9wdWxhdGVTY3JpcHRP
YmplY3RzKCkKICAgICB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmN1cnJlbnRQYW5lbCkK
LSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoV2ViSW5zcGVjdG9yLmFwcGxpY2F0
aW9uU2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVsKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
aG93UGFuZWwoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RBY3RpdmVQYW5lbCk7CiAgICAgfQog
ICAgIEluc3BlY3RvckJhY2tlbmQucG9wdWxhdGVTY3JpcHRPYmplY3RzKG9uUG9wdWxhdGVTY3Jp
cHRPYmplY3RzKTsKIApAQCAtMTM3Myw2ICsxMzczLDggQEAgV2ViSW5zcGVjdG9yLnJlc2V0ID0g
ZnVuY3Rpb24oKQogCiAgICAgdGhpcy5jb25zb2xlLmNsZWFyTWVzc2FnZXMoKTsKICAgICB0aGlz
LmV4dGVuc2lvblNlcnZlci5ub3RpZnlJbnNwZWN0b3JSZXNldCgpOworCisgICAgdGhpcy5icmVh
a3BvaW50TWFuYWdlci5yZXN0b3JlQnJlYWtwb2ludHMoKTsKIH0KIAogV2ViSW5zcGVjdG9yLnJl
c2V0UHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKQEAgLTEzODksNyArMTM5MSwxMiBAQCBXZWJJ
bnNwZWN0b3IuYnJpbmdUb0Zyb250ID0gZnVuY3Rpb24oKQogV2ViSW5zcGVjdG9yLmluc3BlY3Rl
ZFVSTENoYW5nZWQgPSBmdW5jdGlvbih1cmwpCiB7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Lmluc3BlY3RlZFVSTENoYW5nZWQodXJsKTsKKyAgICB0aGlzLnNldHRpbmdzLmluc3BlY3RlZFVS
TENoYW5nZWQodXJsKTsKICAgICB0aGlzLmV4dGVuc2lvblNlcnZlci5ub3RpZnlJbnNwZWN0ZWRV
UkxDaGFuZ2VkKCk7CisgICAgaWYgKCF0aGlzLl9icmVha3BvaW50c1Jlc3RvcmVkKSB7CisgICAg
ICAgIHRoaXMuYnJlYWtwb2ludE1hbmFnZXIucmVzdG9yZUJyZWFrcG9pbnRzKCk7CisgICAgICAg
IHRoaXMuX2JyZWFrcG9pbnRzUmVzdG9yZWQgPSB0cnVlOworICAgIH0KIH0KIAogV2ViSW5zcGVj
dG9yLmRpZENvbW1pdExvYWQgPSBmdW5jdGlvbigpCg==
</data>
<flag name="review"
          id="62932"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>