<?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>83802</bug_id>
          
          <creation_ts>2012-04-12 12:01:13 -0700</creation_ts>
          <short_desc>Web Inspector: extracting NetworkRequest from Resource (step 3)</short_desc>
          <delta_ts>2012-04-13 08:06:28 -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>
          
          <blocked>83893</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>601410</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 12:01:13 -0700</bug_when>
    <thetext>This change extracts NetworkRequest from the Resource. It is now clear that these two should have super class that would be responsible for parsing URL and would define the requestContent signature. Corresponding patch will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601411</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 12:01:42 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=61363 for the meta bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601415</commentid>
    <comment_count>2</comment_count>
      <attachid>136950</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 12:07:07 -0700</bug_when>
    <thetext>Created attachment 136950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601431</commentid>
    <comment_count>3</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2012-04-12 12:18:12 -0700</bug_when>
    <thetext>What is the motivation for this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601460</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-12 13:03:17 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; What is the motivation for this change?

I posted more details in https://bugs.webkit.org/show_bug.cgi?id=61363#c2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601972</commentid>
    <comment_count>5</comment_count>
      <attachid>136950</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2012-04-13 04:30:02 -0700</bug_when>
    <thetext>Comment on attachment 136950
Patch

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

&gt; Source/WebCore/inspector/front-end/RawSourceCode.js:57
&gt; +    if (this._request)

Is it possible that both request and resource exist? If yes, it should be &quot;this._request &amp;&amp; !this._resource&quot;.

&gt; Source/WebCore/inspector/front-end/RawSourceCode.js:138
&gt; +        if (!this._request || !this._hasNewScripts)

It should probably be !this._resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601975</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-13 04:43:04 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 136950 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=136950&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/RawSourceCode.js:57
&gt; &gt; +    if (this._request)
&gt; 
&gt; Is it possible that both request and resource exist? If yes, it should be &quot;this._request &amp;&amp; !this._resource&quot;.
&gt; 

No, it is not possible.

&gt; &gt; Source/WebCore/inspector/front-end/RawSourceCode.js:138
&gt; &gt; +        if (!this._request || !this._hasNewScripts)
&gt; 
&gt; It should probably be !this._resource.

This is ex-useTemporaryContent, so it is based on request, not resource.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601982</commentid>
    <comment_count>7</comment_count>
      <attachid>136950</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-04-13 05:00:27 -0700</bug_when>
    <thetext>Comment on attachment 136950
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/RawSourceCode.js:57
&gt;&gt; +    if (this._request)
&gt; 
&gt; Is it possible that both request and resource exist? If yes, it should be &quot;this._request &amp;&amp; !this._resource&quot;.

Let&apos;s rename it to _pendingRequest

&gt; Source/WebCore/inspector/front-end/ResourceScriptMapping.js:99
&gt; +                if (request &amp;&amp; (request.finished || request.type !== WebInspector.resourceTypes.Document))

request.finished check seems redundant for inflights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601987</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-04-13 05:15:30 -0700</bug_when>
    <thetext>Committed r114116: &lt;http://trac.webkit.org/changeset/114116&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136950</attachid>
            <date>2012-04-12 12:07:07 -0700</date>
            <delta_ts>2012-04-13 05:00:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83802-20120412230705.patch</filename>
            <type>text/plain</type>
            <size>63764</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzODM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTIyZWYxYmQwN2MyMmQ5
OWQ1NGYwNmRiZjRkNjdhNjg2ODBiMDYyZi4uNTVkYjZjMjk0OGJmNjA3OTU4ZGVkYjcyMmYxNzRj
YzM1MzhhMGYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExNiBAQAogMjAxMi0wNC0xMiAgUGF2
ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBleHRyYWN0aW5nIE5ldHdvcmtSZXF1ZXN0IGZyb20gUmVzb3VyY2UgKHN0ZXAgMykKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzODAyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
ZXh0cmFjdHMgTmV0d29ya1JlcXVlc3QgZnJvbSB0aGUgUmVzb3VyY2UuIEl0IGlzIG5vdyBjbGVh
ciB0aGF0IHRoZXNlIHR3bworICAgICAgICBzaG91bGQgaGF2ZSBzdXBlciBjbGFzcyB0aGF0IHdv
dWxkIGJlIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIFVSTCBhbmQgd291bGQgZGVmaW5lIHRoZQor
ICAgICAgICByZXF1ZXN0Q29udGVudCBzaWduYXR1cmUuIENvcnJlc3BvbmRpbmcgcGF0Y2ggd2ls
bCBmb2xsb3cuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVNZXNzYWdl
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5w
cm90b3R5cGUuZ2V0IHJlcXVlc3RJZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QucHJvdG90eXBlLnNldCByZXF1ZXN0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgdXJsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuZ2V0IGZyYW1lSWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgbG9hZGVySWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgc3RhcnRUaW1lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuc2V0IHN0YXJ0VGltZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCByZXNw
b25zZVJlY2VpdmVkVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3Qu
cHJvdG90eXBlLnNldCByZXNwb25zZVJlY2VpdmVkVGltZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCBlbmRUaW1lKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuc2V0IGVuZFRpbWUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgZHVyYXRpb24pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgbGF0ZW5jeSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCByZWNl
aXZlRHVyYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3Rv
dHlwZS5nZXQgcmVzb3VyY2VTaXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVx
dWVzdC5wcm90b3R5cGUuc2V0IHJlc291cmNlU2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCB0cmFuc2ZlclNpemUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5pbmNyZWFzZVRyYW5zZmVyU2l6ZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCBmaW5p
c2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLnNl
dCBmaW5pc2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90
eXBlLmdldCBmYWlsZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnBy
b3RvdHlwZS5zZXQgZmFpbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVz
dC5wcm90b3R5cGUuZ2V0IGNhbmNlbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3Jr
UmVxdWVzdC5wcm90b3R5cGUuc2V0IGNhbmNlbGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuZ2V0IGNhY2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLnNldCBjYWNoZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgdGltaW5nKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuc2V0IHRpbWluZyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCBtaW1lVHlwZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLnNldCBtaW1lVHlw
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCBk
aXNwbGF5TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90
eXBlLmdldCBmb2xkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnBy
b3RvdHlwZS5nZXQgZGlzcGxheURvbWFpbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29y
a1JlcXVlc3QucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrUmVxdWVzdC5wcm90b3R5cGUuc2V0IHR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVkaXJlY3RTb3VyY2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5zZXQgcmVkaXJlY3RTb3VyY2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVxdWVz
dEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlw
ZS5zZXQgcmVxdWVzdEhlYWRlcnMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1
ZXN0LnByb3RvdHlwZS5nZXQgcmVxdWVzdEhlYWRlcnNUZXh0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuc2V0IHJlcXVlc3RIZWFkZXJzVGV4dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCByZXF1ZXN0
SGVhZGVyc1NpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3Rv
dHlwZS5yZXF1ZXN0SGVhZGVyVmFsdWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtS
ZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVxdWVzdENvb2tpZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVxdWVzdEZvcm1EYXRhKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuc2V0IHJlcXVlc3RGb3Jt
RGF0YSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdl
dCByZXF1ZXN0SHR0cFZlcnNpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1
ZXN0LnByb3RvdHlwZS5nZXQgcmVzcG9uc2VIZWFkZXJzKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuc2V0IHJlc3BvbnNlSGVhZGVycyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCByZXNwb25zZUhlYWRl
cnNUZXh0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUu
c2V0IHJlc3BvbnNlSGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtS
ZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVzcG9uc2VIZWFkZXJzU2l6ZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLnJlc3BvbnNlSGVhZGVyVmFsdWUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVzcG9u
c2VDb29raWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5
cGUuZ2V0IHF1ZXJ5UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QucHJvdG90eXBlLmdldCBmb3JtUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLmdldCByZXNwb25zZUh0dHBWZXJzaW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuX3BhcnNlUGFyYW1l
dGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlLl9o
ZWFkZXJWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90
eXBlLmdldCBjb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5w
cm90b3R5cGUuZ2V0IGNvbnRlbnRFbmNvZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrUmVxdWVzdC5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5pc0h0dHBGYW1pbHkpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudFR5cGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5pc1BpbmdSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuaGFz
RXJyb3JTdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5w
cm90b3R5cGUucG9wdWxhdGVJbWFnZVNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3QucHJvdG90eXBlLl9jb250ZW50VVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuX2lubmVyUmVxdWVzdENvbnRlbnQub25SZXNvdXJj
ZUNvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlw
ZS5faW5uZXJSZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QucHJvdG90eXBlLnNldFJlc291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3
b3JrUmVxdWVzdC5wcm90b3R5cGUucmVzb3VyY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvUmF3U291cmNlQ29kZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VD
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLnByb3RvdHlwZS5fcmVz
b3VyY2VBZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZS5wcm90b3R5
cGUuZm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlLnByb3RvdHlwZS5fY3JlYXRlQ29udGVudFByb3ZpZGVyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNwbGF5TmFtZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCByZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IHVybCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLmdldCB0eXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IG1pbWVUeXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuc2V0IG1pbWVUeXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IGNvbnRlbnQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5nZXQgY29udGVudEVuY29kZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9pbm5lclJlcXVlc3RDb250ZW50
LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5wcm90b3R5cGUuX2lu
bmVyUmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNp
b24ucHJvdG90eXBlLnJlcXVlc3RDb250ZW50LmNhbGxiYWNrV3JhcHBlcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VSZXZpc2lvbi5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRk
U2NyaXB0KToKKworMjAxMi0wNC0xMiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiBleHRyYWN0aW5nIE5ldHdvcmtSZXF1ZXN0
IGZyb20gUmVzb3VyY2UgKHN0ZXAgMikKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgzNzczCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzCmluZGV4IDQ4ZjBmMWE5ZTU0NTNiNTIxNzYx
NDM3OWEzZjJjZTc3OGZiOWYzNGMuLjgzNDY3Mzc4ZjdkODYwNzVlMDQ2NjVjMDBmZDRiOTRjOGQx
MDNhZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrTWFuYWdlci5qcwpAQCAtOTQsMjcgKzk0LDYgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtN
YW5hZ2VyLl9NSU1FVHlwZXMgPSB7CiB9CiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrTWFuYWdlci5w
cm90b3R5cGUgPSB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2V9IHJlc291cmNlCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nLCBib29sZWFuKX0g
Y2FsbGJhY2sKLSAgICAgKi8KLSAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rpb24ocmVzb3VyY2Us
IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKGVycm9y
LCBjb250ZW50LCBjb250ZW50RW5jb2RlZCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVy
cm9yKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGZhbHNlKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhjb250ZW50LCBjb250ZW50ICYmIGNvbnRl
bnRFbmNvZGVkKTsKLSAgICAgICAgfQotICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzYzIFdlIHNob3VsZCBzZXBhcmF0ZSBOZXR3b3Jr
UmVzb3VyY2UgKE5ldHdvcmtQYW5lbCByZXNvdXJjZSkKLSAgICAgICAgLy8gZnJvbSBSZXNvdXJj
ZVJldmlzaW9uIChSZXNvdXJjZXNQYW5lbC9TY3JpcHRzUGFuZWwgcmVzb3VyY2UpIGFuZCByZXF1
ZXN0IGNvbnRlbnQgYWNjb3JkaW5nbHkuCi0gICAgICAgIGlmIChyZXNvdXJjZS5yZXF1ZXN0SWQp
Ci0gICAgICAgICAgICBOZXR3b3JrQWdlbnQuZ2V0UmVzcG9uc2VCb2R5KHJlc291cmNlLnJlcXVl
c3RJZCwgY2FsbGJhY2tXcmFwcGVyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUGFnZUFn
ZW50LmdldFJlc291cmNlQ29udGVudChyZXNvdXJjZS5mcmFtZUlkLCByZXNvdXJjZS51cmwsIGNh
bGxiYWNrV3JhcHBlcik7Ci0gICAgfSwKLQogICAgIGVuYWJsZVJlc291cmNlVHJhY2tpbmc6IGZ1
bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVlc3QuanMK
aW5kZXggNjBhZmJjMzlhZmU1YzZjMWExYWRkZmNmMDk4NDBhNjZiOGZjZmU0YS4uZmUwMzFjNDhl
NDUxN2VjNmRmMzFhMDA5Y2I4YzE4YWY4NGRmZWQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzCkBAIC0zMCw3ICszMCw3
IEBACiAKIC8qKgogICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlJl
c291cmNlfQorICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9CiAgKgogICogQHBhcmFt
IHtOZXR3b3JrQWdlbnQuUmVxdWVzdElkfSByZXF1ZXN0SWQKICAqIEBwYXJhbSB7c3RyaW5nfSB1
cmwKQEAgLTM5LDEwICszOSwzMSBAQAogICovCiBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3Qg
PSBmdW5jdGlvbihyZXF1ZXN0SWQsIHVybCwgZnJhbWVJZCwgbG9hZGVySWQpCiB7Ci0gICAgLy8g
RklYTUU6IGV4dHJhY3QgcmVxdWVzdC1yZWxhdGVkIHBhcnQgZnJvbSB0aGUgcmVzb3VyY2UgYW5k
IGFnZ3JlZ2F0ZQotICAgIC8vIG5ldHdvcmsgcmVxdWVzdCBpbiB0aGUgcmVzb3VyY2UuCi0gICAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLmNhbGwodGhpcywgbnVsbCwgdXJsLCBmcmFtZUlkLCBsb2Fk
ZXJJZCk7Ci0gICAgdGhpcy5yZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CisgICAgdGhpcy5fcmVxdWVz
dElkID0gcmVxdWVzdElkOworICAgIHRoaXMuX3VybCA9IHVybDsKKyAgICB0aGlzLl9mcmFtZUlk
ID0gZnJhbWVJZDsKKyAgICB0aGlzLl9sb2FkZXJJZCA9IGxvYWRlcklkOworICAgIHRoaXMuX3N0
YXJ0VGltZSA9IC0xOworICAgIHRoaXMuX2VuZFRpbWUgPSAtMTsKKworICAgIHRoaXMuc3RhdHVz
Q29kZSA9IDA7CisgICAgdGhpcy5zdGF0dXNUZXh0ID0gIiI7CisgICAgdGhpcy5yZXF1ZXN0TWV0
aG9kID0gIiI7CisgICAgdGhpcy5yZXF1ZXN0VGltZSA9IDA7CisgICAgdGhpcy5yZWNlaXZlSGVh
ZGVyc0VuZCA9IDA7CisKKyAgICB0aGlzLl90eXBlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlw
ZXMuT3RoZXI7CisgICAgdGhpcy5fY29udGVudCA9IHVuZGVmaW5lZDsKKyAgICB0aGlzLl9jb250
ZW50RW5jb2RlZCA9IGZhbHNlOworICAgIHRoaXMuX3BlbmRpbmdDb250ZW50Q2FsbGJhY2tzID0g
W107CisKKyAgICBkZWxldGUgdGhpcy5fcGFyc2VkUXVlcnlQYXJhbWV0ZXJzOworCisgICAgdmFy
IHBhcnNlZFVSTCA9IHVybC5hc1BhcnNlZFVSTCgpOworICAgIHRoaXMuZG9tYWluID0gcGFyc2Vk
VVJMID8gcGFyc2VkVVJMLmhvc3QgOiAiIjsKKyAgICB0aGlzLnBhdGggPSBwYXJzZWRVUkwgPyBw
YXJzZWRVUkwucGF0aCA6ICIiOworICAgIHRoaXMudXJsRnJhZ21lbnQgPSBwYXJzZWRVUkwgPyBw
YXJzZWRVUkwuZnJhZ21lbnQgOiAiIjsKKyAgICB0aGlzLmxhc3RQYXRoQ29tcG9uZW50ID0gcGFy
c2VkVVJMID8gcGFyc2VkVVJMLmxhc3RQYXRoQ29tcG9uZW50IDogIiI7CiB9CiAKIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMgPSB7CkBAIC01Miw0ICs3Myw3MjYgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cyA9IHsKICAgICBSZXNwb25zZUhlYWRlcnNDaGFu
Z2VkOiAiUmVzcG9uc2VIZWFkZXJzQ2hhbmdlZCIsCiB9CiAKLVdlYkluc3BlY3Rvci5OZXR3b3Jr
UmVxdWVzdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3Rv
dHlwZTsKK1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUgPSB7CisgICAgLyoq
CisgICAgICogQHR5cGUge05ldHdvcmtBZ2VudC5SZXF1ZXN0SWR9CisgICAgICovCisgICAgZ2V0
IHJlcXVlc3RJZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdElkOworICAg
IH0sCisKKyAgICBzZXQgcmVxdWVzdElkKHJlcXVlc3RJZCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3JlcXVlc3RJZCA9IHJlcXVlc3RJZDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHR5cGUg
e3N0cmluZ30KKyAgICAgKi8KKyAgICBnZXQgdXJsKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl91cmw7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtOZXR3b3JrQWdlbnQu
RnJhbWVJZH0KKyAgICAgKi8KKyAgICBnZXQgZnJhbWVJZCgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fZnJhbWVJZDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHR5cGUge05ldHdv
cmtBZ2VudC5Mb2FkZXJJZH0KKyAgICAgKi8KKyAgICBnZXQgbG9hZGVySWQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2xvYWRlcklkOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
dHlwZSB7bnVtYmVyfQorICAgICAqLworICAgIGdldCBzdGFydFRpbWUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZSB8fCAtMTsKKyAgICB9LAorCisgICAgc2V0IHN0YXJ0
VGltZSh4KQorICAgIHsKKyAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0geDsKKyAgICB9LAorCisg
ICAgLyoqCisgICAgICogQHR5cGUge251bWJlcn0KKyAgICAgKi8KKyAgICBnZXQgcmVzcG9uc2VS
ZWNlaXZlZFRpbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlUmVjZWl2
ZWRUaW1lIHx8IC0xOworICAgIH0sCisKKyAgICBzZXQgcmVzcG9uc2VSZWNlaXZlZFRpbWUoeCkK
KyAgICB7CisgICAgICAgIHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lID0geDsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHR5cGUge251bWJlcn0KKyAgICAgKi8KKyAgICBnZXQgZW5kVGlt
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZSB8fCAtMTsKKyAgICB9LAor
CisgICAgc2V0IGVuZFRpbWUoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLnRpbWluZyAmJiB0
aGlzLnRpbWluZy5yZXF1ZXN0VGltZSkgeworICAgICAgICAgICAgLy8gQ2hlY2sgYWdhaW5zdCBh
Y2N1cmF0ZSByZXNwb25zZVJlY2VpdmVkVGltZS4KKyAgICAgICAgICAgIHRoaXMuX2VuZFRpbWUg
PSBNYXRoLm1heCh4LCB0aGlzLnJlc3BvbnNlUmVjZWl2ZWRUaW1lKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIFByZWZlciBlbmRUaW1lIHNpbmNlIGl0IG1pZ2h0IGJlIGZyb20g
dGhlIG5ldHdvcmsgc3RhY2suCisgICAgICAgICAgICB0aGlzLl9lbmRUaW1lID0geDsKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9yZXNwb25zZVJlY2VpdmVkVGltZSA+IHgpCisgICAgICAgICAgICAg
ICAgdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB4OworICAgICAgICB9CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEB0eXBlIHtudW1iZXJ9CisgICAgICovCisgICAgZ2V0IGR1cmF0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbmRUaW1lID09PSAtMSB8fCB0aGlzLl9zdGFy
dFRpbWUgPT09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gdGhp
cy5fZW5kVGltZSAtIHRoaXMuX3N0YXJ0VGltZTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHR5cGUge251bWJlcn0KKyAgICAgKi8KKyAgICBnZXQgbGF0ZW5jeSgpCisgICAgeworICAgICAg
ICBpZiAodGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWUgPT09IC0xIHx8IHRoaXMuX3N0YXJ0VGlt
ZSA9PT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiB0aGlzLl9y
ZXNwb25zZVJlY2VpdmVkVGltZSAtIHRoaXMuX3N0YXJ0VGltZTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHR5cGUge251bWJlcn0KKyAgICAgKi8KKyAgICBnZXQgcmVjZWl2ZUR1cmF0aW9u
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbmRUaW1lID09PSAtMSB8fCB0aGlzLl9yZXNw
b25zZVJlY2VpdmVkVGltZSA9PT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAg
IHJldHVybiB0aGlzLl9lbmRUaW1lIC0gdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWU7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtudW1iZXJ9CisgICAgICovCisgICAgZ2V0IHJl
c291cmNlU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VTaXplIHx8
IDA7CisgICAgfSwKKworICAgIHNldCByZXNvdXJjZVNpemUoeCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3Jlc291cmNlU2l6ZSA9IHg7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtu
dW1iZXJ9CisgICAgICovCisgICAgZ2V0IHRyYW5zZmVyU2l6ZSgpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5jYWNoZWQpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKHRoaXMu
c3RhdHVzQ29kZSA9PT0gMzA0KSAvLyBOb3QgbW9kaWZpZWQKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLnJlc3BvbnNlSGVhZGVyc1NpemU7CisgICAgICAgIGlmICh0aGlzLl90cmFuc2ZlclNpemUg
IT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl90cmFuc2ZlclNpemU7Cisg
ICAgICAgIC8vIElmIHdlIGRpZCBub3QgcmVjZWl2ZSBhY3R1YWwgdHJhbnNmZXIgc2l6ZSBmcm9t
IG5ldHdvcmsKKyAgICAgICAgLy8gc3RhY2ssIHdlIHByZWZlciB1c2luZyBDb250ZW50LUxlbmd0
aCBvdmVyIHJlc291cmNlU2l6ZSBhcworICAgICAgICAvLyByZXNvdXJjZVNpemUgbWF5IGRpZmZl
ciBmcm9tIGFjdHVhbCB0cmFuc2ZlciBzaXplIGlmIHBsYXRmb3JtJ3MKKyAgICAgICAgLy8gbmV0
d29yayBzdGFjayBwZXJmb3JtZWQgZGVjb2RpbmcgKGUuZy4gZ3ppcCBkZWNvbXByZXNzaW9uKS4K
KyAgICAgICAgLy8gVGhlIENvbnRlbnQtTGVuZ3RoLCB0aG91Z2gsIGlzIGV4cGVjdGVkIHRvIGNv
bWUgZnJvbSByYXcKKyAgICAgICAgLy8gcmVzcG9uc2UgaGVhZGVycyBhbmQgd2lsbCByZWZsZWN0
IGFjdHVhbCB0cmFuc2ZlciBsZW5ndGguCisgICAgICAgIC8vIFRoaXMgd29uJ3Qgd29yayBmb3Ig
Y2h1bmtlZCBjb250ZW50IGVuY29kaW5nLCBzbyBmYWxsIGJhY2sgdG8KKyAgICAgICAgLy8gcmVz
b3VyY2VTaXplIHdoZW4gd2UgZG9uJ3QgaGF2ZSBDb250ZW50LUxlbmd0aC4gVGhpcyBzdGlsbCB3
b24ndAorICAgICAgICAvLyB3b3JrIGZvciBjaHVua3Mgd2l0aCBub24tdHJpdmlhbCBlbmNvZGlu
Z3MuIFdlIG5lZWQgYSB3YXkgdG8KKyAgICAgICAgLy8gZ2V0IGFjdHVhbCB0cmFuc2ZlciBzaXpl
IGZyb20gdGhlIG5ldHdvcmsgc3RhY2suCisgICAgICAgIHZhciBib2R5U2l6ZSA9IE51bWJlcih0
aGlzLnJlc3BvbnNlSGVhZGVyc1siQ29udGVudC1MZW5ndGgiXSB8fCB0aGlzLnJlc291cmNlU2l6
ZSk7CisgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlSGVhZGVyc1NpemUgKyBib2R5U2l6ZTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IHgKKyAgICAgKi8KKyAg
ICBpbmNyZWFzZVRyYW5zZmVyU2l6ZTogZnVuY3Rpb24oeCkKKyAgICB7CisgICAgICAgIHRoaXMu
X3RyYW5zZmVyU2l6ZSA9ICh0aGlzLl90cmFuc2ZlclNpemUgfHwgMCkgKyB4OworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBnZXQgZmluaXNo
ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaGVkOworICAgIH0sCisKKyAg
ICBzZXQgZmluaXNoZWQoeCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maW5pc2hlZCA9PT0g
eCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9maW5pc2hlZCA9IHg7CisK
KyAgICAgICAgaWYgKHgpIHsKKyAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuRmluaXNoZWRMb2FkaW5nLCB0
aGlzKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9wZW5kaW5nQ29udGVudENhbGxiYWNrcy5sZW5n
dGgpCisgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJSZXF1ZXN0Q29udGVudCgpOworICAgICAg
ICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtib29sZWFufQorICAgICAqLwor
ICAgIGdldCBmYWlsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZhaWxlZDsKKyAg
ICB9LAorCisgICAgc2V0IGZhaWxlZCh4KQorICAgIHsKKyAgICAgICAgdGhpcy5fZmFpbGVkID0g
eDsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHR5cGUge2Jvb2xlYW59CisgICAgICovCisg
ICAgZ2V0IGNhbmNlbGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jYW5jZWxlZDsK
KyAgICB9LAorCisgICAgc2V0IGNhbmNlbGVkKHgpCisgICAgeworICAgICAgICB0aGlzLl9jYW5j
ZWxlZCA9IHg7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtib29sZWFufQorICAg
ICAqLworICAgIGdldCBjYWNoZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hl
ZDsKKyAgICB9LAorCisgICAgc2V0IGNhY2hlZCh4KQorICAgIHsKKyAgICAgICAgdGhpcy5fY2Fj
aGVkID0geDsKKyAgICAgICAgaWYgKHgpCisgICAgICAgICAgICBkZWxldGUgdGhpcy5fdGltaW5n
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7TmV0d29ya0FnZW50LlJlc291cmNl
VGltaW5nfHVuZGVmaW5lZH0KKyAgICAgKi8KKyAgICBnZXQgdGltaW5nKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl90aW1pbmc7CisgICAgfSwKKworICAgIHNldCB0aW1pbmcoeCkKKyAg
ICB7CisgICAgICAgIGlmICh4ICYmICF0aGlzLl9jYWNoZWQpIHsKKyAgICAgICAgICAgIC8vIFRh
a2Ugc3RhcnRUaW1lIGFuZCByZXNwb25zZVJlY2VpdmVkVGltZSBmcm9tIHRpbWluZyBkYXRhIGZv
ciBiZXR0ZXIgYWNjdXJhY3kuCisgICAgICAgICAgICAvLyBUaW1pbmcncyByZXF1ZXN0VGltZSBp
cyBhIGJhc2VsaW5lIGluIHNlY29uZHMsIHJlc3Qgb2YgdGhlIG51bWJlcnMgdGhlcmUgYXJlIHRp
Y2tzIGluIG1pbGxpcy4KKyAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHgucmVxdWVzdFRp
bWU7CisgICAgICAgICAgICB0aGlzLl9yZXNwb25zZVJlY2VpdmVkVGltZSA9IHgucmVxdWVzdFRp
bWUgKyB4LnJlY2VpdmVIZWFkZXJzRW5kIC8gMTAwMC4wOworCisgICAgICAgICAgICB0aGlzLl90
aW1pbmcgPSB4OworICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5UaW1pbmdDaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7c3RyaW5nfQorICAgICAq
LworICAgIGdldCBtaW1lVHlwZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fbWltZVR5
cGU7CisgICAgfSwKKworICAgIHNldCBtaW1lVHlwZSh4KQorICAgIHsKKyAgICAgICAgdGhpcy5f
bWltZVR5cGUgPSB4OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7c3RyaW5nfQor
ICAgICAqLworICAgIGdldCBkaXNwbGF5TmFtZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5f
ZGlzcGxheU5hbWUpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7CisgICAg
ICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gdGhpcy5sYXN0UGF0aENvbXBvbmVudDsKKyAgICAgICAg
aWYgKCF0aGlzLl9kaXNwbGF5TmFtZSkKKyAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0g
dGhpcy5kaXNwbGF5RG9tYWluOworICAgICAgICBpZiAoIXRoaXMuX2Rpc3BsYXlOYW1lICYmIHRo
aXMudXJsKQorICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSB0aGlzLnVybC50cmltVVJM
KFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWluID8gV2ViSW5zcGVjdG9yLmluc3BlY3Rl
ZFBhZ2VEb21haW4gOiAiIik7CisgICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TmFtZSA9PT0gIi8i
KQorICAgICAgICAgICAgdGhpcy5fZGlzcGxheU5hbWUgPSB0aGlzLnVybDsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2Rpc3BsYXlOYW1lOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7
c3RyaW5nfQorICAgICAqLworICAgIGdldCBmb2xkZXIoKQorICAgIHsKKyAgICAgICAgdmFyIHBh
dGggPSB0aGlzLnBhdGg7CisgICAgICAgIHZhciBpbmRleE9mUXVlcnkgPSBwYXRoLmluZGV4T2Yo
Ij8iKTsKKyAgICAgICAgaWYgKGluZGV4T2ZRdWVyeSAhPT0gLTEpCisgICAgICAgICAgICBwYXRo
ID0gcGF0aC5zdWJzdHJpbmcoMCwgaW5kZXhPZlF1ZXJ5KTsKKyAgICAgICAgdmFyIGxhc3RTbGFz
aEluZGV4ID0gcGF0aC5sYXN0SW5kZXhPZigiLyIpOworICAgICAgICByZXR1cm4gbGFzdFNsYXNo
SW5kZXggIT09IC0xID8gcGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoSW5kZXgpIDogIiI7Cisg
ICAgfSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtzdHJpbmd9CisgICAgICovCisgICAgZ2V0
IGRpc3BsYXlEb21haW4oKQorICAgIHsKKyAgICAgICAgLy8gV2ViSW5zcGVjdG9yLkRhdGFiYXNl
IGNhbGxzIHRoaXMsIHNvIGRvbid0IGFjY2VzcyBtb3JlIHRoYW4gdGhpcy5kb21haW4uCisgICAg
ICAgIGlmICh0aGlzLmRvbWFpbiAmJiAoIVdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQYWdlRG9tYWlu
IHx8IChXZWJJbnNwZWN0b3IuaW5zcGVjdGVkUGFnZURvbWFpbiAmJiB0aGlzLmRvbWFpbiAhPT0g
V2ViSW5zcGVjdG9yLmluc3BlY3RlZFBhZ2VEb21haW4pKSkKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLmRvbWFpbjsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlVHlwZX0KKyAgICAgKi8KKyAgICBnZXQgdHlw
ZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKKyAgICB9LAorCisgICAgc2V0
IHR5cGUoeCkKKyAgICB7CisgICAgICAgIHRoaXMuX3R5cGUgPSB4OworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfHVuZGVmaW5lZH0KKyAgICAg
Ki8KKyAgICBnZXQgcmVkaXJlY3RTb3VyY2UoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMucmVk
aXJlY3RzICYmIHRoaXMucmVkaXJlY3RzLmxlbmd0aCA+IDApCisgICAgICAgICAgICByZXR1cm4g
dGhpcy5yZWRpcmVjdHNbdGhpcy5yZWRpcmVjdHMubGVuZ3RoIC0gMV07CisgICAgICAgIHJldHVy
biB0aGlzLl9yZWRpcmVjdFNvdXJjZTsKKyAgICB9LAorCisgICAgc2V0IHJlZGlyZWN0U291cmNl
KHgpCisgICAgeworICAgICAgICB0aGlzLl9yZWRpcmVjdFNvdXJjZSA9IHg7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEB0eXBlIHtPYmplY3R9CisgICAgICovCisgICAgZ2V0IHJlcXVlc3RI
ZWFkZXJzKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVycyB8fCB7
fTsKKyAgICB9LAorCisgICAgc2V0IHJlcXVlc3RIZWFkZXJzKHgpCisgICAgeworICAgICAgICB0
aGlzLl9yZXF1ZXN0SGVhZGVycyA9IHg7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9zb3J0ZWRSZXF1
ZXN0SGVhZGVyczsKKyAgICAgICAgZGVsZXRlIHRoaXMuX3JlcXVlc3RDb29raWVzOworCisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVx
dWVzdC5FdmVudHMuUmVxdWVzdEhlYWRlcnNDaGFuZ2VkKTsKKyAgICB9LAorCisgICAgLyoqCisg
ICAgICogQHR5cGUge3N0cmluZ30KKyAgICAgKi8KKyAgICBnZXQgcmVxdWVzdEhlYWRlcnNUZXh0
KCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZXF1ZXN0SGVhZGVyc1RleHQgPT09IHVuZGVm
aW5lZCkgeworICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNUZXh0ID0gdGhpcy5yZXF1
ZXN0TWV0aG9kICsgIiAiICsgdGhpcy51cmwgKyAiIEhUVFAvMS4xXHJcbiI7CisgICAgICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gdGhpcy5yZXF1ZXN0SGVhZGVycykKKyAgICAgICAgICAgICAgICB0
aGlzLl9yZXF1ZXN0SGVhZGVyc1RleHQgKz0ga2V5ICsgIjogIiArIHRoaXMucmVxdWVzdEhlYWRl
cnNba2V5XSArICJcclxuIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVz
dEhlYWRlcnNUZXh0OworICAgIH0sCisKKyAgICBzZXQgcmVxdWVzdEhlYWRlcnNUZXh0KHgpCisg
ICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RleHQgPSB4OworCisgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5F
dmVudHMuUmVxdWVzdEhlYWRlcnNDaGFuZ2VkKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHR5cGUge251bWJlcn0KKyAgICAgKi8KKyAgICBnZXQgcmVxdWVzdEhlYWRlcnNTaXplKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RIZWFkZXJzVGV4dC5sZW5ndGg7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtBcnJheS48T2JqZWN0Pn0KKyAgICAgKi8KKyAg
ICBnZXQgc29ydGVkUmVxdWVzdEhlYWRlcnMoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Nv
cnRlZFJlcXVlc3RIZWFkZXJzICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4gdGhp
cy5fc29ydGVkUmVxdWVzdEhlYWRlcnM7CisKKyAgICAgICAgdGhpcy5fc29ydGVkUmVxdWVzdEhl
YWRlcnMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMucmVxdWVzdEhlYWRlcnMp
CisgICAgICAgICAgICB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVycy5wdXNoKHtoZWFkZXI6IGtl
eSwgdmFsdWU6IHRoaXMucmVxdWVzdEhlYWRlcnNba2V5XX0pOworICAgICAgICB0aGlzLl9zb3J0
ZWRSZXF1ZXN0SGVhZGVycy5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYS5oZWFkZXIubG9j
YWxlQ29tcGFyZShiLmhlYWRlcikgfSk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRlZFJl
cXVlc3RIZWFkZXJzOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
aGVhZGVyTmFtZQorICAgICAqIEByZXR1cm4ge3N0cmluZ3x1bmRlZmluZWR9CisgICAgICovCisg
ICAgcmVxdWVzdEhlYWRlclZhbHVlOiBmdW5jdGlvbihoZWFkZXJOYW1lKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2hlYWRlclZhbHVlKHRoaXMucmVxdWVzdEhlYWRlcnMsIGhlYWRlck5h
bWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7QXJyYXkuPFdlYkluc3BlY3Rv
ci5Db29raWU+fQorICAgICAqLworICAgIGdldCByZXF1ZXN0Q29va2llcygpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX3JlcXVlc3RDb29raWVzKQorICAgICAgICAgICAgdGhpcy5fcmVxdWVz
dENvb2tpZXMgPSBXZWJJbnNwZWN0b3IuQ29va2llUGFyc2VyLnBhcnNlQ29va2llKHRoaXMucmVx
dWVzdEhlYWRlclZhbHVlKCJDb29raWUiKSk7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0
Q29va2llczsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHR5cGUge3N0cmluZ3x1bmRlZmlu
ZWR9CisgICAgICovCisgICAgZ2V0IHJlcXVlc3RGb3JtRGF0YSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVxdWVzdEZvcm1EYXRhOworICAgIH0sCisKKyAgICBzZXQgcmVxdWVzdEZv
cm1EYXRhKHgpCisgICAgeworICAgICAgICB0aGlzLl9yZXF1ZXN0Rm9ybURhdGEgPSB4OworICAg
ICAgICBkZWxldGUgdGhpcy5fcGFyc2VkRm9ybVBhcmFtZXRlcnM7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfQorICAgICAqLworICAgIGdldCByZXF1
ZXN0SHR0cFZlcnNpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGZpcnN0TGluZSA9IHRoaXMucmVx
dWVzdEhlYWRlcnNUZXh0LnNwbGl0KC9cclxuLylbMF07CisgICAgICAgIHZhciBtYXRjaCA9IGZp
cnN0TGluZS5tYXRjaCgvKEhUVFBcL1xkK1wuXGQrKSQvKTsKKyAgICAgICAgcmV0dXJuIG1hdGNo
ID8gbWF0Y2hbMV0gOiB1bmRlZmluZWQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEB0eXBl
IHtPYmplY3R9CisgICAgICovCisgICAgZ2V0IHJlc3BvbnNlSGVhZGVycygpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzIHx8IHt9OworICAgIH0sCisKKyAgICBz
ZXQgcmVzcG9uc2VIZWFkZXJzKHgpCisgICAgeworICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRl
cnMgPSB4OworICAgICAgICBkZWxldGUgdGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJzOworICAg
ICAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDb29raWVzOworCisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVudHMuUmVz
cG9uc2VIZWFkZXJzQ2hhbmdlZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEB0eXBlIHtz
dHJpbmd9CisgICAgICovCisgICAgZ2V0IHJlc3BvbnNlSGVhZGVyc1RleHQoKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RleHQgPT09IHVuZGVmaW5lZCkgeworICAg
ICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVGV4dCA9ICJIVFRQLzEuMSAiICsgdGhpcy5z
dGF0dXNDb2RlICsgIiAiICsgdGhpcy5zdGF0dXNUZXh0ICsgIlxyXG4iOworICAgICAgICAgICAg
Zm9yICh2YXIga2V5IGluIHRoaXMucmVzcG9uc2VIZWFkZXJzKQorICAgICAgICAgICAgICAgIHRo
aXMuX3Jlc3BvbnNlSGVhZGVyc1RleHQgKz0ga2V5ICsgIjogIiArIHRoaXMucmVzcG9uc2VIZWFk
ZXJzW2tleV0gKyAiXHJcbiI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3Bv
bnNlSGVhZGVyc1RleHQ7CisgICAgfSwKKworICAgIHNldCByZXNwb25zZUhlYWRlcnNUZXh0KHgp
CisgICAgeworICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNUZXh0ID0geDsKKworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVl
c3QuRXZlbnRzLlJlc3BvbnNlSGVhZGVyc0NoYW5nZWQpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAdHlwZSB7bnVtYmVyfQorICAgICAqLworICAgIGdldCByZXNwb25zZUhlYWRlcnNTaXpl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlSGVhZGVyc1RleHQubGVuZ3Ro
OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7QXJyYXkuPE9iamVjdD59CisgICAg
ICovCisgICAgZ2V0IHNvcnRlZFJlc3BvbnNlSGVhZGVycygpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJzICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJzOworCisgICAgICAgIHRoaXMuX3NvcnRl
ZFJlc3BvbnNlSGVhZGVycyA9IFtdOworICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5yZXNw
b25zZUhlYWRlcnMpCisgICAgICAgICAgICB0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRlcnMucHVz
aCh7aGVhZGVyOiBrZXksIHZhbHVlOiB0aGlzLnJlc3BvbnNlSGVhZGVyc1trZXldfSk7CisgICAg
ICAgIHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVycy5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1
cm4gYS5oZWFkZXIubG9jYWxlQ29tcGFyZShiLmhlYWRlcikgfSk7CisKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVyczsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGhlYWRlck5hbWUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd8dW5kZWZp
bmVkfQorICAgICAqLworICAgIHJlc3BvbnNlSGVhZGVyVmFsdWU6IGZ1bmN0aW9uKGhlYWRlck5h
bWUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyVmFsdWUodGhpcy5yZXNwb25z
ZUhlYWRlcnMsIGhlYWRlck5hbWUpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7
QXJyYXkuPFdlYkluc3BlY3Rvci5Db29raWU+fQorICAgICAqLworICAgIGdldCByZXNwb25zZUNv
b2tpZXMoKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9yZXNwb25zZUNvb2tpZXMpCisgICAg
ICAgICAgICB0aGlzLl9yZXNwb25zZUNvb2tpZXMgPSBXZWJJbnNwZWN0b3IuQ29va2llUGFyc2Vy
LnBhcnNlU2V0Q29va2llKHRoaXMucmVzcG9uc2VIZWFkZXJWYWx1ZSgiU2V0LUNvb2tpZSIpKTsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlQ29va2llczsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHR5cGUgez9BcnJheS48T2JqZWN0Pn0KKyAgICAgKi8KKyAgICBnZXQgcXVlcnlQ
YXJhbWV0ZXJzKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9wYXJzZWRRdWVyeVBhcmFtZXRl
cnMpCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VkUXVlcnlQYXJhbWV0ZXJzOworICAg
ICAgICB2YXIgcXVlcnlTdHJpbmcgPSB0aGlzLnVybC5zcGxpdCgiPyIsIDIpWzFdOworICAgICAg
ICBpZiAoIXF1ZXJ5U3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHF1
ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmcuc3BsaXQoIiMiLCAyKVswXTsKKyAgICAgICAgdGhpcy5f
cGFyc2VkUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5fcGFyc2VQYXJhbWV0ZXJzKHF1ZXJ5U3RyaW5n
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZFF1ZXJ5UGFyYW1ldGVyczsKKyAgICB9LAor
CisgICAgLyoqCisgICAgICogQHR5cGUgez9BcnJheS48T2JqZWN0Pn0KKyAgICAgKi8KKyAgICBn
ZXQgZm9ybVBhcmFtZXRlcnMoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3BhcnNlZEZvcm1Q
YXJhbWV0ZXJzKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZEZvcm1QYXJhbWV0ZXJz
OworICAgICAgICBpZiAoIXRoaXMucmVxdWVzdEZvcm1EYXRhKQorICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgICAgIHZhciByZXF1ZXN0Q29udGVudFR5cGUgPSB0aGlzLnJlcXVlc3RDb250
ZW50VHlwZSgpOworICAgICAgICBpZiAoIXJlcXVlc3RDb250ZW50VHlwZSB8fCAhcmVxdWVzdENv
bnRlbnRUeXBlLm1hdGNoKC9eYXBwbGljYXRpb25cL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxzKig7
LiopPyQvaSkpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgdGhpcy5fcGFyc2Vk
Rm9ybVBhcmFtZXRlcnMgPSB0aGlzLl9wYXJzZVBhcmFtZXRlcnModGhpcy5yZXF1ZXN0Rm9ybURh
dGEpOworICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VkRm9ybVBhcmFtZXRlcnM7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfQorICAgICAqLworICAg
IGdldCByZXNwb25zZUh0dHBWZXJzaW9uKCkKKyAgICB7CisgICAgICAgIHZhciBtYXRjaCA9IHRo
aXMucmVzcG9uc2VIZWFkZXJzVGV4dC5tYXRjaCgvXihIVFRQXC9cZCtcLlxkKykvKTsKKyAgICAg
ICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiB1bmRlZmluZWQ7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBxdWVyeVN0cmluZworICAgICAqIEByZXR1cm4ge0Fy
cmF5LjxPYmplY3Q+fQorICAgICAqLworICAgIF9wYXJzZVBhcmFtZXRlcnM6IGZ1bmN0aW9uKHF1
ZXJ5U3RyaW5nKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gcGFyc2VOYW1lVmFsdWUocGFpcikK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBhcmFtZXRlciA9IHt9OworICAgICAgICAgICAg
dmFyIHNwbGl0UGFpciA9IHBhaXIuc3BsaXQoIj0iLCAyKTsKKworICAgICAgICAgICAgcGFyYW1l
dGVyLm5hbWUgPSBzcGxpdFBhaXJbMF07CisgICAgICAgICAgICBpZiAoc3BsaXRQYWlyLmxlbmd0
aCA9PT0gMSkKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudmFsdWUgPSAiIjsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudmFsdWUgPSBzcGxpdFBhaXJbMV07
CisgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBxdWVyeVN0cmluZy5zcGxpdCgiJiIpLm1hcChwYXJzZU5hbWVWYWx1ZSk7CisgICAgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7T2JqZWN0fSBoZWFkZXJzCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGhlYWRlck5hbWUKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd8dW5kZWZpbmVkfQorICAg
ICAqLworICAgIF9oZWFkZXJWYWx1ZTogZnVuY3Rpb24oaGVhZGVycywgaGVhZGVyTmFtZSkKKyAg
ICB7CisgICAgICAgIGhlYWRlck5hbWUgPSBoZWFkZXJOYW1lLnRvTG93ZXJDYXNlKCk7CisgICAg
ICAgIGZvciAodmFyIGhlYWRlciBpbiBoZWFkZXJzKSB7CisgICAgICAgICAgICBpZiAoaGVhZGVy
LnRvTG93ZXJDYXNlKCkgPT09IGhlYWRlck5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhl
YWRlcnNbaGVhZGVyXTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlw
ZSB7c3RyaW5nfQorICAgICAqLworICAgIGdldCBjb250ZW50KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9jb250ZW50OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7c3Ry
aW5nfQorICAgICAqLworICAgIGdldCBjb250ZW50RW5jb2RlZCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fY29udGVudEVuY29kZWQ7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBw
YXJhbSB7ZnVuY3Rpb24oP3N0cmluZywgYm9vbGVhbil9IGNhbGxiYWNrCisgICAgICovCisgICAg
cmVxdWVzdENvbnRlbnQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgLy8gV2Ug
ZG8gbm90IHN1cHBvcnQgY29udGVudCByZXRyaWV2YWwgZm9yIFdlYlNvY2tldHMgYXQgdGhlIG1v
bWVudC4KKyAgICAgICAgLy8gU2luY2UgV2ViU29ja2V0cyBhcmUgcG90ZW50aWFsbHkgbG9uZy1s
aXZpbmcsIGZhaWwgcmVxdWVzdHMgaW1tZWRpYXRlbHkKKyAgICAgICAgLy8gdG8gcHJldmVudCBj
YWxsZXIgYmxvY2tpbmcgdW50aWwgcmVzb3VyY2UgaXMgbWFya2VkIGFzIGZpbmlzaGVkLgorICAg
ICAgICBpZiAodGhpcy50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5XZWJTb2Nr
ZXQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2NvbnRlbnQgIT09ICJ1
bmRlZmluZWQiKSB7CisgICAgICAgICAgICBjYWxsYmFjayh0aGlzLmNvbnRlbnQsIHRoaXMuX2Nv
bnRlbnRFbmNvZGVkKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICB0
aGlzLl9wZW5kaW5nQ29udGVudENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKKyAgICAgICAgaWYg
KHRoaXMuZmluaXNoZWQpCisgICAgICAgICAgICB0aGlzLl9pbm5lclJlcXVlc3RDb250ZW50KCk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisg
ICAgaXNIdHRwRmFtaWx5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlz
LnVybC5tYXRjaCgvXmh0dHBzPzovaSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1
cm4ge3N0cmluZ3x1bmRlZmluZWR9CisgICAgICovCisgICAgcmVxdWVzdENvbnRlbnRUeXBlOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyVmFsdWUo
IkNvbnRlbnQtVHlwZSIpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQorICAgICAqLworICAgIGlzUGluZ1JlcXVlc3Q6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAidGV4dC9waW5nIiA9PT0gdGhpcy5yZXF1ZXN0Q29udGVudFR5cGUoKTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBo
YXNFcnJvclN0YXR1c0NvZGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
LnN0YXR1c0NvZGUgPj0gNDAwOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0Vs
ZW1lbnR9IGltYWdlCisgICAgICovCisgICAgcG9wdWxhdGVJbWFnZVNvdXJjZTogZnVuY3Rpb24o
aW1hZ2UpCisgICAgeworICAgICAgICBmdW5jdGlvbiBvblJlc291cmNlQ29udGVudCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGltYWdlLnNyYyA9IHRoaXMuX2NvbnRlbnRVUkwoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRoaXMucmVxdWVzdENvbnRlbnQob25SZXNvdXJjZUNvbnRlbnQuYmlu
ZCh0aGlzKSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAg
ICAgKi8KKyAgICBfY29udGVudFVSTDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgY29uc3Qg
bWF4RGF0YVVybFNpemUgPSAxMDI0ICogMTAyNDsKKyAgICAgICAgLy8gSWYgcmVzb3VyY2UgY29u
dGVudCBpcyBub3QgYXZhaWxhYmxlIG9yIHdvbid0IGZpdCBhIGRhdGEgVVJMLCBmYWxsIGJhY2sg
dG8gdXNpbmcgb3JpZ2luYWwgVVJMLgorICAgICAgICBpZiAodGhpcy5fY29udGVudCA9PSBudWxs
IHx8IHRoaXMuX2NvbnRlbnQubGVuZ3RoID4gbWF4RGF0YVVybFNpemUpCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy51cmw7CisKKyAgICAgICAgcmV0dXJuICJkYXRhOiIgKyB0aGlzLm1pbWVUeXBl
ICsgKHRoaXMuX2NvbnRlbnRFbmNvZGVkID8gIjtiYXNlNjQsIiA6ICIsIikgKyB0aGlzLl9jb250
ZW50OworICAgIH0sCisKKyAgICBfaW5uZXJSZXF1ZXN0Q29udGVudDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQgPSB0cnVlOworCisgICAgICAgIC8q
KgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKKyAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBjb250
ZW50RW5jb2RlZAorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gb25SZXNvdXJjZUNvbnRl
bnQoZXJyb3IsIGNvbnRlbnQsIGNvbnRlbnRFbmNvZGVkKQorICAgICAgICB7CisgICAgICAgICAg
ICB0aGlzLl9jb250ZW50ID0gZXJyb3IgPyBudWxsIDogY29udGVudDsKKyAgICAgICAgICAgIHRo
aXMuX2NvbnRlbnRFbmNvZGVkID0gY29udGVudEVuY29kZWQ7CisgICAgICAgICAgICB2YXIgY2Fs
bGJhY2tzID0gdGhpcy5fcGVuZGluZ0NvbnRlbnRDYWxsYmFja3Muc2xpY2UoKTsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgKytpKQorICAgICAgICAg
ICAgICAgIGNhbGxiYWNrc1tpXSh0aGlzLl9jb250ZW50LCB0aGlzLl9jb250ZW50RW5jb2RlZCk7
CisgICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ29udGVudENhbGxiYWNrcy5sZW5ndGggPSAwOwor
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQ7CisgICAgICAgIH0KKyAg
ICAgICAgTmV0d29ya0FnZW50LmdldFJlc3BvbnNlQm9keSh0aGlzLl9yZXF1ZXN0SWQsIG9uUmVz
b3VyY2VDb250ZW50LmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKKyAgICAgKi8KKyAgICBzZXRSZXNv
dXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgeworICAgICAgICB0aGlzLl9yZXNvdXJjZSA9
IHJlc291cmNlOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0
b3IuUmVzb3VyY2V9CisgICAgICovCisgICAgcmVzb3VyY2U6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rvci5O
ZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1Jhd1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jh
d1NvdXJjZUNvZGUuanMKaW5kZXggOTdiOWNkNjI3MjViY2Q0MDQ5MGVjYzMxOTdjYWM2ZTQxNGJm
NGNmNS4uNTgzOGU1YzYwMmRjMmE1NTRiYWI4ZGE2MzNhM2I4YjkyNTMwNzQwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SYXdTb3VyY2VDb2RlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmF3U291cmNlQ29kZS5qcwpA
QCAtMzYsMTEgKzM2LDEyIEBACiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KICAq
IEBwYXJhbSB7c3RyaW5nfSBpZAogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3Jp
cHQKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSByZXNvdXJjZQogICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9IHJlcXVlc3QKICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlNjcmlwdEZvcm1hdHRlcn0gZm9ybWF0dGVyCiAgKiBAcGFyYW0ge2Jvb2xlYW59IGZv
cm1hdHRlZAogICovCi1XZWJJbnNwZWN0b3IuUmF3U291cmNlQ29kZSA9IGZ1bmN0aW9uKGlkLCBz
Y3JpcHQsIHJlcXVlc3QsIGZvcm1hdHRlciwgZm9ybWF0dGVkKQorV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUgPSBmdW5jdGlvbihpZCwgc2NyaXB0LCByZXNvdXJjZSwgcmVxdWVzdCwgZm9ybWF0
dGVyLCBmb3JtYXR0ZWQpCiB7CiAgICAgdGhpcy5pZCA9IGlkOwogICAgIHRoaXMudXJsID0gc2Ny
aXB0LnNvdXJjZVVSTDsKQEAgLTQ4LDE0ICs0OSwxNSBAQCBXZWJJbnNwZWN0b3IuUmF3U291cmNl
Q29kZSA9IGZ1bmN0aW9uKGlkLCBzY3JpcHQsIHJlcXVlc3QsIGZvcm1hdHRlciwgZm9ybWF0dGVk
KQogICAgIHRoaXMuX3NjcmlwdHMgPSBbc2NyaXB0XTsKICAgICB0aGlzLl9mb3JtYXR0ZXIgPSBm
b3JtYXR0ZXI7CiAgICAgdGhpcy5fZm9ybWF0dGVkID0gZm9ybWF0dGVkOworICAgIHRoaXMuX3Jl
c291cmNlID0gcmVzb3VyY2U7CiAgICAgdGhpcy5fcmVxdWVzdCA9IHJlcXVlc3Q7CiAKLSAgICB0
aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0gdGhpcy5fcmVxdWVzdCAmJiAhdGhpcy5fcmVxdWVz
dC5maW5pc2hlZDsKICAgICB0aGlzLl9oYXNOZXdTY3JpcHRzID0gdHJ1ZTsKLSAgICBpZiAoIXRo
aXMuX3VzZVRlbXBvcmFyeUNvbnRlbnQpCisKKyAgICBpZiAodGhpcy5fcmVxdWVzdCkKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJlc291cmNlVHJlZU1vZGVsLkV2ZW50VHlwZXMuUmVzb3VyY2VBZGRlZCwgdGhpcy5f
cmVzb3VyY2VBZGRlZCwgdGhpcyk7CisgICAgZWxzZQogICAgICAgICB0aGlzLl91cGRhdGVTb3Vy
Y2VNYXBwaW5nKCk7Ci0gICAgZWxzZSBpZiAodGhpcy5fcmVxdWVzdCkKLSAgICAgICAgdGhpcy5f
cmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5FdmVu
dHMuRmluaXNoZWRMb2FkaW5nLCB0aGlzLl9yZXF1ZXN0RmluaXNoZWQuYmluZCh0aGlzKSk7CiB9
CiAKIFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlLkV2ZW50cyA9IHsKQEAgLTExNyw5ICsxMTks
MTQgQEAgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl91cGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAgICAgfSwKIAotICAgIF9yZXF1ZXN0RmluaXNo
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVzb3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewotICAgICAgICB0aGlzLl91c2VUZW1wb3JhcnlDb250ZW50ID0gZmFsc2U7CisgICAgICAgIHZh
ciByZXNvdXJjZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlJlc291cmNlfSAqLyBldmVudC5k
YXRhOworICAgICAgICBpZiAocmVzb3VyY2UucmVxdWVzdCAhPT0gdGhpcy5fcmVxdWVzdCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOwor
ICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdDsKICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNl
TWFwcGluZygpOwogICAgIH0sCiAKQEAgLTEyOCw3ICsxMzUsNyBAQCBXZWJJbnNwZWN0b3IuUmF3
U291cmNlQ29kZS5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgZm9yY2VVcGRhdGVTb3VyY2VN
YXBwaW5nOiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX3VzZVRl
bXBvcmFyeUNvbnRlbnQgfHwgIXRoaXMuX2hhc05ld1NjcmlwdHMpCisgICAgICAgIGlmICghdGhp
cy5fcmVxdWVzdCB8fCAhdGhpcy5faGFzTmV3U2NyaXB0cykKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgdGhpcy5faGFzTmV3U2NyaXB0cyA9IGZhbHNlOwogICAgICAgICB0aGlzLl91cGRh
dGVTb3VyY2VNYXBwaW5nKCk7CkBAIC0xNjEsOCArMTY4LDggQEAgV2ViSW5zcGVjdG9yLlJhd1Nv
dXJjZUNvZGUucHJvdG90eXBlID0gewogCiAgICAgX2NyZWF0ZUNvbnRlbnRQcm92aWRlcjogZnVu
Y3Rpb24oKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3JlcXVlc3QgJiYgdGhpcy5fcmVxdWVz
dC5maW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNl
Q29udGVudFByb3ZpZGVyKHRoaXMuX3JlcXVlc3QucmVzb3VyY2UoKSk7CisgICAgICAgIGlmICh0
aGlzLl9yZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlQ29udGVudFByb3ZpZGVyKHRoaXMuX3Jlc291cmNlKTsKICAgICAgICAgaWYgKHRoaXMuX3Nj
cmlwdHMubGVuZ3RoID09PSAxICYmICF0aGlzLl9zY3JpcHRzWzBdLmxpbmVPZmZzZXQgJiYgIXRo
aXMuX3NjcmlwdHNbMF0uY29sdW1uT2Zmc2V0KQogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFByb3ZpZGVyKHRoaXMuX3NjcmlwdHNbMF0pOwogICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRTY3JpcHRzQ29udGVudFByb3Zp
ZGVyKHRoaXMuX3NjcmlwdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVzb3VyY2UuanMKaW5kZXggMDNmNDU2ZWQzN2Q3M2IwYzc5MGMzZmY0N2M5MmU3ODU5MDlj
NmNhNi4uM2ExNDhlNDJkOGEwZDM1YmE2ZTlkN2Q0ZDNiZGJlZTRhOTc5MjA2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZS5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlLmpzCkBAIC0zMiwyOCAr
MzIsMjMgQEAKICAqCiAgKiBAcGFyYW0gez9XZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3R9IHJl
cXVlc3QKICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKLSAqIEBwYXJhbSB7TmV0d29ya0FnZW50LkZy
YW1lSWR9IGZyYW1lSWQKLSAqIEBwYXJhbSB7TmV0d29ya0FnZW50LkxvYWRlcklkfSBsb2FkZXJJ
ZAorICogQHBhcmFtIHtzdHJpbmd9IGZyYW1lSWQKKyAqIEBwYXJhbSB7P05ldHdvcmtBZ2VudC5M
b2FkZXJJZH0gbG9hZGVySWQKICAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlID0gZnVuY3Rpb24o
cmVxdWVzdCwgdXJsLCBmcmFtZUlkLCBsb2FkZXJJZCkKIHsKLSAgICBpZiAocmVxdWVzdCkKLSAg
ICAgICAgcmV0dXJuIHJlcXVlc3Q7Ci0KKyAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAg
ICBpZiAodGhpcy5fcmVxdWVzdCkKKyAgICAgICAgdGhpcy5fcmVxdWVzdC5zZXRSZXNvdXJjZSh0
aGlzKTsKICAgICB0aGlzLnVybCA9IHVybDsKICAgICB0aGlzLmZyYW1lSWQgPSBmcmFtZUlkOwog
ICAgIHRoaXMubG9hZGVySWQgPSBsb2FkZXJJZDsKLSAgICB0aGlzLl9zdGFydFRpbWUgPSAtMTsK
LSAgICB0aGlzLl9lbmRUaW1lID0gLTE7CiAgICAgdGhpcy5fdHlwZSA9IFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVR5cGVzLk90aGVyOwotICAgIHRoaXMuX3BlbmRpbmdDb250ZW50Q2FsbGJhY2tzID0g
W107CiAgICAgdGhpcy5oaXN0b3J5ID0gW107Ci0gICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCi0g
ICAgdGhpcy5zdGF0dXNDb2RlID0gMDsKLSAgICB0aGlzLnN0YXR1c1RleHQgPSAiIjsKLSAgICB0
aGlzLnJlcXVlc3RNZXRob2QgPSAiIjsKLSAgICB0aGlzLnJlcXVlc3RUaW1lID0gMDsKLSAgICB0
aGlzLnJlY2VpdmVIZWFkZXJzRW5kID0gMDsKKworICAgIHRoaXMuX2NvbnRlbnQgPSB1bmRlZmlu
ZWQ7CisgICAgdGhpcy5fY29udGVudEVuY29kZWQgPSB1bmRlZmluZWQ7CisgICAgdGhpcy5fcGVu
ZGluZ0NvbnRlbnRDYWxsYmFja3MgPSBbXTsKIH0KIAogLyoqCkBAIC02Miw3ICs1Nyw3IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZSA9IGZ1bmN0aW9uKHJlcXVlc3QsIHVybCwgZnJhbWVJZCwgbG9h
ZGVySWQpCiAgKi8KIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNwbGF5TmFtZSA9IGZ1bmN0aW9u
KHVybCkKIHsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZShudWxsLCB1cmws
ICIiLCAiIikuZGlzcGxheU5hbWU7CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UobnVsbCwgdXJsLCAiIiwgbnVsbCkuZGlzcGxheU5hbWU7CiB9CiAKIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5fZG9tYWluTW9kZWxCaW5kaW5ncyA9IFtdOwpAQCAtMTYzLDExICsxNTgsMTEgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50cyA9IHsKIAogV2ViSW5zcGVjdG9yLlJlc291cmNl
LnByb3RvdHlwZSA9IHsKICAgICAvKioKLSAgICAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLk5ldHdv
cmtSZXF1ZXN0fQorICAgICAqIEB0eXBlIHs/V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0fQog
ICAgICAqLwogICAgIGdldCByZXF1ZXN0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gKi8gdGhpczsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3JlcXVlc3Q7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTkyLDE0ICsxODcsMTEgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl91cmwgPSB4OwotICAgICAgICBkZWxldGUgdGhpcy5fcGFyc2VkUXVl
cnlQYXJhbWV0ZXJzOwogCiAgICAgICAgIHZhciBwYXJzZWRVUkwgPSB4LmFzUGFyc2VkVVJMKCk7
CiAgICAgICAgIHRoaXMuZG9tYWluID0gcGFyc2VkVVJMID8gcGFyc2VkVVJMLmhvc3QgOiAiIjsK
ICAgICAgICAgdGhpcy5wYXRoID0gcGFyc2VkVVJMID8gcGFyc2VkVVJMLnBhdGggOiAiIjsKLSAg
ICAgICAgdGhpcy51cmxGcmFnbWVudCA9IHBhcnNlZFVSTCA/IHBhcnNlZFVSTC5mcmFnbWVudCA6
ICIiOwogICAgICAgICB0aGlzLmxhc3RQYXRoQ29tcG9uZW50ID0gcGFyc2VkVVJMID8gcGFyc2Vk
VVJMLmxhc3RQYXRoQ29tcG9uZW50IDogIiI7Ci0gICAgICAgIHRoaXMubGFzdFBhdGhDb21wb25l
bnRMb3dlckNhc2UgPSB0aGlzLmxhc3RQYXRoQ29tcG9uZW50LnRvTG93ZXJDYXNlKCk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtMjU3LDIzMSArMjQ5LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEB0eXBlIHtudW1iZXJ9
Ci0gICAgICovCi0gICAgZ2V0IHN0YXJ0VGltZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fc3RhcnRUaW1lIHx8IC0xOwotICAgIH0sCi0KLSAgICBzZXQgc3RhcnRUaW1lKHgpCi0gICAg
ewotICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSB4OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAdHlwZSB7bnVtYmVyfQotICAgICAqLwotICAgIGdldCByZXNwb25zZVJlY2VpdmVkVGltZSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWUgfHwgLTE7
Ci0gICAgfSwKLQotICAgIHNldCByZXNwb25zZVJlY2VpdmVkVGltZSh4KQotICAgIHsKLSAgICAg
ICAgdGhpcy5fcmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB4OwotICAgIH0sCi0KLSAgICAvKioKLSAg
ICAgKiBAdHlwZSB7bnVtYmVyfQotICAgICAqLwotICAgIGdldCBlbmRUaW1lKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lIHx8IC0xOwotICAgIH0sCi0KLSAgICBzZXQgZW5k
VGltZSh4KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMudGltaW5nICYmIHRoaXMudGltaW5nLnJl
cXVlc3RUaW1lKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBhZ2FpbnN0IGFjY3VyYXRlIHJlc3Bv
bnNlUmVjZWl2ZWRUaW1lLgotICAgICAgICAgICAgdGhpcy5fZW5kVGltZSA9IE1hdGgubWF4KHgs
IHRoaXMucmVzcG9uc2VSZWNlaXZlZFRpbWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgLy8gUHJlZmVyIGVuZFRpbWUgc2luY2UgaXQgbWlnaHQgYmUgZnJvbSB0aGUgbmV0d29yayBz
dGFjay4KLSAgICAgICAgICAgIHRoaXMuX2VuZFRpbWUgPSB4OwotICAgICAgICAgICAgaWYgKHRo
aXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lID4geCkKLSAgICAgICAgICAgICAgICB0aGlzLl9yZXNw
b25zZVJlY2VpdmVkVGltZSA9IHg7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLyoqCi0gICAg
ICogQHR5cGUge251bWJlcn0KLSAgICAgKi8KLSAgICBnZXQgZHVyYXRpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX2VuZFRpbWUgPT09IC0xIHx8IHRoaXMuX3N0YXJ0VGltZSA9PT0gLTEp
Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lIC0g
dGhpcy5fc3RhcnRUaW1lOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAdHlwZSB7bnVtYmVy
fQotICAgICAqLwotICAgIGdldCBsYXRlbmN5KCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9y
ZXNwb25zZVJlY2VpdmVkVGltZSA9PT0gLTEgfHwgdGhpcy5fc3RhcnRUaW1lID09PSAtMSkKLSAg
ICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlUmVjZWl2
ZWRUaW1lIC0gdGhpcy5fc3RhcnRUaW1lOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAdHlw
ZSB7bnVtYmVyfQotICAgICAqLwotICAgIGdldCByZWNlaXZlRHVyYXRpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX2VuZFRpbWUgPT09IC0xIHx8IHRoaXMuX3Jlc3BvbnNlUmVjZWl2ZWRU
aW1lID09PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2VuZFRpbWUgLSB0aGlzLl9yZXNwb25zZVJlY2VpdmVkVGltZTsKLSAgICB9LAotCi0gICAgLyoq
Ci0gICAgICogQHR5cGUge251bWJlcn0KLSAgICAgKi8KLSAgICBnZXQgcmVzb3VyY2VTaXplKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVNpemUgfHwgMDsKLSAgICB9LAot
Ci0gICAgc2V0IHJlc291cmNlU2l6ZSh4KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2VT
aXplID0geDsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHR5cGUge251bWJlcn0KLSAgICAg
Ki8KLSAgICBnZXQgdHJhbnNmZXJTaXplKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmNhY2hl
ZCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAodGhpcy5zdGF0dXNDb2RlID09
PSAzMDQpIC8vIE5vdCBtb2RpZmllZAotICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVzcG9uc2VI
ZWFkZXJzU2l6ZTsKLSAgICAgICAgaWYgKHRoaXMuX3RyYW5zZmVyU2l6ZSAhPT0gdW5kZWZpbmVk
KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZmVyU2l6ZTsKLSAgICAgICAgLy8gSWYg
d2UgZGlkIG5vdCByZWNlaXZlIGFjdHVhbCB0cmFuc2ZlciBzaXplIGZyb20gbmV0d29yawotICAg
ICAgICAvLyBzdGFjaywgd2UgcHJlZmVyIHVzaW5nIENvbnRlbnQtTGVuZ3RoIG92ZXIgcmVzb3Vy
Y2VTaXplIGFzCi0gICAgICAgIC8vIHJlc291cmNlU2l6ZSBtYXkgZGlmZmVyIGZyb20gYWN0dWFs
IHRyYW5zZmVyIHNpemUgaWYgcGxhdGZvcm0ncwotICAgICAgICAvLyBuZXR3b3JrIHN0YWNrIHBl
cmZvcm1lZCBkZWNvZGluZyAoZS5nLiBnemlwIGRlY29tcHJlc3Npb24pLgotICAgICAgICAvLyBU
aGUgQ29udGVudC1MZW5ndGgsIHRob3VnaCwgaXMgZXhwZWN0ZWQgdG8gY29tZSBmcm9tIHJhdwot
ICAgICAgICAvLyByZXNwb25zZSBoZWFkZXJzIGFuZCB3aWxsIHJlZmxlY3QgYWN0dWFsIHRyYW5z
ZmVyIGxlbmd0aC4KLSAgICAgICAgLy8gVGhpcyB3b24ndCB3b3JrIGZvciBjaHVua2VkIGNvbnRl
bnQgZW5jb2RpbmcsIHNvIGZhbGwgYmFjayB0bwotICAgICAgICAvLyByZXNvdXJjZVNpemUgd2hl
biB3ZSBkb24ndCBoYXZlIENvbnRlbnQtTGVuZ3RoLiBUaGlzIHN0aWxsIHdvbid0Ci0gICAgICAg
IC8vIHdvcmsgZm9yIGNodW5rcyB3aXRoIG5vbi10cml2aWFsIGVuY29kaW5ncy4gV2UgbmVlZCBh
IHdheSB0bwotICAgICAgICAvLyBnZXQgYWN0dWFsIHRyYW5zZmVyIHNpemUgZnJvbSB0aGUgbmV0
d29yayBzdGFjay4KLSAgICAgICAgdmFyIGJvZHlTaXplID0gTnVtYmVyKHRoaXMucmVzcG9uc2VI
ZWFkZXJzWyJDb250ZW50LUxlbmd0aCJdIHx8IHRoaXMucmVzb3VyY2VTaXplKTsKLSAgICAgICAg
cmV0dXJuIHRoaXMucmVzcG9uc2VIZWFkZXJzU2l6ZSArIGJvZHlTaXplOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0geAotICAgICAqLwotICAgIGluY3JlYXNlVHJh
bnNmZXJTaXplOiBmdW5jdGlvbih4KQotICAgIHsKLSAgICAgICAgdGhpcy5fdHJhbnNmZXJTaXpl
ID0gKHRoaXMuX3RyYW5zZmVyU2l6ZSB8fCAwKSArIHg7Ci0gICAgfSwKLQotICAgIC8qKgotICAg
ICAqIEB0eXBlIHtib29sZWFufQotICAgICAqLwotICAgIGdldCBmaW5pc2hlZCgpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fZmluaXNoZWQ7Ci0gICAgfSwKLQotICAgIHNldCBmaW5pc2hl
ZCh4KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkID09PSB4KQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2ZpbmlzaGVkID0geDsKLQotICAgICAgICBpZiAo
eCkgewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50cy5GaW5pc2hlZExvYWRpbmcpOwotICAgICAgICAgICAg
aWYgKHRoaXMuX3BlbmRpbmdDb250ZW50Q2FsbGJhY2tzLmxlbmd0aCkKLSAgICAgICAgICAgICAg
ICB0aGlzLl9pbm5lclJlcXVlc3RDb250ZW50KCk7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAg
LyoqCi0gICAgICogQHR5cGUge2Jvb2xlYW59Ci0gICAgICovCi0gICAgZ2V0IGZhaWxlZCgpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZmFpbGVkOwotICAgIH0sCi0KLSAgICBzZXQgZmFp
bGVkKHgpCi0gICAgewotICAgICAgICB0aGlzLl9mYWlsZWQgPSB4OwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBnZXQgY2FuY2VsZWQoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NhbmNlbGVkOwotICAgIH0sCi0KLSAgICBzZXQg
Y2FuY2VsZWQoeCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2NhbmNlbGVkID0geDsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHR5cGUge2Jvb2xlYW59Ci0gICAgICovCi0gICAgZ2V0IGNhY2hl
ZCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkOwotICAgIH0sCi0KLSAgICBz
ZXQgY2FjaGVkKHgpCi0gICAgewotICAgICAgICB0aGlzLl9jYWNoZWQgPSB4OwotICAgICAgICBp
ZiAoeCkKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl90aW1pbmc7Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEB0eXBlIHtOZXR3b3JrQWdlbnQuUmVzb3VyY2VUaW1pbmd8dW5kZWZpbmVkfQot
ICAgICAqLwotICAgIGdldCB0aW1pbmcoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rp
bWluZzsKLSAgICB9LAotCi0gICAgc2V0IHRpbWluZyh4KQotICAgIHsKLSAgICAgICAgaWYgKHgg
JiYgIXRoaXMuX2NhY2hlZCkgewotICAgICAgICAgICAgLy8gVGFrZSBzdGFydFRpbWUgYW5kIHJl
c3BvbnNlUmVjZWl2ZWRUaW1lIGZyb20gdGltaW5nIGRhdGEgZm9yIGJldHRlciBhY2N1cmFjeS4K
LSAgICAgICAgICAgIC8vIFRpbWluZydzIHJlcXVlc3RUaW1lIGlzIGEgYmFzZWxpbmUgaW4gc2Vj
b25kcywgcmVzdCBvZiB0aGUgbnVtYmVycyB0aGVyZSBhcmUgdGlja3MgaW4gbWlsbGlzLgotICAg
ICAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0geC5yZXF1ZXN0VGltZTsKLSAgICAgICAgICAgIHRo
aXMuX3Jlc3BvbnNlUmVjZWl2ZWRUaW1lID0geC5yZXF1ZXN0VGltZSArIHgucmVjZWl2ZUhlYWRl
cnNFbmQgLyAxMDAwLjA7Ci0KLSAgICAgICAgICAgIHRoaXMuX3RpbWluZyA9IHg7Ci0gICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QuRXZlbnRzLlRpbWluZ0NoYW5nZWQpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEB0eXBlIHtzdHJpbmd9Ci0gICAgICovCi0gICAgZ2V0IG1pbWVUeXBlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9taW1lVHlwZTsKLSAgICB9LAotCi0gICAgc2V0IG1p
bWVUeXBlKHgpCi0gICAgewotICAgICAgICB0aGlzLl9taW1lVHlwZSA9IHg7Ci0gICAgfSwKLQot
ICAgIC8qKgogICAgICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUeXBlfQogICAgICAq
LwogICAgIGdldCB0eXBlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90eXBlOworICAg
ICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdCA/IHRoaXMuX3JlcXVlc3QudHlwZSA6IHRoaXMuX3R5
cGU7CiAgICAgfSwKIAogICAgIHNldCB0eXBlKHgpCkBAIC00OTAsMjc3ICsyNjIsMTYgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAg
ICogQHR5cGUge1dlYkluc3BlY3Rvci5SZXNvdXJjZXx1bmRlZmluZWR9Ci0gICAgICovCi0gICAg
Z2V0IHJlZGlyZWN0U291cmNlKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnJlZGlyZWN0cyAm
JiB0aGlzLnJlZGlyZWN0cy5sZW5ndGggPiAwKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVk
aXJlY3RzW3RoaXMucmVkaXJlY3RzLmxlbmd0aCAtIDFdOwotICAgICAgICByZXR1cm4gdGhpcy5f
cmVkaXJlY3RTb3VyY2U7Ci0gICAgfSwKLQotICAgIHNldCByZWRpcmVjdFNvdXJjZSh4KQotICAg
IHsKLSAgICAgICAgdGhpcy5fcmVkaXJlY3RTb3VyY2UgPSB4OwotICAgIH0sCi0KLSAgICAvKioK
LSAgICAgKiBAdHlwZSB7T2JqZWN0fQotICAgICAqLwotICAgIGdldCByZXF1ZXN0SGVhZGVycygp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdEhlYWRlcnMgfHwge307Ci0gICAg
fSwKLQotICAgIHNldCByZXF1ZXN0SGVhZGVycyh4KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVx
dWVzdEhlYWRlcnMgPSB4OwotICAgICAgICBkZWxldGUgdGhpcy5fc29ydGVkUmVxdWVzdEhlYWRl
cnM7Ci0gICAgICAgIGRlbGV0ZSB0aGlzLl9yZXF1ZXN0Q29va2llczsKLQotICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZl
bnRzLlJlcXVlc3RIZWFkZXJzQ2hhbmdlZCk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEB0
eXBlIHtzdHJpbmd9CiAgICAgICovCi0gICAgZ2V0IHJlcXVlc3RIZWFkZXJzVGV4dCgpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fcmVxdWVzdEhlYWRlcnNUZXh0ID09PSB1bmRlZmluZWQpIHsK
LSAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVGV4dCA9IHRoaXMucmVxdWVzdE1ldGhv
ZCArICIgIiArIHRoaXMudXJsICsgIiBIVFRQLzEuMVxyXG4iOwotICAgICAgICAgICAgZm9yICh2
YXIga2V5IGluIHRoaXMucmVxdWVzdEhlYWRlcnMpCi0gICAgICAgICAgICAgICAgdGhpcy5fcmVx
dWVzdEhlYWRlcnNUZXh0ICs9IGtleSArICI6ICIgKyB0aGlzLnJlcXVlc3RIZWFkZXJzW2tleV0g
KyAiXHJcbiI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RIZWFkZXJz
VGV4dDsKLSAgICB9LAotCi0gICAgc2V0IHJlcXVlc3RIZWFkZXJzVGV4dCh4KQotICAgIHsKLSAg
ICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNUZXh0ID0geDsKLQotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlJl
cXVlc3RIZWFkZXJzQ2hhbmdlZCk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEB0eXBlIHtu
dW1iZXJ9Ci0gICAgICovCi0gICAgZ2V0IHJlcXVlc3RIZWFkZXJzU2l6ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGVhZGVyc1RleHQubGVuZ3RoOwotICAgIH0sCi0KLSAg
ICAvKioKLSAgICAgKiBAdHlwZSB7QXJyYXkuPE9iamVjdD59Ci0gICAgICovCi0gICAgZ2V0IHNv
cnRlZFJlcXVlc3RIZWFkZXJzKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zb3J0ZWRSZXF1
ZXN0SGVhZGVycyAhPT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRl
ZFJlcXVlc3RIZWFkZXJzOwotCi0gICAgICAgIHRoaXMuX3NvcnRlZFJlcXVlc3RIZWFkZXJzID0g
W107Ci0gICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLnJlcXVlc3RIZWFkZXJzKQotICAgICAg
ICAgICAgdGhpcy5fc29ydGVkUmVxdWVzdEhlYWRlcnMucHVzaCh7aGVhZGVyOiBrZXksIHZhbHVl
OiB0aGlzLnJlcXVlc3RIZWFkZXJzW2tleV19KTsKLSAgICAgICAgdGhpcy5fc29ydGVkUmVxdWVz
dEhlYWRlcnMuc29ydChmdW5jdGlvbihhLGIpIHsgcmV0dXJuIGEuaGVhZGVyLmxvY2FsZUNvbXBh
cmUoYi5oZWFkZXIpIH0pOwotCi0gICAgICAgIHJldHVybiB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVh
ZGVyczsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGhlYWRlck5h
bWUKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd8dW5kZWZpbmVkfQotICAgICAqLwotICAgIHJlcXVl
c3RIZWFkZXJWYWx1ZTogZnVuY3Rpb24oaGVhZGVyTmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9oZWFkZXJWYWx1ZSh0aGlzLnJlcXVlc3RIZWFkZXJzLCBoZWFkZXJOYW1lKTsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHR5cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuQ29va2ll
Pn0KLSAgICAgKi8KLSAgICBnZXQgcmVxdWVzdENvb2tpZXMoKQotICAgIHsKLSAgICAgICAgaWYg
KCF0aGlzLl9yZXF1ZXN0Q29va2llcykKLSAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RDb29raWVz
ID0gV2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5wYXJzZUNvb2tpZSh0aGlzLnJlcXVlc3RIZWFk
ZXJWYWx1ZSgiQ29va2llIikpOwotICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWVzdENvb2tpZXM7
Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfQotICAg
ICAqLwotICAgIGdldCByZXF1ZXN0Rm9ybURhdGEoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3JlcXVlc3RGb3JtRGF0YTsKLSAgICB9LAotCi0gICAgc2V0IHJlcXVlc3RGb3JtRGF0YSh4
KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVxdWVzdEZvcm1EYXRhID0geDsKLSAgICAgICAgZGVs
ZXRlIHRoaXMuX3BhcnNlZEZvcm1QYXJhbWV0ZXJzOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0KLSAgICAgKi8KLSAgICBnZXQgcmVxdWVzdEh0dHBW
ZXJzaW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBmaXJzdExpbmUgPSB0aGlzLnJlcXVlc3RIZWFk
ZXJzVGV4dC5zcGxpdCgvXHJcbi8pWzBdOwotICAgICAgICB2YXIgbWF0Y2ggPSBmaXJzdExpbmUu
bWF0Y2goLyhIVFRQXC9cZCtcLlxkKykkLyk7Ci0gICAgICAgIHJldHVybiBtYXRjaCA/IG1hdGNo
WzFdIDogdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAdHlwZSB7T2JqZWN0
fQotICAgICAqLwotICAgIGdldCByZXNwb25zZUhlYWRlcnMoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVycyB8fCB7fTsKLSAgICB9LAotCi0gICAgc2V0IHJlc3Bv
bnNlSGVhZGVycyh4KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzID0geDsK
LSAgICAgICAgZGVsZXRlIHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVyczsKLSAgICAgICAgZGVs
ZXRlIHRoaXMuX3Jlc3BvbnNlQ29va2llczsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QuRXZlbnRzLlJlc3BvbnNlSGVh
ZGVyc0NoYW5nZWQpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAdHlwZSB7c3RyaW5nfQot
ICAgICAqLwotICAgIGdldCByZXNwb25zZUhlYWRlcnNUZXh0KCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9yZXNwb25zZUhlYWRlcnNUZXh0ID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAg
IHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1RleHQgPSAiSFRUUC8xLjEgIiArIHRoaXMuc3RhdHVzQ29k
ZSArICIgIiArIHRoaXMuc3RhdHVzVGV4dCArICJcclxuIjsKLSAgICAgICAgICAgIGZvciAodmFy
IGtleSBpbiB0aGlzLnJlc3BvbnNlSGVhZGVycykKLSAgICAgICAgICAgICAgICB0aGlzLl9yZXNw
b25zZUhlYWRlcnNUZXh0ICs9IGtleSArICI6ICIgKyB0aGlzLnJlc3BvbnNlSGVhZGVyc1trZXld
ICsgIlxyXG4iOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUhlYWRl
cnNUZXh0OwotICAgIH0sCi0KLSAgICBzZXQgcmVzcG9uc2VIZWFkZXJzVGV4dCh4KQotICAgIHsK
LSAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVGV4dCA9IHg7Ci0KLSAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LkV2ZW50
cy5SZXNwb25zZUhlYWRlcnNDaGFuZ2VkKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHR5
cGUge251bWJlcn0KLSAgICAgKi8KLSAgICBnZXQgcmVzcG9uc2VIZWFkZXJzU2l6ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZUhlYWRlcnNUZXh0Lmxlbmd0aDsKLSAgICB9
LAotCi0gICAgLyoqCi0gICAgICogQHR5cGUge0FycmF5LjxPYmplY3Q+fQotICAgICAqLwotICAg
IGdldCBzb3J0ZWRSZXNwb25zZUhlYWRlcnMoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Nv
cnRlZFJlc3BvbnNlSGVhZGVycyAhPT0gdW5kZWZpbmVkKQotICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVyczsKLQotICAgICAgICB0aGlzLl9zb3J0ZWRSZXNwb25z
ZUhlYWRlcnMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIga2V5IGluIHRoaXMucmVzcG9uc2VIZWFk
ZXJzKQotICAgICAgICAgICAgdGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJzLnB1c2goe2hlYWRl
cjoga2V5LCB2YWx1ZTogdGhpcy5yZXNwb25zZUhlYWRlcnNba2V5XX0pOwotICAgICAgICB0aGlz
Ll9zb3J0ZWRSZXNwb25zZUhlYWRlcnMuc29ydChmdW5jdGlvbihhLGIpIHsgcmV0dXJuIGEuaGVh
ZGVyLmxvY2FsZUNvbXBhcmUoYi5oZWFkZXIpIH0pOwotCi0gICAgICAgIHJldHVybiB0aGlzLl9z
b3J0ZWRSZXNwb25zZUhlYWRlcnM7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBoZWFkZXJOYW1lCi0gICAgICogQHJldHVybiB7c3RyaW5nfHVuZGVmaW5lZH0KLSAg
ICAgKi8KLSAgICByZXNwb25zZUhlYWRlclZhbHVlOiBmdW5jdGlvbihoZWFkZXJOYW1lKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlclZhbHVlKHRoaXMucmVzcG9uc2VIZWFkZXJz
LCBoZWFkZXJOYW1lKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHR5cGUge0FycmF5LjxX
ZWJJbnNwZWN0b3IuQ29va2llPn0KLSAgICAgKi8KLSAgICBnZXQgcmVzcG9uc2VDb29raWVzKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fcmVzcG9uc2VDb29raWVzKQotICAgICAgICAgICAg
dGhpcy5fcmVzcG9uc2VDb29raWVzID0gV2ViSW5zcGVjdG9yLkNvb2tpZVBhcnNlci5wYXJzZVNl
dENvb2tpZSh0aGlzLnJlc3BvbnNlSGVhZGVyVmFsdWUoIlNldC1Db29raWUiKSk7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9yZXNwb25zZUNvb2tpZXM7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAq
IEB0eXBlIHs/QXJyYXkuPE9iamVjdD59Ci0gICAgICovCi0gICAgZ2V0IHF1ZXJ5UGFyYW1ldGVy
cygpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcGFyc2VkUXVlcnlQYXJhbWV0ZXJzKQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZFF1ZXJ5UGFyYW1ldGVyczsKLSAgICAgICAgdmFy
IHF1ZXJ5U3RyaW5nID0gdGhpcy51cmwuc3BsaXQoIj8iLCAyKVsxXTsKLSAgICAgICAgaWYgKCFx
dWVyeVN0cmluZykKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICBxdWVyeVN0cmlu
ZyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCIjIiwgMilbMF07Ci0gICAgICAgIHRoaXMuX3BhcnNlZFF1
ZXJ5UGFyYW1ldGVycyA9IHRoaXMuX3BhcnNlUGFyYW1ldGVycyhxdWVyeVN0cmluZyk7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9wYXJzZWRRdWVyeVBhcmFtZXRlcnM7Ci0gICAgfSwKLQotICAgIC8q
KgotICAgICAqIEB0eXBlIHs/QXJyYXkuPE9iamVjdD59Ci0gICAgICovCi0gICAgZ2V0IGZvcm1Q
YXJhbWV0ZXJzKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9wYXJzZWRGb3JtUGFyYW1ldGVy
cykKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJzZWRGb3JtUGFyYW1ldGVyczsKLSAgICAg
ICAgaWYgKCF0aGlzLnJlcXVlc3RGb3JtRGF0YSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwot
ICAgICAgICB2YXIgcmVxdWVzdENvbnRlbnRUeXBlID0gdGhpcy5yZXF1ZXN0Q29udGVudFR5cGUo
KTsKLSAgICAgICAgaWYgKCFyZXF1ZXN0Q29udGVudFR5cGUgfHwgIXJlcXVlc3RDb250ZW50VHlw
ZS5tYXRjaCgvXmFwcGxpY2F0aW9uXC94LXd3dy1mb3JtLXVybGVuY29kZWRccyooOy4qKT8kL2kp
KQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHRoaXMuX3BhcnNlZEZvcm1QYXJh
bWV0ZXJzID0gdGhpcy5fcGFyc2VQYXJhbWV0ZXJzKHRoaXMucmVxdWVzdEZvcm1EYXRhKTsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlZEZvcm1QYXJhbWV0ZXJzOwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0KLSAgICAgKi8KLSAgICBnZXQgcmVz
cG9uc2VIdHRwVmVyc2lvbigpCi0gICAgewotICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLnJlc3Bv
bnNlSGVhZGVyc1RleHQubWF0Y2goL14oSFRUUFwvXGQrXC5cZCspLyk7Ci0gICAgICAgIHJldHVy
biBtYXRjaCA/IG1hdGNoWzFdIDogdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge3N0cmluZ30gcXVlcnlTdHJpbmcKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48T2Jq
ZWN0Pn0KLSAgICAgKi8KLSAgICBfcGFyc2VQYXJhbWV0ZXJzOiBmdW5jdGlvbihxdWVyeVN0cmlu
ZykKKyAgICBnZXQgbWltZVR5cGUoKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcGFyc2VOYW1l
VmFsdWUocGFpcikKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHBhcmFtZXRlciA9IHt9Owot
ICAgICAgICAgICAgdmFyIHNwbGl0UGFpciA9IHBhaXIuc3BsaXQoIj0iLCAyKTsKLQotICAgICAg
ICAgICAgcGFyYW1ldGVyLm5hbWUgPSBzcGxpdFBhaXJbMF07Ci0gICAgICAgICAgICBpZiAoc3Bs
aXRQYWlyLmxlbmd0aCA9PT0gMSkKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudmFsdWUgPSAi
IjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwYXJhbWV0ZXIudmFsdWUgPSBz
cGxpdFBhaXJbMV07Ci0gICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBxdWVyeVN0cmluZy5zcGxpdCgiJiIpLm1hcChwYXJzZU5hbWVWYWx1ZSk7
CisgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0ID8gdGhpcy5fcmVxdWVzdC5taW1lVHlwZSA6
IHRoaXMuX21pbWVUeXBlOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge09iamVj
dH0gaGVhZGVycwotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBoZWFkZXJOYW1lCi0gICAgICogQHJl
dHVybiB7c3RyaW5nfHVuZGVmaW5lZH0KLSAgICAgKi8KLSAgICBfaGVhZGVyVmFsdWU6IGZ1bmN0
aW9uKGhlYWRlcnMsIGhlYWRlck5hbWUpCisgICAgc2V0IG1pbWVUeXBlKHgpCiAgICAgewotICAg
ICAgICBoZWFkZXJOYW1lID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICBmb3Ig
KHZhciBoZWFkZXIgaW4gaGVhZGVycykgewotICAgICAgICAgICAgaWYgKGhlYWRlci50b0xvd2Vy
Q2FzZSgpID09PSBoZWFkZXJOYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBoZWFkZXJzW2hl
YWRlcl07Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5fbWltZVR5cGUgPSB4OwogICAgIH0sCiAK
ICAgICAvKioKQEAgLTgyNCw3ICszMzUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIGdldCBjb250ZW50KCkKICAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9jb250ZW50OworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2NvbnRlbnQgIT09ICJ1
bmRlZmluZWQiKQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnQ7CisgICAgICAgIHJl
dHVybiB0aGlzLl9yZXF1ZXN0ID8gdGhpcy5fcmVxdWVzdC5jb250ZW50IDogdGhpcy5fY29udGVu
dDsKICAgICB9LAogCiAgICAgLyoqCkBAIC04MzIsNyArMzQ1LDkgQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBnZXQgY29udGVudEVuY29kZWQoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRFbmNvZGVkOworICAgICAgICBpZiAo
dHlwZW9mIHRoaXMuX2NvbnRlbnRFbmNvZGVkICE9PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9jb250ZW50RW5jb2RlZDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVl
c3QgPyB0aGlzLl9yZXF1ZXN0LmNvbnRlbnRFbmNvZGVkIDogdGhpcy5fY29udGVudEVuY29kZWQ7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtODk5LDIwICs0MTQsMTggQEAgV2ViSW5zcGVjdG9yLlJl
c291cmNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICByZXF1ZXN0Q29udGVudDogZnVuY3Rp
b24oY2FsbGJhY2spCiAgICAgewotICAgICAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBjb250ZW50
IHJldHJpZXZhbCBmb3IgV2ViU29ja2V0cyBhdCB0aGUgbW9tZW50LgotICAgICAgICAvLyBTaW5j
ZSBXZWJTb2NrZXRzIGFyZSBwb3RlbnRpYWxseSBsb25nLWxpdmluZywgZmFpbCByZXF1ZXN0cyBp
bW1lZGlhdGVseQotICAgICAgICAvLyB0byBwcmV2ZW50IGNhbGxlciBibG9ja2luZyB1bnRpbCBy
ZXNvdXJjZSBpcyBtYXJrZWQgYXMgZmluaXNoZWQuCi0gICAgICAgIGlmICh0aGlzLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLldlYlNvY2tldCkgewotICAgICAgICAgICAgY2Fs
bGJhY2sobnVsbCwgZmFsc2UpOworICAgICAgICBpZiAodGhpcy5fcmVxdWVzdCkgeworICAgICAg
ICAgICAgdGhpcy5fcmVxdWVzdC5yZXF1ZXN0Q29udGVudChjYWxsYmFjayk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KKwogICAgICAgICBpZiAodHlwZW9mIHRoaXMuX2NvbnRlbnQg
IT09ICJ1bmRlZmluZWQiKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0aGlzLmNvbnRlbnQsIHRo
aXMuX2NvbnRlbnRFbmNvZGVkKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2NvbnRlbnQs
ICEhdGhpcy5fY29udGVudEVuY29kZWQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisKICAgICAgICAgdGhpcy5fcGVuZGluZ0NvbnRlbnRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7
Ci0gICAgICAgIGlmICh0aGlzLmZpbmlzaGVkKQotICAgICAgICAgICAgdGhpcy5faW5uZXJSZXF1
ZXN0Q29udGVudCgpOworICAgICAgICB0aGlzLl9pbm5lclJlcXVlc3RDb250ZW50KCk7CiAgICAg
fSwKIAogICAgIC8qKgpAQCAtOTUyLDM4ICs0NjUsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Uu
cHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFu
fQotICAgICAqLwotICAgIGlzSHR0cEZhbWlseTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICEhdGhpcy51cmwubWF0Y2goL15odHRwcz86L2kpOwotICAgIH0sCi0KLSAgICAvKioK
LSAgICAgKiBAcmV0dXJuIHtzdHJpbmd8dW5kZWZpbmVkfQotICAgICAqLwotICAgIHJlcXVlc3RD
b250ZW50VHlwZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVz
dEhlYWRlclZhbHVlKCJDb250ZW50LVR5cGUiKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICog
QHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KLSAgICBpc1BpbmdSZXF1ZXN0OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gInRleHQvcGluZyIgPT09IHRoaXMucmVxdWVzdENvbnRl
bnRUeXBlKCk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0g
ICAgICovCi0gICAgaGFzRXJyb3JTdGF0dXNDb2RlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5zdGF0dXNDb2RlID49IDQwMDsKLSAgICB9LAotCi0gICAgLyoqCiAgICAg
ICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwogICAgIF9jb250ZW50VVJMOiBmdW5jdGlvbigp
CkBAIC0xMDAyLDE4ICs0ODMsMjMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fY29udGVudFJlcXVlc3RlZCA9
IHRydWU7CiAKLSAgICAgICAgZnVuY3Rpb24gb25SZXNvdXJjZUNvbnRlbnQoZGF0YSwgY29udGVu
dEVuY29kZWQpCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJv
cn0gZXJyb3IKKyAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQKKyAgICAgICAgICog
QHBhcmFtIHtib29sZWFufSBjb250ZW50RW5jb2RlZAorICAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2soZXJyb3IsIGNvbnRlbnQsIGNvbnRlbnRFbmNvZGVkKQogICAgICAgICB7
CisgICAgICAgICAgICB0aGlzLl9jb250ZW50ID0gZXJyb3IgPyBudWxsIDogY29udGVudDsKICAg
ICAgICAgICAgIHRoaXMuX2NvbnRlbnRFbmNvZGVkID0gY29udGVudEVuY29kZWQ7Ci0gICAgICAg
ICAgICB0aGlzLl9jb250ZW50ID0gZGF0YTsKLSAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsQ29u
dGVudCA9IGRhdGE7CisgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbENvbnRlbnQgPSBjb250ZW50
OwogICAgICAgICAgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMuX3BlbmRpbmdDb250ZW50Q2FsbGJh
Y2tzLnNsaWNlKCk7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhbGxiYWNrcy5s
ZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICBjYWxsYmFja3NbaV0odGhpcy5fY29udGVudCwg
dGhpcy5fY29udGVudEVuY29kZWQpOwogICAgICAgICAgICAgdGhpcy5fcGVuZGluZ0NvbnRlbnRD
YWxsYmFja3MubGVuZ3RoID0gMDsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9jb250ZW50UmVx
dWVzdGVkOwogICAgICAgICB9Ci0gICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5y
ZXF1ZXN0Q29udGVudCh0aGlzLCBvblJlc291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgUGFnZUFnZW50LmdldFJlc291cmNlQ29udGVudCh0aGlzLmZyYW1lSWQsIHRoaXMudXJsLCBj
YWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9CiB9CiAKQEAgLTEwMjIsNyArNTA4LDcgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKIC8qKgogICogQGNvbnN0cnVjdG9yCiAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZX0gcmVzb3VyY2UKLSAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50CisgKiBA
cGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGNvbnRlbnQKICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1l
c3RhbXAKICAqLwogV2ViSW5zcGVjdG9yLlJlc291cmNlUmV2aXNpb24gPSBmdW5jdGlvbihyZXNv
dXJjZSwgY29udGVudCwgdGltZXN0YW1wKQpAQCAtMTA2Nyw3ICs1NTMsNyBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VSZXZpc2lvbi5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oc3RyaW5nKX0gY2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9zdHJpbmcpfSBjYWxsYmFjawogICAgICAqLwogICAgIHJlcXVlc3RDb250ZW50OiBm
dW5jdGlvbihjYWxsYmFjaykKICAgICB7CkBAIC0xMDgzLDEzICs1NjksMjIgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlUmV2aXNpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gSWYgdW5zdWNjZXNzZnVsLCByZXF1ZXN0IHRoZSBjb250
ZW50LgotICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGNvbnRlbnQpCisgICAgICAgIC8qKgor
ICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAgICAgICogQHBh
cmFtIHtzdHJpbmd9IGNvbnRlbnQKKyAgICAgICAgICogQHBhcmFtIHtib29sZWFufSBjb250ZW50
RW5jb2RlZAorICAgICAgICAgKi8KKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2tXcmFwcGVyKGVy
cm9yLCBjb250ZW50LCBjb250ZW50RW5jb2RlZCkKICAgICAgICAgewotICAgICAgICAgICAgdGhp
cy5fY29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgICAgICBjYWxsYmFjayhjb250ZW50KTsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gbnVsbCA6IGNvbnRlbnQpOwogICAgICAgICB9Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5uZXR3b3JrTWFuYWdlci5yZXF1ZXN0Q29udGVudCh0aGlzLl9y
ZXNvdXJjZSwgbXljYWxsYmFjay5iaW5kKHRoaXMpKTsKKworICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzYzIFdlIHNob3VsZCBzZXBh
cmF0ZSBOZXR3b3JrUmVzb3VyY2UgKE5ldHdvcmtQYW5lbCByZXNvdXJjZSkKKyAgICAgICAgLy8g
ZnJvbSBSZXNvdXJjZVJldmlzaW9uIChSZXNvdXJjZXNQYW5lbC9TY3JpcHRzUGFuZWwgcmVzb3Vy
Y2UpIGFuZCByZXF1ZXN0IGNvbnRlbnQgYWNjb3JkaW5nbHkuCisgICAgICAgIGlmICh0aGlzLl9y
ZXNvdXJjZS5yZXF1ZXN0KQorICAgICAgICAgICAgTmV0d29ya0FnZW50LmdldFJlc3BvbnNlQm9k
eSh0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0LnJlcXVlc3RJZCwgY2FsbGJhY2tXcmFwcGVyKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgUGFnZUFnZW50LmdldFJlc291cmNlQ29udGVudCh0aGlz
Ll9yZXNvdXJjZS5mcmFtZUlkLCB0aGlzLl9yZXNvdXJjZS51cmwsIGNhbGxiYWNrV3JhcHBlcik7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzCmluZGV4IGM1NjcyMTI2MzAwNzQxNDI3
OGJiNmIxNjI5YjRkODIyZThjN2Y1NzYuLmJjMGE5YTZkZjU4MWY3ZWQ0MGM0ZDIxMTRjNmVjMjll
MTdlZGZhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzCkBAIC04NSwxNSArODUsMjIgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgeworICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSBudWxsOwogICAgICAgICB2YXIgcmVxdWVzdCA9IG51bGw7CiAgICAgICAgIHZhciBpc0lu
bGluZVNjcmlwdCA9IGZhbHNlOwogICAgICAgICBpZiAoc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkp
IHsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuaW5m
bGlnaHRSZXF1ZXN0Rm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgaWYgKCFy
ZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlc291cmNlID0gV2ViSW5zcGVjdG9yLnJl
c291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICAgICAgICAgIHJlcXVlc3Qg
PSByZXNvdXJjZSA/IHJlc291cmNlLnJlcXVlc3QgOiBudWxsOworICAgICAgICAgICAgLy8gRmly
c3QgbG9va3VwIHRoZSByZXNvdXJjZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBXZSBh
cmUgb25seSBpbnRlcmVzdGVkIGluIERvY3VtZW50IHJlc291cmNlcy4KKyAgICAgICAgICAgIHJl
c291cmNlID0gV2ViSW5zcGVjdG9yLnJlc291cmNlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwor
ICAgICAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLnR5cGUgIT09IFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVR5cGVzLkRvY3VtZW50KQorICAgICAgICAgICAgICAgIHJlc291cmNlID0gbnVs
bDsKKyAgICAgICAgICAgIGlmICghcmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICAvLyBXaGVu
IHRoZXJlIGlzIG5vIHJlc291cmNlLCBsb29rdXAgaW4tZmxpZ2h0IHJlcXVlc3RzIG9mIHR5cGUg
RG9jdW1lbnQuCisgICAgICAgICAgICAgICAgcmVxdWVzdCA9IFdlYkluc3BlY3Rvci5uZXR3b3Jr
TWFuYWdlci5pbmZsaWdodFJlcXVlc3RGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7CisgICAgICAg
ICAgICAgICAgaWYgKHJlcXVlc3QgJiYgKHJlcXVlc3QuZmluaXNoZWQgfHwgcmVxdWVzdC50eXBl
ICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCkpCisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QgPSBudWxsOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJl
cXVlc3QgJiYgcmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1
bWVudCkgeworICAgICAgICAgICAgLy8gSWYgZWl0aGVyIG9mIHRoZXNlIGV4aXN0cywgd2UgYmlu
ZCBzY3JpcHQgdG8gdGhlIHJlc291cmNlLgorICAgICAgICAgICAgaWYgKHJlcXVlc3QgfHwgcmVz
b3VyY2UpIHsKICAgICAgICAgICAgICAgICBpc0lubGluZVNjcmlwdCA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSB0aGlzLl9yYXdTb3VyY2VDb2RlRm9yRG9jdW1l
bnRVUkxbc2NyaXB0LnNvdXJjZVVSTF07CiAgICAgICAgICAgICAgICAgaWYgKHJhd1NvdXJjZUNv
ZGUpIHsKQEAgLTEwNCw3ICsxMTEsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRNYXBw
aW5nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHZh
ciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdTb3VyY2VDb2RlKHNjcmlwdC5z
Y3JpcHRJZCwgc2NyaXB0LCByZXF1ZXN0LCB0aGlzLl9mb3JtYXR0ZXIsIHRoaXMuX2Zvcm1hdFNv
dXJjZSk7CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5SYXdT
b3VyY2VDb2RlKHNjcmlwdC5zY3JpcHRJZCwgc2NyaXB0LCByZXNvdXJjZSwgcmVxdWVzdCwgdGhp
cy5fZm9ybWF0dGVyLCB0aGlzLl9mb3JtYXRTb3VyY2UpOwogICAgICAgICB0aGlzLl9yYXdTb3Vy
Y2VDb2Rlcy5wdXNoKHJhd1NvdXJjZUNvZGUpOwogICAgICAgICB0aGlzLl9iaW5kU2NyaXB0VG9S
YXdTb3VyY2VDb2RlKHNjcmlwdCwgcmF3U291cmNlQ29kZSk7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0OTg3OGIyMmU5
MTlhZGI0NmNlYmU3YmRlYWQzZTAwZDUxMGYzMGU4Li43MTRiZjZkMjg2NjQ2ZDZiODBkZDhmZGIx
NTY1ODE4MzYxMGI2MTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTItMDQtMTIgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogZXh0cmFjdGluZyBOZXR3b3JrUmVxdWVzdCBmcm9tIFJlc291cmNlIChzdGVwIDMpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzgwMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVudC5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2V0LWJyZWFrcG9pbnQuaHRtbDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLmh0bWw6CisKKzIwMTItMDQtMTIgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogZXh0cmFjdGluZyBOZXR3b3JrUmVxdWVzdCBmcm9tIFJlc291cmNlIChzdGVwIDIpCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc3MwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
cmVxdWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstcmVxdWVzdC1yZXZpc2lvbi1jb250ZW50Lmh0bWwKaW5k
ZXggNGJiZmQwMDI3MWRkZGFiOGY3MjcwM2Y4ZWUyYTdhOGFhZjdlZTkyYS4uZTY5OTUxZTkzOWE2
NzY1ZTdmMWFiODFhMWEwYzlhMDVkNTBmOGExMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXJlcXVlc3QtcmV2aXNpb24tY29udGVu
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1yZXF1ZXN0LXJldmlzaW9uLWNvbnRlbnQuaHRtbApAQCAtMTQsMTggKzE0LDE3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDIs
IHRydWUpOwogICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWRTY3JpcHQoKSIp
OwogCisgICAgdmFyIHJlc291cmNlOwogICAgIGZ1bmN0aW9uIHN0ZXAyKG1zZykKICAgICB7CiAg
ICAgICAgIHZhciByZXF1ZXN0ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLnJlcXVlc3Rz
W1dlYkluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKLSAgICAg
ICAgdmFyIHJlc291cmNlID0gcmVxdWVzdC5yZXNvdXJjZSgpOworICAgICAgICByZXNvdXJjZSA9
IHJlcXVlc3QucmVzb3VyY2UoKTsKICAgICAgICAgcmVzb3VyY2UuYWRkUmV2aXNpb24oIiIpOwog
ICAgICAgICByZXNvdXJjZS5oaXN0b3J5WzBdLnJlcXVlc3RDb250ZW50KHN0ZXAzKTsKICAgICB9
CiAKICAgICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewotICAgICAgICB2YXIgcmVxdWVzdCA9IFdl
Ykluc3BlY3Rvci5wYW5lbHMubmV0d29yay5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWxzLm5l
dHdvcmsucmVxdWVzdHMubGVuZ3RoIC0gMV07Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IHJlcXVl
c3QucmVzb3VyY2UoKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2Uu
dXJsKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQocmVzb3VyY2UuY29udGVudCk7
CiAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmF3LXNvdXJjZS1jb2RlLmh0bWwKaW5kZXggYjhlYTAx
Y2RiZmZkZjcxYTFlMDVjMjQ1Nzg5MzI5ZmNjYjU0OTBmYy4uZjEyOWM5ZjY2Mjk2YTRhYThiMTlk
ZTNmYjAzYmE1NzNmZWJiMWU4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Jhdy1zb3VyY2UtY29kZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9yYXctc291cmNlLWNvZGUuaHRtbApAQCAtMTgsMTMgKzE4LDE5IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RNb2NrKHR5cGUsIGZpbmlzaGVkLCBj
b250ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJlcXVlc3RJZCA9ICsrbGFzdFJlcXVlc3RJZCAr
ICIiOwotICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVl
c3QocmVxdWVzdElkLCAiaHR0cDovL2Zha2UudXJsIiwgIiIsICIiKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLnJlc291cmNlVHJlZU1vZGVsLl9hZGRGcmFtZShuZXcgV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUZyYW1lKFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbCwgbnVsbCwge2lkOiAi
ZnJhbWUtaWQifSkpOworICAgICAgICB2YXIgcmVxdWVzdCA9IG5ldyBXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3QocmVxdWVzdElkLCAiaHR0cDovL2Zha2UudXJsIiwgImZyYW1lLWlkIiwgImxv
YWRlci1pZCIpOwogICAgICAgICByZXF1ZXN0LnR5cGUgPSB0eXBlID09PSAiZG9jdW1lbnQiID8g
V2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQgOiBXZWJJbnNwZWN0b3IucmVzb3Vy
Y2VUeXBlcy5TY3JpcHQ7Ci0gICAgICAgIHJlcXVlc3QuZmluaXNoZWQgPSBmaW5pc2hlZDsKKwor
ICAgICAgICBXZWJJbnNwZWN0b3IubmV0d29ya01hbmFnZXIuX2Rpc3BhdGNoZXIuX3N0YXJ0TmV0
d29ya1JlcXVlc3QocmVxdWVzdCk7CisgICAgICAgIGlmIChmaW5pc2hlZCkKKyAgICAgICAgICAg
IGZpbmlzaFJlcXVlc3QocmVxdWVzdCk7CisKICAgICAgICAgbW9ja0NvbnRlbnRzTWFwW3JlcXVl
c3RJZF0gPSBjb250ZW50OwogICAgICAgICByZXR1cm4gcmVxdWVzdDsKICAgICB9CiAKKyAgICBm
dW5jdGlvbiBmaW5pc2hSZXF1ZXN0KHJlcXVlc3QpIHsgV2ViSW5zcGVjdG9yLm5ldHdvcmtNYW5h
Z2VyLl9kaXNwYXRjaGVyLl9maW5pc2hOZXR3b3JrUmVxdWVzdChyZXF1ZXN0KTsgfQogICAgIGZ1
bmN0aW9uIGNyZWF0ZVBlbmRpbmdSZXF1ZXN0TW9jayh0eXBlLCBjb250ZW50KSB7IHJldHVybiBj
cmVhdGVSZXF1ZXN0TW9jayh0eXBlLCBmYWxzZSwgY29udGVudCk7IH0KICAgICBmdW5jdGlvbiBj
cmVhdGVGaW5pc2hlZFJlcXVlc3RNb2NrKHR5cGUsIGNvbnRlbnQpIHsgcmV0dXJuIGNyZWF0ZVJl
cXVlc3RNb2NrKHR5cGUsIHRydWUsIGNvbnRlbnQpOyB9CiAKQEAgLTM5LDExICs0NSwxNiBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIGZpbmlzaDogZnVuY3Rpb24oKSB7IGZvcm1hdHRl
ci5fY2FsbGJhY2soKTsgfQogICAgICAgICB9OwogICAgICAgICByZXR1cm4gZm9ybWF0dGVyOwot
ICAgICAgfTsKKyAgICB9OwogCiAgICAgZnVuY3Rpb24gY3JlYXRlUmF3U291cmNlQ29kZShzY3Jp
cHQsIHJlcXVlc3QsIGZvcm1hdHRlZCwgY29tcGlsZXJTb3VyY2VNYXBwaW5nKQogICAgIHsKLSAg
ICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlJhd1NvdXJjZUNvZGUo
ImlkIiwgc2NyaXB0LCByZXF1ZXN0LCBjcmVhdGVTY3JpcHRGb3JtYXR0ZXJNb2NrKCksICEhZm9y
bWF0dGVkLCBjb21waWxlclNvdXJjZU1hcHBpbmcpOworICAgICAgICB2YXIgcmVzb3VyY2UgPSBu
dWxsOworICAgICAgICBpZiAocmVxdWVzdCAmJiByZXF1ZXN0LmZpbmlzaGVkKSB7CisgICAgICAg
ICAgICByZXNvdXJjZSA9IHJlcXVlc3QucmVzb3VyY2UoKTsKKyAgICAgICAgICAgIHJlcXVlc3Qg
PSBudWxsOworICAgICAgICB9CisgICAgICAgIHZhciByYXdTb3VyY2VDb2RlID0gbmV3IFdlYklu
c3BlY3Rvci5SYXdTb3VyY2VDb2RlKCJpZCIsIHNjcmlwdCwgcmVzb3VyY2UsIHJlcXVlc3QsIGNy
ZWF0ZVNjcmlwdEZvcm1hdHRlck1vY2soKSwgISFmb3JtYXR0ZWQsIGNvbXBpbGVyU291cmNlTWFw
cGluZyk7CiAgICAgICAgIHJhd1NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuUmF3U291cmNlQ29kZS5FdmVudHMuVUlTb3VyY2VDb2RlQ2hhbmdlZCwgZGVmYXVsdFVJU291
cmNlQ29kZUNoYW5nZWRIYW5kbGVyKTsKICAgICAgICAgcmV0dXJuIHJhd1NvdXJjZUNvZGU7CiAg
ICAgfQpAQCAtNjIsNyArNzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIGRl
ZmF1bHRVSVNvdXJjZUNvZGVDaGFuZ2VkSGFuZGxlcigpCiAgICAgewotICAgICAgICB0aHJvdyAi
VW5leHBlY3RlZCBVSVNvdXJjZUNvZGVDaGFuZ2VkIGV2ZW50LiI7CisgICAgICAgIHRocm93IG5l
dyBFcnJvcigiVW5leHBlY3RlZCBVSVNvdXJjZUNvZGVDaGFuZ2VkIGV2ZW50LiIpOwogICAgIH0K
IAogICAgIGZ1bmN0aW9uIGNyZWF0ZVJhd0xvY2F0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKQEAgLTc4LDYgKzg5LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB2YXIgcmF3
U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCBudWxsKTsKIAogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCEhcmF3U291cmNlQ29kZS51aVNvdXJjZUNv
ZGUoKSk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gcmF3U291cmNlQ29kZS51aVNvdXJjZUNvZGUoKTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJmb28uanMiLCB1aVNvdXJjZUNv
ZGUudXJsKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHVp
U291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQpOwpAQCAtMTAyLDggKzExNSw5IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdTb3VyY2VD
b2RlKHNjcmlwdDEsIHJlcXVlc3QpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dFRydWUoIXJhd1NvdXJjZUNvZGUudWlTb3VyY2VDb2RlKCkpOworCiAgICAgICAgICAgICB3YWl0
Rm9yVUlTb3VyY2VDb2RlQ2hhbmdlZEV2ZW50KHJhd1NvdXJjZUNvZGUsIHVpU291cmNlQ29kZUNo
YW5nZWQpOwotICAgICAgICAgICAgcmVxdWVzdC5maW5pc2hlZCA9IHRydWU7CisgICAgICAgICAg
ICBmaW5pc2hSZXF1ZXN0KHJlcXVlc3QpOwogCiAgICAgICAgICAgICBmdW5jdGlvbiB1aVNvdXJj
ZUNvZGVDaGFuZ2VkKGV2ZW50KQogICAgICAgICAgICAgewpAQCAtMTM1LDYgKzE0OSw4IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIHJhd1NvdXJjZUNvZGUgPSBjcmVhdGVSYXdT
b3VyY2VDb2RlKHNjcmlwdDEsIHJlcXVlc3QpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydFRydWUoISFyYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSgpKTsKKyAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSByYXdTb3VyY2VDb2RlLnVpU291cmNlQ29kZSgpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnRFcXVhbHMoImluZGV4Lmh0bWwiLCB1aVNvdXJjZUNvZGUudXJsKTsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKGZhbHNlLCB1aVNvdXJjZUNvZGUuaXND
b250ZW50U2NyaXB0KTsKQEAgLTIwMCw3ICsyMTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAg
ICAgICAgICAgICAgIHJhd1NvdXJjZUNvZGUuZm9yY2VVcGRhdGVTb3VyY2VNYXBwaW5nKCk7CiAg
ICAgICAgICAgICAgICAgd2FpdEZvclVJU291cmNlQ29kZUNoYW5nZWRFdmVudChyYXdTb3VyY2VD
b2RlLCByZXF1ZXN0Q29udGVudFJlcXVlc3QpOwotICAgICAgICAgICAgICAgIHJlcXVlc3QuZmlu
aXNoZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZpbmlzaFJlcXVlc3QocmVxdWVzdCk7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RDb250ZW50UmVxdWVz
dCgpCkBAIC0yODksNyArMzA1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB2YXIg
cmF3U291cmNlQ29kZSA9IGNyZWF0ZVJhd1NvdXJjZUNvZGUoc2NyaXB0LCByZXF1ZXN0LCB0cnVl
KTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKCFyYXdTb3VyY2VDb2Rl
LnVpU291cmNlQ29kZSgpKTsKLSAgICAgICAgICAgIHJlcXVlc3QuZmluaXNoZWQgPSB0cnVlOwor
ICAgICAgICAgICAgZmluaXNoUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgICAgIHdhaXRGb3JV
SVNvdXJjZUNvZGVDaGFuZ2VkRXZlbnQocmF3U291cmNlQ29kZSwgY2hlY2tNYXBwaW5nKTsKICAg
ICAgICAgICAgIHJhd1NvdXJjZUNvZGUuX2Zvcm1hdHRlci5maW5pc2goKTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NldC1icmVha3BvaW50Lmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2V0LWJyZWFrcG9pbnQuaHRtbAppbmRleCA1
ODJiNDQ5ZDNjMjQyM2M3OTU4YjhkZTFkYzhlMmYyMzA2Y2NmNTkwLi44YTBiM2RjY2FlYjU2ZTA4
NGE1Y2FiYzc3OTdkN2ZjMmI1ZTVjMmUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2V0LWJyZWFrcG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvc2V0LWJyZWFrcG9pbnQuaHRtbApAQCAtMzksNyArMzksNyBAQCB2YXIgdGVz
dCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiU2NyaXB0IGV4ZWN1dGlvbiBwYXVzZWQuIik7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jYXB0dXJlU3RhY2tUcmFjZShjYWxsRnJhbWVzKTsKLSAgICAgICAg
ICAgICAgICBkdW1wQnJlYWtwb2ludFNpZGViYXJQYW5lKCkKKyAgICAgICAgICAgICAgICBkdW1w
QnJlYWtwb2ludFNpZGViYXJQYW5lKCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRTbmlmZmVyKGN1cnJlbnRTb3VyY2VGcmFtZSwgIl9yZW1vdmVCcmVha3BvaW50RGVjb3JhdGlv
biIsIGJyZWFrcG9pbnRSZW1vdmVkKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJl
bW92ZUJyZWFrcG9pbnQoY3VycmVudFNvdXJjZUZyYW1lLCAxNik7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLmh0bWwKaW5k
ZXggMjAyOTliZWM0ZTk1OGVkZGQzNDdkZWUyMzczMzgwZWQ3NzNlZGRhMy4uMjk4MmZlYjhlOTlj
YzU4Mzg2ZWM0Yzc3MGYyZmEyOWY4YjBlMjYxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3NvdXJjZS1mcmFtZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUuaHRtbApAQCAtMTIsNiArMTIsNyBAQCBmdW5jdGlv
biBhZGRFcnJvclRvQ29uc29sZSgpCiAKIGZ1bmN0aW9uIHRlc3QoKQogeworICAgIFdlYkluc3Bl
Y3Rvci5pbnNwZWN0b3JWaWV3LnNldEN1cnJlbnRQYW5lbChXZWJJbnNwZWN0b3IucGFuZWxzLnJl
c291cmNlcyk7CiAgICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCiAgICAg
ICAgIGZ1bmN0aW9uIHRlc3RTZXRCcmVha3BvaW50KG5leHQpCiAgICAgICAgIHsKQEAgLTcyLDcg
KzczLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBmdW5jdGlvbiB2aXNpdChyZXNv
dXJjZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAocmVzb3VyY2UudXJsLmlu
ZGV4T2YoImRlYnVnZ2VyLXRlc3QuanMiKSAhPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLnBhbmVscy5uZXR3b3JrLl9zaG93UmVxdWVzdChyZXNvdXJjZS5yZXF1ZXN0
LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5yZXNvdXJjZXMu
c2hvd1Jlc291cmNlKHJlc291cmNlLCAxKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQo=
</data>
<flag name="review"
          id="141894"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>